{"version":3,"sources":["../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/virtual-dom.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/react/jsx-runtime.js","../node_modules/@syncfusion/ej2-pivotview/src/common/base/css-constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/react/index.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/@syncfusion/ej2-pivotview/src/base/util.js","../node_modules/@syncfusion/ej2-pivotview/src/common/base/constant.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/axios/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../../modules/HistoryContext.js","../../modules/createNameContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/withRouter.js","../../modules/hooks.js","../node_modules/prop-types/index.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/axios/lib/utils.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/react-dom/index.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-base/src/template.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/lodash/lodash.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/query-string/index.js","../node_modules/sweetalert2/dist/sweetalert2.all.js","../node_modules/@syncfusion/ej2-pivotview/src/base/engine.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","../node_modules/@syncfusion/ej2-pivotview/src/common/popups/aggregate-menu.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/model/datasourcesettings.js","../node_modules/powerbi-client/dist/powerbi.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../../src/Enum.js","../../src/Utility.js","../../src/Tokenizer.js","../../src/Parser.js","../../src/Serializer.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../../src/Middleware.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-c39617d8.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../node_modules/react-select/dist/index-6ea50319.esm.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/react-select/dist/Select-ce3716e1.esm.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","../node_modules/react-select/dist/useAsync-9eb532f6.esm.js","../node_modules/react-select/async/dist/react-select-async.esm.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","../node_modules/@syncfusion/ej2-pivotview/src/common/actions/keyboard.js","../node_modules/@syncfusion/ej2-pivotview/src/common/actions/event-base.js","../node_modules/@syncfusion/ej2-pivotview/src/common/actions/node-state-modified.js","../node_modules/@syncfusion/ej2-pivotview/src/common/actions/dataSource-update.js","../node_modules/@syncfusion/ej2-pivotview/src/common/popups/error-dialog.js","../node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","../node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","../node_modules/@syncfusion/ej2-pivotview/src/common/popups/filter-dialog.js","../node_modules/@syncfusion/ej2-pivotview/src/common/base/pivot-common.js","../node_modules/@syncfusion/ej2-pivotview/src/base/olap/mdx-query.js","../node_modules/@syncfusion/ej2-pivotview/src/base/olap/engine.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/reorder.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/freeze-row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/freeze-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/column-freeze-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/intersection-observer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/virtual-row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/virtual-content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/virtual-freeze-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/freeze.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","../node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","../node_modules/@syncfusion/ej2-excel-export/src/column.js","../node_modules/@syncfusion/ej2-excel-export/src/row.js","../node_modules/@syncfusion/ej2-excel-export/src/image.js","../node_modules/@syncfusion/ej2-excel-export/src/cell.js","../node_modules/@syncfusion/ej2-file-utils/src/encoding.js","../node_modules/@syncfusion/ej2-compression/src/compression-writer.js","../node_modules/@syncfusion/ej2-file-utils/src/save.js","../node_modules/@syncfusion/ej2-compression/src/zip-archive.js","../node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","../node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","../node_modules/@syncfusion/ej2-excel-export/src/workbook.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","../node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/tables/light-tables/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/pdf-borders.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/style.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/element-layouter.js","../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/layout-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/text-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/text-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/action-link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/uri-action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/uri-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/pdf-text-web-link.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/layout/grid-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-cell.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-column.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-row.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-numbers-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-template-value-pair.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/multiple-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-page-number-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/composite-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/single-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/page-count-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-true-type-font.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/pdf-export.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","../node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","../node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/context-menu.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/renderer/render.js","../node_modules/@syncfusion/ej2-pivotview/src/common/actions/common.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/model/gridsettings.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/actions/excel-export.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/actions/pdf-export.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/actions/keyboard.js","../node_modules/@syncfusion/ej2-pivotview/src/common/popups/context-menu.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/actions/virtualscroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/column-chooser.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/inline-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/batch-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/dialog-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-cell-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/dropdown-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/numeric-edit-cell.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/default-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/normal-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/inline-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/batch-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/dialog-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/datepicker-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/template-edit-cell.js","../node_modules/@syncfusion/ej2-charts/src/common/model/theme.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/command-column-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/command-column.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/virtual-scroll.js","../node_modules/@syncfusion/ej2-pivotview/src/common/popups/drillthrough-dialog.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/actions/drill-through.js","../node_modules/@syncfusion/ej2-charts/src/common/model/base.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/double-range.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/double-axis.js","../node_modules/@syncfusion/ej2-charts/src/common/model/constants.js","../node_modules/@syncfusion/ej2-charts/src/chart/model/chart-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/helper.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/cartesian-panel.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/get-data.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/chart-series.js","../node_modules/@syncfusion/ej2-charts/src/common/model/data.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker-explode.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker.js","../node_modules/@syncfusion/ej2-charts/src/common/legend/legend.js","../node_modules/@syncfusion/ej2-charts/src/chart/technical-indicators/technical-indicator.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/export.js","../node_modules/@syncfusion/ej2-charts/src/chart/chart.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/column-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/column-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/line-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/line-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/multi-colored-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/area-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/legend/legend.js","../node_modules/@syncfusion/ej2-charts/src/common/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis-helper.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/category-axis.js","../node_modules/@syncfusion/ej2-charts/src/common/user-interaction/selection.js","../node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/selection.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/strip-line.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/data-label.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/model/acc-base.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/accumulation-base.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/pie-base.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/pie-series.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/accumulation.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/triangular-base.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/funnel-series.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/pyramid-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/spline-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/spline-area-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/multi-colored-line-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/range-area-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/stacking-area-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/step-area-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/step-line-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/spline-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/multi-colored-area-series.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/legend.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/stacking-column-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/range-column-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/bar-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/stacking-bar-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/scatter-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/polar-radar-panel.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/polar-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/radar-series.js","../node_modules/@syncfusion/ej2-charts/src/common/scrollbar/scrollbar-elements.js","../node_modules/@syncfusion/ej2-pivotview/src/common/base/themes.js","../node_modules/@syncfusion/ej2-charts/src/common/scrollbar/scrollbar.js","../node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/zooming-toolkit.js","../node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/zooming.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/pareto-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/multi-level-labels.js","../node_modules/@syncfusion/ej2-charts/src/chart/print-export/export.js","../node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/crosshair.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/bubble-series.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/dataLabel.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotchart/base/pivotchart.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/model/chartsettings.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotview/base/pivotview.js","../node_modules/object-assign/index.js","../node_modules/webpack/buildin/global.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/captcha-image/index.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/webpack/buildin/module.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/react-is/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","../powerbi-client-react/webpack/universalModuleDefinition","../powerbi-client-react/node_modules/powerbi-models/dist/models.js","../powerbi-client-react/external umd \"lodash.isequal\"","../powerbi-client-react/external umd \"powerbi-client\"","../powerbi-client-react/external umd \"react\"","../powerbi-client-react/webpack/bootstrap","../powerbi-client-react/webpack/runtime/compat get default export","../powerbi-client-react/webpack/runtime/define property getters","../powerbi-client-react/webpack/runtime/hasOwnProperty shorthand","../powerbi-client-react/webpack/runtime/make namespace object","../powerbi-client-react/src/PowerBIEmbed.tsx","../powerbi-client-react/src/utils.ts","../node_modules/react-google-recaptcha/lib/esm/recaptcha.js","../node_modules/react-async-script/lib/esm/async-script-loader.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","../node_modules/react-google-recaptcha/lib/esm/index.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/base/mask-base.js","../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/maskedtextbox/maskedtextbox.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/process/browser.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/strict-uri-encode/index.js","../node_modules/decode-uri-component/index.js","../node_modules/split-on-first/index.js","../node_modules/filter-obj/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/construct.js","../../src/lib/utils/getNormalizedScrollLeft.ts","../../node_modules/object-assign/index.js","../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../node_modules/react/jsx-runtime.js","../../react/jsx-runtime","../../src/lib/components/NavBtns/index.tsx","../../src/lib/components/Tab/index.tsx","../node_modules/lodash.isequal/index.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","../node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","../node_modules/@syncfusion/ej2-react-buttons/src/button/button.component.js","../node_modules/@syncfusion/ej2-react-pivotview/src/pivotview/pivotview.component.js","../node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js","../node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotfieldlist/renderer/dialog-renderer.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotfieldlist/renderer/tree-renderer.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotfieldlist/renderer/axis-table-renderer.js","../node_modules/@syncfusion/ej2-pivotview/src/common/actions/pivot-button.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotfieldlist/renderer/axis-field-renderer.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotfieldlist/renderer/renderer.js","../node_modules/@syncfusion/ej2-pivotview/src/pivotfieldlist/base/field-list.js","../node_modules/@syncfusion/ej2-react-pivotview/src/pivotfieldlist/pivotfieldlist.component.js","../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","../node_modules/@syncfusion/ej2-navigations/src/accordion/accordion.js","../node_modules/@syncfusion/ej2-pivotview/src/common/calculatedfield/calculated-field.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js"],"names":["instances","uid","isBlazorPlatform","createInstance","classFunction","params","arrayParam","unshift","undefined","Function","prototype","bind","apply","getValue","nameSpace","obj","value","splits","replace","split","i","length","isUndefined","setValue","key","keys","start","fromObj","isNullOrUndefined","deleteObject","isObject","constructor","getEnumValue","enumObject","enumValue","merge","source","destination","temrObj","tempProp","_i","keys_1","Object","indexOf","Array","isArray","extend","copied","first","second","deep","result","arguments","_loop_1","arguments_1","obj1","forEach","clone","src","copy","isArrayChanged","blazorEventExtend","isBlazor","Event","hasOwnProperty","getUniqueID","definedName","debounce","eventFunction","delay","out","_this","this","args","later","clearTimeout","setTimeout","compareElementParent","child","parent","document","parentNode","throwError","message","Error","e","stack","print","element","printWindow","div","createElement","links","slice","call","getElementsByTagName","querySelectorAll","blinks","l","len","push","reference","window","open","appendChild","cloneNode","outerHTML","write","innerHTML","close","focus","interval","setInterval","ready","clearInterval","formatUnit","match","getElement","Node","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","getInstance","component","elem","querySelector","_a","inst","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","prop","res","propKeys_1","getSymbolRegex","props","regexStr","map","str","join","RegExp","getSymbolMatch","ret","matchKeys_1","constructRegex","val","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","dateCorrection","getHijriDate","gDate","day","getDate","month","getMonth","year","getFullYear","tMonth","tYear","yPrefix","Math","floor","julilanOffset","julianNumber","b","c","d","tempMonth","modifiedJulianDate","iyear","z","cyc","j","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","date","toGregorian","julianDate","a","gDay","gMonth","gYear","Date","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","m","h","H","s","f","datePartMatcher","DateFormat","dateFormat","culture","option","cldr","dependable","base","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","test","isServerRendered","compareBlazorDateFormats","resPattern","format","getResultantPattern","skeleton","type","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","pattern","numMapper","parser","parserObject","patternMatch_1","char","weekday","monthIndex","days","designator","eText","era","timeZone","isNaN","intDateFormatter","options","matches","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","getDay","curlength","toString","substring","substr","desig","getHours","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","curPattern","no","abs","ishour","errorText","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","symbols","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","defaultCurrency","nData","pData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","isFinite","intNumberFormatter","negativeDataRegex","p","lastIndexOf","temp","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","text","range","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","toExponential","groupNumbers","nlead","nend","min","max","toPrecision","level1","sep","decimalSymbol","level2","flag","prefix","toFixed","lead","latnRegex","minute","hour","milliseconds","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","patternMatch","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","periodValur","tzone","hpattern","parseTimeZoneRegx","pos","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","parseInt","getDateObject","setMilliseconds","y","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","getMinutes","num","retOptions","props_1","curObject","matchString","internalNumberParser","toUpperCase","toLowerCase","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","end","Infinity","NaN","exponent","parseFloat","convertMaxFracDigits","decimalSplitValue","Observer","context","ranArray","boundedEvents","on","property","handler","id","cntxt","notExist","isHandlerPresent","off","splice","indexLocation","notify","argument","successHandler","errorHandler","name","blazorCallback","curObject_1","objs","index","isTrigger","obj_1","promise","then","data","isJson","JSON","parse","dateReviver","catch","destroy","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","IntlBase","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","setCulture","getNumericObject","locale","numSystem","symbPattern","getDefaultDateObject","mode","blazorCultureFormats","customRegex","fractionRegex","patternRegex","'","dateConverterMapper","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","0","1","blazorCulture","iType","basicPatterns","dPattern","tPattern","calendartype","blazorDefaultObject","defaultObject","dateString","convertMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","sym","currencyCode","customNumberFormat","integerPart","fractionPart","isCurrencyPercent","parts","actual","symbol","part","loc","3","4","5","C","P","N","A","E","formatSplit","dateObj","actualPattern","tLength","timeZonePattern","options_1","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","minDigits","maxDigits","diff","fractionDigitsPattern","integer","x","minimumIntegerPattern","groupingPattern","cPattern","processSymbol","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","getTime","nday","headerRegex","Ajax","async","contentType","emitError","url","send","eventArgs","cancel","httpRequest","Promise","resolve","reject","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onload","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","setRequestHeader","beforeSend","onSuccess","failureHandler","reason","onFailure","responseText","dataType","error","readyState","status","statusText","getResponseHeader","responseHeaders","header","headers","exec","getAllResponseHeaders","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","userAgent","version","language","navigator","getEvent","event","events","isPointer","isTouch","isDevice","move","isWindows","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","regX","defineProperty","get","uA","set","enumerable","configurable","info","maxTouchPoints","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","add","eventName","listener","bindTo","intDebounce","debounceListener","eventData","isIE","addEventListener","passive","remove","some","removeEventListener","clearEvents","copyData","shift","trigger","eventProp","eventData_1","event_1","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","template","helper","ignorePrefix","argName","evalExpResult","varCOunt","localKeys","isClass","singleSpace","cnt","offset","matchStr","SPECIAL_CHAR","rlStr","addNameSpace","trim","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","ignoreList","tempStr","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","random","templateString","compiler","engineObj","propName","templateId","isStringTemplate","blazorTemplateId","blazorId","className","childNodes","updateBlazorTemplate","templateName","comp","isEmpty","callBack","updateTemplate","resetBlazorTemplate","templateDiv","getElementById","innerTemplates","getElementsByClassName","tempId","getAttribute","tempElement","setTemplateEngine","classObj","getTemplateEngine","VirtualDOM","Engine","render","simpleRegex","multipleSplitRegex","idClassSelector","selectMapper","assigner","tagName","emptyElements","blockElements","inlineElement","selfClosingElements","fillAttrs","cspElement","nameMapper","startRegex","endRegex","attributeRegex","assignParent","childrens","detach","children","processSelector","selector","curMapper","filter","canPush","existValue","accessElement","ele","selectAll","immediateParent","temp_1","matched","mapper_1","expected","actualValue","concat","ConvertHTMLToJSon","htmlString","isText","results","tagArray","nodeArray","lastVal","getLastValue","contains","all","iterateText","iterateEndTag","iterateStartTag","tagIndex","rest","isSelfTag","attrs","names","valArr","vObj","length_3","cVal","styleSplit","tagObject","attributes","parent_3","node","parent_4","parent_5","arr","properties","extended","styles","style","append","fromElements","toElement","prepend","vDomSelector","iSelector","curColl","length_2","isDescendant","parent_2","curSelector","splitSelector_1","dParent","descendent","_b","dSelector_1","sel","descendentChild","_c","dParent_1","iCurSelector","_d","parent_1","curParent","setStyleAttribute","SVG_REG","createElementNS","setAttribute","addClass","elements","classes","classList","getClassList","classList_1","curClass","removeClass","classList_2","classArr","isVisible","visibility","offsetWidth","isEval","docFrag","createDocumentFragment","insertBefore","firstElementChild","executeScript","script","head","removeChild","iKey","select","needsVDOM","querySelectId","charRegex","idList","list","splitId","setId","closest","el","nodeType","addClasses","removeClasses","msMatchesSelector","webkitMatchesSelector","isColEName","Base","isRendered","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","setProperties","isDestroyed","muteOnChange","prevDetection","dataBind","serverDataBind","callChildDataBind","clearChanges","getOwnPropertyNames","newChanges","oldChanges","onPropertyChanged","updateModel","saveChanges","newValue","oldValue","unbind","Uint16Array","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","postMessage","setImmediate","moduleClass","getModuleName","ej2_instances","getObject","instance","curKey","defaultValue","getObjectArray","isSetter","isFactory","curType","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexArrayGetter","defCollection","ignore","controlParent","extendFunc","descriptor","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","model_1","getArrayModel","model","ejsAction","isControlParent","arrayFunction","modelObject","Property","target","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","propertyName","curText","__extends","extendStatics","setPrototypeOf","__proto__","__","create","__decorate","decorators","desc","r","getOwnPropertyDescriptor","Reflect","decorate","Animation","_super","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","getModel","elements_1","element_1","delayAnimation","stop","animation","removeAttribute","animationId","frameId","cancelAnimationFrame","applyAnimation","timeStamp","step","timerId","prevTimeStamp","duration","startAnimation","begin","avg","timingFunction","progress","requestAnimationFrame","performance","now","fail","newProp","oldProp","rippleEffect","rippleOptions","done","rippleModel","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","getBoundingClientRect","offsetX","pageX","body","scrollLeft","offsetY","pageY","scrollTop","documentElement","left","right","top","bottom","radius","sqrt","diameter","rippleElement","getComputedStyle","getPropertyValue","transform","removeRipple","rippleElements","opacity","lastPageID","ModuleLoader","loadedModules","inject","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","module","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","modules","usedModules","arg","removableModule_1","mod","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","action","parentKey","complexKeys","isFinal","valueLength","componentCount","lastHistoryLen","versionBasedStatePersistence","Component","randomId","uniqueID","needsID","isReactHybrid","enableRtl","moduleLoader","localObserver","detectFunction","appendTo","enablePersistence","setPersistData","refresh","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","localStorage","getItem","ej2StatePersistenceVersion","mergePersistData","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","setState","currentContext","calls","setItem","getPersistData","renderReactTemplates","clearTemplate","isHistoryChanged","pageID","location","href","history","hash","charCodeAt","addOnPersist","persistObj","objValue","getActualProperties","stringify","ignoreOnPersist","iterateJsonProperties","newObj","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","padding","diffX","prevLeft","prevTop","dragProcessStarted","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","handle","enableTapHold","mobileInitialize","initialize","evt","currentTarget","removeTapholdTimer","tapHoldThreshold","getScrollableParent","axis","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","preventDefault","changedTouches","intCoord","getCoordinates","initialPosition","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","position","getMousePosition","isDragScroll","distance","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","offsetTop","offsetLeft","width","height","offsetHeight","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","tempDraEleTop","dragValue","enableAutoScroll","scrollIntoView","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","scrollWidth","scrollHeight","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","cursorAt","sender","reset","draggable","draggedElement","dropIns","getDropInstance","parentElement","drop","eleInst","eleInst_1","Droppable","mouseOver","wireEvents","area","accept","isDrag","isDropArea","canDrop","droppedElement","display","coord","keyCode","KeyboardEvents","keyPressHandler","isAltKey","altKey","isCtrlKey","ctrlKey","isShiftKey","shiftKey","curkeyCode","which","keyConfigs","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","config","configCache","keyData","Number","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","load","localeObject","getConstant","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","originalEvent","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","overflow","overflowX","overflowY","eTapArgs","pnt","newX","newY","newT","xDist","yDist","removeTags","removeAttrs","attribute","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","sanitize","item","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","attr","hasAttribute","exports","require","ROOT","RTL","PIVOTCHART_LTR","DEVICE","ICON","ICON_DISABLE","ICON_HIDDEN","AXISFIELD_ICON_CLASS","WRAPPER_CLASS","OLAP_WRAPPER_CLASS","CONTAINER_CLASS","TOGGLE_FIELD_LIST_CLASS","STATIC_FIELD_LIST_CLASS","TOGGLE_SELECT_CLASS","FIELD_TABLE_CLASS","BUTTON_DRAGGABLE","OLAP_FIELD_TABLE_CLASS","FIELD_LIST_CLASS","OLAP_FIELD_LIST_CLASS","FIELD_LIST_TREE_CLASS","FIELD_HEADER_CLASS","FIELD_LIST_TITLE_CLASS","FIELD_LIST_TITLE_CONTENT_CLASS","FIELD_LIST_FOOTER_CLASS","CALCULATED_FIELD_CLASS","FLAT_CLASS","OUTLINE_CLASS","AXIS_TABLE_CLASS","OLAP_AXIS_TABLE_CLASS","LEFT_AXIS_PANEL_CLASS","RIGHT_AXIS_PANEL_CLASS","AXIS_HEADER_CLASS","AXIS_CONTENT_CLASS","AXIS_PROMPT_CLASS","PIVOT_BUTTON_WRAPPER_CLASS","PIVOT_BUTTON_CLASS","PIVOT_BUTTON_CONTENT_CLASS","DRAG_CLONE_CLASS","SORT_CLASS","MEMBER_SORT_CLASS","SORT_DESCEND_CLASS","FILTER_COMMON_CLASS","FILTER_CLASS","FILTERED_CLASS","REMOVE_CLASS","DRAG_CLASS","DRAG_DISABLE_CLASS","DROP_INDICATOR_CLASS","INDICATOR_HOVER_CLASS","MEMBER_EDITOR_DIALOG_CLASS","EDITOR_TREE_WRAPPER_CLASS","EDITOR_TREE_CONTAINER_CLASS","DRILLTHROUGH_GRID_CLASS","DRILLTHROUGH_BODY_CLASS","DRILLTHROUGH_BODY_HEADER_CONTAINER_CLASS","DRILLTHROUGH_BODY_HEADER_CLASS","DRILLTHROUGH_BODY_HEADER_COMMON_CLASS","DRILLTHROUGH_BODY_HEADER_VALUE_CLASS","DRILLTHROUGH_DIALOG","EDITOR_LABEL_WRAPPER_CLASS","EDITOR_LABEL_CLASS","CHECK_BOX_FRAME_CLASS","NODE_CHECK_CLASS","NODE_STOP_CLASS","OK_BUTTON_CLASS","CANCEL_BUTTON_CLASS","ERROR_DIALOG_CLASS","DROPPABLE_CLASS","ROW_AXIS_CLASS","COLUMN_AXIS_CLASS","VALUE_AXIS_CLASS","FILTER_AXIS_CLASS","GROUPING_BAR_CLASS","GROUP_ROW_CLASS","NO_DRAG_CLASS","SELECTED_NODE_CLASS","TITLE_HEADER_CLASS","TITLE_CONTENT_CLASS","TEXT_CONTENT_CLASS","FOOTER_CONTENT_CLASS","ADAPTIVE_CONTAINER_CLASS","ADAPTIVE_FIELD_LIST_BUTTON_CLASS","ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS","BUTTON_SMALL_CLASS","BUTTON_ROUND_CLASS","ADD_ICON_CLASS","BUTTON_FLAT_CLASS","STATIC_CENTER_DIV_CLASS","STATIC_CENTER_HEADER_CLASS","ADAPTIVE_FIELD_LIST_DIALOG_CLASS","LIST_TEXT_CLASS","LIST_SELECT_CLASS","SELECTED_OPTION_ICON_CLASS","SELECTED_LEVEL_ICON_CLASS","FILTER_DIV_CONTENT_CLASS","FILTER_TEXT_DIV_CLASS","BETWEEN_TEXT_DIV_CLASS","SEPARATOR_DIV_CLASS","FILTER_OPTION_WRAPPER_1_CLASS","FILTER_OPTION_WRAPPER_2_CLASS","FILTER_INPUT_DIV_1_CLASS","FILTER_INPUT_DIV_2_CLASS","VALUE_OPTIONS_CLASS","LEVEL_OPTIONS_CLASS","FILTER_OPERATOR_CLASS","FILTER_SORT_CLASS","SORT_ASCEND_ICON_CLASS","SORT_DESCEND_ICON_CLASS","SORT_SELECTED_CLASS","COLLAPSE","EXPAND","TABLE","COLUMNSHEADER","ROWSHEADER","VALUESCONTENT","SUMMARY","CELLVALUE","PIVOTTOOLTIP","TOOLTIP_HEADER","TOOLTIP_CONTENT","NEXTSPAN","LASTSPAN","EDITOR_SEARCH_WRAPPER_CLASS","EDITOR_SEARCH_CLASS","EDITOR_SEARCH__INPUT_CLASS","SELECT_ALL_WRAPPER_CLASS","SELECT_ALL_CLASS","PIVOTCALC","CALCDIALOG","OLAP_CALCDIALOG","CALCRADIO","CALCCHECK","CALCINPUT","CALC_FORMAT_INPUT","CALCINPUTDIV","CALC_CUSTOM_FORMAT_INPUTDIV","OLAP_CALC_CUSTOM_FORMAT_INPUTDIV","CALC_HIERARCHY_LIST_DIV","CALC_FORMAT_TYPE_DIV","CALC_MEMBER_TYPE_DIV","MEMBER_OPTIONS_CLASS","CALCOUTERDIV","OLAP_CALCOUTERDIV","FLAT","FORMAT","FORMULA","TREEVIEW","TREEVIEWOUTER","CALCCANCELBTN","CALCADDBTN","CALCOKBTN","CALCACCORD","CALCBUTTONDIV","AXIS_ICON_CLASS","AXIS_FILTER_CLASS","GRID_CLASS","PIVOT_VIEW_CLASS","PIVOT_ALL_FIELD_TITLE_CLASS","PIVOT_FIELD_TITLE_CLASS","PIVOT_FORMULA_TITLE_CLASS","OLAP_HIERARCHY_TITLE_CLASS","OLAP_FORMAT_TITLE_CLASS","OLAP_MEMBER_TITLE_CLASS","PIVOT_CONTEXT_MENU_CLASS","MENU_DISABLE","MENU_HIDE","EMPTY_MEMBER_CLASS","CALC_EDIT","CALC_EDITED","CALC_INFO","EMPTY_FIELD","VIRTUALTRACK_DIV","MOVABLECONTENT_DIV","MOVABLESCROLL_DIV","MOVABLECHILD_DIV","FROZENCONTENT_DIV","MOVABLEHEADER_DIV","DEFER_APPLY_BUTTON","DEFER_CANCEL_BUTTON","LAYOUT_FOOTER","CELL_SELECTED_BGCOLOR","SELECTED_BGCOLOR","BUTTON_LAYOUT","CHECKBOX_LAYOUT","DEFER_UPDATE_BUTTON","BACK_ICON","TITLE_MOBILE_HEADER","TITLE_MOBILE_CONTENT","ROW_CELL_CLASS","CELL_ACTIVE_BGCOLOR","SPAN_CLICKED","ROW_SELECT","GRID_HEADER","PIVOTVIEW_EXPORT","PIVOTVIEW_GRID","PIVOTVIEW_EXPAND","PIVOTVIEW_COLLAPSE","PIVOTVIEW_GROUP","PIVOTVIEW_UN_GROUP","GRID_PDF_EXPORT","GRID_EXCEL_EXPORT","GRID_CSV_EXPORT","GRID_REMOVE","GRID_TOOLBAR","PIVOTCHART","GROUP_CHART_ROW","GROUP_CHART_COLUMN","GROUP_CHART_VALUE","GROUP_CHART_VALUE_DROPDOWN_DIV","GROUP_CHART_VALUE_DROPDOWN","GROUP_CHART_COLUMN_DROPDOWN_DIV","GROUP_CHART_COLUMN_DROPDOWN","CHART_GROUPING_BAR_CLASS","VALUESHEADER","ICON_ASC","ICON_DESC","GRID_GROUPING_BAR_CLASS","PIVOTCHART_INNER","GROUP_PIVOT_ROW","rowCell","gridHeader","gridContent","gridFooter","headerContent","movableContent","movableHeader","frozenContent","frozenHeader","content","table","row","gridChkBox","editedRow","addedRow","changedRecords","addedRecords","deletedRecords","leftRight","frozenRight","frozenLeft","ariaColIndex","ariaRowIndex","tbody","colGroup","created","rowDataBound","queryCellInfo","headerCellInfo","actionBegin","actionComplete","actionFailure","dataBound","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","columnDragStart","columnDrag","columnDrop","beforePrint","printComplete","detailDataBound","toolbarClick","batchAdd","batchCancel","batchDelete","beforeBatchAdd","beforeBatchDelete","beforeBatchSave","beginEdit","cellEdit","cellSave","cellSaved","recordDoubleClick","recordClick","beforeDataBound","beforeOpenColumnChooser","beforeOpenAdaptiveDialog","resizeStart","onResize","resizeStop","checkBoxChange","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","commandClick","exportGroupCaption","initialLoad","initialEnd","dataReady","contentReady","uiUpdate","onEmpty","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","pageComplete","sortComplete","searchComplete","reorderComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","click","columnVisibilityChanged","scroll","columnWidthChanged","columnPositionChanged","rowsAdded","rowsRemoved","columnDragStop","headerDrop","dataSourceModified","refreshComplete","refreshVirtualBlock","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","updateData","saveComplete","deleteComplete","preventBatch","dialogDestroy","crudAction","addDeleteAction","destroyForm","doubleTap","beforeExcelExport","excelExportComplete","excelQueryCellInfo","excelHeaderQueryCellInfo","exportDetailDataBound","beforePdfExport","pdfExportComplete","pdfQueryCellInfo","pdfHeaderQueryCellInfo","contextMenuClick","freezeRender","contextMenuOpen","filterDialogCreated","filterMenuClose","initForeignKeyColumn","getForeignKeyData","generateQuery","showEmptyGrid","foreignKeyData","dataStateChange","dataSourceChanged","rtlUpdated","beforeFragAppend","frozenHeight","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","hierarchyPrint","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","columnChooserOpened","batchForm","beforeStartEdit","beforeBatchCancel","batchEditFormRendered","partialRefresh","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","valCustomPlacement","filterCboxValue","restoreFocus","detailIndentCellInfo","virtaulCellFocus","virtualScrollEditActionBegin","virtualScrollEditSuccess","virtualScrollEditCancel","virtualScrollEdit","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infiniteScrollHandler","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","columnChooserCancelBtnClick","resetColumns","pdfAggregateQueryCellInfo","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","refreshFrozenColumns","setReorderDestinationElement","refreshVirtualFrozenHeight","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","refreshVirtualFrozenRows","checkScrollReset","refreshFrozenHeight","setHeightToFrozenElement","preventFrozenScrollRefresh","nextCellIndex","refreshInfiniteCurrentViewData","filterDialogClose","refreshCustomFilterOkBtn","refreshCustomFilterClearBtn","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshVirtualCacheOnRowDD","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","selectRowOnContextOpen","pagerRefresh","closeInline","closeBatch","closeEdit","resetVirtualFocus","refreshVirtualEditFormCells","scrollToEdit","beforeCheckboxRendererQuery","createVirtualValidationForm","validateVirtualForm","doesImplementInterface","checkFor","valueAccessor","field","column","DataUtil","getUpdateUsingRaf","updateFunction","isExportColumns","exportProperties","columns","updateColumnTypeForExportColumns","gObj","exportColumns","gridColumns","updatecloneRow","grid","nRows","actualRows","vRows","isDataRow","isExpand","isCaptionRow","getCollapsedRowsCount","vcRows","count","gLen","groupSettings","dataRowCnt","agrCnt","indent","gLevel","GroupGuid","childLevels","recursive","nLevel","iterateArrayOrObject","collection","predicate","pred","iterateExtend","array","baseExtend","templateCompiler","baseTemplateComplier","setStyleAndAttributes","customAttributes","copyAttr","literals","exclude","values","setColumnIndex","columnModel","ind","prepareColumns","autoWidth","Column","allowReordering","headerText","foreignKeyValue","foreignKeyField","visible","setCssInGridPopUp","popUp","popUpSpan","targetPosition","isBottomTail","popup","getPosition","getPopupLeftPosition","parentsUntil","isID","getElementIndex","isEqualNode","inArray","getActualPropFromColl","coll","getUid","appendChildren","calculateAggregate","customAggregate","aggregates","rowHeight","Global","getScrollBarWidth","divNode","cssText","clientWidth","getRowHeight","ceil","isComplexField","getComplexFieldID","setComplexFieldID","isEditable","col","isOldRow","isIdentity","isPrimaryKey","allowEditing","isActionPrevent","dlg","editSettings","showConfirmDialog","wrap","clName","setFormatter","serviceLocator","fmtr","getService","getFormatFunction","setParser","getParserFunction","addRemoveActiveClasses","cells","getFilterMenuPostion","dialogObj","elementVisible","dlgWidth","newpos","calculateRelativeBasedPosition","leftPos","toogleCheckbox","span","input","previousSibling","checked","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","isForeignKey","lValue","fField","query","Query","fdata","dataSource","DataManager","json","columnData","where","getDatePredicate","operator","matchCase","executeLocal","getColumnByForeignKeyValue","filterObject","datePredicate","prevDate","nextDate","prevObj","nextObj","Predicate","setSeconds","getSeconds","predicateSt","predicateEnd","and","or","ejpredicate","renderMovable","frzCols","isRowDragable","mEle","childElementCount","isGroupAdaptive","enableVirtualization","isVirtualAdaptive","object","getCustomDateFormat","colType","intl","getPrintGridModel","hierarchyPrintMode","printGridModel","isFrozen","isFrozenGrid","getFrozenColumns","Print","printGridProp","getColumns","printMode","childGrid","expandedRows","rows_1","getRowsObject","isDetailRow","allowPaging","pageSettings","currentPage","pageSize","gridModel","getExpandedState","extendObjWithFn","getPrototypeOf","getPrototypesOfObj","i_1","cpy","cln","measureColumnDepth","depth","checkDepth","indices","refreshFilteredColsUid","filteredCols","uid_1","enableColumnVirtualization","getColumnModelByFieldName","getColumnByField","getForeignKeyColumns","getTransformValues","replacedTv","defaultView","applyBiggerTheme","rootElement","alignFrozenEditForm","mTD","fTD","mHeight","fHeight","ensureLastRow","gridObj","cntOffset","getContent","ensureFirstRow","rowTop","getEditedDataIndex","dataIndex","keyField","getPrimaryKeyFieldNames","getCurrentViewRecords","eventPromise","state","adaptr","UrlAdaptor","dm","adaptor","processQuery","getStateEventArgument","def","Deferred","deffered","ispercentageWidth","getVisibleColumns","percentageCol","undefinedWidthCol","showGroupedColumn","resetRowIndex","rows","rowElms","startIndex","isAltRow","enableAltRow","renderModule","emptyRow","resetRowObjectIndex","compareChanges","changes","newArray","dataToBeUpdated","reduce","o","assign","k","setRowElements","contentModule","rowElements","cls","getFrozenMode","freezeRowElements","frozenRightRowElements","splitFrozenRowObjectCells","tableName","getFrozenLeftCount","movable","getMovableColumnsCount","getFrozenRightColumnsCount","frozenMode","rightIndex","mvblIndex","mvblEndIdx","gridActionHandler","force","rowObj","getGridRowObjects","getMovableRowsObject","getFrozenRightRowsObject","getGridRowElements","getAllDataRows","getAllMovableDataRows","getAllFrozenRightDataRows","sliceElements","getCellsByTableName","rowIndex","getFreezeTableName","getMovableDataRows","getFrozenRightDataRows","getDataRows","getCellByColAndRowIndex","setValidationRuels","rules","mRules","frRules","isCustom","validationRules","getMovableTbody","frozenRows","newRowPosition","getMovableHeaderTbody","getMovableContentTbody","getFrozenRightTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","numberFormat","mtch_1","addBiggerDialog","enableAdaptiveUI","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","setDisplayValue","tr","idx","displayVal","isContent","trs","td","addRemoveEventListener","isOn","evt_1","createEditElement","classNames","complexFieldName","getColumnModelByUid","timer","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","PivotUtil","getType","dateValue","valueOf","getMilliseconds","resetTime","getClonedData","clonedData","fields","keyPos","framedSet","getClonedPivotValues","pivotValues","clonedSets","getClonedPivotValueObj","getDefinedObj","isContainCommonElements","collection1","collection2","lnt","setPivotProperties","control","pivotGridModule","getClonedDataSourceSettings","dataSourceSettings","catalog","cube","providerType","localeIdentifier","excludeFields","expandAll","allowLabelFilter","allowValueFilter","allowMemberFilter","enableSorting","cloneFieldSettings","filters","filterSettings","cloneFilterSettings","sortSettings","cloneSortSettings","drilledMembers","cloneDrillMemberSettings","valueSortSettings","CloneValueSortObject","valueAxis","formatSettings","cloneFormatSettings","calculatedFieldSettings","cloneCalculatedFieldSettings","fieldMapping","showSubTotals","showRowSubTotals","showColumnSubTotals","showGrandTotals","showRowGrandTotals","showColumnGrandTotals","showHeaderWhenEmpty","alwaysShowValueHeader","conditionalFormatSettings","cloneConditionalFormattingSettings","emptyCellsTextContent","cloneGroupSettings","showAggregationOnValueField","authentication","CloneAuthenticationObject","updateDataSourceSettings","clonedCollection","collection_1","caption","baseField","baseItem","isCalculatedField","isNamedSet","showNoDataItems","showFilterIcon","showSortIcon","showRemoveIcon","showValueTypeIcon","showEditIcon","allowDragAndDrop","collection_2","condition","items","levelCount","measure","selectedField","showDateFilter","showLabelFilter","showNumberFilter","value1","value2","collection_3","order","collection_4","delimiter","collection_5","columnIndex","headerDelimiter","sortOrder","userName","password","collection_6","formatString","formula","hierarchyUniqueName","collection_7","applyGrandTotals","conditions","label","backgroundColor","color","fontFamily","fontSize","collection_8","customGroups","cloneCustomGroups","endingAt","startingAt","groupInterval","rangeInterval","collection_9","groupName","getFilterItemByName","fieldName","filterItems","getFieldByName","getFieldInfo","fieldItem","fieldList","olapEngineModule","engineModule","isNamedSets","aggregateType","isButtonIconRefesh","isButtonRefresh","propValidation","oldAxesProp","newAxesProp","axes","oldAxis","newAxis","oldAxisProp","newAxisProp","propValidation_1","validation","exception","formatPivotValues","Axis","actualText","ActualText","indexObject","IndexObject","Index","rowHeaders","RowHeaders","columnHeaders","ColumnHeaders","formattedText","FormattedText","ActualValue","RowIndex","colIndex","ColIndex","colSpan","ColSpan","level","Level","rowSpan","RowSpan","isSum","IsSum","isGrandSum","IsGrandSum","valueSort","ValueSort","ordinal","Ordinal","hasChild","HasChild","isDrilled","IsDrilled","Value","Type","members","Members","formatPdfHeaderFooter","pdf","contents","pageNumberType","PageNumberType","Style","penColor","PenColor","penSize","PenSize","dashStyle","DashStyle","textBrushColor","TextBrushColor","textPenColor","TextPenColor","FontSize","hAlign","HAlign","vAlign","VAlign","points","Points","x1","X1","y1","Y1","x2","X2","y2","Y2","Format","X","Y","size","Size","Height","Width","Src","font","Font","formatPdfExportProperties","pageOrientation","PageOrientation","PageSize","Header","fromTop","FromTop","Contents","Columns","footer","Footer","FromBottom","includeHiddenColumn","IncludeHiddenColumn","DataSource","exportType","ExportType","theme","Theme","record","Record","Caption","fileName","FileName","hierarchyExportMode","HierarchyExportMode","allowHorizontalOverflow","AllowHorizontalOverflow","formatExcelStyle","fontColor","FontColor","fontName","FontName","String","bold","Bold","Indent","italic","Italic","underline","Underline","backColor","BackColor","wrapText","WrapText","borders","Borders","formatExcelCell","cell","hyperlink","Hyperlink","Target","displayText","DisplayText","formatExcelHeaderFooter","excel","Rows","Cells","grouping","Grouping","formatExcelExportProperties","multipleExport","MultipleExport","blankRows","BlankRows","headerRows","HeaderRows","footerRows","FooterRows","formatFieldList","fList","Id","FormatString","formattedMembers","FormattedMembers","dateMember","DateMember","Filter","sort","Sort","AggregateType","BaseField","BaseItem","filterType","FilterType","Formula","isSelected","IsSelected","isExcelFilter","IsExcelFilter","ShowNoDataItems","isCustomField","IsCustomField","ShowFilterIcon","ShowSortIcon","ShowRemoveIcon","ShowEditIcon","ShowValueTypeIcon","AllowDragAndDrop","IsCalculatedField","ShowSubTotals","frameContent","rowPosition","dataContent","pivot","isEmptyData","enableValueSorting","isEngineUpdated","rowCnt","rCnt","cCnt","getLocalizedObject","localeObj","updateReport","report","Name","DataType","FormatSettings","Currency","MaximumFractionDigits","MaximumSignificantDigits","MinimumFractionDigits","MinimumIntegerDigits","MinimumSignificantDigits","Skeleton","UseGrouping","generateUUID","d2","enginePopulating","enginePopulated","onFieldDropped","fieldDrop","beforeExport","onPdfCellRender","hyperlinkCellClick","resizing","cellClick","drillThrough","beforeColumnsRender","selected","drill","beginDrillThrough","editCompleted","multiLevelLabelClick","chartTooltipRender","chartLoaded","chartLoad","chartResized","chartAxisLabelRender","chartSeriesCreated","aggregateCellInfo","fieldListRefreshed","memberFiltering","calculatedFieldCreate","memberEditorOpen","fieldRemove","aggregateMenuOpen","fieldDragStart","chartPointClick","beforeServiceInvoke","initSubComponent","treeViewUpdate","pivotButtonUpdate","initCalculatedField","initToolbar","initGrouping","consts","endsWith","startsWith","fnSort","fnAscending","fnDescending","localeCompare","extractFields","jsonArray","newData","group","groupDs","isLazyLoad","jsonData","guid","indx","grouped","groupedArray","records","_loop_2","this_2","getVal","tempObj","_loop_3","fn","aggs","buildHierarchy","fKey","from","lookup","pKey","grp","fKeyData","getFieldList","copyObj","ds","comparer","middle","ignoreDiacritics","diacritics","current","callAdaptorFunction","fnName","param1","param2","getAddParams","adp","req","reqParams","isPlainObject","isCors","xhr","getGuid","rand","Uint8Array","isNull","getItemFromComparer","castRequired","distinct","requiresCompleteRecord","tmp","serverTimezoneOffset","timeZoneHandling","sum","average","truecount","falsecount","operatorSymbols","odBiOperator","odUniOperator","odv4UniOperator","fnOperators","equal","ignoreCase","ignoreAccent","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","notnull","isnull","startswith","endswith","processSymbols","processOperator","parseJson","jsonText","jsonReviver","iterateAndReviveArray","iterateAndReviveJson","keys_2","ms","offSet","dateParse","toTimeZone","isUTC","utcFormat","hrs","mins","addSelfOffset","isGuid","replacer","jsonReplacer","arrayReplacer","keys_3","toJSON","jsonDateReplacer","toUTC","utc","unix","toLocalTime","datefn","differenceString","localtimefn","norm","_assertThisInitialized","self","ReferenceError","_extends","_classCallCheck","Constructor","TypeError","_defineProperties","writable","_createClass","protoProps","staticProps","_getPrototypeOf","_typeof","Symbol","iterator","_possibleConstructorReturn","assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","Super","NewTarget","_setPrototypeOf","_inherits","subClass","superClass","BrowserRouter","createBrowserHistory","React","Router","resolveToLocation","to","currentLocation","normalizeToLocation","createLocation","forwardRefShim","forwardRef","LinkAnchor","_ref","forwardedRef","innerRef","navigate","_onClick","onClick","_objectWithoutPropertiesLoose","ex","defaultPrevented","button","metaKey","isModifiedEvent","ref","Link","_ref2","_ref2$component","__RouterContext","Consumer","invariant","createHref","forwardRefShim$1","forwardRef$1","ariaCurrent","_ref$ariaCurrent","activeClassName","_ref$activeClassName","activeStyle","classNameProp","exact","isActiveProp","isActive","locationProp","sensitive","strict","toLocation","path","pathname","escapedPath","matchPath","classnames","_len","_key","joinClassnames","Input","CLASSNAMES","floatType","bindInitialEvent","checkInputValue","floatLabelType","getParentNode","inputElement","inputValue","_focusFn","_blurFn","wireFloatingEvents","createFloatingInput","inputObject","internalCreateElement","makeElement","container","createInputContainer","customTag","floatLinelement","floatLabelElement","placeholder","innerText","encodePlaceHolder","inputWrap","updateLabelState","checkFloatLabelType","updateIconState","wireClearBtnEvents","readOnly","activeElement","validateLabel","tagClass","tag","spanEle","setCssClass","cssClass","oldClass","setPlaceholder","textContent","setReadonly","isReadonly","readonly","setEnableRtl","isRtl","setEnabled","isEnable","inputContainer","disabledAttrs","considerWrapper","removeAttributes","addAttributes","setClearButton","isClear","initial","clearButton","insertAdjacentElement","createClearButton","_internalRipple","isRipple","argsButton","buttons","_onMouseDownRipple","_onMouseUpRipple","parentEle","createIconEle","iconClass","prependSpan","innerWrapper","appendSpan","validateInputType","containerElement","createInput","showClearButton","enabled","setPropertyValue","setWidth","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","wrapper","setRipple","addIcon","icons","internalCreate","result_1","result_2","requests","offline","insertUrl","removeUrl","updateUrl","crudUrl","batchUrl","timeTillExpiration","cachingPageSize","enableCaching","requestType","crossDomain","jsonp","RemoteSaveAdaptor","CustomDataAdaptor","requiresFormat","defaultQuery","isDataAvailable","ODataAdaptor","executeQuery","JsonAdaptor","CacheAdaptor","setDefaultQuery","subQuery","fromTable","lookups","isCountRequired","processResponse","using","always","isCustomDataAdaptor","makeRequest","getDeferedArgs","nextTick","extendRequest","fnSuccess","fnFail","cache","processData","isSelector","subQuerySelector","process","request","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","isChild","subUrl","childReq","subData","ajaxReqOption","virtualRecords","getData","ajax_1","pResult","cResult","settings","original","batchRequest","doAjaxRequest","batchUpdate","deff_1","ajax_2","insert","addRecord","deleteRecord","update","updateRecord","successFunc","ajaxDeffered","failureFunc","ajaxFunc","ajax_3","distincts","queries","expands","sortedColumns","groupedColumns","lazyLoad","setKey","dataManager","execute","cloned","addParams","expand","tables","search","searchKey","fieldNames","sortBy","isFromGroup","sortByForeignKey","direction","sorts","filterQueries","sortByDesc","page","pageIndex","take","nos","skip","hierarchy","selectorFn","foreignKey","requiresCount","aggregate","q","filterQueryLists","singles","filtered","isComplex","predicates","combinePredicates","combine","fromJson","fromJSONData","validate","isAnd","toJson","preds","_defineProperty","ownKeys","enumerableOnly","getOwnPropertySymbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","CellRenderer","locator","localizer","formatter","role","tabindex","rowChkBox","getGui","toView","getFormatter","fData","isEdit","isReactCompiler","isReact","literals_1","dummyData","templateID","getColumnTemplate","renderTemplates","invokeFormatter","refreshCell","refreshTD","cellIndex","parentRow","newTD","cloneAttributes","innerHtml","displayAsCheckBox","localeStr","fromFormatter","appendHtml","getDomSetter","selectionSettings","persistSelection","checkWrap","createCheckBox","firstChild","checkAllRows","setAttributes","buildAttributeFromCell","rowRenderingMode","textAlign","clipMode","isCheckBoxType","isTemplate","isColumnSelected","cellType","class","historyContext","createContext","displayName","createNamedContext","createNamedContext$1","_isMounted","_pendingLocation","staticContext","unlisten","listen","computeRootMatch","isExact","componentDidMount","componentWillUnmount","Provider","cache$1","cacheCount$1","_options","_options$exact","_options$strict","_options$sensitive","cacheKey","pathCache","regexp","pathToRegexp","compilePath$1","_compilePath","memo","Route","context$1","computedMatch","_this$props","addLeadingSlash","charAt","stripBasename","basename","createURL","createPath","staticHandler","methodName","noop","Switch","Children","isValidElement","cloneElement","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","hoistStatics","useContext","disableHtmlEncode","allowSorting","allowResizing","allowFiltering","allowGrouping","showColumnMenu","enableGroupByFormat","showInColumnChooser","edit","allowSearching","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","valueFormatter","ValueFormatter","commands","commandsTemplate","templateFn","headerTemplate","headerTemplateFn","itemTemplate","fltrTemplateFn","editTemplate","filterTemplate","isForeignColumn","sortComparer","a_1","xObj","yObj","getSortDirection","setSortDirection","freezeTable","refreshReactColumnTemplateByUid","formatFn","getParser","parserFn","getHeaderTemplate","getFilterItemTemplate","CommandColumnModel","elementRect","popupRect","parentDocument","fixedParent","anchor","fixedElement","anchorPos","tempAnchor","calculatePosition","currentElement","positionX","positionY","targetValues","ownerDocument","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","_toConsumableArray","arrayLikeToArray","iter","unsupportedIterableToArray","RowModelGenerator","generateRows","enableInfiniteScrolling","getInfiniteIndex","generateRow","ensureColumns","cols","detailTemplate","generateCell","DetailExpand","RowDragIcon","pid","tIndex","parentUid","parentGid","isPrinting","getSelectedRowIndexes","refreshForeignKeyRow","Row","generateCells","foreignKeyColumns","dummies","CommandColumn","rowId","oIndex","opt","Data","isDataCell","Cell","refreshRows","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","err","setRowValue","setRowData","setCellValue","pKeyField","makechanges","getDataModule","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","cells_1","rowArgs","cellArgs","chekBoxEnable","selIndex","isCheckBoxSelection","buildAttributeFromRow","cellRendererFact","cellRenderer","getCellRenderer","requestTypeAction","isRowSpanned","prevRowCells","prevRowCell","rowSpanRange","cellSpan","CellMergeRender","isSpanned","lazyLoadCssClass","frozenColumns","footerTemplate","summarycell","lastSummaryCell","firstSummaryCell","ListBase","li","ul","icon","check","expanded","collapsible","disabled","image","iconWrapper","anchorWrap","navigable","getFieldValues","dataItem","fieldData","isHeader","dataField","defaultMappedFields","isChecked","iconCss","hasChildren","tooltip","htmlAttributes","urlAttributes","imageAttributes","imageUrl","groupBy","defaultAriaAttributes","listRole","itemRole","groupItemRole","itemText","wrapperRole","defaultListBaseOptions","showCheckBox","showIcon","enableHtmlSanitizer","expandCollapse","ariaAttributes","listClass","itemClass","processSubChild","groupTemplate","expandIconClass","moduleName","expandIconPosition","itemNavigable","createListFromArray","isSingleLevel","componentInstance","generateUL","createListItemFromArray","subChild","curOpt","getModuleClass","generateId","itemCreating","generateSingleLevelLI","generateLI","itemCreated","createListItemFromJson","checkboxElement","anchorElement","typeofData","curItem","innerEle","imageElemnt","iconElement","createListFromJson","elementArray","addSorting","getDataSource","typeof","elementAttributes","getAllAttributes","nodeName","nodeValue","subDS","subLi","innerElements","grpLI","elementID","anchorTag","createTextNode","isFullNavigation","anchorWrapper","uID","blazId","removeBlazorID","compiledString","groupTemplateID","innerDiv","liElement","ulElement","createList","getSiblingLI","isPrevious","siblingLI","liIndex","liCollections","groupDataSource","curFields","cusQuery","itemObj","grpItem","newtext","_id","createJsonFromElement","curEle","jsonAr","childs","hasChildNodes","attributes_1","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","headerData","generateIcon","wrapperInitialize","WRAPPER","ejInstance","getTextNode","childnode","enableRipple","rippleSpan","frameSpan","labelSpan","rippleMouseHandler","createEvent","initEvent","dispatchEvent","setHiddenInput","proxy","isFunction","isArrayBuffer","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","assignValue","thisArg","stripBOM","_inheritsLoose","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","console","fromView","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","getIndentCount","buildSummaryData","getGeneratedRow","summaryRow","raw","indents","getIndentByLevel","isDetailGridAlone","indentLength","getGeneratedCell","getCellType","DetailFooterIntent","sColumn","scolumn","columnName","dummy","summaryRows","single","setTemplate","types","disp","Summary","GroupSummaryModelGenerator","v","GroupSummary","CaptionSummaryModelGenerator","prev","CaptionSummary","isAbsolute","spliceOne","n","pop","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","valueEqual","every","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","callback","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","entry","nextIndex","nextEntries","canGo","Adaptor","pvt","countFlg","keyCount","agg","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","onPage","formGroupResult","onWhere","aggQuery","deletedRecordsLen","onAggregates","onSearch","onSortBy","fnCompare","onGroup","onRange","onTake","onSkip","onSelect","hierarchyFilters","getQueryRequest","groups","searches","getFiltersFrom","getRequestQuery","pvtData","convertToQueryString","request1","selects","handleTimeZone","formRemoteGroupedData","getAggregateResult","childLevel","getGroupedRecords","hasRecords","childGroupedRecords","changed","added","deleted","keyColumn","predicats","aggregateData","isServerGrouping","groupQuery","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","returnValue","getField","encodeURIComponent","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","reverse","onCount","overrideMimeType","metaCheck","rootUrl","dataUrls","resourceTableName","dataCopy","metaData","emptyAndBatch","processBatchResponse","versionCheck","keys_4","localTimeReplacer","convertObj","localTime","compareAndRemove","initialGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","stat","generateBodyContent","org","method","cIdx","jsonObj","exVal","changeGuid","WebApiAdaptor","ODataV4Adaptor","onExpand","exArr","onDistinct","distinctFields","metaName","dataUrl","dataCount","host","Count","Items","WebMethodAdaptor","param","updateKey","isCrudAction","isInsertAction","cacheAdaptor","guidId","forDel","currentTime","requestTime","removeItem","generateKey","currentFilter","newQuery","cachedItems","_slicedToArray","_arr","_n","_e","_s","next","excluded","sourceKeys","defaulthtmlkeys","delayUpdate","ComponentBase","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","refreshChild","canDelayUpdate","renderReactComponent","portals","reactElement","shouldComponentUpdate","nextProps","updateProperties","silent","dProps","propkey","isClassName","htmlattributes","compareValues","refreshProperties","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","controlAttributes","reactUid","onChange","syntheticEvent","nativeEvent","tempVal","tempVal2","compareObjects","oldProps","newProps","diffArray","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","propInstance","changedProps_1","propInstance_1","forceUpdate","templateNames","tempPortal","indexCount","propIndexCount","portal","childCache","childs_1","toArray","ifield","getChildType","childProps","getChildProps","isDirective","matcher","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","services","applyMixins","derivedClass","baseClass","ComplexBase","stringCompiler","templateElement","cEle","actTemplate","actData","isLegacyTemplate","ReactDOM","rele","AriaService","setOptions","setStateAndProperties","setExpand","setSort","setBusy","isBusy","busy","invalid","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","multiselectable","haspopup","colcount","rowcount","CLS_RTL","CLS_DISABLE","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_DEVICE","CLS_OVERLAY","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","browser","browserCheck","customStep","ieCheck","uniqueId","touchModule","touchHandler","swipe","swipeHandler","scrollEle","scrollEventHandler","createOverlayElement","createNavIcon","setScrollState","wheelEventHandler","scrollStep","scrollCnt","buildTag","scrollBar","innerEle_1","ele_1","scrollItems","navs","overlays","disable","navEle","downOverlayEle","clsDown","downEle","navItem","upEle","eventBinding","nav","clsUp","navElement","navUpItem","onKeyPress","ev","keyTimer","keyTimeout","eleScrolling","onKeyUp","tapHold","tabHoldHandler","repeatScroll","clickEventHandler","timeout","trgt","scrollDis","isContinuous","frameScrollRequest","deltaY","swipeElement","sin","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisableCls","removeDisableCls","arrowIcon","navUpEle","navDownEle","upOverlay","downOverlay","disEle","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","PositionData","Popup","zIndex","refreshPosition","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","resolveCollision","checkCollision","orientationOnChange","getRelateToElement","scrollRefresh","relateToElement","relateTo","hide","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","isElementVisible","checkGetBoundingClientRect","win","windowView","scrollY","scrollX","outerWidth","outerHeight","elementView","reposition","collision","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","targetType","callFlip","flip","viewPortElement","callFit","isCollide","fit","viewPortRect","horz","vert","show","animationOptions","relativeElement","zIndexElement","getZindexPartial","showAnimation","hideAnimation","parentStyle","overflowRegex","parentZindex","childrenZindex","siblingsZindex","finalValue","currentZindexValue","targetContainer","elemData","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","elemOffset","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","removeProperty","edge","updateElementData","setPosition","leftFlip","topFlip","setPopup","eStatus","deepCheck","collideSide","getTargetContainerLeft","getTargetContainerTop","windowWidth","documentReact","cssClassName","Button","removeRippleEffect","isPrimary","tempContent","setIconCss","controlStatus","iconPosition","isToggle","btnClickHandler","unWireEvents","focusIn","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","HScroll","scrollHandler","createOverlay","scrollDiv","overlay","navEles","rightOverlayEle","clsRight","rightEle","leftEle","clsLeft","navLeftItem","rootEle","swipeEle","addDisable","removeDisable","navLeftEle","navRightEle","leftOverlay","rightOverlay","HeaderRender","frzIdx","notfrzIdx","isFirstCol","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","getColumnByUid","lockColumn","getColumnIndexByField","lineHeight","getClosest","ariaService","widthService","getFrozenLeftColumnsCount","setVisible","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","renderPanel","toggleStackClass","setPanel","renderTable","headerDiv","getPanel","createHeaderTable","setTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","panel","getTable","headerTable","getColGroup","colgroup","setColGroup","getRows","tHead","createTable","createHeader","tableEle","cellspacing","tblName","findHeaderRow","createHeaderContent","thead","bodyCell","rowBody","len_1","updateColGroup","colHeader","rowRenderer","headerRow","colDepth","getHeaderCells","colFreezeMode","freeze","indexes","getColumnIndexesInView","isXaxis","len_2","HeaderIndent","DetailHeader","RowDragHIcon","getHeaderTable","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","lastCol","isLockColumn","isFrozenLockColumn","scrollbar","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","isFrozenStack","ensureStackedFrozen","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","inViewIndexes","getColumnIndexByUid","isTrue","lockColsCount","getFrozenColSpan","clen","getNormalizedColumnIndex","normalizedfrzCols","mTblColGrp","getHeaderContent","refreshUI","isVFTable","freezeReorder","getVirtualFreezeHeader","appendContent","setWidthToColumns","updateDefaultCursor","gCells","allowTextWrap","textWrapSettings","wrapMode","showDropArea","toolbar","toolbarItems","toolbarLeft","toolbarItem","onclick","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","ContentRender","freezeRows","movableRows","currentInfo","prevCurrentView","isLoaded","viewColIndexes","infiniteCache","isRemove","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","mutableData","rafCallback","mContentRows","getMovableVirtualContent","fContentRows","getFrozenVirtualContent","mHdr","getMovableVirtualHeader","fHdr","getFrozenVirtualHeader","renderFrozenRightContent","case","hideSpinner","isRemote","generator","getModelGenerator","enableLazyLoading","enableAfterRender","refreshContentRows","droppableDestroy","byKey","keyArgs","pressedKey","contentDiv","virtualTable","virtualTrack","createContentTable","initializeContentDrop","currentViewData","currentMovableRows","frag","initialPageRecords","hdrTbody","trElement","hdrfrag","isInfiniteScroll","tbdy","modelData","fCont","mCont","cont","emptyVcRows","virtualInfo","sentinelInfo","renderMovableContent","checkCache","setTbody","getTbody","isFrozenLeft","registeredTemplate","templatetoclear","rootNodes","destroyTemplate","updateVirtualCells","blockLoad","offsets","offsets_1","vGroupOffsets","bSize","blockIndexes","round","contentPanel","rowObject","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","setRowsInLazyGroup","setInfiniteVisibleRows","rowTemplateID","getRowTemplate","lastElementChild","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","splitRows","getFrozenHeader","parentTable","setIsFrozen","frCont","renderNextFrozentPart","infiniteScrollModule","maintainRows","infiniteScrollSettings","enableCache","frozenCols","getGroupCache","initialGroupRows","getCurrentBlockInfiniteRecords","isFreeze","getReorderedVFRows","getReorderedFrozenRows","getReorderedRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","contentTable","infiniteRows","getMovableRows","getRowElements","getMovableRowElements","testRow","fRows","mRows","rowLen","cellLen","rightRows","rightLen","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","colIdx","colG","infiniteFreezeData","mTable","infiniteMovableData","setDisplayNone","invokedFromMedia","hideAtMedia","updateMediaColumns","getHeaderColGroup","replaceChild","droppable","canSkip","GroupModelGenerator","renderEmpty","setSelection","clearAll","getRowByIndex","getInfiniteRowIndex","firstRowIndex","getVirtualRowIndex","getMovableRowByIndex","enable","setRowObjects","immutableModeRendering","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","prevLen","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","old","primaryKey","getBatchChanges","isDirty","updateCellIndex","rowEle","summaryModelGen","captionModelGen","isCollapseStateEnabled","ensureRowVisibility","parentid","childId","isRenderCaption","prevKey","generateDataRows","captionRow","generateCaptionRow","aggregatesCount","getCaptionRowCells","visibles","groupedLen","generateIndentCell","Expand","captionCells","cIndex_1","wFlag","tmpFlag","GroupCaption","GroupCaptionEmpty","parentID","childID","childGid","gSummary","fkValue","cRow","childRow","ColumnWidthService","totalColumnsWidth","setColumnWidth","getTableWidth","setMinwidthBycalculation","tWidth","difference","tmWidth","minWidth","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","tgridWidth","setWidthToTable","clear","headerCol","getContentTable","fWidth","isDraggable","contentCol","freezeLeft","freezeRight","movableCount","isColFrozen","frHdr","getFrozenRightHeader","getColumnLevelFrozenColgroup","editTableCol","refreshFrozenScrollbar","frzMode","frozenScrollbar","movableScrollbar","frozencontent","frozenWidth","movableWidth","frozenRightScrollbar","frozenRightWidth","placeHolder","getSiblingsHeight","getHeightFromDirection","sibling","isWidUndefCount","maxWidth","columns_1","calcMovableOrFreezeColWidth","tableType","setWidthToFrozenRightTable","freezeWidth","isAutoResize","headerTbl","cntTbl","setWidthToFrozenLeftTable","setWidthToMovableTable","isColUndefined","isWidthAuto","setWidthToFrozenEditTable","setWidthToMovableEditTable","resizeSettings","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","prevIndexes","refMatrix","refreshMatrix","actions","isVirtualScroll","rowModelGen","focusCheck","onFocus","setActive","enableHeaderFocus","editModule","matrix","generate","validator","passiveFocus","skipAction","onBlur","relatedTarget","removeFocus","getFocusInfo","elementToFocus","tabIndex","isFrozenRight","beforeArgs","byClick","clickArgs","clearOutline","skipOn","activeKey","outline","swapInfo","jump","toHeader","toFrozen","toFrozenRight","getNextCurrent","active","setActiveByKey","lastIdxCell","clearIndicator","th","filterCell","focusVirtualElement","virtualData","isAdd","isCancel","isKeyFocus","selectedRowIndex","empty","preventScroll","getFocusedElement","fContent","frContent","fHeader","frHeader","setFocusedElement","addFocus","addOutline","focusHeader","resetFocus","focusContent","isFocused","isJump","getInfo","focusedColumnUid","getColumnByIndex","FixedContentFocus","FixedRightContentFocus","ContentFocus","FixedHeaderFocus","FixedRightHeaderFocus","HeaderFocus","cFocus","updateRow","index_1","isRowTemplate","newMovableRows","newFrozenRows","newfrRows","handlerInstance","focusElement","cellPosition","gridPosition","clientHeight","passiveHandler","evtHandlers","filterfocus","restoreFocusWithAction","internalCellFocus","getPrevIndexes","forgetPrevious","focusEle","getFocusable","Matrix","allow","emptyTable","inValid","vector","moveTo","keyActions","indexesByKey","getCurrentFromAction","editNextRow","allowNextRowEdit","isLastCellPrimaryKey","visibleIndex","isPresent","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","lastIndex","previousRowFocusValidate","firstIndex","frozenSwap","frSwap","enterFrozen","isHeaderFocus","previous","optionals","defaultLen","rIndex","cIndex","isData","isSelectable","isCellWidth","getGridSeletion","allowSelection","allowColumnSelection","isLastCell","lastRow","headerSwap","fMatrix","focusModule","current1","current2","hMatrix","current3","SearchBox","searchBox","searchFocus","searchBlur","wireEvent","unWireEvent","headerMat","CheckBoxFilterBase","existingPredicate","foreignKeyQuery","filterState","cBoxTrue","cBoxFalse","closeDialog","clickHandler","keyupHandler","searchHandler","searchBoxKeyUp","foreignKeyFilter","fColl","mPredicate","fPredicate","filterCollection","fpred","foreignFilter","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","getLocalizedLabel","updateDataSource","actualPredicate","filteredColumns","allowCaseSensitive","isFiltered","getAndSetChkElem","sBox","hideSearchbox","title","inputargs","spinner","cBox","showDialog","columnType","Dialog","animationSettings","effect","btnClick","buttonModel","dialogCreated","dialogOpen","renderResponsiveFilter","isResponsiveFilter","maxHeight","createSpinner","showSpinner","getAllData","openDialog","filterTemplateCol","filterItemTemplate","clearFilter","fltrBtnHandler","searchInput","optr","ddlValue","isMenuNotEqual","fObj","caseSen","defaults","isNotEqual","itemsCnt","generateNullValuePredicates","arg1","arg2","arg3","arg4","arg5","arg6","initiateFilter","firstVal","foreignQuery","predicte","parsed","addDistinct","filterModel","filterChoiceCount","filterargs","filterObj","filterEvent","processSearch","getPredicateFromCols","getPredicate","predicateList","isGrid","foreignColumn","getQuery","processDataOperation","filteredColumn","defObj","dataSuccess","isInitial","allPromise","runArray","colData","fullData","args1","searchSettings","sSettings","filterColumn","filteredData","getDistinct","processDataSource","updateResult","createFilterItems","updateAllCBoxes","updateIndeterminatenBtn","setFocus","prevElem","cBoxes_1","createCheckbox","btn","btnObj","indeterminate","cBoxes","nullCounter","selectAllValue","checkBox","isColFiltered","isRndere","args_1","checkbox","getCheckedState","checkState","foreignDataObj","generatePredicate","updateDateFilter","getCaseValue","dataState","isPending","resolver","foreignKeyDataState","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","isAngular","isQueryInvokedFromData","skipPage","columnQueryMode","selectQueryFields","filterQuery","searchQuery","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","pageCount","log","isGrpFmt","formatGroupColumn","sortGrp","fcolumn","getSearchColumnFieldNames","needForeignKeySearch","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","foreignCols","defaultFltrCols","gridColumn","grabColumnByFieldFromAllCols","excelPredicate","foreignCols_1","column_1","grabColumnByUidFromAllCols","_f","_g","getKey","crud","deferred_1","pr","previousData","deff","endEdit","getState","getForeignKeyDataState","setForeignKeyDataState","dataArgs","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","queryString","prevString","prevElementId","FieldSettings","dropDownBaseClasses","ITEMTEMPLATE_PROPERTY","VALUETEMPLATE_PROPERTY","GROUPTEMPLATE_PROPERTY","HEADERTEMPLATE_PROPERTY","FOOTERTEMPLATE_PROPERTY","NORECORDSTEMPLATE_PROPERTY","ACTIONFAILURETEMPLATE_PROPERTY","DropDownBase","preventChange","isPreventChange","getPropObject","newProperty","oldProperty","getValueByText","listData","checkValueCase","isTextByValue","typeOfData","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","textItem","typedText","getFormattedValue","baseTemplate","checkTemplate","l10nUpdate","noRecordsTemplate","actionFailureTemplate","DropDownBaseresetBlazorTemplates","actionFailureTemplateId","noRecordsTemplateId","noDataCompTemp","DropDownBaseupdateBlazorTemplates","componentLocale","getLocaleName","l10n","liElem","getTextByValue","enableRtlElements","bindEvent","jsonElement","resetList","renderItemsBySelect","setListData","noRecord","itemTemplateId","groupTemplateId","valueTemplateId","headerTemplateId","footerTemplateId","updateDataAttribute","invalidAttr","getJSONfromOption","optionGroup","updateFields","scrollTimer","isRequested","isDataFetched","emptyDataRequest","listItems","renderItems","onActionComplete","bindChildItems","onActionFailure","localDataArgs","childNode","remainingItems","sortedData","updateListValues","raiseDataBound","findListElement","findNode","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","listOption","fixedHeaderElement","postRender","listElement","focusItem","selectedItem","listEle","groupValue","createListItems","getSortedDataSource","fieldValues","setFloatingHeader","setFixedHeader","scrollStop","liHeight","getValidLi","topIndex","currentLi","isTempEmpty","liWidth","firstLi","textField","getIndexByValue","getItems","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","setUpdateInitial","setZIndex","rippleFun","isGroupChecking","addItem","itemIndex","itemsCount","selectedItemValue","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","updateDataList","validationAttribute","hidden","itemCount","getDataByValue","dropDownListClasses","root","hover","rtl","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","DropDownList","previousValue","isListSearched","checkBlazor","isServerBlazor","valueTempElement","initializeData","activeIndex","isPopupOpen","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initRemoteRender","isNotSearchList","isTyped","preventFocus","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","keyConfigure","tab","enter","escape","home","down","pageUp","pageDown","space","popupObj","interopAdaptor","invokeMethodAsync","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","resetFocusElement","removeHover","removeSelection","resetSelection","getItemData","onChangeEvent","selectedLI","itemData","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","setEnable","defaultAttr","getAriaAttributes","targetElement","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","isFilterLayout","focusOutAction","focusOut","onFocusOut","resetValueHandler","formElement","dropDownClick","bindCommonEvent","keyboardModule","mobileKeyActionHandler","keyActionHandler","bindClearEvent","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","isServerIncrementalSearch","searchKeyEvent","onServerIncrementalSearch","incrementalSearch","isValidLI","back","closePopup","setHover","hoveredItem","selectedIndex","elementId","fromCharCode","strLength","setScrollPosition","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isNavAction","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isServerNavigation","isSelectFocusItem","nextItem","findLi","steps","previousItem","checkSelector","onDocumentClick","activeStateChange","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","previousItemData","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSelectedLI","dropdownCompiler","dropdownTemplate","templateData","valueCompTemp","selectedItems","dataValue","dataText","eve","detachChangeEvent","preItems","selectedElement","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","selectionStart","selectionEnd","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","popupElement","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","checkField_1","updateActionCompleteDataValues","addNewItem","newElement","value_1","actionCompleteDataUpdate","highlightedItem","refreshPopup","popupEle","serverPopupEle","listHeight","popupHeight","setHeaderTemplate","setFooterTemplate","updateServerPopup","searchBoxHeight","offsetValue","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","getFocusElement","createPopup","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","listScroll","inputParent","destroyPopup","serverBlazorUpdateSelection","bindServerScrollEvent","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","isResetItem","actionList","targetExitViewport","clearElement","border","popupOffset","lastItem","paddingBottom","popupWidth","scrollBottom","currentOffset","nextBottom","nextOffset","paddingTop","boxRange","isPopupButton","blur","setEleWidth","scrollableParentElements_1","animModel","fixedHeader","popupHolderEle","updatedCssClassValues","selectElement","onselect","stopImmediatePropagation","onchange","footerCompTemp","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","ddlProps","newClass","invokeRenderPopup","isDropdownComp","proxy_2","onpopstate","clientRenderPopup","renderHightSearch","updateclientItemData","initValueItemData","serverUpdateListElement","isFooter","isSelectVal","attrArray","_arrayLikeToArray","arr2","__esModule","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","global","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","func","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","string","trimmedEndIndex","baseUnary","baseValues","cacheHas","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","_","runInContext","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","Map","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","number","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightLength","isNew","createAggregator","initializer","createAssigner","sources","guard","isIterateeCall","iterable","createCaseFirst","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","setData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","flatten","otherFunc","isKeyable","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","memoize","memoizeCapped","quote","subString","differenceBy","differenceWith","findIndex","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","invokeMap","keyBy","partition","before","bindKey","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","flush","defer","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lt","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","curry","curryRight","dropRight","dropRightWhile","dropWhile","fill","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functions","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","takeRight","takeRightWhile","takeWhile","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEqualWith","isMatch","isMatchWith","isNative","isNil","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","padEnd","padStart","radix","floating","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","unescape","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","define","_unsupportedIterableToArray","minLen","_createForOfIteratorHelper","strictUriEncode","decodeComponent","splitOnFirst","validateArrayFormatSeparator","encode","decode","keysSorter","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","parseBooleans","arrayFormat","arrayFormatSeparator","isEncodedArray","arrayValue","parserForArrayFormat","_step","_iterator","_splitOnFirst","_splitOnFirst2","_Object$keys","_i2","_Object$keys2","Boolean","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","_i3","_Object$keys3","parseUrl","_splitOnFirst3","_splitOnFirst4","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","getHash","_exports$parseUrl","exclusionFilter","DismissReason","backdrop","esc","consolePrefix","uniqueArray","capitalizeFirstLetter","nodeList","warn","previousWarnOnceMessages","warnOnce","warnAboutDeprecation","deprecatedParam","useInstead","callIfFunction","hasToPromiseFn","toPromise","asPromise","isPromise","isJqueryElement","jquery","Element","argsToParams","swalPrefix","swalClasses","iconTypes","getContainer","elementBySelector","selectorString","elementByClass","getPopup","getIcon","getTitle","getHtmlContainer","getImage","getProgressSteps","getValidationMessage","getConfirmButton","getDenyButton","deny","getInputLabel","getLoader","loader","getCancelButton","getActions","getFooter","getTimerProgressBar","getCloseButton","focusable","getFocusableElements","focusableElementsWithTabindex","otherFocusableElements","isModal","isToast","isLoading","states","previousBodyPadding","setInnerHtml","html","DOMParser","parseFromString","hasClass","removeCustomClasses","showClass","applyCustomClass","customClass","getInput","inputType","getChildByClass","radio","focusInput","toggleClass","applyNumericalStyle","setStyle","toggle","getClientRects","allButtonsAreHidden","hasCssAnimation","animDuration","transDuration","animateTimerProgressBar","timerProgressBar","transition","stopTimerProgressBar","timerProgressBarWidth","timerProgressBarFullWidth","timerProgressBarPercent","isNodeEnv","sweetHTML","file","textarea","resetOldContainer","oldContainer","resetValidationMessage","Swal","addInputChangeListeners","rangeOutput","oninput","nextSibling","getTarget","setupAccessibility","toast","setupRTL","init","oldContainerExisted","parseHtmlToContainer","HTMLElement","handleObject","handleJqueryElem","animationEndEvent","testEl","transEndEventNames","WebkitAnimation","OAnimation","measureScrollbar","scrollbarWidth","renderActions","confirmButton","denyButton","cancelButton","showConfirmButton","showDenyButton","showCancelButton","renderButton","handleButtonsStyling","reverseButtons","loaderHtml","buttonsStyling","styled","confirmButtonColor","denyButtonColor","cancelButtonColor","buttonType","handleBackdropParam","background","handlePositionParam","center","handleGrowParam","grow","growClass","renderContainer","privateProps","innerParams","domCache","inputTypes","renderInput","rerender","inputClass","inputAttributes","showInput","setCustomClass","renderInputType","getInputContainer","attrName","setInputPlaceholder","inputPlaceholder","setInputLabel","prependTo","inputLabel","labelClass","email","tel","rangeInput","checkboxContainer","getMargin","initialPopupWidth","MutationObserver","textareaWidth","observe","attributeFilter","renderContent","htmlContainer","renderFooter","renderCloseButton","closeButton","closeButtonHtml","showCloseButton","closeButtonAriaLabel","renderIcon","applyStyles","iconHtml","iconType","setColor","adjustSuccessIconBackgoundColor","popupBackgroundColor","successIconParts","iconContent","question","warning","iconColor","borderColor","renderImage","imageAlt","imageWidth","imageHeight","createStepElement","stepEl","createLineElement","lineEl","progressStepsDistance","renderProgressSteps","progressStepsContainer","progressSteps","currentProgressStep","renderTitle","titleText","modal","didRender","isVisible$1","clickConfirm","clickDeny","clickCancel","fire","_construct","mixinParams","MixinSwal","priorityMixinParams","_get","showLoading","buttonToReplace","replaceButton","loading","RESTORE_FOCUS_TIMEOUT","globalState","focusPreviousActiveElement","previousActiveElement","restoreActiveElement","returnFocus","restoreFocusTimeout","scrollTo","getTimerLeft","stopTimer","resumeTimer","toggleTimer","running","increaseTimer","increase","isTimerRunning","isRunning","bodyClickListenerAdded","clickHandlers","bindClickHandler","bodyClickListener","defaultParams","hideClass","heightAuto","allowOutsideClick","allowEscapeKey","allowEnterKey","stopKeydownPropagation","keydownListenerCapture","preConfirm","preDeny","confirmButtonText","confirmButtonAriaLabel","denyButtonText","denyButtonAriaLabel","cancelButtonText","cancelButtonAriaLabel","focusConfirm","focusDeny","focusCancel","showLoaderOnConfirm","showLoaderOnDeny","inputOptions","inputAutoTrim","inputValidator","returnInputValueOnDeny","validationMessage","willOpen","didOpen","willClose","didClose","didDestroy","scrollbarPadding","updatableParams","deprecatedParams","toastIncompatibleParams","isValidParameter","paramName","isUpdatableParameter","isDeprecatedParameter","checkIfParamIsValid","checkIfToastParamIsValid","checkIfParamIsDeprecated","showWarningsForParams","staticMethods","enableLoading","hideLoading","showRelatedButton","getInput$1","fixScrollbar","paddingRight","undoScrollbar","iOSfix","MSStream","platform","iosfix","lockBodyScroll","addBottomPaddingForTallPopups","bottomPanelHeight","preventTouchMove","ontouchstart","shouldPreventTouchMove","ontouchmove","stopPropagation","isStylys","isZoom","touches","touchType","undoIOSfix","setAriaHidden","unsetAriaHidden","privateMethods","swalPromiseResolve","removePopupAndResetState","triggerDidCloseAndDispose","keydownTarget","keydownHandler","capture","keydownHandlerAdded","removeBodyClasses","shown","resolveValue","prepareResolveValue","handlePopupAnimation","isConfirmed","isDenied","isDismissed","animationIsSupported","animatePopup","swalCloseEventFinishedCallback","_destroy","setButtonsDisabled","setInputDisabled","radios","enableButtons","disableButtons","enableInput","disableInput","showValidationMessage","inputerror","resetValidationMessage$1","getProgressSteps$1","Timer","started","defaultInputValidators","setDefaultInputValidators","validateCustomTargetElement","setParameters","swalStringParams","getTemplateParams","templateContent","showWarningsForElements","getSwalParams","getSwalButtons","getSwalImage","getSwalIcon","getSwalInput","getSwalStringParams","showWarningsForAttributes","optionValue","optionName","paramNames","allowedElements","allowedAttributes","SHOW_CLASS_TIMEOUT","openPopup","initialBodyOverflow","addClasses$1","setScrollingVisibility","fixScrollContainer","swalOpenAnimationFinished","setProperty","handleInputOptionsAndValue","handleInputOptions","handleInputValue","getInputValue","getCheckboxValue","getRadioValue","getFileValue","files","processInputOptions","populateInputOptions","formatInputOptions","renderOption","optionLabel","inputOption","optgroup","radioValue","radioLabel","radioInput","radioLabelElement","valueFormatted","handleConfirmButtonClick","handleConfirmOrDenyWithInput","handleDenyButtonClick","handleCancelButtonClick","dismissWith","handleInputValidator","checkValidity","preDenyValue","succeedWith","preConfirmValue","addKeydownHandler","increment","focusableElements","arrowKeysNextButton","arrowKeysPreviousButton","handleEnter","handleTab","handleArrows","handleEsc","isComposing","btnIndex","buttonToFocus","handlePopupClick","handleToastClick","handleModalMousedown","handleContainerMousedown","handleModalClick","ignoreOutsideClick","onmousedown","onmouseup","_main","userParams","currentInstance","prepareParams","populateDomCache","swalPromise","templateParams","dismiss","setupTimer","initFocus","globalState$$1","focusButton","blurActiveElement","validUpdatableParams","updatedParams","deferDisposalTimer","disposeSwal","unsetWeakMaps","instanceMethods","disableLoading","closeModal","closeToast","SweetAlert","_len2","_key2","outerParams","onFulfilled","onFinally","finally","_currentInstance","default","factory","Sweetalert2","swal","sweetAlert","t","styleSheet","__assign","PivotEngine","aggregatedValueMatrix","valueContent","formatFields","dateFormatFunction","calculatedFields","calculatedFormulas","saveDataHeaders","columnCount","rowCount","colFirstLvl","rowFirstLvl","rowStartPos","colStartPos","headerCollection","rowHeadersCount","columnHeadersCount","rMembers","cMembers","groupingFields","valueMatrix","indexMatrix","memberCnt","pageInLimit","endPos","removeCount","colHdrBufferCalculated","colValuesLength","rowValuesLength","slicedHeaders","fieldFilterMem","filterPosObj","selectedHeaders","selectedHeader","rowGrandTotal","columnGrandTotal","removeRowGrandTotal","removeColumnGrandTotal","isValueHasAdvancedAggregate","rawIndexObject","isEditing","actualData","groupRawIndex","fieldKeys","allowDataCompression","frameHeaderObjectsCollection","headerObjectsCollection","columnKeys","fieldDrillCollection","renderEngine","customProperties","getValueCellInfo","globalize","fieldsType","clonedReport","enableSort","isValueFilterEnabled","isDrillThrough","getGroupedRawData","formats","getGroupData","validateFilters","isExpandAll","isValueFiltersAvail","isMutiMeasures","emptyCellTextContent","valueSortData","savedFieldList","removeIrrelevantFields","fillFieldMembers","updateSortSettings","generateValueMatrix","filterMembers","columnLength","updateFilterMembers","generateGridData","frameHeaderWithKeys","countFields","hasCountField","realData","headerFields","groupRawData","finalData","groupKeys","indexLength","currData","vPos","hPos","memberJoin","currFieldName","currValue","savedData","summType","fieldkeySet","groupFields","customGroupFieldName","isInRangeAvail","getRange","newDate","newFieldName","setMonth","cGroup","isDataMatch","isCompleteSet","isDataSource","axisFields","gCnt","groupField","axisFields_1","actualField","dataFields","caption_1","clonedFields","cloneField","newField","len_3","startValue","endValue","cStartValue","cEndValue","unframedSet","dataLength","framedSetLength","len_4","duplicateData","frameData","axisFields_2","len_5","customFieldName","parentField","customGroupField","axisFields_3","formatfield","state_1","cValue","isRangeAvail","cDate","startDate","endDate","getPercentFormat","formatField","currentField","isHavingFormat","getFormattedFields","exactFormat","fullFormat","isSort","isValueFilteringEnabled","getCalculatedField","lenE","dataTypes","getMappingField","updateTreeViewData","updateFieldList","actualFormula","calc","calcProperties","powerFunction","formulaType","lmt","aggregateValue","matchStrings","selectedString","filterElements","filterElements_1","dataFields_1","validateValueFields","indMat","dlen","kLn","kl","isDataAvail","membersCnt","fmembersCnt","dl","mkey","formattedValue","dateText","vMat","keyLen","flList","tkln","sln","slt","filterRw","isInclude","getFilters","dln","include","ln","ilist","rln","rlt","filterElement","isValidFilterField","applyLabelFilter","frameFilterList","allowMemberFiltering","allowLabelFiltering","isValidFilterElement","dataFields_2","getLabelFilterMembers","date1","date2","getDateFilterMembers","members_1","operand1","getParsedValue","operand2","validateFilterValue","members_2","filterValue","members_3","isMemberInclude","isLabelFilter","updateFilter","fln","allowFil","final","memberObj","ilt","applyValueFiltering","rowData","valueFilter","rowFilterData","isValueFiltered","allMember","getFilteredData","rLen","mPos","getAggregateValue","cellDetails","cellSets","getCellSet","rowCellType","columnCellType","skipFormatting","isLevelFiltered","removefilteredData","valueFilteredData","validateFilteredParentData","formatSetting","levelName","allMemberData","rowFilteredData","index_2","updateFramedHeaders","framedHeaders","dataHeaders","filteredHeaders","framedHeaders_1","dHeader","isHeaderAvail","validateFilteredHeaders","filterFramedHeaders","filteredHeaders_1","vHeader","isEmptyDataAvail","updateGridData","frameDrillObject","getIndexedHeaders","insertAllMembersCommon","rowheads","colheads","columnFilteredData","valuesCount","valueFilters","valueFields","values_1","filterSettings_1","isAvail","cLen","applyValueSorting","calculatePagingValues","getAggregatedHeaders","getHeaderData","insertSubTotals","getTableData","applyAdvancedAggregate","updateHeaders","rowFlag","columnFlag","updatePivotValues","slicePos","onDrill","drilledItem","headersInfo","getHeadersInfo","performDrillOperation","updateEngine","onSort","sortItem","performSortOperation","onFilter","filterItem","posObj","addPos","itemsObj","performFilterCommonUpdate","onAggregation","onCalcOperation","currentPosition","sortedHeaders","updateHeadersCount","getSortedHeaders","performFilterDeletion","filterObjects","loopIn","engine_1","this_3","engine","matchIndexes","performFilterAddition","_loop_4","this_4","memberNameObj_1","excessHeaders","rawHeaders","headerNames_1","rawHeaders_1","grandHeader","insertPosition","insertTotalPosition","getAxisByFieldName","fields_1","axisCount","isDrill","lenCnt","framedHeader","isNotDateType","stringValue","alphaNumbervalue","nullValue","isNullArgument","textArray","hText","mIndex","mType","getMember","sortByValueRow","vlen","aggreColl","rMembers_1","rMembers_2","insertAllMember","rowLength","rowCells","savedCell","spanCnt","indexObj","colCnt","rowPos","fieldCnt","drillOption","memberString","keyInd","parentMember","valueFil","rlen","decisionObj","reportDataType","isNoData","isDateType","savedMembers","memInd","headerValue","availData","hIndLen","filterPosition","getOrderedIndex","orderedIndex","slicedHeader","summCell","lt_1","rowCurrentPage","rowSize","exactStartPos","performSlicing","columnCurrentPage","columnSize","startPos","removeChildMembers","framedMember","customText","reformAxis","tnum","vlt","rTotal","cTotal","actCnt","isLeastNode","hpos","actpos","vln","name_1","calObj","vData","clt","updateRowData","recursiveRowData","isHeaderSelected","rows_2","getAggregatedHeaderData","isChildren","headers_1","updateSelectedHeaders","childMembers","aggregateHeaders","vCount","uniqueName","valueCount","pivotIndex","isIndexFilled","colIndex_1","updateAggregates","indexCollection_1","selectedHeaders_1","selectedHeaderCollection","name_2","isRowBaseField","activeValues","indexCollection","activeColumn","rowindexCollection","selectedRowValues","selectedColumnValues","len_6","cLevelName","axisObj","isSelectedColumn","len_7","uniqueLevelName","colIndex_3","currentSet","selectedHeaderCollection_1","colIndex_2","indexCollection_2","rowindexCollection_2","selectedHeaderCollection_2","rowindexCollection_1","selectedColumn","getSelectedColumn","_h","indexCollection_3","selectedColumnValue","selectedRow","getSelectedRow","_j","selectedHeaderCollection_3","_k","colIndex_4","_l","indexCollection_4","selectedRowValue","_m","selectedHeaderCollection_4","_o","rowindexCollection_3","selectedCol","_p","indexCollection_5","selectedColValue","_q","colIndex_5","_r","selectedHeaderCollection_5","selectedHeaderCollection_6","colheads_1","rowheads_1","gTotalIndex","totalValues","gTotalIndex_1","val_1","gTotalVal","rTotalVal","cTotalVal","gTotalIndex_2","val_2","isGrand","subTotal","toLocaleString","currentCellSets","vcnt","colItmLn","sortText","isTotalHide","lvl","isSingleMeasure","name_3","ri","cellValue","avgCnt","isInit","isValueExist","duplicateValues","val_3","currentVal","indexVal","avgVal","avgDifferenceVal","indexVal_1","pow","isFirst","isMaxFirst","calcField","aggregateField","len_8","aggregatedValue","type_1","commonValue","decimalPart","items_1","scrollModule","isAsyncPrint","defered","isContentReady","isPrintGrid","removeColGroup","printGridObj","printModule","renderPrintGrid","printWind","resizeTo","screen","availWidth","availHeight","printGrid","Grid","viewContainerRef","injectedModues","setInjectedModules","printgrid","selectedRows","cssProps","getCssProperties","waitingPop","printGridElement","groupCaption","colGroups","contentColGroups","hideColGroup","ResponsiveDialogRenderer","sortedCols","sortPredicate","isCustomDialog","closeCustomDialog","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","filterModule","saveBtn","backBtn","customExcelFilterParent","isOpen","filterClearBtn","getHeaderTitle","renderResponsiveContent","customColumnDiv","sortBtnParent","cDiv","getSortedFieldsAndDirections","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","allowMultiSorting","isSortApplied","resetSortButtons","txt","setSortedCols","getCurrentSortedFields","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","renderCustomFilterDialog","filteredCol","renderResponsiveDialog","setFilterModel","createOptions","setTopToChildDialog","dialogEle","top_1","outerDiv","customFilterDlg","getDialogOptions","showCloseIcon","closeOnEscape","adaptiveDlgTarget","beforeDialogClose","renderResponsiveHeader","sortField","closeResponsiveDialog","closeCustomFilter","keyHandler","sortColumn","clearSorting","primaryKeyValue","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","clearFiltering","filterClear","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","customEle","spannedCell","targetCell_1","colSpanLen","colSpanRange","spanText","containsKey","backupMergeCells","fName","setMergeCells","generteKey","fname","splitKey","getMergeCells","mergeCells","mCells","getIndexFromAllColumns","vColumnIndices","AggregateMenu","menuInfo","openContextMenu","buttonElement","isStringField","summaryTypes","getMenuItem","aggregateTypes","displayMenuCount","isPopupView","observedArgs","createContextMenu","currentMenu","menuItems","menuOptions","checkDuplicates","getAllSummaryType","beforeOpen","beforeMenuOpen","onClose","selectOptionInContextMenu","contextMenu","Menu","createValueSettingsDialog","valueDialog","allowDragging","createFieldOptions","updateValueSettings","renderMode","overlayClick","removeDialog","fieldCaption","summaryType","summaryDataSource","summaryItems","baseItemTypes","baseFieldTypes","fieldDataSource","fieldItemDataSource","mainDiv","textWrappper","filterWrapperDiv1","optionWrapperDiv1","optionWrapperDiv2","optionWrapperDiv3","texttitle","inputTextDiv1","optionTextDiv1","optionTextDiv2","optionTextDiv3","inputDiv1","dropOptionDiv1","dropOptionDiv2","dropOptionDiv3","inputField1","popupInstance","optionWrapper1","optionWrapper2","optionWrapper3","inputObj1","MaskedTextBox","menu","valuefields","contentElement","captionName","vCnt","dataSourceItem","lastAggregationInfo","isRefreshed","allowDeferLayoutUpdate","triggerPopulateEvent","dialogElement","captionInstance","summaryInstance","baseFieldInstance","baseItemInstance","FieldOptions","FieldListFieldOptions","ConditionalFormatSettings","GroupSettings","CalculatedFieldSettings","CustomGroups","DrillOptions","ValueSortSettings","Authentication","DataSourceSettings","__webpack_modules__","installedModules","__nested_webpack_require_626__","moduleId","loaded","HttpPostMessage","windowPostMessageProxy","defaultHeaders","defaultTargetWindow","addTrackingProperties","trackingProperties","getTrackingProperties","isErrorMessage","statusCode","targetWindow","post","put","patch","delete","output","nextKey","__unused_webpack_module","__nested_webpack_require_612__","TextAlignment","CommonErrorCodes","BookmarksPlayMode","ExportDataType","QnaMode","PageNavigationPosition","BrowserPrintAdjustmentsMode","AggregateFunction","DataCacheMode","CredentialType","isPercentOfGrandTotal","isColumnAggr","isHierarchyLevelAggr","isHierarchyLevel","isColumn","isMeasure","getFilterType","isBasicFilterWithKeys","isFilterKeyColumnsTarget","HierarchyFilter","AdvancedFilter","TupleFilter","IdentityFilter","BasicFilterWithKeys","BasicFilter","RelativeTimeFilter","RelativeDateFilter","TopNFilter","IncludeExcludeFilter","NotSupportedFilter","RelativeDateOperators","RelativeDateFilterTimeUnit","FiltersLevel","FiltersOperations","MenuLocation","ContrastMode","TokenType","ViewMode","Permissions","SectionVisibility","ReportAlignment","HyperlinkClickBehavior","LayoutType","VisualContainerDisplayMode","BackgroundType","DisplayOption","PageSizeType","TraceType","validateVisualHeader","validateExportDataRequest","validateQnaInterpretInputData","validateLoadQnaConfiguration","validateSaveAsParameters","validateUpdateFiltersRequest","validateFilter","validatePage","validateTileLoad","validateDashboardLoad","validateQuickCreate","validateCreateReport","validatePaginatedReportLoad","validateReportLoad","validateMenuGroupExtension","validateExtension","validateCustomPageSize","validateVisualizationsPane","validateSyncSlicersPane","validateSelectionPane","validatePageNavigationPane","validateFieldsPane","validateFiltersPane","validateBookmarksPane","validatePanes","validateSettings","validateCaptureBookmarkRequest","validateApplyBookmarkStateRequest","validateApplyBookmarkByNameRequest","validateAddBookmarkRequest","validatePlayBookmarkRequest","validateSlicerState","validateSlicer","validateVisualSelector","isIExtensionArray","isIExtensions","isGroupedMenuExtension","isFlatMenuExtension","isReportFiltersArray","isOnLoadFilters","VisualDataRoleKindPreference","VisualDataRoleKind","CommandDisplayOption","SlicerTargetSelector","VisualTypeSelector","VisualSelector","PageSelector","Selector","SortDirection","LegendPosition","validatePrintSettings","validateZoomLevel","validateCustomTheme","validateCommandsSettings","validateVisualSettings","validator_1","$schema","schemaUrl","displaySettings","notSupportedTypeName","Unknown","isExclude","IncludeExclude","TopN","timeUnitsCount","timeUnitType","includeToday","RelativeDate","RelativeTime","Basic","requireSingleSelection","keyValues","numberOfKeys","keyValue","lengthOfArray","Identity","Tuple","logicalOperator","extractedConditions","Advanced","hierarchyData","Hierarchy","basicFilter","advancedFilter","aggregationFunction","hierarchyLevel","percentOfGrandTotal","TokenExpired","NotFound","InvalidParameters","LoadReportFailed","NotAuthorized","FailedToLoadModel","Left","Center","Right","Top","Bottom","TopCenter","BottomCenter","RightCenter","LeftCenter","schema","pageName","visualName","visualType","menuExtension","extensions","normalizeError","keyword","errors","Validators","visualSelectorValidator","slicerValidator","slicerStateValidator","playBookmarkRequestValidator","addBookmarkRequestValidator","applyBookmarkByNameRequestValidator","applyBookmarkStateRequestValidator","captureBookmarkRequestValidator","settingsValidator","reportPanesValidator","bookmarksPaneValidator","filtersPaneValidator","fieldsPaneValidator","pageNavigationPaneValidator","selectionPaneValidator","syncSlicersPaneValidator","visualizationsPaneValidator","customPageSizeValidator","extensionValidator","menuGroupExtensionValidator","reportLoadValidator","paginatedReportLoadValidator","reportCreateValidator","quickCreateValidator","dashboardLoadValidator","tileLoadValidator","pageValidator","filterValidator","updateFiltersRequestValidator","saveAsParametersValidator","loadQnaValidator","qnaInterpretInputDataValidator","exportDataRequestValidator","visualHeaderValidator","visualSettingsValidator","commandsSettingsValidator","customThemeValidator","zoomLevelValidator","printSettingsValidator","__nested_webpack_require_46167__","barsValidator_1","bookmarkValidator_1","commandsSettingsValidator_1","customThemeValidator_1","dashboardLoadValidator_1","datasetBindingValidator_1","exportDataValidator_1","extensionsValidator_1","filtersValidator_1","layoutValidator_1","pageValidator_1","panesValidator_1","qnaValidator_1","reportCreateValidator_1","reportLoadValidator_1","paginatedReportLoadValidator_1","saveAsParametersValidator_1","selectorsValidator_1","settingsValidator_1","slicersValidator_1","tileLoadValidator_1","visualSettingsValidator_1","anyOfValidator_1","fieldForbiddenValidator_1","fieldRequiredValidator_1","mapValidator_1","typeValidator_1","parameterPanelValidator_1","datasetCreateConfigValidator_1","quickCreateValidator_1","printSettingsValidator_1","AddBookmarkRequestValidator","advancedFilterTypeValidator","EnumValidator","advancedFilterValidator","AdvancedFilterValidator","anyArrayValidator","ArrayValidator","AnyOfValidator","StringValidator","NumberValidator","BooleanValidator","anyFilterValidator","BasicFilterValidator","IncludeExcludeFilterValidator","NotSupportedFilterValidator","RelativeDateFilterValidator","TopNFilterValidator","RelativeTimeFilterValidator","HierarchyFilterValidator","anyValueValidator","actionBarValidator","ActionBarValidator","statusBarValidator","StatusBarValidator","ApplyBookmarkByNameRequestValidator","ApplyBookmarkStateRequestValidator","applyBookmarkValidator","backgroundValidator","basicFilterTypeValidator","basicFilterValidator","booleanArrayValidator","BooleanArrayValidator","booleanValidator","BookmarksPaneValidator","captureBookmarkOptionsValidator","CaptureBookmarkOptionsValidator","CaptureBookmarkRequestValidator","columnSchemaArrayValidator","ColumnSchemaValidator","commandDisplayOptionValidator","commandExtensionSelectorValidator","VisualSelectorValidator","VisualTypeSelectorValidator","commandExtensionArrayValidator","CommandExtensionValidator","commandExtensionValidator","commandsSettingsArrayValidator","CommandsSettingsValidator","conditionItemValidator","ConditionItemValidator","contrastModeValidator","credentialDetailsValidator","MapValidator","credentialsValidator","CredentialsValidator","credentialTypeValidator","customLayoutDisplayOptionValidator","customLayoutValidator","CustomLayoutValidator","CustomPageSizeValidator","CustomThemeValidator","DashboardLoadValidator","dataCacheModeValidator","datasetBindingValidator","DatasetBindingValidator","datasetCreateConfigValidator","DatasetCreateConfigValidator","datasourceConnectionConfigValidator","DatasourceConnectionConfigValidator","displayStateModeValidator","displayStateValidator","DisplayStateValidator","ExportDataRequestValidator","extensionArrayValidator","ExtensionValidator","extensionsValidator","ExtensionsValidator","extensionPointsValidator","ExtensionPointsValidator","fieldForbiddenValidator","FieldForbiddenValidator","fieldRequiredValidator","FieldRequiredValidator","FieldsPaneValidator","filterColumnTargetValidator","FilterColumnTargetValidator","filterDisplaySettingsValidator","FilterDisplaySettingsValidator","filterConditionsValidator","filterHierarchyTargetValidator","FilterHierarchyTargetValidator","filterMeasureTargetValidator","FilterMeasureTargetValidator","filterTargetValidator","FilterKeyColumnsTargetValidator","FilterKeyHierarchyTargetValidator","FilterValidator","filterTypeValidator","filtersArrayValidator","filtersOperationsUpdateValidator","filtersOperationsRemoveAllValidator","FiltersPaneValidator","hyperlinkClickBehaviorValidator","includeExcludeFilterValidator","includeExludeFilterTypeValidator","hierarchyFilterTypeValidator","hierarchyFilterValuesValidator","HierarchyFilterNodeValidator","layoutTypeValidator","LoadQnaValidator","menuExtensionValidator","FlatMenuExtensionValidator","GroupedMenuExtensionValidator","menuGroupExtensionArrayValidator","MenuGroupExtensionValidator","menuLocationValidator","notSupportedFilterTypeValidator","notSupportedFilterValidator","numberArrayValidator","NumberArrayValidator","numberValidator","onLoadFiltersBaseValidator","OnLoadFiltersBaseValidator","OnLoadFiltersBaseRemoveOperationValidator","pageLayoutValidator","VisualLayoutValidator","PageNavigationPaneValidator","pageNavigationPositionValidator","pageSizeTypeValidator","pageSizeValidator","PageSizeValidator","PageValidator","pageViewFieldValidator","PageViewFieldValidator","pagesLayoutValidator","PageLayoutValidator","paginatedReportCommandsValidator","PaginatedReportCommandsValidator","PaginatedReportLoadValidator","paginatedReportsettingsValidator","PaginatedReportSettingsValidator","parameterValuesArrayValidator","ReportParameterFieldsValidator","parametersPanelValidator","ParametersPanelValidator","permissionsValidator","PlayBookmarkRequestValidator","PrintSettingsValidator","QnaInterpretInputDataValidator","qnaPanesValidator","QnaPanesValidator","qnaSettingValidator","QnaSettingsValidator","QuickCreateValidator","rawDataValidator","relativeDateFilterOperatorValidator","relativeDateFilterTimeUnitTypeValidator","relativeDateFilterTypeValidator","relativeDateFilterValidator","relativeDateTimeFilterTypeValidator","relativeDateTimeFilterUnitTypeValidator","relativeTimeFilterTimeUnitTypeValidator","relativeTimeFilterTypeValidator","relativeTimeFilterValidator","reportBarsValidator","ReportBarsValidator","ReportCreateValidator","reportLoadFiltersValidator","OnLoadFiltersValidator","ReportLoadValidator","ReportPanesValidator","SaveAsParametersValidator","SelectionPaneValidator","SettingsValidator","singleCommandSettingsValidator","SingleCommandSettingsValidator","slicerSelectorValidator","SlicerTargetSelectorValidator","SlicerStateValidator","slicerTargetValidator","SlicerValidator","stringArrayValidator","StringArrayValidator","stringValidator","SyncSlicersPaneValidator","tableDataArrayValidator","TableDataValidator","tableSchemaListValidator","TableSchemaValidator","TileLoadValidator","tokenTypeValidator","topNFilterTypeValidator","topNFilterValidator","UpdateFiltersRequestValidator","RemoveFiltersRequestValidator","viewModeValidator","visualCommandSelectorValidator","visualHeaderSelectorValidator","visualHeaderSettingsValidator","VisualHeaderSettingsValidator","VisualHeaderValidator","visualHeadersValidator","VisualizationsPaneValidator","visualLayoutValidator","VisualSettingsValidator","visualTypeSelectorValidator","RangeValidator","__nested_webpack_require_63052__","multipleFieldsValidator_1","validators","MultipleFieldsValidator","ObjectValidator","fieldValidatorsPairs","fieldsPath","fieldValidators","SchemaValidator","ValueValidator","TypeValidator","itemValidators","expectedType","possibleValues","schemaValue","minValue","maxValue","__nested_webpack_require_78931__","__nested_webpack_require_87407__","__nested_webpack_require_94440__","__nested_webpack_require_96594__","__nested_webpack_require_99593__","__nested_webpack_require_101863__","__nested_webpack_require_104207__","ExtensionItemValidator","MenuExtensionBaseValidator","__nested_webpack_require_116698__","RelativeDateTimeFilterValidator","FilterValidatorBase","__nested_webpack_require_150670__","__nested_webpack_require_157149__","__nested_webpack_require_162589__","__nested_webpack_require_174335__","__nested_webpack_require_180046__","__nested_webpack_require_182904__","__nested_webpack_require_187025__","__nested_webpack_require_191349__","__nested_webpack_require_193630__","typeValidator_2","__nested_webpack_require_199088__","__nested_webpack_require_205084__","__nested_webpack_require_208514__","__nested_webpack_require_211786__","valid","__nested_webpack_require_219195__","keyValidators","valueValidators","__nested_webpack_require_221879__","__nested_webpack_require_224247__","__nested_webpack_require_234302__","__nested_webpack_require_237175__","__webpack_module_cache__","__nested_webpack_require_239527__","cachedModule","__nested_webpack_require_617__","__nested_webpack_require_1897__","RouteRecognizer","handlers","getRouteRecognizer","patchRouteRecognizer","postRouteRecognizer","putRouteRecognizer","deleteRouteRecognizer","registerHandler","routeRecognizer","response","Response","internalHandler","matchingRoutes","recognize","route","queryParams","addHandler","__nested_webpack_require_6218__","__WEBPACK_AMD_DEFINE_RESULT__","$$route$recognizer$dsl$$Target","delegate","$$route$recognizer$dsl$$Matcher","routes","$$route$recognizer$dsl$$generateMatch","startingPath","nestedCallback","fullPath","$$route$recognizer$dsl$$addRoute","routeArray","$$route$recognizer$dsl$$eachRoute","baseRoute","willAddRoute","addChild","contextEntered","$$route$recognizer$$escapeRegex","$$route$recognizer$$StaticSegment","$$route$recognizer$$DynamicSegment","$$route$recognizer$$StarSegment","$$route$recognizer$$EpsilonSegment","$$route$recognizer$$parse","specificity","segments","segment","$$route$recognizer$$State","charSpec","nextStates","charSpecs","$$route$recognizer$$recognizeChar","ch","eachChar","currentState","invalidChars","validChars","returned","$$route$recognizer$$oCreate","F","$$route$recognizer$$RecognizeResults","$$route$recognizer$$decodeQueryParamPart","decodeURIComponent","$$route$recognizer$$RouteRecognizer","rootState","allSegments","as","handlersFor","hasRoute","generateQueryString","arrayPair","parseQueryString","pathLen","isSlashDropped","solutions","$$route$recognizer$$sortSolutions","captures","currentCapture","isDynamic","$$route$recognizer$$findHandler","addRouteCallback","$$route$recognizer$$default","webpackPolyfill","deprecate","__webpack_require__","AdvancedFilterBuilder","powerbi_models_1","addCondition","build","FilterBuilder","BasicFilterBuilder","isRequireSingleSelection","in","notIn","withTargetObject","withColumnTarget","withMeasureTarget","withHierarchyLevelTarget","withColumnAggregation","withHierarchyLevelAggregationTarget","RelativeTimeFilterBuilder","RelativeDateFilterBuilder","TopNFilterBuilder","basicFilterBuilder_1","advancedFilterBuilder_1","topNFilterBuilder_1","relativeDateFilterBuilder_1","relativeTimeFilterBuilder_1","isTodayIncluded","inLast","InLast","inThis","InThis","inNext","InNext","orderByTarget","orderByTargetValue","__awaiter","_arguments","fulfilled","rejected","__generator","g","sent","trys","ops","verb","op","BookmarksManager","util_1","errors_1","service","iframe","getBookmarks","isRDLEmbed","embedUrl","APINotSupportedForRDLError","hpm","contentWindow","bookmarkName","play","playMode","playBookmarkRequest","applyState","Create","embed_1","utils","phasedRender","isBootstrap","getId","datasetId","createConfig","findIdFromEmbedUrl","configChanged","accessToken","groupId","tokenType","getDefaultEmbedUrlEndpoint","isSaved","isSavedInternal","datasetIdMatch","sdkSessionId","getSdkSessionId","eventHooks","accessTokenProvider","tokenProviderSupplied","Embed","Dashboard","loadPath","phasedLoadPath","allowedEvents","dashboardId","dashboardIdMatch","dashboardIdAttribute","baseConfig","validatePageView","pageView","typeAttribute","models","sdkConfig","autoAuthInEmbedUrl","EmbedUrlNotSupported","eventHandlers","iframeLoaded","embedtype","populateConfig","isCreate","setIframe","save","saveAs","saveAsParameters","getCorrelationId","timeNow","debug","bootstrapped","sdkVersion","lastLoadRequest","getTimeDiffInMilliseconds","fakeEvent","eventHandler","eventHandlerToRemove","reload","setAccessToken","embedType","accessTokenAttribute","getAccessToken","globalAccessToken","bootstrapConfig","getEmbedUrl","getGroupId","addLocaleToEmbedUrl","getUniqueId","initialLayoutType","layoutType","Master","extensionsArray","extension","command","validateEventHooks","applicationContextProvider","addParamToUrl","Aad","localeSettings","formatLocale","embedUrlAttribute","getDefaultEmbedUrl","hostname","defaultEmbedHostName","endpoint","nameAttribute","createRandomString","findGroupIdFromEmbedUrl","fullscreen","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","isFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","isLoad","iframeContent","getNumberOfComponents","maxFrontLoadTimes","frontLoadHandler","frontLoadSendConfig","setComponentTitle","setComponentTabIndex","removeComponentTabIndex","_tabIndex","groupIdMatch","routerFactory","wpmpFactory","hpmFactory","window_post_message_proxy_1","http_post_message_1","powerbi_router_1","config_1","wpmp","sdkType","sdkWrapperVersion","logMessages","eventSourceOverrideWindow","WindowPostMessageProxy","processTrackingProperties","suppressWarnings","Page","visualDescriptor_1","isActivePage","defaultSize","defaultDisplayOption","mobileSize","wallpaper","updateFilters","operation","updateFiltersRequest","filtersOperation","removeFilters","RemoveAll","setFilters","setDisplayName","getVisuals","visual","VisualDescriptor","layout","getVisualByName","setVisualDisplayState","displayState","moveVisual","resizeVisual","resizePage","pageSizeType","resizeActivePage","getSlicers","hasLayout","layoutTypeEnum","Qna","setQuestion","qnaData","_isBootstrap","QuickCreate","router","_res","invokeSDKHook","__spreadArray","pack","ar","Report","page_1","bookmarksManager_1","bookmarksManager","reportId","reportIdMatch","addPage","deletePage","renamePage","reportIdAttribute","getPages","getPageByName","getActivePage","activePage","setPage","updateSettings","customLayout","extensionElement","isMobileSettings","filterPaneEnabledAttribute","navContentPaneEnabledAttribute","elementAttrSettings","filterPaneEnabled","navContentPaneEnabled","switchMode","viewMode","newMode","viewModeToString","applyTheme","applyThemeInternal","resetTheme","getTheme","resetPersistentFilters","savePersistentFilters","arePersistentFiltersApplied","removeContextMenuCommand","commandName","contextMenuTitle","commandCopy","indexOfCommand","newSetting","findCommandMenuIndex","visualContextMenu","addContextMenuCommand","commandTitle","menuLocation","newCommands","createMenuCommand","removeOptionsMenuCommand","optionsMenuTitle","visualOptionsMenu","addOptionsMenuCommand","commandIcon","visualLayout","newSettings","validateVisual","buildLayoutSettingsObject","Custom","switchLayout","isInitialMobileSettings","isPassedMobileSettings","menuTitle","newCommandObj","activeMenuCommand","pagesLayout","visualsLayout","Edit","View","MobileLandscape","MobilePortrait","getZoom","setZoom","zoomLevel","closeAllOverlays","error_1","clearSelectedVisuals","clearPopOutState","error_2","Service","report_1","create_1","dashboard_1","tile_1","qna_1","visual_1","quickCreate_1","registeredComponents","wpmpName","uniqueSessionId","handleEvent","embeds","defaultConfig","autoEmbedOnContentLoaded","enableAutoEmbed","createReport","powerBiElement","powerBiEmbed","addOrOverwriteEmbed","quickCreate","embed","embedInternal","bootstrap","embedExisting","embedNew","getSDKVersion","componentType","scrubbedConfig","createEmbedComponent","embedComponent","components","registeredComponent","registeredComponentType","_event","embedElement","handleTileEvents","hook","pageKey","raiseCustomEvent","preload","setSdkInfo","register","embedComponentFactory","routerEventUrls","Tile","Visual","tileId","embedConfig","tileIdMatch","xs","getRandomValue","cryptoObj","randomValueArray","Uint32Array","customEvent","CustomEvent","detail","bubbles","cancelable","initCustomEvent","parameterPrefix","defaultLayout","Hidden","Visible","displayOption","FitToPage","GetPagesNotSupportedError","_pageName","SetPageNotSupportedError","_config","RenderNotSupportedError","getVisualDescriptor","embeddedVisuals","embeddedVisual","pageVisual","detailedMessage","filtersLevel","getFiltersLevelUrl","exportData","exportDataType","exportDataRequestBody","setSlicerState","getSlicerState","defaultAddTrackingProperties","defaultGetTrackingProperties","defaultIsErrorMessage","receiveWindow","pendingRequestPromises","windowMessageHandler","onMessageReceived","messagePropertyName","createDeferred","removeHandler","sendResponse","__webpack_exports__","factories","FilterBuilders_1","powerbi","powerBISDKGlobalServiceInstanceName","toPropertyKey","toPrimitive","_isNativeReflectConstruct","StyleSheet","_insertTag","insertionPoint","isSpeedy","speedy","ctr","nonce","_proto","hydrate","rule","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","O","M","S","B","D","G","I","J","line","return","K","Q","R","T","U","V","W","re","Z","ee","ae","ne","ce","se","u","w","$","ue","ie","te","oe","le","identifierWithPointTracking","character","peek","token","getRules","dealloc","delimit","toRules","alloc","fixedElements","compat","isImplicitRule","parentRules","removeLabel","MOZ","MS","strlen","charat","indexof","defaultStylisPlugins","DECLARATION","KEYFRAMES","serialize","RULESET","createCache","ssrStyles","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","currentSheet","finalizingPlugins","serializer","middleware","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","rawClassName","registerStyles","isStringTag","insertStyles","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","orphans","tabSize","widows","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","cursor","unitless","handleInterpolation","mergedProps","interpolation","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","cached","labelPattern","serializeStyles","stringMode","strings","identifierName","hashString","useInsertionEffect","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","withEmotionCache","ThemeContext","typePropName","createEmotionProps","Insertion","Emotion$1","cssProp","css","jsx","createElementArgArray","Emotion","objectWithoutPropertiesLoose","rectToClientRect","_objectSpread","getWindow","_node$ownerDocument","getComputedStyle$1","isNode","getNodeName","isHTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","_getComputedStyle$","isSafari","CSS","supports","isLastTraversableNode","getCssDimensions","hasOffset","shouldFallback","fallback","unwrapElement","contextElement","FALLBACK_SCALE","getScale","domElement","_getCssDimensions","noOffsets","getVisualOffsets","isFixed","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","visualViewport","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentIFrame","frameElement","iframeScale","iframeRect","clientLeft","clientTop","getDocumentElement","assignedSlot","getNearestOverflowAncestor","getOverflowAncestors","scrollableAncestor","isBody","useLayoutEffect","_excluded$3","applyPrefixToName","classNameList","cleanValue","cleanCommonProps","clearValue","cx","getStyles","getClassNames","hasValue","isMulti","selectOption","selectProps","getStyleProps","classNamesState","isDocumentElement","getScrollTop","easeOutCubic","animatedScrollTo","animateScroll","menuEl","focusedEl","menuRect","focusedRect","overScroll","isTouchCapable","passiveOptionAccessed","supportsPassiveEvents","notNullish","valueTernary","multiValue","singleValue","getMenuPlacement","preferredMaxHeight","minHeight","preferredPlacement","placement","shouldScroll","isFixedPosition","controlHeight","scrollParent","excludeStaticParent","overflowRx","getScrollParent","defaultState","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","viewHeight","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","scrollDuration","_constrainedHeight","spaceAbove","_constrainedHeight2","coercePlacement","PortalPlacementContext","MenuPlacer","minMenuHeight","maxMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","setPortalPlacement","useRef","_useState2","useState","setMaxHeight","_useState4","setPlacement","spacing","placerProps","Menu$1","innerProps","noticeCSS","_ref5","unstyled","_ref5$theme","baseUnit","colors","neutral40","noOptionsMessageCSS","loadingMessageCSS","NoOptionsMessage","LoadingMessage","_templateObject","_excluded$2","Svg","viewBox","CrossIcon","DownChevron","baseCSS","_ref3","_ref3$theme","neutral60","neutral20","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","loadingDotAnimations","insertable","keyframes","LoadingDot","_ref6","css$2","borderRadius","verticalAlign","LoadingIndicator","indicator","Control$1","isDisabled","menuIsOpen","_excluded$1","Group$1","Heading","headingProps","_excluded","spacingStyle","gridArea","containerStyle","gridTemplateColumns","whiteSpace","inputStyle","isHidden","MultiValueGeneric","_ref4","ClearIndicator","Control","DropdownIndicator","Group","GroupHeading","_cleanCommonProps","IndicatorsContainer","indicators","IndicatorSeparator","inputClassName","MenuList","MenuPortal","controlElement","menuPortalRef","cleanupRef","_useState6","portalPlacementContext","useMemo","_useState8","computedPosition","setComputedPosition","updateComputedPosition","useCallback","getBoundingClientObj","scrollDistance","runAutoUpdate","_options$ancestorScro","ancestorScroll","_options$ancestorResi","ancestorResize","_options$elementResiz","elementResize","_options$animationFra","animationFrame","ancestors","ancestor","isVisualViewport","observer","ResizeObserver","prevRefRect","frameLoop","nextRefRect","_observer","disconnect","autoUpdate","setMenuPortalElement","menuPortalElement","menuWrapper","createPortal","MultiValue","removeProps","Container","Label","Remove","MultiValueContainer","MultiValueLabel","MultiValueRemove","Option","Placeholder","SelectContainer","SingleValue","ValueContainer","safeIsNaN","areInputsEqual","newInputs","lastInputs","A11yText$1","defaultAriaLiveMessages","guidance","isSearchable","tabSelectsValue","_props$label","labels","focused","_props$label2","selectValue","getArrayIndex","resultsMessage","LiveRegion$1","ariaSelection","focusedOption","focusedValue","focusableOptions","ariaLiveMessages","getOptionLabel","isOptionDisabled","screenReaderStatus","ariaLabel","ariaLive","messages","ariaSelected","selectedOptions","removedValue","removedValues","multiSelected","onChangeProps","ariaFocused","focusMsg","onFocusProps","ariaResults","resultsMsg","ariaGuidance","guidanceMsg","ariaContext","ScreenReaderText","Fragment","isInitialFocus","letters","anyDiacritic","diacriticToBase","diacritic","stripDiacritics","memoizedStripDiacriticsForInput","resultFn","newArgs","lastResult","memoizeOne","trimString","defaultStringify","DummyInput","filteredProps","propsObj","caretColor","STYLE_KEYS","LOCK_STYLES","boxSizing","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","activeScrollLocks","listenerOptions","blurSelectInput","_ref2$1","ScrollManager","lockEnabled","_ref$captureEnabled","captureEnabled","setScrollCaptureTarget","isEnabled","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","isBottom","isTop","touchStart","scrollTarget","handleEventDelta","_scrollTarget$current","isDeltaPositive","availableScroll","shouldCancelScroll","cancelScroll","onWheel","onTouchStart","onTouchMove","startListening","notPassive","stopListening","useEffect","useScrollCapture","setScrollLockTarget","_ref$accountForScroll","accountForScrollbars","originalStyles","addScrollLock","touchScrollTarget","targetStyle","currentPadding","adjustedPadding","removeScrollLock","useScrollLock","RequiredInput$1","required","defaultStyles","_ref$theme","alignItems","flexWrap","justifyContent","neutral5","neutral0","neutral10","borderStyle","boxShadow","neutral30","dropdownIndicator","groupHeading","_ref2$theme","textTransform","indicatorsContainer","alignSelf","indicatorSeparator","_ref4$theme","loadingIndicator","loadingMessage","alignToControl","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","multiValueLabel","cropWithEllipsis","textOverflow","multiValueRemove","dangerLight","danger","noOptionsMessage","userSelect","WebkitTapHighlightColor","primary25","primary50","neutral50","valueContainer","controlShouldRenderValue","defaultTheme","primary75","neutral70","neutral90","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","escapeClearsValue","filterOption","rawInput","__isNew__","_ignoreCase$ignoreAcc","ignoreAccents","matchFrom","candidate","formatGroupLabel","getOptionValue","menuShouldBlockScroll","isMobileDevice","openMenuOnFocus","openMenuOnClick","toCategorizedOption","_isOptionDisabled","_isOptionSelected","buildCategorizedOptions","groupOrOption","groupOrOptionIndex","categorizedOptions","optionIndex","categorizedOption","isFocusable","buildFocusableOptionsFromCategorizedOptions","optionsAccumulator","_props$inputValue","shouldHideSelectedOptions","_filterOption","isOptionSelected","hideSelectedOptions","instanceId","Select","_Component","inputIsHidden","clearFocusValueOnUpdate","prevWasFocused","inputIsHiddenAfterUpdate","prevProps","blockOptionHover","commonProps","initialTouchX","initialTouchY","instancePrefix","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","inputRef","getInputRef","blurInput","actionMeta","ariaOnChange","_this$props2","onInputChange","prevInputValue","onMenuClose","_this$props3","deselected","removeValue","newValueArray","popValue","lastSelectedValue","classNamePrefix","_this$props$className","_this$props$className2","getElementId","getComponents","getCategorizedOptions","buildFocusableOptions","getFocusableOptions","onMenuMouseDown","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","_this$props4","onClearIndicatorMouseDown","onScroll","onCompositionStart","onCompositionEnd","touch","deltaX","onTouchEnd","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","handleInputChange","onMenuOpen","onInputFocus","onInputBlur","onOptionHover","onValueInputFocus","onKeyDown","_this$props5","isClearable","_this$state","focusValue","focusOption","newMenuOptionsState","nextSelectValue","lastFocusedIndex","getNextFocusedValue","lastFocusedOption","getNextFocusedOption","newInputIsHiddenState","newAriaSelection","hasKeptFocus","startListeningComposition","startListeningToTouch","autoFocus","_this$props6","stopListeningComposition","stopListeningToTouch","_this2","_this$state2","openAtIndex","_this$state3","focusedIndex","nextFocus","_this$props7","formatOptionLabel","_inputValue","_selectValue","_this$props8","inputId","form","_this$state4","autoCapitalize","autoComplete","autoCorrect","spellCheck","inputMode","_this3","_this$getComponents2","_this$props9","_this$state5","isOptionFocused","onMouseDown","_this$props10","_this$props11","_this$getComponents5","_this4","_this$getComponents7","_this$props12","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","onHover","optionId","onMouseMove","hasOptions","_data","groupIndex","headingId","_message","menuPlacementProps","menuElement","_ref4$placerProps","scrollTargetRef","_this5","_this$props13","_value","_this$state6","_this$getComponents8","_this$props14","getCommonProps","renderLiveRegion","renderPlaceholderOrValue","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","AsyncSelect$1","_ref$defaultInputValu","defaultInputValue","_ref$defaultMenuIsOpe","defaultMenuIsOpen","_ref$defaultValue","propsInputValue","propsMenuIsOpen","propsOnChange","propsOnInputChange","propsOnMenuClose","propsOnMenuOpen","propsValue","restSelectProps","stateInputValue","setStateInputValue","stateMenuIsOpen","setStateMenuIsOpen","stateValue","setStateValue","useStateManager","_ref$defaultOptions","defaultOptions","propsDefaultOptions","_ref$cacheOptions","cacheOptions","propsLoadOptions","loadOptions","_ref$isLoading","propsIsLoading","_ref$filterOption","lastRequest","mounted","setDefaultOptions","setIsLoading","loadedInputValue","setLoadedInputValue","_useState10","loadedOptions","setLoadedOptions","_useState12","passEmptyOptions","setPassEmptyOptions","_useState14","optionsCache","setOptionsCache","_useState16","prevDefaultOptions","setPrevDefaultOptions","_useState18","prevCacheOptions","setPrevCacheOptions","_newValue","useAsync","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","fltrMenuEle","prepareHeader","hValueAccer","ariaAttr","innerDIV","headerValueAccessor","checkAllWrap","matchFlColumns","extendPrepareHeader","headerTempID","headerTextAlign","alignment","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","fKeyValue","captionTemplate","tempID","isVue","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","renderer","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","setHeight","setPadding","refreshDataManager","totalRecordsCount","prevPageMoving","pagerModule","pagerObj","resetTemplates","detailTemplateID","toolbarTemplate","isFActon","isNeedForeignAction","getFData","deffered_1","disablePageWiseAggregates","validateGroupRecords","dataManagerSuccess","dataManagerFailure","deferred","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","spanCount","colspan","dynamicColumnChange","updateColumnType","cFormat","isColTypeDef","isServerDateMap","actionArgs","isInfiniteDelete","isInfiniteEnd","updatesOnInitialRender","isInitialLoad","enableImmutableMode","alert","setRowCount","dataRowCount","buildColumns","isAutoGen","iterateComplexColumns","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","group0","groupN","addWhere","curFilter","rPredicate","updateGroupInfo","untouched","uGroup","itemGroup","uGroupItem","data_1","CellRendererFactory","cellRenderMap","ServiceLocator","registerAdaptiveService","isAdaptiveUI","responsiveDialogRenderer","RendererFactory","rendererMap","rName","PageSettings","ColumnChooserSettings","Search","searchString","refreshSearch","onSearchComplete","actionCompleteFunc","cancelBeginEvent","ShowHide","showBy","getToggleFields","hideBy","getKeyBy","changedStateColumns","showHideArgs","currentViewCols","getSelectedRecords","clearSelection","col1","col2","Scroll","previousValues","oneTimeReady","uiupdate","toolbarModule","refreshOverflow","mHdrHeight","ensureOverflow","getThreshold","removePadding","hDiv","footerDiv","getFooterContent","setScrollLeft","headerModule","getMovableHeader","onFrozenContentScroll","isPreventScrollEvent","onContentScroll","isLeft","isDown","onCustomScrollbarScroll","onTouchScroll","pointerType","pageXY","getPointXY","setPageXY","mScrollBar","sLeft","sHeight","gridElement","AggregateColumn","getTemplate","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isSelect","keyDownHandler","isMacLike","cellSelectionMode","clipBoardTextArea","x_1","y_1","paste","getSelectedRowCellIndexes","cellIndexes","rIdx","frRows","dataRows","getCellFromIndex","fTr","mTr","updateCell","selectionModule","selectCellsByRange","setCopyData","withHeader","getSelection","getFrozenRightRows","selectedIndexes","headerTextArray","getCopyData","checkBoxSelection","colIndexes","getColumnHeaderByIndex","rowIndexes","isCell","queryCommandSupported","execCommand","removeAllRanges","rowCellIndxes","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","EditSettings","keyA","frozenRightCount","frozenLeftCount","tablesCount","visibleFrozenLeft","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","media","isFreezeRefresh","tableIndex","componentRefresh","rowUid","pageTemplateChange","mediaBindInstance","commandDelIndex","asyncTimeOut","isExportGrid","enableLogger","Grid_1","Selection","mergePersistGridData","keyEntity","scrollPosition","currentObject","pagerTemplate","persistData","setFrozenCount","allowExcelExport","allowPdfExport","allowRowDragAndDrop","isDetail","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","mediaCol","isPersistSelection","filterOperators","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Save","Item","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","EndsWith","Contains","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Ungroup","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","FilterMenuDialogARIA","ExcelFilterDialogARIA","DialogEditARIA","ColumnChooserDialogARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","downArrow","upArrow","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusA","ctrlPlusP","f2","ctrlEnter","shiftEnter","shiftTab","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","getMediaColumns","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","gcol","getShowHideService","pushMediaColumn","matchMedia","mediaQueryUpdate","mediaColumn","showHider","refreshMediaCol","footerContent","checkboxMode","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","enableBoxSelection","enableAutoFill","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","isEllipsisTooltip","updateColumnObject","properties_1","refreshHeader","updateAutoFillPosition","rowTemplateFn","detailTemplateFn","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","contextMenuModule","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","isModeChg","pending_1","deepWatch","gResult","isSelectedRowIndexUpdating","selectRow","enableVerticalRendering","fn_1","refreshFilter","setTablesCount","getTablesCount","headerCells","stdHdrCell","updateColumnModel","updateColumnLevelFrozen","updateFrozenColumns","updateLockableColumns","leftCols","rightCols","movableCols","directFrozenCount","totalFrozenCount","frozenName","frozenCount","isRefresh","inview","vLen","ensureFrozenCols","stackedHeader","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getFrozenRowByIndex","getFrozenDataRows","getFrozenRightRowByIndex","getRowInfo","getRowObjectFromUID","row_1","rowsObject","getFrozenRightRowElements","includeAdd","getFrozenLeftContentTbody","addMovableRows","mrows","includAdd","dRows","getAllFrozenDataRows","pkName","fieldIdx","frIdx","Idx","sRow","columnUid","rowsObj","rowObjects","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenLeftColumnHeaderByIndex","getColumnHeaderByField","getColumnHeaderByUid","getStackedColumns","getUidByColumnField","rowDropSettings","targetID","getColumnFieldNames","columnNames","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedRows","selectedRecords","selectedRowIndexes","selectedRowCellIndexes","getSelectedColumnsUid","selectedColumnsIndexes","showColumns","hideColumns","getFrozenCount","splitFrozenCount","getVisibleFrozenLeftCount","getVisibleFrozenRightCount","getVisibleMovableCount","getFrozenRightColumns","getFrozenLeftColumns","getMovableColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","isMultiSort","sortModule","removeSortColumn","filterByColumn","filterOperator","actualFilterValue","actualOperator","removeFilteredColsByField","isClearFilterBar","selectRows","selectCell","endIndex","fieldname","startEdit","deleteRow","editCell","saveCell","enableToolbarItems","enableItems","clipboardModule","recalcIndentWidth","indentWidth","perPixel","parentOffset","applyWidth","newWidth","resetIndentWidth","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","disValue","autoFitColumns","resizeModule","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","gCols","sCols","sLen","parentDetails","parentKeyFieldValue","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","gridLines","Tooltip","opensOn","getTooltipStatus","headerDivTag","htable","ctable","mouseMoveHandler","prevElement","hoverFrozenRows","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","focusOutHandler","dblClickHandler","allowKeyboard","tapEvent","dataBoundFunction","isChildGrid","checkEdit","dataRow","ariaOwns","keyPress","editFormValidate","persistedData","dataObj","mergeColumns","storedColumn","storedColumns","localCol","tCol","presskey","collapse","refreshColumns","fCnt","frCnt","mTbl","getMovableContent","frTbl","getFrozenRightContent","colGrp","excelExport","excelExportProperties","isMultipleExport","workbook","excelExportModule","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","groupColumn","groupModule","groupExpandAll","groupCollapseAll","collapseAll","clearGrouping","ungroupColumn","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","clearCellSelection","clearRowSelection","selectCells","rowCellIndexes","selectRowsByRange","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","getPreviousRowData","hideScroll","mvblScrollBar","mvblChild","getRowIndexByPrimaryKey","pKvalue","getFilteredRecords","getUserAgent","getRowUid","getRowElementByUID","frozenRigtRows","cntRows","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","serverCsvExport","sorted","setHeaderText","gridInput","submit","getFormat","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","processRowChanges","batchAsyncUpdate","processBulkRowChanges","loopstring","setNewData","oldValues","bulkRefresh","deleteRowElement","mtr","out_i_1","isRowExist","renderRowElement","addRowObject","moveTbody","mRow","getHeight","getFrozenHeaderTbody","showCustomFilter","showCustomSort","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols_1","CommonKeyboardInteraction","shiftF","shiftS","shiftE","processFilter","processSort","processEdit","processDelete","processEnter","processClose","processFilterNodeSelection","getButtonElement","allPivotButtons","showGroupingBar","groupingBarModule","filterDialog","dialogPopUp","dialogElement_1","isExcelFilter_1","allowExcelLikeFilter","timeOutObj","memberEditorTree","allMemberEditorTree","dialogInstance","pivotButtons_1","EventBase","updateSorting","checkisDescending","isDescending","sortObj","newSortObj","lastSortInfo","updateFiltering","treeData","getOlapData","isValidFilterItemsAvail","getTreeData","popupTarget","filterTargetID","createFilterDialog","isItemAvail","isSearchEnabled","loadOnDemandInMemberEditor","levels","getFilterMembers","getMembers","currrentMembers","searchMembers","isHierarchy","filterItemObj","dummyfilterItems","memberObject","filterItems_1","getFilteredTreeNodes","getOlapTreeData","sortOlapFilterData","getParentIDs","treeObj","getChildIDs","cID","data_2","searchTreeNodes","isFieldCollection","searchList","nonSearchList","list_1","enableNodes","disableNodes","searchList_1","parentIDs","childIDs","pNodes","nonSearchList_1","nonSearchList_2","searchTreeItems","memberCount","currentTreeItems","maxNodeLimitInMemberEditor","editorLabelElement","isDataOverflow","updateOlapSearchTree","filterItems_2","searchData","getOlapSearchTreeData","currentTreeItemsPos","savedTreeFilterPos","isDateField","filterItems_3","modifiedFieldName","isSearchRender","updateChildNodeStates","members_4","sMembers","members_5","parentItem","parentNodes","selectedNodes_1","members_6","isNodeExpand","NodeStateModified","onStateModified","droppedClass","nodeDropped","droppedPosition","dataSourceUpdate","btnElement","actualFieldName","description","errorDialog","createErrorDialog","getButtonPosition","updateFieldlistData","targetBtn","axisPanel","pivotButtons","DataSourceUpdate","draggedClass","eventdrop","dropField","dropAxis","dropPosition","draggedAxis","removeFieldFromReport","getNewField","droppedField","droppedAxis","dataSourceUpdate_1","droppedArgs","isMeasureAvail","measureField","pivotButtonModule","axisFieldModule","ErrorDialog","dialogRenderer","fieldListDialog","errorPopUp","closeErrorDialog","removeErrorDialog","upDownKeyHandler","defaultIdx","liIdx","selectedLi","DropDownButton","isPopupCreated","canOpen","openPopUp","addItems","newItem","createItems","removeItems","isUniqueId","getULElement","dropDown","getTargetElement","getPopUpElement","appendItems","hasIcon","tempItem","createAnchor","blankIconList","iconLi","setBlankIconStyle","appendArrowSpan","setActiveElem","createPopupOnClick","activeElem","keyBoardHandler","delegateMousedownHandler","mousedownHandler","popupWireEvents","rippleFn","keyEventHandler","getLI","beforeOpenArgs","ul_1","openArgs","beforeCloseArgs","ul_2","closeArgs","arrowSpan","FilterDialog","editorDialog","filterCaption","getFilterObject","removeFilterDialog","filterArgs","fieldMembers","filterSetting","createTabMenu","updateCheckedState","createTreeView","memberTreeView","nodeChecked","nodeStateModified","allMemberSelect","editorTreeWrapper","levelWrapper","searchWrapper","editorSearch","nodeLimitText","labelWrapper","createSortOptions","selectAllWrapper","selectAllContainer","treeOuterDiv","treeViewContainer","promptDiv","createLevelWrapper","searchOlapTreeView","eventBase","nodeAttr","TreeView","expandOn","nodeClicked","nodeCheck","nodeSelected","nodeChecking","validateTreeNode","nodeExpanding","updateChildNodes","sortWrapper","sortAscendElement","sortDescendElement","sortBtnElement","dropMenu","selectedLevel","nodeLimit","getSearchMembers","isAllMember","checkedNode","getNode","uncheckAll","checkAll","applySorting","sortElements","nodeData","getChildMembers","curTreeData","updateChildData","treeData_1","addNodes","childMemberCount","regx","fieldType","formatObj","types_1","createCustomFilter","tabObj","Tab","heightAdjustMode","hideTab","valueOptions","levelOptions","measures","selectedOption","selectedValueIndex","selectedLevelIndex","betweenOperators","operatorCollection","operatorCollection_1","levelObj","fieldlistData_1","fieldListData","textContentdiv","betweenTextContentdiv","separatordiv","levelWrapperDiv","filterWrapperDiv2","levelDropOption","inputDiv2","inputField2","createElements","operators","optionDiv1","optionDiv2","vDataSource","oDataSource","valueIndex","lDataSource","levelIndex","filterObj_1","updateInputValues","optionWrapper","inputObj2","disabledClasses_1","inputObj1_1","DateTimePicker","inputObj2_1","inputObj1_2","NumericTextBox","inputObj2_2","inputObj1_3","inputObj2_3","uncheckedNodes","getUnCheckedNodes","checkedNodes","getCheckedNodes","firstNode","checkeNodes","getAllCheckedNodes","unCheckeNodes","isFilterField","PivotCommon","pivotEngine","isAdaptive","MDXQuery","getCellSets","olapEngine","refPaging","drillInfo","isQueryUpdate","isMondrian","isPaging","updateDrilledItems","fieldDataObj","fieldListObj","cellSetInfo","measureQuery","getMeasuresQuery","rowQuery","getDimensionsQuery","columnQuery","pagingQuery","getPagingQuery","getPagingCountQuery","slicerQuery","getSlicersQuery","getfilterQuery","caclQuery","getCalculatedFieldQuery","frameMDXQuery","LCID","mdxQuery","getTableCellData","generatePagingData","generateEngine","successMethod","customArgs","connectionString","getConnectionInfo","soapMessage","doAjaxPost","rowQueryCpy","calRowPage","calColPage","calRowSize","calColumnSize","pageRowStartPos","pageColStartPos","dimensions","getDimensionQuery","drillQueryObj","getDrillQuery","drillQuery","getAttributeDrillQuery","updateValueSortQuery","measurePos","getMeasurePos","drilledMembers_1","drillInfo_1","getDrillLevel","fieldPosition","getDimensionPos","isExist","isAttributeMemberExist","levelQuery","getHierarchyQuery","hasAllMember","isAvailable","hierarchyPosition","rawDrillQuery","isOnDemandDrill","onDemandDrillQuery","drilledMembers_2","rawQuery","drillInfo_2","heirarchize","slicers","colUqName","getDimensionUniqueName","slicerUqName","dimension","hierarchyNode","curElement","hierarchyNode_1","measures_1","advancedFilters","advancedFilterQuery","rowFilter","columnFilter","isFound","axes_1","advancedFilters_1","getAdvancedFilterQuery","updatedFilterQuery","currentAxis","getAdvancedFilterCondtions","calcMembers","calcQuery","calcMembers_1","aliasName","OlapEngine","drilledSets","mappingFields","tupColumnInfo","tupRowInfo","gridJSON","namedSetsPosition","totalCollection","parentObjCollection","curDrillEndPos","headerGrouping","lastLevel","hideRowTotalsObject","hideColumnTotalsObject","sortObject","isColDrill","measureReportItems","calcChildMembers","savedFieldListData","getAxisFields","frameSortObject","setNamedSetsPosition","updateFieldlist","loadCalculatedMemberElements","updateFilterItems","xmlDoc","xmlaCellSet","countCells","scrollPage","newPage","prevPage","colMeasures","colMeasurePos","rowMeasurePos","onDemandDrillEngine","getSubTotalsVisibility","columnTuples","rowTuples","valCollection","measureInfo","getMeasureInfo","orderedInfo","frameMeasureOrder","orderedHeaderTuples","orderedValueTuples","updateTupCollection","frameColumnHeader","performColumnSorting","frameRowHeader","performRowSorting","frameValues","performColumnSpanning","tuples","currentCell","lastAllStartPos","lastAllCount","prevTupInfo","tupPos","prevUNArray","allType","rowMembers","availAllMember","withoutAllStartPos","withoutAllEndPos","minLevel","gTotals","memberType","maxLevel","newTupPosition","frameTupCollection","tuplesLength","allCount","allStartPos","startTupPos","lastMesPos","memPos","prevParent","typeColl","typeCollection","drillStartPos","startDrillUniquename","drillEndPos","levelCollection","firstTupMembers","attrDrill","checkAttributeDrill","drillAllow","measurePosition","measureName","withoutAllAllow","getUniqueName","parentUniqueName","levelUniqueName","lastPos","lastMemPos","withoutAllDrilled","getDepth","isAttributeDrill","getCaptionCollectionWithMeasure","showTotals","totPos","updateRowEngine","tupInfo","memberPosition","uNameCollection","fieldSep","nxtIndextCount","fPos","hideTotalsObject","levelColl","drillState","captionCollection","hideFieldPos","memberlevel","memberUName","memberCaption","parentUName","levelPos","UName","currUName","currCaption","currLevel","uNames","uNamesKeys","captions","captionsKeys","uName","uCollection","parentLevel","setDrillInfo","tuple","captionColection","captionCollectionArray","setsPositions","currEngineCount","newEngineCount","newTuplesCount","tupCollection","currTupCount","lastRealTup","lastSavedInfo","isSubTotIncluded","withoutAllAvail","endDrillUniquename","isStartCol","levelComp","levelCompare","mergeTotCollection","setParentCollection","frameCommonColumnLoop","endAllow","orderTotals","groupColl","maxCnt","collLength","isSameParent","isWithoutAllMember","pUName","parentLvlCollection","newLevels","oldLevels","changePos","lPos","prevHdrPos","flagLevel","flagLevelString","getLevelsAsString","enterFlag","coll1","lvlCollection","drillMemberPosition","memberPos","memberDepth","getMeasurePosition","spanMemPos","colMembers","memDup","rowDepthPos","getDrilledParent","levelNameKeys","isAdjacentToMeasure","drillItems","isAdjacent","childMember","savedCollection","childlevel","currentChild","currentParent","lvlGrouping","measureObjects","gSumGrouping","gSumFlag","withoutAllLastPos","rPos","currentTuple","frameUniqueName","getParentUname","sortLvlGrouping","parentGrouping","objCollection","objKeys","oPos","pKeys","kPos","sortRowHeaders","groupSets","axisSets","aPos","isMembersIncluded","isLastMeasure","isFullLength","isLastNotDrilledMember","isActualLastMember","matchParent","newPos","currPos","temporary","grandTotal","arrange","prevColValue","prevColIndex","prevColRowCell","key_1","sortColumnHeaders","cellPos","weight","hgt","height1","hgt1","leng","pElement","cElement","hasLastMeasure","measureAvail","uniqueNameColl","parentString","sepPos","sepObjects","lastPosition","spanCollection","colMeasureCount","colPos","nextColCell","nextRowCell","currCell","colflag","rowflag","tupColInfo","isSubTot","colLength","rowEndPos","startRowOrdinal","rowOrdinal","colOrdinal","lastColCell","valElement","mAxis","measureAxis","measureIndex","valueInfo","vTuples","orderedTuples","orderedVTuples","cLevels","uniqueLevels","cLevel","uniqueLevels_1","uniqueLevels_2","values_2","vOrdinalIndex","ordinalValue","getDrilledSets","fieldPos","currTuple","memberArray","joinArray","splitLevels","drillLevel","cropLevels","childSets","levels_1","drillField","drillFieldSep","cropArray","drillSets","childSets_1","updateDrilledInfo","updateCalcFields","lastcalcInfo","expression","parentHierarchy","getFieldListItems","getAggregateType","isMembersAvail","selectedElements","parentNodes_1","currentItems","drilledItems","getDrillThroughData","pivotValue","maxRows","filteritems","xmla","getSoapMsg","drillThroughSuccess","tag_1","isSearchFilter","loadLevelMember","isAllFilterData","filterParentQuery","dimProp","generateMembers","loadLevelMembers","memberUQName","getCalcChildMembers","maxNodeLimit","memberUqName","parentUqName","nodeSelect","fieldDate","hierarchyElements","fields_2","isAllMemberAvail","dimensionName","hierarchyName","isSameDim","hierarchySuccess","loadDimensionElements","fieldListElements","calcObj","spriteCssClass","fields_3","defaultHierarchy","dimensionCaption","loadNamedSetElements","dimensionElements","reportElement","dataFields_3","measureGroupItems","fields_4","fieldObj","loadHierarchyElements","dataFields_4","fields_5","stringCollection","hierarchyFolderName","dimensionElements_1","folderName","curParentElement","dimensionElements_2","fieldObj_1","loadLevelElements","newDataSource","fields_6","levelCaption","loadMeasureElements","dataFields_5","loadMeasureGroups","fields_7","measureGRPName","measuresGroups","success","btoa","connectionInfo","getMDXQuery","Reorder","createReorderElement","chkDropPosition","srcElem","destElem","bool","closestElement","targetParentContainerIndex","chkDropAllCols","findColParent","getColumnsModel","subCols","uId","destElemUid","destColumn","sourceUid_1","colMatchIndex_1","destUid_1","moveColumns","newIndex","destElement","oldIdx","destIndex","reorderByColumn","preventRefresh","getColParent","srcIdx","toColumnUid","flatColumns","fTh","mTh","fHeaders","parents","reorderSingleColumn","fColumn","toColumn","reorderMultipleColumns","fromFNames","moveTargetColumn","reorderSingleColumnByTarget","reorderMultipleColumnByTarget","fromCol","setDisplay","visibleCols","toCol","updateScrollPostion","updateArrowPosition","draggableType","cliRect","cliRectBaseRight","updateFrozenScrollPosition","cliRectBaseLeft","scrollElem_1","scrollElem","mhdrCliRect","cliRectBase","dropEle","dropCol","fhdrWidth","mhdrRight","FreezeRowModelGenerator","rowModelGenerator","notifyArgs","virtualRows","isFrozenRowsRender","FreezeContentRender","isInitialRender","refreshScrollOffset","setHeightToContent","getFrozenContent","fDiv","mDiv","setFrozenContent","setMovableContent","renderFrozenRigthPanel","borderRightWidth","renderFrozenRightEmpty","renderFrozenRightTable","renderHorizontalScrollbar","getScrollbarDisplay","frozenDisplay","scrollbarHeight","setScrollbarHeight","appendScrollbar","frozen","columnIndexes","setIdx","refreshTbody","refreshHeight","getIdx","FreezeRender","refreshFreeze","setFrozenHeight","rfshMovable","updateColgroup","setFrozenHeader","setMovableHeader","renderFrozenRightPanel","refreshFrozenLeftUI","refreshStackedHdrHgt","addMovableFirstCls","movablefirstcell","filterRow","filterRenderer","hdrClassList","setWrapHeight","updateResizeHandler","isContReset","isStackedHdr","fRowHgt","mRowHgt","isWrap","tBody","isFrozenColResized","movableContentHeight","contentScrollWidth","contentTableScrollWidth","fRowSpan","mRowSpan","getRowSpan","updateStackedHdrRowHgt","rSpan","minRowSpan","maxRowSpan","frozenColumn","total","ColumnFreezeHeaderRenderer","setReorderElement","destEle","frRowHgt","rightHeight","isLeftRight","leftColGrp","rightColGrp","frTbody","mColGroup","frtbl","frtblColGroup","adjudtFilterBarCell","updateFrozenColGroup","renderLeftWithRightFrozenPanel","renderRightFrozenPanelAlone","renderFrozenRightTableAlone","refreshFrozenRightStackedHdrHgt","frTr","updateMovableColGroup","updateFrozenLeftColGroup","updateFrozenRightColGroup","fRightDiv","setFrozenRightHeader","leftColGroup","movableColGroup","rightColumns","rightColGroup","frozenRightHeader","ColumnFreezeContentRenderer","frzCount","isColGroupRefresh","renderFrozenLeftWithRightPanel","renderFrozenRightPanelAlone","renderFrozenLeftWithRightTable","fRightContent","setFrozenRightContent","getFrozenRightHeaderColGroup","oldColGroup","rightTable","renderFrozenRightEmptyRowAlone","renderFrozenLeftWithRightEmptyRow","frozenRigthContent","movableRowElements","frozenRightRows","InterSectionObserver","movableEle","fromWheel","touchMove","containerRect","entered","pageHeight","movableContainerRect","onEnterCallback","virtualScrollHandler","movableContainer","debounced100","debounced50","sentinel","setPageHeight","VirtualRowModelGenerator","cOffsets","movableCache","frozenRightCache","rowCache","loadNext","loadSelf","nextInfo","getBlockIndexes","loadedBlocks","checkAndResetCache","isBlockAvailable","isMovableBlockAvailable","isFrozenRightBlockAvailable","getStartIndex","median","updateGroupRow","getPage","blk","full","even","getColumnIndexes","calWidth","iOffset","offsetVal","addFrozenIndex","refreshColOffsets","blocks","currentFirst","iterateGroup","oRow","VirtualContentRenderer","prevHeight","preStartIndex","preventEvent","tmpOffsets","virtualEle","VirtualElementHandler","offsetKeys","rndrCount","requestTypes","isNormaledit","emptyRowData","vfColIndex","orderRowObj","mvbOrderRowObj","frOrderRowObj","isSelectionScroll","validationCheck","eventListener","renderWrapper","renderPlaceHolder","debounceEvent","getBlockHeight","adjustTable","blockIndex","colsIndex","recordslength","firstRecords","scrollListener","scrollArgs","scrollAfterEdit","viewInfo","getInfoFromView","prevInfo","restoreEdit","isBlockAdded","tempBlocks","infoType","preEndIndex","getPageFromTop","ensureBlocks","newBlock","firstBlock","getBlockSize","setKeyboardNavIndex","blazorDataLoad","blzRowIndex","mIdx","isEndBlock","getGroupedTotalBlocks","getTotalBlocks","newChild","colVFtable","checkFirstBlockColIndexes","cBlock","cOffset","getColumnOffset","refreshOffsets","vHeight","translate","getTranslateY","adjustMovableTable","setMovableWrapperWidth","setWrapperWidth","sTop","setVirtualHeight","getOffset","lastPage","focusCell","restoreAdd","ensureSelectedRowPosition","validationScrollLeft","initialRowTop","gridTop","validationCol","selectRowIndex","isRowInView","editedRowIndex","getRowObjectByIndex","getVirtualEditedData","editForms","formObj","getCurrentEditedData","startAdd","maxPage","onDataReady","resetScrollPosition","virtualHeightTemp","virtualHeight","setMovableVirtualHeight","cHeight","isOnenter","endTranslate","blockHeight","totalBlocks","maxBlock","onEntered","isWheel","maxLeft","isLastBlockRow","remainHeight","translateY","visibleRowCount","blockSize","currentblk","objIndex","secondBlock","thirdBlock","currentBlocks","refreshMaxPage","virtualCellFocus","editActionBegin","addActionBegin","editSuccess","refreshCache","resetIsedit","editCancel","refreshCells","onActionBegin","scrollValues","allowScroll","isScroll","updateCurrentViewData","editRequestTypes","virtualRenderer","refreshVirtualElement","editForm","addForm","createEmptyRowdata","getRowCollection","getMovableVirtualRowByIndex","getFrozenRightVirtualRowByIndex","isRowObject","startIdx","rowCollection","rem","fcntColGrp","mcntColGrp","VirtualHeaderRenderer","movableWrapper","setFrozenTable","fhdrColGrp","mhdrColGrp","tablewidth","renderFrozenWrapper","renderFrozenPlaceHolder","renderMovableWrapper","renderMovablePlaceHolder","movablePlaceholder","xValue","yValue","setFreezeWrapperWidth","VirtualFreezeRenderer","frzRows","mvblRows","serviceLoc","setCache","renderFrozenRows","freezeRowGenerator","virtualHdrRenderer","movableCont","tbl","movableTable","setDebounce","firstPageRecords","collectRows","mCol","VirtualFreezeHdrRenderer","selectedIdx","hdr","splitCells","leftKeys","movableKeys","rightKeys","selectFreezeRows","firstRecordslength","splitReorderedRows","ColumnVirtualFreezeRenderer","selectedIdx_1","frozenRightCont","frzCont","renderVirtualFrozenLeft","renderVirtualFrozenRight","renderVirtualFrozenLeftRight","Freeze","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","FreezePane","MergeCell","MergeCells","mergeCell","mCell","isIntersecting","intersectingCell","CellStyle","numFmtId","rotation","isGlobalStyle","sz","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","code","formatCode","Border","mLine","mColor","lineStyle","Image","Encoding","includeBom","emitBOM","encodingType","initBOM","getByteCount","validateNullOrUndefined","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","getBytes","RangeError","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","bytes","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint","uint16","byteUni","byte16","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","arrLiterals","stream","dataWindow","hashHead","hashPrevious","writeZLibHeader","compressedString","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","finish","fillWindow","canFlush","compressSlow","lookAheadCompleted","slideWindow","prevMatch","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","subarray","updateHash","chainLen","niceLen","scan","bestEnd","bestLength","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","buildCodes","treeLength","rank","writeTree","literalLen","writeCodeToStream","bits","pendingBufferFlushBits","isClose","bitReverse","writer","elementCount","minCodes","codeMinCount","codeFrequency","lengthCount","Int32Array","codeCount","codeLength","codes","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","freq","pPos","nodesCount","iIndex","constructHuffmanTree","buildLength","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","checksum_uint","s1","s2","checkSumBitOffset","checksumIterationCount","checksumBase","mimeType","getMimeType","Blob","isMicrosoftBrowser","msSaveBlob","downloadLink","saveInternal","hasDownloadAttribute","download","dataUrl_1","URL","createObjectURL","revokeObjectURL","reader_1","FileReader","onloadend","readAsDataURL","CRC32TABLE","ZipArchive","initCrc32Table","ZipArchiveItem","addDirectory","directoryName","zipArchive","saveAsBlob","blob","skipFileSave","zipData","dirLength","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","currentIndex","subArray","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","writeFooter","externalFileAttribute","centralLength","localLength","modTime","modiDate","itemName","CsvHelper","csvStr","globalStyles","worksheets","parseWorksheet","parseRows","parseRow","parseCell","csv","parseCellValue","dwlLink","BlobHelper","getBlob","AutoFilters","Workbook","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","cellStyle","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","author","comments","company","manager","subject","createdDate","modifiedDate","jsonSheet","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","applyProperties","sourceJson","destJson","getCellName","getColumnName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","freezePanes","leftCell","columnsLength","rowsLength","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","parseGrouping","parseCells","outlineLevel","isCollapsed","cellsLength","spanMin","spanMax","cellId","jsonCell","hyperLink","getCellValueType","rId","parseCellType","processMergeCells","spans","GetColors","processColor","colorVal","rgbColors","processCellValue","processedVal","startindex","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","processCellStyle","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","returnFormat","processNumFormatId","compareResult","compareStyle","isNewFont","toCompareStyle","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","sstvalue","imagesLength","parserImage","lastColumn","horizontalFlip","verticalFlip","blobSaveType","blobData","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheets","sheetName","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","imageData","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","iSpaceInCell","convertToPixels","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","img","byteStr","atob","drawingRelation","pixels","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","si","processString","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","horizontal","vertical","numFmtStyle_1","fontStyle","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","toISOString","wbRelation","contentTypeString","sheetsOverride","xmlString","archiveItem","startCell","endCell","updatedMergedCellStyles","sCell","eCell","dateToTicks","isLeapYear","timeToTicks","ticks","daysTo1899","ExportHelper","hideColumnInclude","getGridRowModel","processColumns","childGridLevel","getColumnData","columnPromise","fColumns","getHeaders","isHideColumnInclude","processHeaderCells","generateActualColumns","getConvertedWidth","actualColumns","getCellCount","appendGridCells","gridRows","isIgnoreFirstCell","checkAndExport","gridPool","globalResolve","childGridObj","createChildGrid","getGridModel","parentPrimaryKeys","parentKeyField","parentRowData","exportId","getGridExportColumns","actualGridColumns","ExportValueFormatter","internationalization","returnFormattedValue","formatCellValue","isServerBlaz","ExcelExport","book","workSheet","expType","isCsvExport","isElementIdChanged","isExporting","exportValueFormatter","isCsv","gridObject","processRecords","exportingSuccess","blobPromise","query_1","processInnerRecords","allPromise_1","groupedColLength","isExportPropertiesPresent","processExcelHeader","processGridExport","organisedRows","organiseRows","processExcelFooter","enableFilter","childRows","excelRows","gColumns","groupIndent","processHeaderContent","processRecordContent","returnType","currentViewRecords","excelRow","processRecordRows","processGroupedRows","processAggregates","cArgs","captionText","getCaptionThemeStyle","groupCaptionSummaryRows","fillAggregates","lIndex","hIndex","tCell","templateRowHeight","gCell","fkData","excelCellArgs","base64","excelImage","getColumnStyle","returnVal","childGridCell","excelExportProps","gRow","intent","rec","byGroup","summaryModel","aggregateModule","prepareSummaryInfo","groupSummaryRows","sRows","customIndex","getAggreateValue","Sum","Average","Max","Min","TrueCount","FalseCount","aggregateStyle","gridCellStyle","JSON1","JSON2","attrname","spannedCells","currentCellIndex","gridCell","getIndex","getHeaderThemeStyle","excelHeaderCellArgs","parseStyles","getRecordThemeStyle","updateThemeStyle","themestyle","noRows","updatedCellIndex","spannedCells_1","PdfWriter","streamWriter","pdfDocument","overload","tempOverload","defaultToString","ObjectStatus","Dictionary","toStringFunction","nElements","toStr","previousElement","keysArray","namesOfKeys","index1","pair1","valuesArray","namesOfValues","index2","pair2","InternalEnum","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","objInfo","ObjectInfo","Registered","lookFor","getReference","wasNew","trySetReference","found","setReference","pdfObject","isSaving","objectCollectionIndex","pdfReference","StreamWriter","encoding","bufferBlob","bufferText","enc","setBomByte","arrayUnicode","uint8","arrayUtf8","utf8","bufferArray","writeLine","PdfDocumentBase","isStreamCopied","PdfDocument","objects","pdfCrossTable","currentSavingObject","pdfCatalog","setMainObjectCollection","setCrossTable","cTable","setCatalog","filename","SW","encoding_1","SW_1","docSave","PdfName","stringStartMark","internalValue","isSaving6","position6","normalizeValue","status6","index6","escapeString","crossTable","newName","delimiters","replacements","Operators","forTest","endObj","newLine","endStream","xref","trailer","startxref","eof","beginText","endText","beginPath","appendLineSegment","stroke","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closePath","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setText","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPath","clipPathEvenOdd","endPath","setGraphicsState","comment","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","pages","kids","resources","mediaBox","decodeParms","type1","baseFont","subtype","procset","colorSpace","extGState","xObject","bitsPerComponent","dctdecode","blackIs1","predictor","deviceRgb","link","annot","uri","annots","ca","CA","xyz","dest","BM","flatedecode","rotate","bBox","cIDFontType2","cIDToGIDMap","dw","fontDescriptor","cIDSystemInfo","flags","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","avgWidth","fontFile2","xHeight","stemH","registry","ordering","supplement","type0","identityH","toUnicode","descendantFonts","shading","antiAlias","function","shadingType","coords","domain","functionType","bitsPerSample","patternType","paintType","tilingType","xStep","yStep","PdfDictionary","dictionary","position7","primitiveItems","suffix","archive","isFont","encrypt","dictionaryProperties","freezeChanges","status7","isSaving7","index7","getArchive","setArchive","setEncrypt","modify","getEncrypt","freezer","bChanged","onBeginSave","beginSave","onFontDictionaryBeginSave","fontDictionaryBeginSave","onDescendantFontBeginSave","descendantFontBeginSave","onTemplateBeginSave","pageBeginDrawTemplate","pageBeginSave","onBeginAnnotationSave","annotationBeginSave","onSectionBeginSave","saveEvent","sectionBeginSave","bRaiseEvent","saveItems","SaveSectionCollectionEventHandler","SaveDescendantFontEventHandler","SaveFontDictionaryEventHandler","SaveAnnotationEventHandler","SaveSectionEventHandler","SaveTemplateEventHandler","PdfNumber","position5","status5","isSaving5","index5","intValue","floatToString","returnString","PdfArray","startMark","endMark","position9","clonedObject9","internalElements","tempArray","tempNumberArray","pdfNumber","status9","isSaving9","index9","markedChange","fromRectangle","bounds","tempElements","markChanged","removeAt","PdfStream","dicPrefix","dicSuffix","clonedObject2","bCompress","isImageStream","isFontStream","dataStream2","bCompress2","clearStream","internalStream","writeBytes","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","dataArray","sw","getCompressedString","addFilter","filterName","PdfReferenceHolder","isImage","bytesToString","SaveCmapEventHandler","SaveFontProgramEventHandler","SourceType","ForceEncoding","ObjectType","PdfString","bHex","position1","clonedObject1","bDecrypted","isParentDecrypted","isPacked","isFormField","isColorSpace","isHexString","status1","isSaving1","bConverted","bForceEncoding","bytesToHex","Ascii","pdfEncode","stringMark","escapeSymbols","currentData","CrossTable","newString","toUnicodeArray","bAddPrefix","byteToString","hexStringMark","hexFormatPattern","PdfReference","objNumber","genNumber","index3","position3","status3","isSaving3","obj2","index4","position4","objectIndex","status4","isSaving4","primitiveObject","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","PdfCatalog","sections","tempDictionaryProperties","PdfCrossTable","maxGenNumIndex","objectCount","merging","internalTrailer","pdfObjects","saveHead","mappedReferences","markTrailerReferences","saveObjects","saveCount","xrefPos","registerObject","saveSections","saveTrailer","saveTheEndess","objectCollection","prevXRef","objectNum","prepareSubsection","saveSubsection","Free","generation","isFree","addOffsetLength","addGenNumberLength","generateFileVersion","bNew","getSubReference","objnumber","nextObjNumber","tempIndex","tempkey","tempvalue","None","bForceNew","saveIndirectObject","currentSavingObj","doSaveObject","free","RegisteredObject","dereference","tempOffset","offsetNumber","tempReference","Normal","PointF","SizeF","RectangleF","pointf","sizef","Rectangle","topLeft","PdfPageSize","letter","note","legal","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfHorizontalAlignment","PdfVerticalAlignment","PdfTextAlignment","TextRenderingMode","PdfLineJoin","PdfLineCap","PdfDashStyle","PdfFillMode","PdfColorSpace","PdfBlendMode","PdfGraphicsUnit","PdfGridImagePosition","PdfTextDirection","PdfFontStyle","PdfFontFamily","PdfFontType","PdfWordWrapType","PdfSubSuperScript","FontEncoding","TtfCmapFormat","TtfCmapEncoding","TtfPlatformID","TtfMicrosoftEncodingID","TtfMacintoshEncodingID","FontDescriptorFlags","TtfCompositeGlyphFlags","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","margins","pageMargins","rotateAngle","RotateAngle0","Portrait","pageOrigin","isRotation","setSize","orientation","updateSize","Landscape","getActualSize","LineType","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","fillPath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","writeText","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","wordSpacing","showNextLineText","setColorSpace","temparg1","temparg2","opcode","updateY","builder","writeComment","setColorAndSpace","forStroking","setLineDashPattern","patternOffset","setLineDashPatternHelper","tempPattern","miterLimit","setLineCap","lineCapStyle","setLineJoin","lineJoinStyle","appendBezierSegment","setColourWithPattern","colours","patternName","PdfColor","color1","color2","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","grayColor","gray","alpha","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","red","green","blue","black","cyan","magenta","yellow","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","PdfBrush","PdfSolidBrush","pdfColor","monitorChanges","brush","getResources","currentColorSpace","resetChanges","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","Solid","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","Dash","Dot","DashDot","DashDotDot","sBrush","pdfBrush","currentPen","dashControl","lineJoin","lineCap","pen","lineWidth","getPattern","dashOffset","dashPattern","PdfStringFormat","scalingFactor","wordWrapType","Word","internalLineLimit","textAlignment","verticalAlignment","isRightToLeft","internalCharacterSpacing","internalWordSpacing","clip","pdfSubSuperScript","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","textValue","getCharsCount","numSymbols","readLine","text2","peekLine","readWord","peekWord","read","readToEnd","spaces","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","arg7","clientSize","doLayout","rectSize","rectangle","reader","PdfStringLayoutResult","lineResult","lines","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","numInserted","finalizeResult","firstLine","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineType","FirstParagraphLine","addToLineResult","NewLineBreak","curLine","curIndent","curLineWidth","getWrapType","WordOnly","textRemainder","wordWrap","Character","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","actualSize","allowPartialLines","lineLimit","expHeight","trimLine","size1","PdfLayoutType","PdfLayoutBreakType","PathPointType","PdfFont","Regular","metrics","Strikeout","fontMetrics","pdfFontInternals","measureString","layoutArea","temparg3","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","charSizeMultiplier","syncObject","PdfTransformationMatrix","radDegFactor","PI","transformationMatrix","scaleX","scaleY","angle","cos","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","radians","metrixElements","tempMatrix","dispose","ProcedureSets","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","graphics","bNeedSave","gState","translateTransform","drawInternal","restore","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","scalingX","scalingY","getFont","stringFormat","draw","location_1","PdfAutomaticFieldInfo","getSize","getBrush","defaultFont","getPageFromGraphics","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","readByte","getBuffer","writeFromBase64String","encodedString","chr1","chr2","chr3","enc2","enc3","keyStr","resultIndex","totalLength","readNextTwoBytes","TtfTableInfo","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","compareTo","glyph","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","capacity","int32Size","int16Size","int64Size","bufferLength","internalPosition","writeShort","writeInt","i1","i2","i3","i4","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","nameTable","readNameTable","headTable","readHeadTable","initializeFontName","checkPreambula","numTables","readInt16","tableDirectory","tableKey","readString","readInt32","lowestPosition","fixOffsets","minOffset","MAX_VALUE","tableKeys","tableInfo","formatSelector","readUInt16","recordsCount","nameRecords","platformID","encodingID","languageID","nameID","unicode","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","readInt64","modified","xMin","yMin","xMax","yMax","lowestReadableSize","fontDirectionHint","indexToLocalFormat","glyphDataFormat","readHorizontalHeaderTable","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","metricDataFormat","numberOfHMetrics","readOS2Table","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","readBytes","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","vendorIdentifier","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefaultChar","usBreakChar","usMaxContext","readPostTable","formatType","underlinePosition","underlineThickness","isFixedPitch","minType42","maxType42","minType1","maxType1","readWidthTable","glyphCount","advanceWidth","lsb","glyphWidth","readCmapTable","subTables","subTable","readCmapSubTable","getCmapEncoding","Macintosh","Microsoft","Apple","readAppleCmapTable","readMicrosoftCmapTable","Trimmed","readTrimmedCmapTable","maxMacIndex","glyphInfo","macintosh","addGlyph","Unicode","microsoft","segCountX2","searchRange","entrySelector","rangeShift","segCount","endCount","readUshortArray","reservedPad","startCount","idDelta","idRangeOffset","glyphID","codeOffset","firstCode","entryCount","postScriptName","glyphCode","Undefined","Roman","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","factor","winAscent","macAscent","winDescent","macDescent","fontBox","widthTable","updateWidth","subScriptSizeFactor","superscriptSizeFactor","getGlyph","byteToProcess","getDefaultGlyph","readLocaTable","bShort","updateGlyphChars","glyphChars","locaTable","glyphCharKeys","processCompositeGlyph","glyphOffset","glyphHeader","numberOfContours","skipBytes","glyphIndex","MoreComponents","Arg1And2AreWords","WeHaveScale","WeHaveAnXyScale","WeHaveTwoByTwo","generateGlyphTable","newLocaTable","newGlyphTable","activeGlyphs","glyphSize","glyphSizeAligned","align","nextGlyphOffset","nextGlyphIndex","oldGlyphOffset","oldNextGlyphOffset","glyphTableSize","updateLocaTable","bLocaIsShort","newLocaTableOut","newLocaUpdated","newLocaSize","getFontProgram","locaTableSize","getFontProgramLength","fontProgramLength","writeCheckSums","writeGlyphs","usedTablesSize","nextTableSize","calculateCheckSum","byte1","byte2","byte3","byte4","setOffset","createInternals","bIsLocaShort","isFontPresent","getGlyphChars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","result1","result2","convertString","getCharWidth","isUnicode","written","PdfFontMetrics","getAscent","getDescent","getLineGap","clearTypeFonts","clearTypeFontCollection","subSuperScript","SubScript","SuperScript","WidthTable","internalWidthTable","StandardWidthTable","widths","UnicodeTrueTypeFont","base64String","nameString","isCompress","isEmbedFont","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","fontString","Initialize","ttfReader","internalBuffer","ttfMetrics","fontDictionary","fontProgram","cmap","descendantFont","subsetName","getFontName","createDescendantFont","createCmap","createFontDictionary","createFontProgram","isBold","formatName","createFontDescriptor","systemInfo","createSystemInfo","getDescriptorFlags","getBoundBox","descFonts","usedChars","getDescendantWidth","generateCmap","generateFontProgram","chLen","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","middlePart","toHexString","nextRange","FixedPitch","Symbolic","Nonsymbolic","isItalic","ForceBold","isCaseChange","setSymbols","ArabicShapeRenderer","arabicCharTable","alef","alefHamza","alefHamzaBelow","alefMadda","lam","hamza","zeroWidthJoiner","hamzaAbove","hamzaBelow","wawHamza","yehHamza","waw","alefMaksura","yeh","farsiYeh","shadda","madda","lwa","lwawh","lwawhb","lwawm","bwhb","fathatan","superScriptalef","vowel","arabicMapTable","getCharacterShape","shape","doShape","ArabicShape","present","ligature","shapeCount","getShapeCount","Shapes","Ligature","shapeValue","shapeType","shapeVowel","shapeLigature","shapeShapes","Bidi","indexLevels","mirroringShapeCharacters","doMirrorShaping","getLogicalToVisualString","inputText","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","sIndex","eIndex","odd","pstart","pend","reArrange","textOrder","rtlCharacterTypes","L","LRE","LRO","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","BN","WS","ON","charTypes","getCharacterCode","doVisualOrder","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preview","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","byte","tt","rt","RtlRenderer","openBracket","closeBracket","wordSpace","splitLayout","customSplitLayout","getGlyphIndex","glyphs","fontInternal","textDirection","layouted","addChars","ImageFormat","PdfBoolean","objectStatus","saving","boolToStr","PdfGradientBrush","mbackground","mbStroking","mfunction","mpatternDictionary","sh","aa","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","getName","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","gr","GetResourceEventHandler","PdfGraphics","initializeCoordinates","PdfResources","addType","addSubType","PdfBorderOverlapStyle","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","mbitsPerComponent","mStream","mWidth","mImageData","checkIfJpeg","Jpeg","parseJpegImage","imgData","isLengthExceed","readExceededJPGImage","mJpegHeader","getImageDictionary","imageStream","decodedString","imageDataAsNumberArray","compress","getColorSpace","getDecodeParams","decodeParams","isContinueReading","getMarker","skipStream","noOfBytes","marker","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","convertFromPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","PdfImage","imagePhysicalDimension","getPointSize","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","Point","ptHeight","PdfBitmap","imageStatus","loadImage","initializeAsync","decoder","baseDictionary","getNames","primitive","sName","generateName","PdfTilingBrush","pdfNames","fonts","requireProcedureSet","procedureSetName","procSets","removeFont","Guid","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","mStroking","mLocation","mDictionaryProperties","PdfPage","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","box","mGraphics","name1","previousTextRenderingMode","Fill","previousCharacterSpacing","previousWordSpacing","previousTextScaling","procedureSets","isNormalRender","isUseFontSize","isEmfTextScaled","isEmf","isEmfPlus","isBaselineFormat","emfScalingFactor","colorSpaceChanged","isPointOverload","currentColorSpaces","isImageOptimized","graphicsState","istransparencySet","internalAutomaticFields","startCutIndex","canvasSize","pdfStreamWriter","pdfStringLayoutResult","internalMediaBoxUpperRightBound","clipBounds","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","drawString","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","drawLine","stateControl","drawRectangle","xOffset","yOffset","layer","drawPathHelper","Winding","isPen","isBrush","isEvenOdd","Alternate","drawImage","physicalDimension","setResources","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","textSize","layoutedRectangle","lineAlignment","Middle","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","section","setClip","tm","getTextRenderingMode","cs","ws","textHeight","boundsHeight","vAlignShift","ttfFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","rightAlign","RightToLeft","drawUnicodeBlocks","breakUnicodeLine","tokens","convertToUnicode","getUnicodeString","xShift","spaceWidth","tokenWidth","converted","boundsWidth","hasWordSpacing","whitespacesCount","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","strikeout","linePen","createUnderlineStikeoutPen","vShift","underlineYOffset","strikeoutYOffset","FillStroke","Stroke","ClipFlag","layoutBounds","firstParagraphLine","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","curSubSuper","prevSubSuper","setTransparency","trasparencies","transp","TransparencyData","clipTranslateMargins","clipArea","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","PdfGraphicsState","textRenderingMode","doRestoreState","drawPath","buildUpPath","pathPoints","pathTypes","fillMode","drawArc","constructArcPath","typeValue","pathTypesValuesMask","Start","Bezier3","p3","getBezierPoints","Line","checkFlags","CloseSubpath","startAng","sweepAngle","getBezierArc","pt","numX1","numY1","numX2","numY2","e1","fragAngle1","numFragments","xcen","ycen","rx","ry","halfAng","kappa","pointsList","thetaValue0","thetaValue1","cos0","cos1","sin0","sin1","transparencyObject","internalTextRenderingMode","internalTextScaling","pdfColorSpace","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","PdfPageLayer","streamClipPageTemplates","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","initializeGraphics","PdfPageLayerCollection","sign","oPage","sc","isSame","origin","clipRect","getActualBounds","PdfCollection","parentLayerCount","optionalContent","PdfPageBase","lPage","parseLayers","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","saveStream","restoreStream","saveData","defLayerIndex","pageDictionary","pdfSection","layers","defaultLayerIndex","layerCollection","PdfAnnotationCollection","alreadyExistsAnnotationError","missingAnnotationException","internalAnnotations","lists","annotation","doAdd","layoutResult","annotationCollection","defaultLayer","annotations","setSection","resetProgress","isProgressOn","getClientSize","doc","drawPageTemplates","containsTemplates","backLayer","drawTemplates","frontLayer","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","checkElement","topTemplate","rightTemplate","bottomTemplate","evenLeft","evenTop","evenRight","evenBottom","oddLeft","oddTop","oddRight","oddBottom","getLeft","isEven","EvenLeft","OddLeft","getTop","EvenTop","OddTop","getRight","EvenRight","OddRight","getBottom","EvenBottom","OddBottom","pageCollectionIndex","PdfSectionTemplate","leftValue","topValue","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","templates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","checkPresence","pageAddedMethod","rh","onPageAdded","document_1","getLeftIndentWidth","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","parentSettings","PdfSectionCollection","rotateFactor","sectionHeaders","drawTemplatesHelper","pageRotate","sectionCount","pdfSectionCollection","section_1","checkSection","countPages","PdfDocumentPageCollection","pdfPageCollectionIndex","getLastSection","getPageByIndex","sectionStartIndex","numPages","PdfCacheCollection","referenceObjects","pdfFontCollection","getGroup","createNewGroup","tGroup","representative","removeGroup","PdfStandardFontMetricsFactory","getMetrics","Helvetica","getHelveticaMetrics","Courier","getCourierMetrics","TimesRoman","getTimesMetrics","getSymbolMetrics","ZapfDingbats","getZapfDingbatsMetrics","subSuperScriptFactor","helveticaBoldItalicAscent","helveticaBoldItalicDescent","helveticaBoldItalicName","arialBoldWidth","helveticaBoldAscent","helveticaBoldDescent","helveticaBoldName","helveticaItalicAscent","helveticaItalicDescent","helveticaItalicName","arialWidth","helveticaAscent","helveticaDescent","helveticaName","courierBoldItalicAscent","courierBoldItalicDescent","courierBoldItalicName","fixedWidth","courierBoldAscent","courierBoldDescent","courierBoldName","courierItalicAscent","courierItalicDescent","courierItalicName","courierAscent","courierDescent","courierName","timesBoldItalicAscent","timesBoldItalicDescent","timesBoldItalicName","timesRomanBoldItalicWidths","timesBoldAscent","timesBoldDescent","timesBoldName","timesRomanBoldWidth","timesItalicAscent","timesItalicDescent","timesItalicName","timesRomanItalicWidth","timesAscent","timesDescent","timesName","timesRomanWidth","symbolAscent","symbolDescent","symbolName","symbolWidth","zapfDingbatsAscent","zapfDingbatsDescent","zapfDingbatsName","zapfDingbatsWidth","PdfStandardFont","fontFamilyPrototype","encodings","pdfFontFamily","checkStyle","initializeInternals","getCharWidthInternal","stFont","fontFamilyEqual","lineReducer","styleEqual","WinAnsiEncoding","charOffset","isMerging","defaultMargin","isMerge","cacheCollection","documentPageCollection","defaultStandardFont","isCacheEnabled","checkPagesPresence","PdfBorders","defaultBorderPenLeft","defaultBorderPenRight","defaultBorderPenTop","defaultBorderPenBottom","leftPen","rightPen","topPen","bottomPen","PdfPaddings","hasLeftPad","hasRightPad","hasTopPad","hasBottomPad","leftPad","rightPad","bottomPad","topPad","PdfHorizontalOverflowType","PdfGridStyleBase","gridBackgroundBrush","gridTextBrush","gridTextPen","gridFont","gridBackgroundImage","PdfGridStyle","gridBorderOverlapStyle","Overlap","bAllowHorizontalOverflow","gridHorizontalOverflowType","gridCellSpacing","gridCellPadding","PdfGridCellStyle","gridCellBorders","PdfGridRowStyle","gridRowBackgroundBrush","setBackgroundBrush","getCell","backgroundBrush","gridRowTextBrush","setTextBrush","textBrush","gridRowTextPen","setTextPen","textPen","gridRowFont","gridRowBorder","setBorder","setParent","gridRowBackgroundImage","ErrorOption","ElementLayouter","layoutElement","layoutInternal","Layouter","getPaginateBounds","usePaginateBounds","paginateBounds","PdfLayoutFormat","baseFormat","break","boundsSet","layoutPaginateBounds","PdfLayoutParams","layoutFormat","PdfLayoutResult","PdfLayoutElement","beginPageLayout","endPageLayout","onBeginPageLayout","onEndPageLayout","bEmbedFonts","newBound","TextLayouter","currentBounds","pageResult","TextPageLayoutResult","layoutOnPage","getLayoutResult","PdfTextLayoutResult","lastLineBounds","checkCorrectBounds","stringResult","textFinished","FitElement","PdfTextWebLink","getTextPageBounds","verticalShift","remainderText","lastLineTextBounds","PdfTextElement","elementValue","hasPointOverload","isPdfTextElement","drawText","stringLayoutResult","previousPosition","calculateResultBounds","lineSize","maximumWidth","startPosition","PdfAnnotation","textFont","pdfDictionary","internalColor","darkness","nativeRectangle","initialHeight","tempLoacation","PdfLinkAnnotation","PdfActionLinkAnnotation","pdfAction","getSetAction","PdfAction","PdfUriAction","uniformResourceIdentifier","PdfUriAnnotation","pdfUriAction","uriAction","uniformResourceLocator","uriAnnotation","recalculateBounds","defaultBorder","previousFontStyle","calculateBounds","drawMultipleLineWithPoint","drawMultipleLineWithBounds","PdfGridLayouter","gridInitialWidth","gridSize","parentCellIndex","tempWidth","childheight","hasRowSpanSpan","isRearranged","pageBounds","listOfNavigatePages","columnRanges","breakRow","gridLayoutFormat","currentPageBounds","currentGraphics","FitColumnsToPage","getRow","startLocation","hType","horizontalOverflowType","measureColumnsWidth","determineColumnDrawRanges","isRowHeightSet","startColumn","endColumn","cellWidths","availableWidth","getColumn","subWidths","layoutedPages","startPage","cellBounds","cellStartIndex","cellEndIndex","returnObject","raiseBeforePageLayout","currentRowIndex","getHeader","drawRow","repeatRow","originalHeight","repeatRowIndex","rowResult","splitChildRowIndex","isrowFinish","ParentCell","isGridSplit","isFinish","tempResult","raisePageLayouted","allowRowBreakAcrossPages","getNextPageformat","cellPadding","rowBreakHeight","isRowBreaksNextPage","rowBreakHeightValue","i_2","noOfPageCount","repeatHeader","j_1","headerRepeat","j_2","tempResult1","i_3","i_4","PdfGrid","OnePage","i_5","NestedGridLayoutResult","recalHeight","ReCalculateHeight","secion","pageGraphics","location_2","cellWidth","totalwidth","i_6","columnWidth","drawCellBorders","columnSpan","isPdfGrid","maximumCellBoundsWidth","largeNavigatePage","rowLayoutBoundsWidth","reArrangePages","nextPage","pageindex","CheckIfDefaultFormat","defaultFormat","measureTrailingSpaces","noClip","RaiseBeforeCellDraw","raiseBeginCellDraw","PdfGridBeginCellDrawEventArgs","onBeginCellDraw","raiseAfterCellDraw","cellstyle","raiseEndCellDraw","PdfGridEndCellDrawEventArgs","onEndCellDraw","count_1","repeatFlag","PdfGridLayoutResult","newHeight","measureHeight","currentRow","raiseBeginPageLayout","PdfGridBeginPageLayoutEventArgs","startRowIndex","PdfGridEndPageLayoutEventArgs","raiseEndPageLayout","RowLayoutResult","rowHeightWithSpan","rowSpanExists","maxSpan","currRowIndex","calculatedHeight","LayoutFormat","FitPage","drawRowWithBreak","repeatRowNumber","location_4","cancelSpans","isCellMergeContinue","rowOverflowIndex","cellSpacing","rowMergeComplete","calculateHeight","gridHeight","cellstyle1","FinishedDrawingCell","rowBreakPageHeightCellIndex","PdfGridLayoutFormat","GridCellEventArgs","gridRowIndex","gridCellIndex","gridBounds","bSkip","PdfCancelEventArgs","BeginPageLayoutEventArgs","EndPageLayoutEventArgs","nextPdfPage","startRow","layoutedBounds","bIsFinished","PdfGridCell","cellHeight","tempval","fontSpilt","finsh","rowSpanRemainingHeight","hasRowSpan","hasColSpan","internalIsCellMergeContinue","internalIsRowMergeContinue","internalIsCellMergeStart","internalIsRowMergeStart","objectValue","isSingleGrid","colCount","columnSpanExists","isComplete","measureWidth","layouter","getTextFont","webLink","drawCellBackground","getBackgroundBrush","backgroundImage","getBackgroundImage","adjustContentLayoutArea","returnBounds","cancelSubsequentSpans","adjustOuterLayoutArea","getTextPen","getTextBrush","strFormat","getStringFormat","innerLayoutArea","rowFontSplit","layoutRect","Paginate","setSpan","checkSpan","childGridResult","imageBounds","borderOverlapStyle","Inside","Square","currentColIndex","totalWidth","compWidth","totalHeight","calculateWidth","currentValue","internalWidth","PdfGridCellCollection","tempcell","PdfGridColumn","isCustomWidth","PdfGridColumnCollection","internalColumns","initialWidth","isPageWidth","getDefaultWidths","subFactor","PdfGridRow","gridRowOverflowIndex","rowWidth","isRowSpanRowHeightSet","isPageBreakRowSpanApplied","isRowMergeComplete","pdfGrid","bRowSpanExists","gridCells","rowStyle","gridRowBreakHeight","gridResult","bColumnSpanExists","cellIn","rowin","rowWid","PdfGridRowCollection","addRow","temprow","PdfGridHeaderCollection","hasColumnSpan","beginCellDraw","endCellDraw","bRepeatHeader","gridHeaders","gridStyle","ispageWidth","ischildGrid","parentCell","gridLocation","isRowMergeContinue","isCellMergeStart","isRowMergeStart","maximumRowSpan","cellcolSpan","cellrowSpan","cellmaxSpan","childGridColumnWidth","colCount_1","colCount_2","RowCount","ColCount","colWidth","childGridColWidth","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","pdfTemplate","templateType","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopRight","MiddleRight","BottomRight","MiddleCenter","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","getSimpleDockBounds","getTemplateDockBounds","PdfNumbersConvertor","intArabic","numberStyle","Numeric","LowerLatin","arabicToLetter","LowerRoman","arabicToRoman","UpperLatin","UpperRoman","retval","retvalM","generateNumber","retvalCM","retvalD","retvalCD","retvalC","retvalXC","retvalL","retvalXL","retvalX","retvalIX","retvalV","retvalIV","retvalI","arabic","convertToLetter","appendChar","magnitude","numberstring","letterLimit","acsiiStartIndex","PdfTemplateValuePair","PdfMultipleValueField","drawLocation","PdfPageNumberField","internalNumberStyle","internalGetValue","PdfCompositeField","internalText","automaticField","PdfSingleValueField","painterGraphics","PdfPageCountField","PdfTrueTypeFont","createFontInternal","getUnicodeLineWidth","codeWidth","calculateStyle","iStyle","equalFont","isEmbed","isUnicodeFont","glyphIndices","resultGlyph","PdfExport","customDataSource","isGrouping","headerOnPages","drawPosition","xPosition","yPosition","pdfPageSettings","exportWithData","processExport","headerPageNumbers","gridDrawPosition","processSectionExportProperties","drawHeader","getPageSize","gridTheme","processExportProperties","headerThemeStyle","headerFont","headerBrush","processGridHeaders","setColumnProperties","captionThemeStyle","getSummaryCaptionThemeStyle","processGroupedRecords","processRecord","getFontFamily","getFontStyle","penBrushColor","hexToRgb","borderCaption","getBorderStyle","getGridPdfFont","headerSize","headerStyle","fontFamily_1","captionFont","captionSize","captionStyle","fontFamily_2","recordFont","recordSize","recordStyle","fontFamily_3","dataSourceItems","captionSummaryModel","eCols","applyTextAndSpan","rowIdx","pdfCell","getHorizontalAlignment","getVerticalAlignment","recuHeader","isRoot","cidx","newSpanCnt","fromBottom","drawPageTemplate","headerTemplate_1","processContentValidation","drawPageNumber","getBrushFromContent","setContentFormat","documentHeader","brushColor","compositeField","pageNumber","getPageNumberStyle","getPenFromContent","getDashStyle","isCaption","isGroupedFooter","sRows_1","leastCaptionSummaryIndex","getSummaryWithoutTemplate","getTemplateFunction","templateFunction","setRecordThemeStyle","borderRecord","cellLength","textLink","gridRow_1","hex","bigint","resizeClassList","Resize","tapped","isDblClk","findColumn","newarray","resizeColumn","footerTable","headerTextClone","contentTextClone","footerTextClone","contentDivTag","footerDivTag","columnIndexByField","indentWidthClone","detailsElement","contentText","footerText","wHeader","wContent","wFooter","columnbyindex","colMaxWidth","calcTableWidth","tableWidth","offsetWidthValue","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","refreshColumnWidth","refreshStackedColumnWidth","mtbody","ftbody","frtbody","ftr","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","cancelResizeAction","resizeEnd","updateCursor","removeEvents","updateResizeEleHeight","getColData","mousemove","setHelperHeight","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","isUpdate","subColumns","doubleTapEvent","getStackedWidth","headerRows_1","calcPos","fLeft","timeoutHandler","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","updateLinksHtml","updateStyles","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","totalPages","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","firstPage","firstPageDisabled","prevPageDisabled","lastPageDisabled","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","hideMessage","showMessage","Pager","hasParent","pageRefresh","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","All","containerModule","pagerMessageModule","isReactTemplate","initLocalization","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","setPageSize","pageSizes","newPageNo","oldPageNo","enableQueryString","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","beforeValueChange","pageSizeValue","ExternalMessage","externalMessage","pagerDestroy","gridExtend","dropDownChanged","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainer","numericContainerDiv","isForceCancel","previousPage","appendToElement","complete","updateLayout","inboundChange","sortRequired","isAppliedGroup","isAppliedUnGroup","reorderingColumns","animateDropper","preventDrop","rearrangeGroup","dragField","dropTarget","dropIndex","dragIndex","addColToGroupDrop","addLabel","removeColFromGroupDrop","aria","contentRefresh","groupGenerator","dragLabel","dropArea","refreshSortIcons","onGroupAggregates","blazorActionBegin","updateExpand","grpRow","expandCollapseRows","applySortFromTarget","unGroupFromTarget","toogleGroupFromHeader","showToggleButton","gHeader","cellIdx","rowNodes","isHide","expandElem","toExpand","updateVirtualRows","captionExpand","captionCollapse","updateVisibleexpandCollapseRows","rObj","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","updateGroupDropArea","initializeGHeaderDrop","initializeGHeaderDrag","colName","groupAddSortingQuery","animator","groupedColumn","childDiv","headerCell","showUngroupButton","createSeparator","getGHeaderCell","updateGroupedColumn","updateButtonVisibility","editedData","iterateGroupAggregates","updateSummaryRows","dataUid","updatedData","initData","deletedCols","changeds","pKeyVal","cItem","eData","aggrds","aggregateRows","aggr","groupedCols","closestParent","isModelChanged","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","sortColumns","popUpClickHandler","colObj","initiateSort","showPopUp","colUid","allowUnsort","enableSortMultiTouch","updateAriaAttr","menuClass","batchEdit","editIcon","pager","ungroup","fPage","nPage","pPage","ascending","descending","groupHeader","touchPop","ContextMenu","defaultItems","disableItems","hiddenItems","localeText","setLocaleKey","gridID","enableAfterRenderMenu","getMenuItems","contextMenuItemClick","contextMenuBeforeOpen","onOpen","contextMenuOnClose","exportItems","getDefaultItems","toLocaleLowerCase","buildDefaultItems","exportGroup","getLastPage","totalpage","getKeyFromId","targetColumn","rowInfo","targetRowdata","updateItemStatus","getLocaleText","showItems","closestGrid","hideSepItems","showSepItems","dItem","ensureDisabledStatus","ensureTarget","hideItems","ensureFrozenHeader","generateID","menuItem","indentCollection","lastSpan","hierarchyCollection","lvlPosCollection","hierarchyPosCollection","maxMeasurePos","hierarchyCount","resColWidth","gridSettings","formatList","getFormatList","aggMenu","gridHeaderCellInfo","gridCellCollection","injectGridModules","getRowStartPos","notEmpty","frameDataSource","frameStackedHeaders","mCntHeight","dataHeight","isScrolling","resizeInfo","setGridRowWidth","calculateGridWidth","allowAutoResizing","calculateGridHeight","bindGrid","vtr","virtualHeaderDiv","frameEmptyData","frameEmptyColumns","setGroupWidth","onResizeStop","excelDataBound","lastGridSettings","pivotColumns","rowRangeSelection","rowCellBoundEvent","columnCellBoundEvent","excelColumnEvent","pdfRowEvent","excelRowEvent","pdfColumnEvent","cellTemplate","getCellTemplate","targetCell","borderRight","borderLeft","setFocusOnLastCell","refreshData","gridFocus","cellTarget","lastCellClicked","isGroupElement","groupingModule","validateField","pivotValue1","isUngroupOption","selectedCellsInfo","getSelectedCells","cellInfo","getSelectedOptions","customGroup","allowDrillThrough","allowCalculatedField","fieldType_1","MouseEvent","exportArgs","rowIndx","colIndx","pdfProperties","excelProperties","colp","calculatedFieldModule","createCalculatedFieldDialog","updateAggregate","validateColumnTotalcell","headerPosKeys","sumLock","isValueField","valueCnt","updateGridSettings","updatePivotColumns","layoutRefresh","clearColumnSelection","pivotColumn","fillGridColumns","appendValueSortIcon","vSort","lock","firstColWidth","firstRowHeight","pivotArgs","selectedElements_1","hyperlinkSettings","isValueCell","onOlapRowCellBoundEvent","localizedText","rowGrandPos","isRowCellHyperlink","enableHyperlink","pivotView","colGrandPos","isSummaryCellHyperlink","isValueCellHyperlink","colindex","pivotview","lastIndextCount","prevHasChild","iPos","maxIndent","currPos_1","lvlPosition","hierarchyPOs","currPos_2","currHierarchyPos","lvlPos","hasChild_1","onOlapColumnCellBoundEvent","isColumnCellHyperlink","hdrdiv","prevCell","isSpannedCell","parentCellSpan","parentCellPos","onHyperCellClick","calculateColWidth","parWidth","isOverflows","resizeColWidth","eleWidth","totColWidth","elementCreated","parHeight","getHeightAsNumber","currentView","tableHeight","contentHeight","horizontalOverflow","singleValueFormat","integrateModel","headerCnt","headerSplit","splitPos","actualCnt","colField","setSavedWidth","tmpSpan","innerModel","innerPos","configLastColumnWidth","triggerColumnRenderEvent","formatArray","fString","exportHeaderEvent","exportContentEvent","tmpCell","Common","commonModule","initiateCommonModule","pivotCommon","GridSettings","PivotSelectionSettings","actualrCnt","addHeaderAndFooter","exportToExcel","clonedValues","isHeaderSet","isFooterSet","isFileNameSet","currentPivotValues","customFileName","exportAllPages","applyFormatting","dataCollections","workSheets","dataColl","colLen","pivotCell","PDFExport","eventParams","hexDecToRgb","hexDec","fontType","dashType","getStyle","exportToPDF","applyEvent","firstColumnWidth","dataCollIndex","allowRepeatHeader","integratedCnt","isColHeader","pdfGridRow","localCnt","isEmptyRow","applyStyle","indent_1","conditionalFormattingModule","family","textColor","KeyboardInteraction","ctrlShiftF","pivotViewKeyboardModule","processTab","processShiftTab","processSelection","toggleFieldList","getNextButton","allpivotButtons","getPrevButton","chartAxis","rowAxis","columnFilterValueAxis","columnFilterValueGroup","rowGroup","chartGroup","tableAxis","groupingbarButton","headerButton","nextButton","showFieldList","lastChild","prevButton","allPivotButtons_1","control_1","rowIndex_1","getParentElement","colSpan_1","selectArgs","isCellClick","applyColumnSelection","pivotFieldListModule","PivotContextMenu","renderContextMenu","onBeforeMenuOpen","onSelectContextMenu","cMenu","menuObj","fieldElement","items_2","items_3","dropClass","VirtualScroll","frozenPreviousValues","eventType","addInternalEvents","onHorizondalScroll","onVerticalScroll","common","onWheelScroll","deltaMode","rowValues_1","exactSize_1","scrollPosObject","showWaitingPopup","rowStartPos_1","pivot_1","sfBlazor","copyWithoutCircularReferences","updateBlazorData","exactPage","verticalSection","getEngine","colValues_1","exactSize_2","colStartPos_1","pivot_2","horizontalSection","verticalScrollScale","horizontalScrollScale","horiOffset","vertiOffset","scrollerBrowserLimit","excessMove","notLastPage","vWidth","virtualDiv","removeInternalEvents","Toolbar","predefinedItems","excludingItems","preItems_1","itemStr","localeName","prefixIcon","tooltipText","ColumnChooser","suffixIcon","responsiveFilter","responsiveSort","responsiveBack","createToolbar","addReactToolbarPortals","bindSearchEvents","searchElement","refreshToolbarItems","updateSearchBox","toolbarCreated","isNormal","tool","clicked","toolbarClickHandler","viewStr","ID","renderResponsiveSearch","isRender","refreshResponsiveToolbarItems","isSearch","searchBoxObj","toolbarEle","hasData","getItemObject","toolbarItems_1","itemObject","gID","toolbarargs","tarElement","targetEle","keyUpHandler","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","showColumn","hideColumn","changedColumns","unchangedColumns","isDlgOpen","initialOpenDlg","stateChangeColumns","isInitialOpen","isCustomizeOpenCC","searchOperator","prevShowedCols","dlgObj","rtlUpdate","enableAfterRenderEle","hideDialog","onResetColumns","renderDlgContent","clearActions","refreshCheckboxState","columnChooserSearch","removeCancelIcon","refreshCheckboxButton","targetdlg","hideOpenedDialog","addcancelIcon","beforeOpenColumnChooserEvent","mOpenDlg","dialog","renderChooserList","updateIntermediateBtn","customDialogOpen","beforeClose","customDialogClose","columnChooserManualSearch","dlgDiv","confirmDlgBtnClick","clearBtnClick","searchDiv","ccsearchele","ccsearchicon","conDiv","innerDivContent","refreshCheckboxList","changedColumnState","uncheckedLength","columnStateChange","resetColumnState","currentCol","stateColumns","checkstatecolumn","coluid","searchVal","fltrCol","okButton","clearSearch","buttonEle","selectedCbox","columnChooserSettings","nMatchele","checkBoxClickHandler","checkstate","updateSelectAll","columnUID","srchShowCols","itemsLen","hideCols","gdCol","cclist","renderCheckbox","currentCheckBoxColls","itemLen","uncheck","cbox","hideColState","showColState","cccheckboxlist","searchValue","startTimer","openCC","dlgEle","dlgLen","InlineEditRender","addNew","mTbody","isVirtualFrozen","frTbody_1","getEditElement","checkLastRow","renderMovableform","frEle","renderFrozenRightForm","frozenRightForm","renderRightFrozen","movableForm","updateFreezeEdit","getFreezeRow","getFreezeRightRow","isCustomFormValidation","tdElement","refreshFreezeEdit","fCls","mTd","frTd","refreshEditForm","updateFrozenCont","updateFrozenRightCont","td_1","editTemplateID","BatchEditRender","columnObject","newTd","DialogEditRender","setLocaleObj","createDialog","createDialogHeader","responsiveDlgRenderer","getDialogEditTemplateElement","dialogClose","dialogEditTemplates","dialogTemp","tempDiv","checkColumnIsGrouped","dataCell","EditRender","getEditElements","convertWidget","fForm","frForm","cols_1","mTdElement","fTdElement","chkBox","nextElementSibling","rowID","tArgs","tempData","isInput","EditCellBase","BooleanEditCell","activeClasses","selectChkBox","chkState","editRow","CheckBox","DropDownEditCell","isInline","ddActionComplete","dropdownCreated","dropDownOpen","dropdownBeforeOpen","dlgElement","NumericEditCell","TEXTBOX_FOCUS","containerAttr","TextBox","isHiddenInput","isForm","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","prevOnChange","isBlank","raiseChangeEvent","updateHTMLAttrToElement","updateHTMLAttrToWrapper","checkAttributes","autocomplete","updateCssClass","multiline","attributeName","apiAttributes","attrs_1","autoCompleteTxt","updatedCssClassValue","getInputValidClassList","initialValue","setInitialValue","updatedClassValues","focusHandler","inputHandler","changeHandler","resetForm","animationHandler","resetValue","localChange","interaction","isInteraction","resetInputHandler","DefaultEditCell","NormalEdit","currentVirtualData","allowEditOnDblClick","editComplete","editRowIndex","getEditArgs","primaryKeys","primaryKeyValues","inlineEditHandler","prevData","argsCreator","begineditargs","editargs","applyFormValidation","edFail","isValid","validationArgs","editIdx","addIdx","addedRowIndex","isDlg","dlgWrapper","dlgForm","mhdrFrm","mCntFrm","mvblEle","frHdrFrm","frCntFrm","eleLength","endEditArgs","destroyElements","destroyWidgets","editHandler","edSucc","editFailure","requestSuccess","stopEditStatus","isLastRow","blazorTemplate","checkboxOnly","closeForm","cloneRow","originalRow","cloneFrozen","needRefresh","closeEditArgs","inlineAddHandler","addArgs","dataLen","tmpRecord","contained","addElements","editElements","InlineEdit","BatchEdit","originalCell","cloneCell","editNext","preventSaveCell","onBeforeCellFocused","onCellFocused","batchCancelFunction","setCellIdx","isAddRow","validateFormObj","frzRightCols","editCellFromIndex","batchChanges","isAdded","allRows","isInsert","removeBatchElementChanges","refreshRowIdx","isInstertedRemoved","removeHideAndSelection","tdElements","bulkDelete","bulkAddRow","batchSave","replaceWith","checkAllBox","removeSelectedData","beforeBatchSaveArgs","removeRowObjectFromUID","rowClone","isJsComponent","deleteRowUid","beforeBatchDeleteArgs","uniqueid","out_j_1","dataObjects","getIndexFromData","defaultData","getDefaultData","beforeBatchAddArgs","removeFrozenTbody","renderFrozenAddRow","btmIdx","getBottomIndex","findNextEditableCell","isValOnly","checkNPCell","dValues","editCellExtend","mRowData","getDataByIndex","getColIndex","getCellIdx","cellEditArgs","isColored","newReactTd","setChanges","currentRowObj","movableRowObject","frRowObject","rowcell","escapeCellEdit","generateCellArgs","successCallBack","cloneEditedData","isForceSave","cellSaveArgs","isEscapeCellEdit","visibleColumns","addCancelWhilePaging","DialogEdit","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","infoElement","selectQuery","localyMessage","defaultMessages","dateIso","creditcard","minLength","equalTo","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","addRules","removeRules","validateRules","rules_1","clearForm","getInputElement","errorClass","validClass","elements_2","getErrorElement","defRules","acceptedTypes","allRule","defRules_1","defRule","annotationRule","ruleCon","ruleName","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","submitHandler","hiddenType","validateHiddenType","vhPos","rules_2","errorMessage","errorRule","inputName","removeErrorRules","createErrorElement","errorElement","optionalValidationStatus","refer","currentRule","checkValidator","ruleValue","for","errorOption","Message","errorContainer","containerId","customPlacement","checkRequired","uNum","DatePickerEditCell","DatePicker","dateanddatetimerender","TemplateEditCell","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","editCellType","alertDObj","refreshToolbar","showDeleteConfirmDialog","endEditing","form1","form2","mFormObj","form3","frFormObj","getCurrentEditCellData","getValueFromType","destroyToolTip","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","executeAction","eventDetails","actionBeginFunction","actionCompleteFunction","inputs","col_1","isRestrict","isDestroyVirtualForm","formObjects","virtualFormObj","preventObj","mForm","createFormObj","validationComplete","valErrorPlacement","getElemTable","isFHdr","resetElemPosition","tdRight","elemRight","customForm","gcontent","validationForBottomRowPos","isFHdrLastRow","isBatchModeLastRow","viewPortRowCount","fHeraderRows","client","inputClient","arrow","rowsHeight","AddEditors","editors","CommandColumnRenderer","unbounDiv","isVirtualEdit","buttonOption","buttonObj","commandType","initiateRender","commandClickHandler","commandColumn","commandCols","commandclickargs","commandCol","ensurePageSize","virtualEditFormValidation","errorDomRect","forms","contentLeft","existingErrors","setEditedDataToValidationForm","isRenderer","DrillThroughDialog","indexString","gridIndexObjects","gridData","showDrillThroughDialog","rawData","allowInlineEditing","removeDrillThroughDialog","drillThroughDialog","createDrillThroughGrid","drillThroughGrid","dataWithPrimarykey","gridIndexObjectsValue_1","prevItems","allowCommandColumns","currModule_1","gridIndex","drillThroughValue","Key","gridResize","numericTextBox","textBoxValue","indexValue","textBoxElement","dataPos","drillThroughBody","drillThroughBodyHeader","formatData","dialogModule","frameGridColumns","isDateFieldExist","rawData_1","DrillThrough","executeDrillThrough","drillThroughElement","valueCaption","aggType","tupleInfo","maxRowsInDrillThrough","parsedObj","triggerDialog","indexArray","indexArray_1","aIndex","indexArray_2","valuetText","getSeriesColor","palette","getThemeColor","darkBackground","axisLabel","axisTitle","axisLine","majorGridLine","minorGridLine","majorTickLine","minorTickLine","chartTitle","legendLabel","areaBorder","errorBar","crosshairLine","crosshairFill","crosshairLabel","tooltipFill","tooltipBoldLabel","tooltipLightLabel","tooltipHeaderLine","markerShadow","selectionRectFill","selectionRectStroke","selectionCircleStroke","axisLabelFont","axisTitleFont","chartTitleFont","chartSubTitleFont","crosshairLabelFont","tooltipLabelFont","legendLabelFont","legendTitleFont","stripLineLabelFont","stockEventFont","Connector","Offset","ChartArea","Margin","ContainerPadding","Indexes","CornerRadius","seriesIndex","pointIndex","series","EmptyPointSettings","DragSettings","TooltipSettings","Periods","SvgRenderer","PeriodSelectorSettings","rootID","svgLink","rootId","createSvg","svgObj","setElementAttributes","setSVGSize","drawCircle","circle","drawPolyline","polyline","drawEllipse","ellipse","drawPolygon","polygon","setAttributeNS","preserveAspectRatio","createText","createTSpan","tSpan","createTitle","createDefs","createClipPath","createForeignObject","foreignObject","createGroup","createPattern","createRadialGradient","colorName","colorStop","newOptions","cy","fx","fy","drawGradient","createLinearGradient","gradientType","defs","gradient","stop_1","drawClipPath","drawCircularClipPath","createCanvas","CanvasRenderer","canvasObj","ctx","getContext","setCanvasSize","dashArray","dashArrayString","setLineDash","strokeStyle","lineTo","canvasTranslate","canvasCtx","cornerRadius","globalAlpha","drawCornerRadius","fillStyle","fillRect","arcTo","dataSplit","innerR","q1","q2","quadraticCurveTo","c1","c2","c3","c4","bezierCurveTo","arc","counterClockWise","transX","transY","dy","isTSpan","baseline","textBaseline","txtlngth","labelRotation","fillText","circumference","imageObj","myGradient","setGradientValues","newColorStop","stopColor","addColorStop","updateCanvasAttributes","img_1","clearRect","canvasClip","canvasRestore","measureText","breakText","htmlObject","findDirection","rX","rY","arrowLocation","arrowPadding","tipX","tipY","tipRadius","Rect","Side","CustomizeOption","TextOption","baseLine","drawSymbol","functionName","locX","locY","calculateShapes","PathOption","TooltipLocation","TextStyle","TooltipBorder","AreaBounds","ToolLocation","initPrivateVariable","isCanvas","removeSVG","createTooltipElement","themeStyle","getTooltipThemeColor","markerPoint","svgObject","templateObject","fadeOuted","updateTemplateFn","createTemplate","areaBounds","renderText","argsData","markerSide","renderTooltipElement","drawMarker","markerSize","textElements","shared","groupElement","pathElement","shapes","shapeOption","markerGroup","marginX","tooltipDiv","tipLocation","elementSize","marginY","sharedTooltipLocation","tooltipLocation","inverted","wrappedText","textStyle","pathElement_1","pointRect","enableAnimation","updateDiv","animateTooltipDiv","tooltipPlacement","enableShadow","shadowId","shadow","defElement","changeText","findFormattedText","tspanElement","textCollection","tspanOption","subWidth","tspanStyle","leftSpace","rightSpace","isBoldTag","headerWidth","isLeftSpace","isRightSpace","headerSpace","isRow","subStringLength","markerPadding","labelColor","renderOptions","textElement","withoutHeader","pointsLength","isTextWrap","getTextContent","width_1","texts","isRtlText","isValidHTMLElement","firstElement","controlInstance","tooltipRect","tooltipRendered","rect1","thisObject_1","tooltipRect1","heightDifference","tooltipDivEndValue","boundsEndValue","isStockChart","getCurrentPosition","symbolLocation","clipX","clipY","markerHeight","boundsX","boundsY","currenDiff","templateComplier","fadeOut","tooltipElement","tooltipGroup_1","opacity_1","progressAnimation","endAnimation","tooltipGroup","DoubleRange","mStart","mEnd","Double","chart","calculateNumericNiceInterval","actualDesiredIntervalsCount","getActualDesiredIntervalsCount","niceInterval","desiredIntervals","minInterval","logBase","intervalDivs","currentInterval","getActualRange","initializeDoubleRange","startFromZero","actualRange","doubleRange","minimum","POSITIVE_INFINITY","maximum","NEGATIVE_INFINITY","valueType","calculateRangeAndInterval","calculateRange","applyRangePadding","calculateVisibleLabels","setRange","paddingInterval","maxPointLength","rangePadding","getMinPointsDelta","requireInvertedAxis","yAxisRange","findMinMax","drawType","dragSettings","dragY","visibleRange","getRangePadding","findAdditional","findNormal","updateActualRange","calculateVisibleRange","chartAreaType","zoomingScrollBar","zoomFactor","zoomPosition","calculateVisibleRangeOnZooming","calculateAxisRange","enableAutoIntervalOnZooming","triggerRangeRender","visibleLabels","labelStyle","tempInterval","duplicateTempInterval","intervalDigits","formatDigits","labelFormat","useGroupingSeparator","startLabel","endLabel","withIn","triggerLabelRender","formatValue","getMaxLabelWidth","isStack100","legendClick","legendRender","textRender","pointRender","sharedTooltipRender","seriesRender","axisLabelRender","axisRangeCalculated","axisMultiLabelRender","tooltipRender","chartMouseMove","chartMouseClick","pointClick","pointMove","chartMouseLeave","chartMouseDown","chartMouseUp","zoomComplete","dragComplete","selectionComplete","resized","beforeResize","scrollStart","scrollEnd","scrollChanged","regSub","regSup","afterExport","onZooming","ChartAnnotationSettings","LabelBorder","MultiLevelCategories","StripLineSettings","MultiLevelLabels","ScrollbarSettingsRange","ScrollbarSettings","nearSizes","farSizes","computeSize","scrollBarHeight","internalVisibility","findTickSize","crossInAxis","findLabelSize","opposedPosition","MajorGridLines","MinorGridLines","AxisLine","MajorTickLines","MinorTickLines","CrosshairTooltip","axisBottomLine","crossAt","updatedRect","multiLevelLabelHeight","isChart","isIntervalInDecimal","titleCollection","titleSize","crossAxis","tickPosition","isInside","majorTickLines","inside","innerPadding","isHorizontal","titleStyle","labelPosition","labelSize","titlePadding","labelPadding","maxLabelSize","placeNextToAxisLine","findDifference","updateCrossValue","valueToCoefficient","isInversed","isZoomSet","zoomModule","enableAutoIntervalOnBothAxis","zoomSettings","visiblePoints","axisCollections","baseModule","stockChart","pointX","isAxisLabelBreak","previousEnd","isIntersect","labelIntersectAction","isBreakLabel","originalText","breakLabelSize","enableTrim","rotatedLabel","width1","edgeLabelPlacement","findMultiRows","textWrap","height_1","isHorizontalAngle","labelText","initialClipRect","delayRedraw","redraw","rotateTextSize","multiLevelLabelModule","multiLevelLabels","getMultilevelLabelsHeight","currentX","currentLabel","isBreakLabels","width2","store","getModule","firstToLowerCase","VisibleLabels","getVisiblePoints","tempPoint","tempPoints","showTooltip","areaWidth","isTitleOrLegendEnabled","logWithIn","withInRange","previousPoint","currentPoint","nextPoint","mX2","mX1","mX3","xStart","xEnd","subtractThickness","thickness","degreeToLocation","degree","radian","ChartLocation","degreeToRadian","getRotatedRectangleCoordinates","actualPoints","centerX","centerY","coordinatesAfterRotation","tempX","tempY","rotatedX","rotatedY","isRotatedRectIntersect","minA","maxA","projected","minB","maxB","polygons","normal","TransformToVisible","isInverted","labelPlacement","CoefficientToVector","valueToPolarCoefficient","primaryXAxis","startAngle","indexFinder","isPoint","ids","coefficient","dateTimeInterval","PolarArc","endAngle","innerRadius","currentXPosition","withInBounds","getValueXByPoint","getValueYByPoint","findClipRect","seriesCollection","xValues","minVal","seriesMin","minDelta","xAxisName","getAnimationFunction","markerAnimate","isLabel","pathAnimation","previousDirection","animateDuration","currentDireciton","startDirections","splitDirections","endDirections","startPath","directions","appendClipElement","clipElement","redrawElement","isLineBreakLabels","text_1","labelCollection","breakLabels","lineBreakLabelTrim","maximumLabelWidth","textTrim","availableSize","desiredIntervalsCount","maximumLabels","templateAnimate","isChartControl","chartRenderer","xVal","yVal","isBulletChart","sizeBullet","targetWidth","lx","ly","cartesianlarge","cartesiansmall","getAccumulationLegend","calculateLegendShapes","minMax","accReactTemplate","childElement","datalabelGroup","dataLabel","accumulationDataLabelModule","calculateLabelSize","chartReactTemplate","labelIndex","dataLabelCollections","dataLabelModule","calculateTemplateLabelSize","dataLabelId","tempObject","elementData","reactCallback","measureElementRect","isReactCallback","getPoint","xLength","yLength","appendChildElement","isAnimate","forceAnimate","isRect","previousRect","existChild","currentRect","animateRectElement","animateRedrawElement","getDraggedRectLocation","outerRect","checkBounds","getLabelText","customLabelFormat","seriesType","stackedValues","endValues","upperQuartile","lowerQuartile","outliers","liers","collections","isOverlap","calculateRect","convertToHexCode","componentToHex","convertHexToColor","ColorValue","colorNameToHex","isRGBValue","getSaturationColor","colorCode","rgb","stringToNumber","containerSize","isDiv","isMinus","seriesClipRect","isRotatedLabelIntersect","textAnchor","calculateSize","marginHeight","tooltipSpace","periodHeight","periodSelectorSettings","periods","enableGrouping","disableRangeSelector","canvasRender","enableCanvas","chartObject","selectorObject","titlePositionX","getUnicodeText","digit","digitSpecific","convertedText","unicodeSub","unicodeSup","blazorTemplatesReset","StackValues","startValues","RectOption","ImageOption","CircleOption","PolygonOption","Thickness","PointData","lierIndex","AccPointData","ControlPoints","controlPoint1","controlPoint2","getColorByValue","colorMap","previousColor","nextColor","previousOffset","percent","splitColorValueOffset","splitColor","prevColor","getPercentage","getPercentageColor","getGradientColor","CartesianAxisLayoutPanel","chartModule","leftSize","rightSize","topSize","bottomSize","measureRowAxis","measureColumnAxis","calculateAxisSize","refreshAxis","calculateRowSize","arrangeAxis","measureDefinition","computedHeight","calculateColumnSize","computedWidth","definition","scrollBarModule","enableScrollbar","enableScrollbarOnZooming","isZoomed","scrollbarSettings","axisOffset","nearCount","farCount","plotOffset","computedTop","plotOffsetTop","getAxisOffsetValue","plotOffsetBottom","computedLeft","plotOffsetLeft","plotOffsetRight","actualIndex","verticalAxes","getActualRow","pushAxis","horizontalAxes","getActualColumn","position2","crossesAt","crossesInAxis","updateCrossAt","primaryYAxis","dateFormatter","axisCollection","actualLength","remainingHeight","columnLeft","remainingWidth","renderAxes","outsideElement","axisElement","axisLineElement","findAxisPosition","drawAxisLine","majorGridLines","drawXAxisGridLine","drawXAxisLabels","drawXAxisBorder","drawXAxisTitle","drawYAxisGridLine","drawYAxisLabels","drawYAxisBorder","drawYAxisTitle","renderScrollbar","drawBottomLine","isScrollUI","visibleSeries","optionsLine","definitionName","plotX","plotY","minorGridDirection","isLogAxis","isCategoryAxis","pointY","majorGrid","majorTick","tickSize","axisLineSize","ticksbwtLabel","isTickInside","chartThemeStyle","minorGridLines","minorTickLines","isBorder","renderGridLine","minorTicksPerInterval","renderMinorGridOnZooming","drawAxisMinorLine","chartArea","isAxisBreakLabel","labelSpace","isLabelInside","isOpposed","defaultAnchor","isRtlEnabled","textPadding","maxLineWidth","labelElement","getAxisLabelXvalue","getAnchor","createZoomingLabel","textWidth","lineBreakAlignment","gap","endY","labelBorder","endX","createAxisBorderElement","renderYAxisMultiLevelLabels","minorDirection","isFirstLabel","logStart","coor","logInterval","logPosition","ticksX","ticksY","minorGird","minorTick","findLogNumeric","labelHeight","labelWidth","intervalLength","islabelInside","tickSpace","newPoints","isLabelUnderAxisLine","isEndAnchor","paddingForBreakLabel","xValue2","rect_1","xAdjustment","yAdjustment","rectCoordinates","getRectanglePoints","rectCenterX","rectCenterY","findAxisLabel","axisRect","renderXAxisMultiLevelLabels","borderElement","gridDirection","gridId","themeColor","findParentNode","zoomElement","isVertical","chartRect","createZoomingLabels","ChartData","currentPoints","previousPoints","insideRegion","mouseX","mouseY","isRectSeries","isTransposed","markerWidth","getRectPoint","selectionMode","rectPoints","fromCenterX","fromCenterY","clickAngle","distanceFromCenter","arcAngle","regionData","regions","atan2","isPointInThresholdRegion","checkRegionContainsPoint","regionRect","region","isBar","heightValue","xvalues","xData","getClosestX","mergeXvalues","DataLabelSettings","MarkerSettings","symbolLocations","percentage","isPointInRange","Trendline","setDataSource","trendLineModule","initDataSource","visibleSeriesCount","ErrorBarCapSettings","ChartSegment","ErrorBarSettings","SeriesBase","isRectTypeSeries","processJsonData","xName","Series","textMappingName","processInternalData","sortData","yName","paretoSeriesModule","performCumulativeCalculation","sizeMax","getSeriesType","dataPoint","pushCategoryData","pushData","setEmptyPoint","isArea","findSplinePoint","calculateBinValues","getObjectValueByMappingString","enableComplexProperty","getObjectValue","volume","interior","pointColorMapping","tooltipMappingName","rangeColorSettings","isAdvancedColorSupported","colorValue","getPointFillColor","pointFill","rangeMap","mappingName","findVisibility","emptyPointSettings","yData","getAverage","yValues","yAxisMin","yAxisMax","setXYMinMax","setHiloMinMax","seriesMinY","isNegativeValue","isIndexed","dataModule","isRemoteData","localData","findCurrentData","refreshChart","refreshTechnicalIndicator","trendlines","refreshBound","initialRender","stockChartDataManagerSuccess","drawPoints","delayedAnimation","refreshAxisLabel","findSeriesCollection","isStack","rowSeries","rectSeriesInChart","calculateStackedValue","isStacking100","columnItem","calculateStackingValues","stackingGroup","lastValue","lastPositive","lastNegative","frequencies","findFrequencies","stackingSeies","seriesCollection_1","isColumnBarType","findPercentageOfStacking","stackingSeies_1","seriesCollection_2","renderSeries","createSeriesElements","errorBarModule","appendSeriesElement","seriesElements","performAnimation","explodeValue","svgRenderer","markerMaxValue","clipRectElement","symbolElement","seriesElement","errorBarElement","dataLabelElements","shapeElement","animateSeries","doAnimation","doErrorBarAnimation","markerRender","doMarkerAnimation","doDataLabelAnimation","setPointColor","setBorderColor","dataQuery","dataManagerDeferred_1","MarkerExplode","mouseUpHandler","crosshair","markerMove","startMove","explodeSeries","chartAxisLayoutPanel","pointData","commonXvalues","chartSeries","enableTooltip","isPointMouseDown","removeHighlightedMarker","markerExplode","drawTrackBall","seriesMarker","highlightModule","highlightMode","generateStyle","symbolId","selectionId","seletionElem","Marker","renderMarker","previousLocation","previousPath","circlePath","markerElement","isBoxPlot","findlElement","markerFill","markerBorder","markerOpacity","markerShape","imageURL","markerClipRect","getRangeLowPoint","markerElements","animated","incFactor","lowPoint","Location","LegendSettings","BaseLegend","pageXCollections","legendTitleCollections","legendRegions","pagingRegions","legend","legendSettings","legendID","isBulletChartControl","bulletChart","fivePixel","pageButtonSize","maxColumns","backwardArrowOpacity","forwardArrowOpacity","arrowWidth","arrowHeight","isTitle","currentPageNumber","calculateLegendBounds","legendBounds","library","getLegendBounds","containerPadding","getLocation","accumulation","setBounds","titleHeight","titlePosition","legendTitleSize","enablePages","calculateLegendTitle","maxItemHeight","labelIns","ticklIns","categoryFieldValue","categoryField","legendHeight","legendWidth","alignLegend","legendSize","renderLegend","titlePlusArrowWidth","requireLegendBounds","firstLegend","findFirstLegendPosition","legendCollections","upArrowHeight","legendGroup","legendTranslateGroup","createLegendElements","shapeHeight","getLinearLegend","legendSeriesGroup","previousLegend","shapeWidth","textOptions","shapePadding","bottomSapce","legendOption","accessbilityText","getRenderPoint","renderSymbol","toggleVisibility","renderPagingElements","xmlns","nextLegend","linerGradientEle","fillColors","numberItems","diffValue","colorsLength","calculatedValue","fillColor","stopEle","startLabelY","endLabelY","startLabelX","endLabelX","startTextSize","endTextSize","otherSpaces","linearBarWidth","linearBarHeight","diffWidth","diffHeight","fontcolor","translatePage","gradientLegend","legendCollection","legendCollection_1","maximumTitleWidth","renderLegendTitle","topPadding","legendTitleTextOptions","legendItemsGroup","clippath","pagingClipRect","regionPadding","symbolColor","isStrokeWidth","isCustomBorder","strokewidth","seriesBorder","symbolOption","markerVisibility","textOption","pageTextElement","paginggroup","iconSize","titleWidth","clipPathHeight","totalNoOfPages","calTotalPage","pagingText","changePage","backwardArrow","forwardArrow","pageText","hideArrow","showArrow","arrowElement","targetId","clearTooltip","LegendOptions","TechnicalIndicator","targetSeries","ExportUtils","htmlContent","getHTMLContent","export","controls","controlValue","getControlsValue","isDownload","svgData","svg","XMLSerializer","serializeToString","msSaveOrOpenBlob","triggerDownload","canvas","toDataURL","exportPdf","doexport","image_1","ctx_1","toBlob","getDataUrl","image_2","ctx_2","blobUrl","groupEle","pdfDefaultWidth","pdfDefaultHeight","imageString","exactWidth","exactHeight","pdfHeader","pdfFooter","fileType","exportImage","buffers","image1","byteString","intArray","RangeColorSetting","CrosshairSettings","ZoomSettings","Chart","rotatedDataLabelCollections","checkResize","clickCount","singleClickTimer","chartid","mergePersistChartData","isIdHasSpecialCharacter","childElementId","refreshDefinition","tooltipModule","svgId","loadEventData","cartesianChartRendering","beforeRenderData","createChartSvg","setTheme","calculateAreaType","calculateVisibleSeries","initTechnicalIndicators","initTrendLines","calculateVisibleAxis","legendModule","getLegendOptions","calculateStackValues","rangeFound","enablePeriodSelector","enableSelector","renderElements","isCalculateStacking","rectCount","filterArray","calculateDragSelectedElements","renderBorder","renderAreaBorder","renderSeriesElements","applyZoomkit","performSelection","setSecondaryElementPosition","renderAnnotation","yAxisElements","stripLineModule","renderStripLine","mainObject","svgRect","initializeModuleElements","indicatorElements","hasTrendlines","trendLineElements","isTrendline","tooltipdiv","initializeIndicator","initializeTrendLine","appendElementsAfterSeries","sourceIndex","renderCanvasSeries","seriesSvg","svgElement","divElement","mainElement","createIndicatorElements","getTrendLineElements","calculateStockEvents","enablePan","performedUI","applyZoomToolkit","annotationModule","renderAnnotations","selectedDataIndexes","invokeSelection","invokeHighlight","redrawSelection","initializeDataModule","techIndicator","subTitleHeight","subTitleCollection","subTitle","subTitleStyle","trendIndex","trendLine","initSeriesCollection","yAxisName","polarSeriesModule","radarSeriesModule","paretoAxes","isPanning","isAxisZoomed","scrollSettingEnabled","initAxis","injectTo","isSeries","seriesName","palettes","zOrder","initSeries","renderSubTitle","subTitleElementSize","subTitleOptions","backGroundImage","addSeries","removeSeries","clearSeries","addAxes","axisCollection_1","removeAxis","removeSvg","stopEvent","chartOnMouseDown","mouseMove","mouseEnd","chartOnMouseClick","chartRightClick","mouseLeave","resizeBound","touchObject","chartResize","longPressBound","longPress","crosshairModule","zooming","disableScroll","enableSelectionZooming","enablePinchZooming","msTouchAction","msContentZooming","msUserSelect","webkitUserSelect","isOrientation","setMouseXY","exportModule","currentSize","previousSize","beforeResizeArgs","cancelResizedEvent","touchArg","chartOnMouseMove","chartOnMouseLeave","isChartDrag","timeInterval","pointDoubleClick","triggerPointEvent","axisLabelClick","triggerAxisLabelClickEvent","clickEvt","axisIndex","labelID","titleTooltip","axisTooltip","dataEditingModule","pointMouseMove","categories","mouseDownX","previousMouseMoveX","mouseDownY","previousMouseMoveY","isDoubleTap","threshold","pointMouseDown","chartOnMouseUp","pointMouseUp","setLocaleConstants","defaultLocalConstants","setAnnotationValue","annotationIndex","processAnnotation","ZoomIn","Zoom","ZoomOut","Pan","Reset","ResetZoom","enableAnnotation","errorBarVisible","isPointDrag","dataLabelEnable","isLegend","currentModule","findIndicatorModules","findTrendLineModules","findAxisModule","enableExport","allowExport","enableMouseWheelZooming","datetimeEnabled","categoryEnabled","logarithmicEnabled","striplineEnabled","dateTimeCategoryEnabled","multiLevelEnabled","axisCollections_1","findStriplineVisibility","stripLines","macdEnable","bandEnable","isLine","isSpline","markerEnable","trendline","striplines","striplines_1","removeLength","pinchTarget","containerCollection","definitions","definitions_1","axisChange","getVisibleSeries","visibleSeries_1","refreshLiveData","removeStyles","refreshBounds","crosshairTooltip","seriesRefresh","blazorProp","isClosed","boxPlotMode","showMean","currentMode","styleId","isMultiSelect","ColumnBase","getSideBySideInfo","enableSideBySidePlacement","getSideBySidePositions","seriesSpacing","columnSpacing","pointSpacing","getRectangle","point1","point2","findRectPosition","vSeries","updateSymbolLocation","updateYRegion","updateXRegion","histogramValues","binWidth","getRegion","triggerEvent","calculateRoundedRectPath","topRight","bottomLeft","bottomRight","rectElements","visiblePoints_1","animateRect","isPlot","elementHeight","elementWidth","ColumnSeries","sideBySideInfo","pointColumn","LineBase","tempPoints2","xVisibleRange","yVisibleRange","seriesPoints","xTolerance","yTolerance","prevXValue","prevYValue","seriesPoints_1","getLineDirection","firstPoint","secondPoint","getPointLocation","appendLinePath","doProgressiveAnimation","strokeDashArray","pathLength","getTotalLength","storePointLocation","withinYRange","getFirstLastVisiblePoint","points_1","doLinearAnimation","xCenter","yCenter","LineSeries","prevPoint","isPolar","getCoordinate","MultiColoredSeries","getAreaPathDirection","getAreaEmptyDirection","isXSegment","getAxisValue","sortSegments","chartSegments","segmentAxis","applySegmentAxis","includeSegment","attributeOptions","createClipRect","isX","isRequired","startPointLocation","endPointLocation","segmentValue","AreaSeries","currentXValue","isDropMode","getPolarIsInversedPath","getRadarIsInversedPath","Legend","visibleSeriesCollection","visibleSeriesCollection_1","legendShape","legendImageUrl","extraHeight","extraWidth","verticalArrowSpace","titleSpace","legendEventArgs","columnHeight","titlePlusArrowSpace","prevLegend","previousBound","availwidth","LegendClick","changeDetection","legendClickArgs","legendText","changeSeriesVisiblity","refreshLegendToggle","legendSelection","redrawSeriesElements","refreshSeries","isSecondaryAxis","legendRegion","legendItemsId_1","checkWithinBounds","cRender","canvasRect","BaseTooltip","getTooltipElement","isTooltip","stopAnimation","removeHighlight","highlightPoint","highlight","accumulationSelectionModule","isSelectedElement","highlightPoints","clipLocation","extraPoints","templatePoint","customTemplate","accumulationTooltipModule","contentSize","heightPadding","getPositionBySize","svgTooltip","SVGTooltip","findPalette","enableTextWrap","updatePreviousPoint","animationComplete","isTooltipFitPosition","findColor","valueX","valueY","removeText","toolTipInterval","removeTooltip","tooltipTemplate","isTemplateRendered","mouseLeaveHandler","fadeOutDuration","disableTrackTooltip","onPanning","isStockSvg","renderGroupedTooltip","renderSeriesTooltip","findHeader","parseTemplate","findShapes","enableMarker","findData","isPointDragging","triggerTooltipRender","getTooltipText","findMouseValue","pointText","chartTooltipSuccess","getSymbolLocation","findMarkerHeight","getTemplateText","getBoxLocation","getWaterfallRegion","getRangeArea","formatPointValue","lastData","triggerSharedTooltip","triggerBlazorSharedTooltip","findSharedLocation","blazorSharedTooltip","sharedTooltipSuccess","toolbarHeight","isXPoint","isYPoint","tooltipFormat","getIndicatorTooltipFormat","textX","NiceInterval","calculateDateTimeNiceInterval","totalDays","actualIntervalType","intervalType","getSkeleton","getDayFormat","getMonthFormat","findCustomFormats","Category","BaseSelection","seriesStyles","seriesclass","selectionPattern","highlightPattern","selectionStyle","unselected","pathOptions","patternGroup","loadPattern","concatIndexes","userIndexes","localIndexes","checkVisibility","uniqueSeries","selectedIndexes_1","uniqueSeries_1","addSvgClass","elementClassName","removeSvgClass","getChildren","isdrawRect","multiDataIndexes","pathIndex","dragRectArray","totalSelectedPoints","isMultiDrag","completeSelection","calculateSelectedElements","mousedown","initPrivateVariables","closeIconId","draggedRectGroup","multiRectGroup","draggedRect","lassoPath","isSeriesMode","selectDataIndex","unSelectedStyle","nonHighlightStyle","indexes_1","getElementByIndex","getClusterElements","seriesStyle","clusters","findTrackballElements","trackballElements","findElements","getSeriesElements","isAlreadySelected","targetElem","highlightDataIndexes","previousSelectedEle","parentNodeId","addOrRemoveIndex","selectionEle","blurEffect","clusterSelection","selectedPointX","selectedPointValues","selectedDataValues","removeMultiSelectElements","pClassName","getSelectionClass","toEquals","chartId","checkSelectionElements","parentClassName","symbolEle","checkSeriesOnly","oldMode","isRedrawSelection","removeSelectedElements","seriesElements_1","isBlurEffectNeeded","elements_3","dragRect","isLasso","removeOffset","selectedSeriesValues","isDragResize","allowMultiSelection","rectGrabbing","targetIndex","xAxisOffset_1","yAxisOffset_1","isCurrentPoint","isPointSelect","createCloseButton","xAxisOffset","yAxisOffset","rectCollection","rectCollection_1","drawDraggingRect","cartesianLayout","rectFill","rectStroke","isDragMode","dragGroup","multiGroup","rectElement","closeIcon","circleStroke","removeDraggedElements","isSelectedvalues","multiRectGroupElement","changeCursorStyle","resizingSelectionRect","resize","findResizeMode","chartSvgObject","cursorStyle","resizeMode","resizeEdges","isResize","rectelement","seriesElements_2","draggedRectMoved","grabbedPoint","doDrawing","dragging","pointChecking","getDragRect","isDragRect","isIos","isIos7","getPath","StripLine","measureStripLine","stripline","actualStart","actualEnd","isDateTimeAxis","isRepeat","dateToMilliSeconds","isCoreDate","getFromTovalue","startFromAxis","sizeType","isSegmented","segmentStart","segmentEnd","segRect","getToValue","findValue","isEnd","fromValue","striplineGroup","getSegmentAxis","repeatEvery","repeatUntil","renderStripLineElement","getStartValue","renderPath","renderRectangle","isRotationNull","textMid","ty","tx","getTextStart","horizontalAlignment","invertAlignment","segmentAxisName","xy","DataLabel","errorHeight","commonId","calculateErrorHeight","chartBackground","positiveHeight","negativeHeight","rgbValue","contrast","labelLocation","yAxisInversed","isDataLabelOverlap","showZero","labelLength","xPos","yPos","shapeRect","argsFont","fontBackground","isDataLabelShape","createDataLabelTemplate","calculateTextPosition","visibleAxisLabelRect","rectRegion","actualRect","enableRotation","isDataLabelOverlapWithChartBound","currentPointIndex","isShape","vAxis","hAxis","labelRegion","getLabelLocation","locationY","alignmentValue","calculateAlignment","calculateRectPosition","locationX","calculatePathPosition","calculatePolarRectPosition","columnRadius","chartWidth","alignmentSign","textLength","extraSpace","calculateRectActualPosition","calculateTopAndOuterPosition","seriesLength","nextSeries","nextSeriesPoint","calculatePathActualPosition","labelRect","isOverLap","finalPosition","actualPosition","updateLabelLocation","yLocation","positionIndex","slope","intersectY","shapeElements","textNode","AccumulationAnnotationSettings","AccumulationDataLabelSettings","PieCenter","AccPoints","labelVisible","isExplode","isClubbed","isSliced","isLabelUpdated","initialLabelRegion","AccumulationSeries","clubbedPoints","sumOfPoints","rightSidePoints","leftSidePoints","dateSource","resultData","getPoints","seriesCounts","findSumOfPoints","sumOfClub","clubValue","groupTo","setPoints","isClub","pushPoints","lastGroupTo","clubPoint_1","generateClubPoint","pointsLength_1","explode","explodeAll","explodeIndex","clubPoint","sliceRadius","groupMode","separatorY","setAccEmptyPoint","seriesGroup","renderPoints","renderDataLabel","findMaxBounds","labelBound","accumulationBound","pieSeriesModule","accumulationLegendModule","explodeDistance","pointId","renderPoint","getSeriesElement","findAreaRect","firstQuarter","secondQuarter","midAngle","drawDataLabels","dataLabelCallBack","totalbound","bound","pointByIndex","AccumulationBase","pieCenter","pieRadius","pieLabelRadius","labelRadius","isCircular","isVariousRadius","isRadiusMapped","processExplode","explodePoints","deExplodeAll","invokeExplode","pointExplode","animationDuration","deExplodeSlice","clubPointsExploded","clubPointExplode","getSum","explodeSlice","sliceId","setTranslate","setElementTransform","isReverse","PieBase","initAngles","radiusCollection","minRadius","maxRadius","seriesRadius","connectorStyle","explodeOffset","findCenter","defaultLabelBound","totalAngle","getLabelRadius","accumulationRect","getSeriesBound","accumulationRectCenter","getRectFromAngle","nextQuandrant","lastQuadrant","getPathArc","getDoughnutPath","getPiePath","clockWise","innerStart","innerEnd","PieSeries","getPathOption","findSeries","toggleInnerPoint","createBorderEle","accumulationId","innerPie","seriousGroup","borderExplode","removeBorder","curentDegree","currentStartAngle","accBaseModule","clipslice","AccumulationChart","animateselected","temIndex","tempcolor","tempindex","tempindex1","currentSeries","datasource","currentSeries_1","entry1","entry2","accPoint","missing","refreshPoints","isIE11Pointer","accumulationMouseMove","accumulationMouseEnd","accumulationMouseStart","accumulationOnMouseClick","accumulationRightClick","accumulationMouseLeave","accumulationResize","svgRectElement","enableBorderOnMouseMove","createPieSvg","createSecondaryElement","doGrouppingProcess","tooltipParent","getSmartLegendLocation","subTitleOption","findDatalabelVisibility","changeVisibleSeries","refreshElements","neckHeight","neckWidth","TriangularBase","actualChartArea","triangleSize","neckSize","initializeSizeRatio","gapRatio","coEff","yRatio","heightRatio","setLabelLocation","labelOffset","findPath","locations","FunnelSeries","getSegmentData","topRadius","bottomRadius","endTop","endBottom","endMin","bottomY","emptySpaceAtLeft","seriesTop","line3","line6","PyramidSeries","pyramidMode","calculateSurfaceSegments","sumOfValues","gapHeight","preSum","getSurfaceHeight","currY","coef","surface","solveQuadraticEquation","root1","root2","sd","SplineBase","splinePoints","realPoints","filterEmptyPoints","findSplineCoefficients","point_1","getPreviousIndex","getControlPoints","getNextIndex","points_2","coefficient1","coefficient2","coefficient3","dy1","dy2","interPoint","slopeLength","ySpline","ySplineDuplicate","dx","cardinalSplineTension","splineType","ySpline1","ySpline2","ySplineDuplicate1","ySplineDuplicate2","xValue1","yValue1","yValue2","one3","deltaX2","SplineAreaSeries","pt2","bpt1","bpt2","controlPt1","controlPt2","startPoint1","MultiColoredLineSeries","RangeAreaSeries","closed","highPoint","closeRangeAreaPath","StackingAreaSeries","polarAreaType","lineDirection","stackedvalue","connectPoints","getFirstSeriesIndex","previousSeries","getPreviousSeries","StepAreaSeries","lineLength","StepLineSeries","SplineSeries","getSplineDirection","pt1","MultiColoredAreaSeries","startRegion","rendered","generatePathOption","AccumulationLegend","titleRect","convertHtmlEntities","totalRowCount","getMaxColumn","maxPageColumn","maxColumnWidth","getAvailWidth","availablewidth","legendBound","getTitleRect","legendByIndex","legendCollections_1","legendItemsId","sliceVisibility","sliceAnimate","AccumulationTooltip","getPieData","firstText","tooltipSuccess","getSeriesFromIndex","StackingColumnSeries","stackedValue","RangeColumnSeries","rangePoint","BarSeries","pointBar","StackingBarSeries","pointStack","ScatterSeries","currentTempPoint","PolarRadarPanel","drawYAxisLine","setPointerEventNone","labelRegions","isLabelVisible","intersectType","getLabelRegion","renderRadarGrid","renderTickLine","vector2","minorGirdLine","tickXSize","tickYSize","legendRect","firstLabelX","lastLabelX","trimText","getAvailableSpaceToTrim","legendX1","legendX2","labelX1","labelX2","tickOptions","gridOptions","PolarSeries","visiblePoint","columnDrawTypeRender","itemCurrentXPos","pointStartAngle","pointEndAngle","dStartX","dStartY","dEndX","dEndY","arcValue","isRangeColumn","isStacking","sumofYValues","getSeriesPosition","series_1","series_2","doPolarRadarAnimation","animateElement","chartcenterX","chartcenterY","circleRotate","RadarSeries","ScrollElements","scrollGroup","backRectGroup","thumbGroup","backRect","thumb","renderCircle","arrows","thumbGrip","scrollbarThemeStyle","backRectEle","leftArrowEle","rightArrowEle","setArrowDirection","thumbRectX","thumbRectWidth","leftDirection","circleRadius","rightDirection","slider","shadowGroup","leftCircleEle","rightCircleEle","sidePadding","grip","gripCircle","gripWidth","ScrollBar","scrollRange","scrollElements","mouseMoveListener","scrollMouseMove","mouseUpListener","scrollMouseUp","browserName","getMouseXY","scrollMouseDown","scrollMouseWheel","isResizeLeft","isResizeRight","previousXY","previousWidth","previousRectX","startZoomPosition","startZoomFactor","startRange","scrollStarted","getArgs","isThumbDrag","moveLength","isWithIn","positionThumb","setZoomFactorPosition","thumbMove","calculateLazyRange","isCustomHeight","mouseXY","thumbX","currentWidth","isRequire","currentScrollWidth","setCursor","currentRange","resizeThumb","cumulative","calculateMouseWheelRange","previousAxisRange","isScrollEnd","scrollThumbX","scrollThumbWidth","previousRange","getStartEnd","previousStart","currentStart","currentEnd","isCurrentStartEnd","isScrollExist","getDefaults","removeScrollSvg","isHorizontalAxis","enablePadding","tempSeries","createScrollSvg","scrollStyle","circleHover","arrowHover","backRectBorder","getScrollbarThemeColor","isLeftHover","isRightHover","isAxis","isCurrentAxis","getLazyDefaults","minThumbX","getLogRange","currentRanges","previousZoomFactor","previousZoomPosition","Toolkit","iconRectOverFill","iconRectSelectionFill","zoomCompleteEvtCollection","selectionColor","iconRect","createPanButton","panElements","pan","createZoomButton","rectColor","zoomElements","selectedID","createZoomInButton","polygonDirection","zoomInElements","elementOpacity","zoomIn","createZoomOutButton","zoomOutElements","zoomOut","createResetButton","icon2","icon3","hoveredID","zoomingEventArgs","toolkitElements","zoomedAxisCollection","currentZoomFactor","currentZoomPosition","previousVisibleRange","currentVisibleRange","axisName","axisRange","setDefferedZoom","touchMoveList","touchStartList","zoomInOutCalculation","applySelection","wheelEvent","toolkit","zoomingRect","zoomAxes","zoomkitOpacity","isIOS","renderZooming","calculateZoomAxesRange","doPan","drawZoomingRectangle","endLocation","getRectLocation","currentScale","performDefferedZoom","redrawOnZooming","translateX","enableDeferredZooming","setTransform","performZoomRedraw","doZoom","zoomRect","zoomedAxisCollections","onZoomingEventArg","isRedraw","isMouseUp","zoomCompleteCollection","performMouseWheelZooming","onZoomingEventArgs","performPinchZooming","elementOffset","touchDown","touch0StartX","touch0StartY","touch0EndX","touch0EndY","touch1StartX","touch1StartY","touch1EndX","touch1EndY","pinchRect","translateXValue","translateYValue","calculatePinchZoomFactor","selectionMin","selectionMax","rangeMin","rangeMax","axisTrans","currentZF","currentZP","actualMin","actualDelta","isPinch","xAxisLoc","yAxisLoc","showZoomingToolkit","toolboxItems","shadowElement","currentItem","outerElement","zoomDiv","zoomheight","zoomToolkitMove","zoomToolkitLeave","showToolkit","chartMouseWheel","mouseDownHandler","mouseCancelHandler","addTouchPointer","touchList","pointerId","ParetoSeries","paretoSeries","secondaryAxis","columnSeriesModule","MultiLevelLabel","xAxisPrevHeight","xAxisMultiLabelHeight","yAxisPrevHeight","yAxisMultiLabelHeight","multiLevelLabelRectXRegion","xLabelCollection","multiLevelLabelsHeight","axisValue","multiLevel","categoryLabel","maximumTextWidth","pathRect","isOutside","triggerMultiLabelRender","renderXAxisLabelBorder","createBorderElement","multiElements","categoryIndex","padding1","padding2","groupLabel","categoryType","borderType","renderYAxisLabelBorder","clipId","axisId","borderIndex","MultiLevelLabelClick","multilevelclickArgs","textId","multiLevelID","exportChart","Crosshair","removeCrosshair","crosshairsvg","horizontalCross","verticalCross","axisTooltipGroup","crossGroup","cross","drawCrosshairLine","renderAxisTooltip","renderCrosshairLine","crosshairline","crosshairtooltip","axisGroup","textElem","getAxisText","labelValue","dateTimeCategoryModule","getIndexedAxisLabel","crosshairInterval","BubbleSeries","segmentRadius","percentChange","maximumSize","bubblePoint","AccumulationDataLabel","rightSideRenderingPoints","leftSideRenderingPoints","getDataLabelPosition","getLabelDistance","marginValue","labelAngle","enableSmartLabels","getSmartLabel","circular","findPreviousPoint","isOverlapping","isConnectorLineOverlapping","setOuterSmartLabel","labelRadius_1","areaRect","textTrimming","setPointVisibileFalse","setPointVisibleTrue","textsize","getOverlappedAngle","setSmartLabelForSegments","textRegion","overlapHeight","getEdgeOfLabel","previousstart","previousend","isLineRectangleIntersect","line1","line2","isLinesIntersect","point11","point12","lies","getAngle","getConnectorPath","connector","getConnectorStartPoint","getPerpendicularDistance","getPolyLinePath","controlPoints","getBezierPoint","p0","labelshape","getTemplateSize","correctLabelRegion","modifiedPoints","extendedLabelsCalculation","modifiedPoints_1","finalizeDatalabels","location_3","setTemplateStyle","getSaturatedColor","doTemplateAnimation","saturatedColor","getLabelBackground","halfSidePoints","skipPoints","arrangeLeftSidePoints","isIncreaseAngle","arrangeRightSidePoints","startFresh","angleChanged","checkAngle","rightSideRenderPoints","lastPoint","changeLabelAngle","isOverlapWithNext","decreaseAngle","increaseAngle","leftSideRenderPoints","isOverlapWithPrevious","isRightSide","newAngle","variableR","halfsidePoints","angleDiff","prevAngleDiff","secondPrevPoint","thirdAngleDiff","PivotChart","headerColl","columnGroupObject","measuresNames","accumulationType","loadChart","chartSettings","enableMultipleAxis","measureList","accEmptyPoint","currentMeasure","prevLevel","firstLevelUName","totColIndex","getColumnTotalIndex","rKeys","integratedLevel","memberCell","lastHierarchy","lastDimension","drillDimension","groupHierarchyWithLevels","rKeys_1","rKey","firstRowCell","currrentLevel","cKeys","prevMemberCell","cKeys_1","cKey","measureAllow","colHeaders","columnSeries","showToolbar","getGridWidthAsNumber","getChartHeight","persistSettings","columnDelimiter","columnHeader","chartType","fieldWithCaption","currentColumn","frameChartSeries","columnKeys_1","multiAxisKey","fieldCaptionName","seriesEvent","pivotChart","bindChart","frameObjectWithKeys","framedSeries","currentXAxis","configXAxis","currentTooltipSettings","configTooltipSettings","currentLegendSettings","configLegendSettings","currentZoomSettings","configZoomSettings","axesWithRows","frameAxesWithRows","chartElement","enableScrollOnMultiAxis","getChartAutoHeight","isMultiAxisChange","highLightMode","accumulationSelectionMode","hideWaitingPopup","fieldListSpinnerElement","showMultiLevelLabels","creatMenu","accumulationMenu","drillThroughModule","percentChart","percentAggregateTypes","valCnt","divider","measureAggregatedName","resFormat","currentYAxis","multipleAxisMode","lengthofFormat","colIndexColl","rKeys_2","cKeys_2","fieldCount","lastEnd","frameMultiLevelLabels","startKeys","parentHeaders","startKeys_1","startKey","sKey","gRows","startKeys_2","lKeys_1","levelKey","lKey","getZoomFactor","calculatedWidth","templateParser","columnText","rowText","getTooltipTemplate","rowFields","getHeaderField","columnFields","templateVariable","valueField","tooltipTemplateFn","isChartLoaded","alignIcon","multilabelAxisName","updateView","isServerWaitingPopup","drillMenuOpen","drillMenuSelect","levelCol","offSetHeight","offSetVal","labelInfo","fieldAvail","memIndex","drillArgs","enginePopulatingEventArgs","drillItem","renderPivotGrid","PivotChartConnectorStyle","PivotChartDataLabel","PivotSeries","PivotChartSeriesBorder","PivotChartSeriesAnimation","PivotChartSeriesSegment","PivotChartSeriesMarkerSettings","PivotChartSeriesErrorSettings","PivotChartSeriesTrendline","PivotChartSeriesEmptyPointSettings","PivotChartSeriesCornerRadius","PivotChartAxisFont","PivotChartAxisCrosshairTooltip","PivotChartAxisMajorTickLines","PivotChartAxisMajorGridLines","PivotChartAxisMinorTickLines","PivotChartAxisMinorGridLines","PivotChartAxisAxisLine","PivotChartAxisStripLineSettings","PivotChartAxisLabelBorder","PivotChartSettingsChartArea","PivotChartSettingsCrosshairSettings","PivotChartSettingsLegendSettings","PivotChartSettingsIndexes","PivotChartSettingsMargin","PivotAxis","PivotTooltipSettings","PivotPieChartCenter","PivotZoomSettings","ChartSettings","GroupingBarSettings","CellEditSettings","ConditionalSettings","HyperlinkSettings","PivotView","_this_1","lastFilterInfo","lastCalcFieldInfo","shiftLockedPos","savedSelectedCellsPos","cellSelectionPos","isPopupClicked","isMouseDown","remoteData","isCellBoxMultiSelection","isStaticRefresh","posCount","isModified","isInitialRendering","pivotRefresh","mergePersistPivotData","PivotView_1","allowConditionalFormatting","allowNumberFormatting","isTouchMode","renderToolTip","noValue","rowAxisPrompt","columnAxisPrompt","valueAxisPrompt","filterAxisPrompt","CalculatedField","createCalculatedField","invalidFormula","dropText","dropTextMobile","dropAction","allFields","addToRow","addToColumn","addToValue","addToFilter","emptyData","fieldExist","confirmText","noMatches","sortAscending","sortDescending","sortNone","clearCalculatedField","editCalculatedField","formulaField","by","multipleItems","enterValue","chooseDate","Before","BeforeOrEqualTo","After","AfterOrEqualTo","labelTextContent","dateTextContent","valueTextContent","Equals","DoesNotEquals","BeginWith","DoesNotBeginWith","DoesNotEndsWith","DoesNotContains","GreaterThanOrEqualTo","LessThanOrEqualTo","NotBetween","And","DistinctCount","Product","Avg","Median","SampleVar","PopulationVar","RunningTotals","SampleStDev","PopulationStDev","PercentageOfRowTotal","PercentageOfParentTotal","PercentageOfParentColumnTotal","PercentageOfParentRowTotal","DifferenceFrom","PercentageOfDifferenceFrom","PercentageOfGrandTotal","PercentageOfColumnTotal","MoreOption","NotEquals","AllValues","conditionalFormating","formatLabel","valueFieldSettings","summarizeValuesBy","sourceName","sourceCaption","example","editorDataLimitMsg","manageRecords","Years","Quarters","Months","Days","Hours","Minutes","Seconds","new","rename","deleteReport","subTotals","grandTotals","reportName","png","jpeg","doNotShowSubTotals","showSubTotalsRowsOnly","showSubTotalsColumnsOnly","doNotShowGrandTotals","showGrandTotalsRowsOnly","showGrandTotalsColumnsOnly","toolbarFormatting","reportMsg","reportList","removeConfirm","emptyReport","bar","pie","funnel","doughnut","pyramid","stackingcolumn","stackingarea","stackingbar","stepline","steparea","splinearea","spline","stackingcolumn100","stackingbar100","stackingarea100","bubble","pareto","radar","scatter","polar","of","emptyFormat","emptyInput","newReportConfirm","emptyReportName","qtr","null","groupOutOfRange","fieldDropErrorAction","symbolPosition","true","false","decimalPlaces","expressionField","numberFormatString","selectedHierarchy","olapDropText","Percent","Measure","Dimension","Standard","blank","fieldTooltip","fieldTitle","QuarterYear","drillError","defaultReport","customFormatString","invalidFormat","unGroup","invalidSelection","groupFieldCaption","groupTitle","startAt","endAt","selectGroup","multipleAxes","showLegend","exit","chartTypeSettings","ChartType","yes","numberFormatMenu","conditionalFormatingMenu","removeCalculatedField","replaceConfirmBefore","replaceConfirmAfter","invalidJSON","invalidCSV","isDragging","onBeforeTooltipOpen","showTipPointer","mouseTrail","beforeRender","setToolTip","conmenuItems","groupItems","customItems","aggItems","expItems","aggregateItems","aggregateGroup","getFieldByID","exportGroupItems","columnRender","enableMultiAxis","updatePageSettings","colValues","rowValues","heightAsNumber","getWidthAsNumber","loadData","renderEmptyGrid","withCredentials","onReadyStateChange","DONE","currentAction","currentMembers","dateMembers","updateFilterEvents","pivotCount","ColumnCount","RowStartPosition","ColumnStartPosition","RowFirstLevel","ColumnFirstLevel","HeaderText","HeaderDelimiter","SortOrder","ColumnIndex","initEngine","isRequireUpdate","endDialog","aggField","cField","rawDataArgs","editArgs","enableDrillThrough","internalProperties","aggregatedItem","calculatedItem","fetchRawDataArgs","jsonObject","cellTemplateFn","spinnerTemplate","loadArgs","updateClass","generateData","onContentReady","loadPersistData","pivotData","blazdataSource","showConditionalFormattingDialog","updateGroupingReport","savedDataSourceSettings","clonedDataSet","treeViewModule","fieldTable","renderLayout","dataSet","createChartMenu","clonedDataSource","virtualscrollModule","showRowHeaderHyperlink","showHyperlink","showColumnHeaderHyperlink","showValueCellHyperlink","showSummaryCellHyperlink","applyHyperlinkSettings","isRefreshGrid","isSorted","isAggChange","isCalcChange","interopArguments","enginePopulatedEventMethod","datasourceSettings","chartExport","printChart","chartDrillInfo","clonedDrillMembers_1","drillMembers","drilledItem_1","drillArgs_1","onOlapDrill","clonedDrillMembers","isAttributeHierarchy","clonedMembers","drillSet","memberItem","itemPos","clonedMembers_1","drilledMember","drillItemCollection","member_1","clonedMembers_2","isEmptyGrid","mCnt","verOffset","gridCells_1","isGrandTotal","isTotal","valueSortInfo","hasField","getRowText","getColText","colText","mouseRclickHandler","parentAt","lastSelectedElement","CellClicked","updateTotColWidth","framePivotColumns","gridcolumns","gridcolumns_1","setGridColumns","gridcolumns_2","calcWidth","gridcolumns_3","setCommonColumnsWidth","onWindowResize","rowDeselect","getSelectedCellsPos","setSavedSelectedCells","applyRowSelection","rCount","colStart","colEnd","rowStart","isCtrl","queryStringArray","activeColumns","actColPos","rowSelectedList","isTargetSelected","pivot_3","this$_1","pivot_4","pivVal","pivotFL","pivotFields","valContent","headContent","blazPivot","pvalLen","blazPivotValues","valLen","aggregateObj","bindTriggerEvents","format_1","checkCondition","isHex","colourNameToHex","createStyleSheet","conditionalSettings","ilen","jlen","isApplyHyperLink","conditionalValue1","conditionalValue2","newGroupSettings","updateGroupType","dateGroup","fieldSettings","clonedAxisFields","isDateGroupUpdated","drillObj","settingsObj","isExists","removeButtonFocus","numberFormattingModule","showNumberFormattingDialog","propIsEnumerable","toObject","test1","test2","test3","shouldUseNative","Captcha","bgColor","createImage","captcha","newImage","getRandomInt","getCharacter","newWord","getWord","MAX_SIGNED_31_BIT_INT","commonjsGlobal","globalThis","createEventEmitter","changedBits","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","emitter","getChildContext","componentWillReceiveProps","PropTypes","_Component2","onUpdate","observedBits","_proto2","isarray","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","modifier","asterisk","escapeGroup","encodeURIComponentPretty","encodeURI","opts","pretty","attachKeys","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","globalTimeOut","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_FABRICSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINLABEL","CLS_SPINTEMPLATE","spinTemplate","spinCSSClass","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","calculateRadius","labelEle","createLabel","replaceContent","innerContainer","random_generator","timeOut","create_material_element","mat_calculate_attributes","createMaterialSpinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","svgBoot","viewBoxValue","trans","defaultRadius","bootCircle","create_bootstrap_element","rad","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","generateSeries","formSeries","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","startTime","strokeSize","getStrokeSize","mat_animation","updatePath","getDashOffset","createCircle","easeAnimation","transformOrigin","timestamp","timecount","innerConainer","trgClass","defineCircle","endArc","defineArc","showHideSpinner","spinnerWrap","inner","svgEle","globalObject","globalVariables","timeOutVar","startMatAnimate","boot_animate","animateBootstrap","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","auth","username","Authorization","baseURL","responseURL","responseType","ontimeout","timeoutErrorMessage","xsrfValue","onDownloadProgress","cancelToken","enhanceError","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARCENTER","CLS_TBARPOS","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDEDPOPOPEN","resizeContext","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","isNOU","trgtEle","ctrlTem","clearProperty","popObj","tbarAlign","attrb","enableCollision","tbarItemsCol","isExtendedOpen","popupPriCount","wireKeyboardEvent","keyModule","docKeyDown","unwireKeyboardEvent","popCheck","overflowMode","destroyScroll","docEvent","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","destroyItems","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","popupCheck","popFrstEle","activeEle","activeEleRemove","tbarScrollChk","eleContains","sib","isPopupElement","clsList","popupNav","popupClickHandler","clickedArgs","getElementOffsetY","renderControl","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","renderSubComponent","tbarItemAlign","showAlwaysInPopup","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","getScrollCntEle","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerNav","createPopupIcon","innerNavDom","checkPriority","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupEle_1","popupInit","eleStyles","tbarPopupHandler","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","inEle","pre","eleOffset","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","eleSplice","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","itemElement","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","templateRender","templateProp","isComponent","itemType","buttonRendering","dom","iconPos","textStr","btnTxt","tempDom","itemClick","showTextOn","sTxt","multirowele","tEle","changedProb","popupPriCheck","booleanCheck","itemCol","hideItem","initIndex","eleIndex","innerItems_2","nextEle","setFlag","removeFlag","initELe","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","autoFillRLselection","right_bottom","bottom_left","top_right","top_left","top_bottom","top_right_bottom","top_bottom_left","top_right_left","right_bottom_left","all_border","initializeSelection","fDataUpdate","getRowObj","hidePopUp","getSelectedMovableRow","getSelectedFrozenRightRow","getCurrentBatchRecordChanges","currentRecords","enableSimpleMultiRowSelection","addRowsToSelection","selectedMovableRow","selectedFrozenRightRow","frozenData","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","addMovableArgs","isRemoved","removed","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectMovableRow","isHeaderCheckBoxClicked","updateRowProps","targetObj","frRow","mObj","previousMovRow","getCollectionFromIndexes","isSingleSel","prevRow","selectRowFn","rowIndexes_1","checkboxColumn","rowIndexes_2","isUnSelected","enableToggle","addRemoveClassesForRow","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","ensureCheckboxFieldSelection","pKey_1","updatePersistDelete","checkedTarget","setCheckAllState","mouseButton","mRow_1","fRightRow_1","foreignKeyData_1","target_1","isRowClicked","checkSelectAllClicked","getCheckAllStatus","updatePersistSelectedData","movableRow","rowDeselectCallBack","frozenRightRow","isSingleDeSel","rowDeselectObj","rowidxex","getSelectedMovableCell","isCellType","selectedCell","isCellSelected","prevCIdxs","previousRowCell","prevECIdxs","getCellIndex","cellSelectingArgs","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","stIndex","edIndex","getLastColIndex","addAttribute","cellSelectedArgs","cellSelectArgs","addRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","bdrElement","showHideBorders","gBRect","isCellDrag","startAFCell","endAFCell","selectLikeExcel","startDIndex","isAutoFillSel","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","createBorders","positionBorders","isFirstRow","isFirstCell","setBorders","bdrStr","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","frcBdrElement","fhBdrElement","mhBdrElement","frhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","updateValue","createBeforeAutoFill","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","startCellIndex","trIdx","mUPTarget","lastCell","updateStartCellsIndex","autofill","rindex","isFrozenCol","isFrozenRow","enableDrag","postion","clearSelAfterRefresh","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","getCheckAllBox","initPerisistSelection","checkBoxSelectionChanged","isLeftRightFrozen","gobj","chkField","refreshPersistSelection","setRowSelection","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","checkSelectAll","stateStr","triggerChkChangeEvent","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","updateSelectedRowIndex","selectedVal","checkedLen","chkSelect","headerSelectionHandler","headerAction","thLen","getKeyColIndex","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","applySpaceSelection","innerColumn","getstackedColumns","applyUpDown","selectColumn","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","columnDeselect","getSelectedColumnCells","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteHandler","resizeEndFn","isInfinitecroll","Information","Verbose","Warning","ExpectedError","UnexpectedError","Fatal","Widescreen","Cortana","Letter","Mobile","FitToWidth","ActualSize","Default","Transparent","Navigate","NavigateAndRaiseEvent","RaiseEvent","AlwaysVisible","HiddenInViewMode","Read","ReadWrite","HighContrast1","HighContrast2","HighContrastBlack","HighContrastWhite","ReplaceAll","Replace","Weeks","CalendarWeeks","CalendarMonths","CalendarYears","NoConnection","OnBehalfOf","Anonymous","Import","DirectQuery","NoAdjustments","Interactive","ResultOnly","Summarized","Underlying","Off","Presentation","Ascending","Descending","et","it","ot","Enabled","Disabled","GroupingOrMeasure","datasourceConnectionConfig","mashupDocument","tableSchemaList","containerRef","createRef","prevEventHandlerMapString","_embed","invokeGetEmbedCallback","embedEntity","setEventHandlers","componentDidUpdate","embedOrUpdateAccessToken","phasedEmbedding","getEmbeddedComponent","ReCAPTCHA","_React$Component","handleExpired","handleErrored","handleChange","handleRecaptchaRef","getCaptchaFunction","grecaptcha","enterprise","getResponse","_widgetId","getWidgetId","_executeRequested","executeAsync","executionResolve","executionReject","resetter","forceReset","onExpired","onErrored","explicitRender","sitekey","stoken","hl","badge","isolated","oneOf","SCRIPT_MAP","idCount","callbackName","getOptions","recaptchaOptions","makeAsyncScriptLoader","getScriptURL","dynamicOptions","useRecaptchaNet","globalName","wrappedComponentName","AsyncScriptLoader","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","obsKey","observers","scriptURL","scriptId","errored","callObserverFuncAndRemoveObserver","observersMap","removeOnUnmount","allScripts","ForwardedComponent","RecaptchaWrapper","OTHERMONTH","OTHERDECADE","YEAR","MONTH","DECADE","DISABLED","OVERLAY","WEEKNUMBER","SELECTED","FOCUSEDDATE","OTHERMONTHROW","TODAY","LINK","CELL","ZOOMIN","DAYHEADERLONG","dayMilliSeconds","Calendar","calendarMode","islamicModule","tempValues","copyValues","checkDateValue","checkValue","copyDate","validateDate","minMaxUpdate","setClass","formResetHandler","setTimeZone","newCssClass","oldCssClass","isDayLightSaving","secondOffset","firstOffset","timeZoneDiff","currentDate","changedArgs","generateTodayVal","todayButtonClick","showTodayButton","isTodayClicked","todayButtonEvent","checkPresentDate","keyActionHandle","triggerChange","checkView","createContent","previousDate","previousDateTime","minMaxDate","localDate","renderMonths","isCustomDate","renderDays","tempDays","validateValues","renderYears","islamicRenderYears","renderDecades","islamicRenderDecade","renderTemplate","classNm","islamicRenderTemplate","getIdValue","storeView","tableBodyElement","switchView","rangeValidation","isDateSelected","tempDate","navigateTo","addDate","dates","tempDates","removeDate","setTodayDate","todayDate","setValueUpdate","selectDate","changeEvent","CalendarBase","calendarEleCopy","firstDayOfWeek","todayDisabled","calendarElement","getDefaultKeyConfig","defaultKeyConfigs","controlUp","controlDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","spacebar","altRightArrow","altLeftArrow","setOverlayIndex","popupWrapper","headerElement","iconContainer","previousIcon","nextIcon","headerTitleElement","adjustLongHeaderSize","createContentHeader","createContentBody","createContentFooter","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","toCapitalize","tableHeadElement","weekNumber","shortNames","shiftArray","updateFooter","todayElement","l10","today","keyConfig","blazorRef","serverModuleName","navigateTitle","dateWireEvents","getViewNumber","resetCalendar","renderDayCellArgs","checkDeviceMode","multiSelection","selectedDate","focusedDate","Action","Events","SelectDate","FocusedDate","TargetClassList","depthValue","levelRestrict","keyboardNavigate","contentClick","addMonths","addYears","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigatePrevious","navigateNextHandler","navigateNext","navigateHandler","triggerNavigate","minDate","maxDate","tdEles","numCells","islamicRenderDays","isTodayDate","currentMonth","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayCell","dayLink","isOutOfRange","renderDayCellEvent","argsDate","otherMnthBool","disabledCls","getDateVal","getFromatStringValue","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","localMonth","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","lastDate","timeOffset","findLastDay","trEle","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","islamicDate","getIslamicDate","skipIndex","tempValueString","minFormatOption","minString","maxFormatOption","maxString","dayFormatOptions","monthFormatOptions","setActiveDescendant","focusedEle","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","stringVal","islamicPrevious","islamicNext","ld","gregorianFormat","islamicFormat","mainVal","tzOffset","tzOffsetDiff","setTime","getMaxDays","setDateDecade","setDateYear","checkPrevious","navigatedEvent","navigatedArgs","findNextTD","rangeValue","tmpDate","inValue","toUTCString","POPUPWRAPPER","INPUTFOCUS","ERROR","ACTIVE","OVERFLOW","DATEICON","NONEDIT","previousElementValue","isDateIconClicked","isAltKeyPressed","isBlazorServer","invalidValueString","checkPreviousValue","isIconClicked","isDynamicValueChanged","datepickerOptions","updateInput","setAllowEdit","allowEdit","checkInvalidValue","updateHtmlAttributeToWrapper","inputValueCopy","ariaAttrs","l10nLocale","INPUTWRAPPER","isCalendar","disabledDates","strictMode","minMaxUpdates","tempFormat","dateTimeFormat","updateInputValue","checkStringValue","returnDate","formatDateTime","valueDate","valueString","basicISOString","bindInputEvent","preventEventBubbling","dateIconHandler","inputFocusHandler","inputBlurHandler","inputChangeHandler","resetFormHandler","keyboardModules","inputKeyActionHandle","unBindEvents","restoreValue","clearedArgs","popupUpdate","updateHtmlAttributeToElement","calendarKeyActionHandle","focusArguments","openOnFocus","strictModeUpdate","changeTrigger","blurArguments","calendarKeyboardModules","documentHandler","clickedView","defaultAction","targetdate","dateOptions","createCalendar","modelHeader","preventArgs","setAriaAttributes","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","selectCalendar","prevent_1","outOfRange","mobilePopupWrapper","openAnimation","prevent_2","closeEventCallback","prevent","inputElementCopy","ensureInputAttribute","ngTag","checkHtmlAttributes","checkFormat","skeletonString","dynamic","valueCopy","previousValCopy","inputVal","dateIdString","isDisabledDate","selectedHandler","resizeWestWidth","elementClass","RESIZE_HANDLER","FOCUSED_HANDLER","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","dialogBorderResize","originalWidth","originalX","originalY","originalMouseX","originalMouseY","setLeft","setBorderResizeElm","calculateValues","getDOMElement","resizers","borderResizers","getEventType","onMouseUp","coordinates","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","left_1","removeResize","DialogUtility","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CLOSE_ICON","DLG_TARGET","SCROLL_DISABLED","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","initRender","enableResize","setResize","getMinHeight","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","checkPositionData","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","minimumHeight","headerHeight","footerHeight","onResizeStart","onResizing","onResizeComplete","isBlazorServerRender","resizeHandles","directionValue","resizeBegin","resizeComplete","boundary","resizeHandler","createResize","wireWindowResizeEvent","unWireWindowResizeEvent","keyDown","ftrTemplateContent","buttonIndex_1","isTagName","isContentEdit","primaryButtonEle","setCSSClass","setzIndex","calculatezIndex","setTargetContent","setHeader","renderCloseIcon","setButton","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","refElement","resetResizeIcon","openEventArgs","unBindEvent","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","dialogConHeight","resizeIcon","zIndexValue","dragObj","dragEventArgs","buttonContent","footerBtn","buttonClickHandler","innerContentElement","sanitizeHelper","templateProps","templateValue","dialogItem","headerEle","closeIconBtnObj","closeIconTitle","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","msGetRegionContent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","windowResizeHandler","classArray","isFullScreen","fullScreen","closeAnimation","getButtons","dialogObject","formOptions","formButtonModel","buttonPropModel","buttonProps","alertDialogObj","alertButtonModel","setAlertButtonModel","alertOptions","confirmDialogObj","okButtonModel","cancelButtonModel","setConfirmButtonModel","confirmOptions","TOPLABEL","regularExpressions","createMask","mask","splitMask","splitInnerMask","pushIntoRegExpCollec","chkSpace","customRegExpCollec","hiddenMask","promptChar","escapeMaskValue","promptMask","customCharacters","escapeNumber","applyMask","setElementValue","setMaskValue","maskInputKeyDownHandler","maskInputKeyPressHandler","maskInputKeyUpHandler","maskInputHandler","maskInputFocusHandler","maskInputBlurHandler","maskInputPasteHandler","maskInputCutHandler","maskInputDropHandler","maskInputMouseDownHandler","maskInputMouseUpHandler","redoCollec","triggerMaskChangeEvent","initInputValue","unstrippedValue","strippedValue","maskValues","checkMask","maskValue","_callPasteHandler","regExpCollec","isClicked","modelValue","toAllowForward","toAllowBackward","maskedValue","triggerFocus","backSelectionStart","blurEventArgs","isFocus","sIndex_1","eIndex_1","oldValue_1","maskKeyPress","validateValue","preValue_1","sIndex_2","undoCollec","removeMaskInputValues","addedValues","preEleVal","prevValue","collec","mobileRemoveFunction","autoFillMaskInputValues","oldEventVal","isDeleted","initStartIndex","initEndIndex","curMask","deleteEndIndex","multipleDel","preValue","prompt_1","isIosInvalid","changeEventArgs","removeMaskError","startIndex_1","isSpace","isAndroid","preventUnsupportedValues","mobileSwipeCheck","mobileValidation","eventOldVal","allowText","prevSupport","isEqualVal","customValArr","applySupportedValues","addMaskErrorClass","changeToLowerUpperCase","sIdx","ctrl","chkSupport","curVal","caseCount","newVal","MASKINPUT_FOCUS","wrapperAttr","maskOptions","focusEventArgs","angularTagName","createWrapper","resetMaskedTextBox","setMaskPlaceholder","getValidClassList","maskClassName","maskStyle","setVal","dynamicPlaceholder","strippedValue_1","strippedVal","getMaskedValue","StrictMode","Profiler","Suspense","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","isReactComponent","isPureReactComponent","__self","__source","$$typeof","_owner","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","only","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","lazy","_payload","_init","useDebugValue","useImperativeHandle","useReducer","ba","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","xlinkHref","ra","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","_render","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","$a","ab","bb","cb","eb","db","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","ob","namespaceURI","MSApp","execUnsafeLocalFunction","pb","qb","lineClamp","rb","sb","tb","ub","menuitem","br","hr","keygen","meta","track","wbr","vb","wb","is","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","$b","memoizedState","dehydrated","ac","cc","bc","ec","fc","gc","hc","ic","jc","kc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","LN2","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","md","nd","od","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","eventPhase","isTrusted","ud","vd","Ad","screenX","screenY","getModifierState","zd","fromElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Up","Down","Del","Win","Apps","MozPrintableKey","Nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Meta","Shift","Pd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","Vd","targetTouches","Xd","Zd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","$d","be","documentMode","de","fe","ge","he","datetime","week","me","pe","qe","ve","we","xe","ye","ze","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","compareDocumentPosition","Ne","HTMLIFrameElement","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","anchorNode","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","Nb","ef","ff","parentWindow","gf","hf","je","ke","jf","kf","lf","mf","nf","__html","pf","qf","rf","sf","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","pending","effects","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","Mg","Ng","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","hh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","hi","ji","ki","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","qi","pendingContext","Bi","Di","Ei","retryLane","ti","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","setStart","addRange","setEnd","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","unstable_observedBits","unmount","Vj","vk","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","supportsFiber","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","skipTempReset","rootRecord","rval","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Axios","mergeConfig","axios","instanceConfig","CancelToken","promises","isAxiosError","InterceptorManager","dispatchRequest","interceptors","getUri","use","eject","transformData","throwIfCancellationRequested","throwIfRequested","fns","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","env","argv","versions","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","normalizedName","lineNumber","columnNumber","expires","secure","cookie","toGMTString","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","protocol","port","requestURL","executor","resolvePromise","isNativeReflectConstruct","possibleConstructorReturn","arrayWithoutHoles","iterableToArray","nonIterableSpread","arrayWithHoles","iterableToArrayLimit","nonIterableRest","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","jsxs","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","getShim","ReactPropTypes","any","arrayOf","instanceOf","objectOf","oneOfType","checkPropTypes","allowArrayLike","normalCompletion","didErr","_e2","singleMatcher","multiMatcher","decodeComponents","encodedURI","replaceMap","customDecodeURIComponent","separatorIndex","superPropBase","receiver","Parent","Class","n2","reactJsxRuntime_production_min","jsxRuntime","hideNavBtnsOnMobile","_ref$onClick","navBtnStyle","_ref$className","navBtnContainerClassName","_ref$navBtnAs","navBtnAs","containerClassNames","buttonSpecialProps","aria-hidden","_ref4$className","_ref4$tabAs","tabAs","Tag","tabClassNames","isMasked","addScrolling","createElem","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","scrollObj","skipEle","ENTER","ESCAPE","FOCUSED","HEADER","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","HOME","END","CARET","ITEM","HIDE","ICONS","POPUP","TEMPLATE_PROPERTY","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","showSubMenuOn","isMenu","ejInst","clonedElement","refEle","menuTemplateId","getWrapper","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","removeChildElement","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","delegateClickHandler","downarrow","uparrow","leftarrow","rightarrow","closeMenu","actionName","actionNeeded","removeLIStateByClass","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","fliIdx","fli","getLIByClass","cli","navIdxLen","keyType","isCMenu","ulIndex","isIterated","isMenuVisible","item_1","sli","popups","getPopups","liElem_1","getMenuItemModel","observedCloseArgs","trgtliId","closedLi","trgtLi","popupId","unWireKeyboardEvent","toggleAnimation","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","isMenusClosed","sli_1","cliIdx","item_2","removeStateWrapper","getFields","lItem","elemId","uList","hdata","hli","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","itemFromBlazorTemplate","liStyle","liIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","triggerOpen","spanElem","tempTitle","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","collide","menuType","observedOpenArgs","checkScrollOffset","offWidth","iconCssProps","offsetEle","offsetRight","px","toggleVisiblity","newTop","xCollision","itemsObj_1","listBaseOptions","liTrgt","hdrWrapper","isDifferentElem","cliWrapper","isInstLI","cliWrapperId","setLISelected","showSubMenu","culIdx","classname","getItemIndex","setItems","newItems","skipHdr","updateItemsByNavIdx","updateItem","ul_3","getChangedItemIndex","insertAfter","popStr","uls","targetSelctor","isMenuOpen","pUlHeight","nIndex","isCallBack","skipItem","showHideItems","ishide","iitems","insertItems","isAfter","itemId","parentId","ButtonComponent","immediateRender","PivotViewComponent","CONTROL","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","HOVER","LOAD","PROCESS","TEXTWRAP","INPUT","INPUTGROUP","TREEINPUT","EDITING","INTERACTION","DROPPABLE","DRAGGING","SIBLING","DROPIN","DROPNEXT","DROPOUT","NODROP","FULLROW","EXPANDED","NODECOLLAPSED","DISABLE","CHECK","INDETERMINATE","CHECKBOXWRAP","CHECKBOXFRAME","RIPPLE","FOCUS","IMAGE","ITEM_ANIMATION_ACTIVE","treeAriaAttr","treeRole","FieldsSettings","ActionSettings","NodeAnimationSettings","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","isBlazorExpandedNodes","hasTemplate","mouseDownStatus","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","ctrlDown","ctrlUp","ctrlA","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","listBaseOption","beforeNodeCreate","fullRowNavigable","updateListProp","aniObj","treeList","isInitalExpand","setTouchClass","selectedNodes","expandedNodes","blazorInitialRender","setDataBinding","setDisabledMode","setExpandOnType","wireEditingEvents","setDragAndDrop","setFullRow","fullRowSelect","nodeTemplateFn","nodeTemplate","iconModel","rippleIconFn","setMultiSelect","firstUl","isOffline","isNumberTypeId","setRootData","finalize","rootData","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","adaptorName","getSortedData","loadOnDemand","renderChildNodes","finalizeNode","updateTemplateForBlazor","parentCheckData","updateCheckedStateFromDS","autoCheck","updateParentCheckState","resultId","childData","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","checkNodes","changeState","preElement","childCheckedElement","nodeId","checkedParent","checkedChild","subChildItems","checkboxEle","touchClass","addCheck","frame","frameMouseHandler","createFullRow","addActionClass","textEle","dataId","renderNodeTemplate","actionValue","iNodes","sNodes","selectNode","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","ensureIndeterminate","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","parentUL","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","doCheckBoxAction","doCheck","updateFieldChecked","liEle","setValidCheckedNode","dynamicCheckState","updateField","validateCheckNode","currLi","getNodeData","updateIndeterminate","updateChildIndeterminate","indeterminateData","subId","childElementCheck","innerChild","isPrevent","nodeCheckAction","getCheckEvent","ariaState","removeCheck","ensureStateChange","updateServerProperties","updateIdAttr","hasPid","doExpandAction","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","expandCallback","eUid","doSelectionAction","setCheckedNodes","updateInstance","sUids","sNode","selectGivenNodes","preventContextMenu","rippleIcons","setFocusElement","checkWrapper","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","expandNode","start_1","end_1","liEle_1","activeElement_1","animateHeight","expandedNode","addExpand","expandArgs","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","toRemove","parentLi","expandChild","eicon","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","getChildGroup","objlen","cIcons","curLi","multiSelect","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","startNode","liList","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI_1","expandOnType","expandHandler","expandCollapseAction","nodeExpandAction","liEles","icon_1","inpEle","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","parentPos","isVisibleInViewport","txtWrap","isTowards","nextNode","getNextNode","getPrevNode","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","childId_1","toBeOpened","focusNextNode","rootNode","getRootNode","getEndNode","fNode","prevNode","endNode","preNode","hoveredNode","fromDS","getText","pNode","nodeFields","tempArr","reRenderNodes","editingHandler","oldInpEle","updateOldText","getEditEvent","wireInputEvents","editData","editFields","inputFocusOut","newText","txtEle","crudOperation","appendNewText","updateText","getChildNodeObject","toBind","initializeDrag","destroyDrag","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","DRAGITEM","nLen","cNode","listItem","getDragEvent","draggedNode","dragCancelAction","dragAction","removeVirtualEle","dropRoot","isHelperElement","preventTargetExpand","dragParent","draggedParentNode","dropObj","dropWrap","dropLi","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","isBlazorDrop","dragInstance","appendNode","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","dropTar","clonedNode","droppedNode","droppedNodeData","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","newId","currId","doGivenAction","addGivenNodes","updateMapper","refNode","navigateUrl","updated","childObj","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","slelen","enodes","nodelen","cnodes","getMapperProp","clientUpdateInitial","touchEditObj","isDoubleTapped","wireClickEvent","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","secondTap","firstTap","setIndeterminate","setChildCheckState","isRefreshChild","childValue","updateChildPosition","currID","dynamicState","newNode","matchedArr","nodesID","deleteSuccess","editSucess","addSuccess","updatePreviousText","onLoaded","ensureVisible","getDisabledNodes","moveNodes","sourceNodes","refreshNode","updatedChildValue","newNodeData","parentData","newliEle","newTextEle","newIcon","fullEle","removeNodes","updateNode","CLS_HEADER","CLS_CONTENT","CLS_NEST","CLS_ACTIVE","CLS_FOCUS","CLS_ICON","CLS_ICON_TAB","CLS_ICON_CLOSE","CLS_CLOSE_SHOW","CLS_TEXT","CLS_WRAP","CLS_TEXT_WRAP","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POP","CLS_TB_POPUP","CLS_PROGRESS","CLS_VTAB","CLS_VLEFT","CLS_VRIGHT","CLS_HBOTTOM","CLS_FILL","TabActionSettings","TabAnimationSettings","TabItem","isIconAlone","draggableItems","refreshActElePosition","tbObj","expTemplateContent","cntEle","loadOn","setActiveBorder","isNested","isPopup","isSwipeed","itemIndexArray","templateEle","updatePopAnimationConfig","btnCls","CLS_ICONS","tabId","setOrientation","headerPlacement","renderHeader","tbItems","bdrLine","CLS_INDICATOR","scrCnt","scrCntClass","setContentHeight","tbItem","tabID","setRTL","serverItemsChanged","itemCollection","content_1","triggerAnimation","headerReady","hdrEle","getTabHeader","setActiveContent","getTrgContent","extIndex","hdrPlace","tabItems","addVerticalClass","hdrItems","tabItems_1","parseObject","updateOrientationAttribute","setCloseButton","hdrItem","reRenderItems","txtWrapEle","tbCount","tItems","spliceArray","isReplace","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","tItem","spliceItemIndex","removeActiveClass","tabHeader","checkPopupOverflow","tbPop","tbrItems","isOverflow","popupHandler","ripEle","actEleId","prevEle","trg","prevCtnAnimation","triggerPrevAnimation","oldCnt","animateObj","newCnt","prevActiveEle","idNo","openEff","clsEff","trgParent","trgIndex","getEleIndex","eleStr","templateCompile","compileElement","templateFUN","callType","eleVal","findEle","tbPos","place","activeTab","changeToolbarOrientation","curActItem","serverChangeOrientation","headerPos","contentPos","trgHdrEle","bar_1","tbWidth","skipDataBind","trg_1","eleTrg","refreshItemVisibility","eventArg","prevItem","previousIndex","selectedContent","selectingID","isSwiped","refreshActiveBorder","tbPopObj","bindDraggable","hoverHandler","spaceKeyDown","tabKeyModule","removeTab","clstHead","actEle","nxtSib","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","closeButtonTitle","evalOnPropertyChangeItems","changedProp","cntItem","isHiddenEle","addTab","enableTab","itemDragStart","dropItem","dragItem","dragArgs","draggedItem","droppedItem","scrollRightNavEle","scrollLeftNavEle","hscrollBar","scrollContentWidth","droppedIndex","itemDragStop","draggingItems","tabitemDragArgs","dragsIndex","popupContainer","lastEle","dragStopArgs","tabItemDropArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","cntTrg","selectingItem","selectingIndex","selectingContent","tabItemId","refreshActiveTab","detachContent","mainContents","txtString","conte","crElem","tConts","wrapAtt","wraper","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","isBlazorTooltip","contentTargetValue","contentEvent","contentAnimation","formatPosition","isServerRender","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tooltipEle","tipClass","elePos","getTooltipPosition","openPopupHandler","closePopupHandler","offsetPos","calculateTooltipOffset","collisionFlipFit","needTemplateReposition","findTarget","tooltipEventArgs","tooltipEleWidth","tooltipEleHeight","arrowEle","tipWidth","tipHeight","tipAdjust","tipHeightAdjust","tipWidthAdjust","updateTipPosition","selEle","removeList","adjustArrow","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","tooltipContent","enableHtmlParse","isBlazorTemplate","isSticky","tipClose","onStickyClose","addDescribedBy","describedby","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","closeDelay","targetList_1","ctrlId","restoreElement","showTimer","hideTimer","beforeRenderArgs","beforeRenderCallback","isBlazorTooltipRendered","TOOLTIP_WRAP","beforeRenderBlazor","afterRenderBlazor","PopupAnimation","contentUpdated","ctrlObj","beforeOpenCallback","openAnimation_1","openDelay","wireMouseEvents","affectedPos","checkCollideTarget","collidedPosition","arrowleft","windowCollision","isTooltipOpen","tooltipHide","blazorHide","popupHide","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","touchEnd","triggerList_1","getTriggerList","wireFocusEvents","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","SPINICON","SPINUP","SPINDOWN","INCREMENT","DECREMENT","INTREGEXP","NUMERIC_FOCUS","wrapperAttributes","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","formEle","incrementTitle","decrementTitle","isValidState","cultureInfo","initCultureInfo","initCultureFunc","inputEleValue","validateMinMax","validateStep","updatePlaceholder","hiddenInput","showSpinButton","spinDown","spinUp","wireSpinBtnEvents","spinBtnCreation","setElementWidth","changeValue","trimValue","decimals","roundNumber","elementPrevValue","setNumber","stepValue","getNumericValidClassList","pro","numericClassName","numericStyle","isInteract","performAction","checkErrorClass","keyupEvent","setSpinButton","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","beforeUpdate","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","cursorPosChanged","parsedValue","updatedValue","correctRounding","floatExp","floatValue","floatStep","stepCount","roundValue","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","validateState","serverDecimalSeparator","EXPREGEXP","currentChar","fractionRule","validateDecimalOnType","mouseWheel","rawEvent","formatValue_1","focusEvent","getElementData","mouseUpClick","touchEvent","floatLabelTypeUpdate","decrement","updateSpinButton","updateClearButton","propValue","FRAME","LABEL","RIPPLECHECK","RIPPLEINDETERMINATE","isMouseClick","updateVueArrayModel","initialCheckedValue","setDisabled","initWrapper","labelMouseDownHandler","labelMouseUpHandler","rippleElem","labelWrap","DialogRenderer","fieldListWrappper","renderAdaptiveLayout","renderFieldListDialog","unWireDialogEvent","wireDialogEvent","renderStaticLayout","layoutHeader","createCalculatedButton","createDeferUpdateButtons","renderDeferUpdateButtons","deferUpdateCheckBox","onCheckChange","deferUpdateApplyButton","applyButtonClick","onDeferUpdateClick","deferUpdateCancelButton","cancelButtonClick","onCloseFieldList","layoutFooter","checkBoxLayout","buttonLayout","deferUpdateButton1","deferUpdateButton2","clonedFieldList","pivotFieldList","pivotChange","showFieldListDialog","showCalculatedField","removeFieldListIcon","adaptiveElement","createAxisTable","tabSelect","createAddButton","fieldWrapper","calculatedButton","calculateField","footerContainer","fieldListButton","axisWrapper","axisContent","axisPrompt","activeindex","onShowFieldList","updateAdaptiveCalculatedField","TreeViewRenderer","fieldListSort","renderTreeDialog","treeHeader","treeViewElement","fieldHeaderWrappper","updateSortElements","centerDiv","axisHeader","renderTreeView","headerWrapper","spanElement","unWireFieldListEvent","wireFieldListEvent","nodeStateChange","nodeDragStart","nodeDragStop","drawNode","updateTreeNode","updateNodeIcon","nodeCollapsed","allowDrag","updateOlapTreeNode","liTextElement","liIconElement","fieldDialog","closeTreeDialog","onFieldAdd","textChange","addNode","disabledList","axis_1","axis_2","isNodeDropped","selectedNode","isDropped","getButton","droppableElement","sourcePosition","droppableButton","li_1","selectedNode_1","fieldInfo_1","updateCheckState","updateReportSettings","updateNodeStateChange","removeFieldArgs","dropArgs","refreshTreeView","getUpdatedData","currentFieldSet","currentFieldSet_1","currentFieldSet_2","currentFieldSet_3","calcMember","AxisTableRenderer","axisTable","leftAxisPanel","rightAxisPanel","renderAxisTable","fieldLabels","axisTitleWrapper","getIconupdate","localePrompt","updateDropIndicator","PivotButton","menuOption","PivotFieldList","axisField","AxisFieldRenderer","renderPivotButton","valuePos","showValuesButton","groupingBarSettings","isMeasureFieldsAvail","buttonWrapper","dropIndicatorElement","dropLastIndicatorElement","dragWrapper","createButtonDragIcon","createButtonText","createSortOption","createFilterOption","getTypeStatus","calcElement","pivotButton","createDraggable","valueData","valueFiedDropDownList","ddlDiv","availColindex","firstValueRow","columnFieldDropDownList","delimiter_1","aggregation","filterMem","updateButtontext","fieldListItem","validateDropdown","createSummaryType","createMenuOption","openCalculatedFieldDialog","buttonCall","createDragClone","onDragStart","onDragging","onDragStop","sortCLass","filterCLass","filterCount","memLen","updateOlapButtonText","allNodes","filteredItems","loop","actualFilterItems","updatedFilterItems_1","fieldListPopup","isButtonDropped","droppableTarget","pivotObj","mouseEventArgs","$this_1","parsedData","bindDialogEvents","updateDialogButtonEvents","updateFilterState","updateCustomFilter","removeDataSourceSettings","inputElementString","filterEventArgs","refreshPivotButtonState","tabElement","removeButton","updateNodeStates","checkedStateAll","searchItemObj","checkedNodes_1","checkedNodes_2","isNodeUnChecked","cNodeLength","sNodeLength","thisObj","pivotButtons_2","selectedButton","pivotButtons_3","createPivotButtons","axisTableModule","isRequiredUpdate","staticFieldList","dropFilterPrompt","dropColPrompt","dropRowPrompt","dropValPrompt","addPrompt","adaptiveFieldHeader","centerHeader","deferLayoutUpdate","captionData","frameCustomProperties","staticPivotGridModule","fieldListRender","pivotDataSet","this$_2","getFieldCaption","isTreeViewRefresh","isEngineRefresh","isOlapDataRefreshed","updateOlapDataSource","pivotId","PivotFieldListComponent","ATTRIBUTES","RadioButton","RadioButton_1","radioGrp","getRadioGroup","angularValue","radioWrap","getLabel","getSelectedValue","updateHtmlAttribute","labelRippleHandler","ripple","formControlName","textLabel","rippleLabel","CLS_ACRDN_ROOT","CLS_ROOT","CLS_ITEMFOCUS","CLS_ITEMHIDE","CLS_HEADERCTN","CLS_CTENT","CLS_TOOGLEICN","CLS_EXPANDICN","CLS_CTNHIDE","CLS_SLCT","CLS_SLCTED","CLS_TOGANIMATE","CLS_EXPANDSTATE","CLS_CONTAINER","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","isDestroy","restoreContent","initializeheaderTemplate","initializeItemTemplate","initExpand","expandedIndices","expandMode","initItemExpand","acrdItem_1","itemTemplateFn","getheaderTemplate","getItemTemplate","innerEles","toggleIconGenerate","tglIcon","hdrColIcon","expandItem","innerDataSourceItem","renderInnerItem","acrdnCtnItem","acrdnItem","acrdnHdr","acrdnCtn","getIndexByItem","afterContentRender","contentRendering","ariaAttrUpdate","acrdActive","cntclkCheck","inlineEleAcrdn","nestContCheck","acrdcontainer","acrdnchild","acrdAniEle","acrdAniEle_1","sameContentCheck","sameHeader","acrdnCtn_1","expandState","eleMoveFocus","clstItem","headerEleGenerate","ctnEle","angularnativeCondiCheck","fetchElement","hdrIcnEle","hdrIcon","elementRef","nativeElement","parseddata","temString","itemcnt","ctn","trgtItemEle","isExpanded","expandedItemsPush","expandProgress","expandAnimation","icn","lastActiveItemId","getItemElements","expandedItemsPop","collapseProgress","collapseAnimation","trgtItEl","trgtHeight","itemHeight","remain","itemAttribUpdate","innerItemEle","expandedItemRefresh","enableItem","eleHeader","itemExpand","expandedItem","ctnElePos","childEle","acrdn","activeContent","COUNT","MEDIAN","SUM","DISTINCTCOUNT","PRODUCT","STDEV","STDEVP","VAR","VARP","CALC","isFormula","existingReport","newFields","isFieldExist","formulaText","fieldText","formatText","currentFieldName","confirmPopUp","displayMenu","createConfirmDialog","fieldClickHandler","renderMobileLayout","accordionClickHandler","optionElement","accordionCreated","allElement","accordion","clearFormula","treeNode","edited","customString","memberTypeDrop","hierarchyDrop","formatDrop","curMenu","removeCalcField","calcfields","validSummaryTypes","getValidSummaryType","duplicateTypes","createMenu","selectContextMenu","applyFormula","currentObj","calculatedField","getCalculatedFieldInfo","calcInfo","currentFormula","updateFormatSettings","addFormula","newFormat","isFormatExist","showError","calcFields","getFieldListData","typeVal","fieldDropped","textCovered","cursorPos","textAfterText","textBeforeText","calcButtons","cancelClick","renderDialogElements","olapFieldTreeDiv","olapCalcDiv","accordDiv","buttonDiv","addBtn","cancelBtn","formulaTitle","inputDiv","wrapDiv","headerWrapperDiv","dropDiv","okBtn","memberTypeTitle","hierarchyTitle","formatTitle","customFormatDiv","customFormatObj","createOlapDropElements","mData","memberTypeData_1","formatStringData_1","memberTypeObj","hierarchyListObj","formatStringObj","customerFormatObj","nodeDragging","drawTreeNode","nodeCollapsing","fieldListData_1","childNodes_1","editElement","editWrapper","liTextElement_1","spaceElement","createTypeContainer","menuTypes","getAccordionData","cancelBtnClick","formatInputObj","expanding","accordionExpand","addBtnClick","radiobutton","nodes_1","renderDialogLayout","keyboardEvents","replaceFormula","TimePickerBase","POPUPDIMENSION","DAY","NAVIGATION","LISTCLASS","EDITABLE","createdEl","timeFormat","timeCollections","TimePicker","blazorTimeCollections","disableItemCollection","timeOptions","angularTag","openPopupEventArgs","checkTimeFormat","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","checkInValue","isNavigate","isTextSelected","valueWithMinutes","updatedCssClassesValue","isNullOrEmpty","getCldrDateTimeFormat","cldrFormat","isInvalid","valueExp","valueExpression","setCurrentDate","getBlazorCultureFormat","getCultureTimeObject","ariaAttribute","enableElement","propertyList","generateList","listWrapper","addSelection","getPopupHeight","setPopupWidth","listTag","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","checkErrorState","disableTimeIcon","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","setScrollTo","findScrollTop","initialTime","toDateString","scrollTime","toLocaleTimeString","cldrTimeFormat","cldrDateFormat","getCultureDateObject","formatVal","dateToNumeric","getExactDateTime","compareFormatChange","updatePlaceHolder","updateBlazorTimeCollections","curPos","cursorDetails","focusSelection","isSeparator","objToString","previousState","documentClickHandler","disposeServerPopup","mobileTimePopupWrap","checkValueChange","valueProcess","maxVal","dateVal","strictOperation","clearHandler","inputEvent","timeValue","raiseClearedEvent","getTextFormat","strArray","newval","findNextElement","textVal","timeVal","selectNextItem","validLiElement","findNextInBlazor","index_3","index_4","backward","elementIndex","getHoverItem","setActiveClass","formatStr","timeParse","getProperty","popupAlignment","timePopupElement","formatValues","HOUR","MINUTE","SECOND","MILLISECOND","DATETIMEPOPUPWRAPPER","ICONANIMATION","scrollInvoked","dateTimeOptions","blurHandler","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isDisable","timeIcon","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","isDatePopupOpen","listCreation","endTime","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","timeModal","timeKeyActionHandle","unWireTimeListEvents","setDimension","setTimeHover","removeTimeHover","setInputValue","nextElement","getFullDateTime","combineDateTime","minutes","seconds","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","hours","tempStartValue","tempMin","tempEndValue","tempMax","getUTCFullYear","dateTimeCloseEventCallback","getTimeActiveElement","status_1","millisecond","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue"],"mappings":"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vBG,EArJqB,GA2J5B6C,EAAqB,CACrB,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,WACP,IAAO,MACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,SACP,IAAO,uBACP,IAAO,uBACP,IAAO,KACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,iBACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,iBACP,IAAO,IACP,IAAO,OACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,IACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,gBACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,OACP,IAAO,eACP,IAAO,MACP,IAAO,IACP,IAAO,UACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,UACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,SACP,IAAO,IACP,IAAO,OACP,IAAO,2BACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,SACP,IAAO,KACP,IAAO,OACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,qBACP,IAAO,KACP,IAAO,SACP,IAAO,MACP,IAAO,qBACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,eACP,IAAO,OACP,IAAO,IACP,IAAO,UACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,SACP,IAAO,gBACP,IAAO,UACP,IAAO,sBACP,IAAO,qBACP,IAAO,SACP,IAAO,KACP,IAAO,SACP,IAAO,qBACP,IAAO,SACP,IAAO,QC3UX,SAAWjD,GAEP,IAAIkD,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvJ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAA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,OACN,KAAM,OACN,SAAY,OACZ,gBAAmB,OACnB,YAAe,OACf,mBAAsB,OACtB,MAAS,OACT,SAAY,QAMhB/xB,EAASgyB,cAAgB,CACrB,KAAM,WACN,KAAM,aACN,KAAM,cACN,SAAY,WACZ,WAAc,aACd,SAAY,eAMhBhyB,EAASiyB,gBAAkB,CACvB,KAAM,WACN,KAAM,aACN,KAAM,WACN,SAAY,WACZ,WAAc,aACd,SAAY,YAEhBjyB,EAASkwB,WAAa,CAClB,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,UAEdlwB,EAASkyB,YAAc,CAQnBC,MAAO,SAAUlsE,EAAQiS,EAAUk6D,EAAYC,GAK3C,OAJIA,IACApsE,EAAS+5C,EAASiwB,iBAAiBhqE,GACnCiS,EAAW8nC,EAASiwB,iBAAiB/3D,IAErCk6D,EACOpyB,EAASjiD,YAAYkI,KAAY+5C,EAASjiD,YAAYma,GAE1DjS,IAAWiS,GAQtBo6D,SAAU,SAAUrsE,EAAQiS,EAAUk6D,EAAYC,GAK9C,OAJIA,IACApsE,EAAS+5C,EAASiwB,iBAAiBhqE,GACnCiS,EAAW8nC,EAASiwB,iBAAiB/3D,KAEjC8nC,EAASkyB,YAAYC,MAAMlsE,EAAQiS,EAAUk6D,IAQzDG,SAAU,SAAUtsE,EAAQiS,EAAUk6D,GAClC,OAAIA,EACOpyB,EAASjiD,YAAYkI,GAAU+5C,EAASjiD,YAAYma,IAE3Dx0B,YAAkBuiB,KAClBA,OAAS3jB,GAEN2jB,EAASiS,IAQpBs6D,YAAa,SAAUvsE,EAAQiS,EAAUk6D,GACrC,OAAIA,EACOpyB,EAASjiD,YAAYkI,GAAU+5C,EAASjiD,YAAYma,GAExDjS,EAASiS,GAQpBu6D,gBAAiB,SAAUxsE,EAAQiS,EAAUk6D,GACzC,OAAIA,EACOpyB,EAASjiD,YAAYkI,IAAW+5C,EAASjiD,YAAYma,GAEzDjS,GAAUiS,GAQrBw6D,mBAAoB,SAAUzsE,EAAQiS,EAAUk6D,GAC5C,OAAIA,EACOpyB,EAASjiD,YAAYkI,IAAW+5C,EAASjiD,YAAYma,GAEzDjS,GAAUiS,GAQrBW,SAAU,SAAU5S,EAAQiS,EAAUk6D,EAAYC,GAK9C,OAJIA,IACApsE,EAAS+5C,EAASiwB,iBAAiBhqE,GACnCiS,EAAW8nC,EAASiwB,iBAAiB/3D,IAErCk6D,GACQ1uF,YAAkBuiB,KAAYviB,YAAkBw0B,KACsB,IAA1E8nC,EAASjiD,YAAYkI,GAAQxhB,QAAQu7D,EAASjiD,YAAYma,KAE1Dx0B,YAAkBuiB,KAAYviB,YAAkBw0B,KACX,IAAzCjS,EAAOxS,WAAWhP,QAAQyzB,IAOlCy6D,QAAS,SAAU1sE,GACf,OAAkB,OAAXA,GAOX2sE,OAAQ,SAAU3sE,GACd,OAAkB,OAAXA,GAQX4sE,WAAY,SAAU5sE,EAAQiS,EAAUk6D,EAAYC,GAKhD,OAJIA,IACApsE,EAAS+5C,EAASiwB,iBAAiBhqE,GACnCiS,EAAW8nC,EAASiwB,iBAAiB/3D,IAErCk6D,EACOnsE,GAAUiS,GAAY8nC,EAAS6tB,WAAW7tB,EAASjiD,YAAYkI,GAAS+5C,EAASjiD,YAAYma,IAEjGjS,GAAUiS,GAAY8nC,EAAS6tB,WAAW5nE,EAAQiS,IAQ7D46D,SAAU,SAAU7sE,EAAQiS,EAAUk6D,EAAYC,GAK9C,OAJIA,IACApsE,EAAS+5C,EAASiwB,iBAAiBhqE,GACnCiS,EAAW8nC,EAASiwB,iBAAiB/3D,IAErCk6D,EACOnsE,GAAUiS,GAAY8nC,EAAS4tB,SAAS5tB,EAASjiD,YAAYkI,GAAS+5C,EAASjiD,YAAYma,IAE/FjS,GAAUiS,GAAY8nC,EAAS4tB,SAAS3nE,EAAQiS,IAO3D66D,eAAgB,SAAUrqB,GACtB,IAAI2nB,EAASrwB,EAAS8xB,gBAAgBppB,GACtC,OAAI2nB,EACSrwB,EAASkyB,YAAY7B,GAG3BrwB,EAASh5D,WAAW,gDAO/BgsF,gBAAiB,SAAUtqB,GACvB,IAAIymB,EAAKnvB,EAASkyB,YAAYxpB,GAC9B,OAAIymB,GAGGnvB,EAASkyB,YAAYa,eAAerqB,KAMnD1I,EAAS1+C,MAAQ,CAKb2xE,UAAW,SAAUC,GAUjB,MATwB,kBAAbA,EACPA,EAAW7xE,KAAKC,MAAM4xE,EAAUlzB,EAAS1+C,MAAM6xE,aAE1CD,aAAoBxuF,MACzBs7D,EAAS1+C,MAAM8xE,sBAAsBF,GAEZ,kBAAbA,GAAsC,OAAbA,GACrClzB,EAAS1+C,MAAM+xE,qBAAqBH,GAEjCA,GAOXE,sBAAuB,SAAUhxB,GAC7B,IAAK,IAAIl/D,EAAI,EAAGA,EAAIk/D,EAAMj/D,OAAQD,IACN,kBAAbk/D,EAAMl/D,IAAgC,OAAbk/D,EAAMl/D,GACtC88D,EAAS1+C,MAAM+xE,qBAAqBjxB,EAAMl/D,IAEjB,kBAAbk/D,EAAMl/D,IAAoB,6BAA6BgO,KAAKkxD,EAAMl/D,IAI9Ek/D,EAAMl/D,GAAK88D,EAAS1+C,MAAM2xE,UAAU7wB,EAAMl/D,IAH1Ck/D,EAAMl/D,GAAK88D,EAAS1+C,MAAM6xE,YAAY,GAAI/wB,EAAMl/D,KAY5DmwF,qBAAsB,SAAU/qB,GAG5B,IAFA,IAAIxlE,EAEKwB,EAAK,EAAGgvF,EADN9uF,OAAOjB,KAAK+kE,GACShkE,EAAKgvF,EAAOnwF,OAAQmB,IAAM,CACtD,IAAImG,EAAO6oF,EAAOhvF,GACd07D,EAAS6tB,WAAWpjF,EAAM,QAIT,kBADrB3H,EAAQwlE,EAAK79D,IAEL3H,aAAiB4B,MACjBs7D,EAAS1+C,MAAM8xE,sBAAsBtwF,GAEhCA,GACLk9D,EAAS1+C,MAAM+xE,qBAAqBvwF,GAIxCwlE,EAAK79D,GAAQu1D,EAAS1+C,MAAM6xE,YAAY7qB,EAAK79D,GAAO3H,MAUhEqwF,YAAa,SAAUrzB,EAAOh9D,GAC1B,GAAqB,kBAAVA,EAAoB,CAC3B,IAAIywF,EAAK,6CAA6ChoE,KAAKzoB,GACvD0wF,EAASxzB,EAASyxB,iBAAmBzxB,EAASwxB,qBAAuB,KACzE,GAAI+B,EACA,OAAOvzB,EAASyzB,UAAUC,WAAW,IAAIjkF,KAAKgN,SAAS82E,EAAG,GAAI,KAAMC,GAAQ,GAE3E,GAAI,sEAAsEtiF,KAAKpO,GAAQ,CACxF,IAAI6wF,EAAQ7wF,EAAM2B,QAAQ,MAAQ,GAAK3B,EAAM2B,QAAQ,MAAQ,EACzDy1B,EAAMp3B,EAAMG,MAAM,WACtB,GAAI0wF,EACA7wF,EAAQk9D,EAASyzB,UACZC,WAAW,IAAIjkF,KAAKgN,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,IAAM,EAAGzd,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,KAAM8lC,EAASwxB,sBAAsB,OAEhM,CACD,IAAIoC,EAAY,IAAInkF,KAAKgN,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,IAAM,EAAGzd,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,KACxJ25D,EAAMp3E,SAASyd,EAAI,GAAI,IACvB45D,EAAOr3E,SAASyd,EAAI,GAAI,IAC5B,GAAIxnB,MAAMmhF,IAAQnhF,MAAMohF,GACpB,OAAOF,EAEP9wF,EAAM2B,QAAQ,MAAQ,EACtBmvF,EAAUx2E,SAASw2E,EAAU//E,WAAaggF,EAAKD,EAAUr2E,aAAeu2E,GAGxEF,EAAUx2E,SAASw2E,EAAU//E,WAAaggF,EAAKD,EAAUr2E,aAAeu2E,GAE5EhxF,EAAQk9D,EAASyzB,UACZC,WAAWE,EAAW5zB,EAASwxB,sBAAsB,GAEzB,MAAjCxxB,EAASwxB,uBACT1uF,EAAQk9D,EAASyzB,UAAUM,cAAcjxF,KAIrD,OAAOA,GAMXse,OAAQ,SAAUotE,GACd,MAA2B,kBAAhBA,EAAS,GACTA,EAEJxuB,EAAS1+C,MAAM2xE,UAAUzE,IAMpCwF,OAAQ,SAAUlxF,GAGd,OAAgB,MAFJ,wDACMyoB,KAAKzoB,IAS3BmxF,SAAU,SAAUnxF,EAAOitC,GACvB,OAAIiwB,EAAS4wB,cAAc9tF,GAChBk9D,EAAS1+C,MAAM4yE,aAAapxF,EAAOitC,GAE1CjtC,aAAiB4B,MACVs7D,EAAS1+C,MAAM6yE,cAAcrxF,GAEpCA,aAAiB2M,KACVuwD,EAAS1+C,MAAM4yE,aAAa,CAAE3oF,IAAKzI,GAASitC,GAAWxkC,IAE3DzI,GAQXoxF,aAAc,SAAU3oF,EAAKwkC,GAGzB,IAFA,IAAIjtC,EAEKwB,EAAK,EAAG8vF,EADN5vF,OAAOjB,KAAKgI,GACSjH,EAAK8vF,EAAOjxF,OAAQmB,IAAM,CACtD,IAAImG,EAAO2pF,EAAO9vF,GAElB,IADAxB,EAAQyI,EAAId,cACWgF,KAAvB,CAGA,IAAItB,EAAIrL,EAC6B,MAAjCk9D,EAASwxB,qBACTjmF,EAAId,GAAQu1D,EAASyzB,UAAUC,WAAWvlF,EAAG,MAAMkmF,UAGnDlmF,EAAI,IAAIsB,MAAMtB,EAAoC,KAAhC6xD,EAASwxB,sBAC3BjmF,EAAId,GAAQu1D,EAASyzB,UAAUC,WAAW1zB,EAASyzB,UAAUM,cAAc5lF,GAAI,MAAMkmF,WAG7F,OAAO9oF,GAQX4oF,cAAe,SAAU5oF,GACrB,IAAK,IAAIrI,EAAI,EAAGA,EAAIqI,EAAIpI,OAAQD,IACxB88D,EAAS4wB,cAAcrlF,EAAIrI,IAC3BqI,EAAIrI,GAAK88D,EAAS1+C,MAAM4yE,aAAa3oF,EAAIrI,IAEpCqI,EAAIrI,aAAcuM,OACvBlE,EAAIrI,GAAK88D,EAAS1+C,MAAM4yE,aAAa,CAAEhlF,KAAM3D,EAAIrI,KAAMgM,MAG/D,OAAO3D,GASX+oF,iBAAkB,SAAUhxF,EAAKR,GAC7B,GAAY,UAARQ,GAAmBR,EAAO,CAC1B,GAAqB,kBAAVA,EAAoB,CAC3B,IAAIywF,EAAK,6CAA6ChoE,KAAKzoB,GAC3D,GAAIywF,EACAzwF,EAAQk9D,EAASyzB,UAAUC,WAAW,IAAIjkF,KAAKgN,SAAS82E,EAAG,GAAI,KAAM,MAAM,QAE1E,GAAI,sEAAsEriF,KAAKpO,GAAQ,CACxF,IAAIo3B,EAAMp3B,EAAMG,MAAM,UACtBH,EAAQk9D,EAASyzB,UACZC,WAAW,IAAIjkF,KAAKgN,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,IAAM,EAAGzd,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,IAAKzd,SAASyd,EAAI,GAAI,KAAM,MAAM,IAGhL,GAAIp3B,aAAiB2M,KAEjB,OADA3M,EAAQk9D,EAASyzB,UAAUM,cAAcjxF,GACH,OAAlCk9D,EAASwxB,qBACFxxB,EAASyzB,UAAUC,WAAW1zB,EAASyzB,UAAUM,cAAcjxF,GAAQ,MAAMuxF,UAGpFvxF,EAAQk9D,EAASyzB,UAAUC,WAAW5wF,EAAUA,EAAMmR,oBAAsB,GAAM,EAC5E+rD,EAASwxB,sBAAuB,IACzB6C,SAIzB,OAAOvxF,IAMfk9D,EAASyzB,UAAY,CACjBM,cAAe,SAAUzsB,GACrB,OAAO,IAAI73D,MAAM63D,EAAqC,IAA5BA,EAAMrzD,sBAEpCsgF,MAAO,SAAUjtB,GACb,OAAO,IAAI73D,MAAM63D,EAAqC,IAA5BA,EAAMrzD,sBAEpCy/E,WAAY,SAAUpsB,EAAOh1C,EAAQkiE,GACjC,GAAe,OAAXliE,EACA,OAAOg1C,EAEX,IAAImtB,EAAOD,EAAMx0B,EAASyzB,UAAUc,MAAMjtB,GAASA,EACnD,OAAO,IAAI73D,MAAMglF,EAAiB,KAATniE,IAE7BoiE,YAAa,SAAUptB,GACnB,IAAIqtB,EAASrtB,EACT70D,GAAYkiF,EAAO1gF,oBACnB2gF,EAAmBniF,GAAY,EAAI,IAAM,IACzCoiF,EAAc,SAAUr3E,GACxB,IAAIs3E,EAAOjnF,KAAKC,MAAMD,KAAKgH,IAAI2I,IAC/B,OAAQs3E,EAAO,GAAK,IAAM,IAAMA,GAQpC,OANUH,EAAOlnF,cAAgB,IAAMonF,EAAYF,EAAOpnF,WAAa,GAAK,IAAMsnF,EAAYF,EAAOtnF,WACjG,IAAMwnF,EAAYF,EAAO9gF,YACzB,IAAMghF,EAAYF,EAAOp3E,cACzB,IAAMs3E,EAAYF,EAAOrrB,cACzBsrB,EAAmBC,EAAYpiF,EAAW,IAC1C,IAAMoiF,EAAYpiF,EAAW,MAIlCutD,EA34DmB,I,gBCR9Bp1B,EAAO8X,QAAUC,EAAQ,M,6BCAV,SAASoyC,EAAuBC,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,EALT,mC,6BCAe,SAASE,IAYtB,OAXAA,EAAW1wF,OAAO0rE,OAAS1rE,OAAO0rE,OAAOztE,OAAS,SAAU8gC,GAC1D,IAAK,IAAIrgC,EAAI,EAAGA,EAAIgC,UAAU/B,OAAQD,IAAK,CACzC,IAAIgB,EAASgB,UAAUhC,GACvB,IAAK,IAAII,KAAOY,EACVM,OAAOhC,UAAUsD,eAAe8B,KAAK1D,EAAQZ,KAC/CigC,EAAOjgC,GAAOY,EAAOZ,IAI3B,OAAOigC,IAEO7gC,MAAM4D,KAAMpB,WAZ9B,mC,6BCAe,SAASiwF,EAAgB7zD,EAAU8zD,GAChD,KAAM9zD,aAAoB8zD,GACxB,MAAM,IAAIC,UAAU,qCAFxB,mC,6BCAA,SAASC,EAAkB/xD,EAAQ14B,GACjC,IAAK,IAAI3H,EAAI,EAAGA,EAAI2H,EAAM1H,OAAQD,IAAK,CACrC,IAAIq/B,EAAa13B,EAAM3H,GACvBq/B,EAAWnU,WAAamU,EAAWnU,aAAc,EACjDmU,EAAWlU,cAAe,EACtB,UAAWkU,IAAYA,EAAWgzD,UAAW,GACjD/wF,OAAOwpB,eAAeuV,EAAQhB,EAAWj/B,IAAKi/B,IAInC,SAASizD,EAAaJ,EAAaK,EAAYC,GAG5D,OAFID,GAAYH,EAAkBF,EAAY5yF,UAAWizF,GACrDC,GAAaJ,EAAkBF,EAAaM,GACzCN,EAbT,mC,6BCAe,SAASO,EAAgB1lB,GAItC,OAHA0lB,EAAkBnxF,OAAOqgC,eAAiBrgC,OAAOsnE,eAAiB,SAAyBmE,GACzF,OAAOA,EAAEnrC,WAAatgC,OAAOsnE,eAAemE,KAEvBA,GCJV,SAAS2lB,EAAQ/yF,GAa9B,OATE+yF,EADoB,oBAAXC,QAAoD,kBAApBA,OAAOC,SACtC,SAAiBjzF,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXgzF,QAAyBhzF,EAAIgB,cAAgBgyF,QAAUhzF,IAAQgzF,OAAOrzF,UAAY,gBAAkBK,IAI9GA,G,8CCXF,SAASkzF,EAA2Bf,EAAMptF,GACvD,OAAIA,GAA2B,WAAlBguF,EAAQhuF,IAAsC,oBAATA,EAI3C,OAAAouF,EAAA,GAAsBhB,GAHpBptF,ECDI,SAASquF,EAAaC,GACnC,IAAIC,ECJS,WACb,GAAuB,qBAAZ7wD,UAA4BA,QAAQ8wD,UAAW,OAAO,EACjE,GAAI9wD,QAAQ8wD,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA7mF,KAAKjN,UAAUiR,SAAS7L,KAAK09B,QAAQ8wD,UAAU3mF,KAAM,IAAI,iBAClD,EACP,MAAOtI,GACP,OAAO,GDLuB,GAChC,OAAO,WACL,IACIlC,EADAsxF,EAAQ,EAAeL,GAG3B,GAAIC,EAA2B,CAC7B,IAAIK,EAAY,EAAelwF,MAAMzC,YACrCoB,EAASqgC,QAAQ8wD,UAAUG,EAAOrxF,UAAWsxF,QAE7CvxF,EAASsxF,EAAM7zF,MAAM4D,KAAMpB,WAG7B,OAAO,EAA0BoB,KAAMrB,M,6BEhB5B,SAASwxF,EAAgBxmB,EAAGl4D,GAMzC,OALA0+E,EAAkBjyF,OAAOqgC,gBAAkB,SAAyBorC,EAAGl4D,GAErE,OADAk4D,EAAEnrC,UAAY/sB,EACPk4D,IAGcA,EAAGl4D,GCLb,SAAS2+E,EAAUC,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIvB,UAAU,sDAGtBsB,EAASn0F,UAAYgC,OAAOwgC,OAAO4xD,GAAcA,EAAWp0F,UAAW,CACrEqB,YAAa,CACXf,MAAO6zF,EACPpB,UAAU,EACVlnE,cAAc,KAGduoE,GAAY,EAAeD,EAAUC,G,gNCJrCC,E,oJACJrnD,QAAUsnD,YAAczwF,EAAKwE,O,sCAE7BmrB,OAAA,W,OACS+gE,IAAAtvF,cAACuvF,IAAD,CAAQxnD,QAASlpC,KAAKkpC,QAASpY,SAAU9wB,KAAKuE,MAAMusB,Y,GAJnC2/D,IAAMnqD,WCATmqD,IAAMnqD,UCPxB,IAAMqqD,EAAoB,SAACC,EAAIC,G,MACtB,oBAAPD,EAAoBA,EAAGC,GAAmBD,GAEtCE,EAAsB,SAACF,EAAIC,G,MACjB,kBAAPD,EACVG,YAAeH,EAAI,KAAM,KAAMC,GAC/BD,GCEAI,EAAiB,SAAA9wE,G,OAAKA,GACtB+wE,EAAeR,IAAfQ,WACoB,qBAAfA,IACTA,EAAaD,GAOf,IAAME,EAAaD,GACjB,SAAAE,EAOEC,G,IALEC,EAMCF,EANDE,SACAC,EAKCH,EALDG,SACAC,EAICJ,EAJDK,QACG3+D,EAGF4+D,YAAAN,EAAA,mCACKl0D,EAAWpK,EAAXoK,OAEJ14B,EAAKqqF,YAAA,GACJ/7D,EADI,CAEP2+D,QAAS,SAAA1qE,G,IAEDyqE,GAASA,EAAQzqE,GACrB,MAAO4qE,G,MACP5qE,EAAMwlB,iBACAolD,EAIL5qE,EAAM6qE,kBACU,IAAjB7qE,EAAM8qE,QACJ30D,GAAqB,UAAXA,GA7BtB,SAAyBnW,G,SACbA,EAAM+qE,SAAW/qE,EAAMiuB,QAAUjuB,EAAMmuB,SAAWnuB,EAAMquB,UA6BzD28C,CAAgBhrE,KAEjBA,EAAMwlB,iBACNglD,Q,OAOJ/sF,EAAMwtF,IADJf,IAAmBC,GACTG,GAEAC,EAIPZ,IAAAtvF,cAAA,IAAOoD,MAWlB,IAAMytF,EAAOf,GACX,SAAAgB,EAQEb,G,QANEhuF,iBAOC,IAAA8uF,EAPWhB,EAOXgB,EANDx1F,EAMCu1F,EANDv1F,QACAk0F,EAKCqB,EALDrB,GACAS,EAICY,EAJDZ,SACGx+D,EAGF4+D,YAAAQ,EAAA,yC,OAEDxB,IAAAtvF,cAACgxF,IAAcC,SAAf,MACG,SAAAj5E,GACWA,GAAVk5E,aAAU,G,IAEFnpD,EAAY/vB,EAAZ+vB,QAEFF,EAAW8nD,EACfH,EAAkBC,EAAIz3E,EAAQ6vB,UAC9B7vB,EAAQ6vB,UAGJC,EAAOD,EAAWE,EAAQopD,WAAWtpD,GAAY,GACjDzkC,EAAKqqF,YAAA,GACN/7D,EADM,CAEToW,OACAqoD,SAHS,W,IAIDtoD,EAAW2nD,EAAkBC,EAAIz3E,EAAQ6vB,WAChCtsC,EAAUwsC,EAAQxsC,QAAUwsC,EAAQtnC,MAE5ConC,M,OAKPgoD,IAAmBC,EACrB1sF,EAAMwtF,IAAMX,GAAgBC,EAE5B9sF,EAAM8sF,SAAWA,EAGZZ,IAAMtvF,cAAciC,EAAWmB,SCxG1CguF,EAAiB,SAAAryE,G,OAAKA,GACtBsyE,EAAe/B,IAAfQ,WACoB,qBAAfuB,IACTA,EAAaD,GAUCC,GACd,SAAArB,EAgBEC,G,QAdE,gBAAgBqB,OAef,IAAAC,EAf6B,OAe7BA,E,IAdDC,uBAcC,IAAAC,EAdiB,SAcjBA,EAbDC,EAaC1B,EAbD0B,YACWC,EAYV3B,EAZD9iE,UACA0kE,EAWC5B,EAXD4B,MACUC,EAUT7B,EAVD8B,SACUC,EAST/B,EATDnoD,SACAmqD,EAQChC,EARDgC,UACAC,EAOCjC,EAPDiC,OACOhmD,EAMN+jD,EANDn9D,MACA48D,EAKCO,EALDP,GACAS,EAICF,EAJDE,SACGx+D,EAGF4+D,YAAAN,EAAA,yI,OAEDV,IAAAtvF,cAACgxF,IAAcC,SAAf,MACG,SAAAj5E,GACWA,GAAVk5E,aAAU,G,IAEJxB,EAAkBqC,GAAgB/5E,EAAQ6vB,SAC1CqqD,EAAavC,EACjBH,EAAkBC,EAAIC,GACtBA,GAEgByC,EAASD,EAAnBE,SAEFC,EACJF,GAAQA,EAAK52F,QAAQ,4BAA6B,QAE9CkG,EAAQ4wF,EACVC,YAAU5C,EAAgB0C,SAAU,CAClCD,KAAME,EACNT,QACAI,YACAC,WAEF,KACEH,KAAcD,EAChBA,EAAapwF,EAAOiuF,GACpBjuF,GAEEyrB,EAAY4kE,EArD5B,W,2BAA2BS,EAAY,IAAAt1F,MAAAu1F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAZF,EAAYE,GAAAh1F,UAAAg1F,G,OAC9BF,EAAWxiE,QAAO,SAAAt0B,G,OAAKA,KAAG+H,KAAK,KAqD1BkvF,CAAef,EAAeH,GAC9BG,EACE9+D,EAAQi/D,EAAQrE,YAAA,GAAQxhD,EAAR,GAAsBylD,GAAgBzlD,EAEtD7oC,EAAKqqF,YAAA,C,eACQqE,GAAYR,GAAgB,KAC7CpkE,YACA2F,QACA48D,GAAIyC,GACDxgE,G,OAID0/D,IAAmBC,EACrBjuF,EAAMwtF,IAAMX,GAAgBC,EAE5B9sF,EAAM8sF,SAAWA,EAGZZ,IAAAtvF,cAAC6wF,EAASztF,U,6BC1F3B,sCAwBWuvF,EAxBX,OAGIC,EACK,QADLA,EAES,aAFTA,EAGO,UAHPA,EAIU,qBAJVA,EAKY,gBALZA,EAMY,gBANZA,EAOW,eAPXA,EAQW,eARXA,EASW,eATXA,EAUe,oBAVfA,EAWU,cAXVA,EAYa,iBAZbA,EAac,mBAbdA,EAcgB,qBAdhBA,EAegB,sBAOpB,SAAWD,GACP,IAKIE,EA6CJ,SAASC,EAAiBh0F,GACtBi0F,EAAgBj0F,EAAKk0F,eAAgBl0F,EAAKe,SAC1Cf,EAAKe,QAAQuoB,iBAAiB,SAAS,WACnC,IAAIhpB,EAAS6zF,EAAcp0F,OACvBO,EAAOy1B,UAAUzD,SAAS,kBAAoBhyB,EAAOy1B,UAAUzD,SAAS,cACrEhyB,EAAOy1B,UAAUzD,SAAS,cAC7BhyB,EAAOy1B,UAAUjN,IAAI,oBAG7B9oB,EAAKe,QAAQuoB,iBAAiB,QAAQ,WAClC,IAAIhpB,EAAS6zF,EAAcp0F,OACvBO,EAAOy1B,UAAUzD,SAAS,kBAAoBhyB,EAAOy1B,UAAUzD,SAAS,cACrEhyB,EAAOy1B,UAAUzD,SAAS,cAC7BhyB,EAAOy1B,UAAUvM,OAAO,oBAGhCxpB,EAAKe,QAAQuoB,iBAAiB,SAAS,WACnC2qE,EAAgBF,EAAW/zF,EAAKe,YAIxC,SAASkzF,EAAgBC,EAAgBE,GACrC,IAAIC,EAAaD,EAAa73F,MACX,KAAf83F,IAAsBl3F,YAAkBk3F,IAAeD,EAAazgD,cACpEygD,EAAazgD,cAAc5d,UAAUjN,IAAI,iBAEjB,WAAnBorE,GAA+BE,EAAazgD,eACjDygD,EAAazgD,cAAc5d,UAAUvM,OAAO,iBAGpD,SAAS8qE,IACL,IAAI9e,EAAQ2e,EAAcp0F,MAAMivB,uBAAuB,gBAAgB,GAClE7xB,YAAkBq4E,KACnB5/C,YAAS,CAAC4/C,GAAQse,GACdte,EAAMz/C,UAAUzD,SAASwhE,IACzB39D,aAAY,CAACq/C,GAAQse,IAIjC,SAASS,IACL,IAAIj0F,EAAS6zF,EAAcp0F,MAC3B,GAAKO,EAAOgB,qBAAqB,YAAY,GAA2D,KAArDhB,EAAOgB,qBAAqB,YAAY,GAAG/E,MACxC,KAAlD+D,EAAOgB,qBAAqB,SAAS,GAAG/E,MAAc,CACtD,IAAIi5E,EAAQl1E,EAAO0uB,uBAAuB,gBAAgB,GACrD7xB,YAAkBq4E,KACfA,EAAMz/C,UAAUzD,SAASwhE,IACzB39D,aAAY,CAACq/C,GAAQse,GAEzBl+D,YAAS,CAAC4/C,GAAQse,KAI9B,SAASU,EAAmBzzF,GACxBA,EAAQuoB,iBAAiB,QAASgrE,GAClCvzF,EAAQuoB,iBAAiB,OAAQirE,GAOrC,SAASE,EAAoBz0F,EAAM00F,EAAaC,GAC5C,IAAIC,EAAez3F,YAAkBw3F,GAAiDzzF,IAAxByzF,EAClC,SAAxB30F,EAAKk0F,gBACLM,EAAmBx0F,EAAKe,SAExB5D,YAAkBu3F,EAAYG,YAC9BH,EAAYG,UAAYC,EAAqB90F,EAAM8zF,EAAuBA,EAA2B,MAAOc,GAC5G50F,EAAKe,QAAQP,WAAWo2B,aAAa89D,EAAYG,UAAW70F,EAAKe,WAG5D5D,YAAkB6C,EAAK+0F,YACxBL,EAAYG,UAAU9+D,UAAUjN,IAAIgrE,GAExCY,EAAYG,UAAU9+D,UAAUjN,IAAIgrE,IAExC,IAAIkB,EAAkBJ,EAAY,OAAQ,CAAExmE,UAAW0lE,IACnDmB,EAAoBL,EAAY,QAAS,CAAExmE,UAAW0lE,IAgB1D,GAfK32F,YAAkB6C,EAAKe,QAAQyY,KAA2B,KAApBxZ,EAAKe,QAAQyY,KACpDy7E,EAAkBz7E,GAAK,SAAWxZ,EAAKe,QAAQyY,GAAG/c,QAAQ,KAAM,KAChE62B,YAAWtzB,EAAKe,QAAS,CAAE,kBAAmBk0F,EAAkBz7E,MAE/Drc,YAAkB6C,EAAKe,QAAQm0F,cAA6C,KAA7Bl1F,EAAKe,QAAQm0F,cAC7DD,EAAkBE,UAAYC,EAAkBp1F,EAAKe,QAAQm0F,aAC7Dl1F,EAAKe,QAAQq/B,gBAAgB,gBAE5BjjC,YAAkB6C,EAAK4zB,aAAgBz2B,YAAkB6C,EAAK4zB,WAAWshE,cAC1C,KAAhCl1F,EAAK4zB,WAAWshE,cAChBD,EAAkBE,UAAYC,EAAkBp1F,EAAK4zB,WAAWshE,cAE/DD,EAAkBE,WACnBT,EAAYG,UAAU9+D,UAAUjN,IAAIgrE,GAEpCY,EAAYG,UAAU9+D,UAAUzD,SAAS,qBAAsB,CAC/D,IAAI+iE,EAAYX,EAAYG,UAAUxxF,cAAc,oBACpDgyF,EAAUtzF,YAAY/B,EAAKe,SAC3Bs0F,EAAUtzF,YAAYizF,GACtBK,EAAUtzF,YAAYkzF,QAGtBP,EAAYG,UAAU9yF,YAAY/B,EAAKe,SACvC2zF,EAAYG,UAAU9yF,YAAYizF,GAClCN,EAAYG,UAAU9yF,YAAYkzF,GAEtCK,EAAiBt1F,EAAKe,QAAQxE,MAAO04F,GACT,WAAxBj1F,EAAKk0F,iBACDe,EAAkBl/D,UAAUzD,SAASwhE,IACrC39D,aAAY,CAAC8+D,GAAoBnB,GAErCl+D,YAAS,CAACq/D,GAAoBnB,IAEN,SAAxB9zF,EAAKk0F,iBAELl0F,EAAKe,QAAQuoB,iBAAiB,SAAS,SAAUzC,GAC7CyuE,EAAiBt1F,EAAKe,QAAQxE,MAAO04F,MAGzCj1F,EAAKe,QAAQuoB,iBAAiB,QAAQ,SAAUzC,GAC5CyuE,EAAiBt1F,EAAKe,QAAQxE,MAAO04F,OAGxC93F,YAAkB6C,EAAKe,QAAQmuB,aAAa,QAC7C+lE,EAAkBt/D,aAAa,MAAO31B,EAAKe,QAAQmuB,aAAa,OAGxE,SAASqmE,EAAoBrqF,EAAM2pF,GAClB,WAAT3pF,GAAqB2pF,EAAU9+D,UAAUzD,SAAS,cAClDuiE,EAAU9+D,UAAUjN,IAAI,iBA6BhC,SAAS0sE,EAAgBj5F,EAAOo1F,GACxBp1F,EACA45B,aAAY,CAACw7D,GAASmC,GAGtBl+D,YAAS,CAAC+7D,GAASmC,GAG3B,SAASwB,EAAiB/4F,EAAOi5E,GACzBj5E,GACAq5B,YAAS,CAAC4/C,GAAQse,GACdte,EAAMz/C,UAAUzD,SAASwhE,IACzB39D,aAAY,CAACq/C,GAAQse,KAIrBte,EAAMz/C,UAAUzD,SAASwhE,IACzB39D,aAAY,CAACq/C,GAAQse,GAEzBl+D,YAAS,CAAC4/C,GAAQse,IAG1B,SAASK,EAAcpzF,GACnB,IAAIP,EAAarD,YAAkB4D,EAAQP,YAAcO,EACnDA,EAAQP,WAId,OAHIA,GAAcA,EAAWu1B,UAAUzD,SAAS,qBAC5C9xB,EAAaA,EAAWA,YAErBA,EA2BX,SAASi1F,EAAmB10F,EAAS4wF,EAAQkD,GACzClD,EAAOroE,iBAAiB,SAAS,SAAUzC,GACjC9lB,EAAQg1B,UAAUzD,SAASwhE,IAAuB/yF,EAAQ20F,WAC5D7uE,EAAMwlB,iBACFtrC,IAAYR,SAASo1F,eACrB50F,EAAQsB,QAEZtB,EAAQxE,MAAQ,GAChBq5B,YAAS,CAAC+7D,GAASmC,OAI3B/yF,EAAQuoB,iBAAiB,SAAS,SAAUzC,GACxC2uE,EAAgBz0F,EAAQxE,MAAOo1F,MAGnC5wF,EAAQuoB,iBAAiB,SAAS,SAAUzC,GACxC2uE,EAAgBz0F,EAAQxE,MAAOo1F,MAGnC5wF,EAAQuoB,iBAAiB,QAAQ,SAAUzC,GACvC1mB,YAAW,WACPy1B,YAAS,CAAC+7D,GAASmC,KACpB,QAIX,SAAS8B,EAAc70F,EAASmzF,GAE5B,GADaC,EAAcpzF,GAChBg1B,UAAUzD,SAASwhE,IAA6C,SAAnBI,EAA2B,CAC/E,IAAI1e,EAAQ2e,EAAcpzF,GAASiuB,uBAAuB,gBAAgB,GAC1EsmE,EAAiBv0F,EAAQxE,MAAOi5E,IAMxC,SAASsf,EAAqB90F,EAAMouB,EAAWynE,EAAUC,EAAKnB,GAC1D,IACIE,EADAD,EAAez3F,YAAkBw3F,GAAiDzzF,IAAxByzF,EAU9D,OARKx3F,YAAkB6C,EAAK+0F,WAKxBF,EAAYD,EAAYkB,EAAK,CAAE1nE,UAAWA,KAJ1CymE,EAAYD,EAAY50F,EAAK+0F,UAAW,CAAE3mE,UAAWA,KAC3C2H,UAAUjN,IAAI+sE,GAK5BhB,EAAU9+D,UAAUjN,IAAI,qBACjB+rE,EAEX,SAASO,EAAkBF,GACvB,IAAIx2F,EAAS,GACb,IAAKvB,YAAkB+3F,IAAgC,KAAhBA,EAAoB,CACvD,IAAIa,EAAUx1F,SAASW,cAAc,QACrC60F,EAAQ5zF,UAAY,wBAA0B+yF,EAAc,MAE5Dx2F,EADmBq3F,EAAQllE,SAAS,GACfqkE,YAEzB,OAAOx2F,EA8CX,SAASs3F,EAAYC,EAAUpgE,EAAUqgE,GAChC/4F,YAAkB+4F,IAA0B,KAAbA,GAChC//D,aAAYN,EAAUqgE,EAASx5F,MAAM,MAEpCS,YAAkB84F,IAA0B,KAAbA,GAChCrgE,YAASC,EAAUogE,EAASv5F,MAAM,MA+B1C,SAASy5F,EAAejB,EAAan0F,GACjCm0F,EAAcE,EAAkBF,GAChC,IAAIvhD,EAAgBwgD,EAAcpzF,GAC9B4yC,EAAc5d,UAAUzD,SAASwhE,GAC5B32F,YAAkB+3F,IAAgC,KAAhBA,GAMnCvhD,EAAc5d,UAAUjN,IAAIgrE,GAC5BngD,EAAc3kB,uBAAuB8kE,GAAsB,GAAGsC,YAAc,KAN5EziD,EAAc3kB,uBAAuB8kE,GAAsB,GAAGsC,YAAclB,EAC5EvhD,EAAc5d,UAAUvM,OAAOsqE,GAC/B/yF,EAAQq/B,gBAAgB,gBAQvBjjC,YAAkB+3F,IAAgC,KAAhBA,GAInCn0F,EAAQq/B,gBAAgB,eACxBr/B,EAAQq/B,gBAAgB,qBAJxB9M,YAAWvyB,EAAS,CAAE,YAAem0F,EAAa,mBAAoBA,IAoBlF,SAASmB,EAAYC,EAAYv1F,EAASmzF,GAClCoC,EACAhjE,YAAWvyB,EAAS,CAAEw1F,SAAU,KAGhCx1F,EAAQq/B,gBAAgB,YAEvBjjC,YAAkB+2F,IACnB0B,EAAc70F,EAASmzF,GAe/B,SAASsC,EAAaC,EAAO5gE,GACrB4gE,EACA7gE,YAASC,EAAUi+D,GAGnB39D,aAAYN,EAAUi+D,GAe9B,SAAS4C,EAAWC,EAAU51F,EAASmzF,EAAgB0C,GACnD,IAAIC,EAAgB,CAAE,SAAY,WAAY,gBAAiB,QAC3DC,GAAkB35F,YAAkBy5F,GACpCD,GACA51F,EAAQg1B,UAAUvM,OAAOsqE,GACzBiD,EAAiBF,EAAe91F,GAC5B+1F,GACA3gE,aAAY,CAACygE,GAAiB9C,KAIlC/yF,EAAQg1B,UAAUjN,IAAIgrE,GACtBkD,EAAcH,EAAe91F,GACzB+1F,GACAlhE,YAAS,CAACghE,GAAiB9C,IAG9B32F,YAAkB+2F,IACnB0B,EAAc70F,EAASmzF,GAI/B,SAAS+C,EAAeC,EAASn2F,EAAS2zF,EAAayC,EAASxC,GAC5D,IAAIC,EAAez3F,YAAkBw3F,GAAiDzzF,IAAxByzF,EAC1DuC,EACAxC,EAAY0C,YA1QpB,SAA2Br2F,EAAS2zF,EAAayC,EAASxC,GACtD,IACIhD,GADex0F,YAAkBw3F,GAAiDzzF,IAAxByzF,GACrC,OAAQ,CAAEvmE,UAAW0lE,IAC1Ce,EAAYH,EAAYG,UAgB5B,OAfK13F,YAAkBg6F,IAIDzC,EAAYG,UAAU9+D,UAAUzD,SAASwhE,GACvDY,EAAYG,UAAUxxF,cAAc,IAAMywF,GAAwB/yF,GAC1Ds2F,sBAAsB,WAAY1F,GAL9CkD,EAAU9yF,YAAY4vF,IAOrBx0F,YAAkB03F,IACnBA,EAAU9+D,UAAUzD,SAASwhE,IAC7Bl+D,YAAS,CAACi/D,GAAYf,GAE1Bl+D,YAAS,CAAC+7D,GAASmC,GACnB2B,EAAmB10F,EAAS4wF,GAC5BA,EAAOh8D,aAAa,aAAc,SAC3Bg8D,EAuPuB2F,CAAkBv2F,EAAS2zF,EAAayC,EAASvC,IAG3EprE,aAAOkrE,EAAY0C,aACnB1C,EAAY0C,YAAc,MAelC,SAASL,EAAiBjkE,EAAO/xB,GAC7B,IAAK,IAAIhD,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAK81B,GAAQ/0B,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIhB,EAAMuG,EAAGvF,GACT41C,EAAgBwgD,EAAcpzF,GACtB,aAARhE,GACAgE,EAAQg1B,UAAUvM,OAAOsqE,GAEjB,aAAR/2F,GAAsB42C,EAAc5d,UAAUzD,SAASwhE,IACvDngD,EAAc5d,UAAUvM,OAAOsqE,GAEvB,gBAAR/2F,GAAyB42C,EAAc5d,UAAUzD,SAASwhE,GAC1DngD,EAAc3kB,uBAAuB8kE,GAAsB,GAAGsC,YAAc,GAG5Er1F,EAAQq/B,gBAAgBrjC,IAgBpC,SAASi6F,EAAclkE,EAAO/xB,GAC1B,IAAK,IAAIhD,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAK81B,GAAQ/0B,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIhB,EAAMuG,EAAGvF,GACT41C,EAAgBwgD,EAAcpzF,GACtB,aAARhE,GACAgE,EAAQg1B,UAAUjN,IAAIgrE,GAEd,aAAR/2F,GAAsB42C,EAAc5d,UAAUzD,SAASwhE,IACvDngD,EAAc5d,UAAUjN,IAAIgrE,GAEpB,gBAAR/2F,GAAyB42C,EAAc5d,UAAUzD,SAASwhE,GAC1DngD,EAAc3kB,uBAAuB8kE,GAAsB,GAAGsC,YAActjE,EAAM/1B,GAGlFgE,EAAQ40B,aAAa54B,EAAK+1B,EAAM/1B,KAoF5C,SAASw6F,EAAgBC,EAAU3C,EAAWlD,GAC1C,IAAI8F,EAAa,GACjBA,EAAW91F,KAAKgwF,GAChB,IAAI+F,EAAUv6F,YAAkBw0F,GAC5BkD,EAAUtzF,iBAAiB,uBAAyBk2F,EACxD,GAAID,GAAYE,EAAQ96F,OAAS,EAC7B,IAAK,IAAI2d,EAAQ,EAAGA,EAAQm9E,EAAQ96F,OAAQ2d,IACxCm9E,EAAQn9E,GAAO+O,iBAAiB,YAAaquE,GAAoB,GACjED,EAAQn9E,GAAO+O,iBAAiB,UAAWsuE,GAAkB,QAGhE,GAAIF,EAAQ96F,OAAS,EACtB,IAAS2d,EAAQ,EAAGA,EAAQm9E,EAAQ96F,OAAQ2d,IACxCm9E,EAAQn9E,GAAOmP,oBAAoB,YAAaiuE,EAAoB53F,MACpE23F,EAAQn9E,GAAOmP,oBAAoB,UAAWkuE,EAAkB73F,MAS5E,SAAS43F,IAIL,IAFA,IAPoB9C,EAAWlD,EAQ3BkG,EAAY93F,KAAK4zC,eACbkkD,EAAU9hE,UAAUzD,SAAS,kBACjCulE,EAAYA,EAAUlkD,cAVKg+C,EAOrB5xF,MAPU80F,EAYLgD,GAXA9hE,UAAUzD,SAAS,eAAkBuiE,EAAUxxF,cAAc,SAASqyF,UACjF/D,EAAO57D,UAAUjN,IAAI,sBAY7B,SAAS8uE,IAEL,IAAIvmE,EAAMtxB,KACVI,YAAW,WACPkxB,EAAI0E,UAAUvM,OAAO,wBACtB,KAEP,SAASsuE,EAAcC,EAAWnD,GAC9B,IAAIjD,EAASiD,EAAY,OAAQ,CAAExmE,UAAW2pE,IAE9C,OADApG,EAAO57D,UAAUjN,IAAI,sBACd6oE,EA6CX,SAASqG,EAAYD,EAAWlD,EAAWT,EAAcO,GAErD,IAAIC,EAAez3F,YAAkBw3F,GAAiDzzF,IAAxByzF,EAC1DhD,EAASmG,EAAcC,EAAWnD,GACtCC,EAAU9+D,UAAUjN,IAAI,qBACxB,IAAImvE,EAAepD,EAAUxxF,cAAc,oBAC3C,GAAIlG,YAAkB86F,GAAe,CACjCA,EAAerD,EAAY,OAAQ,CAAExmE,UAAW,oBAChDgmE,EAAa5zF,WAAWo2B,aAAaqhE,EAAc7D,GACnD,IAAI11F,EAASm2F,EAAUtzF,iBAAiB6yF,EAAarkE,QAAU,QAC/DkoE,EAAal2F,YAAYqyF,GACzB,IAAK,IAAIz3F,EAAI,EAAGA,EAAI+B,EAAO9B,OAAQD,IAC/Bs7F,EAAal2F,YAAYrD,EAAO/B,IAQxC,OALAs7F,EAAaz3F,WAAWo2B,aAAa+6D,EAAQsG,GACxCpD,EAAU9+D,UAAUzD,SAASwhE,IAC9Be,EAAU9+D,UAAUjN,IAAIgrE,GAE5ByD,GAAgB,EAAM1C,EAAWlD,GAC1BA,EAaX,SAASuG,EAAWH,EAAWlD,EAAWF,GACtC,IACIhD,EAASmG,EAAcC,EADR56F,YAAkBw3F,GAAiDzzF,IAAxByzF,GAS9D,OAPKE,EAAU9+D,UAAUzD,SAASwhE,IAC9Be,EAAU9+D,UAAUjN,IAAIgrE,IAEhBe,EAAU9+D,UAAUzD,SAAS,qBAAwBuiE,EAAUxxF,cAAc,oBACrFwxF,GACC9yF,YAAY4vF,GACjB4F,GAAgB,EAAM1C,EAAWlD,GAC1BA,EAGX,SAASwG,EAAkBC,EAAkBr3B,GACtB,WAAfA,EAAM71D,KACNktF,EAAiBriE,UAAUjN,IAAI,YAE1BsvE,EAAiBriE,UAAUzD,SAAS,aACzC8lE,EAAiBriE,UAAUvM,OAAO,YAruB1CqqE,EAAMwE,YApCN,SAAqBr4F,EAAM20F,GACvB,IAAIC,EAAez3F,YAAkBw3F,GAAiDzzF,IAAxByzF,EAC1DD,EAAc,CAAEG,UAAW,KAAM6C,QAAS,GAAIN,YAAa,MAoB/D,GAnBArD,EAAY/zF,EAAKk0F,eACb/2F,YAAkB6C,EAAKk0F,iBAA2C,UAAxBl0F,EAAKk0F,gBAC/CQ,EAAYG,UAAYC,EAAqB90F,EAAM8zF,EAAuBA,EAA2B,OAAQc,GAC7G50F,EAAKe,QAAQP,WAAWo2B,aAAa89D,EAAYG,UAAW70F,EAAKe,SACjE60B,YAAS,CAAC51B,EAAKe,SAAU+yF,GACzBY,EAAYG,UAAU9yF,YAAY/B,EAAKe,UAGvC0zF,EAAoBz0F,EAAM00F,EAAaE,GAE3CZ,EAAiBh0F,GACZ7C,YAAkB6C,EAAK4zB,aAAgBz2B,YAAkB6C,EAAK4zB,WAAW0kE,mBAC1Et4F,EAAK4zB,WAAW0kE,iBAA4C,aAAzBt4F,EAAKe,QAAQgvB,UAChDknE,EAAej3F,EAAK4zB,WAAW0kE,gBAAiBt4F,EAAKe,QAAS2zF,GAAa,EAAME,GACjFF,EAAY0C,YAAYzhE,aAAa,OAAQ,UACzC++D,EAAYG,UAAU9+D,UAAUzD,SAASwhE,IACzCl+D,YAAS,CAAC8+D,EAAYG,WAAYf,KAGrC32F,YAAkB6C,EAAK03F,UAAqC,aAAzB13F,EAAKe,QAAQgvB,QACjD,IAAK,IAAIpzB,EAAI,EAAGA,EAAIqD,EAAK03F,QAAQ96F,OAAQD,IACrC+3F,EAAYgD,QAAQ/1F,KAAKu2F,EAAWl4F,EAAK03F,QAAQ/6F,GAAI+3F,EAAYG,UAAWD,IAUpF,OAPKz3F,YAAkB6C,EAAKe,UAAqC,aAAzBf,EAAKe,QAAQgvB,SACjD6F,YAAS,CAAC8+D,EAAYG,WAAYf,GAEtCqE,EAAkBzD,EAAYG,UAAW70F,EAAKe,SAC9C2zF,EAwIJ,SAA0B10F,EAAM00F,GAC5B,IAAKv3F,YAAkB6C,EAAK4zB,YACxB,IAAK,IAAI71B,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKgD,EAAK4zB,YAAa71B,EAAKuF,EAAG1G,OAAQmB,IAAM,CAEtE,OADWuF,EAAGvF,IAEV,IAAK,WACDi4F,EAAYh2F,EAAK4zB,WAAWqiE,SAAU,CAACvB,EAAYG,YACnDU,EAAoBv1F,EAAKk0F,eAAgBQ,EAAYG,WACrD,MACJ,IAAK,UACD6B,EAAW12F,EAAK4zB,WAAW2kE,QAASv4F,EAAKe,QAASf,EAAKk0F,eAAgBQ,EAAYG,WACnF,MACJ,IAAK,YACD2B,EAAax2F,EAAK4zB,WAAW8S,UAAW,CAACguD,EAAYG,YACrD,MACJ,IAAK,cACDsB,EAAen2F,EAAK4zB,WAAWshE,YAAal1F,EAAKe,SACjD,MACJ,IAAK,WACDs1F,EAAYr2F,EAAK4zB,WAAW2iE,SAAUv2F,EAAKe,UAK3D,OAAO2zF,EAhKO8D,CAAiBx4F,EAAM00F,GAEnBA,EACXA,GAuBXb,EAAMG,iBAAmBA,EAoCzBH,EAAMW,mBAAqBA,EAqL3BX,EAAM4B,mBAAqBA,EAkE3B5B,EAAM/2F,SArBN,SAAkBP,EAAOwE,EAASmzF,EAAgBkD,GAK9C,GAJAr2F,EAAQxE,MAAQA,EACVY,YAAkB+2F,IAAuC,SAAnBA,GACxC0B,EAAc70F,EAASmzF,IAEtB/2F,YAAkBi6F,IAAgBA,EAAa,CAChD,IAAIzjD,EAAgBwgD,EAAcpzF,GAClC,IAAK5D,YAAkBw2C,GAAgB,CACnC,IAAIg+C,EAASh+C,EAAc3kB,uBAAuB8kE,GAAsB,GACnE32F,YAAkBw0F,KACf5wF,EAAQxE,OAASo3C,EAAc5d,UAAUzD,SAAS,iBAClD6D,aAAY,CAACw7D,GAASmC,GAGtBl+D,YAAS,CAAC+7D,GAASmC,KAKnCG,EAAgBC,EAAgBnzF,IAsBpC8yF,EAAMmC,YAAcA,EAkBpBnC,EAAM4E,SARN,SAAkBhpD,EAAOolD,GACA,kBAAVplD,EACPolD,EAAU9gE,MAAM0b,MAAQ/sC,YAAW+sC,GAEb,kBAAVA,IACZolD,EAAU9gE,MAAM0b,MAASA,EAAM9sC,MAAM,WAAe8sC,EAAU/sC,YAAW+sC,KAqCjFokD,EAAMsC,eAAiBA,EAuBvBtC,EAAMwC,YAAcA,EAoBpBxC,EAAM2C,aAAeA,EAiCrB3C,EAAM6C,WAAaA,EAWnB7C,EAAMoD,eAAiBA,EA8BvBpD,EAAMkD,iBAAmBA,EA8BzBlD,EAAMmD,cAAgBA,EAmBtBnD,EAAM6E,eAlBN,SAAwB33B,GACpB,IAnd0BhgE,EAmdtB8zF,EAAY9zB,EAAM8zB,UACtB,IAAK13F,YAAkB03F,IAAcA,EAAU9+D,UAAUzD,SAASwhE,GAAwB,CACtF,IAAI6E,EAAW9D,EAAUxxF,cAAc,YAAcwxF,EAAUxxF,cAAc,YACzEwxF,EAAUxxF,cAAc,SACxB6xF,EAAcL,EAAUxxF,cAAc,IAAMywF,GAAsBsC,YAClEgB,EAA2D,OAA7CvC,EAAUxxF,cAAc,iBAC1CutB,YAAOikE,EAAUxxF,cAAc,IAAMywF,IACrCljE,YAAOikE,EAAUxxF,cAAc,IAAMywF,IACrC/9D,YAAU8+D,EAAW,CAACf,GAAwB,CAACA,KA3dzB/yF,EA4dD43F,GA3djBjvE,oBAAoB,QAAS4qE,GACrCvzF,EAAQ2oB,oBAAoB,OAAQ6qE,GA2dhCjhE,YAAWqlE,EAAU,CAAE,YAAezD,IACtCyD,EAAS5iE,UAAUjN,IAAIgrE,GAClBsD,GAAoC,UAArBuB,EAAS5oE,SACzB4oE,EAASv4D,gBAAgB,cA+CrCyzD,EAAM+E,YA1CN,SAAqB73B,EAAO71D,EAAMgqF,EAAaP,GAC3C,IAAIC,EAAez3F,YAAkBw3F,GAAiDzzF,IAAxByzF,EAC1DE,EAAYl9D,YAAQopC,EAAO,IAAM+yB,GAErC,GADAC,EAAY7oF,EACC,UAATA,EAAkB,CAClB,IAAI6pF,EAAYF,EAAU9kE,QAEtB/vB,EAAO,CAAEe,QAASggE,EAAOmzB,eAAgBhpF,EACzC6pF,UAFJA,EAA0B,QAAdA,GAAqC,SAAdA,EAAuBA,EAAY,KAE5CnhE,WAAY,CAAEshE,YAAaA,IACjD2D,EAAUhE,EAAUxxF,cAAc,iBAClCy1F,EAAW,CAAEjE,UAAWA,GAC5B9zB,EAAMhrC,UAAUvM,OAAOsqE,GACvBW,EAAoBz0F,EAAM84F,EAAUlE,GACpC,IAAImE,EAAgBlE,EAAU9+D,UAAUzD,SAAS,qBACjD,GAAIn1B,YAAkB07F,GAClB,GAAIE,EAEAF,EADgBhE,EAAUxxF,cAAc,oBACpBA,cAAc,4BAGlCw1F,EAAUhE,EAAUxxF,cAAc,uBAG1C,GAAIlG,YAAkB07F,GACdE,IACAF,EAAUhE,EAAUxxF,cAAc,wBAElClG,YAAkB07F,IAClBhE,EAAU9+D,UAAUvM,OAAOsqE,OAG9B,CACD,IAAIkF,EAAYnE,EAAUxxF,cAAc,IAAMywF,GAC1CmF,EAAYpE,EAAUxxF,cAAc,IAAMywF,GAC1CoF,EAAUH,EAAgBlE,EAAUxxF,cAAc,oBAAsBwxF,EAC5EqE,EAAQtiE,aAAamqC,EAAO83B,GAC5BK,EAAQtiE,aAAaoiE,EAAWH,GAChCK,EAAQtiE,aAAaqiE,EAAWJ,IAGxCtD,EAAoBrqF,EAAM61D,EAAMptB,gBAmBpCkgD,EAAMsF,UALN,SAAmB3B,EAAUsB,GACzB,IAAK,IAAIn8F,EAAI,EAAGA,EAAIm8F,EAASl8F,OAAQD,IACjC46F,EAAgBC,EAAUsB,EAASn8F,GAAGk4F,YA8E9ChB,EAAMuF,QAjBN,SAAiBtrD,EAAUurD,EAAOxE,EAAW9zB,EAAOu4B,GAEhD,IAAI56F,EAA4B,kBAAX26F,EAAsBA,EAAM38F,MAAM,KACjD28F,EACN,GAA+B,WAA3BvrD,EAASt2B,cACT,IAAK,IAAIzZ,EAAK,EAAGw7F,EAAW76F,EAAQX,EAAKw7F,EAAS38F,OAAQmB,IAAM,CAE5Dm6F,EADWqB,EAASx7F,GACH82F,EAAWyE,QAIhC,IAAK,IAAIh2F,EAAK,EAAGk2F,EAAW96F,EAAQ4E,EAAKk2F,EAAS58F,OAAQ0G,IAAM,CAE5D00F,EADWwB,EAASl2F,GACFuxF,EAAW9zB,EAAOu4B,KAuChDzF,EAAMmE,YAAcA,EAuBpBnE,EAAMqE,WAAaA,EASnBrE,EAAMsE,kBAAoBA,EA1xB9B,CA2xBGtE,IAAUA,EAAQ,M,6BCpzBrB,uGAQI/xB,EAA6B,WAQ7B,SAASA,EAAYD,EAAYH,EAAOuG,GACpC,IAaIrtD,EAbA9a,EAAQC,KAkFZ,OAhFAA,KAAKmtF,WAAY,EAEjBntF,KAAKmrF,kBAAmB,EACxBnrF,KAAK05F,SAAW,GACX53B,GAAe9hE,KAAK8hE,aACrBA,EAAa,IAEjBoG,EAAUA,GAAWpG,EAAWoG,QAC5BpG,IAA8C,IAAhCA,EAAWqpB,mBACzBnrF,KAAKmrF,iBAAmBrpB,EAAWqpB,kBAGnCrpB,aAAsB1jE,MACtByc,EAAO,CACHmnD,KAAMF,EACN63B,SAAS,GAGc,kBAAf73B,GACPA,EAAWE,OACZF,EAAWE,KAAO,IAEtBnnD,EAAO,CACH+H,IAAKk/C,EAAWl/C,IAChBg3E,UAAW93B,EAAW83B,UACtBC,UAAW/3B,EAAW+3B,UACtBC,UAAWh4B,EAAWg4B,UACtBC,QAASj4B,EAAWi4B,QACpBC,SAAUl4B,EAAWk4B,SACrBh4B,KAAMF,EAAWE,KACjBh9C,QAAS88C,EAAW98C,QACpBovB,OAAQ0tB,EAAW1tB,OACnBv5B,KAAMinD,EAAWjnD,KACjBo/E,mBAAoBn4B,EAAWm4B,mBAC/BC,gBAAiBp4B,EAAWo4B,gBAC5BC,cAAer4B,EAAWq4B,cAC1BC,YAAat4B,EAAWs4B,YACxBp9F,IAAK8kE,EAAW9kE,IAChBq9F,YAAav4B,EAAWu4B,YACxBC,MAAOx4B,EAAWw4B,MAClB91E,SAAUs9C,EAAWt9C,SACrBm1E,aAAgC39F,IAAvB8lE,EAAW63B,QAAwB73B,EAAW63B,UACjD73B,EAAWoG,mBAAmBqyB,KAAqBz4B,EAAWoG,mBAAmBsyB,OACvE14B,EAAWl/C,IAC3B63E,eAAgB34B,EAAW24B,iBAI/B/gC,IAASh5D,WAAW,uCAEI1E,IAAxB6e,EAAK4/E,gBAAiC/gC,IAAS6wB,WAC/C1vE,EAAK4/E,iBAAiBr9F,YAAkByd,EAAKw/E,cAAsBx/E,EAAKw/E,kBAEtDr+F,IAAlB6e,EAAK2J,WACL3J,EAAK2J,SAAW,QAEpBxkB,KAAK8hE,WAAajnD,EAClB7a,KAAK06F,aAAe/4B,EAChB9mD,EAAK+H,KAAO/H,EAAK8+E,UAAY9+E,EAAKmnD,KAAKnlE,QACvCmD,KAAK26F,iBAAkB,EACvB36F,KAAKkoE,QAAUA,GAAW,IAAI0yB,IAC9B56F,KAAK8hE,WAAW63B,SAAU,EAC1B35F,KAAKyC,MAAQzC,KAAK66F,aAAal5B,GAAS,IAAIC,KAC5C5hE,KAAKyC,MAAMmY,MAAK,SAAU/Z,GACtBd,EAAM+hE,WAAW63B,SAAU,EAC3B55F,EAAM46F,iBAAkB,EACxB9/E,EAAKmnD,KAAOnhE,EAAElC,OACdoB,EAAMmoE,QAAU,IAAI4yB,QAIxB96F,KAAKkoE,QAAUrtD,EAAK8+E,QAAU,IAAImB,IAAgB,IAAIF,KAErD//E,EAAKy/E,OAASt6F,KAAKkoE,mBAAmB0yB,MACvC//E,EAAKy/E,MAAQ,YAEjBt6F,KAAKkoE,QAAUA,GAAWloE,KAAKkoE,QAC3BrtD,EAAKs/E,gBACLn6F,KAAKkoE,QAAU,IAAI6yB,IAAa/6F,KAAKkoE,QAASrtD,EAAKo/E,mBAAoBp/E,EAAKq/E,kBAEzEl6F,KA+ZX,OAzZA+hE,EAAY7lE,UAAU8+F,gBAAkB,SAAUr5B,GAE9C,OADA3hE,KAAK06F,aAAe/4B,EACb3hE,MAMX+hE,EAAY7lE,UAAUomE,aAAe,SAAUX,GACtC3hE,KAAK06F,cAAkB/4B,aAAiBC,KACzClI,IAASh5D,WAAW,iEAEnBV,KAAK8hE,WAAWE,MACjBtI,IAASh5D,WAAW,mEAExBihE,EAAQA,GAAS3hE,KAAK06F,aACtB,IAAI/7F,EAASqB,KAAKkoE,QAAQC,aAAanoE,KAAM2hE,GAC7C,GAAIA,EAAMs5B,SAAU,CAChB,IAAIhS,EAAOtnB,EAAMs5B,SAASC,UACtBhS,EAASvnB,EAAMs5B,SAASE,QACxB/2F,EAAMu9D,EAAMy5B,gBAAkBz8F,EAAOA,OACrCA,EACAuqF,GAAUA,aAAkB9qF,OAC5Bs7D,IAASqvB,eAAepnB,EAAMs5B,SAASjS,KAAMC,EAAM7kF,EAAK8kF,EAAQvnB,EAAMs5B,SAASj+F,KAEnF,IAAK,IAAImL,EAAI,EAAGA,EAAI/D,EAAIvH,OAAQsL,IACxB/D,EAAI+D,GAAG8gF,aAAiB7qF,QACxBgG,EAAI+D,GAAK7J,YAAO,GAAI,GAAI8F,EAAI+D,IAC5B/D,EAAI+D,GAAG8gF,GAAQjpF,KAAKkoE,QAAQmzB,gBAAgB15B,EAAMs5B,SAASK,MAAM,IAAIv5B,EAAY39D,EAAI+D,GAAG8gF,GAAM5nF,MAAM,KAAKihE,eAAgBtiE,KAAM2hE,IAI3I,OAAO3hE,KAAKkoE,QAAQmzB,gBAAgB18F,EAAQqB,KAAM2hE,IAUtDI,EAAY7lE,UAAU2+F,aAAe,SAAUl5B,EAAO//B,EAAML,EAAMg6D,GAC9D,IAAIx7F,EAAQC,KAES,oBAAV2hE,IACP45B,EAASh6D,EACTA,EAAOK,EACPA,EAAO+/B,EACPA,EAAQ,MAEPA,IACDA,EAAQ3hE,KAAK06F,cAEX/4B,aAAiBC,KACnBlI,IAASh5D,WAAW,iEAExB,IAAI6nE,EAAW,IAAID,EACfroE,EAAO,CAAE0hE,MAAOA,GACpB,IAAK3hE,KAAK8hE,WAAW63B,cAAoC39F,IAAxBgE,KAAK8hE,WAAWl/C,KAA6C,KAAxB5iB,KAAK8hE,WAAWl/C,MAC7ExlB,YAAkB4C,KAAKkoE,QAAmB,cAAOloE,KAAKw7F,oBAAoBx7F,KAAKkoE,SAAU,CAC9F,IAAIvpE,EAASqB,KAAKkoE,QAAQC,aAAanoE,KAAM2hE,GACxCvkE,YAAkB4C,KAAKkoE,QAAmB,cAGrC9qE,YAAkBuB,EAAOikB,MAAQ5iB,KAAKw7F,oBAAoBx7F,KAAKkoE,SACrEloE,KAAKy7F,YAAY98F,EAAQ4pE,EAAUtoE,EAAM0hE,IAGzC1hE,EAAO8hE,EAAY25B,eAAe/5B,EAAOhjE,EAAQsB,GACjDsoE,EAASrlD,QAAQjjB,IAPjBD,KAAKkoE,QAAmB,YAAEvpE,EAAQ4pE,EAAUtoE,EAAM0hE,QAWtDI,EAAY45B,UAAS,WACjB,IAAIv3F,EAAMrE,EAAMuiE,aAAaX,GAC7B1hE,EAAO8hE,EAAY25B,eAAe/5B,EAAOv9D,EAAKnE,GAC9CsoE,EAASrlD,QAAQjjB,MASzB,OANI2hC,GAAQL,IACRgnC,EAAS5tD,QAAQC,KAAKgnB,EAAML,GAE5Bg6D,GACAhzB,EAAS5tD,QAAQC,KAAK2gF,EAAQA,GAE3BhzB,EAAS5tD,SAEpBonD,EAAY25B,eAAiB,SAAU/5B,EAAOhjE,EAAQsB,GASlD,OARI0hE,EAAMy5B,iBACNn7F,EAAKtB,OAASA,EAAOA,OACrBsB,EAAK66D,MAAQn8D,EAAOm8D,MACpB76D,EAAKq+D,WAAa3/D,EAAO2/D,YAGzBr+D,EAAKtB,OAASA,EAEXsB,GAEX8hE,EAAY45B,SAAW,SAAU9S,IAC5B/mF,OAAO64B,cAAgB74B,OAAO1B,YAAYyoF,EAAI,IAEnD9mB,EAAY7lE,UAAU0/F,cAAgB,SAAUh5E,EAAKi5E,EAAWC,GAC5D,OAAOx9F,YAAO,GAAI,CACd6M,KAAM,MACNqZ,SAAUxkB,KAAK8hE,WAAWt9C,SAC1B61E,YAAar6F,KAAK8hE,WAAWu4B,YAC7BC,MAAOt6F,KAAK8hE,WAAWw4B,MACvByB,OAAO,EACPC,aAAa,EACb73E,UAAW03E,EACXv3E,UAAWw3E,GACZl5E,IAGPm/C,EAAY7lE,UAAUu/F,YAAc,SAAU74E,EAAK2lD,EAAUtoE,EAAM0hE,GAC/D,IAAI5hE,EAAQC,KACRi8F,IAAet6B,EAAMu6B,iBACrBJ,EAAS,SAAUj7F,GACnBZ,EAAKwkB,MAAQ5jB,EACb0nE,EAASplD,OAAOljB,IAEhBk8F,EAAU,SAAUthF,EAAMigD,EAAO0vB,EAAK4R,EAASz8E,EAAQ2+C,EAAY+9B,GACnEp8F,EAAKuqF,IAAMA,EACXvqF,EAAK66D,MAAQA,EAAQ3kD,SAAS2kD,EAAM3tD,WAAY,IAAM,EACtDlN,EAAKtB,OAASkc,EACd5a,EAAKm8F,QAAUA,EACfn8F,EAAKq+D,WAAaA,EAClBr+D,EAAK0f,OAASA,EACd1f,EAAKo8F,qBAAuBA,EAC5B9zB,EAASrlD,QAAQjjB,IAEjBq8F,EAAe,SAAUzhF,EAAMmW,GAC/B,IAAIurE,EAAY,IAAIj0B,EAChBk0B,EAAY,CAAEj8F,OAAQN,GAC1B0hE,EAAMs5B,SAASwB,SAAU,EACzB,IAAIC,EAAS38F,EAAMmoE,QAAQC,aAAapoE,EAAO4hE,EAAMs5B,SAAUpgF,EAAO9a,EAAMmoE,QAAQmzB,gBAAgBxgF,GAAQmW,GACxG2rE,EAAW58F,EAAM07F,YAAYiB,EAAQH,EAAWC,EAAW76B,EAAMs5B,UASrE,OARKgB,GACDM,EAAU3hF,MAAK,SAAUgiF,GACjB/hF,IACA6+C,IAASqvB,eAAepnB,EAAMs5B,SAASjS,KAAMrnB,EAAMs5B,SAASC,UAAWrgF,EAAM+hF,EAASj7B,EAAMs5B,SAASj+F,KACrGm/F,EAAQthF,EAAM+hF,EAAQ9hC,MAAO8hC,EAAQpS,QAE1CsR,GAEAa,GA2BPvS,EAAMpqF,KAAK47F,cAAch5E,GAzBb,SAAU/H,EAAMuhF,GACxBr8F,EAAMy7F,oBAAoBz7F,EAAMmoE,WAChCk0B,EAAU99F,YAAO,GAAIyB,EAAM88F,cAAeT,KAEgC,IAA1EA,EAAQp5E,YAAY6B,kBAAkB,gBAAgB1mB,QAAQ,QAAiB4B,EAAMotF,YACrFtyE,EAAO6+C,IAAS1+C,MAAM2xE,UAAU9xE,IAEpC,IAAIlc,EAASoB,EAAMmoE,QAAQmzB,gBAAgBxgF,EAAM9a,EAAO4hE,EAAOy6B,EAAQp5E,YAAao5E,GAChFthC,EAAQ,EACRwD,EAAa,KAEbw+B,EAAiBjiF,EAAyB,qBAC1C8mD,EAAMy5B,kBACNtgC,EAAQn8D,EAAOm8D,MACfwD,EAAa3/D,EAAO2/D,WACpB3/D,EAASA,EAAOA,QAEfgjE,EAAMs5B,SAINgB,GACDK,EAAa39F,EAAQy9F,GAJrBD,EAAQx9F,EAAQm8D,EAAOshC,EAAQp5E,YAAao5E,EAAQjxF,KAAM0P,EAAMyjD,EAAYw+B,KAOvChB,GAC7C,GAAK97F,KAAKw7F,oBAAoBx7F,KAAKkoE,SAS9B,CACDloE,KAAK68F,cAAgBzS,EACrB,IAAIgS,EAAUhS,EACdpqF,KAAKkoE,QAAQ57D,QAAQywF,QAAQ,CACzBliF,KAAMuhF,EAAQvhF,KACdsJ,UAAWi4E,EAAQj4E,UAAWG,UAAW83E,EAAQ93E,gBAdZ,CACzC,IAAI04E,EAAS,IAAIx6E,IAAK4nE,GACtB4S,EAAO94E,WAAa,WAChBnkB,EAAMmkB,WAAW84E,EAAOh6E,YAAag6E,KAEzC5S,EAAM4S,EAAOn6E,QACT3H,OAAM,SAAUra,GAAK,OAAO,KAChCb,KAAK05F,SAAS93F,KAAKo7F,GAUvB,GAAIf,EAAY,CACZ,IACI73F,EAAMu9D,EAAMu6B,iBAAiB56F,KAAKtB,KAAM,CAAE2hE,MAAOA,EAAMs5B,SAAU16F,OAAQohE,IACzEv9D,GAAOA,EAAIvH,OACDomB,QAAQuP,IAAI,CAAC43D,EAAKkS,EAAa,KAAMl4F,KACvCwW,MAAK,WAET,IADA,IAAI3a,EAAO,GACFjC,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCiC,EAAKjC,GAAMY,UAAUZ,GAEzB,IAAIW,EAASsB,EAAK,GACdg9F,EAAUl9F,EAAMmoE,QAAQmzB,gBAAgB18F,EAAO,GAAIoB,EAAO4hE,EAAO5hE,EAAM25F,SAAS,GAAG12E,YAAajjB,EAAM25F,SAAS,IAC/G5+B,EAAQ,EACR6G,EAAMy5B,kBACNtgC,EAAQmiC,EAAQniC,MAChBmiC,EAAUA,EAAQt+F,QAEtB,IAAIu+F,EAAUn9F,EAAMmoE,QAAQmzB,gBAAgB18F,EAAO,GAAIoB,EAAO4hE,EAAMs5B,SAAUl7F,EAAM25F,SAAS,GAAG12E,YAAajjB,EAAM25F,SAAS,IAC5H5+B,EAAQ,EACJ6G,EAAMs5B,SAASG,kBACftgC,EAAQoiC,EAAQpiC,MAChBoiC,EAAUA,EAAQv+F,QAEtB+6D,IAASqvB,eAAepnB,EAAMs5B,SAASjS,KAAMrnB,EAAMs5B,SAASC,UAAW+B,EAASC,EAASv7B,EAAMs5B,SAASj+F,KACxGi/F,GAAa,EACbE,EAAQc,EAASniC,EAAO/6D,EAAM25F,SAAS,GAAG12E,gBAI9Ci5E,GAAa,EAGrB,OAAO7R,GAEXroB,EAAY7lE,UAAUgoB,WAAa,SAAUk4E,EAASe,GAClDn9F,KAAKkoE,QAAQhkD,WAAWlkB,KAAMo8F,EAASe,GAGvC,IAFA,IACI54F,EADAygB,EAAUhlB,KAAK8hE,WAAW98C,QAErBpoB,EAAI,EAAGooB,GAAWpoB,EAAIooB,EAAQnoB,OAAQD,IAAK,CAChD2H,EAAQ,GAER,IADA,IACSvG,EAAK,EAAGC,EADNC,OAAOjB,KAAK+nB,EAAQpoB,IACCoB,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAImG,EAAOlG,EAAOD,GAClBuG,EAAM3C,KAAKuC,GACXi4F,EAAQn4E,iBAAiB9f,EAAM6gB,EAAQpoB,GAAGuH,OAatD49D,EAAY7lE,UAAU69B,YAAc,SAAUwvC,EAASvsE,EAAKstE,EAAW3I,EAAOy7B,GAC1E,IAAIr9F,EAAQC,KACRsqE,aAAqB1I,MACrBD,EAAQ2I,EACRA,EAAY,MAEhB,IAAIrqE,EAAO,CACP2iB,IAAK0nD,EACLttE,IAAKA,GAAOgD,KAAK8hE,WAAW9kE,KAE5BotF,EAAMpqF,KAAKkoE,QAAQm1B,aAAar9F,KAAMupE,EAAStpE,EAAM0hE,GAAS,IAAIC,IAASw7B,GAE/E,GAAIp9F,KAAK8hE,WAAW63B,QAChB,OAAOvP,EAEX,GAAKhtF,YAAkB4C,KAAKkoE,QAAqB,eAG5C,IAAKloE,KAAKw7F,oBAAoBx7F,KAAKkoE,SAgBpC,OAAOloE,KAAKs9F,cAAclT,EAAKpqF,KAAKkoE,QAAQ57D,QAAQixF,aAfpD,IAAIC,EAAS,IAAIl1B,EACbm1B,EAAS,IAAIj7E,IAAK4nE,GAWtB,OAVAqT,EAAOv5E,WAAa,WAChBnkB,EAAMmkB,WAAWu5E,EAAOz6E,YAAay6E,IAEzCA,EAAOt5E,UAAY,SAAUtJ,EAAMuhF,GAC/BoB,EAAOt6E,QAAQnjB,EAAMmoE,QAAQmzB,gBAAgBxgF,EAAM9a,EAAO,KAAMq8F,EAAQp5E,YAAao5E,EAAS7yB,EAAStpE,KAE3Gw9F,EAAOn5E,UAAY,SAAUzjB,GACzB28F,EAAOr6E,OAAO,CAAC,CAAEsB,MAAO5jB,MAE5B48F,EAAO56E,OAAO3H,OAAM,SAAUra,GAAK,OAAO,KACnC28F,EAAO7iF,QAfd,OAAO3a,KAAKkoE,QAAqB,cAAEkiB,IA2B3CroB,EAAY7lE,UAAUwhG,OAAS,SAAU7iF,EAAMyvD,EAAW3I,EAAO5zB,GACzDu8B,aAAqB1I,MACrBD,EAAQ2I,EACRA,EAAY,MAEhB,IAAI8f,EAAMpqF,KAAKkoE,QAAQw1B,OAAO19F,KAAM6a,EAAMyvD,EAAW3I,EAAO5zB,GAE5D,OAAI/tC,KAAK8hE,WAAW63B,QACTvP,EAENhtF,YAAkB4C,KAAKkoE,QAAqB,eAItCloE,KAAKs9F,cAAclT,EAAKpqF,KAAKkoE,QAAQ57D,QAAQqxF,WAH7C39F,KAAKkoE,QAAqB,cAAEkiB,IAa3CroB,EAAY7lE,UAAUutB,OAAS,SAAUi+C,EAAUlrE,EAAO8tE,EAAW3I,GAC5C,kBAAVnlE,IACPA,EAAQk9D,IAAS3+B,UAAU2sC,EAAUlrE,IAErC8tE,aAAqB1I,MACrBD,EAAQ2I,EACRA,EAAY,MAEhB,IAAIlmE,EAAMpE,KAAKkoE,QAAQz+C,OAAOzpB,KAAM0nE,EAAUlrE,EAAO8tE,EAAW3I,GAEhE,GAAI3hE,KAAK8hE,WAAW63B,QAChB,OAAOv1F,EAEX,GAAKhH,YAAkB4C,KAAKkoE,QAAqB,eAG5C,CACD,IAAIz+C,EAASzpB,KAAKkoE,QAAQ57D,QAAQsxF,aAClC,OAAO59F,KAAKs9F,cAAcl5F,EAAKqlB,GAJ/B,OAAOzpB,KAAKkoE,QAAqB,cAAE9jE,IAc3C29D,EAAY7lE,UAAU2hG,OAAS,SAAUn2B,EAAUlrE,EAAO8tE,EAAW3I,EAAOy7B,GACpE9yB,aAAqB1I,MACrBD,EAAQ2I,EACRA,EAAY,MAEhB,IAAIlmE,EAAMpE,KAAKkoE,QAAQ21B,OAAO79F,KAAM0nE,EAAUlrE,EAAO8tE,EAAW3I,EAAOy7B,GAEvE,GAAIp9F,KAAK8hE,WAAW63B,QAChB,OAAOv1F,EAEX,GAAKhH,YAAkB4C,KAAKkoE,QAAqB,eAG5C,CACD,IAAI21B,EAAS79F,KAAKkoE,QAAQ57D,QAAQwxF,aAClC,OAAO99F,KAAKs9F,cAAcl5F,EAAKy5F,GAJ/B,OAAO79F,KAAKkoE,QAAqB,cAAE9jE,IAO3C29D,EAAY7lE,UAAUs/F,oBAAsB,SAAU15B,GAClD,OAAO9hE,KAAKkoE,QAAQrtC,eACiB,sBAAjC76B,KAAKkoE,QAAQrtC,iBAErBknC,EAAY7lE,UAAU6hG,YAAc,SAAU7f,EAAQke,GAC9Cp8F,KAAKw7F,oBAAoBx7F,KAAKkoE,WAC9Bk0B,EAAU99F,YAAO,GAAI0B,KAAK68F,cAAeT,IAE7C,IACI1iC,IAAS1+C,MAAM2xE,UAAUzO,GAE7B,MAAOr9E,GACHq9E,EAAS,GAEbA,EAASl+E,KAAKkoE,QAAQmzB,gBAAgB3hC,IAAS1+C,MAAM2xE,UAAUzO,GAASl+E,KAAM,KAAMo8F,EAAQp5E,YAAao5E,GACzGp8F,KAAKg+F,aAAa96E,QAAQg7D,IAG9Bnc,EAAY7lE,UAAU+hG,YAAc,SAAUp9F,GAC1Cb,KAAKg+F,aAAa76E,OAAO,CAAC,CAAEsB,MAAO5jB,MAGvCkhE,EAAY7lE,UAAUohG,cAAgB,SAAUl5F,EAAK85F,GACjD,IAAIn+F,EAAQC,KAOZ,GANAoE,EAAM9F,YAAO,GAAI,CACb6M,KAAM,OACNuX,YAAa,kCACbs5E,aAAa,GACd53F,GACHpE,KAAKg+F,aAAe,IAAI11B,EACnBtoE,KAAKw7F,oBAAoBx7F,KAAKkoE,SAU/BloE,KAAK68F,cAAgBz4F,EACrB85F,EAAS58F,KAAKtB,KAAM,CAChB6a,KAAMzW,EAAIyW,KAAMsJ,UAAWnkB,KAAK+9F,YAAY5hG,KAAK6D,MACjDskB,UAAWtkB,KAAKi+F,YAAY9hG,KAAK6D,YAbI,CACzC,IAAIm+F,EAAS,IAAI37E,IAAKpe,GACtB+5F,EAAOj6E,WAAa,WAChBnkB,EAAMmkB,WAAWi6E,EAAOn7E,YAAam7E,IAEzCA,EAAOh6E,UAAYnkB,KAAK+9F,YAAY5hG,KAAK6D,MACzCm+F,EAAO75E,UAAYtkB,KAAKi+F,YAAY9hG,KAAK6D,MACzCm+F,EAAOt7E,OAAO3H,OAAM,SAAUra,GAAK,OAAO,KAS9C,OAAOb,KAAKg+F,aAAarjF,SAEtBonD,EA1fsB,GAggB7BuG,EACA,WACI,IAAIvoE,EAAQC,KAIZA,KAAK2a,QAAU,IAAIsI,SAAQ,SAAUC,EAASC,GAC1CpjB,EAAMmjB,QAAUA,EAChBnjB,EAAMojB,OAASA,KAKnBnjB,KAAK4a,KAAO5a,KAAK2a,QAAQC,KAAKze,KAAK6D,KAAK2a,SAIxC3a,KAAKkb,MAAQlb,KAAK2a,QAAQO,MAAM/e,KAAK6D,KAAK2a,W,6BCzhBlD,uFAKIinD,EAAuB,WAMvB,SAASA,EAAMqnB,GAuBX,OArBAjpF,KAAKi7F,SAAW,KAEhBj7F,KAAKy8F,SAAU,EAEfz8F,KAAKo+F,UAAY,GACjBp+F,KAAKq+F,QAAU,GACfr+F,KAAKhD,IAAM,GACXgD,KAAKgpF,KAAO,GACQ,kBAATC,EACPjpF,KAAKk7F,UAAYjS,EAEZA,GAAQA,aAAgB7qF,QAC7B4B,KAAKm7F,QAAUlS,GAEnBjpF,KAAKs+F,QAAU,GACft+F,KAAKu+F,cAAgB,GACrBv+F,KAAKw+F,eAAiB,GACtBx+F,KAAKi7F,SAAW,KAChBj7F,KAAKy8F,SAAU,EACfz8F,KAAKnE,OAAS,GACdmE,KAAKy+F,SAAW,GACTz+F,KAkYX,OA5XA4hE,EAAM1lE,UAAUwiG,OAAS,SAAUllC,GAE/B,OADAx5D,KAAKhD,IAAMw8D,EACJx5D,MAMX4hE,EAAM1lE,UAAUo/F,MAAQ,SAAUqD,GAE9B,OADA3+F,KAAK2+F,YAAcA,EACZ3+F,MAiBX4hE,EAAM1lE,UAAU0iG,QAAU,SAAUD,EAAa/8D,EAAML,EAAMg6D,GAEzD,OADAoD,EAAcA,GAAe3+F,KAAK2+F,aAEvBA,EAAY9D,aAAa76F,KAAM4hC,EAAML,EAAMg6D,GAE/C7hC,IAASh5D,WAAW,8GAM/BkhE,EAAM1lE,UAAUomE,aAAe,SAAUq8B,GAErC,OADAA,EAAcA,GAAe3+F,KAAK2+F,aAEvBA,EAAYr8B,aAAatiE,MAE7B05D,IAASh5D,WAAW,mHAK/BkhE,EAAM1lE,UAAU+C,MAAQ,WACpB,IAAI4/F,EAAS,IAAIj9B,EAgBjB,OAfAi9B,EAAOR,QAAUr+F,KAAKq+F,QAAQh9F,MAAM,GACpCw9F,EAAO7hG,IAAMgD,KAAKhD,IAClB6hG,EAAOpC,QAAUz8F,KAAKy8F,QACtBoC,EAAOF,YAAc3+F,KAAK2+F,YAC1BE,EAAO3D,UAAYl7F,KAAKk7F,UACxB2D,EAAOhjG,OAASmE,KAAKnE,OAAOwF,MAAM,GAClCw9F,EAAOP,QAAUt+F,KAAKs+F,QAAQj9F,MAAM,GACpCw9F,EAAON,cAAgBv+F,KAAKu+F,cAAcl9F,MAAM,GAChDw9F,EAAOL,eAAiBx+F,KAAKw+F,eAAen9F,MAAM,GAClDw9F,EAAO3C,iBAAmBl8F,KAAKk8F,iBAC/B2C,EAAO5D,SAAWj7F,KAAKi7F,SACvB4D,EAAO7V,KAAOhpF,KAAKgpF,KACnB6V,EAAOzD,gBAAkBp7F,KAAKo7F,gBAC9ByD,EAAOT,UAAYp+F,KAAKo+F,UAAU/8F,MAAM,GACxCw9F,EAAOJ,SAAWz+F,KAAKy+F,SAASp9F,MAAM,GAC/Bw9F,GAMXj9B,EAAM1lE,UAAU+sF,KAAO,SAAU3e,GAE7B,OADAtqE,KAAKk7F,UAAY5wB,EACVtqE,MAOX4hE,EAAM1lE,UAAU4iG,UAAY,SAAU9hG,EAAKR,GAOvC,MANqB,oBAAVA,EACPwD,KAAKnE,OAAO+F,KAAK,CAAE5E,IAAKA,EAAK6rF,GAAIrsF,IAGjCwD,KAAKnE,OAAO+F,KAAK,CAAE5E,IAAKA,EAAKR,MAAOA,IAEjCwD,MAKX4hE,EAAM1lE,UAAU6uF,SAAW,SAAU3b,GAOjC,OALIpvE,KAAKo+F,UADa,kBAAXhvB,EACU,GAAG/tE,MAAMC,KAAK,CAAC8tE,GAAS,GAGxBA,EAAO/tE,MAAM,GAE3BrB,MAMX4hE,EAAM1lE,UAAU6iG,OAAS,SAAUC,GAO/B,OALIh/F,KAAKs+F,QADa,kBAAXU,EACQ,GAAG39F,MAAMC,KAAK,CAAC09F,GAAS,GAGxBA,EAAO39F,MAAM,GAEzBrB,MAUX4hE,EAAM1lE,UAAUgmE,MAAQ,SAAUsU,EAAWpU,EAAU5lE,EAAOsvF,EAAYC,GACtE3pB,EAAWA,EAAYA,EAAU3qD,cAAgB,KACjD,IAAIkkD,EAAY,KAWhB,MAVyB,kBAAd6a,EACP7a,EAAY,IAAImH,EAAU0T,EAAWpU,EAAU5lE,EAAOsvF,EAAYC,GAE7DvV,aAAqB1T,IAC1BnH,EAAY6a,GAEhBx2E,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,UACJhoF,EAAG86D,IAEA37D,MAUX4hE,EAAM1lE,UAAU+iG,OAAS,SAAUC,EAAWC,EAAY/8B,EAAU0pB,EAAYC,GAClD,kBAAfoT,IACPA,EAAa,CAACA,IAEb/8B,GAAyB,SAAbA,IACbA,EAAW,YAEf,IAAIqnB,EAAW/vB,IAASkyB,YAAYxpB,GAYpC,OAXApiE,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,WACJhoF,EAAG,CACCs+F,WAAYA,EACZ/8B,SAAUA,EACV88B,UAAWA,EACXpT,WAAYA,EACZC,aAAcA,EACdtC,SAAUA,KAGXzpF,MAQX4hE,EAAM1lE,UAAUkjG,OAAS,SAAU5oB,EAAWiT,EAAU4V,GACpD,OAAOr/F,KAAKs/F,iBAAiB9oB,EAAWiT,EAAU4V,IAStDz9B,EAAM1lE,UAAUojG,iBAAmB,SAAU9oB,EAAWiT,EAAU4V,EAAaE,GAC3E,IACIC,EACA7tF,EAFA8iE,EAASr3E,YAAkBmiG,GAAyB,YAAZA,EAW5C,GARyB,kBAAd/oB,GAA0B9c,IAAS4tB,SAAS9Q,EAAU/+D,cAAe,WAC5E++D,EAAYA,EAAU95E,QAAQ,UAAW,IACzC+sF,EAAW,cAEVA,GAAgC,kBAAbA,IACpBhV,EAAQgV,EAAWA,EAAShyE,cAAgB,YAC5CgyE,EAAW/vB,IAAS8tB,OAAOiC,IAE3B4V,EAAa,CACbG,EAAQ59B,EAAM69B,cAAcz/F,KAAKq+F,QAAS,YAC1C,IAAK,IAAIzhG,EAAI,EAAGA,EAAI4iG,EAAM3iG,OAAQD,IAE9B,GAAoB,kBADpB+U,EAAO6tF,EAAM5iG,GAAGiE,EAAE21E,YAEd,GAAI7kE,IAAS6kE,EACT,OAAOx2E,UAGV,GAAI2R,aAAgBvT,MACrB,IAAK,IAAI+J,EAAI,EAAGA,EAAIwJ,EAAK9U,OAAQsL,IAC7B,GAAIwJ,EAAKxJ,KAAOquE,GAAaA,EAAU/+D,gBAAkB9F,EAAKxJ,GAAK,QAC/D,OAAOnI,KAc3B,OARAA,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,WACJhoF,EAAG,CACC21E,UAAWA,EACXiT,SAAUA,EACV8V,UAAW9qB,KAGZz0E,MAMX4hE,EAAM1lE,UAAUwjG,WAAa,SAAUlpB,GACnC,OAAOx2E,KAAKo/F,OAAO5oB,EAAW,eAMlC5U,EAAM1lE,UAAU6rF,MAAQ,SAAUvR,EAAWqS,EAAI79E,GAU7C,OATAhL,KAAKo/F,OAAO5oB,EAAW,MAAM,GAC7Bx2E,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,UACJhoF,EAAG,CACC21E,UAAWA,EACXiT,SAAUZ,GAAU,KACpB79E,OAAQA,GAAkB,QAG3BhL,MAOX4hE,EAAM1lE,UAAUyjG,KAAO,SAAUC,EAAWx6B,GAQxC,OAPAplE,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,SACJhoF,EAAG,CACC++F,UAAWA,EACXx6B,SAAUA,KAGXplE,MAOX4hE,EAAM1lE,UAAUsW,MAAQ,SAAUtV,EAAOyb,GAQrC,OAPA3Y,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,UACJhoF,EAAG,CACC3D,MAAOA,EACPyb,IAAKA,KAGN3Y,MAMX4hE,EAAM1lE,UAAU2jG,KAAO,SAAUC,GAO7B,OANA9/F,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,SACJhoF,EAAG,CACCi/F,IAAKA,KAGN9/F,MAMX4hE,EAAM1lE,UAAU6jG,KAAO,SAAUD,GAK7B,OAJA9/F,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,SACJhoF,EAAG,CAAEi/F,IAAKA,KAEP9/F,MAMX4hE,EAAM1lE,UAAUk7B,OAAS,SAAU+nE,GAQ/B,MAP0B,kBAAfA,IACPA,EAAa,GAAG99F,MAAMC,KAAK,CAAC69F,GAAa,IAE7Cn/F,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,WACJhoF,EAAG,CAAEs+F,WAAYA,KAEdn/F,MAOX4hE,EAAM1lE,UAAU8jG,UAAY,SAAUr+B,EAAOs+B,GAGzC,OAFAjgG,KAAKk8F,iBAAmB+D,EACxBjgG,KAAKi7F,SAAWt5B,EACT3hE,MAMX4hE,EAAM1lE,UAAUgkG,WAAa,SAAUljG,GAEnC,OADAgD,KAAKgpF,KAAOhsF,EACLgD,MAKX4hE,EAAM1lE,UAAUikG,cAAgB,WAE5B,OADAngG,KAAKo7F,iBAAkB,EAChBp7F,MAQX4hE,EAAM1lE,UAAUkkG,UAAY,SAAUj1F,EAAMquD,GAKxC,OAJAx5D,KAAKq+F,QAAQz8F,KAAK,CACdinF,GAAI,eACJhoF,EAAG,CAAE24D,MAAOA,EAAOruD,KAAMA,KAEtBnL,MAQX4hE,EAAM69B,cAAgB,SAAUpB,EAASjkF,GACrC,OAAOikF,EAAQntE,QAAO,SAAUmvE,GAC5B,OAAOA,EAAExX,KAAOzuE,MASxBwnD,EAAM0+B,iBAAmB,SAAUjC,EAASkC,GAKxC,IAJA,IAAIC,EAAWnC,EAAQntE,QAAO,SAAUmvE,GACpC,OAAkC,IAA3BE,EAAQpiG,QAAQkiG,EAAExX,OAEzBzkF,EAAM,GACDxH,EAAI,EAAGA,EAAI4jG,EAAS3jG,OAAQD,IAC5BwH,EAAIo8F,EAAS5jG,GAAGisF,MACjBzkF,EAAIo8F,EAAS5jG,GAAGisF,IAAM2X,EAAS5jG,GAAGiE,GAG1C,OAAOuD,GAEJw9D,EA/ZgB,GAsavBkB,EAA2B,WAS3B,SAASA,EAAUtJ,EAAO4I,EAAU5lE,EAAOsvF,EAAYC,GA0BnD,YAzBmB,IAAfD,IAAyBA,GAAa,GAE1C9rF,KAAK+rF,cAAe,EAEpB/rF,KAAKygG,WAAY,EACI,kBAAVjnC,GACPx5D,KAAKw5D,MAAQA,EACbx5D,KAAKoiE,SAAWA,EAAS3qD,cACzBzX,KAAKxD,MAAQA,EACbwD,KAAK8rF,WAAaA,EAClB9rF,KAAK+rF,aAAeA,EACpB/rF,KAAKygG,WAAY,EACjBzgG,KAAKypF,SAAW/vB,IAASkyB,YAAYc,gBAAgB1sF,KAAKoiE,YAErD5I,aAAiBsJ,GAAatmE,aAAiBsmE,GAAatmE,aAAiB4B,SAClF4B,KAAKygG,WAAY,EACjBzgG,KAAK8zE,UAAY1R,EAAS3qD,cAC1BzX,KAAK0gG,WAAa,CAAClnC,GACfh9D,aAAiB4B,MACjB,GAAGwD,KAAKxF,MAAM4D,KAAK0gG,WAAYlkG,GAG/BwD,KAAK0gG,WAAW9+F,KAAKpF,IAGtBwD,KAmJX,OA7IA8iE,EAAUK,IAAM,WAEZ,IADA,IAAIljE,EAAO,GACFjC,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCiC,EAAKjC,GAAMY,UAAUZ,GAEzB,OAAO8kE,EAAU69B,kBAAkB,GAAGt/F,MAAMC,KAAKrB,EAAM,GAAI,QAU/D6iE,EAAU5mE,UAAUinE,IAAM,SAAU3J,EAAO4I,EAAU5lE,EAAOsvF,EAAYC,GACpE,OAAOjpB,EAAU89B,QAAQ5gG,KAAMw5D,EAAO4I,EAAU5lE,EAAO,MAAOsvF,EAAYC,IAM9EjpB,EAAUM,GAAK,WAEX,IADA,IAAInjE,EAAO,GACFjC,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCiC,EAAKjC,GAAMY,UAAUZ,GAEzB,OAAO8kE,EAAU69B,kBAAkB,GAAGt/F,MAAMC,KAAKrB,EAAM,GAAI,OAU/D6iE,EAAU5mE,UAAUknE,GAAK,SAAU5J,EAAO4I,EAAU5lE,EAAOsvF,EAAYC,GACnE,OAAOjpB,EAAU89B,QAAQ5gG,KAAMw5D,EAAO4I,EAAU5lE,EAAO,KAAMsvF,EAAYC,IAM7EjpB,EAAU+9B,SAAW,SAAU7+B,GAC3B,GAAIA,aAAgB5jE,MAAO,CAEvB,IADA,IAAIgG,EAAM,GACDxH,EAAI,EAAG+E,EAAMqgE,EAAKnlE,OAAQD,EAAI+E,EAAK/E,IACxCwH,EAAIxC,KAAK5B,KAAK8gG,aAAa9+B,EAAKplE,KAEpC,OAAOwH,EAEX,IAAIw3D,EAAOoG,EACX,OAAOhiE,KAAK8gG,aAAallC,IAM7BkH,EAAU5mE,UAAU6kG,SAAW,SAAU7iB,GACrC,IACI8iB,EACAl8F,EAFA62D,EAAY37D,KAAK0gG,WAAa1gG,KAAK0gG,WAAa,GAGpD,IAAK1gG,KAAKygG,WAAazgG,KAAKypF,SACxB,OAAOzpF,KAAKypF,SAASnoF,KAAKtB,KAAM05D,IAAS3+B,UAAU/6B,KAAKw5D,MAAO0kB,GAASl+E,KAAKxD,MAAOwD,KAAK8rF,WAAY9rF,KAAK+rF,cAE9GiV,EAA2B,QAAnBhhG,KAAK8zE,UACb,IAAK,IAAIl3E,EAAI,EAAGA,EAAI++D,EAAU9+D,OAAQD,IAElC,GADAkI,EAAM62D,EAAU/+D,GAAGmkG,SAAS7iB,GACxB8iB,GACA,IAAKl8F,EACD,OAAO,OAIX,GAAIA,EACA,OAAO,EAInB,OAAOk8F,GAMXl+B,EAAU5mE,UAAU+kG,OAAS,WACzB,IAAIP,EACAjvF,EACJ,GAAIzR,KAAKygG,UAAW,CAChBC,EAAa,GACbjvF,EAAIzR,KAAK0gG,WACT,IAAK,IAAI9jG,EAAI,EAAGA,EAAI6U,EAAE5U,OAAQD,IAC1B8jG,EAAW9+F,KAAK6P,EAAE7U,GAAGqkG,UAG7B,MAAO,CACHR,UAAWzgG,KAAKygG,UAChBjnC,MAAOx5D,KAAKw5D,MACZ4I,SAAUpiE,KAAKoiE,SACf5lE,MAAOwD,KAAKxD,MACZsvF,WAAY9rF,KAAK8rF,WACjBC,aAAc/rF,KAAK+rF,aACnBjY,UAAW9zE,KAAK8zE,UAChB4sB,WAAYA,IAGpB59B,EAAU69B,kBAAoB,SAAUD,EAAYt+B,GAChD,GAA0B,IAAtBs+B,EAAW7jG,OAAc,CACzB,KAAM6jG,EAAW,aAActiG,OAC3B,OAAOsiG,EAAW,GAEtBA,EAAaA,EAAW,GAE5B,OAAO,IAAI59B,EAAU49B,EAAW,GAAIt+B,EAAUs+B,EAAWr/F,MAAM,KAEnEyhE,EAAU89B,QAAU,SAAUhlC,EAAMpC,EAAO4I,EAAU5lE,EAAOs3E,EAAWgY,EAAYC,GAC/E,OAAIvyB,aAAiBsJ,EACVA,EAAUgR,GAAWlY,EAAMpC,GAEjB,kBAAVA,EACAsJ,EAAUgR,GAAWlY,EAAM,IAAIkH,EAAUtJ,EAAO4I,EAAU5lE,EAAOsvF,EAAYC,IAEjFryB,IAASh5D,WAAW,eAAiBozE,EAAY,yBAE5DhR,EAAUg+B,aAAe,SAAU9+B,GAK/B,IAJA,IAAIk/B,EAAQl/B,EAAK0+B,YAAc,GAC3B/+F,EAAMu/F,EAAMrkG,OACZ6jG,EAAa,GAER9jG,EAAI,EAAGA,EAAI+E,EAAK/E,IACrB8jG,EAAW9+F,KAAK5B,KAAK8gG,aAAaI,EAAMtkG,KAQ5C,OANKolE,EAAKy+B,UAIG,IAAI39B,EAAU49B,EAAW,GAAI1+B,EAAK8R,UAAW4sB,EAAWr/F,MAAM,IAH9D,IAAIyhE,EAAUd,EAAKxI,MAAOwI,EAAKI,SAAUJ,EAAKxlE,MAAOwlE,EAAK8pB,WAAY9pB,EAAK+pB,eAOrFjpB,EAtLoB,I,6BC3ahB,SAASq+B,EAAgB5kG,EAAKS,EAAKR,GAYhD,OAXIQ,KAAOT,EACT2B,OAAOwpB,eAAenrB,EAAKS,EAAK,CAC9BR,MAAOA,EACPsrB,YAAY,EACZC,cAAc,EACdknE,UAAU,IAGZ1yF,EAAIS,GAAOR,EAGND,EAZT,mC,6BCAA,8CAEA,SAAS6kG,EAAQt9B,EAAQu9B,GACvB,IAAIpkG,EAAOiB,OAAOjB,KAAK6mE,GAEvB,GAAI5lE,OAAOojG,sBAAuB,CAChC,IAAI7xF,EAAUvR,OAAOojG,sBAAsBx9B,GACvCu9B,IAAgB5xF,EAAUA,EAAQyhB,QAAO,SAAU9R,GACrD,OAAOlhB,OAAO6gC,yBAAyB+kC,EAAQ1kD,GAAK0I,eAEtD7qB,EAAK2E,KAAKxF,MAAMa,EAAMwS,GAGxB,OAAOxS,EAGM,SAASskG,EAAetkE,GACrC,IAAK,IAAIrgC,EAAI,EAAGA,EAAIgC,UAAU/B,OAAQD,IAAK,CACzC,IAAIgB,EAAyB,MAAhBgB,UAAUhC,GAAagC,UAAUhC,GAAK,GAE/CA,EAAI,EACNwkG,EAAQljG,OAAON,IAAS,GAAMoB,SAAQ,SAAUhC,GAC9C,YAAeigC,EAAQjgC,EAAKY,EAAOZ,OAE5BkB,OAAOsjG,0BAChBtjG,OAAOujG,iBAAiBxkE,EAAQ/+B,OAAOsjG,0BAA0B5jG,IAEjEwjG,EAAQljG,OAAON,IAASoB,SAAQ,SAAUhC,GACxCkB,OAAOwpB,eAAeuV,EAAQjgC,EAAKkB,OAAO6gC,yBAAyBnhC,EAAQZ,OAKjF,OAAOigC,I,iBCjCTqH,EAAO8X,QAAU,EAAQ,M,8BCAzB,iFAYIslD,EAA8B,WAC9B,SAASA,EAAanhG,EAAQohG,GAC1B3hG,KAAK4hG,UAAYD,EAAQ1hC,WAAW,gBACpCjgE,KAAK6hG,UAAYF,EAAQ1hC,WAAW,kBACpCjgE,KAAKO,OAASA,EACdP,KAAKgB,QAAUhB,KAAKO,OAAOY,cAAc,KAAM,CAAEktB,UAAWguC,IAAkBtpC,MAAO,CAAE+uE,KAAM,WAAYC,SAAU,QACnH/hG,KAAKgiG,UAAYhiG,KAAKO,OAAOY,cAAc,QAAS,CAAEktB,UAAW,gBAAiB0E,MAAO,CAAE,KAAQ,cAoRvG,OA7QA2uE,EAAaxlG,UAAU+lG,OAAS,WAC5B,MAAO,IAWXP,EAAaxlG,UAAU8O,OAAS,SAAUyuD,EAAQj9D,EAAOqe,GAOrD,OANKzd,YAAkBq8D,EAAOzuD,UACN,WAAhByuD,EAAOtuD,MAAqBiB,MAAM+J,SAAS3Z,EAAO,OAClDA,EAAQ,MAEZA,EAAQwD,KAAK6hG,UAAUK,OAAO1lG,EAAOi9D,EAAO0oC,iBAEzC/kG,YAAkBZ,GAAS,GAAKA,EAAM2Q,YAGjDu0F,EAAaxlG,UAAU6G,SAAW,SAAU0wB,EAAMssD,EAAMllE,EAAM0Y,EAAY6uE,EAAOC,GAC7E,IAAI9+F,EACA5E,EACJ,GAAIohF,EAAKtmB,OAAOnuC,SAAU,CACtB,IAAIg3E,EAAkBtiG,KAAKO,OAAOgiG,SAA6C,kBAA1BxiB,EAAKtmB,OAAOnuC,SAC7Dk3E,EAAa,CAAC,SACdC,EAAYl9B,YAAgB,GAAI1qD,IAAOtX,EAAK,IAAO8vD,MAAkB+uC,EAAO7+F,EAAGk2D,OAASsmB,EAAKtmB,OAAQl2D,IACrGm/F,EAAa1iG,KAAKO,OAAOS,QAAQyY,GAAKsmE,EAAKtmB,OAAOh+D,IAClDiJ,EAAM,mBACV,GAAI49F,EAAiB,CACjB,IAAI/jG,EAAS,CAAE,MAASg1B,EAAWivE,EAAW,KAC9CziB,EAAKtmB,OAAOkpC,mBAAZ5iB,CAAgCzhF,YAAOC,EAAQkkG,GAAYziG,KAAKO,OAAQ,iBAAkBmiG,EAAY1iG,KAAKO,OAAOmE,GAAM,KAAM+uB,GAC9HzzB,KAAKO,OAAOqiG,uBAGZjkG,EAASohF,EAAKtmB,OAAOkpC,mBAAZ5iB,CAAgCzhF,YAAO,CAAE,MAASi1B,EAAWivE,EAAW,KAAOC,GAAYziG,KAAKO,OAAQ,WAAYmiG,EAAY1iG,KAAKO,OAAOmE,IASzJ,OAPK49F,GACDnkC,YAAe1qC,EAAM90B,GAEzBqB,KAAKO,OAAOyZ,OAAO,kBAAmB,CAAEsR,SAAU3sB,IAClDA,EAAS,KACT80B,EAAKmC,aAAa,aAAcnC,EAAK2hE,UAAL3hE,mCAC5BssD,EAAKtmB,OAAOsD,aACT,EAEX,OAAO,GAUX2kC,EAAaxlG,UAAU2mG,gBAAkB,SAAUppC,EAAQj9D,EAAOqe,GACzDzd,YAAkBq8D,EAAOooC,aAGtBrlG,EAFA68D,YAAuBI,EAAOooC,UAAW,aAEjC,IAAIA,EADIpoC,EAAOooC,YACCxlG,SAASo9D,EAAQ5+C,GAER,oBAArB4+C,EAAOooC,UACXpoC,EAAOooC,UAAUpoC,EAAQ5+C,GAGzB4+C,EAAOooC,UAAUxlG,SAASo9D,EAAQ5+C,IAGlD,OAAOre,GAYXklG,EAAaxlG,UAAUwzB,OAAS,SAAUqwD,EAAMllE,EAAM0Y,EAAYmnC,EAAU2nC,GACxE,OAAOriG,KAAK8iG,YAAY/iB,EAAMllE,EAAM0Y,EAAY8uE,IAWpDX,EAAaxlG,UAAU6mG,UAAY,SAAUj1B,EAAIiS,EAAMllE,EAAM0Y,GACzD,IAAI8uE,EAA2C,UAAlCriG,KAAKO,OAAOm/D,aAAaviD,MAAoB2wD,EAAG93C,UAAUzD,SAAS,qBAChF,GAAIvyB,KAAKO,OAAOgiG,QAAS,CACrBz0B,EAAG1rE,UAAY,GACf,IAAI4gG,EAAYl1B,EAAGk1B,UACfC,EAAYn1B,EAAGl6B,cACnBnqB,aAAOqkD,GACP,IAAIo1B,EAAQljG,KAAK8iG,YAAY/iB,EAAMllE,EAAM0Y,EAAY8uE,GACrDriG,KAAKmjG,gBAAgBD,EAAOp1B,GACxBm1B,EAAU3iC,MAAMzjE,SAAWmmG,EAAY,EACvCC,EAAUpsE,aAAaqsE,EAAOD,EAAU3iC,MAAM0iC,IAG9CC,EAAUjhG,YAAYkhG,OAGzB,CACD,IAAIzvE,EAAOzzB,KAAK8iG,YAAY/iB,EAAMllE,EAAM0Y,EAAY8uE,GACpDv0B,EAAG1rE,UAAY,GACf0rE,EAAGl4C,aAAa,aAAcnC,EAAKtE,aAAa,eAEhD,IADA,IACSnxB,EAAK,EAAGgiC,EADF,GAAG3+B,MAAMC,KAAKmyB,EAAKnF,YACMtwB,EAAKgiC,EAAWnjC,OAAQmB,IAAM,CAClE,IAAIqF,EAAO28B,EAAWhiC,GACtB8vE,EAAG9rE,YAAYqB,MAK3Bq+F,EAAaxlG,UAAUinG,gBAAkB,SAAUlmE,EAAQr/B,GAOvD,IALA,IAIIs+C,EAJAnpB,EAAQn1B,EAAO21B,WAEf32B,EAAIm2B,EAAMl2B,OAGPD,KACHs/C,EAAOnpB,EAAMn2B,GACbqgC,EAAOrH,aAAasmB,EAAK9hC,KAAM8hC,EAAK1/C,QAG5CklG,EAAaxlG,UAAU4mG,YAAc,SAAU/iB,EAAMllE,EAAM0Y,EAAY8uE,GACnE,IAAI9+F,EAGA6+F,EAFA3uE,EAAOzzB,KAAKgB,QAAQiB,YACpBw3D,EAASsmB,EAAKtmB,OAEdsmB,EAAKve,eACL4gC,EAAQriB,EAAK1sB,eAAe,MAAO9vD,EAAK,IAAOk2D,EAAOuD,iBAAmBvD,EAAOzuD,OAAS,KAAO,GAAIzH,IAGxG,IAAI6/F,EAAYpjG,KAAKiiG,SACjBzlG,EAAQujF,EAAKve,aAAexhE,KAAK3D,SAASo9D,EAAOuD,gBAAiBolC,EAAO3oC,GACzEz5D,KAAK3D,SAASo9D,EAAOD,MAAO3+C,EAAM4+C,GAMtC,GALqB,SAAhBA,EAAOtuD,MAAmC,aAAhBsuD,EAAOtuD,MAAyB/N,YAAkBZ,KAC7EA,EAAQ,IAAI2M,KAAK3M,IAGrB4mG,GADA5mG,EAAQwD,KAAKgL,OAAOyuD,EAAQj9D,EAAOqe,IACjB1N,WACE,YAAhBssD,EAAOtuD,OAAuBsuD,EAAO4pC,kBAAmB,CACxD,IAAIC,EAAuB,SAAV9mG,GAA8B,UAAVA,EAAqB,KAAiB,SAAVA,EAAmB,OAAS,QAC7F4mG,EAAYE,EAAYtjG,KAAK4hG,UAAU/qD,YAAYysD,GAAaF,EAEpE,IAAIG,EAAgBvjG,KAAK6iG,gBAAgBppC,EAAQj9D,EAAOqe,GAGxD,GAFAuoF,EAAahmG,YAAkBq8D,EAAOooC,WAAgFuB,EAAnEhmG,YAAkBmmG,GAAiB,GAAKA,EAAcp2F,WACzGsmB,EAAKmC,aAAa,aAAcwtE,EAAY,kBAAoBrjB,EAAKtmB,OAAOsD,YACxE/8D,KAAK+C,SAAS0wB,EAAMssD,EAAMllE,EAAM0Y,EAAY6uE,EAAOC,IAA2B,aAAhB5oC,EAAOtuD,KACrEnL,KAAKwjG,WAAW/vE,EAAM2vE,EAAW3pC,EAAOgqC,aAAehqC,EAAOgqC,eAAiB,kBAE9E,GAAoB,aAAhBhqC,EAAOtuD,KAAqB,CACjCsoB,EAAKuC,UAAUjN,IAAIszC,KACnB5oC,EAAKmC,aAAa,aAAc,YAE5Bp5B,IADAwD,KAAKO,OAAOmjG,kBAAkBC,kBACZ,SAAVnnG,GAKRonG,EAAYC,YAAe7jG,KAAKO,OAAOY,eAAe,EAAO,CAAE+/D,QAAS1kE,EAAOi5E,MAAO,OAChF5+C,aAAa72B,KAAKgiG,UAAU//F,YAAa2hG,EAAUE,YAC7DrwE,EAAKzxB,YAAY4hG,GAMrB,GAJiC,UAA7B5jG,KAAKO,OAAOwjG,cAA4B/jG,KAAKO,OAAOqjE,uBACpDmc,EAAKsC,YAAa,GAEtBriF,KAAKgkG,cAAcvwE,EAAMssD,EAAMxsD,GACX,YAAhBkmC,EAAOtuD,MAAsBsuD,EAAO4pC,kBAAmB,CACvD,IAAIniC,EAAU90D,MAAM+J,SAAS3Z,EAAM2Q,WAAY,KAAiB,SAAV3Q,EAAmB2Z,SAAS3Z,EAAM2Q,WAAY,IAAM,EACtGy2F,EAAYC,YAAe7jG,KAAKO,OAAOY,eAAe,EAAO,CAAE+/D,QAASA,EAASuU,MAAO,MAC5FhiD,EAAKrxB,UAAY,GACjBwhG,EAAU5tE,UAAUjN,IAAI,uBACxB0K,EAAKzxB,YAAY4hG,GACjBnwE,EAAKmC,aAAa,aAAcsrC,EAAU,kBAAoB6e,EAAKtmB,OAAOsD,YAE9E,OAAOtpC,GAUXiuE,EAAaxlG,UAAUsnG,WAAa,SAAU/vE,EAAM2vE,EAAW7pF,GAG3D,YAFiB,IAAbA,IAAuBA,EAAW,aACtCka,EAAKla,GAAY6pF,EACV3vE,GASXiuE,EAAaxlG,UAAU8nG,cAAgB,SAAUvwE,EAAMssD,EAAMxsD,GACzD,IAAIkmC,EAASsmB,EAAKtmB,OAClBz5D,KAAKikG,uBAAuBxwE,EAAMssD,EAAsB,aAAhBtmB,EAAOtuD,MAC/C+wD,aAAsBzoC,EAAMF,GAC5B2oC,aAAsBzoC,EAAMssD,EAAKxsD,YAC7BkmC,EAAO0C,kBACPD,aAAsBzoC,EAAMgmC,EAAO0C,kBAEF,aAAjCn8D,KAAKO,OAAO2jG,kBACZhoC,aAAsBzoC,EAAM,CAAE,YAAagmC,EAAOsD,aAElDtD,EAAO0qC,YACP1wE,EAAKO,MAAMmwE,UAAY1qC,EAAO0qC,WAEV,SAApB1qC,EAAO2qC,WAAyB3qC,EAAO2qC,UAAqC,SAAzBpkG,KAAKO,OAAO6jG,SAC/D3wE,EAAKuC,UAAUjN,IAAI,eAEM,wBAApB0wC,EAAO2qC,WAAwC3qC,EAAO2qC,UAAqC,wBAAzBpkG,KAAKO,OAAO6jG,WAC/D,aAAhB3qC,EAAOtuD,MACPsoB,EAAKuC,UAAUjN,IAAI,sBAI/B24E,EAAaxlG,UAAU+nG,uBAAyB,SAAUxwE,EAAMssD,EAAMskB,GAClE,IAAInoD,EAAO,GACP/3C,EAAqBk4D,IACrBtmC,EAAU,GACVgqD,EAAK/G,UACL98B,EAAK88B,QAAU+G,EAAK/G,SAEpB+G,EAAK3G,UACLl9B,EAAKk9B,QAAU2G,EAAK3G,SAEpB2G,EAAKukB,YACLvuE,EAAQn0B,KAAK,kBAEbm+E,EAAKsC,aACLtsD,EAAQn0B,KAAKxF,MAAM25B,EAAS,CAAC,wBAAyB,aAClDsuE,GACA5wE,EAAKnwB,cAAc,YAAY0yB,UAAUjN,IAAI,YAGjDg3D,EAAKwkB,kBACLxuE,EAAQn0B,KAAKxF,MAAM25B,EAAS,CAAC,sBAE7BgqD,EAAKykB,WAAaj2B,IAAS4O,OAC3BjhC,EAAK/3C,GAAiB47E,EAAKjH,SAErB17E,YAAkB2iF,EAAKvlE,SAC7B0hC,EAAK/3C,GAAiB47E,EAAKvlE,OAE1BulE,EAAK7iB,SACNnnC,EAAQn0B,KAAK,UAEjBs6C,EAAKuoD,MAAQ1uE,EACbmmC,aAAsBzoC,EAAMyoB,IAEhCwlD,EAAaxlG,UAAUG,SAAW,SAAUm9D,EAAO3+C,EAAM4+C,GACrD,OAAOA,EAAOF,cAAcC,EAAO3+C,EAAM4+C,IAEtCioC,EA1RuB,I,kWCV5BgD,ECCqB,SAAAtqF,G,IACnBjB,EAAUwrF,c,OAChBxrF,EAAQyrF,YAAcxqF,EAEfjB,EDL4B0rF,CAAmB,kBEQlD1rF,EAPqB,SAAAiB,G,IACnBjB,EAAUwrF,c,OAChBxrF,EAAQyrF,YAAcxqF,EAEfjB,EAGqB2rF,CAAmB,UCA3CpU,E,uBAKQnsF,G,2BACJA,IAAN,MAEKujE,MAAQ,CACX9+B,SAAUzkC,EAAM2kC,QAAQF,U,EAQrB+7D,YAAa,E,EACbC,iBAAmB,KAEnBzgG,EAAM0gG,gB,EACJC,SAAW3gG,EAAM2kC,QAAQi8D,QAAO,SAAAn8D,GAC/BjpC,EAAKglG,W,EACFx8D,SAAS,CAAES,a,EAEXg8D,iBAAmBh8D,M,qBAxBzBo8D,iBAAP,SAAwB7R,G,MACf,CAAED,KAAM,IAAK1wE,IAAK,IAAK/mB,OAAQ,GAAIwpG,QAAsB,MAAb9R,I,2BA6BrD+R,kBAAA,W,KACOP,YAAa,EAEd/kG,KAAKglG,kB,KACFz8D,SAAS,CAAES,SAAUhpC,KAAKglG,oB,EAInCO,qBAAA,WACMvlG,KAAKklG,UAAUllG,KAAKklG,Y,EAG1Bx1E,OAAA,W,OAEI+gE,IAAAtvF,cAACgY,EAAcqsF,SAAf,CACEhpG,MAAO,CACL0sC,QAASlpC,KAAKuE,MAAM2kC,QACpBF,SAAUhpC,KAAK8nE,MAAM9+B,SACrBpmC,MAAO8tF,EAAO0U,iBAAiBplG,KAAK8nE,MAAM9+B,SAASuqD,UACnD0R,cAAejlG,KAAKuE,MAAM0gG,gBAG5BxU,IAAAtvF,cAACujG,EAAec,SAAhB,CACE10E,SAAU9wB,KAAKuE,MAAMusB,UAAY,KACjCt0B,MAAOwD,KAAKuE,MAAM2kC,Y,GAvDPunD,IAAMnqD,WCAAmqD,IAAMnqD,UCRTmqD,IAAMnqD,UCA9B,IAAMm/D,EAAQ,GAEVC,EAAa,EAuBjB,SAASjS,EAAUF,EAAUjnF,QAAc,IAAdA,MAAU,KACd,kBAAZA,GAAwBlO,MAAMC,QAAQiO,MAC/CA,EAAU,CAAEgnF,KAAMhnF,I,MAG+CA,EAA3DgnF,EALiCqS,EAKjCrS,K,IAAMP,aAL2B,IAAA6S,K,IAKZxS,cALY,IAAAyS,K,IAKI1S,iBALJ,IAAA2S,K,MAO3B,GAAGh0E,OAAOwhE,GAEX5pB,QAAO,SAACh4C,EAAS4hE,G,IACvBA,GAAiB,KAATA,EAAa,OAAO,K,GAC7B5hE,EAAS,OAAOA,E,MAhCxB,SAAqB4hE,EAAMhnF,G,IACnBy5F,EAAW,GAAGz5F,EAAQqM,IAAMrM,EAAQ8mF,OAAS9mF,EAAQ6mF,UACrD6S,EAAYP,EAAMM,KAAcN,EAAMM,GAAY,I,GAEpDC,EAAU1S,GAAO,OAAO0S,EAAU1S,G,IAEhCr2F,EAAO,GAEP0B,EAAS,CAAEsnG,OADFC,IAAa5S,EAAMr2F,EAAMqP,GACfrP,Q,OAErByoG,EAba,MAcfM,EAAU1S,GAAQ30F,EAClB+mG,KAGK/mG,EAmBoBwnG,CAAY7S,EAAM,CACzC36E,IAAKo6E,EACLK,SACAD,cAHM8S,EAJ6BG,EAI7BH,OAAQhpG,EAJqBmpG,EAIrBnpG,KAKV2F,EAAQqjG,EAAOhhF,KAAKsuE,G,IAErB3wF,EAAO,OAAO,K,IAEZggB,EAAkBhgB,EAbY,GAatB25D,EAAU35D,EAbYvB,MAAA,GAc/BgkG,EAAU9R,IAAa3wE,E,OAEzBmwE,IAAUsS,EAAgB,KAEvB,CACL/R,OACA1wE,IAAc,MAAT0wE,GAAwB,KAAR1wE,EAAa,IAAMA,EACxCyiF,UACAxpG,OAAQoB,EAAKysE,QAAO,SAAC28B,EAAMrpG,EAAKwd,G,OAC9B6rF,EAAKrpG,EAAIod,MAAQmiD,EAAO/hD,GACjB6rF,IACN,OAEJ,M,IClCCC,E,kGACJ52E,OAAA,W,kBAEI+gE,IAAAtvF,cAACgY,EAAci5E,SAAf,MACG,SAAAmU,GACWA,GAAVlU,aAAU,G,IAEJrpD,EAAWjpC,EAAKwE,MAAMykC,UAAYu9D,EAAQv9D,SAC1CpmC,EAAQ7C,EAAKwE,MAAMiiG,cACrBzmG,EAAKwE,MAAMiiG,cACXzmG,EAAKwE,MAAM+uF,KACXG,EAAUzqD,EAASuqD,SAAUxzF,EAAKwE,OAClCgiG,EAAQ3jG,MAEN2B,EAAKqqF,YAAA,GAAQ2X,EAAR,CAAiBv9D,WAAUpmC,U,EAEA7C,EAAKwE,MAArCusB,EAZI21E,EAYJ31E,SAAU1tB,EAZNqjG,EAYMrjG,UAAWssB,EAZjB+2E,EAYiB/2E,O,OAIvBtxB,MAAMC,QAAQyyB,IAAiC,IAApBA,EAASj0B,SACtCi0B,EAAW,MAIX2/D,IAAAtvF,cAACgY,EAAcqsF,SAAf,CAAwBhpG,MAAO+H,GAC5BA,EAAM3B,MACHkuB,EACsB,oBAAbA,EAGHA,EAASvsB,GACXusB,EACF1tB,EACAqtF,IAAMtvF,cAAciC,EAAWmB,GAC/BmrB,EACAA,EAAOnrB,GACP,KACkB,oBAAbusB,EAGLA,EAASvsB,GACX,U,GA1CEksF,IAAMnqD,WCrB1B,SAASogE,EAAgBpT,G,MACG,MAAnBA,EAAKqT,OAAO,GAAarT,EAAO,IAAMA,EAY/C,SAASsT,EAAcC,EAAU79D,G,IAC1B69D,EAAU,OAAO79D,E,IAEhB5+B,EAAOs8F,EAAgBG,G,OAEW,IAApC79D,EAASuqD,SAASp1F,QAAQiM,GAAoB4+B,E,eAG7CA,EADL,CAEEuqD,SAAUvqD,EAASuqD,SAASlmF,OAAOjD,EAAKvN,UAI5C,SAASiqG,EAAU99D,G,MACU,kBAAbA,EAAwBA,EAAW+9D,YAAW/9D,GAG9D,SAASg+D,EAAcC,G,OACd,WACL5U,aAAU,IAId,SAAS6U,KAQkBzW,IAAMnqD,U,ICzC3B6gE,E,kGACJz3E,OAAA,W,kBAEI+gE,IAAAtvF,cAACgY,EAAci5E,SAAf,MACG,SAAAj5E,GACWA,GAAVk5E,aAAU,G,IAINrxF,EAAS4B,EAFPomC,EAAWjpC,EAAKwE,MAAMykC,UAAY7vB,EAAQ6vB,S,OAQhDynD,IAAM2W,SAASpoG,QAAQe,EAAKwE,MAAMusB,UAAU,SAAAxwB,G,GAC7B,MAATsC,GAAiB6tF,IAAM4W,eAAe/mG,GAAQ,CAChDU,EAAUV,E,IAEJgzF,EAAOhzF,EAAMiE,MAAM+uF,MAAQhzF,EAAMiE,MAAM0kF,KAE7CrmF,EAAQ0wF,EACJG,EAAUzqD,EAASuqD,SAAV3E,YAAC,GAAwBtuF,EAAMiE,MAA/B,CAAsC+uF,UAC/Cn6E,EAAQvW,UAITA,EACH6tF,IAAM6W,aAAatmG,EAAS,CAAEgoC,WAAUw9D,cAAe5jG,IACvD,S,GA7BO6tF,IAAMnqD,WCD3B,SAASihE,EAAWjhE,G,IACZs+D,EAAc,eAAct+D,EAAUs+D,aAAet+D,EAAUlsB,MAApD,IACX8F,EAAI,SAAA3b,G,IACAijG,EAA2CjjG,EAA3CijG,oBAAwBC,EADfhW,YACkCltF,EADlC,yB,OAIfksF,IAAAtvF,cAACgY,EAAci5E,SAAf,MACG,SAAAj5E,G,OAEGA,GADFk5E,aAAU,GAKR5B,IAAAtvF,cAACmlC,EAADsoD,YAAA,GACM6Y,EACAtuF,EAFN,CAGE44E,IAAKyV,S,OAQjBtnF,EAAE0kF,YAAcA,EAChB1kF,EAAEwnF,iBAAmBphE,EAYdqhE,IAAaznF,EAAGomB,GCxCNmqD,IAAMmX,Y,gBCUvBtjE,EAAO8X,QAAUC,EAAQ,IAARA,I,6BCjBnB,4EAAI1d,EAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAU5D+9B,EAAwB,WACxB,SAASA,EAAOvwD,EAAS/L,GACrB,IAAIR,EAAQC,KAMZA,KAAK6nG,mBAAoB,EAOzB7nG,KAAK8nG,cAAe,EAOpB9nG,KAAK+nG,eAAgB,EAOrB/nG,KAAKgoG,gBAAiB,EAOtBhoG,KAAKioG,eAAgB,EAOrBjoG,KAAK88D,iBAAkB,EAOvB98D,KAAKkoG,gBAAiB,EAMtBloG,KAAKmoG,qBAAsB,EAO3BnoG,KAAKu/D,cAAe,EAcpBv/D,KAAKkxB,OAAS,GAOdlxB,KAAKooG,qBAAsB,EAM3BpoG,KAAKqoG,KAAO,GAOZroG,KAAKsoG,gBAAiB,EAQtBtoG,KAAKuoG,SAAU,EACfvoG,KAAKwoG,cAAgB,aAIrBxoG,KAAKyoG,gBAAkB,WAAc,OAAO1oG,EAAM2oG,gBAIlD1oG,KAAK2oG,kBAAoB,WAAc,OAAO5oG,EAAM6oG,kBACpDjrG,YAAMqC,KAAMsM,GACZtM,KAAKO,OAASA,EACI,SAAdP,KAAKmL,KACLnL,KAAKmL,KAAQ7L,gBAAelC,YAAkB4C,KAAKsrB,WAAaluB,YAAkB4C,KAAKw5D,OAAU,OAAS,KAErGx5D,KAAKmL,OACVnL,KAAKmL,KAA8B,kBAAfnL,KAAKmL,KAAqBnL,KAAKmL,KAAKsM,mBAAgBzb,GAExEgE,KAAK6oG,WACL7oG,KAAK6oG,SAAW7oG,KAAK6oG,SAASpxF,eAE9Bra,YAAkB4C,KAAKvE,OACvBuE,KAAKvE,IAAMyiE,YAAO,gBAEtB,IAAI4qC,EAAiB,IAAIC,IA2DzB,GA1DIz8F,EAAQtB,SAAWsB,EAAQtB,OAAOE,UAAYoB,EAAQtB,OAAOA,UAC7DhL,KAAK8/D,aAAagpC,EAAe5oC,kBAAkB5hE,YAAO,GAAIgO,EAAQtB,UACtEhL,KAAKmgE,UAAU2oC,EAAe1oC,kBAAkB9zD,EAAQtB,UAE5DhL,KAAK+tF,OAAS,WAKV,IAJA,IAAI5uB,EAAM,GACN4gC,EAAO,CAAC,SAAU,aAAczgG,cAAa,IAAM,aAAc,WAAY,iBAAkB,OAC/F,eAAgB,iBAAkB,mBAAoB,UACtDrC,EAAOiB,OAAOjB,KAAK8C,GACdnD,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAC7B,GAAgB,YAAZK,EAAKL,GAAkB,CACvBuiE,EAAIliE,EAAKL,IAAM,GACf,IAAK,IAAIuL,EAAI,EAAGA,EAAIpI,EAAM9C,EAAKL,IAAIC,OAAQsL,IACvCg3D,EAAIliE,EAAKL,IAAIgF,KAAK7B,EAAM9C,EAAKL,IAAIuL,GAAG4lF,eAGnCgS,EAAK5hG,QAAQlB,EAAKL,IAAM,IAC7BuiE,EAAIliE,EAAKL,IAAMmD,EAAM9C,EAAKL,KAGlC,OAAOuiE,GAENn/D,KAAKw5D,QACNx5D,KAAKgoG,gBAAiB,EACtBhoG,KAAKioG,eAAgB,EACrBjoG,KAAK8nG,cAAe,EAChB9nG,KAAK+5D,UACL/5D,KAAK+nG,cAAgB/nG,KAAK+5D,QAAQrwC,MAAK,SAAUy1C,GAC7C,OAAOA,EAAI4oC,mBAInB/nG,KAAKgpG,WAAahpG,KAAKmkG,YACvBnkG,KAAKmkG,UAAY,UAEjBnkG,KAAKsrB,UAAYtrB,KAAKipG,oBACtBjpG,KAAKkpG,WAAaltC,aAAiBh8D,KAAKsrB,UAAYtrB,KAAKipG,mBAEzDjpG,KAAKmpG,iBACLnpG,KAAKopG,iBAAmBptC,aAAiBh8D,KAAKmpG,kBAE7C/rG,YAAkB4C,KAAKkxB,SAAWlxB,KAAKkxB,OAAOm4E,eAC/CrpG,KAAKspG,eAAiBttC,aAAiBh8D,KAAKkxB,OAAOm4E,eAEnDrpG,KAAKupG,eACLvpG,KAAK0oG,eAAiB1sC,aAAiBh8D,KAAKupG,eAE5CvpG,KAAKwpG,iBACLxpG,KAAK4oG,iBAAmB5sC,aAAiBh8D,KAAKwpG,iBAE9CxpG,KAAKypG,oBACJrsG,YAAkB4C,KAAK6oG,WAA+B,iBAAlB7oG,KAAK6oG,UAAiD,gBAAlB7oG,KAAK6oG,YAC9E7oG,KAAK6oG,SAAW,eAChB7oG,KAAKqoG,KAAKxsG,OAASyC,YAAO,CACtBwjE,WAAY9hE,KAAK8hE,WACjBH,MAAO,IAAIC,IAASwN,OAAQ,CAAE5yE,MAAOwD,KAAKi9D,iBAAmBj9D,KAAKw5D,MAAOjnD,KAAMvS,KAAKg9D,kBACrFh9D,KAAKqoG,KAAKxsG,SAEbmE,KAAK0pG,aAAc,CACnB,IAAIC,EAAM3pG,KAAK0pG,aACf1pG,KAAK0pG,aAAe,SAAkBnoF,EAAGjL,EAAGszF,EAAMC,GAI9C,GAHmB,kBAARF,IACPA,EAAM5uE,YAAU4uE,EAAK7nG,SAEE,eAAvB9B,KAAKwoG,cAAgC,CACrC,IAAIvgG,EAAIsZ,EACRA,EAAIjL,EACJA,EAAIrO,EACJ,IAAI1L,EAAMqtG,EACVA,EAAOC,EACPA,EAAOttG,EAEX,OAAOotG,EAAIpoF,EAAGjL,EAAGszF,EAAMC,KAG1B7pG,KAAK0pG,cAAgB1pG,KAAKypG,oBAC3BzpG,KAAK0pG,aAAe,SAAUnoF,EAAGjL,GAG7B,OAFAiL,EAAIwZ,YAAUh7B,EAAMi9D,gBAAiBuE,YAAexhE,EAAO,GAAIwhB,GAAG,IAClEjL,EAAIykB,YAAUh7B,EAAMi9D,gBAAiBuE,YAAexhE,EAAO,GAAIuW,GAAG,IACnC,eAAxBvW,EAAMyoG,cAAiC9uC,IAASguB,aAAanmE,EAAGjL,GAAKojD,IAAS+tB,YAAYlmE,EAAGjL,KAqGhH,OA9FAumD,EAAO3gE,UAAU4tG,iBAAmB,WAChC,OAAO9pG,KAAKwoG,eAOhB3rC,EAAO3gE,UAAU6tG,iBAAmB,SAAUxK,GAC1Cv/F,KAAKwoG,cAAgBjJ,GAKzB1iC,EAAO3gE,UAAU0vE,mBAAqB,WAClC,OAAO5rE,KAAKgqG,aAOhBntC,EAAO3gE,UAAUg9B,cAAgB,SAAUugC,GAGvC,IADA,IAAIx8D,EAAOiB,OAAOjB,KAAKw8D,GACd78D,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAC7BoD,KAAK/C,EAAKL,IAAM68D,EAAOx8D,EAAKL,IAExBoD,KAAKO,QAAUP,KAAKO,OAAOgiG,SAAuB,aAAZtlG,EAAKL,IAC3CoD,KAAKO,OAAO0pG,gCAAgCjqG,KAAKvE,MAS7DohE,EAAO3gE,UAAUutG,gBAAkB,WAC/B,SAAUzpG,KAAK8hE,aAAc9hE,KAAKg9D,kBAMtCH,EAAO3gE,UAAUimG,aAAe,WAC5B,OAAOniG,KAAKkqG,UAOhBrtC,EAAO3gE,UAAU4jE,aAAe,SAAUtjE,GACtCwD,KAAKkqG,SAAW1tG,GAKpBqgE,EAAO3gE,UAAUiuG,UAAY,WACzB,OAAOnqG,KAAKoqG,UAOhBvtC,EAAO3gE,UAAUikE,UAAY,SAAU3jE,GACnCwD,KAAKoqG,SAAW5tG,GAKpBqgE,EAAO3gE,UAAUymG,kBAAoB,WACjC,OAAO3iG,KAAKkpG,YAKhBrsC,EAAO3gE,UAAUmuG,kBAAoB,WACjC,OAAOrqG,KAAKopG,kBAKhBvsC,EAAO3gE,UAAUouG,sBAAwB,WACrC,OAAOtqG,KAAKspG,gBAKhBzsC,EAAO3gE,UAAUunG,aAAe,WAC5B,OAAOzjG,KAAK6nG,kBAAoB,cAAgB,aAE7ChrC,EAtTiB,IA4TY,WACpC,SAAS0tC,KAET5rE,EAAW,CACP3B,eACDutE,EAAmBruG,UAAW,aAAS,GAC1CyiC,EAAW,CACP3B,eACDutE,EAAmBruG,UAAW,YAAQ,GACzCyiC,EAAW,CACP3B,eACDutE,EAAmBruG,UAAW,oBAAgB,GAXb,I,6BC1UxC,wEAIIsuG,EACAC,EACAzpG,EACA0pG,EAPJ,OAQIC,GAAc,EAOX,SAAS/pC,EAA+BgqC,EAAQ5pG,GACnD,IAAI6pG,GAAe,EACfC,EAAY,CAAEhoE,KAAM,EAAGE,IAAK,GAC5B+nE,EAAaH,EACjB,IAAKA,IAAW5pG,EACZ,OAAO8pG,EAKX,IAHI1tG,YAAkB4D,EAAQutC,eAA4C,UAA3BvtC,EAAQgzB,MAAM+Z,WACzD88D,GAAe,IAEX7pG,EAAQutC,cAAgBs8D,IAAiBD,GAAU5pG,EAAQutC,eAAiBq8D,GAChFE,EAAUhoE,MAAQ8nE,EAAOn7D,WACzBq7D,EAAU9nE,KAAO4nE,EAAOp7D,UACxBo7D,EAASA,EAAOr8D,aAGpB,IADAq8D,EAASG,GACD/pG,EAAQutC,cAAgBs8D,IAAiBD,GAAU5pG,EAAQutC,eAAiBq8D,GAChFE,EAAUhoE,MAAQ8nE,EAAOnoE,WACzBqoE,EAAU9nE,KAAO4nE,EAAOhoE,UACxBgoE,EAASA,EAAOh3D,cAEpB,OAAOk3D,EAWJ,SAASE,EAAkBC,EAAgBC,EAAWC,EAAWv3D,EAAew3D,GAKnF,GAHAX,OAAYzuG,EACZyuG,EAAYW,EACZT,IAAc/2D,GACTq3D,EACD,MAAO,CAAEnoE,KAAM,EAAGE,IAAK,GAEtBkoE,IACDA,EAAY,QAEXC,IACDA,EAAY,OAEhBT,EAAiBO,EAAeI,cAChCrqG,EAAUiqG,EAEV,OA2BJ,SAAwBK,EAAMC,EAAM51F,GAEhC,OADA60F,EAAcxpG,EAAQqhC,wBACdkpE,EAAOD,GACX,IAAK,YACDE,EAAQC,IAAqB91F,GAC7B+1F,EAAQC,IAAiBh2F,GACzB,MACJ,IAAK,WACD61F,EAAQI,IAAmBj2F,GAC3B+1F,EAAQC,IAAiBh2F,GACzB,MACJ,IAAK,eACD61F,EAAQC,IAAqB91F,GAC7B+1F,EAAQG,IAAqBl2F,GAC7B,MACJ,IAAK,cACD61F,EAAQI,IAAmBj2F,GAC3B+1F,EAAQG,IAAqBl2F,GAC7B,MACJ,IAAK,aACD61F,EAAQM,IAAkBn2F,GAC1B+1F,EAAQG,IAAqBl2F,GAC7B,MACJ,IAAK,eACD61F,EAAQC,IAAqB91F,GAC7B+1F,EAAQK,IAAoBp2F,GAC5B,MACJ,IAAK,cACD61F,EAAQI,IAAmBj2F,GAC3B+1F,EAAQK,IAAoBp2F,GAC5B,MACJ,IAAK,aACD61F,EAAQM,IAAkBn2F,GAC1B+1F,EAAQK,IAAoBp2F,GAC5B,MACJ,QACA,IAAK,UACD61F,EAAQM,IAAkBn2F,GAC1B+1F,EAAQC,IAAiBh2F,GAGjC,OAAOA,EApEAq2F,CAAed,EAAUzzF,cAAe0zF,EAAU1zF,cAD/C,CAAEqrB,KAAM,EAAGE,IAAK,IAS9B,SAASwoE,EAAQhvG,EAAOmZ,GACpBA,EAAImtB,KAAOtmC,EAQf,SAASkvG,EAAQlvG,EAAOmZ,GACpBA,EAAIqtB,IAAMxmC,EAuDd,SAASyvG,IACL,OAAOvB,EAAe7nE,gBAAgBD,WAAa8nE,EAAeloE,KAAKI,UAK3E,SAASspE,IACL,OAAOxB,EAAe7nE,gBAAgBJ,YAAcioE,EAAeloE,KAAKC,WAK5E,SAASspE,IACL,OAAOpB,EAAcH,EAAYvnE,OAASunE,EAAYvnE,OAASgpE,IAKnE,SAASJ,IACL,OAAOF,IAAmBnB,EAAY76D,OAAS,EAKnD,SAASg8D,IACL,OAAOhB,EAAcH,EAAYxnE,IAAMwnE,EAAYxnE,IAAMipE,IAK7D,SAASH,IACL,OAAOtB,EAAY1nE,KAAOopE,IAK9B,SAASN,IACL,OAAOpB,EAAYznE,MAAQmpE,KAAuBzB,GAAcD,EAAY96D,OAAS+6D,EAAU/6D,MAAS+6D,EAAU/6D,MAAQ,GAK9H,SAAS+7D,IACL,OAAOK,IAAoBtB,EAAY96D,MAAQ,I,uFChLpC,SAASy8D,EAAmBv4E,GACzC,OCJa,SAA4BA,GACzC,GAAIx1B,MAAMC,QAAQu1B,GAAM,OAAO,OAAAw4E,EAAA,GAAiBx4E,GDGzC,CAAkBA,IELZ,SAA0By4E,GACvC,GAAsB,qBAAX9c,QAA0BA,OAAOC,YAAYtxF,OAAOmuG,GAAO,OAAOjuG,MAAM6qF,KAAKojB,GFIvD,CAAgBz4E,IAAQ,OAAA04E,EAAA,GAA2B14E,IGLvE,WACb,MAAM,IAAIm7D,UAAU,wIHIwE,K,6BIL9F,kFAYIwd,EAAmC,WAMnC,SAASA,EAAkBhsG,GACvBP,KAAKO,OAASA,EA4GlB,OA1GAgsG,EAAkBrwG,UAAUswG,aAAe,SAAU3xF,EAAM5a,GACvD,IAAI6oE,EAAO,GACPE,EAAahpE,KAAKO,OAAOqjE,sBAAwB3jE,EAAOA,EAAK+oE,WAAa,EAC9EA,EAAahpE,KAAKO,OAAOksG,yBAA2BxsG,EAAOD,KAAK0sG,iBAAiBzsG,GAAQ+oE,EACzF,IAAK,IAAIpsE,EAAI,EAAG+E,EAAMzD,OAAOjB,KAAK4d,GAAMhe,OAAQD,EAAI+E,EAAK/E,IAAKosE,IAC1DF,EAAKlsE,GAAKoD,KAAK2sG,YAAY9xF,EAAKje,GAAIosE,GAExC,OAAOF,GAEXyjC,EAAkBrwG,UAAU0wG,cAAgB,WAExC,IAAIC,EAAO,GACX,GAAI7sG,KAAKO,OAAOusG,gBAAkB9sG,KAAKO,OAAOqkE,UAAW,CACrD,IAAI3kE,EAAO,GACXD,KAAKO,OAAOyZ,OAAO+M,KAA6B9mB,GAChD4sG,EAAKjrG,KAAK5B,KAAK+sG,aAAa9sG,EAAM,KAAMsuE,IAASy+B,eAKrD,OAHIhtG,KAAKO,OAAOijE,iBACZqpC,EAAKjrG,KAAK5B,KAAK+sG,aAAa,GAAI,KAAMx+B,IAAS0+B,cAE5CJ,GAEXN,EAAkBrwG,UAAUywG,YAAc,SAAU9xF,EAAML,EAAO07E,EAAU/6B,EAAQ+xC,EAAKC,EAAQC,GAC5F,IAAI9gG,EAAU,CACdA,eAAyB,IACzBA,EAAQ7Q,IAAMyiE,YAAO,YACrB5xD,EAAQuO,KAAOA,EACfvO,EAAQkO,MAAQA,EAChBlO,EAAQ6uD,OAASA,EACjB7uD,EAAQ6gG,OAASA,EACjB7gG,EAAQmuD,WAAY,EACpBnuD,EAAQ+gG,UAAYH,EACpB5gG,EAAQ8gG,UAAYA,EAChBptG,KAAKO,OAAO+sG,aAC2B,QAAnCttG,KAAKO,OAAO4jE,mBACZ73D,EAAQouD,UAAW,EAEqB,aAAnC16D,KAAKO,OAAO4jE,oBAAqCnkE,KAAKO,OAAOskE,cAAgB7kE,KAAKO,OAAOskE,aAAarqD,KAC3GlO,EAAQouD,SAAW16D,KAAKO,OAAOskE,aAAarqD,GAAOkgD,WAG3DpuD,EAAQ4pF,SAAWA,EACnB5pF,EAAQ28D,WAAWjpE,KAAKO,OAAO2oE,cAAe1uD,EAAQ,IAAM,EAC5DlO,EAAQ28D,WAAWjpE,KAAKO,OAAO2oE,cAAe1uD,EAAQ,IAAM,EAC5DlO,EAAQ+1E,WAAariF,KAAKO,OAAOgtG,wBAAwBpvG,QAAQqc,IAAU,EAC3Exa,KAAKwtG,qBAAqBlhG,GAC1B,IAAIg0D,EAAQtgE,KAAK4sG,gBACbhiD,EAAM,IAAI6iD,IAAInhG,EAAStM,KAAKO,QAGhC,OAFAqqD,EAAI0V,MAAwC,UAAhCtgE,KAAKO,OAAO2pE,gBAA8BlqE,KAAK0tG,cAAcphG,GAASwlB,OAAOwuC,GACnFA,EAAMxuC,OAAO9xB,KAAK0tG,cAAcphG,IAC/Bs+C,GAEX2hD,EAAkBrwG,UAAUsxG,qBAAuB,SAAUlhG,GAEzD,IADA,IAAIqhG,EAAoB3tG,KAAKO,OAAOgmE,uBAC3B3pE,EAAI,EAAGA,EAAI+wG,EAAkB9wG,OAAQD,IAC1CG,aAAS4wG,EAAkB/wG,GAAG48D,MAAO+H,YAAeosC,EAAkB/wG,GAAI0P,EAAQuO,MAAOvO,EAAQ+mD,iBAGzGk5C,EAAkBrwG,UAAUwxG,cAAgB,SAAUphG,GAGlD,IAFA,IAAIshG,EAAU5tG,KAAKO,OAAOmkE,aACtBumB,EAAM,GACDruF,EAAI,EAAGA,EAAIgxG,EAAQ/wG,OAAQD,IAChCquF,EAAIrpF,KAAK5B,KAAK+sG,aAAaa,EAAQhxG,GAAI0P,EAAQ7Q,IAAK2B,YAAkBwwG,EAAQhxG,GAAGosG,eAAYhtG,EAAYuyE,IAASs/B,cAAe,KAAMjxG,EAAG0P,EAAQ+mD,iBAEtJ,OAAO43B,GAaXshB,EAAkBrwG,UAAU6wG,aAAe,SAAUtzC,EAAQq0C,EAAOtJ,EAAUxrB,EAAS+0B,EAAQ16C,GAC3F,IAAI26C,EAAM,CACN,QAAWv0C,EAAOyD,QAClB,YAAe9/D,YAAkBq8D,EAAOD,OAASC,EAAOnuC,UACxD,YAAeluB,YAAkBq8D,EAAOnuC,UACxC,MAASwiF,EACT,OAAUr0C,EACV,SAAar8D,YAAkBonG,GAAuBj2B,IAAS0/B,KAApBzJ,EAC3C,QAAWxrB,EACX,SAAYvf,EAAOuvC,SACnB,aAAgBvvC,EAAOgwC,iBAAmBhwC,EAAOgwC,kBACjD,eAAkBhwC,EAAOgwC,iBAAmBhwC,EAAOgwC,mBAAqBptG,YAASo9D,EAAOD,MAAOnG,IAKnG,OAHI26C,EAAIE,YAAkC,aAApBF,EAAIv0C,OAAOtuD,MAAuB6iG,EAAIhF,YACxDgF,EAAIxzF,MAAQuzF,GAET,IAAII,IAAKH,IAEpBzB,EAAkBrwG,UAAUkyG,YAAc,SAAUptC,GAChD,IAAK,IAAIpkE,EAAI,EAAGA,EAAIokE,EAAMnkE,OAAQD,IAC9BoD,KAAKwtG,qBAAqBxsC,EAAMpkE,IAChCokE,EAAMpkE,GAAG0jE,MAAQtgE,KAAK0tG,cAAc1sC,EAAMpkE,IAE9C,OAAOokE,GAEXurC,EAAkBrwG,UAAUwwG,iBAAmB,SAAUzsG,GACrD,MAA4B,mBAArBA,EAAKm6F,aAAyD,WAArBn6F,EAAKm6F,aAA4C,QAAhBn6F,EAAK6lC,OAChF7lC,EAAK+oE,WAAa,GAErBujC,EAnH4B,I,6BCZvC,SAAS8B,EAAmBC,EAAKprF,EAASC,EAAQorF,EAAOC,EAAQxxG,EAAKkoC,GACpE,IACE,IAAIld,EAAOsmF,EAAItxG,GAAKkoC,GAChB1oC,EAAQwrB,EAAKxrB,MACjB,MAAOioB,GAEP,YADAtB,EAAOsB,GAILuD,EAAK4Z,KACP1e,EAAQ1mB,GAERymB,QAAQC,QAAQ1mB,GAAOoe,KAAK2zF,EAAOC,GAIxB,SAASC,EAAkB5lB,GACxC,OAAO,WACL,IAAI6F,EAAO1uF,KACPC,EAAOrB,UACX,OAAO,IAAIqkB,SAAQ,SAAUC,EAASC,GACpC,IAAImrF,EAAMzlB,EAAGzsF,MAAMsyF,EAAMzuF,GAEzB,SAASsuG,EAAM/xG,GACb6xG,EAAmBC,EAAKprF,EAASC,EAAQorF,EAAOC,EAAQ,OAAQhyG,GAGlE,SAASgyG,EAAOE,GACdL,EAAmBC,EAAKprF,EAASC,EAAQorF,EAAOC,EAAQ,QAASE,GAGnEH,OAAMvyG,OA/BZ,mC,6BCAA,6CAMIyxG,EAAqB,WACrB,SAASA,EAAInhG,EAAS/L,GAClB5C,YAAMqC,KAAMsM,GACZtM,KAAKO,OAASA,EAmDlB,OAjDAktG,EAAIvxG,UAAU+C,MAAQ,WAClB,IAAI2rD,EAAM,IAAI6iD,EAAI,IAGlB,OAFA9vG,YAAMitD,EAAK5qD,MACX4qD,EAAI0V,MAAQtgE,KAAKsgE,MAAM77D,KAAI,SAAUs7E,GAAQ,OAAOA,EAAK9gF,WAClD2rD,GAQX6iD,EAAIvxG,UAAUyyG,YAAc,SAAU9zF,GAClC,GAAK7a,KAAKO,OAAV,CAGA,IAAIvD,EAAMgD,KAAK6a,KAAK7a,KAAKO,OAAOonE,0BAA0B,IAC1D3nE,KAAKO,OAAOquG,WAAW5xG,EAAK6d,KAShC4yF,EAAIvxG,UAAU2yG,aAAe,SAAUr1C,EAAOh9D,GAC1C,GAAKwD,KAAKO,UAGQP,KAAK6a,KAAK2+C,GAAOrsD,aAAe3Q,EAAM2Q,YACxD,CACI,IAAI2hG,EAAY9uG,KAAKO,OAAOonE,0BAA0B,GAClD3qE,EAAMgD,KAAK6a,KAAKi0F,GACpB9uG,KAAKO,OAAOsuG,aAAa7xG,EAAKw8D,EAAOh9D,GACrCwD,KAAK+uG,YAAYD,EAAW9uG,KAAK6a,QAMzC4yF,EAAIvxG,UAAU6yG,YAAc,SAAU/xG,EAAK6d,GAClC7a,KAAKO,QAGCP,KAAKO,OACOyuG,gBAAgBrQ,YAC3Bd,OAAO7gG,EAAK6d,IAErB4yF,EAtDc,I,6BCNzB,iFAYIwB,EAA6B,WAC7B,SAASA,EAAYlvC,EAAgBykC,EAAUjkG,GAC3CP,KAAKkvG,QAAS,EACdlvG,KAAKwkG,SAAWA,EAChBxkG,KAAK+/D,eAAiBA,EACtB//D,KAAKO,OAASA,EACdP,KAAKgB,QAAUhB,KAAKO,OAAOY,cAAc,KAAM,CAAE4xB,MAAO,CAAE+uE,KAAM,SAsMpE,OAxLAmN,EAAY/yG,UAAUwzB,OAAS,SAAUk7B,EAAKmP,EAASxmC,EAAY47E,EAAaltG,GAC5E,OAAOjC,KAAKovG,WAAWxkD,EAAKmP,EAASxmC,EAAY47E,EAAaltG,IAclEgtG,EAAY/yG,UAAUgrC,QAAU,SAAU0jB,EAAKmP,EAASs1C,EAAW97E,EAAY47E,GACvEE,IACAzkD,EAAI/vC,KAAO0qD,YAAgB,GAAI3a,EAAI2e,SACnCvpE,KAAKsvG,kBAAkB1kD,IAE3B,IAAIn3B,EAAOzzB,KAAKO,OAAOS,QAAQsC,cAAc,aAAesnD,EAAInvD,IAAM,KAClEgyE,EAAKztE,KAAKovG,WAAWxkD,EAAKmP,EAASxmC,EAAY47E,EAAa,KAAME,GAClE/uC,EAAQ,GAAGj/D,MAAMC,KAAKmsE,EAAGnN,OAC7B7sC,EAAKrxB,UAAY,GACjB,IAAK,IAAIpE,EAAK,EAAGuxG,EAAUjvC,EAAOtiE,EAAKuxG,EAAQ1yG,OAAQmB,IAAM,CACzD,IAAI+hF,EAAOwvB,EAAQvxG,GACnBy1B,EAAKzxB,YAAY+9E,KAIzBkvB,EAAY/yG,UAAUkzG,WAAa,SAAUxkD,EAAKmP,EAASxmC,EAAY47E,EAAaltG,EAAWogG,GAC3F,IAAI50B,EAAMrwE,YAAkB6E,GAAyBjC,KAAKgB,QAAQiB,YAAzBA,EACrCutG,EAAU,CAAE30F,KAAM+vC,EAAI/vC,MACtB40F,EAAW,CAAE50F,KAAM+vC,EAAI/vC,MACvB60F,EAAgB1vG,KAAKO,OAAOmkE,aAAaxzC,QAAO,SAAUiuC,GAAO,MAAoB,aAAbA,EAAIh0D,MAAuBg0D,EAAI3F,SAAU,GACjHh9D,GAAQ,EACRkzG,IACAlzG,EAAQu+B,YAAU20E,EAAcl2C,MAAOg2C,EAAQ30F,OAEnD,IAAI80F,EAAW3vG,KAAKO,OAAOgtG,wBACvB3iD,EAAI6P,YACJ7P,EAAIy3B,WAAastB,EAASxxG,QAAQysD,EAAIpwC,QAAU,GAAKhe,GAErDouD,EAAI6P,WAAaz6D,KAAKO,OAAOqvG,qBACG,UAA7B5vG,KAAKO,OAAOwjG,cAA4B/jG,KAAKO,OAAOqjE,uBACvDhZ,EAAIy3B,YAAa,GACoB,IAAjCstB,EAASxxG,QAAQysD,EAAIpwC,QACrBm1F,EAAS/tG,KAAKgpD,EAAIpwC,QAG1Bxa,KAAK6vG,sBAAsBpiC,EAAI7iB,GAC/BqsC,YAAcxpB,EAAInvE,YAAO,GAAIi1B,EAAY,KACzC2oC,aAAsBuR,EAAI7iB,EAAIr3B,YA0C9B,IAzCA,IAAIu8E,EAAmB9vG,KAAK+/D,eAAeE,WAAW,uBAClDphE,EAAU,SAAUjC,EAAG+E,GACvB,IAAIo+E,EAAOn1B,EAAI0V,MAAM1jE,GACrBmjF,EAAKsC,WAAaz3B,EAAIy3B,WACtBtC,EAAKwkB,iBAAmBxkB,EAAKtmB,OAAO4oB,WACpC,IAAI0tB,EAAeD,EAAiBE,gBAAgBplD,EAAI0V,MAAM1jE,GAAG4nG,UAAYj2B,IAAS0/B,MAClFl7E,EAAQ,CAAE,MAAU31B,YAAkBwtD,EAAIpwC,OAAgC,GAAvBowC,EAAIpwC,MAAMrN,YAC7Dy9C,EAAI8P,UAAY9P,EAAI0V,MAAM1jE,GAAG4nG,WAAaj2B,IAASy+B,eACnDj6E,EAAa,MAAI+W,EAAOvpC,OAAO+sG,WAAa,sBAAwB,qBAExE,IAAIx/B,EAAKiiC,EAAargF,OAAOk7B,EAAI0V,MAAM1jE,GAAIguD,EAAI/vC,KAAMkY,EAAO63B,EAAI8P,SAAU2nC,GAC1E,GAAIz3C,EAAI0V,MAAM1jE,GAAG4nG,WAAaj2B,IAASqT,OAAQ,CAC3C,GAAIh3B,EAAI0V,MAAM1jE,GAAG4nG,WAAaj2B,IAAS0/B,MAAQrjD,EAAI0V,MAAM1jE,GAAG4nG,WAAaj2B,IAASs/B,cAAe,CAC7F/jE,EAAOvpC,OAAOwpB,QAAQ6hC,KAAettD,YAAOmxG,EAAU,CAClD1vB,KAAMjS,EAAIrU,OAAQsmB,EAAKtmB,OAAQuf,QAAS,EACxCI,QAAS,EAAG/lB,eAAgBzI,EAAI0V,MAAM1jE,GAAGy2D,eACzC+mC,YAAatwD,EAAOvpC,OAAO0vG,qBAE/B,IAAIC,GAAe,EACnB,GAAItlD,EAAIpwC,MAAQ,GAAKsvB,EAAOolE,OAAQ,CAChC,IAAIiB,EAAermE,EAAOvpC,OAAOy6D,cAAcjB,QAAQl9D,OAAS,IAC3DitC,EAAOvpC,OAAOwkE,gBAAgBna,EAAIpwC,MAAQ,GAAGigD,UAC9C3wB,EAAOvpC,OAAOwkE,gBAAgBna,EAAIpwC,OAAO8lD,MAAQx2B,EAAOvpC,OAAOwkE,gBAAgBna,EAAIpwC,MAAQ,GAAG8lD,MAE9F8vC,EAAcD,EAAaj/E,QAAO,SAAU6uD,GAC5C,OAAOA,EAAKtmB,OAAOh+D,MAAQmvD,EAAI0V,MAAM1jE,GAAG68D,OAAY,OACrD,GACHy2C,EAAeE,EAAYF,aAAeE,EAAYF,aAAeE,EAAYC,aAAe,EAEpG,GAAIZ,EAASz2B,QAAU,GAAKpuB,EAAI0V,MAAM1jE,GAAG0zG,SAAW,GAAKb,EAASr2B,QAAU,GAAK82B,EAC7EpmE,EAAOolE,QAAS,EAEhBphC,EADgB,IAAIyiC,IAAgBzmE,EAAOi2B,eAAgBj2B,EAAOvpC,QACnDmvB,OAAO+/E,EAAU7kD,EAAKhuD,EAAGkxE,GAG3CljB,EAAI0V,MAAM1jE,GAAG4zG,WACd/iC,EAAGzrE,YAAY8rE,KAIvBhkC,EAAS9pC,KACJpD,EAAI,EAAG+E,EAAMipD,EAAI0V,MAAMzjE,OAAQD,EAAI+E,EAAK/E,IAC7CiC,EAAQjC,GAEZ,IAAIqD,EAAO,CAAE2qD,IAAK6iB,EAAIlP,UAAWv+D,KAAKO,OAAOg+D,WAC7C,GAAI3T,EAAI6P,YACJz6D,KAAKO,OAAOwpB,QAAQ4hC,KAAcrtD,YAAOkxG,EAASvvG,IAC9CD,KAAKO,OAAOqkE,WAAa5kE,KAAKO,OAAOijE,iBAAmBxjE,KAAKO,OAAOusG,gBAAgB,CACpF,IAAIh/B,EAAKL,EAAGjsE,iBAAiB,2BAA2B,GACpDssE,GACAA,EAAG93C,UAAUjN,IAAI,sBAoB7B,GAhBI/oB,KAAKO,OAAOqjE,uBACZ4rC,EAAQjxC,UAAYv+D,KAAKO,OAAOg+D,WAEhCixC,EAAQjxC,UACRkP,EAAGz5C,MAAM2b,OAAS6/D,EAAQjxC,UAAY,KAEjCv+D,KAAKO,OAAOg+D,YAAckP,EAAGnqE,cAAc,kBAAoBmqE,EAAGnqE,cAAc,sBACrFmqE,EAAGz5C,MAAM2b,OAAS3vC,KAAKO,OAAOg+D,UAAY,MAE1C3T,EAAIsrC,UACJzoB,EAAGz3C,UAAUjN,IAAI6hC,EAAIsrC,UAErBtrC,EAAI6lD,kBACJhjC,EAAGz3C,UAAUjN,IAAI6hC,EAAI6lD,oBAEXzwG,KAAKO,OAAO6lE,4BAA4D,IAA9BpmE,KAAKO,OAAOmwG,gBACpD1wG,KAAKO,OAAOS,QAAQyxC,aAAezyC,KAAKO,OAAOovC,QAAU3vC,KAAKO,OAAO+9D,WAAWzhE,OAC5F,IAASD,EAAI,EAAGA,EAAIoD,KAAKO,OAAO+9D,WAAWzhE,OAAQD,IAAK,CAGpD,GAAIoD,KAAKO,OAAO+9D,WAAW1hE,GAAW,WAAQ,QAAE,GAAG+zG,eAAgB,CAC/D,IAAIC,EAAc,GAAGvvG,MAAMC,KAAKmsE,EAAGx+C,uBAAuB,kBAC1D,GAAI2hF,EAAY/zG,OAAQ,CACpB,IAAIg0G,EAAmBD,EAAYA,EAAY/zG,OAAS,GACxDg5B,YAAS,CAACg7E,GAAkB,CAAC,sBAC7B,IAAIC,EAAoBF,EAAY,GACpC/6E,YAAS,CAACi7E,GAAmB,CAAC,yBAK9C,OAAOrjC,GAEXwhC,EAAY/yG,UAAUozG,kBAAoB,SAAU1kD,GAChD,IAAK,IAAI5sD,EAAK,EAAGuF,EAAKqnD,EAAI0V,MAAOtiE,EAAKuF,EAAG1G,OAAQmB,IAAM,CACxCuF,EAAGvF,GACTwyG,WAAY,EAErB,OAAO5lD,GAWXqkD,EAAY/yG,UAAU2zG,sBAAwB,SAAUpiC,EAAI7iB,GACxD,IAAI1O,EAAO,GACP/3C,EAAqBk4D,IAArBl4D,EAAuD,WAAvDA,EAAmF,gBACnF4xB,EAAU,GACV60B,EAAI6P,WACJ1kC,EAAQn0B,KAAKy6D,KAEbzR,EAAIqe,UACJlzC,EAAQn0B,KAAK,YAEZxE,YAAkBwtD,EAAIpwC,SACvB0hC,EAAK/3C,GAAiBymD,EAAIpwC,OAE1BowC,EAAIwuB,UACJl9B,EAAKk9B,QAAUxuB,EAAIwuB,SAEnBxuB,EAAInvD,MACJygD,EAAK/3C,GAAgBymD,EAAInvD,KAEzBmvD,EAAIy3B,aACJnmC,EAAK/3C,IAAqB,IAEV,IAAhBymD,EAAIsS,SACJnnC,EAAQn0B,KAAK,UAEjBs6C,EAAKuoD,MAAQ1uE,EACbmmC,aAAsBuR,EAAIvxB,IAEvB+yD,EA5MsB,I,+BCZjC,6CAMId,EAAsB,WACtB,SAASA,EAAK7hG,GACVtM,KAAKwwG,WAAY,EACjBxwG,KAAKkwG,cAAe,EACpBvyG,YAAMqC,KAAMsM,GAOhB,OALA6hG,EAAKjyG,UAAU+C,MAAQ,WACnB,IAAI8gF,EAAO,IAAIouB,EAAK,IAEpB,OADAxwG,YAAMoiF,EAAM//E,MACL+/E,GAEJouB,EAXe,I,6BCN1B,sCA8BW4C,EA9BX,uBAKW7a,EAAW,CAClB8a,GAAI,cACJC,GAAI,qBACJlpB,MAAO,oBACPmpB,KAAM,cACN3+F,KAAM,cACN4+F,MAAO,eACPjwC,QAAS,YACTwkB,SAAU,aACV0rB,SAAU,aACV/a,YAAa,iBACbvc,SAAU,cACVZ,MAAO,UACPt2D,IAAK,aACLyuF,YAAa,qBACbC,SAAU,aACVC,MAAO,aACPC,YAAa,iBACbC,WAAY,gBACZC,UAAW,eA+5BR,SAASC,EAAeC,EAAUxiC,GACrC,IAAIyiC,EAAY,GAChB,GAAIz0G,YAAkBw0G,IAAmC,kBAAdA,GAAgD,kBAAdA,IACrEx0G,YAAkBw0G,EAASE,UAC/B,OAAOF,EAGP,IAAK,IAAI5zG,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKmyE,GAASpxE,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IACI+zG,EAAY3iC,EADJ7rE,EAAGvF,IAEXxB,EAASY,YAAkB20G,IACJ,kBAAfA,OAA0D/1G,EAAhCK,YAAS01G,EAAWH,GACrDx0G,YAAkBZ,KACnBq1G,EAAUE,GAAav1G,GAInC,OAAOq1G,GAz6BX,SAAWd,GAKPA,EAASiB,oBAAsB,CAC3Bv4F,GAAI,KACJlH,KAAM,OACNqQ,IAAK,MACLpmB,MAAO,QACPy1G,UAAW,YACXzZ,QAAS,UACT4Y,SAAU,WACV1rB,SAAU,WACVwsB,QAAS,UACT5xG,MAAO,QACPi2B,UAAW,YACX47E,YAAa,cACbC,QAAS,UACTC,eAAgB,iBAChBC,cAAe,gBACfC,gBAAiB,kBACjBC,SAAU,WACVC,QAAS,MAEb,IAAIC,EAAwB,CACxBx5B,MAAO,EACPy5B,SAAU,eACVC,SAAU,eACVC,cAAe,QACfC,SAAU,YACVC,YAAa,gBAEbC,EAAyB,CACzBC,cAAc,EACdC,UAAU,EACVC,qBAAqB,EACrBC,gBAAgB,EAChBhkC,OAAQ2hC,EAASiB,oBACjBqB,eAAgBX,EAChBY,UAAW,GACXC,UAAW,GACXC,iBAAiB,EACjBz+B,UAAW,OACXzpD,SAAU,KACVmoF,cAAe,KACftK,eAAgB,KAChBuK,gBAAiB,qBACjBC,WAAY,OACZC,mBAAoB,QACpBC,eAAe,GA8CnB,SAASC,EAAoB3yG,EAAe2gE,EAG5CiyC,EAAeznG,EAAS0nG,GAEpB,OAAOC,EAAW9yG,EADH+yG,EAAwB/yG,EAAe2gE,EAAYiyC,EAAeznG,EAAS0nG,GAC/C,KAAM1nG,GAkBrD,SAAS4nG,EAAwB/yG,EAAe2gE,EAEhDiyC,EAAeznG,EAAS0nG,GACpB,IAAIG,EAAW,GACXC,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAChD4pF,EAAWme,EAAeD,EAAOT,YAEjC,IADA,IAAIl6F,EAAK66F,IACA13G,EAAI,EAAGA,EAAIklE,EAAWjlE,OAAQD,IACnC,IAAIQ,YAAkB0kE,EAAWllE,IAAjC,CAGA,IAAIo0G,OAAK,EACT,GAAIoD,EAAOG,cAA+C,oBAAxBH,EAAOG,aAA6B,CAClE,IAAI9hG,EAAU,CACVqvD,WAAYA,EACZrvD,QAASqvD,EAAWllE,GACpB2V,KAAMuvD,EAAWllE,GACjB0P,QAAS8nG,GAEbA,EAAOG,aAAa9hG,GAQxB,GALIu+F,EADA+C,EACKS,EAAsBrzG,EAAe2gE,EAAWllE,QAAIZ,EAAW,KAAM,KAAM,GAAI,KAAMyd,EAAI7c,EAAG0P,GAG5FmoG,EAAWtzG,EAAe2gE,EAAWllE,QAAIZ,EAAW,KAAM,KAAMsQ,EAAS0nG,GAE9EI,EAAOM,aAA6C,oBAAvBN,EAAOM,YAA4B,CAC5DjiG,EAAU,CACVqvD,WAAYA,EACZrvD,QAASqvD,EAAWllE,GACpB2V,KAAMuvD,EAAWllE,GACjB4+C,KAAMw1D,EACN1kG,QAAS8nG,GAEbA,EAAOM,YAAYjiG,GAEvB0hG,EAASvyG,KAAKovG,GAElB,OAAOmD,EAoBX,SAASQ,EAAuBxzG,EAAe2gE,EAE/Cx1D,EAAS4sE,EAAO66B,EAAeC,GAC3B,IAAII,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAChD4pF,EAAWme,EAAeD,EAAOT,YACjC,IAEIl6F,EAFA21D,EAAS9wE,YAAO,GAAIyyG,EAASiB,oBAAqBoC,EAAOhlC,QACzDikC,EAAiB/0G,YAAO,GAAIo0G,EAAuB0B,EAAOf,gBAE1DuB,EAAkB,GAClB17B,IACAm6B,EAAen6B,MAAQA,GAE3B,IACI83B,EACA6D,EAFAv0G,EAAQ,GAGRwhE,GAAcA,EAAWjlE,SAAWO,YAAkB03G,EAAWhzC,GAAYtmB,QAE5Es5D,EAAWhzC,GAAYtmB,KAAKh8C,eAAe4vE,EAAO31D,MACnDA,EAAK66F,KAET,IAAK,IAAI13G,EAAI,EAAGA,EAAIklE,EAAWjlE,OAAQD,IAAK,CACxC,IAAIi1G,EAAYF,EAAe7vC,EAAWllE,GAAIwyE,GAC9C,IAAIhyE,YAAkB0kE,EAAWllE,IAAjC,CAGA,GAAIw3G,EAAOG,cAA+C,oBAAxBH,EAAOG,aAA6B,CAClE,IAAI9hG,EAAU,CACVqvD,WAAYA,EACZrvD,QAASqvD,EAAWllE,GACpB2V,KAAMs/F,EAAUziC,EAAO78D,MACvBjG,QAAS8nG,EACThlC,OAAQA,GAEZglC,EAAOG,aAAa9hG,GAExB,IAAIsiG,EAAUjzC,EAAWllE,GACrBw3G,EAAOG,cAA+C,oBAAxBH,EAAOG,eACrC1C,EAAYF,EAAe7vC,EAAWllE,GAAIwyE,IAG1CyiC,EAAUryG,eAAe4vE,EAAO31D,MAAQrc,YAAkBy0G,EAAUziC,EAAO31D,OAC3EA,EAAKo4F,EAAUziC,EAAO31D,KAE1B,IAAIu7F,EAAW,GASf,GARIZ,EAAOnB,eACHmB,EAAOP,gBAAkBhC,EAAUziC,EAAOxsD,MAAQivF,EAAUziC,EAAOkjC,gBACnEsC,EAAgBhzG,KAAKT,EAAc,QAAS,CAAEktB,UAAW6nE,EAASib,MAAOp+E,MAAO,CAAE5nB,KAAM,eAGxF6pG,EAASpzG,KAAKT,EAAc,QAAS,CAAEktB,UAAW6nE,EAASib,MAAOp+E,MAAO,CAAE5nB,KAAM,iBAGnE,IAAlB4oG,EAEIK,EAAOlB,UAAYrB,EAAUryG,eAAe4vE,EAAO8iC,WAAa90G,YAAkBy0G,EAAUziC,EAAO8iC,WACnG8C,EAASpzG,KAAKT,EAAc,OAAQ,CAAEktB,UAAW6nE,EAASgb,KAAO,IAAMW,EAAUziC,EAAO8iC,YAM5F2C,GAJA7D,EAAKwD,EAAsBrzG,EAAe4zG,EAASlD,EAAWziC,EAAQglC,EAAOb,UAAWyB,KAEvFD,EAAQv1G,eAAe,cACpBu1G,EAAQjD,UAA0Br4F,EAAI7c,EAAG0P,IAC1BhJ,cAAc,IAAM4yF,EAASub,YAC5C2C,EAAOP,eAAiBe,EAAgB/3G,QACxCu3B,aAAQwgF,EAAiB5D,EAAGl6E,uBAG/B,CAsBD,IArBAk6E,EAAKyD,EAAWtzG,EAAe4zG,EAASlD,EAAWziC,EAAQglC,EAAOb,UAAWjnG,EAAS0nG,IACnFh+E,UAAUjN,IAAImtE,EAAShd,MAAQ,IAAMm6B,EAAen6B,OACvD83B,EAAGp7E,aAAa,aAAcy9E,EAAen6B,MAAM/rE,YACnD0nG,EAAgB7D,EAAG1tG,cAAc,IAAM4yF,EAASub,YAE5CI,EAAUryG,eAAe4vE,EAAOgjC,UAChCpB,EAAGp7E,aAAa,QAASi8E,EAAUziC,EAAOgjC,UAG1CP,EAAUryG,eAAe4vE,EAAOijC,iBAAmBR,EAAUziC,EAAOijC,iBACpEz8E,EAAao7E,EAAIa,EAAUziC,EAAOijC,iBAGlCR,EAAUryG,eAAe4vE,EAAOopB,WAA0C,IAA9BqZ,EAAUziC,EAAOopB,UAC7DwY,EAAGh7E,UAAUjN,IAAImtE,EAASob,UAG1BO,EAAUryG,eAAe4vE,EAAO74C,aAA8C,IAAhCs7E,EAAUziC,EAAO74C,aAC/Dy6E,EAAGh9E,MAAMygB,QAAU,QAGnBo9D,EAAUryG,eAAe4vE,EAAOojC,YAAcp1G,YAAkBy0G,EAAUziC,EAAOojC,aAC7E4B,EAAO9oF,SAAU,CACrB,IAAI4wB,EAAO,CAAEh9C,IAAK2yG,EAAUziC,EAAOojC,WACnC70G,YAAMu+C,EAAM21D,EAAUziC,EAAOmjC,kBAC7B,IAAI0C,EAAc9zG,EAAc,MAAO,CAAEktB,UAAW6nE,EAASqb,MAAOx+E,MAAOmpB,IACvE24D,EACAA,EAAcvd,sBAAsB,aAAc2d,GAGlD7gF,aAAQ,CAAC6gF,GAAcjE,EAAGl6E,mBAIlC,GAAIs9E,EAAOlB,UAAYrB,EAAUryG,eAAe4vE,EAAO8iC,WAClD90G,YAAkBy0G,EAAUziC,EAAO8iC,YAAckC,EAAO9oF,SAAU,CACnE,IAAI4pF,EAAc/zG,EAAc,MAAO,CAAEktB,UAAW6nE,EAASgb,KAAO,IAAMW,EAAUziC,EAAO8iC,WACvF2C,EACAA,EAAcvd,sBAAsB,aAAc4d,GAGlD9gF,aAAQ,CAAC8gF,GAAclE,EAAGl6E,mBAG9Bk+E,EAASn4G,QACTu3B,aAAQ4gF,EAAUhE,EAAGl6E,mBAErBs9E,EAAOP,eAAiBe,EAAgB/3G,QACxCu3B,aAAQwgF,EAAiB5D,EAAGl6E,mBAEhC08E,EAAgBryG,EAAe0wG,EAAWziC,EAAQtN,EAAYsyC,EAAQpD,EAAIqC,EAAen6B,OAK7F,GAHI27B,GACAh/E,YAAS,CAACm7E,GAAK,CAAC9a,EAASwb,YAEzB0C,EAAOM,aAA6C,oBAAvBN,EAAOM,YAA4B,CAC5DjiG,EAAU,CACVqvD,WAAYA,EACZrvD,QAASqvD,EAAWllE,GACpB2V,KAAMs/F,EAAUziC,EAAO78D,MACvBipC,KAAMw1D,EACN1kG,QAAS8nG,EACThlC,OAAQA,GAEZglC,EAAOM,YAAYjiG,GAEvBmiG,EAAkB,GAClBt0G,EAAMsB,KAAKovG,IAEf,OAAO1wG,EAoBX,SAAS60G,EAAmBh0G,EAAe2gE,EAE3Cx1D,EAAS4sE,EAAO66B,EAAeC,GAC3B,IAAII,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAEhD,OAAO2nG,EAAW9yG,EADTwzG,EAAuBxzG,EAAe2gE,EAAYx1D,EAAS4sE,EAAO66B,EAAeC,GACrDI,EAAOd,UAAWhnG,GAsC3D,SAASnO,EAAQq9C,EAAM45D,GACnB,GAAKA,GAAiB55D,EAGjB,CAGD,OADgBp9C,MAAMlC,UAAUmF,MAAMC,KAAK8zG,GACtBj3G,QAAQq9C,IAgDrC,SAAS65D,EAAWtgC,EAAWqqB,EAAQz9B,GAEnC,QADc,IAAVA,IAAoBA,EAAQ,IAAIC,KAClB,cAAdmT,EACApT,EAAMy9B,OAAOA,EAAQ,aAAa,QAEjC,GAAkB,eAAdrqB,EACLpT,EAAMy9B,OAAOA,EAAQ,cAAc,QAGnC,IAAK,IAAIxiG,EAAI,EAAGA,EAAI+kE,EAAM08B,QAAQxhG,OAAQD,IACV,aAAxB+kE,EAAM08B,QAAQzhG,GAAGisF,IACjBlnB,EAAM08B,QAAQvkF,OAAOld,EAAG,GAIpC,OAAO+kE,EAUX,SAAS2zC,EAAcxzC,EAAYH,GAE/B,OAAO,IAAII,IAAYD,GAClBQ,aAAaX,GAwDtB,SAASmzC,EAAWj6F,GAEhB,IADA,IAAIjY,EAAQ,CAAE2yG,OAAQ,KAAM/5D,KAAM,MACzB5+C,EAAI,EAAGA,EAAIie,EAAKhe,OAAQD,IAC7B,IAAKQ,YAAkByd,EAAKje,IACxB,MAAe,CAAE24G,cAAe16F,EAAKje,GAAI4+C,KAAM3gC,EAAKje,IAG5D,OAAOgG,EAEX,SAASgzB,EAAa50B,EAASw0G,GAC3B,IAAIt5D,EAAO,GACXv+C,YAAMu+C,EAAMs5D,GACRt5D,EAAKuoD,QACL5uE,YAAS,CAAC70B,GAAUk7C,EAAKuoD,MAAM9nG,MAAM,aAC9Bu/C,EAAKuoD,OAEhBlxE,YAAWvyB,EAASk7C,GAExB,SAASu5D,EAAiBz0G,GAGtB,IAFA,IAAIuyB,EAAa,GACb2oB,EAAOl7C,EAAQuyB,WACV/Y,EAAQ,EAAGA,EAAQ0hC,EAAKr/C,OAAQ2d,IACrC+Y,EAAW2oB,EAAK1hC,GAAOk7F,UAAYx5D,EAAK1hC,GAAOm7F,UAEnD,OAAOpiF,EAwHX,SAAS+gF,IACL,OAAO/sG,KAAKC,MAA4B,OAArB,EAAID,KAAKqmB,WACvBzgB,SAAS,IACTC,UAAU,GAGnB,SAASomG,EAAgBryG,EAAe0wG,EAAWziC,EAAQoa,EAAIl9E,EAAStL,EAASk4E,GAE7E,IAAI08B,EAAQ/D,EAAUziC,EAAO9uE,QAAU,GACnC6xG,EAAcN,EAAUziC,EAAO+iC,aAEnC,GAAIyD,EAAM/4G,SACNs1G,GAAc,EACdnxG,EAAQg1B,UAAUjN,IAAImtE,EAASpc,UAC3BxtE,EAAQknG,iBAAiB,CACzB,IAAIqC,EAAQV,EAAmBh0G,EAAey0G,EAAOtpG,IAAW4sE,GAChEl4E,EAAQgB,YAAY6zG,GAItBvpG,EAAQ8mG,gBAAkBjB,IAAgB7lG,EAAQgf,WACpDtqB,EAAQ81B,kBAAkBd,UAAUjN,IAAImtE,EAASsb,cAEE,SAA/BllG,EAAQsnG,mBAAgCx/E,KAAUH,KACxD,CAAC9yB,EAAc,MAAO,CAAEktB,UAAW,WAAa/hB,EAAQonG,mBAAqB1yG,EAAQsC,cAAc,IAAM4yF,EAASG,eAGxI,SAASme,EAAsBrzG,EAAeq6C,EAAMq2D,EAAWziC,EAAQ/gD,EAAWynF,EAAeC,EAAOt8F,EAAIe,EAAOlO,GAC/G,IAIIw1D,EAOAk0C,EAXA5B,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAC5C+mG,EAAiB/0G,YAAO,GAAIo0G,EAAuB0B,EAAOf,gBAC1D9gG,EAAOipC,EACPh/C,EAAQg/C,EAEQ,kBAATA,GAAqC,kBAATA,GAAqC,mBAATA,IAC/DsmB,EAAatmB,EACbjpC,EAA0C,mBAA3Bs/F,EAAUziC,EAAO78D,OAAyD,kBAA3Bs/F,EAAUziC,EAAO78D,MAC3Es/F,EAAUziC,EAAO78D,MAASs/F,EAAUziC,EAAO78D,OAAS,GACxD/V,EAAQq1G,EAAUziC,EAAO5yE,QAQzBw5G,EALC54G,YAAkB0kE,IAAgB1kE,YAAkBy0G,EAAUziC,EAAO31D,MAC1C,KAAzBo4F,EAAUziC,EAAO31D,IAIRA,EAAK,IAAMe,EAHXf,EAKhB,IAAIu3F,EAAK7vG,EAAc,KAAM,CACzBktB,YAAsB,IAAV0nF,EAAiB7f,EAASnO,MAAQmO,EAAS8a,IAAM,KAAO5zG,YAAkBixB,GAAa,GAAKA,GACxG5U,GAAIu8F,EAAWjjF,MAAyC,KAAjCsgF,EAAeR,eAAoD,KAA5BQ,EAAeT,SACzE,CAAE9Q,MAAiB,IAAViU,EAAiB1C,EAAeR,cAAgBQ,EAAeT,UAAc,KA8B9F,OA3BI9wC,GAAc+vC,EAAUryG,eAAe4vE,EAAOopB,UAAqD,UAAzCqZ,EAAUziC,EAAOopB,SAASrrF,YACpF6jG,EAAGh7E,UAAUjN,IAAImtE,EAASob,UAE1ByE,EACA/E,EAAG5b,UAAY7iF,GAGfy+F,EAAGp7E,aAAa,aAAcx4B,YAAkBZ,GAAS,OAASA,GAClEw0G,EAAGp7E,aAAa,OAAQ,UAEpBksC,GAAc+vC,EAAUryG,eAAe4vE,EAAOijC,iBAAmBR,EAAUziC,EAAOijC,iBAClFz8E,EAAao7E,EAAIa,EAAUziC,EAAOijC,iBAElCyD,EAAcj5G,SAAWu3G,EAAOP,eAChC5/E,YAAO6hF,EAAe9E,GAEtBlvC,IAAe+vC,EAAUziC,EAAOxsD,MAASivF,EAAUziC,EAAOkjC,gBAC1DT,EAAUziC,EAAOkjC,eAAerpE,MAChC+nE,EAAGhvG,YAAYi0G,EAAU90G,EAAe2gE,EAAYsN,EAAQ78D,EAAMujG,EAAe1B,EAAOP,iBAGpFiC,EAAcj5G,QAAUu3G,EAAOP,eAC/B5/E,YAAO6hF,EAAe9E,GAE1BA,EAAGhvG,YAAYxB,SAAS01G,eAAe3jG,MAGxCy+F,EAEX,SAASqD,EAAeV,GAGpB,MAAqB,CACjB3C,GAAI,KAAO2C,EAAa,QACxB1C,GAAI,KAAO0C,EAAa,eACxB5rB,MAAO,KAAO4rB,EAAa,cAC3BzC,KAAM,KAAOyC,EAAa,QAC1BphG,KAAM,KAAOohG,EAAa,QAC1BxC,MAAO,KAAOwC,EAAa,SAC3BzyC,QAAS,YACTwkB,SAAU,aACV0rB,SAAU,aACV/a,YAAa,iBACbvc,SAAU,cACVZ,MAAO,UACPt2D,IAAK,KAAO+wF,EAAa,OACzBtC,YAAa,qBACbC,SAAU,aACVC,MAAO,KAAOoC,EAAa,OAC3BnC,YAAa,iBACbC,WAAY,gBACZC,UAAW,eAGnB,SAASuE,EAAU90G,EAAe2gE,EAAYsN,EAAQ78D,EAAMujG,EAAeK,GACvE,IAQIF,EARApE,EAAYF,EAAe7vC,EAAYsN,GACvClzB,EAAO,CAAEjT,KAAM4oE,EAAUziC,EAAOxsD,MAQpC,GANIivF,EAAUryG,eAAe4vE,EAAOkjC,gBAAkBT,EAAUziC,EAAOkjC,iBACnE30G,YAAMu+C,EAAM21D,EAAUziC,EAAOkjC,gBAC7Bp2D,EAAKjT,KAAO4oE,EAAUziC,EAAOxsD,KAAOivF,EAAUziC,EAAOxsD,KACjDivF,EAAUziC,EAAOkjC,eAAerpE,MAGnCktE,EAGA,CACDF,EAAY90G,EAAc,IAAK,CAAEktB,UAAW6nE,EAAS3jF,KAAO,IAAM2jF,EAAStzE,MAC3E,IAAIwzF,EAAgBj1G,EAAc,MAAO,CAAEktB,UAAW6nE,EAASub,aAC3DqE,GAAiBA,EAAcj5G,QAC/Bo3B,YAAO6hF,EAAeM,GAE1BA,EAAcp0G,YAAYxB,SAAS01G,eAAe3jG,IAClD0hB,YAAO,CAACmiF,GAAgBH,QATxBA,EAAY90G,EAAc,IAAK,CAAEktB,UAAW6nE,EAAS3jF,KAAO,IAAM2jF,EAAStzE,IAAKxgB,UAAWmQ,IAY/F,OADAqjB,EAAaqgF,EAAW/5D,GACjB+5D,EAIX,SAASxB,EAAWtzG,EAAeq6C,EAAMq2D,EAEzCziC,EAAQ/gD,EAAW/hB,EAAS0nG,GACxB,IAGIqC,EACAN,EACAj0C,EALAsyC,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAC5C+mG,EAAiB/0G,YAAO,GAAIo0G,EAAuB0B,EAAOf,gBAC1D9gG,EAAOipC,EAIS,kBAATA,GAAqC,kBAATA,IACnCsmB,EAAatmB,EACbjpC,EAAOs/F,EAAUziC,EAAO78D,OAAS,GAEjC8jG,EAAOj5G,YAAkBy0G,EAAe,KAAMA,EAAUziC,EAAO31D,IAAMo4F,EAAe,IAEpFkE,KAASv6D,EAAKh8C,eAAe,cAAeg8C,EAAKs2D,WAGjDxlG,GAAWA,EAAQ6mG,sBAEnB5gG,EAAOA,GAEX,IAAIy+F,EAAK7vG,EAAc,KAAM,CACzBktB,YAAsB,IAAV0nF,EAAiB7f,EAASnO,MAAQmO,EAAS8a,IAAM,KAAO5zG,YAAkBixB,GAAa,GAAKA,GACxG0E,MAAyC,KAAjCsgF,EAAeR,eAAoD,KAA5BQ,EAAeT,SAC1D,CAAE9Q,MAAiB,IAAViU,EAAiB1C,EAAeR,cAAgBQ,EAAeT,UAAc,MAE9D,KAA3Bx1G,YAAkBi5G,GACnBrF,EAAGp7E,aAAa,WAAYygF,GAG5BrF,EAAGp7E,aAAa,WAAY0+E,KAEhC,IAAIgC,EAAS,SAOb,GANIhqG,GAAaA,EAAQiqG,gBACF,kBAAT/6D,GAEPA,EAAKh8C,eAAe82G,WAChB96D,EAAW,OAElBu6D,GAASzpG,GAAWA,EAAQmnG,cAAe,CAE3C,IAAI+C,EAAiBnrF,YAAQ/e,EAAQmnG,eACrCx/E,YAAOuiF,EAAeh7D,EAAMw4D,EAAmB,gBAAiBI,EAAOqC,kBAAmBrC,EAAOlmF,kBAAmB8iF,QAEnH,IAAK+E,GAASzpG,GAAWA,EAAQgf,SAAU,CAExCkrF,EAAiBnrF,YAAQ/e,EAAQgf,UACrC2I,YAAOuiF,EAAeh7D,EAAMw4D,EAAmB,WAAYI,EAAO1R,aAAc0R,EAAOlmF,kBAAmB8iF,OAEzG,CACD,IAAI0F,EAAWv1G,EAAc,MAAO,CAChCktB,UAAW6nE,EAASG,YACpBtjE,MAAuC,KAA/BsgF,EAAeN,YAAqB,CAAEjR,KAAMuR,EAAeN,aAAgB,KAEvF,GAAIjxC,IAAe+vC,EAAUziC,EAAOxsD,MAASivF,EAAUziC,EAAOkjC,gBAC1DT,EAAUziC,EAAOkjC,eAAerpE,MAChCytE,EAAS10G,YAAYi0G,EAAU90G,EAAe2gE,EAAYsN,EAAQ78D,EAAM,KAAM6hG,EAAOP,oBAEpF,CACD,IAAI7yG,EAAUG,EAAc,OAAQ,CAChCktB,UAAW6nE,EAAS3jF,KACpBwgB,MAAoC,KAA5BsgF,EAAeP,SAAkB,CAAEhR,KAAMuR,EAAeP,UAAa,KAE7ExmG,GAAWA,EAAQ6mG,oBACnBnyG,EAAQo0F,UAAY7iF,EAGpBvR,EAAQoB,UAAYmQ,EAExBmkG,EAAS10G,YAAYhB,GAEzBgwG,EAAGhvG,YAAY00G,GAEnB,OAAO1F,EAWX,SAASiD,EAAW9yG,EAAew1G,EAAWtoF,EAAW/hB,GACrD,IAAI8nG,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAC5C+mG,EAAiB/0G,YAAO,GAAIo0G,EAAuB0B,EAAOf,gBAE1DuD,EAAYz1G,EAAc,KAAM,CAChCktB,WAFJ6nE,EAAWme,EAAeD,EAAOT,aAET1C,GAAK,KAAO7zG,YAAkBixB,GAAa,GAAKA,GACpE0E,MAAoC,KAA5BsgF,EAAeV,SAAkB,CAAE7Q,KAAMuR,EAAeV,UAAa,KAGjF,OADA1+E,YAAO0iF,EAAWC,GACXA,EAxyBX7F,EAAS8F,WAbT,SAAoB11G,EAAe2gE,EAEnCx1D,EAASynG,EAAeC,GACpB,IAAII,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAC5C+mG,EAAiB/0G,YAAO,GAAIo0G,EAAuB0B,EAAOf,gBAC1DloG,EAAO2pG,EAAWhzC,GAAYyzC,OAClC,MAAa,WAATpqG,GAA8B,WAATA,EACd2oG,EAAoB3yG,EAAe2gE,EAAYiyC,EAAeznG,EAAS0nG,GAGvEmB,EAAmBh0G,EAAe2gE,EAAYx1D,EAAS+mG,EAAen6B,MAAO66B,EAAeC,IA0B3GjD,EAAS+C,oBAAsBA,EAyD/B/C,EAASmD,wBAA0BA,EA4JnCnD,EAAS4D,uBAAyBA,EAyBlC5D,EAASoE,mBAAqBA,EA6B9BpE,EAAS+F,aArBT,SAAsB1B,EAAcp0G,EAAS+1G,GAEzC,GADA7gB,EAAWme,EAAerB,EAAuBW,YAC5CyB,GAAiBA,EAAav4G,OAAnC,CAGA,IAAIm6G,EACAC,EACAC,EAAgB94G,MAAMlC,UAAUmF,MAAMC,KAAK8zG,GAQ/C,IADA4B,EAAYE,GALRD,EADAj2G,EACU7C,EAAQ6C,EAASk2G,IAGD,IAAfH,EAAsBG,EAAcr6G,QAAU,KAET,IAAfk6G,GAAuB,EAAI,IACzDC,KAAezgF,YAAUygF,IAAcA,EAAUhhF,UAAUzD,SAAS2jE,EAASob,YAEhF0F,EAAYE,EADZD,IAAoC,IAAfF,GAAuB,EAAI,GAGpD,OAAOC,IAmBXjG,EAAS5yG,QAAUA,EAqCnB4yG,EAASoG,gBA7BT,SAAyBr1C,EAAYsN,EAAQ2F,QACvB,IAAdA,IAAwBA,EAAY,QACxC,IAAIqiC,EAAY94G,YAAO,GAAIyyG,EAASiB,oBAAqB5iC,GACrDioC,GAAW,IAAIz1C,KAAQmmB,MAAMqvB,EAAU3E,SAGvCjpB,EAAK8rB,EAAcxzC,EADvBu1C,EAAWhC,EAAWtgC,EAAW,MAAOsiC,IAExCv1C,EAAa,GACb,IAAK,IAAI35D,EAAI,EAAGA,EAAIqhF,EAAG3sF,OAAQsL,IAAK,CAChC,IAAImvG,EAAU9tB,EAAGrhF,GAAG4rE,MAChBwjC,EAAU,GAEdA,EAAQH,EAAU7kG,MAAQi3E,EAAGrhF,GAAGnL,IAChCu6G,EAAW,UAAI,EACf,IAAIC,EAAUJ,EAAU7kG,KACR,OAAZilG,IAEAD,EADAC,EAAU,QACShuB,EAAGrhF,GAAGnL,KAE7Bu6G,EAAQE,IAAM,oBAAsBjuB,EAAGrhF,GAAGnL,IACtCwsF,EAAGrhF,GAAGnL,IAAImQ,WAAWkf,OAAS,aAClCkrF,EAAQxjC,MAAQujC,EAChBx1C,EAAWlgE,KAAK21G,GAChB,IAAK,IAAI1tC,EAAI,EAAGA,EAAIytC,EAAQz6G,OAAQgtE,IAChC/H,EAAWlgE,KAAK01G,EAAQztC,IAGhC,OAAO/H,GA2BXivC,EAASsE,WAAaA,EAatBtE,EAASuE,cAAgBA,EAqDzBvE,EAAS2G,sBA9CT,SAASA,EAAsB12G,EAASsL,GACpC,IAAI8nG,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAC5C8iE,EAAS9wE,YAAO,GAAIyyG,EAASiB,oBAAqBoC,EAAOhlC,QACzDuoC,EAAS32G,EAAQiB,WAAU,GAE3B21G,EAAS,GACbD,EAAO3hF,UAAUjN,IAAI,eACrB,IAAI8uF,EAASF,EAAOn2G,iBAAiB,mBACrCm2G,EAAO3hF,UAAUvM,OAAO,eACxB,IAAK,IAAI7sB,EAAI,EAAGA,EAAIi7G,EAAOh7G,OAAQD,IAAK,CAQpC,IAPA,IAAIo0G,EAAK6G,EAAOj7G,GACZguG,EAASoG,EAAG1tG,cAAc,KAC1B2tG,EAAKD,EAAG1tG,cAAc,MAEtB0+D,EAAO,GACP1zC,EAAas8E,EAASA,EAAOt8E,WAAa0iF,EAAG1iF,WAC7CrxB,EAAOiB,OAAOjB,KAAKqxB,GACdo3C,EAAM,EAAGA,EAAMp3C,EAAWzxB,OAAQ6oE,IACjCp3C,EAAW2nB,OAAOh5C,EAAKyoE,KAAQoyC,kBACjC91C,EAAKoN,EAAO78D,MAAQ+b,EAAW2nB,OAAOh5C,EAAKyoE,KAAO2wB,aAG1D,IAAI0hB,EAAetC,EAAiBzE,GAChC+G,EAAat+F,IACbuoD,EAAKoN,EAAO31D,IAAMs+F,EAAat+F,UACxBs+F,EAAat+F,IAGpBuoD,EAAKoN,EAAO31D,IAAM66F,IAElBp2G,OAAOjB,KAAK86G,GAAcl7G,SAC1BmlE,EAAKoN,EAAOijC,gBAAkB0F,GAE9BnN,IACAmN,EAAetC,EAAiB7K,GAC5B1sG,OAAOjB,KAAK86G,GAAcl7G,SAC1BmlE,EAAKoN,EAAOkjC,eAAiByF,IAGjC9G,IACAjvC,EAAKoN,EAAO9uE,OAASo3G,EAAsBzG,EAAI3kG,IAEnDsrG,EAAOh2G,KAAKogE,GAEhB,OAAO41C,GAoHX7G,EAASiH,sBAhFT,SAA+B72G,EAAemqB,EAAUw2C,EAExDsN,EAAQ9iE,EAAS0nG,GAUb,IARA,IAMIx3G,EANAo6G,EAAYz1G,EAAc,KAAM,CAAEktB,WADtC6nE,EAAWme,EAAerB,EAAuBW,aACS1C,GAAIl+E,MAAO,CAAE+uE,KAAM,kBACzEsS,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAC5C8qG,EAAY94G,YAAO,GAAIyyG,EAASiB,oBAAqB5iC,GAErDonC,EAAiBnrF,YAAQC,GACzB2sF,EAAe,GAEfx+F,EAAK66F,IACA13G,EAAI,EAAGA,EAAIklE,EAAWjlE,OAAQD,IAAK,CACxC,IAAIi1G,EAAYF,EAAe7vC,EAAWllE,GAAIw6G,GAC1CrC,EAAUjzC,EAAWllE,GACrBk1G,EAAWiD,EAAQjD,SAOvB,GALIt1G,EADyB,kBAAlBslE,EAAWllE,IAA4C,kBAAlBklE,EAAWllE,GAC/Cm4G,EAGAlD,EAAUuF,EAAU56G,OAE5B43G,EAAOG,cAA+C,oBAAxBH,EAAOG,aAA6B,CAClE,IAAI9hG,EAAU,CACVqvD,WAAYA,EACZrvD,QAASsiG,EACTxiG,KAAM/V,EACN8P,QAAS8nG,EACThlC,OAAQgoC,GAEZhD,EAAOG,aAAa9hG,GAEpB2hG,EAAOG,cAA+C,oBAAxBH,EAAOG,eACrC1C,EAAYF,EAAe7vC,EAAWllE,GAAIw6G,GAEtC56G,EADyB,kBAAlBslE,EAAWllE,IAA4C,kBAAlBklE,EAAWllE,GAC/Cm4G,EAGAlD,EAAUuF,EAAU56G,QAGpC,IAAIw0G,EAAK7vG,EAAc,KAAM,CACzBsY,GAAIA,EAAK,IAAM7c,EACfyxB,UAAWyjF,EAAW5b,EAASnO,MAAQmO,EAAS8a,GAAIj+E,MAAO,CAAE+uE,KAAM,kBAEvE,GAAIgQ,EAC6B,kBAAlBhwC,EAAWllE,IAA4C,kBAAlBklE,EAAWllE,GACvDo0G,EAAG5b,UAAY2f,EAGf/D,EAAG5b,UAAYyc,EAAUuF,EAAU7kG,UAGtC,CACD,IAAI2lG,EAAYpG,EAAWsC,EAAOqC,gBAAkBrC,EAAO1R,WACvDoP,EACA79E,YAAOuiF,EAAezB,EAASf,EAAmB,iBAAkBkE,IAAa9D,EAAOlmF,kBAAmB8iF,GAG3G/8E,YAAOuiF,EAAezB,EAASf,EAAmB,WAAYkE,IAAa9D,EAAOlmF,kBAAmB8iF,GAEzGA,EAAGp7E,aAAa,aAAcx4B,YAAkBZ,GAAS,OAASA,GAClEw0G,EAAGp7E,aAAa,OAAQ,UAE5B,GAAIw+E,EAAOM,aAA6C,oBAAvBN,EAAOM,YAA4B,CAC5DjiG,EAAU,CACVqvD,WAAYA,EACZrvD,QAASsiG,EACTxiG,KAAM/V,EACNg/C,KAAMw1D,EACN1kG,QAAS8nG,EACThlC,OAAQgoC,GAEZhD,EAAOM,YAAYjiG,GAEvBwlG,EAAar2G,KAAKovG,GAGtB,OADA/8E,YAAOgkF,EAAcrB,GACdA,GAgCX7F,EAASoH,oBAjBT,SAA6B1E,EAAe0D,EAAiB/nC,EAE7DgpC,EAAa9rG,EAAS0nG,GAMlB,IAJA,IAAIwC,EAAiBnrF,YAAQooF,GACzB2D,EAAY94G,YAAO,GAAIyyG,EAASiB,oBAAqB5iC,GACrDglC,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAC5C+rG,EAAWjB,EAAU3E,QAChBz0G,EAAK,EAAGs6G,EAAgBF,EAAap6G,EAAKs6G,EAAcz7G,OAAQmB,IAAM,CAC3E,IAAI+mB,EAASuzF,EAAct6G,GACvBu6G,EAAa,GACjBA,EAAWF,GAAYtzF,EAAOsxE,YAC9BtxE,EAAO3iB,UAAY,GACnB6xB,YAAOuiF,EAAe+B,EAAYvE,EAAmB,gBAAiBI,EAAOqC,kBAAmBrC,EAAOlmF,kBAAmBnJ,GAE9H,OAAOqzF,GAQXrH,EAASuD,WAAaA,EAiOtBvD,EAASkD,WAAaA,EAqBtBlD,EAASyH,aAXT,SAAsBr3G,EAAew1G,EAAWtoF,EAAW/hB,GACvD,IAAI8nG,EAAS91G,YAAO,GAAI00G,EAAwB1mG,GAQhD,OAPA4pF,EAAWme,EAAeD,EAAOT,aAEiB,SAA9BS,EAAOR,mBAAgCx/E,KAAUH,KACvD,CAAC9yB,EAAc,MAAO,CAC5BktB,UAAW,WAAa+lF,EAAOV,gBAAkB,KAC5Ct2G,YAAkBixB,GAAa,GAAKA,MACxCsoF,EAAUrzG,cAAc,IAAM4yF,EAASG,cACzCsgB,GA74Bf,CAg5BG5F,IAAaA,EAAW,M,6BC/6B3B,qLAeO,SAAS0H,EAAkBt3G,EAAe40F,EAAK5qF,EAAMnK,EAAS03G,EAAS5W,GAC1E,IAAI9gC,EAAQhgE,EACZ,GAAIA,EAAQgvB,UAAY+lE,EAAK,CAEzB,IAAI4iB,EAAat8G,YAAS,gBAAiB2E,GAC3CggE,EAAQ7/D,EAAc,QAAS,CAAE4xB,MAAO,CAAE,KAAQ5nB,KAElD,IADA,IAAI5G,EAAQ,CAAC,SAAU,WAAY,QAAS,gBAAiB,MACpDiW,EAAQ,EAAG7Y,EAAMX,EAAQuyB,WAAW12B,OAAQ2d,EAAQ7Y,EAAK6Y,KACH,IAAvDjW,EAAMpG,QAAQ6C,EAAQuyB,WAAW/Y,GAAOk7F,WACxC10C,EAAMprC,aAAa50B,EAAQuyB,WAAW/Y,GAAOk7F,SAAU10G,EAAQuyB,WAAW/Y,GAAOm7F,WAGzFpiF,YAAWvyB,EAAS,CAAE,MAAS03G,EAAS,KAAQ5W,EAAM,eAAgB,UACtE9gG,EAAQgB,YAAYg/D,GACpBjkE,aAAS,gBAAiB47G,EAAY33C,GACtC3jE,YAAa2D,EAAS,iBAE1B,OAAOggE,EASJ,SAAS43C,EAAY53G,GAGxB,IAFA,IAAIyyB,EACAolF,EAAY73G,EAAQstB,WACf1xB,EAAI,EAAGA,EAAIi8G,EAAUh8G,OAAQD,IAElC,GAAsB,KADtB62B,EAAOolF,EAAUj8G,IACRk7B,SACL,OAAOrE,EAGf,OAAO,KAyDJ,SAASowE,EAAe1iG,EAAe23G,EAAcxsG,QACnC,IAAjBwsG,IAA2BA,GAAe,QAC9B,IAAZxsG,IAAsBA,EAAU,IACpC,IAAI6sF,EAAUh4F,EAAc,MAAO,CAAEktB,UAAW,6BAOhD,GANI/hB,EAAQ4pF,UACRrgE,YAAS,CAACsjE,GAAU7sF,EAAQ4pF,SAASv5F,MAAM,MAE3C2P,EAAQq6B,WACRwyD,EAAQnjE,UAAUjN,IAAI,SAEtB+vF,EAAc,CACd,IAAIC,EAAa53G,EAAc,OAAQ,CAAEktB,UAAW,uBACpDqT,aAAaq3E,EAAY,CAAEh3E,gBAAgB,EAAMjB,SAAU,MAC3Dq4D,EAAQn3F,YAAY+2G,GAExB,IAAIC,EAAY73G,EAAc,OAAQ,CAAEktB,UAAW,oBAKnD,GAJI/hB,EAAQ40D,SACR83C,EAAUhjF,UAAUjN,IAAI,WAE5BowE,EAAQn3F,YAAYg3G,GAChB1sG,EAAQmpE,MAAO,CACf,IAAIwjC,EAAY93G,EAAc,OAAQ,CAAEktB,UAAW,YAC/C/hB,EAAQu7F,kBACRoR,EAAU5iB,YAAc/pF,EAAQmpE,MAGhCwjC,EAAU72G,UAAYkK,EAAQmpE,MAElC0jB,EAAQn3F,YAAYi3G,GAExB,OAAO9f,EAUJ,SAAS+f,EAAmBr4G,EAAGk4G,GAClC,GAAIA,EAAY,CACZ,IAAI7uF,EAAU1pB,SAAS24G,YAAY,eACnCjvF,EAAQkvF,UAAUv4G,EAAEsK,MAAM,GAAO,GACjC4tG,EAAWM,cAAcnvF,IAW1B,SAASovF,EAAeC,EAAO35C,GAC9B25C,EAAMv4G,QAAQmuB,aAAa,YAC3BywC,EAAK59D,YAAYu3G,EAAMp4G,cAAc,QAAS,CAC1C4xB,MAAO,CAAE,KAAQwmF,EAAMn/F,MAAQm/F,EAAMv4G,QAAQoZ,KAAM,MAAS,QAAS,KAAQ,e,6BCnKzF,IAAIje,EAAOkgD,EAAQ,KAMflvC,EAAWjP,OAAOhC,UAAUiR,SAQhC,SAAS9O,EAAQ4G,GACf,MAA8B,mBAAvBkI,EAAS7L,KAAK2D,GASvB,SAASnI,EAAYmI,GACnB,MAAsB,qBAARA,EA4EhB,SAAS3H,EAAS2H,GAChB,OAAe,OAARA,GAA+B,kBAARA,EAShC,SAASqlF,EAAcrlF,GACrB,GAA2B,oBAAvBkI,EAAS7L,KAAK2D,GAChB,OAAO,EAGT,IAAI/I,EAAYgC,OAAOsnE,eAAevgE,GACtC,OAAqB,OAAd/I,GAAsBA,IAAcgC,OAAOhC,UAuCpD,SAASs9G,EAAWv0G,GAClB,MAA8B,sBAAvBkI,EAAS7L,KAAK2D,GAwEvB,SAASjG,EAAQzC,EAAKssF,GAEpB,GAAY,OAARtsF,GAA+B,qBAARA,EAU3B,GALmB,kBAARA,IAETA,EAAM,CAACA,IAGL8B,EAAQ9B,GAEV,IAAK,IAAIK,EAAI,EAAG8E,EAAInF,EAAIM,OAAQD,EAAI8E,EAAG9E,IACrCisF,EAAGvnF,KAAK,KAAM/E,EAAIK,GAAIA,EAAGL,QAI3B,IAAK,IAAIS,KAAOT,EACV2B,OAAOhC,UAAUsD,eAAe8B,KAAK/E,EAAKS,IAC5C6rF,EAAGvnF,KAAK,KAAM/E,EAAIS,GAAMA,EAAKT,GA2ErC+nC,EAAO8X,QAAU,CACf/9C,QAASA,EACTo7G,cA1RF,SAAuBx0G,GACrB,MAA8B,yBAAvBkI,EAAS7L,KAAK2D,IA0RrBy0G,SAtSF,SAAkBz0G,GAChB,OAAe,OAARA,IAAiBnI,EAAYmI,IAA4B,OAApBA,EAAI1H,cAAyBT,EAAYmI,EAAI1H,cAChD,oBAA7B0H,EAAI1H,YAAYm8G,UAA2Bz0G,EAAI1H,YAAYm8G,SAASz0G,IAqShF00G,WAlRF,SAAoB10G,GAClB,MAA4B,qBAAb20G,UAA8B30G,aAAe20G,UAkR5DC,kBAzQF,SAA2B50G,GAOzB,MAL4B,qBAAhB60G,aAAiCA,YAAYC,OAC9CD,YAAYC,OAAO90G,GAElBA,GAASA,EAAI+0G,QAAY/0G,EAAI+0G,kBAAkBF,aAqQ3DG,SA1PF,SAAkBh1G,GAChB,MAAsB,kBAARA,GA0PdkB,SAjPF,SAAkBlB,GAChB,MAAsB,kBAARA,GAiPd3H,SAAUA,EACVgtF,cAAeA,EACfxtF,YAAaA,EACbo9G,OAlNF,SAAgBj1G,GACd,MAA8B,kBAAvBkI,EAAS7L,KAAK2D,IAkNrBk1G,OAzMF,SAAgBl1G,GACd,MAA8B,kBAAvBkI,EAAS7L,KAAK2D,IAyMrBm1G,OAhMF,SAAgBn1G,GACd,MAA8B,kBAAvBkI,EAAS7L,KAAK2D,IAgMrBu0G,WAAYA,EACZa,SA9KF,SAAkBp1G,GAChB,OAAO3H,EAAS2H,IAAQu0G,EAAWv0G,EAAIq1G,OA8KvCC,kBArKF,SAA2Bt1G,GACzB,MAAkC,qBAApBu1G,iBAAmCv1G,aAAeu1G,iBAqKhEC,qBAzIF,WACE,OAAyB,qBAAd7zF,WAAoD,gBAAtBA,UAAU8zF,SACY,iBAAtB9zF,UAAU8zF,SACY,OAAtB9zF,UAAU8zF,WAI/B,qBAAX54G,QACa,qBAAbtB,WAkITxB,QAASA,EACTrB,MAvEF,SAASA,IACP,IAAIgB,EAAS,GACb,SAASg8G,EAAY11G,EAAKjI,GACpBstF,EAAc3rF,EAAO3B,KAASstF,EAAcrlF,GAC9CtG,EAAO3B,GAAOW,EAAMgB,EAAO3B,GAAMiI,GACxBqlF,EAAcrlF,GACvBtG,EAAO3B,GAAOW,EAAM,GAAIsH,GACf5G,EAAQ4G,GACjBtG,EAAO3B,GAAOiI,EAAI5D,QAElB1C,EAAO3B,GAAOiI,EAIlB,IAAK,IAAIrI,EAAI,EAAG8E,EAAI9C,UAAU/B,OAAQD,EAAI8E,EAAG9E,IAC3CoC,EAAQJ,UAAUhC,GAAI+9G,GAExB,OAAOh8G,GAuDPL,OA5CF,SAAgByK,EAAGpB,EAAGizG,GAQpB,OAPA57G,EAAQ2I,GAAG,SAAqB1C,EAAKjI,GAEjC+L,EAAE/L,GADA49G,GAA0B,oBAAR31G,EACX9I,EAAK8I,EAAK21G,GAEV31G,KAGN8D,GAqCPsjB,KAhKF,SAAc3nB,GACZ,OAAOA,EAAIhI,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,KAgK/Cm+G,SA7BF,SAAkBnwD,GAIhB,OAH8B,QAA1BA,EAAQthB,WAAW,KACrBshB,EAAUA,EAAQrpD,MAAM,IAEnBqpD,K,6BCpUT,8CACe,SAASowD,EAAezqB,EAAUC,GAC/CD,EAASn0F,UAAYgC,OAAOwgC,OAAO4xD,EAAWp0F,WAC9Cm0F,EAASn0F,UAAUqB,YAAc8yF,EACjC,YAAeA,EAAUC,K,6BCJ3B,IACI18E,EAAS,mBAWEy+E,IAVf,SAAmBve,EAAWnzE,GAC1B,IAAImzE,EAIA,MAAM,IAAIlzE,MAAMgT,K,8BCLxB,SAASmnG,IAEP,GAC4C,qBAAnCC,gCAC4C,oBAA5CA,+BAA+BD,SAcxC,IAEEC,+BAA+BD,SAASA,GACxC,MAAOrM,GAGPuM,QAAQx2F,MAAMiqF,IAOhBqM,GACAz2E,EAAO8X,QAAUC,EAAQ,M,6BClC3B,6CAOI0sD,EAAgC,WAChC,SAASA,EAAertF,GACpB1b,KAAKikE,KAAO,IAAIxoD,IACXre,YAAkBse,KACnB1b,KAAKikE,KAAKj6D,QAAU0R,GAuC5B,OApCAqtF,EAAe7sG,UAAUgkE,kBAAoB,SAAUl1D,GACnD,OAAIA,EAAOG,KACAnL,KAAKikE,KAAKtoD,cAAc3Q,GAGxBhL,KAAKikE,KAAKpoD,gBAAgB7Q,IAGzC+9F,EAAe7sG,UAAUkkE,kBAAoB,SAAUp1D,GACnD,OAAIA,EAAOG,KACAnL,KAAKikE,KAAKnoD,cAAc9Q,GAGxBhL,KAAKikE,KAAKloD,gBAAgB/Q,IAGzC+9F,EAAe7sG,UAAUg/G,SAAW,SAAU1+G,EAAOwO,EAAQG,GACzD,MAAc,SAATA,GAA4B,aAATA,GAAgC,WAATA,GAAwB/N,YAAkB4N,GAI9ExO,EAHAwO,EAAOxO,IAMtBusG,EAAe7sG,UAAUgmG,OAAS,SAAU1lG,EAAOwO,GAC/C,IAAIrM,EAASnC,EAIb,OAHKY,YAAkB4N,IAAY5N,YAAkBZ,KACjDmC,EAASqM,EAAOxO,IAEbmC,GAEXoqG,EAAe7sG,UAAU2gB,WAAa,SAAUnB,GACvCte,YAAkBse,IACnBmB,aAAWnB,IAGZqtF,EA3CyB,I,6BCPpC,uJAAI1qE,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzC08E,EAAuC,WAMvC,SAASA,EAAsB56G,GAC3BP,KAAKO,OAASA,EA6IlB,OA3IA46G,EAAsBj/G,UAAU6gG,QAAU,WAItC,IAHA,IAAIh9F,EAAQC,KACR8oE,EAAO,GACPle,EAAM5qD,KAAKO,OAAO+9D,WAAWj9D,QACxBzE,EAAI,EAAGA,EAAIguD,EAAI/tD,OAAQD,IAAK,CACjC,IAAIm9D,EAAUnP,EAAIhuD,GAAGm9D,QAAQ7oC,QAAO,SAAUuoC,GAC1C,QAASA,EAAOk3C,gBAAkBl3C,EAAO2hD,qBAAuB3hD,EAAO4hD,uBAChEt7G,EAAMu7G,eAAe7hD,MAE5BM,EAAQl9D,QACRisE,EAAKlnE,KAAK,CAAEm4D,QAASA,IAG7B,OAAO+O,GAEXqyC,EAAsBj/G,UAAUo/G,eAAiB,SAAU7hD,GACvD,YAAiCz9D,IAA1By9D,EAAOk3C,gBAElBwK,EAAsBj/G,UAAUwoE,WAAa,SAAUxnE,EAAOyb,GAC1D,IAAIohD,EAAU,GACd,GAAI/5D,KAAKO,OAAO0nG,cACZ,IAAK,IAAIrrG,EAAI,EAAGA,EAAIoD,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAQD,IAC1Dm9D,EAAQn4D,KAAK,IAAIi7D,IAAO,KAWhC,OARI78D,KAAKO,OAAOusG,gBAAmB1vG,YAAkB4C,KAAKO,OAAOqkE,YAC7D7K,EAAQn4D,KAAK,IAAIi7D,IAAO,KAExB78D,KAAKO,OAAOijE,kBAAoBtmE,GAChC68D,EAAQn4D,KAAK,IAAIi7D,IAAO,KAE5B9C,EAAQn4D,KAAKxF,MAAM29D,EAAS/5D,KAAKO,OAAOmkE,cACxC/rD,EAAMA,IAAQzb,EAAQyb,EAAM3Y,KAAKO,OAAOg7G,iBAAmB5iG,EACpDvb,YAAkBF,GAAS68D,EAAUA,EAAQ14D,MAAMnE,EAAOyb,IAErEwiG,EAAsBj/G,UAAUswG,aAAe,SAAUxrC,EAAO/gE,EAAM/C,EAAOyb,EAAKohD,GAC9E,GAAqB,IAAjBiH,EAAMnkE,cACOb,IAATiE,IAAuBA,EAAK66D,OAC5B,MAAO,GAMf,IAHA,IAAIjgD,EAAO7a,KAAKw7G,iBAAiBx6C,EAAO/gE,GACpC6oE,EAAO,GACPle,EAAM5qD,KAAK+8F,UACNngG,EAAI,EAAGA,EAAIguD,EAAI/tD,OAAQD,IAC5BksE,EAAKlnE,KAAK5B,KAAKy7G,gBAAgB7wD,EAAIhuD,GAAIie,EAAKje,GAAIqD,EAAOA,EAAKi5E,WAAQl9E,EAAWkB,EAAOyb,EAAK1Y,EAAOA,EAAKmtG,eAAYpxG,EAAW+9D,IAElI,OAAO+O,GAEXqyC,EAAsBj/G,UAAUu/G,gBAAkB,SAAUC,EAAY7gG,EAAM8gG,EAAKz+G,EAAOyb,EAAKy0F,EAAWrzC,GACtG,IAAIkxB,EAAM,GACN2wB,EAAU57G,KAAK67G,mBACfC,GAAqB1+G,YAAkB4C,KAAKO,OAAOqkE,WACnDm3C,EAAgB7+G,EAAuC,EAA/B8C,KAAKO,OAAOg7G,iBACpCv7G,KAAKO,OAAOijE,kBAAoBtmE,IAChC0+G,EAAU,CAAC,oBAGf,IADA,IAAIr/C,EAASxC,GAAoB/5D,KAAK0kE,WAAWxnE,EAAOyb,GAC/C/b,EAAI,EAAGA,EAAI2/D,EAAO1/D,OAAQD,IAC/BquF,EAAIrpF,KAAK5B,KAAKg8G,iBAAiBz/C,EAAO3/D,GAAI8+G,EAAY9+G,GAAKm/G,EAAe/7G,KAAKi8G,cAC3Er/G,EAAIoD,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAS0xE,IAAS4Q,OAAS5Q,IAAS2tC,mBAAoBN,EAAQh/G,GAAIk/G,IAElH,IAAIlxD,EAAM,IAAI6iD,IAAI,CAAE5yF,KAAMA,EAAM0Y,WAAY,CAAEkxE,MAAO,kBAKrD,OAJA75C,EAAI0V,MAAQ2qB,EACZrgC,EAAInvD,IAAMyiE,YAAO,YACjBtT,EAAIwiD,UAAYA,EAChBxiD,EAAIsS,QAAU+tB,EAAIvhE,MAAK,SAAUq2D,GAAQ,OAAOA,EAAKmuB,YAAcnuB,EAAK7iB,WACjEtS,GAEXuwD,EAAsBj/G,UAAU8/G,iBAAmB,SAAUviD,EAAQiiD,EAAYlX,EAAUrpC,EAAQ2gD,GAE/F,IAAIK,EAAUT,EAAW3hD,QAAQ7oC,QAAO,SAAUkrF,GAAW,OAAOA,EAAQC,aAAe5iD,EAAOD,SAAU,GACxGzmC,EAAQ,CACR,MAAS,CAAE,UAAa0mC,EAAO0qC,WAC/B,eAAgB1qC,EAAOh+D,IAAK+e,MAAOi/C,EAAOj/C,OAE1C2gD,IACApoC,EAAM0xE,MAAQtpC,GAEd/9D,YAAkB+9D,IAAW2gD,IAC7B/oF,EAAM0xE,MAAQ,yBAElB,IAAIuJ,EAAM,CACN,QAAWv0C,EAAOyD,QAClB,YAAe9/D,YAAkB++G,GACjC,WAAcA,IAAY/+G,YAAkB++G,EAAQxL,gBAC7CwL,EAAQf,qBAAuBe,EAAQd,sBAC9C,OAAUc,GAAW,GACrB,WAAcppF,EACd,SAAYyxE,GAGhB,OADAwJ,EAAIv0C,OAAOsD,WAAatD,EAAOsD,WACxB,IAAIoxC,IAAKH,IAEpBmN,EAAsBj/G,UAAUs/G,iBAAmB,SAAU3gG,EAAM5a,GAI/D,IAHA,IAAIq8G,EAAQ,GACRC,EAAcv8G,KAAK+8F,UACnByf,EAAS,GACJ5/G,EAAI,EAAGA,EAAI2/G,EAAY1/G,OAAQD,IAAK,CACzC4/G,EAAS,GAET,IADA,IAAI/iD,EAAS8iD,EAAY3/G,GAAGm9D,QACnB5xD,EAAI,EAAGA,EAAIsxD,EAAO58D,OAAQsL,IAC/Bq0G,EAASx8G,KAAKy8G,YAAYhjD,EAAOtxD,GAAKlI,GAAQA,EAAKq+D,WAAcr+D,EAAO4a,EAAM2hG,GAElFF,EAAM16G,KAAK46G,GAEf,OAAOF,GAEXnB,EAAsBj/G,UAAU2/G,iBAAmB,WAC/C,OAAO77G,KAAKO,OAAOy6D,cAAcjB,QAAQt1D,KAAI,WAAc,MAAO,sBAEtE02G,EAAsBj/G,UAAUugH,YAAc,SAAUhjD,EAAQ5+C,EAAM2hG,GAClE,IAAIE,EAAQjjD,EAAOtuD,KACfogB,EAAS,GACT2+E,EAAWzwC,EAAO0oC,gBAAwC,SAAUp5F,GAAK,OAAOA,GAChFg/E,EAAQltE,EACN6hG,aAAiBt+G,QACnBs+G,EAAQ,CAACjjD,EAAOtuD,OAEpB,IAAK,IAAIvO,EAAI,EAAGA,EAAI8/G,EAAM7/G,OAAQD,IAAK,CACnC,IAAII,EAAMy8D,EAAOD,MAAQ,MAAQkjD,EAAM9/G,GAAG6a,cACtCklG,EAAOljD,EAAO4iD,WACdp3G,EAAmB,WAAby3G,EAAM9/G,IAAmBmrF,EAAMzpB,YAActhE,KAAO+qF,EAAMzpB,WAAaypB,EAAMzpB,WAAWthE,GAC9FohE,YAAmBs+C,EAAM9/G,GAAImrF,EAAMzpB,WAAaypB,EAAQltE,EAAM4+C,EAAQz5D,KAAKO,QAC/Ei8G,EAAOG,GAAQH,EAAOG,IAAS,GAC/BH,EAAOG,GAAM3/G,GAAOiI,EACpBu3G,EAAOG,GAAMD,EAAM9/G,IAAOQ,YAAkB6H,GAAuB,IAAhBilG,EAASjlG,GACxD8iF,EAAMvuB,QACNgjD,EAAOG,GAAMnjD,MAAQuuB,EAAMvuB,MAC3BgjD,EAAOG,GAAM3/G,IAAM+qF,EAAM/qF,KAKjC,OAFAuuB,EAAOvgB,OAASyuD,EAAO0oC,eACvB1oC,EAAOgjD,YAAYlxF,GACZixF,GAEXrB,EAAsBj/G,UAAU+/G,YAAc,WAC1C,OAAO1tC,IAASquC,SAEbzB,EApJgC,GAuJvC0B,EAA4C,SAAU19E,GAEtD,SAAS09E,IACL,OAAkB,OAAX19E,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAY/D,OAdAq+B,EAAUw+E,EAA4B19E,GAItC09E,EAA2B3gH,UAAUo/G,eAAiB,SAAU7hD,GAC5D,YAAsCz9D,IAA/By9D,EAAO2hD,qBAElByB,EAA2B3gH,UAAU2/G,iBAAmB,SAAU3iC,GAE9D,YADc,IAAVA,IAAoBA,EAAQl5E,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,QAC3DmD,KAAKO,OAAOy6D,cAAcjB,QAAQt1D,KAAI,SAAUq4G,EAAG10B,GAAQ,OAAOA,GAAQlP,EAAQ,EAAI,GAAK,sBAEtG2jC,EAA2B3gH,UAAU+/G,YAAc,WAC/C,OAAO1tC,IAASwuC,cAEbF,EAfqC,CAgB9C1B,GAEE6B,EAA8C,SAAU79E,GAExD,SAAS69E,IACL,OAAkB,OAAX79E,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAkB/D,OApBAq+B,EAAU2+E,EAA8B79E,GAIxC69E,EAA6B9gH,UAAUo/G,eAAiB,SAAU7hD,GAC9D,YAAuCz9D,IAAhCy9D,EAAO4hD,sBAElB2B,EAA6B9gH,UAAU6gG,QAAU,WAE7C,MAAO,CAAC59D,EAAOjjC,UAAU6gG,QAAQz7F,KAAKtB,MAAM0pE,QAAO,SAAUuzC,EAAMt3G,GAE3D,OADAs3G,EAAKljD,QAAUkjD,EAAKljD,QAAQjoC,OAAOnsB,EAAIo0D,SAChCkjD,IAHD,CAAEljD,QAAS,OAM7BijD,EAA6B9gH,UAAUwyB,QAAU,WAC7C,OAAoD,KAA5C1uB,KAAK+8F,UAAU,GAAGhjC,SAAW,IAAIl9D,QAE7CmgH,EAA6B9gH,UAAU+/G,YAAc,WACjD,OAAO1tC,IAAS2uC,gBAEbF,EArBuC,CAsBhD7B,I,qPCvNF,SAASgC,EAAW5pB,GAClB,MAA8B,MAAvBA,EAASoT,OAAO,GAIzB,SAASyW,EAAU3lF,EAAMjd,GACvB,IAAK,IAAI5d,EAAI4d,EAAOqvD,EAAIjtE,EAAI,EAAGygH,EAAI5lF,EAAK56B,OAAQgtE,EAAIwzC,EAAGzgH,GAAK,EAAGitE,GAAK,EAClEpyC,EAAK76B,GAAK66B,EAAKoyC,GAGjBpyC,EAAK6lF,MAgEQC,MA5Df,SAAyB3sB,EAAI3H,QACdjtF,IAATitF,IAAoBA,EAAO,IAE/B,IAkBIu0B,EAlBAC,EAAW7sB,GAAMA,EAAGj0F,MAAM,MAAS,GACnC+gH,EAAaz0B,GAAQA,EAAKtsF,MAAM,MAAS,GAEzCghH,EAAU/sB,GAAMusB,EAAWvsB,GAC3BgtB,EAAY30B,GAAQk0B,EAAWl0B,GAC/B40B,EAAaF,GAAWC,EAW5B,GATIhtB,GAAMusB,EAAWvsB,GAEnB8sB,EAAYD,EACHA,EAAQ5gH,SAEjB6gH,EAAUJ,MACVI,EAAYA,EAAU5rF,OAAO2rF,KAG1BC,EAAU7gH,OAAQ,MAAO,IAG9B,GAAI6gH,EAAU7gH,OAAQ,CACpB,IAAIihH,EAAOJ,EAAUA,EAAU7gH,OAAS,GACxC2gH,EAA4B,MAATM,GAAyB,OAATA,GAA0B,KAATA,OAEpDN,GAAmB,EAIrB,IADA,IAAIO,EAAK,EACAnhH,EAAI8gH,EAAU7gH,OAAQD,GAAK,EAAGA,IAAK,CAC1C,IAAIijB,EAAO69F,EAAU9gH,GAER,MAATijB,EACFu9F,EAAUM,EAAW9gH,GACH,OAATijB,GACTu9F,EAAUM,EAAW9gH,GACrBmhH,KACSA,IACTX,EAAUM,EAAW9gH,GACrBmhH,KAIJ,IAAKF,EAAY,KAAOE,IAAMA,EAAIL,EAAU3hH,QAAQ,OAGlD8hH,GACiB,KAAjBH,EAAU,IACRA,EAAU,IAAOP,EAAWO,EAAU,KAExCA,EAAU3hH,QAAQ,IAEpB,IAAI4C,EAAS++G,EAAU/4G,KAAK,KAI5B,OAFI64G,GAA0C,MAAtB7+G,EAAO0O,QAAQ,KAAY1O,GAAU,KAEtDA,GCvET,SAASowE,EAAQxyE,GACf,OAAOA,EAAIwyE,QAAUxyE,EAAIwyE,UAAY7wE,OAAOhC,UAAU6yE,QAAQztE,KAAK/E,GAkCtDyhH,MA/Bf,SAASA,EAAWj1G,EAAGpB,GAErB,GAAIoB,IAAMpB,EAAG,OAAO,EAGpB,GAAS,MAALoB,GAAkB,MAALpB,EAAW,OAAO,EAEnC,GAAIvJ,MAAMC,QAAQ0K,GAChB,OACE3K,MAAMC,QAAQsJ,IACdoB,EAAElM,SAAW8K,EAAE9K,QACfkM,EAAEk1G,OAAM,SAASziE,EAAMhhC,GACrB,OAAOwjG,EAAWxiE,EAAM7zC,EAAE6S,OAKhC,GAAiB,kBAANzR,GAA+B,kBAANpB,EAAgB,CAClD,IAAIu2G,EAASnvC,EAAQhmE,GACjBo1G,EAASpvC,EAAQpnE,GAErB,OAAIu2G,IAAWn1G,GAAKo1G,IAAWx2G,EAAUq2G,EAAWE,EAAQC,GAErDjgH,OAAOjB,KAAKiB,OAAO0rE,OAAO,GAAI7gE,EAAGpB,IAAIs2G,OAAM,SAASjhH,GACzD,OAAOghH,EAAWj1G,EAAE/L,GAAM2K,EAAE3K,OAIhC,OAAO,G,QC1BT,SAAS0pG,EAAgBpT,GACvB,MAA0B,MAAnBA,EAAKqT,OAAO,GAAarT,EAAO,IAAMA,EAE/C,SAAS8qB,EAAkB9qB,GACzB,MAA0B,MAAnBA,EAAKqT,OAAO,GAAarT,EAAKjmF,OAAO,GAAKimF,EAKnD,SAASsT,EAActT,EAAM1/E,GAC3B,OAJF,SAAqB0/E,EAAM1/E,GACzB,OAA4D,IAArD0/E,EAAK77E,cAActZ,QAAQyV,EAAO6D,iBAAuE,IAA/C,MAAMtZ,QAAQm1F,EAAKqT,OAAO/yF,EAAO/W,SAG3FwhH,CAAY/qB,EAAM1/E,GAAU0/E,EAAKjmF,OAAOuG,EAAO/W,QAAUy2F,EAElE,SAASgrB,EAAmBhrB,GAC1B,MAAwC,MAAjCA,EAAKqT,OAAOrT,EAAKz2F,OAAS,GAAay2F,EAAKjyF,MAAM,GAAI,GAAKiyF,EA0BpE,SAASyT,EAAW/9D,GAClB,IAAIuqD,EAAWvqD,EAASuqD,SACpB0L,EAASj2D,EAASi2D,OAClB91D,EAAOH,EAASG,KAChBmqD,EAAOC,GAAY,IAGvB,OAFI0L,GAAqB,MAAXA,IAAgB3L,GAA6B,MAArB2L,EAAO0H,OAAO,GAAa1H,EAAS,IAAMA,GAC5E91D,GAAiB,MAATA,IAAcmqD,GAA2B,MAAnBnqD,EAAKw9D,OAAO,GAAax9D,EAAO,IAAMA,GACjEmqD,EAGT,SAASvC,EAAeuC,EAAMxrB,EAAO9qE,EAAK6zF,GACxC,IAAI7nD,EAEgB,kBAATsqD,GAETtqD,EAvCJ,SAAmBsqD,GACjB,IAAIC,EAAWD,GAAQ,IACnB2L,EAAS,GACT91D,EAAO,GACPo1E,EAAYhrB,EAASp1F,QAAQ,MAEd,IAAfogH,IACFp1E,EAAOoqD,EAASlmF,OAAOkxG,GACvBhrB,EAAWA,EAASlmF,OAAO,EAAGkxG,IAGhC,IAAIC,EAAcjrB,EAASp1F,QAAQ,KAOnC,OALqB,IAAjBqgH,IACFvf,EAAS1L,EAASlmF,OAAOmxG,GACzBjrB,EAAWA,EAASlmF,OAAO,EAAGmxG,IAGzB,CACLjrB,SAAUA,EACV0L,OAAmB,MAAXA,EAAiB,GAAKA,EAC9B91D,KAAe,MAATA,EAAe,GAAKA,GAkBfs1E,CAAUnrB,IACZxrB,MAAQA,QAIS9rE,KAD1BgtC,EAAW4lD,YAAS,GAAI0E,IACXC,WAAwBvqD,EAASuqD,SAAW,IAErDvqD,EAASi2D,OACuB,MAA9Bj2D,EAASi2D,OAAO0H,OAAO,KAAY39D,EAASi2D,OAAS,IAAMj2D,EAASi2D,QAExEj2D,EAASi2D,OAAS,GAGhBj2D,EAASG,KACqB,MAA5BH,EAASG,KAAKw9D,OAAO,KAAY39D,EAASG,KAAO,IAAMH,EAASG,MAEpEH,EAASG,KAAO,QAGJntC,IAAV8rE,QAA0C9rE,IAAnBgtC,EAAS8+B,QAAqB9+B,EAAS8+B,MAAQA,IAG5E,IACE9+B,EAASuqD,SAAWmrB,UAAU11E,EAASuqD,UACvC,MAAO1yF,GACP,MAAIA,aAAa89G,SACT,IAAIA,SAAS,aAAe31E,EAASuqD,SAAxB,iFAEb1yF,EAoBV,OAhBI7D,IAAKgsC,EAAShsC,IAAMA,GAEpB6zF,EAEG7nD,EAASuqD,SAE6B,MAAhCvqD,EAASuqD,SAASoT,OAAO,KAClC39D,EAASuqD,SAAWgqB,EAAgBv0E,EAASuqD,SAAU1C,EAAgB0C,WAFvEvqD,EAASuqD,SAAW1C,EAAgB0C,SAMjCvqD,EAASuqD,WACZvqD,EAASuqD,SAAW,KAIjBvqD,EAET,SAAS41E,EAAkB71G,EAAGpB,GAC5B,OAAOoB,EAAEwqF,WAAa5rF,EAAE4rF,UAAYxqF,EAAEk2F,SAAWt3F,EAAEs3F,QAAUl2F,EAAEogC,OAASxhC,EAAEwhC,MAAQpgC,EAAE/L,MAAQ2K,EAAE3K,KAAOghH,EAAWj1G,EAAE++D,MAAOngE,EAAEmgE,OAG7H,SAAS+2C,IACP,IAAIC,EAAS,KAiCb,IAAIC,EAAY,GA4BhB,MAAO,CACLC,UA5DF,SAAmBC,GAGjB,OADAH,EAASG,EACF,WACDH,IAAWG,IAAYH,EAAS,QAyDtCI,oBArDF,SAA6Bl2E,EAAUlD,EAAQq5E,EAAqBC,GAIlE,GAAc,MAAVN,EAAgB,CAClB,IAAIngH,EAA2B,oBAAXmgH,EAAwBA,EAAO91E,EAAUlD,GAAUg5E,EAEjD,kBAAXngH,EAC0B,oBAAxBwgH,EACTA,EAAoBxgH,EAAQygH,GAG5BA,GAAS,GAIXA,GAAoB,IAAXzgH,QAGXygH,GAAS,IAmCXC,eA7BF,SAAwBx2B,GACtB,IAAIoK,GAAW,EAEf,SAAShqE,IACHgqE,GAAUpK,EAAGzsF,WAAM,EAAQwC,WAIjC,OADAmgH,EAAUn9G,KAAKqnB,GACR,WACLgqE,GAAW,EACX8rB,EAAYA,EAAU7tF,QAAO,SAAUsqB,GACrC,OAAOA,IAASvyB,OAmBpBq2F,gBAdF,WACE,IAAK,IAAI3rB,EAAO/0F,UAAU/B,OAAQoD,EAAO,IAAI7B,MAAMu1F,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E3zF,EAAK2zF,GAAQh1F,UAAUg1F,GAGzBmrB,EAAU//G,SAAQ,SAAUiqB,GAC1B,OAAOA,EAAS7sB,WAAM,EAAQ6D,QAYpC,IAAIs/G,IAAiC,qBAAXz9G,SAA0BA,OAAOtB,WAAYsB,OAAOtB,SAASW,eACvF,SAASq+G,EAAgB7+G,EAASy+G,GAChCA,EAASt9G,OAAO29G,QAAQ9+G,IAwC1B,IAAI++G,EAAgB,WAChBC,EAAkB,aAEtB,SAASC,IACP,IACE,OAAO99G,OAAOonC,QAAQ4+B,OAAS,GAC/B,MAAOjnE,GAGP,MAAO,IASX,SAAS2vF,EAAqBjsF,QACd,IAAVA,IACFA,EAAQ,IAGTg7G,GAAsGltB,aAAU,GACjH,IAAIwtB,EAAgB/9G,OAAOonC,QACvB42E,EAvDN,WACE,IAAIC,EAAKj+G,OAAO8kB,UAAUH,UAC1B,QAAmC,IAA9Bs5F,EAAG5hH,QAAQ,gBAAuD,IAA/B4hH,EAAG5hH,QAAQ,iBAA2D,IAAjC4hH,EAAG5hH,QAAQ,mBAAqD,IAA1B4hH,EAAG5hH,QAAQ,YAAqD,IAAjC4hH,EAAG5hH,QAAQ,mBACtJ2D,OAAOonC,SAAW,cAAepnC,OAAOonC,QAoD3B82E,GAChBC,KA7CsD,IAAnDn+G,OAAO8kB,UAAUH,UAAUtoB,QAAQ,YA8CtC+hH,EAAS37G,EACT47G,EAAsBD,EAAOE,aAC7BA,OAAuC,IAAxBD,GAAyCA,EACxDE,EAAwBH,EAAOf,oBAC/BA,OAAgD,IAA1BkB,EAAmCb,EAAkBa,EAC3EC,EAAmBJ,EAAOK,UAC1BA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9CzZ,EAAWtiG,EAAMsiG,SAAWyX,EAAmB5X,EAAgBniG,EAAMsiG,WAAa,GAEtF,SAAS2Z,EAAeC,GACtB,IAAItvB,EAAOsvB,GAAgB,GACvBzjH,EAAMm0F,EAAKn0F,IACX8qE,EAAQqpB,EAAKrpB,MAEb44C,EAAmB5+G,OAAOknC,SAI1BsqD,EAHWotB,EAAiBntB,SACnBmtB,EAAiBzhB,OACnByhB,EAAiBv3E,KAI5B,OADI09D,IAAUvT,EAAOsT,EAActT,EAAMuT,IAClC9V,EAAeuC,EAAMxrB,EAAO9qE,GAGrC,SAAS2jH,IACP,OAAOp5G,KAAKqmB,SAASzgB,SAAS,IAAIE,OAAO,EAAGkzG,GAG9C,IAAIK,EAAoB/B,IAExB,SAASt2E,EAASs4E,GAChBjyB,YAAS1lD,EAAS23E,GAElB33E,EAAQrsC,OAASgjH,EAAchjH,OAC/B+jH,EAAkBtB,gBAAgBp2E,EAAQF,SAAUE,EAAQpD,QAG9D,SAASg7E,EAAeh6F,IApE1B,SAAmCA,GACjC,YAAuB9qB,IAAhB8qB,EAAMghD,QAAiE,IAA1ClhD,UAAUH,UAAUtoB,QAAQ,UAqE1D4iH,CAA0Bj6F,IAC9Bk6F,EAAUR,EAAe15F,EAAMghD,QAGjC,SAASm5C,IACPD,EAAUR,EAAeZ,MAG3B,IAAIsB,GAAe,EAEnB,SAASF,EAAUh4E,GACjB,GAAIk4E,EACFA,GAAe,EACf34E,QACK,CAELq4E,EAAkB1B,oBAAoBl2E,EADzB,MAC2Cm2E,GAAqB,SAAUgC,GACjFA,EACF54E,EAAS,CACPzC,OAJO,MAKPkD,SAAUA,IASpB,SAAmBo4E,GACjB,IAAI/tB,EAAanqD,EAAQF,SAIrBq4E,EAAUC,EAAQnjH,QAAQk1F,EAAWr2F,MACxB,IAAbqkH,IAAgBA,EAAU,GAC9B,IAAIE,EAAYD,EAAQnjH,QAAQijH,EAAapkH,MAC1B,IAAfukH,IAAkBA,EAAY,GAClC,IAAIC,EAAQH,EAAUE,EAElBC,IACFN,GAAe,EACfO,EAAGD,IAnBCE,CAAU14E,OAuBlB,IAAI24E,EAAkBnB,EAAeZ,KACjC0B,EAAU,CAACK,EAAgB3kH,KAE/B,SAASs1F,EAAWtpD,GAClB,OAAO69D,EAAWE,EAAW/9D,GAuE/B,SAASy4E,EAAGpE,GACVwC,EAAc4B,GAAGpE,GAWnB,IAAIuE,EAAgB,EAEpB,SAASC,EAAkBL,GAGH,KAFtBI,GAAiBJ,IAEoB,IAAVA,GACzB1/G,OAAOynB,iBAAiBm2F,EAAeoB,GACnCb,GAAyBn+G,OAAOynB,iBAAiBo2F,EAAiBsB,IAC3C,IAAlBW,IACT9/G,OAAO6nB,oBAAoB+1F,EAAeoB,GACtCb,GAAyBn+G,OAAO6nB,oBAAoBg2F,EAAiBsB,IAI7E,IAAIa,GAAY,EAiChB,IAAI54E,EAAU,CACZrsC,OAAQgjH,EAAchjH,OACtBipC,OAAQ,MACRkD,SAAU24E,EACVrvB,WAAYA,EACZ1wF,KApIF,SAAc0xF,EAAMxrB,GAElB,IAAIhiC,EAAS,OACTkD,EAAW+nD,EAAeuC,EAAMxrB,EAAO64C,IAAaz3E,EAAQF,UAChE43E,EAAkB1B,oBAAoBl2E,EAAUlD,EAAQq5E,GAAqB,SAAUgC,GACrF,GAAKA,EAAL,CACA,IAAIl4E,EAAOqpD,EAAWtpD,GAClBhsC,EAAMgsC,EAAShsC,IACf8qE,EAAQ9+B,EAAS8+B,MAErB,GAAIg4C,EAMF,GALAD,EAAckC,UAAU,CACtB/kH,IAAKA,EACL8qE,MAAOA,GACN,KAAM7+B,GAELm3E,EACFt+G,OAAOknC,SAASC,KAAOA,MAClB,CACL,IAAI+4E,EAAYV,EAAQnjH,QAAQ+qC,EAAQF,SAAShsC,KAC7CilH,EAAWX,EAAQjgH,MAAM,EAAG2gH,EAAY,GAC5CC,EAASrgH,KAAKonC,EAAShsC,KACvBskH,EAAUW,EACV15E,EAAS,CACPzC,OAAQA,EACRkD,SAAUA,SAKdlnC,OAAOknC,SAASC,KAAOA,OAuG3BvsC,QAlGF,SAAiB42F,EAAMxrB,GAErB,IAAIhiC,EAAS,UACTkD,EAAW+nD,EAAeuC,EAAMxrB,EAAO64C,IAAaz3E,EAAQF,UAChE43E,EAAkB1B,oBAAoBl2E,EAAUlD,EAAQq5E,GAAqB,SAAUgC,GACrF,GAAKA,EAAL,CACA,IAAIl4E,EAAOqpD,EAAWtpD,GAClBhsC,EAAMgsC,EAAShsC,IACf8qE,EAAQ9+B,EAAS8+B,MAErB,GAAIg4C,EAMF,GALAD,EAAcqC,aAAa,CACzBllH,IAAKA,EACL8qE,MAAOA,GACN,KAAM7+B,GAELm3E,EACFt+G,OAAOknC,SAAStsC,QAAQusC,OACnB,CACL,IAAI+4E,EAAYV,EAAQnjH,QAAQ+qC,EAAQF,SAAShsC,MAC9B,IAAfglH,IAAkBV,EAAQU,GAAah5E,EAAShsC,KACpDurC,EAAS,CACPzC,OAAQA,EACRkD,SAAUA,SAKdlnC,OAAOknC,SAAStsC,QAAQusC,QAuE5Bw4E,GAAIA,EACJU,OA/DF,WACEV,GAAI,IA+DJW,UA5DF,WACEX,EAAG,IA4DHY,MAzCF,SAAevD,QACE,IAAXA,IACFA,GAAS,GAGX,IAAIwD,EAAU1B,EAAkB5B,UAAUF,GAO1C,OALKgD,IACHD,EAAkB,GAClBC,GAAY,GAGP,WAML,OALIA,IACFA,GAAY,EACZD,GAAmB,IAGdS,MAwBTnd,OApBF,SAAgBl8E,GACd,IAAIi8E,EAAW0b,EAAkBvB,eAAep2F,GAEhD,OADA44F,EAAkB,GACX,WACLA,GAAmB,GACnB3c,OAiBJ,OAAOh8D,EAGT,IAAIq5E,EAAoB,aACpBC,EAAiB,CACnBC,SAAU,CACRC,WAAY,SAAoBpvB,GAC9B,MAA0B,MAAnBA,EAAKqT,OAAO,GAAarT,EAAO,KAAO8qB,EAAkB9qB,IAElEqvB,WAAY,SAAoBrvB,GAC9B,MAA0B,MAAnBA,EAAKqT,OAAO,GAAarT,EAAKjmF,OAAO,GAAKimF,IAGrDsvB,QAAS,CACPF,WAAYtE,EACZuE,WAAYjc,GAEdmc,MAAO,CACLH,WAAYhc,EACZic,WAAYjc,IAIhB,SAASoc,EAAUlgG,GACjB,IAAI27F,EAAY37F,EAAIzkB,QAAQ,KAC5B,OAAsB,IAAfogH,EAAmB37F,EAAMA,EAAIvhB,MAAM,EAAGk9G,GAG/C,SAASwE,IAGP,IAAI95E,EAAOnnC,OAAOknC,SAASC,KACvBs1E,EAAYt1E,EAAK9qC,QAAQ,KAC7B,OAAsB,IAAfogH,EAAmB,GAAKt1E,EAAK77B,UAAUmxG,EAAY,GAO5D,SAASyE,EAAgB1vB,GACvBxxF,OAAOknC,SAAStsC,QAAQomH,EAAUhhH,OAAOknC,SAASC,MAAQ,IAAMqqD,GAGlE,SAAS2vB,EAAkB1+G,QACX,IAAVA,IACFA,EAAQ,IAGTg7G,GAAmGltB,aAAU,GAC9G,IAAIwtB,EAAgB/9G,OAAOonC,QAEvBg3E,GAnUGp+G,OAAO8kB,UAAUH,UAAUtoB,QAAQ,WAmU7BoG,GACT87G,EAAwBH,EAAOf,oBAC/BA,OAAgD,IAA1BkB,EAAmCb,EAAkBa,EAC3E6C,EAAkBhD,EAAOiD,SACzBA,OAA+B,IAApBD,EAA6B,QAAUA,EAClDrc,EAAWtiG,EAAMsiG,SAAWyX,EAAmB5X,EAAgBniG,EAAMsiG,WAAa,GAClFuc,EAAwBZ,EAAeW,GACvCT,EAAaU,EAAsBV,WACnCC,EAAaS,EAAsBT,WAEvC,SAASnC,IACP,IAAIltB,EAAOqvB,EAAWI,KAGtB,OADIlc,IAAUvT,EAAOsT,EAActT,EAAMuT,IAClC9V,EAAeuC,GAGxB,IAAIstB,EAAoB/B,IAExB,SAASt2E,EAASs4E,GAChBjyB,YAAS1lD,EAAS23E,GAElB33E,EAAQrsC,OAASgjH,EAAchjH,OAC/B+jH,EAAkBtB,gBAAgBp2E,EAAQF,SAAUE,EAAQpD,QAG9D,IAAIo7E,GAAe,EACfmC,EAAa,KAMjB,SAASpC,IACP,IAL4Bl4G,EAAGpB,EAK3B2rF,EAAOyvB,IACPO,EAAcZ,EAAWpvB,GAE7B,GAAIA,IAASgwB,EAEXN,EAAgBM,OACX,CACL,IAAIt6E,EAAWw3E,IACX+C,EAAer6E,EAAQF,SAC3B,IAAKk4E,IAdwBv5G,EAc2BqhC,GAd9BjgC,EAcgBw6G,GAbnChwB,WAAa5rF,EAAE4rF,UAAYxqF,EAAEk2F,SAAWt3F,EAAEs3F,QAAUl2F,EAAEogC,OAASxhC,EAAEwhC,MAaL,OAEnE,GAAIk6E,IAAetc,EAAW/9D,GAAW,OAEzCq6E,EAAa,KAKjB,SAAmBr6E,GACjB,GAAIk4E,EACFA,GAAe,EACf34E,QACK,CACL,IAAIzC,EAAS,MACb86E,EAAkB1B,oBAAoBl2E,EAAUlD,EAAQq5E,GAAqB,SAAUgC,GACjFA,EACF54E,EAAS,CACPzC,OAAQA,EACRkD,SAAUA,IASpB,SAAmBo4E,GACjB,IAAI/tB,EAAanqD,EAAQF,SAIrBq4E,EAAUmC,EAAS9xG,YAAYq1F,EAAW1T,KAC7B,IAAbguB,IAAgBA,EAAU,GAC9B,IAAIE,EAAYiC,EAAS9xG,YAAYq1F,EAAWqa,KAC7B,IAAfG,IAAkBA,EAAY,GAClC,IAAIC,EAAQH,EAAUE,EAElBC,IACFN,GAAe,EACfO,EAAGD,IAnBCE,CAAU14E,OAjBdg4E,CAAUh4E,IAyCd,IAAIsqD,EAAOyvB,IACPO,EAAcZ,EAAWpvB,GACzBA,IAASgwB,GAAaN,EAAgBM,GAC1C,IAAI3B,EAAkBnB,IAClBgD,EAAW,CAACzc,EAAW4a,IAuE3B,SAASF,EAAGpE,GAEVwC,EAAc4B,GAAGpE,GAWnB,IAAIuE,EAAgB,EAEpB,SAASC,EAAkBL,GAGH,KAFtBI,GAAiBJ,IAEoB,IAAVA,EACzB1/G,OAAOynB,iBAAiBg5F,EAAmBtB,GAChB,IAAlBW,GACT9/G,OAAO6nB,oBAAoB44F,EAAmBtB,GAIlD,IAAIa,GAAY,EAiChB,IAAI54E,EAAU,CACZrsC,OAAQgjH,EAAchjH,OACtBipC,OAAQ,MACRkD,SAAU24E,EACVrvB,WAnIF,SAAoBtpD,GAClB,IAAIy6E,EAAUjjH,SAAS8C,cAAc,QACjC2lC,EAAO,GAMX,OAJIw6E,GAAWA,EAAQt0F,aAAa,UAClC8Z,EAAO65E,EAAUhhH,OAAOknC,SAASC,OAG5BA,EAAO,IAAMy5E,EAAW7b,EAAWE,EAAW/9D,KA4HrDpnC,KAzHF,SAAc0xF,EAAMxrB,GAElB,IAAIhiC,EAAS,OACTkD,EAAW+nD,EAAeuC,OAAMt3F,OAAWA,EAAWktC,EAAQF,UAClE43E,EAAkB1B,oBAAoBl2E,EAAUlD,EAAQq5E,GAAqB,SAAUgC,GACrF,GAAKA,EAAL,CACA,IAAI7tB,EAAOyT,EAAW/9D,GAClBs6E,EAAcZ,EAAW7b,EAAWvT,GAGxC,GAFkByvB,MAAkBO,EAEnB,CAIfD,EAAa/vB,EAxIrB,SAAsBA,GACpBxxF,OAAOknC,SAASG,KAAOmqD,EAwIjBowB,CAAaJ,GACb,IAAItB,EAAYwB,EAAS9xG,YAAYq1F,EAAW79D,EAAQF,WACpD26E,EAAYH,EAASniH,MAAM,EAAG2gH,EAAY,GAC9C2B,EAAU/hH,KAAK0xF,GACfkwB,EAAWG,EACXp7E,EAAS,CACPzC,OAAQA,EACRkD,SAAUA,SAIZT,SAgGJ7rC,QA3FF,SAAiB42F,EAAMxrB,GAErB,IAAIhiC,EAAS,UACTkD,EAAW+nD,EAAeuC,OAAMt3F,OAAWA,EAAWktC,EAAQF,UAClE43E,EAAkB1B,oBAAoBl2E,EAAUlD,EAAQq5E,GAAqB,SAAUgC,GACrF,GAAKA,EAAL,CACA,IAAI7tB,EAAOyT,EAAW/9D,GAClBs6E,EAAcZ,EAAW7b,EAAWvT,GACtByvB,MAAkBO,IAMlCD,EAAa/vB,EACb0vB,EAAgBM,IAGlB,IAAItB,EAAYwB,EAASrlH,QAAQ4oG,EAAW79D,EAAQF,YACjC,IAAfg5E,IAAkBwB,EAASxB,GAAa1uB,GAC5C/qD,EAAS,CACPzC,OAAQA,EACRkD,SAAUA,SAsEdy4E,GAAIA,EACJU,OA7DF,WACEV,GAAI,IA6DJW,UA1DF,WACEX,EAAG,IA0DHY,MAzCF,SAAevD,QACE,IAAXA,IACFA,GAAS,GAGX,IAAIwD,EAAU1B,EAAkB5B,UAAUF,GAO1C,OALKgD,IACHD,EAAkB,GAClBC,GAAY,GAGP,WAML,OALIA,IACFA,GAAY,EACZD,GAAmB,IAGdS,MAwBTnd,OApBF,SAAgBl8E,GACd,IAAIi8E,EAAW0b,EAAkBvB,eAAep2F,GAEhD,OADA44F,EAAkB,GACX,WACLA,GAAmB,GACnB3c,OAiBJ,OAAOh8D,EAGT,SAAS06E,EAAMvG,EAAGwG,EAAYC,GAC5B,OAAOv8G,KAAK6L,IAAI7L,KAAK8L,IAAIgqG,EAAGwG,GAAaC,GAO3C,SAASC,EAAoBx/G,QACb,IAAVA,IACFA,EAAQ,IAGV,IAAI27G,EAAS37G,EACT46G,EAAsBe,EAAOf,oBAC7B6E,EAAwB9D,EAAO+D,eAC/BA,OAA2C,IAA1BD,EAAmC,CAAC,KAAOA,EAC5DE,EAAsBhE,EAAOiE,aAC7BA,OAAuC,IAAxBD,EAAiC,EAAIA,EACpD5D,EAAmBJ,EAAOK,UAC1BA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9CM,EAAoB/B,IAExB,SAASt2E,EAASs4E,GAChBjyB,YAAS1lD,EAAS23E,GAElB33E,EAAQrsC,OAASqsC,EAAQk7E,QAAQvnH,OACjC+jH,EAAkBtB,gBAAgBp2E,EAAQF,SAAUE,EAAQpD,QAG9D,SAAS66E,IACP,OAAOp5G,KAAKqmB,SAASzgB,SAAS,IAAIE,OAAO,EAAGkzG,GAG9C,IAAI/lG,EAAQopG,EAAMO,EAAc,EAAGF,EAAepnH,OAAS,GACvDunH,EAAUH,EAAex/G,KAAI,SAAU4/G,GACzC,OAAmCtzB,EAAeszB,OAAOroH,EAAjC,kBAAVqoH,EAAsD1D,IAAgD0D,EAAMrnH,KAAO2jH,QAG/HruB,EAAayU,EAyCjB,SAAS0a,EAAGpE,GACV,IAAIiH,EAAYV,EAAM16E,EAAQ1uB,MAAQ6iG,EAAG,EAAGn0E,EAAQk7E,QAAQvnH,OAAS,GAEjEmsC,EAAWE,EAAQk7E,QAAQE,GAC/B1D,EAAkB1B,oBAAoBl2E,EAFzB,MAE2Cm2E,GAAqB,SAAUgC,GACjFA,EACF54E,EAAS,CACPzC,OALO,MAMPkD,SAAUA,EACVxuB,MAAO8pG,IAKT/7E,OA8BN,IAAIW,EAAU,CACZrsC,OAAQunH,EAAQvnH,OAChBipC,OAAQ,MACRkD,SAAUo7E,EAAQ5pG,GAClBA,MAAOA,EACP4pG,QAASA,EACT9xB,WAAYA,EACZ1wF,KA1FF,SAAc0xF,EAAMxrB,GAElB,IAAIhiC,EAAS,OACTkD,EAAW+nD,EAAeuC,EAAMxrB,EAAO64C,IAAaz3E,EAAQF,UAChE43E,EAAkB1B,oBAAoBl2E,EAAUlD,EAAQq5E,GAAqB,SAAUgC,GACrF,GAAKA,EAAL,CACA,IACImD,EADYp7E,EAAQ1uB,MACI,EACxB+pG,EAAcr7E,EAAQk7E,QAAQ/iH,MAAM,GAEpCkjH,EAAY1nH,OAASynH,EACvBC,EAAYzqG,OAAOwqG,EAAWC,EAAY1nH,OAASynH,EAAWt7E,GAE9Du7E,EAAY3iH,KAAKonC,GAGnBT,EAAS,CACPzC,OAAQA,EACRkD,SAAUA,EACVxuB,MAAO8pG,EACPF,QAASG,SAuEb7nH,QAlEF,SAAiB42F,EAAMxrB,GAErB,IAAIhiC,EAAS,UACTkD,EAAW+nD,EAAeuC,EAAMxrB,EAAO64C,IAAaz3E,EAAQF,UAChE43E,EAAkB1B,oBAAoBl2E,EAAUlD,EAAQq5E,GAAqB,SAAUgC,GAChFA,IACLj4E,EAAQk7E,QAAQl7E,EAAQ1uB,OAASwuB,EACjCT,EAAS,CACPzC,OAAQA,EACRkD,SAAUA,SA0Ddy4E,GAAIA,EACJU,OAnCF,WACEV,GAAI,IAmCJW,UAhCF,WACEX,EAAG,IAgCH+C,MA7BF,SAAenH,GACb,IAAIiH,EAAYp7E,EAAQ1uB,MAAQ6iG,EAChC,OAAOiH,GAAa,GAAKA,EAAYp7E,EAAQk7E,QAAQvnH,QA4BrDwlH,MAzBF,SAAevD,GAKb,YAJe,IAAXA,IACFA,GAAS,GAGJ8B,EAAkB5B,UAAUF,IAqBnC3Z,OAlBF,SAAgBl8E,GACd,OAAO23F,EAAkBvB,eAAep2F,KAmB1C,OAAOigB,I,6BCn5BT,yQAAI7K,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAgBzC4oD,EAAS,CAAEhsB,UAAW,mBAMtBopD,EAAyB,WAOzB,SAASA,EAAQj7B,GAEbxpF,KAAKsM,QAAU,CACX28E,KAAM,QACNmR,YAAa,OACbgF,OAAQ,SACRhoE,OAAQ,SACR2oE,KAAM,OACNhY,MAAO,QACP8X,KAAM,OACNZ,OAAQ,SACRnkC,MAAO,iBACPoH,MAAO,QACP5D,WAAY,aACZygC,OAAQ,UAMZ/+F,KAAKmL,KAAOs5G,EACZzkH,KAAK8hE,WAAa0nB,EAClBxpF,KAAK0kH,IAAM,GAaf,OAHAD,EAAQvoH,UAAUm/F,gBAAkB,SAAUxgF,EAAM2uE,EAAI7nB,EAAO6oB,GAC3D,OAAO3vE,GAEJ4pG,EA1CkB,GAiDzB3pB,EAA6B,SAAU37D,GAEvC,SAAS27D,IACL,OAAkB,OAAX37D,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2W/D,OA7WAq+B,EAAUy8D,EAAa37D,GAUvB27D,EAAY5+F,UAAUisE,aAAe,SAAUw2B,EAAah9B,GAUxD,IATA,IAGI78D,EACA9H,EAIA2iG,EARAhhG,EAASggG,EAAY78B,WAAWE,KAAK3gE,MAAM,GAC3Cy5D,EAAQn8D,EAAO9B,OACf8nH,GAAW,EAGXlmB,EAAW,GACXmmB,EAAW,EACX78B,EAAQ,GAEHnrF,EAAI,EAAGA,EAAI+kE,EAAM88B,SAAS5hG,OAAQD,IACvCgoH,IACAnmB,EAAS98B,EAAM88B,SAAS7hG,GAAGI,KAAO2kE,EAAM88B,SAAS7hG,GAAGJ,MAExD,IAAIqoH,EAAM,GACV,IAASjoH,EAAI,EAAGA,EAAI+kE,EAAM08B,QAAQxhG,OAAQD,IAEtB,YADhBI,EAAM2kE,EAAM08B,QAAQzhG,IACXisF,IAA8B,YAAX7rF,EAAI6rF,KAAqBlnB,EAAM88B,SAAS5hG,QASpEiI,EAAM9E,KAAKhD,EAAI6rF,IAAIvnF,KAAKtB,KAAMrB,EAAQ3B,EAAI6D,EAAG8gE,GAC9B,iBAAX3kE,EAAI6rF,GACJg8B,EAAI7nH,EAAI6D,EAAE24D,MAAQ,MAAQx8D,EAAI6D,EAAEsK,MAAQrG,EAGxCnG,OAAiB3C,IAAR8I,EAAoBA,EAAMnG,EAExB,WAAX3B,EAAI6rF,IAA8B,WAAX7rF,EAAI6rF,IAA8B,WAAX7rF,EAAI6rF,IAA8B,YAAX7rF,EAAI6rF,KACzE87B,GAAW,GAEXA,IACA7pD,EAAQn8D,EAAO9B,UAnBA,YAAXG,EAAI6rF,IACJd,EAAMnmF,KAAK5E,EAAI6D,GAEJ,WAAX7D,EAAI6rF,KACJ8W,EAAO3iG,EAAI6D,IAkBvB,GAAI+jH,EAAU,CACV,IAAI3kH,EAAO,CACP0hE,MAAOA,EAAO88B,SAAUA,EAAU9/F,OAAQA,EAAQopF,MAAOA,EAAO4X,KAAMA,GAEtEmlB,EAAe9kH,KAAK+kH,cAAc9kH,GACtCtB,EAASmmH,EAAanmH,OACtBm8D,EAAQgqD,EAAahqD,MASzB,OAPI6G,EAAMy5B,kBACNz8F,EAAS,CACLA,OAAQA,EACRm8D,MAAOA,EACPwD,WAAYumD,IAGblmH,GAMXm8F,EAAY5+F,UAAU6oH,cAAgB,SAAU9kH,GAC5C,IAAI66D,EAAQ,EACR+pD,EAAM7kH,KAAKglH,aAAa/kH,EAAK0hE,OAC7BhjE,EAASsB,EAAKtB,OAClB,GAAKvB,YAAkB6C,EAAKw+F,SAASwmB,mBAiBhC,CACGzrD,EAAQv5D,EAAK8nF,MAAM,GAAGvR,UAE1B1b,GADAn8D,EAAS+6D,IAASquB,MAAMppF,EAAQ66D,EAAOqrD,EAAK,KAAM,KAAM5kH,EAAK8nF,MAAM,GAAG0B,UAAU,IACjE5sF,OACXge,EAAOlc,EACPsB,EAAK0/F,OACLhhG,EAASqB,KAAKklH,OAAOvmH,EAAQsB,EAAK0/F,KAAM1/F,EAAK0hE,QAEjD3hE,KAAKmlH,gBAAgBxmH,EAAQkc,OAzBwB,CAErD,IADA,IAAIuvE,EAAMnqF,EAAKw+F,SAASwmB,kBACfroH,EAAIwtF,EAAIloB,MAAMrlE,OAAS,EAAGD,GAAK,EAAGA,IACvC+B,EAASqB,KAAKolH,QAAQzmH,EAAQyrF,EAAIloB,MAAMtlE,IAE5C,GAAIqD,EAAK8nF,MAAMlrF,SAAWutF,EAAIlR,MAAO,CACjC,IAAI1f,EAAQv5D,EAAK8nF,MAAMqC,EAAIlR,OAAO1C,UAClC73E,EAAS+6D,IAASquB,MAAMppF,EAAQ66D,EAAOqrD,EAAK,KAAM,KAAM5kH,EAAK8nF,MAAM,GAAG0B,UAAU,GAEpF3uB,EAAQn8D,EAAO9B,OACf,IAAIge,EAAOlc,EAEXA,GADAA,EAASA,EAAO0C,MAAM+oF,EAAI2V,OACV1+F,MAAM,EAAG+oF,EAAIyV,MACzB5/F,EAAK8nF,MAAMlrF,SAAWutF,EAAIlR,OAC1Bl5E,KAAKmlH,gBAAgBxmH,EAAQkc,GAarC,MAAO,CAAElc,OAAQA,EAAQm8D,MAAOA,IAEpCggC,EAAY5+F,UAAUipH,gBAAkB,SAAUxmH,EAAQkc,GACtD,GAAIlc,EAAO9B,QAAUge,EAAKhe,OAAQ,CAC9B,IAAIpB,EAAM,YAIVkD,EAAOlD,GAAOof,EAAKpf,GACnBkD,EAAiB,YAAIkc,EAAe,YACpClc,EAAY,MAAIkc,EAAU,MAC1Blc,EAAc,QAAIkc,EAAY,QAElC,OAAOlc,GAMXm8F,EAAY5+F,UAAU8oH,aAAe,SAAUrjD,GAC3C,IAAI0jD,EAAWzjD,IAAM69B,cAAc99B,EAAM08B,QAAS,gBAC9CwmB,EAAM,GACV,GAAIQ,EAASxoH,OAET,IADA,IAAIouF,OAAM,EACDruF,EAAI,EAAGA,EAAIyoH,EAASxoH,OAAQD,IACjCquF,EAAMo6B,EAASzoH,GAAGiE,EAClBgkH,EAAIjjH,KAAK,CAAEuJ,KAAM8/E,EAAI9/E,KAAMquD,MAAOE,IAASr9D,SAAS4uF,EAAIzxB,MAAOmI,KAGvE,OAAOkjD,GAQX/pB,EAAY5+F,UAAUmhG,aAAe,SAAUp1B,EAAIsB,EAAS1oE,GACxD,IAAIjE,EACA0oH,EAAoB/7C,EAAQre,eAAeruD,OAC/C,IAAKD,EAAI,EAAGA,EAAI2sE,EAAQte,aAAapuD,OAAQD,IACzCoD,KAAK09F,OAAOz1B,EAAIsB,EAAQte,aAAaruD,IAEzC,IAAKA,EAAI,EAAGA,EAAI2sE,EAAQve,eAAenuD,OAAQD,IAC3CoD,KAAK69F,OAAO51B,EAAIpnE,EAAE7D,IAAKusE,EAAQve,eAAepuD,IAElD,IAAKA,EAAI,EAAGA,EAAI0oH,EAAmB1oH,IAC/BoD,KAAKypB,OAAOw+C,EAAIpnE,EAAE7D,IAAKusE,EAAQre,eAAetuD,IAElD,OAAO2sE,GAOXuxB,EAAY5+F,UAAUkpH,QAAU,SAAU57B,EAAI3oF,GAC1C,OAAK2oF,GAAOA,EAAG3sF,OAGR2sF,EAAGt4D,QAAO,SAAU30B,GACvB,GAAIsE,EACA,OAAOA,EAAEkgG,SAASxkG,MAJfitF,GAcfsR,EAAY5+F,UAAUqpH,aAAe,SAAU/7B,EAAI3oF,GAC/C,IAAIgoF,EAAKnvB,IAAS4E,WAAWz9D,EAAEsK,MAC/B,OAAKq+E,GAAOX,GAAoB,IAAdW,EAAG3sF,OAGdgsF,EAAGW,EAAI3oF,EAAE24D,OAFL,MASfshC,EAAY5+F,UAAUspH,SAAW,SAAUh8B,EAAI3oF,GAC3C,OAAK2oF,GAAOA,EAAG3sF,QAGa,IAAxBgE,EAAEs+F,WAAWtiG,QACb68D,IAAS4vB,aAAaE,EAAG,GAAI3oF,EAAEs+F,YAE5B3V,EAAGt4D,QAAO,SAAU30B,GACvB,IAAK,IAAI4L,EAAI,EAAGA,EAAItH,EAAEs+F,WAAWtiG,OAAQsL,IACrC,GAAItH,EAAE4oF,SAASnoF,KAAK/E,EAAKm9D,IAAS3+B,UAAUl6B,EAAEs+F,WAAWh3F,GAAI5L,GAAMsE,EAAEq+F,UAAWr+F,EAAEirF,WAAYjrF,EAAEkrF,cAC5F,OAAO,EAGf,OAAO,MAXAvC,GAoBfsR,EAAY5+F,UAAUupH,SAAW,SAAUj8B,EAAI3oF,EAAG8gE,GAC9C,IAAK6nB,IAAOA,EAAG3sF,OACX,OAAO2sF,EAEX,IAAIk8B,EACAlsD,EAAQE,IAASr9D,SAASwE,EAAE21E,UAAW7U,GAC3C,IAAKnI,EACD,OAAOgwB,EAAG3H,KAAKhhF,EAAE4oF,UAErB,GAAIjwB,aAAiBp7D,MAAO,CAExB,IAAK,IAAIxB,GADT48D,EAAQA,EAAMn4D,MAAM,IACDxE,OAAS,EAAGD,GAAK,EAAGA,IAC9B48D,EAAM58D,KAGX8oH,EAAY7kH,EAAE4oF,SACV/vB,IAAS4tB,SAAS9tB,EAAM58D,GAAI,WAC5B8oH,EAAYhsD,IAAS8tB,OAAO,cAC5BhuB,EAAM58D,GAAK48D,EAAM58D,GAAGF,QAAQ,QAAS,KAEzC8sF,EAAK9vB,IAASmoB,KAAK2H,EAAIhwB,EAAM58D,GAAI8oH,IAErC,OAAOl8B,EAEX,OAAO9vB,IAASmoB,KAAK2H,EAAIhwB,EAAO34D,EAAE4oF,WAQtCqR,EAAY5+F,UAAUypH,QAAU,SAAUn8B,EAAI3oF,EAAG8gE,GAC7C,IAAK6nB,IAAOA,EAAG3sF,OACX,OAAO2sF,EAEX,IAAIq7B,EAAM7kH,KAAKglH,aAAarjD,GAC5B,OAAOjI,IAASquB,MAAMyB,EAAI9vB,IAASr9D,SAASwE,EAAE21E,UAAW7U,GAAQkjD,EAAK,KAAM,KAAMhkH,EAAE4oF,WASxFqR,EAAY5+F,UAAUgpH,OAAS,SAAU17B,EAAI3oF,EAAG8gE,GAC5C,IAAI6a,EAAO9iB,IAASr9D,SAASwE,EAAEukE,SAAUzD,GACrCzkE,GAASw8D,IAASr9D,SAASwE,EAAE++F,UAAWj+B,GAAS,GAAK6a,EACtD7jE,EAAMzb,EAAQs/E,EAClB,OAAKgN,GAAOA,EAAG3sF,OAGR2sF,EAAGnoF,MAAMnE,EAAOyb,GAFZ6wE,GAUfsR,EAAY5+F,UAAU0pH,QAAU,SAAUp8B,EAAI3oF,GAC1C,OAAK2oF,GAAOA,EAAG3sF,OAGR2sF,EAAGnoF,MAAMq4D,IAASr9D,SAASwE,EAAE3D,OAAQw8D,IAASr9D,SAASwE,EAAE8X,MAFrD6wE,GASfsR,EAAY5+F,UAAU2pH,OAAS,SAAUr8B,EAAI3oF,GACzC,OAAK2oF,GAAOA,EAAG3sF,OAGR2sF,EAAGnoF,MAAM,EAAGq4D,IAASr9D,SAASwE,EAAEi/F,MAF5BtW,GASfsR,EAAY5+F,UAAU4pH,OAAS,SAAUt8B,EAAI3oF,GACzC,OAAK2oF,GAAOA,EAAG3sF,OAGR2sF,EAAGnoF,MAAMq4D,IAASr9D,SAASwE,EAAEi/F,MAFzBtW,GASfsR,EAAY5+F,UAAU6pH,SAAW,SAAUv8B,EAAI3oF,GAC3C,OAAK2oF,GAAOA,EAAG3sF,OAGR68D,IAAStiC,OAAOoyD,EAAI9vB,IAASr9D,SAASwE,EAAEs+F,aAFpC3V,GAUfsR,EAAY5+F,UAAUwhG,OAAS,SAAUz1B,EAAIptD,EAAMyvD,EAAW3I,EAAO5zB,GACjE,OAAI3wC,YAAkB2wC,GACXk6B,EAAGnG,WAAWE,KAAKpgE,KAAKiZ,GAGxBotD,EAAGnG,WAAWE,KAAKloD,OAAOi0B,EAAU,EAAGlzB,IAWtDigF,EAAY5+F,UAAUutB,OAAS,SAAUw+C,EAAIP,EAAUlrE,EAAO8tE,GAC1D,IACI1tE,EADA4sF,EAAKvhB,EAAGnG,WAAWE,KAKvB,IAHqB,kBAAVxlE,GAAwBA,aAAiB2M,OAChD3M,EAAQk9D,IAAS3+B,UAAU2sC,EAAUlrE,IAEpCI,EAAI,EAAGA,EAAI4sF,EAAG3sF,QACX68D,IAAS3+B,UAAU2sC,EAAU8hB,EAAG5sF,MAAQJ,EADrBI,KAK3B,OAAOA,IAAM4sF,EAAG3sF,OAAS2sF,EAAG1vE,OAAOld,EAAG,GAAK,MAU/Ck+F,EAAY5+F,UAAU2hG,OAAS,SAAU51B,EAAIP,EAAUlrE,EAAO8tE,GAC1D,IACI1tE,EACAI,EAFAwsF,EAAKvhB,EAAGnG,WAAWE,KAMvB,IAHK5kE,YAAkBsqE,KACnB1qE,EAAMX,YAASqrE,EAAUlrE,IAExBI,EAAI,EAAGA,EAAI4sF,EAAG3sF,SACVO,YAAkBsqE,IAAcrrE,YAASqrE,EAAU8hB,EAAG5sF,MAASI,GAD7CJ,KAK3B,OAAOA,EAAI4sF,EAAG3sF,OAASc,YAAM6rF,EAAG5sF,GAAIJ,GAAS,MAE1Cs+F,EA9WsB,CA+W/B2pB,GAOEz8C,EAA4B,SAAU7oC,GAEtC,SAAS6oC,IACL,OAAkB,OAAX7oC,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA6b/D,OA/bAq+B,EAAU2pC,EAAY7oC,GAYtB6oC,EAAW9rE,UAAUisE,aAAe,SAAUF,EAAItG,EAAOqkD,GACrD,IAIIr0G,EACAouF,EALA1B,EAAUr+F,KAAKimH,gBAAgBtkD,GAC/B4+B,EAAU3+B,IAAM0+B,iBAAiB3+B,EAAM08B,QAAS,CAAC,WAAY,SAAU,SAAU,SAAU,YAC3FxiG,EAAS8lE,EAAM9lE,OACf+mB,EAAMqlD,EAAGnG,WAAWl/C,IAGpBi9E,EAAO,KACPvzF,EAAUtM,KAAKsM,QACf8vF,EAAU,CAAEoD,MAAO,GAAI0mB,OAAQ,GAAIl1C,QAAS,GAAIm1C,SAAU,GAAI7nD,WAAY,IAE1E,WAAYiiC,GACZ5uF,EAAO4uF,EAAQ2kB,OAGfnlB,IAFAA,EAAOrmC,IAASr9D,SAASsV,EAAKiuF,UAAWj+B,IAE1B,IADfk+B,EAAOnmC,IAASr9D,SAASsV,EAAKyzD,SAAUzD,KAGnC,YAAa4+B,IAElBR,GADApuF,EAAO4uF,EAAQqlB,SACH1oH,MACZ2iG,EAAOluF,EAAKgH,IAAMhH,EAAKzU,OAG3B,IAAK,IAAIN,EAAI,EAAGA,EAAIyhG,EAAQmB,MAAM3iG,OAAQD,IACtC+U,EAAO+nD,IAASr9D,SAASgiG,EAAQmB,MAAM5iG,GAAGiE,EAAE21E,UAAW7U,GACvDy6B,EAAQoD,MAAM59F,KAAK83D,IAASowB,oBAAoB9pF,KAAM,aAAc,CAAEoa,KAAMzI,EAAM4tF,UAAWlB,EAAQmB,MAAM5iG,GAAGiE,EAAE0+F,WAAa59B,IAG7HqkD,IACAr0G,EAAO3R,KAAKomH,eAAeJ,EAAkBrkD,KAEzCy6B,EAAQprB,QAAQpvE,KAAK83D,IAASowB,oBAAoB9pF,KAAM,cAAe2R,EAAKsvF,SAAUt/B,IAI9F,IAAS/kE,EAAI,EAAGA,EAAIyhG,EAAQrtB,QAAQn0E,OAAQD,IAAK,CAC7C,IAAIwH,EAAMs1D,IAASowB,oBAAoB9pF,KAAM,cAAeq+F,EAAQrtB,QAAQp0E,GAAGiE,EAAEogG,SAAUt/B,GACtF3hE,KAAK66B,eACmB,mBAAzB76B,KAAK66B,kBACJz9B,YAAkBihG,EAAQrtB,QAAQp0E,GAAGiE,EAAE7D,MAAQqhG,EAAQrtB,QAAQn0E,OAAS,IACzEuH,EAAM,IAAMA,EAAM,KAEtBg4F,EAAQprB,QAAQpvE,KAAKwC,GAErB,IADA,IACSpG,EAAK,EAAGC,EAD0B,kBAAvBm+F,EAAQprB,QAAQp0E,GAAkBsB,OAAOjB,KAAKm/F,EAAQprB,QAAQp0E,IAAM,GACtDoB,EAAKC,EAAOpB,OAAQmB,IAAM,CACxD,IAAImG,EAAOlG,EAAOD,GACd07D,IAASkxB,OAAQwR,EAASj4F,YACnBi4F,EAAQj4F,IAK3B,IAASvH,EAAI,EAAGA,EAAIyhG,EAAQ8nB,SAAStpH,OAAQD,IACzC+U,EAAO0sF,EAAQ8nB,SAASvpH,GAAGiE,EAC3Bu7F,EAAQ+pB,SAASvkH,KAAK83D,IAASowB,oBAAoB9pF,KAAM,eAAgB,CACrEovE,OAAQz9D,EAAKwtF,WACb/8B,SAAUzwD,EAAKywD,SACfplE,IAAK2U,EAAKutF,UACVpT,WAAYn6E,EAAKm6E,YAClBnqB,IAGP,IAAS/kE,EAAI,EAAGA,EAAIyhG,EAAQ6nB,OAAOrpH,OAAQD,IACvCw/F,EAAQ8pB,OAAOtkH,KAAK83D,IAASr9D,SAASgiG,EAAQ6nB,OAAOtpH,GAAGiE,EAAE21E,UAAW7U,IAGzE,IAAS/kE,EAAI,EAAGA,EAAIyhG,EAAQ//B,WAAWzhE,OAAQD,IAC3C+U,EAAO0sF,EAAQ//B,WAAW1hE,GAAGiE,EAC7Bu7F,EAAQ99B,WAAW18D,KAAK,CAAEuJ,KAAMwG,EAAKxG,KAAMquD,MAAOE,IAASr9D,SAASsV,EAAK6nD,MAAOmI,KAEpF,IAAIyoB,EAAM,GAIV,GAHApqF,KAAKqmH,gBAAgB/5G,EAASq1D,EAAO4+B,EAASnE,EAAShS,GAEvD1wB,IAASowB,oBAAoB9pF,KAAM,YAAa,CAAEioE,GAAIA,EAAItG,MAAOA,EAAO9lE,OAAQA,EAAQwuF,UAAWD,IAC/FzoB,EAAM88B,SAAS5hG,OACf,IAASD,EAAI,EAAGA,EAAI+kE,EAAM88B,SAAS5hG,OAAQD,IACvCwtF,EAAIzoB,EAAM88B,SAAS7hG,GAAGI,KAAO2kE,EAAM88B,SAAS7hG,GAAGJ,MAKvD,IADA,IACS+G,EAAK,EAAGypF,EADN9uF,OAAOjB,KAAKmtF,GACS7mF,EAAKypF,EAAOnwF,OAAQ0G,IAAM,CAClDY,EAAO6oF,EAAOzpF,IACdm2D,IAASkxB,OAAOR,EAAIjmF,KAAwB,KAAdimF,EAAIjmF,IAAqC,IAArBimF,EAAIjmF,GAAMtH,gBACrDutF,EAAIjmF,GAGbmI,EAAQyzF,QAAQ3V,GAAO99E,EAAQuzF,QAAQzV,GAAiB,OAATyV,IACjDzV,EAAI99E,EAAQyzF,MAAQrmC,IAASowB,oBAAoB9pF,KAAM,SAAU+/F,EAAMp+B,GACvEyoB,EAAI99E,EAAQuzF,MAAQnmC,IAASowB,oBAAoB9pF,KAAM,SAAU6/F,EAAMl+B,IAE3E,IAAIlwD,EAAIzR,KAAK0kH,IAEb,OADA1kH,KAAK0kH,IAAM,GACsB,SAA7B1kH,KAAKsM,QAAQ8tF,YACN,CACHv/E,KAAME,KAAK0uB,UAAU2gD,EAAK1wB,IAAS1+C,MAAMgzE,kBACzCprE,IAAKA,EACL0jG,QAAS70G,EACTtG,KAAM,OACNuX,YAAa,oCAGrB/Q,EAAO3R,KAAKumH,qBAAqBn8B,EAAKzoB,EAAOsG,GAEtC,CACH98D,KAAM,MAAOyX,KAFjBjR,IAA4C,IAApCs2D,EAAGnG,WAAWl/C,IAAIzkB,QAAQ,KAAc,IAAM,KAAOwT,GAElC9U,OAAS+lB,EAAIlmB,QAAQ,OAAQiV,GAAQiR,EAAK0jG,QAAS70G,KAGlFu2D,EAAW9rE,UAAUmqH,gBAAkB,SAAU/5G,EAASq1D,EAAO4+B,EAASnE,EAASoqB,GAC/E,IACIp8B,EAAMo8B,EACVp8B,EAAI99E,EAAQ28E,MAAQtnB,EAAMu5B,UACtB5uF,EAAQlQ,OAASulE,EAAMy8B,UAAUvhG,SACjCutF,EAAI99E,EAAQlQ,OAAS,eAAgB4D,KAAO05D,IAASowB,oBAAoB9pF,KAAM,aAAc2hE,EAAMy8B,WAAa,KAE/Gz8B,EAAMy8B,UAAUvhG,QAAUyP,EAAQyyF,SACnC3U,EAAI99E,EAAQyyF,QAAU,aAAc/+F,MAAQ,aAAcugG,EACtD7mC,IAASowB,oBAAoB9pF,KAAM,WAAY,CAAEymH,QAAS/sD,IAASr9D,SAASkkG,EAAQwlB,SAAS5mB,WAAYx9B,GAAQ28B,QAAS38B,EAAM28B,SAAW38B,GAASA,EAAM28B,SAElKlU,EAAI99E,EAAQ8qB,QAAU,aAAcmpE,IAAY5+B,EAAMy8B,UAAUvhG,OAC5D68D,IAASowB,oBAAoB9pF,KAAM,WAAY05D,IAASr9D,SAASkkG,EAAQwlB,SAAS5mB,WAAYx9B,GAAQA,GAAS,GACnHyoB,EAAI99E,EAAQwuD,OAAS6G,EAAMy5B,gBAAkB1hC,IAASowB,oBAAoB9pF,KAAM,UAAW2hE,EAAMy5B,gBAAiBz5B,GAAS,GAC3HyoB,EAAI99E,EAAQ2yF,QAAU7C,EAAQ+pB,SAAStpH,OAAS68D,IAASowB,oBAAoB9pF,KAAM,WAAYo8F,EAAQ+pB,SAAUxkD,GAAS,GAC1HyoB,EAAI99E,EAAQyzF,MAAQ,WAAYQ,EAC5B7mC,IAASowB,oBAAoB9pF,KAAM,SAAU05D,IAASr9D,SAASkkG,EAAQulB,OAAOhmB,IAAKn+B,GAAQA,GAAS,GACxGyoB,EAAI99E,EAAQuzF,MAAQ,WAAYU,EAC5B7mC,IAASowB,oBAAoB9pF,KAAM,SAAU05D,IAASr9D,SAASkkG,EAAQslB,OAAO/lB,IAAKn+B,GAAQA,GAAS,GACxGyoB,EAAI99E,EAAQ41D,OAASk6B,EAAQprB,QAAQn0E,QAAUu/F,EAAQ+pB,SAAStpH,OAC5D68D,IAASowB,oBAAoB9pF,KAAM,UAAWo8F,EAAQprB,QAASrP,GAAS,GAC5EyoB,EAAI99E,EAAQ8yF,QAAUhD,EAAQoD,MAAM3iG,OAAS68D,IAASowB,oBAAoB9pF,KAAM,WAAYo8F,EAAQoD,MAAO79B,GAAS,GACpHyoB,EAAI99E,EAAQy7E,OAASqU,EAAQ8pB,OAAOrpH,OAAS68D,IAASowB,oBAAoB9pF,KAAM,UAAWo8F,EAAQ8pB,OAAQvkD,GAAS,GACpHyoB,EAAI99E,EAAQgyD,YAAc89B,EAAQ99B,WAAWzhE,OACzC68D,IAASowB,oBAAoB9pF,KAAM,eAAgBo8F,EAAQ99B,WAAYqD,GAAS,GACpFyoB,EAAS,MAAI,IAQjBpiB,EAAW9rE,UAAUqqH,qBAAuB,SAAUnqB,EAASz6B,EAAOsG,GAClE,MAAO,IAYXD,EAAW9rE,UAAUm/F,gBAAkB,SAAUxgF,EAAM2uE,EAAI7nB,EAAO6oB,EAAK4R,EAAS7yB,GAC5E,GAAIihB,GAAOA,EAAI3lE,kBAAkB,kBAC0C,IAAvE2lE,EAAI3lE,kBAAkB,gBAAgB1mB,QAAQ,oBAA4B,CAC1E,IAAIuoH,EAAiBhtD,IAASyxB,iBAC1B3B,IAAOA,EAAG2B,mBACVzxB,IAASyxB,kBAAmB,GAEhCtwE,EAAO6+C,IAAS1+C,MAAM2xE,UAAU9xE,GAChC6+C,IAASyxB,iBAAmBu7B,EAEhC,IAAIhtB,EAAW0C,EACXsoB,EAAMhrB,EAAS4sB,SAAW,GAC1Bt+B,EAAUntE,EAAOA,EAAKmtE,QAAU,GACpC,GAAIwC,GAAOA,EAAI3lE,kBAAkB,kBAC6B,IAA1D2lE,EAAI3lE,kBAAkB,gBAAgB1mB,QAAQ,OAC9C,OAAQwjE,EAAMy5B,gBAAkB,CAAEz8F,OAAQ,GAAIm8D,MAAO,GAAM,GAE/D,IAAIjzD,EAAIkT,KAAKC,MAAM0+E,EAAS7+E,MAC5B,GAAIhT,GAAkB,UAAbA,EAAEi+B,QAAsBjrB,GAAQA,EAAKowC,aAE1C,OADAse,EAAQte,aAAepwC,EAAKowC,aACrBse,EAEP1uD,GAAQA,EAAKhT,IACbgT,EAAOA,EAAKhT,GAEhB,IAAI5H,EAAO,GACP4a,GAAQ,UAAWA,IACnB5a,EAAK66D,MAAQjgD,EAAKigD,OAEtB76D,EAAKtB,OAASkc,GAAQA,EAAKlc,OAASkc,EAAKlc,OAASkc,EAClD,IAAI6/C,GAAW,EACf,GAAIt8D,MAAMC,QAAQwc,EAAKlc,SAAWkc,EAAKlc,OAAO9B,OAAQ,CAOlD,GAHKO,YAAkByd,EAAKlc,OAAO,GAAM,OACrCsB,EAAKtB,OAASqB,KAAK2mH,sBAAsB1mH,EAAKtB,OAAQ,EAAG+lH,EAAIwB,OAAOrpH,OAAS,IAE7E8kE,GAASA,EAAM88B,SAAS5hG,QAAU6nH,EAAIwB,OAAOrpH,OAC7C,IAAK,IAAID,EAAI,EAAGA,EAAI+kE,EAAM88B,SAAS5hG,OAAQD,IACvC,GAA+B,sBAA3B+kE,EAAM88B,SAAS7hG,GAAM,IAA2B,CAChD,IAAIJ,EAAQmlE,EAAM88B,SAAS7hG,GAAM,MAAO,MACpC8nH,EAAIwB,OAAOrpH,SAAWL,IACtBk+D,GAAW,IAS/B,OAHKA,GACD16D,KAAK4mH,mBAAmBlC,EAAK7pG,EAAM5a,EAAM+nF,EAASrmB,GAE/CjI,IAASkxB,OAAO3qF,EAAK66D,OAAS76D,EAAKtB,OAAS,CAAEA,OAAQsB,EAAKtB,OAAQm8D,MAAO76D,EAAK66D,MAAOwD,WAAYr+D,EAAKq+D,aAElH0J,EAAW9rE,UAAUyqH,sBAAwB,SAAU9rG,EAAMq+D,EAAO2tC,GAChE,IAAK,IAAIjqH,EAAI,EAAGA,EAAIie,EAAKhe,OAAQD,IACzBie,EAAKje,GAAGm3E,MAAMl3E,QAAUqB,OAAOjB,KAAK4d,EAAKje,GAAGm3E,MAAM,IAAI51E,QAAQ,QAAU,GACxE6B,KAAK2mH,sBAAsB9rG,EAAKje,GAAGm3E,MAAOmF,EAAQ,EAAG2tC,EAAa,GAG1E,IAAIprH,EAAM,YAQV,OAJAof,EAAKpf,GAAO4rF,EAAO5rF,GACnBof,EAAQ,MAAIq+D,EACZr+D,EAAa,YAAIgsG,EACjBhsG,EAAY,QAAIA,EAAK,GAAGk5D,MAAMl3E,OAASmD,KAAK8mH,kBAAkBjsG,GAAOzd,YAAkByd,EAAK,GAAGk5D,MAAa,UAAM,GAC3Gl5D,GAEXmtD,EAAW9rE,UAAU4qH,kBAAoB,SAAUjsG,EAAMksG,GAGrD,IAFA,IAAIC,EAAsB,GAEjBpqH,EAAI,EAAGA,EAAIie,EAAKhe,OAAQD,IAC7B,GAAKmqH,EAMDC,EAAsBA,EAAoBl1F,OAAOjX,EAAKje,GAAGm3E,MAAa,cALtE,IAAK,IAAI5rE,EAAI,EAAGA,EAAI0S,EAAKje,GAAGm3E,MAAMl3E,OAAQsL,IACtC6+G,EAAoBplH,KAAKiZ,EAAKje,GAAGm3E,MAAM5rE,IAOnD,OAAO6+G,GAOXh/C,EAAW9rE,UAAUypH,QAAU,SAAU9kH,GAErC,OADAb,KAAK0kH,IAAIwB,OAASrlH,EACXA,GAOXmnE,EAAW9rE,UAAUqpH,aAAe,SAAU1kH,GAC1Cb,KAAK0kH,IAAIpmD,WAAaz9D,GAS1BmnE,EAAW9rE,UAAUmhG,aAAe,SAAUp1B,EAAIsB,EAAS1oE,EAAG8gE,EAAOy7B,GAGjE,MAAO,CACHjyF,KAAM,OACNyX,IAAKqlD,EAAGnG,WAAWk4B,UAAY/xB,EAAGnG,WAAWi4B,SAAW9xB,EAAGnG,WAAW+3B,WAAa5xB,EAAGnG,WAAWl/C,IACjGF,YAAa,kCACb8B,SAAU,OACV3J,KAAME,KAAK0uB,UAAUnrC,YAAO,GAAI,CAC5B2oH,QAAS19C,EAAQve,eACjBk8D,MAAO39C,EAAQte,aACfk8D,QAAS59C,EAAQre,eACjBplB,OAAQ,QACR6kB,MAAO9pD,EAZX+hB,WAaI5lB,IAAK6D,EAZT7D,YAaG08D,IAASwwB,aAAalqF,KAAMioE,EAAItG,OAU3CqG,EAAW9rE,UAAUgoB,WAAa,SAAU+jD,EAAIm0B,KAShDp0B,EAAW9rE,UAAUwhG,OAAS,SAAUz1B,EAAIptD,EAAMyvD,EAAW3I,GACzD,MAAO,CACH/+C,IAAKqlD,EAAGnG,WAAW83B,WAAa3xB,EAAGnG,WAAWi4B,SAAW9xB,EAAGnG,WAAWl/C,IACvE/H,KAAME,KAAK0uB,UAAUnrC,YAAO,GAAI,CAC5B9B,MAAOqe,EACP8vC,MAAO2f,EACPxkC,OAAQ,UACT4zB,IAASwwB,aAAalqF,KAAMioE,EAAItG,OAU3CqG,EAAW9rE,UAAUutB,OAAS,SAAUw+C,EAAIP,EAAUlrE,EAAO8tE,EAAW3I,GACpE,MAAO,CACHx2D,KAAM,OACNyX,IAAKqlD,EAAGnG,WAAW+3B,WAAa5xB,EAAGnG,WAAWi4B,SAAW9xB,EAAGnG,WAAWl/C,IACvE/H,KAAME,KAAK0uB,UAAUnrC,YAAO,GAAI,CAC5BtB,IAAKR,EACL4qH,UAAW1/C,EACX/c,MAAO2f,EACPxkC,OAAQ,UACT4zB,IAASwwB,aAAalqF,KAAMioE,EAAItG,OAU3CqG,EAAW9rE,UAAU2hG,OAAS,SAAU51B,EAAIP,EAAUlrE,EAAO8tE,EAAW3I,GACpE,MAAO,CACHx2D,KAAM,OACNyX,IAAKqlD,EAAGnG,WAAWg4B,WAAa7xB,EAAGnG,WAAWi4B,SAAW9xB,EAAGnG,WAAWl/C,IACvE/H,KAAME,KAAK0uB,UAAUnrC,YAAO,GAAI,CAC5B9B,MAAOA,EACPspC,OAAQ,SACRshF,UAAW1/C,EACX1qE,IAAK08D,IAAS3+B,UAAU2sC,EAAUlrE,GAClCmuD,MAAO2f,GACR5Q,IAASwwB,aAAalqF,KAAMioE,EAAItG,OAS3CqG,EAAW9rE,UAAUkqH,eAAiB,SAAUvrG,EAAM8mD,GAClD,IACInlE,EADAQ,EAAM2kE,EAAMqnB,KAEZ7kF,EAAOnH,EACPmsF,EAAOxnB,EAAM3kE,IACbqqH,EAAY,GACO,kBAAZxsG,EAAK,KACZ1W,EAAO,MAEX,IAAK,IAAIvH,EAAI,EAAGA,EAAIie,EAAKhe,OAAQD,IAEzBJ,EADmB,kBAAZqe,EAAK,GACJ6+C,IAAS3+B,UAAUouD,GAAQhlF,EAAM0W,EAAKje,IAGtCie,EAAKje,GAEjByqH,EAAUzlH,KAAK,IAAIkhE,IAAU9lE,EAAK,QAASR,IAE/C,OAAOsmE,IAAUM,GAAGikD,IAExBr/C,EAAW9rE,UAAU0qH,mBAAqB,SAAUlC,EAAK7pG,EAAM5a,EAAM+nF,EAASrmB,GAC1E,IAAIhxD,EAAQkK,EAIZ,GAHIA,GAAQA,EAAKlc,SACbgS,EAAQkK,EAAKlc,QAEb+lH,GAAOA,EAAIpmD,YAAcomD,EAAIpmD,WAAWzhE,OAAQ,CAChD,IAAIgoH,EAAMH,EAAIpmD,WACVuqB,OAAK,EACLy+B,EAAgB32G,EAChBvM,EAAM,GACNyW,EAAKulF,YACLknB,EAAgBzsG,EAAKulF,WAEzB,IAAK,IAAIxjG,EAAI,EAAGA,EAAIioH,EAAIhoH,OAAQD,KAC5BisF,EAAKnvB,IAAS4E,WAAWumD,EAAIjoH,GAAGuO,SAE5B/G,EAAIygH,EAAIjoH,GAAG48D,MAAQ,MAAQqrD,EAAIjoH,GAAGuO,MAAQ09E,EAAGy+B,EAAezC,EAAIjoH,GAAG48D,QAG3Ev5D,EAAKq+D,WAAal6D,EAEtB,IACImjH,EAAmBnpH,MAAMC,QAAQwc,EAAKlc,SAAWkc,EAAKlc,OAAO9B,SAAWO,YAAkByd,EAAKlc,OAAO,GAAM,KAChH,GAAI+lH,GAAOA,EAAIwB,QAAUxB,EAAIwB,OAAOrpH,SAAW0qH,EAAkB,CAC7D,IAAIrB,EAASxB,EAAIwB,OACjB,IAAStpH,EAAI,EAAGA,EAAIspH,EAAOrpH,OAAQD,IAAK,CAE/BQ,YAAkB4qF,KACnBA,EAAUtuB,IAASquB,MAAMC,EAASk+B,EAAOtpH,KAE7C,IAAI4qH,EAAa5lD,IAAM69B,cAAc99B,EAAM08B,QAAS,WAAWzhG,GAAGiE,EAClE8P,EAAQ+oD,IAASquB,MAAMp3E,EAAOu1G,EAAOtpH,GAAI8nH,EAAIpmD,WALjC,KAKoD0pB,EAASw/B,EAAW/9B,UAExFxpF,EAAKtB,OAASgS,EAElB,OAAO1Q,GAEX+nE,EAAW9rE,UAAU+pH,gBAAkB,SAAUtkD,GAC7C,IAAIyoB,EAAM,CAAEoV,MAAO,GAAI0mB,OAAQ,GAAIl1C,QAAS,GAAIm1C,SAAU,GAAI7nD,WAAY,IAM1E,OALA8rB,EAAIoV,MAAQ59B,IAAM69B,cAAc99B,EAAM08B,QAAS,YAC/CjU,EAAI87B,OAAStkD,IAAM69B,cAAc99B,EAAM08B,QAAS,WAChDjU,EAAIpZ,QAAUpP,IAAM69B,cAAc99B,EAAM08B,QAAS,WACjDjU,EAAI+7B,SAAWvkD,IAAM69B,cAAc99B,EAAM08B,QAAS,YAClDjU,EAAI9rB,WAAasD,IAAM69B,cAAc99B,EAAM08B,QAAS,gBAC7CjU,GAEXpiB,EAAW9rE,UAAU4iG,UAAY,SAAUxyF,GACvC,IAAI89E,EAAM99E,EAAQ+9E,UACd/9E,EAAQzQ,OAAOgB,SACfutF,EAAIvuF,OAAS,IAEjB,IAAK,IAAImC,EAAK,EAAGuF,EAAK+I,EAAQzQ,OAAQmC,EAAKuF,EAAG1G,OAAQmB,IAAM,CACxD,IAAIitF,EAAM1nF,EAAGvF,GACb,GAAIosF,EAAIa,EAAIjuF,KACR,MAAM,IAAI4D,MAAM,4EAEpBwpF,EAAIa,EAAIjuF,KAAOiuF,EAAIzuF,MACfyuF,EAAIpC,KACJuB,EAAIa,EAAIjuF,KAAOiuF,EAAIpC,GAAGvnF,KAAKgL,EAAQq1D,MAAOspB,EAAIjuF,IAAKsP,EAAQq1D,MAAOr1D,EAAQ27D,KAE9EmiB,EAAIvuF,OAAOovF,EAAIjuF,KAAOotF,EAAIa,EAAIjuF,OAG/BgrE,EAhcqB,CAic9By8C,GAME7pB,EAA8B,SAAUz7D,GAExC,SAASy7D,EAAar2F,GAClB,IAAIxE,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAuBjC,OArBAD,EAAMuM,QAAUhO,YAAO,GAAIyB,EAAMuM,QAAS,CACtC8tF,YAAa,MACbhmD,OAAQ,wEACRqzE,gBAAiB,kBACjBroB,OAAQ,WACRhoE,OAAQ,UACR2oE,KAAM,QACNF,KAAM,OACN/kC,MAAO,eACPoH,MAAO,UACP68B,OAAQ,UACR2oB,MAAO,SACPC,UAAW,eACXC,SAAU,SACVC,UAAW,eACXC,aAAc,2CACdC,iBAAkB,qEAClBC,0BAA2B,iDAC3BC,WAAY,QAEhB3pH,YAAOyB,EAAMuM,QAAS/H,GAAS,IACxBxE,EAwjBX,OAjlBAs+B,EAAUu8D,EAAcz7D,GA2BxBy7D,EAAa1+F,UAAU2+B,cAAgB,WACnC,MAAO,gBAOX+/D,EAAa1+F,UAAUgsH,YAAc,SAAUvsD,EAAWgG,EAAOwmD,GAC7D,IACI/lD,EACA+lB,EAFAigC,EAAc,GAGdnjH,EAAM02D,EAAUn/D,MAChB2O,SAAclG,EACdu0D,EAAQmC,EAAUnC,MAAQohC,EAAaytB,SAAS1sD,EAAUnC,OAAS,KAqBvE,GApBIv0D,aAAekE,OACflE,EAAM,YAAey0D,IAAS1+C,MAAM2yE,SAAS1oF,GAAO,KAE3C,WAATkG,IAEAlG,EAAM,KADNA,EAAMqjH,mBAAmBrjH,IACN,IACfkjH,IACA3uD,EAAQ,QAAUA,EAAQ,mBAE1BE,IAAS1+C,MAAM0yE,OAAOzoF,KACtBkjF,EAAO,QAEPxsB,EAAUmwB,aACL3D,IACD3uB,EAAQ,WAAaA,EAAQ,KAEjCv0D,EAAMA,EAAIwS,gBAGlB2qD,EAAW1I,IAAS+xB,aAAa9vB,EAAUyG,UAOvC,OALAgmD,GAAe5uD,EACf4uD,GAAehmD,EACX+lB,IACAigC,GAAejgC,GAEZigC,EAAcnjH,EAQzB,GAAiB,iBAFbm9D,EAJChlE,YAAkB4C,KAAK66B,gBAA2C,mBAAzB76B,KAAK66B,gBAIpC6+B,IAASgyB,cAAc/vB,EAAUyG,UAHjC1I,IAASiyB,gBAAgBhwB,EAAUyG,WAKlB,CAC5B,IAAIzwD,EAAO1M,EACXA,EAAMu0D,EACNA,EAAQ7nD,EAQZ,OANAy2G,GAAehmD,EAAW,IAC1BgmD,GAAe5uD,EAAQ,IACnB2uB,IACAigC,GAAejgC,GAEnBigC,GAAenjH,EAAM,KAGzB21F,EAAa1+F,UAAU4iG,UAAY,SAAUxyF,GACzC6yB,EAAOjjC,UAAU4iG,UAAUx9F,KAAKtB,KAAMsM,UAC/BA,EAAQ+9E,UAAUxuF,QAO7B++F,EAAa1+F,UAAUqsH,mBAAqB,SAAU5sD,EAAWgG,EAAOwmD,GAEpE,IADA,IAAI/jH,EAAM,GACDxH,EAAI,EAAGA,EAAI++D,EAAU+kC,WAAW7jG,OAAQD,IAC7CwH,EAAIxC,KAAK,IAAM5B,KAAKwoH,YAAY7sD,EAAU+kC,WAAW9jG,GAAI+kE,EAAOwmD,GAAgB,KAEpF,OAAO/jH,EAAIO,KAAK,IAAMg3D,EAAUmY,UAAY,MAOhD8mB,EAAa1+F,UAAUssH,YAAc,SAAUt3F,EAAQywC,EAAOwmD,GAC1D,OAAOj3F,EAAOuvE,UAAYzgG,KAAKuoH,mBAAmBr3F,EAAQywC,EAAOwmD,GAAgBnoH,KAAKkoH,YAAYh3F,EAAQywC,EAAOwmD,IAMrHvtB,EAAa1+F,UAAUkpH,QAAU,SAAUp0C,GAIvC,OAHIhxE,KAAK0kH,IAAIzlB,QACTjuB,EAAQpvE,KAAK5B,KAAKwoH,YAAYxoH,KAAK0kH,IAAIzlB,OAAQ,MAAM,IAElDjuB,EAAQrsE,KAAK,UASxBi2F,EAAa1+F,UAAUusH,aAAe,SAAU5nH,GACxCA,EAAEuuE,QAA8B,IAApBvuE,EAAEuuE,OAAOvyE,QACrB68D,IAASh5D,WAAW,0EAGxB,IADA,IAAIwwB,EAASlxB,KAAK0kH,IAAIzlB,QAAU,GACvBriG,EAAI,EAAGA,EAAIiE,EAAEuuE,OAAOvyE,OAAQD,IACjCs0B,EAAOtvB,KAAK,IAAIkhE,IAAUjiE,EAAEuuE,OAAOxyE,GAAIiE,EAAEuhE,SAAUvhE,EAAE7D,IAAK6D,EAAEirF,aAEhE9rF,KAAK0kH,IAAIzlB,OAAS/tE,GAMtB0pE,EAAa1+F,UAAUspH,SAAW,SAAU3kH,GAExC,OADAb,KAAK0kH,IAAIzlB,OAASn8B,IAAUM,GAAGpjE,KAAK0kH,IAAIzlB,QACjC,IAMXrE,EAAa1+F,UAAUwsH,WAAa,SAAU7nH,GAC1C,IAAIuD,EAAM,GACV,GAAIvD,EAAEuZ,gBAAgBhc,MAClB,IAAK,IAAIxB,EAAI,EAAGA,EAAIiE,EAAEuZ,KAAKvd,OAAQD,IAC/BwH,EAAIxC,KAAKg5F,EAAaytB,SAASxnH,EAAEuZ,KAAKxd,KAAuB,eAAhBiE,EAAE0+F,UAA6B,QAAU,UAI1Fn7F,EAAIxC,KAAKg5F,EAAaytB,SAASxnH,EAAEuZ,OAAyB,eAAhBvZ,EAAE0+F,UAA6B,QAAU,KAEvF,OAAOn7F,EAAIO,KAAK,MAMpBi2F,EAAa1+F,UAAUupH,SAAW,SAAU5kH,GACxC,OAAOA,EAAE8nH,UAAUhkH,KAAK,MAO5Bi2F,EAAa1+F,UAAUypH,QAAU,SAAU9kH,GAEvC,OADAb,KAAK0kH,IAAIwB,OAASrlH,EACX,IAMX+5F,EAAa1+F,UAAU6pH,SAAW,SAAUllH,GACxC,IAAK,IAAIjE,EAAI,EAAGA,EAAIiE,EAAEhE,OAAQD,IAC1BiE,EAAEjE,GAAKg+F,EAAaytB,SAASxnH,EAAEjE,IAEnC,OAAOiE,EAAE8D,KAAK,MAOlBi2F,EAAa1+F,UAAUqpH,aAAe,SAAU1kH,GAE5C,OADAb,KAAK0kH,IAAIpmD,WAAaz9D,EACf,IAOX+5F,EAAa1+F,UAAU0sH,QAAU,SAAU/nH,GACvC,OAAa,IAANA,EAAa,WAAa,IASrC+5F,EAAa1+F,UAAUgoB,WAAa,SAAU+jD,EAAIm0B,EAASe,GACnDzjC,IAAS4tB,SAAS6V,EAASv6E,IAAK5iB,KAAKsM,QAAQo7G,QAA0C,SAAhCvqB,EAAShyF,KAAKsM,eACrE2kF,EAAQn4E,iBAAiB,SAAUjkB,KAAKsM,QAAQm7G,iBAChDrrB,EAAQn4E,iBAAiB,qBAAsB,OAC/Cm4E,EAAQysB,iBAAiB,uCAGzBzsB,EAAQn4E,iBAAiB,SAAUjkB,KAAKsM,QAAQ8nC,QAEpDgoD,EAAQn4E,iBAAiB,qBAAsB,OAC/Cm4E,EAAQn4E,iBAAiB,wBAAyB,QAYtD22E,EAAa1+F,UAAUm/F,gBAAkB,SAAUxgF,EAAM2uE,EAAI7nB,EAAO6oB,EAAK4R,EAAS7yB,GAC9E,IAAIu/C,EAAY,iBAChB,GAAK1sB,GAA4B,QAAjBA,EAAQjxF,OAAoBnL,KAAK+oH,SAAWluG,EAAKiuG,GAAY,CACzE,IAAIE,EAAWnuG,EAAKiuG,GAAWnsH,MAAM,eACrCqD,KAAK+oH,QAAUC,EAAS,GACxBhpH,KAAKipH,kBAAoBD,EAAS,GAGtC,IAAK5rH,YAAkByd,EAAKhT,GAAI,CAC5B,IAAIqhH,EAAavnD,GAASA,EAAMy5B,gBAAmBvgF,EAAKhT,EAAEqqB,QAAUrX,EAAKhT,EACrEshH,EAAW,aACf,IAAK/rH,YAAkB8rH,GACnB,IAAK,IAAItsH,EAAI,EAAGA,EAAIssH,EAASrsH,OAAQD,IAC5BQ,YAAkB8rH,EAAStsH,GAAGusH,YACxBD,EAAStsH,GAAGusH,GAKnC,IAAIzE,EAAMtoB,GAAWA,EAAe,QAChCgtB,EAAgBppH,KAAKqpH,qBAAqBxuG,EAAM8mD,EAAO6oB,EAAK4R,EAAS7yB,GACzE,GAAI6/C,EACA,OAAOA,EAEX,IAAIE,EAAe9+B,GAAO4R,EAAQv3E,kBAAkB,sBAChDi2C,EAAQ,KACRp0C,EAAW4iG,GAAgBnzG,SAASmzG,EAAc,KAAQ,EAC9D,GAAI3nD,GAASA,EAAMy5B,gBAAiB,EAE5BvgF,EAAe,SAAKA,EAAK,kBACzBigD,EAAQjgD,EAAe,SAAKA,EAAK,gBAEjCA,EAAKhT,IACLgT,EAAOA,EAAKhT,IAEZgT,EAAe,SAAKA,EAAK,kBACzBigD,EAAQjgD,EAAe,SAAKA,EAAK,gBAGzB,IAAZ6L,GAAiB7L,EAAKre,QACtBqe,EAAOA,EAAKre,OAEZqe,EAAKhT,IACLgT,EAAOA,EAAKhT,GAEZ6e,EAAU,GAAK7L,EAAKqX,UACpBrX,EAAOA,EAAKqX,SAEhB,IAAIjyB,EAAO,GAIX,OAHAA,EAAK66D,MAAQA,EACb76D,EAAKtB,OAASkc,EACd7a,KAAK4mH,mBAAmBlC,EAAK7pG,EAAM5a,EAAM,KAAM0hE,GACxCjI,IAASkxB,OAAO9vB,GAAS76D,EAAKtB,OAAS,CAAEA,OAAQsB,EAAKtB,OAAQm8D,MAAO76D,EAAK66D,MAAOwD,WAAYr+D,EAAKq+D,aAS7Gs8B,EAAa1+F,UAAUqqH,qBAAuB,SAAUnqB,EAASz6B,EAAOsG,GACpE,IAAI7jE,EAAM,GAENkmE,EAAY8xB,EAAa,OAAK,UAE3BA,EAAa,MAChBn0B,EAAGnG,WAAW24B,iBACd2B,EAAc,QAAI,QAGtB,IADA,IACSp+F,EAAK,EAAGurH,EADNrrH,OAAOjB,KAAKm/F,GACSp+F,EAAKurH,EAAO1sH,OAAQmB,IAAM,CACtD,IAAImG,EAAOolH,EAAOvrH,GAClBoG,EAAIxC,KAAKuC,EAAO,IAAMi4F,EAAQj4F,IAGlC,OADAC,EAAMA,EAAIO,KAAK,KACXsjE,EAAGnG,WAAWl/C,MAA2C,IAApCqlD,EAAGnG,WAAWl/C,IAAIzkB,QAAQ,OAAgBmsE,EACxDlmE,EAEJA,EAAIvH,OAASytE,EAAY,IAAMlmE,EAAMkmE,GAAa,IAE7DswB,EAAa1+F,UAAUstH,kBAAoB,SAAUxsH,EAAKysH,GACtD,IAAK,IAAIzrH,EAAK,EAAGuF,EAAMnG,YAAkBqsH,GAAwC,GAA1BvrH,OAAOjB,KAAKwsH,GAAkBzrH,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvG,IAAImG,EAAOZ,EAAGvF,GACTyrH,EAAWtlH,aAAiBgF,OAC7BsgH,EAAWtlH,GAAQu1D,IAASyzB,UAAUiB,YAAYq7B,EAAWtlH,KAGrE,OAAOslH,GAQX7uB,EAAa1+F,UAAUwhG,OAAS,SAAUz1B,EAAIptD,EAAMyvD,GAChD,MAAO,CACH1nD,KAAMqlD,EAAGnG,WAAW83B,WAAa3xB,EAAGnG,WAAWl/C,KAAKlmB,QAAQ,OAAQ4tE,EAAY,IAAMA,EAAY,IAClGzvD,KAAME,KAAK0uB,UAAU5uB,EAAM7a,KAAKsM,QAAQo9G,UAAY1pH,KAAKwpH,kBAAoB,QAUrF5uB,EAAa1+F,UAAUutB,OAAS,SAAUw+C,EAAIP,EAAUlrE,EAAO8tE,GAC3D,IAAI1nD,EAOJ,OAFIA,EAJiB,kBAAVpmB,GAAuBk9D,IAAS1+C,MAAM0yE,OAAOlxF,GAI9C,IAAMA,EAAQ,IAHd,KAAOA,EAAQ,KAKlB,CACH2O,KAAM,SACNyX,KAAMqlD,EAAGnG,WAAW+3B,WAAa5xB,EAAGnG,WAAWl/C,KAAKlmB,QAAQ,OAAQ4tE,EAAY,IAAMA,EAAY,IAAM1nD,IAWhHg4E,EAAa1+F,UAAU2hG,OAAS,SAAU51B,EAAIP,EAAUlrE,EAAO8tE,EAAW3I,EAAOy7B,GAI7E,IAAIx6E,EAOJ,MAVgC,UAA5B5iB,KAAKsM,QAAQ27G,YAA2B7qH,YAAkBggG,KAC1D5gG,EAAQwD,KAAK2pH,iBAAiBntH,EAAO4gG,EAAU11B,IAO/C9kD,EAJ2B,kBAApBpmB,EAAMkrE,IAA2BhO,IAAS1+C,MAAM0yE,OAAOlxF,EAAMkrE,IAI9D,IAAMlrE,EAAMkrE,GAAY,IAHxB,KAAOlrE,EAAMkrE,GAAY,KAK5B,CACHv8D,KAAMnL,KAAKsM,QAAQ27G,WACnBrlG,KAAMqlD,EAAGnG,WAAWg4B,WAAa7xB,EAAGnG,WAAWl/C,KAAKlmB,QAAQ,OAAQ4tE,EAAY,IAAMA,EAAY,IAAM1nD,EACxG/H,KAAME,KAAK0uB,UAAUjtC,EAAOwD,KAAKsM,QAAQo9G,UAAY1pH,KAAKwpH,kBAAoB,MAC9Ep1E,OAAQp0C,KAAKsM,QAAQ8nC,SAW7BwmD,EAAa1+F,UAAUmhG,aAAe,SAAUp1B,EAAIsB,EAAS1oE,EAAG8gE,EAAOy7B,GACnE,IAAIwsB,EAAc/oH,EAAEsnF,KAAOzuB,IAAS+wB,QAAQzqF,KAAKsM,QAAQs7G,UACrDhlG,EAAM5iB,KAAK+oH,QAAU/oH,KAAK+oH,QAAU,IAAM/oH,KAAKsM,QAAQo7G,MACvDz/C,EAAGnG,WAAWl/C,IAAIlmB,QAAQ,OAAQ,IAAMsD,KAAKsM,QAAQo7G,OACzD7mH,EAAE+hB,IAAM5iB,KAAKipH,kBAAoBjpH,KAAKipH,kBAAoBpoH,EAAE+hB,IAC5D,IAAI3iB,EAAO,CACP2iB,IAAK/hB,EAAE+hB,IACP5lB,IAAK6D,EAAE7D,IACP6sH,IAAK,EACLC,KAAMpwD,IAAS+wB,QAAQzqF,KAAKsM,QAAQq7G,YAEpCv9B,EAAM,KAAOw/B,EAAc,KAQ/B,OAPAx/B,GAAO,2CAA6CnqF,EAAK6pH,KAAKptH,QAAQ,KAAM,IAAM,KAClFsD,KAAK0kH,IAAIiD,UAAY,EACrBv9B,GAAOpqF,KAAK+pH,sBAAsBxgD,EAAQte,aAAchrD,EAAMgoE,GAC9DmiB,GAAOpqF,KAAKgqH,sBAAsBzgD,EAAQve,eAAgB/qD,EAAMgoE,EAAIm1B,EAAWA,EAASpyC,eAAiB,IACzGo/B,GAAOpqF,KAAKiqH,sBAAsB1gD,EAAQre,eAAgBjrD,EAAMgoE,GAChEmiB,GAAOnqF,EAAK6pH,KAAO,OAEZ,CACH3+G,KAAM,OACNyX,IAAKA,EACL4B,SAAU,OACV9B,YAAa,2CAA6CknG,EAC1D/uG,KANJuvE,GAAO,KAAOw/B,EAAc,OAgBhChvB,EAAa1+F,UAAU+tH,sBAAwB,SAAUr2F,EAAK/yB,EAAGonE,GAC7D,IAAKr0C,EACD,MAAO,GAEX,IACIs2F,EAAO,CACP,OAAU,UACV,IAAO,SAAUrvG,EAAMje,EAAGI,GACtB,IAAI4lB,EAAM82C,IAAS3+B,UAAU/9B,EAAK6d,EAAKje,IACvC,MAAmB,kBAARgmB,GAAoB82C,IAAS1+C,MAAM0yE,OAAO9qE,GAC1C,IAAMA,EAAM,IAEdA,aAAezZ,KAEb,IADQ0R,EAAKje,GAAGI,GACD+wF,SAAW,IAG1B,KAAOnrE,EAAM,MAG5B,KAAQ,SAAU/H,EAAMje,GAAK,MAAO,KAGxC,OADMoD,KAAKmqH,oBAAoBv2F,EAAK/yB,EAAGqpH,EAAMjiD,GAChC,MAQjB2yB,EAAa1+F,UAAU6tH,sBAAwB,SAAUn2F,EAAK/yB,EAAGonE,GAC7D,IAAKr0C,EACD,MAAO,GAEX,IACIs2F,EAAO,CACP,OAAU,QACV,IAAO,SAAUrvG,EAAMje,EAAGI,GAAO,MAAO,IACxC,KAAQ,SAAU6d,EAAMje,GAAK,OAAOme,KAAK0uB,UAAU5uB,EAAKje,IAAM,SAGlE,OADMoD,KAAKmqH,oBAAoBv2F,EAAK/yB,EAAGqpH,EAAMjiD,IASjD2yB,EAAa1+F,UAAU8tH,sBAAwB,SAAUp2F,EAAK/yB,EAAGonE,EAAImiD,GACjE,IAAIrqH,EAAQC,KACZ,IAAK4zB,EACD,MAAO,GAGXA,EAAI50B,SAAQ,SAAUozC,GAAU,OAAOA,EAASryC,EAAM4pH,iBAAiBv3E,EAAQg4E,EAAIl5F,QAAO,SAAUy4C,GAAK,OAAOjQ,IAAS3+B,UAAUl6B,EAAE7D,IAAK2sE,KAAOjQ,IAAS3+B,UAAUl6B,EAAE7D,IAAKo1C,MAAY,GAAIvxC,EAAE7D,QAC7L,IAAIktH,EAAO,CACP,OAAUlqH,KAAKsM,QAAQ27G,WAAa,IACpC,IAAO,SAAUptG,EAAMje,EAAGI,GACtB,MAA4B,kBAAjB6d,EAAKje,GAAGI,IAAqB08D,IAAS1+C,MAAM0yE,OAAO7yE,EAAKje,GAAGI,IAC3D,IAAM6d,EAAKje,GAAGI,GAAO,IAEvB6d,EAAKje,GAAGI,aAAgBmM,KAEtB,IADI0R,EAAKje,GAAGI,GACD+wF,SAAW,IAGtB,KAAOlzE,EAAKje,GAAGI,GAAO,MAGrC,KAAQ,SAAU6d,EAAMje,GAAK,OAAOme,KAAK0uB,UAAU5uB,EAAKje,IAAM,SAGlE,OADMoD,KAAKmqH,oBAAoBv2F,EAAK/yB,EAAGqpH,EAAMjiD,IAGjD2yB,EAAaytB,SAAW,SAAUlkH,GAC9B,OAAOA,EAAKzH,QAAQ,MAAO,MAE/Bk+F,EAAa1+F,UAAUiuH,oBAAsB,SAAUv2F,EAAK/yB,EAAGqpH,EAAMjiD,GAEjE,IADA,IAAImiB,EAAM,GACDxtF,EAAI,EAAGA,EAAIg3B,EAAI/2B,OAAQD,IAC5BwtF,GAAO,KAAOvpF,EAAEipH,KAAO,KACvB1/B,GAAOpqF,KAAKsM,QAAQy7G,iBAAmB,OACvC39B,GAAO8/B,EAAKG,OACQ,UAAhBH,EAAKG,OACLjgC,IAAQniB,EAAGnG,WAAW83B,WAAa3xB,EAAGnG,WAAWi4B,SAAWl5F,EAAE+hB,KAAOsnG,EAAKtnG,IAAIgR,EAAKh3B,EAAGiE,EAAE7D,KAAO,cAE1E,SAAhBktH,EAAKG,QAAqC,WAAhBH,EAAKG,OACpCjgC,IAAQniB,EAAGnG,WAAWg4B,WAAa7xB,EAAGnG,WAAWi4B,SAAWl5F,EAAE+hB,KAAOsnG,EAAKtnG,IAAIgR,EAAKh3B,EAAGiE,EAAE7D,KAAO,cAE1E,YAAhBktH,EAAKG,SACVjgC,IAAQniB,EAAGnG,WAAW+3B,WAAa5xB,EAAGnG,WAAWi4B,SAAWl5F,EAAE+hB,KAAOsnG,EAAKtnG,IAAIgR,EAAKh3B,EAAGiE,EAAE7D,KAAO,eAEnGotF,GAAO,WAAapqF,KAAKsM,QAAQ8nC,OAAS,KAC1Cg2C,GAAO,eAAiBpqF,KAAK0kH,IAAIiD,YAAc,KAC/Cv9B,GAAOpqF,KAAKsM,QAAQ07G,0BAA4B,KAC3C5qH,YAAkBw2B,EAAIh3B,GAAG,gBAK1BwtF,GAAO,MAJPA,GAAO,aAAex2D,EAAIh3B,GAAG,eAAiB,cACvCg3B,EAAIh3B,GAAG,gBAKlBwtF,GAAO8/B,EAAKrvG,KAAK+Y,EAAKh3B,GAE1B,OAAOwtF,GAEXwQ,EAAa1+F,UAAUmtH,qBAAuB,SAAUxuG,EAAM8mD,EAAO6oB,EAAK4R,EAAS7yB,GAC/E,GAAIihB,GAAOA,EAAI3lE,kBAAkB,kBAA6E,IAA1D2lE,EAAI3lE,kBAAkB,gBAAgB1mB,QAAQ,OAC9F,OAAQwjE,EAAMy5B,gBAAkB,CAAEz8F,OAAQ,GAAIm8D,MAAO,GAAM,GAE/D,GAAIshC,GAAWp8F,KAAKsM,QAAQo7G,OAAShuD,IAAS4tB,SAAS8U,EAAQx5E,IAAK5iB,KAAKsM,QAAQo7G,QAAyC,SAA/BtrB,EAAQjxF,KAAKsM,cAA0B,CAC9H,IAAI0wE,EAAOqC,EAAI3lE,kBAAkB,gBAC7BylG,OAAO,EACPC,OAAU,EACV1iH,EAAIgT,EAAO,GAGf,GAFAstE,EAAOA,EAAK/6E,UAAU+6E,EAAKhqF,QAAQ,kBAAoB,IACvD0J,EAAIA,EAAElL,MAAMwrF,IACNtrF,OAAS,EACX,MAAO,GAEXgL,EAAIA,EAAE,GACN,IAAI2iH,EAAQ,sDAAsDvlG,KAAKpd,GACnE2iH,GACA3iH,EAAEnL,QAAQ8tH,EAAM,GAAI,IAIxB,IAFA,IAAIC,EAAaD,EAAQA,EAAM,GAAK,GAE3B5tH,GADTiL,EAAIA,EAAElL,MAAM8tH,IACG5tH,OAAQD,GAAK,EAAGA,IACtB,iBAAiBgO,KAAK/C,EAAEjL,KAAQ,cAAcgO,KAAK/C,EAAEjL,MAG1D0tH,EAAOn0G,SAAS,uBAAuB8O,KAAKpd,EAAEjL,IAAI,GAAI,IAClD2sE,EAAQte,aAAaq/D,KACrBC,EAAU7wD,IAAS1+C,MAAM2xE,UAAU,WAAW1nE,KAAKpd,EAAEjL,IAAI,IACzD0B,YAAO,GAAIirE,EAAQte,aAAaq/D,GAAOtqH,KAAKq7F,gBAAgBkvB,MAGpE,OAAOhhD,EAEX,OAAO,MAEXqxB,EAAa1+F,UAAUytH,iBAAmB,SAAU9uG,EAAMuiF,EAAUpgG,GAChE,IAAI+C,EAAQC,KACZ,OAAI5C,YAAkBggG,IAGtBl/F,OAAOjB,KAAK4d,GAAM7b,SAAQ,SAAUmF,GAC5BA,IAASnH,GAAgB,gBAATmH,IACZu1D,IAAS4wB,cAAczvE,EAAK1W,KAC5BpE,EAAM4pH,iBAAiB9uG,EAAK1W,GAAOi5F,EAASj5F,IAEvB,IADTjG,OAAOjB,KAAK4d,EAAK1W,IAAO+sB,QAAO,SAAUrW,GAAQ,MAAgB,gBAATA,KAC1Dhe,eACCge,EAAK1W,KAGX0W,EAAK1W,KAAUi5F,EAASj5F,IAGxB0W,EAAK1W,IAASi5F,EAASj5F,IAAS0W,EAAK1W,GAAM4qE,YAAcquB,EAASj5F,GAAM4qE,mBAFtEl0D,EAAK1W,OAZb0W,GAqBR+/E,EAllBuB,CAmlBhC5yB,GA0ME0iD,GAnMgC,SAAUvrF,GAE1C,SAASwrF,EAAepmH,GACpB,IAAIxE,EAAQo/B,EAAO79B,KAAKtB,KAAMuE,IAAUvE,KA0BxC,OAxBAD,EAAMuM,QAAUhO,YAAO,GAAIyB,EAAMuM,QAAS,CACtC8tF,YAAa,MACbhmD,OAAQ,iDACRqzE,gBAAiB,kBACjBroB,OAAQ,WACRhoE,OAAQ,UACR2oE,KAAM,QACNF,KAAM,OACN/kC,MAAO,SACPmkC,OAAQ,UACR/8B,MAAO,UACP68B,OAAQ,UACR2oB,MAAO,SACPC,UAAW,eACXC,SAAU,SACVC,UAAW,eACXC,aAAc,2CACdC,iBAAkB,qEAClBC,0BAA2B,iDAC3BC,WAAY,QACZyB,WAAW,EACXttH,MAAO,WAEXkC,YAAOyB,EAAMuM,QAAS/H,GAAS,IACxBxE,EA5BXs+B,EAAUssF,EAAgBxrF,GAiC1BwrF,EAAezuH,UAAU2+B,cAAgB,WACrC,MAAO,kBAOX8vF,EAAezuH,UAAU0sH,QAAU,SAAU/nH,GACzC,OAAa,IAANA,EAAa,OAAS,IAOjC8pH,EAAezuH,UAAUgsH,YAAc,SAAUvsD,EAAWgG,EAAOwmD,GAC/D,IAAIC,EAAc,GACdnjH,EAAM02D,EAAUn/D,MAChB09G,EAASj1G,aAAekE,KAC5B,GAAIw4D,aAAiBC,IAEjB,IADA,IAAIy8B,EAAUr+F,KAAKimH,gBAAgBtkD,GAC1B/kE,EAAI,EAAGA,EAAIyhG,EAAQrtB,QAAQn0E,OAAQD,IACpCyhG,EAAQrtB,QAAQp0E,GAAGiE,EAAE7D,MAAQ2+D,EAAUn/D,QACvC2rH,GAAe,GAW3B,OAPAC,EAAcjpF,EAAOjjC,UAAUgsH,YAAY5mH,KAAKtB,KAAM27D,EAAWgG,EAAOwmD,GACpEjO,IACAkO,EAAcA,EAAY1rH,QAAQ,kBAAmB,OAErDg9D,IAAS1+C,MAAM0yE,OAAOzoF,KACtBmjH,EAAcA,EAAY1rH,QAAQ,OAAQ,IAAIA,QAAQ,KAAM,KAEzD0rH,GASXuC,EAAezuH,UAAUusH,aAAe,SAAU5nH,GAC9C,IAAIo+F,EAASj/F,KAAK0kH,IAAIyB,UAAY,GAClClnB,EAAOr9F,KAAKf,EAAE7D,KACdgD,KAAK0kH,IAAIyB,SAAWlnB,GAMxB0rB,EAAezuH,UAAUspH,SAAW,SAAU3kH,GAC1C,OAAOb,KAAK0kH,IAAIyB,SAASxhH,KAAK,SAMlCgmH,EAAezuH,UAAU0uH,SAAW,SAAU/pH,GAC1C,IAAId,EAAQC,KACR0lF,EAAW,GACX0rB,EAAW,GACX9S,EAAUz9F,EAAEy9F,QAAQj9F,QACpBwpH,EAAQ,GAmBZ,OAlBchqH,EAAE4lH,QAAQv1F,QAAO,SAAUsqB,GAAQ,OAAOA,EAAKr9C,QAAQ,MAAQ,KACrEa,SAAQ,SAAUo4B,GACtB,IAAI36B,EAAS26B,EAAOz6B,MAAM,KACpBF,EAAO,KAAMipF,IACfA,EAASjpF,EAAO,IAAM,IAE1BipF,EAASjpF,EAAO,IAAImF,KAAKnF,EAAO,OAGpCyB,OAAOjB,KAAKyoF,GAAU1mF,SAAQ,SAAU+/F,IACF,IAA7BT,EAAQngG,QAAQ4gG,IACjBT,EAAQ18F,KAAKm9F,MAGrBT,EAAQt/F,SAAQ,SAAU+/F,GACtBqS,EAASrS,GAAUA,KAAUrZ,EAAWqZ,EAAS,IAAMh/F,EAAMuM,QAAQ8qB,OAAS,IAAMsuD,EAASqZ,GAAQp6F,KAAK,KAAO,IAAMo6F,KAE3H7gG,OAAOjB,KAAKm0G,GAAUpyG,SAAQ,SAAU0yF,GAAM,OAAOm5B,EAAMjpH,KAAKwvG,EAAS1f,OAClEm5B,EAAMlmH,KAAK,MAMtBgmH,EAAezuH,UAAU4uH,WAAa,SAAUC,GAE5C,MAAO,YADMA,EAAetmH,KAAI,SAAU+0D,GAAS,OAAOohC,EAAaytB,SAAS7uD,MAAW70D,KAAK,KAClE,MAMlCgmH,EAAezuH,UAAU6pH,SAAW,SAAUllH,GAC1C,OAAOs+B,EAAOjjC,UAAU6pH,SAASzkH,KAAKtB,KAAMa,EAAEqwB,QAAO,SAAUsqB,GAAQ,OAA8B,IAAvBA,EAAKr9C,QAAQ,UAU/FwsH,EAAezuH,UAAUgoB,WAAa,SAAU+jD,EAAIm0B,EAASe,GACnC,SAAlBA,EAAShyF,MAAqC,QAAlBgyF,EAAShyF,MAAoC,UAAlBgyF,EAAShyF,MAChEixF,EAAQn4E,iBAAiB,SAAU,yBAEvCm4E,EAAQn4E,iBAAiB,SAAUjkB,KAAKsM,QAAQ8nC,SAYpDu2E,EAAezuH,UAAUm/F,gBAAkB,SAAUxgF,EAAM2uE,EAAI7nB,EAAO6oB,EAAK4R,EAAS7yB,GAChF,IAAIyhD,EAAW,iBACf,GAAK5uB,GAA4B,QAAjBA,EAAQjxF,OAAoBnL,KAAK+oH,SAAWluG,EAAKmwG,GAAW,CACxE,IAAIC,EAAUpwG,EAAKmwG,GAAUruH,MAAM,eACnCqD,KAAK+oH,QAAUkC,EAAQ,GACvBjrH,KAAKipH,kBAAoBgC,EAAQ,GAErC,IACIvG,EAAMtoB,GAAWA,EAAe,QAChCgtB,EAAgBjqF,EAAOjjC,UAAUmtH,qBAAqB/nH,KAAKtB,KAAM6a,EAAM8mD,EAAO6oB,EAAK4R,EAAS7yB,GAChG,GAAI6/C,EACA,OAAOA,EAEX,IAAItuD,EAAQ,KACRowD,EAAY,eACZvpD,GAASA,EAAMy5B,iBACX8vB,KAAarwG,IACbigD,EAAQjgD,EAAKqwG,IAGrBrwG,EAAQzd,YAAkByd,EAAKre,OAAsBqe,EAAbA,EAAKre,MAC7C,IAAIyD,EAAO,GAIX,OAHAA,EAAK66D,MAAQA,EACb76D,EAAKtB,OAASkc,EACd7a,KAAK4mH,mBAAmBlC,EAAK7pG,EAAM5a,EAAM,KAAM0hE,GACxCjI,IAASkxB,OAAO9vB,GAAS76D,EAAKtB,OAAS,CAAEA,OAAQsB,EAAKtB,OAAQm8D,MAAOA,EAAOwD,WAAYr+D,EAAKq+D,aAxLxE,CA2LlCs8B,GAQiC,SAAUz7D,GAEzC,SAASurF,IACL,OAAkB,OAAXvrF,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAgL/D,OAlLAq+B,EAAUqsF,EAAevrF,GAIzBurF,EAAcxuH,UAAU2+B,cAAgB,WACpC,MAAO,iBAQX6vF,EAAcxuH,UAAUwhG,OAAS,SAAUz1B,EAAIptD,EAAMyvD,GACjD,MAAO,CACHn/D,KAAM,OACNyX,IAAKqlD,EAAGnG,WAAWl/C,IACnB/H,KAAME,KAAK0uB,UAAU5uB,KAU7B6vG,EAAcxuH,UAAUutB,OAAS,SAAUw+C,EAAIP,EAAUlrE,EAAO8tE,GAC5D,MAAO,CACHn/D,KAAM,SACNyX,IAAKqlD,EAAGnG,WAAWl/C,IAAM,IAAMpmB,EAC/Bqe,KAAME,KAAK0uB,UAAUjtC,KAU7BkuH,EAAcxuH,UAAU2hG,OAAS,SAAU51B,EAAIP,EAAUlrE,EAAO8tE,GAC5D,MAAO,CACHn/D,KAAM,MACNyX,IAAKqlD,EAAGnG,WAAWl/C,IACnB/H,KAAME,KAAK0uB,UAAUjtC,KAG7BkuH,EAAcxuH,UAAUmhG,aAAe,SAAUp1B,EAAIsB,EAAS1oE,GAC1D,IAAId,EAAQC,KACR4pH,EAAc/oH,EAAEsnF,KAAOzuB,IAAS+wB,QAAQzqF,KAAKsM,QAAQs7G,UACrDhlG,EAAMqlD,EAAGnG,WAAWl/C,IAAIlmB,QAAQ,OAAQ,IAAMsD,KAAKsM,QAAQo7G,OAC/D7mH,EAAE+hB,IAAM5iB,KAAKipH,kBAAoBjpH,KAAKipH,kBAAoBpoH,EAAE+hB,IAmB5D,IAlBA,IAAIwnE,EAAM,GACNvrF,EAAU,SAAUjC,EAAG2kB,GACvBgoD,EAAQte,aAAajsD,SAAQ,SAAUmJ,EAAGN,GACtC,IAAIqiH,EAEO,SAAUrvG,EAAMje,EAAGI,GAAO,MAAO,IAG5CotF,EAAIxoF,KAAK,KAAOgoH,GAChBx/B,EAAIxoF,KAAK,kDAAmD,IAC5DwoF,EAAIxoF,KAAK,cAAqBqmE,EAAGnG,WAAW83B,WAAa3xB,EAAGnG,WAAWi4B,SAAWl5F,EAAE+hB,KAC9EsnG,EAAS3gD,EAAQte,aAAcruD,EAAGiE,EAAE7D,KAAO,aACjDotF,EAAIxoF,KAAK,iDACTwoF,EAAIxoF,KAAK,SAAWonC,SAASmiF,MAC7B/gC,EAAIxoF,KAAK,GAAIuG,EAAI4S,KAAK0uB,UAAUthC,GAAK,QAIpCvL,EAAI,EAAG2kB,EAAIgoD,EAAQte,aAAapuD,OAAQD,EAAI2kB,EAAG3kB,IACpDiC,EAAQjC,GAEZ,IAAI4rF,EAAU,SAAU5rF,EAAG2kB,GACvBgoD,EAAQve,eAAehsD,SAAQ,SAAUmJ,EAAGN,GAE1B9H,EAAMuM,QAAQ27G,WAD5B,IAAIiC,EAEO,SAAUrvG,EAAMje,EAAGI,GAAO,MAAO,IAG5CotF,EAAIxoF,KAAK,KAAOgoH,GAChBx/B,EAAIxoF,KAAK,kDAAmD,IAC5DwoF,EAAIxoF,KAAK,aAAoBqmE,EAAGnG,WAAWg4B,WAAa7xB,EAAGnG,WAAWi4B,SAAWl5F,EAAE+hB,KAC7EsnG,EAAS3gD,EAAQve,eAAgBpuD,EAAGiE,EAAE7D,KAAO,aACnDotF,EAAIxoF,KAAK,iDACTwoF,EAAIxoF,KAAK,SAAWonC,SAASmiF,MAC7B/gC,EAAIxoF,KAAK,GAAIuG,EAAI4S,KAAK0uB,UAAUthC,GAAK,QAI7C,IAASvL,EAAI,EAAG2kB,EAAIgoD,EAAQve,eAAenuD,OAAQD,EAAI2kB,EAAG3kB,IACtD4rF,EAAQ5rF,GAEZ,IAAIgsF,EAAU,SAAUhsF,EAAG2kB,GACvBgoD,EAAQre,eAAelsD,SAAQ,SAAUmJ,EAAGN,GACxC,IAAIigE,EAEO,SAAUjtD,EAAMje,EAAGI,GACtB,IAAI4lB,EAAM82C,IAAS3+B,UAAU/9B,EAAK6d,EAAKje,IACvC,MAAmB,kBAARgmB,GAAoB82C,IAAS1+C,MAAM0yE,OAAO9qE,GAC1C,IAAMA,EAERA,aAAezZ,KAEb,IADO0R,EAAKje,GAAGI,GACD+wF,SAGd,KAAOnrE,EAAM,KAKhCwnE,EAAIxoF,KAAK,KAAOgoH,GAChBx/B,EAAIxoF,KAAK,kDAAmD,IAC5DwoF,EAAIxoF,KAAK,gBAAuBqmE,EAAGnG,WAAW+3B,WAAa5xB,EAAGnG,WAAWi4B,SAAWl5F,EAAE+hB,KAChFklD,EAAUyB,EAAQre,eAAgBtuD,EAAGiE,EAAE7D,KAAO,aACpDotF,EAAIxoF,KAAK,iDACTwoF,EAAIxoF,KAAK,SAAWonC,SAASmiF,MAC7B/gC,EAAIxoF,KAAK,GAAIuG,EAAI4S,KAAK0uB,UAAUthC,GAAK,QAI7C,IAASvL,EAAI,EAAG2kB,EAAIgoD,EAAQre,eAAeruD,OAAQD,EAAI2kB,EAAG3kB,IACtDgsF,EAAQhsF,GAGZ,OADAwtF,EAAIxoF,KAAK,KAAOgoH,EAAc,KAAM,IAC7B,CACHz+G,KAAM,OACNyX,IAAKA,EACLF,YAAa,6BAA+BknG,EAC5C/uG,KAAMuvE,EAAIzlF,KAAK,UAWvB+lH,EAAcxuH,UAAUgoB,WAAa,SAAU+jD,EAAIm0B,EAASe,GACxDf,EAAQn4E,iBAAiB,SAAU,mDAYvCymG,EAAcxuH,UAAUm/F,gBAAkB,SAAUxgF,EAAM2uE,EAAI7nB,EAAO6oB,EAAK4R,EAAS7yB,GAC/E,IACIm7C,EAAMtoB,GAAWA,EAAe,QAChCthC,EAAQ,KACR76D,EAAO,GACX,GAAIm8F,GAA0C,SAA/BA,EAAQjxF,KAAKsM,cAA0B,CAClD,IAAI6xG,EAAe9+B,GAAO4R,EAAQv3E,kBAAkB,sBAChD6B,EAAW4iG,GAAgBnzG,SAASmzG,EAAc,KAAQ,EAC1D3nD,GAASA,EAAMy5B,kBACV1hC,IAASkxB,OAAO/vE,EAAKuwG,SACtBtwD,EAAQjgD,EAAKuwG,QAGjB1kG,EAAU,GAAK7L,EAAKwwG,QACpBxwG,EAAOA,EAAKwwG,OAEhBprH,EAAK66D,MAAQA,EACb76D,EAAKtB,OAASkc,EACd7a,KAAK4mH,mBAAmBlC,EAAK7pG,EAAM5a,EAAM,KAAM0hE,GAGnD,OADA1hE,EAAKtB,OAASsB,EAAKtB,QAAUkc,EACtB6+C,IAASkxB,OAAO9vB,GAAS76D,EAAKtB,OAAS,CAAEA,OAAQsB,EAAKtB,OAAQm8D,MAAO76D,EAAK66D,MAAOwD,WAAYr+D,EAAKq+D,aAEtGosD,EAnLwB,CAoLjC9vB,IAmDEL,GA7CkC,SAAUp7D,GAE5C,SAASmsF,IACL,OAAkB,OAAXnsF,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAF/Dq+B,EAAUitF,EAAkBnsF,GAY5BmsF,EAAiBpvH,UAAUisE,aAAe,SAAUF,EAAItG,EAAOqkD,GAC3D,IAAIzpH,GAAM,IAAIyrE,GAAaG,aAAaF,EAAItG,EAAOqkD,GAE/CnrG,EAAO6+C,IAAS1+C,MAAM2xE,UAAUpwF,EAAW,MAC3CoC,EAAS,GAEb,GAAIkc,EAAK0wG,MACL,IAAK,IAAI3uH,EAAI,EAAGA,EAAIie,EAAK0wG,MAAM1uH,OAAQD,IAAK,CACxC,IAAI2uH,EAAQ1wG,EAAK0wG,MAAM3uH,GACnBI,EAAMkB,OAAOjB,KAAKsuH,GAAO,GAC7B5sH,EAAO3B,GAAOuuH,EAAMvuH,GAG5B2B,EAAY,MAAIkc,EAGhB,MAAO,CACHA,KAAME,KAAK0uB,UAAU9qC,GACrBikB,IAAKrmB,EAAO,IACZ+pH,QAAS/pH,EAAW,QACpB4O,KAAM,OACNuX,YAAa,oCAlCa,CAsCpCslD,GAOqC,SAAU7oC,GAK7C,SAASo7D,IACL,IAAIx6F,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAEjC,OADAjD,aAAS,aAAcirE,EAAW9rE,UAAUgoB,WAAYnkB,GACjDA,EAkGX,OAzGAs+B,EAAUk8D,EAAmBp7D,GAS7Bo7D,EAAkBr+F,UAAUwhG,OAAS,SAAUz1B,EAAIptD,EAAMyvD,EAAW3I,EAAO5zB,GAGvE,OAFA/tC,KAAK0kH,IAAI32E,SAAWA,EACpB/tC,KAAKioH,WAAa,MACX,CACHrlG,IAAKqlD,EAAGnG,WAAW83B,WAAa3xB,EAAGnG,WAAWi4B,SAAW9xB,EAAGnG,WAAWl/C,IACvE/H,KAAME,KAAK0uB,UAAUnrC,YAAO,GAAI,CAC5B9B,MAAOqe,EACP8vC,MAAO2f,EACPxkC,OAAQ,UACT4zB,IAASwwB,aAAalqF,KAAMioE,EAAItG,OAG3C44B,EAAkBr+F,UAAUutB,OAAS,SAAUw+C,EAAIP,EAAUziE,EAAKqlE,EAAW3I,GAEzE,OADAxiC,EAAOjjC,UAAUutB,OAAOnoB,KAAKtB,KAAMioE,EAAIP,EAAUziE,GAC1C,CACHkG,KAAM,OACNyX,IAAKqlD,EAAGnG,WAAW+3B,WAAa5xB,EAAGnG,WAAWi4B,SAAW9xB,EAAGnG,WAAWl/C,IACvE/H,KAAME,KAAK0uB,UAAUnrC,YAAO,GAAI,CAC5BtB,IAAKiI,EACLmiH,UAAW1/C,EACX/c,MAAO2f,EACPxkC,OAAQ,UACT4zB,IAASwwB,aAAalqF,KAAMioE,EAAItG,OAG3C44B,EAAkBr+F,UAAU2hG,OAAS,SAAU51B,EAAIP,EAAUziE,EAAKqlE,EAAW3I,GAGzE,OAFA3hE,KAAKioH,WAAa,SAClBjoH,KAAKwrH,UAAY9jD,EACV,CACHv8D,KAAM,OACNyX,IAAKqlD,EAAGnG,WAAWg4B,WAAa7xB,EAAGnG,WAAWi4B,SAAW9xB,EAAGnG,WAAWl/C,IACvE/H,KAAME,KAAK0uB,UAAUnrC,YAAO,GAAI,CAC5B9B,MAAOyI,EACP6gC,OAAQ,SACRshF,UAAW1/C,EACX1qE,IAAKiI,EAAIyiE,GACT/c,MAAO2f,GACR5Q,IAASwwB,aAAalqF,KAAMioE,EAAItG,OAG3C44B,EAAkBr+F,UAAUm/F,gBAAkB,SAAUxgF,EAAM2uE,EAAI7nB,EAAO6oB,EAAK4R,EAAS7yB,EAAS1oE,GAC5F,IAAIjE,EAUJ,GARAie,EAA0B,WADZuhF,EAAUrhF,KAAKC,MAAMohF,EAAQvhF,MAAQA,GACpCirB,OAAqB4zB,IAAS1+C,MAAM2xE,UAAU9xE,GAAQA,EAC7C,QAApB7a,KAAKioH,YACL9oF,EAAOjjC,UAAUwhG,OAAOp8F,KAAKtB,KAAMwpF,EAAI3uE,EAAM,KAAM,KAAM7a,KAAK0kH,IAAI32E,UAE9C,WAApB/tC,KAAKioH,YACL9oF,EAAOjjC,UAAU2hG,OAAOv8F,KAAKtB,KAAMwpF,EAAIxpF,KAAKwrH,UAAW3wG,GAE3D7a,KAAKioH,gBAAajsH,EACd6e,EAAKqsG,MACL,IAAKtqH,EAAI,EAAGA,EAAIie,EAAKqsG,MAAMrqH,OAAQD,IAC/BuiC,EAAOjjC,UAAUwhG,OAAOp8F,KAAKtB,KAAMwpF,EAAI3uE,EAAKqsG,MAAMtqH,IAG1D,GAAIie,EAAKosG,QACL,IAAKrqH,EAAI,EAAGA,EAAIie,EAAKosG,QAAQpqH,OAAQD,IACjCuiC,EAAOjjC,UAAU2hG,OAAOv8F,KAAKtB,KAAMwpF,EAAI3oF,EAAE7D,IAAK6d,EAAKosG,QAAQrqH,IAGnE,GAAIie,EAAKssG,QACL,IAAKvqH,EAAI,EAAGA,EAAIie,EAAKssG,QAAQtqH,OAAQD,IACjCuiC,EAAOjjC,UAAUutB,OAAOnoB,KAAKtB,KAAMwpF,EAAI3oF,EAAE7D,IAAK6d,EAAKssG,QAAQvqH,IAGnE,OAAOie,GAUX0/E,EAAkBr+F,UAAUmhG,aAAe,SAAUp1B,EAAIsB,EAAS1oE,EAAG8gE,EAAOy7B,GACxE,MAAO,CACHjyF,KAAM,OACNyX,IAAKqlD,EAAGnG,WAAWk4B,UAAY/xB,EAAGnG,WAAWi4B,SAAW9xB,EAAGnG,WAAWl/C,IACtEF,YAAa,kCACb8B,SAAU,OACV3J,KAAME,KAAK0uB,UAAUnrC,YAAO,GAAI,CAC5B2oH,QAAS19C,EAAQve,eACjBk8D,MAAO39C,EAAQte,aACfk8D,QAAS59C,EAAQre,eACjBplB,OAAQ,QACR6kB,MAAO9pD,EAAE+hB,IACT5lB,IAAK6D,EAAE7D,KACR08D,IAASwwB,aAAalqF,KAAMioE,EAAItG,OAG3C44B,EAAkBr+F,UAAU4iG,UAAY,SAAUxyF,IAC9B,IAAI07D,GACV82B,UAAUxyF,IAEjBiuF,EA1G4B,CA2GrCO,IAMEN,EAAmC,SAAUr7D,GAE7C,SAASq7D,EAAkBj2F,GACvB,IAAIxE,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAUjC,OARAD,EAAMuM,QAAUhO,YAAO,GAAIyB,EAAMuM,QAAS,CACtCywF,QAAS,IAAI9gG,SACb0hG,UAAW,IAAI1hG,SACf6hG,aAAc,IAAI7hG,SAClB2hG,aAAc,IAAI3hG,SAClBshG,YAAa,IAAIthG,WAErBqC,YAAOyB,EAAMuM,QAAS/H,GAAS,IACxBxE,EAKX,OAjBAs+B,EAAUm8D,EAAmBr7D,GAc7Bq7D,EAAkBt+F,UAAU2+B,cAAgB,WACxC,MAAO,qBAEJ2/D,EAlB4B,CAmBrCxyB,GAOE+yB,EAA8B,SAAU57D,GASxC,SAAS47D,EAAa7yB,EAASxnC,EAAW0kC,GACtC,IAAIrlE,EAAQo/B,EAAO79B,KAAKtB,OAASA,KACjCD,EAAM0rH,cAAe,EACrB1rH,EAAM2rH,gBAAiB,EAClBtuH,YAAkB8qE,KACnBnoE,EAAM4rH,aAAezjD,GAEzBnoE,EAAMqlE,SAAWA,EACjBrlE,EAAM6rH,OAASlyD,IAAS+wB,QAAQ,gBAEhC3oF,OAAO6lC,aAAae,QAAQ3oC,EAAM6rH,OAAQ7wG,KAAK0uB,UADrC,CAAExsC,KAAM,GAAIi1B,QAAS,MAE/B,IAAIi2D,EAAOpoF,EAAM6rH,OAsBjB,OArBKxuH,YAAkBsjC,IACnBl+B,aAAY,WACR,IAAIqY,EACJA,EAAO6+C,IAAS1+C,MAAM2xE,UAAU7qF,OAAO6lC,aAAaC,QAAQugD,IAE5D,IADA,IAAI0jC,EAAS,GACJjvH,EAAI,EAAGA,EAAIie,EAAKqX,QAAQr1B,OAAQD,IAAK,CAC1C,IAAIkvH,GAAe,IAAI3iH,KACnB4iH,GAAe,IAAI5iH,KAAK0R,EAAKqX,QAAQt1B,GAAG8jC,WAC5C7lB,EAAKqX,QAAQt1B,GAAG8jC,UAAYorF,EAAcC,EACtCD,EAAcC,EAAcrrF,GAC5BmrF,EAAOjqH,KAAKhF,GAGpB,IAASA,EAAI,EAAGA,EAAIivH,EAAOhvH,OAAQD,IAC/Bie,EAAKqX,QAAQpY,OAAO+xG,EAAOjvH,GAAI,GAC/Bie,EAAK5d,KAAK6c,OAAO+xG,EAAOjvH,GAAI,GAEhCkF,OAAO6lC,aAAaqkF,WAAW7jC,GAC/BrmF,OAAO6lC,aAAae,QAAQy/C,EAAMptE,KAAK0uB,UAAU5uB,MAClD6lB,GAEA3gC,EAqJX,OA9LAs+B,EAAU08D,EAAc57D,GAiDxB47D,EAAa7+F,UAAU+vH,YAAc,SAAUrpG,EAAK++C,GAChD,IAAI08B,EAAUr+F,KAAKimH,gBAAgBtkD,GAC/B4+B,EAAU3+B,IAAM0+B,iBAAiB3+B,EAAM08B,QAAS,CAAC,WAAY,SAAU,SAAU,SAAU,YAC3FrhG,EAAM4lB,EACN+8E,EAAO,SACPA,KAAQY,IACRvjG,GAAOujG,EAAQZ,GAAMC,WAEzBvB,EAAQmB,MAAMxgG,SAAQ,SAAUzC,GAC5BS,GAAOT,EAAIsE,EAAE0+F,UAAYhjG,EAAIsE,EAAE21E,aAEnC6nB,EAAQ6nB,OAAOlnH,SAAQ,SAAUzC,GAC7BS,GAAOT,EAAIsE,EAAE21E,aAEjB6nB,EAAQ8nB,SAASnnH,SAAQ,SAAUzC,GAC/BS,GAAOT,EAAIsE,EAAEq+F,aAEjB,IAAK,IAAIhuE,EAAS,EAAGA,EAASmtE,EAAQrtB,QAAQn0E,OAAQq0B,IAAU,CAC5D,IAAIg7F,EAAgB7tB,EAAQrtB,QAAQ9/C,GACpC,GAAIg7F,EAAcrrH,EAAE4/F,UAAW,CAC3B,IAAI0rB,EAAWxqD,EAAM1iE,QACrBktH,EAAS9tB,QAAU,GACnB,IAAK,IAAIzhG,EAAI,EAAGA,EAAIsvH,EAAcrrH,EAAE6/F,WAAW7jG,OAAQD,IACnDuvH,EAAS9tB,QAAQz8F,KAAK,CAAEinF,GAAI,UAAWhoF,EAAGqrH,EAAcrrH,EAAE6/F,WAAW9jG,GAAIs0B,OAAQywC,EAAM08B,QAAQntE,SAEnGl0B,GAAOkvH,EAAcrrH,EAAEizE,UAAY9zE,KAAKisH,YAAYrpG,EAAKupG,QAGzDnvH,GAAOkvH,EAAcrrH,EAAE24D,MAAQ0yD,EAAcrrH,EAAEuhE,SAAW8pD,EAAcrrH,EAAErE,MAGlF,OAAOQ,GASX+9F,EAAa7+F,UAAUisE,aAAe,SAAUF,EAAItG,EAAOqkD,GACvD,IACIoG,EADApvH,EAAMgD,KAAKisH,YAAYhkD,EAAGnG,WAAWl/C,IAAK++C,GAG1C9mD,GADJuxG,EAAc1yD,IAAS1+C,MAAM2xE,UAAU7qF,OAAO6lC,aAAaC,QAAQ5nC,KAAK4rH,UAC/CQ,EAAYl6F,QAAQk6F,EAAYnvH,KAAKkB,QAAQnB,IAAQ,KAC9E,OAAY,MAAR6d,GAAiB7a,KAAKyrH,cAAiBzrH,KAAK0rH,gBAGhD1rH,KAAKyrH,aAAe,KACpBzrH,KAAK0rH,eAAiB,KACf1rH,KAAK2rH,aAAaxjD,aAAa/rE,MAAM4D,KAAK2rH,aAAc,GAAGtqH,MAAMC,KAAK1C,UAAW,KAJ7Eic,GAgBfkgF,EAAa7+F,UAAUm/F,gBAAkB,SAAUxgF,EAAM2uE,EAAI7nB,EAAO6oB,EAAK4R,EAAS7yB,GAC9E,GAAIvpE,KAAK0rH,gBAAmBtvB,GAAWp8F,KAAK2rH,aAAar/G,QAAQo7G,OAC7DhuD,IAAS4tB,SAAS8U,EAAQx5E,IAAK5iB,KAAK2rH,aAAar/G,QAAQo7G,QAAyC,SAA/BtrB,EAAQjxF,KAAKsM,cAChF,OAAOzX,KAAK2rH,aAAatwB,gBAAgBxgF,EAAM2uE,EAAI7nB,EAAO6oB,EAAK4R,EAAS7yB,GAE5E1uD,EAAO7a,KAAK2rH,aAAatwB,gBAAgBj/F,MAAM4D,KAAK2rH,aAAc,GAAGtqH,MAAMC,KAAK1C,UAAW,IAC3F,IAAI5B,EAAM2kE,EAAQ3hE,KAAKisH,YAAYziC,EAAG1nB,WAAWl/C,IAAK++C,GAAS6nB,EAAG1nB,WAAWl/C,IACzErmB,EAAM,GAENie,GADJje,EAAMm9D,IAAS1+C,MAAM2xE,UAAU7qF,OAAO6lC,aAAaC,QAAQ5nC,KAAK4rH,UAChD3uH,KAAKkB,QAAQnB,GAM7B,KALe,IAAXwd,IACAje,EAAI21B,QAAQpY,OAAOU,EAAO,GAC1Bje,EAAIU,KAAK6c,OAAOU,EAAO,IAE3Bje,EAAI21B,QAAQ31B,EAAIU,KAAK2E,KAAK5E,GAAO,GAAK,CAAEC,KAAMD,EAAK2B,OAAQkc,EAAKlc,OAAQ+hC,UAAW,IAAIv3B,KAAQ2xD,MAAOjgD,EAAKigD,OACpGv+D,EAAI21B,QAAQr1B,OAASmD,KAAKolE,UAC7B7oE,EAAI21B,QAAQpY,OAAO,EAAG,GACtBvd,EAAIU,KAAK6c,OAAO,EAAG,GAGvB,OADAhY,OAAO6lC,aAAae,QAAQ1oC,KAAK4rH,OAAQ7wG,KAAK0uB,UAAUltC,IACjDse,GAQXkgF,EAAa7+F,UAAUgoB,WAAa,SAAU+jD,EAAIm0B,EAASe,IAClD//F,YAAkB4C,KAAK2rH,aAAar/G,QAAQo7G,QAAUhuD,IAAS4tB,SAAS6V,EAASv6E,IAAK5iB,KAAK2rH,aAAar/G,QAAQo7G,QAC9E,SAAhCvqB,EAAShyF,KAAKsM,eACjB2kF,EAAQn4E,iBAAiB,SAAUjkB,KAAK2rH,aAAar/G,QAAQm7G,iBAE5Dx/C,EAAGnG,WAAWu4B,aACf+B,EAAQn4E,iBAAiB,SAAUjkB,KAAK2rH,aAAar/G,QAAQ8nC,SAUrE2mD,EAAa7+F,UAAU2hG,OAAS,SAAU51B,EAAIP,EAAUlrE,EAAO8tE,GAE3D,OADAtqE,KAAKyrH,cAAe,EACbzrH,KAAK2rH,aAAa9tB,OAAO51B,EAAIP,EAAUlrE,EAAO8tE,IAQzDywB,EAAa7+F,UAAUwhG,OAAS,SAAUz1B,EAAIptD,EAAMyvD,GAEhD,OADAtqE,KAAK0rH,gBAAiB,EACf1rH,KAAK2rH,aAAajuB,OAAOz1B,EAAIptD,EAAMyvD,IAS9CywB,EAAa7+F,UAAUutB,OAAS,SAAUw+C,EAAIP,EAAUlrE,EAAO8tE,GAE3D,OADAtqE,KAAKyrH,cAAe,EACbzrH,KAAK2rH,aAAaliG,OAAOw+C,EAAIP,EAAUlrE,EAAO8tE,IASzDywB,EAAa7+F,UAAUmhG,aAAe,SAAUp1B,EAAIsB,EAAS1oE,GACzD,OAAOb,KAAK2rH,aAAatuB,aAAap1B,EAAIsB,EAAS1oE,IAEhDk6F,EA/LuB,CAgMhC/yB,I,6EC/sEa,SAASqkD,EAAez4F,EAAKh3B,GAC1C,OCLa,SAAyBg3B,GACtC,GAAIx1B,MAAMC,QAAQu1B,GAAM,OAAOA,EDIxB,CAAeA,IELT,SAA+BA,EAAKh3B,GACjD,GAAsB,qBAAX2yF,QAA4BA,OAAOC,YAAYtxF,OAAO01B,GAAjE,CACA,IAAI04F,EAAO,GACPC,GAAK,EACLj3F,GAAK,EACLk3F,OAAKxwH,EAET,IACE,IAAK,IAAiCywH,EAA7BzuH,EAAK41B,EAAI27D,OAAOC,cAAmB+8B,GAAME,EAAKzuH,EAAG0uH,QAAQ9qF,QAChE0qF,EAAK1qH,KAAK6qH,EAAGjwH,QAETI,GAAK0vH,EAAKzvH,SAAWD,GAH8C2vH,GAAK,IAK9E,MAAO7d,GACPp5E,GAAK,EACLk3F,EAAK9d,EACL,QACA,IACO6d,GAAsB,MAAhBvuH,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAIs3B,EAAI,MAAMk3F,GAIlB,OAAOF,GFnBuB,CAAqB14F,EAAKh3B,IAAM,OAAA0vG,EAAA,GAA2B14E,EAAKh3B,IGLjF,WACb,MAAM,IAAImyF,UAAU,6IHIgF,K,6BILvF,SAAS0C,EAA8B7zF,EAAQ+uH,GAC5D,GAAc,MAAV/uH,EAAgB,MAAO,GAC3B,IAEIZ,EAAKJ,EAFLqgC,EAAS,GACT2vF,EAAa1uH,OAAOjB,KAAKW,GAE7B,IAAKhB,EAAI,EAAGA,EAAIgwH,EAAW/vH,OAAQD,IACjCI,EAAM4vH,EAAWhwH,GACb+vH,EAASxuH,QAAQnB,IAAQ,IAC7BigC,EAAOjgC,GAAOY,EAAOZ,IAEvB,OAAOigC,EAVT,mC,qJCAIoB,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAkBzCouF,EAAkB,CAAC,MAAO,YAAa,WAAY,OAAQ,KAC3D,WAAY,QAAS,WAAY,QAAS,OAAQ,OAClD,UAAW,UAAW,UACtBC,EAAc,CAAC,YAAa,MAAO,YAEnC30F,EAAa,IAAIvzB,OAAO,KAExBmoH,EAA+B,SAAU5tF,GAEzC,SAAS4tF,IACL,IAAIhtH,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAOhE,OANAD,EAAMitH,SAAW,GACjBjtH,EAAMktH,cAAgB,EACtBltH,EAAMmtH,gBAAiB,EACvBntH,EAAMotH,kBAAmB,EACzBptH,EAAMqtH,qBAAsB,EAC5BrtH,EAAMwiG,SAAU,EACTxiG,EAudX,OAheAs+B,EAAU0uF,EAAe5tF,GAczB4tF,EAAc7wH,UAAUopG,kBAAoB,WACxCtlG,KAAKqtH,cAAa,GAClBrtH,KAAKstH,gBAAgE,IAA/CR,EAAY3uH,QAAQ6B,KAAK66B,iBAI/C76B,KAAKutH,uBACDvtH,KAAKwtH,SAAWxtH,KAAKwtH,QAAQ3wH,QAC7BmD,KAAK4oC,wBAGbmkF,EAAc7wH,UAAUqxH,qBAAuB,WAC3C,IAAIj8F,EAAMtxB,KAAKytH,aACXn8F,IACAtxB,KAAKktH,gBAAiB,EACtBltH,KAAK+mC,SAASzV,KAStBy7F,EAAc7wH,UAAUwxH,sBAAwB,SAAUC,GACtD,OAAK3tH,KAAKmtH,kBAILntH,KAAKktH,iBACN/sH,aAAaH,KAAKitH,eAClBjtH,KAAKktH,gBAAiB,EACtBltH,KAAK+mC,SAAS/mC,KAAKytH,eAEvBztH,KAAK4tH,iBAAiBD,IACf,IATH3tH,KAAK4tH,iBAAiBD,GAAW,IAC1B,IAafZ,EAAc7wH,UAAU0xH,iBAAmB,SAAUD,EAAWE,GAI5D,IAHA,IAAI9tH,EAAQC,KACR8tH,EAASxvH,YAAO,GAAIqvH,GAEf3vH,EAAK,EAAGC,EADNC,OAAOjB,KAAK0wH,GACS3vH,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAI+vH,EAAU9vH,EAAOD,GACjBgwH,EAA0B,cAAZD,EACF,aAAZA,IAGCC,GAAgB5wH,YAAkB4C,KAAKiuH,eAAeF,KACvD/tH,KAAKiuH,eAAeF,KAAaD,EAAOC,KACxC/tH,KAAKiuH,eAAeF,GAAWD,EAAOC,IAEtC/tH,KAAKkuH,cAAcluH,KAAKuE,MAAMwpH,GAAUJ,EAAUI,WAC3CD,EAAOC,IAE2B,IAApC/tH,KAAKgtH,SAAS7uH,QAAQ4vH,KACvBC,GACAhuH,KAAKgB,QAAQg1B,UAAUvM,OAAOzpB,KAAKuE,MAAMwpH,IACzC/tH,KAAKgB,QAAQg1B,UAAUjN,IAAI+kG,EAAOC,KAEjB,aAAZA,UACED,EAAOC,KAItBD,EAAiB,iBACVA,EAAiB,SAGxB9tH,KAAKmtH,mBAAqBntH,KAAKstH,gBAAkBttH,KAAKuE,MAAMuoH,aAC5D1sH,YAAW,WACPL,EAAMouH,kBAAkBL,EAAQH,EAAWE,MAI/C7tH,KAAKmuH,kBAAkBL,EAAQH,EAAWE,IAGlDd,EAAc7wH,UAAUiyH,kBAAoB,SAAUL,EAAQH,EAAWE,GACjE3vH,OAAOjB,KAAK6wH,GAAQjxH,SACfgxH,GAED7tH,KAAKouH,uBAAuBN,EAAQ9tH,MAExCA,KAAKk5B,cAAc40F,EAAQD,IAE/B7tH,KAAKqtH,aAAaQ,EAAQF,IAE9BZ,EAAc7wH,UAAUkyH,uBAAyB,SAAU/2G,EAAW8B,GAClE,IAAIk1G,EAAel1G,EAAQm1G,gBAC3B,GAAID,EACA,IAAK,IAAIlqH,KAAQkqH,EAAc,CAC3B,IAAIE,EAAUF,EAAalqH,GACvBkT,EAAUlT,IACVpH,aAASwxH,EAASlyH,YAAS8H,EAAMkT,GAAYA,KAK7D01G,EAAc7wH,UAAUsyH,qBAAuB,WAC3C,IAAIzuH,EAAQC,KACZA,KAAKuiG,SAAU,EACf,IAAIksB,EAAWvwH,OAAOjB,KAAK+C,KAAKuE,QAEoB,IADlC,CAAC,eAAgB,eAAgB,YAClCpG,QAAQ6B,KAAK66B,kBAA8Bz9B,YAAkB4C,KAAKuE,MAAa,SAC5FvE,KAAKxD,MAAQwD,KAAKuE,MAAa,OAE9BvE,KAAKiuH,iBACNjuH,KAAKiuH,eAAiB,IAE1BjuH,KAAKgtH,SAAWH,EAAgB/6F,OAAO9xB,KAAK0uH,mBAAqB,IACjE,IAAK,IAAI1wH,EAAK,EAAGqG,EAAaoqH,EAAUzwH,EAAKqG,EAAWxH,OAAQmB,IAAM,CAClE,IAAImG,EAAOE,EAAWrG,IACS,IAA3BmG,EAAKhG,QAAQ,WAA8C,IAA3BgG,EAAKhG,QAAQ,WAAoD,IAAjC6B,KAAKgtH,SAAS7uH,QAAQgG,IAClFnE,KAAKiuH,eAAe9pH,KAAUnE,KAAKuE,MAAMJ,KACzCnE,KAAKiuH,eAAe9pH,GAAQnE,KAAKuE,MAAMJ,IAInD,IAAKnE,KAAKiuH,eAAel8B,IAAK,CAE1B/xF,KAAKiuH,eAAel8B,IAAM,SAAUzgE,GAChCvxB,EAAM0tH,aAAen8F,IAK4B,IAHjC,CAAC,eAAgB,WAAY,eAAgB,eAAgB,cAC7E,UAAW,cAAe,iBAAkB,UAC5C,WAAY,gBAAiB,SAAU,aAAc,iBAAkB,kBAAmB,aAAc,WAAY,SAAU,SAChHnzB,QAAQ6B,KAAK66B,mBAC3B76B,KAAKiuH,eAAejxH,IAAM,GAAK+vH,EAAc4B,SAC7C5B,EAAc4B,YAGtB,OAAO3uH,KAAKiuH,gBAGhBlB,EAAc7wH,UAAU6tB,QAAU,SAAUf,EAAWgB,EAAW9P,GAC9D,IAAIna,EAAQC,KACZ,IAAyB,IAArBA,KAAKm5B,aAAwBn5B,KAAKg5B,cAAe,CACjD,GAAIb,EAAWvtB,KAAKoe,GAAY,CAC5B,IAAIxP,EAAUnd,YAAS2sB,EAAWhpB,MAC9BwZ,GACAA,EAAQlY,KAAKtB,KAAMgqB,GACf9P,GACAA,EAAe5Y,KAAKtB,KAAMgqB,IAGzB9P,GACLA,EAAe5Y,KAAKtB,KAAMgqB,GAGf,WAAdhB,GAAwC,UAAdA,GACvBhpB,KAAKuE,MAAMqqH,UAAY5kG,EAAUlD,OACjC9mB,KAAKuE,MAAMqqH,SAASttH,UAAKtF,EAAW,CAChC6yH,eAAgB7kG,EAAUlD,MAC1BgoG,YAAa,CAAEv8G,KAAMyX,EAAUxtB,OAC/BA,MAAOwtB,EAAUxtB,MACjBygC,OAAQj9B,OAIpB,IAAIq5B,EAAgBr5B,KAAKw4B,oBACzBx4B,KAAKw4B,qBAAsB,EACT,YAAdxP,EACA5oB,YAAW,WACFL,EAAMo5B,aACPp5B,EAAMi5B,cAAchf,OAAOgP,EAAWgB,EAAW9P,MAKzDla,KAAKg5B,cAAchf,OAAOgP,EAAWgB,EAAW9P,GAEpDla,KAAKw4B,oBAAsBa,IAGnC0zF,EAAc7wH,UAAUgyH,cAAgB,SAAU55C,EAAQC,GAGtD,UAFqBD,WACCC,EACI,CACtB,GAAID,IAAWC,EACX,OAAO,EAEX,KAAMn3E,YAAkBk3E,IAAWA,EAAO/2E,iBAAmBH,YAAkBm3E,IAAWA,EAAOh3E,aAC7F,OAAO,EAEX,GAAI+2E,aAAkBnrE,MAClBmrE,aAAkB1vE,QAClB0vE,aAAkB0K,QAClB1K,aAAkBr+B,OAClB,OAAOq+B,EAAOnnE,aAAeonE,EAAOpnE,WAExC,GAAI7P,YAASg3E,IAAWl2E,MAAMC,QAAQi2E,GAAS,CAC3C,IAAIy6C,EAAUz6C,EACV06C,EAAWz6C,EAKf,OAJIj3E,YAASyxH,KACTA,EAAU,CAACz6C,GACX06C,EAAW,CAACz6C,IAETv0E,KAAKivH,eAAeF,EAASC,GAAUrqG,QAGtD,OAAO,GAEXooG,EAAc7wH,UAAU+yH,eAAiB,SAAUC,EAAUC,EAAUnhG,GACnE,IAAIrJ,GAAS,EAETyqG,EAAY,GAChB,GAFqBF,EAASryH,SAAWsyH,EAAStyH,OAG9C,IAAK,IAAID,EAAI,EAAG+E,EAAMwtH,EAAStyH,OAAQD,EAAI+E,EAAK/E,IAAK,CACjD,IAAI2I,EAAS,GACTk8B,EAAUytF,EAAStyH,GACnB4kC,EAAU2tF,EAASvyH,GACnBK,EAAOiB,OAAOjB,KAAKukC,GACvB,GAAoB,IAAhBvkC,EAAKJ,OACL,IAAK,IAAImB,EAAK,EAAGgvF,EAAS/vF,EAAMe,EAAKgvF,EAAOnwF,OAAQmB,IAAM,CACtD,IAAIhB,EAAMgwF,EAAOhvF,GACbi8B,EAAWwH,EAAQzkC,GACnBg9B,EAAWwH,EAAQxkC,GAIvB,GAH6B,SAAzBgD,KAAK66B,iBAAsC,UAAR79B,IACnCuI,EAAOvI,GAAOg9B,IAEbyH,EAAQjiC,eAAexC,KAASgD,KAAKkuH,cAAcl0F,EAAUC,GAAW,CACzE,IAAKjM,EACD,MAAO,CAAErJ,QAAQ,GAErBA,GAAS,EACTpf,EAAOvI,GAAOg9B,OAIrB,CACD,IAAKhM,EACD,MAAO,CAAErJ,QAAQ,GAErBA,GAAS,EAETzmB,OAAOjB,KAAKsI,GAAQ1I,QACpBuyH,EAAUxtH,KAAK,CAAE4Y,MAAO5d,EAAGJ,MAAO+I,EAAQvI,IAAKgxB,SAKvDrJ,GAAS,EAEb,MAAO,CAAEA,OAAQA,EAAQ8T,kBAAmB22F,IAEhDrC,EAAc7wH,UAAUmxH,aAAe,SAAUQ,EAAQtpH,GACrD,GAAIvE,KAAKqvH,qBAAsB,CAG3B,IAFA,IAAIC,EAAatvH,KAAKkoC,sBAAwB,GAErClqC,EAAK,EAAGuxH,EADDvvH,KAAKwvH,uBAAyB,GACJxxH,EAAKuxH,EAAY1yH,OAAQmB,IAAM,CACrE,IAAIonC,EAAMmqF,EAAYvxH,IACW,IAA7BsxH,EAAWnxH,QAAQinC,IACnBkqF,EAAW1tH,KAAKwjC,GAGxBplC,KAAKmoC,gBAAkBmnF,EAE3B,GAAItvH,KAAKyvH,cAAe,CACpB,IAAIC,EAAe,GACfC,EAAiB3vH,KAAK4vH,iBAAiB,GAAI5vH,KAAKyvH,cAAgBlrH,GAASvE,KAAKuE,OAClF,GAAIorH,GAAkBzxH,OAAOjB,KAAK0yH,GAAgB9yH,OAAQ,CACtD,IAAKgxH,GAAU7tH,KAAK6vH,YAChB,IAAK,IAAItsH,EAAK,EAAGwxB,EAAK/0B,KAAK6vH,YAAatsH,EAAKwxB,EAAGl4B,OAAQ0G,IAAM,QAEnDosH,EADM56F,EAAGxxB,IAIxB,GAAIvD,KAAK8vH,eAEL,IADA,IAAIC,EAAQ7xH,OAAOjB,KAAK+C,KAAK8vH,gBACpBlzH,EAAI,EAAGA,EAAImzH,EAAMlzH,OAAQD,IAAK,CACnC,IAAII,EAAM+yH,EAAMnzH,GAChB,GAAK+yH,EAAenwH,eAAexC,GAAnC,CAGA,IAAIgzH,EAAgBhwH,KAAKivH,eAAejvH,KAAK8vH,eAAe9yH,GAAM2yH,EAAe3yH,GAAMA,GACvF,GAAIgzH,EAAcrrG,cACPgrG,EAAe3yH,OAErB,CACGgzH,EAAcv3F,kBAAkB57B,SAChC6yH,EAAeA,EAAa59F,OAAOk+F,EAAcv3F,oBAErD,IAAIl8B,EAAM,GACVA,EAAIS,GAAO2yH,EAAe3yH,GAC1BgD,KAAK8vH,eAAiBxxH,YAAO0B,KAAK8vH,eAAgBvzH,UAK1DyD,KAAK8vH,eAAiBxxH,YAAO,GAAIqxH,EAAgB,IAAI,GAEzD,GAAID,EAAa7yH,OACb,GAA6B,SAAzBmD,KAAK66B,iBAAsC,YAAR79B,EACnC,IAAK,IAAIizH,EAAM,EAAGC,EAAalwH,KAAK+5D,QAASk2D,EAAMC,EAAWrzH,OAAQozH,IAAO,CAGzE,GAFoB5zH,YAAS,QAAS6zH,EAAWD,MAC7B5zH,YAAS4zH,EAAM,eAAgBP,GACd,CACjC,IAAIS,EAAe9zH,YAASqzH,EAAaO,GAAKjzH,IAAM,IAAM0yH,EAAaO,GAAKz1G,MAAOxa,MAC/EmwH,GAAgBA,EAAaj3F,cAC7Bi3F,EAAaj3F,cAAcw2F,EAAaO,GAAKzzH,OAG7C8B,YAAO6xH,EAAcT,EAAaO,GAAKzzH,aAMnD,IAAK,IAAI24B,EAAK,EAAGi7F,EAAiBV,EAAcv6F,EAAKi7F,EAAevzH,OAAQs4B,IAAM,CAC9E,IAAIo0C,EAAU6mD,EAAej7F,GACzBk7F,EAAiBh0H,YAASktE,EAAQvsE,IAAM,IAAMusE,EAAQ/uD,MAAOxa,MAC7DqwH,GAAkBA,EAAen3F,cACjCm3F,EAAen3F,cAAcqwC,EAAQ/sE,OAGrC8B,YAAO+xH,EAAgB9mD,EAAQ/sE,YAM3CwD,KAAKk5B,cAAcy2F,EAAgB9B,MAKnDd,EAAc7wH,UAAUqpG,qBAAuB,WAC3CplG,aAAaH,KAAKitH,gBAGdjtH,KAAKmtH,kBAAoBntH,KAAKktH,gBAAkBltH,KAAKgB,UAFvC,CAAC,eAAgB,YAE+C7C,QAAQ6B,KAAK66B,iBAAoBr6B,SAASgiC,KAAKjQ,SAASvyB,KAAKgB,UAAoBhB,KAAKm5B,cACpKn5B,KAAKmb,WAIb4xG,EAAc7wH,UAAU0sC,qBAAuB,SAAUw2E,GACrDp/G,KAAKotH,qBAAsB,EACvBhO,EACAp/G,KAAKswH,YAAYlR,GAGjBp/G,KAAKswH,cAETtwH,KAAKotH,qBAAsB,GAI/BL,EAAc7wH,UAAU2sC,cAAgB,SAAU0nF,EAAe/1G,EAAO4kG,GACpE,IAAIr/G,EAAQC,KACRwwH,EAAa,GACbD,GAAiBA,EAAc1zH,OAC/BuB,MAAMlC,UAAU8C,QAAQsC,KAAKivH,GAAe,SAAUviG,GAClD,IAAIyiG,EAAa,EACbC,EAAiB,EAOrB,GANA3wH,EAAMytH,QAAQxuH,SAAQ,SAAU2xH,GACxBA,EAAO3iG,WAAaA,IACpBwiG,EAAW5uH,KAAK8uH,GAChBA,QAGJl2G,GAASza,EAAMytH,QAAQgD,EAAWh2G,EAAMi2G,KAAcziG,UAAYA,EAClEjuB,EAAMytH,QAAQ1zG,OAAOU,EAAO,GAC5Bi2G,SAGA,IAAK,IAAI7zH,EAAI,EAAGA,EAAImD,EAAMytH,QAAQ3wH,OAAQD,IAClCmD,EAAMytH,QAAQ5wH,GAAGoxB,UAAYA,IAC7BjuB,EAAMytH,QAAQ1zG,OAAOld,EAAG,GACxBA,QAOhBoD,KAAKwtH,QAAU,GAEnBxtH,KAAK4oC,qBAAqBw2E,IAI9B2N,EAAc7wH,UAAU0zH,iBAAmB,SAAUgB,EAAYxqH,EAAQ7B,GAGrE,IAFA,IAAIoP,GAAO,EAEF3V,EAAK,EAAG6yH,EADJpgC,WAAeqgC,QAAQvsH,EAAMusB,UACN9yB,EAAK6yH,EAASh0H,OAAQmB,IAAM,CAC5D,IAAIsC,EAAQuwH,EAAS7yH,GACjB+yH,EAAS/wH,KAAKgxH,aAAa1wH,GAC3BtD,EAAMoJ,EAAO2qH,GACjB,GAAIA,GAAU3qH,EAAQ,CAElB,IAAI6qH,EAAajxH,KAAKkxH,cAAczgC,WAAeqgC,QAAQxwH,EAAMiE,MAAMusB,UAAW9zB,GAC9Ei0H,EAAWp0H,SACX8W,GAAO,EAEPi9G,EAAWtwH,EAAM6K,KAAKgzB,cAAgB4yF,GAAUE,IAI5D,OAAIt9G,EACOi9G,EAEJ,MAGX7D,EAAc7wH,UAAU80H,aAAe,SAAU1wH,GAC7C,OAAIA,EAAM6K,MAAQ7K,EAAM6K,KAAKgmH,aAClB7wH,EAAM6K,KAAKwoG,YAEf,IAEXoZ,EAAc7wH,UAAUg1H,cAAgB,SAAU/c,EAAUid,GAExD,IADA,IAAItsH,EAAM,GACD9G,EAAK,EAAGqzH,EAAald,EAAUn2G,EAAKqzH,EAAWx0H,OAAQmB,IAAM,CAClE,IAAIsC,EAAQ+wH,EAAWrzH,GACnBszH,GAAa,EACbt0H,OAAM,EACa,kBAAZo0H,GACPE,GAAa,EACbt0H,EAAMo0H,GAGNp0H,EAAMkB,OAAOjB,KAAKm0H,GAAS,GAE/B,IAAIjtH,EAAO7D,EAAMiE,MAGjB,GADYvE,KAAKgxH,aAAa1wH,KAChBtD,EACV,GAAIs0H,IAAentH,EAAK2sB,SAAU,CAE9B,IAAIygG,EAAWjzH,YAAO,GAAI6F,EAAM,IAAI,GAEpCnE,KAAKouH,uBAAuBmD,EAAUjxH,EAAM6K,MAC5CrG,EAAIlD,KAAK2vH,OAER,CACD,IAAIC,EAAcxxH,KAAK4vH,iBAAiBtxH,YAAO,GAAI6F,GAAOitH,EAAQp0H,GAAMmH,IAASA,EAC7EqtH,EAAsB,iBACfA,EAAsB,SAGjCxxH,KAAKouH,uBAAuBoD,EAAalxH,EAAM6K,MAC/CrG,EAAIlD,KAAK4vH,IAIrB,OAAO1sH,GAGXioH,EAAc7wH,UAAUszH,oBAAsB,WAE1C,IADA,IACSxxH,EAAK,EAAGyzH,EADJhhC,WAAeqgC,QAAQ9wH,KAAKuE,MAAMusB,UACX9yB,EAAKyzH,EAAS50H,OAAQmB,IAAM,CAC5D,IAAIsC,EAAQmxH,EAASzzH,GAErB,GAAIsC,EAAM6K,KAAKumH,UACX,OAAOpxH,EAAMiE,MAAMotH,SAG3B,MAAO,IAKX5E,EAAc4B,SAAW,EAClB5B,EAjewB,CAkejCt8B,aC1fK,SAASmhC,EAAYC,EAAcC,GAEtCA,EAAU9yH,SAAQ,SAAU8yH,GACxB5zH,OAAOw7B,oBAAoBo4F,EAAU51H,WAAW8C,SAAQ,SAAUob,GACjD,cAATA,GAAiC,iBAATA,IACxBy3G,EAAa31H,UAAUke,GAAQ03G,EAAU51H,UAAUke,UCNnE,IAAIikB,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GCAzCJ,GDiB6B,SAAUc,GAEvC,SAAS4yF,IACL,OAAkB,OAAX5yF,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAF/Dq+B,EAAU0zF,EAAa5yF,GAIvB4yF,EAAY71H,UAAUwzB,OAAS,WAC3B,OAAO,MAEXqiG,EAAYZ,aAAc,EARG,CAU/B1gC,iBC3B2C,WACzC,IAAInyD,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,IAiBzC2J,EAAwB,SAAUjJ,GAElC,SAASiJ,IACL,OAAkB,OAAXjJ,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAO/D,OATAq+B,EAAU+J,EAAQjJ,GAKlBiJ,EAAOlsC,UAAUwzB,OAAS,WACtB,OAAO,MAEX0Y,EAAOspF,WAAY,EACZtpF,EAViB,CAW1BqoD,iB,QCrBEuhC,EAAiBziG,cA2CrBF,aAAkB,CAAEhE,QA1Cb,SAAiB4mG,EAAiB1mG,GACrC,MAA+B,kBAApB0mG,EACAD,EAAeC,EAAiB1mG,GAGhC,SAAU1Q,EAAMzX,EAAWe,EAAMnD,GACpC,IAMIkxH,EANAC,EAAcF,EACdG,EAAUv3G,EAYd,GAX2B,kBAAhBs3G,IACPA,EAAcF,EAAgB3mG,SAC9B8mG,EAAU9zH,YAAO,GAAIuc,EAAMo3G,EAAgBp3G,MAAQ,KAInDq3G,EADAlxH,GAIOR,SAASW,cAAc,OAE9BiC,GAAaA,EAAUivH,iBACvBC,SAAgBH,EAAYC,GAAUF,GACjClxH,GACD6vB,YAAOqhG,OAGV,CACD,IAAIK,EAAO9hC,gBAAoB0hC,EAAaC,GACxCzB,EAAS2B,eAAsBC,EAAML,GACzCvB,EAAO3iG,SAAW7pB,EACbf,EAAUoqH,QAIXpqH,EAAUoqH,QAAQ5rH,KAAK+uH,GAHvBvtH,EAAUoqH,QAAU,CAACmD,GAM7B,IAAK3vH,EACD,MAAO,CAACkxH,Q,8BC7CxB,kCAKA,IAAIM,EAA6B,WAC7B,SAASA,KAwBT,OAtBAA,EAAYt2H,UAAUu2H,WAAa,SAAUx1F,EAAQ3wB,GAEjD,IADA,IAAI/H,EAAQrG,OAAOjB,KAAKqP,GACf1P,EAAI,EAAGA,EAAI2H,EAAM1H,OAAQD,IAC9B81H,EAAsBz1F,EAAQ6Y,EAAOvxC,EAAM3H,IAAK0P,EAAQ/H,EAAM3H,MAGtE41H,EAAYt2H,UAAUy2H,UAAY,SAAU11F,EAAQ8hE,GAChD2zB,EAAsBz1F,EAAQ6Y,EAAOipD,OAAQA,IAEjDyzB,EAAYt2H,UAAU02H,QAAU,SAAU31F,EAAQsiE,GAC9CmzB,EAAsBz1F,EAAQ6Y,EAAO+rC,KAAM0d,EAAgC,mBAAdA,IAEjEizB,EAAYt2H,UAAU22H,QAAU,SAAU51F,EAAQ61F,GAC9CJ,EAAsBz1F,EAAQ6Y,EAAOi9E,KAAMD,GAC3CJ,EAAsBz1F,EAAQ6Y,EAAOk9E,QAAS,MAAM,IAExDR,EAAYt2H,UAAU+2H,WAAa,SAAUh2F,EAAQi2F,EAAWzpG,GAC5DipG,EAAsBz1F,EAAQ6Y,EAAOq9E,QAASD,EAAWzpG,IAE7D+oG,EAAYt2H,UAAUk3H,cAAgB,SAAUn2F,EAAQo2F,GACpDX,EAAsBz1F,EAAQ6Y,EAAOw9E,WAAY,QAASD,IAEvDb,EAzBsB,GAoCjC,SAASE,EAAsBz1F,EAAQge,EAAWz+C,EAAOitB,GACjDA,GAAUwT,EACVA,EAAOoD,gBAAgB4a,GAGvBhe,GACAA,EAAOrH,aAAaqlB,EAAWz+C,GAGvC,IAAIs5C,EAAS,CACTipD,OAAQ,gBACR+C,KAAM,OACNpc,SAAU,gBACV6tC,gBAAiB,uBACjB1xC,KAAM,YACNkxC,KAAM,YACNC,QAAS,eACTG,QAAS,eACTG,WAAY,kBACZE,SAAU,gBACVt6C,MAAO,aACPu6C,SAAU,gBACVC,SAAU,kB,6BC/Dd,6CAAIr1F,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,EAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAM5D60F,EAAU,QACVC,EAAc,YAIdC,EAAiB,iBACjBC,EAAmB,mBACnBC,EAAiB,eAGjBC,EAAa,kBACbC,EAAc,mBACdC,EAAgB,sBAChBC,EAAkB,wBAclBC,EAAyB,SAAUj1F,GAQnC,SAASi1F,EAAQ9nH,EAAStL,GACtB,OAAOm+B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAyZlD,OAjaAq+B,EAAU+1F,EAASj1F,GAgBnBi1F,EAAQl4H,UAAUirC,UAAY,WAC1BnnC,KAAKq0H,QAAUhuG,IAAQ2B,KAAK5N,KAC5Bpa,KAAKs0H,aAAgC,YAAjBt0H,KAAKq0H,QACzBr0H,KAAKknB,SAAWb,IAAQa,SACxBlnB,KAAKu0H,YAAa,EAClB,IAAIjjG,EAAMtxB,KAAKgB,QACfhB,KAAKw0H,QAA2B,SAAjBx0H,KAAKq0H,SAAuC,SAAjBr0H,KAAKq0H,QAC/Cr0H,KAAKyrC,aACU,KAAXna,EAAI7X,KACJ6X,EAAI7X,GAAKha,YAAY,WACrBO,KAAKy0H,UAAW,GAEpBnjG,EAAI0C,MAAMygB,QAAU,QAChBz0C,KAAK2mC,WACLrV,EAAI0E,UAAUjN,IAAI4qG,IAS1BS,EAAQl4H,UAAUwzB,OAAS,WACvB1vB,KAAK00H,YAAc,IAAI19E,IAAMh3C,KAAKgB,QAAS,CAAE2vD,OAAQ3wD,KAAK20H,aAAax4H,KAAK6D,MAAO40H,MAAO50H,KAAK60H,aAAa14H,KAAK6D,QACjH4oB,IAAaG,IAAI/oB,KAAK80H,UAAW,SAAU90H,KAAK+0H,mBAAoB/0H,MAC/DA,KAAKknB,UAINlnB,KAAKgB,QAAQg1B,UAAUjN,IAAIirG,GAC3Bh0H,KAAKg1H,qBAAqBh1H,KAAKgB,UAJ/BhB,KAAKi1H,cAAcj1H,KAAKgB,SAM5BhB,KAAKk1H,iBACLtsG,IAAaG,IAAI/oB,KAAKgB,QAAS,QAAShB,KAAKm1H,kBAAmBn1H,OAEpEo0H,EAAQl4H,UAAUg5H,eAAiB,WAC3B93H,YAAkB4C,KAAKo1H,aAAep1H,KAAKo1H,WAAa,GACxDp1H,KAAKo1H,WAAap1H,KAAK80H,UAAUllF,aACjC5vC,KAAKu0H,YAAa,GAGlBv0H,KAAKu0H,YAAa,GAG1BH,EAAQl4H,UAAUuvC,WAAa,WAC3B,IAAI4pF,EAAYC,YAAS,MAAO,CAAEjnG,UAvFrB,sBAwFTknG,EAAYD,YAAS,MAAO,CAAEjnG,UAzFrB,kBA0FbknG,EAAU3/F,aAAa,WAAY,MAGnC,IAFA,IAAItE,EAAMtxB,KAAKgB,QAENhD,EAAK,EAAGw3H,EADF,GAAGn0H,MAAMC,KAAKgwB,EAAIR,UACO9yB,EAAKw3H,EAAW34H,OAAQmB,IAAM,CAClE,IAAIy3H,EAAQD,EAAWx3H,GACvBq3H,EAAUrzH,YAAYyzH,GAE1BF,EAAUvzH,YAAYqzH,GACtB/jG,EAAItvB,YAAYuzH,GAChBA,EAAUvhG,MAAMumB,UAAY,SAC5Bv6C,KAAK80H,UAAYS,EACjBv1H,KAAK01H,YAAcL,GAEvBjB,EAAQl4H,UAAUysC,eAAiB,WAE/B,OAAO3oC,KAAKqpC,aADI,CAAC,gBASrB+qF,EAAQl4H,UAAU2+B,cAAgB,WAC9B,MAAO,WAOXu5F,EAAQl4H,UAAUif,QAAU,WACxB,IAAI0c,EAAK73B,KAAKgB,QACd62B,EAAG7D,MAAMygB,QAAU,GACnBre,aAAY,CAACp2B,KAAKgB,SAAU,CA/HrB,YA+HgCgzH,IACvC,IAAI2B,EAAOpkG,aAAU,MAAQsG,EAAGpe,GAAK,QAAUs6G,EAAgBl8F,GAC3D+9F,EAAWrkG,aAAU,IAAM0iG,EAAap8F,GAC5C,GAAGx2B,MAAMC,KAAKs0H,GAAU52H,SAAQ,SAAUsyB,GACtCT,YAAOS,MAEX,IAAK,IAAItzB,EAAK,EAAGuF,EAAK,GAAGlC,MAAMC,KAAKtB,KAAK01H,YAAY5kG,UAAW9yB,EAAKuF,EAAG1G,OAAQmB,IAAM,CAClF,IAAIqF,EAAOE,EAAGvF,GACd65B,EAAG71B,YAAYqB,GAEfrD,KAAKy0H,UACLz0H,KAAKgB,QAAQq/B,gBAAgB,MAEjCxP,YAAO7wB,KAAK80H,WACRa,EAAK94H,OAAS,IACdg0B,YAAO8kG,EAAK,IACPv4H,YAAkBu4H,EAAK,KACxB9kG,YAAO8kG,EAAK,KAGpB/sG,IAAaa,OAAOzpB,KAAK80H,UAAW,SAAU90H,KAAK+0H,oBACnD/0H,KAAK00H,YAAYv5G,UACjBnb,KAAK00H,YAAc,KACnBv1F,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,OASlCo0H,EAAQl4H,UAAU25H,QAAU,SAAUr5H,GAClC,IAAIs5H,EAASvkG,aAAU,gCAA2CvxB,KAAKgB,SACnExE,EACAwD,KAAKgB,QAAQg1B,UAAUjN,IAAI6qG,GAG3B5zH,KAAKgB,QAAQg1B,UAAUvM,OAAOmqG,GAElC,GAAGvyH,MAAMC,KAAKw0H,GAAQ92H,SAAQ,SAAU64B,GACpCA,EAAGjC,aAAa,WAAap5B,EAAc,KAAN,SAG7C43H,EAAQl4H,UAAU84H,qBAAuB,SAAUh0H,GAC/C,IAAIyY,EAAKzY,EAAQyY,GAAGqY,OAAO,QACvBikG,EAAiBT,YAAS,MAAO,CAAEjnG,UAAW4lG,EAAc,IAAME,IAClE6B,EAAU,KAAOh1H,EAAQyY,GAAGqY,OAAO,uCACnCmkG,EAAUX,YAAS,MAAO,CAAE77G,GAAIA,EAAGqY,OAAO,QAASzD,UAAW2nG,IAC9DE,EAAUZ,YAAS,MAAO,CAAEjnG,UAAWylG,yCAC3CmC,EAAQj0H,YAAYk0H,GACpB,IAAIC,EAAQb,YAAS,MAAO,CAAEjnG,UAAW4lG,EAAc,IAAMC,IACzDl0H,KAAKw0H,SACLyB,EAAQjgG,UAAUjN,IAAI,cAE1B/nB,EAAQgB,YAAY+zH,GACpB/0H,EAAQgB,YAAYi0H,GACpBj1H,EAAQ61B,aAAas/F,EAAOn1H,EAAQ8iG,YACpC9jG,KAAKo2H,aAAa,CAACH,KAEvB7B,EAAQl4H,UAAU+4H,cAAgB,SAAUj0H,GACxC,IAAIyY,EAAKzY,EAAQyY,GAAGqY,OAAO,QACvBkkG,EAAU,KAAOh1H,EAAQyY,GAAGqY,OAAO,uCACnCukG,EAAMf,YAAS,MAAO,CAAE77G,GAAIA,EAAGqY,OAAO,SAAUzD,UAAW2nG,IAC/DK,EAAIzgG,aAAa,gBAAiB,SAClC,IAAIsgG,EAAUZ,YAAS,MAAO,CAAEjnG,UAAWylG,yCACvCwC,EAAQ,KAAOt1H,EAAQyY,GAAGqY,OAAO,qCACjCykG,EAAajB,YAAS,MAAO,CAAE77G,GAAIA,EAAGqY,OAAO,OAAQzD,UAAWioG,EAAQ,IAAM1C,IAClF2C,EAAW3gG,aAAa,gBAAiB,QACzC,IAAI4gG,EAAYlB,YAAS,MAAO,CAAEjnG,UAAWwlG,uCAC7C0C,EAAWv0H,YAAYw0H,GACvBH,EAAIr0H,YAAYk0H,GAChBG,EAAIzgG,aAAa,WAAY,KAC7B50B,EAAQgB,YAAYq0H,GACpBr1H,EAAQ61B,aAAa0/F,EAAYv1H,EAAQ8iG,YACrC9jG,KAAKw0H,UACL6B,EAAIrgG,UAAUjN,IAAI,cAClBwtG,EAAWvgG,UAAUjN,IAAI,eAE7B/oB,KAAKo2H,aAAa,CAACC,EAAKE,KAE5BnC,EAAQl4H,UAAUu6H,WAAa,SAAUC,GACrC,IAAI32H,EAAQC,KACZ,GAAe,UAAX02H,EAAG15H,IAAiB,CAKpBgD,KAAK22H,SAAW70H,OAAO1B,YAAW,WAH9BL,EAAM62H,YAAa,EACnB72H,EAAM82H,aAAa,GAAIH,EAAGz5F,QAAQ,KAInC,OAGXm3F,EAAQl4H,UAAU46H,QAAU,SAAUJ,GACnB,UAAXA,EAAG15H,MAGHgD,KAAK42H,WACL52H,KAAK42H,YAAa,EAGlBF,EAAGz5F,OAAOwzB,QAEdtwD,aAAaH,KAAK22H,YAEtBvC,EAAQl4H,UAAUk6H,aAAe,SAAUp1H,GACvC,IAAIjB,EAAQC,KACZ,GAAGqB,MAAMC,KAAKN,GAAShC,SAAQ,SAAUsyB,GACrC,IAAI0lB,IAAM1lB,EAAK,CAAEylG,QAASh3H,EAAMi3H,eAAe76H,KAAK4D,GAAQ8rC,iBAAkB,MAC9Eva,EAAI/H,iBAAiB,UAAWxpB,EAAM02H,WAAWt6H,KAAK4D,IACtDuxB,EAAI/H,iBAAiB,QAASxpB,EAAM+2H,QAAQ36H,KAAK4D,IACjDuxB,EAAI/H,iBAAiB,UAAWxpB,EAAMk3H,aAAa96H,KAAK4D,IACxDuxB,EAAI/H,iBAAiB,WAAYxpB,EAAMk3H,aAAa96H,KAAK4D,IACzDuxB,EAAI/H,iBAAiB,eAAe,SAAU1oB,GAC1CA,EAAEyrC,oBAEN1jB,IAAaG,IAAIuI,EAAK,QAASvxB,EAAMm3H,kBAAmBn3H,OAGhEq0H,EAAQl4H,UAAU+6H,aAAe,WAC7Bv0H,cAAc1C,KAAKm3H,UAEvB/C,EAAQl4H,UAAU86H,eAAiB,SAAUN,GACzC,IAAI32H,EAAQC,KACRo3H,EAAOV,EAAGn+E,cAActb,OAC5Bm6F,EAAOp3H,KAAKuyB,SAAS6kG,EAAMrD,GAAkBqD,EAAKtgG,kBAAoBsgG,EAKtEp3H,KAAKm3H,QAAUr1H,OAAOU,aAAY,WAF9BzC,EAAM82H,aAFW,GAEkBO,GAAM,KAI1C,KAEPhD,EAAQl4H,UAAUq2B,SAAW,SAAUvxB,EAASqtB,GAC5C,OAAOrtB,EAAQg1B,UAAUzD,SAASlE,IAEtC+lG,EAAQl4H,UAAU26H,aAAe,SAAUQ,EAAWD,EAAME,GACxD,IAAIthG,EAAYohG,EAAKphG,UACjBA,EAAUzD,SAASwhG,KACnB/9F,EAAYohG,EAAK9zH,cAAc,gBAAoB0yB,WAEnDA,EAAUzD,SAASuhG,GACnB9zH,KAAKu3H,mBAAmBF,EAAW,MAAOC,GAErCthG,EAAUzD,SAASshG,IACxB7zH,KAAKu3H,mBAAmBF,EAAW,GAAIC,IAG/ClD,EAAQl4H,UAAUg7H,kBAAoB,SAAUpwG,GAC5C9mB,KAAK62H,aAAa72H,KAAKo1H,WAAYtuG,EAAMmW,QAAQ,IAErDm3F,EAAQl4H,UAAUi5H,kBAAoB,SAAUt0H,GAC5CA,EAAEyrC,iBACFtsC,KAAKu3H,mBAAmBv3H,KAAKo1H,WAAav0H,EAAE22H,OAAS,EAAI,MAAQ,IAAK,IAE1EpD,EAAQl4H,UAAU24H,aAAe,SAAUh0H,GACvC,IACIqtC,EADAupF,EAAez3H,KAAK80H,UAGpB5mF,EADArtC,EAAEg4C,UAAY,EACHh4C,EAAE83C,WAA0B,GAAb93C,EAAEg4C,UAGjBh4C,EAAE83C,UAAY93C,EAAEg4C,SAE/B,IAAI37C,EAAQ,IACE,SAAV4iC,IACA,IAAIa,EAAOp5B,KAAKmwH,IAAIx6H,GAChByjC,GAAQ,EACR7+B,OAAO0+B,qBAAqBG,IAGH,OAArB9/B,EAAE04C,eACFk+E,EAAa70F,WAAasL,EAAWvN,EAEX,SAArB9/B,EAAE04C,iBACPk+E,EAAa70F,WAAasL,EAAWvN,GAEzCzjC,GAAS,IACT4E,OAAOs/B,sBAAsBtB,IAGrCA,IAEJs0F,EAAQl4H,UAAUy7H,eAAiB,SAAUC,EAAW9xF,GACrC,QAAXA,EACA9lC,KAAK80H,UAAUlyF,WAAag1F,EAG5B53H,KAAK80H,UAAUlyF,WAAag1F,GAGpCxD,EAAQl4H,UAAUq7H,mBAAqB,SAAUM,EAAa/xF,EAAQwxF,GAClE,IAAIv3H,EAAQC,KAEZ,GAAIs3H,EACAt3H,KAAK23H,eAAeE,EAAa/xF,OADrC,CAIK9lC,KAAKu0H,YACN,GAAGlzH,MAAMC,KAAKiwB,aAAU,IAAM0iG,EAAaj0H,KAAKgB,UAAUhC,SAAQ,SAAU64B,GACxEggG,GAAehgG,EAAG+X,iBAGZ,SAAV9P,IACI+3F,EAXG,GAYH/1H,OAAO0+B,qBAZJ,KAeHzgC,EAAM43H,eAfH,GAewB7xF,GAC3B+xF,GAhBG,GAiBH/1H,OAAOs/B,sBAAsBtB,IAGrCA,KAEJs0F,EAAQl4H,UAAUy4H,aAAe,SAAU9zH,GACvC,IAAIg3B,EAAK73B,KAAK80H,UACV5mF,EAAWrtC,EAAE83C,UACS,OAAtB93C,EAAE+3C,gBACF/gB,EAAG+K,UAAY/K,EAAG+K,UAAYsL,EAEH,SAAtBrtC,EAAE+3C,kBACP/gB,EAAG+K,UAAY/K,EAAG+K,UAAYsL,IAGtCkmF,EAAQl4H,UAAU47H,eAAiB,SAAUC,EAAeC,GACxD,GAAIh4H,KAAKknB,SAAU,CACf,IACI+wG,GADW76H,YAAkB26H,GAAiBC,EAAmBD,GAC5Cz0H,cAAc,gBACnClG,YAAkB26H,GAClB/hG,YAAUiiG,EAAW,CAACnE,GAAmB,CAACD,IAG1C79F,YAAUiiG,EAAW,CAACpE,GAAiB,CAACC,SAI5CiE,EAAc/hG,UAAUjN,IAAI6qG,GAC5BmE,EAAcniG,aAAa,gBAAiB,QAC5CmiG,EAAc13F,gBAAgB,YAC9B23F,EAAiBhiG,UAAUvM,OAAOmqG,GAClCoE,EAAiBpiG,aAAa,gBAAiB,SAC/CoiG,EAAiBpiG,aAAa,WAAY,KAE9C51B,KAAKi3H,gBAET7C,EAAQl4H,UAAU64H,mBAAqB,SAAUl0H,GAC7C,IAAIo8B,EAASp8B,EAAEo8B,OACX0S,EAAS1S,EAAO2S,aAChBsoF,EAAWl4H,KAAKgB,QAAQsC,cAAc,oBACtC60H,EAAan4H,KAAKgB,QAAQsC,cAAc,sBACxC80H,EAAYp4H,KAAKgB,QAAQsC,cAAc,IAAM4wH,GAC7CmE,EAAcr4H,KAAKgB,QAAQsC,cAAc,IAAM6wH,GAC/CvxF,EAAY3F,EAAO2F,UAkBvB,GAjBIA,GAAa,IACbA,GAAaA,GAEb5iC,KAAKknB,WAEDkxG,EAAUpkG,MAAM2b,OADhB/M,EAnXK,GAoXoBA,EAAY,KAGZ,OAExB3F,EAAOwV,aAAelrC,KAAKu3D,KAAKnvB,EAAS/M,GAzXrC,GA0XLy1F,EAAYrkG,MAAM2b,OAAU1S,EAAOwV,aAAelrC,KAAKu3D,KAAKnvB,EAAS/M,GAAc,KAGnFy1F,EAAYrkG,MAAM2b,OAAS,QAGjB,IAAd/M,EACA5iC,KAAK83H,eAAeI,EAAUC,QAE7B,GAAI5wH,KAAKu3D,KAAKnvB,EAAS/M,EAAY,KAAO3F,EAAOwV,aAClDzyC,KAAK83H,eAAeK,EAAYD,OAE/B,CACD,IAAII,EAASt4H,KAAKgB,QAAQsC,cAAc,2BACpCg1H,IACAA,EAAOtiG,UAAUvM,OAAOmqG,GACxB0E,EAAO1iG,aAAa,gBAAiB,SACrC0iG,EAAO1iG,aAAa,WAAY,QAY5Cw+F,EAAQl4H,UAAU29B,kBAAoB,SAAU2H,EAASC,GACrD,IAAK,IAAIzjC,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,aACDgC,KAAKk1H,iBACL,MACJ,IAAK,YACG1zF,EAAQmF,UACR3mC,KAAKgB,QAAQg1B,UAAUjN,IAAI4qG,GAG3B3zH,KAAKgB,QAAQg1B,UAAUvM,OAAOkqG,MAMlDh1F,EAAW,CACP3B,YAAS,OACVo3F,EAAQl4H,UAAW,kBAAc,GACpCk4H,EAAUz1F,EAAW,CACjBlB,KACD22F,GAjasB,CAma3B9tF,M,6BCpda,SAASiyF,EAAyB36H,EAAQ+uH,GACvD,GAAc,MAAV/uH,EAAgB,MAAO,GAC3B,IACIZ,EAAKJ,EADLqgC,ECHS,SAAuCr/B,EAAQ+uH,GAC5D,GAAc,MAAV/uH,EAAgB,MAAO,GAC3B,IAEIZ,EAAKJ,EAFLqgC,EAAS,GACT2vF,EAAa1uH,OAAOjB,KAAKW,GAG7B,IAAKhB,EAAI,EAAGA,EAAIgwH,EAAW/vH,OAAQD,IACjCI,EAAM4vH,EAAWhwH,GACb+vH,EAASxuH,QAAQnB,IAAQ,IAC7BigC,EAAOjgC,GAAOY,EAAOZ,IAGvB,OAAOigC,EDTM,CAA6Br/B,EAAQ+uH,GAGlD,GAAIzuH,OAAOojG,sBAAuB,CAChC,IAAIk3B,EAAmBt6H,OAAOojG,sBAAsB1jG,GAEpD,IAAKhB,EAAI,EAAGA,EAAI47H,EAAiB37H,OAAQD,IACvCI,EAAMw7H,EAAiB57H,GACnB+vH,EAASxuH,QAAQnB,IAAQ,GACxBkB,OAAOhC,UAAUu8H,qBAAqBn3H,KAAK1D,EAAQZ,KACxDigC,EAAOjgC,GAAOY,EAAOZ,IAIzB,OAAOigC,E,gEEfT,IAAIy7F,EAAUr8E,EAAQ,KAMlBs8E,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdn0B,aAAa,EACbo0B,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,QAAQ,EACRC,WAAW,EACXjuH,MAAM,GAEJkuH,EAAgB,CAClBj/G,MAAM,EACNvd,QAAQ,EACRX,WAAW,EACXo9H,QAAQ,EACRC,QAAQ,EACR36H,WAAW,EACX46H,OAAO,GASLC,EAAe,CACjB,UAAY,EACZC,SAAS,EACTX,cAAc,EACdn0B,aAAa,EACbw0B,WAAW,EACXjuH,MAAM,GAEJwuH,EAAe,GAInB,SAASC,EAAWx2H,GAElB,OAAIs1H,EAAQmB,OAAOz2H,GACVq2H,EAIFE,EAAav2H,EAAoB,WAAMu1H,EAVhDgB,EAAajB,EAAQoB,YAhBK,CACxB,UAAY,EACZpqG,QAAQ,EACRqpG,cAAc,EACdn0B,aAAa,EACbw0B,WAAW,GAYbO,EAAajB,EAAQqB,MAAQN,EAY7B,IAAI/xG,EAAiBxpB,OAAOwpB,eACxBgS,EAAsBx7B,OAAOw7B,oBAC7B4nE,EAAwBpjG,OAAOojG,sBAC/BviE,EAA2B7gC,OAAO6gC,yBAClCymC,EAAiBtnE,OAAOsnE,eACxBw0D,EAAkB97H,OAAOhC,UAsC7BooC,EAAO8X,QArCP,SAAS69E,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,kBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqB70D,EAAe20D,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,GAI9D,IAAIn9H,EAAOy8B,EAAoBygG,GAE3B74B,IACFrkG,EAAOA,EAAK60B,OAAOwvE,EAAsB64B,KAM3C,IAHA,IAAIG,EAAgBV,EAAWM,GAC3BK,EAAgBX,EAAWO,GAEtBv9H,EAAI,EAAGA,EAAIK,EAAKJ,SAAUD,EAAG,CACpC,IAAII,EAAMC,EAAKL,GAEf,IAAKy8H,EAAcr8H,MAAUo9H,IAAaA,EAAUp9H,OAAWu9H,IAAiBA,EAAcv9H,OAAWs9H,IAAiBA,EAAct9H,IAAO,CAC7I,IAAIi/B,EAAa8C,EAAyBo7F,EAAiBn9H,GAE3D,IAEE0qB,EAAewyG,EAAiBl9H,EAAKi/B,GACrC,MAAOp7B,OAKf,OAAOq5H,I,6BCnGT,mKAAI77F,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,EAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAa5D07F,EAA8B,SAAUr7F,GAExC,SAASq7F,IACL,OAAkB,OAAXr7F,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,EAAUm8F,EAAcr7F,GAIxBR,EAAW,CACP3B,YAAS,SACVw9F,EAAat+H,UAAW,SAAK,GAChCyiC,EAAW,CACP3B,YAAS,QACVw9F,EAAat+H,UAAW,SAAK,GACzBs+H,EAXuB,CAYhCn1F,KAGE0uD,EACM,UADNA,EAEK,QAFLA,EAGM,eAHNA,EAIO,gBAeP0mC,EAAuB,SAAUt7F,GAEjC,SAASs7F,EAAMz5H,EAASsL,GACpB,OAAO6yB,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAunBlD,OAznBAq+B,EAAUo8F,EAAOt7F,GAYjBs7F,EAAMv+H,UAAU29B,kBAAoB,SAAU2H,EAASC,GACnD,IAAK,IAAIzjC,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,QACDy3B,aAAkBz1B,KAAKgB,QAAS,CAAE,MAAS2B,YAAW6+B,EAAQkO,SAC9D,MACJ,IAAK,SACDja,aAAkBz1B,KAAKgB,QAAS,CAAE,OAAU2B,YAAW6+B,EAAQmO,UAC/D,MACJ,IAAK,SACDla,aAAkBz1B,KAAKgB,QAAS,CAAE,OAAUwgC,EAAQk5F,SACpD,MACJ,IAAK,YACD16H,KAAKy2F,eACL,MACJ,IAAK,WACL,IAAK,WACDz2F,KAAK26H,kBACL,MACJ,IAAK,UAED,IAAIp5G,EAAIigB,EAAQc,QAAUb,EAAQa,QAClCtiC,KAAKgB,QAAQgzB,MAAM8O,MAAQ3sB,SAASnW,KAAKgB,QAAQgzB,MAAM8O,KAAM,IAAOvhB,GAAIpU,WAAa,KACrF,MACJ,IAAK,UAED,IAAImJ,EAAIkrB,EAAQkB,QAAUjB,EAAQiB,QAClC1iC,KAAKgB,QAAQgzB,MAAMgP,KAAO7sB,SAASnW,KAAKgB,QAAQgzB,MAAMgP,IAAK,IAAO1sB,GAAInJ,WAAa,KACnF,MACJ,IAAK,UACDnN,KAAK46H,aACL,MACJ,IAAK,iBAC8B,SAA3Bp5F,EAAQq5F,eACR76H,KAAK86H,mBAGL96H,KAAK+6H,wBAYzBN,EAAMv+H,UAAU2+B,cAAgB,WAC5B,MAAO,SAOX4/F,EAAMv+H,UAAU8+H,iBAAmB,WAC/Bh7H,KAAKi7H,kBAOTR,EAAMv+H,UAAUysC,eAAiB,WAC7B,OAAO3oC,KAAKqpC,aAAa,KAO7BoxF,EAAMv+H,UAAUif,QAAU,WACtBnb,KAAKgB,QAAQg1B,UAAUvM,OAAOsqE,EAAiBA,EAAgBA,EAAiBA,GAChF/zF,KAAK61C,eACL1W,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,OAQlCy6H,EAAMv+H,UAAUwzB,OAAS,WACrB1vB,KAAKgB,QAAQg1B,UAAUjN,IAAIgrE,GAC3B,IAAIhgE,EAAS,GACO,MAAhB/zB,KAAK06H,SACL3mG,EAAO2mG,OAAS16H,KAAK06H,QAEN,SAAf16H,KAAK0vC,QACL3b,EAAO2b,MAAQ/sC,YAAW3C,KAAK0vC,QAEf,SAAhB1vC,KAAK2vC,SACL5b,EAAO4b,OAAShtC,YAAW3C,KAAK2vC,SAEpCla,aAAkBz1B,KAAKgB,QAAS+yB,GAChC/zB,KAAK2qG,aAAc,EACnB3qG,KAAKy2F,eACLz2F,KAAK46H,cAETH,EAAMv+H,UAAUg4C,WAAa,WACrB7tB,IAAQa,UACR0B,IAAaG,IAAIjnB,OAAQ,oBAAqB9B,KAAKk7H,oBAAqBl7H,MAEhD,SAAxBA,KAAK66H,gBACL76H,KAAK86H,oBAGbL,EAAMv+H,UAAU4+H,iBAAmB,WAC/B,GAAI96H,KAAKm7H,qBACL,IAAK,IAAIn9H,EAAK,EAAGuF,EAAKvD,KAAK8rC,oBAAoB9rC,KAAKm7H,sBAAuBn9H,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7F,IAAIu3B,EAAWhyB,EAAGvF,GAClB4qB,IAAaG,IAAIwM,EAAU,SAAUv1B,KAAKo7H,cAAep7H,QAIrEy6H,EAAMv+H,UAAU25C,aAAe,WACvBxvB,IAAQa,UACR0B,IAAaa,OAAO3nB,OAAQ,oBAAqB9B,KAAKk7H,qBAE9B,SAAxBl7H,KAAK66H,gBACL76H,KAAK+6H,sBAGbN,EAAMv+H,UAAU6+H,mBAAqB,WACjC,GAAI/6H,KAAKm7H,qBACL,IAAK,IAAIn9H,EAAK,EAAGuF,EAAKvD,KAAK8rC,oBAAoB9rC,KAAKm7H,sBAAuBn9H,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7F,IAAI02B,EAAWnxB,EAAGvF,GAClB4qB,IAAaa,OAAOiL,EAAU,SAAU10B,KAAKo7H,iBAIzDX,EAAMv+H,UAAUi/H,mBAAqB,WACjC,IAAIE,EAAoC,KAAlBr7H,KAAKs7H,UAAmBl+H,YAAkB4C,KAAKs7H,UACjE96H,SAASgiC,KAAOxiC,KAAKs7H,SAEzB,OADAt7H,KAAKk5B,cAAc,CAAEoiG,SAAUD,IAAmB,GACf,kBAAnBr7H,KAAKs7H,SACjB96H,SAAS8C,cAActD,KAAKs7H,UAAYt7H,KAAKs7H,UAErDb,EAAMv+H,UAAUk/H,cAAgB,SAAUv6H,GAWtC,GAV4B,eAAxBb,KAAK66H,eACAz9H,YAAkB4C,KAAKgB,UAAchB,KAAKgB,QAAQutC,eAAiB1tC,EAAEo8B,QACrEj9B,KAAKgB,QAAQutC,cAAsD,SAAtCvuC,KAAKgB,QAAQutC,aAAave,SAC1B,MAA1BnvB,EAAEo8B,OAAO2W,eACb5zC,KAAK26H,kBAGoB,SAAxB36H,KAAK66H,gBACV76H,KAAKu7H,OAEmB,SAAxBv7H,KAAK66H,gBACD76H,KAAKm7H,qBAAsB,CAC3B,IAAIK,EAAgBx7H,KAAKy7H,oBAAoBz7H,KAAKm7H,qBAAsBt6H,EAAEo8B,QACrEu+F,GAAkBx7H,KAAK07H,sBAInBF,IACLx7H,KAAK07H,uBAAwB,IAJ7B17H,KAAK+pB,QAAQ,sBACb/pB,KAAK07H,uBAAwB,KAkB7CjB,EAAMv+H,UAAUu/H,oBAAsB,SAAUJ,EAAiBM,GAE7D,IADA,IAAIC,EAAgB57H,KAAK8rC,oBAAoBuvF,GACpC7nG,EAAW,EAAGA,EAAWooG,EAAc/+H,OAAQ22B,IACpD,IAAIxzB,KAAK67H,iBAAiBR,EAAiBO,EAAcpoG,IAIrD,OAAO,EAGf,OAAO,GAEXinG,EAAMv+H,UAAU2/H,iBAAmB,SAAUR,EAAiBM,GAC1D,IAAIzrF,EAAOlwC,KAAK87H,2BAA2BT,GAC3C,IAAKnrF,EAAKP,SAAWO,EAAKR,MACtB,OAAO,EAEX,GAAKtyC,YAAkB4C,KAAK87H,2BAA2BH,IAOlD,CACD,IAAII,EAAMj6H,OACNk6H,EAAa,CACbh5F,IAAK+4F,EAAIE,QACTn5F,KAAMi5F,EAAIG,QACVn5F,MAAOg5F,EAAIG,QAAUH,EAAII,WACzBl5F,OAAQ84F,EAAIE,QAAUF,EAAIK,aAE1BviH,EAAMmxF,YAAkBqwB,GACxB/pG,EAAM,CACN0R,IAAKnpB,EAAImpB,IACTF,KAAMjpB,EAAIipB,KACVC,MAAOlpB,EAAIipB,KAAOoN,EAAKR,MACvBzM,OAAQppB,EAAImpB,IAAMkN,EAAKP,QAEvB0sF,EAAc,CACdr5F,IAAKg5F,EAAW/4F,OAAS3R,EAAI0R,IAC7BF,KAAMk5F,EAAWj5F,MAAQzR,EAAIwR,KAC7BG,OAAQ3R,EAAI2R,OAAS+4F,EAAWh5F,IAChCD,MAAOzR,EAAIyR,MAAQi5F,EAAWl5F,MAElC,OAAOu5F,EAAYr5F,IAAM,GAClBq5F,EAAYv5F,KAAO,GACnBu5F,EAAYt5F,MAAQ,GACpBs5F,EAAYp5F,OAAS,EA9B5B,IAAIvP,EAAWioG,EAAct5F,wBAC7B,QAAS6N,EAAKjN,OAASvP,EAASsP,QACzBkN,EAAKjN,OAASvP,EAASuP,WACnBiN,EAAKnN,MAAQrP,EAASqP,UACnBmN,EAAKpN,KAAOpP,EAASoP,OAmC3C23F,EAAMv+H,UAAUirC,UAAY,aAG5BszF,EAAMv+H,UAAUu6F,aAAe,WAC3Bz2F,KAAKs8H,aAELt8H,KAAK2mC,UAAY3mC,KAAKgB,QAAQg1B,UAAUjN,IAAIgrE,GAAkB/zF,KAAKgB,QAAQg1B,UAAUvM,OAAOsqE,IAEhG0mC,EAAMv+H,UAAU0+H,WAAa,WACpBx9H,YAAkB4C,KAAK0qD,WACxB1qD,KAAKgB,QAAQoB,UAAY,GACK,kBAAlBpC,KAAK0qD,QACb1qD,KAAKgB,QAAQq1F,YAAcr2F,KAAK0qD,QAGhC1qD,KAAKgB,QAAQgB,YAAYhC,KAAK0qD,WAI1C+vE,EAAMv+H,UAAUg/H,oBAAsB,WAClC,IAAIn7H,EAAQC,KACZI,YAAW,WACPL,EAAM46H,oBACP,MAQPF,EAAMv+H,UAAUy+H,gBAAkB,SAAU19F,EAAQs/F,GAC3Cn/H,YAAkB6/B,IACnBj9B,KAAKw8H,iBAAiBv/F,GAE1Bj9B,KAAKs8H,aACAC,GACDv8H,KAAKi7H,kBAGbR,EAAMv+H,UAAUogI,WAAa,WACzB,IAAI3mH,EACAo4B,EACAstF,EAAkBr7H,KAAKm7H,qBAC3B,GAA+B,kBAApBn7H,KAAK+tC,SAASuuC,GAA6C,kBAApBt8E,KAAK+tC,SAASwuC,EAC5D5mE,EAAM,CAAEmtB,KAAM9iC,KAAK+tC,SAASuuC,EAAGt5C,IAAKhjC,KAAK+tC,SAASwuC,QAEjD,GAAgC,kBAApBv8E,KAAK+tC,SAASuuC,GAA6C,kBAApBt8E,KAAK+tC,SAASwuC,GACtC,kBAApBv8E,KAAK+tC,SAASuuC,GAA6C,kBAApBt8E,KAAK+tC,SAASwuC,EAAiB,CAC9E,IAAIkgD,OAAgB,EAChBhoF,EAAUz0C,KAAKgB,QAAQgzB,MAAMygB,QACjCz0C,KAAKgB,QAAQgzB,MAAMygB,QAAU,QACzBz0C,KAAKgB,QAAQg1B,UAAUzD,SAAS,iBAChCkqG,EAAgBz8H,KAAKgB,QAAQ4yC,cAAc5f,MAAMygB,QACjDz0C,KAAKgB,QAAQ4yC,cAAc5f,MAAMygB,QAAU,SAE/C1G,EAAW/tC,KAAK08H,kBAAkBrB,EAAiBr7H,KAAKgB,QAAShB,KAAK+tC,SAAU/tC,KAAKsiC,QAAStiC,KAAK0iC,SAE/F/sB,EAD2B,kBAApB3V,KAAK+tC,SAASuuC,EACf,CAAEx5C,KAAMiL,EAASjL,KAAME,IAAKhjC,KAAK+tC,SAASwuC,GAG1C,CAAEz5C,KAAM9iC,KAAK+tC,SAASuuC,EAAGt5C,IAAK+K,EAAS/K,KAEjDhjC,KAAKgB,QAAQgzB,MAAMygB,QAAUA,EACzBz0C,KAAKgB,QAAQg1B,UAAUzD,SAAS,iBAChCvyB,KAAKgB,QAAQ4yC,cAAc5f,MAAMygB,QAAUgoF,QAG9C,GAAIpB,EAAiB,CAClB5mF,EAAUz0C,KAAKgB,QAAQgzB,MAAMygB,QACjCz0C,KAAKgB,QAAQgzB,MAAMygB,QAAU,QAC7B9+B,EAAM3V,KAAK08H,kBAAkBrB,EAAiBr7H,KAAKgB,QAAShB,KAAK+tC,SAAU/tC,KAAKsiC,QAAStiC,KAAK0iC,SAC9F1iC,KAAKgB,QAAQgzB,MAAMygB,QAAUA,OAG7B9+B,EAAM,CAAEmtB,KAAM,EAAGE,IAAK,GAErB5lC,YAAkBuY,KACnB3V,KAAKgB,QAAQgzB,MAAM8O,KAAOntB,EAAImtB,KAAO,KACrC9iC,KAAKgB,QAAQgzB,MAAMgP,IAAMrtB,EAAIqtB,IAAM,OAG3Cy3F,EAAMv+H,UAAU4/H,2BAA6B,SAAUxqG,GAEnD,IAEI,OADUA,EAAI+Q,wBAGlB,MAAO5d,GACH,OAAO,OAGfg2G,EAAMv+H,UAAUwgI,kBAAoB,SAAUC,EAAWrrG,EAAKyc,EAAUzL,EAASI,GAC7E,IAAIk6F,EAAU58H,KAAK87H,2BAA2BxqG,GAC1CurG,EAAa78H,KAAK87H,2BAA2Ba,GACjD,GAAIv/H,YAAkBw/H,IAAYx/H,YAAkBy/H,GAChD,OAAO,KAEX,IAAIjyB,EAAS+xB,EACT7xB,EAAY,CAAEhoE,KAAM,EAAGE,IAAK,GAUhC,OATI1R,EAAIid,cAA6C,SAA7Bjd,EAAIid,aAAave,SAA4C,SAAtB2sG,EAAU3sG,QACrE86E,EAAYE,YAAkB2xB,IAGzBrrG,EAAI0E,UAAUzD,SAAS,gBAAqC,SAAnBq4E,EAAO56E,UACjDsB,EAAMA,EAAIsiB,eAEdk3D,EAAYlqC,YAA+BgqC,EAAQt5E,IAE/Cyc,EAASuuC,GACb,QACA,IAAK,OACD,MACJ,IAAK,SACIhrD,EAAI0E,UAAUzD,SAAS,gBAAqC,SAAnBq4E,EAAO56E,SAA0C,cAApBhwB,KAAK88H,WAC5EhyB,EAAUhoE,MAAShhC,OAAOkuC,WAAa,EAAI4sF,EAAQltF,MAAQ,EAElC,cAApB1vC,KAAK88H,WACVhyB,EAAUhoE,MAAS+5F,EAAWntF,MAAQ,EAAIktF,EAAQltF,MAAQ,EAG1Do7D,EAAUhoE,MAAS+5F,EAAWntF,MAAQ,EAE1C,MACJ,IAAK,QACIpe,EAAI0E,UAAUzD,SAAS,gBAAqC,SAAnBq4E,EAAO56E,SAA0C,cAApBhwB,KAAK88H,WAC5EhyB,EAAUhoE,MAAShhC,OAAOkuC,WAAa4sF,EAAQltF,MAEtB,cAApB1vC,KAAK88H,WACVhyB,EAAUhoE,MAAS+5F,EAAWntF,MAAQktF,EAAQltF,MAG9Co7D,EAAUhoE,MAAS+5F,EAAWntF,MAI1C,OAAQ3B,EAASwuC,GACb,QACA,IAAK,MACD,MACJ,IAAK,SACIjrD,EAAI0E,UAAUzD,SAAS,gBAAqC,SAAnBq4E,EAAO56E,SAA0C,cAApBhwB,KAAK88H,WAC5EhyB,EAAU9nE,KAAQlhC,OAAOiuC,YAAc,EAAI6sF,EAAQjtF,OAAS,EAEnC,cAApB3vC,KAAK88H,WACVhyB,EAAU9nE,KAAQ65F,EAAWltF,OAAS,EAAIitF,EAAQjtF,OAAS,EAG3Dm7D,EAAU9nE,KAAQ65F,EAAWltF,OAAS,EAE1C,MACJ,IAAK,SACIre,EAAI0E,UAAUzD,SAAS,gBAAqC,SAAnBq4E,EAAO56E,SAA0C,cAApBhwB,KAAK88H,WAC5EhyB,EAAU9nE,KAAQlhC,OAAOiuC,YAAc6sF,EAAQjtF,OAEtB,cAApB3vC,KAAK88H,WACVhyB,EAAU9nE,KAAQ65F,EAAWltF,OAASitF,EAAQjtF,OAG9Cm7D,EAAU9nE,KAAQ65F,EAAWltF,OAMzC,OAFAm7D,EAAUhoE,MAAQR,EAClBwoE,EAAU9nE,KAAON,EACVooE,GAEX2vB,EAAMv+H,UAAU6gI,SAAW,SAAUxR,GACjC,IAAI8P,EAAkBr7H,KAAKm7H,qBAC3B6B,YAAKh9H,KAAKgB,QAASq6H,EAAiBr7H,KAAKsiC,QAAStiC,KAAK0iC,QAAS1iC,KAAK+tC,SAASuuC,EAAGt8E,KAAK+tC,SAASwuC,EAAGv8E,KAAKi9H,gBAAiB1R,EAAOvrH,KAAK2qG,cAExI8vB,EAAMv+H,UAAUghI,QAAU,SAAU3R,GAChC,GAA6D,IAAzD4R,YAAUn9H,KAAKgB,QAAShB,KAAKi9H,iBAAiBpgI,OAC9C,GAAIO,YAAkB4C,KAAKi9H,iBAAkB,CACzC,IAAIpiH,EAAOuiH,YAAIp9H,KAAKgB,QAAShB,KAAKi9H,gBAAiB1R,GAC/CA,EAAMjvC,IACNt8E,KAAKgB,QAAQgzB,MAAM8O,KAAOjoB,EAAKioB,KAAO,MAEtCyoF,EAAMhvC,IACNv8E,KAAKgB,QAAQgzB,MAAMgP,IAAMnoB,EAAKmoB,IAAM,UAGvC,CACD,IAAIwnE,EAAcxqG,KAAK87H,2BAA2B97H,KAAKgB,SACnDq8H,EAAer9H,KAAK87H,2BAA2B97H,KAAKi9H,iBACxD,GAAI7/H,YAAkBotG,IAAgBptG,YAAkBigI,GACpD,OAAO,KAEP9R,IAAqB,IAAZA,EAAMhvC,IACX8gD,EAAar6F,IAAMwnE,EAAYxnE,IAC/BhjC,KAAKgB,QAAQgzB,MAAMgP,IAAM,MAEpBq6F,EAAap6F,OAASunE,EAAYvnE,SACvCjjC,KAAKgB,QAAQgzB,MAAMgP,IAAM7sB,SAASnW,KAAKgB,QAAQgzB,MAAMgP,IAAK,KAAOwnE,EAAYvnE,OAASo6F,EAAap6F,QAAU,OAGjHsoF,IAAqB,IAAZA,EAAMjvC,IACX+gD,EAAat6F,MAAQynE,EAAYznE,MACjC/iC,KAAKgB,QAAQgzB,MAAM8O,KAAO3sB,SAASnW,KAAKgB,QAAQgzB,MAAM8O,KAAM,KAAO0nE,EAAYznE,MAAQs6F,EAAat6F,OAAS,KAExGs6F,EAAav6F,KAAO0nE,EAAY1nE,OACrC9iC,KAAKgB,QAAQgzB,MAAM8O,KAAO3sB,SAASnW,KAAKgB,QAAQgzB,MAAM8O,KAAM,KAAOu6F,EAAav6F,KAAO0nE,EAAY1nE,MAAQ,SAM/H23F,EAAMv+H,UAAU++H,eAAiB,WAC7B,IAAIqC,EAAOt9H,KAAKu8H,UAAUjgD,EACtBihD,EAAOv9H,KAAKu8H,UAAUhgD,EACb,SAAT+gD,GAA4B,SAATC,IAGV,SAATD,GAA4B,SAATC,EACnBv9H,KAAK+8H,SAAS,CAAEzgD,GAAG,EAAMC,GAAG,IAEd,QAAT+gD,GAA2B,QAATC,EACvBv9H,KAAKk9H,QAAQ,CAAE5gD,GAAG,EAAMC,GAAG,KAGd,SAAT+gD,EACAt9H,KAAK+8H,SAAS,CAAEzgD,GAAG,EAAMC,GAAG,IAEd,SAATghD,GACLv9H,KAAK+8H,SAAS,CAAExgD,GAAG,EAAMD,GAAG,IAEnB,QAATghD,EACAt9H,KAAKk9H,QAAQ,CAAE5gD,GAAG,EAAMC,GAAG,IAEb,QAATghD,GACLv9H,KAAKk9H,QAAQ,CAAE5gD,GAAG,EAAOC,GAAG,OAWxCk+C,EAAMv+H,UAAUshI,KAAO,SAAUC,EAAkBC,GAC/C,IAAI39H,EAAQC,KAEZ,GADAA,KAAKk0C,aACe,MAAhBl0C,KAAK06H,SAAoBt9H,YAAkBsgI,GAAkB,CAC7D,IAAIC,EAAiBvgI,YAAkBsgI,GAAoB19H,KAAKgB,QAAU08H,EAC1E19H,KAAK06H,OAASkD,EAAiBD,GAC/BloG,aAAkBz1B,KAAKgB,QAAS,CAAE,OAAUhB,KAAK06H,SAErD+C,EAAqBrgI,YAAkBqgI,IAAiD,kBAArBA,EAC5Cz9H,KAAK69H,cAAxBJ,EACqB,SAArBz9H,KAAKu8H,UAAUjgD,GAAqC,SAArBt8E,KAAKu8H,UAAUhgD,IAC9CnmD,aAAY,CAACp2B,KAAKgB,SAAU+yF,GAC5Bl+D,YAAS,CAAC71B,KAAKgB,SAAU+yF,GACzB/zF,KAAKi7H,iBACL7kG,aAAY,CAACp2B,KAAKgB,SAAU+yF,GAC5Bl+D,YAAS,CAAC71B,KAAKgB,SAAU+yF,IAExB32F,YAAkBqgI,IAenBrnG,aAAY,CAACp2B,KAAKgB,SAAU+yF,GAC5Bl+D,YAAS,CAAC71B,KAAKgB,SAAU+yF,GACzB/zF,KAAK+pB,QAAQ,UAhBb0zG,EAAiBz8F,MAAQ,WAChBjhC,EAAMo5B,cACP/C,aAAY,CAACr2B,EAAMiB,SAAU+yF,GAC7Bl+D,YAAS,CAAC91B,EAAMiB,SAAU+yF,KAGlC0pC,EAAiB9kH,IAAM,WACd5Y,EAAMo5B,aACPp5B,EAAMgqB,QAAQ,SAGtB,IAAImV,IAAUu+F,GAAkB39F,QAAQ9/B,KAAKgB,WAcrDy5H,EAAMv+H,UAAUq/H,KAAO,SAAUkC,GAC7B,IAAI19H,EAAQC,KACZy9H,EAAqBrgI,YAAkBqgI,IAAiD,kBAArBA,EAC5Cz9H,KAAK89H,cAAxBL,EACCrgI,YAAkBqgI,IAWnBrnG,aAAY,CAACp2B,KAAKgB,SAAU+yF,GAC5Bl+D,YAAS,CAAC71B,KAAKgB,SAAU+yF,GACzB/zF,KAAK+pB,QAAQ,WAZb0zG,EAAiB9kH,IAAM,WACd5Y,EAAMo5B,cACP/C,aAAY,CAACr2B,EAAMiB,SAAU+yF,GAC7Bl+D,YAAS,CAAC91B,EAAMiB,SAAU+yF,GAC1Bh0F,EAAMgqB,QAAQ,WAGtB,IAAImV,IAAUu+F,GAAkB39F,QAAQ9/B,KAAKgB,UAOjDhB,KAAK61C,gBAQT4kF,EAAMv+H,UAAU4vC,oBAAsB,SAAU9qC,GAE5C,OADAhB,KAAKw8H,iBAAiBx7H,GACf8qC,EAAoB9qC,EAAShB,KAAK2qG,cAE7C8vB,EAAMv+H,UAAUsgI,iBAAmB,SAAUx7H,GAEzC,IADA,IAAIT,EAASS,EAAQ4yC,cACdrzC,GAA6B,SAAnBA,EAAOyvB,SAAoB,CACxC,IAAI+tG,EAAcz6F,iBAAiB/iC,GACN,UAAzBw9H,EAAYhwF,WAAyB3wC,YAAkB4C,KAAKgB,UAAYhB,KAAKgB,QAAQutC,cAAsD,SAAtCvuC,KAAKgB,QAAQutC,aAAave,UAC/HhwB,KAAKgB,QAAQgzB,MAAMgP,IAAMlhC,OAAOm6H,QAAU9lH,SAASnW,KAAKgB,QAAQgzB,MAAMgP,KAAOrgC,YAAWb,OAAOm6H,QAAU9lH,SAASnW,KAAKgB,QAAQgzB,MAAMgP,MAC/HrgC,YAAWwT,SAASnW,KAAKgB,QAAQgzB,MAAMgP,KAAOlhC,OAAOm6H,SAC3Dj8H,KAAKgB,QAAQgzB,MAAM+Z,SAAW,QAC9B/tC,KAAK2qG,aAAc,GAEvBpqG,EAASA,EAAOqzC,eACXx2C,YAAkB4C,KAAKgB,UAAY5D,YAAkB4C,KAAKgB,QAAQutC,eAA0C,UAAzBwvF,EAAYhwF,UAC7D,UAAhC/tC,KAAKgB,QAAQgzB,MAAM+Z,WACtB/tC,KAAK2qG,aAAc,KAI/BhsE,EAAW,CACP3B,YAAS,SACVy9F,EAAMv+H,UAAW,cAAU,GAC9ByiC,EAAW,CACP3B,YAAS,SACVy9F,EAAMv+H,UAAW,aAAS,GAC7ByiC,EAAW,CACP3B,YAAS,OACVy9F,EAAMv+H,UAAW,eAAW,GAC/ByiC,EAAW,CACP3B,YAAS,cACVy9F,EAAMv+H,UAAW,kBAAc,GAClCyiC,EAAW,CACP3B,YAAS,OACVy9F,EAAMv+H,UAAW,uBAAmB,GACvCyiC,EAAW,CACP3B,YAAS,CAAEs/C,EAAG,OAAQC,EAAG,UAC1Bk+C,EAAMv+H,UAAW,iBAAa,GACjCyiC,EAAW,CACP3B,YAAS,KACVy9F,EAAMv+H,UAAW,gBAAY,GAChCyiC,EAAW,CACPvB,YAAQ,GAAIo9F,IACbC,EAAMv+H,UAAW,gBAAY,GAChCyiC,EAAW,CACP3B,YAAS,IACVy9F,EAAMv+H,UAAW,eAAW,GAC/ByiC,EAAW,CACP3B,YAAS,IACVy9F,EAAMv+H,UAAW,eAAW,GAC/ByiC,EAAW,CACP3B,YAAS,MACVy9F,EAAMv+H,UAAW,cAAU,GAC9ByiC,EAAW,CACP3B,aAAS,IACVy9F,EAAMv+H,UAAW,iBAAa,GACjCyiC,EAAW,CACP3B,YAAS,eACVy9F,EAAMv+H,UAAW,sBAAkB,GACtCyiC,EAAW,CACP3B,YAAS,OACVy9F,EAAMv+H,UAAW,qBAAiB,GACrCyiC,EAAW,CACP3B,YAAS,OACVy9F,EAAMv+H,UAAW,qBAAiB,GACrCyiC,EAAW,CACPp/B,eACDk7H,EAAMv+H,UAAW,YAAQ,GAC5ByiC,EAAW,CACPp/B,eACDk7H,EAAMv+H,UAAW,aAAS,GAC7ByiC,EAAW,CACPp/B,eACDk7H,EAAMv+H,UAAW,0BAAsB,GAC1Cu+H,EAAQ97F,EAAW,CACflB,KACDg9F,GAznBoB,CA2nBzBn0F,KAUK,SAASwF,EAAoB9qC,EAAS2pG,GAKzC,IAJA,IAAIvwD,EAAW9W,iBAAiBtiC,GAC5B46H,EAAgB,GAChBoC,EAAgB,gBAChBz9H,EAASS,EAAQ4yC,cACdrzC,GAA6B,SAAnBA,EAAOyvB,SAAoB,CACxC,IAAI+tG,EAAcz6F,iBAAiB/iC,GACP,aAAtB65C,EAASrM,UAAoD,WAAzBgwF,EAAYhwF,WAC/CiwF,EAAcpzH,KAAKmzH,EAAY1jF,SAAW0jF,EAAYxjF,UAAYwjF,EAAYzjF,YACjFshF,EAAch6H,KAAKrB,GAEvBA,EAASA,EAAOqzC,cAKpB,OAHK+2D,GACDixB,EAAch6H,KAAKpB,UAEhBo7H,EASJ,SAASgC,EAAiB58H,GAI7B,IAFA,IAAIT,EAASS,EAAQ4yC,cACjBqqF,EAAe,GACZ19H,GACoB,SAAnBA,EAAOyvB,SADA,CAEP,IAAIxV,EAAQha,SAASkmE,YAAYpjC,iBAAiB/iC,EAAQ,MAAMgjC,iBAAiB,WAC7EwK,EAAWvtC,SAASkmE,YAAYpjC,iBAAiB/iC,EAAQ,MAAMgjC,iBAAiB,YACtE,SAAV/oB,GAAiC,WAAbuzB,GACpBkwF,EAAar8H,KAAK4Y,GAEtBja,EAASA,EAAOqzC,cAOxB,IADA,IAAIsqF,EAAiB,GACZthI,EAAI,EAAGA,EAAI4D,SAASgiC,KAAK1R,SAASj0B,OAAQD,IAC/C,IAAKoE,EAAQ88D,YAAYt9D,SAASgiC,KAAK1R,SAASl0B,IAAK,CAC7C4d,EAAQha,SAASkmE,YAAYpjC,iBAAiB9iC,SAASgiC,KAAK1R,SAASl0B,GAAI,MAAM2mC,iBAAiB,WAChGwK,EAAWvtC,SAASkmE,YAAYpjC,iBAAiB9iC,SAASgiC,KAAK1R,SAASl0B,GAAI,MAAM2mC,iBAAiB,YACzF,SAAV/oB,GAAiC,WAAbuzB,GACpBmwF,EAAet8H,KAAK4Y,GAIhC0jH,EAAet8H,KAAK,OACpB,IAAIu8H,EAAiB,GACrB,IAAK/gI,YAAkB4D,EAAQ4yC,gBAAoD,SAAlC5yC,EAAQ4yC,cAAc5jB,QACnE,KAAI1B,EAAa,GAAGjtB,MAAMC,KAAKN,EAAQ4yC,cAAc9iB,UACrD,IAASl0B,EAAI,EAAGA,EAAI0xB,EAAWzxB,OAAQD,IACnC,IAAKoE,EAAQ88D,YAAYxvC,EAAW1xB,IAAK,CACjC4d,EAAQha,SAASkmE,YAAYpjC,iBAAiBhV,EAAW1xB,GAAI,MAAM2mC,iBAAiB,WACpFwK,EAAWvtC,SAASkmE,YAAYpjC,iBAAiBhV,EAAW1xB,GAAI,MAAM2mC,iBAAiB,YAC7E,SAAV/oB,GAAiC,WAAbuzB,GACpBowF,EAAev8H,KAAK4Y,IAKpC,IAAI4jH,EAAaH,EAAansG,OAAOosG,EAAgBC,GAEjDE,EAAqB92H,KAAK8L,IAAIjX,MAAMmL,KAAM62H,GAAc,EAC5D,OAAOC,EAAqB,WAAa,WAAaA,I,6BC1wB1D,0GAKI3zB,EACA4zB,EANJ,eAeO,SAASlB,EAAIp8H,EAASi8H,EAAiBlxF,EAAMgC,GAGhD,QAFwB,IAApBkvF,IAA8BA,EAAkB,WACvC,IAATlxF,IAAmBA,EAAO,CAAEuwC,GAAG,EAAOC,GAAG,KACxCxwC,EAAKwwC,IAAMxwC,EAAKuwC,EACjB,MAAO,CAAEx5C,KAAM,EAAGE,IAAK,GAE3B,IAAIu7F,EAAWv9H,EAAQqhC,wBAMvB,GALAi8F,EAAkBrB,EAClBvyB,EAAiB1pG,EAAQqqG,cACpBt9D,IACDA,EAAWi9D,YAAkBhqG,EAAS,OAAQ,QAE9C+qC,EAAKuwC,EAAG,CACR,IAAIkiD,EAAiBF,EAAkBG,IAA4BC,IAC/DC,EAAgBC,IAChBC,EAAiBC,IACjBC,EAAWJ,EAAgB5wF,EAASjL,KACpCk8F,EAAYjxF,EAASjL,KAAOy7F,EAAS7uF,MAAQmvF,EAC7CN,EAAS7uF,MAAQ8uF,EAEbzwF,EAASjL,KADTi8F,EAAW,GAAKC,GAAa,EACbH,EAAiBN,EAAS7uF,MAErCsvF,EAAY,GAAKD,GAAY,EAClBJ,EAGAI,EAAWC,EAAaH,EAAiBN,EAAS7uF,MAASivF,EAG1EI,EAAW,EAChBhxF,EAASjL,MAAQi8F,EAEZC,EAAY,IACjBjxF,EAASjL,MAAQk8F,GAGzB,GAAIjzF,EAAKwwC,EAAG,CACR,IAAI0iD,EAAkBX,EAAkBY,IAA6BC,IACjEC,EAAeC,IACfC,EAAkBC,IAClBC,EAAUJ,EAAerxF,EAAS/K,IAClCy8F,EAAa1xF,EAAS/K,IAAMu7F,EAAS5uF,OAAS2vF,EAC9Cf,EAAS5uF,OAASsvF,EAEdlxF,EAAS/K,IADTw8F,EAAU,GAAKC,GAAc,EACdH,EAAkBf,EAAS5uF,OAErC8vF,EAAa,GAAKD,GAAW,EACnBJ,EAGAI,EAAUC,EAAcH,EAAkBf,EAAS5uF,OAAUyvF,EAG3EI,EAAU,EACfzxF,EAAS/K,KAAOw8F,EAEXC,EAAa,IAClB1xF,EAAS/K,KAAOy8F,GAGxB,OAAO1xF,EAUJ,SAASovF,EAAUn8H,EAASi8H,EAAiB17G,EAAGjL,QAC3B,IAApB2mH,IAA8BA,EAAkB,MACpD,IAAIyC,EAAa10B,YAAkBhqG,EAAS,OAAQ,OAChDugB,IACAm+G,EAAW58F,KAAOvhB,GAElBjL,IACAopH,EAAW18F,IAAM1sB,GAErB,IAAIuE,EAAO,GACXyjH,EAAkBrB,EAClBvyB,EAAiB1pG,EAAQqqG,cACzB,IAAIb,EAAcxpG,EAAQqhC,wBACtBW,EAAM08F,EAAW18F,IACjBF,EAAO48F,EAAW58F,KAClBC,EAAQ28F,EAAW58F,KAAO0nE,EAAY96D,MAItCiwF,EAAQC,EAAgB58F,EAHf08F,EAAW18F,IAAMwnE,EAAY76D,QAItCkwF,EAAQC,EAAiBh9F,EAAMC,GAanC,OAZI48F,EAAMI,SACNllH,EAAKjZ,KAAK,OAEVi+H,EAAMG,WACNnlH,EAAKjZ,KAAK,SAEVi+H,EAAMI,UACNplH,EAAKjZ,KAAK,QAEV+9H,EAAMO,YACNrlH,EAAKjZ,KAAK,UAEPiZ,EAeJ,SAASmiH,EAAKh8H,EAASi8B,EAAQqF,EAASI,EAASwoE,EAAWC,EAAW8xB,EAE9ElxF,EAAM4+D,GAGF,QAFwB,IAApBsyB,IAA8BA,EAAkB,WACvC,IAATlxF,IAAmBA,EAAO,CAAEuwC,GAAG,EAAMC,GAAG,IACvCt/C,GAAWj8B,GAAYkqG,GAAcC,IAAep/D,EAAKuwC,GAAMvwC,EAAKwwC,GAAzE,CAIA,IAWIiuB,EAXA21B,EAAQ,CAAEC,GAAI,KACdC,GAAI,KACJC,GAAI,KACJC,GAAI,MACLC,EAAQ,CACPJ,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAIR,GAAiD,SAA7Cz+H,OAAOwhC,iBAAiBtiC,GAASyzC,QAAoB,CACrD,IAAIgsF,EAAgBz/H,EAAQgzB,MAAMwC,WAClCx1B,EAAQgzB,MAAMwC,WAAa,SAC3Bx1B,EAAQgzB,MAAMygB,QAAU,QACxB+1D,EAAcxpG,EAAQqhC,wBACtBrhC,EAAQgzB,MAAM0sG,eAAe,WAC7B1/H,EAAQgzB,MAAMwC,WAAaiqG,OAG3Bj2B,EAAcxpG,EAAQqhC,wBAE1B,IAAI1sB,EAAM,CACN21F,KAAMJ,EAAWK,KAAMJ,EAAW7oE,QAASA,EAASI,QAASA,EAASqL,SAAU,CAAEjL,KAAM,EAAGE,IAAK,IAEpGs7F,EAAkBrB,EAClBvyB,EAAiBztE,EAAOouE,cAwC5B,SAA2BpuE,EAAQ0jG,EAAMhrH,EAAKg1F,EAAaH,GACvD70F,EAAIo4B,SAAWi9D,YAAkB/tE,EAAQtnB,EAAI21F,KAAM31F,EAAI41F,KAAMZ,EAAaH,GAC1Em2B,EAAKP,GAAKp1B,YAAkB/tE,EAAQ,OAAQ,MAAO0tE,EAAaH,GAChEm2B,EAAKN,GAAKr1B,YAAkB/tE,EAAQ,QAAS,MAAO0tE,EAAaH,GACjEm2B,EAAKJ,GAAKv1B,YAAkB/tE,EAAQ,OAAQ,SAAU0tE,EAAaH,GACnEm2B,EAAKL,GAAKt1B,YAAkB/tE,EAAQ,QAAS,SAAU0tE,EAAaH,GA5CpEo2B,CAAkB3jG,EAAQkjG,EAAOxqH,EAAKg1F,EAAaH,GACnDq2B,EAAYL,EAAO7qH,EAAK60F,GACpBz+D,EAAKuwC,GACLwkD,EAAS7jG,EAAQujG,EAAOL,EAAOxqH,EAAK60F,GAAa,GAEjDz+D,EAAKwwC,GAAK4jD,EAAMC,GAAGp9F,KAAO,GAC1B+9F,EAAQ9jG,EAAQujG,EAAOL,EAAOxqH,EAAK60F,GAAa,GAWxD,SAAkBxpG,EAAS2U,EAAK60F,GAE5B,IAAI1nE,EAAO,EAAGE,EAAM,EACpB,GAA4B,MAAxBhiC,EAAQutC,eACgD,aAApDjL,iBAAiBtiC,EAAQutC,cAAcR,UACa,aAApDzK,iBAAiBtiC,EAAQutC,cAAcR,UAA0B,CACrE,IAAIlzB,EAAOmwF,YAAkBhqG,EAAQutC,aAAc,OAAQ,OAAO,EAAOi8D,GACzE1nE,EAAOjoB,EAAKioB,KACZE,EAAMnoB,EAAKmoB,IAEfhiC,EAAQgzB,MAAMgP,IAAOrtB,EAAIo4B,SAAS/K,IAAMrtB,EAAI+sB,QAAWM,EAAQ,KAC/DhiC,EAAQgzB,MAAM8O,KAAQntB,EAAIo4B,SAASjL,KAAOntB,EAAI2sB,QAAWQ,EAAS,KApBlEk+F,CAAShgI,EAAS2U,EAAK60F,IA6C3B,SAASq2B,EAAYI,EAAStrH,EAAK60F,GAC/By2B,EAAQb,GAAK,CAAEp9F,IAAKrtB,EAAIo4B,SAAS/K,IAAMrtB,EAAI+sB,QAASI,KAAMntB,EAAIo4B,SAASjL,KAAOntB,EAAI2sB,SAClF2+F,EAAQZ,GAAK,CAAEr9F,IAAKi+F,EAAQb,GAAGp9F,IAAKF,KAAMm+F,EAAQb,GAAGt9F,KAAO0nE,EAAY96D,OACxEuxF,EAAQX,GAAK,CAAEt9F,IAAKi+F,EAAQb,GAAGp9F,IAAMwnE,EAAY76D,OAC7C7M,KAAMm+F,EAAQb,GAAGt9F,MACrBm+F,EAAQV,GAAK,CAAEv9F,IAAKi+F,EAAQb,GAAGp9F,IAAMwnE,EAAY76D,OAC7C7M,KAAMm+F,EAAQb,GAAGt9F,KAAO0nE,EAAY96D,OAQ5C,SAASowF,EAAiBh9F,EAAMC,GAE5B,IAAIk9F,GAAW,EAAOD,GAAY,EAOlC,OANMl9F,EAAOopE,IAAuB0yB,MAChCqB,GAAW,GAEXl9F,EAAQ+7F,MACRkB,GAAY,GAET,CAAEC,SAAUA,EAAUD,UAAWA,GAY5C,SAASc,EAAS7jG,EAAQ0jG,EAAMR,EAAOxqH,EAAK60F,EAAa02B,GACrD,IAAIC,EAAcrB,EAAiBa,EAAKP,GAAGt9F,KAAM69F,EAAKN,GAAGv9F,MACpDq9F,EAAMC,GAAGt9F,KAAOopE,KAAwB0yB,MACzCuC,EAAYlB,UAAW,GAEvBE,EAAME,GAAGv9F,KAAOg8F,MAChBqC,EAAYnB,WAAY,IAEvBmB,EAAYlB,WAAakB,EAAYnB,YAAgBmB,EAAYlB,UAAYkB,EAAYnB,aACzE,UAAbrqH,EAAI21F,KACJ31F,EAAI21F,KAAO,OAGX31F,EAAI21F,KAAO,QAEf31F,EAAI2sB,QAAU3sB,EAAI2sB,QAAUkoE,EAAY96D,MACxC/5B,EAAI2sB,SAAW,EAAI3sB,EAAI2sB,QACvB3sB,EAAIo4B,SAAWi9D,YAAkB/tE,EAAQtnB,EAAI21F,KAAM31F,EAAI41F,MAAM,GAC7Ds1B,EAAYF,EAAMhrH,EAAK60F,GACnB02B,GACAJ,EAAS7jG,EAAQ0jG,EAAMR,EAAOxqH,EAAK60F,GAAa,IAc5D,SAASu2B,EAAQ9jG,EAAQ0jG,EAAMR,EAAOxqH,EAAK60F,EAAa02B,GACpD,IAAIC,EAAcvB,EAAgBe,EAAKP,GAAGp9F,IAAK29F,EAAKL,GAAGt9F,KAClDm9F,EAAMC,GAAGp9F,IAAMipE,KAAuBozB,MACvC8B,EAAYpB,SAAU,GAEtBI,EAAMG,GAAGt9F,KAAOu8F,KAAqBtiG,EAAOoF,wBAAwBY,OAASnhC,OAAOiuC,cACpFoxF,EAAYjB,YAAa,IAExBiB,EAAYpB,UAAYoB,EAAYjB,aAAiBiB,EAAYpB,SAAWoB,EAAYjB,cACxE,QAAbvqH,EAAI41F,KACJ51F,EAAI41F,KAAO,SAGX51F,EAAI41F,KAAO,MAEf51F,EAAI+sB,QAAU/sB,EAAI+sB,QAAU8nE,EAAY76D,OACxCh6B,EAAI+sB,SAAW,EAAI/sB,EAAI+sB,QACvB/sB,EAAIo4B,SAAWi9D,YAAkB/tE,EAAQtnB,EAAI21F,KAAM31F,EAAI41F,MAAM,EAAOf,GACpEq2B,EAAYF,EAAMhrH,EAAK60F,GACnB02B,GACAH,EAAQ9jG,EAAQ0jG,EAAMR,EAAOxqH,EAAK60F,GAAa,IAU3D,SAASo1B,EAAgB58F,EAAKC,GAE1B,IAAI88F,GAAU,EAAOG,GAAa,EAOlC,OANKl9F,EAAMipE,IAAsBozB,MAC7BU,GAAU,GAEV98F,EAASs8F,MACTW,GAAa,GAEV,CAAEH,QAASA,EAASG,WAAYA,GAK3C,SAASzB,IACL,OAAOH,EAAgBj8F,wBAAwBqN,MAKnD,SAASwvF,IACL,OAAOZ,EAAgBj8F,wBAAwBsN,OAKnD,SAASyxF,IACL,OAAO9C,EAAgBj8F,wBAAwBS,KAKnD,SAASu+F,IACL,OAAO/C,EAAgBj8F,wBAAwBW,IAGnD,SAASq8F,IACL,OAAIf,EACO+C,IAEJ,EAGX,SAASzC,IACL,OAAIN,EACO8C,IAEJ,EAGX,SAAStC,IACL,OAAIR,EACQpyB,IAAsBk1B,IAA2B3C,IAErDvyB,IAAsBwyB,IAGlC,SAASa,IACL,OAAIjB,EACQryB,IAAqBo1B,IAA0BnC,IAEnDjzB,IAAqBkzB,IAKjC,SAASlzB,IAGL,OAAOvB,EAAe7nE,gBAAgBD,WAAa8nE,EAAeloE,KAAKI,UAK3E,SAASspE,IAGL,OAAOxB,EAAe7nE,gBAAgBJ,YAAcioE,EAAeloE,KAAKC,WAK5E,SAAS08F,IACL,OAAOr9H,OAAOiuC,YAKlB,SAAS2uF,IACL,IAAI4C,EAAcx/H,OAAOkuC,WACrBuxF,EAAgB/gI,SAASqiC,gBAAgBR,wBAE7C,OAAOi/F,GAAeA,GADHlkI,YAAkBoD,SAASqiC,iBAAoB,EAAI0+F,EAAc7xF,U,6BC7ZxF,qDAAIrR,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,EAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAO5D0iG,GADwB,IAAItoH,IAEvB,SADLsoH,EAEQ,QAFRA,EAGS,YAHTA,EAIS,aAcTC,EAAwB,SAAUtiG,GAQlC,SAASsiG,EAAOn1H,EAAStL,GACrB,OAAOm+B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAkSlD,OA1SAq+B,EAAUojG,EAAQtiG,GAUlBsiG,EAAOvlI,UAAUirC,UAAY,aAS7Bs6F,EAAOvlI,UAAUwzB,OAAS,WACtB1vB,KAAKyrC,aACLzrC,KAAK0hI,mBAAqBhgG,aAAa1hC,KAAKgB,QAAS,CAAEgwB,SAAU,IAAMwwG,IACvExhI,KAAK+nC,kBAET05F,EAAOvlI,UAAUuvC,WAAa,WAO1B,GANIzrC,KAAKk2F,UACLrgE,YAAS,CAAC71B,KAAKgB,SAAUhB,KAAKk2F,SAASv5F,MAAM,MAE7CqD,KAAK2hI,WACL3hI,KAAKgB,QAAQg1B,UAAUjN,IAAIy4G,IAE1BliI,eAAeA,eAAuC,iBAAzBU,KAAK66B,gBAAqC,CACxE,GAAI76B,KAAK0qD,QAAS,CACd,IAAIk3E,EAAe5hI,KAAKmzG,oBAAuBh4D,IAAmBI,SAASv7C,KAAK0qD,SAAW1qD,KAAK0qD,QAChG1qD,KAAKgB,QAAQoB,UAAYw/H,EAE7B5hI,KAAK6hI,aAEL7hI,KAAK2mC,WACL3mC,KAAKgB,QAAQg1B,UAAUjN,IAAIy4G,GAE3BxhI,KAAKsxG,SACLtxG,KAAK8hI,cAAc9hI,KAAKsxG,UAGxBtxG,KAAKk0C,cAGbutF,EAAOvlI,UAAU4lI,cAAgB,SAAUxwB,GACvCtxG,KAAKgB,QAAQswG,SAAWA,GAE5BmwB,EAAOvlI,UAAU2lI,WAAa,WAC1B,GAAI7hI,KAAKkyG,QAAS,CACd,IAAInxC,EAAO/gE,KAAKmB,cAAc,OAAQ,CAAEktB,UAAW,cAAgBruB,KAAKkyG,UACnElyG,KAAKgB,QAAQq1F,YAAYhqE,QAI1B00C,EAAK/qC,UAAUjN,IAAI,UAAY/oB,KAAK+hI,aAAatqH,eACvB,QAAtBzX,KAAK+hI,cAAgD,WAAtB/hI,KAAK+hI,cACpC/hI,KAAKgB,QAAQg1B,UAAUjN,IAAI,KAAO/oB,KAAK+hI,aAAatqH,cAAgB,cALxEzX,KAAKgB,QAAQg1B,UAAUjN,IAAIy4G,GAQ/B,IAAI/tG,EAAOzzB,KAAKgB,QAAQstB,WAAW,IAC/BmF,GAA+B,SAAtBzzB,KAAK+hI,cAAiD,QAAtB/hI,KAAK+hI,aAI9C/hI,KAAKgB,QAAQgB,YAAY++D,GAHzB/gE,KAAKgB,QAAQ61B,aAAakqC,EAAMttC,KAO5CguG,EAAOvlI,UAAUg4C,WAAa,WACtBl0C,KAAKgiI,UACLp5G,IAAaG,IAAI/oB,KAAKgB,QAAS,QAAShB,KAAKiiI,gBAAiBjiI,OAGtEyhI,EAAOvlI,UAAUgmI,aAAe,WACxBliI,KAAKgiI,UACLp5G,IAAaa,OAAOzpB,KAAKgB,QAAS,QAAShB,KAAKiiI,kBAGxDR,EAAOvlI,UAAU+lI,gBAAkB,WAC3BjiI,KAAKgB,QAAQg1B,UAAUzD,SAAS,YAChCvyB,KAAKgB,QAAQg1B,UAAUvM,OAAO,YAG9BzpB,KAAKgB,QAAQg1B,UAAUjN,IAAI,aAQnC04G,EAAOvlI,UAAUif,QAAU,WACvB,IAAI6a,EAAY,CAACwrG,EAAsBA,EAAkBA,EAAsB,YAAa,SAAU,WAClG,YAAa,SAAU,YAAa,UAAW,WAAY,WAAY,UACvE,iBAAkB,qBAClBxhI,KAAKk2F,WACLlgE,EAAYA,EAAUlE,OAAO9xB,KAAKk2F,SAASv5F,MAAM,OAErDwiC,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,MAC9Bo2B,aAAY,CAACp2B,KAAKgB,SAAUg1B,GACvBh2B,KAAKgB,QAAQmuB,aAAa,UAC3BnvB,KAAKgB,QAAQq/B,gBAAgB,SAE7BrgC,KAAKsxG,UACLtxG,KAAKgB,QAAQq/B,gBAAgB,YAE7BrgC,KAAK0qD,UACL1qD,KAAKgB,QAAQoB,UAAYpC,KAAKgB,QAAQoB,UAAU1F,QAAQsD,KAAK0qD,QAAS,KAE1E,IAAIqW,EAAO/gE,KAAKgB,QAAQsC,cAAc,mBAClCy9D,GACAlwC,YAAOkwC,GAEX/gE,KAAKkiI,eACDjgG,KACAjiC,KAAK0hI,sBASbD,EAAOvlI,UAAU2+B,cAAgB,WAC7B,MAAO,OAQX4mG,EAAOvlI,UAAUysC,eAAiB,WAC9B,OAAO3oC,KAAKqpC,aAAa,KAQ7Bo4F,EAAOr5F,OAAS,aAWhBq5F,EAAOvlI,UAAU29B,kBAAoB,SAAU2H,EAASC,GAEpD,IADA,IAAIs/B,EAAO/gE,KAAKgB,QAAQsC,cAAc,mBAC7BtF,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,YACGwjC,EAAQmgG,UACR3hI,KAAKgB,QAAQg1B,UAAUjN,IAAIy4G,GAG3BxhI,KAAKgB,QAAQg1B,UAAUvM,OAAO+3G,GAElC,MACJ,IAAK,WACDxhI,KAAK8hI,cAActgG,EAAQ8vE,UAC3B,MACJ,IAAK,UACGvwC,EACIv/B,EAAQ0wE,SACRnxC,EAAK1yC,UAAY,cAAgBmT,EAAQ0wE,QACrClyG,KAAKgB,QAAQq1F,YAAYhqE,SACC,SAAtBrsB,KAAK+hI,aACLhhE,EAAK/qC,UAAUjN,IAAI,eAGnBg4C,EAAK/qC,UAAUjN,IAAI,kBAK3B8H,YAAOkwC,GAIX/gE,KAAK6hI,aAET,MAEJ,IAAK,eACDzrG,aAAY,CAACp2B,KAAKgB,SAAU,CAAC,iBAAkB,uBAC/C+/D,EAAO/gE,KAAKgB,QAAQsC,cAAc,qBAE9ButB,YAAOkwC,GAEX/gE,KAAK6hI,aACL,MACJ,IAAK,WACGpgG,EAAQy0D,UACR9/D,aAAY,CAACp2B,KAAKgB,SAAUygC,EAAQy0D,SAASv5F,MAAM,MAEnD6kC,EAAQ00D,UACRrgE,YAAS,CAAC71B,KAAKgB,SAAUwgC,EAAQ00D,SAASv5F,MAAM,MAEpD,MACJ,IAAK,YACG6kC,EAAQmF,UACR3mC,KAAKgB,QAAQg1B,UAAUjN,IAAIy4G,GAG3BxhI,KAAKgB,QAAQg1B,UAAUvM,OAAO+3G,GAElC,MACJ,IAAK,UACU5oB,YAAY54G,KAAKgB,UAExBhB,KAAKgB,QAAQg1B,UAAUvM,OAAO+3G,KAE7BliI,eAAeA,gBAAeU,KAAK6K,kBAA6C,iBAAzB7K,KAAK66B,mBACzD76B,KAAKmzG,sBACL3xE,EAAQkpB,QAAUvP,IAAmBI,SAAS/Z,EAAQkpB,UAE1D1qD,KAAKgB,QAAQoB,UAAYo/B,EAAQkpB,QACjC1qD,KAAK6hI,cAET,MAEJ,IAAK,WACGrgG,EAAQwgG,SACRp5G,IAAaG,IAAI/oB,KAAKgB,QAAS,QAAShB,KAAKiiI,gBAAiBjiI,OAG9D4oB,IAAaa,OAAOzpB,KAAKgB,QAAS,QAAShB,KAAKiiI,iBAChD7rG,aAAY,CAACp2B,KAAKgB,SAAU,CAAC,iBAajDygI,EAAOvlI,UAAUu0D,MAAQ,WACrBzwD,KAAKgB,QAAQyvD,SASjBgxE,EAAOvlI,UAAUimI,QAAU,WACvBniI,KAAKgB,QAAQsB,SAEjBq8B,EAAW,CACP3B,YAAS,SACVykG,EAAOvlI,UAAW,oBAAgB,GACrCyiC,EAAW,CACP3B,YAAS,KACVykG,EAAOvlI,UAAW,eAAW,GAChCyiC,EAAW,CACP3B,aAAS,IACVykG,EAAOvlI,UAAW,gBAAY,GACjCyiC,EAAW,CACP3B,aAAS,IACVykG,EAAOvlI,UAAW,iBAAa,GAClCyiC,EAAW,CACP3B,YAAS,KACVykG,EAAOvlI,UAAW,gBAAY,GACjCyiC,EAAW,CACP3B,YAAS,KACVykG,EAAOvlI,UAAW,eAAW,GAChCyiC,EAAW,CACP3B,aAAS,IACVykG,EAAOvlI,UAAW,gBAAY,GACjCyiC,EAAW,CACP3B,eACDykG,EAAOvlI,UAAW,cAAU,GAC/ByiC,EAAW,CACP3B,aAAS,IACVykG,EAAOvlI,UAAW,2BAAuB,GAC5CyiC,EAAW,CACPp/B,eACDkiI,EAAOvlI,UAAW,eAAW,GAChCulI,EAAS9iG,EAAW,CAChBlB,KACDgkG,GA1SqB,CA4S1Bn7F,M,8BCtVF,6CAAIjI,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,EAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAM5D60F,EAAU,QACVC,EAAc,YAIdwO,EAAoB,oBACpBC,EAAmB,mBACnBC,EAAiB,eAGjBtO,EAAa,kBACbC,EAAc,mBACdsO,EAAmB,yBACnBC,EAAkB,wBAclBC,EAAyB,SAAUtjG,GAQnC,SAASsjG,EAAQn2H,EAAStL,GACtB,OAAOm+B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAyblD,OAjcAq+B,EAAUokG,EAAStjG,GAgBnBsjG,EAAQvmI,UAAUirC,UAAY,WAC1BnnC,KAAKq0H,QAAUhuG,IAAQ2B,KAAK5N,KAC5Bpa,KAAKs0H,aAAgC,YAAjBt0H,KAAKq0H,QACzBr0H,KAAKknB,SAAWb,IAAQa,SACxBlnB,KAAKu0H,YAAa,EAClB,IAAIvzH,EAAUhB,KAAKgB,QACnBhB,KAAKw0H,QAA2B,SAAjBx0H,KAAKq0H,SAAuC,SAAjBr0H,KAAKq0H,QAC/Cr0H,KAAKyrC,aACc,KAAfzqC,EAAQyY,KACRzY,EAAQyY,GAAKha,YAAY,WACzBO,KAAKy0H,UAAW,GAEpBzzH,EAAQgzB,MAAMygB,QAAU,QACpBz0C,KAAK2mC,WACL3lC,EAAQg1B,UAAUjN,IAAI4qG,IAS9B8O,EAAQvmI,UAAUwzB,OAAS,WACvB1vB,KAAK00H,YAAc,IAAI19E,IAAMh3C,KAAKgB,QAAS,CAAE2vD,OAAQ3wD,KAAK20H,aAAax4H,KAAK6D,MAAO40H,MAAO50H,KAAK60H,aAAa14H,KAAK6D,QACjH4oB,IAAaG,IAAI/oB,KAAK80H,UAAW,SAAU90H,KAAK0iI,cAAe1iI,MAC1DA,KAAKknB,UAINlnB,KAAKgB,QAAQg1B,UAAUjN,IAAIirG,GAC3Bh0H,KAAK2iI,cAAc3iI,KAAKgB,UAJxBhB,KAAKi1H,cAAcj1H,KAAKgB,SAM5BhB,KAAKk1H,kBAETuN,EAAQvmI,UAAUg5H,eAAiB,WAC3B93H,YAAkB4C,KAAKo1H,aAAep1H,KAAKo1H,WAAa,GACxDp1H,KAAKo1H,WAAap1H,KAAK80H,UAAUr+F,YACjCz2B,KAAKu0H,YAAa,GAGlBv0H,KAAKu0H,YAAa,GAG1BkO,EAAQvmI,UAAUuvC,WAAa,WAC3B,IAAIqpF,EAAY90H,KAAKmB,cAAc,MAAO,CAAEktB,UAtF/B,sBAuFTu0G,EAAY5iI,KAAKmB,cAAc,MAAO,CAAEktB,UAxF/B,kBAyFbu0G,EAAUhtG,aAAa,WAAY,MAGnC,IAFA,IAAItE,EAAMtxB,KAAKgB,QAENhD,EAAK,EAAGw3H,EADF,GAAGn0H,MAAMC,KAAKgwB,EAAIR,UACO9yB,EAAKw3H,EAAW34H,OAAQmB,IAAM,CAClE,IAAIy3H,EAAQD,EAAWx3H,GACvB82H,EAAU9yH,YAAYyzH,GAE1BmN,EAAU5gI,YAAY8yH,GACtBxjG,EAAItvB,YAAY4gI,GAChBA,EAAU5uG,MAAMsmB,UAAY,SAC5Bt6C,KAAK80H,UAAY8N,EACjB5iI,KAAK01H,YAAcZ,GAEvB2N,EAAQvmI,UAAUysC,eAAiB,WAE/B,OAAO3oC,KAAKqpC,aADI,CAAC,gBASrBo5F,EAAQvmI,UAAU2+B,cAAgB,WAC9B,MAAO,WAOX4nG,EAAQvmI,UAAUif,QAAU,WACxB,IAAImW,EAAMtxB,KAAKgB,QACfswB,EAAI0C,MAAMygB,QAAU,GACpBnjB,EAAI0E,UAAUvM,OA9HP,aA+HP6H,EAAI0E,UAAUvM,OAAOuqG,GACrB,IAAIqC,EAAM9kG,aAAU,MAAQD,EAAI7X,GAAK,QAAU6oH,EAAgBhxG,GAC3DuxG,EAAUtxG,aAAU,IAAM0iG,EAAa3iG,GAC3C,GAAGjwB,MAAMC,KAAKuhI,GAAS7jI,SAAQ,SAAUsyB,GACrCT,YAAOS,MAEX,IAAK,IAAItzB,EAAK,EAAGuF,EAAK,GAAGlC,MAAMC,KAAKtB,KAAK01H,YAAY5kG,UAAW9yB,EAAKuF,EAAG1G,OAAQmB,IAAM,CAClF,IAAIqF,EAAOE,EAAGvF,GACdszB,EAAItvB,YAAYqB,GAEhBrD,KAAKy0H,UACLz0H,KAAKgB,QAAQq/B,gBAAgB,MAEjCxP,YAAO7wB,KAAK80H,WACRuB,EAAIx5H,OAAS,IACbg0B,YAAOwlG,EAAI,IACNj5H,YAAkBi5H,EAAI,KACvBxlG,YAAOwlG,EAAI,KAGnBztG,IAAaa,OAAOzpB,KAAK80H,UAAW,SAAU90H,KAAK0iI,eACnD1iI,KAAK00H,YAAYv5G,UACjBnb,KAAK00H,YAAc,KACnBv1F,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,OASlCyiI,EAAQvmI,UAAU25H,QAAU,SAAUr5H,GAClC,IAAIsmI,EAAUvxG,aAAU,gCAA2CvxB,KAAKgB,SACpExE,EACAwD,KAAKgB,QAAQg1B,UAAUjN,IAAI6qG,GAG3B5zH,KAAKgB,QAAQg1B,UAAUvM,OAAOmqG,GAElC,GAAGvyH,MAAMC,KAAKwhI,GAAS9jI,SAAQ,SAAU64B,GACrCA,EAAGjC,aAAa,WAAap5B,EAAc,KAAN,SAG7CimI,EAAQvmI,UAAUymI,cAAgB,SAAU3hI,GACxC,IAAIyY,EAAKzY,EAAQyY,GAAGqY,OAAO,QACvBixG,EAAkB/iI,KAAKmB,cAAc,MAAO,CAAEktB,UAAW4lG,EAAc,IAAMsO,IAC7ES,EAAW,KAAOhiI,EAAQyY,GAAGqY,OAAO,wCACpCmxG,EAAWjjI,KAAKmB,cAAc,MAAO,CAAEsY,GAAIA,EAAGqY,OAAO,UAAWzD,UAAW20G,IAC3E9M,EAAUl2H,KAAKmB,cAAc,MAAO,CAAEktB,UAAW+zG,0CACrDa,EAASjhI,YAAYk0H,GACrB,IAAIgN,EAAUljI,KAAKmB,cAAc,MAAO,CAAEktB,UAAW4lG,EAAc,IAAMuO,IACrExiI,KAAKw0H,SACLyO,EAASjtG,UAAUjN,IAAI,cAE3B/nB,EAAQgB,YAAY+gI,GACpB/hI,EAAQgB,YAAYihI,GACpBjiI,EAAQ61B,aAAaqsG,EAASliI,EAAQ8iG,YACtC9jG,KAAKo2H,aAAa,CAAC6M,KAEvBR,EAAQvmI,UAAU+4H,cAAgB,SAAUj0H,GACxC,IAAIyY,EAAKzY,EAAQyY,GAAGqY,OAAO,QACvBkxG,EAAW,KAAOhiI,EAAQyY,GAAGqY,OAAO,wCACpCukG,EAAMr2H,KAAKmB,cAAc,MAAO,CAAEsY,GAAIA,EAAGqY,OAAO,UAAWzD,UAAW20G,IAC1E3M,EAAIzgG,aAAa,gBAAiB,SAClC,IAAIsgG,EAAUl2H,KAAKmB,cAAc,MAAO,CAAEktB,UAAW+zG,0CACjDe,EAAU,KAAOniI,EAAQyY,GAAGqY,OAAO,uCACnCgkG,EAAS91H,KAAKmB,cAAc,MAAO,CAAEsY,GAAIA,EAAGqY,OAAO,SAAUzD,UAAW80G,EAAU,IAAMvP,IAC5FkC,EAAOlgG,aAAa,gBAAiB,QACrC,IAAIwtG,EAAcpjI,KAAKmB,cAAc,MAAO,CAAEktB,UAAWg0G,yCACzDvM,EAAO9zH,YAAYohI,GACnB/M,EAAIr0H,YAAYk0H,GAChBl1H,EAAQgB,YAAYq0H,GACpBr1H,EAAQ61B,aAAai/F,EAAQ90H,EAAQ8iG,YACjC9jG,KAAKw0H,UACL6B,EAAIrgG,UAAUjN,IAAI,cAClB+sG,EAAO9/F,UAAUjN,IAAI,eAEzB/oB,KAAKo2H,aAAa,CAACC,EAAKP,KAE5B2M,EAAQvmI,UAAUu6H,WAAa,SAAU51H,GACrC,IAAId,EAAQC,KACZ,GAAc,UAAVa,EAAE7D,IAAiB,CAKnBgD,KAAK22H,SAAW70H,OAAO1B,YAAW,WAH9BL,EAAM62H,YAAa,EACnB72H,EAAM82H,aAAa,GAAIh2H,EAAEo8B,QAAQ,KAIlC,OAGXwlG,EAAQvmI,UAAU46H,QAAU,SAAUj2H,GACpB,UAAVA,EAAE7D,MAGFgD,KAAK42H,WACL52H,KAAK42H,YAAa,EAGlB/1H,EAAEo8B,OAAOwzB,QAEbtwD,aAAaH,KAAK22H,YAEtB8L,EAAQvmI,UAAUk6H,aAAe,SAAU9kG,GACvC,IAAIvxB,EAAQC,KACZ,GAAGqB,MAAMC,KAAKgwB,GAAKtyB,SAAQ,SAAU64B,GACjC,IAAImf,IAAMnf,EAAI,CAAEk/F,QAASh3H,EAAMi3H,eAAe76H,KAAK4D,GAAQ8rC,iBAAkB,MAC7EhU,EAAGtO,iBAAiB,UAAWxpB,EAAM02H,WAAWt6H,KAAK4D,IACrD83B,EAAGtO,iBAAiB,QAASxpB,EAAM+2H,QAAQ36H,KAAK4D,IAChD83B,EAAGtO,iBAAiB,UAAWxpB,EAAMk3H,aAAa96H,KAAK4D,IACvD83B,EAAGtO,iBAAiB,WAAYxpB,EAAMk3H,aAAa96H,KAAK4D,IACxD83B,EAAGtO,iBAAiB,eAAe,SAAU1oB,GACzCA,EAAEyrC,oBAEN1jB,IAAaG,IAAI8O,EAAI,QAAS93B,EAAMm3H,kBAAmBn3H,OAG/D0iI,EAAQvmI,UAAU+6H,aAAe,WAC7Bv0H,cAAc1C,KAAKm3H,UAEvBsL,EAAQvmI,UAAU86H,eAAiB,SAAUn2H,GACzC,IAAId,EAAQC,KACRo3H,EAAOv2H,EAAE03C,cAActb,OAC3Bm6F,EAAOp3H,KAAKuyB,SAAS6kG,EAAMkL,GAAkBlL,EAAKtgG,kBAAoBsgG,EAKtEp3H,KAAKm3H,QAAUr1H,OAAOU,aAAY,WAF9BzC,EAAM82H,aAFM,GAEkBO,GAAM,KAIrC,KAEPqL,EAAQvmI,UAAUq2B,SAAW,SAAUjB,EAAKjD,GACxC,OAAOiD,EAAI0E,UAAUzD,SAASlE,IAElCo0G,EAAQvmI,UAAU26H,aAAe,SAAUQ,EAAWD,EAAME,GACxD,IAAI+L,EAAUrjI,KAAKgB,QACfg1B,EAAYohG,EAAKphG,UACjBA,EAAUzD,SAAS+vG,KACnBtsG,EAAYohG,EAAK9zH,cAAc,gBAAoB0yB,WAEnDh2B,KAAKuyB,SAAS8wG,EAAS1P,IAAY3zH,KAAKs0H,eACxC+C,GAAaA,IAEXr3H,KAAKuyB,SAAS8wG,EAAS1P,IAAY3zH,KAAKs0H,cAAiBt0H,KAAKw0H,QAC5Dx+F,EAAUzD,SAAS6vG,GACnBpiI,KAAKu3H,mBAAmBF,EAAW,MAAOC,GAG1Ct3H,KAAKu3H,mBAAmBF,EAAW,GAAIC,GAIvCthG,EAAUzD,SAAS8vG,GACnBriI,KAAKu3H,mBAAmBF,EAAW,MAAOC,GAG1Ct3H,KAAKu3H,mBAAmBF,EAAW,GAAIC,IAInDmL,EAAQvmI,UAAUg7H,kBAAoB,SAAUr2H,GAC5Cb,KAAK62H,aAAa72H,KAAKo1H,WAAYv0H,EAAEo8B,QAAQ,IAEjDwlG,EAAQvmI,UAAU24H,aAAe,SAAUh0H,GACvC,IACIqtC,EADAo1F,EAAWtjI,KAAK80H,UAGhB5mF,EADArtC,EAAEg4C,UAAY,EACHh4C,EAAE63C,WAA0B,GAAb73C,EAAEg4C,UAGjBh4C,EAAE63C,UAAY73C,EAAEg4C,SAE/B,IAAI37C,EAAQ,IACE,SAAV4iC,IACA,IAAIa,EAAOp5B,KAAKmwH,IAAIx6H,GAChByjC,GAAQ,EACR7+B,OAAO0+B,qBAAqBG,IAGH,SAArB9/B,EAAE04C,eACF+pF,EAAS7gG,YAAcyL,EAAWvN,EAER,UAArB9/B,EAAE04C,iBACP+pF,EAAS7gG,YAAcyL,EAAWvN,GAEtCzjC,GAAS,GACT4E,OAAOs/B,sBAAsBtB,IAGrCA,IAEJ2iG,EAAQvmI,UAAUy7H,eAAiB,SAAUC,EAAW9xF,GACrC,QAAXA,EACA9lC,KAAK80H,UAAUryF,YAAcm1F,EAG7B53H,KAAK80H,UAAUryF,YAAcm1F,GAGrC6K,EAAQvmI,UAAUq7H,mBAAqB,SAAUK,EAAW9xF,EAAQwxF,GAChE,IAAIv3H,EAAQC,KAEZ,GAAIs3H,EACAt3H,KAAK23H,eAAeC,EAAW9xF,OADnC,CAIK9lC,KAAKu0H,YACN,GAAGlzH,MAAMC,KAAKiwB,aAAU,IAAM0iG,EAAaj0H,KAAKgB,UAAUhC,SAAQ,SAAU64B,GACxE+/F,GAAa//F,EAAGpB,gBAGV,SAAVqJ,IACA,IAAI+3F,EACAzC,EACAr1H,EAAMwyB,SAASxyB,EAAMiB,QAAS2yH,IAAY5zH,EAAMu0H,cAChDuD,GAAeD,EACfxC,GAfG,KAkBHyC,EAAcD,EACdxC,EAnBG,IAqBHyC,EArBG,GAsBH/1H,OAAO0+B,qBAAqB40F,IAG5Br1H,EAAM43H,eAAevC,EAAYtvF,GACjC8xF,GAAaxC,EACbtzH,OAAOs/B,sBAAsBtB,IAGrCA,KAEJ2iG,EAAQvmI,UAAUy4H,aAAe,SAAU9zH,GACvC,IAAIywB,EAAMtxB,KAAK80H,UACX5mF,EAAWrtC,EAAE63C,UACZ14C,KAAKw0H,SAAYx0H,KAAKuyB,SAASvyB,KAAKgB,QAAS2yH,KAC9CzlF,GAAYA,GAEU,SAAtBrtC,EAAE+3C,gBACFtnB,EAAImR,WAAanR,EAAImR,WAAayL,EAEP,UAAtBrtC,EAAE+3C,kBACPtnB,EAAImR,WAAanR,EAAImR,WAAayL,IAG1Cu0F,EAAQvmI,UAAU47H,eAAiB,SAAUyL,EAAYC,GACrD,GAAIxjI,KAAKknB,SAAU,CACf,IACI+wG,GADW76H,YAAkBmmI,GAAcC,EAAgBD,GACtCjgI,cAAc,gBACnClG,YAAkBmmI,GAClBvtG,YAAUiiG,EAAW,CAACmK,GAAoB,CAACC,IAG3CrsG,YAAUiiG,EAAW,CAACoK,GAAmB,CAACD,SAI9CmB,EAAWvtG,UAAUjN,IAAI6qG,GACzB2P,EAAW3tG,aAAa,gBAAiB,QACzC2tG,EAAWljG,gBAAgB,YAC3BmjG,EAAcxtG,UAAUvM,OAAOmqG,GAC/B4P,EAAc5tG,aAAa,gBAAiB,SAC5C4tG,EAAc5tG,aAAa,WAAY,KAE3C51B,KAAKi3H,gBAETwL,EAAQvmI,UAAUwmI,cAAgB,SAAU7hI,GACxC,IAAIo8B,EAASp8B,EAAEo8B,OACXyS,EAAQzS,EAAOxG,YACf4sG,EAAUrjI,KAAKgB,QACfyiI,EAAazjI,KAAKgB,QAAQsC,cAAc,sBACxCogI,EAAc1jI,KAAKgB,QAAQsC,cAAc,uBACzCqgI,EAAc3jI,KAAKgB,QAAQsC,cAAc,IAAMk/H,GAC/CoB,EAAe5jI,KAAKgB,QAAQsC,cAAc,IAAMi/H,GAChD9/F,EAAaxF,EAAOwF,WAsBxB,GArBIA,GAAc,IACdA,GAAcA,GAEdziC,KAAKknB,YACDlnB,KAAK2mC,WAAe3mC,KAAKs0H,cAAgBt0H,KAAKw0H,UAC9CmP,EAAc3jI,KAAKgB,QAAQsC,cAAc,IAAMi/H,GAC/CqB,EAAe5jI,KAAKgB,QAAQsC,cAAc,IAAMk/H,IAGhDmB,EAAY3vG,MAAM0b,MADlBjN,EA9YK,GA+YqBA,EAAa,KAGb,OAEzBxF,EAAOuV,YAAcjrC,KAAKu3D,KAAKpvB,EAAQjN,GApZnC,GAqZLmhG,EAAa5vG,MAAM0b,MAASzS,EAAOuV,YAAcjrC,KAAKu3D,KAAKpvB,EAAQjN,GAAe,KAGlFmhG,EAAa5vG,MAAM0b,MAAQ,QAGhB,IAAfjN,GACMziC,KAAKuyB,SAAS8wG,EAAS1P,IAAY3zH,KAAKs0H,cAAiBt0H,KAAKw0H,QAChEx0H,KAAK83H,eAAe2L,EAAYC,GAGhC1jI,KAAK83H,eAAe4L,EAAaD,QAGpC,GAAIl8H,KAAKu3D,KAAKpvB,EAAQjN,EAAa,KAAOxF,EAAOuV,aAC5CxyC,KAAKuyB,SAAS8wG,EAAS1P,IAAY3zH,KAAKs0H,cAAiBt0H,KAAKw0H,QAChEx0H,KAAK83H,eAAe4L,EAAaD,GAGjCzjI,KAAK83H,eAAe2L,EAAYC,OAGnC,CACD,IAAIpL,EAASt4H,KAAKgB,QAAQsC,cAAc,2BACpCg1H,IACAA,EAAOtiG,UAAUvM,OAAOmqG,GACxB0E,EAAO1iG,aAAa,gBAAiB,SACrC0iG,EAAO1iG,aAAa,WAAY,QAY5C6sG,EAAQvmI,UAAU29B,kBAAoB,SAAU2H,EAASC,GACrD,IAAK,IAAIzjC,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,aACDgC,KAAKk1H,iBACL,MACJ,IAAK,YACD1zF,EAAQmF,UAAY3mC,KAAKgB,QAAQg1B,UAAUjN,IAAI4qG,GAAW3zH,KAAKgB,QAAQg1B,UAAUvM,OAAOkqG,MAKxGh1F,EAAW,CACP3B,YAAS,OACVylG,EAAQvmI,UAAW,kBAAc,GACpCumI,EAAU9jG,EAAW,CACjBlB,KACDglG,GAjcsB,CAmc3Bn8F,M,6BCrfF,yGAkBIu9F,EAA8B,WAO9B,SAASA,EAAatjI,EAAQw/D,GAC1B,IAAIhgE,EAAQC,KACZA,KAAK8jI,OAAS,EACd9jI,KAAK+jI,UAAY,EACjB/jI,KAAKgkI,YAAa,EAClBhkI,KAAK4tC,kBAAmB,EAExB5tC,KAAKurB,OAAS,SAAU1qB,GACpB,IAAIo5D,EAAOl6D,EAAMQ,OACb08B,EAASl9B,EAAMyzC,UAAUtH,mBACzB4rD,EAAYn6B,aAAa1gC,EAAQ,gBACrC,IAAMg9B,EAAK6C,kBAAmB7C,EAAKguC,gBAAoB7qG,YAAkB06F,IAClEA,EAAU7oE,uBAAuB,oBAAoBpyB,OAAS,EACjE,OAAO,EAEX,IAAIonI,EAAgBlkI,EAAMQ,OAAOY,cAAc,MAAO,CAAEktB,UAAW,gDAC/DrtB,EAAUi8B,EAAOjH,UAAUzD,SAAS,gBAAkB0K,EAAS66D,EACnE,IAAK92F,IAAai5D,EAAK6C,iBAAmB97D,EAAQg1B,UAAUzD,SAAS,uBACjE,OAAO,EAEX,IAEI4sC,EAFAxvB,EAAS3uC,EAAQ4uC,aACjBs0F,EAAgBljI,EAAQsC,cAAc,qBAAuBtC,EAAQsC,cAAc,2BAEvF,GAAI4gI,EAAe,CAQf,GANI/kE,EADAn+D,EAAQsC,cAAc,2BAChB22D,EAAKkqE,mCAAmCD,EAAc9uC,UAAU/oE,OAAQ4tC,EAAKF,SAG7EE,EAAKmqE,eAAeF,EAAc/0G,aAAa,iBAEzDpvB,EAAM05D,OAAS0F,EACXp/D,EAAM05D,OAAO4qE,WACb,OAAO,EAEXJ,EAAcruG,aAAa,eAAgB71B,EAAM05D,OAAOh+D,KAE5D,GAAI0jE,IAAQ/hE,YAAkB+hE,EAAIgqC,gBAC9B,GAAK/rG,YAAkB+hE,EAAIgqC,gBAMvB86B,EAAc7hI,UAAY+8D,EAAIgqC,mBANU,CACxC,IAAIrwB,EAAW7e,EAAKqqE,sBAAsBnlE,EAAI3F,OAC1C76D,EAASwgE,EAAIkrC,mBAAJlrC,CAAwB7gE,YAAO,CAAE,MAASw6E,GAAY3Z,GAAMlF,EAAM,kBAC/EkE,YAAe8lE,EAAetlI,QAOlCslI,EAAc7hI,UAAY8hI,EACtB/kE,EAAIpC,WAAa/7D,EAAQ81B,kBAAkB10B,UAMnD,OAJA6hI,EAAcjwG,MAAM0b,MAAQ1uC,EAAQy1B,YAAc,KAClDwtG,EAAcjwG,MAAM2b,OAAS3uC,EAAQ4uC,aAAe,KACpDq0F,EAAcjwG,MAAMuwG,YAAc50F,EAAS,GAAGxiC,WAAa,KAC3D8sD,EAAKj5D,QAAQgB,YAAYiiI,GAClBA,GAEXjkI,KAAKwuC,UAAY,SAAU3tC,GACvB,IAAIo5D,EAAOl6D,EAAMQ,OACjB05D,EAAKj5D,QAAQsC,cAAc,gBAAgB0wB,MAAMygB,QAAU,OAC3DwlB,EAAKjgD,OAAO+M,KAAwB,CAAEkW,OAAQl9B,EAAMyzC,UAAUtH,mBAAoButB,OAAQ15D,EAAM05D,OAAQ3yC,MAAOjmB,EAAEimB,SAErH9mB,KAAKswC,KAAO,SAAUzvC,GAClB,IAAIo5D,EAAOl6D,EAAMQ,OACb08B,EAASp8B,EAAEo8B,OACf,GAAIA,EAAQ,CACR,IAAIrF,EAAU4sG,YAAWvnG,EAAQ,WAC7BqqE,EAAevnG,EAAMQ,OAAOS,QAAQsC,cAAc,sBACtD,KAAKs0B,GAAWA,EAAQzI,aAAa,QAAU8qC,EAAKj5D,QAAQmuB,aAAa,SACrE6G,YAAUsxE,EAAc,CAAC,mBAAoB,CAAC,iBAC1CrtC,EAAK6C,kBACL7C,EAAKj5D,QAAQsC,cAAc,qBAAqB0wB,MAAMygB,QAAU,OAChEwlB,EAAKj5D,QAAQsC,cAAc,uBAAuB0wB,MAAMygB,QAAU,SAEjEwlB,EAAKe,cAAc8B,iBACpB,OAGR7C,EAAKjgD,OAAO+M,KAAmB,CAAEkW,OAAQp8B,EAAEo8B,OAAQw8B,OAAQ15D,EAAM05D,OAAQ3yC,MAAOjmB,EAAEimB,UAG1F9mB,KAAKiyC,SAAW,SAAUpxC,GACtB,IACIkiB,EADAk3C,EAAOl6D,EAAMQ,OAEjB05D,EAAKj5D,QAAQsC,cAAc,gBAAgB0wB,MAAMygB,QAAU,SACrDkpB,aAAa98D,EAAEo8B,OAAQ,kBAAoB0gC,aAAa98D,EAAEo8B,OAAQ,qBAClEg9B,EAAK6C,iBAAmBa,aAAa98D,EAAEo8B,OAAQ,kBAC/Cp8B,EAAE0qB,OAAO4D,aAAa,iBAAmBwuC,aAAa98D,EAAEo8B,OAAQ,sBAClExT,aAAO5oB,EAAE0qB,QACTxI,GAAS,GAEbk3C,EAAKjgD,OAAO+M,KAAuB,CAAEkW,OAAQp8B,EAAEo8B,OAAQnW,MAAOjmB,EAAEimB,MAAO2yC,OAAQ15D,EAAM05D,OAAQ12C,OAAQA,KAEzG/iB,KAAK6zC,KAAO,SAAUhzC,GAClB,IAAIo5D,EAAOl6D,EAAMQ,OACb9E,EAAMoF,EAAE2zC,eAAerlB,aAAa,gBACpCyI,EAAU4sG,YAAW3jI,EAAEo8B,OAAQ,WACnCxT,aAAO5oB,EAAE2zC,gBACL5c,GAAWA,EAAQzI,aAAa,QAAU8qC,EAAKj5D,QAAQmuB,aAAa,QAClE8qC,EAAK6C,kBAAmB7C,EAAKguC,eAGnChuC,EAAKjgD,OAAO+M,KAAmB,CAAEkW,OAAQp8B,EAAEo8B,OAAQxhC,IAAKA,EAAK+4C,eAAgB3zC,EAAE2zC,kBAEnFx0C,KAAKO,OAASA,EACdP,KAAK+/D,eAAiBA,EACtB//D,KAAKykI,YAAczkI,KAAK+/D,eAAeE,WAAW,eAClDjgE,KAAK0kI,aAAe1kI,KAAK+/D,eAAeE,WAAW,gBAC/CjgE,KAAKO,OAAO44B,cAGXn5B,KAAKO,OAAO6lE,4BACTpmE,KAAKO,OAAOokI,6BAAgC3kI,KAAKO,OAAOmqE,8BAC5D1qE,KAAKO,OAAO+Y,GAAGyN,KAAgC/mB,KAAK4kI,WAAY5kI,MAEpEA,KAAKO,OAAO+Y,GAAGyN,KAA8B/mB,KAAK6kI,cAAe7kI,MACjEA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAK8kI,oBAAqB9kI,MACvB,aAAjCA,KAAKO,OAAO2jG,kBACZlkG,KAAKO,OAAO+Y,GAAGyN,KAAiB/mB,KAAK+kI,8BAA+B/kI,OAgnB5E,OAxmBA6jI,EAAa3nI,UAAU8oI,YAAc,WACjC,IAAI9jI,EAAMlB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM+4D,KAC9ChkC,EAAqB,MAAPn3B,EAClBA,EAAMm3B,EAAan3B,EAAMlB,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,iBACvE,IAAIqoF,EAAWr+E,EAAan3B,EAAIoC,cAAc,IAAM+4D,KAChDr8D,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAWguC,MAClDr8D,KAAKilI,iBAAiB/jI,GACtBA,EAAIc,YAAY00G,GAChB12G,KAAKklI,SAAShkI,GACTm3B,GACDr4B,KAAKO,OAAOS,QAAQgB,YAAYd,IAQxC2iI,EAAa3nI,UAAUipI,YAAc,WACjC,IAAIC,EAAYplI,KAAKqlI,WACrBD,EAAUpjI,YAAYhC,KAAKslI,qBAC3BtlI,KAAKulI,SAASH,EAAU9hI,cAAc,IAAM+4D,MACvCr8D,KAAKO,OAAOgkE,oBAAuBvkE,KAAKO,OAAOmqE,8BAAiC1qE,KAAKO,OAAOokI,8BAC7F3kI,KAAKwlI,uBACLxlI,KAAKylI,wBAETzlI,KAAKO,OAAOyZ,OAAO+M,KAAwB,CAAE+hD,KAAM9oE,KAAK8oE,KAAM7oE,KAAM,CAAEokE,SAAUrkE,KAAKO,OAAO+jE,mBAOhGu/D,EAAa3nI,UAAUmpI,SAAW,WAC9B,OAAOrlI,KAAK0lI,aAQhB7B,EAAa3nI,UAAUgpI,SAAW,SAAUS,GACxC3lI,KAAK0lI,YAAcC,GAOvB9B,EAAa3nI,UAAU0pI,SAAW,WAC9B,OAAO5lI,KAAK6lI,aAQhBhC,EAAa3nI,UAAUqpI,SAAW,SAAU56E,GACxC3qD,KAAK6lI,YAAcl7E,GAOvBk5E,EAAa3nI,UAAU4pI,YAAc,WACjC,OAAO9lI,KAAK+lI,UAQhBlC,EAAa3nI,UAAU8pI,YAAc,SAAUv6E,GAC3C,OAAOzrD,KAAK+lI,SAAWt6E,GAO3Bo4E,EAAa3nI,UAAU+pI,QAAU,WAE7B,OADYjmI,KAAK4lI,WACJM,MAAMp9D,MAQvB+6D,EAAa3nI,UAAUopI,kBAAoB,WACvC,IAAI36E,EAAQ3qD,KAAKmmI,cACbzvB,EAAW12G,KAAKqlI,WAAW/hI,cAAc,IAAM+4D,KAEnD,OADAq6C,EAAS10G,YAAY2oD,GACd+rD,GAWXmtB,EAAa3nI,UAAUkqI,aAAe,SAAUC,EAAU/7D,QACrC,IAAb+7D,IAAuBA,EAAW,MACtC,IAAIpsE,EAAOj6D,KAAKO,OACZ8jE,EAAWpK,EAAKqK,eAChBtkE,KAAK4lI,aAAevhE,GACpB56C,aAAOzpB,KAAK4lI,YAEhB,IAAIj7E,EAAQ3qD,KAAKO,OAAOY,cAAc,QAAS,CAAEktB,UAAWguC,IAAgBtpC,MAAO,CAAEuzG,YAAa,SAAUxkC,KAAM,UAC9GykC,EAAUj8D,IAAwBrQ,EAAKsQ,qBAAuB,cAAgB,gBAC9Ei8D,EAAgBxmI,KAAKymI,oBAAoBF,GACzCG,EAAQF,EAAcE,MACtBl7E,EAAQxrD,KAAKO,OAAOY,cAAck7D,IAAgB,CAAEhuC,UAAWruB,KAAKO,OAAOisE,WAAa,GAAK,WACjGxsE,KAAKizE,QAAUjzE,KAAKO,OAAOY,cAAc,UAAW,CAAEiB,UAAWpC,KAAKO,OAAOS,QAAQyY,GAAK,gBAAiB4U,UAAW,WAKtH,IAJA,IAEIs4G,EAFAl7E,EAAWzrD,KAAKO,OAAOY,cAAck7D,KACrCuqE,EAAU5mI,KAAKO,OAAOY,cAAc,MAEpC2nE,EAAO9oE,KAAK8oE,KAAO09D,EAAc19D,KAC5BlsE,EAAI,EAAG+E,EAAMmnE,EAAKjsE,OAAQD,EAAI+E,EAAK/E,IACxC,IAAK,IAAIuL,EAAI,EAAG0+H,EAAQ/9D,EAAKlsE,GAAG0jE,MAAMzjE,OAAQsL,EAAI0+H,EAAO1+H,IACrDw+H,EAAW3mI,KAAKO,OAAOY,cAAc,MACrCylI,EAAQ5kI,YAAY2kI,GAa5B,OAVI1sE,EAAK+tC,gBAAkB/tC,EAAK6tC,cAAgB7tC,EAAKguC,gBACjDt9C,EAAM30B,UAAUjN,IAAI,gBAExB/oB,KAAK8mI,eAAer7E,GACpBD,EAAMxpD,YAAY4kI,GAClBj8E,EAAM3oD,YAAYhC,KAAKgmI,YAAYv6E,IACnCd,EAAM3oD,YAAY0kI,GAClB/7E,EAAM3oD,YAAYwpD,GAClBb,EAAM3oD,YAAYhC,KAAKizE,SACvBjzE,KAAKykI,YAAYhS,WAAW9nE,EAAO,CAAE8oE,SAAUx5D,EAAKyK,aAAa7nE,OAAOsQ,aACjEw9C,GAOXk5E,EAAa3nI,UAAUiqI,YAAc,SAAUE,GAE3C,YADiB,IAAbA,IAAuBA,EAAW,MAC/BrmI,KAAKomI,aAAaC,IAE7BxC,EAAa3nI,UAAUuqI,oBAAsB,SAAUn8D,GACnD,IAAIrQ,EAAOj6D,KAAKO,OACZia,EAAQ,EACRmwD,EAAa1Q,EAAKiQ,gBAClBnQ,EAAUE,EAAKyK,aACfgiE,EAAQ1mI,KAAKO,OAAOY,cAAc,SAClC4lI,EAAY/mI,KAAKO,OAAOY,cAAc,KAAM,CAAEktB,UAAW,mBACzD24G,EAAc,IAAI/3B,IAAYjvG,KAAK+/D,eAAgBwO,IAAS4O,OAAQljB,GACxE+sE,EAAYhmI,QAAU+lI,EACtB,IACIE,EADAn+D,EAAO,GAEX9oE,KAAKknI,SAAWrhE,aAAmB5L,EAAKF,SACxC,IAAK,IAAIn9D,EAAI,EAAG+E,EAAM3B,KAAKknI,SAAUtqI,EAAI+E,EAAK/E,IAC1CksE,EAAKlsE,GAAKoD,KAAK2sG,YAAY/vG,GAC3BksE,EAAKlsE,GAAG0jE,MAAQ,GAED,UAAfqK,IACA7B,EAAO9oE,KAAK4sG,cAAc9jC,IAE9BA,EAAO9oE,KAAKmnI,eAAer+D,EAAMwB,GACd,UAAfK,IACAnwD,EAAQ,EACRsuD,EAAO9oE,KAAK4sG,cAAc9jC,IAE9B,IAAIvF,EAAUvjE,KAAKO,OAAOgkE,mBAC1B,GAAIvkE,KAAKO,OAAOijE,iBAAmBxjE,KAAKO,OAAO+jE,gBAAkBwE,EAAK,GAAGxI,MAAM9lD,GAAQ,CACnF,IAAI4sH,EAAgBt+D,EAAK,GAAGxI,MAAM9lD,GAAOi/C,OAAOmS,qBAC1B,YAAlBw7D,GAAgCz8D,IAAetO,KAAsB+qE,IAAkB/qE,IACpE,UAAfsO,EACA7B,EAAK,GAAGxI,MAAMg9C,MAGdx0C,EAAK,GAAGxI,MAAMx2C,QAGZy5C,GAAW6jE,IAAkB/qE,IAGf,UAAfsO,GAA0By8D,IAAkB/qE,MACjDyM,EAAK,GAAGxI,MAAMwI,EAAK,GAAGxI,MAAMzjE,OAAS,GAAG48D,OAAO4tE,OAAS,SAHxDv+D,EAAK,GAAGxI,MAAM,GAAG7G,OAAO4tE,OAASD,IAAkB/qE,IAAsB,OAAS,QAM1F,IAASz/D,EAAI,EAAG+E,EAAM3B,KAAKknI,SAAUtqI,EAAI+E,EAAK/E,IAC1CqqI,EAAYD,EAAYt3G,OAAOo5C,EAAKlsE,GAAIm9D,GACpC/5D,KAAKO,OAAOg+D,WAAa0oE,EAAU3jI,cAAc,mBACjD2jI,EAAUjzG,MAAM2b,OAAS3vC,KAAKO,OAAOg+D,UAAY,MAErDmoE,EAAM1kI,YAAYilI,GAMtB,MAJoB,CAChBP,MAAOA,EACP59D,KAAMA,IAId+6D,EAAa3nI,UAAU4qI,eAAiB,SAAUr7E,GAC9C,IACI0T,EADA0tC,EAAO7sG,KAAKO,OAAOmkE,aAEnB4iE,EAAUtnI,KAAKO,OAAOgnI,yBAO1B,GANIvnI,KAAKO,OAAO6lE,4BAA8BpmE,KAAKO,OAAOgkE,oBACnDvkE,KAAKO,OAAOwpE,cAAcy9D,YAC7B36B,EAAOvuG,YAAO,GAAI0B,KAAKO,OAAOmkE,eACzB5qD,OAAO,EAAG9Z,KAAKO,OAAOgkE,oBAE/B9Y,EAAShyC,GAAKzZ,KAAKO,OAAOS,QAAQyY,GAAK4iD,IACnCr8D,KAAKO,OAAO0nG,cACZ,IAAK,IAAIrrG,EAAI,EAAG+E,EAAM3B,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAQD,EAAI+E,EAAK/E,IACjEoD,KAAKO,OAAO6lE,6BAAsD,IAAxBkhE,EAAQnpI,QAAQvB,KAG9DuiE,EAAMn/D,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,mBACpDo9B,EAASzpD,YAAYm9D,KAGzBn/D,KAAKO,OAAOusG,gBAAkB9sG,KAAKO,OAAOqkE,aAC1CzF,EAAMn/D,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,oBACpDo9B,EAASzpD,YAAYm9D,IAErBn/D,KAAKO,OAAOijE,iBAAmD,UAAhCxjE,KAAKO,OAAO2pE,kBAC3C/K,EAAMn/D,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,kBACpDo9B,EAASzpD,YAAYm9D,IAEzB,IAASviE,EAAI,EAAG+E,EAAMkrG,EAAKhwG,OAAQD,EAAI+E,EAAK/E,IACxCuiE,EAAMn/D,KAAKO,OAAOY,cAAc,QACR,IAApB0rG,EAAKjwG,GAAGsgE,SACRznC,aAAkB0pC,EAAK,CAAE,QAAW,SAExC1T,EAASzpD,YAAYm9D,GAMzB,OAJIn/D,KAAKO,OAAOijE,iBAAmD,UAAhCxjE,KAAKO,OAAO2pE,kBAC3C/K,EAAMn/D,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,kBACpDo9B,EAASzpD,YAAYm9D,IAElB1T,GAEXo4E,EAAa3nI,UAAU0wG,cAAgB,SAAU9jC,GAI7C,IAFA,IAAI7O,EAAOj6D,KAAKO,OACZ+mI,EAAUtnI,KAAKO,OAAOgnI,yBACjB3qI,EAAI,EAAG+E,EAAMmnE,EAAKjsE,OAAQD,EAAI+E,EAAK/E,IAAK,CAC7C,GAAIq9D,EAAKguC,cACL,IAAK,IAAIrgG,EAAI,EAAG6/H,EAAQxtE,EAAKe,cAAcjB,QAAQl9D,OAAQ+K,EAAI6/H,EAAO7/H,IAC9D5H,KAAKO,OAAO6lE,6BAAsD,IAAxBkhE,EAAQnpI,QAAQyJ,IAG9DkhE,EAAKlsE,GAAG0jE,MAAM1+D,KAAK5B,KAAK+sG,aAAa,GAAIx+B,IAASm5D,eAG1D,GAAIztE,EAAK6yC,gBAAkB7yC,EAAK2K,UAAW,CACvC,IAAI3kE,EAAO,GACXD,KAAKO,OAAOyZ,OAAO+M,KAA6B9mB,GAChD6oE,EAAKlsE,GAAG0jE,MAAM1+D,KAAK5B,KAAK+sG,aAAa9sG,EAAMsuE,IAASo5D,eAEpD1tE,EAAKuJ,iBACLsF,EAAKlsE,GAAG0jE,MAAM1+D,KAAK5B,KAAK+sG,aAAa,GAAIx+B,IAASq5D,eAG1D,OAAO9+D,GAEX+6D,EAAa3nI,UAAUirI,eAAiB,SAAUr+D,EAAMwB,GACpD,IAAIo8D,EAAQ1mI,KAAKO,OAAOsnI,kBAAoB7nI,KAAKO,OAAOsnI,iBAAiBvkI,cAAc,SACnFupG,EAAO7sG,KAAKO,OAAO6lE,2BACnBpmE,KAAKO,OAAOmkE,WAAW1kE,KAAKO,OAAOymC,mBAAqBhnC,KAAKO,OAAOw5D,QAGxE,GAFA/5D,KAAK8jI,OAAS,EACd9jI,KAAK+jI,UAAY,EACb/jI,KAAKO,OAAOunI,qBACZ,IAAK,IAAIlrI,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAC7BoD,KAAK+nI,kBAAmB,EACxBj/D,EAAO9oE,KAAKgoI,YAAYn7B,EAAKjwG,GAAIksE,EAAM,EAAS,IAANlsE,GAAS,EAAOA,IAAOiwG,EAAKhwG,OAAS,EAAI6pI,EAAOp8D,GAGzF1tE,EAAI,EAAb,IAAK,IAAW+E,EAAMkrG,EAAKhwG,OAAQD,EAAI+E,EAAK/E,IACxCoD,KAAK+jI,UAAY,EACjB/jI,KAAK+nI,kBAAmB,EACxBj/D,EAAO9oE,KAAKgoI,YAAYn7B,EAAKjwG,GAAIksE,EAAM,EAAS,IAANlsE,GAAS,EAAOA,IAAO+E,EAAM,EAAI+kI,EAAOp8D,GAEtF,OAAOxB,GAEX+6D,EAAa3nI,UAAU8rI,YAAc,SAAUn7B,EAAM/jC,EAAMtuD,EAAOytH,EAAYjE,EAAYkE,EAAWC,EAAW79D,GAC5G,IAOIxnC,EAPAslG,EAAUF,EAAY,aAAe,GACrC7jE,EAAWrkE,KAAKO,OAAO+jE,eACvB+jE,GAAgBroI,KAAKO,OAAOunI,sBACxBj7B,EAAKw3B,aAAerkI,KAAK+nI,mBAAuBl7B,EAAKw3B,YAAcrkI,KAAK+nI,iBAC5EO,GAAsBtoI,KAAKO,OAAOunI,sBAAyBj7B,EAAKw3B,aAAerkI,KAAK+nI,mBAC/El7B,EAAKw3B,YAAcrkI,KAAK+nI,iBAC7BQ,EAAYvoI,KAAKO,OAAO8mE,aAAa/jE,cAAc,uBAKvD,GAHI+gE,GAAYkkE,GAAavoI,KAAKO,OAAO6lE,6BACrCtjC,EAAOylG,EAAU9lG,YAEhBoqE,EAAK9yC,QAuBL,CACD/5D,KAAKgkI,YAAa,EAClB,IAAIhrD,EAAUh5E,KAAKwoI,WAAW37B,EAAM,GACpC,GAAI7zB,EAAS,CACT,IAAIyvD,EAAuBzoI,KAAK0oI,wBAAwB77B,EAAM,GAC1D87B,EAA2D,IAArC3oI,KAAKO,OAAOunI,uBAC7B9nI,KAAK+nI,kBAA6C,IAAzBU,GAC1BzoI,KAAK+nI,kBAAqB/uD,EAAUyvD,IAA0B,EAClEG,EAAgBvkE,GAAYrkE,KAAK6oI,oBAAoBh8B,EAAK9yC,QAASuQ,GAAW,KAC5EjG,GAAYskE,GAAwBC,IACtC9/D,EAAKtuD,GAAO8lD,MAAM1+D,KAAK,IAAIusG,IAAK,CAC5B3J,SAAUj2B,IAASu6D,cAAervE,OAAQozC,EAC1C7zB,QAASh5E,KAAK+oI,WAAW/vD,EAASyvD,EAAsB57B,EAAK9yC,QAASuQ,EAAWjG,MAI7F,GAAIrkE,KAAKO,OAAOunI,uBAAyB9nI,KAAK+nI,iBAC1C,IAAK,IAAInrI,EAAI,EAAGA,EAAIiwG,EAAK9yC,QAAQl9D,OAAQD,IACrCksE,EAAO9oE,KAAKgoI,YAAYn7B,EAAK9yC,QAAQn9D,GAAIksE,EAAMtuD,EAAQ,EAAGytH,EAAkB,IAANrrI,EAASA,IAAOiwG,EAAK9yC,QAAQl9D,OAAS,GAAMqrI,EAAWC,EAAW79D,GAGhJ,GAAItqE,KAAK+nI,iBACA,CAAInrI,EAAI,EAAb,IAAK,IAAW+E,EAAMkrG,EAAK9yC,QAAQl9D,OAAQD,EAAI+E,EAAK/E,IAAK,CACrD,IAAIosI,EAAehpI,KAAKgkI,WAAan3B,EAAK9yC,QAAQn9D,GAAGsgE,UAAYl9D,KAAKgkI,YAAsB,IAARriI,EAChFsnI,EAAmBrsI,IAAO+E,EAAM,EACpCmnE,EAAO9oE,KAAKgoI,YAAYn7B,EAAK9yC,QAAQn9D,GAAIksE,EAAMtuD,EAAQ,EAAGytH,EAAYe,EAAcC,GAAoBf,EAAWC,EAAW79D,UA/ClIxnC,GAAQA,EAAO,GAAK9iC,KAAKO,OAAOwpE,cAAcy9D,WACV,IAAjCxnI,KAAKO,OAAO2oI,cAAc,IAA0C,YAA9Br8B,EAAKjhC,uBAIxCvH,GAAYgkE,GAAkBhkE,GAAYwoC,EAAKjhC,uBAAyBtB,GAAag+D,IAH3Fx/D,EAAKtuD,GAAO8lD,MAAM1+D,KAAK5B,KAAK+sG,aAAaF,EAAMt+B,IAAS4O,OAAQn9E,KAAKknI,SAAW1sH,GAAQytH,EAAa,GAAMjE,EAAa,cAAgB,IAAOoE,EAAS5tH,EAAOxa,KAAKO,OAAO4oI,oBAAoBt8B,EAAKpxG,OAOpMuE,KAAKO,OAAOunI,qBACP9nI,KAAK8jI,OAAS9jI,KAAK+jI,UAAY/jI,KAAKO,OAAOmwG,gBAC1C7D,EAAKw3B,aAAerkI,KAAK+nI,mBAAuBl7B,EAAKw3B,YAAcrkI,KAAK+nI,kBAC1E/nI,KAAK8jI,SAGL9jI,KAAK+jI,YAIT/jI,KAAK8jI,SAgCb,OAAOh7D,GAEX+6D,EAAa3nI,UAAU2sI,oBAAsB,SAAU9uE,EAASuQ,EAAW8+D,GAEvE,IADA,IAAIvsI,EAASk9D,EAAQl9D,OACZD,EAAI,EAAGA,EAAIC,EAAQD,IACxB,GAAIm9D,EAAQn9D,GAAGm9D,QACXqvE,EAASppI,KAAK6oI,oBAAoB9uE,EAAQn9D,GAAGm9D,QAASuQ,EAAW8+D,QAEhE,GAAIrvE,EAAQn9D,GAAGgvE,uBAAyBtB,EAAW,CACpD8+D,GAAS,EACT,MAGR,OAAOA,GAEXvF,EAAa3nI,UAAUwsI,wBAA0B,SAAUvpE,EAAKkqE,GAC5D,GAAIlqE,EAAIpF,QACJ,IAAK,IAAIn9D,EAAI,EAAGA,EAAIuiE,EAAIpF,QAAQl9D,OAAQD,IACpCysI,EAAgBrpI,KAAK0oI,wBAAwBvpE,EAAIpF,QAAQn9D,GAAIysI,QAG5DlqE,EAAIklE,YACTgF,IAEJ,OAAOA,GAEXxF,EAAa3nI,UAAU6sI,WAAa,SAAU/vD,EAASyvD,EAAsB1uE,EAASuQ,EAAWjG,GAO7F,OANIA,EACA2U,EAAUh5E,KAAKspI,iBAAiBvvE,EAASuQ,EAAW,GAE/CtqE,KAAKO,OAAOunI,uBACjB9uD,EAAWh5E,KAAK+nI,iBAA0C/uD,EAAUyvD,EAAjCA,GAEhCzvD,GAEX6qD,EAAa3nI,UAAUotI,iBAAmB,SAAUvvE,EAASuQ,EAAWxP,GAEpE,IADA,IAAIj+D,EAASk9D,EAAQl9D,OACZD,EAAI,EAAGA,EAAIC,EAAQD,IACpBm9D,EAAQn9D,GAAGm9D,QACXe,EAAQ96D,KAAKspI,iBAAiBvvE,EAAQn9D,GAAGm9D,QAASuQ,EAAWxP,GAExDf,EAAQn9D,GAAGgvE,uBAAyBtB,GAAavQ,EAAQn9D,GAAGsgE,SACjEpC,IAGR,OAAOA,GAGX+oE,EAAa3nI,UAAUywG,YAAc,SAAUnyF,GAC3C,OAAO,IAAIizF,IAAI,KAEnBo2B,EAAa3nI,UAAU6wG,aAAe,SAAUtzC,EAAQ+qC,EAAUprB,EAAS/qD,EAAWs9C,EAAUmN,GAC5F,IAAIk1B,EAAM,CACN,QAAWv0C,EAAOyD,QAClB,YAAc,EACd,YAAe9/D,YAAkBq8D,EAAO0vC,gBACxC,MAAS,GACT,OAAU1vC,EACV,SAAY+qC,EACZ,QAAWprB,EACX,UAAa/qD,EACb,MAASs9C,EACT,SAAYmN,GAKhB,QAHKk1B,EAAI50B,SAAW40B,EAAI50B,QAAU,WACvB40B,EAAI50B,QAER,IAAI+0B,IAAKH,IAQpB61B,EAAa3nI,UAAU0oI,WAAa,SAAU7qE,GAK1C,IAJA,IACI4T,EACAD,EAFAzT,EAAOj6D,KAAKO,OAGZgjE,EAAUtJ,EAAKsK,mBACV38D,EAAI,EAAG2hI,EAAOxvE,EAAQl9D,OAAQ+K,EAAI2hI,EAAM3hI,IAAK,CAClD,IAAI6xD,EAASM,EAAQnyD,GAGrB,GAFA8lE,EAAMzT,EAAKuvE,yBAAyB/vE,EAAOh+D,KAC3CkyE,EAAalU,EAAOyD,QAAU,GAAK,OAC/BqG,EAAS,CACT,IAAIkmE,EAAoBzpI,KAAKO,OAAOijE,gBAAkBD,EAAU,EAAIA,EACpE,GAAImK,EAAM+7D,EACNh0G,aAAkBz1B,KAAK8lI,cAAch1G,SAAS48C,GAAM,CAAE,QAAWC,QAEhE,CACD,IAAI+7D,EAAazvE,EAAK0vE,mBAAmBrmI,cAAc,IAAM+4D,KAAwB/4D,cAAc+4D,KACnG5mC,aAAkBi0G,EAAW54G,SAAS48C,EAAM+7D,GAAoB,CAAE,QAAW97D,UAIjFl4C,aAAkBz1B,KAAK8lI,cAAch1G,SAAS48C,GAAM,CAAE,QAAWC,IAGzE3tE,KAAK4pI,aAET/F,EAAa3nI,UAAU2oI,cAAgB,WACnC7kI,KAAK4pI,aAOT/F,EAAa3nI,UAAU0tI,UAAY,WAC/B,IAAIrmE,EAAUvjE,KAAKO,OAAO+jE,eACtBulE,EAAY7pI,KAAKO,OAAO6lE,4BAA8B7C,EACtD6hE,EAAYplI,KAAKqlI,WACrBrlI,KAAKilI,iBAAiBG,GACtB,IAAIz6E,EAAQ3qD,KAAK8pI,cAAgB9pI,KAAK0lI,YAAYpiI,cAAc,IAAM+4D,KAAwB/4D,cAAc,IAAM+4D,KAC5Gr8D,KAAK4lI,WACPt7D,EAAYtqE,KAAKO,OAAO+jE,eAAiBtkE,KAAKO,OAAOgqE,qBAAuB,cAC1E,oBAAiBvuE,EAKvB,GAJI6tI,IACAl/E,EAAQ3qD,KAAKO,OAAOwpE,cAAcggE,yBAClCz/D,EAAYtqE,KAAKO,OAAOwpE,cAAcy9D,UAAY,UAAYl9D,GAE9D3f,EAAO,CACPlhC,aAAOkhC,GACPA,EAAMzzB,YAAYyzB,EAAMm5C,YACxBn5C,EAAMzzB,YAAYyzB,EAAMr8B,WAAW,IACnC,IAAIm9B,EAAWzrD,KAAKO,OAAOY,cAAck7D,KACrCmqE,EAAgBxmI,KAAKymI,oBAAoBn8D,GAC7CtqE,KAAK8oE,KAAO09D,EAAc19D,KAC1Bne,EAAM9zB,aAAa2vG,EAAcE,MAAO/7E,EAAMm5C,YAC9C9jG,KAAK8mI,eAAer7E,GACpBd,EAAM9zB,aAAa72B,KAAKgmI,YAAYv6E,GAAWd,EAAMm5C,YAChD+lC,GACD7pI,KAAKulI,SAAS56E,GAElB3qD,KAAKgqI,cAAcr/E,GACnB3qD,KAAKO,OAAOyZ,OAAO+M,IAAwB,IAC3C/mB,KAAK0kI,aAAauF,oBAClBjqI,KAAKO,OAAO2pI,wBACP3mE,GAAYvjE,KAAKO,OAAO6lE,4BAA8B7C,IACvDvjE,KAAKwlI,uBAGT,IADA,IAAI18D,EAAO,GAAGznE,MAAMC,KAAK8jI,EAAU5jI,iBAAiB,sBAC3CxD,EAAK,EAAG8mE,EAASgE,EAAM9qE,EAAK8mE,EAAOjoE,OAAQmB,IAAM,CACtD,IAAI4sD,EAAMka,EAAO9mE,GACbmsI,EAAS,GAAG9oI,MAAMC,KAAKspD,EAAI37B,uBAAuB,uBAClDk7G,EAAOttI,QACPstI,EAAOA,EAAOttI,OAAS,GAAGm5B,UAAUjN,IAAI,0BAG3Cw6C,GACDvjE,KAAKO,OAAOyZ,OAAO+M,KAAwB,CAAE+hD,KAAM9oE,KAAK8oE,KAAM7oE,KAAM,CAAEokE,SAAUd,KAEhFvjE,KAAKO,OAAO6lE,4BAA8BzI,aAAahT,EAAO0R,MAC9Dr8D,KAAKO,OAAOyZ,OAAO+M,KAAwB,CAAE+hD,KAAM9oE,KAAK8oE,KAAM7oE,KAAM,CAAEokE,UAAU,EAAOmjE,SAAS,KAEhGxnI,KAAKO,OAAO6pI,eAA2D,WAA1CpqI,KAAKO,OAAO8pI,iBAAiBC,UAC1D1qE,aAAKkJ,GAAM,KAIvB+6D,EAAa3nI,UAAU+oI,iBAAmB,SAAU/jI,GACnClB,KAAKO,OAAOw5D,QACDrwC,MAAK,SAAU+vC,GAAU,OAAQr8D,YAAkBq8D,EAAOM,YAE9E74D,EAAI80B,UAAUjN,IAAI,mBAGlB7nB,EAAI80B,UAAUvM,OAAO,oBAG7Bo6G,EAAa3nI,UAAU8tI,cAAgB,SAAUr/E,GAC7C3qD,KAAKqlI,WAAW/hI,cAAc,IAAM+4D,KAAwBr6D,YAAY2oD,IAE5Ek5E,EAAa3nI,UAAUssI,WAAa,SAAUrpE,EAAKpzC,GAC/C,GAAIozC,EAAIpF,QACJ,IAAK,IAAIn9D,EAAI,EAAG+E,EAAMw9D,EAAIpF,QAAQl9D,OAAQD,EAAI+E,EAAK/E,IAC/CmvB,EAAM/rB,KAAKwoI,WAAWrpE,EAAIpF,QAAQn9D,GAAImvB,QAItCozC,EAAIjC,SACJnxC,IAGR,OAAOA,GAEX83G,EAAa3nI,UAAUspI,qBAAuB,WAC1C,IAAIvrE,EAAOj6D,KAAKO,QACVP,KAAKO,OAAOu8D,iBAAoB98D,KAAKO,OAAO0nG,eAAiBjoG,KAAKO,OAAOy6D,cAAcuvE,gBAG7FvqI,KAAKwzC,UAAY,IAAIrJ,IAAU8vB,EAAK0vE,mBAAoB,CACpDj8F,WAAY,gBACZQ,SAAU,EACV3iB,OAAQvrB,KAAKurB,OACbijB,UAAWxuC,KAAKwuC,UAChB8B,KAAMtwC,KAAKswC,KACX2B,SAAUjyC,KAAKiyC,SACf7F,MAAO,cACPwB,iBAAkB5tC,KAAK4tC,qBAG/Bi2F,EAAa3nI,UAAUupI,qBAAuB,WAC1C,IAAIxrE,EAAOj6D,KAAKO,OAEL,IAAIyzC,IAAUimB,EAAK0vE,mBAAoB,CAC9Cv1F,OAAQ,eACRP,KAAM7zC,KAAK6zC,QAGnBgwF,EAAa3nI,UAAU4oI,oBAAsB,WACzC,IAAI/kI,EAAQC,KACRi6D,EAAOj6D,KAAKO,OAChB,GAA8B,aAA1B05D,EAAKiqC,mBAAoCjqC,EAAKuwE,UAC1CvwE,EAAK6tC,cAAiB7tC,EAAK+tC,gBAA+C,cAA7B/tC,EAAKgX,eAAe9lE,MAAwB,CAK7F,IAJA,IAAIjK,EAAM+4D,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,4BAC7Co8G,EAAexwE,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,oBACtDq8G,EAAczwE,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,mBACrDysC,EAAQ96D,KAAKO,OAAOynG,gBAAkBhoG,KAAKO,OAAOunG,aAAe,EAAI,EAChElrG,EAAI,EAAGA,EAAIk+D,EAAOl+D,IAAK,CAC5B,IAAI+tI,EAAc1wE,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,8DACrD47C,EAAgB,IAAVnP,EAAc96D,KAAKO,OAAOunG,aAAe,OAC7C,SAAiB,IAANlrG,EAAU,OAAS,SAChCg1F,EAAS33B,EAAK94D,cAAc,SAAU,CAAEktB,UAAW,gDACnD0yC,EAAO9G,EAAK94D,cAAc,OAAQ,CAAEktB,UAAW,mBAAqB47C,EAAM,kBAC9E2nB,EAAO5vF,YAAY++D,GACN,IAAI0gE,IAAO,IACjB16F,SAAS6qD,GAChBA,EAAOg5C,QAAU,SAAU/pI,GACnBA,EAAEo8B,OAAOjH,UAAUzD,SAAS,kBACzB1xB,EAAEo8B,OAAOjH,UAAUzD,SAAS,kBAC/BxyB,EAAMQ,OAAOsqI,2BAGb9qI,EAAMQ,OAAOuqI,8BAGrBH,EAAY3oI,YAAY4vF,GACxB84C,EAAY1oI,YAAY2oI,GAE5BF,EAAazoI,YAAY0oI,GACzBxpI,EAAIc,YAAYyoI,GAChBxwE,EAAKj5D,QAAQ61B,aAAa31B,EAAKlB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM+4D,WAGlEpC,EAAKuwE,SACNvwE,EAAKoN,aAAarxC,UAAUjN,IAAI,wBAI5C86G,EAAa3nI,UAAU6oI,8BAAgC,SAAU9kI,GAC7D,IAAI8qI,EAAa/qI,KAAKO,OAAOS,QAAQsC,cAAc,yBAC/B,YAAhBrD,EAAKqkC,SACDymG,EACAthH,aAAOshH,GAGP/qI,KAAK8kI,wBAIVjB,EA5uBuB,I,6BClBlC,kGAiBImH,EAA+B,WAO/B,SAASA,EAAczqI,EAAQw/D,GAC3B,IAAIhgE,EAAQC,KACZA,KAAK8oE,KAAO,GACZ9oE,KAAKirI,WAAa,GAClBjrI,KAAKkrI,YAAc,GACnBlrI,KAAKmqE,kBAAoB,GAEzBnqE,KAAKmrI,YAAc,GAEnBnrI,KAAKorI,gBAAkB,GACvBprI,KAAKqrI,UAAW,EAChBrrI,KAAKsrI,eAAiB,GACtBtrI,KAAK6zC,KAAO,SAAUhzC,GAClBd,EAAMQ,OAAOyZ,OAAO+M,KAAmB,CAAEkW,OAAQp8B,EAAEo8B,OAAQuX,eAAgB3zC,EAAE2zC,iBAC7E/qB,aAAO5oB,EAAE2zC,iBAEbx0C,KAAKurI,cAAgB,GACrBvrI,KAAKwrI,UAAW,EAChBxrI,KAAKyrI,YAAc,GACnBzrI,KAAK0rI,kBAAoB,GACzB1rI,KAAK2rI,gBAAkB,GACvB3rI,KAAK4rI,WAAY,EACjB5rI,KAAK6rI,kBAAmB,EACxB7rI,KAAK8rI,eAAgB,EACrB9rI,KAAK+rI,aAAc,EACnB/rI,KAAKgsI,YAAc,SAAU/rI,GACzB,IAAIilC,EAAMjlC,EACV,OAAO,WACH,GAAIF,EAAMQ,OAAO+jE,gBAAkBvkE,EAAMQ,OAAOqjE,qBAAsB,CAClE,IAAIqoE,EAAe,GAAG5qI,MAAMC,KAAKvB,EAAMQ,OAAO2rI,2BAA2Bj9G,uBAAuBotC,MAC5F8vE,EAAe,GAAG9qI,MAAMC,KAAKvB,EAAMQ,OAAO6rI,0BAA0Bn9G,uBAAuBotC,MAE/F,GADAt8D,EAAMsrI,WAAYY,GAAuBA,EAAapvI,SAAWsvI,EAAatvI,OAC1EkD,EAAMQ,OAAO6lE,4BAAmD,kBAArBnmE,EAAKm6F,aAAmCr6F,EAAMsrI,SAAU,CACnG,IAAIgB,EAAO,GAAGhrI,MAAMC,KAAKvB,EAAMQ,OAAO+rI,0BAA0Br9G,uBAAuBotC,MACnFkwE,EAAO,GAAGlrI,MAAMC,KAAKvB,EAAMQ,OAAOisI,yBAAyBv9G,uBAAuBotC,MACtFt8D,EAAMsrI,SAAWgB,EAAKxvI,SAAW0vI,EAAK1vI,QAI9C,GADAkD,EAAM0kI,YAAY5R,QAAQ9yH,EAAMslI,WAAW/hI,cAAc,IAAM+4D,MAAmB,IAC9Et8D,EAAMQ,OAAO44B,YAAjB,CAGA,IAAI2vC,EAAO/oE,EAAM+oE,KAAKznE,MAAM,GAa5B,GAZItB,EAAMQ,OAAO+jE,iBACbwE,EAAO7oE,EAAKokE,SAAWtkE,EAAMkrI,WAAahrI,EAAKwsI,yBAA2B1sI,EAAMQ,OAAO6qE,2BACjFrrE,EAAMmrI,aAEhBnrI,EAAMQ,OAAOyZ,OAAO+M,KAAqB,CAAE+hD,KAAMA,EAAM7oE,KAAMilC,IACzDnlC,EAAMsrI,UACNtrI,EAAMQ,OAAOwpB,QAAQhD,KAAkB,IAAI,WACnChnB,EAAMQ,OAAO6pI,eACbrqI,EAAMQ,OAAOyZ,OAAO+M,KAAqB,CAAE2lH,KAAM,gBAIzDxnG,EAAK,CACL,IAAIY,GAAUZ,EAAIk1D,aAAe,IAAI3iF,cAAgB,YACrD1X,EAAMQ,OAAOyZ,OAAO8rB,EAAQZ,GACH,cAArBjlC,EAAKm6F,cACLn6F,EAAK8iB,QAAS,EACdhjB,EAAMQ,OAAOwpB,QAAQhD,IAAuB9mB,IAGhDF,EAAMsrI,UACNtrI,EAAMQ,OAAOosI,iBAIzB3sI,KAAKO,OAASA,EACdP,KAAK+/D,eAAiBA,EACtB//D,KAAKykI,YAAczkI,KAAK+/D,eAAeE,WAAW,eAClDjgE,KAAK+rI,YAAc/rI,KAAKO,OAAOyuG,gBAAgB49B,WAC/C5sI,KAAK6sI,UAAY7sI,KAAK8sI,oBAClB9sI,KAAKO,OAAO44B,cAGXn5B,KAAKO,OAAO6lE,4BAA+BpmE,KAAKO,OAAOqjE,sBACpD5jE,KAAKO,OAAOy6D,cAAc+xE,mBAC9B/sI,KAAKO,OAAO+Y,GAAGyN,KAAgC/mB,KAAK4kI,WAAY5kI,MAEpEA,KAAKO,OAAO+Y,GAAGyN,IAAwB/mB,KAAKyvD,gBAAiBzvD,MAC7DA,KAAKO,OAAO+Y,GAAGyN,KAAiB/mB,KAAKgtI,kBAAmBhtI,MACxDA,KAAKO,OAAO+Y,GAAGyN,KAAkC/mB,KAAKitI,mBAAoBjtI,MAC1EA,KAAKO,OAAO+Y,GAAGyN,IAA0B/mB,KAAKswD,kBAAmBtwD,MACjEA,KAAKO,OAAO+Y,GAAGyN,KAAgB/mB,KAAKktI,iBAAkBltI,OA6hC1D,OA3hCAgrI,EAAc9uI,UAAUo0D,kBAAoB,SAAUzvD,IAC9CA,EAAEssI,OAA+B,YAArBtsI,EAAEusI,QAAQtnG,QAA6C,cAArBjlC,EAAEusI,QAAQtnG,OAIxD9lC,KAAKqtI,gBAAarxI,EAHlBgE,KAAKqtI,WAAaxsI,EAAEusI,QAAQtnG,QAWpCklG,EAAc9uI,UAAU8oI,YAAc,WAClC,IAAI/qE,EAAOj6D,KAAKO,OACZW,EAAMlB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM+4D,KAClD,GAAIn7D,EAGA,OAFAlB,KAAKykI,YAAYhS,WAAWzyH,KAAKO,OAAOS,QAAQsC,cAAc,IAAM+4D,KAAmB,CAAE02D,MAAM,SAC/F/yH,KAAKklI,SAAShkI,GAGlBA,EAAMlB,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAWguC,MACpD,IAAIq6C,EAAW12G,KAAKO,OAAOY,cAAc,MAAO,CAC5CktB,UAAWguC,MAEfr8D,KAAKykI,YAAYhS,WAAW/b,EAAU,CAAEqc,MAAM,IAC9C7xH,EAAIc,YAAY00G,GAChB12G,KAAKklI,SAAShkI,GACd+4D,EAAKj5D,QAAQgB,YAAYd,IAO7B8pI,EAAc9uI,UAAUipI,YAAc,WAClC,IAAImI,EAAattI,KAAKqlI,WAClBkI,EAAeD,EAAWhqI,cAAc,mBACxCkqI,EAAeF,EAAWhqI,cAAc,oBACxCtD,KAAKO,OAAOqjE,sBAAyBxmE,YAAkBmwI,IAAkBnwI,YAAkBowI,KAC3F/jH,aAAO8jH,GACP9jH,aAAO+jH,IAEXF,EAAWtrI,YAAYhC,KAAKytI,mBAAmB,mBAC/CztI,KAAKulI,SAAS+H,EAAWhqI,cAAc,IAAM+4D,MAC7Cr8D,KAAKykI,YAAYhS,WAAWzyH,KAAK4lI,WAAY,CACzCrS,gBAAwD,aAAvCvzH,KAAKO,OAAOmjG,kBAAkBv4F,OAEnDnL,KAAK0tI,wBACD1tI,KAAKO,OAAOisE,YACZxsE,KAAKO,OAAOopI,mBAAmB3zG,UAAUjN,IAAI,oBAUrDiiH,EAAc9uI,UAAUuxI,mBAAqB,SAAUh0H,GACnD,IAAIi9F,EAAW12G,KAAKqlI,WAAWvuG,kBAC3B92B,KAAK4lI,YACLn8G,aAAOzpB,KAAK4lI,YAEhB,IAAIj7E,EAAQ+rD,EAASpzG,cAAc,IAAM+4D,KAAkBq6C,EAASpzG,cAAc,IAAM+4D,KACpFr8D,KAAKO,OAAOY,cAAc,QAAS,CAC/BktB,UAAWguC,IAAgBtpC,MAAO,CAC9BuzG,YAAa,SAAUxkC,KAAM,OAC7BroF,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAKA,KAOzC,OAJAzZ,KAAKgmI,YAAYhmI,KAAKO,OAAOsnI,iBAAiBvkI,cAAc+4D,KAAmBp6D,WAAU,IACzF0oD,EAAM3oD,YAAYhC,KAAK8lI,eACvBn7E,EAAM3oD,YAAYhC,KAAKO,OAAOY,cAAck7D,MAC5Cq6C,EAAS10G,YAAY2oD,GACd+rD,GASXs0B,EAAc9uI,UAAU+wI,mBAAqB,SAAUhtI,GACnD,IAAIF,EAAQC,UACC,IAATC,IAAmBA,EAAO,IAC9B,IAAIg6D,EAAOj6D,KAAKO,OAChB,GAAoC,IAAhC05D,EAAK0zE,gBAAgB9wI,OAAzB,CAGA,IAAIilE,EAAa9hE,KAAK4tI,oBAAsB3zE,EAAK0zE,gBAC7C5jE,EAAgB/pE,KAAKO,OAAOwpE,cAC5Bw4B,EAAUtoC,EAAKsoC,UAAYnlG,YAAkB68D,EAAKk1C,aAClD0+B,EAAOtrC,EAAUtoC,EAAK94D,cAAck7D,KAAkB77D,SAASo2B,yBAC9D52B,KAAK8tI,qBACN9tI,KAAK8tI,mBAAqBxvI,YAAO,GAAIwjE,IAEzC,IAEI2L,EACAsgE,EAGAC,EANAC,EAAU1rC,EAAUtoC,EAAK94D,cAAck7D,KAAkB77D,SAASo2B,yBAClEmjC,EAAUE,EAAKyK,aAGfnB,EAAUtJ,EAAKsK,mBACfD,EAAetkE,KAAKO,OAAO+jE,eAE3B1Z,EAAM,IAAIqkD,IAAYjvG,KAAK+/D,eAAgB,KAAM//D,KAAKO,QACtD2tI,EAAmBluI,KAAKO,OAAOksG,yBACP,mBAArBxsG,EAAKm6F,YACZp6F,KAAKgqE,YAAc,GACnBhqE,KAAK8oE,KAAO,GACZ,IAGIqlE,EACA7jE,EAOA8jE,EAXAC,EAAQruI,KAAKqlI,WAAW/hI,cAAc,IAAM+4D,KAC5CiyE,EAAQtuI,KAAKqlI,WAAW/hI,cAAc,IAAM+4D,KAC5CkyE,EAAOvuI,KAAKqlI,WAAW/hI,cAAc,IAAM+4D,KAG3CsH,YAAgB1J,IACZ,CAAC,UAAW,YAAa,YAAa,WAAY,aAAc,WAC/DvwC,MAAK,SAAUltB,GAAS,OAAOyD,EAAKm6F,cAAgB59F,MACrDwD,KAAKwuI,cAITxuI,KAAKO,OAAOqjE,sBAAwB5jE,KAAKO,OAAO+jE,gBAC5CtkE,KAAKO,OAAO6lE,4BAAmD,kBAArBnmE,EAAKm6F,aACL,MAAvCn6F,EAAKwuI,YAAYC,aAAa3iG,OACjCqiG,EAAYpuI,KAAKO,OAAOwpE,cAAcyiC,aAAa1qC,EAAY7hE,GAC/DA,EAAK0uI,sBAAuB,GAEhCP,EAAYpuI,KAAKO,OAAOwpE,cAAcyiC,aAAa1qC,EAAY7hE,KAG/DmuI,EAAYpuI,KAAK4uI,WAAWR,EAAWnuI,GAClCD,KAAK4rI,WAAc5rI,KAAK8rI,gBACzBsC,EAAYpuI,KAAK6sI,UAAUrgC,aAAa1qC,EAAY7hE,KAG5DD,KAAK42D,cAAcw3E,EAAWnuI,GAC9BD,KAAKO,OAAOyZ,OAAO+M,KAAyB,CAAEmnH,iBAAkBA,EAAkBE,UAAWA,EAAWnuI,KAAMA,IAC9G,IAAIytE,EAAM0gE,EAAU,GAAG9tE,MAAM,GAAG9lD,MAC5B8pD,IACAgG,EAAYP,EAAc8kE,SAAST,EAAWnuI,GAC9CkuI,EAAOpkE,EAAc+kE,SAASxkE,IAElC,IAAIykE,EAAe/uI,KAAKO,OAAO2pE,kBAAoB7N,KAAsBiO,IAAcjO,IAEvF,GAAyB,mBAArBp8D,EAAKm6F,aAAoCp6F,KAAKO,OAAOyuI,oBAClDhvI,KAAKO,OAAOyuI,mBAAmB1jH,WAAarrB,EAAKokE,WAAa0qE,EAAc,CAE/E,IADA,IAAIE,EAAkB,GACbryI,EAAI,EAAGA,EAAIoD,KAAKO,OAAOyuI,mBAAmB1jH,SAASzuB,OAAQD,IAChE,IAAK,IAAIuL,EAAI,EAAGA,EAAInI,KAAKO,OAAOyuI,mBAAmB1jH,SAAS1uB,GAAGsyI,UAAUryI,OAAQsL,IACzE/K,YAAkB4C,KAAKO,OAAOyuI,mBAAmB1jH,SAAS1uB,GAAGsyI,UAAU/mI,GAAG1H,aAC1EwuI,EAAgBrtI,KAAK5B,KAAKO,OAAOyuI,mBAAmB1jH,SAAS1uB,IAKzEoD,KAAKO,OAAO4uI,gBAAgB,CAAC,YAAaF,GAM9C,GAJIjvI,KAAKO,OAAOgiG,SAAgC,mBAArBtiG,EAAKm6F,cAAqCn6F,EAAKokE,WACtErkE,KAAKO,OAAO4uI,gBAAgB,CAAC,iBAAkB,cAAe,iBAAkB,kBAAmB,qBACnGnvI,KAAKO,OAAOqiG,mBAEZ5iG,KAAKO,OAAO6lE,2BACI,IAAImqC,IAAgBvwG,KAAK+/D,eAAgB//D,KAAKO,QACpD6uI,mBAAmBhB,GAE5B9pE,IACDtkE,KAAKwrD,MAAQxrD,KAAK4lI,WAAWtiI,cAAc+4D,MAE/C,IAAI2M,EAAa,EACbqmE,GAAY,EAChB,GAAI1rE,YAAgB1J,IAASA,EAAKY,OAAOh+D,OAAQ,CAC7C,IACI+lC,EAAaxlC,YAAkB6C,EAAKwuI,YAAYa,SAC9ClyI,YAAkB6C,EAAK2iC,WAAqC,EAAxB3iC,EAAK2iC,UAAe,IADC3iC,EAAKwuI,YAAYa,QAAQtsG,IAExF,GAAkB,IAAdJ,EAAiB,CAIjB,IAHA,IAAI2sG,EAAYt1E,EAAKu1E,cACjBC,EAAQx1E,EAAKiL,aAAaE,SAAW,EACrC7I,EAASr+D,OAAOjB,KAAKsyI,GAAW9qI,KAAI,SAAUzH,GAAO,OAAOuyI,EAAUvyI,MACjEwM,EAAI,EAAGA,EAAI+yD,EAAO1/D,OAAQ2M,IAC/B,GAAIo5B,EAAY25B,EAAO/yD,GAAI,CACvB,GAAKpM,YAAkB6C,EAAKwuI,cAA+C,OAA/BxuI,EAAKwuI,YAAYlvC,UAKxD,CACDt/F,EAAKwuI,YAAYiB,aAAqB,IAANlmI,GAAiB,IAANA,EAAU,CAAC,EAAG,GAAK,CAACA,EAAGA,EAAI,GACtEw/D,EAAmB,IAANx/D,GAAiB,IAANA,EAAU,EAAKA,EAAKimI,EAC5C,MAPAxvI,EAAKwuI,YAAYiB,aAAqB,IAANlmI,GAAiB,IAANA,EAAU,CAAC,EAAG,GAAK,CAACA,EAAGA,EAAI,GACtEw/D,EAAmB,IAANx/D,GAAiB,IAANA,EAAU,EAAKA,EAAIimI,EAC3C,MASRloI,KAAKooI,MAAM/sG,EAAY5iC,KAAK4vI,aAAa94G,kBAAkB8Y,eAC3D5vC,KAAK4vI,aAAa94G,kBAAkB2b,eAAiBxyC,EAAK4vI,YAC1DR,GAAY,IAIxB,IAAIS,EAAiB71E,EAAKuS,aAAevS,EAAKqK,gBAAkBtkE,KAAKO,OAAOqjE,sBAChD,YAArB3jE,EAAKm6F,YACZ,GAAKngC,EAAKuS,YAAmC,kBAArBvsE,EAAKm6F,aAA0E,MAAvCn6F,EAAKwuI,YAAYC,aAAa3iG,MAAiB+jG,EAAgB,CAC3H,IAAIC,EAAS9vI,EAAKwuI,YAAYiB,aAC1B/vC,EAAO1/F,EAAKwuI,YAAY9uC,KAC5B1/F,EAAKwuI,YAAYiB,aAAe,CAAC,EAAG,GAChCI,IACA7vI,EAAKwuI,YAAY9uC,KAAO,GAE5B,IAAI9kF,EAAOi1H,EAAiB9vI,KAAK8tI,mBAAqBhsE,EAClDkuE,EAAWhwI,KAAKiwI,WACfzjC,aAAa3xF,EAAM5a,GACxB+vI,EAASl2H,OAAO9Z,KAAKO,OAAOisE,YAC5B,IAAS5vE,EAAI,EAAGA,EAAIoD,KAAKO,OAAOisE,WAAY5vE,IACxCozI,EAASpzI,GAAG0jE,MAAMxmD,OAAO,EAAG9Z,KAAKO,OAAOgkE,oBACxCkJ,EAAK7iB,EAAIl7B,OAAOsgH,EAASpzI,GAAIm9D,GAC7Bk0E,EAAQjsI,YAAYyrE,GAExBxtE,EAAKwuI,YAAYiB,aAAeK,EAChC9vI,EAAKwuI,YAAY9uC,KAAOA,EACpBmwC,GAA4C,IAA1B7vI,EAAKwuI,YAAY9uC,MACnCyuC,EAAUt0H,OAAO,EAAG9Z,KAAKO,OAAOisE,YAGxCxsE,KAAKkwI,wBAAwBjC,EAASG,EAAWxjF,EAAK3qD,EAAM6hE,EAAY/H,GAC/Dn9D,EAAIosE,EAAb,IAAK,IAAoBrnE,EAAMysI,EAAUvxI,OAAQD,EAAI+E,EAAK/E,IAEtD,GADAoD,KAAK8oE,KAAKlnE,KAAKwsI,EAAUxxI,KACrBoD,KAAKO,OAAOy6D,cAAc+xE,mBAAsB/sI,KAAK8rI,gBAAiB9rI,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,SACxGmD,KAAKmwI,mBAAmB/B,EAAUxxI,GAAIA,IAClCQ,YAAkBgxI,EAAUxxI,GAAGu+D,SAFvC,CAOA,GADAn7D,KAAKowI,uBAAuBnwI,EAAMmuI,EAAUxxI,GAAI0tE,GAC5C3G,YAAgB1J,IAASj6D,KAAK8oE,KAAKjsE,QAAWo9D,EAAKiL,aAAaE,UAAaiqE,EAC7E,MAEJ,GAAKp1E,EAAKk1C,YAcL,CACD,IAAIkhC,EAAgBp2E,EAAKj5D,QAAQyY,GAAK,cAClCqc,OAAW,EACf,GAAImkC,EAAKsoC,QAAS,CACd,IAAIuP,EAAW73C,EAAKuS,YAAc5vE,EAAIq9D,EAAKuS,WACvCjuE,EAASD,YAAO,CAAEkc,MAAO5d,GAAKklE,EAAWllE,IAC7Cq9D,EAAKq2E,gBAALr2E,CAAsB17D,EAAQ07D,EAAM,cAAeo2E,EAAe,KAAM,KAAMv+B,EAAWm8B,EAAUJ,GACnG5zE,EAAK2oC,uBAGL9sE,EAAWmkC,EAAKq2E,gBAALr2E,CAAsB37D,YAAO,CAAEkc,MAAO5d,GAAKklE,EAAWllE,IAAKq9D,EAAM,cAAeo2E,GAE/F,GAAKp2E,EAAKsoC,SAAmC,UAAxBzsE,EAAS,GAAG9F,QAezBiqC,EAAKuS,YAAc5vE,EAAIq9D,EAAKuS,WAC5BiB,EAAMxT,EAAKsoC,QAA8C0rC,EAAQsC,iBAA5CpyE,YAAe8vE,EAASn4G,IAIxCmkC,EAAKsoC,UACN90B,EAAKtP,YAAe0vE,EAAM/3G,IAE9Bk4G,EAAY/zE,EAAKsoC,QAAUsrC,EAAK0C,iBAAmB9iE,EAAG8iE,sBAvBR,CAClD,IAASpoI,EAAI,EAAGA,EAAI2tB,EAASj5B,OAAQsL,IAAK,CACtC,IAAIqoI,EAA8C,OAAvC16G,EAAS3tB,GAAGutG,SAASj+F,eAC5B+4H,GAAS16G,EAAS3tB,GAAG3G,kBAAoBs0B,EAAS3tB,GAAG3G,iBAAiB,MAAM3E,UAC5E4wE,EAAK+iE,EAAO16G,EAAS3tB,GAAK2tB,EAAS3tB,GAAG7E,cAAc,OAGxD22D,EAAKuS,YAAc5vE,EAAIq9D,EAAKuS,WAC5ByhE,EAAQjsI,YAAYyrE,GAGpBogE,EAAK7rI,YAAYyrE,GAezB,IAAIvoC,EAAM,CAAErqB,KAAMuzH,EAAUxxI,GAAGie,KAAM+vC,IAAKojF,GAAwBvgE,GAClEztE,KAAKO,OAAOwpB,QAAQhD,KAAqBme,OArDtB,CACnBuoC,EAAK7iB,EAAIl7B,OAAO0+G,EAAUxxI,GAAIm9D,GAC9B,IAAI02E,EAAczwI,KAAK0wI,yBAAyBzwI,GAC5Cg6D,EAAKuS,YAAc5vE,EAAIq9D,EAAKuS,aAAe0hE,GAAyC,kBAArBjuI,EAAKm6F,aAAmCq2C,GACpGzwI,KAAK2wI,gCAAgC1wI,GACxCguI,EAAQjsI,YAAYyrE,GAGpBogE,EAAK7rI,YAAYyrE,GAEjB2gE,EAAUxxI,GAAG89D,UACbT,EAAKjgD,OAAO+M,KAAwB0mD,EAAGnN,MAAMrG,EAAKe,cAAcjB,QAAQl9D,SA4C5EuxI,EAAUxxI,GAAG69D,WACbz6D,KAAKgqE,YAAYpoE,KAAK6rE,GAE1BztE,KAAKykI,YAAYhS,WAAWzyH,KAAK4lI,WAAY,CAAEnS,SAAUx5D,EAAKyK,aAAa7nE,OAAOsQ,aAKtF,GAHIm3D,GACAyF,EAAc6mE,UAAUtmE,GAEvBrQ,EAAKuS,YAAmC,kBAArBvsE,EAAKm6F,cAAoC8zC,GAAoBluI,KAAK2wI,gCAAgC1wI,IAC7F,kBAArBA,EAAKm6F,aAAmCn6F,EAAKwuI,YAAYC,cAAuD,MAAvCzuI,EAAKwuI,YAAYC,aAAa3iG,KAE3G,GADAgiG,EAAWzpE,EAAeyF,EAAc8mE,gBAAgBvmE,GAAarQ,EAAK4tE,iBAAiBvkI,cAAc+4D,KACrGkmC,EAAS,CACT,IAAIuuC,EAAc/C,EAASn6F,cAC3BnqB,aAAOskH,GACP+C,EAAY9uI,YAAYisI,QAGxBF,EAAS3rI,UAAY,GACrB2rI,EAAS/rI,YAAYisI,IAGxBh0E,EAAK2J,sBAAwB3J,EAAKuS,YAAsB,IAARkB,GAAa6gE,EAAK3+F,eAAiBqG,OAAOgkB,EAAKtqB,UAChG4+F,EAAKv6G,MAAM2b,OAAU4+F,EAAK3+F,aAAem+F,EAASn+F,aAAgB,MAEtE3vC,EAAK6oE,KAAO9oE,KAAK8oE,KAAKznE,MAAM,GACxBijE,GACAyF,EAAcgnE,YAAY9wI,EAAMqqE,GAEpCtqE,KAAKwa,MAAQkzD,EACb/T,aAAkB,WACd55D,EAAMQ,OAAOyZ,OAAO+M,IAAyB9mB,GAC7C,IAAI4pI,EAAY9pI,EAAMQ,OAAOqjE,sBAAwB7jE,EAAMQ,OAAO+jE,eAWlE,GAVKvkE,EAAMQ,OAAOqjE,sBAAyBsqE,IACnCnuI,EAAMQ,OAAO+jE,gBACb76C,aAAOsgD,EAAc+kE,SAASxkE,IAC9B6jE,EAAOpuI,EAAMQ,OAAOY,cAAck7D,OAGlC5yC,aAAO1pB,EAAMyrD,OACbzrD,EAAMyrD,MAAQzrD,EAAMQ,OAAOY,cAAck7D,QAG7CiI,GAAiBulE,GAAc9pI,EAAMQ,OAAOksG,wBAO5C,GAHIxyC,EAAKk1C,aACL5gF,aAAqB0rC,EAAKj5D,QAAQyY,GAAK,cAAe,cAAewgD,GAErE4vE,EAAW,CACX,GAAI5pI,EAAKwsI,yBAA0B,CAC/B,IAAIuE,EAAS/2E,EAAKoN,aAAa/jE,cAAc,2BAA2BA,cAAc+4D,KACtFt8D,EAAMiqI,cAAcgH,EAAQnD,EAAM5tI,QAE5BA,EAAK0uI,sBAIX5uI,EAAMiqI,cAAcsE,EAAMhrI,cAAc+4D,KAAiBwxE,EAAM5tI,GAC/DA,EAAK0uI,sBAAuB,GAJ5B5uI,EAAMiqI,cAAcqE,EAAM/qI,cAAc+4D,KAAiBwxE,EAAM5tI,GAM9DF,EAAMQ,OAAOgkE,oBACdwF,EAAcknE,sBAAsBhxI,EAAMqqE,QAIzCltE,YAAkB2C,EAAMQ,OAAO2wI,uBAAyBnxI,EAAMQ,OAAOksG,yBACtE1sG,EAAM6rI,WAAY,EAClB7rI,EAAMQ,OAAOyZ,OAAO+M,KAA2B,CAAE9mB,KAAMA,IACvDF,EAAMQ,OAAOyZ,OAAO+M,IAA8B,CAC9CykC,MAAO2iF,GAAcpuI,EAAMyrD,MAAOqiF,KAAMA,EAAM5tI,KAAMA,EAAM6oE,KAAM/oE,EAAM+oE,KACtEkB,YAAajqE,EAAMiqE,YAAayhE,YAAa1rI,EAAM0rI,YACnDnhE,UAAWA,KAEV/G,GAAWe,KACPrK,EAAKiQ,kBAAoB7N,KACtBiO,IAAcjO,KAAuBiO,IAAcjO,OACnDpC,EAAKiQ,kBAAoB7N,KACrBiO,IAAcjO,KAAqC,YAAdiO,IAC7CvqE,EAAMktI,mBAAmB3uI,YAAO,GAAI2B,OAK5CF,EAAM+rI,eAAgB,EACtB/rI,EAAMiqI,cAAcjqI,EAAMyrD,MAAOqiF,EAAM5tI,SA1C/CF,EAAMiqI,cAAcmE,EAAMN,EAAM5tI,EAAMqqE,GA8CtC/G,GACAwG,EAAcknE,sBAAsBhxI,EAAMqqE,GAE9CujE,EAAO,OACR7tI,KAAKgsI,YAAY1tI,YAAO,GAAI2B,OAEnC+qI,EAAc9uI,UAAUsyI,YAAc,WAClCxuI,KAAKO,OAAOs6D,OAAS,GACrB76D,KAAKO,OAAOi6D,MAAQ,IAGxBwwE,EAAc9uI,UAAU8tI,cAAgB,SAAUx+E,EAAOqiF,EAAM5tI,EAAMqqE,GACnDtqE,KAAKO,OAAOgiG,UAAYnlG,YAAkB4C,KAAKO,OAAO4uG,aAEhEnvG,KAAK4lI,WAAW5jI,YAAY6rI,IAG5BriF,EAAMxpD,YAAY6rI,GAClB7tI,KAAK4lI,WAAW5jI,YAAYwpD,KAGpCw/E,EAAc9uI,UAAUi0I,mBAAqB,SAAUvlF,EAAKpwC,GACpDxa,KAAKO,OAAOy6D,cAAc+xE,oBAAsB/sI,KAAK8rI,eAAiB9rI,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,QACxGmD,KAAKO,OAAOwpE,cAAconE,aAAavmF,EAAKpwC,IAGpDwwH,EAAc9uI,UAAU06D,cAAgB,SAAU/7C,EAAM5a,IAC/CD,KAAK8rI,eAAiB9rI,KAAKO,OAAOy6D,cAAc+xE,mBACjD/sI,KAAKO,OAAOyZ,OAAO+M,KAAsB,CAAE9mB,KAAMA,EAAM4a,KAAMA,KAGrEmwH,EAAc9uI,UAAUw0I,yBAA2B,SAAUzwI,GACzD,QAAUD,KAAKO,OAAOqjE,uBACO,YAArB3jE,EAAKm6F,aAAkD,YAArBn6F,EAAKm6F,cAAgCp6F,KAAKO,OAAO6wI,uBAAuBC,aAC3GrxI,KAAKO,OAAOisE,YAA+D,WAAjDxsE,KAAKO,OAAO2wI,qBAAqB92C,aAClB,IAAzCp6F,KAAKO,OAAO2kE,aAAaC,cAEpC6lE,EAAc9uI,UAAUy0I,gCAAkC,SAAU1wI,GAChE,QAASD,KAAKO,OAAOqjE,sBAA6C,WAArB3jE,EAAKm6F,cAEtD4wC,EAAc9uI,UAAU0yI,WAAa,SAAUR,EAAWnuI,GACtD,GAAID,KAAKO,OAAO6wI,uBAAuBC,aAAoC,mBAArBpxI,EAAKm6F,YAAkC,CACzF,IAAI5/E,EAAQva,EAAKokE,SAAW,EAAI,EAC5BitE,EAAatxI,KAAKO,OAAO+jE,eAK7B,GAJAtkE,KAAK4rI,WAAaxuI,YAAkB4C,KAAKurI,cAAcvrI,KAAKO,OAAO2kE,aAAaC,cAC5EmsE,IAAel0I,YAAkB4C,KAAKurI,cAAcvrI,KAAKO,OAAO2kE,aAAaC,gBAC7EnlE,KAAK4rI,UAAuF,IAA3E5rI,KAAKurI,cAAcvrI,KAAKO,OAAO2kE,aAAaC,aAAa3qD,GAAO3d,QAEjFmD,KAAK4rI,UAAW,CAChB,IAAI/wH,EAAQy2H,EACNtxI,KAAKurI,cAAcvrI,KAAKO,OAAO2kE,aAAaC,aAAa3qD,GADtCxa,KAAKurI,cAAcvrI,KAAKO,OAAO2kE,aAAaC,aAErEipE,EAAqD,IAAzCpuI,KAAKO,OAAO2kE,aAAaC,YAAoBtqD,EAAKxZ,MAAMrB,KAAKO,OAAOisE,YAAc3xD,EAElG,OAAOuzH,EAEX,OAAIpuI,KAAKO,OAAOy6D,cAAc+xE,mBAAqB/sI,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,SAC3D,WAArBoD,EAAKm6F,aAAiD,gBAArBn6F,EAAKm6F,aAAsD,YAArBn6F,EAAKm6F,cAC1Ep6F,KAAKO,OAAOwpE,cAAcwnE,gBAAgBvxI,KAAKO,OAAO2kE,aAAaC,cACtEnlE,KAAK8rI,eAAgB,EACd9rI,KAAKO,OAAOwpE,cAAcynE,iBAAsC,YAArBvxI,EAAKm6F,cAEpD,MAEX4wC,EAAc9uI,UAAUk0I,uBAAyB,SAAUnwI,EAAM4a,EAAMyvD,GACnE,IAAIgnE,EAAatxI,KAAKO,OAAO+jE,eACzBtkE,KAAKO,OAAOksG,0BAA4BzsG,KAAKO,OAAO6wI,uBAAuBC,cACvEC,EACIhnE,IAAcjO,KAAwD,UAAhCr8D,KAAKO,OAAO2pE,iBAA+BI,IAAcjO,IAC/Fr8D,KAAK0rI,kBAAkB9pI,KAAKiZ,GAET,YAAdyvD,EACLtqE,KAAKyrI,YAAY7pI,KAAKiZ,GAGtB7a,KAAK2rI,gBAAgB/pI,KAAKiZ,GAGxB7a,KAAKO,OAAO6wI,uBAAuBC,aACzCrxI,KAAKyrI,YAAY7pI,KAAKiZ,KAIlCmwH,EAAc9uI,UAAUu1I,+BAAiC,SAAUC,GAC/D,IAAI72H,EAAO,GACX,GAAI7a,KAAKO,OAAO6wI,uBAAuBC,YAAa,CAChD,IAAKnzI,OAAOjB,KAAK+C,KAAKurI,eAAe1uI,OACjC,MAAO,GAEX,IAAIy0I,EAAatxI,KAAKO,OAAO+jE,eACzBwE,EAAO9oE,KAAKO,OAAO0lI,UACnBzrH,EAAQrE,SAAS2yD,EAAK9oE,KAAKO,OAAOisE,YAAYr9C,aAAaktC,KAAwB,IACnF79D,EAAQ+I,KAAKu3D,MAAMtkD,EAAQ,GAAKxa,KAAKO,OAAO2kE,aAAaE,UAC7D5qD,EAAQrE,SAAS2yD,EAAKA,EAAKjsE,OAAS,GAAGsyB,aAAaktC,KAAwB,IAC5E,IAAIyhD,EAAOv2G,KAAKu3D,KAAKtkD,EAAQxa,KAAKO,OAAO2kE,aAAaE,UACtD,GAAIksE,EAAY,CAEZ,IADA,IAAI5jE,EAAMgkE,EAAW,EAAI,EAChB90I,EAAI4B,EAAO5B,GAAKkhH,EAAMlhH,IAC3Bie,EAAQA,EAAKhe,OACPge,EAAKiX,OAAO9xB,KAAKurI,cAAc3uI,GAAG8wE,IADlB1tE,KAAKurI,cAAc3uI,GAAG8wE,GAG5C1tE,KAAKO,OAAOisE,YAAcxsE,KAAKO,OAAO2kE,aAAaC,YAAc,IACjEtqD,EAAO7a,KAAKurI,cAAc,GAAG79D,GAAKrsE,MAAM,EAAGrB,KAAKO,OAAOisE,YAAY16C,OAAOjX,QAG7E,CACD,IAASje,EAAI4B,EAAO5B,GAAKkhH,EAAMlhH,IAC3Bie,EAAQA,EAAKhe,OAAiCge,EAAKiX,OAAO9xB,KAAKurI,cAAc3uI,IAAvDoD,KAAKurI,cAAc3uI,GAEzCoD,KAAKO,OAAOisE,YAAcxsE,KAAKO,OAAO2kE,aAAaC,YAAc,IACjEtqD,EAAO7a,KAAKurI,cAAc,GAAGlqI,MAAM,EAAGrB,KAAKO,OAAOisE,YAAY16C,OAAOjX,KAIjF,OAAOA,GAEXmwH,EAAc9uI,UAAUy1I,mBAAqB,SAAU1xI,GACnD,OAAOD,KAAKO,OAAOwpE,cAAc6nE,uBAAuB3xI,IAE5D+qI,EAAc9uI,UAAU21I,iBAAmB,SAAU5xI,GACjD,OAAOD,KAAKO,OAAOwpE,cAAc6nE,uBAAuB3xI,IAE5D+qI,EAAc9uI,UAAUg0I,wBAA0B,SAAUjC,EAASG,EAAWxjF,EAAK3qD,EAAM6hE,EAAY/H,GACnG,GAAI/5D,KAAKO,OAAOisE,YAAcxsE,KAAKO,OAAOqjE,uBACb,YAArB3jE,EAAKm6F,aAAkD,YAArBn6F,EAAKm6F,aAA4B,CACvE,IAAI3sB,OAAK,EACLqkE,EAAW,GACX9xI,KAAKO,OAAO+jE,gBACZtkE,KAAK4tI,mBAAqB9rE,EAC1BgwE,EAAW9xI,KAAK2xI,mBAAmB1xI,IAGnC6xI,EAAW9xI,KAAK6xI,iBAAiB5xI,GAErC,IAAK,IAAIrD,EAAI,EAAGA,EAAIk1I,EAASj1I,OAAQD,IACjC6wE,EAAK7iB,EAAIl7B,OAAOoiH,EAASl1I,GAAIm9D,GAC7Bk0E,EAAQjsI,YAAYyrE,GAEM,IAA1BxtE,EAAKwuI,YAAY9uC,MACjByuC,EAAUt0H,OAAO,EAAG9Z,KAAKO,OAAOisE,YAEhCvsE,EAAK0uI,uBACL3uI,KAAKO,OAAOotI,gBAAkB3tI,KAAK4tI,mBACnC5tI,KAAK4tI,mBAAqB,QAItC5C,EAAc9uI,UAAU61I,gBAAkB,WACtC,IAAIjpE,EAAO,GACPwoE,EAAatxI,KAAKO,OAAO+jE,eAC7B,GAAItkE,KAAKO,OAAOksG,wBACZ,GAAIzsG,KAAKO,OAAO6wI,uBAAuBC,YAEnC,IADA,IAAIp0I,EAAOiB,OAAOjB,KAAK+C,KAAKurI,eACnB3uI,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAC7BksE,EAAQwoE,EAAwDxoE,EAAKh3C,OAAO9xB,KAAKurI,cAActuI,EAAKL,IAAI,IAAnFksE,EAAKh3C,OAAO9xB,KAAKurI,cAActuI,EAAKL,UAI7DksE,EAAOwoE,EAAatxI,KAAK0rI,kBAAoB1rI,KAAKyrI,YAG1D,OAAO3iE,GAEXkiE,EAAc9uI,UAAU81I,uBAAyB,WAC7C,IAAIC,EAAoBjyI,KAAKyxI,iCAG7B,OAFmBzxI,KAAKO,OAAOksG,wBAA0BwlC,EAAkBp1I,OAASo1I,EAC9EjyI,KAAKyrI,YAAc,IAQ7BT,EAAc9uI,UAAUmpI,SAAW,WAC/B,OAAOrlI,KAAK4vI,cAQhB5E,EAAc9uI,UAAUgpI,SAAW,SAAUS,GACzC3lI,KAAK4vI,aAAejK,GAOxBqF,EAAc9uI,UAAU0pI,SAAW,WAC/B,OAAO5lI,KAAKkyI,cAQhBlH,EAAc9uI,UAAUqpI,SAAW,SAAU56E,GACzC3qD,KAAKkyI,aAAevnF,GAOxBqgF,EAAc9uI,UAAU+pI,QAAU,WAC9B,IAAIkM,EAAenyI,KAAK+xI,kBACxB,OAAOI,EAAat1I,OAASs1I,EAAenyI,KAAKO,OAAOgkE,mBAAqBvkE,KAAKirI,WAAajrI,KAAK8oE,MAOxGkiE,EAAc9uI,UAAUk2I,eAAiB,WACrC,IAAID,EAAenyI,KAAKgyI,yBACxB,OAAOG,EAAat1I,OAASs1I,EAAenyI,KAAKkrI,aAOrDF,EAAc9uI,UAAUm2I,eAAiB,WACrC,OAAOryI,KAAKO,OAAOgkE,mBAAqBvkE,KAAKmqE,kBAAoBnqE,KAAKgqE,aAO1EghE,EAAc9uI,UAAUo2I,sBAAwB,WAC5C,OAAOtyI,KAAKgqE,aAQhBghE,EAAc9uI,UAAU4tE,eAAiB,SAAUh0C,GAC/C91B,KAAKgqE,YAAcl0C,GAOvBk1G,EAAc9uI,UAAU4pI,YAAc,WAClC,OAAO9lI,KAAK+lI,UAQhBiF,EAAc9uI,UAAU8pI,YAAc,SAAUv6E,GAI5C,OAHKruD,YAAkBquD,KACnBA,EAAShyC,GAAK,WAAagyC,EAAShyC,IAEjCzZ,KAAK+lI,SAAWt6E,GAQ3Bu/E,EAAc9uI,UAAU0oI,WAAa,SAAU7qE,GAC3C,IA6BIw4E,EA7BAt4E,EAAOj6D,KAAKO,OACZ+jE,EAAetkE,KAAKO,OAAO+jE,eAC3Bf,EAAUtJ,EAAKsK,mBACfuE,EAAO,GACX,GAAIxE,EAAc,CACd,IAAIkuE,EAAQxyI,KAAKirI,WACbwH,EAAQzyI,KAAKkrI,YACbwH,EAASF,EAAM31I,OACf81I,OAAU,EACVC,EAAY,GACZ34E,EAAKiQ,kBAAoB7N,MACzBu2E,EAAY34E,EAAKmR,4BAErB,IAAK,IAAIxuE,EAAI,EAAGguD,OAAM,EAAQhuD,EAAI81I,EAAQ91I,IAAK,CAC3C+1I,EAAUF,EAAM71I,GAAG0jE,MAAMzjE,OACzB,IAAIg2I,EAAWD,EAAU/1I,OAAS+1I,EAAUh2I,GAAG0jE,MAAMzjE,OAAS,EAC9D+tD,EAAM4nF,EAAM51I,GAAGqC,QACf,IAAK,IAAIkJ,EAAI,EAAGA,EAAIwqI,EAASxqI,IACzByiD,EAAI0V,MAAM1+D,KAAK6wI,EAAM71I,GAAG0jE,MAAMn4D,IAElC,IAAK,IAAI0hE,EAAI,EAAGA,EAAIgpE,EAAUhpE,IAC1Bjf,EAAI0V,MAAM1+D,KAAKgxI,EAAUh2I,GAAG0jE,MAAMuJ,IAEtCf,EAAKlnE,KAAKgpD,SAIdke,EAAO9oE,KAAKimI,UAGhBn9D,EAAKp/C,MAAK,SAAUoV,GAElB,OAF2BA,EAAE27B,YAC3B83E,EAAUzzG,GACLA,EAAE27B,aACX,IAAIq4E,GAAkB,GACjB74E,EAAKe,cAAcjB,QAAQl9D,QAAU01I,IACtCO,GAAkB,GAOtB,IALA,IAAIrlE,EAAKxT,EAAK8R,cAEVgnE,EAAe/yI,KAAKgzI,wBACpBC,EAAcF,GACZ/yI,KAAK8oE,KAAK53C,QAAO,SAAU05B,GAAO,OAAQA,EAAIoa,eAC3Cp9D,EAAI,EAAG2hI,EAAOxvE,EAAQl9D,OAAQ+K,EAAI2hI,EAAM3hI,IAAK,CAClD,IAAI6xD,EAASM,EAAQnyD,GACjB8lE,EAAM1tE,KAAKO,OAAOipI,yBAAyB/vE,EAAOh+D,KAClDy3I,EAASlzI,KAAKO,OAAO4oI,oBAAoB1vE,EAAOh+D,KAChDkyE,GAAgC,IAAnBlU,EAAOyD,QAAmB,GAAK,OAChD,IAAa,IAATwQ,GAAc6kE,GAAW7kE,EAAM6kE,EAAQjyE,MAAMzjE,OAC7C,GAAIynE,EACA,GAAoC,YAAhC7K,EAAOmS,qBACP,GAAInS,EAAOmS,uBAAyBvP,IAAsB,CAGtD62E,EAASxlE,GAFE1tE,KAAKO,OAAOokI,4BACT3kI,KAAKO,OAAOkqE,yBAE1B,IAAI0oE,EAAOnzI,KAAKO,OAAO8mE,aAAa/jE,cAAc,2BAA2BA,cAAc+4D,KAC3F5mC,aAAkB09G,EAAK7kH,WAAWo/C,GAAM,CAAE,QAAWC,IACrDslE,EAAch5E,EAAKmR,2BACnBqC,EAAKxT,EAAK6R,6BAET,CACDr2C,aAAkBz1B,KAAK8lI,cAAcx3G,WAAWo/C,GAAM,CAAE,QAAWC,IACnE,IAAIylE,EAAqBpzI,KAAKgzI,uBAAsB,GACpDC,EAAcG,GAA0CpzI,KAAKirI,WAC7Dx9D,EAAKxT,EAAK8R,kBAGb,CACD,IAAIsnE,EAASp5E,EAAKoN,aAAa/jE,cAAc,IAAM+4D,KAAyB/4D,cAAc+4D,KAC1F62E,EAASxlE,EAAMA,EAAMnK,EAAUvjE,KAAKO,OAAOokI,4BAC3ClvG,aAAkB49G,EAAO/kH,WAAWo/C,GAAM,CAAE,QAAWC,IACvDF,EAAKxT,EAAK4R,qBACV,IAAIynE,EAAsBtzI,KAAKgzI,wBAC/BC,EAAcK,GAA4CtzI,KAAKkrI,iBAInEz1G,aAAkBz1B,KAAK8lI,cAAcx3G,WAAWo/C,GAAM,CAAE,QAAWC,IAGtEmlE,GACD9yI,KAAKuzI,eAAe9lE,EAAIylE,EAAQvlE,EAAYslE,IAE3CjzI,KAAKO,OAAOizI,kBAAoB/5E,EAAOg6E,aACxCzzI,KAAKO,OAAOmzI,mBAAmBj6E,GAEnCz5D,KAAKO,OAAOizI,kBAAmB,EAE/BV,EACA9yI,KAAKitI,mBAAmB,CAAE7yC,YAAa,YAGlCp6F,KAAKO,OAAOgkE,oBAIbvkE,KAAKO,OAAOyZ,OAAO+M,KAAuB,CAAE+hD,KAAM9oE,KAAKirI,WAAYhrI,KAAM,CAAEokE,UAAU,EAAMyE,KAAM9oE,KAAKirI,cACtGjrI,KAAKO,OAAOyZ,OAAO+M,KAAuB,CAAE+hD,KAAM9oE,KAAKkrI,YAAajrI,KAAM,CAAEokE,UAAU,EAAOyE,KAAM9oE,KAAKkrI,gBAJxGlrI,KAAKO,OAAOyZ,OAAO+M,KAAuB,CAAE+hD,KAAMmqE,EAAahzI,KAtD5D,MAsEf+qI,EAAc9uI,UAAUq3I,eAAiB,SAAU9lE,EAAIC,EAAKC,EAAY7E,GACpE0E,aAAgBC,EAAIC,EAAKC,EAAY7E,EAAM9oE,KAAKO,OAAQP,KAAKO,OAAOijE,iBACpExjE,KAAKO,OAAOyZ,OAAO+M,KAAyB,CAAEm2C,QAASyQ,EAAYnzD,MAAOkzD,EAAKgkE,SAAU1xI,KAAK6rI,oBAElGb,EAAc9uI,UAAU82I,sBAAwB,SAAUtB,GACtD,IAAIqB,EAUJ,OATI/yI,KAAKO,OAAOksG,0BACZzsG,KAAK6rI,iBAAmB6F,EAEpBqB,EADA/yI,KAAKO,OAAO6wI,uBAAuBC,YACpBK,EAAW1xI,KAAKyxI,gCAA+B,GAAQzxI,KAAKyxI,iCAG5DC,EAAW1xI,KAAK0rI,kBAAoB1rI,KAAKyrI,aAGzDsH,GAEX/H,EAAc9uI,UAAUuzD,gBAAkB,WACtC,GAAIzvD,KAAK8lI,cAAe,CACpB,IAAIr6E,OAAW,EAGXA,EAFAzrD,KAAKO,OAAO6lE,4BAA8BpmE,KAAKO,OAAOgkE,oBACnDvkE,KAAKO,OAAOwpE,cAAcy9D,UAClBxnI,KAAKO,OAAO+rI,0BAA0BhpI,cAAc+4D,KAAmBp6D,WAAU,GAGjFjC,KAAK2zI,oBAEpB3zI,KAAK4lI,WAAWgO,aAAanoF,EAAUzrD,KAAK8lI,eAC5C9lI,KAAKgmI,YAAYv6E,KAGzBu/E,EAAc9uI,UAAUy3I,kBAAoB,WACxC,OAAO3zI,KAAKO,OAAOS,QAAQsC,cAAc,IAAM+4D,KAAqB/4D,cAAc+4D,KAAmBp6D,WAAU,IAEnH+oI,EAAc9uI,UAAUwxI,sBAAwB,WAC5C,IAAIzzE,EAAOj6D,KAAKO,OAChBP,KAAK6zI,UAAY,IAAI7/F,IAAUimB,EAAKj5D,QAAS,CACzCozC,OAAQ,eACRP,KAAM7zC,KAAK6zC,QAGnBm3F,EAAc9uI,UAAUgxI,iBAAmB,WACnCltI,KAAK6zI,YAAc7zI,KAAK6zI,UAAU16G,aAClCn5B,KAAK6zI,UAAU14H,WAGvB6vH,EAAc9uI,UAAU43I,QAAU,SAAUr6E,EAAQ7O,EAAKpwC,GAOrD,OAAOpd,YAAkBwtD,IACrBxtD,YAAkBq8D,EAAOyD,UACzBtS,EAAI0V,MAAM9lD,GAAO0iD,UAAYzD,EAAOyD,SAE5C8tE,EAAc9uI,UAAU4wI,kBAAoB,WACxC,OAAO9sI,KAAK6sI,UAAY7sI,KAAKO,OAAO0nG,cAAgB,IAAI8rC,IAAoB/zI,KAAKO,QAAU,IAAIgsG,IAAkBvsG,KAAKO,SAE1HyqI,EAAc9uI,UAAU83I,YAAc,SAAUxoF,GAC5CxrD,KAAK4lI,WAAW5jI,YAAYwpD,GACxBxrD,KAAKO,OAAOisE,aACZxsE,KAAKO,OAAOopI,mBAAmBrmI,cAAc+4D,KAAgBj6D,UAAY,KAGjF4oI,EAAc9uI,UAAU+3I,aAAe,SAAUx4I,EAAKosB,EAAKqsH,GACvDl0I,KAAKO,OAAOyZ,OAAO+M,KAA2B,CAAEtrB,IAAKA,EAAKosB,IAAKA,EAAKqsH,SAAUA,IAC9E,IAAI7vE,EAAWrkE,KAAKO,OAAO+jE,eAC3B,IAAID,IAAYrkE,KAAKO,OAAOqjE,qBAA5B,CAGA,GAAIS,EAEA,IADA,IAAIyE,EAAO9oE,KAAKoyI,iBAAiBlhH,QAAO,SAAU05B,GAAO,OAAOspF,GAAYz4I,IAAQmvD,EAAInvD,OAC/EmB,EAAI,EAAGA,EAAIksE,EAAKjsE,OAAQD,IAC7BksE,EAAKlsE,GAAGylF,WAAax6D,EAI7B,IADA,IAAI+iC,EAAM5qD,KAAKimI,UAAU/0G,QAAO,SAAU05B,GAAO,OAAOspF,GAAYz4I,IAAQmvD,EAAInvD,OACvE0M,EAAI,EAAGA,EAAIyiD,EAAI/tD,OAAQsL,IAAK,CACjCyiD,EAAIziD,GAAGk6E,WAAax6D,EAEpB,IADA,IAAIy4C,EAAQ1V,EAAIziD,GAAGm4D,MACVuJ,EAAI,EAAGA,EAAIvJ,EAAMzjE,OAAQgtE,IAC9BvJ,EAAMuJ,GAAGwY,WAAax6D,KAIlCmjH,EAAc9uI,UAAUi4I,cAAgB,SAAU35H,GAE9C,OADAA,EAAQxa,KAAKo0I,oBAAoB55H,GAC1Bxa,KAAKO,OAAOwrE,cAAcvxD,IAErCwwH,EAAc9uI,UAAUk4I,oBAAsB,SAAU55H,GACpD,GAAIxa,KAAKO,OAAO6wI,uBAAuBC,YAAa,CAChD,IAAImB,EAAQxyI,KAAKO,OAAOisE,WACpBkB,EAAM8kE,EAAQh4H,EAAQ,EAAIg4H,EAC1B6B,EAAgBl+H,SAASnW,KAAKO,OAAO0lI,UAAUv4D,GAAKv+C,aAAaktC,KAAwB,IAC7F7hD,EAAQg4H,EAAQh4H,EAAQA,EAASA,EAAQ65H,EAAiB7B,EAE9D,OAAOh4H,GAEXwwH,EAAc9uI,UAAUo4I,mBAAqB,SAAU95H,GACnD,OAAOA,GAEXwwH,EAAc9uI,UAAUq4I,qBAAuB,SAAU/5H,GAErD,OADAA,EAAQxa,KAAKo0I,oBAAoB55H,GAC1Bxa,KAAKO,OAAOsrE,qBAAqBrxD,IAE5CwwH,EAAc9uI,UAAU8wI,kBAAoB,SAAUnsI,GACjC,UAAbA,EAAEyjC,QAAsBzjC,EAAE2zI,SAC1Bx0I,KAAK6sI,UAAY7sI,KAAK8sI,sBAG9B9B,EAAc9uI,UAAUu4I,cAAgB,SAAU3rE,GAC9C9oE,KAAK8oE,KAAOA,GAOhBkiE,EAAc9uI,UAAUw4I,uBAAyB,SAAUz0I,GACvD,IAAIF,EAAQC,UACC,IAATC,IAAmBA,EAAO,IAC9B,IAAIg6D,EAAOj6D,KAAKO,OAChB05D,EAAK0yE,cACL,IAAI3vI,EAAMi9D,EAAK0N,0BAA0B,GACrCgtE,EAAU,GACVC,EAAU,GACVC,EAAa,GACbC,EAAa,GACbC,EAAa96E,EAAK8K,gBAAgB1jE,QAClC2zI,EAAkBh1I,KAAKi1I,sBAAsBj4I,EAAK+3I,GAClDG,EAAa,GACbC,EAAmD,IAAxCj3I,OAAOjB,KAAK+3I,GAAiBn4I,OAC5C,GAAIo9D,EAAKoN,aAAa/jE,cAAc,gBAAuC,YAArBrD,EAAKm6F,aACpDp6F,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OACrCmD,KAAKitI,mBAAmBhtI,OAEvB,CACD,GAAoC,IAAhCg6D,EAAK0zE,gBAAgB9wI,OACrB,OAEJ,IAAIu4I,EAAiB,GACjB5pF,EAAQyO,EAAK94D,cAAck7D,KAC3ByF,EAAa7H,EAAK0zE,gBAClB9/D,EAAM,GAAGxsE,MAAMC,KAAKtB,KAAK4lI,WAAWtiI,cAAc+4D,KAAgBvrC,UACtE,GAAI9wB,KAAKorI,gBAAgBvuI,OAAQ,CAC7B,IAAIw4I,EAAUr1I,KAAKorI,gBAAgBvuI,OAC/By4I,EAAaxzE,EAAWjlE,OAC5B,GAAIw4I,IAAYC,EACZ,IAAK,IAAI14I,EAAI,EAAGA,EAAI04I,EAAY14I,IACU,UAAlCoD,KAAKO,OAAOm/D,aAAaviD,MACtB0wD,EAAIjxE,GAAGo5B,UAAUzD,SAAS,kBAC7Bs7C,EAAI/zD,OAAOld,EAAG,KACZA,IAGNg4I,EAAQ9yE,EAAWllE,GAAGI,IAAQ23I,EAAQ30I,KAAKorI,gBAAgBxuI,GAAGI,IAAQJ,EACtEs4I,EAAWt4I,GAAKklE,EAAWllE,GAAGI,GAC9Bo4I,EAAeL,EAAWn4I,GAAGnB,KAAOoyE,EAAIjxE,GACxCk4I,EAAWl4I,GAAKoD,KAAKorI,gBAAgBxuI,GAAGI,QAG3C,CACD,IAASJ,EAAI,EAAGA,EAAI04I,EAAY14I,IAC5Bg4I,EAAQ9yE,EAAWllE,GAAGI,IAAQJ,EAC9Bs4I,EAAWt4I,GAAKklE,EAAWllE,GAAGI,GAElC,IAASJ,EAAI,EAAGA,EAAIy4I,EAASz4I,IACa,UAAlCoD,KAAKO,OAAOm/D,aAAaviD,MACtB0wD,EAAIjxE,GAAGo5B,UAAUzD,SAAS,kBAC7Bs7C,EAAI/zD,OAAOld,EAAG,KACZA,IAGNw4I,EAAeL,EAAWn4I,GAAGnB,KAAOoyE,EAAIjxE,GACxC+3I,EAAQ30I,KAAKorI,gBAAgBxuI,GAAGI,IAAQJ,EACxCk4I,EAAWl4I,GAAKoD,KAAKorI,gBAAgBxuI,GAAGI,KAIpD,IAASJ,EAAI,EAAGA,EAAIklE,EAAWjlE,OAAQD,IAAK,CACxC,IAAI24I,EAAWZ,EAAQ7yE,EAAWllE,GAAGI,IACrC,GAAKI,YAAkBm4I,GAwBlB,CACD,IAAI3qF,EAAM,IAAIqkD,IAAYjvG,KAAK+/D,eAAgB,KAAM9F,GACjDm0E,EAAYpuI,KAAK6sI,UAAUrgC,aAAa,CAAC1qC,EAAWllE,KACxDi4I,EAAWjzI,KAAKwsI,EAAU,IACtB3gE,EAAK7iB,EAAIl7B,OAAO0+G,EAAU,GAAIn0E,EAAKyK,cACvClZ,EAAMxpD,YAAYyrE,GAClBztE,KAAKw1I,wBAAwB54I,EAAG6wE,EAAIonE,EAAWj4I,QA9BjB,CAC9B,IAAI64I,GAAU,EACVz1I,KAAK+rI,cACL0J,EAAUz1I,KAAK01I,sBAAsB11I,KAAKorI,gBAAgBmK,GAAWzzE,EAAWllE,KAEpF,IAAI6wE,EAAK2nE,EAAeL,EAAWQ,GAAU95I,KAE7C,GADAo5I,EAAWjzI,KAAKmzI,EAAWQ,IACvBv1I,KAAKgqE,YAAYurE,IAAav1I,KAAKgqE,YAAYurE,GAAUpmH,aAAa,cAAgB0lH,EAAWj4I,GAAGnB,MAC/F05I,GAAY/3I,YAAkB43I,EAAgBE,EAAWt4I,OACrDu4I,IAAaM,GAAWz1I,KAAKorI,gBAAgBmK,KAAczzE,EAAWllE,KAAO,CAClF24I,IAAa34I,GACboD,KAAKw1I,wBAAwB54I,EAAG6wE,EAAIonE,EAAWj4I,IAEnD4uD,EAAMxpD,YAAYyrE,GAClB,UAEC0nE,IAAa/3I,YAAkB43I,EAAgBE,EAAWt4I,OACtDoD,KAAK+rI,aAAejqE,EAAWllE,KAAOoD,KAAKorI,gBAAgBmK,IAC5Dv1I,KAAK+rI,cAAgB0J,IACzBV,EAAWQ,GAAU5mC,YAAY7sC,EAAWllE,IAEhD4uD,EAAMxpD,YAAYyrE,GAClBztE,KAAKw1I,wBAAwB54I,EAAG6wE,EAAIonE,EAAWj4I,KAoBvD,GATAoD,KAAK8oE,KAAO+rE,EACZ70I,KAAKgqE,YAAc,GAAG3oE,MAAMC,KAAKkqD,EAAM16B,UACvCrH,aAAOzpB,KAAK4lI,WAAWtiI,cAAc+4D,MACrCr8D,KAAK4lI,WAAW5jI,YAAYwpD,GAC5BxrD,KAAKO,OAAOwpB,QAAQhD,KAAkB,IAAI,WAClChnB,EAAMQ,OAAO6pI,eACbrqI,EAAMQ,OAAOyZ,OAAO+M,KAAqB,CAAE2lH,KAAM,gBAGrDzsI,EAAM,CACN,IAAI6lC,GAAU7lC,EAAKm6F,aAAe,IAAI3iF,cAAgB,YACtDzX,KAAKO,OAAOyZ,OAAO8rB,EAAQ7lC,MAIvC+qI,EAAc9uI,UAAUw5I,sBAAwB,SAAUC,EAAKjpB,GAG3D,IAFA,IAAIzvH,EAAOiB,OAAOjB,KAAK04I,GACnBF,GAAU,EACL74I,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAAK,CAClC,GAAI+4I,EAAI14I,EAAKL,MAAQ8vH,EAAKzvH,EAAKL,IAE3B,KADa+4I,EAAI14I,EAAKL,cAAeuM,MAAQujH,EAAKzvH,EAAKL,cAAeuM,OACtDwsI,EAAI14I,EAAKL,IAAIylB,YAAcqqG,EAAKzvH,EAAKL,IAAIylB,UAAY,CACjEozH,GAAU,EACV,OAIZ,OAAOA,GAEXzK,EAAc9uI,UAAU+4I,sBAAwB,SAAUW,EAAY9sE,GAClE,IAAI7rE,EAAO,GACPssE,EAAUvpE,KAAKO,OAAOs1I,kBACtB7qF,EAAiB,GACjBC,EAAe,GACf/sD,OAAOjB,KAAKssE,GAAS1sE,SACrBmuD,EAAiBue,EAAQve,eACzBC,EAAese,EAAQte,cAE3B,IAAIhrD,EAAO,CAAE8iB,QAAQ,GACrB/iB,KAAKO,OAAOyZ,OAAO+M,KAA6B,CAAE+hD,KAAMA,EAAM7oE,KAAMA,IAChEgrD,EAAapuD,SACmC,WAA5CmD,KAAKO,OAAOm/D,aAAa+M,eACzB3D,EAAKhvD,OAAOgvD,EAAKjsE,OAAS,EAAGouD,EAAapuD,QAGrCoD,EAAK8iB,QACN+lD,EAAKhvD,OAAO,EAAGmxC,EAAapuD,SAIxC,IAAK,IAAID,EAAI,EAAGA,EAAIouD,EAAenuD,OAAQD,IACvCK,EAAK+tD,EAAepuD,GAAGg5I,IAAeh5I,EAE1C,OAAOK,GAEX+tI,EAAc9uI,UAAUs5I,wBAA0B,SAAUh7H,EAAOizD,EAAI7iB,GACnEA,EAAIqe,WAAWjpE,KAAKO,OAAO2oE,cAAe1uD,EAAQ,IAAM,EACpDowC,EAAIqe,SACJwE,EAAGz3C,UAAUjN,IAAI,YAGjB0kD,EAAGz3C,UAAUvM,OAAO,YAExBmhC,EAAIpwC,MAAQA,EACZowC,EAAIy9C,UAAOrsG,EACX4uD,EAAIkrF,SAAU,EACdroE,EAAG73C,aAAaymC,IAAuB7hD,EAAMrN,YAC7CnN,KAAK+1I,gBAAgBtoE,EAAIjzD,IAE7BwwH,EAAc9uI,UAAU65I,gBAAkB,SAAUC,EAAQx7H,GACxD,IAAK,IAAI5d,EAAI,EAAGA,EAAIo5I,EAAO11E,MAAMzjE,OAAQD,IACrCo5I,EAAO11E,MAAM1jE,GAAGg5B,aAAa,QAASpb,EAAMrN,aAG7C69H,EAxnCwB,I,6BCjBnC,mFAAI3sG,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzCs1G,EAAqC,SAAU50G,GAE/C,SAAS40G,EAAoBxzI,GACzB,IAAIR,EAAQo/B,EAAO79B,KAAKtB,KAAMO,IAAWP,KAOzC,OANAD,EAAM+oE,KAAO,GAEb/oE,EAAMya,MAAQ,EACdza,EAAMQ,OAASA,EACfR,EAAMk2I,gBAAkB,IAAIp5B,IAA2Bt8G,GACvDR,EAAMm2I,gBAAkB,IAAIl5B,IAA6Bz8G,GAClDR,EAgNX,OAzNAs+B,EAAU01G,EAAqB50G,GAW/B40G,EAAoB73I,UAAUswG,aAAe,SAAU3xF,EAAM5a,GACzD,GAAiD,IAA7CD,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAClC,OAAOsiC,EAAOjjC,UAAUswG,aAAalrG,KAAKtB,KAAM6a,EAAM5a,GAE1DD,KAAKkuI,iBAAyC,mBAArBjuI,EAAKm6F,YAC9Bp6F,KAAK8oE,KAAO,GACZ9oE,KAAKwa,MAAQxa,KAAKO,OAAOqjE,sBAAwB5jE,KAAKkuI,iBAAmBjuI,EAAK+oE,WAAa,EAC3F,IAAK,IAAIpsE,EAAI,EAAG+E,EAAMkZ,EAAKhe,OAAQD,EAAI+E,EAAK/E,IACxCoD,KAAK8mH,kBAAkB,EAAGjsG,EAAKje,GAAIie,EAAKq+D,MAAOt8E,OAAGZ,EAAWgE,KAAK8oE,KAAKjsE,QAM3E,OAJAmD,KAAKwa,MAAQ,EACTxa,KAAKO,OAAO41I,0BACZn2I,KAAKo2I,sBAEFp2I,KAAK8oE,MAEhBirE,EAAoB73I,UAAU4qH,kBAAoB,SAAUtsG,EAAOK,EAAM8gG,EAAK06B,EAAUC,EAASnpC,EAAQC,GACrG,IAAI7pG,EACAgzI,EAAkBv2I,KAAKkuI,kBAAoBluI,KAAKw2I,UAAY37H,EAAK7d,IACjEk8E,EAAQyiC,EACZ,GAAIv+G,YAAkByd,EAAKk5D,OACvB,GAAI32E,YAAkByd,EAAKwgD,WACvBr7D,KAAK8oE,KAAO9oE,KAAK8oE,KAAKh3C,OAAO9xB,KAAKy2I,iBAAiB57H,EAAML,EAAO67H,EAAUr2I,KAAK8oE,KAAKjsE,OAAQuwG,SAG5F,IAAK,IAAIjlG,EAAI,EAAGxG,EAAMkZ,EAAKhe,OAAQsL,EAAIxG,EAAKwG,IACxCnI,KAAK8mH,kBAAkBtsG,EAAOK,EAAK1S,GAAI0S,EAAKq+D,MAAOm9D,EAAU77H,EAAOxa,KAAK8oE,KAAKjsE,OAAQuwG,OAI7F,CACD,IAAIspC,EAAa12I,KAAK22I,mBAAmB97H,EAAML,EAAO67H,EAAUC,EAASnpC,EAAQC,GAOjF,GANKmpC,IACDv2I,KAAK8oE,KAAO9oE,KAAK8oE,KAAKh3C,OAAO4kH,IAE7B77H,EAAKk5D,OAASl5D,EAAKk5D,MAAMl3E,QACzBmD,KAAK8mH,kBAAkBtsG,EAAQ,EAAGK,EAAKk5D,MAAOl5D,EAAKk5D,MAAMmF,MAAOm9D,EAAU77H,EAAQ,EAAGxa,KAAK8oE,KAAKjsE,OAAQ65I,EAAWj7I,KAElHuE,KAAKO,OAAO+9D,WAAWzhE,OAAQ,CAC/B,IAAI8mF,EAAS3jF,KAAK8oE,KAAKjsE,QACtB0G,EAAKvD,KAAK8oE,MAAMlnE,KAAKxF,MAAMmH,EAAIvD,KAAKi2I,gBAAgBzpC,aAAa3xF,EAAM,CAAEq+D,MAAOA,EAAOk0B,UAAWspC,EAAWj7I,OAC9G,IAAK,IAAImB,EAAI+mF,EAAS,EAAG/mF,GAAK,EAAGA,IAC7B,GAAIoD,KAAK8oE,KAAKlsE,GAAG+9D,aACb36D,KAAK8oE,KAAKlsE,GAAGg6I,gBAAkB52I,KAAK8oE,KAAKjsE,OAAS8mF,OAEjD,IAAK3jF,KAAK8oE,KAAKlsE,GAAG+9D,eAAiB36D,KAAK8oE,KAAKlsE,GAAG69D,UACjD,OAKhBz6D,KAAKw2I,QAAU37H,EAAK7d,KAExB+2I,EAAoB73I,UAAU26I,mBAAqB,SAAUr9E,EAAO2B,EAAQtgD,GACxE,IAAIylD,EAAQ,GACRw2E,EAAW,GACXr9E,EAASz5D,KAAKO,OAAO+lE,iBAAiB9M,GACtC8tE,EAAUtnI,KAAKO,OAAOgnI,yBACtBvnI,KAAKO,OAAO6lE,6BACZ3M,EAASz5D,KAAKO,OAAOw5D,QAAQ7oC,QAAO,SAAUtpB,GAAK,OAAOA,EAAE4xD,QAAUA,KAAU,IAEpF,IAAIu9E,EAAa/2I,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAC/Co9D,EAAOj6D,KAAKO,OAChB,IAAKP,KAAKO,OAAO6lE,6BAA2D,IAA7BkhE,EAAQnpI,QAAQg9D,GAAgB,CAC3E,IAAK,IAAIv+D,EAAI,EAAGA,EAAIu+D,EAAQv+D,IACxB0jE,EAAM1+D,KAAK5B,KAAKg3I,sBAEpB12E,EAAM1+D,KAAK5B,KAAK+sG,aAAa,GAAI,KAAMx+B,IAAS0oE,SAMpD,GAJA97E,EAASn7D,KAAKO,OAAO6lE,2BAA6B,EAC7CpmE,KAAKO,OAAOkoE,oBAAoB5rE,OAASk6I,GAAc98E,EAAK6yC,gBAAkB7yC,EAAK2K,UAAY,EAAI,GAChGzJ,GAAUn7D,KAAKO,OAAOkoE,oBAAoB5rE,QAAU,EAAI,GAE5DmD,KAAKO,OAAO+9D,WAAWzhE,SAAWmD,KAAKk2I,gBAAgBxnH,UAAW,CAClE,IAAIwoH,EAAel3I,KAAKk2I,gBAAgB1pC,aAAa3xF,GAAM,GAC3Dvc,YAAOuc,EAAMq8H,EAAar8H,MAC1B,IAAIs8H,EAAW,EACfD,EAAa52E,MAAM52C,MAAK,SAAUq2D,EAAMvlE,GAA2B,OAAlB28H,EAAW38H,EAAculE,EAAK7iB,SAAW6iB,EAAKmuB,cAC/F4oC,EAAWI,EAAa52E,MAAMj/D,MAAM81I,GAAUjmH,QAAO,SAAU6uD,GAAQ,OAAOA,EAAK7iB,WAC/Eg6E,EAAah6E,SAAW45E,EAAS,GAAGr9E,OAAOD,QAAUx5D,KAAKO,OAAOkoE,oBAAoB,GAAGjP,QACxFs9E,EAAWA,EAASz1I,MAAM,IAEiB,IAA3CrB,KAAKO,OAAOkoE,oBAAoB5rE,SAChCi6I,EAAW,IAEf37E,GAAkB27E,EAASj6I,OAI/B,IAFA,IAAIgwG,EAAS7sG,KAAKO,OAAO6lE,2BAAwCpmE,KAAKO,OAAOmkE,aAAvB,CAACjL,GACnD29E,GAAQ,EACHjvI,EAAI,EAAGA,EAAI0kG,EAAKhwG,OAAQsL,IAAK,CAClC,IAAIkvI,EAAUD,IAAsC,IAA7B9P,EAAQnpI,QAAQg9D,GACnCk8E,IACAD,GAAQ,GAEZ,IAAI5yC,GAAYxkG,KAAKO,OAAO6lE,4BAA8BixE,EACtD9oE,IAAS+oE,aAAe/oE,IAASgpE,kBACrCp8E,EAASn7D,KAAKO,OAAO6lE,4BAA8Bo+B,IAAaj2B,IAAS+oE,aAAen8E,EAAS47E,EAAa57E,EAC1GlB,EAAKuJ,iBACLrI,IAEJmF,EAAM1+D,KAAK5B,KAAK+sG,aAAatzC,EAAQ,KAAM+qC,EAAUrpC,IAGzD,OADAmF,EAAM1+D,KAAKxF,MAAMkkE,EAAOw2E,GACjBx2E,GAYXyzE,EAAoB73I,UAAUy6I,mBAAqB,SAAU97H,EAAMsgD,EAAQq8E,EAAUC,EAAStqC,EAAQC,GAClG,IAAI9gG,EAAU,GAEV6yD,EAAMn/D,KAAKO,OAAO+lE,iBAAiBzrD,EAAK2+C,OAC5CltD,EAAQuO,KAAOvc,YAAO,GAAIuc,GACtBskD,IACA7yD,EAAQuO,KAAK2+C,MAAQ3+C,EAAK2+C,OAE9BltD,EAAQmuD,WAAY,EACpBnuD,EAAQouD,UAAY16D,KAAKO,OAAOy6D,cAAc+xE,oBAAsB/sI,KAAKO,OAAO41I,yBAChF7pI,EAAQ+gG,UAAYmqC,EACpBlrI,EAAQorI,SAAWD,EACnBnrI,EAAQ6gG,OAASA,EACjB7gG,EAAQquD,cAAe,EACvBruD,EAAQ8gG,UAAYA,EACpB9gG,EAAQqrI,SAAYv6I,YAAkByd,EAAKk5D,MAAa,SAAkCl5D,EAAKk5D,MAAMl3E,OAAxCge,EAAKk5D,MAAa,QAAEl3E,OACjFyP,EAAQ7Q,IAAMyiE,YAAO,YACrB,IAAItT,EAAM,IAAI6iD,IAAInhG,GAIlB,OAHAs+C,EAAIuQ,OAASA,EACbn7D,KAAKkzD,kBAAkBtI,GACvBA,EAAI0V,MAAQtgE,KAAK62I,mBAAmBh8H,EAAK2+C,MAAO2B,EAAQvQ,EAAI/vC,MACrD+vC,GAEXmpF,EAAoB73I,UAAUg3D,kBAAoB,SAAUtI,GACxD,IAAI/vC,EAAO+vC,EAAI/vC,KACXskD,EAAMn/D,KAAKO,OAAO+lE,iBAAiBzrD,EAAK2+C,OAC5C,GAAI2F,GAAOA,EAAIsqC,iBAAmBtqC,EAAIsqC,kBAAmB,CACrD,IAAImuC,EAAWx6I,YAAkByd,EAAK7d,KAAO,GAAKmiE,EAAI5F,cAAc4F,EAAInC,gBAAiBuE,YAAepC,EAAK,GAAItkD,EAAK7d,KAAK,GAAImiE,GAC/HpiE,aAAS,aAAc66I,EAAShtF,EAAI/vC,QAY5Ck5H,EAAoB73I,UAAUu6I,iBAAmB,SAAU57H,EAAMsgD,EAAQs8E,EAAStqC,EAAQC,GAGtF,IAFA,IAAItkC,EAAO,GACPw+D,EAAUtnI,KAAKO,OAAOgnI,yBACjB3qI,EAAI,EAAG+E,EAAMkZ,EAAKhe,OAAQD,EAAI+E,EAAK/E,IAAKuwG,IAAU,CACvDrkC,EAAKlsE,GAAKoD,KAAK2sG,YAAY9xF,EAAKje,GAAIoD,KAAKwa,MAAO5d,OAAIZ,EAAY,kBAAmBm/D,EAAQs8E,EAAStqC,EAAQC,GAC5G,IAAK,IAAIjlG,EAAI,EAAGA,EAAIgzD,EAAQhzD,IACpBnI,KAAKO,OAAO6lE,6BAA2D,IAA7BkhE,EAAQnpI,QAAQg9D,IAG9D2N,EAAKlsE,GAAG0jE,MAAMvkE,QAAQiE,KAAKg3I,sBAE/Bh3I,KAAKwa,QAET,OAAOsuD,GAEXirE,EAAoB73I,UAAU86I,mBAAqB,WAC/C,OAAOh3I,KAAK+sG,aAAa,GAAI,KAAMx+B,IAAS4Q,SAEhD40D,EAAoB73I,UAAUkyG,YAAc,SAAUptC,GAElD,IADA,IAAIsmE,EAAUtnI,KAAKO,OAAOgnI,yBACjB3qI,EAAI,EAAGA,EAAIokE,EAAMnkE,OAAQD,IAC9B,GAAIokE,EAAMpkE,GAAG69D,UAAW,CACpBuG,EAAMpkE,GAAG0jE,MAAQtgE,KAAK0tG,cAAc1sC,EAAMpkE,IAC1C,IAAK,IAAIuL,EAAI,EAAGA,EAAI64D,EAAMpkE,GAAGu+D,OAAQhzD,IAC7BnI,KAAKO,OAAO6lE,6BAAoE,IAAtCkhE,EAAQnpI,QAAQ6iE,EAAMpkE,GAAGu+D,SAGvE6F,EAAMpkE,GAAG0jE,MAAMvkE,QAAQiE,KAAKg3I,0BAG/B,CACD,IAAIa,EAAO73I,KAAK22I,mBAAmB31E,EAAMpkE,GAAGie,KAAMmmD,EAAMpkE,GAAGu+D,QAC3D6F,EAAMpkE,GAAG0jE,MAAQu3E,EAAKv3E,MAG9B,OAAOU,GAEX+yE,EAAoB73I,UAAUk6I,oBAAsB,WAChD,IAAK,IAAIx5I,EAAI,EAAGA,EAAIoD,KAAK8oE,KAAKjsE,OAAQD,IAAK,CACvC,IAAIguD,EAAM5qD,KAAK8oE,KAAKlsE,GACpB,GAAKguD,EAAI+P,aAGT,IAAK,IAAIxyD,EAAIvL,EAAI,EAAGuL,EAAInI,KAAK8oE,KAAKjsE,OAAQsL,IAAK,CAC3C,IAAI2vI,EAAW93I,KAAK8oE,KAAK3gE,GACrByiD,EAAInvD,MAAQq8I,EAAS1qC,YACrBptG,KAAK8oE,KAAK3gE,GAAG+0D,QAAUtS,EAAI8P,aAKpCq5E,EA1N8B,CA2NvCxnC,M,6BCnPF,0EAWIwrC,EAAoC,WACpC,SAASA,EAAmBx3I,GACxBP,KAAKO,OAASA,EA2alB,OAzaAw3I,EAAmB77I,UAAU+tI,kBAAoB,WAC7C,IAGI+N,EAHAp7I,EAAI,EACJ0qI,EAAUtnI,KAAKO,OAAOgnI,yBACtB6P,GAAQ,EAEZ,GAAIp3I,KAAKO,OAAO0nG,cACZ,IAAK,IAAItmG,EAAM3B,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAQD,EAAI+E,EAAK/E,IAC1DoD,KAAKO,OAAO6lE,6BAAsD,IAAxBkhE,EAAQnpI,QAAQvB,GAC1Dw6I,GAAQ,EAGZp3I,KAAKi4I,eAAe,IAAIp7E,IAAO,CAAEntB,MAAO,SAAW9yC,IAGvDoD,KAAKO,OAAOusG,gBAAkB9sG,KAAKO,OAAOqkE,aAC1C5kE,KAAKi4I,eAAe,IAAIp7E,IAAO,CAAEntB,MAAO,SAAW9yC,GACnDA,KAEAoD,KAAKO,OAAOijE,iBAAmD,UAAhCxjE,KAAKO,OAAO2pE,kBAC3ClqE,KAAKi4I,eAAe,IAAIp7E,IAAO,CAAEntB,MAAO,SAAW9yC,GACnDA,KAGJ,IADA,IAAIm9D,EAAU/5D,KAAKO,OAAOmkE,aACjBv8D,EAAI,EAAGA,EAAI4xD,EAAQl9D,OAAQsL,IAChCnI,KAAKi4I,eAAel+E,EAAQ5xD,GAAIivI,GAASp3I,KAAKO,OAAO6lE,gCAA6BpqE,EAAYmM,EAAIvL,GAElGoD,KAAKO,OAAOijE,iBAAmD,UAAhCxjE,KAAKO,OAAO2pE,iBAC3ClqE,KAAKi4I,eAAe,IAAIp7E,IAAO,CAAEntB,MAAO,SAAWqqB,EAAQl9D,QAE/Dm7I,EAAoBh4I,KAAKk4I,cAAcl4I,KAAKO,OAAOmkE,cACzB,SAAtB1kE,KAAKO,OAAOmvC,QAAmE,IAA/C1vC,KAAKO,OAAOmvC,MAAMviC,WAAWhP,QAAQ,MACrE6B,KAAKm4I,yBAAyBH,IAGtCD,EAAmB77I,UAAUi8I,yBAA2B,SAAUC,GAC9D,IAAIC,EAAa,EACb38E,EAAa17D,KAAKO,OAAOmkE,aAAaxzC,QAAO,SAAUnoB,GACvD,OAAO3L,YAAkB2L,EAAE2mC,QAAsB,SAAZ3mC,EAAE2mC,SAE3C,GAAIgsB,EAAW7+D,OAAQ,CAMfw7I,EALCj7I,YAAkB4C,KAAKO,OAAOmvC,QAAgC,SAAtB1vC,KAAKO,OAAOmvC,OACtB,kBAAvB1vC,KAAKO,OAAOmvC,QAA2D,IAApC1vC,KAAKO,OAAOmvC,MAAMvxC,QAAQ,KAIxD6B,KAAKO,OAAOS,QAAQqhC,wBAAwBqN,MAAQ0oG,GAHtB,kBAAtBp4I,KAAKO,OAAOmvC,MAAqBv5B,SAASnW,KAAKO,OAAOmvC,MAAO,IAAM1vC,KAAKO,OAAOmvC,OAAS0oG,EAMjH,IADA,IAAIE,EAAU,EACLt6I,EAAK,EAAGg1E,EAAetX,EAAY19D,EAAKg1E,EAAan2E,OAAQmB,IAAM,CACxE,IAAI6uG,EAAO75B,EAAah1E,GACxBs6I,GAAYl7I,YAAkByvG,EAAK0rC,UACuD,EAA3D,kBAAlB1rC,EAAK0rC,SAAwBpiI,SAAS02F,EAAK0rC,SAAU,IAAM1rC,EAAK0rC,SAEjF,IAAK,IAAI37I,EAAI,EAAGA,EAAI8+D,EAAW7+D,OAAQD,IAAK,CACzB,IAAXw7I,GAAgBp4I,KAAKO,OAAOwnG,eAAiB/nG,KAAKw4I,oBAAuB57I,IAAM8+D,EAAW7+D,OAAS,GACnGmD,KAAKy4I,wBAAwB/8E,GAEjC,IAAIlhD,EAAQxa,KAAKO,OAAO+jI,sBAAsB5oE,EAAW9+D,GAAG48D,OAASx5D,KAAKO,OAAOg7G,iBAClE,IAAX68B,GAAgBC,EAAaC,EAC7Bt4I,KAAK04F,SAASh9B,EAAW9+D,GAAG27I,SAAU/9H,GAEtB,IAAX49H,GAAgBC,EAAaC,GAClCt4I,KAAK04F,SAAS,GAAIl+E,GAAO,MAKzCu9H,EAAmB77I,UAAUu8I,wBAA0B,SAAU/8E,GAC7D,IAAK,IAAImO,EAAI,EAAGA,EAAInO,EAAW7+D,OAAQgtE,IAC/BA,IAAMnO,EAAW7+D,OAAS,IAC1B6+D,EAAWmO,GAAGn6B,MAAQ,IACtB1vC,KAAK04F,SAAS,IAAK14F,KAAKO,OAAO+jI,sBAAsB5oE,EAAWmO,GAAGrQ,UAI/Eu+E,EAAmB77I,UAAU+7I,eAAiB,SAAUx+E,EAAQj/C,EAAO8pB,GACnE,KAAItkC,KAAKO,OAAOmkE,aAAa7nE,OAAS,GAAtC,CAGA,IAAIg4E,EAAcz3E,YAAkBod,GAASxa,KAAKO,OAAOipI,yBAAyB/vE,EAAOh+D,KAAO+e,EAC5Fk+H,EAAS14I,KAAK24I,SAASl/E,GACvBm/E,EAAa54I,KAAKk4I,cAAcl4I,KAAKO,OAAOmkE,cACjC,OAAXg0E,IACA14I,KAAK04F,SAASggD,EAAQ7jE,GACI,SAAtB70E,KAAKO,OAAOmvC,QAAmE,IAA/C1vC,KAAKO,OAAOmvC,MAAMviC,WAAWhP,QAAQ,MACrE6B,KAAKm4I,yBAAyBS,IAE7B54I,KAAKO,OAAOwnG,eAA4B,WAAXzjE,GAAyBtkC,KAAKO,OAAOgkE,oBAAsBvkE,KAAKO,OAAOwnG,gBACrG/nG,KAAK64I,kBAET74I,KAAKO,OAAOyZ,OAAO42C,KAAoB,CAAEp2C,MAAOq6D,EAAanlC,MAAOgpG,EAAQj/E,OAAQA,EAAQn1B,OAAQA,OAG5GyzG,EAAmB77I,UAAUw8F,SAAW,SAAUhpD,EAAOl1B,EAAOs+H,GACxD94I,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAS2d,GAASguD,YAAkBxoE,KAAKO,UAE3EmvC,GAAS,GADU1vC,KAAKO,OAAOS,QAAQy1B,YACV,KAAK5iB,QAAQ,GAAK,KAEnD,IAGIklI,EAHAh0H,EAAS/kB,KAAKO,OAAOsnI,iBACrBn9E,EAAU1qD,KAAKO,OAAOy4I,kBACtBC,EAASt2I,YAAW+sC,GAEpB6zB,EAAUvjE,KAAKO,OAAOgkE,mBACtB20E,EAAcl5I,KAAKO,OAAOijE,gBAC9BD,EAAUA,GAAW21E,EAAc31E,EAAU,EAAIA,EACjD,IA6CI41E,EA7CA9M,EAAOrsI,KAAKO,OAAOopI,mBAAmBrmI,cAAc,IAAM+4D,KAC1DiyE,EAAQtuI,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KACrD+8E,EAAap5I,KAAKO,OAAOokI,4BACzB0U,EAAcr5I,KAAKO,OAAOmqE,6BAC1B4uE,EAAet5I,KAAKO,OAAOkqE,yBAC3B8uE,EAA6B,IAAfH,GAAoC,IAAhBC,EACtC,GAAI91E,GAAW/oD,GAAS+oD,EAAS,CAC7B,IAAK8oE,IAASA,EAAK/oI,cAAc+4D,KAC7B,OAEJ08E,EAAY1M,EAAK/oI,cAAc+4D,KAAmBvrC,SAAStW,EAAQ+oD,QAElE,GAAIvjE,KAAKO,OAAO6lE,4BAA8B7C,GAAWvjE,KAAKO,OAAOwpE,cAAcy9D,WACjF6E,EAAK5pG,WAAa,EAAG,CAExBs2G,GADIttF,EAAW4gF,EAAK/oI,cAAc+4D,MACbvrC,SAAU26B,EAAS36B,SAASj0B,OAAS,EAAK2d,QAE9D,GAAI++H,EAAa,CAClB,IAAIt8G,OAAS,EACb,GAAIm8G,IAAeC,EAEfp8G,GADAziB,EAAQ0+H,EAAc1+H,EAAQ,EAAIA,GACjB4+H,EAAar0H,EAASsnH,OAEtC,IAAK+M,GAAcC,EACpBp8G,EAASziB,GAAS8+H,EAAev0H,EAASsnH,OAEzC,GAAI+M,GAAcC,EAAa,CAChC7+H,EAAQ0+H,EAAc1+H,EAAQ,EAAIA,EAClC,IAAIg/H,EAAQx5I,KAAKO,OAAOk5I,uBACxBx8G,EAASziB,EAAQ4+H,EAAar0H,EAASvK,EAAS4+H,EAAaE,EAAgBjN,EAAOmN,EAGxF,KADAT,EAAY/4I,KAAK05I,6BAA6Bl/H,EAAO4+H,EAAYE,EAAcr8G,IAE3E,YAIJ87G,EAAYh0H,EAAOzhB,cAAc+4D,KAAmBvrC,SAAStW,GASjE,GAPIu+H,IAAcD,EACdC,EAAU/kH,MAAM0b,MAAQupG,EAEnBF,GAAaD,IAClBC,EAAU/kH,MAAM0b,MAAQ,IAGxB6zB,GAAW/oD,GAAS+oD,EACpB41E,EAAan5I,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KACrD/4D,cAAc+4D,KAAmBvrC,SAAStW,EAAQ+oD,QAEtD,GAAIvjE,KAAKO,OAAO6lE,4BAA8B7C,GAAWvjE,KAAKO,OAAOwpE,cAAcy9D,WACjF8G,EAAM7rG,WAAa,EAAG,CACzB,IAAIgpB,EAEJ0tF,GAFI1tF,EAAWzrD,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KACvD/4D,cAAc+4D,MACGvrC,SAAU26B,EAAS36B,SAASj0B,OAAS,EAAK2d,QAE/D,GAAI++H,EAAa,CACdt8G,OAAS,EAOb,GANIm8G,IAAeC,IACfp8G,EAASziB,EAAQ4+H,EAAa1uF,EAAU4jF,IAEvC8K,GAAcC,IACfp8G,EAASziB,GAAS8+H,EAAe5uF,EAAU4jF,GAE3C8K,GAAcC,EAAa,CAC3B,IAAIrI,EAAShxI,KAAKO,OAAO8mE,aAAa/jE,cAAc,2BACpD25B,EAASziB,EAAQ4+H,EAAa1uF,EAAUlwC,EAAS4+H,EAAaE,EAAgBhL,EAAQ0C,EAE1FmI,EAAan5I,KAAK05I,6BAA6Bl/H,EAAO4+H,EAAYE,EAAcr8G,QAGhFk8G,EAAazuF,EAAQpnD,cAAc+4D,KAAmBvrC,SAAStW,GAQnE,GANI2+H,IAAeL,EACfK,EAAWnlH,MAAM0b,MAAQupG,EAEpBE,GAAcL,IACnBK,EAAWnlH,MAAM0b,MAAQ,KAExB1vC,KAAKO,OAAO6lE,2BAA4B,CAGzC,IAFA,IAAIiiC,EAAOroG,KAAKO,OAAOS,QAAQQ,iBAAiB,0BAC5Cm4I,EAAe,GACV/8I,EAAI,EAAGA,EAAIyrG,EAAKxrG,OAAQD,IAC7B,GAAI+gE,aAAa0qC,EAAKzrG,GAAI,UAAU6c,KAAOzZ,KAAKO,OAAOS,QAAQyY,GAC3D,IAAK,IAAItR,EAAI,EAAGA,EAAIkgG,EAAKzrG,GAAG0G,cAAc,YAAYwtB,SAASj0B,OAAQsL,IACnEwxI,EAAa/3I,KAAKymG,EAAKzrG,GAAG0G,cAAc,YAAYwtB,SAAS3oB,IAIrEkgG,EAAKxrG,QAAU88I,EAAa98I,SAC5B88I,EAAan/H,GAAOwZ,MAAM0b,MAAQupG,GAGtCj5I,KAAKO,OAAO+jE,gBACZtkE,KAAK45I,0BAGb7B,EAAmB77I,UAAUw9I,6BAA+B,SAAUl/H,EAAOsoB,EAAM0nC,EAASl5C,GACxF,IAAKA,IAAQA,EAAIhuB,cAAc+4D,KAC3B,OAAO,KAEX,IAAItC,EAAU/5D,KAAKO,OAAOmkE,aACtBrwB,EAASr0C,KAAKO,OAAOijE,gBACrBq2E,EAAU75I,KAAKO,OAAO2pE,gBAEtBze,EAAW,GAAGpqD,MAAMC,KAAKgwB,EAAIhuB,cAAc+4D,KAAmBvrC,UAgBlE,MAfgB,UAAZ+oH,GAAuBxlG,GAAU75B,IAAWgwD,EAAUxqE,KAAKO,OAAOmqE,6BACtDjf,EAASA,EAAS5uD,OAAS,GAElCw3C,IAAqB,IAAX75B,EACHixC,EAAS,GAEU,SAA1BsO,EAAQv/C,GAAO6sH,OACR57E,EAASpX,EAAU75B,EAAQ,EAAKA,GAEb,UAA1Bu/C,EAAQv/C,GAAO6sH,OACR57E,EAASjxC,GAASsoB,EAAO0nC,IAGzB/e,EAASjxC,EAAQsoB,IAQrCi1G,EAAmB77I,UAAU09I,uBAAyB,WAClD,IAAI35I,EAAO,CAAE8iB,QAAQ,GAErB,GADA/iB,KAAKO,OAAOyZ,OAAO29C,KAA4B13D,IAC3CA,EAAK8iB,OAAT,CAGA,IAAIyvB,EAAcisB,cACdq7E,EAAkB95I,KAAKO,OAAOS,QAAQsC,cAAc,sBACpDy2I,EAAmB/5I,KAAKO,OAAOS,QAAQsC,cAAc,uBACrD02I,EAAgBh6I,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KAC7D/R,EAAiBtqD,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KAC9D49E,EAAcD,EAAcljH,kBAAkBuL,wBAAwBqN,MACtEwqG,EAAe5vF,EAAexzB,kBAAkBuL,wBAAwBqN,MAK5E,GAJoC,UAAhC1vC,KAAKO,OAAO2pE,kBACZ+vE,GAA4BznG,GAEhCsnG,EAAgB9lH,MAAM0b,MAAQuqG,EAAc,KACxCj6I,KAAKO,OAAO2pE,kBAAoB7N,IAAoB,CACpD,IAAI89E,EAAuBn6I,KAAKO,OAAOS,QAAQsC,cAAc,6BACzD82I,EAAmBp6I,KAAKO,OAAO8mE,aAAa/jE,cAAc,2BACzDwzB,kBAAkBuL,wBAAwBqN,MACpB,SAAvB1vC,KAAKO,OAAOovC,SACZyqG,GAAsC5nG,GAE1C2nG,EAAqBnmH,MAAM0b,MAAQ0qG,EAAmB,SAErD,CACD,GAAIp6I,KAAKO,OAAO6lE,2BAA4B,CACxC,IAAIi0E,EAAcr6I,KAAKO,OAAO2rI,2BAA2B5oI,cAAc,mBACnE+2I,IACAH,EAAeG,EAAY7nG,aAGC,UAAhCxyC,KAAKO,OAAO2pE,iBAAsD,SAAvBlqE,KAAKO,OAAOovC,SACvDuqG,GAA8B1nG,GAGtCunG,EAAiBjjH,kBAAkB9C,MAAM0b,MAAQwqG,EAAe,OAEpEnC,EAAmB77I,UAAUo+I,kBAAoB,SAAUt5I,GAGvD,OAFehB,KAAKu6I,uBAAuBv5I,EAAS,YACzChB,KAAKu6I,uBAAuBv5I,EAAS,SAGpD+2I,EAAmB77I,UAAUq+I,uBAAyB,SAAUv5I,EAASu+F,GAIrE,IAHA,IAAIi7C,EAAUx5I,EAAQu+F,EAAY,kBAC9B5gG,EAAS,EACTq3B,EAAY,CAACqmC,IAAqBA,IAAqB,kBAAmB,cAAe,aACtFm+E,GACCxkH,EAAUtM,MAAK,SAAUltB,GAAS,OAAOg+I,EAAQxkH,UAAUzD,SAAS/1B,QACpEmC,GAAU67I,EAAQ5qG,cAEtB4qG,EAAUA,EAAQj7C,EAAY,kBAElC,OAAO5gG,GAEXo5I,EAAmB77I,UAAUs8I,iBAAmB,WAC5C,IAAIiC,EAAkBz6I,KAAKO,OAAOmkE,aAAaxzC,QAAO,SAAUiuC,GAC5D,OAAO/hE,YAAkB+hE,EAAIzvB,QAAUtyC,YAAkB+hE,EAAIo5E,aAC9D17I,OACH,OAAQmD,KAAKO,OAAOmkE,aAAa7nE,SAAW49I,GAEhD1C,EAAmB77I,UAAUy8I,SAAW,SAAUl/E,GAS9C,GARIr8D,YAAkBq8D,EAAO/pB,QAAU1vC,KAAKO,OAAOwnG,eAC5C3qG,YAAkBq8D,EAAO8+E,YAAcv4I,KAAKw4I,qBAC/C/+E,EAAO/pB,MAAQ,KAEf1vC,KAAKO,OAAO+jE,gBAAkBlnE,YAAkBq8D,EAAO/pB,SACtD+pB,EAAOmS,uBAAyBvP,KAAuB5C,EAAOmS,uBAAyBvP,OACxF5C,EAAO/pB,MAAQ,MAEd+pB,EAAO/pB,MACR,OAAO,KAEX,IAAIA,EAAQv5B,SAASsjD,EAAO/pB,MAAMviC,WAAY,IAC9C,OAAIssD,EAAO8+E,UAAY7oG,EAAQv5B,SAASsjD,EAAO8+E,SAASprI,WAAY,IACzDssD,EAAO8+E,SAER9+E,EAAOihF,UAAYhrG,EAAQv5B,SAASsjD,EAAOihF,SAASvtI,WAAY,IAC/DssD,EAAOihF,SAGPjhF,EAAO/pB,OAGtBqoG,EAAmB77I,UAAUg8I,cAAgB,SAAUn+E,GAEnD,IADA,IAAIq+E,EAAS,EACJp6I,EAAK,EAAG28I,EAAY5gF,EAAS/7D,EAAK28I,EAAU99I,OAAQmB,IAAM,CAC/D,IAAIy7D,EAASkhF,EAAU38I,GACnB06I,EAAS14I,KAAK24I,SAASl/E,GACN,SAAjBA,EAAO/pB,QACPgpG,EAAS,IAEU,IAAnBj/E,EAAOyD,SAAgC,OAAXw7E,IAC5BN,GAAUjiI,SAASuiI,EAAOvrI,WAAY,KAG9C,OAAOirI,GAEXL,EAAmB77I,UAAU0+I,4BAA8B,SAAUC,GACjE,IAAI9gF,EAAU/5D,KAAKO,OAAOmkE,aAAarjE,QACnCyhC,EAAO9iC,KAAKO,OAAOokI,6BAA+B3kI,KAAKO,OAAOgkE,mBAC9DiG,EAAUxqE,KAAKO,OAAOkqE,yBACtB1nC,EAAQ/iC,KAAKO,OAAOmqE,6BAexB,MAdkB,YAAdmwE,GACI93G,GACAg3B,EAAQjgD,OAAOgpB,EAAO0nC,EAASzQ,EAAQl9D,QAEvCimC,GACAi3B,EAAQjgD,OAAO,EAAGgpB,IAGH,gBAAd+3G,EACL9gF,EAAQjgD,OAAOgpB,EAAMi3B,EAAQl9D,QAEV,iBAAdg+I,GACL9gF,EAAQjgD,OAAO,EAAGgpB,EAAO0nC,GAEtB7nE,YAAW3C,KAAKk4I,cAAcn+E,KAEzCg+E,EAAmB77I,UAAU4+I,2BAA6B,WACtD,IAAIC,EAAc/6I,KAAK46I,4BAA4B,gBACnDG,EAAc/6I,KAAKg7I,eAAiB,OAASD,EAC7C,IAAIE,EAAYj7I,KAAKO,OAAOopI,mBAAmBrmI,cAAc,0BAA0BA,cAAc,IAAM+4D,KACvG6+E,EAASl7I,KAAKO,OAAO8mE,aAAa/jE,cAAc,2BAA2BA,cAAc,IAAM+4D,KACnG4+E,EAAUjnH,MAAM0b,MAAQqrG,EACxBG,EAAOlnH,MAAM0b,MAAQqrG,GAEzBhD,EAAmB77I,UAAUi/I,0BAA4B,WACrD,IAAIJ,EAAc/6I,KAAK46I,4BAA4B,eACnDG,EAAc/6I,KAAKg7I,eAAiB,OAASD,EAC7C/6I,KAAKO,OAAOsnI,iBAAiB7zG,MAAM0b,MAAQqrG,EAC3C/6I,KAAKO,OAAOy4I,kBAAkBhlH,MAAM0b,MAAQqrG,GAEhDhD,EAAmB77I,UAAUk/I,uBAAyB,WAClD,IAAIlB,EAAe,GACfmB,EAAiBr7I,KAAKO,OAAOmkE,aAAaxzC,QAAO,SAAUnoB,GAAK,OAAO3L,YAAkB2L,EAAE2mC,UAAW7yC,QAAU,EAChHy+I,EAAct7I,KAAKO,OAAOmkE,aAAaxzC,QAAO,SAAUnoB,GAAK,MAAoB,SAAZA,EAAE2mC,SAAsB7yC,QAAU,EAC1E,kBAAtBmD,KAAKO,OAAOmvC,OAAuB2rG,GAAmBC,EAGvDD,GAAmBC,IACzBpB,EAAel6I,KAAK46I,4BAA4B,YAHhDV,EAAev3I,YAAW3C,KAAKO,OAAOmvC,MAAQv5B,SAASnW,KAAK46I,4BAA4B,UAAUj+I,MAAM,MAAM,GAAI,IAAM,GAK5Hu9I,EAAel6I,KAAKg7I,eAAiB,OAASd,EAC1Cl6I,KAAKO,OAAOopI,mBAAmBrmI,cAAc,IAAM+4D,KAAwBvlC,oBAC3E92B,KAAKO,OAAOopI,mBAAmBrmI,cAAc,IAAM+4D,KAAwBvlC,kBAAkB9C,MAAM0b,MAC7FwqG,GAEVl6I,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KAAyBvlC,kBAAkB9C,MAAM0b,MAC1FwqG,GAERnC,EAAmB77I,UAAUq/I,0BAA4B,WACrD,IAAIR,EAAc/6I,KAAK46I,4BAA4B,UACnDG,EAAc/6I,KAAKg7I,eAAiB,OAASD,EAC7C/6I,KAAKO,OAAOS,QAAQQ,iBAAiB,0BAA0B,GAAGwyB,MAAM0b,MAAQqrG,GAEpFhD,EAAmB77I,UAAUs/I,2BAA6B,WACtD,IAAItB,EAAel6I,KAAK46I,4BAA4B,WACpDV,EAAel6I,KAAKg7I,eAAiB,OAASd,EAC9Cl6I,KAAKO,OAAOS,QAAQQ,iBAAiB,0BAA0B,GAAGwyB,MAAM0b,MAAQwqG,GAEpFnC,EAAmB77I,UAAU28I,gBAAkB,WAC3C,IAAIT,EAASz1I,YAAW3C,KAAKk4I,cAAcl4I,KAAKO,OAAOmkE,eACnD1kE,KAAKO,OAAO+jE,iBACRtkE,KAAKO,OAAOgkE,oBAAsBvkE,KAAKO,OAAOokI,8BAC9C3kI,KAAKm7I,4BAETn7I,KAAKo7I,yBACDp7I,KAAKO,OAAOmqE,8BACZ1qE,KAAK86I,gCAIL96I,KAAKO,OAAOusG,gBAAkB9sG,KAAKO,OAAOqkE,YAC1C5kE,KAAKi4I,eAAe,IAAIp7E,IAAO,CAAEntB,MAAO,UAE5C0oG,EAASp4I,KAAKg7I,eAAiB,OAAS5C,EACxCp4I,KAAKO,OAAOsnI,iBAAiB7zG,MAAM0b,MAAQ0oG,EAC3Cp4I,KAAKO,OAAOy4I,kBAAkBhlH,MAAM0b,MAAQ0oG,GAEhD,IAAI/vC,EAAOroG,KAAKO,OAAOS,QAAQsC,cAAc,0BACzC+kG,GAAQroG,KAAKO,OAAOgkE,oBACpBvkE,KAAKu7I,4BACLv7I,KAAKw7I,8BAEAnzC,IACLA,EAAKr0E,MAAM0b,MAAQ0oG,IAG3BL,EAAmB77I,UAAU8+I,aAAe,WACxC,OAAOh7I,KAAKO,OAAOwnG,eAAqD,SAApC/nG,KAAKO,OAAOk7I,eAAet+H,MAE5D46H,EA7a6B,I,6BCXxC,2HAAI15G,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA0BzCi9G,EAA+B,WAC/B,SAASA,EAAcn7I,GACnBP,KAAKmrI,YAAc,GACnBnrI,KAAK27I,SAAU,EACf37I,KAAK47I,KAAO,GACZ57I,KAAK67I,QAAS,EACd77I,KAAK87I,WAAY,EACjB97I,KAAK+7I,cAAe,EACpB/7I,KAAKg8I,YAAc,GACnBh8I,KAAKi8I,UAAYj8I,KAAKk8I,eAAc,GACpCl8I,KAAKm8I,QAAU,CAAC,YAAa,WAC7Bn8I,KAAKo8I,iBAAkB,EACvBp8I,KAAKO,OAASA,EACdP,KAAKq8I,YAAc,IAAI9vC,IAAkBvsG,KAAKO,QAC9CP,KAAKupB,mBA4eT,OA1eAmyH,EAAcx/I,UAAUogJ,WAAa,SAAUz7I,GAC3C,IAAIo8B,EAASp8B,EAAEo8B,OACfj9B,KAAK+7I,cAAe,EACpB/7I,KAAK87I,UAAY7+G,EAAOjH,UAAUzD,SAAS,WAE/CmpH,EAAcx/I,UAAUqgJ,QAAU,WAC9B,KAAIv8I,KAAKO,OAAO44B,aAAe9S,IAAQa,UAAYlnB,KAAKO,OAAOqjE,sBAA/D,CAGA5jE,KAAKw8I,WAAWx8I,KAAKO,OAAOk8I,mBAAgD,IAA3Bz8I,KAAKO,OAAOisE,WAAkBxsE,KAAKO,OAAO+jE,gBACtFtkE,KAAKO,OAAOk8I,mBAAsBz8I,KAAKO,OAAOqnE,wBAAwB/qE,QAA8C,UAAlCmD,KAAKO,OAAOm/D,aAAaviD,OACtE,UAAlCnd,KAAKO,OAAOm/D,aAAaviD,MAAqBnd,KAAKO,OAAOm8I,WAAW7G,kBAAkBx5E,KAAuBx/D,SAClHmD,KAAKqnE,aAAas1E,OACdC,SAAS58I,KAAKq8I,YAAY7vC,aAAa,CAAE1jC,KAAM,CAAC,IAAI2kC,IAAI,CAAEhzC,WAAW,OAAaz6D,KAAKqnE,aAAar2C,UAAU,GAEtH,IAAI64D,EAAU7pF,KAAKqnE,aAAas1E,OAAOh1H,IAAI,GAAI,EAAG,CAAC,EAAG,GAAI,KAAM3nB,KAAKqnE,aAAaw1E,aAClF78I,KAAKqnE,aAAas1E,OAAOvlH,OAAOyyD,EAAQ,GAAIA,EAAQ,IAChD7pF,KAAK87I,YACL97I,KAAKsC,QACLtC,KAAK87I,WAAY,KAGzBJ,EAAcx/I,UAAU4gJ,aAAe,SAAUj8I,GACzCb,KAAKO,OAAO44B,aAGZt4B,EAAEo8B,QAAUp8B,EAAEo8B,OAAOjH,UAAUzD,SAAS,kBACxCvyB,KAAKmrI,YAAY4R,YAAa,EAC9BlnH,YAAS,CAAC71B,KAAKmrI,YAAYnqI,SAAU,CAAC,YAAa,cAG3D06I,EAAcx/I,UAAU8gJ,OAAS,SAAUn8I,GAClCb,KAAKO,OAAO8hG,QAAUxhG,KAAOA,EAAEo8I,eAAiBrlH,YAAQ/2B,EAAEo8I,cAAe,cAG9Ej9I,KAAKk9I,cACLl9I,KAAK87I,WAAY,EACjB97I,KAAKmrI,YAAY4R,YAAa,EAC1B/8I,KAAKqnE,aAAa81E,eAAeC,iBACjCp9I,KAAKqnE,aAAa81E,eAAeC,eAAeC,SAAW,KAGnE3B,EAAcx/I,UAAUs1F,QAAU,SAAU3wF,EAAGmqE,GAC3C,IAAIrN,aAAa98D,EAAEo8B,OAAQ,qBACvBp8B,EAAEo8B,OAAOjH,UAAUzD,SAAS,sBADhC,CAIA,IAAIq7C,GAAaxwE,YAAkBw6B,YAAQ/2B,EAAEo8B,OAAQ,IAAMo/B,MACvDy1C,GAAY10G,YAAkBw6B,YAAQ/2B,EAAEo8B,OAAQ,IAAMo/B,MAC1DuR,EAAYA,GAAakkC,GAAYlkC,EAAYA,EACjD,IAAIvJ,GAAYjnE,YAAkBw6B,YAAQ/2B,EAAEo8B,OAAQ,IAAMo/B,QACrDj/D,YAAkBw6B,YAAQ/2B,EAAEo8B,OAAQ,IAAMo/B,MAC3CihF,GAAgB,EAMpB,GALIt9I,KAAKO,OAAO2pE,kBAAoB7N,MAChCihF,GAAiBlgJ,YAAkBw6B,YAAQ/2B,EAAEo8B,OAAQ,8BAChD7/B,YAAkBw6B,YAAQ/2B,EAAEo8B,OAAQ,2BACzConC,EAAWA,IAAai5E,MAEvB1vE,GAAaxwE,YAAkBw6B,YAAQ/2B,EAAEo8B,OAAQ,IAAMo/B,OACxDx7D,EAAEo8B,OAAOjH,UAAUzD,SAAS8pC,OAC3Bj/D,YAAkBw6B,YAAQ/2B,EAAEo8B,OAAQ,mBAIzC,GADAj9B,KAAKw8I,UAAU5uE,EAAWvJ,EAAUi5E,GAC/B1vE,IAAaxwE,YAAkBw6B,YAAQ/2B,EAAEo8B,OAAQ,IAAMo/B,MAA5D,CAIA,IAAIkhF,EAAa,CAAEx6H,QAAQ,EAAOoqH,OAAO,EAAOqQ,SAAUpgJ,YAAkByD,EAAEo8B,QAASwgH,UAAW58I,GAElG,GADAb,KAAKO,OAAOyZ,OAAO8M,IAAyBy2H,IACxCA,EAAWx6H,SAAU6U,YAAQ/2B,EAAEo8B,OAAQ,oBAG3Cj9B,KAAKw8I,UAAU5uE,EAAWvJ,EAAUi5E,GAChCt9I,KAAKqnE,cAAc,CAEnB,IAAkB,IADFrnE,KAAKqnE,aAAamqB,QAAQ3wF,EAAGmqE,GAEzC,OAEJhrE,KAAKsC,cAdLtC,KAAK09I,iBAiBbhC,EAAcx/I,UAAUu6H,WAAa,SAAU51H,GAC3C,IAAIb,KAAK29I,OAAO98I,GAAhB,CAGAb,KAAK49I,UAAY/8I,EAAEilC,OACnB,IAAIy3G,EAAa,CAAEx6H,QAAQ,EAAOoqH,OAAO,EAAMqQ,SAAS,EAAOpQ,QAASvsI,GAExE,GADAb,KAAKO,OAAOyZ,OAAO8M,IAAyBy2H,IACxCA,EAAWx6H,OAAf,CAGA,IAAIo7F,EAASn+G,KAAKqnE,aAAas1E,OAAO9yD,QACtC7pF,KAAKmrI,YAAY0S,SAAU,EAC3B,IAAIC,EAAW99I,KAAKqnE,aAAa02E,KAAKl9I,EAAEilC,OAAQq4E,GAChDn+G,KAAK47I,KAAOkC,EACRA,EAASlC,OACT57I,KAAKw8I,WAAWsB,EAASE,SAAUF,EAASG,SAAUH,EAASI,eAC/Dl+I,KAAKqnE,aAAas1E,OAAO9yD,QAAU7pF,KAAKqnE,aAAa82E,eAAehgC,EAAQ2/B,EAAU99I,KAAKo+I,OAAQv9I,EAAEilC,QACrG9lC,KAAKg8I,YAAc,IAEvBh8I,KAAKq+I,eAAex9I,EAAEilC,OAAQ9lC,KAAKqnE,eAEjB,MADFrnE,KAAK0qD,QAAQ4zF,aAAsBt+I,KAAKqnE,aAAaovD,WAAW51H,KAKhFA,EAAEyrC,iBACFtsC,KAAKsC,MAAMzB,IAJPb,KAAKu+I,oBAMb7C,EAAcx/I,UAAUyhJ,OAAS,SAAU98I,GACvC,IAAIo8B,EAASp8B,EAAEo8B,OACf,IAAKA,EACD,OAAO,EAEX,GAAIj9B,KAAKmrI,YAAY4R,WAEjB,OADA/8I,KAAKu+I,kBACE,EAEX,GAAI,CAAC,SAAU,WAAY,gBAAgBpgJ,QAAQ0C,EAAEilC,SAAW,EAE5D,OADA9lC,KAAKu+I,kBACE,EAEX,IAAIC,EAAK5mH,YAAQqF,EAAQ,QAAUrF,YAAQqF,EAAQ,MAAMogH,UACrDx8I,EAAEo8B,OAAOjH,UAAUzD,SAAS,wBAAyC,KAAd1xB,EAAE8zC,SAAgC,KAAd9zC,EAAE8zC,SAC3D/c,YAAQ/2B,EAAEo8B,OAAQ,oBACxB35B,cAAc,SAAShB,QAEnCk8I,GAA8D,OAAxD5mH,YAAQp3B,SAASo1F,cAAe,qBACtC51F,KAAKk9I,cAET,IAAIuB,EAAqE,OAAxD7mH,YAAQp3B,SAASo1F,cAAe,oBACjD,GAAI51F,KAAKO,OAAOk8I,mBAAqBgC,EAAY,CAC7C,IAAI9B,EAAS38I,KAAKo+I,OAAOzB,OACrB9yD,EAAU8yD,EAAO9yD,QACrB40D,EAAa9B,EAAOA,OAAO9yD,EAAQ,IAAIn4E,YAAY,KAAOm4E,EAAQ,GAEtE,MAAqB,WAAbhpF,EAAEilC,QACgC,UAAlC9lC,KAAKO,OAAOm/D,aAAaviD,OAAqBnd,KAAKO,OAAO8hG,QAAU,CAAC,SAAU,MAAMlkG,QAAQ0C,EAAEilC,SAAW,IAC1G24G,GACiF,OAAjF7mH,YAAQp3B,SAASo1F,cAAe,IAAM51F,KAAKO,OAAOS,QAAQyY,GAAK,eACxD,CAAC,QAAS,YAAa,aACtB,YAAa,aAAc,aAAatb,QAAQ0C,EAAEilC,SAAW,GACrB,OAAhDlO,YAAQqF,EAAQ,IAAMo/B,MAAiF,OAA/CzkC,YAAQqF,EAAQ,IAAMo/B,MACjE,UAAbx7D,EAAEilC,SAAwB7I,EAAOjH,UAAUzD,SAAS8pC,MAAuE,OAA/CzkC,YAAQqF,EAAQ,IAAMo/B,MACpD,OAA3CzkC,YAAQqF,EAAQ,wBAA6E,OAAvCrF,YAAQqF,EAAQ,oBAErFy+G,EAAcx/I,UAAUwiJ,oBAAsB,SAAU79I,GACpD,IAAId,EAAQC,KACZ,GAAIA,KAAKO,OAAOqjE,sBAAwB5jE,KAAKO,OAAOksG,wBAAyB,CACzE,IAAI5xF,EAAO,CAAE8jI,YAAa,GAAIC,OAAO,EAAOC,UAAU,GACtD7+I,KAAKO,OAAOyZ,OAAO8M,KAAsBjM,GACzC,IAAIikI,EAAa9+I,KAAKm8I,QAAQzyH,MAAK,SAAUltB,GAAS,OAAOA,IAAUuD,EAAM69I,aACzEv7D,IAAariF,KAAKO,OAAOwpE,eACzB/pE,KAAKO,OAAOwpE,cAAcg1E,kBAAoB,EAC9ClkI,EAAK+jI,OAAS1gJ,OAAOjB,KAAK4d,EAAK8jI,aAAa9hJ,QAAUiiJ,GAAcjkI,EAAKgkI,UAAYx8D,GACrFriF,KAAKO,OAAOyZ,OAAO8M,KAAyB,CAAE+3H,UAAU,IACxDhkI,EAAKgkI,UAAW,EAChB7+I,KAAKO,OAAOwpE,cAAcg1E,kBAAoB,EAC1CD,IACA9+I,KAAK49I,UAAY59I,KAAKg/I,MACtBh/I,KAAKO,OAAOyZ,OAAO,sBAAuBnZ,IAG9Cb,KAAKmrI,YAAYiS,eAAe96I,MAAM,CAAE28I,eAAe,KAGnDj/I,KAAKo8I,gBAELp8I,KAAKmrI,YAAYiS,eAAe96I,MAAM,CAAE28I,eAAe,IAGvDj/I,KAAKmrI,YAAYiS,eAAe96I,QAI5CtC,KAAKo8I,iBAAkB,GAE3BV,EAAcx/I,UAAUgjJ,kBAAoB,WACxC,OAAOl/I,KAAKmrI,YAAYiS,gBAE5B1B,EAAcx/I,UAAUmrE,WAAa,WACjC,OAAOrnE,KAAKo+I,QAAUp+I,KAAK0qD,SAE/BgxF,EAAcx/I,UAAUsgJ,UAAY,SAAU9xF,EAAS2Z,EAAUi5E,GAC7Dt9I,KAAKo+I,OAAS1zF,EAAU2Z,EAAWrkE,KAAKm/I,SAAW7B,EAAgBt9I,KAAKo/I,UAAYp/I,KAAK0qD,QACrF2Z,EAAWrkE,KAAKq/I,QAAU/B,EAAgBt9I,KAAKs/I,SAAWt/I,KAAK+kB,QAEvE22H,EAAcx/I,UAAUqjJ,kBAAoB,SAAUv+I,EAASH,GAC3D,IAAId,EAAQC,KACZA,KAAKmrI,YAAYiS,eAAiBp8I,EAClCZ,YAAW,WACFhD,YAAkB2C,EAAMorI,YAAYiS,kBACjCr9I,EAAMQ,OAAOqjE,sBAAwB7jE,EAAMQ,OAAOksG,wBAClD1sG,EAAM2+I,oBAAoB79I,GAG1Bd,EAAMorI,YAAYiS,eAAe96I,WAG1C,IAEPo5I,EAAcx/I,UAAUoG,MAAQ,SAAUzB,GACtCb,KAAKO,OAAOyZ,OAAO8M,KAAwBjmB,GAC3Cb,KAAKk9I,cACLl9I,KAAKw/I,SAASx/I,KAAKqnE,aAAa81E,eAAgBt8I,IAGpD66I,EAAcx/I,UAAUghJ,YAAc,SAAUr8I,GACvCb,KAAKmrI,YAAYnqI,UAGtBo1B,aAAY,CAACp2B,KAAKmrI,YAAYnqI,QAAShB,KAAKmrI,YAAYiS,gBAAiB,CAAC,YAAa,YACvFp9I,KAAKmrI,YAAYnqI,QAAQq8I,UAAY,IAKzC3B,EAAcx/I,UAAUujJ,WAAa,WACjC,IAAIz3H,EAAOhoB,KAAKqnE,aAAa81E,eACzBn1H,EAAKhnB,UACL60B,YAAS,CAAC7N,EAAKhnB,SAAU,CAAC,cAC1B60B,YAAS,CAAC7N,EAAKo1H,gBAAiB,CAAC,cAMzC1B,EAAcx/I,UAAUwjJ,YAAc,WAClC1/I,KAAKw8I,WAAU,EAAOx8I,KAAKO,OAAO+jE,gBAClCtkE,KAAK2/I,cAKTjE,EAAcx/I,UAAU0jJ,aAAe,WACnC5/I,KAAKw8I,WAAU,EAAMx8I,KAAKO,OAAO+jE,gBACjCtkE,KAAK2/I,cAETjE,EAAcx/I,UAAUyjJ,WAAa,WACjC,IAAI91D,EAAU7pF,KAAKqnE,aAAas1E,OAAOh1H,IAAI,GAAI,EAAG,CAAC,EAAG,GAAI,KAAM3nB,KAAKqnE,aAAaw1E,aAClF78I,KAAKqnE,aAAas1E,OAAOvlH,OAAOyyD,EAAQ,GAAIA,EAAQ,IACpD7pF,KAAKsC,SAETo5I,EAAcx/I,UAAUsjJ,SAAW,SAAUx3H,EAAMnnB,GAG/C,GAFAb,KAAKmrI,YAAcnjH,EACnBhoB,KAAKmrI,YAAY0S,QAAU71H,EAAK61H,UAAYzgJ,YAAkByD,GACzDmnB,EAAKhnB,QAAV,CAGA,IAAI6+I,EAAY73H,EAAKo1H,eAAepnH,UAAUzD,SAAS,WACvD,IAAIstH,EAAJ,CAGI7/I,KAAKmrI,YAAY0S,SACjBhoH,YAAS,CAAC7N,EAAKhnB,SAAU,CAAC,cAE9B60B,YAAS,CAAC7N,EAAKo1H,gBAAiB,CAAC,YACjCp1H,EAAKhnB,QAAQq8I,SAAW,EACnBwC,GACD7/I,KAAKu/I,kBAAkBv3H,EAAKo1H,eAAgBv8I,GAEhDb,KAAKO,OAAOyZ,OAAO8M,IAAmB,CAClC9lB,QAASgnB,EAAKo1H,eACd78I,OAAQynB,EAAKhnB,QACbsmI,QAAStnI,KAAKqnE,aAAas1E,OAAO9yD,QAClCsjD,OAAQ/vI,YAAkByD,GAC1B28I,QAASpgJ,YAAkByD,GAC3BusI,QAASvsI,EACTi/I,OAAQ9/I,KAAK47I,KAAKA,KAClB9mD,UAAW90F,KAAKqnE,aAAa04E,QAAQl/I,GACrCg9I,SAAUzgJ,YAAkByD,GAC5Bi9I,SAAU99I,KAAK47I,OAEnB,IAAIr4I,EAAKvD,KAAKqnE,aAAas1E,OAAO9yD,QAASle,EAAWpoE,EAAG,GAAIy/F,EAAYz/F,EAAG,GAC5EvD,KAAKg8I,YAAc,CAAErwE,SAAUA,EAAUq3B,UAAWA,GACpDhjG,KAAKggJ,iBAAmBhgJ,KAAKO,OAAO0/I,iBAAiBj9C,GAAWvnG,IAChEuE,KAAK+7I,cAAe,KAExBL,EAAcx/I,UAAUggJ,cAAgB,SAAUxxF,GAC9C,IAAI3qD,EAAQC,KACZ,OAAO,SAAUa,GACT6pD,GAAY7pD,EAAEZ,MAAQY,EAAEZ,KAAKokE,WAActkE,EAAMo/I,SACjDp/I,EAAMo/I,SAAW,IAAIe,EAAkBngJ,EAAMQ,QAExCmqD,IAAY3qD,EAAMq/I,WAAcv+I,EAAEZ,MAAQY,EAAEZ,KAAKwsI,yBACtD1sI,EAAMq/I,UAAY,IAAIe,EAAuBpgJ,EAAMQ,QAE9CmqD,IAAY3qD,EAAM2qD,UACvB3qD,EAAM2qD,QAAU,IAAI01F,EAAargJ,EAAMQ,UAEtCmqD,GAAY7pD,EAAEZ,MAAQY,EAAEZ,KAAKokE,WAActkE,EAAMs/I,QAClDt/I,EAAMs/I,QAAU,IAAIgB,EAAiBtgJ,EAAMQ,SAErCmqD,GAAY7pD,EAAEZ,MAAQY,EAAEZ,KAAKwsI,2BAA8B1sI,EAAMu/I,SACvEv/I,EAAMu/I,SAAW,IAAIgB,EAAsBvgJ,EAAMQ,QAE3CmqD,GAAY3qD,EAAMglB,SACxBhlB,EAAMglB,OAAS,IAAIw7H,EAAYxgJ,EAAMQ,SAEzC,IAAIigJ,EAAS91F,EAAW7pD,EAAEZ,MAAQY,EAAEZ,KAAKokE,SAAYtkE,EAAMo/I,SAAYt+I,EAAEZ,MAAQY,EAAEZ,KAAKwsI,yBAClF1sI,EAAMq/I,UAAYr/I,EAAM2qD,QAAW7pD,EAAEZ,MAAQY,EAAEZ,KAAKokE,SAAYtkE,EAAMs/I,QAAWx+I,EAAEZ,MAAQY,EAAEZ,KAAKwsI,yBAClG1sI,EAAMu/I,SAAWv/I,EAAMglB,OACzB+jD,EAAOpe,EAAU7pD,EAAEioE,KAAKznE,MAAMtB,EAAMQ,OAAOisE,YAAc3rE,EAAEioE,KAC3D23E,EAAY/1F,EAAU7pD,EAAEioE,KAAKznE,MAAM,EAAGtB,EAAMQ,OAAOisE,YAAc3rE,EAAEioE,KACnE/oE,EAAMQ,OAAO41I,0BAA4BzrF,IACzCoe,EAAOA,EAAK53C,QAAO,SAAU3P,GAAK,OAAqB,IAAdA,EAAE27C,YAE/C,IAgCYwjF,EAhCRC,GAAiBvjJ,YAAkB2C,EAAMQ,OAAO4uG,aAChDwtC,EAAS6D,EAAO7D,OAAOC,SAAS6D,EAAWD,EAAOxvH,SAAU2vH,GAChE,GAAe,aAAX9/I,EAAEuZ,MAAuBra,EAAMQ,OAAO+jE,eAAgB,CACtD,IACIs8E,EADQ7gJ,EAAMQ,OAAO4qE,uBACE1mE,KAAI,SAAUmmD,GAAO,OAAOA,EAAI3rD,WACvD4hJ,EAAgB/3E,EAAKrkE,KAAI,SAAUmmD,GAAO,OAAOA,EAAI3rD,WAGzD,GAFAc,EAAMo/I,SAASxC,OAAOC,SAASiE,EAAe9gJ,EAAMo/I,SAASnuH,SAAU2vH,GACvE5gJ,EAAM2qD,QAAQiyF,OAAOC,SAASgE,EAAgB7gJ,EAAM2qD,QAAQ15B,SAAU2vH,GAClE5gJ,EAAMQ,OAAO2pE,kBAAoB7N,IAAoB,CACrD,IACIykF,EADS/gJ,EAAMQ,OAAO6qE,2BACH3mE,KAAI,SAAUmmD,GAAO,OAAOA,EAAI3rD,WACvDc,EAAMq/I,UAAUzC,OAAOC,SAASkE,EAAW/gJ,EAAMq/I,UAAUpuH,SAAU2vH,SAIzEH,EAAO7D,OAAOC,SAAS9zE,EAAM03E,EAAOxvH,SAAU2vH,GAelD,GAbAH,EAAOh0C,aAAai0C,EAAW,CAC3B9D,OAAQA,EAAQoE,gBAAkBlgJ,EAAEZ,MAAQY,EAAEZ,KAAKokE,SAAYtkE,EAAMs/I,QAC9Dx+I,EAAEZ,MAAQY,EAAEZ,KAAKwsI,yBAA4B1sI,EAAMu/I,SAAWv/I,EAAMglB,UAE1EsB,IAAQa,UAAYrmB,GAAKA,EAAEZ,OACvBF,EAAMg8I,cAAuC,WAAvBl7I,EAAEZ,KAAKm6F,cAC9Br6F,EAAM+7I,WAAY,EAClB/7I,EAAMQ,OAAOS,QAAQsB,SAEE,aAAvBzB,EAAEZ,KAAKm6F,cACPr6F,EAAM+7I,WAAY,IAGtBj7I,GAAKA,EAAEZ,MAA+B,kBAAvBY,EAAEZ,KAAKm6F,YACtB,GAAIr6F,EAAMorI,YAAY1vI,KAMlB,GAJWoF,EAAEioE,KAAKp/C,MAAK,SAAUkhC,EAAKhuD,GAElC,OADA8jJ,EAAU9jJ,EACHguD,EAAInvD,MAAQsE,EAAMorI,YAAY1vI,SAGrCsE,EAAM2qD,QAAQiyF,OAAO9yD,QAAQ,GAAK62D,EAClC3gJ,EAAM2qD,QAAQiyF,OAAO9yD,QAAQ,GAAK9pF,EAAMQ,OAAO4oI,oBAAoBppI,EAAMigJ,mBAAqB,EAC1FgB,EAAejhJ,EAAMsnE,aAAa81E,eAAeC,gBACnC,CACd,IAAI6D,EAAeD,EAAa3+G,wBAC5B6+G,EAAenhJ,EAAMQ,OAAOS,QAAQqhC,wBACpC4+G,EAAaj+G,KAAO,GAAKi+G,EAAan+G,MAAQ,GAC9Cm+G,EAAal+G,OAASx7B,KAAK6L,IAAI8tI,EAAan+G,MAAOjhC,OAAOkuC,YACtDxvC,SAASqiC,gBAAgB+7B,cAC7BqiF,EAAah+G,QAAU17B,KAAK6L,IAAI8tI,EAAaj+G,OAAQnhC,OAAOiuC,aACxDvvC,SAASqiC,gBAAgBs+G,gBAC7BphJ,EAAMq8I,iBAAkB,EACxBr8I,EAAMuC,eAKjB,GAAIzB,EAAEZ,KAAK+gJ,cAAgBngJ,EAAEZ,KAAK+gJ,aAAahrH,UAAUzD,SAAS,gBAAiB,CACpF,IAAIyuH,KAAejhJ,EAAMQ,OAAOS,QAAQsC,cAAc,IAAMzC,EAAEZ,KAAK+gJ,aAAavnI,MAE5EunI,EAAa1+I,WAMjCo5I,EAAcx/I,UAAUqtB,iBAAmB,WACvC,IAAIxpB,EAAQC,KACRA,KAAKO,OAAO44B,cAGhBvQ,IAAaG,IAAI/oB,KAAKO,OAAOS,QAAS,YAAahB,KAAKs8I,WAAYt8I,MACpE4oB,IAAaG,IAAI/oB,KAAKO,OAAOS,QAAS,QAAShB,KAAKu8I,QAASv8I,MAC7DA,KAAKO,OAAOS,QAAQuoB,iBAAiB,QAASvpB,KAAKohJ,eAAiB,SAAUvgJ,GAAK,OAAOd,EAAM+8I,aAAaj8I,KAAO,GACpH+nB,IAAaG,IAAI/oB,KAAKO,OAAOS,QAAS,WAAYhB,KAAKg9I,OAAQh9I,MAC/DA,KAAKqhJ,YAAc,CAAC,CAAEv6H,MAAOA,KAAkBtN,QAASxZ,KAAKy2H,YACzD,CAAE3vG,MAAOA,IAAatN,QAASxZ,KAAKwxF,SACpC,CAAE1qE,MAAOA,KAAoBtN,QAASxZ,KAAKi8I,WAC3C,CAAEn1H,MAAOA,KAAsBtN,QAASxZ,KAAKi8I,WAC7C,CAAEn1H,MAAOA,KAAgCtN,QAASxZ,KAAKi8I,WACvD,CAAEn1H,MAAOA,KAAuBtN,QAASxZ,KAAKk8I,iBAC9C,CAAEp1H,MAAOA,IAAiBtN,QAASxZ,KAAKk1D,cACxC,CAAEpuC,MAAOA,KAAoBtN,QAASxZ,KAAKk1D,cAC3C,CAAEpuC,MAAO,aAActN,QAASxZ,KAAKu+I,gBACrC,CAAEz3H,MAAO,YAAatN,QAASxZ,KAAKu+I,gBACpC,CAAEz3H,MAAO,mBAAoBtN,QAASxZ,KAAKk1D,cAC3C,CAAEpuC,MAAO,qBAAsBtN,QAASxZ,KAAKshJ,aAC7C,CAAEx6H,MAAO,oBAAqBtN,QAASxZ,KAAKuhJ,wBAC5C,CAAEz6H,MAAO,sBAAuBtN,QAASxZ,KAAKuhJ,wBAC9C,CAAEz6H,MAAOA,IAAgBtN,QAASxZ,KAAKi8I,WACvC,CAAEn1H,MAAOA,IAAmBtN,QAASxZ,KAAKi8I,WAC1C,CAAEn1H,MAAOA,IAAmBtN,QAASxZ,KAAKi8I,WAC1C,CAAEn1H,MAAOA,KAAuBtN,QAASxZ,KAAKi8I,WAC9C,CAAEn1H,MAAOA,KAAetN,QAASxZ,KAAKi8I,WACtC,CAAEn1H,MAAOA,IAAmBtN,QAASxZ,KAAKwhJ,oBAC9CzzE,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,EAAMrhJ,QAEhE07I,EAAcx/I,UAAUolJ,YAAc,WACM,cAApCthJ,KAAKO,OAAO0wE,eAAe9lE,MAC3BnL,KAAKk1D,gBAGbwmF,EAAcx/I,UAAUytB,oBAAsB,WACtC3pB,KAAKO,OAAO44B,cAGhBvQ,IAAaa,OAAOzpB,KAAKO,OAAOS,QAAS,YAAahB,KAAKs8I,YAC3D1zH,IAAaa,OAAOzpB,KAAKO,OAAOS,QAAS,QAAShB,KAAKu8I,SACvD3zH,IAAaa,OAAOzpB,KAAKO,OAAOS,QAAS,WAAYhB,KAAKg9I,QAC1Dh9I,KAAKO,OAAOS,QAAQ2oB,oBAAoB,QAAS3pB,KAAKohJ,gBAAgB,GACtErzE,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,KAE1D3F,EAAcx/I,UAAUif,QAAU,WAC9Bnb,KAAK2pB,uBAET+xH,EAAcx/I,UAAUg5D,aAAe,WACnCl1D,KAAKw/I,SAASx/I,KAAKqnE,aAAa81E,iBAEpCzB,EAAcx/I,UAAUqlJ,uBAAyB,SAAU1gJ,GACvD,IAAKb,KAAKO,OAAOksG,wBAAyB,CACtC,IAAIkwC,EAAS38I,KAAKqnE,aAAas1E,OAC3B9yD,EAAU8yD,EAAO9yD,QACrB,OAAQhpF,EAAEu5F,aACN,IAAK,WACL,IAAK,aACDvQ,EAAQ,IAAKA,EAAQhtF,QAChBmD,KAAKO,OAAOy6D,cAAc4N,mBAAsBxrE,YAAkBu/I,EAAOA,OAAO9yD,EAAQ,KAChC,aAAlBhpF,EAAEu5F,YAA6BvQ,EAAQ,GAAK,EAAIA,EAAQ,GAAK,EAApG8yD,EAAOA,OAAO9yD,EAAQ,IAAI1rF,QAAQ,GAG9C6B,KAAKqnE,aAAas1E,OAAO9yD,QAAUA,EACnC7pF,KAAKw/I,SAASx/I,KAAKqnE,aAAa81E,kBAGxCzB,EAAcx/I,UAAUwhJ,aAAe,WACnC19I,KAAKqnE,aAAas1E,OAAO9yD,QAAU7pF,KAAKqnE,aAAas1E,OAAOh1H,IAAI,GAAI,EAAG,CAAC,EAAG,GAAI,YAAa3nB,KAAKqnE,aAAaw1E,aAC9G78I,KAAKu+I,kBAET7C,EAAcx/I,UAAUqiJ,eAAiB,WAChCv+I,KAAKmrI,YAAYnqI,SAAYhB,KAAKmrI,YAAYiS,gBAGnDhnH,aAAY,CAACp2B,KAAKmrI,YAAYnqI,QAAShB,KAAKmrI,YAAYiS,gBAAiB,CAAC,UAAW,eAEzF1B,EAAcx/I,UAAUulJ,eAAiB,WACrC,IAAI5F,EAAS77I,KAAK67I,OAElB,OADA77I,KAAK67I,QAAS,EACPA,IAAW39I,OAAOjB,KAAK+C,KAAKg8I,aAAan/I,OAAS,CAAE8uE,SAAU,KAAMq3B,UAAW,MAAShjG,KAAKg8I,aAExGN,EAAcx/I,UAAUwlJ,eAAiB,WACrC1hJ,KAAK67I,QAAS,GAElBH,EAAcx/I,UAAUmiJ,eAAiB,SAAUv4G,EAAQs4G,GACvD,IAAIr+I,EAAQC,KACZ,GAAKA,KAAKO,OAAO+jE,gBAA6C,IAA3BtkE,KAAKO,OAAOisE,WAA/C,CAIA,IAAIxkD,EACAm0H,EAAU,CACV,KAAQ,WAAc,MAAQ,CAAE6B,UAAWh2H,EAAK4lD,UAAWqwE,UAAU,IACrE,IAAO,WAAc,MAAQ,CAAED,UAAWh2H,EAAK4lD,UAAWqwE,UAAU,IACpE,SAAY,WAAc,MAAQ,CAAED,UAAU,EAAMC,SAAUl+I,EAAMQ,OAAO+jE,iBAC3E,QAAW,WAAc,MAAQ,CAAE05E,UAAU,EAAOC,UAAU,KAElE,GAAMn4G,KAAUq2G,EAAhB,CAGAn0H,EAAOo2H,EAAO2B,UACd,IAAInE,EAAOO,EAAQr2G,KACnB9lC,KAAKw8I,WAAWZ,EAAKoC,SAAUpC,EAAKqC,UACpCj+I,KAAKqnE,aAAas1E,OAAO9yD,QAAUu0D,EAAOzB,OAAO9yD,WAErD6xD,EAAcx/I,UAAUslJ,kBAAoB,SAAU3gJ,GAClD,GAAMA,EAAEssI,OAAStsI,EAAEi0F,UAAUlnB,WAAkC,UAArB/sE,EAAEusI,QAAQtnG,SAC5CjlC,EAAEN,OAAOy1B,UAAUzD,SAAS,iBAC5B1xB,EAAEN,OAAOy1B,UAAUzD,SAAS,kBAAoB1xB,EAAEN,OAAOy1B,UAAUzD,SAAS,mBAFpF,CAKAvyB,KAAKu+I,iBACL,IAAIoD,EAAW3hJ,KAAKqnE,aAAau6E,aAAa5hJ,KAAKk/I,qBACnDl/I,KAAKu/I,kBAAkBoC,GACvB3hJ,KAAKmrI,YAAY4R,YAAa,IAE3BrB,EA1fwB,GAkgB/BmG,EAAwB,WACxB,SAASA,IACL7hJ,KAAK28I,OAAS,GACd38I,KAAK6pF,QAAU,GAuEnB,OArEAg4D,EAAO3lJ,UAAU2rB,IAAM,SAAU8jD,EAAUkJ,EAAaitE,GACpDn2E,EAAWpkE,KAAK8L,IAAI,EAAG9L,KAAK6L,IAAIu4D,EAAU3rE,KAAK8oE,OAC/C+L,EAActtE,KAAK8L,IAAI,EAAG9L,KAAK6L,IAAIyhE,EAAa70E,KAAK+5D,UACrD/5D,KAAK28I,OAAOhxE,GAAY3rE,KAAK28I,OAAOhxE,IAAa,GACjD3rE,KAAK28I,OAAOhxE,GAAUkJ,GAAeitE,EAAQ,EAAI,GAErDD,EAAO3lJ,UAAUyrB,IAAM,SAAUgkD,EAAUkJ,EAAajuD,EAAWkf,EAAQ+2G,GACvE,IAAI5xD,EAAMpW,EACV,GAAIlJ,EAAW/kD,EAAU,GAAK,EAC1B,MAAO,CAAC+kD,EAAUkJ,GAEtBlJ,EAAWpkE,KAAK8L,IAAI,EAAG9L,KAAK6L,IAAIu4D,EAAW/kD,EAAU,GAAI5mB,KAAK8oE,OAC9D,IAAIi5E,GAAa,EACjB,GAAI3kJ,YAAkB4C,KAAK28I,OAAOhxE,IAC9B,OAAO,KAGX,GADAkJ,EAActtE,KAAK8L,IAAI,EAAG9L,KAAK6L,IAAIyhE,EAAcjuD,EAAU,GAAI5mB,KAAK28I,OAAOhxE,GAAU9uE,OAAS,IAC1FouF,EAAMrkE,EAAU,GAAK5mB,KAAK28I,OAAOhxE,GAAU9uE,OAAS,GAAKggJ,EAAUlxE,EAAUkJ,EAAa/uC,GAC1F,MAAO,CAAC6lC,EAAUsf,GAEtB,IAAIzsF,EAAQwB,KAAKxB,MAAMwB,KAAK28I,OAAOhxE,GAAWkJ,EAAajuD,GAAW,EAAMkf,GAC5E+uC,EAAwB,OAAVr2E,EAAiBysF,EAAMzsF,EACrC,IAAIyG,EAAM5I,YAASsvE,EAAW,IAAMkJ,EAAa70E,KAAK28I,QAItD,GAHIhxE,IAAa3rE,KAAK8oE,MAAoB,cAAXhjC,GAAqC,UAAXA,IACrDlf,EAAU,IAAM,GAEN,OAAVpoB,EAAgB,CAChB,IAAK,IAAI5B,EAAI,EAAGA,EAAIoD,KAAK8oE,KAAMlsE,IAC3B,GAAIoD,KAAK28I,OAAO//I,GAAG8sB,MAAK,SAAUozF,GAAK,OAAa,IAANA,KAAa,CACvDilC,GAAa,EACb,MAGR,GAAIA,EAEA,MAAO,CADPp2E,EAAW3rE,KAAK6pF,QAAQ,GACNhV,GAG1B,OAAO70E,KAAKgiJ,QAAQ/8I,KAAS43I,EAAUlxE,EAAUkJ,EAAa/uC,GAC1D9lC,KAAK2nB,IAAIgkD,EAAUsf,EAAKrkE,EAAWkf,EAAQ+2G,GAAa,CAAClxE,EAAUkJ,IAE3EgtE,EAAO3lJ,UAAUsC,MAAQ,SAAUyjJ,EAAQznI,EAAOoM,EAAWs7H,EAAQp8G,GACjE,OAAMtrB,EAAQ,GAAKA,IAAUynI,EAAOplJ,SAAWmD,KAAKgiJ,QAAQC,EAAOznI,KAChD,YAAXsrB,GAAmC,cAAXA,IAA6Bm8G,EAAOv4H,MAAK,SAAUozF,GAAK,OAAa,IAANA,KACpF,KAEH98G,KAAKgiJ,QAAQC,EAAOznI,IACxBxa,KAAKxB,MAAMyjJ,GAA+E,IAAtE,CAAC,UAAW,YAAa,UAAW,aAAa9jJ,QAAQ2nC,GAAkBo8G,EAAS,IAAM1nI,EAAQA,EAAQoM,EAAU,GAAIA,GAAW,EAAOkf,GAD5HtrB,GAG1CqnI,EAAO3lJ,UAAUk7B,OAAS,SAAUu0C,EAAUkJ,GAC1ClJ,EAAWpkE,KAAK8L,IAAI,EAAG9L,KAAK6L,IAAIu4D,EAAU3rE,KAAK8oE,OAC/C+L,EAActtE,KAAK8L,IAAI,EAAG9L,KAAK6L,IAAIyhE,EAAa70E,KAAK28I,OAAOhxE,GAAU9uE,OAAS,IAC/EmD,KAAK6pF,QAAU,CAACle,EAAUkJ,IAE9BgtE,EAAO3lJ,UAAU0gJ,SAAW,SAAU9zE,EAAM93C,EAAU2vH,GAClD3gJ,KAAK8oE,KAAOA,EAAKjsE,OAAS,EAC1BmD,KAAK28I,OAAS,GACd,IAAK,IAAI//I,EAAI,EAAGA,EAAIksE,EAAKjsE,OAAQD,IAAK,CAClC,IAAI0jE,EAAQwI,EAAKlsE,GAAG0jE,MAAMpvC,QAAO,SAAUtpB,GAAK,OAAuB,IAAhBA,EAAE4oG,aACzDxwG,KAAK+5D,QAAUxyD,KAAK8L,IAAIitD,EAAMzjE,OAAS,EAAkB,EAAfmD,KAAK+5D,SAC/C,IAAK,IAAI5xD,EAAI,EAAGA,EAAIm4D,EAAMzjE,OAAQsL,IAC9BnI,KAAK6nB,IAAIjrB,EAAGuL,GAAuB,IAApB2gE,EAAKlsE,GAAGsgE,SAA4BlsC,EAAS83C,EAAKlsE,GAAI0jE,EAAMn4D,GAAIw4I,IAGvF,OAAO3gJ,KAAK28I,QAEhBkF,EAAO3lJ,UAAU8lJ,QAAU,SAAUxlJ,GACjC,OAAiB,IAAVA,QAAyBR,IAAVQ,GAEnBqlJ,EA1EiB,GAgFxBzB,EAA8B,WAC9B,SAASA,EAAa7/I,GAClB,IAAIR,EAAQC,KACZA,KAAK28I,OAAS,IAAIkF,EAClB7hJ,KAAKs+I,aAAc,EACnBt+I,KAAKO,OAASA,EACdP,KAAKmiJ,WAAa,CACd,WAAc,CAAC,EAAG,GAClB,IAAO,CAAC,EAAG,GACX,UAAa,CAAC,GAAI,GAClB,SAAY,CAAC,GAAI,GACjB,QAAW,EAAE,EAAG,GAChB,UAAa,CAAC,EAAG,GACjB,QAAW,EAAE,EAAG,GAChB,UAAa,CAAC,EAAG,GACjB,WAAc,CAAC,EAAG,GAClB,UAAa,CAAC,GAAI,GAClB,MAAS,CAAC,EAAG,GACb,WAAc,EAAE,EAAG,IAEvBniJ,KAAKoiJ,aAAe,SAAUt8G,GAO1B,MANU,CACN,KAAQ,CAAC/lC,EAAM48I,OAAO9yD,QAAQ,IAAK,EAAG,EAAG,GACzC,IAAO,CAAC9pF,EAAM48I,OAAO9yD,QAAQ,GAAI9pF,EAAM48I,OAAO5iF,QAAU,EAAG,GAAI,GAC/D,SAAY,CAAC,GAAI,EAAG,EAAG,GACvB,QAAW,CAACh6D,EAAM48I,OAAO7zE,KAAM/oE,EAAM48I,OAAO5iF,QAAU,EAAG,GAAI,IAEtDj0B,IAAW,MA2Q9B,OAxQAs6G,EAAalkJ,UAAU0pI,SAAW,WAC9B,OAAQ5lI,KAAKO,OAAO+jE,eAChBtkE,KAAKO,OAAO8mE,aAAa/jE,cAAc,8BACvCtD,KAAKO,OAAOy4I,mBAEpBoH,EAAalkJ,UAAUu6H,WAAa,SAAU51H,GAC1C,IAAI+lB,EAAY5mB,KAAKmiJ,WAAWthJ,EAAEilC,QAC9B+jD,EAAU7pF,KAAKqiJ,qBAAqBxhJ,EAAEilC,OAAQlf,EAAW/lB,EAAEilC,UAAU9lC,KAAKmiJ,WAAYthJ,GAC1F,GAAKgpF,EAAL,CAGA,IAAK,CAAC,MAAO,YAAY1rF,QAAQ0C,EAAEilC,SAAW,GAAK9lC,KAAK28I,OAAO9yD,SAAW,IAAI18E,aAAe08E,EAAQ18E,WAAY,CAC7G,GAAI08E,EAAQ18E,aAAe,CAACnN,KAAK28I,OAAO7zE,KAAM9oE,KAAK28I,OAAO5iF,SAAS5sD,YAC/D08E,EAAQ18E,aAAe,CAAC,EAAG,GAAGA,YAAenN,KAAK28I,OAAO9yD,QAAQ,KAAO7pF,KAAK28I,OAAO7zE,MACpF9oE,KAAK28I,OAAO9yD,QAAQ18E,aAAe08E,EAAQ18E,WAC3C,OAAO,EAGP08E,EAAU7pF,KAAKsiJ,YAAYz4D,EAAQ,GAAIA,EAAQ,GAAIhpF,EAAEilC,QAG7D9lC,KAAK28I,OAAOvlH,OAAOyyD,EAAQ,GAAIA,EAAQ,MAE3Cu2D,EAAalkJ,UAAUomJ,YAAc,SAAU32E,EAAUq3B,EAAWl9D,GAChE,IAAIm0B,EAAOj6D,KAAKO,OACZ+hJ,EAAcroF,EAAKyF,aAAa6iF,mBAAqBtoF,EAAKooC,QAAUpoC,EAAKuoF,sBACzEC,EAAexoF,EAAKqqE,sBAAsBrqE,EAAKwO,oBAAoB,GAAGjP,OACtEumB,EAAO//E,KAAK4lI,WAAW98D,KAAK6C,GAAUrL,MAAM0iC,GACjC,QAAXl9D,GAAoBw8G,IACpB32E,IAGAq3B,EAAYy/C,GAFCziJ,KAAK4lI,WAAW98D,KAAK6C,GAAU18C,uBAAuB,gBAAgBpyB,OAC/EmD,KAAK4lI,WAAW98D,KAAK6C,GAAU18C,uBAAuB,uBAAuBpyB,SAOrF,MAJe,aAAXipC,GAAyBw8G,IACzB32E,IACAq3B,EAAY/oC,EAAKqqE,sBAAsBrqE,EAAKwO,oBAAoBxO,EAAKwO,oBAAoB5rE,OAAS,GAAG28D,QAEjGumB,EAAK/pD,UAAUzD,SAAS8pC,MAAsB0jB,EAAK/pD,UAAUzD,SAAS,iBACzEwtD,EAAK/pD,UAAUzD,SAAS,kBACuB,CAACo5C,EAAUq3B,GAA3DhjG,KAAKsiJ,YAAY32E,EAAUq3B,EAAWl9D,IAE9Cs6G,EAAalkJ,UAAUmmJ,qBAAuB,SAAUv8G,EAAQlf,EAAW87H,EAAW7hJ,GAElF,QADkB,IAAd+lB,IAAwBA,EAAY,CAAC,EAAG,KACvC87H,IAAc1iJ,KAAKoiJ,aAAat8G,IAA2C,IAA/B9lC,KAAK28I,OAAO9yD,QAAQhtF,OACjE,OAAO,KAEX,IAAKmD,KAAK2iJ,kBAAkB9hJ,GACxB,OAAOb,KAAK28I,OAAO9yD,QAEvB,IAAItmF,EAAKvD,KAAKoiJ,aAAat8G,IAAW9lC,KAAK28I,OAAO9yD,QAAQ/3D,OAAOlL,GAAY+kD,EAAWpoE,EAAG,GAAIy/F,EAAYz/F,EAAG,GAAIq/I,EAAKr/I,EAAG,GAAIs/I,EAAKt/I,EAAG,GAEtI,OADcvD,KAAK28I,OAAOh1H,IAAIgkD,EAAUq3B,EAAW,CAAC4/C,EAAIC,GAAK/8G,EAAQ9lC,KAAK68I,cAG9EuD,EAAalkJ,UAAUs1F,QAAU,SAAU3wF,EAAGmqE,GAC1C,IAAI/tC,EAASp8B,EAAEo8B,OAQf,GAPAj9B,KAAKi9B,OAASA,EAEdA,GADAA,EAAUA,EAAOjH,UAAUzD,SAAS8pC,KAAoBp/B,EAASrF,YAAQqF,EAAQ,SACtDrF,YAAQ/2B,EAAEo8B,OAAQ,2BACtCrF,YAAQ/2B,EAAEo8B,OAAQ,2BAGzBA,GAFAA,EAASrF,YAAQ/2B,EAAEo8B,OAAQ,oBACvB7/B,YAAkBw6B,YAAQA,YAAQ/2B,EAAEo8B,OAAQ,WAAY,oBAAsB,KAAgBA,IAC/ErF,YAAQqF,EAAQ,SAASjH,UAAUzD,SAAS8pC,KAAkBp/B,EAAS,MAEtF,OAAO,EAEX,IAAI15B,EAAK,CAAC05B,EAAO2W,cAAc+3B,SAAU1uC,EAAO+lE,WAAYr3B,EAAWpoE,EAAG,GAAIy/F,EAAYz/F,EAAG,GACzFwxB,EAAK/0B,KAAK28I,OAAO9yD,QAASi5D,EAAY/tH,EAAG,GAAIguH,EAAahuH,EAAG,GAC7D9vB,EAAM5I,YAASsvE,EAAW,IAAMq3B,EAAWhjG,KAAK28I,OAAOA,QAC3D,GAAI38I,KAAK28I,OAAOqF,QAAQ/8I,KAAU+lE,GAAS83E,IAAcn3E,GAAYo3E,IAAe//C,IAC9ErlC,aAAa98D,EAAEo8B,OAAQo/B,OAAsBsB,aAAa98D,EAAEo8B,OAAQ,kBACtE,OAAO,EAEXj9B,KAAK28I,OAAOvlH,OAAOu0C,EAAUq3B,IAEjCo9C,EAAalkJ,UAAUihJ,aAAe,WAClC,IAAIn1H,EAAO,GACPzkB,EAAKvD,KAAK28I,OAAO9yD,QAAS90D,EAAKxxB,EAAG,GAAIooE,OAAkB,IAAP52C,EAAgB,EAAIA,EAAII,EAAK5xB,EAAG,GAAIy/F,OAAmB,IAAP7tE,EAAgB,EAAIA,EAGzH,OAFAn1B,KAAK28I,OAAO9yD,QAAU,CAACle,EAAUq3B,GACjCh7E,EAAKhnB,QAAW5D,YAAkB4C,KAAK4lI,WAAW98D,KAAK6C,IAA+D,KAAlD3rE,KAAK4lI,WAAW98D,KAAK6C,GAAUrL,MAAM0iC,GACpGh7E,EAAKhnB,SAGVgnB,EAAKo1H,eAAkBp1H,EAAKhnB,QAAQg1B,UAAUzD,SAAS,kBAAqBvK,EAAKhnB,QAAQg1B,UAAUzD,SAAS,gBACpEvK,EAAKhnB,QAAvChB,KAAK4hJ,aAAa55H,EAAKhnB,SAC7BgnB,EAAK61H,SAAU,EACf71H,EAAKvsB,IAAMusB,EAAKhnB,QAAQ4yC,cAAczkB,aAAa,YAC5CnH,GANIA,GAQfo4H,EAAalkJ,UAAU0lJ,aAAe,SAAU5gJ,GAC5C,IAAI2gE,EAAQ,gGACR2iC,GAAclnG,YAAkBw6B,YAAQ52B,EAAS,oBACjDhB,KAAKO,OAAO8hG,SACZ1gC,EAAQ,0EAEZ,IAAIrhE,EAAQ,GAAGe,MAAMC,KAAKN,EAAQQ,iBAAiBmgE,IAKnD,OAAOrhE,EAAMzD,OAASynG,GAAchkG,EAAMzD,OAAS,EAAImD,KAAKi9B,OAAS38B,EAAM,GAAKU,GAEpFo/I,EAAalkJ,UAAU80B,SAAW,SAAU45B,EAAKm1B,EAAM4gE,GACnD,IAAIjkC,EAAQ,CAACnuC,IAAS0oE,OAAQ1oE,IAAS+oE,aAAc/oE,IAAS2uC,eAAgB3uC,IAASwuC,cACvF,OAASnyD,EAAI6P,WAAaslB,EAAK7iB,UAAY6iB,EAAKmuB,YAAcnuB,EAAKukB,aAC3D15C,EAAI6P,WAAaslB,EAAKykB,WAAaj2B,IAASy+B,cAAgB5vG,YAAkB2iF,EAAK7iB,WAClFtS,EAAI6P,WAAaiiD,EAAMv+G,QAAQ4hF,EAAKykB,WAAa,GAClDzkB,EAAKtmB,QAA+B,aAArBsmB,EAAKtmB,OAAOtuD,MAC3B40E,EAAKykB,WAAaj2B,IAASs/B,eAC3BjjD,EAAI6P,WAAakmF,MACH,WAAb/1F,EAAIy9C,MAAqBz9C,EAAIkrF,UAE1CsK,EAAalkJ,UAAU8mJ,qBAAuB,SAAUxoI,GAEpD,IADA,IAAIyoI,EAAYzoI,EACP5d,EAAI4d,EAAO7Y,EAAM3B,KAAK28I,OAAO7zE,KAAMlsE,EAAI+E,EAAK/E,IAAK,CACtD,IAA8C,IAA1CoD,KAAK28I,OAAOA,OAAOniI,GAAOrc,QAAQ,GAIlC,OAAOqc,EAHPA,GAAgB,EAOxB,OADAxa,KAAKs+I,aAAc,EACZ2E,GAEX7C,EAAalkJ,UAAUgnJ,yBAA2B,SAAU1oI,GAExD,IADA,IAAI2oI,EAAa3oI,EACR5d,EAAI4d,EAAgB5d,GAAH,EAAaA,IAAK,CACxC,IAA8C,IAA1CoD,KAAK28I,OAAOA,OAAOniI,GAAOrc,QAAQ,GAQlC,OAAOqc,EANP,IADAA,GAAgB,GACJ,EAER,OADAxa,KAAKs+I,aAAc,EACZ6E,EAOnB,OAAOA,GAEX/C,EAAalkJ,UAAU6hJ,KAAO,SAAUj4G,EAAQ+jD,GAC5C,IAAIu5D,EAAapjJ,KAAKO,OAAOgqE,uBACZ,cAAXzkC,GAAqC,aAAXA,IAAyC,IAAf+jD,EAAQ,GAC9D9mD,GAAqB,eAAX+C,GAAsC,QAAXA,IAAqB+jD,EAAQ,KAAO7pF,KAAK28I,OAAO5iF,QACrFspF,EAASrjJ,KAAKO,OAAO2pE,kBAAoB7N,KAAsBt5B,EAC/B,UAAhC/iC,KAAKO,OAAO2pE,kBACZk5E,EAAargH,GAEjB/iC,KAAKs+I,aAAc,EACnB,IAAIgF,EAAyC,IAA3BtjJ,KAAKO,OAAOisE,YAA+B,eAAX1mC,EACnC,QAAXA,GAAqB9lC,KAAKO,OAAO8hG,QACjCxY,EAAQ,KAAO7pF,KAAK28I,OAAOA,OAAO9yD,EAAQ,IAAIn4E,YAAY,IAAM1R,KAAK28I,OAAOA,OAAO9/I,OAAS,IAAMgtF,EAAQ,KAC1G7pF,KAAK28I,OAAO9yD,QAAQ,GAAK7pF,KAAKgjJ,qBAAqBhjJ,KAAK28I,OAAO9yD,QAAQ,GAAK,GAC5E7pF,KAAK28I,OAAO9yD,QAAQ,IAAM,EAC1Bu5D,EAAapjJ,KAAKO,OAAO+jE,gBAEd,aAAXx+B,GAA0B9lC,KAAKO,OAAO8hG,QACvB,IAAfxY,EAAQ,IAAY7pF,KAAK28I,OAAOA,OAAO9yD,EAAQ,IAAI1rF,QAAQ,KAAO0rF,EAAQ,KAC1E7pF,KAAK28I,OAAO9yD,QAAQ,GAAK7pF,KAAKkjJ,yBAAyBljJ,KAAK28I,OAAO9yD,QAAQ,GAAK,GAChF7pF,KAAK28I,OAAO9yD,QAAQ,GAAK7pF,KAAK28I,OAAOA,OAAO9yD,EAAQ,IAAIhtF,QAE5D,IAAI0mJ,GAAgB,EAChB34F,EAAMpqD,SAASo1F,cAAchiD,eAC5B5zC,KAAKO,OAAOqjE,sBAAwB5jE,KAAKO,OAAO6wI,uBAAuBC,cACrEzmF,EAAI50B,UAAUzD,SAAS8pC,OAE1BknF,EADeptI,SAASy0C,EAAIz7B,aAAaktC,KAAwB,IACtC,GAQ/B,MANW,CACPu/E,MAAO2H,KAA6B,YAAXz9G,GAAwBw9G,IAA+B,IAAfz5D,EAAQ,IAAau5D,GAAcC,GACpGrF,UAAsB,YAAXl4G,GAAwBw9G,IAA+B,IAAfz5D,EAAQ,GAC3Do0D,SAAUmF,EACVlF,cAAemF,IAIvBjD,EAAalkJ,UAAUiiJ,eAAiB,SAAUqF,EAAU5H,EAAMwC,EAAQt4G,QACrD,IAAb09G,IAAuBA,EAAW,IACtC,IAAI35D,EAAU,GAmBd,MAlBoC,UAAhC7pF,KAAKO,OAAO2pE,iBAA+BlqE,KAAKO,OAAO2pE,kBAAoB7N,KAC5D,cAAXv2B,GAAqC,aAAXA,IAC1B+jD,EAAQ,GAAK25D,EAAS,GACtB35D,EAAQ,GAAKu0D,EAAOzB,OAAO5iF,QAAU,GAErC/5D,KAAKO,OAAO2pE,kBAAoB7N,KAAkC,eAAXv2B,GAAsC,QAAXA,IAClF+jD,EAAQ,GAAK25D,EAAS,GACtB35D,EAAQ,IAAM,IAGF,eAAX/jD,GAAsC,QAAXA,IAChC+jD,EAAQ,GAAK25D,EAAS,GACtB35D,EAAQ,IAAM,GAEH,cAAX/jD,GAAqC,UAAXA,IAC1B+jD,EAAQ,IAAM,EACdA,EAAQ,GAAK25D,EAAS,IAEnB35D,GAEXu2D,EAAalkJ,UAAUswG,aAAe,SAAU1jC,EAAM26E,GAClD,IAAIlgJ,EACAo5I,EAAS8G,EAAU9G,OAAQoE,EAAkB0C,EAAU1C,gBACvDp/I,EAAMo/I,EAAgBpE,OAAOA,OAAO9/I,OACpC6mJ,EAAa1jJ,KAAKO,OAAOynG,gBAAsD,cAApChoG,KAAKO,OAAO0wE,eAAe9lE,KAAuBxJ,EAAM,EAAIA,EAC3Go/I,EAAgBpE,OAAOA,OAASoE,EAAgBpE,OAAOA,OAAOt7I,MAAM,EAAGqiJ,GACvE3C,EAAgBpE,OAAO7zE,KAAO46E,GAC7BngJ,EAAKw9I,EAAgBpE,OAAOA,QAAQ/6I,KAAKxF,MAAMmH,EAAIo5I,GACpDoE,EAAgBpE,OAAO7zE,MAAQ6zE,EAAO9/I,QAE1CujJ,EAAalkJ,UAAU6jJ,QAAU,SAAUl/I,GACvC,IAAImnB,EAAOhoB,KAAKm9I,eACZ55I,EAAKvD,KAAK28I,OAAO9yD,QAAS85D,EAASpgJ,EAAG,GAAIqgJ,EAASrgJ,EAAG,GACtDsgJ,EAAS77H,EAAKhnB,QAAQg1B,UAAUzD,SAAS8pC,KACzCynF,EAAeD,GAAWhjJ,GAAkB,UAAbA,EAAEilC,SAAuB9d,EAAKhnB,QAAQg1B,UAAUzD,SAAS,wBACrFvK,EAAKhnB,QAAQg1B,UAAUzD,SAAS,sBAEnCwC,EAAK,CAACxtB,KAAK6L,IAAI+C,SAAS6R,EAAKhnB,QAAQ4yC,cAAczkB,aAAaktC,KAAwB,IAAKsnF,GAC7Fp8I,KAAK6L,IAAI+C,SAAS6R,EAAKhnB,QAAQmuB,aAAaktC,KAAwB,IAAKunF,IAC7E,MAAO,CAAEh2E,WAAW,EAAMsgC,WAAY21C,EAAQvc,QAAS,CAD2CvyG,EAAG,GAAgBA,EAAG,IAC1C+uH,aAAcA,IAEhG1D,EAAalkJ,UAAU2gJ,UAAY,WAC/B,IAAIlyF,EAAQ3qD,KAAK4lI,WACjB,OAAO,SAAUj6D,EAAUq3B,EAAWl9D,GAClC,IAAK1oC,YAAkButD,EAAMme,KAAK6C,IAAY,CAC1C,IAAIoU,OAAO,EACXijB,EAAYr4C,EAAMrnD,cAAc,eAAiB,EAAI0/F,EAOrD,IAAI+gD,EAAqD,KALrDhkE,EADAp1B,EAAMme,KAAK6C,GAAUrL,MAAM,GAAGtqC,UAAUzD,SAAS,cAC1Co4B,EAAMme,KAAK6C,GAAUrL,MAAM,GAAG9+D,iBAAiB,MAAMwhG,GAGrDr4C,EAAMme,KAAK6C,GAAUrL,MAAM0iC,IAEf3gE,wBAAwBqN,MAC/C,GAAe,UAAX5J,GAAiC,eAAXA,EACtB,OAAOi+G,GAAehkE,EAAK/pD,UAAUzD,SAAS8pC,KAElD,IAAgB,YAAXv2B,GAAmC,cAAXA,IAA2Bi6C,EAAK/pD,UAAUzD,SAAS8pC,KAC5E,OAAO0nF,EAEN,GAAe,YAAXj+G,GAAmC,cAAXA,EAC7B,OAAOi+G,EAGf,OAAO,IAGf3D,EAAalkJ,UAAUymJ,kBAAoB,SAAU9hJ,GACjD,IAAI0C,EAAKvD,KAAK28I,OAAO9yD,QAAS90D,EAAKxxB,EAAG,GAAIogJ,OAAgB,IAAP5uH,GAAiB,EAAIA,EAAII,EAAK5xB,EAAG,GAAIqgJ,OAAgB,IAAPzuH,GAAiB,EAAIA,EACtH,GAAIwuH,EAAS,GAAKC,EAAS,EACvB,OAAO,EAEX,IAAI7jE,EAAO1jF,YAASsnJ,EAAS,UAAYC,EAAQ5jJ,KAAK4lI,WAAW98D,MACjE,OAAKiX,IAGe,UAAbl/E,EAAEilC,QAAmC,eAAbjlC,EAAEilC,QAC7Bi6C,EAAK/pD,UAAUzD,SAAS8pC,OAAsB0jB,EAAK/pD,UAAUzD,SAAS,oBAC7DwtD,EAAK/pD,UAAUzD,SAAS,mBAAqBwtD,EAAK/pD,UAAUzD,SAAS,wBACtEwtD,EAAK/pD,UAAUzD,SAAS,kBAExC6tH,EAAalkJ,UAAU8nJ,gBAAkB,WACrC,OAAOhkJ,KAAKO,OAAO0jJ,gBAAkBjkJ,KAAKO,OAAOmjG,kBAAkBwgD,sBAEhE9D,EAtSuB,GA4S9BG,EAA6B,SAAUphH,GAEvC,SAASohH,EAAYhgJ,GACjB,OAAO4+B,EAAO79B,KAAKtB,KAAMO,IAAWP,KAqIxC,OAvIAq+B,EAAUkiH,EAAaphH,GAIvBohH,EAAYrkJ,UAAU0pI,SAAW,WAC7B,OAAQ5lI,KAAKO,OAAO+jE,eAChBtkE,KAAKO,OAAOopI,mBAAmBrmI,cAAc,6BAC7CtD,KAAKO,OAAOsnI,kBAEpB0Y,EAAYrkJ,UAAUs1F,QAAU,SAAU3wF,GACtC,IAAIo8B,EAASp8B,EAAEo8B,OAMf,IALAA,EAAUA,EAAOjH,UAAUzD,SAAS,gBAAkB0K,EAASrF,YAAQqF,EAAQ,QACrC,IAA3Bj9B,KAAKO,OAAOisE,aACvBvvC,EAAUp8B,EAAEo8B,OAAOjH,UAAUzD,SAAS8pC,KAAoBx7D,EAAEo8B,OACxDrF,YAAQ/2B,EAAEo8B,OAAQ,OAEtBp8B,EAAEo8B,OAAOjH,UAAUzD,SAAS,mBAC5B1xB,EAAEo8B,OAAO35B,cAAc,wBACvB,OAAO,EAEX,GAAK25B,EAAL,CAGA,IAAI15B,EAAK,CAAC05B,EAAO2W,cAAc+3B,SAAU1uC,EAAO+lE,WAAYr3B,EAAWpoE,EAAG,GAAIy/F,EAAYz/F,EAAG,GACzF0B,EAAM5I,YAASsvE,EAAW,IAAMq3B,EAAWhjG,KAAK28I,OAAOA,QAC3D,GAAI38I,KAAK28I,OAAOqF,QAAQ/8I,GACpB,OAAO,EAEXjF,KAAK28I,OAAOvlH,OAAO6F,EAAO2W,cAAc+3B,SAAU1uC,EAAO+lE,aAE7Du9C,EAAYrkJ,UAAUihJ,aAAe,WACjC,IAAIn1H,EAAO,GACPzkB,EAAKvD,KAAK28I,OAAO9yD,QAAS90D,EAAKxxB,EAAG,GAAIooE,OAAkB,IAAP52C,EAAgB,EAAIA,EAAII,EAAK5xB,EAAG,GAAIy/F,OAAmB,IAAP7tE,EAAgB,EAAIA,EAMzH,OALAnN,EAAKhnB,QAAUhB,KAAK4lI,WAAW98D,KAAK6C,GAAUrL,MAAM0iC,GAC/C5lG,YAAkB4qB,EAAKhnB,WACxBgnB,EAAKo1H,eAAiBp9I,KAAK4hJ,aAAa55H,EAAKhnB,SAC7CgnB,EAAK61H,SAAW71H,EAAKhnB,QAAQg1B,UAAUzD,SAAS,oBAE7CvK,GAEXu4H,EAAYrkJ,UAAU80B,SAAW,SAAU45B,EAAKm1B,GAC5C,OAAQA,EAAK7iB,eAAkClhE,IAAtB+jF,EAAKtmB,OAAOD,OAAuBumB,EAAKukB,aAAelnG,YAAkB2iF,EAAKtmB,OAAOnuC,YACrF,aAArBy0D,EAAKtmB,OAAOtuD,MAAuB40E,EAAKykB,WAAaj2B,IAASu6D,eAEtEyX,EAAYrkJ,UAAU6hJ,KAAO,SAAUj4G,EAAQ+jD,GAC3C,IAAIu5D,EAAapjJ,KAAKO,OAAOgqE,uBACb,cAAXzkC,GAAsC,cAAXA,GAA0B9lC,KAAKgkJ,mBAAiC,aAAXl+G,IAAyC,IAAf+jD,EAAQ,GACnH9mD,GAAoB,eAAX+C,GAAuC,eAAXA,GAA2B9lC,KAAKgkJ,mBACvD,QAAXl+G,IAAqB+jD,EAAQ,KAAO7pF,KAAK28I,OAAO5iF,QACnDspF,EAASrjJ,KAAKO,OAAO2pE,kBAAoB7N,KAAsBt5B,EAC/B,UAAhC/iC,KAAKO,OAAO2pE,kBACZk5E,EAAargH,GAEjB,IACIohH,EACAC,EAFAd,EAAyC,IAA3BtjJ,KAAKO,OAAOisE,YAA+B,UAAX1mC,EAG9Cu+G,EAAajB,GAAcC,EAC3BiB,EAAUtkJ,KAAKO,OAAOgkJ,YAAYlF,SAAWr/I,KAAKO,OAAOgkJ,YAAYlF,QAAQ1C,OAAOA,OACpF+F,EAAY4B,IAAYlnJ,YAAkBknJ,EAAQz6D,EAAQ,KAkB9D,OAjBI7pF,KAAKO,OAAOk8I,mBAAgC,QAAX32G,IACjCs+G,EAAUpkJ,KAAK28I,OAAOA,OAAO9/I,OAAS,IAAMgtF,EAAQ,IACpDs6D,EAAat6D,EAAQ,KAAO7pF,KAAK28I,OAAOA,OAAO9yD,EAAQ,IAAIn4E,YAAY,MAM/D1R,KAAK28I,OAAO9yD,QAAQ,GAJnBu6D,EAIwB,EAHApkJ,KAAK28I,OAAO9yD,QAAQ,GAAK,EAKtD7pF,KAAK28I,OAAO9yD,QAAQ,IAAM,GAE1B7pF,KAAKO,OAAO+jE,gBAAkB8/E,GAAWD,IACzCf,GAAa,EACbiB,GAAa,IAGd,CACHzI,MAAmB,cAAX91G,GAA0Bw9G,IAAgBz5D,EAAQ,KAAO7pF,KAAK28I,OAAOA,OAAO9/I,OAAS,GACxF6lJ,IAAcU,GAAcC,IAAwB,QAAXv9G,GAAoBs+G,GAAWD,EAC7EnG,SAAUqG,EACVpG,SAAUmF,EACVlF,cAAemF,IAGvB9C,EAAYrkJ,UAAUiiJ,eAAiB,SAAUqF,EAAU5H,EAAMwC,EAAQt4G,QACpD,IAAb09G,IAAuBA,EAAW,IACtC,IAAIgB,EAAW,GAoBf,MAnBoC,UAAhCxkJ,KAAKO,OAAO2pE,iBAA+BlqE,KAAKO,OAAO2pE,kBAAoB7N,MAC5D,cAAXv2B,GAAsC,cAAXA,GAA0B9lC,KAAKgkJ,mBAAiC,aAAXl+G,KAChF0+G,EAAS,GAAKhB,EAAS,GACvBgB,EAAS,GAAKpG,EAAOzB,OAAO5iF,QAAU,GAEtC/5D,KAAKO,OAAO2pE,kBAAoB7N,MACjB,eAAXv2B,GAAuC,eAAXA,GAA2B9lC,KAAKgkJ,mBAAiC,QAAXl+G,KACtF0+G,EAAS,GAAKhB,EAAS,GACvBgB,EAAS,IAAM,KAGH,eAAX1+G,GAAuC,eAAXA,GAA2B9lC,KAAKgkJ,mBAAiC,QAAXl+G,KACvF0+G,EAAS,GAAKhB,EAAS,GACvBgB,EAAS,IAAM,GAEJ,YAAX1+G,GAAmC,eAAXA,IACxB0+G,EAAS,GAAKxkJ,KAAK28I,OAAOA,OAAO9/I,OACjC2nJ,EAAS,GAAKhB,EAAS,IAEpBgB,GAEXjE,EAAYrkJ,UAAUswG,aAAe,SAAU1jC,GAC3C,IAAIjsE,EAASmD,KAAK28I,OAAOA,OAAO9/I,OAChC,GAAImD,KAAKO,OAAOynG,gBAAsD,cAApChoG,KAAKO,OAAO0wE,eAAe9lE,KAAsB,CAC/EnL,KAAK28I,OAAO7zE,OAAS9oE,KAAK28I,OAAO7zE,KAEjC,IADA,IAAIxI,EAAQwI,EAAK,GAAGxI,MACX1jE,EAAI,EAAGA,EAAI0jE,EAAMzjE,OAAQD,IAC9BoD,KAAK28I,OAAO90H,IAAIhrB,EAAQD,EAAG0jE,EAAM1jE,GAAGsgE,UAA8C,IAAnCoD,EAAM1jE,GAAG68D,OAAOuuC,kBAI3Eu4C,EAAYrkJ,UAAU6jJ,QAAU,SAAUl/I,GACtC,OAAOvC,YAAO6gC,EAAOjjC,UAAU6jJ,QAAQz+I,KAAKtB,KAAMa,GAAI,CAAE+sE,WAAW,EAAOkkC,UAAU,KAExFyuC,EAAYrkJ,UAAU2gJ,UAAY,WAC9B,OAAO,WAAc,OAAO,IAEhC0D,EAAYrkJ,UAAUymJ,kBAAoB,SAAU9hJ,GAChD,IAAI0C,EAAKvD,KAAK28I,OAAO9yD,QAASle,EAAWpoE,EAAG,GAAIsxE,EAActxE,EAAG,GACjE,GAAIooE,EAAW,GAAKkJ,EAAc,EAC9B,OAAO,EAEX,IAAIkL,EAAO1jF,YAASsvE,EAAW,UAAYkJ,EAAa70E,KAAK4lI,WAAW98D,MACxE,OAAKiX,IAGe,UAAbl/E,EAAEilC,QAAmC,iBAAbjlC,EAAEilC,SAA6Bi6C,EAAK/pD,UAAUzD,SAAS,kBAEnFguH,EAxIsB,CAyI/BH,GAEEF,EAAmC,SAAU/gH,GAE7C,SAAS+gH,IACL,OAAkB,OAAX/gH,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2C/D,OA7CAq+B,EAAU6hH,EAAmB/gH,GAI7B+gH,EAAkBhkJ,UAAU0pI,SAAW,WACnC,OAAO5lI,KAAKO,OAAO8mE,aAAa/jE,cAAc,8BAElD48I,EAAkBhkJ,UAAU6hJ,KAAO,SAAUj4G,EAAQ+jD,GACjD,IAAIy5D,EAAyC,IAA3BtjJ,KAAKO,OAAOisE,YAA+B,eAAX1mC,EAC9Ck4G,GAAuB,YAAXl4G,GAAwBw9G,IAA+B,IAAfz5D,EAAQ,GAChE,MAAoC,UAAhC7pF,KAAKO,OAAO2pE,gBAEL,CAAE0xE,KADEoC,IAAyB,aAAXl4G,GAAoC,cAAXA,IAA0C,IAAf+jD,EAAQ,GAChEm0D,SAAUA,EAAUC,SAAUD,GAEhD,CACHpC,KAAMoC,IAAyB,QAAXl4G,GAA+B,eAAXA,IAA4B+jD,EAAQ,KAAO7pF,KAAK28I,OAAO5iF,QAC/FikF,SAAUA,EACVC,SAAUD,IAGlBkC,EAAkBhkJ,UAAUiiJ,eAAiB,SAAUqF,EAAU5H,EAAMwC,EAAQt4G,QAC1D,IAAb09G,IAAuBA,EAAW,IACtC,IAAIiB,EAAW,GAqBf,MApBoC,UAAhCzkJ,KAAKO,OAAO2pE,gBACG,eAAXpkC,GAAsC,QAAXA,IAC3B2+G,EAAS,GAAKjB,EAAS,GACvBiB,EAAS,IAAM,IAIJ,QAAX3+G,GAAoB9lC,KAAKO,OAAOk8I,oBAChCgI,EAAS,GAAKjB,EAAS,GACvBiB,EAAS,IAAM,GAEJ,cAAX3+G,GAAqC,aAAXA,IAC1B2+G,EAAS,GAAKjB,EAAS,GACvBiB,EAAS,GAAKrG,EAAOzB,OAAO5iF,QAAU,IAG/B,cAAXj0B,GAAqC,UAAXA,IAC1B2+G,EAAS,IAAM,EACfA,EAAS,GAAKjB,EAAS,IAEpBiB,GAEJvE,EA9C4B,CA+CrCE,GAEEC,EAAkC,SAAUlhH,GAE5C,SAASkhH,IACL,OAAkB,OAAXlhH,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+C/D,OAjDAq+B,EAAUgiH,EAAkBlhH,GAI5BkhH,EAAiBnkJ,UAAU6hJ,KAAO,SAAUj4G,EAAQ+jD,GAChD,IAAIy5D,EAAyC,IAA3BtjJ,KAAKO,OAAOisE,YAA+B,UAAX1mC,EAC9C4+G,EAAU1kJ,KAAKO,OAAOgkJ,YAAYx/H,QAAU/kB,KAAKO,OAAOgkJ,YAAYx/H,OAAO43H,OAAOA,OAClF+F,EAAYgC,IAAYtnJ,YAAkBsnJ,EAAQ76D,EAAQ,KAC9D,GAAoC,UAAhC7pF,KAAKO,OAAO2pE,gBAA6B,CACzC,IAAIm5E,GAAqB,cAAXv9G,GAAsC,cAAXA,GAA0B9lC,KAAKgkJ,mBACtD,aAAXl+G,IAAyC,IAAf+jD,EAAQ,GAIzC,MAAO,CAAE+xD,MAHe,cAAX91G,GAA0Bw9G,IAAgBz5D,EAAQ,KAAO7pF,KAAK28I,OAAOA,OAAO9/I,OAAS,GAC7F6lJ,GAAaW,EAEGrF,SAAUqF,EAAQpF,UADZ,cAAXn4G,GAA0Bw9G,IAAgBz5D,EAAQ,KAAO7pF,KAAK28I,OAAOA,OAAO9/I,OAAS,GAGzG,MAAO,CACH++I,MAAkB,cAAX91G,GAA0Bw9G,IAAgBz5D,EAAQ,KAAO7pF,KAAK28I,OAAOA,OAAO9/I,OAAS,IAAkB,eAAXipC,GACnF,eAAXA,GAA2B9lC,KAAKgkJ,mBAAiC,QAAXl+G,IACvD+jD,EAAQ,KAAO7pF,KAAK28I,OAAO5iF,SAAW2oF,EAC1C1E,UAAsB,eAAXl4G,GAAuC,eAAXA,GAA2B9lC,KAAKgkJ,mBAAiC,QAAXl+G,IACzF+jD,EAAQ,KAAO7pF,KAAK28I,OAAO5iF,QAC/BkkF,UAAsB,cAAXn4G,GAA0Bw9G,IAAgBz5D,EAAQ,KAAO7pF,KAAK28I,OAAOA,OAAO9/I,OAAS,IAGxGwjJ,EAAiBnkJ,UAAU0pI,SAAW,WAClC,OAAQ5lI,KAAKO,OAAOopI,mBAAmBrmI,cAAc,6BAEzD+8I,EAAiBnkJ,UAAUiiJ,eAAiB,SAAUqF,EAAU5H,EAAMwC,EAAQt4G,QACzD,IAAb09G,IAAuBA,EAAW,IACtC,IAAImB,EAAW,GAiBf,MAhBoC,UAAhC3kJ,KAAKO,OAAO2pE,iBACG,eAAXpkC,GAAuC,eAAXA,GAA2B9lC,KAAKgkJ,mBAAiC,QAAXl+G,KAClF6+G,EAAS,GAAKnB,EAAS,GACvBmB,EAAS,IAAM,IAIJ,cAAX7+G,GAAsC,cAAXA,GAA0B9lC,KAAKgkJ,mBAAiC,aAAXl+G,KAChF6+G,EAAS,GAAKnB,EAAS,GACvBmB,EAAS,GAAKvG,EAAOzB,OAAO5iF,QAAU,GAG/B,YAAXj0B,GAAmC,eAAXA,IACxB6+G,EAAS,GAAK3kJ,KAAK28I,OAAOA,OAAO9/I,OACjC8nJ,EAAS,GAAKnB,EAAS,IAEpBmB,GAEJtE,EAlD2B,CAmDpCE,GAGEqE,EAA2B,WAC3B,SAASA,EAAUC,GACf7kJ,KAAK6kJ,UAAYA,EAoBrB,OAlBAD,EAAU1oJ,UAAU4oJ,YAAc,SAAU7kJ,GACxCA,EAAKg9B,OAAO2W,cAAc5d,UAAUjN,IAAI,kBAE5C67H,EAAU1oJ,UAAU6oJ,WAAa,SAAU9kJ,GACvCA,EAAKg9B,OAAO2W,cAAc5d,UAAUvM,OAAO,kBAE/Cm7H,EAAU1oJ,UAAU8oJ,UAAY,WACxBhlJ,KAAK6kJ,YACLj8H,IAAaG,IAAI/oB,KAAK6kJ,UAAW,QAAS7kJ,KAAK8kJ,YAAa9kJ,MAC5D4oB,IAAaG,IAAI/oB,KAAK6kJ,UAAW,OAAQ7kJ,KAAK+kJ,WAAY/kJ,QAGlE4kJ,EAAU1oJ,UAAU+oJ,YAAc,WAC1BjlJ,KAAK6kJ,YACLj8H,IAAaa,OAAOzpB,KAAK6kJ,UAAW,QAAS7kJ,KAAK8kJ,aAClDl8H,IAAaa,OAAOzpB,KAAK6kJ,UAAW,OAAQ7kJ,KAAK+kJ,cAGlDH,EAtBoB,GAyB3BzE,EAAwC,SAAUhhH,GAElD,SAASghH,IACL,OAAkB,OAAXhhH,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAU8hH,EAAwBhhH,GAIlCghH,EAAuBjkJ,UAAU0pI,SAAW,WACxC,OAAO5lI,KAAKO,OAAO8mE,aAAa/jE,cAAc,qCAElD68I,EAAuBjkJ,UAAU6hJ,KAAO,SAAUj4G,EAAQ+jD,GACtD,IAAIy5D,EAAyC,IAA3BtjJ,KAAKO,OAAOisE,YAA+B,eAAX1mC,EAC9Ck4G,GAAuB,YAAXl4G,GAAwBw9G,IAA+B,IAAfz5D,EAAQ,GAChE,MAAO,CACH+xD,KAAMoC,IAAyB,aAAXl4G,GAAoC,cAAXA,IAA0C,IAAf+jD,EAAQ,GAChFm0D,SAAUA,EACVE,cAAeF,IAGvBmC,EAAuBjkJ,UAAUiiJ,eAAiB,SAAUqF,EAAU5H,EAAMwC,EAAQt4G,QAC/D,IAAb09G,IAAuBA,EAAW,IACtC,IAAIiB,EAAW,GASf,MARe,eAAX3+G,GAAsC,QAAXA,IAC3B2+G,EAAS,GAAKjB,EAAS,GACvBiB,EAAS,IAAM,GAEJ,cAAX3+G,GAAqC,UAAXA,IAC1B2+G,EAAS,IAAM,EACfA,EAAS,GAAKjB,EAAS,IAEpBiB,GAEJtE,EA9BiC,CA+B1CC,GAEEE,EAAuC,SAAUnhH,GAEjD,SAASmhH,IACL,OAAkB,OAAXnhH,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA6B/D,OA/BAq+B,EAAUiiH,EAAuBnhH,GAIjCmhH,EAAsBpkJ,UAAU6hJ,KAAO,SAAUj4G,EAAQ+jD,GACrD,IAAIq7D,EAAYllJ,KAAKO,OAAOgkJ,YAAYx/H,QAAU/kB,KAAKO,OAAOgkJ,YAAYx/H,OAAO43H,OAAOA,OACpF+F,EAAYwC,IAAc9nJ,YAAkB8nJ,EAAUr7D,EAAQ,KAC9Dy5D,EAAyC,IAA3BtjJ,KAAKO,OAAOisE,YAA+B,UAAX1mC,EAC9Cs9G,GAAyB,cAAXt9G,GAAsC,cAAXA,GAA0B9lC,KAAKgkJ,mBAC1D,aAAXl+G,IAAyC,IAAf+jD,EAAQ,GAIzC,MAAO,CAAE+xD,MAHe,cAAX91G,GAA0Bw9G,IAAgBz5D,EAAQ,KAAO7pF,KAAK28I,OAAOA,OAAO9/I,OAAS,GAC7F6lJ,GAAaU,EAEGpF,SAAUoF,EAAYlF,eADhB,cAAXp4G,GAA0Bw9G,IAAgBz5D,EAAQ,KAAO7pF,KAAK28I,OAAOA,OAAO9/I,OAAS,IAGzGyjJ,EAAsBpkJ,UAAU0pI,SAAW,WACvC,OAAQ5lI,KAAKO,OAAOopI,mBAAmBrmI,cAAc,oCAEzDg9I,EAAsBpkJ,UAAUiiJ,eAAiB,SAAUqF,EAAU5H,EAAMwC,EAAQt4G,QAC9D,IAAb09G,IAAuBA,EAAW,IACtC,IAAImB,EAAW,GASf,OARe,eAAX7+G,GAAuC,eAAXA,GAA2B9lC,KAAKgkJ,mBAAiC,QAAXl+G,KAClF6+G,EAAS,GAAKnB,EAAS,GACvBmB,EAAS,GAAK,GAEH,YAAX7+G,GAAmC,eAAXA,IACxB6+G,EAAS,GAAK3kJ,KAAK28I,OAAOA,OAAO9/I,OACjC8nJ,EAAS,GAAKnB,EAAS,IAEpBmB,GAEJrE,EAhCgC,CAiCzCC,I,kKCptCE4E,EAAoC,WAOpC,SAASA,EAAmB5kJ,GACxBP,KAAKolJ,kBAAoB,GACzBplJ,KAAKqlJ,gBAAkB,IAAIzjF,IAE3B5hE,KAAKslJ,aAAc,EACnBtlJ,KAAKu8D,OAAS,GACdv8D,KAAKg0I,aAAc,EACnBh0I,KAAKO,OAASA,EACdP,KAAKyZ,GAAKzZ,KAAKO,OAAOS,QAAQyY,GAC9BzZ,KAAK8oG,eAAiB,IAAIC,IAAe/oG,KAAKO,OAAOwc,QACrD/c,KAAKulJ,SAAW1hD,YAAe7jG,KAAKO,OAAOY,eAAe,EAAO,CAAE+/D,SAAS,EAAMuU,MAAO,MACzFz1E,KAAKwlJ,UAAY3hD,YAAe7jG,KAAKO,OAAOY,eAAe,EAAO,CAAE+/D,SAAS,EAAOuU,MAAO,MAC3Fz1E,KAAKulJ,SAAS1uH,aAAa72B,KAAKO,OAAOY,cAAc,QAAS,CAC1DktB,UAAW,eAAgB0E,MAAO,CAAE5nB,KAAM,cAC1CnL,KAAKulJ,SAASzhD,YAClB9jG,KAAKwlJ,UAAU3uH,aAAa72B,KAAKO,OAAOY,cAAc,QAAS,CAC3DktB,UAAW,eAAgB0E,MAAO,CAAE,KAAQ,cAC5C/yB,KAAKwlJ,UAAU1hD,YACnB9jG,KAAKwlJ,UAAUliJ,cAAc,YAAY0yB,UAAUjN,IAAI,aACnD/oB,KAAKO,OAAOomC,WACZ9Q,YAAS,CAAC71B,KAAKulJ,SAAUvlJ,KAAKwlJ,WAAY,CAAC,UAo/BnD,OA7+BAL,EAAmBjpJ,UAAUif,QAAU,WACnCnb,KAAKylJ,eAETN,EAAmBjpJ,UAAUg4C,WAAa,WACtCtrB,IAAaG,IAAI/oB,KAAKy/D,IAAK,QAASz/D,KAAK0lJ,aAAc1lJ,MACvD4oB,IAAaG,IAAI/oB,KAAKy/D,IAAK,QAASz/D,KAAK2lJ,aAAc3lJ,MACvDA,KAAK4lJ,cAAgBjmJ,YAASK,KAAK6lJ,eAAgB,KACnD,IAAIxiJ,EAAOrD,KAAKwgE,UAAUx/D,QAAQsC,cAAc,kBAC5CD,GACAulB,IAAaG,IAAI1lB,EAAM,QAASrD,KAAK4lJ,cAAe5lJ,OAG5DmlJ,EAAmBjpJ,UAAUgmI,aAAe,WACxCt5G,IAAaa,OAAOzpB,KAAKy/D,IAAK,QAASz/D,KAAK0lJ,cAC5C98H,IAAaa,OAAOzpB,KAAKy/D,IAAK,QAASz/D,KAAK2lJ,cAC5C,IAAItiJ,EAAOrD,KAAKwgE,UAAUx/D,QAAQsC,cAAc,kBAC5CD,GACAulB,IAAaa,OAAOpmB,EAAM,QAASrD,KAAK4lJ,gBAGhDT,EAAmBjpJ,UAAU4pJ,iBAAmB,SAAU7lJ,EAAM8lJ,EAAOC,GACnE,IAAIjmJ,EAAQC,KACRimJ,EAAa,GACbC,EAAmB,GACnBvkF,EAAQ3hE,KAAKqlJ,gBAAgBpmJ,QACjCe,KAAKsM,QAAQmtD,OAAOqI,WAChB+4B,aAAal5B,EAAMO,MAAM8jF,IAAaprI,MAAK,SAAU/Z,GACrDd,EAAMuM,QAAQmtD,OAAOwI,WAAaphE,EAAElC,OACpCoB,EAAMQ,OAAOyZ,OAAO+M,KAAsB,CAAE40C,UAAWsqF,EAAYxsF,OAAQ15D,EAAMuM,QAAQmtD,SACzFx5D,EAAKojE,YAAc4iF,EAAWtqF,UAAU+kC,WAExC,IADA,IAAIylD,EAAQF,EAAWtqF,UAAU+kC,WACxB9jG,EAAI,EAAGA,EAAIupJ,EAAMtpJ,OAAQD,IAC9BspJ,EAAiBtkJ,KAAK,CAClB43D,MAAO2sF,EAAMvpJ,GAAG48D,MAChBmC,UAAW,KACX0G,UAAW8jF,EAAMvpJ,GAAGkvF,WACpBC,aAAco6D,EAAMvpJ,GAAGmvF,aACvB3pB,SAAU+jF,EAAMvpJ,GAAGwlE,SACnB5lE,MAAO2pJ,EAAMvpJ,GAAGJ,MAChB2O,KAAMpL,EAAMuM,QAAQnB,OAG5BlL,EAAKimJ,iBAAmBA,EAAiBrpJ,OAASqpJ,EAC9CH,EAAM70H,QAAO,SAAUiuC,GAAO,OAAOA,EAAI3F,MAAQz5D,EAAMuM,QAAQktD,SACnEz5D,EAAMuM,QAAQkN,QAAQvZ,OAG9BklJ,EAAmBjpJ,UAAUkqJ,cAAgB,SAAUnmJ,EAAMzD,GACzD,IAAI4lE,EAAWpiE,KAAKsM,QAAQsgI,SACM,WAA7B5sI,KAAKsM,QAAQmtD,OAAOtuD,KAAoB,WAAa,QAAYnL,KAAKsM,QAAQmtD,OAAOtuD,KAAO,WAAa,QAC1Gk7I,EAAkB,IAAIvjF,IAAU9iE,KAAKsM,QAAQmtD,OAAOuD,gBAAiBoF,EAAU5lE,GAAO,EAAMwD,KAAKsM,QAAQy/E,cAC7G/rF,KAAK8lJ,iBAAiB7lJ,EAAM,CAACA,EAAKimJ,kBAAmBG,IAEzDlB,EAAmBjpJ,UAAUoqJ,eAAiB,SAAUzlJ,GACvCA,EAAEo8B,OACJjH,UAAUzD,SAAS,mBAC1BvyB,KAAKumJ,OAAO/pJ,MAAQ,GACpBwD,KAAKwmJ,oBACLxmJ,KAAKymJ,mBACLzmJ,KAAKumJ,OAAOjkJ,UAIpB6iJ,EAAmBjpJ,UAAU2pJ,eAAiB,SAAUhlJ,GACpDb,KAAKwmJ,oBACLxmJ,KAAKymJ,oBAETtB,EAAmBjpJ,UAAUuqJ,iBAAmB,WACxCzmJ,KAAKumJ,OAAO/pJ,MAAMK,OAClBm5B,YAAUh2B,KAAK0mJ,MAAO,CAAC,oBAAqB,CAAC,kBAG7C1wH,YAAUh2B,KAAK0mJ,MAAO,CAAC,iBAAkB,CAAC,sBASlDvB,EAAmBjpJ,UAAUyqJ,kBAAoB,SAAU3pJ,GACvD,OAAOgD,KAAK+jF,UAAUltC,YAAY75C,IAEtCmoJ,EAAmBjpJ,UAAU0qJ,iBAAmB,WAC5C,IAAI9kF,EAAa9hE,KAAKsM,QAAQw1D,WAE9B,KAAMA,aAAsBC,KACxB,IAAK,IAAInlE,EAAI,EAAGA,EAAIklE,EAAWjlE,OAAQD,IAEnC,GAJE,kBAISklE,EAAoB,CAC3B,IAAIvlE,EAAM,GACVA,EAAIyD,KAAKsM,QAAQktD,OAASsI,EAAWllE,GACrCklE,EAAWllE,GAAKL,IAKhC4oJ,EAAmBjpJ,UAAU49B,YAAc,SAAUxtB,GACjDtM,KAAKsM,QAAUA,EACftM,KAAKolJ,kBAAoB94I,EAAQu6I,iBAAmB,GACpD7mJ,KAAKsM,QAAQw1D,WAAax1D,EAAQw1D,WAClC9hE,KAAKsM,QAAQqyF,YAAcryF,EAAQqyF,YAAcryF,EAAQqyF,YAAcryF,EAAQw1D,WAC/E9hE,KAAK4mJ,mBACL5mJ,KAAKsM,QAAQnB,KAAOmB,EAAQnB,KAC5BnL,KAAKsM,QAAQtB,OAASsB,EAAQtB,QAAU,GACxChL,KAAKsM,QAAQy/E,aAAez/E,EAAQy/E,eAAgB,EACpD/rF,KAAKsM,QAAQw6I,gBAAkBx6I,EAAQw6I,iBAAmB9mJ,KAAKO,OAAO0wE,eAAelX,QACrF/5D,KAAKsM,QAAQq1D,MAAQr1D,EAAQq1D,OAAS,IAAIC,IAC1C5hE,KAAKsM,QAAQy6I,mBAAqBz6I,EAAQy6I,qBAAsB,EAChE/mJ,KAAKsM,QAAQ7Q,IAAM6Q,EAAQmtD,OAAOh+D,IAClCuE,KAAKu8D,OAAS,GACdv8D,KAAK+jF,UAAYz3E,EAAQy3E,UACzB/jF,KAAKgnJ,WAAa16I,EAAQw6I,gBAAgBjqJ,QAE9CsoJ,EAAmBjpJ,UAAU+qJ,iBAAmB,SAAU36I,GAOtD,GANAtM,KAAKy/D,IAAMz/D,KAAKO,OAAOY,cAAc,MAAO,CACxCsY,GAAIzZ,KAAKyZ,GAAKzZ,KAAKsM,QAAQnB,KAAO,YAClC4nB,MAAO,CAAEt3B,IAAKuE,KAAKsM,QAAQmtD,OAAOh+D,KAClC4yB,UAAW,oCAEfruB,KAAKknJ,KAAOlnJ,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,uBACrD/hB,EAAQ66I,cAAe,CACxBnnJ,KAAKumJ,OAASvmJ,KAAKO,OAAOY,cAAc,QAAS,CAC7CsY,GAAIzZ,KAAKyZ,GAAK,aACd4U,UAAW,kBAEfruB,KAAK0mJ,MAAQ1mJ,KAAKO,OAAOY,cAAc,OAAQ,CAC3CktB,UAAW,yDAA0D0E,MAAO,CACxE5nB,KAAM,OAAQi8I,MAAOpnJ,KAAK2mJ,kBAAkB,aAGpD3mJ,KAAK6kJ,UAAY7kJ,KAAKO,OAAOY,cAAc,OAAQ,CAAEktB,UAAW,yBAChEruB,KAAK6kJ,UAAU7iJ,YAAYhC,KAAKumJ,QAChCvmJ,KAAKknJ,KAAKllJ,YAAYhC,KAAK6kJ,WAC3B,IAAIwC,EAAY,CACZrmJ,QAAShB,KAAKumJ,OAAQpyD,eAAgB,QAAStgE,WAAY,CACvDshE,YAAan1F,KAAK2mJ,kBAAkB,YAG5C7yD,IAAMwE,YAAY+uD,EAAWrnJ,KAAKO,OAAOY,eACzCnB,KAAK6kJ,UAAUvhJ,cAAc,kBAAkBtB,YAAYhC,KAAK0mJ,OASpE,OAPA1mJ,KAAKsnJ,QAAUtnJ,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,cAC7DruB,KAAKunJ,KAAOvnJ,KAAKO,OAAOY,cAAc,MAAO,CACzCsY,GAAIzZ,KAAKyZ,GAAKzZ,KAAKsM,QAAQnB,KAAO,gBAClCkjB,UAAW,4BAEfruB,KAAKsnJ,QAAQtlJ,YAAYhC,KAAKunJ,MAC9BvnJ,KAAKknJ,KAAKllJ,YAAYhC,KAAKsnJ,SACpBtnJ,KAAKknJ,MAEhB/B,EAAmBjpJ,UAAUsrJ,WAAa,SAAUl7I,GAChD,IAAIrM,EAAO,CACPm6F,YAAarzE,KACbs1F,WAAYr8G,KAAKsM,QAAQktD,MAAOiuF,WAAYznJ,KAAKsM,QAAQnB,KAAM4X,QAAQ,GAK3E,GAFA9iB,EAAgB,YAAID,KACpBA,KAAKO,OAAOyZ,OAAO+M,IAAsB9mB,IACrCA,EAAK8iB,OAAT,CAGA/iB,KAAKwgE,UAAY,IAAIknF,IAAO,CACxBxqF,SAAS,EAAOxS,QAAS1qD,KAAKknJ,KAC9B7kJ,MAAOrC,KAAKylJ,YAAYtpJ,KAAK6D,MAC7B2mC,UAAW3mC,KAAKO,OAAOomC,UACvB+I,OAAStyC,YAAkBugE,aAAarxD,EAAQ2wB,OAAQ,cACjDj9B,KAAKO,OAAOS,QAAQg1B,UAAUzD,SAAS,YAAc,IAAM,IAClE0K,OAAQz8B,SAASgiC,KAAMmlH,kBAAmB,CAAEC,OAAQ,QACpDjwD,QAAS,CAAC,CACFlnC,MAAOzwD,KAAK6nJ,SAAS1rJ,KAAK6D,MAC1B8nJ,YAAa,CACTp9F,QAAS1qD,KAAK2mJ,kBAAkB3mJ,KAAKyc,QAAU,WAAa,gBAC5Dy5E,SAAU,YAAayrC,WAAW,IAG1C,CACIlxE,MAAOzwD,KAAK6nJ,SAAS1rJ,KAAK6D,MAC1B8nJ,YAAa,CAAE5xD,SAAU,SAAUxrC,QAAS1qD,KAAK2mJ,kBAAkB3mJ,KAAKyc,QAAU,eAAiB,kBAE3GivC,QAAS1rD,KAAK+nJ,cAAc5rJ,KAAK6D,MACjC+B,KAAM/B,KAAKgoJ,WAAW7rJ,KAAK6D,QAM/B,GAHAA,KAAKwgE,UAA0B,kBAAI,EACnCxgE,KAAKioJ,uBAAuB37I,GAC5BtM,KAAKy/D,IAAI7pC,aAAa,aAAc51B,KAAK2mJ,kBAAkB,0BACvDr6I,EAAQ47I,mBACY1nJ,SAAS8C,cAAc,4DAC7BtB,YAAYhC,KAAKy/D,UAG/Bz/D,KAAKO,OAAOS,QAAQgB,YAAYhC,KAAKy/D,KAEzCz/D,KAAKwgE,UAAUz5B,SAAS/mC,KAAKy/D,KAC7Bz/D,KAAKwgE,UAAUx/D,QAAQgzB,MAAMm0H,UAAY77I,EAAQ47I,mBAAqB,OAASloJ,KAAKsM,QAAQqjC,OAAS,KACrG3vC,KAAKwgE,UAAUg9D,OACDx9H,KAAKwgE,UAAUx/D,QAAQsC,cAAc,kBAC3CtB,YAAYhC,KAAKknJ,MACzBlnJ,KAAKk0C,aACLk0G,YAAc,CAAEnrH,OAAQj9B,KAAKsnJ,SAAWtnJ,KAAKO,OAAOY,eACpDknJ,YAAYroJ,KAAKsnJ,SACjBtnJ,KAAKsoJ,eAETnD,EAAmBjpJ,UAAU+rJ,uBAAyB,SAAU37I,GACxDA,EAAQ47I,qBACRloJ,KAAKwgE,UAAUm3B,QAAU,CAAC,IAC1B33F,KAAKwgE,UAAUzyB,SAAW,CAAEuuC,EAAG,GAAIC,EAAG,IACtCv8E,KAAKwgE,UAAUvjC,OAASz8B,SAAS8C,cAAc,oDAC/CtD,KAAKwgE,UAAU9wB,MAAQ,SAG/By1G,EAAmBjpJ,UAAU6rJ,cAAgB,SAAUlnJ,GAC/Cb,KAAKsM,QAAQ47I,mBACbloJ,KAAKwgE,UAAUx/D,QAAQgzB,MAAM8O,KAAO,MAG/Bzc,IAAQa,SAITlnB,KAAKwgE,UAAUzyB,SAAW,CAAEuuC,EAAG,SAAUC,EAAG,UAH5Chc,YAAqBvgE,KAAKsM,QAAQ2wB,OAAQj9B,KAAKwgE,WAMvDxgE,KAAKO,OAAOyZ,OAAO+M,KAA4BlmB,IAEnDskJ,EAAmBjpJ,UAAUqsJ,WAAa,SAAUj8I,GAChDtM,KAAK85B,YAAYxtB,GACjBtM,KAAKinJ,iBAAiB36I,GACtBtM,KAAKwnJ,WAAWl7I,IAEpB64I,EAAmBjpJ,UAAUupJ,YAAc,WACvC,GAAIzlJ,KAAKwgE,YAAcxgE,KAAKwgE,UAAUrnC,YAAa,CAC/C,IAAIqvH,EAAoBxoJ,KAAKsM,QAAQytD,QAAQ7oC,QAAO,SAAUiuC,GAAO,OAAOA,EAAImrC,2BAE5E0kC,EAAqBhvI,KAAKO,OAAOyuI,mBACjCwZ,EAAkB3rJ,SAAWO,YAAkB4xI,IAAuBA,EAAmByZ,oBACzFzoJ,KAAKO,OAAO4uI,gBAAgB,CAAC,uBAE7BnvI,KAAKO,OAAOgiG,cAA2CvmG,IAAhCgE,KAAKO,OAAO4uI,kBACnCnvI,KAAKO,OAAO4uI,gBAAgB,CAAC,uBAC7BnvI,KAAKO,OAAOqiG,mBAEhB5iG,KAAKO,OAAOyZ,OAAO+M,KAAwB,CAAEyyC,MAAOx5D,KAAKsM,QAAQktD,QACjEx5D,KAAKwgE,UAAUrlD,UACfnb,KAAKkiI,eACLz4G,aAAOzpB,KAAKy/D,KACZz/D,KAAKy/D,IAAM,KACXz/D,KAAKO,OAAOyZ,OAAO+M,KAA0B,MAQrDo+H,EAAmBjpJ,UAAUwsJ,YAAc,SAAUvpF,GAEjD,IAAIl/D,EAAO,CAAE+6B,SAAUh7B,KAAMwZ,QAASxZ,KAAK0oJ,YAAa3lI,QAAQ,GAChE/iB,KAAKO,OAAOyZ,OAAO+M,KAAoB9mB,GACnCA,EAAK8iB,QAGT/iB,KAAKsM,QAAQkN,QAAQ,CAAEssB,OAAQ,eAAgB0zB,MAAO2F,EAAMA,EAAI3F,MAAQx5D,KAAKsM,QAAQktD,SAEzF2rF,EAAmBjpJ,UAAU2rJ,SAAW,SAAUhnJ,GAC9C,GAAIb,KAAKslJ,YAAa,CAClB,GAAuC,UAAnCzkJ,EAAEo8B,OAAOjN,QAAQvY,eAA6B5W,EAAEo8B,OAAOjH,UAAUzD,SAAS,iBAAkB,CAC5F,IAAI/1B,EAAQqE,EAAEo8B,OAAOzgC,MACY,YAA7BwD,KAAKsM,QAAQmtD,OAAOtuD,OACN,KAAV3O,IACqF,IAArFwD,KAAK2mJ,kBAAkB,cAAclvI,cAActZ,QAAQ3B,EAAMib,eACjEjb,GAAQ,EAEO,KAAVA,IACiF,IAAtFwD,KAAK2mJ,kBAAkB,eAAelvI,cAActZ,QAAQ3B,EAAMib,iBAClEjb,GAAQ,IAGhB,IAAIyD,EAAO,CACP6lC,OAAQ,YAAaogH,iBAAkB,CACnC1sF,MAAOx5D,KAAKsM,QAAQktD,MACpB4I,SAAUpiE,KAAKsM,QAAQsgI,SACW,WAA7B5sI,KAAKsM,QAAQmtD,OAAOtuD,KAAoB,WAAa,QACxB,SAA7BnL,KAAKsM,QAAQmtD,OAAOtuD,MAAgD,aAA7BnL,KAAKsM,QAAQmtD,OAAOtuD,MAC3B,YAA7BnL,KAAKsM,QAAQmtD,OAAOtuD,KAAqB,QAAU,WAC3D3O,MAAOA,EAAO6lE,WAAW,EAAOl3D,KAAMnL,KAAKsM,QAAQmtD,OAAOtuD,KAAM4gF,aAAc/rF,KAAKsM,QAAQy/E,cAE/FvyB,MAAOx5D,KAAKsM,QAAQktD,YAEVx9D,IAAVQ,GAAiC,OAAVA,GAA4B,KAAVA,EACrCwD,KAAKypG,gBAAgBzpG,KAAKsM,QAAQmtD,QAClCz5D,KAAKomJ,cAAcnmJ,EAAMzD,GAGzBwD,KAAKsM,QAAQkN,QAAQvZ,GAIzBD,KAAKylJ,mBAIT,GAAkB,KAAd5kJ,EAAE8zC,QACF30C,KAAK2oJ,qBAEJ,CACD,IAAIp2I,EAAO1R,EAAEo8B,OAAO6mE,WAAWzN,YAAY5+E,cACvCzX,KAAK2mJ,kBAAkB3mJ,KAAKyc,QAAU,WAAa,gBAAgBhF,gBAAkBlF,EACrFvS,KAAK2oJ,iBAEA3oJ,KAAK2mJ,kBAAkB,eAAelvI,gBAAkBlF,GAC7DvS,KAAK0oJ,cAIjB1oJ,KAAKylJ,kBAEqC,UAAnC5kJ,EAAEo8B,OAAOjN,QAAQvY,gBACxBzX,KAAK0oJ,cACL1oJ,KAAKylJ,gBAObN,EAAmBjpJ,UAAUysJ,eAAiB,WAC1C,IAQIC,EARA1nF,EAAU,GAAG7/D,MAAMC,KAAKtB,KAAKunJ,KAAK/lJ,iBAAiB,+BACnD2vG,EAAQjwC,EACR2nF,EAAO,QACPC,EAAW9oJ,KAAKwgE,UAAUx/D,QAAQsC,cAAc,mBAChDwlJ,IACA9oJ,KAAKsM,QAAQ81D,SAAWymF,EAAOC,EAAShuH,cAAc,GAAGt+B,OAE7DwD,KAAK+oJ,eAA2C,aAA1B/oJ,KAAKsM,QAAQ81D,SAE9BpiE,KAAKsM,QAAQ66I,gBACdyB,EAAc5oJ,KAAK6kJ,UAAUvhJ,cAAc,mBAE/C,IAYI9G,EACAyI,EACApI,EACAmsJ,EAfAC,EAAUjpJ,KAAKsM,QAAQy6I,mBACvBmC,EAAW,CACX1vF,MAAOx5D,KAAKsM,QAAQktD,MAAOmC,UAAW37D,KAAK+oJ,eAAiB,MAAQ,KAAMttJ,IAAKuE,KAAKsM,QAAQ7Q,IAC5F2mE,SAAUymF,EAAM19I,KAAMnL,KAAKsM,QAAQnB,KAAMk3D,UAAW4mF,EAASl9D,aAAc/rF,KAAKsM,QAAQy/E,cAExFo9D,EAAanpJ,KAAKopJ,WAAaloF,EAAQrkE,QAAUmD,KAAKopJ,SAAWloF,EAAQrkE,OAASqkE,EAAQrkE,OAC1FssJ,GAAcP,GAAqC,KAAtBA,EAAYpsJ,QACzCqsJ,EAAO7oJ,KAAK+oJ,eAAiB,QAAU,WACvC7nF,EAAU,GAAG7/D,MAAMC,KAAKtB,KAAKunJ,KAAK/lJ,iBAAiB,iCACnD0nJ,EAASvtF,UAAY37D,KAAK+oJ,eAAiB,KAAO,MAClDG,EAAS9mF,SAAWymF,GAMxB,IAAI5qF,EAAO,GACX,GAAIiD,EAAQrkE,SAAWmD,KAAKopJ,UAAaR,GAAeA,EAAYpsJ,OAA+B,KAAtBosJ,EAAYpsJ,MAAe,CACpG,IAAK,IAAII,EAAI,EAAGA,EAAIskE,EAAQrkE,OAAQD,IAAK,CACrCJ,EAAQwD,KAAKu8D,OAAOoB,aAAauD,EAAQtkE,GAAI,YAAYuyB,aAAa,QACtE65H,EAAO1qJ,YAAO,GAAI,CAAE9B,MAAOA,GAAS0sJ,GAChC1sJ,IAAUA,EAAM2Q,WAAWtQ,SAC3BmsJ,EAAK5mF,SAAW+mF,EAAa,WAAa,SAEhC,KAAV3sJ,GAAgBY,YAAkBZ,GAClCyhE,EAAOA,EAAKnsC,OAAOqzH,EAAmBkE,4BAA4BH,IAGlEjrF,EAAKr8D,KAAKonJ,GAEd,IAAI/oJ,EAAO,CACP+6B,SAAUh7B,KAAMwZ,QAASxZ,KAAK2oJ,eAAgBW,KAAMN,EAAKxvF,MAAO+vF,KAAMP,EAAKrtF,UAAW6tF,KAAMR,EAAK5mF,SACjGqnF,KAAMT,EAAK3mF,UAAWqnF,KAAMV,EAAKj9D,aAAc49D,KAAMX,EAAKxsJ,MAAOumB,QAAQ,GAG7E,GADA/iB,KAAKO,OAAOyZ,OAAO+M,KAAoB9mB,GACnCA,EAAK8iB,OACL,OAGkB,SAAtB/iB,KAAKsM,QAAQnB,MAAyC,aAAtBnL,KAAKsM,QAAQnB,OAC7CtO,EAASs0G,EAAMt0G,OAAS,EACxBoI,EAAMjF,KAAKu8D,OAAOoB,aAAawzC,EAAMt0G,GAAS,YAAYsyB,aAAa,QACnE/xB,YAAkB6H,IAAQkkJ,GAC1BlrF,EAAKr8D,KAAK,CACN43D,MAAO0vF,EAAS1vF,MAAO6I,UAAW6mF,EAAS7mF,UAAWD,SAAU,QAChEzG,UAAW,MAAOn/D,MAAO,QAIrCwD,KAAK4pJ,eAAe3rF,QAGpBj+D,KAAK0oJ,eAKbvD,EAAmBkE,4BAA8B,SAAUH,GACvD,IAAIjrF,EAAO,GAeX,MAdsB,WAAlBirF,EAAS/9I,MACT8yD,EAAKr8D,KAAK,CACN43D,MAAO0vF,EAAS1vF,MAAOuyB,aAAcm9D,EAASn9D,aAAc1pB,UAAW6mF,EAAS7mF,UAChFD,SAAU8mF,EAAS9mF,SAAUzG,UAAWutF,EAASvtF,UAAWn/D,MAAO,KAG3EyhE,EAAKr8D,KAAK,CACN43D,MAAO0vF,EAAS1vF,MAChB6I,UAAW6mF,EAAS7mF,UAAWD,SAAU8mF,EAAS9mF,SAAUzG,UAAWutF,EAASvtF,UAAWn/D,MAAO,OAEtGyhE,EAAKr8D,KAAK,CACN43D,MAAO0vF,EAAS1vF,MAAO6I,UAAW6mF,EAAS7mF,UAAWD,SAAU8mF,EAAS9mF,SACzEzG,UAAWutF,EAASvtF,UAAWn/D,WAAOR,IAEnCiiE,GAEXknF,EAAmBjpJ,UAAU0tJ,eAAiB,SAAU7D,GACpD,IACIpqF,EADAkuF,EAAW9D,EAAM,GAErB,IAAK3oJ,YAAkBysJ,GAAW,CAC9BluF,EAAYkuF,EAASxmF,YAAcwmF,EAASxmF,YACxC,IAAIP,IAAU+mF,EAASrwF,MAAOqwF,EAASznF,SAAUynF,EAASrtJ,OAAQqtJ,EAASxnF,UAAWwnF,EAAS99D,cACnG,IAAK,IAAI5jF,EAAI,EAAGA,EAAI49I,EAAMlpJ,OAAQsL,IAC9BwzD,OAAqC3/D,IAAzB+pJ,EAAM59I,GAAGk7D,YACjB1H,EAAUoqF,EAAM59I,GAAGwzD,WAAWoqF,EAAM59I,GAAGk7D,aACvC1H,EAAUoqF,EAAM59I,GAAGwzD,WAAWoqF,EAAM59I,GAAGqxD,MAAOusF,EAAM59I,GAAGi6D,SAAU2jF,EAAM59I,GAAG3L,OAAQupJ,EAAM59I,GAAGk6D,UAAW0jF,EAAM59I,GAAG4jF,cAEvH,IAAI9rF,EAAO,CACP6lC,OAAQ,YAAaogH,iBAAkBH,EAAOvsF,MAAOx5D,KAAKsM,QAAQktD,MAClE6J,YAAaP,IAAUM,GAAGzH,IAE9B37D,KAAKsM,QAAQkN,QAAQvZ,KAG7BklJ,EAAmBjpJ,UAAUutG,gBAAkB,SAAUtqC,GACrD,QAAOA,EAAIsqC,iBAAkBtqC,EAAIsqC,mBAErC07C,EAAmBjpJ,UAAUsqJ,kBAAoB,WAC7C,IAAIzmJ,EAAQC,KACRiF,EAAMjF,KAAKumJ,OAAO/pJ,MAClBi9D,EAASz5D,KAAKsM,QAAQmtD,OACtBkI,EAAQ3hE,KAAKypG,gBAAgBhwC,GAAUz5D,KAAKqlJ,gBAAgBpmJ,QAAUe,KAAKsM,QAAQq1D,MAAM1iE,QACzF6qJ,EAAe9pJ,KAAKsM,QAAQq1D,MAAM1iE,QAClC28D,EAAO+F,EAAM08B,QAAQntE,QAAO,SAAUrwB,GAAK,OAAOA,GAAc,YAATA,EAAEgoF,MAAqB,GAClFlnB,EAAM08B,QAAU,GAChByrD,EAAazrD,QAAU,GACvB,IAOI0rD,EAPAC,EAAgC,WAAtBhqJ,KAAKsM,QAAQnB,MAAqB4N,WAAW9T,GAAQ8T,WAAW9T,GAAOA,EACjFm9D,EAAWpiE,KAAKsM,QAAQsgI,SACD,WAAtB5sI,KAAKsM,QAAQnB,KAAoB,WAAa,QAAYnL,KAAKsM,QAAQnB,KAAO,WAAa,QAE5F4gF,EAAe/rF,KAAKsM,QAAQy/E,aAC5BvyB,EAAQx5D,KAAKypG,gBAAgBhwC,GAAUA,EAAOuD,gBAAkBvD,EAAOD,MAC3EwwF,EAAqB,KAAXA,QAA4BhuJ,IAAXguJ,OAAwBhuJ,EAAYguJ,EAE/D,IAAIr2C,EAAa3zG,KAAKsM,QAAQqyF,YAAYz2B,QAAQrtC,cACxB,YAAtB76B,KAAKsM,QAAQnB,YACEnP,IAAXguJ,IACsF,IAAtFhqJ,KAAK2mJ,kBAAkB,cAAclvI,cAActZ,QAAQ6rJ,EAAOvyI,eAClEuyI,EAAS,YAEOhuJ,IAAXguJ,IACkF,IAAvFhqJ,KAAK2mJ,kBAAkB,eAAelvI,cAActZ,QAAQ6rJ,EAAOvyI,iBACnEuyI,EAAS,cAEEhuJ,IAAXguJ,IACsF,IAAtFhqJ,KAAK2mJ,kBAAkB,cAAclvI,cAActZ,QAAQ6rJ,EAAOvyI,gBAAyBk8F,GAEjFA,IAAVq2C,GAAiE,QAEjDhuJ,IAAXguJ,IACkF,IAAvFhqJ,KAAK2mJ,kBAAkB,eAAelvI,cAActZ,QAAQ6rJ,EAAOvyI,gBAAyBk8F,IAElFA,IAAVq2C,GAAiE,GAErE5nF,EAAW,SAEW,SAAtBpiE,KAAKsM,QAAQnB,MAAyC,aAAtBnL,KAAKsM,QAAQnB,OAC7C6+I,EAAShqJ,KAAK8oG,eAAeoS,SAASj2G,EAAKjF,KAAKsM,QAAQ89F,SAAUpqG,KAAKsM,QAAQnB,OAEnFnL,KAAKiqJ,YAAYtoF,GACjB,IAAI1hE,EAAO,CACPm6F,YAAarzE,KACbmjI,YAAalqJ,KAAMq8G,WAAY7iD,EAAOC,OAAQA,EAC9C2I,SAAUA,EAAUC,UAlCR,KAkC8B0pB,aAAcA,EAAco+D,kBAAmB,KACzFxoF,MAAOA,EAAOnlE,MAAOwtJ,GAEzBhqJ,KAAKO,OAAOwpB,QAAQhD,IAAoB9mB,GAAM,SAAUmqJ,GAIpD,GAFAA,EAAWhoF,SAAWgoF,EAAWhoF,SACjC2nF,EAAW,IAAIjnF,IAAUtJ,EAAO4wF,EAAWhoF,SAAU4nF,EAAQI,EAAW/nF,UAAW+nF,EAAWr+D,cACnE,SAAvBhsF,EAAMuM,QAAQnB,MAA0C,aAAvBpL,EAAMuM,QAAQnB,KAAqB,CAEpE,GADAi3D,EAAW,QACPhlE,YAAkB4sJ,IAAW/kJ,EAAIpI,OACjC,OAEJ,IAAIwtJ,EAAY,CACZ7wF,MAAOA,EAAO4I,SAAUA,EAAU5lE,MAAOwtJ,EAAQ3nF,UA/C7C,KAgDJ0pB,aAAcA,GAElBg+D,EAAW5nF,YAAiBkoF,EAAWtqJ,EAAMuM,QAAQnB,MAErDlG,EAAIpI,QACJktJ,EAAY3sJ,YAAkBw+D,GAA+BmuF,EAAvBA,EAAS5mF,IAAIvH,EAAK/6D,GACxD8gE,EAAMO,MAAM6nF,IAEN3sJ,YAAkBw+D,IACxB+F,EAAMO,MAAMtG,EAAK/6D,GAErBupJ,EAAWD,kBAAqB/sJ,YAAkBgtJ,EAAWD,mBAAoD,IAA/BC,EAAWD,kBAC7F,IAAIlE,EAAa,IACjBoC,YAAYtoJ,EAAMunJ,SAClBvnJ,EAAMi0I,aAAc,EAChBj0I,EAAM0pG,gBAAgBhwC,IAAWx0D,EAAIpI,SACtB,WAAY48D,EAAOqI,WAAc,IAAIC,IAAYtI,EAAOqI,WAAWnjE,QAC9E86D,EAAOqI,YAEH+4B,aAAal5B,GAAO/mD,MAAK,SAAU/Z,GACvC,IAAIohE,EAAaliE,EAAMuM,QAAQmtD,OAAOwI,WACtCliE,EAAMuM,QAAQmtD,OAAOwI,WAAaphE,EAAElC,OACpCoB,EAAMQ,OAAOyZ,OAAO+M,KAAsB,CAAE40C,UAAWsqF,EAAYxsF,OAAQA,IACvEwsF,EAAWtqF,UAAU+kC,WAAW7jG,OAChCitJ,EAAa5nF,MAAM+jF,EAAWtqF,WAG9B57D,EAAMi0I,aAAc,EAExBj0I,EAAMuM,QAAQmtD,OAAOwI,WAAaA,EAClC6nF,EAAajqD,KAAKuqD,EAAWD,mBAC7BpqJ,EAAMk/F,OAAOmrD,EAAYN,OAI7BnoF,EAAMk+B,KAAKuqD,EAAWD,mBACtBpqJ,EAAMk/F,OAAOmrD,EAAYzoF,QAIrCwjF,EAAmBjpJ,UAAU+iG,OAAS,SAAUh/F,EAAM0hE,GAC9C3hE,KAAKO,OAAOuhE,YAAc,WAAY9hE,KAAKO,OAAOuhE,WAClD9hE,KAAKsqJ,YAAYrqJ,EAAM0hE,GAGvB3hE,KAAKuqJ,cAAc5oF,IAG3BwjF,EAAmBjpJ,UAAUsuJ,qBAAuB,SAAUzwF,GAM1D,IALA,IAAI2mC,EAAaykD,EAAmBsF,aAAa1wF,GAC7C2wF,EAAgB,GAChBzE,EAAa,GACb0E,OAA8C3uJ,IAArCgE,KAAKO,OAAOgmE,qBACrBqkF,EAAgBD,EAAS3qJ,KAAKO,OAAOgmE,uBAAyB,GACzDvoE,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKyjG,GAAa1iG,EAAKuF,EAAG1G,OAAQmB,IAAM,CACjE,IAAImG,EAAOZ,EAAGvF,GACVmhE,OAAM,EACNwrF,GAAU3qJ,KAAKO,OAAO+lE,iBAAiBniE,GAAMslG,oBAC7CtqC,EAAMoD,YAA2Bp+D,EAAMymJ,IAEvCzrF,GACAn/D,KAAKO,OAAOyZ,OAAO+M,KAAsB,CAAE40C,UAAWsqF,EAAYxsF,OAAQ0F,IACtE8mF,EAAWtqF,UAAU+kC,WAAW7jG,QAChC6tJ,EAAc9oJ,KAAKkhE,IAAUM,GAAG6iF,EAAWtqF,UAAU+kC,cAIzDgqD,EAAc9oJ,KAAK8+F,EAAWv8F,IAGtC,OAAOumJ,EAAc7tJ,QAAUimE,IAAUK,IAAIunF,IAEjDvF,EAAmBjpJ,UAAU2uJ,SAAW,WACpC,OAAO7qJ,KAAKO,OAAOsqJ,SAAW7qJ,KAAKO,OAAOsqJ,WAAW5rJ,QAAU,IAAI2iE,KAEvEujF,EAAmBjpJ,UAAUosJ,WAAa,WACtC,IAAIvoJ,EAAQC,KACR2hE,EAAQ3hE,KAAK6qJ,WACjBlpF,EAAMw+B,gBACNngG,KAAKiqJ,YAAYtoF,GACjB,IAAI1hE,EAAO,CACPm6F,YAAarzE,KAA4B46C,MAAOA,EAAOwoF,kBAAmB,MAG9ElqJ,EAAgB,YAAID,KACpBA,KAAKO,OAAOwpB,QAAQhD,IAAoB9mB,GAAM,SAAUA,GACpDA,EAAKkqJ,kBAAqB/sJ,YAAkB6C,EAAKkqJ,mBAA8C,IAAzBlqJ,EAAKkqJ,kBAC3ExoF,EAAMk+B,KAAK5/F,EAAKkqJ,mBACZpqJ,EAAMQ,OAAOuhE,YAAc,WAAY/hE,EAAMQ,OAAOuhE,WACpD/hE,EAAMuqJ,YAAYrqJ,EAAM0hE,GAGxB5hE,EAAM+qJ,qBAAqBnpF,GAAO,OAI9CwjF,EAAmBjpJ,UAAU+tJ,YAAc,SAAUtoF,GACjD,IAAIopF,EAAiBrxF,IAASqxB,SAAS/qF,KAAKsM,QAAQw6I,gBAAiB,SAKrE,OAJIiE,EAAe5sJ,QAAQ6B,KAAKsM,QAAQmtD,OAAOD,SAAW,IACtDuxF,EAAiBA,EAAej5H,OAAO9xB,KAAKsM,QAAQmtD,OAAOD,QAE/DmI,EAAMopB,SAASggE,GACRppF,GAEXwjF,EAAmBjpJ,UAAUouJ,YAAc,SAAUrqJ,EAAM0hE,GACvD,IAAI5hE,EAAQC,KACRgrJ,EAASnjF,YAAa5nE,EAAM0hE,GAChC3hE,KAAKO,OAAOwpB,QAAQhD,KAAwBikI,EAAOljF,OACzCkjF,EAAOziF,SACb5tD,QAAQC,MAAK,SAAU/Z,GACvBd,EAAMkrJ,YAAYpqJ,OAG1BskJ,EAAmBjpJ,UAAU4uJ,qBAAuB,SAAUnpF,EAAOupF,GACjE,IAAInrJ,EAAQC,KACZA,KAAKsM,QAAQw1D,WAAa9hE,KAAKsM,QAAQw1D,sBAAsBC,IACzD/hE,KAAKsM,QAAQw1D,WAAa,IAAIC,IAAY/hE,KAAKsM,QAAQw1D,YAC3D,IAAIqpF,EAAa,GACbC,EAAW,GACf,GAAIprJ,KAAKypG,gBAAgBzpG,KAAKsM,QAAQmtD,SAAWyxF,EAAW,CACxD,IAAIG,EAAW,WAAYrrJ,KAAKsM,QAAQmtD,OAAOqI,WAC3C,IAAIC,IAAY/hE,KAAKsM,QAAQmtD,OAAOqI,WAAWnjE,QAC/CqB,KAAKsM,QAAQmtD,OAAOqI,WACxB9hE,KAAKqlJ,gBAAgBxpJ,OAAS8lE,EAAM9lE,OACpCsvJ,EAAWvpJ,KAAKypJ,EAAQxwD,aAAa76F,KAAKqlJ,kBAC1C+F,EAASxpJ,MAAK,SAAUiZ,GAAQ,OAAO9a,EAAMszD,eAAiBx4C,KAElEswI,EAAWvpJ,KAAK5B,KAAKsM,QAAQw1D,WAAW+4B,aAAal5B,IACrDypF,EAASxpJ,KAAK5B,KAAKirJ,YAAY9uJ,KAAK6D,OACpC,IAAIpD,EAAI,EACRqmB,QAAQuP,IAAI24H,GAAYvwI,MAAK,SAAU/Z,GACnC,IAAK,IAAIsH,EAAI,EAAGA,EAAItH,EAAEhE,OAAQsL,IAC1BijJ,EAASxuJ,KAAKiE,EAAEsH,GAAGxJ,YAI/BwmJ,EAAmBjpJ,UAAU+uJ,YAAc,SAAUpqJ,GACjDb,KAAKsrJ,SAAWzqJ,EAChB,IAAI0qJ,EAAQ,CAAEzpF,WAAY9hE,KAAKsrJ,SAAUzwD,cAAc,EAAMrhC,MAAOx5D,KAAKsM,QAAQktD,OAEjF,GADAx5D,KAAKO,OAAOyZ,OAAO+M,IAA+BwkI,GAC9CA,EAAM1wD,aAAc,CACpB,IAAIl5B,EAAQ,IAAIC,IAChB,GAAI5hE,KAAKO,OAAOirJ,gBAAkBxrJ,KAAKO,OAAOirJ,eAAexuJ,IAAIH,OAAQ,CACrE,IAAI4uJ,EAAYzrJ,KAAKO,OAAOirJ,eACxBp8E,EAASq8E,EAAUr8E,OAAOvyE,OAAS4uJ,EAAUr8E,OAASpvE,KAAKsM,QAAQytD,QAAQt1D,KAAI,SAAUmF,GAAK,OAAOA,EAAE4vD,SAC3GmI,EAAMs9B,OAAOwsD,EAAUzuJ,IAAKoyE,EAAQq8E,EAAUrpF,SAAUqpF,EAAU3/D,WAAY2/D,EAAU1/D,cAE5F,GAAK/rF,KAAKsM,QAAQw6I,gBAAgBjqJ,OAAS,CAEvC,IADA,IAAIgwG,EAAO,GACFjwG,EAAI,EAAGA,EAAIoD,KAAKsM,QAAQw6I,gBAAgBjqJ,OAAQD,IAAK,CAC1D,IAAI8uJ,EAAe1rJ,KAAKsM,QAAQw6I,gBAAgBlqJ,GAC5CoD,KAAKsM,QAAQ7Q,KACbiwJ,EAAajwJ,IAAMiwJ,EAAajwJ,KAAOuE,KAAKO,OAAO+lE,iBAAiBolF,EAAalyF,OAAO/9D,IACpFiwJ,EAAajwJ,MAAQuE,KAAKsM,QAAQ7Q,KAClCoxG,EAAKjrG,KAAK5B,KAAKsM,QAAQw6I,gBAAgBlqJ,KAIvC8uJ,EAAalyF,QAAUx5D,KAAKsM,QAAQktD,OACpCqzC,EAAKjrG,KAAK5B,KAAKsM,QAAQw6I,gBAAgBlqJ,IAInD,IAAI++D,EAAY37D,KAAKwqJ,qBAAqB39C,GACtClxC,GACAgG,EAAMO,MAAMvG,GAIpB,IAAIh9D,EAAS,IAAIojE,IAAYwpF,EAAMzpF,YAAYQ,aAAaX,GACxDxC,EAAMn/D,KAAKsM,QAAQmtD,OACvBz5D,KAAK2rJ,aAAexG,EAAmByG,YAAYjtJ,EAAQqB,KAAKsM,QAAQktD,MAAO2F,EAAKn/D,KAAKqzD,gBAAgBk1B,SAAW,GAExH,IAAI1tE,EAAO0wI,EAAM1wD,aAAe76F,KAAK2rJ,aAAeJ,EAAMzpF,WAC1D9hE,KAAK6rJ,kBAAkB,MAAM,EAAMhxI,EAAM0wI,GACrCvrJ,KAAKumJ,QACLvmJ,KAAKumJ,OAAOjkJ,QAEhB,IAAIrC,EAAO,CACPm6F,YAAarzE,KACbs1F,WAAYr8G,KAAKsM,QAAQktD,MAAOiuF,WAAYznJ,KAAKsM,QAAQnB,MAG7DlL,EAAgB,YAAID,KACpBA,KAAKO,OAAOyZ,OAAO+M,IAAyB9mB,IAEhDklJ,EAAmBjpJ,UAAU2vJ,kBAAoB,SAAUlqF,EAAOupF,EAAWppF,EAAY7hE,GACrFooJ,YAAYroJ,KAAKsnJ,SAKjBtnJ,KAAK8rJ,eACL9rJ,KAAK+rJ,kBAAkBjqF,EAAYopF,EAAWjrJ,IAElDklJ,EAAmBjpJ,UAAUquJ,cAAgB,SAAU5oF,GACnD3hE,KAAK8qJ,qBAAqBnpF,IAE9BwjF,EAAmBjpJ,UAAU4vJ,aAAe,WACxC9rJ,KAAKrB,OAAS,GACd,IAAIg9D,EAAY37D,KAAKwqJ,qBAAqBxqJ,KAAKsM,QAAQw6I,iBACnDnlF,EAAQ,IAAIC,IACZjG,GACAgG,EAAMO,MAAMvG,GAEhB37D,KAAKO,OAAOyZ,OAAO+M,IAAoC,CAAE46C,MAAOA,IAEhE,IADA,IACS3jE,EAAK,EAAGw7F,EADJ,IAAIz3B,IAAY/hE,KAAKsrJ,UAAUhpF,aAAaX,GACrB3jE,EAAKw7F,EAAS38F,OAAQmB,IAAM,CAC5D,IAAIoG,EAAMo1F,EAASx7F,GACnBgC,KAAKrB,OAAOo8B,YAAU/6B,KAAKsM,QAAQktD,MAAOp1D,KAAQ,IAG1D+gJ,EAAmBjpJ,UAAUwpJ,aAAe,SAAU7kJ,GAClD,IAAIo8B,EAASp8B,EAAEo8B,OACX55B,EAAOs6D,aAAa1gC,EAAQ,sBAIhC,GAHI0gC,aAAa1gC,EAAQ,gBACrBj9B,KAAKsmJ,eAAezlJ,GAEpBwC,EAAM,CACN,IAAIkuB,EAAYluB,EAAKC,cAAc,gBAC/BiuB,EACAvxB,KAAKgsJ,iBAAiBz6H,EAAUyE,UAAUzD,SAAS,YAGnDuuC,aAAez9D,EAAKuwC,eAExB5zC,KAAKisJ,0BACL5oJ,EAAKC,cAAc,iBAAiBhB,QAExCtC,KAAKksJ,SAASvuF,aAAat6D,EAAM,cAErC8hJ,EAAmBjpJ,UAAUypJ,aAAe,SAAU9kJ,GAClDb,KAAKksJ,SAASvuF,aAAa98D,EAAEo8B,OAAQ,cAEzCkoH,EAAmBjpJ,UAAUgwJ,SAAW,SAAU7oJ,GAC9C,IAAI8oJ,EAAWnsJ,KAAKy/D,IAAIn8D,cAAc,eAClC6oJ,GACAA,EAASn2H,UAAUvM,OAAO,cAE1BpmB,GACAA,EAAK2yB,UAAUjN,IAAI,eAG3Bo8H,EAAmBjpJ,UAAU8vJ,gBAAkB,SAAU9qF,GAErD,IADA,IACSljE,EAAK,EAAGouJ,EADJ,GAAG/qJ,MAAMC,KAAKtB,KAAKunJ,KAAKt4H,uBAAuB,YACxBjxB,EAAKouJ,EAASvvJ,OAAQmB,IAAM,CAC5D,IAAIupJ,EAAO6E,EAASpuJ,GACpBqjE,aAAqBkmF,EAAMrmF,GAC3BC,aAAWomF,EAAKtmF,gBAAiBC,KAGzCikF,EAAmBjpJ,UAAU8rJ,WAAa,WAClChoJ,KAAKO,OAAOS,QAAQg1B,UAAUzD,SAAS,cACvCvyB,KAAKwgE,UAAUx/D,QAAQsC,cAAc,kBAAkB0yB,UAAUvM,OAAO,iBACnEzpB,KAAKsM,QAAQ47I,oBACdloJ,KAAKwgE,UAAUx/D,QAAQsC,cAAc,UAAUhB,UAI3D6iJ,EAAmBjpJ,UAAUmwJ,eAAiB,SAAU7vJ,EAAO0kE,EAASrmD,GACpE,IAAIxX,EAAO69D,EAAUlhE,KAAKulJ,SAAStjJ,WAAU,GACzCjC,KAAKwlJ,UAAUvjJ,WAAU,GAC7Bk/D,aAAW99D,EAAKC,cAAc,SAAU49D,GACxC,IAAIuU,EAAQpyE,EAAKC,cAAc,YAC3Bm/F,EAAYl9B,YAAgB,GAAI1qD,EAAM,CAAE4+C,OAAQz5D,KAAKsM,QAAQmtD,OAAQl5D,OAAQP,KAAKO,UACtFk1E,EAAMrzE,WAAahF,YAAkBZ,IAAUA,EAAM2Q,WAAWtQ,OAASL,EACrEwD,KAAK2mJ,kBAAkB,UACN,mBAAVnqJ,IACPi5E,EAAMrzE,WAAsB,IAAV5F,EAAiBwD,KAAK2mJ,kBAAkB,cAAgB3mJ,KAAK2mJ,kBAAkB,gBAErG9wH,YAAS,CAAC4/C,GAAQ,CAAC,yBACfz1E,KAAKsM,QAAQgf,UAAYzQ,EAAK7a,KAAKsM,QAAQmtD,OAAOD,SAAWx5D,KAAK2mJ,kBAAkB,gBACpFlxE,EAAMrzE,UAAY,GACIpC,KAAKO,OAAOgiG,SAAWviG,KAAKsM,QAAQmtD,OAAOvoC,QACL,kBAA7ClxB,KAAKsM,QAAQmtD,OAAOvoC,OAAOm4E,cAEtCrpG,KAAKsM,QAAQgf,SAASm3E,EAAWziG,KAAKO,OAAQ,qBAAsB,KAAM,KAAM,KAAMk1E,GACtFz1E,KAAKO,OAAOqiG,mBAGZzkC,YAAesX,EAAOz1E,KAAKsM,QAAQgf,SAASm3E,EAAWziG,KAAKO,OAAQ,wBAG5E,OAAO8C,GAEX8hJ,EAAmBjpJ,UAAU+vJ,wBAA0B,WACnD,IAKIK,EALAvgI,EAAM/rB,KAAKunJ,KAAKz2H,SAASj0B,OAAS,EAClCwxB,EAAY,GACZijF,GAAW,EACXjuG,EAAOrD,KAAKunJ,KAAKjkJ,cAAc,gBAC/BoiF,EAAW1lF,KAAKunJ,KAAK/lJ,iBAAiB,8BAA8B3E,OAEnEmD,KAAKsM,QAAQ47I,sBACdoE,EAAMtsJ,KAAKwgE,UAAU+rF,OAAO,IACxBj7C,UAAW,GAEnB,IAAItwC,EAAQ39D,EAAK49D,gBACjBE,aAAWH,GAAO,GAClBA,EAAMwrF,eAAgB,EAClBzgI,IAAQ25D,GACRr3D,EAAY,CAAC,WACb8yC,aAAWH,GAAO,IAEb0kB,GACLr3D,EAAY,CAAC,UACb2yC,EAAMwrF,eAAgB,IAGtBn+H,EAAY,CAAC,aACbijF,GAAW,EACPg7C,IACAA,EAAIh7C,UAAW,IAGnBg7C,IACAtsJ,KAAKslJ,aAAegH,EAAIh7C,SACxBg7C,EAAIhzH,YAERlD,aAAY,CAAC/yB,GAAO,CAAC,UAAW,SAAU,cAC1CwyB,YAAS,CAACxyB,GAAOgrB,GACjBruB,KAAKO,OAAOyZ,OAAO+M,KAAiC,CAAEuqF,SAAUA,KAEpE6zC,EAAmBjpJ,UAAU6vJ,kBAAoB,SAAUlxI,EAAMqwI,EAAWK,GACxE,IAAIhoJ,EAEA+oJ,EADAG,EAASzsJ,KAAKO,OAAOY,cAAc,OAEnCmwG,GAAW,EACVtxG,KAAKsM,QAAQ47I,qBACdoE,EAAMtsJ,KAAKwgE,UAAU+rF,OAAO,IAEhC,IAAIG,GAAe,EACf1vJ,EAAM,UACLuuJ,EAAM1wD,eACP79F,EAAMuuJ,EAAM/xF,OAEhB,IAAK,IAAI58D,EAAI,EAAGA,EAAIie,EAAKhe,OAAQD,IAAK,CAClC,IAAIqI,EAAM5I,YAASW,EAAK6d,EAAKje,KACjB,KAARqI,GAAc7H,YAAkB6H,MAChCynJ,GAA4B,GAIpC,GADA1sJ,KAAKopJ,UAA4B,IAAjBsD,EAAqB7xI,EAAKhe,OAAS6vJ,EAAc7xI,EAAKhe,OAClEge,EAAKhe,SAAWmD,KAAKg0I,YAAa,CAClC,IAAI2Y,EAAiB3sJ,KAAK2mJ,kBAAkB,aACxCiG,EAAW5sJ,KAAKqsJ,eAAeM,GAAgB,IAAQppJ,EAAK,IAAOvD,KAAKsM,QAAQktD,OAASmzF,EAAgBppJ,IACzGguB,EAAY6vC,YAAmBlD,YAAO,QAAS0uF,EAAU,YAC7Dr7H,EAAUjuB,cAAc,YAAY0yB,UAAUjN,IAAI,eAClD0jI,EAAOzqJ,YAAYuvB,GACnB,IAAIoqC,EAAY,IAAImH,IAAU,QAAS,QAAS9iE,KAAKsM,QAAQktD,OACzDx5D,KAAKsM,QAAQ0wD,kBACbrB,EAAYA,EAAUyH,GAAG,QAAS,QAASpjE,KAAKsM,QAAQ0wD,kBAE5D,IAAI6vF,EAAgB,IAAI9qF,IAAY/hE,KAAKsM,QAAQw6I,iBAAiBxkF,cAAa,IAAIV,KAAQM,MAAMvG,IAAY9+D,OACzGiwJ,OAAW,EACf,IAASlwJ,EAAI,EAAGA,EAAIie,EAAKhe,OAAQD,IAAK,CAClC,IAAInB,EAAMyiE,YAAO,QACjBl+D,KAAKu8D,OAAO9gE,GAAOY,YAASW,EAAK6d,EAAKje,IACtC,IAAIJ,EAAQH,YAAS2D,KAAKsM,QAAQktD,MAAO3+C,EAAKje,IAC1CoD,KAAKsM,QAAQ49F,WACb1tG,EAAQwD,KAAK8oG,eAAe5G,OAAO1lG,EAAOwD,KAAKsM,QAAQ49F,WAE3D,IAAI6iD,EAAS,CAAEvwJ,MAAOA,EAAOi9D,OAAQz5D,KAAKsM,QAAQmtD,OAAQ5+C,KAAMA,EAAKje,IAGrE,GAFAoD,KAAKO,OAAOyZ,OAAO+M,KAAwBgmI,GAE5B,MADfvwJ,EAAQuwJ,EAAOvwJ,QACMY,YAAkBZ,GAAS,CAC5C,GAAIswJ,EACA,SAEJA,GAAW,EAEf,IAAIE,EAAWhtJ,KAAKqsJ,eAAe7vJ,EAAOwD,KAAKitJ,gBAAgBJ,EAAe7sJ,KAAKu8D,OAAO9gE,IAAOY,YAAS,UAAWwe,EAAKje,KAC1H6vJ,EAAOzqJ,YAAYo/D,YAAmB3lE,EAAKuxJ,EAAU,aAEzDhtJ,KAAKunJ,KAAKnlJ,UAAY,GACtB+7D,YAAen+D,KAAKunJ,KAAM,GAAGlmJ,MAAMC,KAAKmrJ,EAAO37H,WAC/C9wB,KAAKisJ,0BACDK,IACAA,EAAIh7C,UAAW,GAEnBA,GAAW,OAGXm7C,EAAOzqJ,YAAYhC,KAAKO,OAAOY,cAAc,OAAQ,CAAEiB,UAAWpC,KAAK2mJ,kBAAkB,eACzF3mJ,KAAKunJ,KAAKnlJ,UAAY,GACtB+7D,YAAen+D,KAAKunJ,KAAM,GAAGlmJ,MAAMC,KAAKmrJ,EAAO37H,WAC3Cw7H,IACAA,EAAIh7C,UAAW,GAEnBA,GAAW,EAEXg7C,IACAtsJ,KAAKslJ,aAAegH,EAAIh7C,SACxBg7C,EAAIhzH,YAER,IAAIr5B,EAAO,CAAEm6F,YAAarzE,KAA4B+6C,WAAY9hE,KAAKg0I,YAAc,GAAKn5H,GAE1F5a,EAAgB,YAAID,KACpBA,KAAKO,OAAOyZ,OAAO+M,IAAyB9mB,GAC5CD,KAAKO,OAAOyZ,OAAO+M,KAAiC,CAAEuqF,SAAUA,IAChEq7B,YAAY3sI,KAAKsnJ,UAErBnC,EAAmBjpJ,UAAU+wJ,gBAAkB,SAAUJ,EAAerwJ,GACpE,GAAKwD,KAAKgnJ,YAAe6F,EAGpB,CACD,IAAIK,EAAaltJ,KAAKrB,OAAOnC,GAC7B,MAAiC,aAA1BwD,KAAKsM,QAAQ81D,UAA2B8qF,EAAaA,EAJ5D,OAAO,GAOf/H,EAAmByG,YAAc,SAAU5pF,EAAMxI,EAAOC,EAAQpG,GAO5D,IANA,IAEI72D,EAFAmF,EAAMqgE,EAAKnlE,OACX8B,EAAS,GAGTuqF,EAAS,GACT1nB,KAAe/H,IAAUA,EAAOgwC,kBAAkBhwC,EAAOgwC,kBACtD9nG,KAGH,GAFAnF,EAAQwlE,EAAKrgE,MACbnF,EAAQu+B,YAAUy+B,EAAOh9D,MACV0sF,GAAS,CACpB,IAAI3sF,EAAM,GAGV,GAFAA,EAAW,QAAIC,EACf0sF,EAAO1sF,IAAS,EACZglE,EAAc,CACd,IAAI2rF,EAAiB5rF,YAAe9H,EAAQ,GAAIj9D,EAAO62D,GAAgB,GACvEt2D,aAASgqB,KAAuBomI,EAAgBnrF,EAAKrgE,IACrDnF,EAAQH,YAASo9D,EAAOuD,gBAAiBmwF,GAE7CpwJ,aAASy8D,EAAOp8D,YAAkBZ,GAAS,KAAOA,EAAOD,GACzDQ,aAAS,UAAWilE,EAAKrgE,GAAMpF,GAC/BoC,EAAOiD,KAAKrF,GAGpB,OAAOm9D,IAASquB,MAAMruB,IAASmoB,KAAKljF,EAAQ66D,EAAOE,IAAS+tB,aAAc,YAE9E09D,EAAmBsF,aAAe,SAAU1wF,GAIxC,IAHA,IAAI8yC,EAAOnzC,IAASqxB,SAAShxB,EAAS,SAAS,IAAS,GACpD2B,EAAa,GACbE,EAAO,GACFh/D,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAEH,KAD1B8+D,EAAa,IAAIqG,IAAYhI,GAASuI,cAAa,IAAIV,KAAQM,MAAM,QAAS,QAAS2qC,EAAKjwG,GAAG48D,SAChF38D,SACX++D,EAAKixC,EAAKjwG,GAAG48D,OAAS2rF,EAAmBiI,kBAAkB1xF,IAGnE,OAAOE,GAEXupF,EAAmBiI,kBAAoB,SAAUvgD,GAC7C,IACIlxC,EADAh6D,EAAMkrG,EAAOA,EAAKhwG,OAAS,EAG3B2B,EAAQ2mJ,EAAmBkI,iBAAiBxgD,EAAK,IACrDruG,EAAMutF,cAAgB3uF,YAAkBoB,EAAMutF,eAAgBvtF,EAAMutF,aAEhEpwB,EADe,SAAfn9D,EAAM2M,MAAkC,aAAf3M,EAAM2M,KACnBg3D,YAAiB3jE,EAAOA,EAAM2M,MAG9B3M,EAAM6kE,YAAc7kE,EAAM6kE,YAClC,IAAIP,IAAUtkE,EAAMg7D,MAAOh7D,EAAM4jE,SAAU5jE,EAAMhC,OAAQ2oJ,EAAmBmI,aAAa9uJ,GAAQA,EAAMutF,cAE/G,IAAK,IAAIt6E,EAAI,EAAGA,EAAI9P,EAAK8P,IACrBo7F,EAAKp7F,GAAK0zI,EAAmBkI,iBAAiBxgD,EAAKp7F,IAC/C9P,EAAM,GAAK8P,EAAI,GAA2B,OAAtBo7F,EAAKp7F,GAAGkqD,UACP,SAAjBkxC,EAAKp7F,GAAGtG,MAAoC,aAAjB0hG,EAAKp7F,GAAGtG,KACnCwwD,EAAU+kC,WAAW9+F,KAAKugE,YAAiB0qC,EAAKp7F,GAAIo7F,EAAKp7F,GAAGtG,OAG5DwwD,EAAU+kC,WAAW9+F,KAAK,IAAIkhE,IAAU+pC,EAAKp7F,GAAG+nD,MAAOqzC,EAAKp7F,GAAG2wD,SAAUyqC,EAAKp7F,GAAGjV,OAAQ2oJ,EAAmBmI,aAAazgD,EAAKp7F,IAAKo7F,EAAKp7F,GAAGs6E,eAMvIpwB,EAFa,SAAjBkxC,EAAKp7F,GAAGtG,MAAoC,aAAjB0hG,EAAKp7F,GAAGtG,KACT,QAAtB0hG,EAAKp7F,GAAGkqD,WAA4C,UAArBkxC,EAAKp7F,GAAG2wD,SAC3BzG,EAAiB,GAAEwG,YAAiB0qC,EAAKp7F,GAAIo7F,EAAKp7F,GAAGtG,MAAO0hG,EAAKp7F,GAAGtG,KAAM0hG,EAAKp7F,GAAGs6E,cAGlFpwB,EAAWkxC,EAAKp7F,GAAGkqD,WAAYwG,YAAiB0qC,EAAKp7F,GAAIo7F,EAAKp7F,GAAGtG,MAAO0hG,EAAKp7F,GAAGtG,KAAM0hG,EAAKp7F,GAAGs6E,cAIlG8gB,EAAKp7F,GAAG4xD,YAChB1H,EAAUkxC,EAAKp7F,GAAGkqD,WAAWkxC,EAAKp7F,GAAG4xD,aACrC1H,EAAWkxC,EAAKp7F,GAAGkqD,WAAYkxC,EAAKp7F,GAAG+nD,MAAOqzC,EAAKp7F,GAAG2wD,SAAUyqC,EAAKp7F,GAAGjV,OAAQ2oJ,EAAmBmI,aAAazgD,EAAKp7F,IAAKo7F,EAAKp7F,GAAGs6E,cAIlJ,OAAOpwB,GAAa,MAExBwpF,EAAmBmI,aAAe,SAAUp8H,GACxC,OAAI9zB,YAAkB8zB,EAAOmxC,aACL,WAAhBnxC,EAAO/lB,MAAqB/N,YAAkB8zB,EAAO/lB,OAAmC,kBAAlB+lB,EAAO10B,OAQ1E00B,EAAOmxC,WAGtB8iF,EAAmBkI,iBAAmB,SAAUn8H,GAI5C,OAHqB,SAAhBA,EAAO/lB,MAAmC,aAAhB+lB,EAAO/lB,MAAuB+lB,EAAO10B,iBAAiB2M,QACjF+nB,EAAO/lB,KAAO+lB,EAAO/lB,MAAQ,QAE1B+lB,GAEJi0H,EA/gC6B,GCNpCl3C,EAAsB,WAQtB,SAASA,EAAK1tG,EAAQw/D,GAClB//D,KAAKutJ,UAAY,CAAEC,WAAW,EAAOC,SAAU,KAAM1lE,MAAO,IAC5D/nF,KAAK0tJ,oBAAsB,CAAEF,WAAW,EAAOC,SAAU,MACzDztJ,KAAKO,OAASA,EACdP,KAAK+/D,eAAiBA,EACtB//D,KAAK2tJ,kBACD3tJ,KAAKO,OAAO44B,aAAwC,eAAzBn5B,KAAK66B,kBAGpC76B,KAAKO,OAAO+Y,GAAGyN,KAAkB/mB,KAAK4tJ,QAAS5tJ,MAC/CA,KAAKO,OAAO+Y,GAAGyN,KAA2B/mB,KAAK6tJ,YAAa7tJ,MAC5DA,KAAKO,OAAO+Y,GAAGyN,KAAoB/mB,KAAK8tJ,WAAY9tJ,MACpDA,KAAKO,OAAO+Y,GAAGyN,KAA2B/mB,KAAK2tJ,gBAAiB3tJ,MAChEA,KAAKO,OAAO+Y,GAAGyN,KAAgB/mB,KAAKmb,QAASnb,MAC7CA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAK+tJ,YAAa/tJ,MACpDA,KAAKO,OAAO+Y,GAAGyN,IAAwB/mB,KAAK+8F,QAAS/8F,MACrDA,KAAKO,OAAO+Y,GAAGyN,IAAgB/mB,KAAKguJ,oBAAqBhuJ,MACzDA,KAAKO,OAAO+Y,GAAGyN,KAAwB/mB,KAAKguJ,oBAAqBhuJ,OAkjBrE,OAhjBAiuG,EAAK/xG,UAAU2xJ,YAAc,SAAUhtJ,GACnCb,KAAK2+F,YAAY78B,WAAWE,KAAKloD,OAAOjZ,EAAEwgH,QAAS,EAAGrhH,KAAK2+F,YAAY78B,WAAWE,KAAKloD,OAAOjZ,EAAE0gH,UAAW,GAAG,KAElHtT,EAAK/xG,UAAU2+B,cAAgB,WAC3B,MAAO,QAOXozE,EAAK/xG,UAAUyxJ,gBAAkB,WAC7B,IAAI1zF,EAAOj6D,KAAKO,OAChBP,KAAK2+F,YAAc1kC,EAAK6H,sBAAsBC,IAAc9H,EAAK6H,WAC5D1kE,YAAkB68D,EAAK6H,YAAc,IAAIC,IAAgB,IAAIA,IAAY9H,EAAK6H,aAC/E7H,EAAKg0F,WAAeh0F,EAAK0H,iBAAiBC,KAI1C5hE,KAAKkuJ,wBAAyB,EAC9Bj0F,EAAK0H,MAAQ1H,EAAK0H,iBAAiBC,IAAQ3H,EAAK0H,MAAQ,IAAIC,KAJ5D3H,EAAK/gC,cAAc,CAAEyoC,MAAO,IAAIC,MAAW,IAcnDqsC,EAAK/xG,UAAUi3D,cAAgB,SAAUg7F,GACrC,IACIxsF,EADO3hE,KAAKO,OACCsqJ,WAAW5rJ,QAC5B,GAAoC,kBAAhCe,KAAKO,OAAO6tJ,gBACZzsF,EAAMvqC,OAAOp3B,KAAKO,OAAOmkE,aAAaxzC,QAAO,SAAUuoC,GAAU,SAAiC,IAAxBA,EAAO6F,eAA4C,IAAnB7F,EAAOyD,cAAsClhE,IAAjBy9D,EAAOD,UAAyB/0D,KAAI,SAAUg1D,GAAU,OAAOA,EAAOD,eAE3M,GAAoC,WAAhCx5D,KAAKO,OAAO6tJ,gBAA8B,CAG/C,IAFA,IAAIC,EAAoB,GACpBt0F,EAAU/5D,KAAKO,OAAOw5D,QACjBn9D,EAAI,EAAGA,EAAIm9D,EAAQl9D,OAAQD,IAChCyxJ,EAAkBzsJ,KAAKm4D,EAAQn9D,GAAG48D,OAEtCmI,EAAMvqC,OAAOi3H,GAajB,OAXAruJ,KAAKsuJ,YAAY3sF,GACjB3hE,KAAKuuJ,YAAY5sF,GACjB3hE,KAAKwuJ,eAAe7sF,GACpB3hE,KAAKyuJ,UAAU9sF,GACXgC,YAAgB3jE,KAAKO,QACrBP,KAAK0uJ,sBAAsB/sF,GAG3B3hE,KAAK2uJ,UAAUhtF,EAAOwsF,GAE1BnuJ,KAAKwnH,WAAW7lD,GACTA,GAOXssC,EAAK/xG,UAAUsyJ,eAAiB,SAAU7sF,GAEtC,IADA,IAAImH,EAAO9oE,KAAKO,OAAO+9D,WACd1hE,EAAI,EAAGA,EAAIksE,EAAKjsE,OAAQD,IAE7B,IADA,IAAIguD,EAAMke,EAAKlsE,GACNuL,EAAI,EAAGA,EAAIyiD,EAAImP,QAAQl9D,OAAQsL,IAGpC,IAFA,IAAI0kG,EAAOjiD,EAAImP,QAAQ5xD,GACnBu0G,EAAQ7P,EAAK1hG,gBAAgB/M,MAAQyuG,EAAK1hG,KAAO,CAAC0hG,EAAK1hG,MAClD0+D,EAAI,EAAGA,EAAI6yC,EAAM7/G,OAAQgtE,IAC9BlI,EAAMy+B,UAAUsc,EAAM7yC,GAAGpyD,cAAeo1F,EAAKrzC,OAIzD,OAAOmI,GAEXssC,EAAK/xG,UAAUwyJ,sBAAwB,SAAU/sF,GAE7C,GAAIA,EAAM08B,QAAQxhG,OACd,IAAK,IAAID,EAAI,EAAGA,EAAI+kE,EAAM08B,QAAQxhG,OAAQD,IACN,WAA5B+kE,EAAM08B,QAAQzhG,GAAQ,IACtB+kE,EAAM08B,QAAQvkF,OAAOld,EAAG,GAIpC,OAAO+kE,GAEXssC,EAAK/xG,UAAUyyJ,UAAY,SAAUhtF,EAAOwsF,GACxC,IAAIl0F,EAAOj6D,KAAKO,OAEhB,IAAK05D,EAAKgL,aAAehL,EAAK2J,sBAAwB3J,EAAKwyC,2BAAyC,IAAb0hD,EAAmB,CAQtG,GAPAl0F,EAAKiL,aAAaC,YAAc59D,KAAK8L,IAAI,EAAG4mD,EAAKiL,aAAaC,aAC1DlL,EAAKiL,aAAa0pF,WAAa,IAC/B30F,EAAKiL,aAAa0pF,UAAY,GAE9B30F,EAAKiL,aAAaE,UAAY,IAC9BnL,EAAKiL,aAAaE,SAAW,IAE7BzD,EAAM08B,QAAQxhG,OACd,IAAK,IAAID,EAAI,EAAGA,EAAI+kE,EAAM08B,QAAQxhG,OAAQD,IACN,WAA5B+kE,EAAM08B,QAAQzhG,GAAQ,IACtB+kE,EAAM08B,QAAQvkF,OAAOld,EAAG,IAI/BQ,YAAkB68D,EAAKi3E,uBAAyBj3E,EAAKwyC,wBACtDzsG,KAAKO,OAAOyZ,OAAO+M,KAA0B46C,GAG7CA,EAAMg+B,KAAK1lC,EAAKiL,aAAaC,YAAalL,EAAKiL,aAAaE,UAGpE,OAAOzD,GAEXssC,EAAK/xG,UAAUsrH,WAAa,SAAU7lD,GAClC,IAAI1H,EAAOj6D,KAAKO,OAChB,GAAI05D,EAAKguC,eAAiBhuC,EAAKe,cAAcjB,QAAQl9D,OAAQ,CACrDmD,KAAKO,OAAOy6D,cAAc+xE,mBAC1BprE,EAAM88B,SAAS78F,KAAK,CAAE5E,IAAK,aAAcR,MAAOwD,KAAKO,OAAOy6D,cAAc+xE,oBAG9E,IADA,IAAIhzE,EAAUE,EAAKe,cAAcjB,QACxBn9D,EAAI,EAAG+E,EAAMo4D,EAAQl9D,OAAQD,EAAI+E,EAAK/E,IAAK,CAChD,IAAI68D,EAASz5D,KAAKsmE,iBAAiBvM,EAAQn9D,IACtC68D,GACDz5D,KAAKO,OAAOsuJ,IAAI,iBAAkB,CAAEl7C,WAAY,QAAS0I,WAAYtiD,EAAQn9D,KAEjF,IAAIkyJ,EAAWr1F,EAAO0uC,oBAClBn9F,EAASyuD,EAAOzuD,OAChB8jJ,EACAntF,EAAMomB,MAAMhuB,EAAQn9D,GAAIoD,KAAK+uJ,kBAAkB5yJ,KAAK6D,MAAOgL,GAG3D22D,EAAMomB,MAAMhuB,EAAQn9D,GAAI,OAIpC,OAAO+kE,GAEXssC,EAAK/xG,UAAUuyJ,UAAY,SAAU9sF,GACjC,IAAI1H,EAAOj6D,KAAKO,OAChB,IAAK05D,EAAK6tC,cAAgB7tC,EAAKguC,gBAAkBhuC,EAAKkX,aAAapX,QAAQl9D,OAAQ,CAG/E,IAFA,IAAIk9D,EAAUE,EAAKkX,aAAapX,QAC5Bi1F,EAAU,GACLpyJ,EAAIm9D,EAAQl9D,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAE1C,KADIuiE,EAAMn/D,KAAKsmE,iBAAiBvM,EAAQn9D,GAAG48D,QAMvC,OADAx5D,KAAKO,OAAOsuJ,IAAI,iBAAkB,CAAEl7C,WAAY,OAAQ0I,WAAYtiD,EAAQn9D,GAAG48D,QACxEmI,EAJPxC,EAAI4qC,iBAAiBhwC,EAAQn9D,GAAG2iG,WAMpC,IAAI1W,EAAK9uB,EAAQn9D,GAAG2iG,UAChBpgC,EAAIuqC,eACJ1pG,KAAKO,OAAOsuJ,IAAI,sBAChBhmE,EAAM7oF,KAAK4sI,WAA0C7yE,EAAQn9D,GAAG2iG,UAAxCpgC,EAAIuqC,aAAavtG,KAAKgjE,KAEY,IAA1DlF,EAAKe,cAAcjB,QAAQ57D,QAAQ47D,EAAQn9D,GAAG48D,OAC1C2F,EAAIsqC,mBAAqBtqC,EAAIuqC,aAC7B/nC,EAAM29B,iBAAiBngC,EAAI3F,MAAOqvB,OAAI7sF,EAAW+9D,EAAQn9D,GAAG2iG,UAAU9nF,eAGtEkqD,EAAMy9B,OAAOjgC,EAAI3F,MAAOqvB,GAI5BmmE,EAAQptJ,KAAK,CAAE29F,UAAW1W,EAAIrvB,MAAO2F,EAAI3F,QAGxC58D,EAAI,EAAb,IAAK,IAAW+E,EAAMqtJ,EAAQnyJ,OAAQD,EAAI+E,EAAK/E,IAC3C,GAAoC,kBAAzBoyJ,EAAQpyJ,GAAG2iG,UAClB59B,EAAMy9B,OAAO4vD,EAAQpyJ,GAAG48D,MAAOw1F,EAAQpyJ,GAAG2iG,eAEzC,CACD,IAAIpgC,EAAMn/D,KAAKsmE,iBAAiB0oF,EAAQpyJ,GAAG48D,OAC3CmI,EAAM29B,iBAAiB0vD,EAAQpyJ,GAAG48D,MAAOw1F,EAAQpyJ,GAAG2iG,eAAWvjG,EAAWmjE,EAAI2qC,mBAAmBryF,gBAI7G,OAAOkqD,GAEXssC,EAAK/xG,UAAUqyJ,YAAc,SAAU5sF,EAAOstF,EAASztF,GACnD,IAAIiqF,EAAYzrJ,KAAKO,OAAOirJ,eACxBp8E,EAASq8E,EAAUr8E,OAAOvyE,OAAS4uJ,EAAUr8E,OAASpvE,KAAKkvJ,4BAC3DxE,EAAgB,GAChByE,GAAuB,EAC3B,GAAInvJ,KAAKO,OAAOirJ,eAAexuJ,IAAIH,OAAQ,CACvCsyJ,EAAuBnvJ,KAAKO,OAAOgmE,uBAAuB78C,MAAK,SAAUy1C,GAAO,OAAOiQ,EAAOjxE,QAAQghE,EAAI3F,QAAU,KACpH,IAAI0O,EAAW1G,EAA0CytF,EAAQntF,WAAWoG,QAA9CloE,KAAK2+F,YAAYz2B,QAC/C,GAAIinF,GAAyBjnF,EAAQrtC,eACL,mBAA5BqtC,EAAQrtC,gBAAuC,CAC/Cu0C,EAAS5N,EAAe,CAACytF,EAAQjyF,iBAAmBoS,EACpD,IAAK,IAAIxyE,EAAI,EAAGA,EAAIwyE,EAAOvyE,OAAQD,IAAK,CACpC,IAAI68D,EAAS+H,EAAeytF,EAAUjvJ,KAAKsmE,iBAAiB8I,EAAOxyE,IAC/D68D,EAAOgwC,oBAAsBjoC,EAC7BkpF,EAAgB1qJ,KAAKovJ,mBAAmB31F,EAAQixF,GAGhDA,EAAc9oJ,KAAK,IAAIkhE,IAAUsM,EAAOxyE,GAAI6uJ,EAAUrpF,SAAUqpF,EAAUzuJ,IAAKyuJ,EAAU3/D,WAAY2/D,EAAU1/D,eAGvH,IAAIsjE,EAAWvsF,IAAUM,GAAGsnF,GAC5B2E,EAASryJ,IAAMyuJ,EAAUzuJ,IACzB2kE,EAAMO,MAAMmtF,QAGZ1tF,EAAMs9B,OAAOwsD,EAAUzuJ,IAAKoyE,EAAQq8E,EAAUrpF,SAAUqpF,EAAU3/D,WAAY2/D,EAAU1/D,cAGhG,OAAOpqB,GAEXssC,EAAK/xG,UAAUoyJ,YAAc,SAAU3sF,EAAOlI,EAAQ61F,GAClD,IAIIC,EAJAt1F,EAAOj6D,KAAKO,OACZmqJ,EAAgB,GAChB8E,EAAe,GACf5E,EAAgB5qJ,KAAKO,OAAOgmE,uBAEhC,GAAItM,EAAK+tC,gBAAkB/tC,EAAKgX,eAAelX,QAAQl9D,OAAQ,CAG3D,IAFA,IAAIk9D,EAAUN,GAAkBQ,EAAKgX,eAAelX,QAChDiK,EAAU,GACLhmE,EAAK,EAAGuF,EAAK02D,EAAKyK,aAAc1mE,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE3DgmE,GADI7E,EAAM57D,EAAGvF,IACDw7D,OAAS2F,EAAIjuC,OAAO/lB,KAAOg0D,EAAIjuC,OAAO/lB,KAAO8uD,EAAKgX,eAAe9lE,KAIjF,IAFA,IAAIskJ,EAAc,GACdC,EAAkB,GACb36H,EAAK,EAAG4lH,EAAY5gF,EAAShlC,EAAK4lH,EAAU99I,OAAQk4B,IAAM,CAC/D,IAAIoqC,EAAMw7E,EAAU5lH,GAChB46H,EAAa11F,EAAKqM,iBAAiBnH,EAAI3F,OACvCp8D,YAAkB+hE,EAAIh0D,OAASwkJ,IAAmC,SAApBA,EAAWxkJ,MAAuC,aAApBwkJ,EAAWxkJ,QACvFg0D,EAAIh0D,KAAO8uD,EAAKqM,iBAAiBnH,EAAI3F,OAAOruD,MAE5Cg0D,EAAIqC,aACJiuF,EAAY7tJ,KAAKu9D,GAGjBuwF,EAAgB9tJ,KAAKu9D,GAG7B,GAAIuwF,EAAgB7yJ,OAAQ,CACxB,GAAiC,cAA7Bo9D,EAAKgX,eAAe9lE,MAAqD,SAA7B8uD,EAAKgX,eAAe9lE,KAChE,IAAK,IAAIvO,EAAI,EAAG+E,EAAM+tJ,EAAgB7yJ,OAAQD,EAAI+E,EAAK/E,IACnD8yJ,EAAgB9yJ,GAAGnB,IAAMi0J,EAAgB9yJ,GAAGnB,KACxCuE,KAAKO,OAAOqvJ,6BAA6BF,EAAgB9yJ,GAAG48D,OAAO/9D,IAI/E,IADA,IAAIo0J,EAAiB1K,EAAmBsF,aAAaiF,GAC5Cv6H,EAAK,EAAGG,EAAKp3B,OAAOjB,KAAK4yJ,GAAiB16H,EAAKG,EAAGz4B,OAAQs4B,IAAM,CACrE,IAAIhxB,EAAOmxB,EAAGH,GACdu1H,EAAc9oJ,KAAKiuJ,EAAe1rJ,KAG1C,GAAIsrJ,EAAY5yJ,OACZ,IAAK,IAAI2vH,EAAK,EAAGsjC,EAAgBL,EAAajjC,EAAKsjC,EAAcjzJ,OAAQ2vH,IAAM,EACvErtD,EAAM2wF,EAActjC,IACpB/wH,IAAM0jE,EAAI1jE,KAAOuE,KAAKO,OAAOqvJ,6BAA6BzwF,EAAI3F,OAAO/9D,IACzE,IAAIs0J,EAAW/vJ,KAAKO,OAAOyvJ,2BAA2B7wF,EAAI1jE,KAI1D,GAHKs0J,GACD/vJ,KAAKO,OAAOsuJ,IAAI,iBAAkB,CAAEl7C,WAAY,SAAU0I,WAAYl9C,EAAI3F,QAE1Eu2F,EAAStmD,mBAAqBlnC,YAA2BpD,EAAI3F,MAAOoxF,KAAmB0E,EACvFE,EAAa5tJ,KAAKu9D,GACb4wF,EAAS9tF,WAAWplE,SACrB0yJ,GAAkB,GAEtB7E,EAAgB1qJ,KAAKovJ,mBAAmBW,EAAUrF,OAGlD,CAAImF,EAAiB1K,EAAmBsF,aAAa1wF,GACrD,IADA,IACSk2F,EAAK,EAAGC,EAAKhyJ,OAAOjB,KAAK4yJ,GAAiBI,EAAKC,EAAGrzJ,OAAQozJ,IAAM,CACjE9rJ,EAAO+rJ,EAAGD,GACdvF,EAAc9oJ,KAAKiuJ,EAAe1rJ,MAK9CumJ,EAAc7tJ,SAAW0yJ,EACzB5tF,EAAMO,MAAMY,IAAUK,IAAIunF,IAG1B1qJ,KAAKO,OAAOyZ,OAAO+M,KAAsB,IAGjD,OAAO46C,GAEXssC,EAAK/xG,UAAUkzJ,mBAAqB,SAAUjwF,EAAKurF,GAC/C,IAAIzE,EAAa,GAOjB,OANI9mF,IACAn/D,KAAKO,OAAOyZ,OAAO+M,KAAsB,CAAE40C,UAAWsqF,EAAYxsF,OAAQ0F,IACtE8mF,EAAWtqF,UAAU+kC,WAAW7jG,QAChC6tJ,EAAc9oJ,KAAKqkJ,EAAWtqF,YAG/B+uF,GAcXz8C,EAAK/xG,UAAU6gG,QAAU,SAAU98F,EAAM0hE,GACrC,IAAI5hE,EAAQC,UACC,IAATC,IAAmBA,EAAO,CAAEm6F,YAAa,KAC7C,IAAIp9F,EAAMgD,KAAKmwJ,OAAOlwJ,EAAKozD,gBACvBn1D,OAAOjB,KAAKgD,EAAKozD,gBAAgBx2D,OACjCoD,EAAKozD,eAAiBrzD,KAAKO,OAAOonE,2BAEtC,GADA3nE,KAAKO,OAAOsuJ,IAAI,6BAA8B,CAAEtB,UAAWvtJ,KAAKO,SAC5DP,KAAKO,OAAOuhE,YAAc,WAAY9hE,KAAKO,OAAOuhE,WAElD,OADU9hE,KAAK6nE,aAAa5nE,EAAM0hE,EAAO3kE,GAC9B2d,QAGX,IAAIy1I,OAAO,EACX,OAAQnwJ,EAAKm6F,aACT,IAAK,SAID,GAHAz4B,EAAQA,GAAgB3hE,KAAKmzD,gBAGjB,IADFj1D,OAAOjB,KAAKgD,EAAK4a,MAAMhe,OAE7BuzJ,EAAOpwJ,KAAK2+F,YAAYl1E,OAAOzsB,EAAKiD,EAAK4a,KAAK,GAAI8mD,EAAMu5B,UAAWv5B,OAElE,CACD,IAAI4H,EAAU,CACVte,aAAc,GACdC,eAAgB,GAChBF,eAAgB,IAEpBue,EAAQre,eAAiBjrD,EAAK4a,KAC9Bu1I,EAAOpwJ,KAAK2+F,YAAY5kE,YAAYwvC,EAASvsE,EAAK2kE,EAAMu5B,UAAWv5B,EAAMw+B,iBAE7E,MACJ,IAAK,OACDx+B,EAAQA,GAAgB3hE,KAAKmzD,gBAC7BlzD,EAAKua,MAAQpd,YAAkB6C,EAAKua,OAAS,EAAIva,EAAKua,MACtD41I,EAAOpwJ,KAAK2+F,YAAYjB,OAAOz9F,EAAK4a,KAAM8mD,EAAMu5B,UAAWv5B,EAAO1hE,EAAKua,OAM/E,OAFAva,EAAY,QAAImwJ,GAEZA,GAAShyJ,MAAMC,QAAQ+xJ,IAAUA,EAAK5wJ,eAAe,kBAM9CQ,KAAK09F,OAAO/7B,EAAO1hE,GALnBmwJ,EAAKx1I,MAAK,WACb,OAAO7a,EAAM29F,OAAO/7B,EAAO1hE,OAQ3CguG,EAAK/xG,UAAUwhG,OAAS,SAAU/7B,EAAO1hE,GAIrC,MAHyB,SAArBA,EAAKm6F,aACLp6F,KAAKO,OAAOyZ,OAAO+M,KAAoB9mB,GAEpCD,KAAK66F,aAAal5B,IAE7BssC,EAAK/xG,UAAU2+F,aAAe,SAAUl5B,GACpC,IAAI5hE,EAAQC,KACZ,GAAIA,KAAK2+F,YAAYl8F,MAAO,CACxB,IAAI4tJ,EAAa,IAAI/nF,IASrB,OARYtoE,KAAK2+F,YAAYl8F,MACvBmY,MAAK,WACP7a,EAAM4+F,YAAY9D,aAAal5B,GAAO/mD,MAAK,SAAUjc,GACjD0xJ,EAAWntI,QAAQvkB,SAExBuc,OAAM,SAAUra,GACfwvJ,EAAWltI,OAAOtiB,MAEfwvJ,EAAW11I,QAGlB,OAAO3a,KAAK2+F,YAAY9D,aAAal5B,IAG7CssC,EAAK/xG,UAAU6yJ,kBAAoB,SAAUvyJ,EAAOg9D,GAChD,IAAIuG,EAAiB//D,KAAK+/D,eACtBtG,EAASz5D,KAAKsmE,iBAAiB9M,GAC/B5wD,EAAOpM,EASX,OARKi9D,EAAOtuD,OACRsuD,EAAOtuD,KAAOvC,EAAKqE,OAAUrE,EAAK2E,WAAa,GAAK3E,EAAKqO,aAAe,GACpErO,EAAKo6D,aAAe,GAAKp6D,EAAKomE,kBAAoB,EAAI,WAAa,cAAkBxyE,GAEzFY,YAAkBq8D,EAAO0oC,iBACzBriC,aAAaC,EAAgBtG,GAEjBsvC,IAAe7sG,UAAUgmG,OAAO1lG,EAAOi9D,EAAO0oC,iBAGlE8L,EAAK/xG,UAAU6xJ,YAAc,SAAU9tJ,GACnC,IAAI0hE,EAAQ3hE,KAAKmzD,gBACbx4C,EAAU,KACV21I,EAAK,UACLtzJ,EAAMgD,KAAKmwJ,OAAOlwJ,EAAKozD,gBACvBn1D,OAAOjB,KAAKgD,EAAKozD,gBAAgBx2D,OAASoD,EAAKozD,eAC/CrzD,KAAKO,OAAOonE,2BAIhB,OAHI3nE,KAAKO,OAAOuhE,YAAc,WAAY9hE,KAAKO,OAAOuhE,YAClD9hE,KAAK6nE,aAAa5nE,EAAM0hE,EAAO3kE,GAE3BiD,EAAKm6F,aACT,IAAK,OACDz/E,EAAU3a,KAAK2+F,YAAYd,OAAO7gG,EAAKiD,EAAK4a,KAAM8mD,EAAMu5B,UAAWv5B,EAAO1hE,EAAKswJ,cAGvFtwJ,EAAKqwJ,GAAM31I,GAAoB1a,EAAKqwJ,GACpCtwJ,KAAKO,OAAOyZ,OAAO+M,KAAmB9mB,IAU1CguG,EAAK/xG,UAAU69B,YAAc,SAAUwvC,EAASvsE,EAAKogG,EAAUz7B,GAG3D,QAFc,IAAVA,IAAoBA,EAAQ3hE,KAAKmzD,iBACrCwO,EAAMw+B,gBACF,WAAYngG,KAAKO,OAAOuhE,WAAY,CACpC,IAAI0uF,EAAO,IAAIloF,IACXroE,EAAO,CACPm6F,YAAa,YAAa7wB,QAASA,EAASvsE,IAAKA,EAAK2kE,MAAOA,EAC7D8uF,QAASD,EAAKttI,SAIlB,OAFAljB,KAAKuoC,SAAS,CAAEilH,WAAW,EAAMC,SAAU+C,EAAKttI,UAChDljB,KAAKO,OAAOwpB,QAAQhD,KAA0B9mB,GACvCuwJ,EAAK71I,QAIZ,OADc3a,KAAK2+F,YAAY5kE,YAAYwvC,EAASvsE,EAAK2kE,EAAMu5B,UAAWv5B,EAAOy7B,IAIzF6Q,EAAK/xG,UAAUi0J,OAAS,SAAUlzJ,GAC9B,GAAIA,GAAQA,EAAKJ,OACb,OAAOI,EAAK,IAQpBgxG,EAAK/xG,UAAU0wI,SAAW,WACtB,OAA+C,IAAxC5sI,KAAK2+F,YAAY78B,WAAW63B,cAAwD39F,IAApCgE,KAAK2+F,YAAY78B,WAAWl/C,KAC3C,KAApC5iB,KAAK2+F,YAAY78B,WAAWl/C,KAEpCqrF,EAAK/xG,UAAU0xJ,QAAU,SAAU/sJ,GAC/B,IAAK,IAAIjE,EAAIiE,EAAE0nF,QAAQ1rF,OAAQD,EAAI,EAAGA,IAClCoD,KAAK2+F,YAAY78B,WAAWE,KAAKloD,OAAOjZ,EAAEwgH,QAAS,EAAGxgH,EAAE0nF,QAAQ3rF,EAAI,KAG5EqxG,EAAK/xG,UAAU4xJ,WAAa,SAAUjtJ,GAClC,IAAImhE,EAAOhiE,KAAK2+F,YAAY78B,WAAWE,KACvChiE,KAAK2+F,YAAY78B,WAAWE,KAAOA,EAAK9wC,QAAO,SAAU10B,GAAS,OAAqC,IAA9BqE,EAAE0nF,QAAQpqF,QAAQ3B,OAE/FyxG,EAAK/xG,UAAUoqE,iBAAmB,SAAU9M,GACxC,IAAI2F,EACJ,OAAQn/D,KAAKO,OAAOk8D,YAAa/yC,MAAK,SAAU+vC,GAE5C,OADA0F,EAAM1F,EACCA,EAAOD,QAAUA,MACtB2F,GAEV8uC,EAAK/xG,UAAUif,QAAU,WACjBnb,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAOsZ,IAAIkN,KAAkB/mB,KAAK4tJ,SACvC5tJ,KAAKO,OAAOsZ,IAAIkN,KAAoB/mB,KAAK8tJ,YACzC9tJ,KAAKO,OAAOsZ,IAAIkN,KAA2B/mB,KAAK2tJ,iBAChD3tJ,KAAKO,OAAOsZ,IAAIkN,KAAgB/mB,KAAKmb,SACrCnb,KAAKO,OAAOsZ,IAAIkN,KAAmB/mB,KAAK+tJ,aACxC/tJ,KAAKO,OAAOsZ,IAAIkN,IAAwB/mB,KAAK+8F,SAC7C/8F,KAAKO,OAAOsZ,IAAIkN,IAAgB/mB,KAAKguJ,qBACrChuJ,KAAKO,OAAOsZ,IAAIkN,KAAwB/mB,KAAKguJ,uBAEjD//C,EAAK/xG,UAAUw0J,SAAW,WACtB,OAAO1wJ,KAAKutJ,WAEhBt/C,EAAK/xG,UAAUqsC,SAAW,SAAUu/B,GAChC,OAAO9nE,KAAKutJ,UAAYzlF,GAE5BmmC,EAAK/xG,UAAUy0J,uBAAyB,WACpC,OAAO3wJ,KAAK0tJ,qBAEhBz/C,EAAK/xG,UAAU00J,uBAAyB,SAAU9oF,GAC9C9nE,KAAK0tJ,oBAAsB5lF,GAE/BmmC,EAAK/xG,UAAUksE,sBAAwB,SAAUzG,GAC7C,IAAIoG,EAAS,IAAIC,IACbC,EAAK,IAAIlG,IAAY,CAAEn/C,IAAK,GAAIslD,QAAS,IAAIF,MAC7CF,EAAQC,EAAOI,aAAaF,EAAItG,GAChC9mD,EAAOE,KAAKC,MAAM8sD,EAAMjtD,MAC5B,OAAOvc,YAAOuc,EAAMitD,EAAMw+C,UAE9BrY,EAAK/xG,UAAU2rE,aAAe,SAAU5nE,EAAM0hE,EAAO3kE,GACjD,IAAI+C,EAAQC,KACR6wJ,EAAW5wJ,EACX6nE,EAAQ9nE,KAAKooE,sBAAsBzG,GACnC0G,EAAM,IAAIC,IACVkoF,EAAO,IAAIloF,IACf,QAAyBtsE,IAArBiE,EAAKm6F,cAA8D,IAAjCp6F,KAAKutJ,UAAUuD,cAEjD,GADAhpF,EAAMhiC,OAAS7lC,EACU,SAArBA,EAAKm6F,aAA+C,WAArBn6F,EAAKm6F,YAA0B,CAC9D,IAAI22D,EAAa9wJ,EACjB8wJ,EAAW/zJ,IAAMA,EAEjB+zJ,EAAkB,QAAIP,EAAK71I,QAC3Bo2I,EAAWjpF,MAAQA,EACnB9nE,KAAKuoC,SAAS,CAAEilH,WAAW,EAAMC,SAAU+C,EAAKttI,UAChD2tI,EAASJ,QAAUD,EAAKttI,QACxB2tI,EAASG,WAAaR,EAAKrtI,OAC3BnjB,KAAKO,OAAOwpB,QAAQhD,KAA0BgqI,GAC9CP,EAAK71I,QAAQC,MAAK,WACd7a,EAAMwoC,SAAS,CAAEilH,WAAW,EAAMC,SAAUplF,EAAInlD,QAAS6kE,MAAOjgB,EAAMigB,MAAOzpB,WAAYwJ,EAAMxJ,aAChE,SAA3ByyF,EAAW32D,aACXr6F,EAAMQ,OAAOyZ,OAAO+M,KAAoBgqI,GAE5ChxJ,EAAMQ,OAAOwpB,QAAQhD,KAAwB+gD,MAE5C5sD,OAAM,oBAGXlb,KAAKuoC,SAAS,CAAEilH,WAAW,EAAMC,SAAUplF,EAAInlD,QAAS6kE,MAAOjgB,EAAMigB,MAAOzpB,WAAYwJ,EAAMxJ,aAC9Ft+D,KAAKO,OAAOwpB,QAAQhD,KAAwB+gD,QAIhD9nE,KAAKuoC,SAAS,IACd8/B,EAAInlD,QAAQljB,KAAKO,OAAOuhE,YAE5B,OAAOuG,GAOX4lC,EAAK/xG,UAAUgzJ,0BAA4B,WAGvC,IAFA,IAAI+B,EAAgB,GAEXjzJ,EAAK,EAAGkzJ,EADHlxJ,KAAKO,OAAOmkE,aACY1mE,EAAKkzJ,EAAUr0J,OAAQmB,IAAM,CAC/D,IAAImhE,EAAM+xF,EAAUlzJ,GAChBmhE,EAAImpC,iBAAmBlrG,YAAkB+hE,EAAI3F,QAC7Cy3F,EAAcrvJ,KAAKu9D,EAAI3F,OAG/B,OAAOy3F,GAEXhjD,EAAK/xG,UAAU8xJ,oBAAsB,WAC7BhuJ,KAAKO,OAAOynG,gBAAkBhoG,KAAKO,OAAO0wE,eAAelX,QAAQl9D,QACjEopE,aAAuBjmE,KAAKO,OAAQP,KAAKO,OAAO0wE,eAAelX,UAGhEk0C,EA3kBe,I,2GCRtBkjD,EAAc,GACdC,EAAa,GACb7kJ,EAAU,GAEV8kJ,EAAgB,G,oCCPhBhzH,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,EAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAQ5DwyH,EAA+B,SAAUnyH,GAEzC,SAASmyH,IACL,OAAkB,OAAXnyH,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAiB/D,OAnBAq+B,EAAUizH,EAAenyH,GAIzBR,EAAW,CACP3B,eACDs0H,EAAcp1J,UAAW,YAAQ,GACpCyiC,EAAW,CACP3B,eACDs0H,EAAcp1J,UAAW,aAAS,GACrCyiC,EAAW,CACP3B,eACDs0H,EAAcp1J,UAAW,eAAW,GACvCyiC,EAAW,CACP3B,eACDs0H,EAAcp1J,UAAW,eAAW,GACvCyiC,EAAW,CACP3B,eACDs0H,EAAcp1J,UAAW,sBAAkB,GACvCo1J,EApBwB,CAqBjCjsH,KAESksH,EACD,iBADCA,EAEF,QAFEA,EAGE,YAHFA,EAIG,WAJHA,EAKA,UALAA,EAMC,WANDA,EAOI,eAPJA,EAQA,eARAA,EASH,cATGA,EAUA,oBAVAA,EAWG,aAXHA,EAYG,aAEVC,EAAwB,eACxBC,EAAyB,gBACzBC,EAAyB,gBACzBC,EAA0B,iBAC1BC,EAA0B,iBAC1BC,EAA6B,oBAC7BC,EAAiC,wBAIjCC,EAA8B,SAAU5yH,GASxC,SAAS4yH,EAAazlJ,EAAStL,GAC3B,IAAIjB,EAAQo/B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAInD,OAHAD,EAAMiyJ,eAAgB,EACtBjyJ,EAAMkuJ,WAAY,EAClBluJ,EAAMkyJ,iBAAkB,EACjBlyJ,EAqtCX,OAluCAs+B,EAAU0zH,EAAc5yH,GAexB4yH,EAAa71J,UAAUg2J,cAAgB,SAAU/tJ,EAAMq9B,EAASC,GAC5D,IAAI0wH,EAAc,IAAIj0J,OAClBk0J,EAAc,IAAIl0J,OAItBi0J,EAAqBhuJ,GAASq9B,EAAiBr9B,GAC/CiuJ,EAAqBjuJ,GAASs9B,EAAiBt9B,GAC/C,IAAI0W,EAAO,IAAI3c,OAGf,OAFA2c,EAAKs3I,YAAcA,EACnBt3I,EAAKu3I,YAAcA,EACZv3I,GAEXk3I,EAAa71J,UAAUm2J,eAAiB,SAAU9/I,EAAMu5E,EAAYC,GAChE,IAAIvvF,EAAQ,KASZ,OARKY,YAAkB4C,KAAKsyJ,YAEpB91J,EADAsvF,EACQ9rF,KAAKuyJ,eAAehgJ,GAAM,EAAMw5E,GAGhC/rF,KAAKuyJ,eAAehgJ,GAAM,EAAOw5E,IAG1CvvF,GAEXu1J,EAAa71J,UAAUq2J,eAAiB,SAAUhgJ,EAAMu5E,EAAYC,EAAcymE,GAC9E,IAAIzyJ,EAAQC,KACRxD,EAAQ,KACRg2J,IACAh2J,EAAQ+V,GAEZ,IAAIuvD,EAAa9hE,KAAKsyJ,SAClBljF,EAASpvE,KAAKovE,OACdjkE,EAAOnL,KAAKyyJ,WAAW3wF,GAAYyzC,OACvC,GAAa,WAATpqG,GAA8B,WAATA,GAA8B,YAATA,EAC1C,IAAK,IAAInN,EAAK,EAAG00J,EAAe5wF,EAAY9jE,EAAK00J,EAAa71J,OAAQmB,IAAM,CACxE,IAAIw9C,EAAOk3G,EAAa10J,GACnBZ,YAAkBo+C,KACfuwC,EACAvvF,EAAQwD,KAAK2yJ,eAAe3zE,OAAOxjC,GAAOjpC,EAAMu5E,GAG5CA,EACI9rF,KAAK4yJ,gBAAgB5zE,OAAOxjC,GAAOjpC,KACnC/V,EAAQwD,KAAK6yJ,aAAa7zE,OAAOxjC,GAAOjpC,EAAMu5E,IAI9C9rF,KAAK8yJ,mBAAmB9zE,OAAOxjC,GAAOjpC,KACtC/V,EAAQwD,KAAK6yJ,aAAa7zE,OAAOxjC,GAAOjpC,EAAMu5E,EAAY0mE,UAQ1E1mE,EACAhqB,EAAW5wC,QAAO,SAAUsqB,GACxB,IAAIu3G,EAAY12J,YAAS+yE,EAAO5yE,MAAOg/C,IAClCp+C,YAAkB21J,IAAchzJ,EAAM6yJ,gBAAgBv2J,YAAS+yE,EAAO78D,KAAMipC,GAAMruC,WAAYoF,KAC/F/V,EAAQH,YAAS+yE,EAAO5yE,MAAOg/C,OAKnCg3G,EACA1wF,EAAW5wC,QAAO,SAAUsqB,GACxB,IAAIu3G,EAAY12J,YAAS+yE,EAAO5yE,MAAOg/C,GAClCp+C,YAAkB21J,IAAe31J,YAAkBZ,IAAUu2J,EAAU5lJ,aAAe3Q,EAAM2Q,aAC7F3Q,EAAQH,YAAS+yE,EAAO78D,KAAMipC,OAKtCsmB,EAAW5wC,QAAO,SAAUsqB,GACpBz7C,EAAM+yJ,mBAAmBz2J,YAAS+yE,EAAO78D,KAAMipC,GAAOjpC,KACtD/V,EAAQH,YAAS+yE,EAAO5yE,MAAOg/C,OAMnD,OAAOh/C,GAEXu1J,EAAa71J,UAAUy2J,eAAiB,SAAUn3G,EAAMjpC,EAAMu5E,GAC1D,IAAI8lB,EAAWl4C,IAASiwB,iBAAiB3K,OAAOxjC,IAC5Cw3G,EAAWt5F,IAASiwB,iBAAiBp3E,EAAKpF,YAC1C3Q,EAAQ,KAWZ,OAVIsvF,EACI9rF,KAAK4yJ,gBAAgBhhD,EAAUohD,KAC/Bx2J,EAAQwD,KAAK6yJ,aAAa7zE,OAAOxjC,GAAOjpC,EAAMu5E,IAI9C9rF,KAAK8yJ,mBAAmB9zE,OAAOxjC,GAAOjpC,KACtC/V,EAAQwD,KAAK6yJ,aAAa7zE,OAAOxjC,GAAOjpC,EAAMu5E,IAG/CtvF,GAEXu1J,EAAa71J,UAAU02J,gBAAkB,SAAUp3G,EAAMjpC,GACrD,OAAOysE,OAAOxjC,GAAM/jC,gBAAkBlF,EAAKpF,WAAWsK,eAE1Ds6I,EAAa71J,UAAU42J,mBAAqB,SAAUt3G,EAAMjpC,GACxD,OAAOysE,OAAOxjC,KAAUjpC,EAAKpF,YAEjC4kJ,EAAa71J,UAAU22J,aAAe,SAAUjhD,EAAUqhD,EAAWnnE,EAAY0mE,GAC7E,IACI1wF,EAAa9hE,KAAKsyJ,SAClBnnJ,EAAOnL,KAAKyyJ,WAAW3wF,GAAYyzC,OAYvC,OAXIi9C,EACQ5gD,EAASzkG,WAGb2+E,EACiB,WAAT3gF,EAAoB6zE,OAAO4yB,GAAY5xG,KAAKkzJ,kBAAkBl0E,OAAO4yB,IAG5D,WAATzmG,EAAoB8nJ,EAAYjzJ,KAAKkzJ,kBAAkBD,IAK3ElB,EAAa71J,UAAU8/D,iBAAmB,SAAUm3F,GAChD,IAAIC,GAAgB,EACpB,GAAID,EACA,IACIC,IAAiB7hI,aAAU4hI,EAAc3yJ,UAAU3D,OAEvD,MAAOi7E,GACHs7E,GAAgB,EAGxB,OAAOA,GAEXrB,EAAa71J,UAAUm3J,WAAa,SAAUrnG,GAC1C,IAAI16B,EAA+B,YAAzBtxB,KAAK66B,gBAAgC76B,KAAK42G,UAAY52G,KAAKy3B,KACrE,GAA+B,qBAA3Bz3B,KAAKszJ,mBAA2E,mBAA/BtzJ,KAAKuzJ,sBAA4C,CAClGvzJ,KAAKwzJ,kCAAiC,GAAO,GAAO,GAAM,GAC1D,IAAIloI,EAAW0gC,EAAgBhsD,KAAKuzJ,sBAAwBvzJ,KAAKszJ,kBAE7DrlI,EAAa+9B,EAAgBhsD,KAAKyzJ,wBAA0BzzJ,KAAK0zJ,oBACrEpiI,EAAIlvB,UAAY,GAQhB,IAEIuxJ,GATgB3zJ,KAAKg8D,iBAAiB1wC,GAErBD,YAAQ+L,aAAO9L,EAAU9qB,UAAU4B,UAAUiqB,QAG7ChB,YAAQC,IAIO,GAAItrB,KAFrBgsD,EAAgB,wBAA0B,oBAED/9B,EAAYjuB,KAAKkuB,iBAAkB,KAAMoD,GACrG,GAAIqiI,GAAkBA,EAAe92J,OAAS,EAC1C,IAAK,IAAID,EAAI,EAAGA,EAAI+2J,EAAe92J,OAAQD,IACvC00B,EAAItvB,YAAY2xJ,EAAe/2J,IAGvCoD,KAAK4oC,uBACL5oC,KAAK4zJ,mCAAkC,GAAO,GAAQ5nG,EAAeA,GAAe,GAAO,GAAO,GAAO,OAExG,CACD,IACI6nG,EAAkB,IAAIz9G,IAAKp2C,KAAK8zJ,gBAAiB,GAAI9zJ,KAAK+c,QACD,KAAzD82I,EAAgBh9G,YAAY,yBAC5B72C,KAAK+zJ,KAAOF,EAGZ7zJ,KAAK+zJ,KAAO,IAAI39G,IAA8B,YAAzBp2C,KAAK66B,gBAAgC,UAAY,YANzD,CAAEy4H,kBAAmB,mBAAoBC,sBAAuB,kBAMkBvzJ,KAAK+c,QAExG,IAAI2tC,EAAUsB,EACVhsD,KAAK+zJ,KAAKl9G,YAAY,yBAA2B72C,KAAK+zJ,KAAKl9G,YAAY,qBAC3E,GAA6B,YAAzB72C,KAAK66B,gBAA+B,CACpC,IAAIm5H,EAASh0J,KAAKmB,cAAc,MAChC6yJ,EAAO39D,YAAc3rC,EACrBp5B,EAAItvB,YAAYgyJ,GAChBA,EAAOh+H,UAAUjN,IAAI,mBAGrBuI,EAAIlvB,UAAYsoD,IAI5BqnG,EAAa71J,UAAU43J,cAAgB,WACnC,MAAO,kBAEX/B,EAAa71J,UAAU+3J,eAAiB,SAAUz3J,GAE9C,OADWwD,KAAKuyJ,eAAe/1J,GAAO,GAAO,GAAO,IAGxDu1J,EAAa71J,UAAUg3J,kBAAoB,SAAU12J,GACjD,GAAIwD,KAAKsyJ,UAAYtyJ,KAAKsyJ,SAASz1J,OAAQ,CACvC,IAAI2+C,EAAOx7C,KAAKyyJ,WAAWzyJ,KAAKsyJ,UAChC,GAAIhzJ,eAAclC,YAAkBZ,IAAoB,SAAVA,EAC1C,OAAO,KAEX,GAAsF,kBAA3EH,YAAU2D,KAAKovE,OAAO5yE,MAAQwD,KAAKovE,OAAO5yE,MAAQ,QAAUg/C,EAAKA,OACrD,WAAhBA,EAAK+5D,OACR,OAAOx8F,WAAWvc,GAEtB,GAAsF,mBAA3EH,YAAU2D,KAAKovE,OAAO5yE,MAAQwD,KAAKovE,OAAO5yE,MAAQ,QAAUg/C,EAAKA,OACrD,YAAhBA,EAAK+5D,OACR,MAAmB,SAAV/4G,GAAsB,GAAKA,IAAU,OAGtD,OAAOA,GAOXu1J,EAAa71J,UAAUu6F,aAAe,WAC9Bz2F,KAAKy3B,MACLz3B,KAAKk0J,kBAAkBtyJ,KAAK5B,KAAKy3B,MAEjCz3B,KAAK2mC,UACL9Q,YAAS71B,KAAKk0J,kBAAmB3C,GAGjCn7H,aAAYp2B,KAAKk0J,kBAAmB3C,IAQ5CQ,EAAa71J,UAAUuvC,WAAa,WAGhC,GAFAzrC,KAAKm0J,WAAY,EACjBn0J,KAAKyzJ,wBAA0B,GAAKzzJ,KAAKgB,QAAQyY,GAAKq4I,EACzB,OAAzB9xJ,KAAKgB,QAAQgvB,QAAkB,CAC/B,IAAIokI,EAAcrjD,IAAS2G,sBAAsB13G,KAAKgB,SACtDhB,KAAKk5B,cAAc,CAAEk2C,OAAQ,CAAE78D,KAAM,OAAQ/V,MAAO,UAAY,GAChEwD,KAAKq0J,UAAUD,EAAap0J,KAAKovE,aAEhC,GAA6B,WAAzBpvE,KAAKgB,QAAQgvB,QAAsB,EACvBhwB,KAAK8hE,sBAAsB1jE,MAAS4B,KAAK8hE,WAAWjlE,OAAS,GACvEO,YAAkB4C,KAAK8hE,cAE1B9hE,KAAKs0J,2BAITt0J,KAAKu0J,YAAYv0J,KAAK8hE,WAAY9hE,KAAKovE,OAAQpvE,KAAK2hE,QAG5DowF,EAAa71J,UAAU03J,kCAAoC,SAAUp4G,EAAMusC,EAAOysE,EAAU1uH,EAAQtpC,EAAOuoB,EAAQy4D,EAAQ9uD,GAClH1uB,KAAKkuB,mBACFluB,KAAKqpG,cAAgB7tD,GACrBjtB,aAAqBvuB,KAAKy0J,eAAgBjD,EAAuBxxJ,KAAM0uB,GAEvE1uB,KAAKyzG,eAAiB1rB,GACtBx5D,aAAqBvuB,KAAK00J,gBAAiBhD,EAAwB1xJ,KAAM0uB,GAEzE1uB,KAAKszJ,mBAAqBkB,GAC1BjmI,aAAqBvuB,KAAK0zJ,oBAAqB7B,EAA4B7xJ,KAAM0uB,GAEjF1uB,KAAKuzJ,uBAAyBztH,GAC9BvX,aAAqBvuB,KAAKyzJ,wBAAyB3B,EAAgC9xJ,KAAM0uB,GAEzFlyB,GACA+xB,aAAqBvuB,KAAK20J,gBAAiBlD,EAAwBzxJ,KAAM0uB,GAEzE3J,GACAwJ,aAAqBvuB,KAAK40J,iBAAkBjD,EAAyB3xJ,MAErEw9E,GACAjvD,aAAqBvuB,KAAK60J,iBAAkBjD,EAAyB5xJ,QAIjF+xJ,EAAa71J,UAAUs3J,iCAAmC,SAAUh4G,EAAMusC,EAAOysE,EAAU1uH,EAAQtpC,EAAOuoB,EAAQy4D,GACzGx9E,KAAKkuB,mBACFluB,KAAKqpG,cAAgB7tD,GACrB3sB,aAAoB7uB,KAAKy0J,eAAgBjD,GAEzCxxJ,KAAKyzG,eAAiB1rB,GACtBl5D,aAAoB7uB,KAAK00J,gBAAiBhD,GAE1C1xJ,KAAKszJ,mBAAqBkB,GAC1B3lI,aAAoB7uB,KAAK0zJ,oBAAqB7B,GAE9C7xJ,KAAKuzJ,uBAAyBztH,GAC9BjX,aAAoB7uB,KAAKyzJ,wBAAyB3B,GAElDt1J,GACAqyB,aAAoB7uB,KAAK20J,gBAAiBlD,GAE1C1sI,GACA8J,aAAoB7uB,KAAK40J,iBAAkBjD,GAE3Cn0E,GACA3uD,aAAoB7uB,KAAK60J,iBAAkBjD,KASvDG,EAAa71J,UAAUysC,eAAiB,WACpC,OAAO3oC,KAAKqpC,aAAa,KAO7B0oH,EAAa71J,UAAUy6F,WAAa,WAChC32F,KAAKgB,QAAQ40B,aAAa,gBAAkB51B,KAAKw4F,QAAW,QAAU,SAQ1Eu5D,EAAa71J,UAAU44J,oBAAsB,SAAUt4J,GAGnD,IAFA,IAAIu4J,EAAc,CAAC,QAAS,QAAS,KAAM,QACvC74G,EAAO,GACFnzC,EAAI,EAAGA,EAAI/I,KAAKgB,QAAQuyB,WAAW12B,OAAQkM,KACc,IAA1DgsJ,EAAY52J,QAAQ6B,KAAKgB,QAAQuyB,WAAWxqB,GAAGqR,OACpB,iBAAzBpa,KAAK66B,iBAA0E,aAApC76B,KAAKgB,QAAQuyB,WAAWxqB,GAAGqR,OACxE8hC,EAAKl8C,KAAKgB,QAAQuyB,WAAWxqB,GAAGqR,MAAQpa,KAAKgB,QAAQmuB,aAAanvB,KAAKgB,QAAQuyB,WAAWxqB,GAAGqR,OAGrG9b,YAAO49C,EAAM1/C,EAAO0/C,GACpBl8C,KAAKk5B,cAAc,CAAEm5E,eAAgBn2D,IAAQ,IAEjD61G,EAAa71J,UAAUo4J,oBAAsB,WACzC,IAAItzJ,EAAUhB,KAAKgB,QACfouE,EAAS,CAAE5yE,MAAO,QAAS+V,KAAM,QACjC6hJ,EAAc,GACdrsE,EAAQ/mF,EAAQQ,iBAAiB,mBACjCyI,EAASjJ,EAAQQ,iBAAiB,iBAEtC,GADAxB,KAAKg1J,kBAAkBZ,EAAanqJ,EAAQmlE,GACxC2Y,EAAMlrF,OAAQ,CACd,IAAK,IAAID,EAAI,EAAGA,EAAImrF,EAAMlrF,OAAQD,IAAK,CACnC,IAAI4+C,EAAOusC,EAAMnrF,GACbq4J,EAAc,GAClBA,EAAY7lF,EAAO78D,MAAQipC,EAAKi6B,MAChCw/E,EAAYnjD,UAAW,EACvB,IAAIxxG,EAAQk7C,EAAKh6C,iBAAiB,UAClC4yJ,EAAYxyJ,KAAKqzJ,GACjBj1J,KAAKg1J,kBAAkBZ,EAAa9zJ,EAAO8uE,GAE/CpuE,EAAQQ,iBAAiB,iBAE7BxB,KAAKk1J,aAAa9lF,EAAO78D,KAAM68D,EAAO5yE,MAAOwD,KAAKovE,OAAOqjC,QAASzyG,KAAKovE,OAAOijC,eAAgBryG,KAAKovE,OAAO8iC,SAC1GlyG,KAAKq0J,UAAUD,EAAahlF,IAEhC2iF,EAAa71J,UAAUg5J,aAAe,SAAU3iJ,EAAM/V,EAAOi2G,EAASJ,EAAgBH,GAClF,IAAI14C,EAAQ,CACR,OAAU,CACNjnD,KAAMA,EACN/V,MAAOA,EACPi2G,QAAUr1G,YAAkBq1G,GAAqBzyG,KAAKovE,QAAUpvE,KAAKovE,OAAOqjC,QAArCA,EACvCJ,eAAiBj1G,YAAkBi1G,GAAmCryG,KAAKovE,QAAUpvE,KAAKovE,OAAOijC,eAA5CA,EACrDH,QAAU90G,YAAkB80G,GAAqBlyG,KAAKovE,QAAUpvE,KAAKovE,OAAO8iC,QAArCA,IAG/ClyG,KAAKk5B,cAAcsgC,GAAO,IAE9Bu4F,EAAa71J,UAAU84J,kBAAoB,SAAUjhF,EAAOznE,EAAS8iE,GACjE,IAAK,IAAIpxE,EAAK,EAAG4iB,EAAYtU,EAAStO,EAAK4iB,EAAU/jB,OAAQmB,IAAM,CAC/D,IAAIiM,EAAS2W,EAAU5iB,GACnBgkE,EAAO,GACXA,EAAKoN,EAAO78D,MAAQtI,EAAOmrF,UAC3BpzB,EAAKoN,EAAO5yE,OAAUY,YAAkB6M,EAAOklB,aAAaigD,EAAO5yE,QAC3ByN,EAAOmrF,UAA3CnrF,EAAOklB,aAAaigD,EAAO5yE,OAC/Bu3E,EAAMnyE,KAAKogE,KASnB+vF,EAAa71J,UAAUirC,UAAY,WAE/BnnC,KAAKm1J,aAAe,EACpBn1J,KAAKk0J,kBAAoB,GACzBl0J,KAAKo1J,aAAc,EACnBp1J,KAAKq1J,eAAgB,EACrBr1J,KAAKy0J,eAAiB,GAAKz0J,KAAKgB,QAAQyY,GAAK+3I,EAC7CxxJ,KAAK20J,gBAAkB,GAAK30J,KAAKgB,QAAQyY,GAAKg4I,EAC9CzxJ,KAAK00J,gBAAkB,GAAK10J,KAAKgB,QAAQyY,GAAKi4I,EAC9C1xJ,KAAK40J,iBAAmB,GAAK50J,KAAKgB,QAAQyY,GAAKk4I,EAC/C3xJ,KAAK60J,iBAAmB,GAAK70J,KAAKgB,QAAQyY,GAAKm4I,EAC/C5xJ,KAAK0zJ,oBAAsB,GAAK1zJ,KAAKgB,QAAQyY,GAAKo4I,GAUtDE,EAAa71J,UAAUq4J,YAAc,SAAUzyF,EAAYsN,EAAQzN,GAC/D,IAEIi1C,EAFA72G,EAAQC,KACZovE,EAASA,GAAkBpvE,KAAKovE,OAEhCpvE,KAAKizF,UAAW,EAChB,IAAInwE,EAAY,CAAEC,QAAQ,EAAOlI,KAAMinD,EAAYH,MAAOA,GAC1D3hE,KAAKiyJ,mBAAkBjyJ,KAAKiuJ,YAAajuJ,KAAKgyJ,gBAAuBhyJ,KAAKiyJ,gBAC1EjyJ,KAAK+pB,QAAQ,cAAejH,GAAW,SAAUA,GAC7C,IAAKA,EAAUC,OAEX,GADAhjB,EAAMsoJ,cACFvmF,aAAsBC,IAAa,CAEnC,GADAhiE,EAAMq1J,aAAc,EAChBr1J,EAAMs1J,cAEN,YADAt1J,EAAMu1J,iBAAiBlmF,GAG3BtsD,EAAUjI,KAAKggF,aAAa96F,EAAM8qJ,SAAS/nI,EAAU6+C,QAAQ/mD,MAAK,SAAU/Z,GACxEd,EAAMkyJ,mBAAkBlyJ,EAAMkuJ,YAAaluJ,EAAMiyJ,gBAAuBjyJ,EAAMkyJ,gBAC9ElyJ,EAAMgqB,QAAQ,iBAAkBlpB,GAAG,SAAUA,GACzC,IAAKA,EAAEkiB,OAAQ,CACX,IAAIwyI,EAAY10J,EAAElC,OACO,IAArB42J,EAAU14J,SACVkD,EAAMs1J,eAAgB,GAE1Bz+C,EAAY72G,EAAMy1J,YAAYD,EAAWnmF,GACzCrvE,EAAM01J,iBAAiB7+C,EAAW2+C,EAAW10J,GACzCd,EAAM0zG,eACN1zG,EAAMo4G,oBAAoBvB,GAE9B72G,EAAMq1J,aAAc,EACpBr1J,EAAM21J,eAAeH,EAAW3+C,EAAWxnC,EAAQvuE,UAG5Dqa,OAAM,SAAUra,GACfd,EAAMq1J,aAAc,EACpBr1J,EAAM41J,gBAAgB90J,GACtBd,EAAM4sI,qBAGT,CACD,IAAIhuC,EAAc,IAAI58B,IAAYj/C,EAAUjI,MAExC+6I,EAAgB,CAAE7yI,QAAQ,EAAOpkB,OADpBoB,EAAM8qJ,SAAS/nI,EAAU6+C,OAAQW,aAAaq8B,IAE/D5+F,EAAMkyJ,mBAAkBlyJ,EAAMkuJ,YAAaluJ,EAAMiyJ,gBAAuBjyJ,EAAMkyJ,gBAC9ElyJ,EAAMgqB,QAAQ,iBAAkB6rI,GAAe,SAAUA,GAChDA,EAAc7yI,SACf6zF,EAAY72G,EAAMy1J,YAAYI,EAAcj3J,OAAQywE,GACpDrvE,EAAM01J,iBAAiB7+C,EAAWg/C,EAAcj3J,QAC5CoB,EAAM0zG,eACN1zG,EAAMo4G,oBAAoBvB,GAE9B72G,EAAM21J,eAAeE,EAAcj3J,OAAQi4G,EAAWxnC,YAO9E2iF,EAAa71J,UAAUw5J,eAAiB,SAAUH,EAAW3+C,EAAWxnC,EAAQvuE,GAC5E,IAAId,EAAQC,KACRu1J,EAAU14J,QAAU,KAAgC,iBAAzBmD,KAAK66B,gBAChCz6B,YAAW,WACP,IAAIy1J,EAAY91J,EAAM+1J,eAAe/1J,EAAMg2J,WAAY3mF,GACvDn7C,YAAO4hI,EAAWj/C,GAClB72G,EAAM6zJ,mCAAkC,GAAM,GAAO,GAAO,GAC5D7zJ,EAAMm3G,cAAgBn3G,EAAM03B,KAAKj2B,iBAAiB,IAAM+vJ,GACxDxxJ,EAAMi2J,mBACNj2J,EAAMk2J,eAAeV,EAAW10J,KACjC,GAGHb,KAAKi2J,eAAeV,EAAW10J,IAGvCkxJ,EAAa71J,UAAU85J,iBAAmB,aAG1CjE,EAAa71J,UAAUg6J,gBAAkB,SAAUz+H,EAAM0+H,EAAUl7G,EAAWz+C,GAC1E,IAAIm6G,EAAY,KAChB,GAAIl/E,EAEA,IADA,IAAI2+H,EAAU,GAAG/0J,MAAMC,KAAKm2B,EAAKj2B,iBAAiB20J,IACzC37I,EAAQ,EAAGA,EAAQ47I,EAAQv5J,OAAQ2d,IACxC,GAAI47I,EAAQ57I,GAAO2U,aAAa8rB,KAAgBz+C,EAAQ,GAAK,CACzDm6G,EAAYy/C,EAAQ57I,GACpB,MAIZ,OAAOm8F,GAEXo7C,EAAa71J,UAAU+5J,eAAiB,SAAUV,EAAW10J,GACzDb,KAAK2sI,cACL,IAAI0pB,EAAqB,CACrBtiF,MAAOwhF,EACP10J,EAAGA,GAEPb,KAAK+pB,QAAQ,YAAassI,IAE9BtE,EAAa71J,UAAU45J,eAAiB,SAAUh0F,EAAYsN,GAC1D,IAAIknF,EAAa,IAAIv0F,IAAYD,GAAYQ,cAAa,IAAIV,KAAQm+B,KAAK,MAC3E,GAAI//F,KAAKqpG,aAAc,CACnB,IAAIktD,EAAev2J,KAAKw2J,iBAAiBF,EAAYlnF,GACrD,MAAO,GAAG/tE,MAAMC,KAAKi1J,EAAajoI,YAEtC,IAAInjB,EAAOnL,KAAKyyJ,WAAW6D,GAAY/gD,OACvC,MAAa,WAATpqG,GAA8B,WAATA,GAA8B,YAATA,EACnC4lG,IAASmD,wBAAwBl0G,KAAKmB,cAAem1J,GAAY,EAAMt2J,KAAKy2J,WAAWH,EAAYlnF,GAASpvE,MAEhH+wG,IAAS4D,uBAAuB30G,KAAKmB,cAAem1J,EAAYt2J,KAAKy2J,WAAWH,EAAYlnF,GAAS,GAAG,EAAMpvE,OAEzH+xJ,EAAa71J,UAAUo5J,iBAAmB,SAAUlmF,GAChD,IAAImmF,EAAY,GAChBv1J,KAAKy1J,iBAAiBz1J,KAAKw1J,YAAYD,EAAWnmF,GAASmmF,GAC3Dv1J,KAAKo1J,aAAc,EACnBp1J,KAAK2sI,eAETolB,EAAa71J,UAAUmsJ,YAAc,aAGrC0J,EAAa71J,UAAUywI,YAAc,aAGrColB,EAAa71J,UAAUy5J,gBAAkB,SAAU90J,GAC/Cb,KAAKk3G,cAAgB,GACrBl3G,KAAK+pB,QAAQ,gBAAiBlpB,GAC9Bb,KAAKqzJ,YAAW,GAChBx9H,YAAS,CAAC71B,KAAKy3B,MAAO85H,IAG1BQ,EAAa71J,UAAUu5J,iBAAmB,SAAU7+C,EAAWn/E,EAAM52B,GAEjEb,KAAKsyJ,SAAW76H,EACZn4B,eAAcU,KAAK6K,kBAA6C,YAAzB7K,KAAK66B,iBAC5CpR,aAAOzpB,KAAKy3B,KAAKn0B,cAAc,mBAC/BmmB,aAAOzpB,KAAKy3B,KAAKn0B,cAAc,uBAI3BtD,KAAKuiG,SACLviG,KAAK6oC,cAAc,CAAC,eAAgB,gBAAiB,wBAAyB,sBAElF7oC,KAAKy3B,KAAKr1B,UAAY,IAE1BpC,KAAK02J,mBAAqBt5J,YAAkB4C,KAAK02J,oBAAsB12J,KAAK02J,mBAAqB,KACjG12J,KAAKy3B,KAAKz1B,YAAY40G,GACtB52G,KAAKk3G,cAAgBl3G,KAAKy3B,KAAKj2B,iBAAiB,IAAM+vJ,GACtDvxJ,KAAK42G,UAAY52G,KAAKy3B,KAAKn0B,cAAc,MACzCtD,KAAK22J,WAAW32J,KAAKy3B,KAAMA,EAAMz3B,KAAKm0J,YAG1CpC,EAAa71J,UAAUy6J,WAAa,SAAUC,EAAan/H,EAAM08H,GAE7D,IAAI0C,EAAYD,EAAYtzJ,cAAc,IAAMiuJ,GAC5CuF,EAAeF,EAAYtzJ,cAAc,IAAMiuJ,GAC/CsF,IAAcC,GACdD,EAAU7gI,UAAUjN,IAAIwoI,GAExB95H,EAAK56B,QAAU,GACfmD,KAAKqzJ,aACLx9H,YAAS,CAAC+gI,GAAcrF,IAGxBqF,EAAY5gI,UAAUvM,OAAO8nI,IASrCQ,EAAa71J,UAAU2uJ,SAAW,SAAUlpF,GACxC,OAAOA,IAAgB3hE,KAAK2hE,MAAQ3hE,KAAK2hE,MAAQ,IAAIC,MAQzDmwF,EAAa71J,UAAUi8G,oBAAsB,SAAU4+C,GACnD,GAA4B,OAAxB/2J,KAAKovE,OAAOqjC,SAAoBzyG,KAAK8hE,YAAc9hE,KAAKgB,QAAQsC,cAAc,IAAMiuJ,GAA4B,CAChH,IAAIzvF,EAAa9hE,KAAK8hE,WAClB73D,EAAS,CAAEwsG,gBAAiBz2G,KAAK00J,gBAAiBxmI,iBAAkBluB,KAAKkuB,kBACzEkqF,EAAc2+C,EAAQv1J,iBAAiB,IAAM+vJ,GAEjD,GADiBvxJ,KAAKg8D,iBAAiBh8D,KAAKyzG,eAExC,KAAIujD,EAAa5/H,aAAOp3B,KAAKyzG,cAAejzG,UAAU4B,UAAUiqB,OAE9C0kF,IAASoH,oBAAoB6+C,EAAYl1F,EAAY9hE,KAAKovE,OAAOv7C,WAAYukF,EAAanuG,EAAQjK,WAIlG+wG,IAASoH,oBAAoBn4G,KAAKyzG,cAAe3xC,EAAY9hE,KAAKovE,OAAOv7C,WAAYukF,EAAanuG,EAAQjK,MAEhIA,KAAK4zJ,mCAAkC,GAAO,GAAM,GAAO,GAAO,GAAO,GAAO,GAAO,KAU/F7B,EAAa71J,UAAU+6J,gBAAkB,SAAUn1F,EAAYsN,GACvDtN,GAAcsN,EAAOqjC,SAAWzyG,KAAKgB,QAAQsC,cAAc,aACvD8rE,EAAOqjC,UACgB,SAAnBzyG,KAAK+0E,YACLjT,EAAa9hE,KAAKk3J,oBAAoBp1F,IAE1CA,EAAaivC,IAASoG,gBAAgBr1C,EAAYsN,EAAOv7C,WAAY7zB,KAAK+0E,YAE9El/C,YAAS,CAAC71B,KAAKy3B,MAAO85H,IAGtBzvF,EAAa9hE,KAAKk3J,oBAAoBp1F,GAE1C,IAAIx1D,EAAUtM,KAAKy2J,WAAW30F,EAAYsN,GACtCknF,EAAcx0F,EAAWjlE,OAAS,IAClC,IAAIklE,IAAYD,GAAYQ,cAAa,IAAIV,KAAQi+B,KAAK,MACxD/9B,EAEN,OADA9hE,KAAK+1J,WAAaj0F,EACXivC,IAAS8F,WAAW72G,KAAKmB,cAAyC,iBAAzBnB,KAAK66B,gBAAsCy7H,EAAax0F,EAAYx1D,GAAS,EAAMtM,OAEvI+xJ,EAAa71J,UAAUu6J,WAAa,SAAU30F,EAAYsN,GACtD,IAAI8iC,GAAU90G,YAAkBgyE,EAAO8iC,SACnCilD,EAAe/5J,YAAkBgyE,EAAOv7C,YACpBu7C,EAApBA,EAAOv7C,WACPvnB,EAA2B,OAAhB8iE,EAAO78D,MAAkC,OAAjB68D,EAAO5yE,MAAkB,CAC5D4yE,OAAQ+nF,EACRjkD,SAAUhB,EAASmB,eAAgB,CAAER,cAAe,iBACpD,CAAEzjC,OAAQ,CAAE5yE,MAAO,SACvB,OAAO8B,YAAO,GAAIgO,EAAS8iE,GAAQ,IAEvC2iF,EAAa71J,UAAUk7J,kBAAoB,SAAUv2J,GAC7CzD,YAAkB4C,KAAK02J,sBACvB12J,KAAK02J,mBAAqB12J,KAAKmB,cAAc,MAAO,CAAEktB,UAAWkjI,IAC5DvxJ,KAAKy3B,KAAKn0B,cAAc,MAAM0yB,UAAUzD,SAASg/H,KAClDvxJ,KAAK02J,mBAAmB1iI,MAAMygB,QAAU,QAE5CrgB,aAAQ,CAACp0B,KAAK02J,oBAAqB12J,KAAKy3B,MACxCz3B,KAAKq3J,kBAEJj6J,YAAkB4C,KAAK02J,qBAAgE,MAAzC12J,KAAK02J,mBAAmB1iI,MAAM0mG,QAC7E16H,KAAKq3J,iBAETr3J,KAAKs3J,WAAWz2J,IAEpBkxJ,EAAa71J,UAAUo7J,WAAa,SAAUz2J,GAK1C,IAJA,IAAIo8B,EAAU7/B,YAAkByD,GAAgBb,KAAKy3B,KAAhB52B,EAAEo8B,OACnCs6H,EAAWphJ,SAASmtB,iBAAiBtjC,KAAKw3J,aAAc,MAAMj0H,iBAAiB,UAAW,IAC1Fk0H,EAAWlwJ,KAAKooI,MAAM1yG,EAAO2F,UAAY20H,GACzCrgD,EAAgBl3G,KAAKy3B,KAAKj2B,iBAAiB,4BACtC5E,EAAI66J,EAAU76J,GAAK,EAAGA,IAAK,CAChC,IAAKQ,YAAkB85G,EAAct6G,KAAOs6G,EAAct6G,GAAGo5B,UAAUzD,SAASg/H,GAA4B,CACxG,IAAImG,EAAYxgD,EAAct6G,GAC9BoD,KAAK02J,mBAAmBt0J,UAAYs1J,EAAUt1J,UAC9CpC,KAAK02J,mBAAmB1iI,MAAMgP,IAAM/F,EAAO2F,UAAY,KACvD5iC,KAAK02J,mBAAmB1iI,MAAMygB,QAAU,QACxC,MAGAz0C,KAAK02J,mBAAmB1iI,MAAMygB,QAAU,OACxCz0C,KAAK02J,mBAAmB1iI,MAAMgP,IAAM,SAIhD+uH,EAAa71J,UAAUs7J,WAAa,WAChC,OAAOx3J,KAAKk3G,cAAc,IAS9B66C,EAAa71J,UAAUs5J,YAAc,SAAUlD,EAAUljF,GACrD,IAAIwnC,EACJ,GAAI52G,KAAKqpG,cAAgBipD,EAAU,CAC/B,IAAIxwF,EAAawwF,EACbxwF,GAAcsN,EAAOqjC,SACE,SAAnBzyG,KAAK+0E,YACLjT,EAAa9hE,KAAKk3J,oBAAoBp1F,IAE1CA,EAAaivC,IAASoG,gBAAgBr1C,EAAYsN,EAAOv7C,WAAY7zB,KAAK+0E,YAG1EjT,EAAa9hE,KAAKk3J,oBAAoBp1F,GAE1C9hE,KAAK+1J,WAAaj0F,EAClB,IAAIw0F,EAAcx0F,EAAWjlE,OAAS,IAClC,IAAIklE,IAAYD,GAAYQ,cAAa,IAAIV,KAAQi+B,KAAK,MACxD/9B,EACN80C,EAAY52G,KAAKw2J,iBAA2C,iBAAzBx2J,KAAK66B,gBAAsCy7H,EAAax0F,EAAYsN,GACvG,IAAIuoF,EAAwC,YAAzB33J,KAAK66B,gBACxB76B,KAAK4zJ,mCAAkC,GAAM,GAAO,GAAO,GAAO,GAAO,GAAO,EAAO+D,QAGvF/gD,EAAY52G,KAAKi3J,gBAAgB3E,EAAUljF,GAE/C,OAAOwnC,GAEXm7C,EAAa71J,UAAUs6J,iBAAmB,SAAU10F,EAAYsN,GAC5DpvE,KAAKwzJ,kCAAiC,GAAM,GAAO,GAAO,GAC1D,IAAIvpJ,EAASjK,KAAKy2J,WAAW30F,EAAYsN,GAIzC,GAHAnlE,EAAOy4F,WAAa1iG,KAAKy0J,eACzBxqJ,EAAOikB,iBAAmBluB,KAAKkuB,iBACfluB,KAAKg8D,iBAAiBh8D,KAAKqpG,cAC5B,CACX,IAAI0pD,EAAY37H,aAAOp3B,KAAKqpG,aAAc7oG,UAAU4B,UAAUiqB,OAC9D,OAAO0kF,IAASiH,sBAAsBh4G,KAAKmB,cAAe4xJ,EAAWjxF,EAAYsN,EAAOv7C,WAAY5pB,EAAQjK,MAG5G,OAAO+wG,IAASiH,sBAAsBh4G,KAAKmB,cAAenB,KAAKqpG,aAAcvnC,EAAYsN,EAAOv7C,WAAY5pB,EAAQjK,OAG5H+xJ,EAAa71J,UAAUu2J,WAAa,SAAU1+E,GAE1C,IADA,IAAIv4B,EAAO,CAAE+5D,OAAQ,KAAM/5D,KAAM,MACxB5+C,EAAI,GAAKQ,YAAkB22E,IAAUn3E,EAAIm3E,EAAMl3E,OAASD,IAAK,CAClE,IAAKQ,YAAkB22E,EAAMn3E,IAKzB,KAJyC,kBAAdm3E,EAAMn3E,IACP,kBAAdm3E,EAAMn3E,IAA0C,mBAAdm3E,EAAMn3E,GACpBQ,YAAkB22E,EAAMn3E,IACpDQ,YAAkBf,YAAU2D,KAAKovE,OAAO5yE,MAAQwD,KAAKovE,OAAO5yE,MAAQ,QAAUu3E,EAAMn3E,MAEpF,MAAc,CAAE24G,cAAexhC,EAAMn3E,GAAI4+C,KAAMu4B,EAAMn3E,IAIjE,OAAO4+C,GAEXu2G,EAAa71J,UAAUm7J,eAAiB,WACpCr3J,KAAKy3B,KAAKmc,cAAc5f,MAAMygB,QAAU,QACxC,IAAIlK,EAAc,EACdvqC,KAAKy3B,MAAQz3B,KAAKy3B,KAAKmc,gBACvBrJ,EAAcp0B,SAAS3V,SAASkmE,YAAYpjC,iBAAiBtjC,KAAKy3B,KAAKmc,cAAe,MAAMrQ,iBAAiB,gBAAiB,IAI1Hn3B,MAAMm+B,KAKNA,EAJqBp0B,SAAS3V,SAASkmE,YAAYpjC,iBAAiBtjC,KAAKy3B,KAAKmc,cAAe,MAAMrQ,iBAAiB,oBAAqB,IACjHptB,SAAS3V,SAASkmE,YAAYpjC,iBAAiBtjC,KAAKy3B,KAAKmc,cAAe,MAAMrQ,iBAAiB,uBAAwB,IACzHptB,SAAS3V,SAASkmE,YAAYpjC,iBAAiBtjC,KAAKy3B,KAAKmc,cAAe,MAAMrQ,iBAAiB,qBAAsB,IACpHptB,SAAS3V,SAASkmE,YAAYpjC,iBAAiBtjC,KAAKy3B,KAAKmc,cAAe,MAAMrQ,iBAAiB,sBAAuB,MAIrJ,IAAIq0H,EAAU53J,KAAKw3J,aAAa/gI,YAAc8T,EAC9CvqC,KAAK02J,mBAAmB1iI,MAAM0b,MAAQkoH,EAAQzqJ,WAAa,KAC3DsoB,aAAkBz1B,KAAK02J,mBAAoB,CAAEh8B,OAAQ,KACrD,IAAIm9B,EAAU73J,KAAK42G,UAAUtzG,cAAc,IAAMiuJ,EAA4B,0BAC7EvxJ,KAAK02J,mBAAmBt0J,UAAYy1J,EAAQz1J,WAEhD2vJ,EAAa71J,UAAUg7J,oBAAsB,SAAUp1F,GACnD,GAAIA,GAAiC,SAAnB9hE,KAAK+0E,UAAsB,CACzC,IAAI+iF,EAAY93J,KAAKovE,OAAO78D,KAAOvS,KAAKovE,OAAO78D,KAAO,OACX,WAAvCvS,KAAKyyJ,WAAW3wF,GAAYyzC,QAA8D,WAAvCv1G,KAAKyyJ,WAAW3wF,GAAYyzC,QACrC,YAAvCv1G,KAAKyyJ,WAAW3wF,GAAYyzC,SAC/BuiD,EAAY,IAEhBh2F,EAAaivC,IAASuE,cAAcxzC,EAAYivC,IAASsE,WAAWr1G,KAAK+0E,UAAW+iF,IAExF,OAAOh2F,GAQXiwF,EAAa71J,UAAU67J,gBAAkB,SAAUv7J,GAG/C,IAFA,IAAIge,EACA+6I,EAAYv1J,KAAKg4J,WACZp7J,EAAI,EAAGA,EAAI24J,EAAU14J,OAAQD,IAClC,IAAKQ,YAAkBZ,IAAU+4J,EAAU34J,GAAGuyB,aAAa,gBAAkB3yB,EAAM2Q,WAAY,CAC3FqN,EAAQ5d,EACR,MAGR,OAAO4d,GASXu3I,EAAa71J,UAAUm9G,cAAgB,SAAUr4G,EAASmK,GACtD,IAAIugC,EAAMlrC,SAAS24G,YAAY,cAC/BztE,EAAI0tE,UAAUjuG,GAAM,GAAO,GAC3BnK,EAAQq4G,cAAc3tE,IAO1BqmH,EAAa71J,UAAU+7J,UAAY,WAC3Bj4J,KAAKovE,OAAO5yE,QAAUwD,KAAKovE,OAAO78D,KAClCvS,KAAKk1J,aAAal1J,KAAKovE,OAAO5yE,MAAOwD,KAAKovE,OAAO5yE,QAE3CwD,KAAKovE,OAAO5yE,OAASwD,KAAKovE,OAAO78D,KACvCvS,KAAKk1J,aAAal1J,KAAKovE,OAAO78D,KAAMvS,KAAKovE,OAAO78D,MAE1CvS,KAAKovE,OAAO5yE,OAAUwD,KAAKovE,OAAO78D,MACxCvS,KAAKk1J,aAAa,OAAQ,SAWlCnD,EAAa71J,UAAUm4J,UAAY,SAAUvyF,EAAYsN,EAAQzN,GAC7D,GAAI3hE,KAAKy3B,KAAM,CACX,GAA8B,WAAzBz3B,KAAKgB,QAAQgvB,SAAwBhwB,KAAKgB,QAAQsL,QAAQzP,OAAS,GACvC,OAAzBmD,KAAKgB,QAAQgvB,SAAoBhwB,KAAKgB,QAAQstB,WAAWzxB,OAAS,IAC3DilE,aAAsB1jE,MAAS0jE,EAAWjlE,OAAS,GACvDO,YAAkB0kE,KACZ9hE,KAAKk4J,YAAcl4J,KAAKk4J,WAAWr7J,OAAS,IACrDilE,EAAa9hE,KAAKk4J,YAG1Bl4J,KAAKu0J,YAAYzyF,EAAYsN,EAAQzN,KAG7CowF,EAAa71J,UAAUi8J,wBAA0B,SAAUC,GACnDA,GAAeh7J,YAAkB4C,KAAKk4J,aAAel4J,KAAKsyJ,UAAYtyJ,KAAKsyJ,SAASz1J,OAAS,IAC7FmD,KAAKk4J,WAAal4J,KAAKsyJ,WAG/BP,EAAa71J,UAAUm8J,gBAAkB,aAGzCtG,EAAa71J,UAAUo8J,WAAa,WAEhCt4J,KAAK0vB,UAGTqiI,EAAa71J,UAAU0qJ,iBAAmB,SAAUriJ,GAChDvE,KAAKq0J,UAAUr0J,KAAK8hE,aAExBiwF,EAAa71J,UAAUq8J,iBAAmB,SAAUh0J,EAAOi9B,GACvDxhC,KAAKq1J,eAAgB,EAErB,IADA,IAAI3jG,EAAa,GACRvpD,EAAI,EAAG5D,EAAM1H,OAASsL,EAAGA,IAC1Bq5B,EAAQj9B,EAAM4D,KAAoB,WAAb5D,EAAM4D,IAC3BnI,KAAKi4J,YACLvmG,EAAWntD,EAAM4D,IAAMq5B,EAAQj9B,EAAM4D,KAEhCq5B,EAAQj9B,EAAM4D,MACnBupD,EAAWntD,EAAM4D,IAAMq5B,EAAQj9B,EAAM4D,KAGzCjK,OAAOjB,KAAKy0D,GAAY70D,OAAS,KACsB,IAAnDqB,OAAOjB,KAAKy0D,GAAYvzD,QAAQ,gBAChCuzD,EAAWoQ,WAAa9hE,KAAK8hE,YAEjC9hE,KAAK4mJ,iBAAiBl1F,KAY9BqgG,EAAa71J,UAAU29B,kBAAoB,SAAU2H,EAASC,GAC7B,iBAAzBzhC,KAAK66B,iBACL76B,KAAKu4J,iBAAiB,CAAC,SAAU,QAAS,cAAe/2H,GAE7DxhC,KAAKu4J,iBAAiB,CAAC,YAAa,gBAAiB/2H,GACrD,IAAK,IAAIxjC,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,QACL,IAAK,YACL,IAAK,aACL,IAAK,eACD,MACJ,IAAK,YACDgC,KAAKy2F,eACL,MACJ,IAAK,UACDz2F,KAAK22F,aACL,MACJ,IAAK,gBAED,GADA32F,KAAKm4G,oBAAoBn4G,KAAKy3B,MAC1Bz3B,KAAK42G,WAAa52G,KAAK02J,mBAAoB,CAC3C,IAAImB,EAAU73J,KAAK42G,UAAUtzG,cAAc,IAAMiuJ,GACjDvxJ,KAAK02J,mBAAmBt0J,UAAYy1J,EAAQz1J,UAEhD,MACJ,IAAK,SACGpC,KAAKy3B,OAAUr6B,YAAkB4C,KAAKk3G,gBAAgD,IAA9Bl3G,KAAKk3G,cAAcr6G,QAC3EmD,KAAKqzJ,aAET,MACJ,IAAK,SACDrzJ,KAAKk5B,cAAc,CAAEwhG,OAAQl5F,EAAQk5F,SAAU,GAC/C16H,KAAKw4J,eAYrBzG,EAAa71J,UAAUwzB,OAAS,SAAU8zD,GACtCxjF,KAAKy3B,KAAOz3B,KAAKmB,cAAc,MAAO,CAAEktB,UAAWkjI,EAA6Bx+H,MAAO,CAAE,SAAY,OACrG/yB,KAAKy3B,KAAKzB,UAAUjN,IAAIwoI,GACxBvxJ,KAAKi4J,YACL,IAAIp2H,EAAc,CAAEf,SAAU,IAAK9P,SAAU,IAAMugI,GACnDvxJ,KAAKy4J,UAAY/2H,aAAa1hC,KAAKy3B,KAAMoK,GACzC,IAAIkmD,EAAQ/nF,KAAKgB,QAAQsC,cAAc,mBAIvC,IAHKtD,KAAKovE,OAAOqjC,SAAYr1G,YAAkB2qF,IAAY/nF,KAAK04J,iBAC5D9vI,IAAaG,IAAI/oB,KAAKy3B,KAAM,SAAUz3B,KAAKo3J,kBAAmBp3J,MAErC,iBAAzBA,KAAK66B,gBAAoC,CACrC76B,KAAKgB,QAAQmuB,aAAa,aAC1BnvB,KAAKy3B,KAAK7B,aAAa,WAAY51B,KAAKgB,QAAQmuB,aAAa,aAEjEiH,aAAY,CAACp2B,KAAKgB,SAAUuwJ,GAC5BvxJ,KAAKgB,QAAQgzB,MAAMygB,QAAU,OAC7B,IAAIzM,EAAiBhoC,KAAKmB,cAAc,OACxCnB,KAAKgB,QAAQ4yC,cAAc/c,aAAamR,EAAgBhoC,KAAKgB,SAC7DgnC,EAAehmC,YAAYhC,KAAKgB,SAChCgnC,EAAehmC,YAAYhC,KAAKy3B,MAEpCz3B,KAAKy2F,eACLz2F,KAAK22F,aACAnT,GACDxjF,KAAKyrC,cASbsmH,EAAa71J,UAAU2+B,cAAgB,WACnC,MAAO,gBAQXk3H,EAAa71J,UAAU87J,SAAW,WAC9B,OAAOh4J,KAAK42G,UAAUp1G,iBAAiB,IAAM+vJ,IAYjDQ,EAAa71J,UAAUy8J,QAAU,SAAU5kF,EAAO6kF,GAI9C,KAHK54J,KAAKy3B,MAASz3B,KAAKy3B,KAAK4+D,cAAgBr2F,KAAKszJ,mBAA8C,YAAzBtzJ,KAAK66B,kBACxE76B,KAAKs4J,aAEc,SAAnBt4J,KAAK+0E,WAAwB33E,YAAkBw7J,GAAY,CAC3D,IAAI/uH,EAAU,GAAGxoC,MAAMC,KAAKtB,KAAKsyJ,UACjCzoH,EAAQjoC,KAAKmyE,GACblqC,EAAU7pC,KAAKk3J,oBAAoBrtH,GAG/B+uH,EAFA54J,KAAKovE,OAAOqjC,SACZ5oE,EAAUknE,IAASoG,gBAAgBttE,EAAS7pC,KAAKovE,OAAOv7C,WAAY7zB,KAAK+0E,YACrD52E,QAAQ41E,GAGhBlqC,EAAQ1rC,QAAQ41E,GAGpC/zE,KAAKwzJ,kCAAiC,GAAM,GAAO,GAAO,GAC1D,IAGIh5I,EAHAq+I,EAAa74J,KAAKg4J,WAAWn7J,OAC7Bi8J,EAAoB94J,KAAKy3B,KAAKn0B,cAAc,IAAMiuJ,GACtDx9E,EAASA,aAAiB31E,MAAQ21E,EAAQ,CAACA,GAE3Cv5D,EAASpd,YAAkBw7J,IAAcA,EAAY,GAAKA,EAAYC,EAAa,EAAKA,EAAaD,EACrG,IAAIxpF,EAASpvE,KAAKovE,OACd2E,GAAS3E,EAAOqjC,UAChB1+B,EAAQg9B,IAASoG,gBAAgBpjC,EAAO3E,EAAOv7C,aAGnD,IADA,IAAIqjF,EAAgB,GACXt6G,EAAI,EAAGA,EAAIm3E,EAAMl3E,OAAQD,IAAK,CACnC,IAAI4+C,EAAOu4B,EAAMn3E,GACbk1G,EAAWt2D,EAAKs2D,SAChBd,EAAKhxG,KAAKmB,cAAc,KAAM,CAAEktB,UAAWyjF,EAAWy/C,EAA4BA,EAAwB93I,GAAI,cAAgB7c,IAC9Hk2G,EAAWt3D,aAAgBt9C,OAAS7B,YAAS+yE,EAAO78D,KAAMipC,GAAQA,EAItE,GAHIs2D,IACAd,EAAG5b,UAAY0d,GAEf9yG,KAAKqpG,eAAiByI,EAAU,CAChC,IAEIinD,EAFiB1tI,YAAQrrB,KAAKqpG,aAEZmN,CAAeh7D,EAAMx7C,KAAM,eAAgBA,KAAKy0J,eAAgBz0J,KAAKkuB,iBAAkB,KAAM8iF,GAC/G+nD,GACA9kI,YAAO8kI,EAAiB/nD,GAE5BhxG,KAAK4zJ,mCAAkC,GAAM,GAAO,GAAO,QAErD9hD,GACNd,EAAGhvG,YAAYxB,SAAS01G,eAAepD,IAE3C9B,EAAGp7E,aAAa,aAAc4lB,aAAgBt9C,OAAS7B,YAAS+yE,EAAO5yE,MAAOg/C,GAAQA,GACtFw1D,EAAGp7E,aAAa,OAAQ,UACxB51B,KAAKga,OAAO,UAAW,CAAEsqB,OAAQ,oBAAqBkX,KAAMw1D,IAC5DkG,EAAct1G,KAAKovG,GACnBhxG,KAAKsyJ,SAAS1wJ,KAAK45C,GACI,SAAnBx7C,KAAK+0E,WAAwB33E,YAAkBw7J,IAAwB,IAAVp+I,IAC7DA,EAAQ,MAEZxa,KAAKg5J,yBAAyBhoD,EAAIx1D,EAAMhhC,GAExCxa,KAAK+pB,QAAQ,mBAAoB,CAAE/oB,QAASgwG,EAAIx1D,KAAMA,IAE1D,GAAmB,IAAfq9G,GAAoBz7J,YAAkB4C,KAAKy3B,KAAKn0B,cAAc,OAC9DtD,KAAKy3B,KAAKr1B,UAAY,GACtBpC,KAAKy3B,KAAKzB,UAAUvM,OAAO8nI,GAC3BvxJ,KAAKy3B,KAAKz1B,YAAYhC,KAAK42G,WAC3B52G,KAAKk3G,cAAgBA,EACrBjjF,YAAOijF,EAAel3G,KAAK42G,WAC3B52G,KAAKi5J,kBAAkBj5J,KAAKy3B,KAAMohI,OAEjC,CAC4B,YAAzB74J,KAAK66B,iBAAgD,IAAfg+H,IACtC74J,KAAK42G,UAAUx0G,UAAY,IAE/B,IAAI85C,EAAO,GACX,IAASt/C,EAAI,EAAGA,EAAIm3E,EAAMl3E,OAAQD,IAAK,CAEnC,IADA,IAAIs8J,EAAgBl5J,KAAK42G,UAAUp1G,iBAAiB,sBAC3C2G,EAAI,EAAGA,EAAI+wJ,EAAcr8J,OAAQsL,IACtC+zC,EAAK/zC,GAAK+wJ,EAAc/wJ,GAAGitF,UAE/B,GAAIl5C,EAAK/9C,QAAQ+4G,EAAct6G,GAAGw4F,YAAc,GAAKhmB,EAAOqjC,SACxD,IAAStqG,EAAI,EAAGA,EAAI+wJ,EAAcr8J,OAAQsL,IACtC,GAAI+zC,EAAK/zC,KAAO+uG,EAAct6G,GAAGw4F,UAAW,CACjB,SAAnBp1F,KAAK+0E,UACL/0E,KAAK42G,UAAU//E,aAAaqgF,EAAct6G,EAAI,GAAIs8J,EAAc/wJ,EAAI,IAGpEnI,KAAK42G,UAAU//E,aAAaqgF,EAAct6G,EAAI,GAAIoD,KAAK42G,UAAUtoF,WAAWsqI,IAEhFh8J,GAAQ,EACR,YAKJoD,KAAKk3G,cAAc18F,GACnBxa,KAAKk3G,cAAc18F,GAAO/Z,WAAWo2B,aAAaqgF,EAAct6G,GAAIoD,KAAKk3G,cAAc18F,IAGvFxa,KAAK42G,UAAU50G,YAAYk1G,EAAct6G,IAGjD,IAAIu8J,EAAS,GAAG93J,MAAMC,KAAKtB,KAAKk3G,eAChCiiD,EAAOr/I,OAAOU,EAAO,EAAG08F,EAAct6G,IACtCoD,KAAKk3G,cAAgBiiD,EACrB3+I,GAAS,EACoB,gBAAzBxa,KAAK66B,iBACL76B,KAAKo5J,mBAIbN,GAAmC,IAAdF,IACrB54J,KAAKq4J,mBAGbtG,EAAa71J,UAAUm9J,oBAAsB,SAAUp8H,EAAQq8H,GAC3D,IAAIl/I,EAAO6iB,EAAO9N,aAAa,QAAU8N,EAAO9N,aAAa,QAAU8N,EAAO9N,aAAa,MAC3FmqI,EAAO1jI,aAAa,OAAQxb,GAC5B6iB,EAAOoD,gBAAgB,QAEvB,IADA,IAAI9M,EAAa,CAAC,WAAY,gBAAiB,QACtC32B,EAAI,EAAGA,EAAI22B,EAAW12B,OAAQD,IACnC,GAAKqgC,EAAO9N,aAAaoE,EAAW32B,IAApC,CAGA,IAAIs/C,EAAOjf,EAAO9N,aAAaoE,EAAW32B,IAC1C08J,EAAO1jI,aAAarC,EAAW32B,GAAIs/C,GACnCjf,EAAOoD,gBAAgB9M,EAAW32B,MAG1Cm1J,EAAa71J,UAAUs8J,UAAY,aAInCzG,EAAa71J,UAAU88J,yBAA2B,SAAUhoD,EAAIx1D,EAAMhhC,KAItEu3I,EAAa71J,UAAU+8J,kBAAoB,SAAUxhI,EAAM8hI,KAG3DxH,EAAa71J,UAAUk9J,eAAiB,aAWxCrH,EAAa71J,UAAUs9J,eAAiB,SAAUh9J,GAC9C,IAAKY,YAAkB4C,KAAKsyJ,UAAW,CACnC,IAAInnJ,EAAOnL,KAAKyyJ,WAAWzyJ,KAAKsyJ,UAAU/8C,OAC1C,GAAa,WAATpqG,GAA8B,WAATA,GAA8B,YAATA,EAC1C,IAAK,IAAInN,EAAK,EAAGuF,EAAKvD,KAAKsyJ,SAAUt0J,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIw9C,EAAOj4C,EAAGvF,GACd,IAAKZ,YAAkBo+C,IAASA,IAASh/C,EACrC,OAAOg/C,OAKf,IAAK,IAAIzmB,EAAK,EAAGI,EAAKn1B,KAAKsyJ,SAAUv9H,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACnDymB,EAAOrmB,EAAGJ,GACd,IAAK33B,YAAkBo+C,IAASn/C,YAAU2D,KAAKovE,OAAO5yE,MAAQwD,KAAKovE,OAAO5yE,MAAQ,QAAUg/C,KAAUh/C,EAClG,OAAOg/C,GAKvB,OAAO,MASXu2G,EAAa71J,UAAUif,QAAU,WACzB3a,SAASgiC,KAAKjQ,SAASvyB,KAAKy3B,QAC5B7O,IAAaa,OAAOzpB,KAAKy3B,KAAM,SAAUz3B,KAAKo3J,mBACzCh6J,YAAkB4C,KAAKy4J,YACxBz4J,KAAKy4J,YAET5nI,YAAO7wB,KAAKy3B,OAEhB0H,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,OAElC2+B,EAAW,CACPvB,YAAQ,CAAE7qB,KAAM,KAAM/V,MAAO,KAAM01G,QAAS,KAAMO,QAAS,MAAQ6+C,IACpES,EAAa71J,UAAW,cAAU,GACrCyiC,EAAW,CACP3B,aAAS,IACV+0H,EAAa71J,UAAW,yBAAqB,GAChDyiC,EAAW,CACP3B,YAAS,OACV+0H,EAAa71J,UAAW,oBAAgB,GAC3CyiC,EAAW,CACP3B,YAAS,OACV+0H,EAAa71J,UAAW,qBAAiB,GAC5CyiC,EAAW,CACP3B,YAAS,qBACV+0H,EAAa71J,UAAW,yBAAqB,GAChDyiC,EAAW,CACP3B,YAAS,mBACV+0H,EAAa71J,UAAW,6BAAyB,GACpDyiC,EAAW,CACP3B,YAAS,SACV+0H,EAAa71J,UAAW,iBAAa,GACxCyiC,EAAW,CACP3B,aAAS,IACV+0H,EAAa71J,UAAW,eAAW,GACtCyiC,EAAW,CACP3B,YAAS,KACV+0H,EAAa71J,UAAW,kBAAc,GACzCyiC,EAAW,CACP3B,YAAS,OACV+0H,EAAa71J,UAAW,aAAS,GACpCyiC,EAAW,CACP3B,YAAS,eACV+0H,EAAa71J,UAAW,kBAAc,GACzCyiC,EAAW,CACP3B,aAAS,IACV+0H,EAAa71J,UAAW,kBAAc,GACzCyiC,EAAW,CACP3B,YAAS,MACV+0H,EAAa71J,UAAW,cAAU,GACrCyiC,EAAW,CACP3B,aAAS,IACV+0H,EAAa71J,UAAW,oBAAgB,GAC3CyiC,EAAW,CACP3B,eACD+0H,EAAa71J,UAAW,cAAU,GACrCyiC,EAAW,CACPp/B,eACDwyJ,EAAa71J,UAAW,mBAAe,GAC1CyiC,EAAW,CACPp/B,eACDwyJ,EAAa71J,UAAW,sBAAkB,GAC7CyiC,EAAW,CACPp/B,eACDwyJ,EAAa71J,UAAW,qBAAiB,GAC5CyiC,EAAW,CACPp/B,eACDwyJ,EAAa71J,UAAW,cAAU,GACrCyiC,EAAW,CACPp/B,eACDwyJ,EAAa71J,UAAW,iBAAa,GACxCyiC,EAAW,CACPp/B,eACDwyJ,EAAa71J,UAAW,eAAW,GACtCyiC,EAAW,CACPp/B,eACDwyJ,EAAa71J,UAAW,iBAAa,GACxC61J,EAAepzH,EAAW,CACtBlB,KACDs0H,GAluC2B,CAouChCzrH,KC5yCEjI,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,EAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAcrD26H,EAAsB,CAC7BC,KAAM,iBACNC,MAAOpI,EACP7rE,SAAU6rE,EACVqI,IAAKrI,EACLvgD,GAAIugD,EACJ17B,QAAS07B,EACTnnJ,KAAMmnJ,EACNjvJ,MAAOivJ,EACPvwF,MAAO,gBACP64F,WAAY,gBACZ3oD,KAAM,gCACN4oD,cAAe,cACft9J,MAAO,gBACPu9J,OAAQ,eACRC,SAAU,yCACVC,mBAAoB,0CACpBC,YAAa,iBACbC,aAAc,kBACdC,aAAc,sBACd58E,OAAQ,eACRz4D,OAAQ,eACRs1I,UAAW,eACXC,cAAe,oBACfC,gBAAiB,oBACjBC,YAAa,qBACbC,cAAe,gBAEf9lE,EAAc,CACdG,UAAW,KACX6C,QAAS,IAaT+iE,EAA8B,SAAUv7H,GASxC,SAASu7H,EAAapuJ,EAAStL,GAC3B,IAAIjB,EAAQo/B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAKnD,OAJAD,EAAM46J,cAAgB,KACtB56J,EAAM66J,gBAAiB,EACvB76J,EAAMiyJ,eAAgB,EACtBjyJ,EAAMkuJ,WAAY,EACXluJ,EA8zFX,OA50FAs+B,EAAUq8H,EAAcv7H,GAsBxBu7H,EAAax+J,UAAUirC,UAAY,WAC/B,IAAI0zH,EAAcv7J,eAAcU,KAAK6K,iBACrC7K,KAAK86J,iBAAkBD,EACvB76J,KAAK+6J,iBAAmB,KACpB/6J,KAAK86J,eACL96J,KAAKg7J,kBAGLh7J,KAAKgB,QAAQgzB,MAAM2P,QAAU,IAC7B3jC,KAAKg7J,iBACL77H,EAAOjjC,UAAUirC,UAAU7lC,KAAKtB,OAEpCA,KAAKi7J,YAAcj7J,KAAKwa,MACxBxa,KAAKmxJ,YAAc,IAEvBuJ,EAAax+J,UAAU8+J,eAAiB,WACpCh7J,KAAKk7J,aAAc,EACnBl7J,KAAKm7J,iBAAkB,EACvBn7J,KAAKo7J,cAAe,EACpBp7J,KAAKq7J,eAAgB,EACrBr7J,KAAKs7J,iBAAkB,EACvBt7J,KAAKo3F,SAAU,EACfp3F,KAAKu7J,kBAAmB,EACxBv7J,KAAKw7J,iBAAkB,EACvBx7J,KAAKy7J,SAAU,EACfz7J,KAAKqiF,YAAa,EAClBriF,KAAK07J,cAAe,EACpB17J,KAAK27J,iBAAkB,EACvB37J,KAAK47J,YAAa,EAClB57J,KAAK67J,YAAc,GACnB77J,KAAK87J,aAAc,EACnB97J,KAAK+7J,eAAgB,EACrB/7J,KAAKg8J,UAAW,EAChBh8J,KAAKi8J,mBAAqB,CAAEC,WAAW,GACvCl8J,KAAKm8J,WAAa,CAAED,WAAW,GAC/Bl8J,KAAKo8J,iBAAmB,GACxBp8J,KAAKq8J,gBAAiB,EACtBr8J,KAAKs8J,iBAAkB,EACvBt8J,KAAKu8J,cAAe,EACpBv8J,KAAKw8J,gBAAiB,EACtBx8J,KAAKy8J,eAAgB,EACrBz8J,KAAK08J,aAAe,CAChBC,IAAK,MACLC,MAAO,KACPC,OAAQ,KACRlkJ,IAAK,KACLmkJ,KAAM,KACNC,KAAM,KACNh/C,GAAI,KACJi/C,OAAQ,KACRC,SAAU,KACVl7J,KAAM,SACNM,MAAO,YACPk5H,KAAM,SACN2hC,MAAO,OAGfxC,EAAax+J,UAAUs8J,UAAY,WAC3Bx4J,KAAKm9J,UACLn9J,KAAKm9J,SAASjkI,cAAc,CAAE,OAAUl5B,KAAK06H,UAGrDggC,EAAax+J,UAAUo8J,WAAa,SAAU90E,GACrCxjF,KAAK86J,eAON96J,KAAKo9J,eAAeC,kBAAkB,qBAAsBr9J,KAAKs7J,iBAAiB,IANlFn8H,EAAOjjC,UAAUwzB,OAAOpuB,KAAKtB,KAAMwjF,GACnCxjF,KAAKs9J,mBACLt9J,KAAKu9J,mBAOb7C,EAAax+J,UAAUshK,iBAAmB,WACtC,GAA6B,iBAAzBx9J,KAAK66B,iBAA8D,SAAxB76B,KAAKm0F,eAA2B,CAC3E,IAAIspE,EAAez9J,KAAK09J,aAAa5oE,UAAUxxF,cAAc,iBAC7B,KAA5BtD,KAAKq0F,aAAa73F,OAAgBwD,KAAKo7J,aACvCplI,YAAUynI,EAAc,CAAC,eAAgB,CAAC,mBAG1CznI,YAAUynI,EAAc,CAAC,kBAAmB,CAAC,kBAIzD/C,EAAax+J,UAAUyhK,aAAe,SAAU98J,GAC5CA,EAAEyrC,iBACFtsC,KAAKk0I,SAASrzI,IAElB65J,EAAax+J,UAAU0hK,kBAAoB,WAKvC,GAJA59J,KAAK69J,cACL79J,KAAK89J,kBACL99J,KAAKk9I,cACLl9I,KAAKy3B,KAAKmL,UAAY,EACO,iBAAzB5iC,KAAK66B,kBAAuCz9B,YAAkB4C,KAAK42G,WAAY,CAC/E,IAAI5F,EAAKhxG,KAAK42G,UAAUtzG,cAAc,IAAMm2J,EAAoBzoD,IAC5DA,GACAA,EAAGh7E,UAAUjN,IAAI0wI,EAAoBn3J,SAIjDo4J,EAAax+J,UAAUg4I,SAAW,SAAUrzI,EAAGgzB,IACvCz2B,YAAkBy2B,KAAiBz2B,YAAkBy2B,KACpDz2B,YAAkBy2B,EAAWiuC,cACvBjuC,EAAWiuC,sBAAsBC,KAAiD,IAAjCluC,EAAWiuC,WAAWjlE,WAC9EmD,KAAKizF,UAAW,EAChBjzF,KAAK+9J,eAAelqI,IAExB,IAAI+9E,EAAW5xG,KAAKg+J,cAChBh+J,KAAK26J,gBAAkB/oD,EAASp1G,OAGpCwD,KAAKi+J,cAAcp9J,IAEvB65J,EAAax+J,UAAU6hK,eAAiB,SAAUlqI,GAC1C7zB,KAAKy3B,OACCr6B,YAAkBy2B,KACnBz2B,YAAkBy2B,EAAWiuC,cACvBjuC,EAAWiuC,sBAAsBC,KAAiD,IAAjCluC,EAAWiuC,WAAWjlE,UAQ1EmD,KAAKgoG,gBAA2C,iBAAzBhoG,KAAK66B,iBACxBz9B,YAAkB4C,KAAKi8J,mBAAmBrlD,YAAex5G,YAAkB4C,KAAKi8J,mBAAmBxkI,OACvGz3B,KAAKy1J,iBAAiBz1J,KAAKi8J,mBAAmBrlD,UAAU30G,WAAU,GAAOjC,KAAKi8J,mBAAmBxkI,MAErGz3B,KAAK49J,sBAXL59J,KAAKk+J,WAAa,KAClBl+J,KAAKi8J,mBAAmBC,WAAY,EACpCl8J,KAAKi8J,mBAAmBrlD,UAAY,KACpC52G,KAAKi8J,mBAAmBxkI,KAAO,KAC/Bz3B,KAAKq0J,UAAUxgI,EAAWiuC,cAU7B9hE,KAAK86J,iBACN96J,KAAKy6J,cAAcr4J,UAAY,IAEnCpC,KAAKq0F,aAAa73F,MAAQ,GAC1BwD,KAAKxD,MAAQ,KACbwD,KAAKm+J,SAAW,KAChBn+J,KAAKuS,KAAO,KACZvS,KAAKwa,MAAQ,KACbxa,KAAKi7J,YAAc,KACnBj7J,KAAKw7C,KAAO,KACZx7C,KAAKmxJ,YAAc,GACfnxJ,KAAK+6J,mBACLlqI,YAAO7wB,KAAK+6J,kBACZ/6J,KAAKq0F,aAAargE,MAAMygB,QAAU,QAClCz0C,KAAK+6J,iBAAmB,MAE5B/6J,KAAKi0I,aAAa,KAAM,MACxBj0I,KAAKq8J,gBAAiB,EACtBr8J,KAAKy1F,kBACLz1F,KAAKo+J,iBAET1D,EAAax+J,UAAUmiK,kBAAoB,WACvC,GAAIngK,OAAOjB,KAAK+C,KAAKqyG,gBAAgBx1G,OACjC,IAAK,IAAImB,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAK+C,KAAKqyG,gBAAiBr0G,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC1E,IAAIsgK,EAAW/6J,EAAGvF,GAClB,GAAiB,UAAbsgK,EAAsB,CACtB,IAAIC,EAAqBv+J,KAAKqyG,eAAeisD,GAAU5hK,QAAQ,OAAQ,KAAM2vB,OACnD,KAAtBkyI,GACA1oI,YAAS,CAAC71B,KAAK09J,aAAa5oE,WAAYypE,EAAkB5hK,MAAM,WAGnE,GAAiB,aAAb2hK,GAA6D,aAAlCt+J,KAAKqyG,eAAeisD,GACpDt+J,KAAKw4F,SAAU,EACfx4F,KAAKw+J,iBAEJ,GAAiB,aAAbF,GAA4BlhK,YAAkB4C,KAAKqyG,eAAeisD,IAItE,GAAiB,UAAbA,EACLt+J,KAAK09J,aAAa5oE,UAAUl/D,aAAa,QAAS51B,KAAKqyG,eAAeisD,QAErE,CACD,IAAIG,EAAc,CAAC,QAAS,KAAM,cAAe,mBAC7C,OAAQ,cAAe,eAAgB,iBAAkB,aAAc,YAAa,aAE3D,iBAAzBz+J,KAAK66B,iBAA+D,aAAzB76B,KAAK66B,iBAChD4jI,EAAY78J,KAAK,YAFF,CAAC,OAAQ,YAIXzD,QAAQmgK,IAAa,GAAkC,IAA7BA,EAASngK,QAAQ,QACxD6B,KAAKy6J,cAAc7kI,aAAa0oI,EAAUt+J,KAAKqyG,eAAeisD,IAEzDG,EAAYtgK,QAAQmgK,IAAa,EACrB,gBAAbA,EACAxqE,IAAMsC,eAAep2F,KAAKqyG,eAAeisD,GAAWt+J,KAAKq0F,cAGzDr0F,KAAKq0F,aAAaz+D,aAAa0oI,EAAUt+J,KAAKqyG,eAAeisD,IAIjEt+J,KAAK09J,aAAa5oE,UAAUl/D,aAAa0oI,EAAUt+J,KAAKqyG,eAAeisD,SAzB3Et+J,KAAKw2F,UAAW,EAChBx2F,KAAKs5B,WA6BY,iBAAzBt5B,KAAK66B,iBAA+D,aAAzB76B,KAAK66B,iBAChD76B,KAAK09J,aAAa5oE,UAAUz0D,gBAAgB,aAGpDq6H,EAAax+J,UAAUwiK,kBAAoB,WACvC,MAAO,CACH,gBAAiB,QACjB,YAAa1+J,KAAKgB,QAAQyY,GAAK,WAC/B,KAAQ,UACR,gBAAiB,OACjB,gBAAiB,QACjB,wBAAyB,OACzB,YAAa,SACb,kBAAmBzZ,KAAKy6J,cAAchhJ,KAG9CihJ,EAAax+J,UAAUu6F,aAAe,WAClC3C,IAAM2C,aAAaz2F,KAAK2mC,UAAW,CAAC3mC,KAAKq0F,aAAazgD,gBAClD5zC,KAAKm9J,WACLn9J,KAAKm9J,SAASx2H,UAAY3mC,KAAK2mC,UAC/B3mC,KAAKm9J,SAAS7jI,aAGtBohI,EAAax+J,UAAUsiK,UAAY,WAC/B1qE,IAAM6C,WAAW32F,KAAKw4F,QAASx4F,KAAKq0F,cAChCr0F,KAAKw4F,SACLpiE,aAAY,CAACp2B,KAAK09J,aAAa5oE,WAAY2kE,EAAoB5jC,SAC/D71H,KAAKq0F,aAAaz+D,aAAa,gBAAiB,SAChD51B,KAAK2+J,gBAAgB/oI,aAAa,WAAY51B,KAAKq9I,YAGnDr9I,KAAK4+J,YACL/oI,YAAS,CAAC71B,KAAK09J,aAAa5oE,WAAY2kE,EAAoB5jC,SAC5D71H,KAAKq0F,aAAaz+D,aAAa,gBAAiB,QAChD51B,KAAK2+J,gBAAgBthB,UAAY,IAQzCqd,EAAax+J,UAAUysC,eAAiB,WACpC,OAAO3oC,KAAKqpC,aAAa,CAAC,WAE9BqxH,EAAax+J,UAAU43J,cAAgB,WACnC,MAAO,kBAEX4G,EAAax+J,UAAU2iK,gBAAkB,SAAU79J,GAClB,iBAAzBhB,KAAK66B,kBACL75B,EAAQq8I,UAAY,IAG5Bqd,EAAax+J,UAAUyiK,cAAgB,WACnC,OAAO3+J,KAAK09J,aAAa5oE,WAE7B4lE,EAAax+J,UAAU4iK,eAAiB,WACpC,MAAO,oBAEXpE,EAAax+J,UAAU6iK,iBAAmB,SAAUxsJ,GAChD,OAAOvS,KAAKg/J,kBAAkBh/J,KAAKqyJ,eAAe9/I,KAEtDmoJ,EAAax+J,UAAU8iK,kBAAoB,SAAUxiK,GAGjD,IAFA,IAAIg/C,EAEKx9C,EAAK,EAAGihK,EADDj/J,KAAKg4J,WACqBh6J,EAAKihK,EAAYpiK,OAAQmB,IAAM,CACrE,IAAIkhK,EAASD,EAAYjhK,GACzB,GAAIgC,KAAKkzJ,kBAAkBgM,EAAO/vI,aAAa,iBAAmB3yB,EAAO,CACrEg/C,EAAO0jH,EACP,OAGR,OAAO1jH,GAEXk/G,EAAax+J,UAAUijK,UAAY,WAC/Bn/J,KAAKs4J,aACDt4J,KAAK8hE,sBAAsBC,IAC3B/hE,KAAKu7J,kBAAmB,EAGxBv7J,KAAKo/J,gBAGb1E,EAAax+J,UAAUkjK,aAAe,WAClC,GAAKhiK,YAAkB4C,KAAKxD,OAGvB,GAAIwD,KAAKuS,MAAQnV,YAAkB4C,KAAKxD,OAAQ,CACjD,IAAIwE,EAAUhB,KAAK++J,iBAAiB/+J,KAAKuS,MACzC,GAAInV,YAAkB4D,GAElB,YADAhB,KAAKk5B,cAAc,CAAE3mB,KAAM,OAI3BvS,KAAKi0I,aAAajzI,EAAS,WAI/BhB,KAAKi0I,aAAaj0I,KAAKk3G,cAAcl3G,KAAKi7J,aAAc,WAbxDj7J,KAAKi0I,aAAaj0I,KAAKg/J,kBAAkBh/J,KAAKxD,OAAQ,MAe1DwD,KAAKq/J,iBACLvrE,IAAM/2F,SAASiD,KAAKuS,KAAMvS,KAAKq0F,aAAcr0F,KAAKm0F,eAAgBn0F,KAAKu4F,kBAE3EmiE,EAAax+J,UAAU8gJ,OAAS,SAAUn8I,GACtC,GAAKb,KAAKw4F,QAAV,CAGA,IAAIv7D,EAASp8B,EAAEo8I,cACXtxG,EAAgB9qC,EAAEo8B,OAClB8+H,EAAgB/7J,KAAK+7J,cACzB/7J,KAAK+7J,eAAgB,GAEjBA,GAAkB/7J,KAAKm7J,kBAAmBn7J,KAAKk7J,aAAiB99J,YAAkBuuC,KACjF3rC,KAAKs/J,mBAAoBliK,YAAkB6/B,IAS5Cj9B,KAAKm7J,kBAAqB/9J,YAAkB4C,KAAKm9J,WAC9C38J,SAASgiC,KAAKjQ,SAASvyB,KAAKm9J,SAASn8J,UACxChB,KAAKm9J,SAASn8J,QAAQg1B,UAAUzD,SAASknI,EAAoBW,cACxDp6J,KAAKs7J,kBACNt7J,KAAKm7J,iBAAkB,KAIA,iBAAzBn7J,KAAK66B,kBAAuC76B,KAAKq7J,eAAiBp+H,IAAWj9B,KAAKq0F,eAChF7zF,SAASo1F,gBAAkB34D,GAAWz8B,SAASo1F,gBAAkB34D,GACjE0O,EAAc3V,UAAUzD,SAASknI,EAAoBI,cACxDz8J,YAAkB6/B,IAAoC,iBAAzBj9B,KAAK66B,iBAAsC76B,KAAKgoG,gBAC1Er8D,IAAkB3rC,KAAK09J,aAAa5oE,WAAuC,iBAAzB90F,KAAK66B,kBAC1D76B,KAAK09J,aAAa5oE,UAAUviE,SAAS0K,IAAWj9B,KAAKg8J,YACtDh8J,KAAKm7J,kBAAkBn7J,KAAKk7J,YAC5Bl7J,KAAKu/J,eAAe1+J,GACpBb,KAAKg8J,UAAW,IAEhBh8J,KAAKo1J,aAAgBp1J,KAAKk7J,aAAgBl7J,KAAK+7J,gBAC/C/7J,KAAKizF,UAAW,EAChBjzF,KAAKs7J,iBAAkB,IA5BM,iBAAzBt7J,KAAK66B,iBAAsC76B,KAAKgoG,gBAAkBhoG,KAAKk7J,YACvEl7J,KAAKk6J,YAAY53J,QAGjBtC,KAAK2+J,gBAAgBr8J,UA2BjCo4J,EAAax+J,UAAUqjK,eAAiB,SAAU1+J,GAC9Cb,KAAKo7J,cAAe,EACpBp7J,KAAKw/J,SAAS3+J,GACdb,KAAKy/J,cAET/E,EAAax+J,UAAUujK,WAAa,WAC3Bz/J,KAAKw4F,UAGNx4F,KAAKqiF,aACLriF,KAAKq8J,gBAAiB,EACtBr8J,KAAKi+J,cAAc,OAEvBj+J,KAAKw9J,mBACLx9J,KAAKq5G,cAAcr5G,KAAKy6J,cAAe,UACV,iBAAzBz6J,KAAK66B,iBAA+D,UAAzB76B,KAAKgB,QAAQgvB,SACxDhwB,KAAKq5G,cAAcr5G,KAAKq0F,aAAc,QAEtCr0F,KAAK09J,aAAarmE,aAClBxhE,YAAS,CAAC71B,KAAK09J,aAAarmE,aAAcoiE,EAAoBa,eAElEt6J,KAAK+pB,QAAQ,UAEjB2wI,EAAax+J,UAAUqgJ,QAAU,SAAU17I,GACvC,IAAKb,KAAKo7J,aAAc,CACpBp7J,KAAKo7J,cAAe,EACpB,IAAIn7J,EAAO,CAAEm7J,eAAcv6J,EAAkBimB,MAAOjmB,GACpDb,KAAK+pB,QAAQ,QAAS9pB,GAE1BD,KAAKy1F,mBAETilE,EAAax+J,UAAUwjK,kBAAoB,SAAU7+J,GACjD,IAAI8+J,EAAc/nI,YAAQ53B,KAAKq0F,aAAc,QAC7C,GAAIsrE,GAAe9+J,EAAEo8B,SAAW0iI,EAAa,CACzC,IAAI16J,EAAOjF,KAAKgB,QAAQgvB,UAAYhwB,KAAK8+J,iBAAoB,KAAO9+J,KAAKq0F,aAAallE,aAAa,SACnGnvB,KAAKuS,KAAOtN,IAGpBy1J,EAAax+J,UAAU8oJ,UAAY,WAC/Bp8H,IAAaG,IAAI/oB,KAAK09J,aAAa5oE,UAAW,YAAa90F,KAAK4/J,cAAe5/J,MAC/E4oB,IAAaG,IAAI/oB,KAAK09J,aAAa5oE,UAAW,QAAS90F,KAAKmiI,QAASniI,MACrE4oB,IAAaG,IAAI/oB,KAAK09J,aAAa5oE,UAAW,WAAY90F,KAAKwlH,SAAUxlH,MACzEA,KAAK6/J,mBAETnF,EAAax+J,UAAU2jK,gBAAkB,WACrCj3I,IAAaG,IAAI/oB,KAAK2+J,gBAAiB,OAAQ3+J,KAAKg9I,OAAQh9I,MAC5D,IAAI2/J,EAAc/nI,YAAQ53B,KAAKq0F,aAAc,QACzCsrE,GACA/2I,IAAaG,IAAI42I,EAAa,QAAS3/J,KAAK0/J,kBAAmB1/J,MAE9DqmB,IAAQa,SAMTlnB,KAAK8/J,eAAiB,IAAIlrH,IAAe50C,KAAK2+J,gBAAiB,CAC3D/oH,UAAW51C,KAAK+/J,uBAAuB5jK,KAAK6D,MAAOs1C,WAAYt1C,KAAK08J,aAAc1zI,UAAW,YANjGhpB,KAAK8/J,eAAiB,IAAIlrH,IAAe50C,KAAK2+J,gBAAiB,CAC3D/oH,UAAW51C,KAAKggK,iBAAiB7jK,KAAK6D,MAAOs1C,WAAYt1C,KAAK08J,aAAc1zI,UAAW,YAQ/FhpB,KAAKigK,kBAETvF,EAAax+J,UAAU+jK,eAAiB,WAChCjgK,KAAKu4F,iBACL3vE,IAAaG,IAAI/oB,KAAK09J,aAAarmE,YAAa,YAAar3F,KAAK29J,aAAc39J,OAGxF06J,EAAax+J,UAAUgkK,kBAAoB,WACnClgK,KAAK2+J,iBACL/1I,IAAaa,OAAOzpB,KAAK2+J,gBAAiB,OAAQ3+J,KAAKg9I,QAE3D,IAAI2iB,EAAc3/J,KAAKq0F,cAAgBz8D,YAAQ53B,KAAKq0F,aAAc,QAC9DsrE,GACA/2I,IAAaa,OAAOk2I,EAAa,QAAS3/J,KAAK0/J,mBAE9Cr5I,IAAQa,UACTlnB,KAAK8/J,eAAe3kJ,UAEpBnb,KAAKu4F,iBACL3vE,IAAaa,OAAOzpB,KAAK09J,aAAarmE,YAAa,YAAar3F,KAAK29J,eAG7EjD,EAAax+J,UAAUu5F,gBAAkB,WACjCz1F,KAAKu4F,kBAC2B,KAA5Bv4F,KAAKq0F,aAAa73F,OAAiBwD,KAAKw2F,SAIxC3gE,YAAS,CAAC71B,KAAK09J,aAAarmE,aAAcoiE,EAAoBa,eAH9DlkI,aAAY,CAACp2B,KAAK09J,aAAarmE,aAAcoiE,EAAoBa,iBAY7EI,EAAax+J,UAAUqhK,eAAiB,WACpC30I,IAAaG,IAAI/oB,KAAKy3B,KAAM,QAASz3B,KAAKmgK,aAAcngK,MACxD4oB,IAAaG,IAAI/oB,KAAKy3B,KAAM,YAAaz3B,KAAKogK,YAAapgK,MAC3D4oB,IAAaG,IAAI/oB,KAAKy3B,KAAM,WAAYz3B,KAAKqgK,aAAcrgK,OAE/D06J,EAAax+J,UAAUspH,SAAW,SAAU3kH,GACrB,KAAfA,EAAEy/J,UAAkC,KAAfz/J,EAAEy/J,gBACLtkK,IAAdgE,KAAKy3B,OACAz3B,KAAK86J,gBAIN96J,KAAKugK,2BAA4B,EAEjCvgK,KAAKo9J,eAAeC,kBAAkB,sBAAsB,GAAM,IALlEr9J,KAAKs4J,cAQbt4J,KAAKwgK,eAAiB3/J,EACtBb,KAAKygK,0BAA0B5/J,KAGvC65J,EAAax+J,UAAUukK,0BAA4B,SAAU5/J,GACpDb,KAAKo1J,aAAgBh4J,YAAkB4C,KAAKy3B,OAC5Cr6B,YAAkB4C,KAAKy3B,KAAKn0B,cAAc,SAAUtD,KAAKw4F,SAAYx4F,KAAKw2F,UAC3Ex2F,KAAK0gK,kBAAkB7/J,IAG/B65J,EAAax+J,UAAUikK,aAAe,SAAUt/J,GAC5C,IAAIo8B,EAASp8B,EAAEo8B,OACX+zE,EAAKp5E,YAAQqF,EAAQ,IAAMs0H,GAC/B,GAAKvxJ,KAAK2gK,UAAU3vD,GAIpB,GADAhxG,KAAKi0I,aAAajjC,EAAInwG,GAClBwlB,IAAQa,UAAYlnB,KAAKs/J,iBACzBp2H,QAAQ03H,WAEP,CAED5gK,KAAK6gK,WADO,OAIpBnG,EAAax+J,UAAUkkK,YAAc,SAAUv/J,GAC3C,IAAI62J,EAAY9/H,YAAQ/2B,EAAEo8B,OAAQ,IAAMs0H,GACxCvxJ,KAAK8gK,SAASpJ,IAElBgD,EAAax+J,UAAU4kK,SAAW,SAAU9vD,GACpChxG,KAAKw4F,SAAWx4F,KAAK2gK,UAAU3vD,KAAQA,EAAGh7E,UAAUzD,SAASg/H,KAC7DvxJ,KAAK69J,cACLhoI,YAAS,CAACm7E,GAAKugD,KAGvBmJ,EAAax+J,UAAUmkK,aAAe,WAClCrgK,KAAK69J,eAETnD,EAAax+J,UAAU2hK,YAAc,WACjC,GAAI79J,KAAKy3B,KAAM,CACX,IAAIspI,EAAe/gK,KAAK86J,gBAAkB96J,KAAKm9J,UAAYn9J,KAAKm9J,SAASn8J,QACrEhB,KAAKm9J,SAASn8J,QAAQQ,iBAAiB,IAAM+vJ,GAC7CvxJ,KAAKy3B,KAAKj2B,iBAAiB,IAAM+vJ,GACjCwP,GAAeA,EAAYlkK,QAC3Bu5B,aAAY2qI,EAAaxP,KAIrCmJ,EAAax+J,UAAUykK,UAAY,SAAU3vD,GACzC,OAAQA,GAAMA,EAAG70D,aAAa,SAAuC,WAA5B60D,EAAG7hF,aAAa,SAE7DurI,EAAax+J,UAAUwkK,kBAAoB,SAAU7/J,GACjD,GAAIb,KAAKk3G,cAAcr6G,OAAS,EAAG,CAC/B,IAAIm0G,EF3kBT,SAA2Br8D,EAASo/B,EAAOitF,EAAel1E,EAAYm1E,EAAW3hK,GAKpF,IAAIkb,EAEJ,GANA22I,GAAenyE,OAAOkiF,aAAavsH,GACnCv0C,YAAW,WACP+wJ,EAAc,KACf,KAEHA,EAAcrlE,EAAaqlE,EAAY15I,cAAgB05I,EACnDE,IAAkB4P,GAAa7P,IAAeD,EAAa,CAC3D,IAAK,IAAIv0J,EAAI,EAAGA,EAAI2P,EAAQ1P,OAAQD,IAChC,GAAI2P,EAAQ3P,GAAGo5B,UAAUzD,SAvBnB,YAuB0C,CAC5C/X,EAAQ5d,EACR,MAIR,OAAO2P,EADPiO,GAAgB,GAIhB,IAAI+6I,EAAYxhF,EACZotF,EAAYhQ,EAAYt0J,OAExB2+C,OAAO,EAEP5+C,EADJokK,EAAgBA,EAAgBA,EAAgB,EAAI,EAEpDz0J,EAAU,GACV,GACQ3P,IAAM24J,EAAU14J,SAChBD,GAAK,GAQT4+C,EAAO+5G,EALH/6I,GADO,IAAP5d,EACQ,EAGAA,IAGR0C,EACOwsF,EAAatwC,EAAK66C,YAAYhqE,OAAO5U,cAAgB+jC,EAAK66C,YAAYhqE,OAGtEy/D,EAAatwC,EAAK45C,UAAU39E,cAAgB+jC,EAAK45C,WAEnD/nF,OAAO,EAAG8zJ,KAAehQ,GAC9B5kJ,EAAQ3K,KAAK2zJ,EAAU/6I,IAE3B5d,UACKA,IAAMokK,GAGf,OAFA5P,EAAaD,EACbE,EAAgB4P,EACT10J,EAAQ,GE0hBFm0J,CAAkB7/J,EAAEy/J,SAAUtgK,KAAKk3G,cAAel3G,KAAKi7J,aAAa,EAAMj7J,KAAKgB,QAAQyY,GAAIzZ,KAAK86J,gBACpG19J,YAAkB4zG,KACnBhxG,KAAKi0I,aAAajjC,EAAInwG,GACtBb,KAAKohK,uBASjB1G,EAAax+J,UAAUywI,YAAc,WAC5BvvI,YAAkB4C,KAAKqhK,kBACxB10B,YAAY3sI,KAAKqhK,gBACjBjrI,aAAY,CAACp2B,KAAKqhK,gBAAiB5H,EAAoBe,aACvDx6J,KAAKqhK,eAAej/J,UAAY,GAChCpC,KAAKqhK,eAAiB,OAQ9B3G,EAAax+J,UAAUmsJ,YAAc,WAC7BjrJ,YAAkB4C,KAAKqhK,kBACvBrhK,KAAKqhK,eAAiBh7I,IAAQa,WAAa9pB,YAAkB4C,KAAKshK,iBAAmBthK,KAAKshK,eAAe3pE,QAAQ,KAC5Gv6F,YAAkB4C,KAAKshK,iBAAmBthK,KAAKshK,eAAe3pE,QAAQ,IAAM33F,KAAK09J,aAAa/lE,QAAQ,GAC3G9hE,YAAS,CAAC71B,KAAKqhK,gBAAiB5H,EAAoBe,aACpDpS,YAAc,CACVnrH,OAAQj9B,KAAKqhK,eACb3xH,MAAOrpB,IAAQa,SAAW,OAAS,QACpClnB,KAAKmB,eACRknJ,YAAYroJ,KAAKqhK,kBAGzB3G,EAAax+J,UAAU8jK,iBAAmB,SAAUn/J,GAChD,GAAKb,KAAKw4F,QAAV,CAGA,IAAI+oE,EAA6B,WAAb1gK,EAAEilC,QAAoC,aAAbjlC,EAAEilC,OAC3C07H,EAA0C,iBAAzBxhK,KAAK66B,kBAAoD,SAAbh6B,EAAEilC,QAAkC,QAAbjlC,EAAEilC,QAC1F9lC,KAAK87J,YAA2B,WAAbj7J,EAAEilC,OACrB9lC,KAAKg8J,UAAYh8J,KAAKk7J,aAA4B,QAAbr6J,EAAEilC,OACvC,IAAI27H,EAA2B,SAAb5gK,EAAEilC,QAAkC,OAAbjlC,EAAEilC,QAAgC,SAAbjlC,EAAEilC,QAAkC,QAAbjlC,EAAEilC,OACnF47H,EAA6B,SAAb7gK,EAAEilC,QAAkC,OAAbjlC,EAAEilC,QAAgC,WAAbjlC,EAAEilC,QAAoC,aAAbjlC,EAAEilC,QACvE,SAAbjlC,EAAEilC,QAAkC,QAAbjlC,EAAEilC,OAChC,MAAK9lC,KAAK2hK,iBAAmBJ,GAAiBC,IAAoBxhK,KAAKk7J,eAGlEl7J,KAAKw2F,SAAU,CAChB,IAAIorE,EAA2B,QAAb/gK,EAAEilC,QAAiC,UAAbjlC,EAAEilC,OAK1C,QAJkB9pC,IAAdgE,KAAKy3B,MAAuBz3B,KAAKo1J,aAAgBwM,GAA4B,WAAb/gK,EAAEilC,SAClE9lC,KAAKwgK,eAAiB3/J,EACtBb,KAAKs4J,iBAEHt4J,KAAK86J,gBAAgC,SAAbj6J,EAAEilC,QAAkC,UAAbjlC,EAAEilC,SAAwB1oC,YAAkB4C,KAAKy3B,QAChGr6B,YAAkB4C,KAAKk3G,gBAAkBwqD,GAA8C,IAA9B1hK,KAAKk3G,cAAcr6G,QAAiBmD,KAAKo1J,gBAC9Fp1J,KAAK86J,iBAAkB2G,GACzB,OASR,QANKG,GAAwC,iBAAzB5hK,KAAK66B,iBAAuC76B,KAAKk7J,aACjD,WAAbr6J,EAAEilC,SACLjlC,EAAEyrC,iBAENtsC,KAAKqiF,WAA0B,WAAbxhF,EAAEilC,QAA8B9lC,KAAKqiF,WACvDriF,KAAKy7J,SAAWiG,GAA6B,WAAb7gK,EAAEilC,QAA+B9lC,KAAKy7J,QAC9D56J,EAAEilC,QACN,IAAK,OACL,IAAK,KACD9lC,KAAK6hK,mBAAmBhhK,GACxB,MACJ,IAAK,SACDb,KAAK8hK,gBAAgB9hK,KAAKi7J,YAAcj7J,KAAK+hK,eAAgBlhK,GAC7DA,EAAEyrC,iBACF,MACJ,IAAK,WACDtsC,KAAKgiK,kBAAkBhiK,KAAKi7J,YAAcj7J,KAAK+hK,eAAgBlhK,GAC/DA,EAAEyrC,iBACF,MACJ,IAAK,OAGL,IAAK,MACDtsC,KAAKiiK,oBAAoBphK,GACzB,MACJ,IAAK,QAC4B,iBAAzBb,KAAK66B,kBACA76B,KAAKs7J,iBACNt7J,KAAKkiK,aAGb,MACJ,IAAK,OACDliK,KAAKkiK,YACL,MACJ,IAAK,OACDliK,KAAKu8J,aAAev8J,KAAKk7J,YACzBl7J,KAAK4+J,UAAU/9J,GACfb,KAAKmiK,cAActhK,GACnB,MACJ,IAAK,QACDb,KAAKoiK,kBAAkBvhK,GACvB,MACJ,IAAK,MACDb,KAAKqiK,wBAAwBxhK,GAC7B,MACJ,IAAK,SACL,IAAK,QACGb,KAAKk7J,cACLl7J,KAAK4+J,UAAU/9J,GACfb,KAAKmiK,cAActhK,QAMvC65J,EAAax+J,UAAU2lK,mBAAqB,SAAUhhK,GAClD,GAAIb,KAAK86J,gBAAkB19J,YAAkB4C,KAAKy3B,MAC9Cz3B,KAAKsiK,oBAAqB,EAE1BtiK,KAAKo9J,eAAeC,kBAAkB,sBAAsB,GAAM,OAEjE,CACDr9J,KAAKsiK,oBAAqB,EAC1B,IAAI3gB,EAAW3hJ,KAAKy3B,KAAKn0B,cAAc,IAAMm2J,EAAoBn3J,OACjE,GAAItC,KAAKuiK,kBAAkB5gB,GACvB3hJ,KAAKi0I,aAAa0N,EAAU9gJ,OAE3B,CACD,IAAI2Z,EAAqB,SAAb3Z,EAAEilC,OAAoB9lC,KAAKi7J,YAAc,EAAIj7J,KAAKi7J,YAAc,EACxEjyF,EAAa,EACY,iBAAzBhpE,KAAK66B,kBACLmuC,EAA0B,SAAbnoE,EAAEilC,QAAqB1oC,YAAkB4C,KAAKi7J,aAAe,EAAIj7J,KAAKk3G,cAAcr6G,OAAS,EAC1G2d,EAAQA,EAAQ,EAAIxa,KAAKk3G,cAAcr6G,OAAS,EAAI2d,IAAUxa,KAAKk3G,cAAcr6G,OAAS,EAAI2d,GAElG,IAAIgoJ,EAAWplK,YAAkB4C,KAAKi7J,aAAej7J,KAAKk3G,cAAcluC,GAAchpE,KAAKk3G,cAAc18F,GACpGpd,YAAkBolK,IACnBxiK,KAAKi0I,aAAauuB,EAAU3hK,GAGpCA,EAAEyrC,mBAGVouH,EAAax+J,UAAU+lK,oBAAsB,SAAUphK,GACnD,GAA6B,iBAAzBb,KAAK66B,gBACL,GAAI76B,KAAK86J,gBAAkB19J,YAAkB4C,KAAKy3B,MAC9Cz3B,KAAKsiK,oBAAqB,EAE1BtiK,KAAKo9J,eAAeC,kBAAkB,sBAAsB,GAAM,OAEjE,CACDr9J,KAAKsiK,oBAAqB,EAC1B,IAAIG,EAAS,EAQb,GANIA,EADa,SAAb5hK,EAAEilC,OACO,EAGA9lC,KAAKg4J,WAAWn7J,OAAS,EAEtCgE,EAAEyrC,iBACEtsC,KAAKi7J,cAAgBwH,EACrB,OAEJziK,KAAKi0I,aAAaj0I,KAAKk3G,cAAcurD,GAAS5hK,KAI1D65J,EAAax+J,UAAUmmK,wBAA0B,SAAUxhK,GAC1B,iBAAzBb,KAAK66B,gBACL76B,KAAKoiK,kBAAkBvhK,GAGnBb,KAAKk7J,cACLl7J,KAAK4+J,UAAU/9J,GACfb,KAAKmiK,cAActhK,KAI/B65J,EAAax+J,UAAU6jK,uBAAyB,SAAUl/J,GACtD,GAAKb,KAAKw4F,WAGLx4F,KAAK2hK,iBAAqB3hK,KAAKk7J,eAG/Bl7J,KAAKw2F,SAAU,CAKhB,QAJkBx6F,IAAdgE,KAAKy3B,MAAuBz3B,KAAKo1J,cACjCp1J,KAAKwgK,eAAiB3/J,EACtBb,KAAKs4J,cAELl7J,YAAkB4C,KAAKy3B,QAAWr6B,YAAkB4C,KAAKk3G,gBAC3B,IAA9Bl3G,KAAKk3G,cAAcr6G,QAAiBmD,KAAKo1J,YACzC,OAEa,UAAbv0J,EAAEilC,QACF9lC,KAAKoiK,kBAAkBvhK,KAInC65J,EAAax+J,UAAUkmK,kBAAoB,SAAUvhK,GACjD,GAAIb,KAAKk7J,YAAa,CAClB,IAAIlqD,EAAKhxG,KAAKy3B,KAAKn0B,cAAc,IAAMm2J,EAAoBn3J,OACvD0uG,IACAhxG,KAAKi0I,aAAajjC,EAAInwG,GACtBb,KAAKy7J,SAAU,GAEfz7J,KAAKqiF,aACLriF,KAAKq8J,gBAAiB,EACtBr8J,KAAKi+J,cAAcp9J,IAEvBb,KAAK4+J,YACL5+J,KAAKmiK,cAActhK,QAGnBb,KAAKkiK,aAGbxH,EAAax+J,UAAUqmK,kBAAoB,SAAUvhK,GACjD,OAAQ5D,YAAkB4D,IAE9B05J,EAAax+J,UAAU6lK,aAAe,WAClC,IAAIxK,EAAWv3J,KAAKy3B,KAAKzB,UAAUzD,SAASg/H,GAA8B,KACtEjuH,iBAAiBtjC,KAAKg4J,WAAW,GAAI,MAAMz0H,iBAAiB,UAChE,OAAOh8B,KAAKooI,MAAM3vI,KAAKy3B,KAAK4K,wBAAwBsN,OAASx5B,SAASohJ,EAAU,MAEpFmD,EAAax+J,UAAU4lK,gBAAkB,SAAUY,EAAO57I,GACtD,IAAI67I,EAAeD,GAAS,EAAI1iK,KAAKk3G,cAAcwrD,EAAQ,GAAK1iK,KAAKk3G,cAAc,GACnFl3G,KAAKi0I,aAAa0uB,EAAc77I,IAEpC4zI,EAAax+J,UAAU8lK,kBAAoB,SAAUU,EAAO57I,GACxD,IAAI2Q,EAAOz3B,KAAKg4J,WACZ2K,EAAeD,GAASjrI,EAAK56B,OAASmD,KAAKk3G,cAAcwrD,EAAQ,GAAK1iK,KAAKk3G,cAAcz/E,EAAK56B,OAAS,GAC3GmD,KAAKi0I,aAAa0uB,EAAc77I,IAEpC4zI,EAAax+J,UAAU+oJ,YAAc,WACjCr8H,IAAaa,OAAOzpB,KAAK09J,aAAa5oE,UAAW,YAAa90F,KAAK4/J,eACnEh3I,IAAaa,OAAOzpB,KAAK09J,aAAa5oE,UAAW,WAAY90F,KAAKwlH,UAClE58F,IAAaa,OAAOzpB,KAAK09J,aAAa5oE,UAAW,QAAS90F,KAAKmiI,SAC/DniI,KAAKkgK,qBAOTxF,EAAax+J,UAAUohK,iBAAmB,WACtC10I,IAAaa,OAAOzpB,KAAKy3B,KAAM,QAASz3B,KAAKmgK,cAC7Cv3I,IAAaa,OAAOzpB,KAAKy3B,KAAM,YAAaz3B,KAAKogK,aACjDx3I,IAAaa,OAAOzpB,KAAKy3B,KAAM,WAAYz3B,KAAKqgK,eAEpD3F,EAAax+J,UAAU0mK,cAAgB,SAAUnpJ,GAC7C,MAAO,QAAUA,EAAG/c,QAAQ,8BAA+B,QAAU,MAEzEg+J,EAAax+J,UAAU2mK,gBAAkB,SAAUhiK,GAC/C,IAAIo8B,EAASp8B,EAAEo8B,OACf,IAAO7/B,YAAkB4C,KAAKm9J,WAAavlI,YAAQqF,EAAQj9B,KAAK4iK,cAAc5iK,KAAKm9J,SAASn8J,QAAQyY,MAC/FzZ,KAAK09J,aAAa5oE,UAAUviE,SAAS1xB,EAAEo8B,QAYnCA,IAAWj9B,KAAKq0F,cAAkBr0F,KAAKgoG,gBAAkB/qE,IAAWj9B,KAAKk6J,aAChD,aAAzBl6J,KAAK66B,kBACL76B,KAAKgoG,gBAAkB3hF,IAAQa,UAAY+V,IAAWj9B,KAAK09J,aAAa/lE,QAAQ,KACrF33F,KAAK+7J,eAAiB11I,IAAQiD,MAA8B,SAAtBjD,IAAQ2B,KAAK5N,QAAqB5Z,SAASo1F,gBAAkB51F,KAAK2+J,iBACpGn+J,SAASo1F,gBAAkB51F,KAAKk6J,aACpCr5J,EAAEyrC,uBAhBF,GAAItsC,KAAK09J,aAAa5oE,UAAU9+D,UAAUzD,SAASknI,EAAoBI,aAAe75J,KAAKk7J,YAAa,CACpGl7J,KAAKm7J,iBAAkB,EACvB,IAAIloE,EAAWjzF,KAAKo1J,YACpBp1J,KAAKo7J,cAAe,EACpBp7J,KAAK4+J,UAAU/9J,GACVoyF,IACDjzF,KAAKy/J,aACLz/J,KAAK09J,aAAa5oE,UAAU9+D,UAAUvM,OAAOgwI,EAAoBI,eAYjFa,EAAax+J,UAAU4mK,kBAAoB,WACnC9iK,KAAKm7J,kBACLn7J,KAAK4+J,YACL5+J,KAAKy/J,aACLz/J,KAAK09J,aAAa5oE,UAAU9+D,UAAUvM,OAAOgwI,EAAoBI,cAGzEa,EAAax+J,UAAUimK,cAAgB,SAAUthK,IACxCb,KAAKo3F,SAAWp3F,KAAKs/J,kBACtBt/J,KAAKmiI,QAAQthI,IAGrB65J,EAAax+J,UAAU0jK,cAAgB,SAAU/+J,GAC7C,GAAgB,IAAZA,EAAEw0C,OAA4B,IAAbx0C,EAAE+wF,SAGnB5xF,KAAK2+J,gBAAgB3oI,UAAUzD,SAASknI,EAAoB5jC,UAAY71H,KAAK09J,aAAarmE,cAAgBx2F,EAAEo8B,OAAhH,CAGA,IAAIA,EAASp8B,EAAEo8B,OAIf,GAHIA,IAAWj9B,KAAKq0F,cAAkBr0F,KAAKgoG,gBAAkB/qE,IAAWj9B,KAAKk6J,aAAyC,aAAzBl6J,KAAK66B,iBAC9Fh6B,EAAEyrC,iBAEDtsC,KAAKw2F,SA0BNx2F,KAAKmiI,QAAQthI,OA1BG,CACZb,KAAKk7J,aACLl7J,KAAK4+J,YACD5+J,KAAKs/J,kBACLt/J,KAAKmiK,cAActhK,KAIvBb,KAAKmiI,QAAQthI,GACbb,KAAKw9J,mBACLx9J,KAAKmxJ,YAAiD,KAAnCnxJ,KAAKq0F,aAAa73F,MAAM6vB,OAAgB,KAAOrsB,KAAKq0F,aAAa73F,MACpFwD,KAAKs8J,iBAAkB,EACvBt8J,KAAKkiK,aAGT,IAAIa,EAAU/iK,KAEV8gC,EAAYxhC,cAAc,IAAQU,KAAKgB,QAAQgvB,UAAYhwB,KAAK8+J,kBAAoB9+J,KAAKqpG,aAAgB,IAAM,IAC9GrpG,KAAKy8J,eACNr8J,YAAW,WACP2iK,EAAQ3E,gBACR2E,EAAQtG,eAAgB,IACzB37H,MAOf45H,EAAax+J,UAAUkiK,cAAgB,WACnC,GAAIp+J,KAAKy3B,KAAM,CACX,IAAIm/E,EAAY52G,KAAKy3B,KAAKn0B,cAAc,MACpCszG,IACAA,EAAYA,EAAU30G,UAAY20G,EAAU30G,WAAU,GAAQ20G,EAC9D52G,KAAKi8J,mBAAmBrlD,UAAYA,KAIhD8jD,EAAax+J,UAAU8mK,mBAAqB,SAAUhyD,EAAInwG,EAAGoiK,EAAeC,GACxE,IAAInjK,EAAQC,KACZA,KAAK89J,kBACL9sD,EAAGh7E,UAAUjN,IAAIwoI,GACjBvxJ,KAAK69J,cACL,IAAIrhK,EAAQwD,KAAKkzJ,kBAAkBliD,EAAG7hF,aAAa,eAC/Cg0I,EAAenjK,KAAKw5J,eAAeh9J,GACvC,GAAKwD,KAAKo3F,SAAY6rE,GAAkB7lK,YAAkByD,GA2BtDb,KAAKojK,oBAAoBpyD,EAAInwG,EAAGoiK,EAAeE,EAAc3mK,GACzDwD,KAAK86J,gBAEL96J,KAAKo9J,eAAeC,kBAAkB,mBAAoBr9J,KAAKm+J,UAE/D+E,GACAljK,KAAKqjK,iBAAiBryD,EAAInwG,OAjC4B,CAC1D,IAAIkzE,EAAQ/zE,KAAKsjK,cAAcH,GAC/BnjK,KAAKqiF,YAAa,EAClB,IAAIv/D,EAAY,CACZjiB,EAAGA,EACH26C,KAAMw1D,EACNmtD,SAAUpqF,EACVqnF,eAAcv6J,EACdkiB,QAAQ,GAEZ/iB,KAAK+pB,QAAQ,SAAUjH,GAAW,SAAUA,GACpCA,EAAUC,OACViuF,EAAGh7E,UAAUvM,OAAO8nI,IAGpBxxJ,EAAMqjK,oBAAoBpyD,EAAInwG,EAAGoiK,EAAeE,EAAc3mK,GAC1DuD,EAAM+6J,gBAEN/6J,EAAMq9J,eAAeC,kBAAkB,mBAAoBt9J,EAAMo+J,UAEjE+E,GACAnjK,EAAMsjK,iBAAiBryD,EAAInwG,SAgB/C65J,EAAax+J,UAAUknK,oBAAsB,SAAUpyD,EAAInwG,EAAGoiK,EAAeE,EAAc3mK,GACvFwD,KAAKujK,iBAAqBnmK,YAAkB4C,KAAKm+J,UAA6B,KAAhBn+J,KAAKm+J,SACnEn+J,KAAKw7C,KAAOw1D,EACZhxG,KAAKm+J,SAAWgF,EAChB,IAAIK,EAAcxjK,KAAKy3B,KAAKn0B,cAAc,IAAMiuJ,GAC5CiS,GACAptI,aAAY,CAACotI,GAAcjS,GAE/BvgD,EAAGp7E,aAAa,gBAAiB,QACjC51B,KAAKi7J,YAAcj7J,KAAK+3J,gBAAgBv7J,IAE5Ck+J,EAAax+J,UAAUunK,WAAa,SAAUzyD,GACtChxG,KAAK2gK,UAAU3vD,KAAQA,EAAGh7E,UAAUzD,SAASg/H,KAC7CvxJ,KAAK89J,kBACL9sD,EAAGh7E,UAAUjN,IAAIwoI,GACjBvxJ,KAAK69J,cACL7sD,EAAGp7E,aAAa,gBAAiB,UAIzC8kI,EAAax+J,UAAUa,SAAW,SAAU8D,GACxC,IAAI+wG,EAAW5xG,KAAKg+J,cAwBpB,OAvBuB,OAAnBpsD,EAASp1G,MACL8C,eAAgC,OAAlBsyG,EAASr/F,MAAmC,KAAlBq/F,EAASr/F,KACjDuhF,IAAM/2F,SAAS60G,EAASr/F,KAAMvS,KAAKq0F,aAAcr0F,KAAKm0F,eAAgBn0F,KAAKu4F,iBAG3EzE,IAAM/2F,SAAS,KAAMiD,KAAKq0F,aAAcr0F,KAAKm0F,eAAgBn0F,KAAKu4F,iBAItEzE,IAAM/2F,SAAS60G,EAASr/F,KAAMvS,KAAKq0F,aAAcr0F,KAAKm0F,eAAgBn0F,KAAKu4F,iBAE3Ev4F,KAAK86J,gBAEL96J,KAAKo9J,eAAeC,kBAAkB,wBAAyBzrD,GAE/D5xG,KAAK0jK,eAAmC,OAAlB1jK,KAAKm+J,WAAsBn+J,KAAK86J,gBACtD96J,KAAKwzJ,kCAAiC,GAAO,GAAO,GAAO,GAAO,GAClExzJ,KAAK2jK,oBAEA3jK,KAAKq0F,aAAapzB,kBAAoBjhE,KAAK+6J,mBAChDlqI,YAAO7wB,KAAK+6J,kBACZ/6J,KAAKq0F,aAAargE,MAAMygB,QAAU,SAElCz0C,KAAK26J,gBAAkB/oD,EAASp1G,OAChCwD,KAAKqiF,YAAa,GACX,IAGPriF,KAAKqiF,YAAcriF,KAAKo3F,QACxBp3F,KAAKq8J,gBAAiB,EACO,iBAAzBr8J,KAAK66B,iBACL76B,KAAKy1F,mBAEF,IAGfilE,EAAax+J,UAAU+3I,aAAe,SAAUjjC,EAAInwG,GAC5Cb,KAAK2gK,UAAU3vD,MAASA,EAAGh7E,UAAUzD,SAASg/H,IAAkCvxJ,KAAKk7J,aAAel7J,KAAKqiF,YACtG2uB,EAAGh7E,UAAUzD,SAASg/H,IACzBvxJ,KAAKgjK,mBAAmBhyD,EAAInwG,GAAG,GAAO,GAGtCb,KAAKqjK,iBAAiBryD,EAAInwG,IAGlC65J,EAAax+J,UAAUmnK,iBAAmB,SAAUryD,EAAInwG,GAChDb,KAAKy3B,MACLz3B,KAAK69J,cAET79J,KAAK4jK,mBAAuBxmK,YAAkB4C,KAAKk+J,YAAiC,KAAlBl+J,KAAKk+J,WACvEl+J,KAAKk+J,WAAaltD,EACdhxG,KAAKjD,SAAS8D,KAGdb,KAAKk7J,cACL3nI,YAAWvzB,KAAK2+J,gBAAiB,CAAE,wBAAyB3+J,KAAKk+J,WAAal+J,KAAKk+J,WAAWzkJ,GAAK,OAC/FzZ,KAAKs/J,kBAAoBt/J,KAAKk6J,aAC9B3mI,YAAWvzB,KAAKk6J,YAAa,CAAE,wBAAyBl6J,KAAKk+J,WAAal+J,KAAKk+J,WAAWzkJ,GAAK,UAGjGzZ,KAAKk7J,cAAgB99J,YAAkB4zG,IAAShxG,KAAKk7J,cAAgB99J,YAAkByD,KAC7E,YAAXA,EAAEsK,MAAiC,YAAXtK,EAAEsK,MAAmC,UAAbtK,EAAEilC,WACnD9lC,KAAKq8J,gBAAiB,EACtBr8J,KAAKi+J,cAAcp9J,KAEnBb,KAAKk7J,aAAgB99J,YAAkB4C,KAAKk+J,aAAiC,OAAlBl+J,KAAKm+J,UAAuBt9J,GAAgB,UAAXA,EAAEsK,MAC9FnL,KAAKohK,kBAAkBvgK,GAED,YAAtBwlB,IAAQ2B,KAAK5N,OACbmZ,YAAWvzB,KAAKq0F,aAAc,CAAE,aAAcr0F,KAAKq0F,aAAa73F,QAChE+2B,YAAWvzB,KAAK2+J,gBAAiB,CAAE,mBAAoB3+J,KAAKq0F,aAAa56E,KACzEzZ,KAAK2+J,gBAAgBt+H,gBAAgB,gBAG7Cq6H,EAAax+J,UAAU2nK,iBAAmB,SAAUC,GAChD,IAAI1Q,GAAgB,EACpB,GAAI0Q,EACA,IACI1Q,IAAiB5yJ,SAASgB,iBAAiBsiK,GAAkBjnK,OAEjE,MAAOi7E,GACHs7E,GAAgB,EAGxB,OAAOA,GAEXsH,EAAax+J,UAAUynK,iBAAmB,WAGlC3jK,KAAKuiG,SACLviG,KAAK6oC,cAAc,CAAC,kBAEnB7oC,KAAK+6J,mBACN/6J,KAAK+6J,iBAAmB/6J,KAAKmB,cAAc,OAAQ,CAAEktB,UAAWorI,EAAoBj9J,QACpFwD,KAAKq0F,aAAazgD,cAAc/c,aAAa72B,KAAK+6J,iBAAkB/6J,KAAKq0F,cACzEr0F,KAAKq0F,aAAargE,MAAMygB,QAAU,QAEtCz0C,KAAK+6J,iBAAiB34J,UAAY,GAClC,IAAI2hK,EAAgBzkK,cAAcyb,KAAKC,MAAMD,KAAK0uB,UAAUzpC,KAAKm+J,WAAan+J,KAAKm+J,SAS/E6F,GARahkK,KAAK6jK,iBAAiB7jK,KAAK0jK,eAEvBr4I,YAAQ7qB,SAAS8C,cAActD,KAAK0jK,eAAethK,UAAUiqB,QAG7DhB,YAAQrrB,KAAK0jK,gBAGCK,EAAc/jK,KAAM,gBAAiBA,KAAK20J,gBAAiB30J,KAAKkuB,iBAAkB,KAAMluB,KAAK+6J,kBAChI,GAAIiJ,GAAiBA,EAAcnnK,OAAS,EACxC,IAAK,IAAID,EAAI,EAAGA,EAAIonK,EAAcnnK,OAAQD,IACtCoD,KAAK+6J,iBAAiB/4J,YAAYgiK,EAAcpnK,IAGxDoD,KAAK4oC,uBACL5oC,KAAK4zJ,mCAAkC,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,IAEnF8G,EAAax+J,UAAU4hK,gBAAkB,WACrC,GAAI99J,KAAKy3B,KAAM,CACX,IAAIwsI,EAAgBjkK,KAAKy3B,KAAKj2B,iBAAiB,IAAM+vJ,GACjD0S,EAAcpnK,SACdu5B,aAAY6tI,EAAe1S,GAC3B0S,EAAc,GAAG5jI,gBAAgB,oBAI7Cq6H,EAAax+J,UAAU8hK,YAAc,WACjC,IACIpsD,EAEAsyD,EACAC,EAJA/0F,EAASpvE,KAAKovE,OAalB,OAXAwiC,EAAW5xG,KAAKm+J,SAGX/gK,YAAkBw0G,KACnBsyD,EAAY7nK,YAAS+yE,EAAO5yE,MAAOo1G,GACnCuyD,EAAW9nK,YAAS+yE,EAAO78D,KAAMq/F,IAM9B,CAAEp1G,MAJKY,YAAkBw0G,IAC3B90G,YAAYonK,GAAyBtyD,EAAZsyD,EAGP3xJ,KAFVnV,YAAkBw0G,IAC1B90G,YAAYonK,GAAwBtyD,EAAXuyD,IASlCzJ,EAAax+J,UAAU+hK,cAAgB,SAAUmG,GAC7C,IAAIxyD,EAAW5xG,KAAKg+J,cAChBxjJ,EAAQxa,KAAKq8J,eAAiB,KAAOr8J,KAAKi7J,YAC9Cj7J,KAAKk5B,cAAc,CAAE,MAAS1e,EAAO,KAAQo3F,EAASr/F,KAAM,MAASq/F,EAASp1G,QAAS,GACvFwD,KAAKqkK,kBAAkBD,IAE3B1J,EAAax+J,UAAUonK,cAAgB,SAAU9mK,GAmB7C,MAjBqB,kBAAVA,GACU,mBAAVA,GACU,kBAAVA,EACC0B,OAAOujG,iBAAiB,GAAI,CAChCjlG,MAAO,CACHA,MAAOA,EACPsrB,YAAY,GAEhBvV,KAAM,CACF/V,MAAOA,EACPsrB,YAAY,KAKZtrB,GAIhBk+J,EAAax+J,UAAUmoK,kBAAoB,SAAUD,GAKjD,GAJApkK,KAAKqiF,YAAa,EAClBriF,KAAK26J,cAAgB36J,KAAKxD,MAC1BwD,KAAKi7J,YAAcj7J,KAAKwa,MACxBxa,KAAK67J,YAAez+J,YAAkB4C,KAAKuS,MAAoB,GAAZvS,KAAKuS,MACnDvS,KAAKo3F,QAAS,CACf,IAAIrjB,EAAQ/zE,KAAKsjK,cAActjK,KAAKm+J,UAChCmG,OAAW,EAIXA,EAHiC,kBAA1BtkK,KAAKujK,kBACqB,mBAA1BvjK,KAAKujK,kBACqB,kBAA1BvjK,KAAKujK,iBACDrlK,OAAOujG,iBAAiB,GAAI,CACnCjlG,MAAO,CACHA,MAAOwD,KAAKujK,iBACZz7I,YAAY,GAEhBvV,KAAM,CACF/V,MAAOwD,KAAKujK,iBACZz7I,YAAY,KAKT9nB,KAAKujK,iBAEpBvjK,KAAKq/J,iBACL,IAAIv8I,EAAY,CACZjiB,EAAGujK,EACH5oH,KAAMx7C,KAAKw7C,KACX2iH,SAAUpqF,EACV4uF,aAAc3iK,KAAK4jK,mBACnBL,iBAAkBe,EAClBlJ,eAAcgJ,EACd5nK,MAAOwD,KAAKxD,MACZwE,QAAShB,KAAKgB,SAEdhB,KAAKiuJ,WAAajuJ,KAAKgyJ,cACvBhyJ,KAAKgyJ,eAAgB,EAGrBhyJ,KAAK+pB,QAAQ,SAAUjH,GAEvB9iB,KAAK86J,gBAAkB96J,KAAKgnC,mBAE5BhnC,KAAKo9J,eAAeC,kBAAkB,iBAGzCjgK,YAAkB4C,KAAKxD,QAAyB,KAAfwD,KAAKxD,OAAyC,WAAxBwD,KAAKm0F,gBAC7D/9D,aAAY,CAACp2B,KAAK09J,aAAa5oE,WAAY,kBAGnD4lE,EAAax+J,UAAUmjK,eAAiB,WACpC,GAAKjiK,YAAkB4C,KAAKxD,OAYlBwD,KAAK86J,iBACX96J,KAAKy6J,cAAcr4J,UAAY,SAZ/B,GAAIpC,KAAK86J,gBAAkB96J,KAAKy6J,cAAcn3J,cAAc,WACpDihK,EAAkBvkK,KAAKy6J,cAAcn3J,cAAc,WACvC+yF,YAAcr2F,KAAKuS,KACnCgyJ,EAAgB3uI,aAAa,QAAS51B,KAAKxD,MAAM2Q,iBAEhD,IAAKnN,KAAK86J,eAAgB,CAE3B,IAAIyJ,EADJvkK,KAAKy6J,cAAcr4J,UAAY,oBAAsBpC,KAAKuS,KAAO,aAC7DgyJ,EAAkBvkK,KAAKy6J,cAAcn3J,cAAc,WACvCsyB,aAAa,QAAS51B,KAAKxD,MAAM2Q,cAa7DutJ,EAAax+J,UAAUsoK,WAAa,SAAU3jK,GAC1C,GAAMA,EAAEo0C,SAAyB,KAAdp0C,EAAE8zC,UAAoB30C,KAAK47J,YAA4B,KAAd/6J,EAAE8zC,SAAgC,KAAd9zC,EAAE8zC,QAiD9E30C,KAAK47J,YAAa,OA/ClB,OADA57J,KAAK47J,YAAa,EACV/6J,EAAE8zC,SACN,KAAK,GACL,KAAK,GAC4B,iBAAzB30C,KAAK66B,iBAAuC76B,KAAKk7J,aAAgBl7J,KAAKu8J,cAAiBv8J,KAAKo1J,YAK5Fp1J,KAAK27J,iBAAkB,GAJvB37J,KAAK27J,iBAAkB,EACvB37J,KAAKykK,YAAY5jK,IAKrBb,KAAKu8J,cAAe,EACpB17J,EAAEyrC,iBACF,MACJ,KAAK,GACL,KAAK,EACDtsC,KAAK67J,YAAc77J,KAAKk6J,YAAY19J,OAC/BwD,KAAKk7J,aAAoC,KAArBl7J,KAAK67J,aAAsB77J,KAAKk7J,aAAel7J,KAAKmxJ,YAAYt0J,OAAS,GAIpE,KAArBmD,KAAK67J,aAA2C,KAArB77J,KAAKmxJ,aAA+C,iBAAzBnxJ,KAAK66B,iBAHhE76B,KAAK27J,iBAAkB,EACvB37J,KAAKykK,YAAY5jK,IAMS,KAArBb,KAAK67J,cACN77J,KAAKy3B,MACLz3B,KAAK49J,oBAET59J,KAAKi7J,YAAc,KACU,iBAAzBj7J,KAAK66B,kBACL76B,KAAK27J,iBAAkB,EACvB37J,KAAKykK,YAAY5jK,GACY,iBAAzBb,KAAK66B,iBACL76B,KAAK4+J,cAIjB/9J,EAAEyrC,iBACF,MACJ,QACItsC,KAAK67J,YAAc77J,KAAKk6J,YAAY19J,MACpCwD,KAAK27J,iBAAkB,EACvB37J,KAAKykK,YAAY5jK,KAQjC65J,EAAax+J,UAAUwoK,aAAe,SAAU7jK,GAC5C,OAAQA,EAAE8zC,SACN,KAAK,GACD,MACJ,KAAK,GACL,KAAK,GACD30C,KAAKmxJ,YAAcnxJ,KAAKk6J,YAAY19J,MACpCqE,EAAEyrC,iBACF,MACJ,KAAK,EACGtsC,KAAKk7J,aAAwC,iBAAzBl7J,KAAK66B,iBACzBh6B,EAAEyrC,iBAEN,MACJ,QACItsC,KAAKo8J,iBAAmBp8J,KAAK2kK,qBAC7B3kK,KAAKmxJ,YAAcnxJ,KAAKk6J,YAAY19J,QAIhDk+J,EAAax+J,UAAU0oK,oBAAsB,WACzC,GAAI5kK,KAAKo7J,aAAc,CACnB,IAAIyJ,EAAY7kK,KAAK2kK,qBACrB3kK,KAAKq0F,aAAaywE,kBAAkBD,EAAUlsJ,IAAKksJ,EAAUlsJ,OAGrE+hJ,EAAax+J,UAAU2uJ,SAAW,SAAUlpF,GACxC,IAAI2sF,EACJ,IAAKtuJ,KAAKw8J,gBAAkBx8J,KAAKgoG,gBAAkBhoG,KAAKk6J,YAAa,CACjE5L,EAAc3sF,EAAQA,EAAM1iE,QAAUe,KAAK2hE,MAAQ3hE,KAAK2hE,MAAM1iE,QAAU,IAAI2iE,IAC5E,IAAIsgB,EAAkC,KAArBliF,KAAK67J,YAAqB,WAAa77J,KAAKkiF,WACzD19D,EAAWxkB,KAAKyyJ,WAAWzyJ,KAAK8hE,YAAYyzC,OAChD,IAAMv1G,KAAK8hE,sBAAsBC,KAA6B,WAAbv9C,IAAsC,WAAbA,EAGrE,CACD,IAAI4qD,EAAUpvE,KAAKovE,OAAO78D,KAAQvS,KAAKovE,OAAO78D,KAAO,GACrD+7I,EAAYpsF,MAAMkN,EAAQ8S,EAAYliF,KAAK67J,YAAa77J,KAAK8rF,WAAY9rF,KAAK+rF,mBAJ9EuiE,EAAYpsF,MAAM,GAAIggB,EAAYliF,KAAK67J,YAAa77J,KAAK8rF,WAAY9rF,KAAK+rF,mBAQ9EuiE,EAAc3sF,EAAQA,EAAM1iE,QAAUe,KAAK2hE,MAAQ3hE,KAAK2hE,MAAM1iE,QAAU,IAAI2iE,IAEhF,OAAO0sF,GAEXoM,EAAax+J,UAAUyoK,mBAAqB,WACxC,IAAI3jG,EAAQhhE,KAAKq0F,aACjB,MAAO,CAAEn3F,MAAOqK,KAAKgH,IAAIyyD,EAAM+jG,gBAAiBpsJ,IAAKpR,KAAKgH,IAAIyyD,EAAMgkG,gBAExEtK,EAAax+J,UAAUuoK,YAAc,SAAU5jK,GAC3C,IAAId,EAAQC,MACZA,KAAKy7J,SAAU,EACfz7J,KAAKi7J,YAAc,KACnBj7J,KAAK46J,gBAAiB,EAClB56J,KAAKk6J,YAAYtmH,cAActwC,cAAc,IAAMm2J,EAAoBY,cACpDr6J,KAAKk6J,YAAYtmH,cAActwC,cAAc,IAAMm2J,EAAoBY,WAC7ErmI,MAAMwC,WAAwC,KAA3Bx2B,KAAKk6J,YAAY19J,MAAe,SAAW,WAG/E,GADAwD,KAAKq1J,eAAgB,EACjBr1J,KAAKo4J,cACL,GAAIp4J,KAAK86J,eACL96J,KAAKs7J,gBAA4C,aAAzBt7J,KAAK66B,iBAAkC76B,KAAKo4J,gBAAkBp4J,KAAKs7J,iBACpFt7J,KAAKs7J,gBAAkBt7J,KAAKs7J,gBACJ,KAA3Bt7J,KAAKk6J,YAAY19J,OAAyC,iBAAzBwD,KAAK66B,gBAEtC76B,KAAKo9J,eAAeC,kBAAkB,qBAAsBr9J,KAAKs7J,iBAAiB,GAIlFt7J,KAAKo9J,eAAeC,kBAAkB,iBAAkBr9J,KAAKk6J,YAAY19J,WAG5E,CACD,IAAIyoK,EAAc,CACdC,sBAAsB,EACtB3yJ,KAAMvS,KAAKk6J,YAAY19J,MACvBk1D,WAAY,SAAUoQ,EAAYH,EAAOyN,GACjC61F,EAAYliJ,SAGhBhjB,EAAMy8J,gBAAiB,EACvBz8J,EAAMolK,gBAAgBrjG,EAAYH,EAAOyN,KAE7Cg2F,cAAevkK,EACfkiB,QAAQ,GAEZ/iB,KAAK+pB,QAAQ,YAAak7I,GAAa,SAAUniJ,GACxCA,EAAUC,QAAWhjB,EAAMy8J,gBAAmB15I,EAAUoiJ,sBACzDnlK,EAAMolK,gBAAgBplK,EAAM+hE,WAAY,KAAM/hE,EAAMqvE,aAexEsrF,EAAax+J,UAAUg1B,OAAS,SAAU4wC,EAAYH,EAAOyN,GACzDpvE,KAAKw8J,gBAAiB,EACtBx8J,KAAKmlK,gBAAgBrjG,EAAYH,EAAOyN,IAE5CsrF,EAAax+J,UAAUipK,gBAAkB,SAAUrjG,EAAYH,EAAOyN,GAC7DhyE,YAAkB4C,KAAKk6J,eACxBl6J,KAAKs7J,mBAAoBt7J,KAAKk7J,aAAwC,aAAzBl7J,KAAK66B,iBAA6D,KAA3B76B,KAAKk6J,YAAY19J,OAE/D,KAAlCwD,KAAKk6J,YAAY19J,MAAM6vB,QAAkBrsB,KAAKqpG,cAc9CrpG,KAAKw7J,iBAAkB,EACvB75F,EAA2C,KAAlC3hE,KAAKk6J,YAAY19J,MAAM6vB,OAAiB,KAAOs1C,EACxD3hE,KAAKq0J,UAAUvyF,EAAYsN,EAAQzN,KAfnC3hE,KAAKi8J,mBAAmBC,WAAY,EACpCl8J,KAAKy7J,SAAU,EACVr+J,YAAkB4C,KAAKi8J,mBAAmBrlD,YAAex5G,YAAkB4C,KAAKi8J,mBAAmBxkI,OACpGz3B,KAAKy1J,iBAAiBz1J,KAAKi8J,mBAAmBrlD,UAAW52G,KAAKi8J,mBAAmBxkI,MAErFz3B,KAAKy7J,SAAU,EACVr+J,YAAkB4C,KAAKm+J,WAAsC,iBAAzBn+J,KAAK66B,kBAC1C76B,KAAKqlK,iBACLrlK,KAAKohK,qBAETphK,KAAKw7J,iBAAkB,GAO3Bx7J,KAAK4oC,yBAGb8xH,EAAax+J,UAAUopK,aAAe,SAAUC,GAC5C,GAAIvlK,KAAKo4J,cAAe,CACpB,IAAIxkH,EAAgB2xH,EAAajiK,cAAc,IAAMm2J,EAAoBU,cACrEoL,EAAajiK,cAAc,IAAMm2J,EAAoBU,cAAgBn6J,KAAKmB,cAAc,OAAQ,CAChGktB,UAAWorI,EAAoBU,eAE/Bn6J,KAAK86J,iBACLlnH,EAAcxxC,UAAY,IAE9BpC,KAAKk6J,YAAcl6J,KAAKmB,cAAc,QAAS,CAC3C4xB,MAAO,CAAE5nB,KAAM,QACfkjB,UAAWorI,EAAoBS,cAEnCl6J,KAAKgB,QAAQP,WAAWo2B,aAAa72B,KAAKk6J,YAAal6J,KAAKgB,SAC5D,IAAIg5J,GAAW,EAsDf,OArDI3zI,IAAQa,WACR8yI,GAAW,GAEfh6J,KAAKshK,eAAiBxtE,IAAMwE,YAAY,CACpCt3F,QAAShB,KAAKk6J,YACdviE,QAASqiE,EACL,CAACP,EAAoBO,SAAUP,EAAoBQ,oBAAsB,CAACR,EAAoBQ,oBAClGpmI,WAAY,CAAEshE,YAAan1F,KAAKwlK,uBACjCxlK,KAAKmB,eACH/D,YAAkB4C,KAAKk2F,aAC+B,IAAnDl2F,KAAKk2F,SAASv5F,MAAM,KAAKwB,QAAQ,aACjC03B,YAAS,CAAC71B,KAAKshK,eAAexsE,WAAY,cAEa,IAAlD90F,KAAKk2F,SAASv5F,MAAM,KAAKwB,QAAQ,aACtC03B,YAAS,CAAC71B,KAAKshK,eAAexsE,WAAY,aAGlD7gE,YAAO,CAACj0B,KAAKshK,eAAexsE,WAAYlhD,GACxCxf,aAAQ,CAACwf,GAAgB2xH,GACzBhyI,YAAWvzB,KAAKk6J,YAAa,CACzB,gBAAiB,QACjB,YAAal6J,KAAKgB,QAAQyY,GAAK,WAC/B,KAAQ,UACR,wBAAyBzZ,KAAKk+J,WAAal+J,KAAKk+J,WAAWzkJ,GAAK,KAChE,aAAgB,MAChB,YAAe,MACf,eAAkB,MAClB,WAAc,UAElBzZ,KAAKylK,iBAAmBzlK,KAAKk6J,YAAYtmH,cAActwC,cAAc,IAAMm2J,EAAoBY,YAC1Fh0I,IAAQa,UAAYlnB,KAAKylK,mBAC1B78I,IAAaG,IAAI/oB,KAAKylK,iBAAkB,QAASzlK,KAAK0lK,UAAW1lK,MACjEA,KAAKylK,iBAAiBzxI,MAAMwC,WAAa,UAExCnQ,IAAQa,SAQTlnB,KAAK2lK,gBAAkB,IAAI/wH,IAAe50C,KAAKk6J,YAAa,CACxDtkH,UAAW51C,KAAK+/J,uBAAuB5jK,KAAK6D,MAC5Cs1C,WAAYt1C,KAAK08J,aACjB1zI,UAAW,YAVfhpB,KAAK2lK,gBAAkB,IAAI/wH,IAAe50C,KAAKk6J,YAAa,CACxDtkH,UAAW51C,KAAKggK,iBAAiB7jK,KAAK6D,MACtCs1C,WAAYt1C,KAAK08J,aACjB1zI,UAAW,YAUnBJ,IAAaG,IAAI/oB,KAAKk6J,YAAa,QAASl6J,KAAK4lK,QAAS5lK,MAC1D4oB,IAAaG,IAAI/oB,KAAKk6J,YAAa,QAASl6J,KAAKwkK,WAAYxkK,MAC7D4oB,IAAaG,IAAI/oB,KAAKk6J,YAAa,UAAWl6J,KAAK0kK,aAAc1kK,MACjE4oB,IAAaG,IAAI/oB,KAAKk6J,YAAa,OAAQl6J,KAAKg9I,OAAQh9I,MACxD4oB,IAAaG,IAAI/oB,KAAKk6J,YAAa,QAASl6J,KAAK6lK,aAAc7lK,MACxDA,KAAKshK,eAGZ,OAAO3sE,GAGf+lE,EAAax+J,UAAU0pK,QAAU,SAAU/kK,GACvCb,KAAK47J,YAAa,EAEdv1I,IAAQa,UAAkC,YAAtBb,IAAQ2B,KAAK5N,OACjCpa,KAAK67J,YAAc77J,KAAKk6J,YAAY19J,MACpCwD,KAAK27J,iBAAkB,EACvB37J,KAAKykK,YAAY5jK,KAGzB65J,EAAax+J,UAAU2pK,aAAe,SAAUhlK,GAC5C,IAAId,EAAQC,KACZI,YAAW,WACPL,EAAM87J,YAAc97J,EAAMm6J,YAAY19J,MACtCuD,EAAM0kK,YAAY5jK,OAG1B65J,EAAax+J,UAAUy5J,gBAAkB,SAAU90J,GAC/Cs+B,EAAOjjC,UAAUy5J,gBAAgBr0J,KAAKtB,KAAMa,GACxCb,KAAKs7J,iBACLt7J,KAAK8lK,eAIbpL,EAAax+J,UAAUu5J,iBAAmB,SAAU7+C,EAAWn/E,EAAM52B,EAAGq7J,GACpE,IAAIn8J,EAAQC,KACZ,GAAIA,KAAKw7J,gBACLx7J,KAAKw7J,iBAAkB,OAG3B,GAAIx7J,KAAKizF,SAAU,CACf,IAAI6jE,EAAe92J,KAAKk+J,WAAal+J,KAAKk+J,WAAWj8J,WAAU,GAAQ,KAgBvE,GAfAk9B,EAAOjjC,UAAUu5J,iBAAiBn0J,KAAKtB,KAAM42G,EAAWn/E,EAAM52B,GAC9Db,KAAKm4J,wBAAwBn4J,KAAKgoG,gBAC9BhoG,KAAKo1J,cAAgBh4J,YAAkB4C,KAAKwgK,iBAAgD,YAA7BxgK,KAAKwgK,eAAer1J,OACnFnL,KAAKo1J,aAAc,EACnBp1J,KAAKggK,iBAAiBhgK,KAAKwgK,gBAC3BxgK,KAAKwgK,eAAiB,MAEtBxgK,KAAKo1J,cAAgBh4J,YAAkB4C,KAAKwgK,kBAC5CxgK,KAAK0gK,kBAAkB1gK,KAAKwgK,gBAC5BxgK,KAAKwgK,eAAiB,MAE1BxgK,KAAKy3B,KAAKmL,UAAY,EACjBxlC,YAAkBw5G,IACnBrjF,YAAWqjF,EAAW,CAAE,GAAM52G,KAAKgB,QAAQyY,GAAK,WAAY,KAAQ,UAAW,cAAe,UAE9FzZ,KAAKu7J,mBACLv7J,KAAKo3F,SAAU,EACfp3F,KAAKi7J,YAAcj7J,KAAKwa,MACxBxa,KAAKo/J,eACLp/J,KAAKu7J,kBAAmB,EACxBv7J,KAAKo3F,SAAU,EACXp3F,KAAKxD,OAASwD,KAAK8hE,sBAAsBC,KAAa,CACtD,IAAIgkG,EAAe3oK,YAAkB4C,KAAKovE,OAAO5yE,OAASwD,KAAKovE,OAAO78D,KAAOvS,KAAKovE,OAAO5yE,MAC1Ei7B,EAAK/N,MAAK,SAAUnI,GAAK,OAAOA,EAAEwkJ,KAAkBhmK,EAAMvD,UAErEwD,KAAK8hE,WAAW+4B,aAAa76F,KAAK6qJ,SAAS7qJ,KAAK2hE,OAAOO,MAAM,IAAIY,IAAUijG,EAAc,QAAS/lK,KAAKxD,SAClGoe,MAAK,SAAU/Z,GACZA,EAAElC,OAAO9B,OAAS,IAClBkD,EAAM44J,QAAQ93J,EAAElC,OAAQ84B,EAAK56B,QAC7BkD,EAAMq/J,mBAMG,iBAAzBp/J,KAAK66B,iBAAsC76B,KAAKo4J,gBAAkBp4J,KAAKy7J,YAClEz7J,KAAKi8J,mBAAmBC,YAAgBl8J,KAAKw8J,iBAC1Cx8J,KAAKq7J,eAAmBj+J,YAAkB4C,KAAKm+J,WAAan+J,KAAKgoG,iBAChEhoG,KAAK8hE,sBAAsBC,MACvB3kE,YAAkB4C,KAAK8hE,cAAgB1kE,YAAkB4C,KAAK8hE,WAAWjlE,SAC/C,IAA3BmD,KAAK8hE,WAAWjlE,WACpBmD,KAAKqpG,cAAyC,iBAAzBrpG,KAAKgB,QAAQgvB,SAA8BhwB,KAAKgoG,eACrE5nG,YAAW,WACPL,EAAMimK,+BAA+BpvD,EAAWn/E,KACjD,GAGHz3B,KAAKgmK,+BAA+BpvD,EAAWn/E,IAGvDz3B,KAAKimK,WAAWxuI,EAAMq/H,GACjB15J,YAAkB4C,KAAKm+J,WACxBn+J,KAAKqlK,kBAGTrlK,KAAKs7J,iBACLt7J,KAAK8lK,gBAIjBpL,EAAax+J,UAAU8pK,+BAAiC,SAAUpvD,EAAWn/E,GACzEz3B,KAAKi8J,mBAAqB,CAAErlD,UAAWA,EAAU30G,WAAU,GAAOw1B,KAAMA,EAAMykI,WAAW,GACrF9+J,YAAkB4C,KAAKm8J,WAAWvlD,YAAcx5G,YAAkB4C,KAAKm8J,WAAW1kI,QAClFz3B,KAAKm8J,WAAan8J,KAAKi8J,qBAG/BvB,EAAax+J,UAAU+pK,WAAa,SAAU3T,EAAU4T,GACpD,IAAInmK,EAAQC,KACZ,IAAK5C,YAAkB4C,KAAKm+J,YAAc/gK,YAAkB8oK,GAAa,CACrE,IAAIC,EAAUnmK,KAAKg+J,cAAcxhK,MACnB81J,EAAS5oI,MAAK,SAAU7O,GAClC,OAA0B,kBAATA,GAAqC,kBAATA,IAAsBA,IAASsrJ,GACvE9pK,YAAS0D,EAAMqvE,OAAO5yE,MAAOqe,KAAUsrJ,MAG5CnmK,KAAK24J,QAAQ34J,KAAKm+J,YAI9BzD,EAAax+J,UAAU88J,yBAA2B,SAAUhoD,EAAIx1D,EAAMhhC,GAClE,IAAIza,EAAQC,KACiB,iBAAzBA,KAAK66B,iBAAsC76B,KAAKi8J,mBAAmBrlD,YAC/D52G,KAAKqpG,cAAyC,iBAAzBrpG,KAAKgB,QAAQgvB,SAA8BhwB,KAAKgoG,eACrE5nG,YAAW,WACPL,EAAMqmK,yBAAyBp1D,EAAIx1D,EAAMhhC,KAC1C,GAGHxa,KAAKomK,yBAAyBp1D,EAAIx1D,EAAMhhC,KAIpDkgJ,EAAax+J,UAAUkqK,yBAA2B,SAAUp1D,EAAIx1D,EAAMhhC,GACrD,MAATA,EACAxa,KAAKi8J,mBAAmBrlD,UAAU//E,aAAam6E,EAAG/uG,WAAU,GAAOjC,KAAKi8J,mBAAmBrlD,UAAUtoF,WAAW9T,IAGhHxa,KAAKi8J,mBAAmBrlD,UAAU50G,YAAYgvG,EAAG/uG,WAAU,IAE3DjC,KAAKo4J,eAAiBp4J,KAAKi8J,mBAAmBxkI,KAAKt5B,QAAQq9C,GAAQ,GACnEx7C,KAAKi8J,mBAAmBxkI,KAAK71B,KAAK45C,IAG1Ck/G,EAAax+J,UAAUmpK,eAAiB,WACpC,IAAI7oK,EAAQwD,KAAKg+J,cAAcxhK,MAC/BwD,KAAKi7J,YAAcj7J,KAAK+3J,gBAAgBv7J,GACxC,IAAIwE,EAAUhB,KAAKk2J,gBAAgBl2J,KAAKy3B,KAAM,KAAM,aAAcj7B,GAClEwD,KAAKk+J,WAAal9J,EAClBhB,KAAKyjK,WAAWziK,GAChBhB,KAAKk9I,eAETwd,EAAax+J,UAAUm8J,gBAAkB,WACrC,IAAIvB,EAAe92J,KAAKy3B,KAAKn0B,cAAc,IAAMiuJ,GAC7CuF,GACA92J,KAAKk5B,cAAc,CAAE,MAASl5B,KAAK+3J,gBAAgBjB,EAAa3nI,aAAa,iBAC7EnvB,KAAKi7J,YAAcj7J,KAAKwa,QAGxBxa,KAAKk9I,cACLl9I,KAAKy3B,KAAKn0B,cAAc,IAAMiuJ,GAAwBv7H,UAAUjN,IAAI0wI,EAAoBn3J,SAGhGo4J,EAAax+J,UAAUghJ,YAAc,WACjC,IAAImpB,EAAkBrmK,KAAKy3B,KAAKj2B,iBAAiB,IAAMi4J,EAAoBn3J,OACvE+jK,GAAmBA,EAAgBxpK,QACnCu5B,aAAYiwI,EAAiB5M,EAAoBn3J,QAGzDo4J,EAAax+J,UAAU4pK,YAAc,WACjC,IAAI/lK,EAAQC,KACZ,GAAIA,KAAKm9J,UAAY38J,SAASgiC,KAAKjQ,SAASvyB,KAAKm9J,SAASn8J,SACtDhB,KAAKsmK,mBADT,CAKAtmK,KAAK+pB,QAAQ,aADF,CAAEhH,QAAQ,IACY,SAAU9iB,GACvC,GAAKA,EAAK8iB,OAmHNhjB,EAAMu7J,iBAAkB,MAnHV,CACd,IAAIiL,EAAYxmK,EAAMymK,eAAkBzmK,EAAMymK,eAAiBzmK,EAAMoB,cAAc,MAAO,CACtFsY,GAAI1Z,EAAMiB,QAAQyY,GAAK,SAAU4U,UAAW,kBAAsC,MAAlBtuB,EAAMm2F,SAAmBn2F,EAAMm2F,SAAW,MAE1G2uD,EAAY9kJ,EAAMulK,aAAaiB,GAenC,GAdAxmK,EAAM0mK,WAAa9jK,YAAW5C,EAAM2mK,aAChC3mK,EAAMopG,iBAAmBppG,EAAM+6J,gBAC/B/6J,EAAM4mK,kBAAkBJ,GAE5BtyI,YAAO,CAACl0B,EAAM03B,MAAO8uI,GACjBxmK,EAAM4wG,iBAAmB5wG,EAAM+6J,gBAC/B/6J,EAAM6mK,kBAAkBL,GAExBxmK,EAAM8K,kBAAoB07J,GAAYA,EAASjjK,cAAc,kBAC7DijK,EAASvkK,YAAYukK,EAASjjK,cAAc,kBAEhD9C,SAASgiC,KAAKxgC,YAAYukK,GAC1BxmK,EAAM8mK,kBAAkBN,GACxBA,EAASvyI,MAAMwC,WAAa,SACF,SAAtBz2B,EAAM2mK,YAAwB,CAM9B,GALA3mK,EAAM+mK,gBAAkB,EACnB1pK,YAAkBynJ,EAAU/vD,aAC7B/0F,EAAM+mK,gBAAmBjiB,EAAU/vD,UAAUlhD,cAAevR,wBAAwBsN,OACpF5vC,EAAM0mK,YAActwJ,SAASpW,EAAM0mK,WAAY,IAAO1mK,EAAM+mK,iBAAkB35J,WAAa,MAE3FpN,EAAMopG,gBAAmBppG,EAAM8K,kBAAoB07J,GAAYA,EAASjjK,cAAc,iBAAmB,CACzGvD,EAAMglB,OAAShlB,EAAMglB,OAAShlB,EAAMglB,OAASwhJ,EAASjjK,cAAc,iBACpE,IAAIqsC,EAASpoC,KAAKooI,MAAM5vI,EAAMglB,OAAOsd,wBAAwBsN,QAC7D5vC,EAAM0mK,YAActwJ,SAASpW,EAAM0mK,WAAY,KAAO92H,EAAS5vC,EAAM+mK,kBAAkB35J,WAAa,KAExG,GAAIpN,EAAM4wG,gBAAmB5wG,EAAM8K,kBAAoB07J,GAAYA,EAASjjK,cAAc,iBAAmB,CACzGvD,EAAMy9E,OAASz9E,EAAMy9E,OAASz9E,EAAMy9E,OAAS+oF,EAASjjK,cAAc,iBAChEqsC,EAASpoC,KAAKooI,MAAM5vI,EAAMy9E,OAAOn7C,wBAAwBsN,QAC7D5vC,EAAM0mK,YAActwJ,SAASpW,EAAM0mK,WAAY,KAAO92H,EAAS5vC,EAAM+mK,kBAAkB35J,WAAa,KAExGpN,EAAM03B,KAAKzD,MAAMm0H,WAAahyI,SAASpW,EAAM0mK,WAAY,IAAM,GAAGt5J,WAAa,KAC/Eo5J,EAASvyI,MAAMm0H,UAAYxlJ,YAAW5C,EAAM2mK,kBAG5CH,EAASvyI,MAAM2b,OAAS,OAE5B,IAAIo3H,EAAc,EACdjkI,OAAO,EAOX,IANK1lC,YAAkB2C,EAAMm+J,cAAiB9gK,YAAkB2C,EAAMk7J,cAAgBl7J,EAAMk7J,aAAe,EACvGl7J,EAAMqhK,oBAGNrhK,EAAM03B,KAAKmL,UAAY,EAEvBvc,IAAQa,WAAcnnB,EAAMioG,iBAA6C,iBAA1BjoG,EAAM86B,iBACpD96B,EAAMu8J,iBAA6C,aAA1Bv8J,EAAM86B,iBAAmC,CACnEksI,EAAchnK,EAAMinK,eAAeT,GACnC,IAAIU,EAAYlnK,EAAMmnK,cAAgBnnK,EAAM03B,KAAO13B,EAAMm3G,cAAc,GACvEp0E,IAAS3sB,SAASmtB,iBAAiB2jI,GAAWE,WAAY,IACtDhxJ,SAASmtB,iBAAiBvjC,EAAMs0F,cAAc+yE,YAAa,IAC3DjxJ,SAASmtB,iBAAiBvjC,EAAMs0F,aAAazgD,eAAeyzH,gBAAiB,KAErFtnK,EAAMunK,kBACNvnK,EAAMwnK,YAAYhB,EAAUQ,EAAajkI,GACzC/iC,EAAMk7H,eAAesrC,GACjBlgJ,IAAQa,WACRnnB,EAAMo9J,SAASn8J,QAAQg1B,UAAUjN,IAAI0wI,EAAoBM,SAC3B,iBAA1Bh6J,EAAM86B,iBAAiE,aAA1B96B,EAAM86B,kBAC/C96B,EAAMioG,gBAAkBjoG,EAAMu8J,mBAClCv8J,EAAMo9J,SAAS5gC,UAAY,CAAEjgD,EAAG,MAAOC,EAAG,QAE1Cx8E,EAAMu/J,mBACNv/J,EAAMo9J,SAASn8J,QAAQg1B,UAAUjN,IAAI0wI,EAAoBW,cACzDr6J,EAAMo9J,SAASpvH,SAAW,CAAEuuC,EAAG,EAAGC,EAAG,GACrCx8E,EAAMo9J,SAAS7jI,WACf/F,YAAWxzB,EAAMo9J,SAASn8J,QAAS,CAAEgzB,MAAO,2CAC5C6B,YAAS,CAACr1B,SAASgiC,KAAMziC,EAAMo9J,SAASn8J,SAAUy4J,EAAoBc,iBACtEx6J,EAAMynK,uBACNznK,EAAM0nK,gBAAkB5iB,EAAU/vD,UAAUxxF,cAAc,gBAC1DvD,EAAM0lK,iBAAmB5gB,EAAU/vD,UAAUxxF,cAAc,IAAMm2J,EAAoBY,WACrFzxI,IAAaG,IAAIhpB,EAAM0nK,gBAAiB,QAAS1nK,EAAM2nK,gBAAiB3nK,GACxE6oB,IAAaG,IAAIhpB,EAAM0lK,iBAAkB,QAAS1lK,EAAM2lK,UAAW3lK,KAG3EwmK,EAASvyI,MAAMwC,WAAa,UAC5BX,YAAS,CAAC0wI,GAAW,iBAErB,IADA,IACSvoK,EAAK,EAAG2pK,EADU5nK,EAAMo9J,SAASrxH,oBAAoB/rC,EAAM29J,aAAa5oE,WACjB92F,EAAK2pK,EAAuB9qK,OAAQmB,IAAM,CACtG,IAAIgD,EAAU2mK,EAAuB3pK,GACrC4qB,IAAaG,IAAI/nB,EAAS,SAAUjB,EAAM2iI,cAAe3iI,GAEzDsmB,IAAQa,UAAYnnB,EAAMu/J,kBAC1B12I,IAAaG,IAAIhpB,EAAM03B,KAAM,SAAU13B,EAAM6nK,WAAY7nK,GAExD3C,YAAkB2C,EAAM03B,QACzB13B,EAAMu9J,mBACNv9J,EAAMw9J,kBAEVhqI,YAAWxzB,EAAM4+J,gBAAiB,CAAE,gBAAiB,SACrD,IAAIkJ,EAAc9nK,EAAMq4J,cAAgBr4J,EAAMm6J,YAAYtmH,cAAgB7zC,EAAM29J,aAAa5oE,UAC7Fj/D,YAAS,CAACgyI,GAAc,CAACpO,EAAoBI,aAE7C95J,EAAMu7J,iBAAkB,EACxB,IACIx4I,EAAY,CAAE06C,MADGl+D,eAAcS,EAAM8K,iBAAoB,KAAO9K,EAAMo9J,SAClCp6I,QAAQ,EAAOqd,UAHvC,CAAEhmB,KAAM,SAAU0mB,SAAU,MAI5C/gC,EAAMgqB,QAAQ,OAAQjH,GAAW,SAAUA,GAClCA,EAAUC,QAQXhjB,EAAMu7J,iBAAkB,EACxBv7J,EAAM+nK,iBARN/nK,EAAMgoK,8BACNhoK,EAAMioK,wBACNnyI,YAAS,CAAC91B,EAAM29J,aAAa5oE,WAAY,CAAC2kE,EAAoBK,gBAC9D/5J,EAAM6oC,uBACN7oC,EAAMo9J,SAAS3/B,KAAK,IAAIt+F,IAAUpc,EAAUsd,WAA8B,MAAjBrgC,EAAM26H,OAAmB36H,EAAMiB,QAAU,gBAatH05J,EAAax+J,UAAU++H,eAAiB,SAAUsrC,KACzClgJ,IAAQa,UAAab,IAAQa,UAAuC,iBAAzBlnB,KAAK66B,kBAAsC76B,KAAKs8J,mBAC5En/B,YAAUopC,GACZ1pK,OAAS,IACnB0pK,EAASvyI,MAAMuZ,WAAap3B,SAASmtB,iBAAiBijI,GAAUh5H,UAAW,IAAM,MAErFvtC,KAAKm9J,SAASniC,qBAGtB0/B,EAAax+J,UAAU6rK,4BAA8B,YAC7C/nK,KAAK86J,iBAAkC,OAAf96J,KAAKxD,OAAiC,OAAfwD,KAAKwa,OAAgC,OAAdxa,KAAKuS,OACjD,iBAAzBvS,KAAK66B,kBAAuC76B,KAAKy7J,WACrB,iBAAzBz7J,KAAK66B,kBACL76B,KAAK89J,kBACL99J,KAAKk9I,cACLl9I,KAAK69J,cACL79J,KAAKo/J,gBAEoB,aAAzBp/J,KAAK66B,iBAAkC76B,KAAK42G,WAC5C52G,KAAKk2J,gBAAgBl2J,KAAK42G,UAAW,KAAM,aAAc52G,KAAKxD,SAAWwD,KAAKy7J,SAC9Ez7J,KAAKo/J,eAELp/J,KAAK86J,gBAA2C,iBAAzB96J,KAAK66B,kBACb,KAAd76B,KAAKuS,MAA6B,OAAdvS,KAAKuS,OAAkBvS,KAAK42G,YAC5C52G,KAAK42G,UAAUtzG,cAAc,MAAM0yB,UAAUzD,SAASg/H,IACvD17H,YAAS,CAAC71B,KAAK42G,UAAUtzG,cAAc,OAAQiuJ,MAK/DmJ,EAAax+J,UAAU8rK,sBAAwB,WACvChoK,KAAK86J,gBAAkB96J,KAAKy3B,MACvBz3B,KAAKovE,OAAOqjC,UAAazyG,KAAK04J,kBAC/B9vI,IAAaa,OAAOzpB,KAAKy3B,KAAM,SAAUz3B,KAAKo3J,mBAC9CxuI,IAAaG,IAAI/oB,KAAKy3B,KAAM,SAAUz3B,KAAKo3J,kBAAmBp3J,QAI1E06J,EAAax+J,UAAU2qK,kBAAoB,SAAUN,GAC7CvmK,KAAK86J,iBACDyL,GAAYA,EAASjjK,cAAc,OACnC8yB,aAAY,CAACmwI,EAASjjK,cAAc,eAAgB,CAAC,aAEzDtD,KAAKo3F,SAAU,EACfmvE,EAASlmI,gBAAgB,WAGjCq6H,EAAax+J,UAAU8qK,eAAiB,SAAUT,GAC9C,IAAI0B,EAAc3kI,iBAAiBijI,GAC/B2B,EAAY/xJ,SAAS8xJ,EAAYE,eAAgB,IACjDC,EAAejyJ,SAAS8xJ,EAAYI,kBAAmB,IAC3D,OAAOroK,KAAKsoK,iBAAiBJ,EAAYE,IAE7C1N,EAAax+J,UAAUqrK,YAAc,SAAUvmK,EAAS+lK,EAAajkI,GACjE,IAAI/iC,EAAQC,KACZA,KAAKm9J,SAAW,IAAI1iC,IAAMz5H,EAAS,CAC/B0uC,MAAO1vC,KAAK04F,WAAYokC,WAAY,WACpCxB,SAAUt7H,KAAK09J,aAAa5oE,UAAWynC,UAAW,CAAEjgD,EAAG,OAAQC,EAAG,QAAU75C,QAASqkI,EACrFpgI,UAAW3mC,KAAK2mC,UAAWrE,QAASQ,EAAMiL,SAAU,CAAEuuC,EAAG,OAAQC,EAAG,UACpEm+C,OAAQ16H,KAAK06H,OACbr4H,MAAO,WACEtC,EAAMo7J,iBACPp7J,EAAMoiK,gBAGNpiK,EAAMwiG,SACNxiG,EAAM8oC,cAAc,CAAC,iBAAkB,mBAE3C,IAAI0/H,EAAyC,iBAA1BxoK,EAAM86B,gBACzB96B,EAAMyzJ,iCAAiC+U,EAAaA,GAAa,GAAM,GAAM,GAAO,GAAM,GAC1FxoK,EAAMy7J,iBAAkB,EACxBz7J,EAAMo7J,iBAAkB,EACxBp7J,EAAM+nK,eACF/nK,EAAMq4J,eAAiBr4J,EAAMk8J,mBAAmBxkI,MAAQ13B,EAAMk8J,mBAAmBxkI,KAAK,KACtF13B,EAAMkzF,UAAW,EACjBlzF,EAAM01J,iBAAiB11J,EAAMk8J,mBAAmBrlD,UAAW72G,EAAMk8J,mBAAmBxkI,KAAM,MAAM,KAGxG11B,KAAM,WACF6mB,IAAaG,IAAIvoB,SAAU,YAAaT,EAAM8iK,gBAAiB9iK,GAC/DA,EAAMm7J,aAAc,EACpB,IAAIsN,EAAazoK,EAAMk8J,oBAAsBl8J,EAAMk8J,mBAAmBrlD,WAClE72G,EAAMk8J,mBAAmBrlD,UAAUtzG,cAAc,MACjDszG,EAAY72G,EAAM03B,KAAKn0B,cAAc,SACrCvD,EAAMq4J,eAAiBr4J,EAAMspG,cAAiBtpG,EAAMiB,QAAQgvB,UAAYjwB,EAAM++J,kBAC7E0J,GAAc5xD,GAAa4xD,EAAWnyE,cAAgBugB,EAAUvgB,aACvC,iBAA1Bt2F,EAAMiB,QAAQgvB,SACdjwB,EAAMq+J,gBAENr+J,EAAMu/J,mBACNlpI,aAAY,CAACr2B,EAAM29J,aAAa5oE,WAAY,CAAC2kE,EAAoBI,aACjE95J,EAAMs7J,eAAgB,EACtBt7J,EAAMm6J,YAAY53J,QACdvC,EAAM29J,aAAarmE,aACnBxhE,YAAS,CAAC91B,EAAM29J,aAAarmE,aAAcoiE,EAAoBa,gBAGvEv6J,EAAM+iK,qBAEV2F,mBAAoB,WACXpiJ,IAAQa,UACTnnB,EAAM6+J,gBAKtBlE,EAAax+J,UAAUgrK,YAAc,WACjC,OAAQ9pK,YAAkB4C,KAAKk3G,gBAAgD,IAA9Bl3G,KAAKk3G,cAAcr6G,QAExE69J,EAAax+J,UAAUorK,gBAAkB,aAGzC5M,EAAax+J,UAAUojK,eAAiB,WACpC,MAAgC,iBAAzBt/J,KAAK66B,iBAAsC76B,KAAKgoG,gBAE3D0yD,EAAax+J,UAAUwmI,cAAgB,WAC/Br8G,IAAQa,WAAuC,iBAAzBlnB,KAAK66B,kBAC1B76B,KAAKs/J,kBAA+C,aAAzBt/J,KAAK66B,kBAAmC76B,KAAKgoG,gBAAkBhoG,KAAKs8J,kBAChGt8J,KAAK4+J,aAGblE,EAAax+J,UAAUsrK,qBAAuB,WAC1C,IAAIV,EAAkB9mK,KAAKk6J,YAAYtmH,cAAcvR,wBAAwBsN,OAC7E3vC,KAAKm9J,SAASn8J,QAAQgzB,MAAMm0H,UAAY,OACxCnoJ,KAAKm9J,SAASn8J,QAAQgzB,MAAM0b,MAAQ,OACpC1vC,KAAKy3B,KAAKzD,MAAMm0H,UAAarmJ,OAAOiuC,YAAc+2H,EAAmB,KACrE9mK,KAAKy3B,KAAKzD,MAAM2b,OAAU7tC,OAAOiuC,YAAc+2H,EAAmB,KAClE,IAAI4B,EAAe1oK,KAAKk6J,YAAYtmH,cAActwC,cAAc,IAAMm2J,EAAoBY,WAC1FxpI,YAAO7wB,KAAKk6J,aACZwO,EAAa90H,cAAc/c,aAAa72B,KAAKk6J,YAAawO,IAE9DhO,EAAax+J,UAAUosK,iBAAmB,SAAUK,GAChD,IAAI5B,EACA6B,EAAcD,EACdzK,EAAal+J,KAAKy3B,KAAKn0B,cAAc,IAAMm2J,EAAoBn3J,QAAUtC,KAAKk+J,WAC9E+I,EAAYjnK,KAAKknK,cAAgBlnK,KAAKy3B,KAAOz3B,KAAKk3G,cAAc,GAChE2xD,EAAW7oK,KAAKknK,cAAgBlnK,KAAKy3B,KAAOz3B,KAAKk3G,cAAcl3G,KAAKg4J,WAAWn7J,OAAS,GACxF06J,EAAW0P,EAAU5kI,wBAAwBsN,OAC7C82H,EAAazmK,KAAKy3B,KAAKmY,aAAe,EACtCD,EAASvyC,YAAkB8gK,GAAc+I,EAAUz3H,UAAY0uH,EAAW1uH,UAE9E,GAD0Bq5H,EAASr5H,UACTi3H,EAAa92H,IAAWvyC,YAAkB4C,KAAKk3G,gBACrEl3G,KAAKk3G,cAAcr6G,OAAS,IAAMO,YAAkB8gK,GAAa,CACjE,IAAIpjG,EAAQ96D,KAAKy3B,KAAKmY,aAAe2nH,EACjCuR,EAAgB3yJ,SAASmtB,iBAAiBtjC,KAAKy3B,MAAMqxI,cAAe,IACxE/B,GAAejsG,GAAS96D,KAAKk3G,cAAcr6G,OAASmD,KAAKi7J,cAAgB1D,EAAWqR,EAAcE,EAClG9oK,KAAKy3B,KAAKmL,UAAYs7H,EAAW1uH,eAE5BG,EAAS82H,GACdM,EAAcN,EAAalP,EAAW,EACtCv3J,KAAKy3B,KAAKmL,UAAY+M,EAAS82H,EAAalP,EAAW,GAGvDwP,EAAcp3H,EAIlB,QADAo3H,EAAcA,EAAcxP,EAAWqR,GAAgBrR,EADrCv3J,KAAK09J,aAAa5oE,UAAUllD,cACmC,IAGrF8qH,EAAax+J,UAAUw8F,SAAW,WAC9B,IAAIhpD,EAAQ/sC,YAAW3C,KAAK+oK,YACxBr5H,EAAMvxC,QAAQ,MAAQ,IAEtBuxC,GADiB1vC,KAAK09J,aAAa5oE,UAAUr+D,YAAc1d,WAAW22B,GAAS,KAC5DviC,WAAa,MAEpC,GAAIkZ,IAAQa,WAAclnB,KAAKgoG,iBAA4C,iBAAzBhoG,KAAK66B,iBAClD76B,KAAKs8J,iBAA4C,aAAzBt8J,KAAK66B,iBAAmC,CACjE,IAAIosI,EAAYjnK,KAAKknK,cAAgBlnK,KAAKy3B,KAAOz3B,KAAKk3G,cAAc,GACpExnE,EAASv5B,SAASu5B,EAAO,IAE8D,GAFvDv5B,SAASmtB,iBAAiB2jI,GAAWE,WAAY,IAC7EhxJ,SAASmtB,iBAAiBtjC,KAAKq0F,cAAc+yE,YAAa,IAC1DjxJ,SAASmtB,iBAAiBtjC,KAAKq0F,aAAazgD,eAAeyzH,gBAAiB,KAAY,KAEhG,OAAO33H,GAEXgrH,EAAax+J,UAAU8sK,aAAe,SAAU9d,GAC5C,IAAK9tJ,YAAkB4C,KAAKk+J,YAAa,CACrC,IAAI+K,EAAgBjpK,KAAKy3B,KAAKmY,aAC1Bs5H,EAAalpK,KAAKk+J,WAAW1uH,UAAYxvC,KAAKk+J,WAAWtuH,aAAe5vC,KAAKy3B,KAAKmL,UAClFumI,EAAanpK,KAAKy3B,KAAKmL,UAAYsmI,EAAaD,EACpDE,EAAaje,EAAYie,EAAoE,EAAvDhzJ,SAASmtB,iBAAiBtjC,KAAKy3B,MAAM2xI,WAAY,IAAUD,EACjG,IAAIE,EAAWrpK,KAAKk+J,WAAW1uH,UAAYxvC,KAAKk+J,WAAWtuH,aAAe5vC,KAAKy3B,KAAKmL,UACpFymI,EAAWrpK,KAAKovE,OAAOqjC,UAAYr1G,YAAkB4C,KAAK02J,oBACtD2S,EAAWrpK,KAAK02J,mBAAmB9mH,aAAey5H,EAC7B,IAArBrpK,KAAKi7J,YACLj7J,KAAKy3B,KAAKmL,UAAY,GAEjBsmI,EAAaD,KAAmBI,EAAW,GAAKrpK,KAAKy3B,KAAKmY,aAAey5H,MAC9ErpK,KAAKy3B,KAAKmL,UAAYumI,KAIlCzO,EAAax+J,UAAU0mC,UAAY,WAC/B,IAAKxlC,YAAkB4C,KAAKk+J,YAAa,CACrC,IAAIiL,EAAanpK,KAAKk+J,WAAW1uH,UAAYxvC,KAAKy3B,KAAKmL,UACvDumI,EAAanpK,KAAKovE,OAAOqjC,UAAYr1G,YAAkB4C,KAAK02J,oBACxDyS,EAAanpK,KAAK02J,mBAAmB9mH,aAAeu5H,EACxD,IAAIE,EAAYrpK,KAAKk+J,WAAW1uH,UAAYxvC,KAAKk+J,WAAWtuH,aAAe5vC,KAAKy3B,KAAKmL,UAC5D,IAArB5iC,KAAKi7J,YACLj7J,KAAKy3B,KAAKmL,UAAY,EAEjBumI,EAAa,EAClBnpK,KAAKy3B,KAAKmL,UAAY5iC,KAAKy3B,KAAKmL,UAAYumI,EAErCE,EAAW,GAAKrpK,KAAKy3B,KAAKmY,aAAey5H,IAChDrpK,KAAKy3B,KAAKmL,UAAY5iC,KAAKk+J,WAAW1uH,WAAaxvC,KAAKovE,OAAOqjC,UAAYr1G,YAAkB4C,KAAK02J,oBAC9F12J,KAAK02J,mBAAmB9mH,aAAe,MAIvD8qH,EAAax+J,UAAUylK,cAAgB,WACnC,OAAO,GAEXjH,EAAax+J,UAAUk8J,YAAc,WACjC,OAAOp4J,KAAKgoG,gBAEhB0yD,EAAax+J,UAAUotK,cAAgB,WACnC,OAAO,GAEX5O,EAAax+J,UAAUklK,kBAAoB,SAAUvgK,GACjD,GAAKzD,YAAkByD,GAanBb,KAAKgpK,cAAa,QAZlB,OAAQnoK,EAAEilC,QACN,IAAK,WACL,IAAK,OACL,IAAK,MACD9lC,KAAKgpK,eACL,MACJ,QACIhpK,KAAK4iC,cAQrB83H,EAAax+J,UAAUwpK,UAAY,WAC/B1lK,KAAKk6J,YAAY19J,MAAQwD,KAAK67J,YAAc,GAC5C77J,KAAKykK,YAAY,OAErB/J,EAAax+J,UAAU0rK,WAAa,WAChC5nK,KAAKk6J,YAAYqP,QAErB7O,EAAax+J,UAAUstK,YAAc,SAAU95H,GACtCtyC,YAAkBsyC,KACE,kBAAVA,EACP1vC,KAAK09J,aAAa5oE,UAAU9gE,MAAM0b,MAAQ/sC,YAAW+sC,GAE/B,kBAAVA,IACZ1vC,KAAK09J,aAAa5oE,UAAU9gE,MAAM0b,MAASA,EAAM9sC,MAAM,WAAe8sC,EAAU/sC,YAAW+sC,MAIvGgrH,EAAax+J,UAAU2kK,WAAa,SAAUhhK,GAC1C,IAAIE,EAAQC,KAEZ,GADAA,KAAKy7J,SAAU,EACTz7J,KAAKm9J,UAAY38J,SAASgiC,KAAKjQ,SAASvyB,KAAKm9J,SAASn8J,UAAYhB,KAAKs7J,gBAA7E,CAGA1yI,IAAaa,OAAOjpB,SAAU,YAAaR,KAAK6iK,iBAChD7iK,KAAKizF,UAAW,EAChBjzF,KAAKshK,eAAiB,KACtBthK,KAAKs8J,iBAAkB,EACvBt8J,KAAK27J,iBAAkB,EAEvB,IADA,IACS39J,EAAK,EAAGyrK,EADczpK,KAAKm9J,SAASrxH,oBAAoB9rC,KAAK09J,aAAa5oE,WACX92F,EAAKyrK,EAA2B5sK,OAAQmB,IAAM,CAClH,IAAIgD,EAAUyoK,EAA2BzrK,GACzC4qB,IAAaa,OAAOzoB,EAAS,SAAUhB,KAAK0iI,eAE5Cr8G,IAAQa,UAAYlnB,KAAKs/J,mBACzBlpI,aAAY,CAAC51B,SAASgiC,KAAMxiC,KAAKm9J,SAASn8J,SAAUy4J,EAAoBc,iBACxE3xI,IAAaa,OAAOzpB,KAAKy3B,KAAM,SAAUz3B,KAAK4nK,aAE9C5nK,KAAKs/J,mBACAj5I,IAAQa,WACTlnB,KAAK2lK,gBAAgBxqJ,UACjBnb,KAAKylK,kBACL78I,IAAaa,OAAOzpB,KAAKylK,iBAAkB,QAASzlK,KAAK0lK,YAG7D1lK,KAAKynK,kBACL7+I,IAAaa,OAAOzpB,KAAKynK,gBAAiB,QAASznK,KAAK0nK,iBACxD9+I,IAAaa,OAAOzpB,KAAKylK,iBAAkB,QAASzlK,KAAK0lK,YAE7D98I,IAAaa,OAAOzpB,KAAKk6J,YAAa,QAASl6J,KAAK4lK,SACpDh9I,IAAaa,OAAOzpB,KAAKk6J,YAAa,QAASl6J,KAAKwkK,YACpD57I,IAAaa,OAAOzpB,KAAKk6J,YAAa,UAAWl6J,KAAK0kK,cACtD97I,IAAaa,OAAOzpB,KAAKk6J,YAAa,OAAQl6J,KAAKg9I,QACnDp0H,IAAaa,OAAOzpB,KAAKk6J,YAAa,QAASl6J,KAAK6lK,cACpD7lK,KAAKk6J,YAAc,MAEvB3mI,YAAWvzB,KAAK2+J,gBAAiB,CAAE,gBAAiB,QAAS,wBAAyB,OACtF3+J,KAAK09J,aAAa5oE,UAAU9+D,UAAUvM,OAAOgwI,EAAoBK,eAC7D95J,KAAKo4J,gBACLp4J,KAAKi8J,mBAAmBC,WAAY,GAExCl8J,KAAKs7J,iBAAkB,EACvB,IAAIoO,EAAY,CACZtvJ,KAAM,UACN0mB,SAAU,IACVjhC,MAAOA,GAAgB,GAGvBijB,EAAY,CAAE06C,MADGl+D,eAAcU,KAAK6K,iBAAoB,KAAO7K,KAAKm9J,SAChCp6I,QAAQ,EAAOqd,UAAWspI,GAClE1pK,KAAK+pB,QAAQ,QAASjH,GAAW,SAAUA,GACvC,IAAK1lB,YAAkB2C,EAAMo9J,YACxB//J,YAAkB2C,EAAMo9J,SAASn8J,QAAQsC,cAAc,kBAAmB,CAC3E,IAAIqmK,EAAc5pK,EAAMo9J,SAASn8J,QAAQsC,cAAc,iBACvDqmK,EAAYlpK,WAAWy2B,YAAYyyI,GACnC5pK,EAAM22J,mBAAqB,KAE1B5zI,EAAUC,SACmB,iBAA1BhjB,EAAM86B,iBAAuC96B,EAAM+6J,gBACnD/6J,EAAM04J,YAEN14J,EAAMm7J,YACNn7J,EAAMo9J,SAAS5hC,KAAK,IAAIr8F,IAAUpc,EAAUsd,YAG5CrgC,EAAM+nK,qBAKtBpN,EAAax+J,UAAU4rK,aAAe,WAClC,IAAI8B,EAAiBxyI,aAAO,IAAMp3B,KAAKgB,QAAQyY,GAAK,gBAAiBjZ,UACjER,KAAK86J,gBAAkB96J,KAAKwmK,gBAAkBoD,IAC9CA,EAAe5nK,YAAYhC,KAAKwmK,gBAEhCxmK,KAAKo9J,eAAeC,kBAAkB,uBAE1Cr9J,KAAKk7J,aAAc,EACnBl7J,KAAKq7J,eAAgB,EACrBr7J,KAAKm9J,SAAShiJ,UACd0V,YAAO7wB,KAAKm9J,SAASn8J,UAEzB05J,EAAax+J,UAAUwrK,gBAAkB,WACrC1nK,KAAK4+J,YACL5+J,KAAKmiI,WAQTu4B,EAAax+J,UAAUwzB,OAAS,WAC5B,GAAI1vB,KAAK86J,eACL96J,KAAKq0F,aAAer0F,KAAKgB,QACzBhB,KAAK09J,aAAe,CAAE5oE,UAAW90F,KAAKgB,QAAQ4yC,eAC9C5zC,KAAKy6J,cAAgBz6J,KAAK09J,aAAa5oE,UAAUxxF,cAAc,UAC/DtD,KAAK09J,aAAa/lE,QAAU,CAAC33F,KAAK09J,aAAa5oE,UAAUxxF,cAAc,mCACnEtD,KAAKu4F,kBACLv4F,KAAK09J,aAAarmE,YAAcr3F,KAAK09J,aAAa5oE,UAAUxxF,cAAc,iBAC1EwwF,IAAM4B,mBAAmB11F,KAAKgB,QAAShB,KAAK09J,aAAarmE,YAAar3F,KAAK09J,aAAa5oE,YAEhE,SAAxB90F,KAAKm0F,gBACLL,IAAMW,mBAAmBz0F,KAAKgB,SAElC8yF,IAAMG,iBAAiB,CACnBjzF,QAAShB,KAAKgB,QACd22F,QAAS,KAAM3C,UAAW,KAC1Bb,eAAgBn0F,KAAKm0F,eACrBtgE,WAAY7zB,KAAK6zB,aAErB7zB,KAAKi4J,YACLj4J,KAAKglJ,YACLhlJ,KAAKq9I,SAAWr9I,KAAKgB,QAAQm7C,aAAa,YAAcn8C,KAAKgB,QAAQmuB,aAAa,YAAc,IAC3FnvB,KAAKw4F,UACNx4F,KAAK2+J,gBAAgBthB,UAAY,GAEjCr9I,KAAKgB,QAAQm7C,aAAa,cAC1Bn8C,KAAKmiI,UAETniI,KAAKo3F,SAAU,MAEd,CAC4B,UAAzBp3F,KAAKgB,QAAQgvB,SACbhwB,KAAKq0F,aAAer0F,KAAKgB,QACrB5D,YAAkB4C,KAAKq0F,aAAallE,aAAa,UACjDnvB,KAAKq0F,aAAaz+D,aAAa,OAAQ,WAEvCx4B,YAAkB4C,KAAKq0F,aAAallE,aAAa,UACjDnvB,KAAKq0F,aAAaz+D,aAAa,OAAQ,UAI3C51B,KAAKq0F,aAAer0F,KAAKmB,cAAc,QAAS,CAAE4xB,MAAO,CAAE+uE,KAAM,UAAW32F,KAAM,UAC9EnL,KAAKgB,QAAQgvB,UAAYhwB,KAAK8+J,mBAC9B9+J,KAAKgB,QAAQgzB,MAAMygB,QAAU,QAEjCz0C,KAAKgB,QAAQ4yC,cAAc/c,aAAa72B,KAAKq0F,aAAcr0F,KAAKgB,SAChEhB,KAAK6+J,gBAAgB7+J,KAAKq0F,eAE9B,IAAIw1E,EAAwB7pK,KAAKk2F,SAC5B94F,YAAkB4C,KAAKk2F,WAA+B,KAAlBl2F,KAAKk2F,WAC1C2zE,EAAyB7pK,KAAKk2F,SAASx5F,QAAQ,OAAQ,KAAM2vB,QAEjErsB,KAAK09J,aAAe5pE,IAAMwE,YAAY,CAClCt3F,QAAShB,KAAKq0F,aACdsD,QAAS33F,KAAKspK,gBAAkB,CAAC7P,EAAoBvoD,MAAQ,KAC7D/c,eAAgBn0F,KAAKm0F,eACrBtgE,WAAY,CACR2iE,SAAmC,iBAAzBx2F,KAAK66B,iBAA4C76B,KAAKw2F,SAChErB,YAAan1F,KAAKm1F,YAClBe,SAAU2zE,EACVrxE,QAASx4F,KAAKw4F,QACd7xD,UAAW3mC,KAAK2mC,UAChB4xD,gBAAiBv4F,KAAKu4F,kBAE3Bv4F,KAAKmB,eACJnB,KAAKgB,QAAQgvB,UAAYhwB,KAAK8+J,iBAC9B9+J,KAAKgB,QAAQgB,YAAYhC,KAAK09J,aAAa5oE,WAG3C90F,KAAKq0F,aAAazgD,cAAc/c,aAAa72B,KAAKgB,QAAShB,KAAKq0F,cAEpEr0F,KAAKy6J,cAAgBz6J,KAAKmB,cAAc,SAAU,CAC9C4xB,MAAO,CAAE,cAAe,OAAQ,SAAY,KAAM,MAAS0mI,EAAoBgB,iBAEnFrmI,aAAQ,CAACp0B,KAAKy6J,eAAgBz6J,KAAK09J,aAAa5oE,WAChD90F,KAAKq5J,oBAAoBr5J,KAAKgB,QAAShB,KAAKy6J,eAC5Cz6J,KAAKi4J,YACLj4J,KAAK09J,aAAa5oE,UAAU9gE,MAAM0b,MAAQ/sC,YAAW3C,KAAK0vC,OAC1D1vC,KAAK09J,aAAa5oE,UAAU9+D,UAAUjN,IAAI,SAC1C/oB,KAAKglJ,YACLhlJ,KAAKq9I,SAAWr9I,KAAKgB,QAAQm7C,aAAa,YAAcn8C,KAAKgB,QAAQmuB,aAAa,YAAc,IAChGnvB,KAAKgB,QAAQq/B,gBAAgB,YAC7B,IAAI5mB,EAAKzZ,KAAKgB,QAAQmuB,aAAa,MAAQnvB,KAAKgB,QAAQmuB,aAAa,MAAQ1vB,YAAY,oBAOzF,GANAO,KAAKgB,QAAQyY,GAAKA,EAClBzZ,KAAKy6J,cAAchhJ,GAAKA,EAAK,UAC7BzZ,KAAK2+J,gBAAgB/oI,aAAa,WAAY51B,KAAKq9I,UACnD9pH,YAAWvzB,KAAK2+J,gBAAiB3+J,KAAK0+J,qBACtC1+J,KAAK80J,oBAAoB90J,KAAKqyG,gBAC9BryG,KAAKq+J,oBACc,OAAfr+J,KAAKxD,OAAuC,OAArBwD,KAAKi7J,aAAsC,OAAdj7J,KAAKuS,KACzDvS,KAAKm/J,iBAEJ,GAA6B,WAAzBn/J,KAAKgB,QAAQgvB,SAAwBhwB,KAAKgB,QAAQsL,QAAQ,GAAI,CACnE,IAAIw9J,EAAgB9pK,KAAKgB,QACzBhB,KAAKxD,MAAQstK,EAAcx9J,QAAQw9J,EAAc9I,eAAexkK,MAChEwD,KAAKuS,KAAOnV,YAAkB4C,KAAKxD,OAAS,KAAOstK,EAAcx9J,QAAQw9J,EAAc9I,eAAe3qE,YACtGr2F,KAAKm/J,YAETn/J,KAAK6+J,gBAAgB7+J,KAAKgB,SACrBhB,KAAKw4F,UACNx4F,KAAK2+J,gBAAgBthB,UAAY,GAErCr9I,KAAKo3F,SAAU,EACfp3F,KAAKgB,QAAQgzB,MAAM2P,QAAU,GAC7B3jC,KAAKq0F,aAAa01E,SAAW,SAAUlpK,GACnCA,EAAEmpK,4BAENhqK,KAAKq0F,aAAa41E,SAAW,SAAUppK,GACnCA,EAAEmpK,4BAEFhqK,KAAKgB,QAAQm7C,aAAa,cAC1Bn8C,KAAKmiI,UAEJ/kI,YAAkB4C,KAAKuS,OACxBvS,KAAKq0F,aAAaz+D,aAAa,QAAS51B,KAAKuS,MAGjDvS,KAAKgB,QAAQm7C,aAAa,aAC1Bn8C,KAAKgB,QAAQ40B,aAAa,WAAY,SAE1C51B,KAAK+nC,kBAET2yH,EAAax+J,UAAU0qK,kBAAoB,SAAUL,GAE7CvmK,KAAKw9E,OACLx9E,KAAKw9E,OAAOp7E,UAAY,IAGxBpC,KAAKw9E,OAASx9E,KAAKmB,cAAc,OACjC00B,YAAS,CAAC71B,KAAKw9E,QAASi8E,EAAoBj8E,SAUhD,IAAI0sF,GARclqK,KAAK6jK,iBAAiB7jK,KAAK2wG,gBAExBtlF,YAAQ+L,aAAOp3B,KAAK2wG,eAAgBnwG,UAAU4B,UAAUiqB,QAGxDhB,YAAQrrB,KAAK2wG,iBAGE,GAAI3wG,KAAM,iBAAkBA,KAAK60J,iBAAkB70J,KAAKkuB,iBAAkB,KAAMluB,KAAKw9E,QACzH,GAAI0sF,GAAkBA,EAAertK,OAAS,EAC1C,IAAK,IAAID,EAAI,EAAGA,EAAIstK,EAAertK,OAAQD,IACvCoD,KAAKw9E,OAAOx7E,YAAYkoK,EAAettK,IAG/CoD,KAAK4zJ,mCAAkC,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GACjF3/H,YAAO,CAACj0B,KAAKw9E,QAAS+oF,IAE1B7L,EAAax+J,UAAUyqK,kBAAoB,SAAUJ,GAE7CvmK,KAAK+kB,OACL/kB,KAAK+kB,OAAO3iB,UAAY,IAGxBpC,KAAK+kB,OAAS/kB,KAAKmB,cAAc,OACjC00B,YAAS,CAAC71B,KAAK+kB,QAAS00I,EAAoB10I,SAUhD,IAAIolJ,GARcnqK,KAAK6jK,iBAAiB7jK,KAAKmpG,gBAExB99E,YAAQ+L,aAAOp3B,KAAKmpG,eAAgB3oG,UAAU4B,UAAUiqB,QAGxDhB,YAAQrrB,KAAKmpG,iBAGE,GAAInpG,KAAM,iBAAkBA,KAAK40J,iBAAkB50J,KAAKkuB,iBAAkB,KAAMluB,KAAK+kB,QACzH,GAAIolJ,GAAkBA,EAAettK,OACjC,IAAK,IAAID,EAAI,EAAGA,EAAIutK,EAAettK,OAAQD,IACvCoD,KAAK+kB,OAAO/iB,YAAYmoK,EAAevtK,IAG/CoD,KAAK4zJ,mCAAkC,GAAO,GAAO,GAAO,GAAO,GAAO,GAAM,GAChF,IAAIwW,EAAa7D,EAASjjK,cAAc,iBACxCijK,EAAS1vI,aAAa72B,KAAK+kB,OAAQqlJ,IAEvC1P,EAAax+J,UAAUmuK,WAAa,SAAU93J,GAC1CvS,KAAKuS,KAAOA,GAEhBmoJ,EAAax+J,UAAUouK,YAAc,SAAU9tK,GAC3CwD,KAAKxD,MAAQA,GAEjBk+J,EAAax+J,UAAUoqK,aAAe,WAC7BlpK,YAAkB4C,KAAKm9J,YAAa38J,SAASgiC,KAAKjQ,SAASvyB,KAAKm9J,SAASn8J,YACxEhB,KAAKgoG,gBAAoB3hF,IAAQa,UAAYlnB,KAAKs/J,mBAA+C,iBAAzBt/J,KAAK66B,kBAC/EzE,aAAY,CAACp2B,KAAKm9J,SAASn8J,SAAU,iBACrChB,KAAKm9J,SAASxiC,gBAAgB36H,KAAK09J,aAAa5oE,WAChD90F,KAAKm9J,SAASniC,qBAGtB0/B,EAAax+J,UAAUquK,UAAY,SAAU/oI,IACrCA,EAAQsgC,YAAe1kE,YAAkBc,OAAOjB,KAAKukC,EAAQsgC,eAAgB9hE,KAAKqpG,eAAgBrpG,KAAKgoG,gBACrGhoG,KAAK46J,gBAAmBp5H,EAAQsgC,sBAAsBC,MACxD/hE,KAAKy3B,KAAO,KACZz3B,KAAKi8J,mBAAqB,CAAErlD,UAAW,KAAMn/E,KAAM,KAAMykI,WAAW,IAExEl8J,KAAK46J,gBAAiB,EACtB,IAAI4P,GAA2D,IAA3CtsK,OAAOjB,KAAKukC,GAASrjC,QAAQ,UAAmBf,YAAkBokC,EAAQhlC,OAC1FiuK,GAAyD,IAA1CvsK,OAAOjB,KAAKukC,GAASrjC,QAAQ,SAAkBf,YAAkBokC,EAAQjvB,MAC/D,iBAAzBvS,KAAK66B,iBAAsC76B,KAAKgoG,iBAAmBwiE,GAAiBC,KACpFzqK,KAAKm+J,SAAW,MAEhBn+J,KAAKgoG,gBAAkBxmE,EAAQsgC,aAAe1kE,YAAkBc,OAAOjB,KAAKukC,EAAQsgC,cACpF9hE,KAAKi8J,mBAAqB,CAAErlD,UAAW,KAAMn/E,KAAM,KAAMykI,WAAW,GACpEl8J,KAAKm8J,WAAan8J,KAAKi8J,oBAElBj8J,KAAKgoG,gBAAkBxmE,EAAQmgC,QAAUvkE,YAAkBc,OAAOjB,KAAKukC,EAAQmgC,UACpF3hE,KAAKm8J,WAAan8J,KAAKi8J,qBAG/BvB,EAAax+J,UAAU0qJ,iBAAmB,SAAUriJ,GAChB,KAA5BvE,KAAKq0F,aAAa73F,QAAkBY,YAAkBmH,KAAWnH,YAAkBmH,EAAMu9D,cACnFv9D,EAAMu9D,sBAAsBC,KAA4C,IAA5Bx9D,EAAMu9D,WAAWjlE,UACnEmD,KAAKk0I,SAAS,KAAM3vI,IAEjBnH,YAAkBmH,KAAWnH,YAAkBmH,EAAMu9D,cAClDv9D,EAAMu9D,sBAAsBC,KAA4C,IAA5Bx9D,EAAMu9D,WAAWjlE,SAAqB0H,EAAMu9D,aAAe,MAC7G9hE,KAAK67J,YAAc,GACnB77J,KAAKq0J,UAAUr0J,KAAK8hE,aAEnB9hE,KAAKw8J,gBAAmBx8J,KAAKq7J,eAAiB76J,SAASo1F,gBAAkB51F,KAAKk6J,aAC/El6J,KAAK0qK,oBAGbhQ,EAAax+J,UAAUwuK,iBAAmB,WACtC1qK,KAAKm+J,SAAWn+J,KAAKw5J,eAAex5J,KAAKxD,OACzC,IAAIo1G,EAAW5xG,KAAKg+J,cACpBh+J,KAAKk5B,cAAc,CAAE,MAAS04E,EAASp1G,MAAO,KAAQo1G,EAASr/F,QAEnEmoJ,EAAax+J,UAAUyuK,kBAAoB,WACV,iBAAzB3qK,KAAK66B,iBACLi5D,IAAM/2F,SAASiD,KAAKuS,KAAMvS,KAAKq0F,aAAcr0F,KAAKm0F,eAAgBn0F,KAAKu4F,kBAW/EmiE,EAAax+J,UAAU29B,kBAAoB,SAAU2H,EAASC,GAC7B,iBAAzBzhC,KAAK66B,kBACA76B,KAAK86J,iBACN96J,KAAKuqK,UAAU/oI,GACfxhC,KAAKu4J,iBAAiB,CAAC,SAAU,QAAS,cAAe/2H,KAGjE,IAAK,IAAIxjC,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC9D,IAAImG,EAAOZ,EAAGvF,GACd,OAAQmG,GACJ,IAAK,QACL,IAAK,aAAc,MACnB,IAAK,iBACDnE,KAAKq+J,oBACL,MACJ,IAAK,QACDr+J,KAAKwpK,YAAYhoI,EAAQkO,OACzB,MACJ,IAAK,cACDokD,IAAMsC,eAAe50D,EAAQ2zD,YAAan1F,KAAKq0F,cAC/C,MACJ,IAAK,uBACGr0F,KAAKk6J,aACLpmE,IAAMsC,eAAe50D,EAAQgkI,qBAAsBxlK,KAAKk6J,aAE5D,MACJ,IAAK,WAC4B,iBAAzBl6J,KAAK66B,iBACLi5D,IAAMwC,YAAY90D,EAAQg1D,SAAUx2F,KAAKq0F,cAE7C,MACJ,IAAK,WACDr0F,KAAKi2F,YAAYz0D,EAAQ00D,SAAUz0D,EAAQy0D,UAC3C,MACJ,IAAK,YACDl2F,KAAKy2F,eACL,MACJ,IAAK,UACDz2F,KAAKw+J,YACL,MACJ,IAAK,OACD,GAAqB,OAAjBh9H,EAAQjvB,KAAe,CACvBvS,KAAKk0I,WACL,MAQJ,GANKl0I,KAAKy3B,OACFz3B,KAAK8hE,sBAAsBC,MAC3B/hE,KAAKu7J,kBAAmB,GAE5Bv7J,KAAKs4J,eAEJt4J,KAAKu7J,iBAAkB,CACxB,IAAIvqD,EAAKhxG,KAAK++J,iBAAiBv9H,EAAQjvB,MAClCvS,KAAK4qK,aAAa55D,KACfhxG,KAAKk3G,eAA+C,MAA9Bl3G,KAAKk3G,cAAcr6G,QAChB,iBAAzBmD,KAAK66B,iBAAsC76B,KAAKsyJ,SAASz1J,OAAS,IAClEmD,KAAK6qK,iBAAiBrpI,EAAQjvB,KAAMkvB,EAAQlvB,KAAM,QAE5CvS,KAAK86J,gBACX96J,KAAKqqK,WAAW5oI,EAAQlvB,OAGhCvS,KAAK2qK,oBAET,MACJ,IAAK,QACD,GAAsB,OAAlBnpI,EAAQhlC,MAAgB,CACxBwD,KAAKk0I,WACL,MASJ,GAPAl0I,KAAKga,OAAO,oBAAqB,CAAEwnB,QAASA,IACvCxhC,KAAKy3B,OACFz3B,KAAK8hE,sBAAsBC,MAC3B/hE,KAAKu7J,kBAAmB,GAE5Bv7J,KAAKs4J,eAEJt4J,KAAKu7J,iBAAkB,CACxB,IAAI//G,EAAOx7C,KAAKg/J,kBAAkBx9H,EAAQhlC,OACrCwD,KAAK4qK,aAAapvH,KACfx7C,KAAKk3G,eAA+C,MAA9Bl3G,KAAKk3G,cAAcr6G,QAChB,iBAAzBmD,KAAK66B,iBAAsC76B,KAAKsyJ,SAASz1J,OAAS,IAClEmD,KAAK6qK,iBAAiBrpI,EAAQhlC,MAAOilC,EAAQjlC,MAAO,SAE9CwD,KAAK86J,gBACX96J,KAAKsqK,YAAY7oI,EAAQjlC,QAGjCwD,KAAK2qK,oBACL3qK,KAAKgyJ,cAAgBhyJ,KAAKiuJ,WAAajuJ,KAAKgyJ,eAAiBhyJ,KAAKgyJ,cAAgBhyJ,KAAKgyJ,cAE3F,MACJ,IAAK,QACD,GAAsB,OAAlBxwH,EAAQhnB,MAAgB,CACxBxa,KAAKk0I,WACL,MAQJ,GANKl0I,KAAKy3B,OACFz3B,KAAK8hE,sBAAsBC,MAC3B/hE,KAAKu7J,kBAAmB,GAE5Bv7J,KAAKs4J,eAEJt4J,KAAKu7J,kBAAoBv7J,KAAKk3G,cAAe,CAC9C,IAAIl2G,EAAUhB,KAAKk3G,cAAc11E,EAAQhnB,OACpCxa,KAAK4qK,aAAa5pK,KACfhB,KAAKk3G,eAA+C,MAA9Bl3G,KAAKk3G,cAAcr6G,QAChB,iBAAzBmD,KAAK66B,iBAAsC76B,KAAKsyJ,SAASz1J,OAAS,IAClEmD,KAAK6qK,iBAAiBrpI,EAAQhnB,MAAOinB,EAAQjnB,MAAO,SAE9Cxa,KAAK86J,iBACX96J,KAAKwa,MAAQinB,EAAQjnB,QAG7Bxa,KAAK2qK,oBAET,MACJ,IAAK,iBACG3qK,KAAKm9J,UACLn9J,KAAK4mK,kBAAkB5mK,KAAKm9J,SAASn8J,SAEzC,MACJ,IAAK,iBACGhB,KAAKm9J,UACLn9J,KAAK2mK,kBAAkB3mK,KAAKm9J,SAASn8J,SAEzC,MACJ,IAAK,gBACI5D,YAAkB4C,KAAKm+J,WAAmC,MAAtBn+J,KAAK0jK,eAC1C1jK,KAAK2jK,mBAET,MACJ,IAAK,iBACG3jK,KAAKgoG,iBACLhoG,KAAKi8J,mBAAqB,CAAErlD,UAAW52G,KAAK42G,UACxCn/E,KAAMz3B,KAAKsyJ,SAAU4J,WAAW,GACpCl8J,KAAKm8J,WAAan8J,KAAKi8J,mBACvBj8J,KAAKm4J,wBAAwBn4J,KAAKgoG,iBAEtC,MACJ,IAAK,iBACDlU,IAAM6E,eAAe34F,KAAK09J,cAC1B5pE,IAAM+E,YAAY74F,KAAKq0F,aAAc7yD,EAAQ2yD,eAAgBn0F,KAAKm1F,YAAan1F,KAAKmB,eACpF,MACJ,IAAK,kBACD2yF,IAAMoD,eAAe11D,EAAQ+2D,gBAAiBv4F,KAAKq0F,aAAcr0F,KAAK09J,aAAc,KAAM19J,KAAKmB,eAC/FnB,KAAKigK,iBACL,MACJ,QAGQ,IAAI6K,EAAW9qK,KAAKkyJ,cAAc/tJ,EAAMq9B,EAASC,GACjDtC,EAAOjjC,UAAU29B,kBAAkBv4B,KAAKtB,KAAM8qK,EAAS3Y,YAAa2Y,EAAS1Y,gBAMjGsI,EAAax+J,UAAU0uK,aAAe,SAAU5pK,GAC5C,QAAIhB,KAAK2gK,UAAU3/J,KACfhB,KAAKi0I,aAAajzI,EAAS,OACpB,IAIf05J,EAAax+J,UAAU2uK,iBAAmB,SAAUrpI,EAASC,EAASt9B,GAClE,IACI6sG,EADAjxG,EAAQC,KAEZA,KAAKg2J,iBAAmB,WACP,SAAT7xJ,GACA6sG,EAAKjxG,EAAMg/J,iBAAiBv9H,GACvBzhC,EAAM6qK,aAAa55D,IACpBjxG,EAAMsqK,WAAW5oI,IAGP,UAATt9B,GACL6sG,EAAKjxG,EAAMi/J,kBAAkBx9H,GACxBzhC,EAAM6qK,aAAa55D,IACpBjxG,EAAMuqK,YAAY7oI,IAGR,UAATt9B,IACL6sG,EAAKjxG,EAAMm3G,cAAc11E,GACpBzhC,EAAM6qK,aAAa55D,KACpBjxG,EAAMya,MAAQinB,MAK9Bi5H,EAAax+J,UAAU+5F,YAAc,SAAU80E,EAAU50E,GAChD/4F,YAAkB+4F,KACnBA,EAAYA,EAASz5F,QAAQ,OAAQ,KAAM2vB,QAE1CjvB,YAAkB2tK,KACnBA,EAAYA,EAASruK,QAAQ,OAAQ,KAAM2vB,QAE/CynE,IAAMmC,YAAY80E,EAAU,CAAC/qK,KAAK09J,aAAa5oE,WAAYqB,GACvDn2F,KAAKm9J,UACLrpE,IAAMmC,YAAY80E,EAAU,CAAC/qK,KAAKm9J,SAASn8J,SAAUm1F,IAS7DukE,EAAax+J,UAAU2+B,cAAgB,WACnC,MAAO,gBAOX6/H,EAAax+J,UAAUgmK,UAAY,WAC/B,GAAKliK,KAAKw4F,QAWV,GARIl5F,eAAcU,KAAKqpG,cACnBrpG,KAAK4zJ,mCAAkC,GAAM,GAAO,GAAO,GAE3D5zJ,KAAKo4J,eAAiBp4J,KAAK8hE,sBAAsBC,KAAgB/hE,KAAKm8J,WAAW1kI,MAAQz3B,KAAKi8J,mBAAmBxkI,MACjHz3B,KAAKm8J,WAAW1kI,MAAQz3B,KAAKm8J,WAAWvlD,YACxC52G,KAAKi8J,mBAAqBj8J,KAAKm8J,WAC/Bn8J,KAAKy1J,iBAAiBz1J,KAAKi8J,mBAAmBrlD,UAAW52G,KAAKi8J,mBAAmBxkI,KAAM,MAAM,IAE7Fz3B,KAAKs7J,gBACLt7J,KAAKsmK,mBADT,CAIAtmK,KAAKs7J,iBAAkB,EACnBt7J,KAAKo4J,gBAAkBp4J,KAAKizF,UAAYjzF,KAAKi8J,mBAAmBxkI,MAAQz3B,KAAKi8J,mBAAmBxkI,KAAK,IACrGz3B,KAAKizF,UAAW,EAChBjzF,KAAKy1J,iBAAiBz1J,KAAKi8J,mBAAmBrlD,UAAW52G,KAAKi8J,mBAAmBxkI,KAAM,MAAM,KAExFr6B,YAAkB4C,KAAKy3B,QAAU36B,YAAYkD,KAAKy3B,QAAUz3B,KAAKy3B,KAAKzB,UAAUzD,SAASg/H,IAC9FvxJ,KAAKy3B,KAAKj2B,iBAAiB,IAAM+vJ,GAAwB10J,QAAU,IAG9DmD,KAAKo4J,eAAiBp4J,KAAK86J,iBAFhC96J,KAAKs4J,aAKJt4J,KAAK86J,gBACN96J,KAAKgrK,oBAET,IAAIpB,GAAkB5pK,KAAKo4J,eAAiBhhI,aAAO,IAAMp3B,KAAKgB,QAAQyY,GAAK,gBAAiBjZ,UACxFyqK,EAA0C,iBAAzBjrK,KAAK66B,kBAAuC76B,KAAKo4J,cAClEp4J,KAAK86J,gBAAkB8O,IAAmBxsK,YAAkB4C,KAAKy3B,OAASwzI,GAC1EjrK,KAAKgrK,sBAGbtQ,EAAax+J,UAAU8uK,kBAAoB,WACvC,GAAI3kJ,IAAQa,UAAYlnB,KAAKs/J,iBAAkB,CAE3C,IAAI4L,EAAUlrK,KACd8B,OAAOqpK,WAAa,WAChBD,EAAQtM,aAEZ11H,QAAQ64E,UAAU,GAAI,IAErB3kH,YAAkB4C,KAAKy3B,KAAK3G,SAAS,MAAO9wB,KAAKy3B,KAAKzB,UAAUzD,SAASg/H,IAC1EvxJ,KAAK8lK,cAETvyI,YAAWvzB,KAAK2+J,gBAAiB,CAAE,wBAAyB3+J,KAAKk+J,WAAal+J,KAAKk+J,WAAWzkJ,GAAK,QAEvGihJ,EAAax+J,UAAUkvK,kBAAoB,SAAUvwJ,EAAM0rJ,GACnDA,GACAvmK,KAAKwmK,eAAiBD,EACtBvmK,KAAKy3B,KAAO8uI,EAASjjK,cAAc,6BAC/BijK,EAASjjK,cAAc,6BAA+BtD,KAAKy3B,KAC/Dz3B,KAAK42G,UAAY52G,KAAKy3B,KAAKn0B,cAAc,MACrClG,YAAkB4C,KAAK42G,aAAe52G,KAAKy3B,KAAKzB,UAAUzD,SAASg/H,IACnE17H,YAAS,CAAC71B,KAAKy3B,MAAO,CAAC85H,IAE3BvxJ,KAAKk3G,cAAgBl3G,KAAK42G,UACtB52G,KAAK42G,UAAUp1G,iBAAiB,IAAM+vJ,GAA0B,GACpEvxJ,KAAKsyJ,SAAWz3I,EACa,iBAAzB7a,KAAK66B,iBAAsC76B,KAAKk3G,cAAcr6G,OAAS,GACvEmD,KAAKqrK,oBAETrrK,KAAKu7J,kBAAmB,EACnBv7J,KAAKk7J,aACNl7J,KAAK+nK,8BAET/nK,KAAKs9J,mBACLt9J,KAAKu9J,iBACDv9J,KAAKugK,2BAA6BvgK,KAAKwgK,iBACvCxgK,KAAKugK,2BAA4B,EACjCvgK,KAAKo3F,SAAU,EACfp3F,KAAKygK,0BAA0BzgK,KAAKwgK,iBAEpCxgK,KAAKsiK,oBAAsBtiK,KAAKwgK,iBACG,SAA/BxgK,KAAKwgK,eAAe16H,QAAoD,OAA/B9lC,KAAKwgK,eAAe16H,QAC7D9lC,KAAKsiK,oBAAqB,EAC1BtiK,KAAK6hK,mBAAmB7hK,KAAKwgK,iBAEO,SAA/BxgK,KAAKwgK,eAAe16H,QAAoD,QAA/B9lC,KAAKwgK,eAAe16H,SAClE9lC,KAAKsiK,oBAAqB,EAC1BtiK,KAAKiiK,oBAAoBjiK,KAAKwgK,kBAGlCxgK,KAAKs7J,iBACLt7J,KAAKgrK,oBAEoB,iBAAzBhrK,KAAK66B,iBACL76B,KAAKy1J,iBAAiBz1J,KAAK42G,UAAW52G,KAAKsyJ,WAGlC,MAARz3I,GAAgB7a,KAAKsyJ,WAAaz3I,IACvC7a,KAAKsyJ,SAAWz3I,EAChB7a,KAAKu7J,kBAAmB,IAGhCb,EAAax+J,UAAUmvK,kBAAoB,aAG3C3Q,EAAax+J,UAAUovK,qBAAuB,SAAUzwJ,GACpD7a,KAAKsyJ,SAAWz3I,GAEpB6/I,EAAax+J,UAAUqvK,kBAAoB,SAAUrT,GACjDl4J,KAAKm+J,SAAWjG,EAChBl4J,KAAK26J,cAAgB36J,KAAKxD,MAC1BwD,KAAKo3F,SAAU,GAGnBsjE,EAAax+J,UAAUsvK,wBAA0B,SAAU3wJ,EAAM0rJ,GAC7DvmK,KAAKsyJ,SAAWz3I,EACZ7a,KAAK42G,YACL52G,KAAKk3G,cAAgBl3G,KAAK42G,UAAUp1G,iBAAiB,IAAM+vJ,KASnEmJ,EAAax+J,UAAU0iK,UAAY,SAAU/9J,GAEzC,IAAIixG,IAAY9xG,KAAKmpG,eACjBsiE,IAAYzrK,KAAKmpG,eAErB,GADAnpG,KAAKwzJ,kCAAiC,GAAO,GAAO,GAAO,GAAO,EAAO1hD,EAAU25D,GAC/EzrK,KAAK87J,aAAwC,iBAAzB97J,KAAK66B,gBAGzB,GAFAi5D,IAAM/2F,SAASiD,KAAKuS,KAAMvS,KAAKq0F,aAAcr0F,KAAKm0F,eAAgBn0F,KAAKu4F,iBACvEv4F,KAAK87J,aAAc,EACd1+J,YAAkB4C,KAAKwa,OAWxBxa,KAAK+9J,qBAX2B,CAChC,IAAI/8J,EAAUhB,KAAKk2J,gBAAgBl2J,KAAK42G,UAAW,KAAM,aAAc52G,KAAKxD,OAC5EwD,KAAKk+J,WAAal+J,KAAKk3G,cAAcl3G,KAAKwa,QAAUxZ,EAChDhB,KAAKk+J,aACLl+J,KAAKgjK,mBAAmBhjK,KAAKk+J,WAAY,MAAM,GAC3Cl+J,KAAK0jK,eAAmC,OAAlB1jK,KAAKm+J,UAC3Bn+J,KAAK2jK,oBAQrB3jK,KAAK6gK,aACL,IAAIjvD,EAAW5xG,KAAKg+J,cAChB0N,EAAc1rK,KAAK86J,gBAAkB19J,YAAkB4C,KAAKxD,QAAUY,YAAkB4C,KAAKk+J,YAC7Fl+J,KAAKq0F,cAAmD,KAAnCr0F,KAAKq0F,aAAa73F,MAAM6vB,SAAkBrsB,KAAKo7J,eAAiBp7J,KAAKq8J,gBAC1FqP,GAAe1rK,KAAKq0F,aAAa73F,QAAUo1G,EAASr/F,QACpDvS,KAAKq8J,gBAAiB,EACtBr8J,KAAKk0I,SAASrzI,KAStB65J,EAAax+J,UAAUimI,QAAU,SAAUthI,GACvC,GAAKb,KAAKw4F,UAGNx4F,KAAK2+J,gBAAgB3oI,UAAUzD,SAASknI,EAAoB5jC,SAAhE,CAGA,IAAIgqB,GAAY,EACZ7/I,KAAK07J,cAAgBr1I,IAAQa,WAC7BlnB,KAAK09J,aAAa5oE,UAAUuoD,SAAW,EACvCr9I,KAAK09J,aAAa5oE,UAAUxyF,QAC5BtC,KAAK07J,cAAe,EACpB7b,GAAY,GAEXA,GACD7/I,KAAK2+J,gBAAgBr8J,QAEzBuzB,YAAS,CAAC71B,KAAK09J,aAAa5oE,WAAY,CAAC2kE,EAAoBI,aAC7D75J,KAAKu8I,QAAQ17I,KAOjB65J,EAAax+J,UAAUsjK,SAAW,SAAU3+J,GAEnCb,KAAKw4F,UAGVx4F,KAAKy7J,SAAU,EACfz7J,KAAK4+J,UAAU/9J,GACXb,KAAK2+J,iBACL3+J,KAAK2+J,gBAAgB4K,OAEzBnzI,aAAY,CAACp2B,KAAK09J,aAAa5oE,WAAY,CAAC2kE,EAAoBI,eAQpEa,EAAax+J,UAAUif,QAAU,WAkB7B,GAjBAnb,KAAKizF,UAAW,EAEZjzF,KAAKuiG,SACLviG,KAAK6oC,kBAEJ7oC,KAAK86J,gBAAmB96J,KAAKm9J,UAAY38J,SAASgiC,KAAKjQ,SAASvyB,KAAKm9J,SAASn8J,WAC/EhB,KAAK4+J,YAET5+J,KAAKilJ,cACDjlJ,KAAKy3B,OACLz3B,KAAKs9J,mBACDt9J,KAAK86J,gBACA96J,KAAKovE,OAAOqjC,UAAazyG,KAAK04J,iBAC/B9vI,IAAaa,OAAOzpB,KAAKy3B,KAAM,SAAUz3B,KAAKo3J,qBAIrDp3J,KAAK86J,eAAgB,CACtB,GAAI96J,KAAKgB,UAAYhB,KAAKgB,QAAQg1B,UAAUzD,SAAS,KAAOvyB,KAAK66B,iBAC7D,OAEJ,GAAI76B,KAAKq0F,aAAc,CAKnB,IAJA,IAAIs3E,EAAY,CAAC,WAAY,gBAAiB,mBAC1C,cAAe,YAAa,kBAAmB,gBAAiB,gBAChE,wBAAyB,eAAgB,gBAAiB,cAC1D,iBAAkB,aAAc,oBAAqB,YAAa,mBAAoB,cACjF/uK,EAAI,EAAGA,EAAI+uK,EAAU9uK,OAAQD,IAClCoD,KAAKq0F,aAAah0D,gBAAgBsrI,EAAU/uK,IAEhDoD,KAAKq0F,aAAaz+D,aAAa,WAAY51B,KAAKq9I,UAChDr9I,KAAKq0F,aAAar+D,UAAUvM,OAAO,WACnCqqE,IAAM/2F,SAAS,GAAIiD,KAAKq0F,aAAcr0F,KAAKm0F,eAAgBn0F,KAAKu4F,iBAEpEv4F,KAAKgB,QAAQgzB,MAAMygB,QAAU,QACzBz0C,KAAK09J,aAAa5oE,UAAUlhD,cAAc5jB,UAAYhwB,KAAK8+J,kBAI3D9+J,KAAK09J,aAAa5oE,UAAUlhD,cAAc/c,aAAa72B,KAAKgB,QAAShB,KAAK09J,aAAa5oE,WAHvFjkE,YAAO7wB,KAAK09J,aAAa5oE,WAM7B31D,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,QAStC06J,EAAax+J,UAAU87J,SAAW,WAO9B,OANKh4J,KAAKy3B,OACFz3B,KAAK8hE,sBAAsBC,MAC3B/hE,KAAKu7J,kBAAmB,GAE5Bv7J,KAAKs4J,cAEFt4J,KAAK42G,UAAYz3E,EAAOjjC,UAAU87J,SAAS12J,KAAKtB,MAAQ,IASnE06J,EAAax+J,UAAUs9J,eAAiB,SAAUh9J,GAC9C,OAAO2iC,EAAOjjC,UAAUs9J,eAAel4J,KAAKtB,KAAMxD,IAQtDk+J,EAAax+J,UAAU48I,MAAQ,WAC3B94I,KAAKxD,MAAQ,MAEjBmiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,gBAAY,GACvCyiC,EAAW,CACP3B,YAAS,SACV09H,EAAax+J,UAAW,aAAS,GACpCyiC,EAAW,CACP3B,YAAS,UACV09H,EAAax+J,UAAW,mBAAe,GAC1CyiC,EAAW,CACP3B,YAAS,SACV09H,EAAax+J,UAAW,kBAAc,GACzCyiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,mBAAe,GAC1CyiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,4BAAwB,GACnDyiC,EAAW,CACP3B,YAAS,KACV09H,EAAax+J,UAAW,sBAAkB,GAC7CyiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,aAAS,GACpCyiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,qBAAiB,GAC5CyiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,sBAAkB,GAC7CyiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,sBAAkB,GAC7CyiC,EAAW,CACP3B,aAAS,IACV09H,EAAax+J,UAAW,sBAAkB,GAC7CyiC,EAAW,CACP3B,aAAS,IACV09H,EAAax+J,UAAW,gBAAY,GACvCyiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,YAAQ,GACnCyiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,aAAS,GACpCyiC,EAAW,CACP3B,YAAS,OACV09H,EAAax+J,UAAW,aAAS,GACpCyiC,EAAW,CACP3B,YAAS,UACV09H,EAAax+J,UAAW,sBAAkB,GAC7CyiC,EAAW,CACP3B,aAAS,IACV09H,EAAax+J,UAAW,uBAAmB,GAC9CyiC,EAAW,CACPp/B,eACDm7J,EAAax+J,UAAW,iBAAa,GACxCyiC,EAAW,CACPp/B,eACDm7J,EAAax+J,UAAW,cAAU,GACrCyiC,EAAW,CACPp/B,eACDm7J,EAAax+J,UAAW,kBAAc,GACzCyiC,EAAW,CACPp/B,eACDm7J,EAAax+J,UAAW,YAAQ,GACnCyiC,EAAW,CACPp/B,eACDm7J,EAAax+J,UAAW,aAAS,GACpCyiC,EAAW,CACPp/B,eACDm7J,EAAax+J,UAAW,YAAQ,GACnCyiC,EAAW,CACPp/B,eACDm7J,EAAax+J,UAAW,aAAS,GACpCw+J,EAAe/7H,EAAW,CACtBlB,KACDi9H,GA50F2B,CA80FhC3I,I,8BCx5Fa,SAAS6Z,EAAkBh4I,EAAKjyB,IAClC,MAAPA,GAAeA,EAAMiyB,EAAI/2B,UAAQ8E,EAAMiyB,EAAI/2B,QAE/C,IAAK,IAAID,EAAI,EAAGivK,EAAO,IAAIztK,MAAMuD,GAAM/E,EAAI+E,EAAK/E,IAC9CivK,EAAKjvK,GAAKg3B,EAAIh3B,GAGhB,OAAOivK,EAPT,mC,cCAA,SAASv8E,EAAQ3lB,GAGf,OAAQrlC,EAAO8X,QAAUkzC,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7lB,GAC/G,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAK,mBAAqB4lB,QAAU5lB,EAAEpsE,cAAgBgyF,QAAU5lB,IAAM4lB,OAAOrzF,UAAY,gBAAkBytE,GACjHrlC,EAAO8X,QAAQ0vH,YAAa,EAAMxnI,EAAO8X,QAAiB,QAAI9X,EAAO8X,QAAUkzC,EAAQ3lB,GAE5FrlC,EAAO8X,QAAUkzC,EAAShrD,EAAO8X,QAAQ0vH,YAAa,EAAMxnI,EAAO8X,QAAiB,QAAI9X,EAAO8X,S,iBCT/F,qBAQE,WAGA,IAAIpgD,EAUA+vK,EAAkB,sBAIlBC,EAAiB,4BAMjBC,EAAc,yBAgBdC,EAAwB,GACxBC,EAAoB,GACpBC,EAA0B,GAC1BC,EAAgB,IAChBC,EAAkB,IAiBlBC,EAAW,IACXC,EAAmB,iBAEnBC,EAAM,IAGNC,EAAmB,WAKnBC,EAAY,CACd,CAAC,MAAON,GACR,CAAC,OAtCkB,GAuCnB,CAAC,UAtCsB,GAuCvB,CAAC,QArCmB,GAsCpB,CAAC,aAAcH,GACf,CAAC,OAjCkB,KAkCnB,CAAC,UAAWC,GACZ,CAAC,eAAgBC,GACjB,CAAC,QAASE,IAIRM,EAAU,qBACVC,EAAW,iBAEXC,EAAU,mBACVC,EAAU,gBAEVC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBAEZC,EAAY,kBACZC,EAAa,mBAEbC,EAAY,kBACZC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBAEZC,EAAa,mBAGbC,EAAiB,uBACjBC,EAAc,oBACdC,EAAa,wBACbC,EAAa,wBACbC,EAAU,qBACVC,EAAW,sBACXC,EAAW,sBACXC,EAAW,sBACXC,EAAkB,6BAClBC,EAAY,uBACZC,EAAY,uBAGZC,EAAuB,iBACvBC,EAAsB,qBACtBC,EAAwB,gCAGxBC,EAAgB,4BAChBC,EAAkB,WAClBC,EAAmBhqK,OAAO8pK,EAAc9wK,QACxCixK,EAAqBjqK,OAAO+pK,EAAgB/wK,QAG5CkxK,EAAW,mBACXC,GAAa,kBACbC,GAAgB,mBAGhBC,GAAe,mDACfC,GAAgB,QAChBC,GAAa,mGAMbC,GAAe,sBACfC,GAAkBzqK,OAAOwqK,GAAaxxK,QAGtC0xK,GAAc,OAGdC,GAAe,KAGfC,GAAgB,4CAChBC,GAAgB,oCAChBC,GAAiB,QAGjBC,GAAc,4CAYdC,GAA6B,mBAG7BC,GAAe,WAMfC,GAAe,kCAGfC,GAAU,OAGVC,GAAa,qBAGbC,GAAa,aAGbC,GAAe,8BAGfC,GAAY,cAGZC,GAAW,mBAGXC,GAAU,8CAGVC,GAAY,OAGZC,GAAoB,yBAOpBC,GAAeC,gDACfC,GAAiB,kBACjBC,GAAe,4BAKfC,GAAe,4BACfC,GAAa,iBACbC,GAAeC,8OAGfC,GAAS,YACTC,GAAW,oBACXC,GAAU,IAAMJ,GAAe,IAC/BK,GAAU,IAAMX,GAAe,IAC/BY,GAAW,OACXC,GAAY,oBACZC,GAAU,IAAMX,GAAe,IAC/BY,GAAS,oBAAuBT,GAAeM,GAAWV,GAAiBC,GAAeC,GAAe,IACzGY,GAAS,2BAETC,GAAc,qBACdC,GAAa,kCACbC,GAAa,qCACbC,GAAU,IAAMhB,GAAe,IAI/BiB,GAAc,MAAQP,GAAU,IAAMC,GAAS,IAC/CO,GAAc,MAAQF,GAAU,IAAML,GAAS,IAC/CQ,GAAkB,qCAClBC,GAAkB,qCAClBC,GAZa,MAAQd,GAAU,IAAMK,GAAS,IAYtB,IACxBU,GAAW,oBAIXC,GAAQD,GAAWD,IAHP,gBAAwB,CAACR,GAAaC,GAAYC,IAAYhtK,KAAK,KAAO,IAAMutK,GAAWD,GAAW,MAIlHG,GAAU,MAAQ,CAACf,GAAWK,GAAYC,IAAYhtK,KAAK,KAAO,IAAMwtK,GACxEE,GAAW,MAAQ,CAACZ,GAAcN,GAAU,IAAKA,GAASO,GAAYC,GAAYV,IAAUtsK,KAAK,KAAO,IAGxG2tK,GAAS1tK,OAAOosK,GAAQ,KAMxBuB,GAAc3tK,OAAOusK,GAAS,KAG9BqB,GAAY5tK,OAAO4sK,GAAS,MAAQA,GAAS,KAAOa,GAAWF,GAAO,KAGtEM,GAAgB7tK,OAAO,CACzBgtK,GAAU,IAAMN,GAAU,IAAMS,GAAkB,MAAQ,CAACb,GAASU,GAAS,KAAKjtK,KAAK,KAAO,IAC9FmtK,GAAc,IAAME,GAAkB,MAAQ,CAACd,GAASU,GAAUC,GAAa,KAAKltK,KAAK,KAAO,IAChGitK,GAAU,IAAMC,GAAc,IAAME,GACpCH,GAAU,IAAMI,GAtBD,mDADA,mDA0BfZ,GACAgB,IACAztK,KAAK,KAAM,KAGT+tK,GAAe9tK,OAAO,0BAA+B4rK,GAAeK,GAAa,KAGjF8B,GAAmB,qEAGnBC,GAAe,CACjB,QAAS,SAAU,WAAY,OAAQ,QAAS,eAAgB,eAChE,WAAY,YAAa,aAAc,aAAc,MAAO,OAAQ,SACpE,UAAW,SAAU,MAAO,SAAU,SAAU,YAAa,aAC7D,oBAAqB,cAAe,cAAe,UACnD,IAAK,eAAgB,WAAY,WAAY,cAI3CC,IAAmB,EAGnBC,GAAiB,GACrBA,GAAehF,GAAcgF,GAAe/E,GAC5C+E,GAAe9E,GAAW8E,GAAe7E,GACzC6E,GAAe5E,GAAY4E,GAAe3E,GAC1C2E,GAAe1E,GAAmB0E,GAAezE,GACjDyE,GAAexE,IAAa,EAC5BwE,GAAelG,GAAWkG,GAAejG,GACzCiG,GAAelF,GAAkBkF,GAAehG,GAChDgG,GAAejF,GAAeiF,GAAe/F,GAC7C+F,GAAe9F,GAAY8F,GAAe7F,GAC1C6F,GAAe3F,GAAU2F,GAAe1F,GACxC0F,GAAezF,GAAayF,GAAevF,GAC3CuF,GAAetF,GAAUsF,GAAerF,GACxCqF,GAAenF,IAAc,EAG7B,IAAIoF,GAAgB,GACpBA,GAAcnG,GAAWmG,GAAclG,GACvCkG,GAAcnF,GAAkBmF,GAAclF,GAC9CkF,GAAcjG,GAAWiG,GAAchG,GACvCgG,GAAcjF,GAAciF,GAAchF,GAC1CgF,GAAc/E,GAAW+E,GAAc9E,GACvC8E,GAAc7E,GAAY6E,GAAc5F,GACxC4F,GAAc3F,GAAa2F,GAAc1F,GACzC0F,GAAcxF,GAAawF,GAAcvF,GACzCuF,GAActF,GAAasF,GAAcrF,GACzCqF,GAAc5E,GAAY4E,GAAc3E,GACxC2E,GAAc1E,GAAa0E,GAAczE,IAAa,EACtDyE,GAAc/F,GAAY+F,GAAc9F,GACxC8F,GAAcpF,IAAc,EAG5B,IA4EIqF,GAAgB,CAClB,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAIRC,GAAiBl6J,WACjBm6J,GAAe/8J,SAGfg9J,GAA8B,iBAAVC,GAAsBA,GAAUA,EAAOl1K,SAAWA,QAAUk1K,EAGhFC,GAA0B,iBAAR3kF,MAAoBA,MAAQA,KAAKxwF,SAAWA,QAAUwwF,KAGxEgrE,GAAOyZ,IAAcE,IAAYp3K,SAAS,cAATA,GAGjCq3K,GAA4Cl3H,IAAYA,EAAQtkB,UAAYskB,EAG5Em3H,GAAaD,IAAgC,iBAAVhvI,GAAsBA,IAAWA,EAAOxM,UAAYwM,EAGvFkvI,GAAgBD,IAAcA,GAAWn3H,UAAYk3H,GAGrDG,GAAcD,IAAiBL,GAAWh3E,QAG1Cu3E,GAAY,WACd,IAEE,IAAIh3D,EAAQ62D,IAAcA,GAAWl3H,SAAWk3H,GAAWl3H,QAAQ,QAAQqgE,MAE3E,OAAIA,GAKG+2D,IAAeA,GAAYE,SAAWF,GAAYE,QAAQ,QACjE,MAAO9yK,KAXK,GAeZ+yK,GAAoBF,IAAYA,GAASj6D,cACzCo6D,GAAaH,IAAYA,GAASx5D,OAClC45D,GAAYJ,IAAYA,GAASK,MACjCC,GAAeN,IAAYA,GAASO,SACpCC,GAAYR,IAAYA,GAASS,MACjCC,GAAmBV,IAAYA,GAASW,aAc5C,SAASj4K,GAAMk4K,EAAM15D,EAAS36G,GAC5B,OAAQA,EAAKpD,QACX,KAAK,EAAG,OAAOy3K,EAAKhzK,KAAKs5G,GACzB,KAAK,EAAG,OAAO05D,EAAKhzK,KAAKs5G,EAAS36G,EAAK,IACvC,KAAK,EAAG,OAAOq0K,EAAKhzK,KAAKs5G,EAAS36G,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOq0K,EAAKhzK,KAAKs5G,EAAS36G,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOq0K,EAAKl4K,MAAMw+G,EAAS36G,GAa7B,SAASs0K,GAAgBz4G,EAAO04G,EAAQC,EAAUC,GAIhD,IAHA,IAAIl6J,GAAS,EACT3d,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,SAE9B2d,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GAClBg6J,EAAOE,EAAal4K,EAAOi4K,EAASj4K,GAAQs/D,GAE9C,OAAO44G,EAYT,SAASC,GAAU74G,EAAO24G,GAIxB,IAHA,IAAIj6J,GAAS,EACT3d,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,SAE9B2d,EAAQ3d,IAC8B,IAAzC43K,EAAS34G,EAAMthD,GAAQA,EAAOshD,KAIpC,OAAOA,EAYT,SAAS84G,GAAe94G,EAAO24G,GAG7B,IAFA,IAAI53K,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OAEhCA,MAC0C,IAA3C43K,EAAS34G,EAAMj/D,GAASA,EAAQi/D,KAItC,OAAOA,EAaT,SAAS+4G,GAAW/4G,EAAOH,GAIzB,IAHA,IAAInhD,GAAS,EACT3d,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,SAE9B2d,EAAQ3d,GACf,IAAK8+D,EAAUG,EAAMthD,GAAQA,EAAOshD,GAClC,OAAO,EAGX,OAAO,EAYT,SAASg5G,GAAYh5G,EAAOH,GAM1B,IALA,IAAInhD,GAAS,EACT3d,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACnCk4K,EAAW,EACXp2K,EAAS,KAEJ6b,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GACdmhD,EAAUn/D,EAAOge,EAAOshD,KAC1Bn9D,EAAOo2K,KAAcv4K,GAGzB,OAAOmC,EAYT,SAASq2K,GAAcl5G,EAAOt/D,GAE5B,SADsB,MAATs/D,EAAgB,EAAIA,EAAMj/D,SACpBo4K,GAAYn5G,EAAOt/D,EAAO,IAAM,EAYrD,SAAS04K,GAAkBp5G,EAAOt/D,EAAO24K,GAIvC,IAHA,IAAI36J,GAAS,EACT3d,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,SAE9B2d,EAAQ3d,GACf,GAAIs4K,EAAW34K,EAAOs/D,EAAMthD,IAC1B,OAAO,EAGX,OAAO,EAYT,SAAS46J,GAASt5G,EAAO24G,GAKvB,IAJA,IAAIj6J,GAAS,EACT3d,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACnC8B,EAASP,MAAMvB,KAEV2d,EAAQ3d,GACf8B,EAAO6b,GAASi6J,EAAS34G,EAAMthD,GAAQA,EAAOshD,GAEhD,OAAOn9D,EAWT,SAAS02K,GAAUv5G,EAAOS,GAKxB,IAJA,IAAI/hD,GAAS,EACT3d,EAAS0/D,EAAO1/D,OAChBmvB,EAAS8vC,EAAMj/D,SAEV2d,EAAQ3d,GACfi/D,EAAM9vC,EAASxR,GAAS+hD,EAAO/hD,GAEjC,OAAOshD,EAeT,SAASw5G,GAAYx5G,EAAO24G,EAAUC,EAAaa,GACjD,IAAI/6J,GAAS,EACT3d,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OAKvC,IAHI04K,GAAa14K,IACf63K,EAAc54G,IAAQthD,MAEfA,EAAQ3d,GACf63K,EAAcD,EAASC,EAAa54G,EAAMthD,GAAQA,EAAOshD,GAE3D,OAAO44G,EAeT,SAASc,GAAiB15G,EAAO24G,EAAUC,EAAaa,GACtD,IAAI14K,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OAIvC,IAHI04K,GAAa14K,IACf63K,EAAc54G,IAAQj/D,IAEjBA,KACL63K,EAAcD,EAASC,EAAa54G,EAAMj/D,GAASA,EAAQi/D,GAE7D,OAAO44G,EAaT,SAASe,GAAU35G,EAAOH,GAIxB,IAHA,IAAInhD,GAAS,EACT3d,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,SAE9B2d,EAAQ3d,GACf,GAAI8+D,EAAUG,EAAMthD,GAAQA,EAAOshD,GACjC,OAAO,EAGX,OAAO,EAUT,IAAI45G,GAAYC,GAAa,UAmC7B,SAASC,GAAYl6G,EAAYC,EAAWk6G,GAC1C,IAAIl3K,EAOJ,OANAk3K,EAASn6G,GAAY,SAASl/D,EAAOQ,EAAK0+D,GACxC,GAAIC,EAAUn/D,EAAOQ,EAAK0+D,GAExB,OADA/8D,EAAS3B,GACF,KAGJ2B,EAcT,SAASm3K,GAAch6G,EAAOH,EAAW4lD,EAAWw0D,GAIlD,IAHA,IAAIl5K,EAASi/D,EAAMj/D,OACf2d,EAAQ+mG,GAAaw0D,EAAY,GAAK,GAElCA,EAAYv7J,MAAYA,EAAQ3d,GACtC,GAAI8+D,EAAUG,EAAMthD,GAAQA,EAAOshD,GACjC,OAAOthD,EAGX,OAAQ,EAYV,SAASy6J,GAAYn5G,EAAOt/D,EAAO+kH,GACjC,OAAO/kH,IAAUA,EAidnB,SAAuBs/D,EAAOt/D,EAAO+kH,GACnC,IAAI/mG,EAAQ+mG,EAAY,EACpB1kH,EAASi/D,EAAMj/D,OAEnB,OAAS2d,EAAQ3d,GACf,GAAIi/D,EAAMthD,KAAWhe,EACnB,OAAOge,EAGX,OAAQ,EAzdJw7J,CAAcl6G,EAAOt/D,EAAO+kH,GAC5Bu0D,GAAch6G,EAAOm6G,GAAW10D,GAatC,SAAS20D,GAAgBp6G,EAAOt/D,EAAO+kH,EAAW4zD,GAIhD,IAHA,IAAI36J,EAAQ+mG,EAAY,EACpB1kH,EAASi/D,EAAMj/D,SAEV2d,EAAQ3d,GACf,GAAIs4K,EAAWr5G,EAAMthD,GAAQhe,GAC3B,OAAOge,EAGX,OAAQ,EAUV,SAASy7J,GAAUz5K,GACjB,OAAOA,IAAUA,EAYnB,SAAS25K,GAASr6G,EAAO24G,GACvB,IAAI53K,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,OAAOA,EAAUu5K,GAAQt6G,EAAO24G,GAAY53K,EAAU4vK,EAUxD,SAASkJ,GAAa34K,GACpB,OAAO,SAAS8mE,GACd,OAAiB,MAAVA,EAAiB9nE,EAAY8nE,EAAO9mE,IAW/C,SAASq5K,GAAevyG,GACtB,OAAO,SAAS9mE,GACd,OAAiB,MAAV8mE,EAAiB9nE,EAAY8nE,EAAO9mE,IAiB/C,SAASs5K,GAAW56G,EAAY+4G,EAAUC,EAAaa,EAAWM,GAMhE,OALAA,EAASn6G,GAAY,SAASl/D,EAAOge,EAAOkhD,GAC1Cg5G,EAAca,GACTA,GAAY,EAAO/4K,GACpBi4K,EAASC,EAAal4K,EAAOge,EAAOkhD,MAEnCg5G,EAgCT,SAAS0B,GAAQt6G,EAAO24G,GAKtB,IAJA,IAAI91K,EACA6b,GAAS,EACT3d,EAASi/D,EAAMj/D,SAEV2d,EAAQ3d,GAAQ,CACvB,IAAIgtF,EAAU4qF,EAAS34G,EAAMthD,IACzBqvE,IAAY7tF,IACd2C,EAASA,IAAW3C,EAAY6tF,EAAWlrF,EAASkrF,GAGxD,OAAOlrF,EAYT,SAAS43K,GAAUl5D,EAAGo3D,GAIpB,IAHA,IAAIj6J,GAAS,EACT7b,EAASP,MAAMi/G,KAEV7iG,EAAQ6iG,GACf1+G,EAAO6b,GAASi6J,EAASj6J,GAE3B,OAAO7b,EAyBT,SAAS63K,GAASC,GAChB,OAAOA,EACHA,EAAOp1K,MAAM,EAAGq1K,GAAgBD,GAAU,GAAG/5K,QAAQ4yK,GAAa,IAClEmH,EAUN,SAASE,GAAUrC,GACjB,OAAO,SAAS93K,GACd,OAAO83K,EAAK93K,IAchB,SAASo6K,GAAW9yG,EAAQv/D,GAC1B,OAAO6wK,GAAS7wK,GAAO,SAASvH,GAC9B,OAAO8mE,EAAO9mE,MAYlB,SAAS65K,GAAS96E,EAAO/+F,GACvB,OAAO++F,EAAM+6E,IAAI95K,GAYnB,SAAS+5K,GAAgBC,EAAYC,GAInC,IAHA,IAAIz8J,GAAS,EACT3d,EAASm6K,EAAWn6K,SAEf2d,EAAQ3d,GAAUo4K,GAAYgC,EAAYD,EAAWx8J,GAAQ,IAAM,IAC5E,OAAOA,EAYT,SAAS08J,GAAcF,EAAYC,GAGjC,IAFA,IAAIz8J,EAAQw8J,EAAWn6K,OAEhB2d,KAAWy6J,GAAYgC,EAAYD,EAAWx8J,GAAQ,IAAM,IACnE,OAAOA,EAWT,SAAS28J,GAAar7G,EAAOq5B,GAI3B,IAHA,IAAIt4F,EAASi/D,EAAMj/D,OACf8B,EAAS,EAEN9B,KACDi/D,EAAMj/D,KAAYs4F,KAClBx2F,EAGN,OAAOA,EAWT,IAAIy4K,GAAef,GAjxBG,CAEpB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IACnC,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAER,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,MAouBxBgB,GAAiBhB,GAhuBH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAouBP,SAASiB,GAAiBC,GACxB,MAAO,KAAOvE,GAAcuE,GAsB9B,SAASC,GAAWf,GAClB,OAAO/D,GAAa9nK,KAAK6rK,GAsC3B,SAASgB,GAAWhzK,GAClB,IAAI+V,GAAS,EACT7b,EAASP,MAAMqG,EAAI+3E,MAKvB,OAHA/3E,EAAIzF,SAAQ,SAASxC,EAAOQ,GAC1B2B,IAAS6b,GAAS,CAACxd,EAAKR,MAEnBmC,EAWT,SAAS+4K,GAAQpD,EAAM9wI,GACrB,OAAO,SAAS0B,GACd,OAAOovI,EAAK9wI,EAAU0B,KAa1B,SAASyyI,GAAe77G,EAAOq5B,GAM7B,IALA,IAAI36E,GAAS,EACT3d,EAASi/D,EAAMj/D,OACfk4K,EAAW,EACXp2K,EAAS,KAEJ6b,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GACdhe,IAAU24F,GAAe34F,IAAUyvK,IACrCnwG,EAAMthD,GAASyxJ,EACfttK,EAAOo2K,KAAcv6J,GAGzB,OAAO7b,EAUT,SAASi5K,GAAW/vJ,GAClB,IAAIrN,GAAS,EACT7b,EAASP,MAAMypB,EAAI20D,MAKvB,OAHA30D,EAAI7oB,SAAQ,SAASxC,GACnBmC,IAAS6b,GAAShe,KAEbmC,EAUT,SAASk5K,GAAWhwJ,GAClB,IAAIrN,GAAS,EACT7b,EAASP,MAAMypB,EAAI20D,MAKvB,OAHA30D,EAAI7oB,SAAQ,SAASxC,GACnBmC,IAAS6b,GAAS,CAAChe,EAAOA,MAErBmC,EAoDT,SAASm5K,GAAWrB,GAClB,OAAOe,GAAWf,GAiDpB,SAAqBA,GACnB,IAAI93K,EAAS6zK,GAAUvvB,UAAY,EACnC,KAAOuvB,GAAU5nK,KAAK6rK,MAClB93K,EAEJ,OAAOA,EArDHo5K,CAAYtB,GACZf,GAAUe,GAUhB,SAASuB,GAAcvB,GACrB,OAAOe,GAAWf,GAmDpB,SAAwBA,GACtB,OAAOA,EAAO7zK,MAAM4vK,KAAc,GAnD9ByF,CAAexB,GA7kBrB,SAAsBA,GACpB,OAAOA,EAAO95K,MAAM,IA6kBhBu7K,CAAazB,GAWnB,SAASC,GAAgBD,GAGvB,IAFA,IAAIj8J,EAAQi8J,EAAO55K,OAEZ2d,KAAW+0J,GAAa3kK,KAAK6rK,EAAO9vE,OAAOnsF,MAClD,OAAOA,EAUT,IAAI29J,GAAmB9B,GA38BH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MA4gCX,IAs3eI+B,GAt3egB,SAASC,EAAal/J,GAIxC,IAAI/a,GAHJ+a,EAAqB,MAAXA,EAAkBugJ,GAAO0e,GAAElvB,SAASwQ,GAAKx7J,SAAUib,EAASi/J,GAAEE,KAAK5e,GAAMkZ,MAG/Dx0K,MAChB+K,EAAOgQ,EAAQhQ,KACfvI,EAAQuY,EAAQvY,MAChB3E,GAAWkd,EAAQld,SACnBsL,GAAO4R,EAAQ5R,KACfrJ,GAASib,EAAQjb,OACjB0G,GAASuU,EAAQvU,OACjBo6E,GAAS7lE,EAAQ6lE,OACjB+P,GAAY51E,EAAQ41E,UAGpBwpF,GAAan6K,EAAMlC,UACnBs8K,GAAYv8K,GAASC,UACrBu8K,GAAcv6K,GAAOhC,UAGrBw8K,GAAav/J,EAAQ,sBAGrBw/J,GAAeH,GAAUrrK,SAGzB3N,GAAiBi5K,GAAYj5K,eAG7Bo5K,GAAY,EAGZC,GAAc,WAChB,IAAIp9K,EAAM,SAASwpB,KAAKyzJ,IAAcA,GAAWz7K,MAAQy7K,GAAWz7K,KAAK67K,UAAY,IACrF,OAAOr9K,EAAO,iBAAmBA,EAAO,GAFxB,GAUds9K,GAAuBN,GAAYtrK,SAGnC6rK,GAAmBL,GAAar3K,KAAKpD,IAGrC+6K,GAAUvf,GAAK0e,EAGfc,GAAat0K,GAAO,IACtB+zK,GAAar3K,KAAK9B,IAAgB9C,QAAQ0yK,GAAc,QACvD1yK,QAAQ,yDAA0D,SAAW,KAI5Ey8K,GAAS3F,GAAgBr6J,EAAQggK,OAASn9K,EAC1CuzF,GAASp2E,EAAQo2E,OACjB5E,GAAaxxE,EAAQwxE,WACrByuF,GAAcD,GAASA,GAAOC,YAAcp9K,EAC5Cq9K,GAAe3B,GAAQx5K,GAAOsnE,eAAgBtnE,IAC9Co7K,GAAep7K,GAAOwgC,OACtB+5F,GAAuBggD,GAAYhgD,qBACnC3+G,GAASy+J,GAAWz+J,OACpBy/J,GAAmBhqF,GAASA,GAAOiqF,mBAAqBx9K,EACxDy9K,GAAclqF,GAASA,GAAOC,SAAWxzF,EACzC09K,GAAiBnqF,GAASA,GAAOoqF,YAAc39K,EAE/C0rB,GAAkB,WACpB,IACE,IAAI4sJ,EAAOsF,GAAU17K,GAAQ,kBAE7B,OADAo2K,EAAK,GAAI,GAAI,IACNA,EACP,MAAOzzK,KALW,GASlBg5K,GAAkB1gK,EAAQhZ,eAAiBu5J,GAAKv5J,cAAgBgZ,EAAQhZ,aACxE25K,GAAS3wK,GAAQA,EAAKm4B,MAAQo4H,GAAKvwJ,KAAKm4B,KAAOn4B,EAAKm4B,IACpDy4I,GAAgB5gK,EAAQ/Y,aAAes5J,GAAKt5J,YAAc+Y,EAAQ/Y,WAGlE45K,GAAazyK,GAAKu3D,KAClBm7G,GAAc1yK,GAAKC,MACnB0yK,GAAmBh8K,GAAOojG,sBAC1B64E,GAAiBhB,GAASA,GAAOz/D,SAAW19G,EAC5Co+K,GAAiBjhK,EAAQ7H,SACzB+oK,GAAa9B,GAAW5zK,KACxB21K,GAAa5C,GAAQx5K,GAAOjB,KAAMiB,IAClCq8K,GAAYhzK,GAAK8L,IACjBmnK,GAAYjzK,GAAK6L,IACjBqnK,GAAYtxK,EAAKm4B,IACjBo5I,GAAiBvhK,EAAQhD,SACzBwkK,GAAepzK,GAAKqmB,OACpBgtJ,GAAgBrC,GAAW5vD,QAG3BkyD,GAAWjB,GAAUzgK,EAAS,YAC9B2hK,GAAMlB,GAAUzgK,EAAS,OACzB8J,GAAU22J,GAAUzgK,EAAS,WAC7B4hK,GAAMnB,GAAUzgK,EAAS,OACzB6hK,GAAUpB,GAAUzgK,EAAS,WAC7B8hK,GAAerB,GAAU17K,GAAQ,UAGjCg9K,GAAUF,IAAW,IAAIA,GAGzBG,GAAY,GAGZC,GAAqBC,GAASR,IAC9BS,GAAgBD,GAASP,IACzBS,GAAoBF,GAASp4J,IAC7Bu4J,GAAgBH,GAASN,IACzBU,GAAoBJ,GAASL,IAG7BU,GAAcnsF,GAASA,GAAOrzF,UAAYF,EAC1C2/K,GAAgBD,GAAcA,GAAY3sG,QAAU/yE,EACpD4/K,GAAiBF,GAAcA,GAAYvuK,SAAWnR,EAyH1D,SAAS6/K,GAAOr/K,GACd,GAAIs/K,GAAat/K,KAAW6B,GAAQ7B,MAAYA,aAAiBu/K,IAAc,CAC7E,GAAIv/K,aAAiBw/K,GACnB,OAAOx/K,EAET,GAAIgD,GAAe8B,KAAK9E,EAAO,eAC7B,OAAOy/K,GAAaz/K,GAGxB,OAAO,IAAIw/K,GAAcx/K,GAW3B,IAAI0/K,GAAc,WAChB,SAASp4G,KACT,OAAO,SAASq4G,GACd,IAAK7+K,GAAS6+K,GACZ,MAAO,GAET,GAAI7C,GACF,OAAOA,GAAa6C,GAEtBr4G,EAAO5nE,UAAYigL,EACnB,IAAIx9K,EAAS,IAAImlE,EAEjB,OADAA,EAAO5nE,UAAYF,EACZ2C,GAZO,GAqBlB,SAASy9K,MAWT,SAASJ,GAAcx/K,EAAO6/K,GAC5Br8K,KAAKs8K,YAAc9/K,EACnBwD,KAAKu8K,YAAc,GACnBv8K,KAAKw8K,YAAcH,EACnBr8K,KAAKy8K,UAAY,EACjBz8K,KAAK08K,WAAa1gL,EAgFpB,SAAS+/K,GAAYv/K,GACnBwD,KAAKs8K,YAAc9/K,EACnBwD,KAAKu8K,YAAc,GACnBv8K,KAAK28K,QAAU,EACf38K,KAAK48K,cAAe,EACpB58K,KAAK68K,cAAgB,GACrB78K,KAAK88K,cAAgBpQ,EACrB1sK,KAAK+8K,UAAY,GAgHnB,SAASC,GAAK54D,GACZ,IAAI5pG,GAAS,EACT3d,EAAoB,MAAXunH,EAAkB,EAAIA,EAAQvnH,OAG3C,IADAmD,KAAK84I,UACIt+H,EAAQ3d,GAAQ,CACvB,IAAIwnH,EAAQD,EAAQ5pG,GACpBxa,KAAK6nB,IAAIw8F,EAAM,GAAIA,EAAM,KAiG7B,SAAS44D,GAAU74D,GACjB,IAAI5pG,GAAS,EACT3d,EAAoB,MAAXunH,EAAkB,EAAIA,EAAQvnH,OAG3C,IADAmD,KAAK84I,UACIt+H,EAAQ3d,GAAQ,CACvB,IAAIwnH,EAAQD,EAAQ5pG,GACpBxa,KAAK6nB,IAAIw8F,EAAM,GAAIA,EAAM,KA8G7B,SAAS64D,GAAS94D,GAChB,IAAI5pG,GAAS,EACT3d,EAAoB,MAAXunH,EAAkB,EAAIA,EAAQvnH,OAG3C,IADAmD,KAAK84I,UACIt+H,EAAQ3d,GAAQ,CACvB,IAAIwnH,EAAQD,EAAQ5pG,GACpBxa,KAAK6nB,IAAIw8F,EAAM,GAAIA,EAAM,KAiG7B,SAAS84D,GAAS5gH,GAChB,IAAI/hD,GAAS,EACT3d,EAAmB,MAAV0/D,EAAiB,EAAIA,EAAO1/D,OAGzC,IADAmD,KAAKo9K,SAAW,IAAIF,KACX1iK,EAAQ3d,GACfmD,KAAK+oB,IAAIwzC,EAAO/hD,IA6CpB,SAAS6iK,GAAMj5D,GACb,IAAIvpG,EAAO7a,KAAKo9K,SAAW,IAAIH,GAAU74D,GACzCpkH,KAAKw8E,KAAO3hE,EAAK2hE,KAqGnB,SAAS8gG,GAAc9gL,EAAO+gL,GAC5B,IAAIC,EAAQn/K,GAAQ7B,GAChBihL,GAASD,GAASE,GAAYlhL,GAC9BmhL,GAAUH,IAAUC,GAAS/jE,GAASl9G,GACtCohL,GAAUJ,IAAUC,IAAUE,GAAUtJ,GAAa73K,GACrDqhL,EAAcL,GAASC,GAASE,GAAUC,EAC1Cj/K,EAASk/K,EAActH,GAAU/5K,EAAMK,OAAQmiF,IAAU,GACzDniF,EAAS8B,EAAO9B,OAEpB,IAAK,IAAIG,KAAOR,GACT+gL,IAAa/9K,GAAe8B,KAAK9E,EAAOQ,IACvC6gL,IAEQ,UAAP7gL,GAEC2gL,IAAkB,UAAP3gL,GAA0B,UAAPA,IAE9B4gL,IAAkB,UAAP5gL,GAA0B,cAAPA,GAA8B,cAAPA,IAEtD8gL,GAAQ9gL,EAAKH,KAElB8B,EAAOiD,KAAK5E,GAGhB,OAAO2B,EAUT,SAASo/K,GAAYjiH,GACnB,IAAIj/D,EAASi/D,EAAMj/D,OACnB,OAAOA,EAASi/D,EAAMkiH,GAAW,EAAGnhL,EAAS,IAAMb,EAWrD,SAASiiL,GAAgBniH,EAAOuhD,GAC9B,OAAO6gE,GAAYC,GAAUriH,GAAQsiH,GAAU/gE,EAAG,EAAGvhD,EAAMj/D,SAU7D,SAASwhL,GAAaviH,GACpB,OAAOoiH,GAAYC,GAAUriH,IAY/B,SAASwiH,GAAiBx6G,EAAQ9mE,EAAKR,IAChCA,IAAUR,IAAcuiL,GAAGz6G,EAAO9mE,GAAMR,IACxCA,IAAUR,KAAegB,KAAO8mE,KACnC06G,GAAgB16G,EAAQ9mE,EAAKR,GAcjC,SAASm+G,GAAY72C,EAAQ9mE,EAAKR,GAChC,IAAI+sC,EAAWu6B,EAAO9mE,GAChBwC,GAAe8B,KAAKwiE,EAAQ9mE,IAAQuhL,GAAGh1I,EAAU/sC,KAClDA,IAAUR,GAAegB,KAAO8mE,IACnC06G,GAAgB16G,EAAQ9mE,EAAKR,GAYjC,SAASiiL,GAAa3iH,EAAO9+D,GAE3B,IADA,IAAIH,EAASi/D,EAAMj/D,OACZA,KACL,GAAI0hL,GAAGziH,EAAMj/D,GAAQ,GAAIG,GACvB,OAAOH,EAGX,OAAQ,EAcV,SAAS6hL,GAAehjH,EAAY84G,EAAQC,EAAUC,GAIpD,OAHAiK,GAASjjH,GAAY,SAASl/D,EAAOQ,EAAK0+D,GACxC84G,EAAOE,EAAal4K,EAAOi4K,EAASj4K,GAAQk/D,MAEvCg5G,EAYT,SAASkK,GAAW96G,EAAQlmE,GAC1B,OAAOkmE,GAAU+6G,GAAWjhL,EAAQX,GAAKW,GAASkmE,GAyBpD,SAAS06G,GAAgB16G,EAAQ9mE,EAAKR,GACzB,aAAPQ,GAAsB0qB,GACxBA,GAAeo8C,EAAQ9mE,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASR,EACT,UAAY,IAGdsnE,EAAO9mE,GAAOR,EAYlB,SAASsiL,GAAOh7G,EAAQi7G,GAMtB,IALA,IAAIvkK,GAAS,EACT3d,EAASkiL,EAAMliL,OACf8B,EAASP,EAAMvB,GACfkjG,EAAiB,MAAVj8B,IAEFtpD,EAAQ3d,GACf8B,EAAO6b,GAASulF,EAAO/jG,EAAY2rB,GAAIm8C,EAAQi7G,EAAMvkK,IAEvD,OAAO7b,EAYT,SAASy/K,GAAUY,EAAQC,EAAOC,GAShC,OARIF,IAAWA,IACTE,IAAUljL,IACZgjL,EAASA,GAAUE,EAAQF,EAASE,GAElCD,IAAUjjL,IACZgjL,EAASA,GAAUC,EAAQD,EAASC,IAGjCD,EAmBT,SAASG,GAAU3iL,EAAO4iL,EAASC,EAAYriL,EAAK8mE,EAAQhjE,GAC1D,IAAInC,EACA2gL,EArkFc,EAqkFLF,EACTG,EArkFc,EAqkFLH,EACTI,EArkFiB,EAqkFRJ,EAKb,GAHIC,IACF1gL,EAASmlE,EAASu7G,EAAW7iL,EAAOQ,EAAK8mE,EAAQhjE,GAASu+K,EAAW7iL,IAEnEmC,IAAW3C,EACb,OAAO2C,EAET,IAAKrB,GAASd,GACZ,OAAOA,EAET,IAAIghL,EAAQn/K,GAAQ7B,GACpB,GAAIghL,GAEF,GADA7+K,EA68GJ,SAAwBm9D,GACtB,IAAIj/D,EAASi/D,EAAMj/D,OACf8B,EAAS,IAAIm9D,EAAMv+D,YAAYV,GAG/BA,GAA6B,iBAAZi/D,EAAM,IAAkBt8D,GAAe8B,KAAKw6D,EAAO,WACtEn9D,EAAO6b,MAAQshD,EAAMthD,MACrB7b,EAAOqiE,MAAQlF,EAAMkF,OAEvB,OAAOriE,EAt9GI8gL,CAAejjL,IACnB8iL,EACH,OAAOnB,GAAU3hL,EAAOmC,OAErB,CACL,IAAIo3F,EAAM2pF,GAAOljL,GACbmjL,EAAS5pF,GAAOk3E,GAAWl3E,GAAOm3E,EAEtC,GAAIxzD,GAASl9G,GACX,OAAOojL,GAAYpjL,EAAO8iL,GAE5B,GAAIvpF,GAAOs3E,GAAat3E,GAAO62E,GAAY+S,IAAW77G,GAEpD,GADAnlE,EAAU4gL,GAAUI,EAAU,GAAKE,GAAgBrjL,IAC9C8iL,EACH,OAAOC,EA+nEf,SAAuB3hL,EAAQkmE,GAC7B,OAAO+6G,GAAWjhL,EAAQkiL,GAAaliL,GAASkmE,GA/nEtCi8G,CAAcvjL,EAnH1B,SAAsBsnE,EAAQlmE,GAC5B,OAAOkmE,GAAU+6G,GAAWjhL,EAAQoiL,GAAOpiL,GAASkmE,GAkHrBm8G,CAAathL,EAAQnC,IAknEtD,SAAqBoB,EAAQkmE,GAC3B,OAAO+6G,GAAWjhL,EAAQsiL,GAAWtiL,GAASkmE,GAlnEpCq8G,CAAY3jL,EAAOoiL,GAAWjgL,EAAQnC,QAEvC,CACL,IAAKu2K,GAAch9E,GACjB,OAAOjyB,EAAStnE,EAAQ,GAE1BmC,EA49GN,SAAwBmlE,EAAQiyB,EAAKupF,GACnC,IAAIc,EAAOt8G,EAAOvmE,YAClB,OAAQw4F,GACN,KAAK63E,EACH,OAAOyS,GAAiBv8G,GAE1B,KAAKgpG,EACL,KAAKC,EACH,OAAO,IAAIqT,GAAMt8G,GAEnB,KAAK+pG,EACH,OA5nDN,SAAuByS,EAAUhB,GAC/B,IAAItlE,EAASslE,EAASe,GAAiBC,EAAStmE,QAAUsmE,EAAStmE,OACnE,OAAO,IAAIsmE,EAAS/iL,YAAYy8G,EAAQsmE,EAASC,WAAYD,EAASE,YA0nD3DC,CAAc38G,EAAQw7G,GAE/B,KAAKxR,EAAY,KAAKC,EACtB,KAAKC,EAAS,KAAKC,EAAU,KAAKC,EAClC,KAAKC,EAAU,KAAKC,EAAiB,KAAKC,EAAW,KAAKC,EACxD,OAAOoS,GAAgB58G,EAAQw7G,GAEjC,KAAKnS,EACH,OAAO,IAAIiT,EAEb,KAAKhT,EACL,KAAKK,EACH,OAAO,IAAI2S,EAAKt8G,GAElB,KAAKypG,EACH,OA/nDN,SAAqBtnE,GACnB,IAAItnG,EAAS,IAAIsnG,EAAO1oG,YAAY0oG,EAAOroG,OAAQmyK,GAAQ9qJ,KAAKghF,IAEhE,OADAtnG,EAAOskJ,UAAYh9C,EAAOg9C,UACnBtkJ,EA4nDIgiL,CAAY78G,GAErB,KAAK0pG,EACH,OAAO,IAAI4S,EAEb,KAAK1S,EACH,OAxnDe9tJ,EAwnDIkkD,EAvnDhB63G,GAAgBz9K,GAAOy9K,GAAcr6K,KAAKse,IAAW,GAD9D,IAAqBA,EAp4DNghK,CAAepkL,EAAOu5F,EAAKupF,IAIxCx+K,IAAUA,EAAQ,IAAIu8K,IACtB,IAAIwD,EAAU//K,EAAM6mB,IAAInrB,GACxB,GAAIqkL,EACF,OAAOA,EAET//K,EAAM+mB,IAAIrrB,EAAOmC,GAEbw1K,GAAM33K,GACRA,EAAMwC,SAAQ,SAAS8hL,GACrBniL,EAAOoqB,IAAIo2J,GAAU2B,EAAU1B,EAASC,EAAYyB,EAAUtkL,EAAOsE,OAE9DizK,GAAMv3K,IACfA,EAAMwC,SAAQ,SAAS8hL,EAAU9jL,GAC/B2B,EAAOkpB,IAAI7qB,EAAKmiL,GAAU2B,EAAU1B,EAASC,EAAYriL,EAAKR,EAAOsE,OAIzE,IAIIyD,EAAQi5K,EAAQxhL,GAJLwjL,EACVD,EAASwB,GAAeC,GACxBzB,EAASS,GAAS/iL,IAEkBT,GASzC,OARAm4K,GAAUpwK,GAAS/H,GAAO,SAASskL,EAAU9jL,GACvCuH,IAEFu8K,EAAWtkL,EADXQ,EAAM8jL,IAIRnmE,GAAYh8G,EAAQ3B,EAAKmiL,GAAU2B,EAAU1B,EAASC,EAAYriL,EAAKR,EAAOsE,OAEzEnC,EAyBT,SAASsiL,GAAen9G,EAAQlmE,EAAQ2G,GACtC,IAAI1H,EAAS0H,EAAM1H,OACnB,GAAc,MAAVinE,EACF,OAAQjnE,EAGV,IADAinE,EAAS5lE,GAAO4lE,GACTjnE,KAAU,CACf,IAAIG,EAAMuH,EAAM1H,GACZ8+D,EAAY/9D,EAAOZ,GACnBR,EAAQsnE,EAAO9mE,GAEnB,GAAKR,IAAUR,KAAegB,KAAO8mE,KAAanI,EAAUn/D,GAC1D,OAAO,EAGX,OAAO,EAaT,SAAS0kL,GAAU5M,EAAM6M,EAAMlhL,GAC7B,GAAmB,mBAARq0K,EACT,MAAM,IAAIvlF,GAAUg9E,GAEtB,OAAO3rK,IAAW,WAAak0K,EAAKl4K,MAAMJ,EAAWiE,KAAUkhL,GAcjE,SAASC,GAAetlH,EAAOS,EAAQk4G,EAAUU,GAC/C,IAAI36J,GAAS,EACT6mK,EAAWrM,GACXsM,GAAW,EACXzkL,EAASi/D,EAAMj/D,OACf8B,EAAS,GACT4iL,EAAehlH,EAAO1/D,OAE1B,IAAKA,EACH,OAAO8B,EAEL81K,IACFl4G,EAAS64G,GAAS74G,EAAQo6G,GAAUlC,KAElCU,GACFkM,EAAWnM,GACXoM,GAAW,GAEJ/kH,EAAO1/D,QAtvFG,MAuvFjBwkL,EAAWxK,GACXyK,GAAW,EACX/kH,EAAS,IAAI4gH,GAAS5gH,IAExBilH,EACA,OAAShnK,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GACdinK,EAAuB,MAAZhN,EAAmBj4K,EAAQi4K,EAASj4K,GAGnD,GADAA,EAAS24K,GAAwB,IAAV34K,EAAeA,EAAQ,EAC1C8kL,GAAYG,IAAaA,EAAU,CAErC,IADA,IAAIC,EAAcH,EACXG,KACL,GAAInlH,EAAOmlH,KAAiBD,EAC1B,SAASD,EAGb7iL,EAAOiD,KAAKpF,QAEJ6kL,EAAS9kH,EAAQklH,EAAUtM,IACnCx2K,EAAOiD,KAAKpF,GAGhB,OAAOmC,EAjkCTk9K,GAAO8F,iBAAmB,CAQxB,OAAU7S,EAQV,SAAYC,GAQZ,YAAeC,GAQf,SAAY,GAQZ,QAAW,CAQT,EAAK6M,KAKTA,GAAO3/K,UAAYkgL,GAAWlgL,UAC9B2/K,GAAO3/K,UAAUqB,YAAcs+K,GAE/BG,GAAc9/K,UAAYggL,GAAWE,GAAWlgL,WAChD8/K,GAAc9/K,UAAUqB,YAAcy+K,GAsHtCD,GAAY7/K,UAAYggL,GAAWE,GAAWlgL,WAC9C6/K,GAAY7/K,UAAUqB,YAAcw+K,GAoGpCiB,GAAK9gL,UAAU48I,MAvEf,WACE94I,KAAKo9K,SAAWnC,GAAeA,GAAa,MAAQ,GACpDj7K,KAAKw8E,KAAO,GAsEdwgG,GAAK9gL,UAAkB,OAzDvB,SAAoBc,GAClB,IAAI2B,EAASqB,KAAK82K,IAAI95K,WAAegD,KAAKo9K,SAASpgL,GAEnD,OADAgD,KAAKw8E,MAAQ79E,EAAS,EAAI,EACnBA,GAuDTq+K,GAAK9gL,UAAUyrB,IA3Cf,SAAiB3qB,GACf,IAAI6d,EAAO7a,KAAKo9K,SAChB,GAAInC,GAAc,CAChB,IAAIt8K,EAASkc,EAAK7d,GAClB,OAAO2B,IAAWqtK,EAAiBhwK,EAAY2C,EAEjD,OAAOa,GAAe8B,KAAKuZ,EAAM7d,GAAO6d,EAAK7d,GAAOhB,GAsCtDghL,GAAK9gL,UAAU46K,IA1Bf,SAAiB95K,GACf,IAAI6d,EAAO7a,KAAKo9K,SAChB,OAAOnC,GAAgBpgK,EAAK7d,KAAShB,EAAawD,GAAe8B,KAAKuZ,EAAM7d,IAyB9EggL,GAAK9gL,UAAU2rB,IAZf,SAAiB7qB,EAAKR,GACpB,IAAIqe,EAAO7a,KAAKo9K,SAGhB,OAFAp9K,KAAKw8E,MAAQx8E,KAAK82K,IAAI95K,GAAO,EAAI,EACjC6d,EAAK7d,GAAQi+K,IAAgBz+K,IAAUR,EAAagwK,EAAiBxvK,EAC9DwD,MAyHTi9K,GAAU/gL,UAAU48I,MApFpB,WACE94I,KAAKo9K,SAAW,GAChBp9K,KAAKw8E,KAAO,GAmFdygG,GAAU/gL,UAAkB,OAvE5B,SAAyBc,GACvB,IAAI6d,EAAO7a,KAAKo9K,SACZ5iK,EAAQikK,GAAa5jK,EAAM7d,GAE/B,QAAIwd,EAAQ,KAIRA,GADYK,EAAKhe,OAAS,EAE5Bge,EAAKyiG,MAELxjG,GAAOxY,KAAKuZ,EAAML,EAAO,KAEzBxa,KAAKw8E,MACA,IA0DTygG,GAAU/gL,UAAUyrB,IA9CpB,SAAsB3qB,GACpB,IAAI6d,EAAO7a,KAAKo9K,SACZ5iK,EAAQikK,GAAa5jK,EAAM7d,GAE/B,OAAOwd,EAAQ,EAAIxe,EAAY6e,EAAKL,GAAO,IA2C7CyiK,GAAU/gL,UAAU46K,IA/BpB,SAAsB95K,GACpB,OAAOyhL,GAAaz+K,KAAKo9K,SAAUpgL,IAAQ,GA+B7CigL,GAAU/gL,UAAU2rB,IAlBpB,SAAsB7qB,EAAKR,GACzB,IAAIqe,EAAO7a,KAAKo9K,SACZ5iK,EAAQikK,GAAa5jK,EAAM7d,GAQ/B,OANIwd,EAAQ,KACRxa,KAAKw8E,KACP3hE,EAAKjZ,KAAK,CAAC5E,EAAKR,KAEhBqe,EAAKL,GAAO,GAAKhe,EAEZwD,MA2GTk9K,GAAShhL,UAAU48I,MAtEnB,WACE94I,KAAKw8E,KAAO,EACZx8E,KAAKo9K,SAAW,CACd,KAAQ,IAAIJ,GACZ,IAAO,IAAKlC,IAAOmC,IACnB,OAAU,IAAID,KAkElBE,GAAShhL,UAAkB,OArD3B,SAAwBc,GACtB,IAAI2B,EAASijL,GAAW5hL,KAAMhD,GAAa,OAAEA,GAE7C,OADAgD,KAAKw8E,MAAQ79E,EAAS,EAAI,EACnBA,GAmDTu+K,GAAShhL,UAAUyrB,IAvCnB,SAAqB3qB,GACnB,OAAO4kL,GAAW5hL,KAAMhD,GAAK2qB,IAAI3qB,IAuCnCkgL,GAAShhL,UAAU46K,IA3BnB,SAAqB95K,GACnB,OAAO4kL,GAAW5hL,KAAMhD,GAAK85K,IAAI95K,IA2BnCkgL,GAAShhL,UAAU2rB,IAdnB,SAAqB7qB,EAAKR,GACxB,IAAIqe,EAAO+mK,GAAW5hL,KAAMhD,GACxBw/E,EAAO3hE,EAAK2hE,KAIhB,OAFA3hE,EAAKgN,IAAI7qB,EAAKR,GACdwD,KAAKw8E,MAAQ3hE,EAAK2hE,MAAQA,EAAO,EAAI,EAC9Bx8E,MA2DTm9K,GAASjhL,UAAU6sB,IAAMo0J,GAASjhL,UAAU0F,KAnB5C,SAAqBpF,GAEnB,OADAwD,KAAKo9K,SAASv1J,IAAIrrB,EAAOwvK,GAClBhsK,MAkBTm9K,GAASjhL,UAAU46K,IANnB,SAAqBt6K,GACnB,OAAOwD,KAAKo9K,SAAStG,IAAIt6K,IAuG3B6gL,GAAMnhL,UAAU48I,MA3EhB,WACE94I,KAAKo9K,SAAW,IAAIH,GACpBj9K,KAAKw8E,KAAO,GA0Ed6gG,GAAMnhL,UAAkB,OA9DxB,SAAqBc,GACnB,IAAI6d,EAAO7a,KAAKo9K,SACZz+K,EAASkc,EAAa,OAAE7d,GAG5B,OADAgD,KAAKw8E,KAAO3hE,EAAK2hE,KACV79E,GA0DT0+K,GAAMnhL,UAAUyrB,IA9ChB,SAAkB3qB,GAChB,OAAOgD,KAAKo9K,SAASz1J,IAAI3qB,IA8C3BqgL,GAAMnhL,UAAU46K,IAlChB,SAAkB95K,GAChB,OAAOgD,KAAKo9K,SAAStG,IAAI95K,IAkC3BqgL,GAAMnhL,UAAU2rB,IArBhB,SAAkB7qB,EAAKR,GACrB,IAAIqe,EAAO7a,KAAKo9K,SAChB,GAAIviK,aAAgBoiK,GAAW,CAC7B,IAAI4E,EAAQhnK,EAAKuiK,SACjB,IAAKtC,IAAQ+G,EAAMhlL,OAASilL,IAG1B,OAFAD,EAAMjgL,KAAK,CAAC5E,EAAKR,IACjBwD,KAAKw8E,OAAS3hE,EAAK2hE,KACZx8E,KAET6a,EAAO7a,KAAKo9K,SAAW,IAAIF,GAAS2E,GAItC,OAFAhnK,EAAKgN,IAAI7qB,EAAKR,GACdwD,KAAKw8E,KAAO3hE,EAAK2hE,KACVx8E,MAscT,IAAI2+K,GAAWoD,GAAeC,IAU1BC,GAAgBF,GAAeG,IAAiB,GAWpD,SAASC,GAAUzmH,EAAYC,GAC7B,IAAIh9D,GAAS,EAKb,OAJAggL,GAASjjH,GAAY,SAASl/D,EAAOge,EAAOkhD,GAE1C,OADA/8D,IAAWg9D,EAAUn/D,EAAOge,EAAOkhD,MAG9B/8D,EAaT,SAASyjL,GAAatmH,EAAO24G,EAAUU,GAIrC,IAHA,IAAI36J,GAAS,EACT3d,EAASi/D,EAAMj/D,SAEV2d,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GACdqvE,EAAU4qF,EAASj4K,GAEvB,GAAe,MAAXqtF,IAAoB43F,IAAazlL,EAC5B6tF,IAAYA,IAAYw4F,GAASx4F,GAClCsrF,EAAWtrF,EAAS43F,IAE1B,IAAIA,EAAW53F,EACXlrF,EAASnC,EAGjB,OAAOmC,EAuCT,SAAS2jL,GAAW5mH,EAAYC,GAC9B,IAAIh9D,EAAS,GAMb,OALAggL,GAASjjH,GAAY,SAASl/D,EAAOge,EAAOkhD,GACtCC,EAAUn/D,EAAOge,EAAOkhD,IAC1B/8D,EAAOiD,KAAKpF,MAGTmC,EAcT,SAAS4jL,GAAYzmH,EAAOgK,EAAOnK,EAAW6mH,EAAU7jL,GACtD,IAAI6b,GAAS,EACT3d,EAASi/D,EAAMj/D,OAKnB,IAHA8+D,IAAcA,EAAY8mH,IAC1B9jL,IAAWA,EAAS,MAEX6b,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GACdsrD,EAAQ,GAAKnK,EAAUn/D,GACrBspE,EAAQ,EAEVy8G,GAAY/lL,EAAOspE,EAAQ,EAAGnK,EAAW6mH,EAAU7jL,GAEnD02K,GAAU12K,EAAQnC,GAEVgmL,IACV7jL,EAAOA,EAAO9B,QAAUL,GAG5B,OAAOmC,EAcT,IAAI+jL,GAAUC,KAYVC,GAAeD,IAAc,GAUjC,SAASX,GAAWl+G,EAAQ2wG,GAC1B,OAAO3wG,GAAU4+G,GAAQ5+G,EAAQ2wG,EAAUx3K,IAW7C,SAASilL,GAAgBp+G,EAAQ2wG,GAC/B,OAAO3wG,GAAU8+G,GAAa9+G,EAAQ2wG,EAAUx3K,IAYlD,SAAS4lL,GAAc/+G,EAAQv/D,GAC7B,OAAOuwK,GAAYvwK,GAAO,SAASvH,GACjC,OAAOw8G,GAAW11C,EAAO9mE,OAY7B,SAAS8lL,GAAQh/G,EAAQwvB,GAMvB,IAHA,IAAI94E,EAAQ,EACR3d,GAHJy2F,EAAOyvF,GAASzvF,EAAMxvB,IAGJjnE,OAED,MAAVinE,GAAkBtpD,EAAQ3d,GAC/BinE,EAASA,EAAOk/G,GAAM1vF,EAAK94E,OAE7B,OAAQA,GAASA,GAAS3d,EAAUinE,EAAS9nE,EAc/C,SAASinL,GAAen/G,EAAQo/G,EAAUC,GACxC,IAAIxkL,EAASukL,EAASp/G,GACtB,OAAOzlE,GAAQylE,GAAUnlE,EAAS02K,GAAU12K,EAAQwkL,EAAYr/G,IAUlE,SAASs/G,GAAW5mL,GAClB,OAAa,MAATA,EACKA,IAAUR,EAn7FJ,qBARL,gBA67FF09K,IAAkBA,MAAkBx7K,GAAO1B,GA23FrD,SAAmBA,GACjB,IAAI6mL,EAAQ7jL,GAAe8B,KAAK9E,EAAOk9K,IACnC3jF,EAAMv5F,EAAMk9K,IAEhB,IACEl9K,EAAMk9K,IAAkB19K,EACxB,IAAIsnL,GAAW,EACf,MAAOziL,IAET,IAAIlC,EAASo6K,GAAqBz3K,KAAK9E,GACnC8mL,IACED,EACF7mL,EAAMk9K,IAAkB3jF,SAEjBv5F,EAAMk9K,KAGjB,OAAO/6K,EA34FH4kL,CAAU/mL,GA+5GhB,SAAwBA,GACtB,OAAOu8K,GAAqBz3K,KAAK9E,GA/5G7BgnL,CAAehnL,GAYrB,SAASinL,GAAOjnL,EAAOknL,GACrB,OAAOlnL,EAAQknL,EAWjB,SAASC,GAAQ7/G,EAAQ9mE,GACvB,OAAiB,MAAV8mE,GAAkBtkE,GAAe8B,KAAKwiE,EAAQ9mE,GAWvD,SAAS4mL,GAAU9/G,EAAQ9mE,GACzB,OAAiB,MAAV8mE,GAAkB9mE,KAAOkB,GAAO4lE,GA0BzC,SAAS+/G,GAAiBC,EAAQrP,EAAUU,GAS1C,IARA,IAAIkM,EAAWlM,EAAaD,GAAoBF,GAC5Cn4K,EAASinL,EAAO,GAAGjnL,OACnBknL,EAAYD,EAAOjnL,OACnBmnL,EAAWD,EACXE,EAAS7lL,EAAM2lL,GACfG,EAAYtrK,IACZja,EAAS,GAENqlL,KAAY,CACjB,IAAIloH,EAAQgoH,EAAOE,GACfA,GAAYvP,IACd34G,EAAQs5G,GAASt5G,EAAO66G,GAAUlC,KAEpCyP,EAAY1J,GAAU1+G,EAAMj/D,OAAQqnL,GACpCD,EAAOD,IAAa7O,IAAeV,GAAa53K,GAAU,KAAOi/D,EAAMj/D,QAAU,KAC7E,IAAIsgL,GAAS6G,GAAYloH,GACzB9/D,EAEN8/D,EAAQgoH,EAAO,GAEf,IAAItpK,GAAS,EACT2pK,EAAOF,EAAO,GAElBzC,EACA,OAAShnK,EAAQ3d,GAAU8B,EAAO9B,OAASqnL,GAAW,CACpD,IAAI1nL,EAAQs/D,EAAMthD,GACdinK,EAAWhN,EAAWA,EAASj4K,GAASA,EAG5C,GADAA,EAAS24K,GAAwB,IAAV34K,EAAeA,EAAQ,IACxC2nL,EACEtN,GAASsN,EAAM1C,GACfJ,EAAS1iL,EAAQ8iL,EAAUtM,IAC5B,CAEL,IADA6O,EAAWD,IACFC,GAAU,CACjB,IAAIjoF,EAAQkoF,EAAOD,GACnB,KAAMjoF,EACE86E,GAAS96E,EAAO0lF,GAChBJ,EAASyC,EAAOE,GAAWvC,EAAUtM,IAE3C,SAASqM,EAGT2C,GACFA,EAAKviL,KAAK6/K,GAEZ9iL,EAAOiD,KAAKpF,IAGhB,OAAOmC,EA+BT,SAASylL,GAAWtgH,EAAQwvB,EAAMrzF,GAGhC,IAAIq0K,EAAiB,OADrBxwG,EAASvjE,GAAOujE,EADhBwvB,EAAOyvF,GAASzvF,EAAMxvB,KAEMA,EAASA,EAAOk/G,GAAMllE,GAAKxqB,KACvD,OAAe,MAARghF,EAAet4K,EAAYI,GAAMk4K,EAAMxwG,EAAQ7jE,GAUxD,SAASokL,GAAgB7nL,GACvB,OAAOs/K,GAAat/K,IAAU4mL,GAAW5mL,IAAUowK,EAuCrD,SAAS0X,GAAY9nL,EAAOknL,EAAOtE,EAASC,EAAYv+K,GACtD,OAAItE,IAAUknL,IAGD,MAATlnL,GAA0B,MAATknL,IAAmB5H,GAAat/K,KAAWs/K,GAAa4H,GACpElnL,IAAUA,GAASknL,IAAUA,EAmBxC,SAAyB5/G,EAAQ4/G,EAAOtE,EAASC,EAAYkF,EAAWzjL,GACtE,IAAI0jL,EAAWnmL,GAAQylE,GACnB2gH,EAAWpmL,GAAQqlL,GACnBgB,EAASF,EAAW3X,EAAW6S,GAAO57G,GACtC6gH,EAASF,EAAW5X,EAAW6S,GAAOgE,GAKtCkB,GAHJF,EAASA,GAAU9X,EAAUS,EAAYqX,IAGhBrX,EACrBwX,GAHJF,EAASA,GAAU/X,EAAUS,EAAYsX,IAGhBtX,EACrByX,EAAYJ,GAAUC,EAE1B,GAAIG,GAAaprE,GAAS51C,GAAS,CACjC,IAAK41C,GAASgqE,GACZ,OAAO,EAETc,GAAW,EACXI,GAAW,EAEb,GAAIE,IAAcF,EAEhB,OADA9jL,IAAUA,EAAQ,IAAIu8K,IACdmH,GAAYnQ,GAAavwG,GAC7BihH,GAAYjhH,EAAQ4/G,EAAOtE,EAASC,EAAYkF,EAAWzjL,GA81EnE,SAAoBgjE,EAAQ4/G,EAAO3tF,EAAKqpF,EAASC,EAAYkF,EAAWzjL,GACtE,OAAQi1F,GACN,KAAK83E,EACH,GAAK/pG,EAAO08G,YAAckD,EAAMlD,YAC3B18G,EAAOy8G,YAAcmD,EAAMnD,WAC9B,OAAO,EAETz8G,EAASA,EAAOk2C,OAChB0pE,EAAQA,EAAM1pE,OAEhB,KAAK4zD,EACH,QAAK9pG,EAAO08G,YAAckD,EAAMlD,aAC3B+D,EAAU,IAAI55F,GAAW7mB,GAAS,IAAI6mB,GAAW+4F,KAKxD,KAAK5W,EACL,KAAKC,EACL,KAAKK,EAGH,OAAOmR,IAAIz6G,GAAS4/G,GAEtB,KAAK1W,EACH,OAAOlpG,EAAO1pD,MAAQspK,EAAMtpK,MAAQ0pD,EAAOnjE,SAAW+iL,EAAM/iL,QAE9D,KAAK4sK,EACL,KAAKE,EAIH,OAAO3pG,GAAW4/G,EAAQ,GAE5B,KAAKvW,EACH,IAAI6X,EAAUvN,GAEhB,KAAKjK,EACH,IAAIyX,EAxnLe,EAwnLH7F,EAGhB,GAFA4F,IAAYA,EAAUpN,IAElB9zG,EAAO0Y,MAAQknG,EAAMlnG,OAASyoG,EAChC,OAAO,EAGT,IAAIpE,EAAU//K,EAAM6mB,IAAIm8C,GACxB,GAAI+8G,EACF,OAAOA,GAAW6C,EAEpBtE,GAloLqB,EAqoLrBt+K,EAAM+mB,IAAIi8C,EAAQ4/G,GAClB,IAAI/kL,EAASomL,GAAYC,EAAQlhH,GAASkhH,EAAQtB,GAAQtE,EAASC,EAAYkF,EAAWzjL,GAE1F,OADAA,EAAc,OAAEgjE,GACTnlE,EAET,KAAK+uK,EACH,GAAIiO,GACF,OAAOA,GAAcr6K,KAAKwiE,IAAW63G,GAAcr6K,KAAKoiL,GAG9D,OAAO,EA35EDwB,CAAWphH,EAAQ4/G,EAAOgB,EAAQtF,EAASC,EAAYkF,EAAWzjL,GAExE,KAvvGuB,EAuvGjBs+K,GAAiC,CACrC,IAAI+F,EAAeP,GAAYplL,GAAe8B,KAAKwiE,EAAQ,eACvDshH,EAAeP,GAAYrlL,GAAe8B,KAAKoiL,EAAO,eAE1D,GAAIyB,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAerhH,EAAOtnE,QAAUsnE,EAC/CwhH,EAAeF,EAAe1B,EAAMlnL,QAAUknL,EAGlD,OADA5iL,IAAUA,EAAQ,IAAIu8K,IACfkH,EAAUc,EAAcC,EAAclG,EAASC,EAAYv+K,IAGtE,IAAKgkL,EACH,OAAO,EAGT,OADAhkL,IAAUA,EAAQ,IAAIu8K,IA05ExB,SAAsBv5G,EAAQ4/G,EAAOtE,EAASC,EAAYkF,EAAWzjL,GACnE,IAAImkL,EAjqLmB,EAiqLP7F,EACZmG,EAAWvE,GAAWl9G,GACtB0hH,EAAYD,EAAS1oL,OAErBknL,EADW/C,GAAW0C,GACD7mL,OAEzB,GAAI2oL,GAAazB,IAAckB,EAC7B,OAAO,EAET,IAAIzqK,EAAQgrK,EACZ,KAAOhrK,KAAS,CACd,IAAIxd,EAAMuoL,EAAS/qK,GACnB,KAAMyqK,EAAYjoL,KAAO0mL,EAAQlkL,GAAe8B,KAAKoiL,EAAO1mL,IAC1D,OAAO,EAIX,IAAIyoL,EAAa3kL,EAAM6mB,IAAIm8C,GACvB4hH,EAAa5kL,EAAM6mB,IAAI+7J,GAC3B,GAAI+B,GAAcC,EAChB,OAAOD,GAAc/B,GAASgC,GAAc5hH,EAE9C,IAAInlE,GAAS,EACbmC,EAAM+mB,IAAIi8C,EAAQ4/G,GAClB5iL,EAAM+mB,IAAI67J,EAAO5/G,GAEjB,IAAI6hH,EAAWV,EACf,OAASzqK,EAAQgrK,GAAW,CAE1B,IAAIj8I,EAAWu6B,EADf9mE,EAAMuoL,EAAS/qK,IAEXorK,EAAWlC,EAAM1mL,GAErB,GAAIqiL,EACF,IAAIwG,EAAWZ,EACX5F,EAAWuG,EAAUr8I,EAAUvsC,EAAK0mL,EAAO5/G,EAAQhjE,GACnDu+K,EAAW91I,EAAUq8I,EAAU5oL,EAAK8mE,EAAQ4/G,EAAO5iL,GAGzD,KAAM+kL,IAAa7pL,EACVutC,IAAaq8I,GAAYrB,EAAUh7I,EAAUq8I,EAAUxG,EAASC,EAAYv+K,GAC7E+kL,GACD,CACLlnL,GAAS,EACT,MAEFgnL,IAAaA,EAAkB,eAAP3oL,GAE1B,GAAI2B,IAAWgnL,EAAU,CACvB,IAAIG,EAAUhiH,EAAOvmE,YACjBwoL,EAAUrC,EAAMnmL,YAGhBuoL,GAAWC,KACV,gBAAiBjiH,MAAU,gBAAiB4/G,IACzB,mBAAXoC,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDpnL,GAAS,GAKb,OAFAmC,EAAc,OAAEgjE,GAChBhjE,EAAc,OAAE4iL,GACT/kL,EAv9EAqnL,CAAaliH,EAAQ4/G,EAAOtE,EAASC,EAAYkF,EAAWzjL,GA3D5DmlL,CAAgBzpL,EAAOknL,EAAOtE,EAASC,EAAYiF,GAAaxjL,IAmFzE,SAASolL,GAAYpiH,EAAQlmE,EAAQuoL,EAAW9G,GAC9C,IAAI7kK,EAAQ2rK,EAAUtpL,OAClBA,EAAS2d,EACT4rK,GAAgB/G,EAEpB,GAAc,MAAVv7G,EACF,OAAQjnE,EAGV,IADAinE,EAAS5lE,GAAO4lE,GACTtpD,KAAS,CACd,IAAIK,EAAOsrK,EAAU3rK,GACrB,GAAK4rK,GAAgBvrK,EAAK,GAClBA,EAAK,KAAOipD,EAAOjpD,EAAK,MACtBA,EAAK,KAAMipD,GAEnB,OAAO,EAGX,OAAStpD,EAAQ3d,GAAQ,CAEvB,IAAIG,GADJ6d,EAAOsrK,EAAU3rK,IACF,GACX+uB,EAAWu6B,EAAO9mE,GAClBqpL,EAAWxrK,EAAK,GAEpB,GAAIurK,GAAgBvrK,EAAK,IACvB,GAAI0uB,IAAavtC,KAAegB,KAAO8mE,GACrC,OAAO,MAEJ,CACL,IAAIhjE,EAAQ,IAAIu8K,GAChB,GAAIgC,EACF,IAAI1gL,EAAS0gL,EAAW91I,EAAU88I,EAAUrpL,EAAK8mE,EAAQlmE,EAAQkD,GAEnE,KAAMnC,IAAW3C,EACTsoL,GAAY+B,EAAU98I,EAAU+8I,EAA+CjH,EAAYv+K,GAC3FnC,GAEN,OAAO,GAIb,OAAO,EAWT,SAAS4nL,GAAa/pL,GACpB,SAAKc,GAASd,KA05FE83K,EA15FiB93K,EA25FxBq8K,IAAeA,MAAcvE,MAx5FxB96D,GAAWh9G,GAAS08K,GAAahJ,IAChCtlK,KAAKywK,GAAS7+K,IAs5F/B,IAAkB83K,EA12FlB,SAASkS,GAAahqL,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKiqL,GAEW,iBAATjqL,EACF6B,GAAQ7B,GACXkqL,GAAoBlqL,EAAM,GAAIA,EAAM,IACpCmqL,GAAYnqL,GAEX+c,GAAS/c,GAUlB,SAASoqL,GAAS9iH,GAChB,IAAK+iH,GAAY/iH,GACf,OAAOw2G,GAAWx2G,GAEpB,IAAInlE,EAAS,GACb,IAAK,IAAI3B,KAAOkB,GAAO4lE,GACjBtkE,GAAe8B,KAAKwiE,EAAQ9mE,IAAe,eAAPA,GACtC2B,EAAOiD,KAAK5E,GAGhB,OAAO2B,EAUT,SAASmoL,GAAWhjH,GAClB,IAAKxmE,GAASwmE,GACZ,OA09FJ,SAAsBA,GACpB,IAAInlE,EAAS,GACb,GAAc,MAAVmlE,EACF,IAAK,IAAI9mE,KAAOkB,GAAO4lE,GACrBnlE,EAAOiD,KAAK5E,GAGhB,OAAO2B,EAj+FEooL,CAAajjH,GAEtB,IAAIkjH,EAAUH,GAAY/iH,GACtBnlE,EAAS,GAEb,IAAK,IAAI3B,KAAO8mE,GACD,eAAP9mE,IAAyBgqL,GAAYxnL,GAAe8B,KAAKwiE,EAAQ9mE,KACrE2B,EAAOiD,KAAK5E,GAGhB,OAAO2B,EAYT,SAASsoL,GAAOzqL,EAAOknL,GACrB,OAAOlnL,EAAQknL,EAWjB,SAASwD,GAAQxrH,EAAY+4G,GAC3B,IAAIj6J,GAAS,EACT7b,EAASwoL,GAAYzrH,GAAct9D,EAAMs9D,EAAW7+D,QAAU,GAKlE,OAHA8hL,GAASjjH,GAAY,SAASl/D,EAAOQ,EAAK0+D,GACxC/8D,IAAS6b,GAASi6J,EAASj4K,EAAOQ,EAAK0+D,MAElC/8D,EAUT,SAASgoL,GAAY/oL,GACnB,IAAIuoL,EAAYiB,GAAaxpL,GAC7B,OAAwB,GAApBuoL,EAAUtpL,QAAespL,EAAU,GAAG,GACjCkB,GAAwBlB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASriH,GACd,OAAOA,IAAWlmE,GAAUsoL,GAAYpiH,EAAQlmE,EAAQuoL,IAY5D,SAASO,GAAoBpzF,EAAM+yF,GACjC,OAAIiB,GAAMh0F,IAASi0F,GAAmBlB,GAC7BgB,GAAwBrE,GAAM1vF,GAAO+yF,GAEvC,SAASviH,GACd,IAAIv6B,EAAW5hB,GAAIm8C,EAAQwvB,GAC3B,OAAQ/pD,IAAavtC,GAAautC,IAAa88I,EAC3CmB,GAAM1jH,EAAQwvB,GACdgxF,GAAY+B,EAAU98I,EAAU+8I,IAexC,SAASmB,GAAU3jH,EAAQlmE,EAAQ8pL,EAAUrI,EAAYv+K,GACnDgjE,IAAWlmE,GAGf8kL,GAAQ9kL,GAAQ,SAASyoL,EAAUrpL,GAEjC,GADA8D,IAAUA,EAAQ,IAAIu8K,IAClB//K,GAAS+oL,IA+BjB,SAAuBviH,EAAQlmE,EAAQZ,EAAK0qL,EAAUC,EAAWtI,EAAYv+K,GAC3E,IAAIyoC,EAAWq+I,GAAQ9jH,EAAQ9mE,GAC3BqpL,EAAWuB,GAAQhqL,EAAQZ,GAC3B6jL,EAAU//K,EAAM6mB,IAAI0+J,GAExB,GAAIxF,EAEF,YADAvC,GAAiBx6G,EAAQ9mE,EAAK6jL,GAGhC,IAAI7mJ,EAAWqlJ,EACXA,EAAW91I,EAAU88I,EAAWrpL,EAAM,GAAK8mE,EAAQlmE,EAAQkD,GAC3D9E,EAEAslL,EAAWtnJ,IAAah+B,EAE5B,GAAIslL,EAAU,CACZ,IAAI9D,EAAQn/K,GAAQgoL,GAChB1I,GAAUH,GAAS9jE,GAAS2sE,GAC5B5qB,GAAW+hB,IAAUG,GAAUtJ,GAAagS,GAEhDrsJ,EAAWqsJ,EACP7I,GAASG,GAAUliB,EACjBp9J,GAAQkrC,GACVvP,EAAWuP,EAEJs+I,GAAkBt+I,GACzBvP,EAAWmkJ,GAAU50I,GAEdo0I,GACP2D,GAAW,EACXtnJ,EAAW4lJ,GAAYyG,GAAU,IAE1B5qB,GACP6lB,GAAW,EACXtnJ,EAAW0mJ,GAAgB2F,GAAU,IAGrCrsJ,EAAW,GAGNswD,GAAc+7F,IAAa3I,GAAY2I,IAC9CrsJ,EAAWuP,EACPm0I,GAAYn0I,GACdvP,EAAW8tJ,GAAcv+I,GAEjBjsC,GAASisC,KAAaiwE,GAAWjwE,KACzCvP,EAAW6lJ,GAAgBwG,KAI7B/E,GAAW,EAGXA,IAEFxgL,EAAM+mB,IAAIw+J,EAAUrsJ,GACpB2tJ,EAAU3tJ,EAAUqsJ,EAAUqB,EAAUrI,EAAYv+K,GACpDA,EAAc,OAAEulL,IAElB/H,GAAiBx6G,EAAQ9mE,EAAKg9B,GAzF1B+tJ,CAAcjkH,EAAQlmE,EAAQZ,EAAK0qL,EAAUD,GAAWpI,EAAYv+K,OAEjE,CACH,IAAIk5B,EAAWqlJ,EACXA,EAAWuI,GAAQ9jH,EAAQ9mE,GAAMqpL,EAAWrpL,EAAM,GAAK8mE,EAAQlmE,EAAQkD,GACvE9E,EAEAg+B,IAAah+B,IACfg+B,EAAWqsJ,GAEb/H,GAAiBx6G,EAAQ9mE,EAAKg9B,MAE/BgmJ,IAwFL,SAASgI,GAAQlsH,EAAOuhD,GACtB,IAAIxgH,EAASi/D,EAAMj/D,OACnB,GAAKA,EAIL,OAAOihL,GADPzgE,GAAKA,EAAI,EAAIxgH,EAAS,EACJA,GAAUi/D,EAAMuhD,GAAKrhH,EAYzC,SAASisL,GAAYvsH,EAAYwsH,EAAWC,GAExCD,EADEA,EAAUrrL,OACAu4K,GAAS8S,GAAW,SAASzT,GACvC,OAAIp2K,GAAQo2K,GACH,SAASj4K,GACd,OAAOsmL,GAAQtmL,EAA2B,IAApBi4K,EAAS53K,OAAe43K,EAAS,GAAKA,IAGzDA,KAGG,CAACgS,IAGf,IAAIjsK,GAAS,EAUb,OATA0tK,EAAY9S,GAAS8S,EAAWvR,GAAUyR,OAnxF9C,SAAoBtsH,EAAO2tB,GACzB,IAAI5sF,EAASi/D,EAAMj/D,OAGnB,IADAi/D,EAAM+lB,KAAK4H,GACJ5sF,KACLi/D,EAAMj/D,GAAUi/D,EAAMj/D,GAAQL,MAEhC,OAAOs/D,EAqxFEusH,CAPMnB,GAAQxrH,GAAY,SAASl/D,EAAOQ,EAAK0+D,GAIpD,MAAO,CAAE,SAHM05G,GAAS8S,GAAW,SAASzT,GAC1C,OAAOA,EAASj4K,MAEa,QAAWge,EAAO,MAAShe,OAGlC,SAASsnE,EAAQ4/G,GACzC,OA04BJ,SAAyB5/G,EAAQ4/G,EAAOyE,GACtC,IAAI3tK,GAAS,EACT8tK,EAAcxkH,EAAOykH,SACrBC,EAAc9E,EAAM6E,SACpB1rL,EAASyrL,EAAYzrL,OACrB4rL,EAAeN,EAAOtrL,OAE1B,OAAS2d,EAAQ3d,GAAQ,CACvB,IAAI8B,EAAS+pL,GAAiBJ,EAAY9tK,GAAQguK,EAAYhuK,IAC9D,GAAI7b,EACF,OAAI6b,GAASiuK,EACJ9pL,EAGFA,GAAmB,QADdwpL,EAAO3tK,IACiB,EAAI,GAU5C,OAAOspD,EAAOtpD,MAAQkpK,EAAMlpK,MAl6BnBmuK,CAAgB7kH,EAAQ4/G,EAAOyE,MA4B1C,SAASS,GAAW9kH,EAAQi7G,EAAOpjH,GAKjC,IAJA,IAAInhD,GAAS,EACT3d,EAASkiL,EAAMliL,OACf8B,EAAS,KAEJ6b,EAAQ3d,GAAQ,CACvB,IAAIy2F,EAAOyrF,EAAMvkK,GACbhe,EAAQsmL,GAAQh/G,EAAQwvB,GAExB33B,EAAUn/D,EAAO82F,IACnBu1F,GAAQlqL,EAAQokL,GAASzvF,EAAMxvB,GAAStnE,GAG5C,OAAOmC,EA2BT,SAASmqL,GAAYhtH,EAAOS,EAAQk4G,EAAUU,GAC5C,IAAIh3K,EAAUg3K,EAAae,GAAkBjB,GACzCz6J,GAAS,EACT3d,EAAS0/D,EAAO1/D,OAChBsnL,EAAOroH,EAQX,IANIA,IAAUS,IACZA,EAAS4hH,GAAU5hH,IAEjBk4G,IACF0P,EAAO/O,GAASt5G,EAAO66G,GAAUlC,OAE1Bj6J,EAAQ3d,GAKf,IAJA,IAAI0kH,EAAY,EACZ/kH,EAAQ+/D,EAAO/hD,GACfinK,EAAWhN,EAAWA,EAASj4K,GAASA,GAEpC+kH,EAAYpjH,EAAQgmL,EAAM1C,EAAUlgE,EAAW4zD,KAAgB,GACjEgP,IAASroH,GACXhiD,GAAOxY,KAAK6iL,EAAM5iE,EAAW,GAE/BznG,GAAOxY,KAAKw6D,EAAOylD,EAAW,GAGlC,OAAOzlD,EAYT,SAASitH,GAAWjtH,EAAOwrE,GAIzB,IAHA,IAAIzqI,EAASi/D,EAAQwrE,EAAQzqI,OAAS,EAClComJ,EAAYpmJ,EAAS,EAElBA,KAAU,CACf,IAAI2d,EAAQ8sH,EAAQzqI,GACpB,GAAIA,GAAUomJ,GAAazoI,IAAUgpI,EAAU,CAC7C,IAAIA,EAAWhpI,EACXsjK,GAAQtjK,GACVV,GAAOxY,KAAKw6D,EAAOthD,EAAO,GAE1BwuK,GAAUltH,EAAOthD,IAIvB,OAAOshD,EAYT,SAASkiH,GAAWiB,EAAOC,GACzB,OAAOD,EAAQhF,GAAYU,MAAkBuE,EAAQD,EAAQ,IAkC/D,SAASgK,GAAWxS,EAAQp5D,GAC1B,IAAI1+G,EAAS,GACb,IAAK83K,GAAUp5D,EAAI,GAAKA,EAAImvD,EAC1B,OAAO7tK,EAIT,GACM0+G,EAAI,IACN1+G,GAAU83K,IAEZp5D,EAAI48D,GAAY58D,EAAI,MAElBo5D,GAAUA,SAELp5D,GAET,OAAO1+G,EAWT,SAASuqL,GAAS5U,EAAMp3K,GACtB,OAAOisL,GAAYC,GAAS9U,EAAMp3K,EAAOupL,IAAWnS,EAAO,IAU7D,SAAS+U,GAAW3tH,GAClB,OAAOqiH,GAAYxhH,GAAOb,IAW5B,SAAS4tH,GAAe5tH,EAAY2hD,GAClC,IAAIvhD,EAAQS,GAAOb,GACnB,OAAOwiH,GAAYpiH,EAAOsiH,GAAU/gE,EAAG,EAAGvhD,EAAMj/D,SAalD,SAASgsL,GAAQ/kH,EAAQwvB,EAAM92F,EAAO6iL,GACpC,IAAK/hL,GAASwmE,GACZ,OAAOA,EAST,IALA,IAAItpD,GAAS,EACT3d,GAHJy2F,EAAOyvF,GAASzvF,EAAMxvB,IAGJjnE,OACdomJ,EAAYpmJ,EAAS,EACrB0sL,EAASzlH,EAEI,MAAVylH,KAAoB/uK,EAAQ3d,GAAQ,CACzC,IAAIG,EAAMgmL,GAAM1vF,EAAK94E,IACjBwf,EAAWx9B,EAEf,GAAY,cAARQ,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAO8mE,EAGT,GAAItpD,GAASyoI,EAAW,CACtB,IAAI15G,EAAWggJ,EAAOvsL,IACtBg9B,EAAWqlJ,EAAaA,EAAW91I,EAAUvsC,EAAKusL,GAAUvtL,KAC3CA,IACfg+B,EAAW18B,GAASisC,GAChBA,EACCu0I,GAAQxqF,EAAK94E,EAAQ,IAAM,GAAK,IAGzCmgG,GAAY4uE,EAAQvsL,EAAKg9B,GACzBuvJ,EAASA,EAAOvsL,GAElB,OAAO8mE,EAWT,IAAI0lH,GAAetO,GAAqB,SAAS5G,EAAMz5J,GAErD,OADAqgK,GAAQrzJ,IAAIysJ,EAAMz5J,GACXy5J,GAFoBmS,GAazBgD,GAAmB/hK,GAA4B,SAAS4sJ,EAAMmC,GAChE,OAAO/uJ,GAAe4sJ,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAASoV,GAASjT,GAClB,UAAY,KALwBgQ,GAgBxC,SAASkD,GAAYjuH,GACnB,OAAOwiH,GAAY3hH,GAAOb,IAY5B,SAASkuH,GAAU9tH,EAAO5+D,EAAOyb,GAC/B,IAAI6B,GAAS,EACT3d,EAASi/D,EAAMj/D,OAEfK,EAAQ,IACVA,GAASA,EAAQL,EAAS,EAAKA,EAASK,IAE1Cyb,EAAMA,EAAM9b,EAASA,EAAS8b,GACpB,IACRA,GAAO9b,GAETA,EAASK,EAAQyb,EAAM,EAAMA,EAAMzb,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIyB,EAASP,EAAMvB,KACV2d,EAAQ3d,GACf8B,EAAO6b,GAASshD,EAAMthD,EAAQtd,GAEhC,OAAOyB,EAYT,SAASkrL,GAASnuH,EAAYC,GAC5B,IAAIh9D,EAMJ,OAJAggL,GAASjjH,GAAY,SAASl/D,EAAOge,EAAOkhD,GAE1C,QADA/8D,EAASg9D,EAAUn/D,EAAOge,EAAOkhD,SAG1B/8D,EAeX,SAASmrL,GAAgBhuH,EAAOt/D,EAAOutL,GACrC,IAAIC,EAAM,EACNC,EAAgB,MAATnuH,EAAgBkuH,EAAMluH,EAAMj/D,OAEvC,GAAoB,iBAATL,GAAqBA,IAAUA,GAASytL,GAn/H3Bvd,WAm/H0D,CAChF,KAAOsd,EAAMC,GAAM,CACjB,IAAIC,EAAOF,EAAMC,IAAU,EACvBxI,EAAW3lH,EAAMouH,GAEJ,OAAbzI,IAAsBY,GAASZ,KAC9BsI,EAActI,GAAYjlL,EAAUilL,EAAWjlL,GAClDwtL,EAAME,EAAM,EAEZD,EAAOC,EAGX,OAAOD,EAET,OAAOE,GAAkBruH,EAAOt/D,EAAOiqL,GAAUsD,GAgBnD,SAASI,GAAkBruH,EAAOt/D,EAAOi4K,EAAUsV,GACjD,IAAIC,EAAM,EACNC,EAAgB,MAATnuH,EAAgB,EAAIA,EAAMj/D,OACrC,GAAa,IAATotL,EACF,OAAO,EAST,IALA,IAAIG,GADJ5tL,EAAQi4K,EAASj4K,MACQA,EACrB6tL,EAAsB,OAAV7tL,EACZ8tL,EAAcjI,GAAS7lL,GACvB+tL,EAAiB/tL,IAAUR,EAExBguL,EAAMC,GAAM,CACjB,IAAIC,EAAMjQ,IAAa+P,EAAMC,GAAQ,GACjCxI,EAAWhN,EAAS34G,EAAMouH,IAC1BM,EAAe/I,IAAazlL,EAC5ByuL,EAAyB,OAAbhJ,EACZiJ,EAAiBjJ,IAAaA,EAC9BkJ,EAActI,GAASZ,GAE3B,GAAI2I,EACF,IAAIQ,EAASb,GAAcW,OAE3BE,EADSL,EACAG,IAAmBX,GAAcS,GACjCH,EACAK,GAAkBF,IAAiBT,IAAeU,GAClDH,EACAI,GAAkBF,IAAiBC,IAAcV,IAAeY,IAChEF,IAAaE,IAGbZ,EAActI,GAAYjlL,EAAUilL,EAAWjlL,GAEtDouL,EACFZ,EAAME,EAAM,EAEZD,EAAOC,EAGX,OAAO1P,GAAUyP,EA1jICvd,YAskIpB,SAASme,GAAe/uH,EAAO24G,GAM7B,IALA,IAAIj6J,GAAS,EACT3d,EAASi/D,EAAMj/D,OACfk4K,EAAW,EACXp2K,EAAS,KAEJ6b,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GACdinK,EAAWhN,EAAWA,EAASj4K,GAASA,EAE5C,IAAKge,IAAU+jK,GAAGkD,EAAU0C,GAAO,CACjC,IAAIA,EAAO1C,EACX9iL,EAAOo2K,KAAwB,IAAVv4K,EAAc,EAAIA,GAG3C,OAAOmC,EAWT,SAASmsL,GAAatuL,GACpB,MAAoB,iBAATA,EACFA,EAEL6lL,GAAS7lL,GACJiwK,GAEDjwK,EAWV,SAASuuL,GAAavuL,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI6B,GAAQ7B,GAEV,OAAO44K,GAAS54K,EAAOuuL,IAAgB,GAEzC,GAAI1I,GAAS7lL,GACX,OAAOo/K,GAAiBA,GAAet6K,KAAK9E,GAAS,GAEvD,IAAImC,EAAUnC,EAAQ,GACtB,MAAkB,KAAVmC,GAAkB,EAAInC,IAAU,IAAa,KAAOmC,EAY9D,SAASqsL,GAASlvH,EAAO24G,EAAUU,GACjC,IAAI36J,GAAS,EACT6mK,EAAWrM,GACXn4K,EAASi/D,EAAMj/D,OACfykL,GAAW,EACX3iL,EAAS,GACTwlL,EAAOxlL,EAEX,GAAIw2K,EACFmM,GAAW,EACXD,EAAWnM,QAER,GAAIr4K,GAjtIU,IAitIkB,CACnC,IAAIgrB,EAAM4sJ,EAAW,KAAOwW,GAAUnvH,GACtC,GAAIj0C,EACF,OAAO+vJ,GAAW/vJ,GAEpBy5J,GAAW,EACXD,EAAWxK,GACXsN,EAAO,IAAIhH,QAGXgH,EAAO1P,EAAW,GAAK91K,EAEzB6iL,EACA,OAAShnK,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GACdinK,EAAWhN,EAAWA,EAASj4K,GAASA,EAG5C,GADAA,EAAS24K,GAAwB,IAAV34K,EAAeA,EAAQ,EAC1C8kL,GAAYG,IAAaA,EAAU,CAErC,IADA,IAAIyJ,EAAY/G,EAAKtnL,OACdquL,KACL,GAAI/G,EAAK+G,KAAezJ,EACtB,SAASD,EAGT/M,GACF0P,EAAKviL,KAAK6/K,GAEZ9iL,EAAOiD,KAAKpF,QAEJ6kL,EAAS8C,EAAM1C,EAAUtM,KAC7BgP,IAASxlL,GACXwlL,EAAKviL,KAAK6/K,GAEZ9iL,EAAOiD,KAAKpF,IAGhB,OAAOmC,EAWT,SAASqqL,GAAUllH,EAAQwvB,GAGzB,OAAiB,OADjBxvB,EAASvjE,GAAOujE,EADhBwvB,EAAOyvF,GAASzvF,EAAMxvB,aAEUA,EAAOk/G,GAAMllE,GAAKxqB,KAapD,SAAS63F,GAAWrnH,EAAQwvB,EAAM83F,EAAS/L,GACzC,OAAOwJ,GAAQ/kH,EAAQwvB,EAAM83F,EAAQtI,GAAQh/G,EAAQwvB,IAAQ+rF,GAc/D,SAASgM,GAAUvvH,EAAOH,EAAW2vH,EAAQvV,GAI3C,IAHA,IAAIl5K,EAASi/D,EAAMj/D,OACf2d,EAAQu7J,EAAYl5K,GAAU,GAE1Bk5K,EAAYv7J,MAAYA,EAAQ3d,IACtC8+D,EAAUG,EAAMthD,GAAQA,EAAOshD,KAEjC,OAAOwvH,EACH1B,GAAU9tH,EAAQi6G,EAAY,EAAIv7J,EAASu7J,EAAYv7J,EAAQ,EAAI3d,GACnE+sL,GAAU9tH,EAAQi6G,EAAYv7J,EAAQ,EAAI,EAAKu7J,EAAYl5K,EAAS2d,GAa1E,SAAS+wK,GAAiB/uL,EAAO2/I,GAC/B,IAAIx9I,EAASnC,EAIb,OAHImC,aAAkBo9K,KACpBp9K,EAASA,EAAOnC,SAEX84K,GAAYn5B,GAAS,SAASx9I,EAAQmnC,GAC3C,OAAOA,EAAOwuI,KAAKl4K,MAAM0pC,EAAO80E,QAASy6D,GAAU,CAAC12K,GAASmnC,EAAO7lC,SACnEtB,GAaL,SAAS6sL,GAAQ1H,EAAQrP,EAAUU,GACjC,IAAIt4K,EAASinL,EAAOjnL,OACpB,GAAIA,EAAS,EACX,OAAOA,EAASmuL,GAASlH,EAAO,IAAM,GAKxC,IAHA,IAAItpK,GAAS,EACT7b,EAASP,EAAMvB,KAEV2d,EAAQ3d,GAIf,IAHA,IAAIi/D,EAAQgoH,EAAOtpK,GACfwpK,GAAY,IAEPA,EAAWnnL,GACdmnL,GAAYxpK,IACd7b,EAAO6b,GAAS4mK,GAAeziL,EAAO6b,IAAUshD,EAAOgoH,EAAOE,GAAWvP,EAAUU,IAIzF,OAAO6V,GAASzI,GAAY5jL,EAAQ,GAAI81K,EAAUU,GAYpD,SAASsW,GAAclnL,EAAOg4D,EAAQmvH,GAMpC,IALA,IAAIlxK,GAAS,EACT3d,EAAS0H,EAAM1H,OACf8uL,EAAapvH,EAAO1/D,OACpB8B,EAAS,KAEJ6b,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQge,EAAQmxK,EAAapvH,EAAO/hD,GAASxe,EACjD0vL,EAAW/sL,EAAQ4F,EAAMiW,GAAQhe,GAEnC,OAAOmC,EAUT,SAASitL,GAAoBpvL,GAC3B,OAAOqrL,GAAkBrrL,GAASA,EAAQ,GAU5C,SAASqvL,GAAarvL,GACpB,MAAuB,mBAATA,EAAsBA,EAAQiqL,GAW9C,SAAS1D,GAASvmL,EAAOsnE,GACvB,OAAIzlE,GAAQ7B,GACHA,EAEF8qL,GAAM9qL,EAAOsnE,GAAU,CAACtnE,GAASsvL,GAAa3+K,GAAS3Q,IAYhE,IAAIuvL,GAAW7C,GAWf,SAAS8C,GAAUlwH,EAAO5+D,EAAOyb,GAC/B,IAAI9b,EAASi/D,EAAMj/D,OAEnB,OADA8b,EAAMA,IAAQ3c,EAAYa,EAAS8b,GAC1Bzb,GAASyb,GAAO9b,EAAUi/D,EAAQ8tH,GAAU9tH,EAAO5+D,EAAOyb,GASrE,IAAIxY,GAAe05K,IAAmB,SAASpgK,GAC7C,OAAOigJ,GAAKv5J,aAAasZ,IAW3B,SAASmmK,GAAY5lE,EAAQslE,GAC3B,GAAIA,EACF,OAAOtlE,EAAO34G,QAEhB,IAAIxE,EAASm9G,EAAOn9G,OAChB8B,EAASy6K,GAAcA,GAAYv8K,GAAU,IAAIm9G,EAAOz8G,YAAYV,GAGxE,OADAm9G,EAAO76G,KAAKR,GACLA,EAUT,SAAS0hL,GAAiB4L,GACxB,IAAIttL,EAAS,IAAIstL,EAAY1uL,YAAY0uL,EAAYzL,YAErD,OADA,IAAI71F,GAAWhsF,GAAQkpB,IAAI,IAAI8iE,GAAWshG,IACnCttL,EAgDT,SAAS+hL,GAAgBwL,EAAY5M,GACnC,IAAItlE,EAASslE,EAASe,GAAiB6L,EAAWlyE,QAAUkyE,EAAWlyE,OACvE,OAAO,IAAIkyE,EAAW3uL,YAAYy8G,EAAQkyE,EAAW3L,WAAY2L,EAAWrvL,QAW9E,SAAS6rL,GAAiBlsL,EAAOknL,GAC/B,GAAIlnL,IAAUknL,EAAO,CACnB,IAAIyI,EAAe3vL,IAAUR,EACzBquL,EAAsB,OAAV7tL,EACZ4vL,EAAiB5vL,IAAUA,EAC3B8tL,EAAcjI,GAAS7lL,GAEvBguL,EAAe9G,IAAU1nL,EACzByuL,EAAsB,OAAV/G,EACZgH,EAAiBhH,IAAUA,EAC3BiH,EAActI,GAASqB,GAE3B,IAAM+G,IAAcE,IAAgBL,GAAe9tL,EAAQknL,GACtD4G,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5ByB,GAAgBzB,IACjB0B,EACH,OAAO,EAET,IAAM/B,IAAcC,IAAgBK,GAAenuL,EAAQknL,GACtDiH,GAAewB,GAAgBC,IAAmB/B,IAAcC,GAChEG,GAAa0B,GAAgBC,IAC5B5B,GAAgB4B,IACjB1B,EACH,OAAQ,EAGZ,OAAO,EAuDT,SAAS2B,GAAYpsL,EAAMqsL,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbC,EAAazsL,EAAKpD,OAClB8vL,EAAgBJ,EAAQ1vL,OACxB+vL,GAAa,EACbC,EAAaP,EAASzvL,OACtBiwL,EAAcvS,GAAUmS,EAAaC,EAAe,GACpDhuL,EAASP,EAAMyuL,EAAaC,GAC5BC,GAAeP,IAEVI,EAAYC,GACnBluL,EAAOiuL,GAAaN,EAASM,GAE/B,OAASH,EAAYE,IACfI,GAAeN,EAAYC,KAC7B/tL,EAAO4tL,EAAQE,IAAcxsL,EAAKwsL,IAGtC,KAAOK,KACLnuL,EAAOiuL,KAAe3sL,EAAKwsL,KAE7B,OAAO9tL,EAcT,SAASquL,GAAiB/sL,EAAMqsL,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbC,EAAazsL,EAAKpD,OAClBowL,GAAgB,EAChBN,EAAgBJ,EAAQ1vL,OACxB+tE,GAAc,EACdsiH,EAAcZ,EAASzvL,OACvBiwL,EAAcvS,GAAUmS,EAAaC,EAAe,GACpDhuL,EAASP,EAAM0uL,EAAcI,GAC7BH,GAAeP,IAEVC,EAAYK,GACnBnuL,EAAO8tL,GAAaxsL,EAAKwsL,GAG3B,IADA,IAAIzgK,EAASygK,IACJ7hH,EAAasiH,GACpBvuL,EAAOqtB,EAAS4+C,GAAc0hH,EAAS1hH,GAEzC,OAASqiH,EAAeN,IAClBI,GAAeN,EAAYC,KAC7B/tL,EAAOqtB,EAASugK,EAAQU,IAAiBhtL,EAAKwsL,MAGlD,OAAO9tL,EAWT,SAASw/K,GAAUvgL,EAAQk+D,GACzB,IAAIthD,GAAS,EACT3d,EAASe,EAAOf,OAGpB,IADAi/D,IAAUA,EAAQ19D,EAAMvB,MACf2d,EAAQ3d,GACfi/D,EAAMthD,GAAS5c,EAAO4c,GAExB,OAAOshD,EAaT,SAAS+iH,GAAWjhL,EAAQ2G,EAAOu/D,EAAQu7G,GACzC,IAAI8N,GAASrpH,EACbA,IAAWA,EAAS,IAKpB,IAHA,IAAItpD,GAAS,EACT3d,EAAS0H,EAAM1H,SAEV2d,EAAQ3d,GAAQ,CACvB,IAAIG,EAAMuH,EAAMiW,GAEZwf,EAAWqlJ,EACXA,EAAWv7G,EAAO9mE,GAAMY,EAAOZ,GAAMA,EAAK8mE,EAAQlmE,GAClD5B,EAEAg+B,IAAah+B,IACfg+B,EAAWp8B,EAAOZ,IAEhBmwL,EACF3O,GAAgB16G,EAAQ9mE,EAAKg9B,GAE7B2gF,GAAY72C,EAAQ9mE,EAAKg9B,GAG7B,OAAO8pC,EAmCT,SAASspH,GAAiB5Y,EAAQ6Y,GAChC,OAAO,SAAS3xH,EAAY+4G,GAC1B,IAAIH,EAAOj2K,GAAQq9D,GAAc64G,GAAkBmK,GAC/ChK,EAAc2Y,EAAcA,IAAgB,GAEhD,OAAO/Y,EAAK54G,EAAY84G,EAAQ4T,GAAY3T,EAAU,GAAIC,IAW9D,SAAS4Y,GAAev9J,GACtB,OAAOm5J,IAAS,SAASplH,EAAQypH,GAC/B,IAAI/yK,GAAS,EACT3d,EAAS0wL,EAAQ1wL,OACjBwiL,EAAaxiL,EAAS,EAAI0wL,EAAQ1wL,EAAS,GAAKb,EAChDwxL,EAAQ3wL,EAAS,EAAI0wL,EAAQ,GAAKvxL,EAWtC,IATAqjL,EAActvJ,EAASlzB,OAAS,GAA0B,mBAAdwiL,GACvCxiL,IAAUwiL,GACXrjL,EAEAwxL,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDnO,EAAaxiL,EAAS,EAAIb,EAAYqjL,EACtCxiL,EAAS,GAEXinE,EAAS5lE,GAAO4lE,KACPtpD,EAAQ3d,GAAQ,CACvB,IAAIe,EAAS2vL,EAAQ/yK,GACjB5c,GACFmyB,EAAS+zC,EAAQlmE,EAAQ4c,EAAO6kK,GAGpC,OAAOv7G,KAYX,SAASi+G,GAAelM,EAAUE,GAChC,OAAO,SAASr6G,EAAY+4G,GAC1B,GAAkB,MAAd/4G,EACF,OAAOA,EAET,IAAKyrH,GAAYzrH,GACf,OAAOm6G,EAASn6G,EAAY+4G,GAM9B,IAJA,IAAI53K,EAAS6+D,EAAW7+D,OACpB2d,EAAQu7J,EAAYl5K,GAAU,EAC9B6wL,EAAWxvL,GAAOw9D,IAEdq6G,EAAYv7J,MAAYA,EAAQ3d,KACa,IAA/C43K,EAASiZ,EAASlzK,GAAQA,EAAOkzK,KAIvC,OAAOhyH,GAWX,SAASinH,GAAc5M,GACrB,OAAO,SAASjyG,EAAQ2wG,EAAUyO,GAMhC,IALA,IAAI1oK,GAAS,EACTkzK,EAAWxvL,GAAO4lE,GAClBv/D,EAAQ2+K,EAASp/G,GACjBjnE,EAAS0H,EAAM1H,OAEZA,KAAU,CACf,IAAIG,EAAMuH,EAAMwxK,EAAYl5K,IAAW2d,GACvC,IAA+C,IAA3Ci6J,EAASiZ,EAAS1wL,GAAMA,EAAK0wL,GAC/B,MAGJ,OAAO5pH,GAgCX,SAAS6pH,GAAgB1mF,GACvB,OAAO,SAASwvE,GAGd,IAAIO,EAAaQ,GAFjBf,EAAStpK,GAASspK,IAGduB,GAAcvB,GACdz6K,EAEAu7K,EAAMP,EACNA,EAAW,GACXP,EAAO9vE,OAAO,GAEdinF,EAAW5W,EACXgV,GAAUhV,EAAY,GAAGryK,KAAK,IAC9B8xK,EAAOp1K,MAAM,GAEjB,OAAOk2K,EAAItwE,KAAgB2mF,GAW/B,SAASC,GAAiBzuE,GACxB,OAAO,SAASq3D,GACd,OAAOnB,GAAYwY,GAAMC,GAAOtX,GAAQ/5K,QAAQ41K,GAAQ,KAAMlzD,EAAU,KAY5E,SAAS4uE,GAAW5N,GAClB,OAAO,WAIL,IAAIngL,EAAOrB,UACX,OAAQqB,EAAKpD,QACX,KAAK,EAAG,OAAO,IAAIujL,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAKngL,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAImgL,EAAKngL,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAImgL,EAAKngL,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAImgL,EAAKngL,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAImgL,EAAKngL,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAImgL,EAAKngL,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAImgL,EAAKngL,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAIguL,EAAc/R,GAAWkE,EAAKlkL,WAC9ByC,EAASyhL,EAAKhkL,MAAM6xL,EAAahuL,GAIrC,OAAO3C,GAASqB,GAAUA,EAASsvL,GAgDvC,SAASC,GAAWC,GAClB,OAAO,SAASzyH,EAAYC,EAAW4lD,GACrC,IAAImsE,EAAWxvL,GAAOw9D,GACtB,IAAKyrH,GAAYzrH,GAAa,CAC5B,IAAI+4G,EAAW2T,GAAYzsH,EAAW,GACtCD,EAAaz+D,GAAKy+D,GAClBC,EAAY,SAAS3+D,GAAO,OAAOy3K,EAASiZ,EAAS1wL,GAAMA,EAAK0wL,IAElE,IAAIlzK,EAAQ2zK,EAAczyH,EAAYC,EAAW4lD,GACjD,OAAO/mG,GAAS,EAAIkzK,EAASjZ,EAAW/4G,EAAWlhD,GAASA,GAASxe,GAWzE,SAASoyL,GAAWrY,GAClB,OAAOsY,IAAS,SAASC,GACvB,IAAIzxL,EAASyxL,EAAMzxL,OACf2d,EAAQ3d,EACR0xL,EAASvS,GAAc9/K,UAAUsyL,KAKrC,IAHIzY,GACFuY,EAAM3lE,UAEDnuG,KAAS,CACd,IAAI85J,EAAOga,EAAM9zK,GACjB,GAAmB,mBAAR85J,EACT,MAAM,IAAIvlF,GAAUg9E,GAEtB,GAAIwiB,IAAWp1F,GAAgC,WAArBs1F,GAAYna,GACpC,IAAIn7E,EAAU,IAAI6iF,GAAc,IAAI,GAIxC,IADAxhK,EAAQ2+E,EAAU3+E,EAAQ3d,IACjB2d,EAAQ3d,GAAQ,CAGvB,IAAI6xL,EAAWD,GAFfna,EAAOga,EAAM9zK,IAGTK,EAAmB,WAAZ6zK,EAAwB3xF,GAAQu3E,GAAQt4K,EAMjDm9F,EAJEt+E,GAAQ8zK,GAAW9zK,EAAK,KACX,KAAXA,EAAK,KACJA,EAAK,GAAGhe,QAAqB,GAAXge,EAAK,GAElBs+E,EAAQs1F,GAAY5zK,EAAK,KAAKze,MAAM+8F,EAASt+E,EAAK,IAElC,GAAfy5J,EAAKz3K,QAAe8xL,GAAWra,GACtCn7E,EAAQu1F,KACRv1F,EAAQq1F,KAAKla,GAGrB,OAAO,WACL,IAAIr0K,EAAOrB,UACPpC,EAAQyD,EAAK,GAEjB,GAAIk5F,GAA0B,GAAfl5F,EAAKpD,QAAewB,GAAQ7B,GACzC,OAAO28F,EAAQy1F,MAAMpyL,GAAOA,QAK9B,IAHA,IAAIge,EAAQ,EACR7b,EAAS9B,EAASyxL,EAAM9zK,GAAOpe,MAAM4D,KAAMC,GAAQzD,IAE9Cge,EAAQ3d,GACf8B,EAAS2vL,EAAM9zK,GAAOlZ,KAAKtB,KAAMrB,GAEnC,OAAOA,MAwBb,SAASkwL,GAAava,EAAM8K,EAASxkE,EAAS0xE,EAAUC,EAASuC,EAAeC,EAAcC,EAAQC,EAAKz1D,GACzG,IAAI01D,EAAQ9P,EAAU/S,EAClB8iB,EA5iKa,EA4iKJ/P,EACTgQ,EA5iKiB,EA4iKLhQ,EACZoN,EAAsB,GAAVpN,EACZiQ,EAtiKa,IAsiKJjQ,EACTgB,EAAOgP,EAAYpzL,EAAYgyL,GAAW1Z,GA6C9C,OA3CA,SAASn7E,IAKP,IAJA,IAAIt8F,EAAS+B,UAAU/B,OACnBoD,EAAO7B,EAAMvB,GACb2d,EAAQ3d,EAEL2d,KACLva,EAAKua,GAAS5b,UAAU4b,GAE1B,GAAIgyK,EACF,IAAIr3F,EAAcm6F,GAAUn2F,GACxBo2F,EAAepY,GAAal3K,EAAMk1F,GASxC,GAPIm3F,IACFrsL,EAAOosL,GAAYpsL,EAAMqsL,EAAUC,EAASC,IAE1CsC,IACF7uL,EAAO+sL,GAAiB/sL,EAAM6uL,EAAeC,EAAcvC,IAE7D3vL,GAAU0yL,EACN/C,GAAa3vL,EAAS28H,EAAO,CAC/B,IAAIg2D,EAAa7X,GAAe13K,EAAMk1F,GACtC,OAAOs6F,GACLnb,EAAM8K,EAASyP,GAAc11F,EAAQhE,YAAaylB,EAClD36G,EAAMuvL,EAAYR,EAAQC,EAAKz1D,EAAQ38H,GAG3C,IAAIoxL,EAAckB,EAASv0E,EAAU56G,KACjC6oF,EAAKumG,EAAYnB,EAAY3Z,GAAQA,EAczC,OAZAz3K,EAASoD,EAAKpD,OACVmyL,EACF/uL,EAAOyvL,GAAQzvL,EAAM+uL,GACZK,GAAUxyL,EAAS,GAC5BoD,EAAK0oH,UAEHumE,GAASD,EAAMpyL,IACjBoD,EAAKpD,OAASoyL,GAEZjvL,MAAQA,OAAS05J,IAAQ15J,gBAAgBm5F,IAC3CtQ,EAAKu3F,GAAQ4N,GAAWnlG,IAEnBA,EAAGzsF,MAAM6xL,EAAahuL,IAajC,SAAS0vL,GAAenb,EAAQob,GAC9B,OAAO,SAAS9rH,EAAQ2wG,GACtB,OAh/DJ,SAAsB3wG,EAAQ0wG,EAAQC,EAAUC,GAI9C,OAHAsN,GAAWl+G,GAAQ,SAAStnE,EAAOQ,EAAK8mE,GACtC0wG,EAAOE,EAAaD,EAASj4K,GAAQQ,EAAK8mE,MAErC4wG,EA4+DEmb,CAAa/rH,EAAQ0wG,EAAQob,EAAWnb,GAAW,KAY9D,SAASqb,GAAoB1tH,EAAUlnC,GACrC,OAAO,SAAS1+B,EAAOknL,GACrB,IAAI/kL,EACJ,GAAInC,IAAUR,GAAa0nL,IAAU1nL,EACnC,OAAOk/B,EAKT,GAHI1+B,IAAUR,IACZ2C,EAASnC,GAEPknL,IAAU1nL,EAAW,CACvB,GAAI2C,IAAW3C,EACb,OAAO0nL,EAEW,iBAATlnL,GAAqC,iBAATknL,GACrClnL,EAAQuuL,GAAavuL,GACrBknL,EAAQqH,GAAarH,KAErBlnL,EAAQsuL,GAAatuL,GACrBknL,EAAQoH,GAAapH,IAEvB/kL,EAASyjE,EAAS5lE,EAAOknL,GAE3B,OAAO/kL,GAWX,SAASoxL,GAAWC,GAClB,OAAO3B,IAAS,SAASnG,GAEvB,OADAA,EAAY9S,GAAS8S,EAAWvR,GAAUyR,OACnCc,IAAS,SAASjpL,GACvB,IAAI26G,EAAU56G,KACd,OAAOgwL,EAAU9H,GAAW,SAASzT,GACnC,OAAOr4K,GAAMq4K,EAAU75D,EAAS36G,YAexC,SAASgwL,GAAcpzL,EAAQqzL,GAG7B,IAAIC,GAFJD,EAAQA,IAAUl0L,EAAY,IAAM+uL,GAAamF,IAEzBrzL,OACxB,GAAIszL,EAAc,EAChB,OAAOA,EAAclH,GAAWiH,EAAOrzL,GAAUqzL,EAEnD,IAAIvxL,EAASsqL,GAAWiH,EAAOlW,GAAWn9K,EAASi7K,GAAWoY,KAC9D,OAAO1Y,GAAW0Y,GACdlE,GAAUhU,GAAcr5K,GAAS,EAAG9B,GAAQ8H,KAAK,IACjDhG,EAAO0C,MAAM,EAAGxE,GA6CtB,SAASuzL,GAAYra,GACnB,OAAO,SAAS74K,EAAOyb,EAAKgoB,GAa1B,OAZIA,GAAuB,iBAARA,GAAoB8sJ,GAAevwL,EAAOyb,EAAKgoB,KAChEhoB,EAAMgoB,EAAO3kC,GAGfkB,EAAQmzL,GAASnzL,GACbyb,IAAQ3c,GACV2c,EAAMzb,EACNA,EAAQ,GAERyb,EAAM03K,GAAS13K,GA57CrB,SAAmBzb,EAAOyb,EAAKgoB,EAAMo1I,GAKnC,IAJA,IAAIv7J,GAAS,EACT3d,EAAS09K,GAAUP,IAAYrhK,EAAMzb,IAAUyjC,GAAQ,IAAK,GAC5DhiC,EAASP,EAAMvB,GAEZA,KACL8B,EAAOo3K,EAAYl5K,IAAW2d,GAAStd,EACvCA,GAASyjC,EAEX,OAAOhiC,EAs7CE2xL,CAAUpzL,EAAOyb,EADxBgoB,EAAOA,IAAS3kC,EAAakB,EAAQyb,EAAM,GAAK,EAAK03K,GAAS1vJ,GAC3Bo1I,IAWvC,SAASwa,GAA0BnuH,GACjC,OAAO,SAAS5lE,EAAOknL,GAKrB,MAJsB,iBAATlnL,GAAqC,iBAATknL,IACvClnL,EAAQg0L,GAASh0L,GACjBknL,EAAQ8M,GAAS9M,IAEZthH,EAAS5lE,EAAOknL,IAqB3B,SAAS+L,GAAcnb,EAAM8K,EAASqR,EAAUt7F,EAAaylB,EAAS0xE,EAAUC,EAASyC,EAAQC,EAAKz1D,GACpG,IAAIk3D,EArxKc,EAqxKJtR,EAMdA,GAAYsR,EAAUvkB,EAAoBC,EA5xKlB,GA6xKxBgT,KAAasR,EAAUtkB,EAA0BD,MAG/CiT,IAAW,GAEb,IAAIt3F,EAAU,CACZwsF,EAAM8K,EAASxkE,EAVC81E,EAAUpE,EAAWtwL,EAFtB00L,EAAUnE,EAAUvwL,EAGd00L,EAAU10L,EAAYswL,EAFvBoE,EAAU10L,EAAYuwL,EAYzByC,EAAQC,EAAKz1D,GAG5B76H,EAAS8xL,EAASr0L,MAAMJ,EAAW8rF,GAKvC,OAJI6mG,GAAWra,IACbqc,GAAQhyL,EAAQmpF,GAElBnpF,EAAOw2F,YAAcA,EACdy7F,GAAgBjyL,EAAQ21K,EAAM8K,GAUvC,SAASyR,GAAY5pF,GACnB,IAAIqtE,EAAO/sK,GAAK0/F,GAChB,OAAO,SAAS+3E,EAAQ8R,GAGtB,GAFA9R,EAASwR,GAASxR,IAClB8R,EAAyB,MAAbA,EAAoB,EAAItW,GAAUuW,GAAUD,GAAY,OACnD1W,GAAe4E,GAAS,CAGvC,IAAIgS,GAAQ7jL,GAAS6xK,GAAU,KAAKriL,MAAM,KAI1C,SADAq0L,GAAQ7jL,GAFImnK,EAAK0c,EAAK,GAAK,MAAQA,EAAK,GAAKF,KAEnB,KAAKn0L,MAAM,MACvB,GAAK,MAAQq0L,EAAK,GAAKF,IAEvC,OAAOxc,EAAK0K,IAWhB,IAAIiM,GAAclQ,IAAQ,EAAInD,GAAW,IAAImD,GAAI,CAAC,EAAE,KAAK,IAAOxO,EAAmB,SAAShwG,GAC1F,OAAO,IAAIw+G,GAAIx+G,IAD2D2qC,GAW5E,SAAS+pF,GAAc/N,GACrB,OAAO,SAASp/G,GACd,IAAIiyB,EAAM2pF,GAAO57G,GACjB,OAAIiyB,GAAOo3E,EACFsK,GAAW3zG,GAEhBiyB,GAAOy3E,EACFqK,GAAW/zG,GAn6I1B,SAAqBA,EAAQv/D,GAC3B,OAAO6wK,GAAS7wK,GAAO,SAASvH,GAC9B,MAAO,CAACA,EAAK8mE,EAAO9mE,OAm6IXk0L,CAAYptH,EAAQo/G,EAASp/G,KA6BxC,SAASqtH,GAAW7c,EAAM8K,EAASxkE,EAAS0xE,EAAUC,EAASyC,EAAQC,EAAKz1D,GAC1E,IAAI41D,EAl4KiB,EAk4KLhQ,EAChB,IAAKgQ,GAA4B,mBAAR9a,EACvB,MAAM,IAAIvlF,GAAUg9E,GAEtB,IAAIlvK,EAASyvL,EAAWA,EAASzvL,OAAS,EAS1C,GARKA,IACHuiL,IAAW,GACXkN,EAAWC,EAAUvwL,GAEvBizL,EAAMA,IAAQjzL,EAAYizL,EAAM1U,GAAUwW,GAAU9B,GAAM,GAC1Dz1D,EAAQA,IAAUx9H,EAAYw9H,EAAQu3D,GAAUv3D,GAChD38H,GAAU0vL,EAAUA,EAAQ1vL,OAAS,EAEjCuiL,EAAUhT,EAAyB,CACrC,IAAI0iB,EAAgBxC,EAChByC,EAAexC,EAEnBD,EAAWC,EAAUvwL,EAEvB,IAAI6e,EAAOu0K,EAAYpzL,EAAY+gG,GAAQu3E,GAEvCxsF,EAAU,CACZwsF,EAAM8K,EAASxkE,EAAS0xE,EAAUC,EAASuC,EAAeC,EAC1DC,EAAQC,EAAKz1D,GAkBf,GAfI3+G,GA26BN,SAAmBA,EAAMjd,GACvB,IAAIwhL,EAAUvkK,EAAK,GACfu2K,EAAaxzL,EAAO,GACpByzL,EAAajS,EAAUgS,EACvB9P,EAAW+P,EAAa,IAExBC,EACAF,GAAc/kB,GA50MA,GA40MmB+S,GACjCgS,GAAc/kB,GAAmB+S,GAAW9S,GAAqBzxJ,EAAK,GAAGhe,QAAUe,EAAO,IAC5E,KAAdwzL,GAAqDxzL,EAAO,GAAGf,QAAUe,EAAO,IA90MlE,GA80M0EwhL,EAG5F,IAAMkC,IAAYgQ,EAChB,OAAOz2K,EAr1MQ,EAw1Mbu2K,IACFv2K,EAAK,GAAKjd,EAAO,GAEjByzL,GA31Me,EA21MDjS,EAA2B,EAz1MnB,GA41MxB,IAAI5iL,EAAQoB,EAAO,GACnB,GAAIpB,EAAO,CACT,IAAI8vL,EAAWzxK,EAAK,GACpBA,EAAK,GAAKyxK,EAAWD,GAAYC,EAAU9vL,EAAOoB,EAAO,IAAMpB,EAC/Dqe,EAAK,GAAKyxK,EAAW3U,GAAe98J,EAAK,GAAIoxJ,GAAeruK,EAAO,IAGrEpB,EAAQoB,EAAO,MAEb0uL,EAAWzxK,EAAK,GAChBA,EAAK,GAAKyxK,EAAWU,GAAiBV,EAAU9vL,EAAOoB,EAAO,IAAMpB,EACpEqe,EAAK,GAAKyxK,EAAW3U,GAAe98J,EAAK,GAAIoxJ,GAAeruK,EAAO,KAGrEpB,EAAQoB,EAAO,MAEbid,EAAK,GAAKre,GAGR40L,EAAa/kB,IACfxxJ,EAAK,GAAgB,MAAXA,EAAK,GAAajd,EAAO,GAAK48K,GAAU3/J,EAAK,GAAIjd,EAAO,KAGrD,MAAXid,EAAK,KACPA,EAAK,GAAKjd,EAAO,IAGnBid,EAAK,GAAKjd,EAAO,GACjBid,EAAK,GAAKw2K,EA59BRE,CAAUzpG,EAASjtE,GAErBy5J,EAAOxsF,EAAQ,GACfs3F,EAAUt3F,EAAQ,GAClB8yB,EAAU9yB,EAAQ,GAClBwkG,EAAWxkG,EAAQ,GACnBykG,EAAUzkG,EAAQ,KAClB0xC,EAAQ1xC,EAAQ,GAAKA,EAAQ,KAAO9rF,EAC/BozL,EAAY,EAAI9a,EAAKz3K,OACtB09K,GAAUzyF,EAAQ,GAAKjrF,EAAQ,KAEX,GAAVuiL,IACZA,IAAW,IAERA,GA56KY,GA46KDA,EAGdzgL,EA56KgB,GA26KPygL,GAA8BA,GAAWlT,EApgBtD,SAAqBoI,EAAM8K,EAAS5lD,GAClC,IAAI4mD,EAAO4N,GAAW1Z,GAwBtB,OAtBA,SAASn7E,IAMP,IALA,IAAIt8F,EAAS+B,UAAU/B,OACnBoD,EAAO7B,EAAMvB,GACb2d,EAAQ3d,EACRs4F,EAAcm6F,GAAUn2F,GAErB3+E,KACLva,EAAKua,GAAS5b,UAAU4b,GAE1B,IAAI+xK,EAAW1vL,EAAS,GAAKoD,EAAK,KAAOk1F,GAAel1F,EAAKpD,EAAS,KAAOs4F,EACzE,GACAwiF,GAAe13K,EAAMk1F,GAGzB,OADAt4F,GAAU0vL,EAAQ1vL,QACL28H,EACJi2D,GACLnb,EAAM8K,EAASyP,GAAc11F,EAAQhE,YAAan5F,EAClDiE,EAAMssL,EAASvwL,EAAWA,EAAWw9H,EAAQ38H,GAG1CT,GADG4D,MAAQA,OAAS05J,IAAQ15J,gBAAgBm5F,EAAWinF,EAAO9L,EACpDt0K,KAAMC,IA8eduxL,CAAYld,EAAM8K,EAAS5lD,GAC1B4lD,GAAWjT,GAAgC,IAAXiT,GAAqDmN,EAAQ1vL,OAG9FgyL,GAAazyL,MAAMJ,EAAW8rF,GA9O3C,SAAuBwsF,EAAM8K,EAASxkE,EAAS0xE,GAC7C,IAAI6C,EAtsKa,EAssKJ/P,EACTgB,EAAO4N,GAAW1Z,GAkBtB,OAhBA,SAASn7E,IAQP,IAPA,IAAIszF,GAAa,EACbC,EAAa9tL,UAAU/B,OACvB+vL,GAAa,EACbC,EAAaP,EAASzvL,OACtBoD,EAAO7B,EAAMyuL,EAAaH,GAC1B7jG,EAAM7oF,MAAQA,OAAS05J,IAAQ15J,gBAAgBm5F,EAAWinF,EAAO9L,IAE5DsY,EAAYC,GACnB5sL,EAAK2sL,GAAaN,EAASM,GAE7B,KAAOF,KACLzsL,EAAK2sL,KAAehuL,YAAY6tL,GAElC,OAAOrwL,GAAMysF,EAAIsmG,EAASv0E,EAAU56G,KAAMC,IA0NjCwxL,CAAcnd,EAAM8K,EAASxkE,EAAS0xE,QAJ/C,IAAI3tL,EAhmBR,SAAoB21K,EAAM8K,EAASxkE,GACjC,IAAIu0E,EA90Ja,EA80JJ/P,EACTgB,EAAO4N,GAAW1Z,GAMtB,OAJA,SAASn7E,IAEP,OADUn5F,MAAQA,OAAS05J,IAAQ15J,gBAAgBm5F,EAAWinF,EAAO9L,GAC3Dl4K,MAAM+yL,EAASv0E,EAAU56G,KAAMpB,YA0lB5B8yL,CAAWpd,EAAM8K,EAASxkE,GASzC,OAAOg2E,IADM/1K,EAAO2uK,GAAcmH,IACJhyL,EAAQmpF,GAAUwsF,EAAM8K,GAexD,SAASuS,GAAuBpoJ,EAAU88I,EAAUrpL,EAAK8mE,GACvD,OAAIv6B,IAAavtC,GACZuiL,GAAGh1I,EAAUkvI,GAAYz7K,MAAUwC,GAAe8B,KAAKwiE,EAAQ9mE,GAC3DqpL,EAEF98I,EAiBT,SAASqoJ,GAAoBroJ,EAAU88I,EAAUrpL,EAAK8mE,EAAQlmE,EAAQkD,GAOpE,OANIxD,GAASisC,IAAajsC,GAAS+oL,KAEjCvlL,EAAM+mB,IAAIw+J,EAAU98I,GACpBk+I,GAAUl+I,EAAU88I,EAAUrqL,EAAW41L,GAAqB9wL,GAC9DA,EAAc,OAAEulL,IAEX98I,EAYT,SAASsoJ,GAAgBr1L,GACvB,OAAO8tF,GAAc9tF,GAASR,EAAYQ,EAgB5C,SAASuoL,GAAYjpH,EAAO4nH,EAAOtE,EAASC,EAAYkF,EAAWzjL,GACjE,IAAImkL,EApgLmB,EAogLP7F,EACZ0S,EAAYh2H,EAAMj/D,OAClBknL,EAAYL,EAAM7mL,OAEtB,GAAIi1L,GAAa/N,KAAekB,GAAalB,EAAY+N,GACvD,OAAO,EAGT,IAAIC,EAAajxL,EAAM6mB,IAAIm0C,GACvB4pH,EAAa5kL,EAAM6mB,IAAI+7J,GAC3B,GAAIqO,GAAcrM,EAChB,OAAOqM,GAAcrO,GAASgC,GAAc5pH,EAE9C,IAAIthD,GAAS,EACT7b,GAAS,EACTwlL,EAlhLqB,EAkhLb/E,EAAoC,IAAIjC,GAAWnhL,EAM/D,IAJA8E,EAAM+mB,IAAIi0C,EAAO4nH,GACjB5iL,EAAM+mB,IAAI67J,EAAO5nH,KAGRthD,EAAQs3K,GAAW,CAC1B,IAAIE,EAAWl2H,EAAMthD,GACjBorK,EAAWlC,EAAMlpK,GAErB,GAAI6kK,EACF,IAAIwG,EAAWZ,EACX5F,EAAWuG,EAAUoM,EAAUx3K,EAAOkpK,EAAO5nH,EAAOh7D,GACpDu+K,EAAW2S,EAAUpM,EAAUprK,EAAOshD,EAAO4nH,EAAO5iL,GAE1D,GAAI+kL,IAAa7pL,EAAW,CAC1B,GAAI6pL,EACF,SAEFlnL,GAAS,EACT,MAGF,GAAIwlL,GACF,IAAK1O,GAAUiO,GAAO,SAASkC,EAAU5B,GACnC,IAAKnN,GAASsN,EAAMH,KACfgO,IAAapM,GAAYrB,EAAUyN,EAAUpM,EAAUxG,EAASC,EAAYv+K,IAC/E,OAAOqjL,EAAKviL,KAAKoiL,MAEjB,CACNrlL,GAAS,EACT,YAEG,GACDqzL,IAAapM,IACXrB,EAAUyN,EAAUpM,EAAUxG,EAASC,EAAYv+K,GACpD,CACLnC,GAAS,EACT,OAKJ,OAFAmC,EAAc,OAAEg7D,GAChBh7D,EAAc,OAAE4iL,GACT/kL,EA0KT,SAAS0vL,GAAS/Z,GAChB,OAAO6U,GAAYC,GAAS9U,EAAMt4K,EAAWi2L,IAAU3d,EAAO,IAUhE,SAAS0M,GAAWl9G,GAClB,OAAOm/G,GAAen/G,EAAQ7mE,GAAMijL,IAWtC,SAASa,GAAaj9G,GACpB,OAAOm/G,GAAen/G,EAAQk8G,GAAQF,IAUxC,IAAI/iF,GAAWm+E,GAAiB,SAAS5G,GACvC,OAAO4G,GAAQvzJ,IAAI2sJ,IADIptE,GAWzB,SAASunF,GAAYna,GAKnB,IAJA,IAAI31K,EAAU21K,EAAKl6J,KAAO,GACtB0hD,EAAQq/G,GAAUx8K,GAClB9B,EAAS2C,GAAe8B,KAAK65K,GAAWx8K,GAAUm9D,EAAMj/D,OAAS,EAE9DA,KAAU,CACf,IAAIge,EAAOihD,EAAMj/D,GACbq1L,EAAYr3K,EAAKy5J,KACrB,GAAiB,MAAb4d,GAAqBA,GAAa5d,EACpC,OAAOz5J,EAAKT,KAGhB,OAAOzb,EAUT,SAAS2wL,GAAUhb,GAEjB,OADa90K,GAAe8B,KAAKu6K,GAAQ,eAAiBA,GAASvH,GACrDn/E,YAchB,SAASizF,KACP,IAAIzpL,EAASk9K,GAAOpH,UAAYA,GAEhC,OADA91K,EAASA,IAAW81K,GAAW+R,GAAe7nL,EACvCC,UAAU/B,OAAS8B,EAAOC,UAAU,GAAIA,UAAU,IAAMD,EAWjE,SAASijL,GAAWn9K,EAAKzH,GACvB,IAAI6d,EAAOpW,EAAI24K,SACf,OA+XF,SAAmB5gL,GACjB,IAAI2O,SAAc3O,EAClB,MAAgB,UAAR2O,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAV3O,EACU,OAAVA,EAnYE21L,CAAUn1L,GACb6d,EAAmB,iBAAP7d,EAAkB,SAAW,QACzC6d,EAAKpW,IAUX,SAAS2iL,GAAatjH,GAIpB,IAHA,IAAInlE,EAAS1B,GAAK6mE,GACdjnE,EAAS8B,EAAO9B,OAEbA,KAAU,CACf,IAAIG,EAAM2B,EAAO9B,GACbL,EAAQsnE,EAAO9mE,GAEnB2B,EAAO9B,GAAU,CAACG,EAAKR,EAAO+qL,GAAmB/qL,IAEnD,OAAOmC,EAWT,SAASi7K,GAAU91G,EAAQ9mE,GACzB,IAAIR,EAlxJR,SAAkBsnE,EAAQ9mE,GACxB,OAAiB,MAAV8mE,EAAiB9nE,EAAY8nE,EAAO9mE,GAixJ7BX,CAASynE,EAAQ9mE,GAC7B,OAAOupL,GAAa/pL,GAASA,EAAQR,EAqCvC,IAAIkkL,GAAchG,GAA+B,SAASp2G,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS5lE,GAAO4lE,GACTgxG,GAAYoF,GAAiBp2G,IAAS,SAASlkD,GACpD,OAAO64G,GAAqBn3H,KAAKwiE,EAAQlkD,QANRwyK,GAiBjCtS,GAAgB5F,GAA+B,SAASp2G,GAE1D,IADA,IAAInlE,EAAS,GACNmlE,GACLuxG,GAAU12K,EAAQuhL,GAAWp8G,IAC7BA,EAASu1G,GAAav1G,GAExB,OAAOnlE,GAN8ByzL,GAgBnC1S,GAAS0D,GA2Eb,SAASiP,GAAQvuH,EAAQwvB,EAAMg/F,GAO7B,IAJA,IAAI93K,GAAS,EACT3d,GAHJy2F,EAAOyvF,GAASzvF,EAAMxvB,IAGJjnE,OACd8B,GAAS,IAEJ6b,EAAQ3d,GAAQ,CACvB,IAAIG,EAAMgmL,GAAM1vF,EAAK94E,IACrB,KAAM7b,EAAmB,MAAVmlE,GAAkBwuH,EAAQxuH,EAAQ9mE,IAC/C,MAEF8mE,EAASA,EAAO9mE,GAElB,OAAI2B,KAAY6b,GAAS3d,EAChB8B,KAET9B,EAAmB,MAAVinE,EAAiB,EAAIA,EAAOjnE,SAClB01L,GAAS11L,IAAWihL,GAAQ9gL,EAAKH,KACjDwB,GAAQylE,IAAW45G,GAAY55G,IA6BpC,SAAS+7G,GAAgB/7G,GACvB,MAAqC,mBAAtBA,EAAOvmE,aAA8BspL,GAAY/iH,GAE5D,GADAo4G,GAAW7C,GAAav1G,IA8E9B,SAAS2+G,GAAcjmL,GACrB,OAAO6B,GAAQ7B,IAAUkhL,GAAYlhL,OAChC+8K,IAAoB/8K,GAASA,EAAM+8K,KAW1C,SAASuE,GAAQthL,EAAOK,GACtB,IAAIsO,SAAc3O,EAGlB,SAFAK,EAAmB,MAAVA,EAAiB2vK,EAAmB3vK,KAGlC,UAARsO,GACU,UAARA,GAAoBilK,GAASxlK,KAAKpO,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQK,EAajD,SAAS4wL,GAAejxL,EAAOge,EAAOspD,GACpC,IAAKxmE,GAASwmE,GACZ,OAAO,EAET,IAAI34D,SAAcqP,EAClB,SAAY,UAARrP,EACKg8K,GAAYrjH,IAAWg6G,GAAQtjK,EAAOspD,EAAOjnE,QACrC,UAARsO,GAAoBqP,KAASspD,IAE7By6G,GAAGz6G,EAAOtpD,GAAQhe,GAa7B,SAAS8qL,GAAM9qL,EAAOsnE,GACpB,GAAIzlE,GAAQ7B,GACV,OAAO,EAET,IAAI2O,SAAc3O,EAClB,QAAY,UAAR2O,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAAT3O,IAAiB6lL,GAAS7lL,MAGvB0yK,GAActkK,KAAKpO,KAAWyyK,GAAarkK,KAAKpO,IAC1C,MAAVsnE,GAAkBtnE,KAAS0B,GAAO4lE,IAyBvC,SAAS6qH,GAAWra,GAClB,IAAIoa,EAAWD,GAAYna,GACvBoP,EAAQ7H,GAAO6S,GAEnB,GAAoB,mBAAThL,KAAyBgL,KAAY3S,GAAY7/K,WAC1D,OAAO,EAET,GAAIo4K,IAASoP,EACX,OAAO,EAET,IAAI7oK,EAAOkiF,GAAQ2mF,GACnB,QAAS7oK,GAAQy5J,IAASz5J,EAAK,IA7S5BggK,IAAY6E,GAAO,IAAI7E,GAAS,IAAI/gE,YAAY,MAAQ+zD,GACxDiN,IAAO4E,GAAO,IAAI5E,KAAQ3N,GAC1BlqJ,IAAWy8J,GAAOz8J,GAAQC,YAAcoqJ,GACxCyN,IAAO2E,GAAO,IAAI3E,KAAQvN,GAC1BwN,IAAW0E,GAAO,IAAI1E,KAAYrN,KACrC+R,GAAS,SAASljL,GAChB,IAAImC,EAASykL,GAAW5mL,GACpB4jL,EAAOzhL,GAAU0uK,EAAY7wK,EAAMe,YAAcvB,EACjDw2L,EAAapS,EAAO/E,GAAS+E,GAAQ,GAEzC,GAAIoS,EACF,OAAQA,GACN,KAAKpX,GAAoB,OAAOvN,EAChC,KAAKyN,GAAe,OAAOnO,EAC3B,KAAKoO,GAAmB,OAAOjO,EAC/B,KAAKkO,GAAe,OAAOhO,EAC3B,KAAKiO,GAAmB,OAAO9N,EAGnC,OAAOhvK,IA+SX,IAAI8zL,GAAa/Z,GAAal/D,GAAak5E,GAS3C,SAAS7L,GAAYrqL,GACnB,IAAI4jL,EAAO5jL,GAASA,EAAMe,YAG1B,OAAOf,KAFqB,mBAAR4jL,GAAsBA,EAAKlkL,WAAcu8K,IAa/D,SAAS8O,GAAmB/qL,GAC1B,OAAOA,IAAUA,IAAUc,GAASd,GAYtC,SAAS6qL,GAAwBrqL,EAAKqpL,GACpC,OAAO,SAASviH,GACd,OAAc,MAAVA,IAGGA,EAAO9mE,KAASqpL,IACpBA,IAAarqL,GAAcgB,KAAOkB,GAAO4lE,MAsIhD,SAASslH,GAAS9U,EAAMp3K,EAAOsmC,GAE7B,OADAtmC,EAAQq9K,GAAUr9K,IAAUlB,EAAas4K,EAAKz3K,OAAS,EAAKK,EAAO,GAC5D,WAML,IALA,IAAI+C,EAAOrB,UACP4b,GAAS,EACT3d,EAAS09K,GAAUt6K,EAAKpD,OAASK,EAAO,GACxC4+D,EAAQ19D,EAAMvB,KAET2d,EAAQ3d,GACfi/D,EAAMthD,GAASva,EAAK/C,EAAQsd,GAE9BA,GAAS,EAET,IADA,IAAIm4K,EAAYv0L,EAAMlB,EAAQ,KACrBsd,EAAQtd,GACfy1L,EAAUn4K,GAASva,EAAKua,GAG1B,OADAm4K,EAAUz1L,GAASsmC,EAAUs4B,GACtB1/D,GAAMk4K,EAAMt0K,KAAM2yL,IAY7B,SAASpyL,GAAOujE,EAAQwvB,GACtB,OAAOA,EAAKz2F,OAAS,EAAIinE,EAASg/G,GAAQh/G,EAAQ8lH,GAAUt2F,EAAM,GAAI,IAaxE,SAASo8F,GAAQ5zH,EAAOwrE,GAKtB,IAJA,IAAIwqD,EAAYh2H,EAAMj/D,OAClBA,EAAS29K,GAAUlzC,EAAQzqI,OAAQi1L,GACnCc,EAAWzU,GAAUriH,GAElBj/D,KAAU,CACf,IAAI2d,EAAQ8sH,EAAQzqI,GACpBi/D,EAAMj/D,GAAUihL,GAAQtjK,EAAOs3K,GAAac,EAASp4K,GAASxe,EAEhE,OAAO8/D,EAWT,SAAS8rH,GAAQ9jH,EAAQ9mE,GACvB,IAAY,gBAARA,GAAgD,oBAAhB8mE,EAAO9mE,KAIhC,aAAPA,EAIJ,OAAO8mE,EAAO9mE,GAiBhB,IAAI2zL,GAAUkC,GAASrJ,IAUnBppL,GAAa25K,IAAiB,SAASzF,EAAM6M,GAC/C,OAAOznB,GAAKt5J,WAAWk0K,EAAM6M,IAW3BgI,GAAc0J,GAASpJ,IAY3B,SAASmH,GAAgBz3F,EAASt3F,EAAWu9K,GAC3C,IAAIxhL,EAAUiE,EAAY,GAC1B,OAAOsnL,GAAYhwF,EA1brB,SAA2Bv7F,EAAQk1L,GACjC,IAAIj2L,EAASi2L,EAAQj2L,OACrB,IAAKA,EACH,OAAOe,EAET,IAAIqlJ,EAAYpmJ,EAAS,EAGzB,OAFAi2L,EAAQ7vC,IAAcpmJ,EAAS,EAAI,KAAO,IAAMi2L,EAAQ7vC,GACxD6vC,EAAUA,EAAQnuL,KAAK9H,EAAS,EAAI,KAAO,KACpCe,EAAOlB,QAAQ8yK,GAAe,uBAAyBsjB,EAAU,UAkb5CC,CAAkBn1L,EAqHhD,SAA2Bk1L,EAAS1T,GAOlC,OANAzK,GAAUhI,GAAW,SAASqkB,GAC5B,IAAIx0L,EAAQ,KAAOw0L,EAAK,GACnB5R,EAAU4R,EAAK,KAAQhc,GAAc8d,EAASt2L,IACjDs2L,EAAQlxL,KAAKpF,MAGVs2L,EAAQjxG,OA5HuCmxG,CAtjBxD,SAAwBp1L,GACtB,IAAIgF,EAAQhF,EAAOgF,MAAM6sK,IACzB,OAAO7sK,EAAQA,EAAM,GAAGjG,MAAM+yK,IAAkB,GAojBwBujB,CAAer1L,GAASwhL,KAYlG,SAASyT,GAASve,GAChB,IAAIx5G,EAAQ,EACRo4H,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQ1Y,KACR2Y,EApiNK,IAoiNmBD,EAAQD,GAGpC,GADAA,EAAaC,EACTC,EAAY,GACd,KAAMt4H,GAziNE,IA0iNN,OAAOl8D,UAAU,QAGnBk8D,EAAQ,EAEV,OAAOw5G,EAAKl4K,MAAMJ,EAAW4C,YAYjC,SAASs/K,GAAYpiH,EAAO0gB,GAC1B,IAAIhiE,GAAS,EACT3d,EAASi/D,EAAMj/D,OACfomJ,EAAYpmJ,EAAS,EAGzB,IADA2/E,EAAOA,IAASxgF,EAAYa,EAAS2/E,IAC5BhiE,EAAQgiE,GAAM,CACrB,IAAIkO,EAAOszF,GAAWxjK,EAAOyoI,GACzBzmJ,EAAQs/D,EAAM4uB,GAElB5uB,EAAM4uB,GAAQ5uB,EAAMthD,GACpBshD,EAAMthD,GAAShe,EAGjB,OADAs/D,EAAMj/D,OAAS2/E,EACR1gB,EAUT,IAAIgwH,GAvTJ,SAAuBxX,GACrB,IAAI31K,EAAS00L,GAAQ/e,GAAM,SAASt3K,GAIlC,OAh0MiB,MA6zMb++F,EAAMvf,MACRuf,EAAM+8C,QAED97I,KAGL++F,EAAQp9F,EAAOo9F,MACnB,OAAOp9F,EA8SU20L,EAAc,SAAS7c,GACxC,IAAI93K,EAAS,GAOb,OAN6B,KAAzB83K,EAAOrtI,WAAW,IACpBzqC,EAAOiD,KAAK,IAEd60K,EAAO/5K,QAAQyyK,IAAY,SAASvsK,EAAOo8K,EAAQuU,EAAOC,GACxD70L,EAAOiD,KAAK2xL,EAAQC,EAAU92L,QAAQmzK,GAAc,MAASmP,GAAUp8K,MAElEjE,KAUT,SAASqkL,GAAMxmL,GACb,GAAoB,iBAATA,GAAqB6lL,GAAS7lL,GACvC,OAAOA,EAET,IAAImC,EAAUnC,EAAQ,GACtB,MAAkB,KAAVmC,GAAkB,EAAInC,IAAU,IAAa,KAAOmC,EAU9D,SAAS08K,GAAS/G,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOqE,GAAar3K,KAAKgzK,GACzB,MAAOzzK,IACT,IACE,OAAQyzK,EAAO,GACf,MAAOzzK,KAEX,MAAO,GA4BT,SAASo7K,GAAa9iF,GACpB,GAAIA,aAAmB4iF,GACrB,OAAO5iF,EAAQl6F,QAEjB,IAAIN,EAAS,IAAIq9K,GAAc7iF,EAAQmjF,YAAanjF,EAAQqjF,WAI5D,OAHA79K,EAAO49K,YAAc4B,GAAUhlF,EAAQojF,aACvC59K,EAAO89K,UAAatjF,EAAQsjF,UAC5B99K,EAAO+9K,WAAavjF,EAAQujF,WACrB/9K,EAsIT,IAAI05I,GAAa6wC,IAAS,SAASptH,EAAOS,GACxC,OAAOsrH,GAAkB/rH,GACrBslH,GAAetlH,EAAOymH,GAAYhmH,EAAQ,EAAGsrH,IAAmB,IAChE,MA6BF4L,GAAevK,IAAS,SAASptH,EAAOS,GAC1C,IAAIk4G,EAAW32D,GAAKvhD,GAIpB,OAHIsrH,GAAkBpT,KACpBA,EAAWz4K,GAEN6rL,GAAkB/rH,GACrBslH,GAAetlH,EAAOymH,GAAYhmH,EAAQ,EAAGsrH,IAAmB,GAAOO,GAAY3T,EAAU,IAC7F,MA0BFif,GAAiBxK,IAAS,SAASptH,EAAOS,GAC5C,IAAI44G,EAAar3D,GAAKvhD,GAItB,OAHIsrH,GAAkB1S,KACpBA,EAAan5K,GAER6rL,GAAkB/rH,GACrBslH,GAAetlH,EAAOymH,GAAYhmH,EAAQ,EAAGsrH,IAAmB,GAAO7rL,EAAWm5K,GAClF,MAsON,SAASwe,GAAU73H,EAAOH,EAAW4lD,GACnC,IAAI1kH,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI2d,EAAqB,MAAb+mG,EAAoB,EAAIwvE,GAAUxvE,GAI9C,OAHI/mG,EAAQ,IACVA,EAAQ+/J,GAAU19K,EAAS2d,EAAO,IAE7Bs7J,GAAch6G,EAAOssH,GAAYzsH,EAAW,GAAInhD,GAsCzD,SAASo5K,GAAc93H,EAAOH,EAAW4lD,GACvC,IAAI1kH,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI2d,EAAQ3d,EAAS,EAOrB,OANI0kH,IAAcvlH,IAChBwe,EAAQu2K,GAAUxvE,GAClB/mG,EAAQ+mG,EAAY,EAChBg5D,GAAU19K,EAAS2d,EAAO,GAC1BggK,GAAUhgK,EAAO3d,EAAS,IAEzBi5K,GAAch6G,EAAOssH,GAAYzsH,EAAW,GAAInhD,GAAO,GAiBhE,SAASy3K,GAAQn2H,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAMj/D,QACvB0lL,GAAYzmH,EAAO,GAAK,GAgG1C,SAAS7kC,GAAK6kC,GACZ,OAAQA,GAASA,EAAMj/D,OAAUi/D,EAAM,GAAK9/D,EA0E9C,IAAI63L,GAAe3K,IAAS,SAASpF,GACnC,IAAIgQ,EAAS1e,GAAS0O,EAAQ8H,IAC9B,OAAQkI,EAAOj3L,QAAUi3L,EAAO,KAAOhQ,EAAO,GAC1CD,GAAiBiQ,GACjB,MA0BFC,GAAiB7K,IAAS,SAASpF,GACrC,IAAIrP,EAAW32D,GAAKgmE,GAChBgQ,EAAS1e,GAAS0O,EAAQ8H,IAO9B,OALInX,IAAa32D,GAAKg2E,GACpBrf,EAAWz4K,EAEX83L,EAAOx2E,MAEDw2E,EAAOj3L,QAAUi3L,EAAO,KAAOhQ,EAAO,GAC1CD,GAAiBiQ,EAAQ1L,GAAY3T,EAAU,IAC/C,MAwBFuf,GAAmB9K,IAAS,SAASpF,GACvC,IAAI3O,EAAar3D,GAAKgmE,GAClBgQ,EAAS1e,GAAS0O,EAAQ8H,IAM9B,OAJAzW,EAAkC,mBAAdA,EAA2BA,EAAan5K,IAE1D83L,EAAOx2E,MAEDw2E,EAAOj3L,QAAUi3L,EAAO,KAAOhQ,EAAO,GAC1CD,GAAiBiQ,EAAQ93L,EAAWm5K,GACpC,MAoCN,SAASr3D,GAAKhiD,GACZ,IAAIj/D,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,OAAOA,EAASi/D,EAAMj/D,EAAS,GAAKb,EAuFtC,IAAIi4L,GAAO/K,GAASgL,IAsBpB,SAASA,GAAQp4H,EAAOS,GACtB,OAAQT,GAASA,EAAMj/D,QAAU0/D,GAAUA,EAAO1/D,OAC9CisL,GAAYhtH,EAAOS,GACnBT,EAqFN,IAAIq4H,GAAS9F,IAAS,SAASvyH,EAAOwrE,GACpC,IAAIzqI,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACnC8B,EAASmgL,GAAOhjH,EAAOwrE,GAM3B,OAJAyhD,GAAWjtH,EAAOs5G,GAAS9tC,GAAS,SAAS9sH,GAC3C,OAAOsjK,GAAQtjK,EAAO3d,IAAW2d,EAAQA,KACxCqnE,KAAK6mG,KAED/pL,KA2ET,SAASgqH,GAAQ7sD,GACf,OAAgB,MAATA,EAAgBA,EAAQ8+G,GAAct5K,KAAKw6D,GAkapD,IAAIs4H,GAAQlL,IAAS,SAASpF,GAC5B,OAAOkH,GAASzI,GAAYuB,EAAQ,EAAG+D,IAAmB,OA0BxDwM,GAAUnL,IAAS,SAASpF,GAC9B,IAAIrP,EAAW32D,GAAKgmE,GAIpB,OAHI+D,GAAkBpT,KACpBA,EAAWz4K,GAENgvL,GAASzI,GAAYuB,EAAQ,EAAG+D,IAAmB,GAAOO,GAAY3T,EAAU,OAwBrF6f,GAAYpL,IAAS,SAASpF,GAChC,IAAI3O,EAAar3D,GAAKgmE,GAEtB,OADA3O,EAAkC,mBAAdA,EAA2BA,EAAan5K,EACrDgvL,GAASzI,GAAYuB,EAAQ,EAAG+D,IAAmB,GAAO7rL,EAAWm5K,MAgG9E,SAASof,GAAMz4H,GACb,IAAMA,IAASA,EAAMj/D,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANAi/D,EAAQg5G,GAAYh5G,GAAO,SAASisB,GAClC,GAAI8/F,GAAkB9/F,GAEpB,OADAlrF,EAAS09K,GAAUxyF,EAAMlrF,OAAQA,IAC1B,KAGJ05K,GAAU15K,GAAQ,SAAS2d,GAChC,OAAO46J,GAASt5G,EAAO65G,GAAan7J,OAyBxC,SAASg6K,GAAU14H,EAAO24G,GACxB,IAAM34G,IAASA,EAAMj/D,OACnB,MAAO,GAET,IAAI8B,EAAS41L,GAAMz4H,GACnB,OAAgB,MAAZ24G,EACK91K,EAEFy2K,GAASz2K,GAAQ,SAASopF,GAC/B,OAAO3rF,GAAMq4K,EAAUz4K,EAAW+rF,MAwBtC,IAAI0sG,GAAUvL,IAAS,SAASptH,EAAOS,GACrC,OAAOsrH,GAAkB/rH,GACrBslH,GAAetlH,EAAOS,GACtB,MAqBFm4H,GAAMxL,IAAS,SAASpF,GAC1B,OAAO0H,GAAQ1W,GAAYgP,EAAQ+D,QA0BjC8M,GAAQzL,IAAS,SAASpF,GAC5B,IAAIrP,EAAW32D,GAAKgmE,GAIpB,OAHI+D,GAAkBpT,KACpBA,EAAWz4K,GAENwvL,GAAQ1W,GAAYgP,EAAQ+D,IAAoBO,GAAY3T,EAAU,OAwB3EmgB,GAAU1L,IAAS,SAASpF,GAC9B,IAAI3O,EAAar3D,GAAKgmE,GAEtB,OADA3O,EAAkC,mBAAdA,EAA2BA,EAAan5K,EACrDwvL,GAAQ1W,GAAYgP,EAAQ+D,IAAoB7rL,EAAWm5K,MAmBhE0f,GAAM3L,GAASqL,IA6DnB,IAAIO,GAAU5L,IAAS,SAASpF,GAC9B,IAAIjnL,EAASinL,EAAOjnL,OAChB43K,EAAW53K,EAAS,EAAIinL,EAAOjnL,EAAS,GAAKb,EAGjD,OADAy4K,EAA8B,mBAAZA,GAA0BqP,EAAOxmE,MAAOm3D,GAAYz4K,EAC/Dw4L,GAAU1Q,EAAQrP,MAkC3B,SAASsgB,GAAMv4L,GACb,IAAImC,EAASk9K,GAAOr/K,GAEpB,OADAmC,EAAO69K,WAAY,EACZ79K,EAsDT,SAAS6vL,GAAKhyL,EAAOw4L,GACnB,OAAOA,EAAYx4L,GAmBrB,IAAIy4L,GAAY5G,IAAS,SAAStP,GAChC,IAAIliL,EAASkiL,EAAMliL,OACfK,EAAQL,EAASkiL,EAAM,GAAK,EAC5BviL,EAAQwD,KAAKs8K,YACb0Y,EAAc,SAASlxH,GAAU,OAAOg7G,GAAOh7G,EAAQi7G,IAE3D,QAAIliL,EAAS,GAAKmD,KAAKu8K,YAAY1/K,SAC7BL,aAAiBu/K,IAAiB+B,GAAQ5gL,KAGhDV,EAAQA,EAAM6E,MAAMnE,GAAQA,GAASL,EAAS,EAAI,KAC5C0/K,YAAY36K,KAAK,CACrB,KAAQ4sL,GACR,KAAQ,CAACwG,GACT,QAAWh5L,IAEN,IAAIggL,GAAcx/K,EAAOwD,KAAKw8K,WAAWgS,MAAK,SAAS1yH,GAI5D,OAHIj/D,IAAWi/D,EAAMj/D,QACnBi/D,EAAMl6D,KAAK5F,GAEN8/D,MAZA97D,KAAKwuL,KAAKwG,MA+PrB,IAAIE,GAAU9H,IAAiB,SAASzuL,EAAQnC,EAAOQ,GACjDwC,GAAe8B,KAAK3C,EAAQ3B,KAC5B2B,EAAO3B,GAETwhL,GAAgB7/K,EAAQ3B,EAAK,MAuIjC,IAAIm4L,GAAOjH,GAAWyF,IAqBlByB,GAAWlH,GAAW0F,IA2G1B,SAAS50L,GAAQ08D,EAAY+4G,GAE3B,OADWp2K,GAAQq9D,GAAci5G,GAAYgK,IACjCjjH,EAAY0sH,GAAY3T,EAAU,IAuBhD,SAAS4gB,GAAa35H,EAAY+4G,GAEhC,OADWp2K,GAAQq9D,GAAck5G,GAAiBqN,IACtCvmH,EAAY0sH,GAAY3T,EAAU,IA0BhD,IAAIhiE,GAAU26E,IAAiB,SAASzuL,EAAQnC,EAAOQ,GACjDwC,GAAe8B,KAAK3C,EAAQ3B,GAC9B2B,EAAO3B,GAAK4E,KAAKpF,GAEjBgiL,GAAgB7/K,EAAQ3B,EAAK,CAACR,OAsElC,IAAI84L,GAAYpM,IAAS,SAASxtH,EAAY43B,EAAMrzF,GAClD,IAAIua,GAAS,EACTmlK,EAAwB,mBAARrsF,EAChB30F,EAASwoL,GAAYzrH,GAAct9D,EAAMs9D,EAAW7+D,QAAU,GAKlE,OAHA8hL,GAASjjH,GAAY,SAASl/D,GAC5BmC,IAAS6b,GAASmlK,EAASvjL,GAAMk3F,EAAM92F,EAAOyD,GAAQmkL,GAAW5nL,EAAO82F,EAAMrzF,MAEzEtB,KA+BL42L,GAAQnI,IAAiB,SAASzuL,EAAQnC,EAAOQ,GACnDwhL,GAAgB7/K,EAAQ3B,EAAKR,MA6C/B,SAASiI,GAAIi3D,EAAY+4G,GAEvB,OADWp2K,GAAQq9D,GAAc05G,GAAW8R,IAChCxrH,EAAY0sH,GAAY3T,EAAU,IAkFhD,IAAI+gB,GAAYpI,IAAiB,SAASzuL,EAAQnC,EAAOQ,GACvD2B,EAAO3B,EAAM,EAAI,GAAG4E,KAAKpF,MACxB,WAAa,MAAO,CAAC,GAAI,OAmS5B,IAAI4iG,GAAS8pF,IAAS,SAASxtH,EAAYwsH,GACzC,GAAkB,MAAdxsH,EACF,MAAO,GAET,IAAI7+D,EAASqrL,EAAUrrL,OAMvB,OALIA,EAAS,GAAK4wL,GAAe/xH,EAAYwsH,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACHrrL,EAAS,GAAK4wL,GAAevF,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,GAAYvsH,EAAY6mH,GAAY2F,EAAW,GAAI,OAqBxD5mJ,GAAMw4I,IAAU,WAClB,OAAOpgB,GAAKvwJ,KAAKm4B,OA0DnB,SAAS2tJ,GAAI3a,EAAMj3D,EAAGmwE,GAGpB,OAFAnwE,EAAImwE,EAAQxxL,EAAYqhH,EACxBA,EAAKi3D,GAAa,MAALj3D,EAAai3D,EAAKz3K,OAASwgH,EACjC8zE,GAAW7c,EAAMjI,EAAerwK,EAAWA,EAAWA,EAAWA,EAAWqhH,GAoBrF,SAASo4E,GAAOp4E,EAAGi3D,GACjB,IAAI31K,EACJ,GAAmB,mBAAR21K,EACT,MAAM,IAAIvlF,GAAUg9E,GAGtB,OADA1uD,EAAI0zE,GAAU1zE,GACP,WAOL,QANMA,EAAI,IACR1+G,EAAS21K,EAAKl4K,MAAM4D,KAAMpB,YAExBy+G,GAAK,IACPi3D,EAAOt4K,GAEF2C,GAuCX,IAAIxC,GAAO+sL,IAAS,SAAS5U,EAAM15D,EAAS0xE,GAC1C,IAAIlN,EAv4Ta,EAw4TjB,GAAIkN,EAASzvL,OAAQ,CACnB,IAAI0vL,EAAU5U,GAAe2U,EAAUgD,GAAUnzL,KACjDijL,GAAWjT,EAEb,OAAOglB,GAAW7c,EAAM8K,EAASxkE,EAAS0xE,EAAUC,MAgDlDmJ,GAAUxM,IAAS,SAASplH,EAAQ9mE,EAAKsvL,GAC3C,IAAIlN,EAAUuW,EACd,GAAIrJ,EAASzvL,OAAQ,CACnB,IAAI0vL,EAAU5U,GAAe2U,EAAUgD,GAAUoG,KACjDtW,GAAWjT,EAEb,OAAOglB,GAAWn0L,EAAKoiL,EAASt7G,EAAQwoH,EAAUC,MAsJpD,SAAS5sL,GAAS20K,EAAM6M,EAAM70K,GAC5B,IAAIspL,EACAC,EACAC,EACAn3L,EACAiiC,EACAm1J,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTtI,GAAW,EAEf,GAAmB,mBAARtZ,EACT,MAAM,IAAIvlF,GAAUg9E,GAUtB,SAASoqB,EAAWC,GAClB,IAAIn2L,EAAO21L,EACPh7E,EAAUi7E,EAKd,OAHAD,EAAWC,EAAW75L,EACtBg6L,EAAiBI,EACjBz3L,EAAS21K,EAAKl4K,MAAMw+G,EAAS36G,GAI/B,SAASo2L,EAAYD,GAMnB,OAJAJ,EAAiBI,EAEjBx1J,EAAUxgC,GAAWk2L,EAAcnV,GAE5B8U,EAAUE,EAAWC,GAAQz3L,EAatC,SAAS43L,EAAaH,GACpB,IAAII,EAAoBJ,EAAOL,EAM/B,OAAQA,IAAiB/5L,GAAcw6L,GAAqBrV,GACzDqV,EAAoB,GAAON,GANJE,EAAOJ,GAM8BF,EAGjE,SAASQ,IACP,IAAIF,EAAO90J,KACX,GAAIi1J,EAAaH,GACf,OAAOK,EAAaL,GAGtBx1J,EAAUxgC,GAAWk2L,EA3BvB,SAAuBF,GACrB,IAEIM,EAAcvV,GAFMiV,EAAOL,GAI/B,OAAOG,EACH1b,GAAUkc,EAAaZ,GAJDM,EAAOJ,IAK7BU,EAoB+BC,CAAcP,IAGnD,SAASK,EAAaL,GAKpB,OAJAx1J,EAAU5kC,EAIN4xL,GAAYgI,EACPO,EAAWC,IAEpBR,EAAWC,EAAW75L,EACf2C,GAeT,SAASi4L,IACP,IAAIR,EAAO90J,KACPu1J,EAAaN,EAAaH,GAM9B,GAJAR,EAAWh3L,UACXi3L,EAAW71L,KACX+1L,EAAeK,EAEXS,EAAY,CACd,GAAIj2J,IAAY5kC,EACd,OAAOq6L,EAAYN,GAErB,GAAIG,EAIF,OAFA/1L,GAAaygC,GACbA,EAAUxgC,GAAWk2L,EAAcnV,GAC5BgV,EAAWJ,GAMtB,OAHIn1J,IAAY5kC,IACd4kC,EAAUxgC,GAAWk2L,EAAcnV,IAE9BxiL,EAIT,OA3GAwiL,EAAOqP,GAASrP,IAAS,EACrB7jL,GAASgP,KACX2pL,IAAY3pL,EAAQ2pL,QAEpBH,GADAI,EAAS,YAAa5pL,GACHiuK,GAAUiW,GAASlkL,EAAQwpL,UAAY,EAAG3U,GAAQ2U,EACrElI,EAAW,aAActhL,IAAYA,EAAQshL,SAAWA,GAoG1DgJ,EAAU7zK,OApCV,WACM6d,IAAY5kC,GACdmE,GAAaygC,GAEfo1J,EAAiB,EACjBJ,EAAWG,EAAeF,EAAWj1J,EAAU5kC,GAgCjD46L,EAAUE,MA7BV,WACE,OAAOl2J,IAAY5kC,EAAY2C,EAAS83L,EAAan1J,OA6BhDs1J,EAqBT,IAAIG,GAAQ7N,IAAS,SAAS5U,EAAMr0K,GAClC,OAAOihL,GAAU5M,EAAM,EAAGr0K,MAsBxBJ,GAAQqpL,IAAS,SAAS5U,EAAM6M,EAAMlhL,GACxC,OAAOihL,GAAU5M,EAAMkc,GAASrP,IAAS,EAAGlhL,MAqE9C,SAASozL,GAAQ/e,EAAM7mB,GACrB,GAAmB,mBAAR6mB,GAAmC,MAAZ7mB,GAAuC,mBAAZA,EAC3D,MAAM,IAAI1+D,GAAUg9E,GAEtB,IAAIirB,EAAW,SAAXA,IACF,IAAI/2L,EAAOrB,UACP5B,EAAMywJ,EAAWA,EAASrxJ,MAAM4D,KAAMC,GAAQA,EAAK,GACnD87F,EAAQi7F,EAASj7F,MAErB,GAAIA,EAAM+6E,IAAI95K,GACZ,OAAO++F,EAAMp0E,IAAI3qB,GAEnB,IAAI2B,EAAS21K,EAAKl4K,MAAM4D,KAAMC,GAE9B,OADA+2L,EAASj7F,MAAQA,EAAMl0E,IAAI7qB,EAAK2B,IAAWo9F,EACpCp9F,GAGT,OADAq4L,EAASj7F,MAAQ,IAAKs3F,GAAQ4D,OAAS/Z,IAChC8Z,EA0BT,SAASE,GAAOv7H,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAIozB,GAAUg9E,GAEtB,OAAO,WACL,IAAI9rK,EAAOrB,UACX,OAAQqB,EAAKpD,QACX,KAAK,EAAG,OAAQ8+D,EAAUr6D,KAAKtB,MAC/B,KAAK,EAAG,OAAQ27D,EAAUr6D,KAAKtB,KAAMC,EAAK,IAC1C,KAAK,EAAG,OAAQ07D,EAAUr6D,KAAKtB,KAAMC,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQ07D,EAAUr6D,KAAKtB,KAAMC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQ07D,EAAUv/D,MAAM4D,KAAMC,IAlClCozL,GAAQ4D,MAAQ/Z,GA2FhB,IAAIia,GAAWpL,IAAS,SAASzX,EAAM8iB,GAKrC,IAAIC,GAJJD,EAAmC,GAArBA,EAAWv6L,QAAewB,GAAQ+4L,EAAW,IACvDhiB,GAASgiB,EAAW,GAAIzgB,GAAUyR,OAClChT,GAASmN,GAAY6U,EAAY,GAAIzgB,GAAUyR,QAEtBvrL,OAC7B,OAAOqsL,IAAS,SAASjpL,GAIvB,IAHA,IAAIua,GAAS,EACT3d,EAAS29K,GAAUv6K,EAAKpD,OAAQw6L,KAE3B78K,EAAQ3d,GACfoD,EAAKua,GAAS48K,EAAW58K,GAAOlZ,KAAKtB,KAAMC,EAAKua,IAElD,OAAOpe,GAAMk4K,EAAMt0K,KAAMC,SAqCzBq3L,GAAUpO,IAAS,SAAS5U,EAAMgY,GACpC,IAAIC,EAAU5U,GAAe2U,EAAUgD,GAAUgI,KACjD,OAAOnG,GAAW7c,EAAMnI,EAAmBnwK,EAAWswL,EAAUC,MAmC9DgL,GAAerO,IAAS,SAAS5U,EAAMgY,GACzC,IAAIC,EAAU5U,GAAe2U,EAAUgD,GAAUiI,KACjD,OAAOpG,GAAW7c,EAAMlI,EAAyBpwK,EAAWswL,EAAUC,MAyBpEiL,GAAQnJ,IAAS,SAAS/Z,EAAMhtC,GAClC,OAAO6pD,GAAW7c,EAAMhI,EAAiBtwK,EAAWA,EAAWA,EAAWsrI,MAia5E,SAASi3C,GAAG/hL,EAAOknL,GACjB,OAAOlnL,IAAUknL,GAAUlnL,IAAUA,GAASknL,IAAUA,EA0B1D,IAAI+T,GAAKlH,GAA0B9M,IAyB/BiU,GAAMnH,IAA0B,SAAS/zL,EAAOknL,GAClD,OAAOlnL,GAASknL,KAqBdhG,GAAc2G,GAAgB,WAAa,OAAOzlL,UAApB,IAAsCylL,GAAkB,SAAS7nL,GACjG,OAAOs/K,GAAat/K,IAAUgD,GAAe8B,KAAK9E,EAAO,YACtDi8H,GAAqBn3H,KAAK9E,EAAO,WA0BlC6B,GAAUD,EAAMC,QAmBhBo7G,GAAgBm6D,GAAoB+C,GAAU/C,IA75PlD,SAA2Bp3K,GACzB,OAAOs/K,GAAat/K,IAAU4mL,GAAW5mL,IAAUoxK,GAu7PrD,SAASuZ,GAAY3qL,GACnB,OAAgB,MAATA,GAAiB+1L,GAAS/1L,EAAMK,UAAY28G,GAAWh9G,GA4BhE,SAASqrL,GAAkBrrL,GACzB,OAAOs/K,GAAat/K,IAAU2qL,GAAY3qL,GA0C5C,IAAIk9G,GAAWygE,IAAkBuY,GAmB7Bx4E,GAAS25D,GAAa8C,GAAU9C,IAxgQpC,SAAoBr3K,GAClB,OAAOs/K,GAAat/K,IAAU4mL,GAAW5mL,IAAUuwK,GA+qQrD,SAAS4qB,GAAQn7L,GACf,IAAKs/K,GAAat/K,GAChB,OAAO,EAET,IAAIu5F,EAAMqtF,GAAW5mL,GACrB,OAAOu5F,GAAOi3E,GA9yWF,yBA8yWcj3E,GACC,iBAAjBv5F,EAAMmE,SAA4C,iBAAdnE,EAAM4d,OAAqBkwE,GAAc9tF,GAkDzF,SAASg9G,GAAWh9G,GAClB,IAAKc,GAASd,GACZ,OAAO,EAIT,IAAIu5F,EAAMqtF,GAAW5mL,GACrB,OAAOu5F,GAAOk3E,GAAWl3E,GAAOm3E,GA32WrB,0BA22W+Bn3E,GA/1W/B,kBA+1WkDA,EA6B/D,SAAS6hG,GAAUp7L,GACjB,MAAuB,iBAATA,GAAqBA,GAASu0L,GAAUv0L,GA6BxD,SAAS+1L,GAAS/1L,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASgwK,EA4B7C,SAASlvK,GAASd,GAChB,IAAI2O,SAAc3O,EAClB,OAAgB,MAATA,IAA0B,UAAR2O,GAA4B,YAARA,GA2B/C,SAAS2wK,GAAat/K,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EAoBjC,IAAIu3K,GAAQD,GAAY6C,GAAU7C,IA5xQlC,SAAmBt3K,GACjB,OAAOs/K,GAAat/K,IAAUkjL,GAAOljL,IAAU2wK,GA6+QjD,SAAShnK,GAAS3J,GAChB,MAAuB,iBAATA,GACXs/K,GAAat/K,IAAU4mL,GAAW5mL,IAAU4wK,EA+BjD,SAAS9iF,GAAc9tF,GACrB,IAAKs/K,GAAat/K,IAAU4mL,GAAW5mL,IAAU6wK,EAC/C,OAAO,EAET,IAAI8O,EAAQ9C,GAAa78K,GACzB,GAAc,OAAV2/K,EACF,OAAO,EAET,IAAIiE,EAAO5gL,GAAe8B,KAAK66K,EAAO,gBAAkBA,EAAM5+K,YAC9D,MAAsB,mBAAR6iL,GAAsBA,aAAgBA,GAClDzH,GAAar3K,KAAK8+K,IAASpH,GAoB/B,IAAI/E,GAAWD,GAAe2C,GAAU3C,IA59QxC,SAAsBx3K,GACpB,OAAOs/K,GAAat/K,IAAU4mL,GAAW5mL,IAAU+wK,GA6gRrD,IAAI4G,GAAQD,GAAYyC,GAAUzC,IAngRlC,SAAmB13K,GACjB,OAAOs/K,GAAat/K,IAAUkjL,GAAOljL,IAAUgxK,GAqhRjD,SAASvzD,GAASz9G,GAChB,MAAuB,iBAATA,IACV6B,GAAQ7B,IAAUs/K,GAAat/K,IAAU4mL,GAAW5mL,IAAUixK,EAoBpE,SAAS4U,GAAS7lL,GAChB,MAAuB,iBAATA,GACXs/K,GAAat/K,IAAU4mL,GAAW5mL,IAAUkxK,EAoBjD,IAAI2G,GAAeD,GAAmBuC,GAAUvC,IAvjRhD,SAA0B53K,GACxB,OAAOs/K,GAAat/K,IAClB+1L,GAAS/1L,EAAMK,WAAai2K,GAAesQ,GAAW5mL,KA6oR1D,IAAIq7L,GAAKtH,GAA0BtJ,IAyB/B6Q,GAAMvH,IAA0B,SAAS/zL,EAAOknL,GAClD,OAAOlnL,GAASknL,KA0BlB,SAAS5yD,GAAQt0H,GACf,IAAKA,EACH,MAAO,GAET,GAAI2qL,GAAY3qL,GACd,OAAOy9G,GAASz9G,GAASw7K,GAAcx7K,GAAS2hL,GAAU3hL,GAE5D,GAAIi9K,IAAej9K,EAAMi9K,IACvB,OAv8VN,SAAyBjqF,GAIvB,IAHA,IAAI30E,EACAlc,EAAS,KAEJkc,EAAO20E,EAASk9B,QAAQ9qF,MAC/BjjC,EAAOiD,KAAKiZ,EAAKre,OAEnB,OAAOmC,EAg8VIo5L,CAAgBv7L,EAAMi9K,OAE/B,IAAI1jF,EAAM2pF,GAAOljL,GAGjB,OAFWu5F,GAAOo3E,EAASsK,GAAc1hF,GAAOy3E,EAASoK,GAAar7G,IAE1D//D,GA0Bd,SAAS6zL,GAAS7zL,GAChB,OAAKA,GAGLA,EAAQg0L,GAASh0L,MACH+vK,GAAY/vK,KAAU,IAxkYtB,uBAykYAA,EAAQ,GAAK,EAAI,GAGxBA,IAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,EAoCjC,SAASu0L,GAAUv0L,GACjB,IAAImC,EAAS0xL,GAAS7zL,GAClBw7L,EAAYr5L,EAAS,EAEzB,OAAOA,IAAWA,EAAUq5L,EAAYr5L,EAASq5L,EAAYr5L,EAAU,EA8BzE,SAASs5L,GAASz7L,GAChB,OAAOA,EAAQ4hL,GAAU2S,GAAUv0L,GAAQ,EAAGkwK,GAAoB,EA0BpE,SAAS8jB,GAASh0L,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI6lL,GAAS7lL,GACX,OAAOiwK,EAET,GAAInvK,GAASd,GAAQ,CACnB,IAAIknL,EAAgC,mBAAjBlnL,EAAMuyE,QAAwBvyE,EAAMuyE,UAAYvyE,EACnEA,EAAQc,GAASomL,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATlnL,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQg6K,GAASh6K,GACjB,IAAI07L,EAAWjoB,GAAWrlK,KAAKpO,GAC/B,OAAQ07L,GAAY/nB,GAAUvlK,KAAKpO,GAC/B02K,GAAa12K,EAAM6E,MAAM,GAAI62L,EAAW,EAAI,GAC3CloB,GAAWplK,KAAKpO,GAASiwK,GAAOjwK,EA2BvC,SAASsrL,GAActrL,GACrB,OAAOqiL,GAAWriL,EAAOwjL,GAAOxjL,IAsDlC,SAAS2Q,GAAS3Q,GAChB,OAAgB,MAATA,EAAgB,GAAKuuL,GAAavuL,GAqC3C,IAAIotE,GAAS0jH,IAAe,SAASxpH,EAAQlmE,GAC3C,GAAIipL,GAAYjpL,IAAWupL,GAAYvpL,GACrCihL,GAAWjhL,EAAQX,GAAKW,GAASkmE,QAGnC,IAAK,IAAI9mE,KAAOY,EACV4B,GAAe8B,KAAK1D,EAAQZ,IAC9B29G,GAAY72C,EAAQ9mE,EAAKY,EAAOZ,OAoClCm7L,GAAW7K,IAAe,SAASxpH,EAAQlmE,GAC7CihL,GAAWjhL,EAAQoiL,GAAOpiL,GAASkmE,MAgCjCs0H,GAAe9K,IAAe,SAASxpH,EAAQlmE,EAAQ8pL,EAAUrI,GACnER,GAAWjhL,EAAQoiL,GAAOpiL,GAASkmE,EAAQu7G,MA+BzCgZ,GAAa/K,IAAe,SAASxpH,EAAQlmE,EAAQ8pL,EAAUrI,GACjER,GAAWjhL,EAAQX,GAAKW,GAASkmE,EAAQu7G,MAoBvCiZ,GAAKjK,GAASvP,IA8DlB,IAAI51B,GAAWggC,IAAS,SAASplH,EAAQypH,GACvCzpH,EAAS5lE,GAAO4lE,GAEhB,IAAItpD,GAAS,EACT3d,EAAS0wL,EAAQ1wL,OACjB2wL,EAAQ3wL,EAAS,EAAI0wL,EAAQ,GAAKvxL,EAMtC,IAJIwxL,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClD3wL,EAAS,KAGF2d,EAAQ3d,GAMf,IALA,IAAIe,EAAS2vL,EAAQ/yK,GACjBjW,EAAQy7K,GAAOpiL,GACf26L,GAAc,EACdC,EAAcj0L,EAAM1H,SAEf07L,EAAaC,GAAa,CACjC,IAAIx7L,EAAMuH,EAAMg0L,GACZ/7L,EAAQsnE,EAAO9mE,IAEfR,IAAUR,GACTuiL,GAAG/hL,EAAOi8K,GAAYz7K,MAAUwC,GAAe8B,KAAKwiE,EAAQ9mE,MAC/D8mE,EAAO9mE,GAAOY,EAAOZ,IAK3B,OAAO8mE,KAsBL20H,GAAevP,IAAS,SAASjpL,GAEnC,OADAA,EAAK2B,KAAK5F,EAAW41L,IACdx1L,GAAMs8L,GAAW18L,EAAWiE,MAgSrC,SAAS0nB,GAAIm8C,EAAQwvB,EAAMp4D,GACzB,IAAIv8B,EAAmB,MAAVmlE,EAAiB9nE,EAAY8mL,GAAQh/G,EAAQwvB,GAC1D,OAAO30F,IAAW3C,EAAYk/B,EAAev8B,EA4D/C,SAAS6oL,GAAM1jH,EAAQwvB,GACrB,OAAiB,MAAVxvB,GAAkBuuH,GAAQvuH,EAAQwvB,EAAMswF,IAqBjD,IAAI+U,GAAShJ,IAAe,SAAShxL,EAAQnC,EAAOQ,GACrC,MAATR,GACyB,mBAAlBA,EAAM2Q,WACf3Q,EAAQu8K,GAAqBz3K,KAAK9E,IAGpCmC,EAAOnC,GAASQ,IACf0sL,GAASjD,KA4BRmS,GAAWjJ,IAAe,SAAShxL,EAAQnC,EAAOQ,GACvC,MAATR,GACyB,mBAAlBA,EAAM2Q,WACf3Q,EAAQu8K,GAAqBz3K,KAAK9E,IAGhCgD,GAAe8B,KAAK3C,EAAQnC,GAC9BmC,EAAOnC,GAAOoF,KAAK5E,GAEnB2B,EAAOnC,GAAS,CAACQ,KAElBorL,IAoBCyQ,GAAS3P,GAAS9E,IA8BtB,SAASnnL,GAAK6mE,GACZ,OAAOqjH,GAAYrjH,GAAUw5G,GAAcx5G,GAAU8iH,GAAS9iH,GA0BhE,SAASk8G,GAAOl8G,GACd,OAAOqjH,GAAYrjH,GAAUw5G,GAAcx5G,GAAQ,GAAQgjH,GAAWhjH,GAuGxE,IAAInmE,GAAQ2vL,IAAe,SAASxpH,EAAQlmE,EAAQ8pL,GAClDD,GAAU3jH,EAAQlmE,EAAQ8pL,MAkCxBgR,GAAYpL,IAAe,SAASxpH,EAAQlmE,EAAQ8pL,EAAUrI,GAChEoI,GAAU3jH,EAAQlmE,EAAQ8pL,EAAUrI,MAuBlCyZ,GAAOzK,IAAS,SAASvqH,EAAQi7G,GACnC,IAAIpgL,EAAS,GACb,GAAc,MAAVmlE,EACF,OAAOnlE,EAET,IAAI2gL,GAAS,EACbP,EAAQ3J,GAAS2J,GAAO,SAASzrF,GAG/B,OAFAA,EAAOyvF,GAASzvF,EAAMxvB,GACtBw7G,IAAWA,EAAShsF,EAAKz2F,OAAS,GAC3By2F,KAETurF,GAAW/6G,EAAQi9G,GAAaj9G,GAASnlE,GACrC2gL,IACF3gL,EAASwgL,GAAUxgL,EAAQo6L,EAAwDlH,KAGrF,IADA,IAAIh1L,EAASkiL,EAAMliL,OACZA,KACLmsL,GAAUrqL,EAAQogL,EAAMliL,IAE1B,OAAO8B,KA4CT,IAAI25K,GAAO+V,IAAS,SAASvqH,EAAQi7G,GACnC,OAAiB,MAAVj7G,EAAiB,GAnmT1B,SAAkBA,EAAQi7G,GACxB,OAAO6J,GAAW9kH,EAAQi7G,GAAO,SAASviL,EAAO82F,GAC/C,OAAOk0F,GAAM1jH,EAAQwvB,MAimTM0lG,CAASl1H,EAAQi7G,MAqBhD,SAASka,GAAOn1H,EAAQnI,GACtB,GAAc,MAAVmI,EACF,MAAO,GAET,IAAIv/D,EAAQ6wK,GAAS2L,GAAaj9G,IAAS,SAAS3/D,GAClD,MAAO,CAACA,MAGV,OADAw3D,EAAYysH,GAAYzsH,GACjBitH,GAAW9kH,EAAQv/D,GAAO,SAAS/H,EAAO82F,GAC/C,OAAO33B,EAAUn/D,EAAO82F,EAAK,OA4IjC,IAAI4lG,GAAUjI,GAAch0L,IA0BxBk8L,GAAYlI,GAAcjR,IA4K9B,SAASzjH,GAAOuH,GACd,OAAiB,MAAVA,EAAiB,GAAK8yG,GAAW9yG,EAAQ7mE,GAAK6mE,IAkNvD,IAAIs1H,GAAYvL,IAAiB,SAASlvL,EAAQ06L,EAAM7+K,GAEtD,OADA6+K,EAAOA,EAAK5hL,cACL9Y,GAAU6b,EAAQ8+K,GAAWD,GAAQA,MAkB9C,SAASC,GAAW7iB,GAClB,OAAO8iB,GAAWpsL,GAASspK,GAAQh/J,eAqBrC,SAASs2K,GAAOtX,GAEd,OADAA,EAAStpK,GAASspK,KACDA,EAAO/5K,QAAQ2zK,GAAS+G,IAAc16K,QAAQ61K,GAAa,IAsH9E,IAAIinB,GAAY3L,IAAiB,SAASlvL,EAAQ06L,EAAM7+K,GACtD,OAAO7b,GAAU6b,EAAQ,IAAM,IAAM6+K,EAAK5hL,iBAuBxCgiL,GAAY5L,IAAiB,SAASlvL,EAAQ06L,EAAM7+K,GACtD,OAAO7b,GAAU6b,EAAQ,IAAM,IAAM6+K,EAAK5hL,iBAoBxCiiL,GAAa/L,GAAgB,eA0NjC,IAAIgM,GAAY9L,IAAiB,SAASlvL,EAAQ06L,EAAM7+K,GACtD,OAAO7b,GAAU6b,EAAQ,IAAM,IAAM6+K,EAAK5hL,iBAgE5C,IAAImiL,GAAY/L,IAAiB,SAASlvL,EAAQ06L,EAAM7+K,GACtD,OAAO7b,GAAU6b,EAAQ,IAAM,IAAM++K,GAAWF,MAsiBlD,IAAIQ,GAAYhM,IAAiB,SAASlvL,EAAQ06L,EAAM7+K,GACtD,OAAO7b,GAAU6b,EAAQ,IAAM,IAAM6+K,EAAK7hL,iBAoBxC+hL,GAAa5L,GAAgB,eAqBjC,SAASG,GAAMrX,EAAQlrK,EAASiiL,GAI9B,OAHA/W,EAAStpK,GAASspK,IAClBlrK,EAAUiiL,EAAQxxL,EAAYuP,KAEdvP,EArybpB,SAAwBy6K,GACtB,OAAO9D,GAAiB/nK,KAAK6rK,GAqyblBqjB,CAAerjB,GA1jb5B,SAAsBA,GACpB,OAAOA,EAAO7zK,MAAM6vK,KAAkB,GAyjbFsnB,CAAatjB,GAzrcnD,SAAoBA,GAClB,OAAOA,EAAO7zK,MAAM+sK,KAAgB,GAwrcuBqqB,CAAWvjB,GAE7DA,EAAO7zK,MAAM2I,IAAY,GA2BlC,IAAI0uL,GAAU/Q,IAAS,SAAS5U,EAAMr0K,GACpC,IACE,OAAO7D,GAAMk4K,EAAMt4K,EAAWiE,GAC9B,MAAOY,GACP,OAAO82L,GAAQ92L,GAAKA,EAAI,IAAID,EAAMC,OA8BlCq5L,GAAU7L,IAAS,SAASvqH,EAAQq2H,GAKtC,OAJAxlB,GAAUwlB,GAAa,SAASn9L,GAC9BA,EAAMgmL,GAAMhmL,GACZwhL,GAAgB16G,EAAQ9mE,EAAKb,GAAK2nE,EAAO9mE,GAAM8mE,OAE1CA,KAqGT,SAAS4lH,GAASltL,GAChB,OAAO,WACL,OAAOA,GAkDX,IAAI49L,GAAOhM,KAuBPiM,GAAYjM,IAAW,GAkB3B,SAAS3H,GAASjqL,GAChB,OAAOA,EA6CT,SAASi4K,GAASH,GAChB,OAAOkS,GAA4B,mBAARlS,EAAqBA,EAAO6K,GAAU7K,EAjte/C,IAwzepB,IAAIjqD,GAAS6+D,IAAS,SAAS51F,EAAMrzF,GACnC,OAAO,SAAS6jE,GACd,OAAOsgH,GAAWtgH,EAAQwvB,EAAMrzF,OA2BhCq6L,GAAWpR,IAAS,SAASplH,EAAQ7jE,GACvC,OAAO,SAASqzF,GACd,OAAO8wF,GAAWtgH,EAAQwvB,EAAMrzF,OAwCpC,SAASs6L,GAAMz2H,EAAQlmE,EAAQ0O,GAC7B,IAAI/H,EAAQtH,GAAKW,GACbu8L,EAActX,GAAcjlL,EAAQ2G,GAEzB,MAAX+H,GACEhP,GAASM,KAAYu8L,EAAYt9L,SAAW0H,EAAM1H,UACtDyP,EAAU1O,EACVA,EAASkmE,EACTA,EAAS9jE,KACTm6L,EAActX,GAAcjlL,EAAQX,GAAKW,KAE3C,IAAIm3L,IAAUz3L,GAASgP,IAAY,UAAWA,MAAcA,EAAQyoL,MAChEpV,EAASnmE,GAAW11C,GAqBxB,OAnBA6wG,GAAUwlB,GAAa,SAASlzF,GAC9B,IAAIqtE,EAAO12K,EAAOqpG,GAClBnjC,EAAOmjC,GAAcqtE,EACjBqL,IACF77G,EAAO5nE,UAAU+qG,GAAc,WAC7B,IAAIo1E,EAAWr8K,KAAKw8K,UACpB,GAAIuY,GAAS1Y,EAAU,CACrB,IAAI19K,EAASmlE,EAAO9jE,KAAKs8K,aACrBngC,EAAUx9I,EAAO49K,YAAc4B,GAAUn+K,KAAKu8K,aAIlD,OAFApgC,EAAQv6I,KAAK,CAAE,KAAQ0yK,EAAM,KAAQ11K,UAAW,QAAWklE,IAC3DnlE,EAAO69K,UAAYH,EACZ19K,EAET,OAAO21K,EAAKl4K,MAAM0nE,EAAQuxG,GAAU,CAACr1K,KAAKxD,SAAUoC,iBAKnDklE,EAmCT,SAASojC,MAiDT,IAAIszF,GAAOzK,GAAW3a,IA8BlBqlB,GAAY1K,GAAWlb,IAiCvB6lB,GAAW3K,GAAWta,IAwB1B,SAASl8J,GAAS+5E,GAChB,OAAOg0F,GAAMh0F,GAAQqiF,GAAaqN,GAAM1vF,IAh3X1C,SAA0BA,GACxB,OAAO,SAASxvB,GACd,OAAOg/G,GAAQh/G,EAAQwvB,IA82XwBqnG,CAAiBrnG,GAuEpE,IAAI9gF,GAAQ49K,KAsCRwK,GAAaxK,IAAY,GAoB7B,SAASgC,KACP,MAAO,GAgBT,SAASM,KACP,OAAO,EA+JT,IAAI3pK,GAAM+mK,IAAoB,SAAS+K,EAAQC,GAC7C,OAAOD,EAASC,IACf,GAuBCh8H,GAAO+xH,GAAY,QAiBnBkK,GAASjL,IAAoB,SAASkL,EAAUC,GAClD,OAAOD,EAAWC,IACjB,GAuBCzzL,GAAQqpL,GAAY,SAwKxB,IAAIqK,GAAWpL,IAAoB,SAASqL,EAAYC,GACtD,OAAOD,EAAaC,IACnB,GAuBCzrD,GAAQkhD,GAAY,SAiBpBwK,GAAWvL,IAAoB,SAASwL,EAASC,GACnD,OAAOD,EAAUC,IAChB,GAgmBH,OA1iBA1f,GAAO2f,MAp6MP,SAAen+E,EAAGi3D,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAIvlF,GAAUg9E,GAGtB,OADA1uD,EAAI0zE,GAAU1zE,GACP,WACL,KAAMA,EAAI,EACR,OAAOi3D,EAAKl4K,MAAM4D,KAAMpB,aA85M9Bi9K,GAAOoT,IAAMA,GACbpT,GAAOjyG,OAASA,GAChBiyG,GAAOsc,SAAWA,GAClBtc,GAAOuc,aAAeA,GACtBvc,GAAOwc,WAAaA,GACpBxc,GAAOyc,GAAKA,GACZzc,GAAO4Z,OAASA,GAChB5Z,GAAO1/K,KAAOA,GACd0/K,GAAOqe,QAAUA,GACjBre,GAAO6Z,QAAUA,GACjB7Z,GAAO4f,UAl8KP,WACE,IAAK78L,UAAU/B,OACb,MAAO,GAET,IAAIL,EAAQoC,UAAU,GACtB,OAAOP,GAAQ7B,GAASA,EAAQ,CAACA,IA87KnCq/K,GAAOkZ,MAAQA,GACflZ,GAAO6f,MApgTP,SAAe5/H,EAAO0gB,EAAMgxG,GAExBhxG,GADGgxG,EAAQC,GAAe3xH,EAAO0gB,EAAMgxG,GAAShxG,IAASxgF,GAClD,EAEAu+K,GAAUwW,GAAUv0G,GAAO,GAEpC,IAAI3/E,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,IAAKA,GAAU2/E,EAAO,EACpB,MAAO,GAMT,IAJA,IAAIhiE,EAAQ,EACRu6J,EAAW,EACXp2K,EAASP,EAAM47K,GAAWn9K,EAAS2/E,IAEhChiE,EAAQ3d,GACb8B,EAAOo2K,KAAc6U,GAAU9tH,EAAOthD,EAAQA,GAASgiE,GAEzD,OAAO79E,GAo/STk9K,GAAO8f,QAl+SP,SAAiB7/H,GAMf,IALA,IAAIthD,GAAS,EACT3d,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACnCk4K,EAAW,EACXp2K,EAAS,KAEJ6b,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GACdhe,IACFmC,EAAOo2K,KAAcv4K,GAGzB,OAAOmC,GAu9STk9K,GAAO/pJ,OA97SP,WACE,IAAIj1B,EAAS+B,UAAU/B,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAIoD,EAAO7B,EAAMvB,EAAS,GACtBi/D,EAAQl9D,UAAU,GAClB4b,EAAQ3d,EAEL2d,KACLva,EAAKua,EAAQ,GAAK5b,UAAU4b,GAE9B,OAAO66J,GAAUh3K,GAAQy9D,GAASqiH,GAAUriH,GAAS,CAACA,GAAQymH,GAAYtiL,EAAM,KAm7SlF47K,GAAO+f,KA3tCP,SAAc/Z,GACZ,IAAIhlL,EAAkB,MAATglL,EAAgB,EAAIA,EAAMhlL,OACnC+yL,EAAaxH,KASjB,OAPAvG,EAAShlL,EAAcu4K,GAASyM,GAAO,SAASmP,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAIjiG,GAAUg9E,GAEtB,MAAO,CAAC6jB,EAAWoB,EAAK,IAAKA,EAAK,OAJlB,GAOX9H,IAAS,SAASjpL,GAEvB,IADA,IAAIua,GAAS,IACJA,EAAQ3d,GAAQ,CACvB,IAAIm0L,EAAOnP,EAAMrnK,GACjB,GAAIpe,GAAM40L,EAAK,GAAIhxL,KAAMC,GACvB,OAAO7D,GAAM40L,EAAK,GAAIhxL,KAAMC,QA4sCpC47K,GAAOggB,SA9qCP,SAAkBj+L,GAChB,OAz5YF,SAAsBA,GACpB,IAAI2G,EAAQtH,GAAKW,GACjB,OAAO,SAASkmE,GACd,OAAOm9G,GAAen9G,EAAQlmE,EAAQ2G,IAs5YjCu3L,CAAa3c,GAAUvhL,EA/ieZ,KA6tgBpBi+K,GAAO6N,SAAWA,GAClB7N,GAAOqZ,QAAUA,GACjBrZ,GAAOn9I,OAtuHP,SAAgBxiC,EAAW23B,GACzB,IAAIl1B,EAASu9K,GAAWhgL,GACxB,OAAqB,MAAd23B,EAAqBl1B,EAASigL,GAAWjgL,EAAQk1B,IAquH1DgoJ,GAAOkgB,MAzuMP,SAASA,EAAMznB,EAAM96C,EAAOg0D,GAE1B,IAAI7uL,EAASwyL,GAAW7c,EA7+TN,EA6+T6Bt4K,EAAWA,EAAWA,EAAWA,EAAWA,EAD3Fw9H,EAAQg0D,EAAQxxL,EAAYw9H,GAG5B,OADA76H,EAAOw2F,YAAc4mG,EAAM5mG,YACpBx2F,GAsuMTk9K,GAAOmgB,WA7rMP,SAASA,EAAW1nB,EAAM96C,EAAOg0D,GAE/B,IAAI7uL,EAASwyL,GAAW7c,EAAMpI,EAAuBlwK,EAAWA,EAAWA,EAAWA,EAAWA,EADjGw9H,EAAQg0D,EAAQxxL,EAAYw9H,GAG5B,OADA76H,EAAOw2F,YAAc6mG,EAAW7mG,YACzBx2F,GA0rMTk9K,GAAOl8K,SAAWA,GAClBk8K,GAAO3yB,SAAWA,GAClB2yB,GAAO4c,aAAeA,GACtB5c,GAAOkb,MAAQA,GACflb,GAAOh8K,MAAQA,GACfg8K,GAAOxjC,WAAaA,GACpBwjC,GAAO4X,aAAeA,GACtB5X,GAAO6X,eAAiBA,GACxB7X,GAAOhoI,KAt0SP,SAAcioB,EAAOuhD,EAAGmwE,GACtB,IAAI3wL,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,OAAKA,EAIE+sL,GAAU9tH,GADjBuhD,EAAKmwE,GAASnwE,IAAMrhH,EAAa,EAAI+0L,GAAU1zE,IACnB,EAAI,EAAIA,EAAGxgH,GAH9B,IAo0SXg/K,GAAOogB,UArySP,SAAmBngI,EAAOuhD,EAAGmwE,GAC3B,IAAI3wL,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,OAAKA,EAKE+sL,GAAU9tH,EAAO,GADxBuhD,EAAIxgH,GADJwgH,EAAKmwE,GAASnwE,IAAMrhH,EAAa,EAAI+0L,GAAU1zE,KAEhB,EAAI,EAAIA,GAJ9B,IAmySXw+D,GAAOqgB,eAzvSP,SAAwBpgI,EAAOH,GAC7B,OAAQG,GAASA,EAAMj/D,OACnBwuL,GAAUvvH,EAAOssH,GAAYzsH,EAAW,IAAI,GAAM,GAClD,IAuvSNkgH,GAAOsgB,UAjtSP,SAAmBrgI,EAAOH,GACxB,OAAQG,GAASA,EAAMj/D,OACnBwuL,GAAUvvH,EAAOssH,GAAYzsH,EAAW,IAAI,GAC5C,IA+sSNkgH,GAAOugB,KA/qSP,SAActgI,EAAOt/D,EAAOU,EAAOyb,GACjC,IAAI9b,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,OAAKA,GAGDK,GAAyB,iBAATA,GAAqBuwL,GAAe3xH,EAAOt/D,EAAOU,KACpEA,EAAQ,EACRyb,EAAM9b,GAzvIV,SAAkBi/D,EAAOt/D,EAAOU,EAAOyb,GACrC,IAAI9b,EAASi/D,EAAMj/D,OAWnB,KATAK,EAAQ6zL,GAAU7zL,IACN,IACVA,GAASA,EAAQL,EAAS,EAAKA,EAASK,IAE1Cyb,EAAOA,IAAQ3c,GAAa2c,EAAM9b,EAAUA,EAASk0L,GAAUp4K,IACrD,IACRA,GAAO9b,GAET8b,EAAMzb,EAAQyb,EAAM,EAAIs/K,GAASt/K,GAC1Bzb,EAAQyb,GACbmjD,EAAM5+D,KAAWV,EAEnB,OAAOs/D,EA4uIAugI,CAASvgI,EAAOt/D,EAAOU,EAAOyb,IAN5B,IA6qSXkjK,GAAO3qJ,OA3vOP,SAAgBwqC,EAAYC,GAE1B,OADWt9D,GAAQq9D,GAAco5G,GAAcwN,IACnC5mH,EAAY0sH,GAAYzsH,EAAW,KA0vOjDkgH,GAAOygB,QAvqOP,SAAiB5gI,EAAY+4G,GAC3B,OAAO8N,GAAY99K,GAAIi3D,EAAY+4G,GAAW,IAuqOhDoH,GAAO0gB,YAhpOP,SAAqB7gI,EAAY+4G,GAC/B,OAAO8N,GAAY99K,GAAIi3D,EAAY+4G,GAAWlI,IAgpOhDsP,GAAO2gB,aAxnOP,SAAsB9gI,EAAY+4G,EAAU3uG,GAE1C,OADAA,EAAQA,IAAU9pE,EAAY,EAAI+0L,GAAUjrH,GACrCy8G,GAAY99K,GAAIi3D,EAAY+4G,GAAW3uG,IAunOhD+1G,GAAOoW,QAAUA,GACjBpW,GAAO4gB,YAviSP,SAAqB3gI,GAEnB,OADsB,MAATA,EAAgB,EAAIA,EAAMj/D,QACvB0lL,GAAYzmH,EAAOywG,GAAY,IAsiSjDsP,GAAO6gB,aA/gSP,SAAsB5gI,EAAOgK,GAE3B,OADsB,MAAThK,EAAgB,EAAIA,EAAMj/D,QAKhC0lL,GAAYzmH,EADnBgK,EAAQA,IAAU9pE,EAAY,EAAI+0L,GAAUjrH,IAFnC,IA6gSX+1G,GAAO7+C,KAz9LP,SAAcs3C,GACZ,OAAO6c,GAAW7c,EA5wUD,MAqugBnBuH,GAAOue,KAAOA,GACdve,GAAOwe,UAAYA,GACnBxe,GAAO8gB,UA3/RP,SAAmB9a,GAKjB,IAJA,IAAIrnK,GAAS,EACT3d,EAAkB,MAATglL,EAAgB,EAAIA,EAAMhlL,OACnC8B,EAAS,KAEJ6b,EAAQ3d,GAAQ,CACvB,IAAIm0L,EAAOnP,EAAMrnK,GACjB7b,EAAOqyL,EAAK,IAAMA,EAAK,GAEzB,OAAOryL,GAm/RTk9K,GAAO+gB,UA38GP,SAAmB94H,GACjB,OAAiB,MAAVA,EAAiB,GAAK++G,GAAc/+G,EAAQ7mE,GAAK6mE,KA28G1D+3G,GAAOghB,YAj7GP,SAAqB/4H,GACnB,OAAiB,MAAVA,EAAiB,GAAK++G,GAAc/+G,EAAQk8G,GAAOl8G,KAi7G5D+3G,GAAOppE,QAAUA,GACjBopE,GAAOzkF,QA56RP,SAAiBt7B,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAMj/D,QACvB+sL,GAAU9tH,EAAO,GAAI,GAAK,IA26R5C+/G,GAAOgY,aAAeA,GACtBhY,GAAOkY,eAAiBA,GACxBlY,GAAOmY,iBAAmBA,GAC1BnY,GAAO8c,OAASA,GAChB9c,GAAO+c,SAAWA,GAClB/c,GAAOyZ,UAAYA,GACnBzZ,GAAOpH,SAAWA,GAClBoH,GAAO0Z,MAAQA,GACf1Z,GAAO5+K,KAAOA,GACd4+K,GAAOmE,OAASA,GAChBnE,GAAOp3K,IAAMA,GACbo3K,GAAOihB,QA1rGP,SAAiBh5H,EAAQ2wG,GACvB,IAAI91K,EAAS,GAMb,OALA81K,EAAW2T,GAAY3T,EAAU,GAEjCuN,GAAWl+G,GAAQ,SAAStnE,EAAOQ,EAAK8mE,GACtC06G,GAAgB7/K,EAAQ81K,EAASj4K,EAAOQ,EAAK8mE,GAAStnE,MAEjDmC,GAorGTk9K,GAAOkhB,UArpGP,SAAmBj5H,EAAQ2wG,GACzB,IAAI91K,EAAS,GAMb,OALA81K,EAAW2T,GAAY3T,EAAU,GAEjCuN,GAAWl+G,GAAQ,SAAStnE,EAAOQ,EAAK8mE,GACtC06G,GAAgB7/K,EAAQ3B,EAAKy3K,EAASj4K,EAAOQ,EAAK8mE,OAE7CnlE,GA+oGTk9K,GAAOtvK,QAphCP,SAAiB3O,GACf,OAAO+oL,GAAYxH,GAAUvhL,EAxveX,KA4wgBpBi+K,GAAOmhB,gBAh/BP,SAAyB1pG,EAAM+yF,GAC7B,OAAOK,GAAoBpzF,EAAM6rF,GAAUkH,EA7xezB,KA6wgBpBxK,GAAOwX,QAAUA,GACjBxX,GAAOl+K,MAAQA,GACfk+K,GAAO6c,UAAYA,GACnB7c,GAAOxxD,OAASA,GAChBwxD,GAAOye,SAAWA,GAClBze,GAAO0e,MAAQA,GACf1e,GAAOqb,OAASA,GAChBrb,GAAOohB,OAzzBP,SAAgB5/E,GAEd,OADAA,EAAI0zE,GAAU1zE,GACP6rE,IAAS,SAASjpL,GACvB,OAAO+nL,GAAQ/nL,EAAMo9G,OAuzBzBw+D,GAAOid,KAAOA,GACdjd,GAAOqhB,OAnhGP,SAAgBp5H,EAAQnI,GACtB,OAAOs9H,GAAOn1H,EAAQozH,GAAO9O,GAAYzsH,MAmhG3CkgH,GAAOshB,KA73LP,SAAc7oB,GACZ,OAAOmhB,GAAO,EAAGnhB,IA63LnBuH,GAAOuhB,QAr4NP,SAAiB1hI,EAAYwsH,EAAWC,EAAQqF,GAC9C,OAAkB,MAAd9xH,EACK,IAEJr9D,GAAQ6pL,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnC7pL,GADL8pL,EAASqF,EAAQxxL,EAAYmsL,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BF,GAAYvsH,EAAYwsH,EAAWC,KA23N5CtM,GAAO2e,KAAOA,GACd3e,GAAOsb,SAAWA,GAClBtb,GAAO4e,UAAYA,GACnB5e,GAAO6e,SAAWA,GAClB7e,GAAOyb,QAAUA,GACjBzb,GAAO0b,aAAeA,GACtB1b,GAAO2Z,UAAYA,GACnB3Z,GAAOvD,KAAOA,GACduD,GAAOod,OAASA,GAChBpd,GAAOtiK,SAAWA,GAClBsiK,GAAOwhB,WA/rBP,SAAoBv5H,GAClB,OAAO,SAASwvB,GACd,OAAiB,MAAVxvB,EAAiB9nE,EAAY8mL,GAAQh/G,EAAQwvB,KA8rBxDuoF,GAAOoY,KAAOA,GACdpY,GAAOqY,QAAUA,GACjBrY,GAAOyhB,UApsRP,SAAmBxhI,EAAOS,EAAQk4G,GAChC,OAAQ34G,GAASA,EAAMj/D,QAAU0/D,GAAUA,EAAO1/D,OAC9CisL,GAAYhtH,EAAOS,EAAQ6rH,GAAY3T,EAAU,IACjD34G,GAksRN+/G,GAAO0hB,YAxqRP,SAAqBzhI,EAAOS,EAAQ44G,GAClC,OAAQr5G,GAASA,EAAMj/D,QAAU0/D,GAAUA,EAAO1/D,OAC9CisL,GAAYhtH,EAAOS,EAAQvgE,EAAWm5K,GACtCr5G,GAsqRN+/G,GAAOsY,OAASA,GAChBtY,GAAOrpK,MAAQA,GACfqpK,GAAO+e,WAAaA,GACpB/e,GAAO2b,MAAQA,GACf3b,GAAO14J,OAxvNP,SAAgBu4C,EAAYC,GAE1B,OADWt9D,GAAQq9D,GAAco5G,GAAcwN,IACnC5mH,EAAYw7H,GAAO9O,GAAYzsH,EAAW,MAuvNxDkgH,GAAOpyJ,OAzmRP,SAAgBqyC,EAAOH,GACrB,IAAIh9D,EAAS,GACb,IAAMm9D,IAASA,EAAMj/D,OACnB,OAAO8B,EAET,IAAI6b,GAAS,EACT8sH,EAAU,GACVzqI,EAASi/D,EAAMj/D,OAGnB,IADA8+D,EAAYysH,GAAYzsH,EAAW,KAC1BnhD,EAAQ3d,GAAQ,CACvB,IAAIL,EAAQs/D,EAAMthD,GACdmhD,EAAUn/D,EAAOge,EAAOshD,KAC1Bn9D,EAAOiD,KAAKpF,GACZ8qI,EAAQ1lI,KAAK4Y,IAIjB,OADAuuK,GAAWjtH,EAAOwrE,GACX3oI,GAwlRTk9K,GAAOhpJ,KAluLP,SAAcyhJ,EAAMp3K,GAClB,GAAmB,mBAARo3K,EACT,MAAM,IAAIvlF,GAAUg9E,GAGtB,OAAOmd,GAAS5U,EADhBp3K,EAAQA,IAAUlB,EAAYkB,EAAQ6zL,GAAU7zL,KA+tLlD2+K,GAAOlzD,QAAUA,GACjBkzD,GAAO2hB,WAhtNP,SAAoB9hI,EAAY2hD,EAAGmwE,GAOjC,OALEnwE,GADGmwE,EAAQC,GAAe/xH,EAAY2hD,EAAGmwE,GAASnwE,IAAMrhH,GACpD,EAEA+0L,GAAU1zE,IAELh/G,GAAQq9D,GAAcuiH,GAAkBqL,IACvC5tH,EAAY2hD,IA0sN1Bw+D,GAAOh0J,IAv6FP,SAAai8C,EAAQwvB,EAAM92F,GACzB,OAAiB,MAAVsnE,EAAiBA,EAAS+kH,GAAQ/kH,EAAQwvB,EAAM92F,IAu6FzDq/K,GAAO4hB,QA54FP,SAAiB35H,EAAQwvB,EAAM92F,EAAO6iL,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAarjL,EAC3C,MAAV8nE,EAAiBA,EAAS+kH,GAAQ/kH,EAAQwvB,EAAM92F,EAAO6iL,IA24FhExD,GAAO6hB,QA1rNP,SAAiBhiI,GAEf,OADWr9D,GAAQq9D,GAAc2iH,GAAesL,IACpCjuH,IAyrNdmgH,GAAOx6K,MAhjRP,SAAey6D,EAAO5+D,EAAOyb,GAC3B,IAAI9b,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,OAAKA,GAGD8b,GAAqB,iBAAPA,GAAmB80K,GAAe3xH,EAAO5+D,EAAOyb,IAChEzb,EAAQ,EACRyb,EAAM9b,IAGNK,EAAiB,MAATA,EAAgB,EAAI6zL,GAAU7zL,GACtCyb,EAAMA,IAAQ3c,EAAYa,EAASk0L,GAAUp4K,IAExCixK,GAAU9tH,EAAO5+D,EAAOyb,IAVtB,IA8iRXkjK,GAAOz8E,OAASA,GAChBy8E,GAAO8hB,WAx3QP,SAAoB7hI,GAClB,OAAQA,GAASA,EAAMj/D,OACnBguL,GAAe/uH,GACf,IAs3QN+/G,GAAO+hB,aAn2QP,SAAsB9hI,EAAO24G,GAC3B,OAAQ34G,GAASA,EAAMj/D,OACnBguL,GAAe/uH,EAAOssH,GAAY3T,EAAU,IAC5C,IAi2QNoH,GAAOl/K,MA5hEP,SAAe85K,EAAQonB,EAAWC,GAKhC,OAJIA,GAAyB,iBAATA,GAAqBrQ,GAAehX,EAAQonB,EAAWC,KACzED,EAAYC,EAAQ9hM,IAEtB8hM,EAAQA,IAAU9hM,EAAY0wK,EAAmBoxB,IAAU,IAI3DrnB,EAAStpK,GAASspK,MAEQ,iBAAbonB,GACO,MAAbA,IAAsB5pB,GAAS4pB,OAEpCA,EAAY9S,GAAa8S,KACPrmB,GAAWf,GACpBuV,GAAUhU,GAAcvB,GAAS,EAAGqnB,GAGxCrnB,EAAO95K,MAAMkhM,EAAWC,GAZtB,IAuhEXjiB,GAAOkiB,OAnsLP,SAAgBzpB,EAAMp3K,GACpB,GAAmB,mBAARo3K,EACT,MAAM,IAAIvlF,GAAUg9E,GAGtB,OADA7uK,EAAiB,MAATA,EAAgB,EAAIq9K,GAAUwW,GAAU7zL,GAAQ,GACjDgsL,IAAS,SAASjpL,GACvB,IAAI67D,EAAQ77D,EAAK/C,GACby1L,EAAY3G,GAAU/rL,EAAM,EAAG/C,GAKnC,OAHI4+D,GACFu5G,GAAUsd,EAAW72H,GAEhB1/D,GAAMk4K,EAAMt0K,KAAM2yL,OAwrL7B9W,GAAOmiB,KAl1QP,SAAcliI,GACZ,IAAIj/D,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,OAAOA,EAAS+sL,GAAU9tH,EAAO,EAAGj/D,GAAU,IAi1QhDg/K,GAAOh8E,KArzQP,SAAc/jC,EAAOuhD,EAAGmwE,GACtB,OAAM1xH,GAASA,EAAMj/D,OAId+sL,GAAU9tH,EAAO,GADxBuhD,EAAKmwE,GAASnwE,IAAMrhH,EAAa,EAAI+0L,GAAU1zE,IAChB,EAAI,EAAIA,GAH9B,IAozQXw+D,GAAOoiB,UArxQP,SAAmBniI,EAAOuhD,EAAGmwE,GAC3B,IAAI3wL,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,OAAKA,EAKE+sL,GAAU9tH,GADjBuhD,EAAIxgH,GADJwgH,EAAKmwE,GAASnwE,IAAMrhH,EAAa,EAAI+0L,GAAU1zE,KAEnB,EAAI,EAAIA,EAAGxgH,GAJ9B,IAmxQXg/K,GAAOqiB,eAzuQP,SAAwBpiI,EAAOH,GAC7B,OAAQG,GAASA,EAAMj/D,OACnBwuL,GAAUvvH,EAAOssH,GAAYzsH,EAAW,IAAI,GAAO,GACnD,IAuuQNkgH,GAAOsiB,UAjsQP,SAAmBriI,EAAOH,GACxB,OAAQG,GAASA,EAAMj/D,OACnBwuL,GAAUvvH,EAAOssH,GAAYzsH,EAAW,IACxC,IA+rQNkgH,GAAO5iI,IApuPP,SAAaz8C,EAAOw4L,GAElB,OADAA,EAAYx4L,GACLA,GAmuPTq/K,GAAOuiB,SA9oLP,SAAkB9pB,EAAM6M,EAAM70K,GAC5B,IAAI2pL,GAAU,EACVrI,GAAW,EAEf,GAAmB,mBAARtZ,EACT,MAAM,IAAIvlF,GAAUg9E,GAMtB,OAJIzuK,GAASgP,KACX2pL,EAAU,YAAa3pL,IAAYA,EAAQ2pL,QAAUA,EACrDrI,EAAW,aAActhL,IAAYA,EAAQshL,SAAWA,GAEnDjuL,GAAS20K,EAAM6M,EAAM,CAC1B,QAAW8U,EACX,QAAW9U,EACX,SAAYyM,KAioLhB/R,GAAO2S,KAAOA,GACd3S,GAAO/qD,QAAUA,GACjB+qD,GAAOqd,QAAUA,GACjBrd,GAAOsd,UAAYA,GACnBtd,GAAOwiB,OArfP,SAAgB7hM,GACd,OAAI6B,GAAQ7B,GACH44K,GAAS54K,EAAOwmL,IAElBX,GAAS7lL,GAAS,CAACA,GAAS2hL,GAAU2N,GAAa3+K,GAAS3Q,MAkfrEq/K,GAAOiM,cAAgBA,GACvBjM,GAAOr4I,UA10FP,SAAmBsgC,EAAQ2wG,EAAUC,GACnC,IAAI8I,EAAQn/K,GAAQylE,GAChBw6H,EAAY9gB,GAAS9jE,GAAS51C,IAAWuwG,GAAavwG,GAG1D,GADA2wG,EAAW2T,GAAY3T,EAAU,GACd,MAAfC,EAAqB,CACvB,IAAI0L,EAAOt8G,GAAUA,EAAOvmE,YAE1Bm3K,EADE4pB,EACY9gB,EAAQ,IAAI4C,EAAO,GAE1B9iL,GAASwmE,IACF01C,GAAW4mE,GAAQlE,GAAW7C,GAAav1G,IAG3C,GAMlB,OAHCw6H,EAAY3pB,GAAYqN,IAAYl+G,GAAQ,SAAStnE,EAAOge,EAAOspD,GAClE,OAAO2wG,EAASC,EAAal4K,EAAOge,EAAOspD,MAEtC4wG,GAuzFTmH,GAAO0iB,MArnLP,SAAejqB,GACb,OAAO2a,GAAI3a,EAAM,IAqnLnBuH,GAAOuY,MAAQA,GACfvY,GAAOwY,QAAUA,GACjBxY,GAAOyY,UAAYA,GACnBzY,GAAO2iB,KAzmQP,SAAc1iI,GACZ,OAAQA,GAASA,EAAMj/D,OAAUmuL,GAASlvH,GAAS,IAymQrD+/G,GAAO4iB,OA/kQP,SAAgB3iI,EAAO24G,GACrB,OAAQ34G,GAASA,EAAMj/D,OAAUmuL,GAASlvH,EAAOssH,GAAY3T,EAAU,IAAM,IA+kQ/EoH,GAAO6iB,SAxjQP,SAAkB5iI,EAAOq5G,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAan5K,EACpD8/D,GAASA,EAAMj/D,OAAUmuL,GAASlvH,EAAO9/D,EAAWm5K,GAAc,IAujQ5E0G,GAAO8iB,MAhyFP,SAAe76H,EAAQwvB,GACrB,OAAiB,MAAVxvB,GAAwBklH,GAAUllH,EAAQwvB,IAgyFnDuoF,GAAO0Y,MAAQA,GACf1Y,GAAO2Y,UAAYA,GACnB3Y,GAAOh+E,OApwFP,SAAgB/5B,EAAQwvB,EAAM83F,GAC5B,OAAiB,MAAVtnH,EAAiBA,EAASqnH,GAAWrnH,EAAQwvB,EAAMu4F,GAAaT,KAowFzEvP,GAAO+iB,WAzuFP,SAAoB96H,EAAQwvB,EAAM83F,EAAS/L,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAarjL,EAC3C,MAAV8nE,EAAiBA,EAASqnH,GAAWrnH,EAAQwvB,EAAMu4F,GAAaT,GAAU/L,IAwuFnFxD,GAAOt/G,OAASA,GAChBs/G,GAAOgjB,SAhrFP,SAAkB/6H,GAChB,OAAiB,MAAVA,EAAiB,GAAK8yG,GAAW9yG,EAAQk8G,GAAOl8G,KAgrFzD+3G,GAAO4Y,QAAUA,GACjB5Y,GAAOiS,MAAQA,GACfjS,GAAOj8G,KA3mLP,SAAcpjE,EAAO28F,GACnB,OAAOm+F,GAAQzL,GAAa1yF,GAAU38F,IA2mLxCq/K,GAAO6Y,IAAMA,GACb7Y,GAAO8Y,MAAQA,GACf9Y,GAAO+Y,QAAUA,GACjB/Y,GAAOgZ,IAAMA,GACbhZ,GAAOijB,UAj3PP,SAAmBv6L,EAAOg4D,GACxB,OAAOkvH,GAAclnL,GAAS,GAAIg4D,GAAU,GAAIo+C,KAi3PlDkhE,GAAOkjB,cA/1PP,SAAuBx6L,EAAOg4D,GAC5B,OAAOkvH,GAAclnL,GAAS,GAAIg4D,GAAU,GAAIssH,KA+1PlDhN,GAAOiZ,QAAUA,GAGjBjZ,GAAOz3D,QAAU80E,GACjBrd,GAAOmjB,UAAY7F,GACnBtd,GAAOv9K,OAAS65L,GAChBtc,GAAOojB,WAAa7G,GAGpBmC,GAAM1e,GAAQA,IAKdA,GAAO9yJ,IAAMA,GACb8yJ,GAAOoe,QAAUA,GACjBpe,GAAOud,UAAYA,GACnBvd,GAAOyd,WAAaA,GACpBzd,GAAO/8G,KAAOA,GACd+8G,GAAOj4D,MAprFP,SAAeo7D,EAAQC,EAAOC,GAa5B,OAZIA,IAAUljL,IACZkjL,EAAQD,EACRA,EAAQjjL,GAENkjL,IAAUljL,IAEZkjL,GADAA,EAAQsR,GAAStR,MACCA,EAAQA,EAAQ,GAEhCD,IAAUjjL,IAEZijL,GADAA,EAAQuR,GAASvR,MACCA,EAAQA,EAAQ,GAE7Bb,GAAUoS,GAASxR,GAASC,EAAOC,IAwqF5CrD,GAAO58K,MA7jLP,SAAezC,GACb,OAAO2iL,GAAU3iL,EArzVI,IAk3gBvBq/K,GAAOqjB,UApgLP,SAAmB1iM,GACjB,OAAO2iL,GAAU3iL,EAAOu8L,IAogL1Bld,GAAOsjB,cAr+KP,SAAuB3iM,EAAO6iL,GAE5B,OAAOF,GAAU3iL,EAAOu8L,EADxB1Z,EAAkC,mBAAdA,EAA2BA,EAAarjL,IAq+K9D6/K,GAAOujB,UA7hLP,SAAmB5iM,EAAO6iL,GAExB,OAAOF,GAAU3iL,EAz1VI,EAw1VrB6iL,EAAkC,mBAAdA,EAA2BA,EAAarjL,IA6hL9D6/K,GAAOwjB,WA18KP,SAAoBv7H,EAAQlmE,GAC1B,OAAiB,MAAVA,GAAkBqjL,GAAen9G,EAAQlmE,EAAQX,GAAKW,KA08K/Di+K,GAAOkS,OAASA,GAChBlS,GAAOyjB,UA1xCP,SAAmB9iM,EAAO0+B,GACxB,OAAiB,MAAT1+B,GAAiBA,IAAUA,EAAS0+B,EAAe1+B,GA0xC7Dq/K,GAAOkf,OAASA,GAChBlf,GAAOv0F,SAz9EP,SAAkBmvF,EAAQx5I,EAAQ8Q,GAChC0oI,EAAStpK,GAASspK,GAClBx5I,EAAS8tJ,GAAa9tJ,GAEtB,IAAIpgC,EAAS45K,EAAO55K,OAKhB8b,EAJJo1B,EAAWA,IAAa/xC,EACpBa,EACAuhL,GAAU2S,GAAUhjJ,GAAW,EAAGlxC,GAItC,OADAkxC,GAAY9Q,EAAOpgC,SACA,GAAK45K,EAAOp1K,MAAM0sC,EAAUp1B,IAAQskB,GA+8EzD4+I,GAAO0C,GAAKA,GACZ1C,GAAOhf,OAj7EP,SAAgB4Z,GAEd,OADAA,EAAStpK,GAASspK,KACA5H,EAAmBjkK,KAAK6rK,GACtCA,EAAO/5K,QAAQiyK,EAAiB0I,IAChCZ,GA86ENoF,GAAO0jB,aA55EP,SAAsB9oB,GAEpB,OADAA,EAAStpK,GAASspK,KACApH,GAAgBzkK,KAAK6rK,GACnCA,EAAO/5K,QAAQ0yK,GAAc,QAC7BqH,GAy5ENoF,GAAO59D,MA57OP,SAAeviD,EAAYC,EAAW6xH,GACpC,IAAIlZ,EAAOj2K,GAAQq9D,GAAcm5G,GAAasN,GAI9C,OAHIqL,GAASC,GAAe/xH,EAAYC,EAAW6xH,KACjD7xH,EAAY3/D,GAEPs4K,EAAK54G,EAAY0sH,GAAYzsH,EAAW,KAw7OjDkgH,GAAOsZ,KAAOA,GACdtZ,GAAO8X,UAAYA,GACnB9X,GAAO2jB,QArxHP,SAAiB17H,EAAQnI,GACvB,OAAOi6G,GAAY9xG,EAAQskH,GAAYzsH,EAAW,GAAIqmH,KAqxHxDnG,GAAOuZ,SAAWA,GAClBvZ,GAAO+X,cAAgBA,GACvB/X,GAAO4jB,YAjvHP,SAAqB37H,EAAQnI,GAC3B,OAAOi6G,GAAY9xG,EAAQskH,GAAYzsH,EAAW,GAAIumH,KAivHxDrG,GAAOr0K,MAAQA,GACfq0K,GAAO78K,QAAUA,GACjB68K,GAAOwZ,aAAeA,GACtBxZ,GAAO6jB,MArtHP,SAAe57H,EAAQ2wG,GACrB,OAAiB,MAAV3wG,EACHA,EACA4+G,GAAQ5+G,EAAQskH,GAAY3T,EAAU,GAAIuL,KAmtHhDnE,GAAO8jB,WAtrHP,SAAoB77H,EAAQ2wG,GAC1B,OAAiB,MAAV3wG,EACHA,EACA8+G,GAAa9+G,EAAQskH,GAAY3T,EAAU,GAAIuL,KAorHrDnE,GAAO+jB,OArpHP,SAAgB97H,EAAQ2wG,GACtB,OAAO3wG,GAAUk+G,GAAWl+G,EAAQskH,GAAY3T,EAAU,KAqpH5DoH,GAAOgkB,YAxnHP,SAAqB/7H,EAAQ2wG,GAC3B,OAAO3wG,GAAUo+G,GAAgBp+G,EAAQskH,GAAY3T,EAAU,KAwnHjEoH,GAAOl0J,IAAMA,GACbk0J,GAAO4b,GAAKA,GACZ5b,GAAO6b,IAAMA,GACb7b,GAAO/E,IAzgHP,SAAahzG,EAAQwvB,GACnB,OAAiB,MAAVxvB,GAAkBuuH,GAAQvuH,EAAQwvB,EAAMqwF,KAygHjD9H,GAAO2L,MAAQA,GACf3L,GAAO5kJ,KAAOA,GACd4kJ,GAAO4K,SAAWA,GAClB5K,GAAOwF,SA5pOP,SAAkB3lH,EAAYl/D,EAAO+kH,EAAWisE,GAC9C9xH,EAAayrH,GAAYzrH,GAAcA,EAAaa,GAAOb,GAC3D6lD,EAAaA,IAAcisE,EAASuD,GAAUxvE,GAAa,EAE3D,IAAI1kH,EAAS6+D,EAAW7+D,OAIxB,OAHI0kH,EAAY,IACdA,EAAYg5D,GAAU19K,EAAS0kH,EAAW,IAErCtH,GAASv+C,GACX6lD,GAAa1kH,GAAU6+D,EAAWv9D,QAAQ3B,EAAO+kH,IAAc,IAC7D1kH,GAAUo4K,GAAYv5G,EAAYl/D,EAAO+kH,IAAc,GAmpOhEs6D,GAAO19K,QA9lSP,SAAiB29D,EAAOt/D,EAAO+kH,GAC7B,IAAI1kH,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI2d,EAAqB,MAAb+mG,EAAoB,EAAIwvE,GAAUxvE,GAI9C,OAHI/mG,EAAQ,IACVA,EAAQ+/J,GAAU19K,EAAS2d,EAAO,IAE7By6J,GAAYn5G,EAAOt/D,EAAOge,IAslSnCqhK,GAAOikB,QAlqFP,SAAiB9gB,EAAQ9hL,EAAOyb,GAS9B,OARAzb,EAAQmzL,GAASnzL,GACbyb,IAAQ3c,GACV2c,EAAMzb,EACNA,EAAQ,GAERyb,EAAM03K,GAAS13K,GArsVnB,SAAqBqmK,EAAQ9hL,EAAOyb,GAClC,OAAOqmK,GAAUxE,GAAUt9K,EAAOyb,IAAQqmK,EAASzE,GAAUr9K,EAAOyb,GAusV7DonL,CADP/gB,EAASwR,GAASxR,GACS9hL,EAAOyb,IA0pFpCkjK,GAAOgd,OAASA,GAChBhd,GAAO6B,YAAcA,GACrB7B,GAAOx9K,QAAUA,GACjBw9K,GAAOpiE,cAAgBA,GACvBoiE,GAAOsL,YAAcA,GACrBtL,GAAOgM,kBAAoBA,GAC3BhM,GAAOmkB,UAtwKP,SAAmBxjM,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtBs/K,GAAat/K,IAAU4mL,GAAW5mL,IAAUswK,GAqwKjD+O,GAAOniE,SAAWA,GAClBmiE,GAAO3hE,OAASA,GAChB2hE,GAAOokB,UA7sKP,SAAmBzjM,GACjB,OAAOs/K,GAAat/K,IAA6B,IAAnBA,EAAMs7B,WAAmBwyD,GAAc9tF,IA6sKvEq/K,GAAOntJ,QAzqKP,SAAiBlyB,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAI2qL,GAAY3qL,KACX6B,GAAQ7B,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMsd,QAC1D4/F,GAASl9G,IAAU63K,GAAa73K,IAAUkhL,GAAYlhL,IAC1D,OAAQA,EAAMK,OAEhB,IAAIk5F,EAAM2pF,GAAOljL,GACjB,GAAIu5F,GAAOo3E,GAAUp3E,GAAOy3E,EAC1B,OAAQhxK,EAAMggF,KAEhB,GAAIqqG,GAAYrqL,GACd,OAAQoqL,GAASpqL,GAAOK,OAE1B,IAAK,IAAIG,KAAOR,EACd,GAAIgD,GAAe8B,KAAK9E,EAAOQ,GAC7B,OAAO,EAGX,OAAO,GAqpKT6+K,GAAOpmC,QAtnKP,SAAiBj5I,EAAOknL,GACtB,OAAOY,GAAY9nL,EAAOknL,IAsnK5B7H,GAAOqkB,YAnlKP,SAAqB1jM,EAAOknL,EAAOrE,GAEjC,IAAI1gL,GADJ0gL,EAAkC,mBAAdA,EAA2BA,EAAarjL,GAClCqjL,EAAW7iL,EAAOknL,GAAS1nL,EACrD,OAAO2C,IAAW3C,EAAYsoL,GAAY9nL,EAAOknL,EAAO1nL,EAAWqjL,KAAgB1gL,GAilKrFk9K,GAAO8b,QAAUA,GACjB9b,GAAOvqK,SA1hKP,SAAkB9U,GAChB,MAAuB,iBAATA,GAAqB49K,GAAe59K,IA0hKpDq/K,GAAOriE,WAAaA,GACpBqiE,GAAO+b,UAAYA,GACnB/b,GAAO0W,SAAWA,GAClB1W,GAAO9H,MAAQA,GACf8H,GAAOskB,QA11JP,SAAiBr8H,EAAQlmE,GACvB,OAAOkmE,IAAWlmE,GAAUsoL,GAAYpiH,EAAQlmE,EAAQwpL,GAAaxpL,KA01JvEi+K,GAAOukB,YAvzJP,SAAqBt8H,EAAQlmE,EAAQyhL,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAarjL,EACrDkqL,GAAYpiH,EAAQlmE,EAAQwpL,GAAaxpL,GAASyhL,IAszJ3DxD,GAAOzvK,MAvxJP,SAAe5P,GAIb,OAAO2J,GAAS3J,IAAUA,IAAUA,GAoxJtCq/K,GAAOwkB,SAvvJP,SAAkB7jM,GAChB,GAAIi2L,GAAWj2L,GACb,MAAM,IAAIoE,EAtsXM,mEAwsXlB,OAAO2lL,GAAa/pL,IAovJtBq/K,GAAOykB,MAxsJP,SAAe9jM,GACb,OAAgB,MAATA,GAwsJTq/K,GAAOjxF,OAjuJP,SAAgBpuF,GACd,OAAiB,OAAVA,GAiuJTq/K,GAAO11K,SAAWA,GAClB01K,GAAOv+K,SAAWA,GAClBu+K,GAAOC,aAAeA,GACtBD,GAAOvxF,cAAgBA,GACvBuxF,GAAO5H,SAAWA,GAClB4H,GAAO0kB,cArlJP,SAAuB/jM,GACrB,OAAOo7L,GAAUp7L,IAAUA,IAAS,kBAAqBA,GAASgwK,GAqlJpEqP,GAAO1H,MAAQA,GACf0H,GAAO5hE,SAAWA,GAClB4hE,GAAOwG,SAAWA,GAClBxG,GAAOxH,aAAeA,GACtBwH,GAAO/+K,YAn/IP,SAAqBN,GACnB,OAAOA,IAAUR,GAm/InB6/K,GAAO2kB,UA/9IP,SAAmBhkM,GACjB,OAAOs/K,GAAat/K,IAAUkjL,GAAOljL,IAAUmxK,GA+9IjDkO,GAAO4kB,UA38IP,SAAmBjkM,GACjB,OAAOs/K,GAAat/K,IAn6XP,oBAm6XiB4mL,GAAW5mL,IA28I3Cq/K,GAAOl3K,KAz/RP,SAAcm3D,EAAO+hI,GACnB,OAAgB,MAAT/hI,EAAgB,GAAKu+G,GAAW/4K,KAAKw6D,EAAO+hI,IAy/RrDhiB,GAAO2d,UAAYA,GACnB3d,GAAO/9D,KAAOA,GACd+9D,GAAOnqK,YAh9RP,SAAqBoqD,EAAOt/D,EAAO+kH,GACjC,IAAI1kH,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI2d,EAAQ3d,EAKZ,OAJI0kH,IAAcvlH,IAEhBwe,GADAA,EAAQu2K,GAAUxvE,IACF,EAAIg5D,GAAU19K,EAAS2d,EAAO,GAAKggK,GAAUhgK,EAAO3d,EAAS,IAExEL,IAAUA,EArvMrB,SAA2Bs/D,EAAOt/D,EAAO+kH,GAEvC,IADA,IAAI/mG,EAAQ+mG,EAAY,EACjB/mG,KACL,GAAIshD,EAAMthD,KAAWhe,EACnB,OAAOge,EAGX,OAAOA,EA+uMDkmL,CAAkB5kI,EAAOt/D,EAAOge,GAChCs7J,GAAch6G,EAAOm6G,GAAWz7J,GAAO,IAq8R7CqhK,GAAO4d,UAAYA,GACnB5d,GAAO6d,WAAaA,GACpB7d,GAAOgc,GAAKA,GACZhc,GAAOic,IAAMA,GACbjc,GAAOxoK,IAhfP,SAAayoD,GACX,OAAQA,GAASA,EAAMj/D,OACnBulL,GAAatmH,EAAO2qH,GAAUhD,IAC9BznL,GA8eN6/K,GAAO8kB,MApdP,SAAe7kI,EAAO24G,GACpB,OAAQ34G,GAASA,EAAMj/D,OACnBulL,GAAatmH,EAAOssH,GAAY3T,EAAU,GAAIgP,IAC9CznL,GAkdN6/K,GAAO+kB,KAjcP,SAAc9kI,GACZ,OAAOq6G,GAASr6G,EAAO2qH,KAiczB5K,GAAOglB,OAvaP,SAAgB/kI,EAAO24G,GACrB,OAAO0B,GAASr6G,EAAOssH,GAAY3T,EAAU,KAua/CoH,GAAOzoK,IAlZP,SAAa0oD,GACX,OAAQA,GAASA,EAAMj/D,OACnBulL,GAAatmH,EAAO2qH,GAAUQ,IAC9BjrL,GAgZN6/K,GAAOilB,MAtXP,SAAehlI,EAAO24G,GACpB,OAAQ34G,GAASA,EAAMj/D,OACnBulL,GAAatmH,EAAOssH,GAAY3T,EAAU,GAAIwS,IAC9CjrL,GAoXN6/K,GAAOuW,UAAYA,GACnBvW,GAAO6W,UAAYA,GACnB7W,GAAOklB,WAztBP,WACE,MAAO,IAytBTllB,GAAOmlB,WAzsBP,WACE,MAAO,IAysBTnlB,GAAOolB,SAzrBP,WACE,OAAO,GAyrBTplB,GAAOqf,SAAWA,GAClBrf,GAAOqlB,IA77RP,SAAaplI,EAAOuhD,GAClB,OAAQvhD,GAASA,EAAMj/D,OAAUmrL,GAAQlsH,EAAOi1H,GAAU1zE,IAAMrhH,GA67RlE6/K,GAAOslB,WAliCP,WAIE,OAHIznC,GAAK0e,IAAMp4K,OACb05J,GAAK0e,EAAIa,IAEJj5K,MA+hCT67K,GAAO30E,KAAOA,GACd20E,GAAOv6I,IAAMA,GACbu6I,GAAOulB,IAj5EP,SAAa3qB,EAAQ55K,EAAQqzL,GAC3BzZ,EAAStpK,GAASspK,GAGlB,IAAItV,GAFJtkK,EAASk0L,GAAUl0L,IAEMi7K,GAAWrB,GAAU,EAC9C,IAAK55K,GAAUskK,GAAatkK,EAC1B,OAAO45K,EAET,IAAIyT,GAAOrtL,EAASskK,GAAa,EACjC,OACE8uB,GAAchW,GAAYiQ,GAAMgG,GAChCzZ,EACAwZ,GAAcjW,GAAWkQ,GAAMgG,IAs4EnCrU,GAAOwlB,OA32EP,SAAgB5qB,EAAQ55K,EAAQqzL,GAC9BzZ,EAAStpK,GAASspK,GAGlB,IAAItV,GAFJtkK,EAASk0L,GAAUl0L,IAEMi7K,GAAWrB,GAAU,EAC9C,OAAQ55K,GAAUskK,EAAYtkK,EACzB45K,EAASwZ,GAAcpzL,EAASskK,EAAW+uB,GAC5CzZ,GAq2ENoF,GAAOylB,SA30EP,SAAkB7qB,EAAQ55K,EAAQqzL,GAChCzZ,EAAStpK,GAASspK,GAGlB,IAAItV,GAFJtkK,EAASk0L,GAAUl0L,IAEMi7K,GAAWrB,GAAU,EAC9C,OAAQ55K,GAAUskK,EAAYtkK,EACzBozL,GAAcpzL,EAASskK,EAAW+uB,GAASzZ,EAC5CA,GAq0ENoF,GAAO1lK,SA1yEP,SAAkBsgK,EAAQ8qB,EAAO/T,GAM/B,OALIA,GAAkB,MAAT+T,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJ7mB,GAAevtK,GAASspK,GAAQ/5K,QAAQ4yK,GAAa,IAAKiyB,GAAS,IAqyE5E1lB,GAAOjuJ,OA1rFP,SAAgBqxJ,EAAOC,EAAOsiB,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB/T,GAAexO,EAAOC,EAAOsiB,KAC3EtiB,EAAQsiB,EAAWxlM,GAEjBwlM,IAAaxlM,IACK,kBAATkjL,GACTsiB,EAAWtiB,EACXA,EAAQljL,GAEe,kBAATijL,IACduiB,EAAWviB,EACXA,EAAQjjL,IAGRijL,IAAUjjL,GAAakjL,IAAUljL,GACnCijL,EAAQ,EACRC,EAAQ,IAGRD,EAAQoR,GAASpR,GACbC,IAAUljL,GACZkjL,EAAQD,EACRA,EAAQ,GAERC,EAAQmR,GAASnR,IAGjBD,EAAQC,EAAO,CACjB,IAAIvtK,EAAOstK,EACXA,EAAQC,EACRA,EAAQvtK,EAEV,GAAI6vL,GAAYviB,EAAQ,GAAKC,EAAQ,EAAG,CACtC,IAAIx0F,EAAOiwF,KACX,OAAOH,GAAUyE,EAASv0F,GAAQw0F,EAAQD,EAAQhM,GAAe,QAAUvoF,EAAO,IAAI7tF,OAAS,KAAOqiL,GAExG,OAAOlB,GAAWiB,EAAOC,IAupF3BrD,GAAOnyG,OA5+NP,SAAgBhO,EAAY+4G,EAAUC,GACpC,IAAIJ,EAAOj2K,GAAQq9D,GAAc45G,GAAcgB,GAC3Cf,EAAY32K,UAAU/B,OAAS,EAEnC,OAAOy3K,EAAK54G,EAAY0sH,GAAY3T,EAAU,GAAIC,EAAaa,EAAWoJ,KAy+N5E9C,GAAO4lB,YAh9NP,SAAqB/lI,EAAY+4G,EAAUC,GACzC,IAAIJ,EAAOj2K,GAAQq9D,GAAc85G,GAAmBc,GAChDf,EAAY32K,UAAU/B,OAAS,EAEnC,OAAOy3K,EAAK54G,EAAY0sH,GAAY3T,EAAU,GAAIC,EAAaa,EAAW0M,KA68N5EpG,GAAO6lB,OA/wEP,SAAgBjrB,EAAQp5D,EAAGmwE,GAMzB,OAJEnwE,GADGmwE,EAAQC,GAAehX,EAAQp5D,EAAGmwE,GAASnwE,IAAMrhH,GAChD,EAEA+0L,GAAU1zE,GAET4rE,GAAW97K,GAASspK,GAASp5D,IA0wEtCw+D,GAAOn/K,QApvEP,WACE,IAAIuD,EAAOrB,UACP63K,EAAStpK,GAASlN,EAAK,IAE3B,OAAOA,EAAKpD,OAAS,EAAI45K,EAASA,EAAO/5K,QAAQuD,EAAK,GAAIA,EAAK,KAivEjE47K,GAAOl9K,OAtoGP,SAAgBmlE,EAAQwvB,EAAMp4D,GAG5B,IAAI1gB,GAAS,EACT3d,GAHJy2F,EAAOyvF,GAASzvF,EAAMxvB,IAGJjnE,OAOlB,IAJKA,IACHA,EAAS,EACTinE,EAAS9nE,KAEFwe,EAAQ3d,GAAQ,CACvB,IAAIL,EAAkB,MAAVsnE,EAAiB9nE,EAAY8nE,EAAOk/G,GAAM1vF,EAAK94E,KACvDhe,IAAUR,IACZwe,EAAQ3d,EACRL,EAAQ0+B,GAEV4oC,EAAS01C,GAAWh9G,GAASA,EAAM8E,KAAKwiE,GAAUtnE,EAEpD,OAAOsnE,GAonGT+3G,GAAOlsC,MAAQA,GACfksC,GAAOxD,aAAeA,EACtBwD,GAAO8lB,OA15NP,SAAgBjmI,GAEd,OADWr9D,GAAQq9D,GAAcqiH,GAAcsL,IACnC3tH,IAy5NdmgH,GAAOr/F,KA/0NP,SAAc9gB,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAIyrH,GAAYzrH,GACd,OAAOu+C,GAASv+C,GAAco8G,GAAWp8G,GAAcA,EAAW7+D,OAEpE,IAAIk5F,EAAM2pF,GAAOhkH,GACjB,OAAIq6B,GAAOo3E,GAAUp3E,GAAOy3E,EACnB9xG,EAAW8gB,KAEboqG,GAASlrH,GAAY7+D,QAq0N9Bg/K,GAAO8d,UAAYA,GACnB9d,GAAOnyJ,KA/xNP,SAAcgyC,EAAYC,EAAW6xH,GACnC,IAAIlZ,EAAOj2K,GAAQq9D,GAAc+5G,GAAYoU,GAI7C,OAHI2D,GAASC,GAAe/xH,EAAYC,EAAW6xH,KACjD7xH,EAAY3/D,GAEPs4K,EAAK54G,EAAY0sH,GAAYzsH,EAAW,KA2xNjDkgH,GAAO+lB,YAhsRP,SAAqB9lI,EAAOt/D,GAC1B,OAAOstL,GAAgBhuH,EAAOt/D,IAgsRhCq/K,GAAOgmB,cApqRP,SAAuB/lI,EAAOt/D,EAAOi4K,GACnC,OAAO0V,GAAkBruH,EAAOt/D,EAAO4rL,GAAY3T,EAAU,KAoqR/DoH,GAAOimB,cAjpRP,SAAuBhmI,EAAOt/D,GAC5B,IAAIK,EAAkB,MAATi/D,EAAgB,EAAIA,EAAMj/D,OACvC,GAAIA,EAAQ,CACV,IAAI2d,EAAQsvK,GAAgBhuH,EAAOt/D,GACnC,GAAIge,EAAQ3d,GAAU0hL,GAAGziH,EAAMthD,GAAQhe,GACrC,OAAOge,EAGX,OAAQ,GA0oRVqhK,GAAOkmB,gBArnRP,SAAyBjmI,EAAOt/D,GAC9B,OAAOstL,GAAgBhuH,EAAOt/D,GAAO,IAqnRvCq/K,GAAOmmB,kBAzlRP,SAA2BlmI,EAAOt/D,EAAOi4K,GACvC,OAAO0V,GAAkBruH,EAAOt/D,EAAO4rL,GAAY3T,EAAU,IAAI,IAylRnEoH,GAAOomB,kBAtkRP,SAA2BnmI,EAAOt/D,GAEhC,GADsB,MAATs/D,EAAgB,EAAIA,EAAMj/D,OAC3B,CACV,IAAI2d,EAAQsvK,GAAgBhuH,EAAOt/D,GAAO,GAAQ,EAClD,GAAI+hL,GAAGziH,EAAMthD,GAAQhe,GACnB,OAAOge,EAGX,OAAQ,GA+jRVqhK,GAAO+d,UAAYA,GACnB/d,GAAOt0F,WA3oEP,SAAoBkvF,EAAQx5I,EAAQ8Q,GAOlC,OANA0oI,EAAStpK,GAASspK,GAClB1oI,EAAuB,MAAZA,EACP,EACAqwI,GAAU2S,GAAUhjJ,GAAW,EAAG0oI,EAAO55K,QAE7CogC,EAAS8tJ,GAAa9tJ,GACfw5I,EAAOp1K,MAAM0sC,EAAUA,EAAW9Q,EAAOpgC,SAAWogC,GAqoE7D4+I,GAAOwf,SAAWA,GAClBxf,GAAOzwF,IAzUP,SAAatvB,GACX,OAAQA,GAASA,EAAMj/D,OACnBu5K,GAAQt6G,EAAO2qH,IACf,GAuUN5K,GAAOqmB,MA7SP,SAAepmI,EAAO24G,GACpB,OAAQ34G,GAASA,EAAMj/D,OACnBu5K,GAAQt6G,EAAOssH,GAAY3T,EAAU,IACrC,GA2SNoH,GAAOvwJ,SA7hEP,SAAkBmrJ,EAAQnqK,EAASkhL,GAIjC,IAAIrwF,EAAW0+E,GAAO8F,iBAElB6L,GAASC,GAAehX,EAAQnqK,EAASkhL,KAC3ClhL,EAAUtQ,GAEZy6K,EAAStpK,GAASspK,GAClBnqK,EAAU8rL,GAAa,GAAI9rL,EAAS6wF,EAAUw0F,IAE9C,IAIIwQ,EACAC,EALAC,EAAUjK,GAAa,GAAI9rL,EAAQ+1L,QAASllG,EAASklG,QAAS1Q,IAC9D2Q,EAAcrlM,GAAKolM,GACnBE,EAAgB3rB,GAAWyrB,EAASC,GAIpC9nL,EAAQ,EACRgoL,EAAcl2L,EAAQk2L,aAAelyB,GACrC1yK,EAAS,WAGT6kM,EAAe79L,IAChB0H,EAAQuwJ,QAAUyT,IAAW1yK,OAAS,IACvC4kM,EAAY5kM,OAAS,KACpB4kM,IAAgBxzB,GAAgBc,GAAeQ,IAAW1yK,OAAS,KACnE0O,EAAQvJ,UAAYutK,IAAW1yK,OAAS,KACzC,KAME8kM,EAAY,kBACbljM,GAAe8B,KAAKgL,EAAS,cACzBA,EAAQo2L,UAAY,IAAIhmM,QAAQ,MAAO,KACvC,6BAA+Bm2K,GAAmB,KACnD,KAEN4D,EAAO/5K,QAAQ+lM,GAAc,SAAS7/L,EAAO+/L,EAAaC,EAAkBC,EAAiBC,EAAe92K,GAsB1G,OArBA42K,IAAqBA,EAAmBC,GAGxCjlM,GAAU64K,EAAOp1K,MAAMmZ,EAAOwR,GAAQtvB,QAAQ6zK,GAAmB+G,IAG7DqrB,IACFR,GAAa,EACbvkM,GAAU,YAAc+kM,EAAc,UAEpCG,IACFV,GAAe,EACfxkM,GAAU,OAASklM,EAAgB,eAEjCF,IACFhlM,GAAU,iBAAmBglM,EAAmB,+BAElDpoL,EAAQwR,EAASppB,EAAM/F,OAIhB+F,KAGThF,GAAU,OAIV,IAAImlM,EAAWvjM,GAAe8B,KAAKgL,EAAS,aAAeA,EAAQy2L,SACnE,GAAKA,GAKA,GAAInzB,GAA2BhlK,KAAKm4L,GACvC,MAAM,IAAIniM,EA3idmB,2DAsid7BhD,EAAS,iBAAmBA,EAAS,QASvCA,GAAUwkM,EAAexkM,EAAOlB,QAAQ6xK,EAAsB,IAAM3wK,GACjElB,QAAQ8xK,EAAqB,MAC7B9xK,QAAQ+xK,EAAuB,OAGlC7wK,EAAS,aAAemlM,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACCZ,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJxkM,EACA,gBAEF,IAAIe,EAASs7L,IAAQ,WACnB,OAAOh+L,GAASqmM,EAAaI,EAAY,UAAY9kM,GAClDxB,MAAMJ,EAAWumM,MAMtB,GADA5jM,EAAOf,OAASA,EACZ+5L,GAAQh5L,GACV,MAAMA,EAER,OAAOA,GA46DTk9K,GAAOmnB,MApsBP,SAAe3lF,EAAGo3D,GAEhB,IADAp3D,EAAI0zE,GAAU1zE,IACN,GAAKA,EAAImvD,EACf,MAAO,GAET,IAAIhyJ,EAAQkyJ,EACR7vK,EAAS29K,GAAUn9D,EAAGqvD,GAE1B+H,EAAW2T,GAAY3T,GACvBp3D,GAAKqvD,EAGL,IADA,IAAI/tK,EAAS43K,GAAU15K,EAAQ43K,KACtBj6J,EAAQ6iG,GACfo3D,EAASj6J,GAEX,OAAO7b,GAsrBTk9K,GAAOwU,SAAWA,GAClBxU,GAAOkV,UAAYA,GACnBlV,GAAOoc,SAAWA,GAClBpc,GAAOonB,QAx5DP,SAAiBzmM,GACf,OAAO2Q,GAAS3Q,GAAOib,eAw5DzBokK,GAAO2U,SAAWA,GAClB3U,GAAOqnB,cApuIP,SAAuB1mM,GACrB,OAAOA,EACH4hL,GAAU2S,GAAUv0L,IAAQ,iBAAmBgwK,GACpC,IAAVhwK,EAAcA,EAAQ,GAkuI7Bq/K,GAAO1uK,SAAWA,GAClB0uK,GAAOsnB,QAn4DP,SAAiB3mM,GACf,OAAO2Q,GAAS3Q,GAAOgb,eAm4DzBqkK,GAAOxvJ,KA12DP,SAAcoqJ,EAAQyZ,EAAO1C,GAE3B,IADA/W,EAAStpK,GAASspK,MACH+W,GAAS0C,IAAUl0L,GAChC,OAAOw6K,GAASC,GAElB,IAAKA,KAAYyZ,EAAQnF,GAAamF,IACpC,OAAOzZ,EAET,IAAIO,EAAagB,GAAcvB,GAC3BQ,EAAae,GAAckY,GAI/B,OAAOlE,GAAUhV,EAHLD,GAAgBC,EAAYC,GAC9BC,GAAcF,EAAYC,GAAc,GAETtyK,KAAK,KA81DhDk3K,GAAOunB,QAx0DP,SAAiB3sB,EAAQyZ,EAAO1C,GAE9B,IADA/W,EAAStpK,GAASspK,MACH+W,GAAS0C,IAAUl0L,GAChC,OAAOy6K,EAAOp1K,MAAM,EAAGq1K,GAAgBD,GAAU,GAEnD,IAAKA,KAAYyZ,EAAQnF,GAAamF,IACpC,OAAOzZ,EAET,IAAIO,EAAagB,GAAcvB,GAG/B,OAAOuV,GAAUhV,EAAY,EAFnBE,GAAcF,EAAYgB,GAAckY,IAAU,GAEvBvrL,KAAK,KA8zD5Ck3K,GAAOwnB,UAxyDP,SAAmB5sB,EAAQyZ,EAAO1C,GAEhC,IADA/W,EAAStpK,GAASspK,MACH+W,GAAS0C,IAAUl0L,GAChC,OAAOy6K,EAAO/5K,QAAQ4yK,GAAa,IAErC,IAAKmH,KAAYyZ,EAAQnF,GAAamF,IACpC,OAAOzZ,EAET,IAAIO,EAAagB,GAAcvB,GAG/B,OAAOuV,GAAUhV,EAFLD,GAAgBC,EAAYgB,GAAckY,KAElBvrL,KAAK,KA8xD3Ck3K,GAAOynB,SAtvDP,SAAkB7sB,EAAQnqK,GACxB,IAAIzP,EAnvdmB,GAovdnB0mM,EAnvdqB,MAqvdzB,GAAIjmM,GAASgP,GAAU,CACrB,IAAIuxL,EAAY,cAAevxL,EAAUA,EAAQuxL,UAAYA,EAC7DhhM,EAAS,WAAYyP,EAAUykL,GAAUzkL,EAAQzP,QAAUA,EAC3D0mM,EAAW,aAAcj3L,EAAUy+K,GAAaz+K,EAAQi3L,UAAYA,EAItE,IAAIpiC,GAFJsV,EAAStpK,GAASspK,IAEK55K,OACvB,GAAI26K,GAAWf,GAAS,CACtB,IAAIO,EAAagB,GAAcvB,GAC/BtV,EAAY6V,EAAWn6K,OAEzB,GAAIA,GAAUskK,EACZ,OAAOsV,EAET,IAAI99J,EAAM9b,EAASi7K,GAAWyrB,GAC9B,GAAI5qL,EAAM,EACR,OAAO4qL,EAET,IAAI5kM,EAASq4K,EACTgV,GAAUhV,EAAY,EAAGr+J,GAAKhU,KAAK,IACnC8xK,EAAOp1K,MAAM,EAAGsX,GAEpB,GAAIklL,IAAc7hM,EAChB,OAAO2C,EAAS4kM,EAKlB,GAHIvsB,IACFr+J,GAAQha,EAAO9B,OAAS8b,GAEtBs7J,GAAS4pB,IACX,GAAIpnB,EAAOp1K,MAAMsX,GAAKsmF,OAAO4+F,GAAY,CACvC,IAAIj7L,EACAwK,EAAYzO,EAMhB,IAJKk/L,EAAUzqB,SACbyqB,EAAYj5L,GAAOi5L,EAAUjgM,OAAQuP,GAAS4iK,GAAQ9qJ,KAAK44K,IAAc,MAE3EA,EAAU56C,UAAY,EACdrgJ,EAAQi7L,EAAU54K,KAAK7X,IAC7B,IAAIo2L,EAAS5gM,EAAM4X,MAErB7b,EAASA,EAAO0C,MAAM,EAAGmiM,IAAWxnM,EAAY2c,EAAM6qL,SAEnD,GAAI/sB,EAAOt4K,QAAQ4sL,GAAa8S,GAAYllL,IAAQA,EAAK,CAC9D,IAAI6B,EAAQ7b,EAAO+S,YAAYmsL,GAC3BrjL,GAAS,IACX7b,EAASA,EAAO0C,MAAM,EAAGmZ,IAG7B,OAAO7b,EAAS4kM,GAksDlB1nB,GAAO4nB,SA5qDP,SAAkBhtB,GAEhB,OADAA,EAAStpK,GAASspK,KACA7H,EAAiBhkK,KAAK6rK,GACpCA,EAAO/5K,QAAQgyK,EAAeyJ,IAC9B1B,GAyqDNoF,GAAOpnD,SAvpBP,SAAkB7gH,GAChB,IAAI6F,IAAOm/J,GACX,OAAOzrK,GAASyG,GAAU6F,GAspB5BoiK,GAAOge,UAAYA,GACnBhe,GAAO0d,WAAaA,GAGpB1d,GAAO6nB,KAAO1kM,GACd68K,GAAO8nB,UAAYtO,GACnBxZ,GAAOr9K,MAAQy4B,GAEfsjK,GAAM1e,GAAS,WACb,IAAIj+K,EAAS,GAMb,OALAokL,GAAWnG,IAAQ,SAASvH,EAAMrtE,GAC3BznG,GAAe8B,KAAKu6K,GAAO3/K,UAAW+qG,KACzCrpG,EAAOqpG,GAAcqtE,MAGlB12K,EAPM,GAQT,CAAE,OAAS,IAWjBi+K,GAAO+nB,QA/ihBK,UAkjhBZjvB,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAAS1tE,GACxF40E,GAAO50E,GAAY9R,YAAc0mF,MAInClH,GAAU,CAAC,OAAQ,SAAS,SAAS1tE,EAAYzsF,GAC/CuhK,GAAY7/K,UAAU+qG,GAAc,SAASoW,GAC3CA,EAAIA,IAAMrhH,EAAY,EAAIu+K,GAAUwW,GAAU1zE,GAAI,GAElD,IAAI1+G,EAAUqB,KAAK48K,eAAiBpiK,EAChC,IAAIuhK,GAAY/7K,MAChBA,KAAKf,QAUT,OARIN,EAAOi+K,aACTj+K,EAAOm+K,cAAgBtC,GAAUn9D,EAAG1+G,EAAOm+K,eAE3Cn+K,EAAOo+K,UAAUn7K,KAAK,CACpB,KAAQ44K,GAAUn9D,EAAGqvD,GACrB,KAAQzlE,GAActoG,EAAOg+K,QAAU,EAAI,QAAU,MAGlDh+K,GAGTo9K,GAAY7/K,UAAU+qG,EAAa,SAAW,SAASoW,GACrD,OAAOr9G,KAAK2oH,UAAU1hB,GAAYoW,GAAGsL,cAKzCgsD,GAAU,CAAC,SAAU,MAAO,cAAc,SAAS1tE,EAAYzsF,GAC7D,IAAIrP,EAAOqP,EAAQ,EACfqpL,EAjihBe,GAiihBJ14L,GA/hhBG,GA+hhByBA,EAE3C4wK,GAAY7/K,UAAU+qG,GAAc,SAASwtE,GAC3C,IAAI91K,EAASqB,KAAKf,QAMlB,OALAN,EAAOk+K,cAAcj7K,KAAK,CACxB,SAAYwmL,GAAY3T,EAAU,GAClC,KAAQtpK,IAEVxM,EAAOi+K,aAAej+K,EAAOi+K,cAAgBinB,EACtCllM,MAKXg2K,GAAU,CAAC,OAAQ,SAAS,SAAS1tE,EAAYzsF,GAC/C,IAAIspL,EAAW,QAAUtpL,EAAQ,QAAU,IAE3CuhK,GAAY7/K,UAAU+qG,GAAc,WAClC,OAAOjnG,KAAK8jM,GAAU,GAAGtnM,QAAQ,OAKrCm4K,GAAU,CAAC,UAAW,SAAS,SAAS1tE,EAAYzsF,GAClD,IAAIupL,EAAW,QAAUvpL,EAAQ,GAAK,SAEtCuhK,GAAY7/K,UAAU+qG,GAAc,WAClC,OAAOjnG,KAAK48K,aAAe,IAAIb,GAAY/7K,MAAQA,KAAK+jM,GAAU,OAItEhoB,GAAY7/K,UAAUy/L,QAAU,WAC9B,OAAO37L,KAAKkxB,OAAOu1J,KAGrB1K,GAAY7/K,UAAUi5L,KAAO,SAASx5H,GACpC,OAAO37D,KAAKkxB,OAAOyqC,GAAW1kC,QAGhC8kJ,GAAY7/K,UAAUk5L,SAAW,SAASz5H,GACxC,OAAO37D,KAAK2oH,UAAUwsE,KAAKx5H,IAG7BogH,GAAY7/K,UAAUo5L,UAAYpM,IAAS,SAAS51F,EAAMrzF,GACxD,MAAmB,mBAARqzF,EACF,IAAIyoF,GAAY/7K,MAElBA,KAAKyE,KAAI,SAASjI,GACvB,OAAO4nL,GAAW5nL,EAAO82F,EAAMrzF,SAInC87K,GAAY7/K,UAAUinB,OAAS,SAASw4C,GACtC,OAAO37D,KAAKkxB,OAAOgmK,GAAO9O,GAAYzsH,MAGxCogH,GAAY7/K,UAAUmF,MAAQ,SAASnE,EAAOyb,GAC5Czb,EAAQ6zL,GAAU7zL,GAElB,IAAIyB,EAASqB,KACb,OAAIrB,EAAOi+K,eAAiB1/K,EAAQ,GAAKyb,EAAM,GACtC,IAAIojK,GAAYp9K,IAErBzB,EAAQ,EACVyB,EAASA,EAAOs/L,WAAW/gM,GAClBA,IACTyB,EAASA,EAAOk1C,KAAK32C,IAEnByb,IAAQ3c,IAEV2C,GADAga,EAAMo4K,GAAUp4K,IACD,EAAIha,EAAOs9L,WAAWtjL,GAAOha,EAAOkhG,KAAKlnF,EAAMzb,IAEzDyB,IAGTo9K,GAAY7/K,UAAUgiM,eAAiB,SAASviI,GAC9C,OAAO37D,KAAK2oH,UAAUw1E,UAAUxiI,GAAWgtD,WAG7CozD,GAAY7/K,UAAU40H,QAAU,WAC9B,OAAO9wH,KAAK6/F,KAAK6sE,IAInBsV,GAAWjG,GAAY7/K,WAAW,SAASo4K,EAAMrtE,GAC/C,IAAI+8F,EAAgB,qCAAqCp5L,KAAKq8F,GAC1Dg9F,EAAU,kBAAkBr5L,KAAKq8F,GACjCi9F,EAAaroB,GAAOooB,EAAW,QAAwB,QAAdh9F,EAAuB,QAAU,IAAOA,GACjFk9F,EAAeF,GAAW,QAAQr5L,KAAKq8F,GAEtCi9F,IAGLroB,GAAO3/K,UAAU+qG,GAAc,WAC7B,IAAIzqG,EAAQwD,KAAKs8K,YACbr8K,EAAOgkM,EAAU,CAAC,GAAKrlM,UACvBwlM,EAAS5nM,aAAiBu/K,GAC1BtH,EAAWx0K,EAAK,GAChBokM,EAAUD,GAAU/lM,GAAQ7B,GAE5Bw4L,EAAc,SAASx4L,GACzB,IAAImC,EAASulM,EAAW9nM,MAAMy/K,GAAQxG,GAAU,CAAC74K,GAAQyD,IACzD,OAAQgkM,GAAW5nB,EAAY19K,EAAO,GAAKA,GAGzC0lM,GAAWL,GAAoC,mBAAZvvB,GAA6C,GAAnBA,EAAS53K,SAExEunM,EAASC,GAAU,GAErB,IAAIhoB,EAAWr8K,KAAKw8K,UAChB8nB,IAAatkM,KAAKu8K,YAAY1/K,OAC9B0nM,EAAcJ,IAAiB9nB,EAC/BmoB,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5B7nM,EAAQgoM,EAAWhoM,EAAQ,IAAIu/K,GAAY/7K,MAC3C,IAAIrB,EAAS21K,EAAKl4K,MAAMI,EAAOyD,GAE/B,OADAtB,EAAO49K,YAAY36K,KAAK,CAAE,KAAQ4sL,GAAM,KAAQ,CAACwG,GAAc,QAAWh5L,IACnE,IAAIggL,GAAcr9K,EAAQ09K,GAEnC,OAAIkoB,GAAeC,EACVlwB,EAAKl4K,MAAM4D,KAAMC,IAE1BtB,EAASqB,KAAKwuL,KAAKwG,GACZuP,EAAeN,EAAUtlM,EAAOnC,QAAQ,GAAKmC,EAAOnC,QAAWmC,QAK1Eg2K,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAAS1tE,GACxE,IAAIqtE,EAAOiE,GAAWtxE,GAClBw9F,EAAY,0BAA0B75L,KAAKq8F,GAAc,MAAQ,OACjEk9F,EAAe,kBAAkBv5L,KAAKq8F,GAE1C40E,GAAO3/K,UAAU+qG,GAAc,WAC7B,IAAIhnG,EAAOrB,UACX,GAAIulM,IAAiBnkM,KAAKw8K,UAAW,CACnC,IAAIhgL,EAAQwD,KAAKxD,QACjB,OAAO83K,EAAKl4K,MAAMiC,GAAQ7B,GAASA,EAAQ,GAAIyD,GAEjD,OAAOD,KAAKykM,IAAW,SAASjoM,GAC9B,OAAO83K,EAAKl4K,MAAMiC,GAAQ7B,GAASA,EAAQ,GAAIyD,UAMrD+hL,GAAWjG,GAAY7/K,WAAW,SAASo4K,EAAMrtE,GAC/C,IAAIi9F,EAAaroB,GAAO50E,GACxB,GAAIi9F,EAAY,CACd,IAAIlnM,EAAMknM,EAAW9pL,KAAO,GACvB5a,GAAe8B,KAAK65K,GAAWn+K,KAClCm+K,GAAUn+K,GAAO,IAEnBm+K,GAAUn+K,GAAK4E,KAAK,CAAE,KAAQqlG,EAAY,KAAQi9F,QAItD/oB,GAAU0T,GAAa7yL,EAlthBA,GAkthB+Boe,MAAQ,CAAC,CAC7D,KAAQ,UACR,KAAQpe,IAIV+/K,GAAY7/K,UAAU+C,MAh9dtB,WACE,IAAIN,EAAS,IAAIo9K,GAAY/7K,KAAKs8K,aAOlC,OANA39K,EAAO49K,YAAc4B,GAAUn+K,KAAKu8K,aACpC59K,EAAOg+K,QAAU38K,KAAK28K,QACtBh+K,EAAOi+K,aAAe58K,KAAK48K,aAC3Bj+K,EAAOk+K,cAAgBsB,GAAUn+K,KAAK68K,eACtCl+K,EAAOm+K,cAAgB98K,KAAK88K,cAC5Bn+K,EAAOo+K,UAAYoB,GAAUn+K,KAAK+8K,WAC3Bp+K,GAy8dTo9K,GAAY7/K,UAAUysH,QA97dtB,WACE,GAAI3oH,KAAK48K,aAAc,CACrB,IAAIj+K,EAAS,IAAIo9K,GAAY/7K,MAC7BrB,EAAOg+K,SAAW,EAClBh+K,EAAOi+K,cAAe,OAEtBj+K,EAASqB,KAAKf,SACP09K,UAAY,EAErB,OAAOh+K,GAs7dTo9K,GAAY7/K,UAAUM,MA36dtB,WACE,IAAIs/D,EAAQ97D,KAAKs8K,YAAY9/K,QACzBkoM,EAAM1kM,KAAK28K,QACXa,EAAQn/K,GAAQy9D,GAChB6oI,EAAUD,EAAM,EAChB5S,EAAYtU,EAAQ1hH,EAAMj/D,OAAS,EACnC+nM,EA8pIN,SAAiB1nM,EAAOyb,EAAKy+K,GAC3B,IAAI58K,GAAS,EACT3d,EAASu6L,EAAWv6L,OAExB,OAAS2d,EAAQ3d,GAAQ,CACvB,IAAIge,EAAOu8K,EAAW58K,GAClBgiE,EAAO3hE,EAAK2hE,KAEhB,OAAQ3hE,EAAK1P,MACX,IAAK,OAAajO,GAASs/E,EAAM,MACjC,IAAK,YAAa7jE,GAAO6jE,EAAM,MAC/B,IAAK,OAAa7jE,EAAM6hK,GAAU7hK,EAAKzb,EAAQs/E,GAAO,MACtD,IAAK,YAAat/E,EAAQq9K,GAAUr9K,EAAOyb,EAAM6jE,IAGrD,MAAO,CAAE,MAASt/E,EAAO,IAAOyb,GA7qIrBksL,CAAQ,EAAG/S,EAAW9xL,KAAK+8K,WAClC7/K,EAAQ0nM,EAAK1nM,MACbyb,EAAMisL,EAAKjsL,IACX9b,EAAS8b,EAAMzb,EACfsd,EAAQmqL,EAAUhsL,EAAOzb,EAAQ,EACjCgrL,EAAYloL,KAAK68K,cACjBioB,EAAa5c,EAAUrrL,OACvBk4K,EAAW,EACXgwB,EAAYvqB,GAAU39K,EAAQmD,KAAK88K,eAEvC,IAAKU,IAAWmnB,GAAW7S,GAAaj1L,GAAUkoM,GAAaloM,EAC7D,OAAO0uL,GAAiBzvH,EAAO97D,KAAKu8K,aAEtC,IAAI59K,EAAS,GAEb6iL,EACA,KAAO3kL,KAAYk4K,EAAWgwB,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACbxoM,EAAQs/D,EAHZthD,GAASkqL,KAKAM,EAAYF,GAAY,CAC/B,IAAIjqL,EAAOqtK,EAAU8c,GACjBvwB,EAAW55J,EAAK45J,SAChBtpK,EAAO0P,EAAK1P,KACZs2K,EAAWhN,EAASj4K,GAExB,GA7zDY,GA6zDR2O,EACF3O,EAAQilL,OACH,IAAKA,EAAU,CACpB,GAj0Da,GAi0DTt2K,EACF,SAASq2K,EAET,MAAMA,GAIZ7iL,EAAOo2K,KAAcv4K,EAEvB,OAAOmC,GAg4dTk9K,GAAO3/K,UAAUo8L,GAAKrD,GACtBpZ,GAAO3/K,UAAU64L,MA1iQjB,WACE,OAAOA,GAAM/0L,OA0iQf67K,GAAO3/K,UAAU+oM,OA7gQjB,WACE,OAAO,IAAIjpB,GAAch8K,KAAKxD,QAASwD,KAAKw8K,YA6gQ9CX,GAAO3/K,UAAUwwH,KAp/PjB,WACM1sH,KAAK08K,aAAe1gL,IACtBgE,KAAK08K,WAAa5rD,GAAQ9wH,KAAKxD,UAEjC,IAAIolC,EAAO5hC,KAAKy8K,WAAaz8K,KAAK08K,WAAW7/K,OAG7C,MAAO,CAAE,KAAQ+kC,EAAM,MAFXA,EAAO5lC,EAAYgE,KAAK08K,WAAW18K,KAAKy8K,eAg/PtDZ,GAAO3/K,UAAU0yL,MA77PjB,SAAsBpyL,GAIpB,IAHA,IAAImC,EACA4B,EAASP,KAENO,aAAkB67K,IAAY,CACnC,IAAIn9K,EAAQg9K,GAAa17K,GACzBtB,EAAMw9K,UAAY,EAClBx9K,EAAMy9K,WAAa1gL,EACf2C,EACF6kJ,EAAS84B,YAAcr9K,EAEvBN,EAASM,EAEX,IAAIukJ,EAAWvkJ,EACfsB,EAASA,EAAO+7K,YAGlB,OADA94B,EAAS84B,YAAc9/K,EAChBmC,GA66PTk9K,GAAO3/K,UAAUysH,QAt5PjB,WACE,IAAInsH,EAAQwD,KAAKs8K,YACjB,GAAI9/K,aAAiBu/K,GAAa,CAChC,IAAImpB,EAAU1oM,EAUd,OATIwD,KAAKu8K,YAAY1/K,SACnBqoM,EAAU,IAAInpB,GAAY/7K,QAE5BklM,EAAUA,EAAQv8E,WACV4zD,YAAY36K,KAAK,CACvB,KAAQ4sL,GACR,KAAQ,CAAC7lE,IACT,QAAW3sH,IAEN,IAAIggL,GAAckpB,EAASllM,KAAKw8K,WAEzC,OAAOx8K,KAAKwuL,KAAK7lE,KAw4PnBkzD,GAAO3/K,UAAU6xF,OAAS8tF,GAAO3/K,UAAU6yE,QAAU8sG,GAAO3/K,UAAUM,MAv3PtE,WACE,OAAO+uL,GAAiBvrL,KAAKs8K,YAAat8K,KAAKu8K,cAy3PjDV,GAAO3/K,UAAUsC,MAAQq9K,GAAO3/K,UAAU+6B,KAEtCwiJ,KACFoC,GAAO3/K,UAAUu9K,IAj+PnB,WACE,OAAOz5K,OAk+PF67K,GAMDxD,GAQN3e,GAAK0e,EAAIA,IAIT+sB,aACE,OAAO/sB,IACR,oCAaH92K,KAAKtB,Q,yDCxzhBP,8CACe,SAASolM,EAA4Bz7H,EAAG07H,GACrD,GAAK17H,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,YAAiBA,EAAG07H,GACtD,IAAIhoF,EAAIn/G,OAAOhC,UAAUiR,SAAS7L,KAAKqoE,GAAGtoE,MAAM,GAAI,GAEpD,MADU,WAANg8G,GAAkB1zC,EAAEpsE,cAAa8/G,EAAI1zC,EAAEpsE,YAAY6c,MAC7C,QAANijG,GAAqB,QAANA,EAAoBj/G,MAAM6qF,KAAKtf,GACxC,cAAN0zC,GAAqB,2CAA2CzyG,KAAKyyG,GAAW,YAAiB1zC,EAAG07H,QAAxG,K,6BCPa,SAASl1G,EAAgBxmB,EAAGl4D,GAKzC,OAJA0+E,EAAkBjyF,OAAOqgC,eAAiBrgC,OAAOqgC,eAAepiC,OAAS,SAAyBwtE,EAAGl4D,GAEnG,OADAk4D,EAAEnrC,UAAY/sB,EACPk4D,IAEcA,EAAGl4D,GAL5B,mC,8BCAa,IAAA46G,EAAAhwE,EAAA,KAAAipJ,EAAAjpJ,EAAA,KAAA8vD,EAAA9vD,EAAA,KACPkpJ,EAAkBlpJ,EAAQ,KAC1BmpJ,EAAkBnpJ,EAAQ,KAC1BopJ,EAAeppJ,EAAQ,KACvBmmB,EAAenmB,EAAQ,KA+K7B,SAASqpJ,EAA6BlpM,GACrC,GAAqB,kBAAVA,GAAuC,IAAjBA,EAAMK,OACtC,MAAM,IAAIkyF,UAAU,wDAItB,SAAS42G,EAAOnpM,EAAO8P,GACtB,OAAIA,EAAQq5L,OACJr5L,EAAQ8mF,OAASmyG,EAAgB/oM,GAAS8rH,mBAAmB9rH,GAG9DA,EAGR,SAASopM,EAAOppM,EAAO8P,GACtB,OAAIA,EAAQs5L,OACJJ,EAAgBhpM,GAGjBA,EAGR,SAASqpM,EAAW7kI,GACnB,OAAI5iE,MAAMC,QAAQ2iE,GACVA,EAAM6gB,OAGO,kBAAV7gB,EACH6kI,EAAW3nM,OAAOjB,KAAK+jE,IAC5B6gB,MAAK,SAAC94E,EAAGpB,GAAC,OAAKsuC,OAAOltC,GAAKktC,OAAOtuC,MAClClD,KAAI,SAAAzH,GAAG,OAAIgkE,EAAMhkE,MAGbgkE,EAGR,SAAS8kI,EAAW9kI,GACnB,IAAM+kI,EAAY/kI,EAAM7iE,QAAQ,KAKhC,OAJmB,IAAf4nM,IACH/kI,EAAQA,EAAM3/D,MAAM,EAAG0kM,IAGjB/kI,EAaR,SAASglI,EAAQhlI,GAEhB,IAAMilI,GADNjlI,EAAQ8kI,EAAW9kI,IACM7iE,QAAQ,KACjC,OAAoB,IAAhB8nM,EACI,GAGDjlI,EAAM3/D,MAAM4kM,EAAa,GAGjC,SAASC,EAAW1pM,EAAO8P,GAO1B,OANIA,EAAQ65L,eAAiBlwJ,OAAO7pC,MAAM6pC,OAAOz5C,KAA6B,kBAAVA,GAAuC,KAAjBA,EAAM6vB,OAC/F7vB,EAAQy5C,OAAOz5C,IACL8P,EAAQ85L,eAA2B,OAAV5pM,GAA2C,SAAxBA,EAAMib,eAAoD,UAAxBjb,EAAMib,gBAC9Fjb,EAAgC,SAAxBA,EAAMib,eAGRjb,EAGR,SAASwe,EAAM2mD,EAAOr1D,GAUrBo5L,GATAp5L,EAAUpO,OAAO0rE,OAAO,CACvBg8H,QAAQ,EACR/jH,MAAM,EACNwkH,YAAa,OACbC,qBAAsB,IACtBH,cAAc,EACdC,eAAe,GACb95L,IAEkCg6L,sBAErC,IAAMzkG,EA3KP,SAA8Bv1F,GAC7B,IAAI3N,EAEJ,OAAQ2N,EAAQ+5L,aACf,IAAK,QACJ,OAAO,SAACrpM,EAAKR,EAAOk4K,GACnB/1K,EAAS,aAAasmB,KAAKjoB,GAE3BA,EAAMA,EAAIN,QAAQ,WAAY,IAEzBiC,QAKoB3C,IAArB04K,EAAY13K,KACf03K,EAAY13K,GAAO,IAGpB03K,EAAY13K,GAAK2B,EAAO,IAAMnC,GAR7Bk4K,EAAY13K,GAAOR,GAWtB,IAAK,UACJ,OAAO,SAACQ,EAAKR,EAAOk4K,GACnB/1K,EAAS,UAAUsmB,KAAKjoB,GACxBA,EAAMA,EAAIN,QAAQ,QAAS,IAEtBiC,OAKoB3C,IAArB04K,EAAY13K,GAKhB03K,EAAY13K,GAAO,GAAG80B,OAAO4iJ,EAAY13K,GAAMR,GAJ9Ck4K,EAAY13K,GAAO,CAACR,GALpBk4K,EAAY13K,GAAOR,GAYtB,IAAK,QACL,IAAK,YACJ,OAAO,SAACQ,EAAKR,EAAOk4K,GACnB,IAAMr2K,EAA2B,kBAAV7B,GAAsBA,EAAM6kL,SAAS/0K,EAAQg6L,sBAC9DC,EAAmC,kBAAV/pM,IAAuB6B,GAAWunM,EAAOppM,EAAO8P,GAAS+0K,SAAS/0K,EAAQg6L,sBACzG9pM,EAAQ+pM,EAAiBX,EAAOppM,EAAO8P,GAAW9P,EAClD,IAAMw9B,EAAW37B,GAAWkoM,EAAiB/pM,EAAMG,MAAM2P,EAAQg6L,sBAAsB7hM,KAAI,SAAA+2C,GAAI,OAAIoqJ,EAAOpqJ,EAAMlvC,MAAsB,OAAV9P,EAAiBA,EAAQopM,EAAOppM,EAAO8P,GACnKooK,EAAY13K,GAAOg9B,GAGrB,IAAK,oBACJ,OAAO,SAACh9B,EAAKR,EAAOk4K,GACnB,IAAMr2K,EAAU,UAAUuM,KAAK5N,GAG/B,GAFAA,EAAMA,EAAIN,QAAQ,QAAS,IAEtB2B,EAAL,CAKA,IAAMmoM,EAAuB,OAAVhqM,EAClB,GACAA,EAAMG,MAAM2P,EAAQg6L,sBAAsB7hM,KAAI,SAAA+2C,GAAI,OAAIoqJ,EAAOpqJ,EAAMlvC,WAE3CtQ,IAArB04K,EAAY13K,GAKhB03K,EAAY13K,GAAO,GAAG80B,OAAO4iJ,EAAY13K,GAAMwpM,GAJ9C9xB,EAAY13K,GAAOwpM,OATnB9xB,EAAY13K,GAAOR,EAAQopM,EAAOppM,EAAO8P,GAAW9P,GAgBvD,QACC,OAAO,SAACQ,EAAKR,EAAOk4K,QACM14K,IAArB04K,EAAY13K,GAKhB03K,EAAY13K,GAAO,GAAG80B,OAAO4iJ,EAAY13K,GAAMR,GAJ9Ck4K,EAAY13K,GAAOR,IAgGLiqM,CAAqBn6L,GAGjCxH,EAAM5G,OAAOwgC,OAAO,MAE1B,GAAqB,kBAAVijC,EACV,OAAO78D,EAKR,KAFA68D,EAAQA,EAAMt1C,OAAO3vB,QAAQ,SAAU,KAGtC,OAAOoI,EACP,IAEmC4hM,EAFnCC,EAAArB,EAEmB3jI,EAAMhlE,MAAM,MAAI,IAApC,IAAAgqM,EAAAh9L,MAAA+8L,EAAAC,EAAAtpF,KAAAz7E,MAAsC,KAA3B2pF,EAAKm7E,EAAAlqM,MACf,GAAc,KAAV+uH,EAAJ,CAEC,IAAAq7E,EAEkBnB,EAAan5L,EAAQs5L,OAASr6E,EAAM7uH,QAAQ,MAAO,KAAO6uH,EAAO,KAAIs7E,EAAAx6E,EAAAu6E,EAAA,GAAnF5pM,EAAG6pM,EAAA,GAAErqM,EAAKqqM,EAAA,GAIfrqM,OAAkBR,IAAVQ,EAAsB,KAAO,CAAC,QAAS,YAAa,qBAAqB6kL,SAAS/0K,EAAQ+5L,aAAe7pM,EAAQopM,EAAOppM,EAAO8P,GACvIu1F,EAAU+jG,EAAO5oM,EAAKsP,GAAU9P,EAAOsI,KACvC,MAAA4pG,GAAAi4F,EAAA9lM,EAAA6tG,GAAA,QAAAi4F,EAAA/8L,IAED,IAAK,IAAL5L,EAAA,EAAA8oM,EAAkB5oM,OAAOjB,KAAK6H,GAAI9G,EAAA8oM,EAAAjqM,OAAAmB,IAAE,CAA/B,IAAMhB,EAAG8pM,EAAA9oM,GACPxB,EAAQsI,EAAI9H,GAClB,GAAqB,kBAAVR,GAAgC,OAAVA,EAChC,IAAK,IAALuqM,EAAA,EAAAC,EAAgB9oM,OAAOjB,KAAKT,GAAMuqM,EAAAC,EAAAnqM,OAAAkqM,IAAE,CAA/B,IAAMl9H,EAACm9H,EAAAD,GACXvqM,EAAMqtE,GAAKq8H,EAAW1pM,EAAMqtE,GAAIv9D,QAGjCxH,EAAI9H,GAAOkpM,EAAW1pM,EAAO8P,GAI/B,OAAqB,IAAjBA,EAAQu1E,KACJ/8E,IAGiB,IAAjBwH,EAAQu1E,KAAgB3jF,OAAOjB,KAAK6H,GAAK+8E,OAAS3jF,OAAOjB,KAAK6H,GAAK+8E,KAAKv1E,EAAQu1E,OAAOnY,QAAO,SAAC/qE,EAAQ3B,GAC9G,IAAMR,EAAQsI,EAAI9H,GAQlB,OAPIiqM,QAAQzqM,IAA2B,kBAAVA,IAAuB4B,MAAMC,QAAQ7B,GAEjEmC,EAAO3B,GAAO6oM,EAAWrpM,GAEzBmC,EAAO3B,GAAOR,EAGRmC,IACLT,OAAOwgC,OAAO,OAGlB0d,EAAQ4pJ,QAAUA,EAClB5pJ,EAAQphC,MAAQA,EAEhBohC,EAAQ3S,UAAY,SAACq6B,EAAQx3D,GAC5B,IAAKw3D,EACJ,MAAO,GAUR4hI,GAPAp5L,EAAUpO,OAAO0rE,OAAO,CACvB+7H,QAAQ,EACRvyG,QAAQ,EACRizG,YAAa,OACbC,qBAAsB,KACpBh6L,IAEkCg6L,sBAWrC,IATA,IAAMY,EAAe,SAAAlqM,GAAG,OACtBsP,EAAQ66L,WA9UkC,QAAnB3qM,EA8UesnE,EAAO9mE,UA9UehB,IAAVQ,IA+UlD8P,EAAQ86L,iBAAmC,KAAhBtjI,EAAO9mE,GA/UX,IAAAR,GAkVnBqlG,EAhVP,SAA+Bv1F,GAC9B,OAAQA,EAAQ+5L,aACf,IAAK,QACJ,OAAO,SAAArpM,GAAG,OAAI,SAAC2B,EAAQnC,GACtB,IAAMge,EAAQ7b,EAAO9B,OAErB,YACWb,IAAVQ,GACC8P,EAAQ66L,UAAsB,OAAV3qM,GACpB8P,EAAQ86L,iBAA6B,KAAV5qM,EAErBmC,EAIA,GAAPmzB,OAAAq6E,EAAWxtG,GADE,OAAVnC,EACc,CAAE,CAACmpM,EAAO3oM,EAAKsP,GAAU,IAAKkO,EAAO,KAAK7V,KAAK,KAIvD,CACT,CAACghM,EAAO3oM,EAAKsP,GAAU,IAAKq5L,EAAOnrL,EAAOlO,GAAU,KAAMq5L,EAAOnpM,EAAO8P,IAAU3H,KAAK,QAI1F,IAAK,UACJ,OAAO,SAAA3H,GAAG,OAAI,SAAC2B,EAAQnC,GACtB,YACWR,IAAVQ,GACC8P,EAAQ66L,UAAsB,OAAV3qM,GACpB8P,EAAQ86L,iBAA6B,KAAV5qM,EAErBmC,EAIA,GAAPmzB,OAAAq6E,EAAWxtG,GADE,OAAVnC,EACc,CAAE,CAACmpM,EAAO3oM,EAAKsP,GAAU,MAAM3H,KAAK,KAGrC,CAAE,CAACghM,EAAO3oM,EAAKsP,GAAU,MAAOq5L,EAAOnpM,EAAO8P,IAAU3H,KAAK,QAGhF,IAAK,QACL,IAAK,YACL,IAAK,oBACJ,IAAM0iM,EAAsC,sBAAxB/6L,EAAQ+5L,YAC3B,MACA,IAED,OAAO,SAAArpM,GAAG,OAAI,SAAC2B,EAAQnC,GACtB,YACWR,IAAVQ,GACC8P,EAAQ66L,UAAsB,OAAV3qM,GACpB8P,EAAQ86L,iBAA6B,KAAV5qM,EAErBmC,GAIRnC,EAAkB,OAAVA,EAAiB,GAAKA,EAER,IAAlBmC,EAAO9B,OACH,CAAC,CAAC8oM,EAAO3oM,EAAKsP,GAAU+6L,EAAa1B,EAAOnpM,EAAO8P,IAAU3H,KAAK,KAGnE,CAAC,CAAChG,EAAQgnM,EAAOnpM,EAAO8P,IAAU3H,KAAK2H,EAAQg6L,0BAIxD,QACC,OAAO,SAAAtpM,GAAG,OAAI,SAAC2B,EAAQnC,GACtB,YACWR,IAAVQ,GACC8P,EAAQ66L,UAAsB,OAAV3qM,GACpB8P,EAAQ86L,iBAA6B,KAAV5qM,EAErBmC,EAIA,GAAPmzB,OAAAq6E,EAAWxtG,GADE,OAAVnC,EACc,CAAEmpM,EAAO3oM,EAAKsP,IAGf,CAAE,CAACq5L,EAAO3oM,EAAKsP,GAAU,IAAKq5L,EAAOnpM,EAAO8P,IAAU3H,KAAK,SA8P7D2iM,CAAsBh7L,GAElCi7L,EAAa,GAEnBC,EAAA,EAAAC,EAAkBvpM,OAAOjB,KAAK6mE,GAAO0jI,EAAAC,EAAA5qM,OAAA2qM,IAAE,CAAlC,IAAMxqM,EAAGyqM,EAAAD,GACRN,EAAalqM,KACjBuqM,EAAWvqM,GAAO8mE,EAAO9mE,IAI3B,IAAMC,EAAOiB,OAAOjB,KAAKsqM,GAMzB,OAJqB,IAAjBj7L,EAAQu1E,MACX5kF,EAAK4kF,KAAKv1E,EAAQu1E,MAGZ5kF,EAAKwH,KAAI,SAAAzH,GACf,IAAMR,EAAQsnE,EAAO9mE,GAErB,YAAchB,IAAVQ,EACI,GAGM,OAAVA,EACImpM,EAAO3oM,EAAKsP,GAGhBlO,MAAMC,QAAQ7B,GACI,IAAjBA,EAAMK,QAAwC,sBAAxByP,EAAQ+5L,YAC1BV,EAAO3oM,EAAKsP,GAAW,KAGxB9P,EACLktE,OAAOm4B,EAAU7kG,GAAM,IACvB2H,KAAK,KAGDghM,EAAO3oM,EAAKsP,GAAW,IAAMq5L,EAAOnpM,EAAO8P,MAChD4kB,QAAO,SAAA3P,GAAC,OAAIA,EAAE1kB,OAAS,KAAG8H,KAAK,MAGnCy3C,EAAQsrJ,SAAW,SAAC9kL,EAAKtW,GACxBA,EAAUpO,OAAO0rE,OAAO,CACvBg8H,QAAQ,GACNt5L,GAAS,IAAAq7L,EAESlC,EAAa7iL,EAAK,KAAIglL,EAAAv7E,EAAAs7E,EAAA,GAApCE,EAAID,EAAA,GAAEz+J,EAAIy+J,EAAA,GAEjB,OAAO1pM,OAAO0rE,OACb,CACChnD,IAAKilL,EAAKlrM,MAAM,KAAK,IAAM,GAC3BglE,MAAO3mD,EAAMgrL,EAAQpjL,GAAMtW,IAE5BA,GAAWA,EAAQw7L,yBAA2B3+J,EAAO,CAAC4+J,mBAAoBnC,EAAOz8J,EAAM78B,IAAY,KAIrG8vC,EAAQ4rJ,aAAe,SAAClkI,EAAQx3D,GAC/BA,EAAUpO,OAAO0rE,OAAO,CACvB+7H,QAAQ,EACRvyG,QAAQ,GACN9mF,GAEH,IAAMsW,EAAMkjL,EAAWhiI,EAAOlhD,KAAKjmB,MAAM,KAAK,IAAM,GAC9CsrM,EAAe7rJ,EAAQ4pJ,QAAQliI,EAAOlhD,KACtCslL,EAAqB9rJ,EAAQphC,MAAMitL,EAAc,CAACpmH,MAAM,IAExDlgB,EAAQzjE,OAAO0rE,OAAOs+H,EAAoBpkI,EAAOnC,OACnDwvF,EAAc/0G,EAAQ3S,UAAUk4B,EAAOr1D,GACvC6kJ,IACHA,EAAc,IAAHr/H,OAAOq/H,IAGnB,IAAIhoH,EAjML,SAAiBvmB,GAChB,IAAIumB,EAAO,GACL48J,EAAYnjL,EAAIzkB,QAAQ,KAK9B,OAJmB,IAAf4nM,IACH58J,EAAOvmB,EAAIvhB,MAAM0kM,IAGX58J,EA0LIg/J,CAAQrkI,EAAOlhD,KAK1B,OAJIkhD,EAAOikI,qBACV5+J,EAAO,IAAHrX,OAAO6zK,EAAO7hI,EAAOikI,mBAAoBz7L,KAGvC,GAAPwlB,OAAUlP,GAAGkP,OAAGq/H,GAAWr/H,OAAGqX,IAG/BiT,EAAQk8H,KAAO,SAACt3G,EAAO9vC,EAAQ5kB,GAC9BA,EAAUpO,OAAO0rE,OAAO,CACvBk+H,yBAAyB,GACvBx7L,GAAS,IAAA87L,EAE6BhsJ,EAAQsrJ,SAAS1mI,EAAO10D,GAA1DsW,EAAGwlL,EAAHxlL,IAAK++C,EAAKymI,EAALzmI,MAAOomI,EAAkBK,EAAlBL,mBACnB,OAAO3rJ,EAAQ4rJ,aAAa,CAC3BplL,MACA++C,MAAOa,EAAab,EAAOzwC,GAC3B62K,sBACEz7L,IAGJ8vC,EAAQkgB,QAAU,SAAC0E,EAAO9vC,EAAQ5kB,GACjC,IAAM+7L,EAAkBjqM,MAAMC,QAAQ6yB,GAAU,SAAAl0B,GAAG,OAAKk0B,EAAOmwJ,SAASrkL,IAAO,SAACA,EAAKR,GAAK,OAAM00B,EAAOl0B,EAAKR,IAE5G,OAAO4/C,EAAQk8H,KAAKt3G,EAAOqnI,EAAiB/7L,K,kFCpboBg4B,EAAO8X,QAGhE,WAAc,aAEpB,IAAMksJ,EAAgBpqM,OAAOmpI,OAAO,CAClCtkH,OAAQ,SACRwlL,SAAU,WACVlmM,MAAO,QACPmmM,IAAK,MACLl6H,MAAO,UAGHm6H,EAAgB,eAMhBC,EAAc,SAAA90K,GAGlB,IAFA,IAAMj1B,EAAS,GAEN/B,EAAI,EAAGA,EAAIg3B,EAAI/2B,OAAQD,KACE,IAA5B+B,EAAOR,QAAQy1B,EAAIh3B,KACrB+B,EAAOiD,KAAKgyB,EAAIh3B,IAIpB,OAAO+B,GAOHgqM,EAAwB,SAAAjkM,GAAG,OAAIA,EAAIiiG,OAAO,GAAGnvF,cAAgB9S,EAAIrD,MAAM,IAMvEyvH,EAAU,SAAA83E,GAAQ,OAAIxqM,MAAMlC,UAAUmF,MAAMC,KAAKsnM,IAMjDC,EAAO,SAAAloM,GACXs6G,QAAQ4tF,KAAK,GAAG/2K,OAAO22K,EAAe,KAAK32K,OAA0B,kBAAZnxB,EAAuBA,EAAQgE,KAAK,KAAOhE,KAOhG8jB,EAAQ,SAAA9jB,GACZs6G,QAAQx2F,MAAM,GAAGqN,OAAO22K,EAAe,KAAK32K,OAAOnxB,KAQ/CmoM,EAA2B,GAM3BC,EAAW,SAAApoM,GACVmoM,EAAyBznB,SAAS1gL,KACrCmoM,EAAyBlnM,KAAKjB,GAC9BkoM,EAAKloM,KAOHqoM,EAAuB,SAACC,EAAiBC,GAC7CH,EAAS,IAAKj3K,OAAOm3K,EAAiB,+EAAiFn3K,OAAOo3K,EAAY,gBAQtIC,EAAiB,SAAAjkK,GAAG,MAAmB,oBAARA,EAAqBA,IAAQA,GAC5DkkK,EAAiB,SAAAlkK,GAAG,OAAIA,GAAgC,oBAAlBA,EAAImkK,WAC1CC,EAAY,SAAApkK,GAAG,OAAIkkK,EAAelkK,GAAOA,EAAImkK,YAAcpmL,QAAQC,QAAQgiB,IAC3EqkK,EAAY,SAAArkK,GAAG,OAAIA,GAAOjiB,QAAQC,QAAQgiB,KAASA,GAEnDskK,EAAkB,SAAAnmM,GAAI,MAAoB,kBAATA,GAAqBA,EAAKomM,QAE3DxJ,EAAY,SAAA58L,GAAI,OAAIA,aAAgBqmM,SAAWF,EAAgBnmM,IAE/DsmM,EAAe,SAAA1pM,GACnB,IAAMpE,EAAS,GAgBf,MAduB,kBAAZoE,EAAK,IAAoBggM,EAAUhgM,EAAK,IAGjD,CAAC,QAAS,OAAQ,QAAQjB,SAAQ,SAACob,EAAMI,GACvC,IAAM0qB,EAAMjlC,EAAKua,GAEE,kBAAR0qB,GAAoB+6J,EAAU/6J,GACvCrpC,EAAOue,GAAQ8qB,OACElpC,IAARkpC,GACTzgB,EAAM,sBAAsBqN,OAAO1X,EAAM,0CAA8C0X,cAAcoT,OARzGhnC,OAAO0rE,OAAO/tE,EAAQoE,EAAK,IAatBpE,GAGH+tM,EAAa,SACbh2L,EAAS,SAAAmgE,GACb,IAAMp1E,EAAS,GAEf,IAAK,IAAM/B,KAAKm3E,EACdp1E,EAAOo1E,EAAMn3E,IAAMgtM,EAAa71H,EAAMn3E,GAGxC,OAAO+B,GAEHkrM,EAAcj2L,EAAO,CAAC,YAAa,QAAS,cAAe,SAAU,QAAS,QAAS,cAAe,gBAAiB,QAAS,cAAe,OAAQ,OAAQ,QAAS,QAAS,iBAAkB,UAAW,UAAW,OAAQ,SAAU,kBAAmB,SAAU,OAAQ,eAAgB,QAAS,QAAS,OAAQ,QAAS,SAAU,QAAS,WAAY,QAAS,WAAY,aAAc,cAAe,qBAAsB,iBAAkB,uBAAwB,gBAAiB,qBAAsB,SAAU,UAAW,SAAU,MAAO,YAAa,UAAW,WAAY,YAAa,SAAU,eAAgB,aAAc,cAAe,eAAgB,SAAU,eAAgB,aAAc,cAAe,eAAgB,WAAY,cAAe,kBAAmB,MAAO,qBAAsB,+BAAgC,oBAAqB,eAAgB,eAAgB,YAAa,gBAAiB,eAC95Bk2L,EAAYl2L,EAAO,CAAC,UAAW,UAAW,OAAQ,WAAY,UAE9Dm2L,EAAe,WAAH,OAASvpM,SAASgiC,KAAKl/B,cAAc,IAAIwuB,OAAO+3K,EAAY/0G,aACxEk1G,EAAoB,SAAAC,GACxB,IAAMn1G,EAAYi1G,IAClB,OAAOj1G,EAAYA,EAAUxxF,cAAc2mM,GAAkB,MAGzDC,EAAiB,SAAA77K,GACrB,OAAO27K,EAAkB,IAAIl4K,OAAOzD,KAGhC87K,EAAW,WAAH,OAASD,EAAeL,EAAYrsI,QAC5C4sI,EAAU,WAAH,OAASF,EAAeL,EAAY34F,OAC3Cm5F,EAAW,WAAH,OAASH,EAAeL,EAAYziD,QAC5CkjD,EAAmB,WAAH,OAASJ,EAAeL,EAAY,oBACpDU,EAAW,WAAH,OAASL,EAAeL,EAAYt4F,QAC5Ci5F,EAAmB,WAAH,OAASN,EAAeL,EAAY,oBACpDY,EAAuB,WAAH,OAASP,EAAeL,EAAY,wBACxDa,EAAmB,WAAH,OAASV,EAAkB,IAAIl4K,OAAO+3K,EAAY1tD,QAAS,MAAMrqH,OAAO+3K,EAAYpqF,WACpGkrF,EAAgB,WAAH,OAASX,EAAkB,IAAIl4K,OAAO+3K,EAAY1tD,QAAS,MAAMrqH,OAAO+3K,EAAYe,QACjGC,EAAgB,WAAH,OAASX,EAAeL,EAAY,iBACjDiB,EAAY,WAAH,OAASd,EAAkB,IAAIl4K,OAAO+3K,EAAYkB,UAC3DC,EAAkB,WAAH,OAAShB,EAAkB,IAAIl4K,OAAO+3K,EAAY1tD,QAAS,MAAMrqH,OAAO+3K,EAAY9mL,UACnGkoL,EAAa,WAAH,OAASf,EAAeL,EAAY1tD,UAC9C+uD,EAAY,WAAH,OAAShB,EAAeL,EAAYrsH,SAC7C2tH,EAAsB,WAAH,OAASjB,EAAeL,EAAY,wBACvDuB,EAAiB,WAAH,OAASlB,EAAeL,EAAYxnM,QAElDgpM,EAAY,yQACZC,EAAuB,WAC3B,IAAMC,EAAgCz6E,EAAQq5E,IAAW3oM,iBAAiB,wDACzEqgF,MAAK,SAAC94E,EAAGpB,GAIR,OAHAoB,EAAIoN,SAASpN,EAAEomB,aAAa,eAC5BxnB,EAAIwO,SAASxO,EAAEwnB,aAAa,cAGnB,EACEpmB,EAAIpB,GACL,EAGH,KAEH6jM,EAAyB16E,EAAQq5E,IAAW3oM,iBAAiB6pM,IAAYn6K,QAAO,SAAA2G,GAAE,MAAoC,OAAhCA,EAAG1I,aAAa,eAC5G,OAAOu5K,EAAY6C,EAA8Bz5K,OAAO05K,IAAyBt6K,QAAO,SAAA2G,GAAE,OAAItB,GAAUsB,OAEpG4zK,EAAU,WACd,OAAQC,MAAclrM,SAASgiC,KAAKxM,UAAUzD,SAASs3K,EAAY,iBAE/D6B,EAAU,WACd,OAAOlrM,SAASgiC,KAAKxM,UAAUzD,SAASs3K,EAAY,iBAEhD8B,EAAY,WAChB,OAAOxB,IAAWhuJ,aAAa,iBAG3ByvJ,EAAS,CACbC,oBAAqB,MAEjBC,EAAe,SAACzoM,EAAM0oM,GAI1B,GAFA1oM,EAAKgzF,YAAc,GAEf01G,EAAM,CACR,IACM/hD,GADS,IAAIgiD,WACGC,gBAAgBF,EAAM,aAC5Cj7E,EAAQk5B,EAAO1mJ,cAAc,QAAQgrB,YAAYtvB,SAAQ,SAAAsB,GACvD+C,EAAKrB,YAAY1B,MAEnBwwH,EAAQk5B,EAAO1mJ,cAAc,QAAQgrB,YAAYtvB,SAAQ,SAAAsB,GACvD+C,EAAKrB,YAAY1B,QAIjB4rM,GAAW,SAAC7oM,EAAMgrB,GACtB,IAAKA,EACH,OAAO,EAKT,IAFA,IAAM2H,EAAY3H,EAAU1xB,MAAM,OAEzBC,EAAI,EAAGA,EAAIo5B,EAAUn5B,OAAQD,IACpC,IAAKyG,EAAK2yB,UAAUzD,SAASyD,EAAUp5B,IACrC,OAAO,EAIX,OAAO,GAGHuvM,GAAsB,SAAC9oM,EAAMxH,GACjCi1H,EAAQztH,EAAK2yB,WAAWh3B,SAAQ,SAAAqvB,GACzBnwB,OAAOq+D,OAAOstI,GAAaxoB,SAAShzJ,IAAenwB,OAAOq+D,OAAOutI,GAAWzoB,SAAShzJ,IAAenwB,OAAOq+D,OAAO1gE,EAAOuwM,WAAW/qB,SAAShzJ,IAChJhrB,EAAK2yB,UAAUvM,OAAO4E,OAKtBg+K,GAAmB,SAAChpM,EAAMxH,EAAQwyB,GAGtC,GAFA89K,GAAoB9oM,EAAMxH,GAEtBA,EAAOywM,aAAezwM,EAAOywM,YAAYj+K,GAAY,CACvD,GAA6C,kBAAlCxyB,EAAOywM,YAAYj+K,KAA4BxyB,EAAOywM,YAAYj+K,GAAWrvB,QACtF,OAAO6pM,EAAK,+BAA+B/2K,OAAOzD,EAAW,+CAAgDyD,cAAcj2B,EAAOywM,YAAYj+K,GAAY,MAG5JwH,GAASxyB,EAAMxH,EAAOywM,YAAYj+K,MAGhCk+K,GAAW,SAAC/uI,EAAOgvI,GACvB,IAAKA,EACH,OAAO,KAGT,OAAQA,GACN,IAAK,SACL,IAAK,WACL,IAAK,OACH,OAAOC,GAAgBjvI,EAAOqsI,EAAY2C,IAE5C,IAAK,WACH,OAAOhvI,EAAMl6D,cAAc,IAAIwuB,OAAO+3K,EAAY78C,SAAU,WAE9D,IAAK,QACH,OAAOxvF,EAAMl6D,cAAc,IAAIwuB,OAAO+3K,EAAY6C,MAAO,oBAAsBlvI,EAAMl6D,cAAc,IAAIwuB,OAAO+3K,EAAY6C,MAAO,uBAEnI,IAAK,QACH,OAAOlvI,EAAMl6D,cAAc,IAAIwuB,OAAO+3K,EAAYr3L,MAAO,WAE3D,QACE,OAAOi6L,GAAgBjvI,EAAOqsI,EAAY7oI,SAG1C2rI,GAAa,SAAA3rI,GAGjB,GAFAA,EAAM1+D,QAEa,SAAf0+D,EAAM71D,KAAiB,CAEzB,IAAMlG,EAAM+7D,EAAMxkE,MAClBwkE,EAAMxkE,MAAQ,GACdwkE,EAAMxkE,MAAQyI,IAGZ2nM,GAAc,SAAC3vK,EAAQjH,EAAW89C,GACjC72C,GAAWjH,IAIS,kBAAdA,IACTA,EAAYA,EAAUr5B,MAAM,OAAOu0B,OAAO+1K,UAG5CjxK,EAAUh3B,SAAQ,SAAAqvB,GACZ4O,EAAOj+B,QACTi+B,EAAOj+B,SAAQ,SAAAqE,GACbywE,EAAYzwE,EAAK2yB,UAAUjN,IAAIsF,GAAahrB,EAAK2yB,UAAUvM,OAAO4E,MAGpEylD,EAAY72C,EAAOjH,UAAUjN,IAAIsF,GAAa4O,EAAOjH,UAAUvM,OAAO4E,QAItEwH,GAAW,SAACoH,EAAQjH,GACxB42K,GAAY3vK,EAAQjH,GAAW,IAE3BI,GAAc,SAAC6G,EAAQjH,GAC3B42K,GAAY3vK,EAAQjH,GAAW,IAE3By2K,GAAkB,SAACppM,EAAMgrB,GAC7B,IAAK,IAAIzxB,EAAI,EAAGA,EAAIyG,EAAKirB,WAAWzxB,OAAQD,IAC1C,GAAIsvM,GAAS7oM,EAAKirB,WAAW1xB,GAAIyxB,GAC/B,OAAOhrB,EAAKirB,WAAW1xB,IAIvBiwM,GAAsB,SAACxpM,EAAMkW,EAAU/c,GACvCA,IAAU,GAAGs1B,OAAO3b,SAAS3Z,MAC/BA,EAAQ2Z,SAAS3Z,IAGfA,GAA6B,IAApB2Z,SAAS3Z,GACpB6G,EAAK2wB,MAAMza,GAA6B,kBAAV/c,EAAqB,GAAGs1B,OAAOt1B,EAAO,MAAQA,EAE5E6G,EAAK2wB,MAAM0sG,eAAennH,IAGxBikH,GAAO,SAACn6H,GAA2B,IAArBoxC,EAAO71C,UAAA/B,OAAA,QAAAb,IAAA4C,UAAA,GAAAA,UAAA,GAAG,OAC5ByE,EAAK2wB,MAAMygB,QAAUA,GAEjB8mF,GAAO,SAAAl4H,GACXA,EAAK2wB,MAAMygB,QAAU,QAEjBq4J,GAAW,SAACvsM,EAAQywB,EAAUzX,EAAU/c,GAC5C,IAAMq7B,EAAKt3B,EAAO+C,cAAc0tB,GAE5B6G,IACFA,EAAG7D,MAAMza,GAAY/c,IAGnBuwM,GAAS,SAAC1pM,EAAMywE,EAAWr/B,GAC/Bq/B,EAAY0pD,GAAKn6H,EAAMoxC,GAAW8mF,GAAKl4H,IAGnCkzB,GAAY,SAAAlzB,GAAI,SAAOA,KAASA,EAAKozB,aAAepzB,EAAKusC,cAAgBvsC,EAAK2pM,iBAAiBnwM,UAC/FowM,GAAsB,WAAH,OAAU12K,GAAUm0K,OAAwBn0K,GAAUo0K,OAAqBp0K,GAAUy0K,MACxGjxJ,GAAe,SAAA12C,GAAI,SAAOA,EAAKovC,aAAepvC,EAAK89I,eAEnD+rD,GAAkB,SAAA7pM,GACtB,IAAM2wB,EAAQlyB,OAAOwhC,iBAAiBjgC,GAChC8pM,EAAep0L,WAAWib,EAAMuP,iBAAiB,uBAAyB,KAC1E6pK,EAAgBr0L,WAAWib,EAAMuP,iBAAiB,wBAA0B,KAClF,OAAO4pK,EAAe,GAAKC,EAAgB,GAEvCC,GAA0B,SAAC/+H,GAAyB,IAAlB/6B,EAAK30C,UAAA/B,OAAA,QAAAb,IAAA4C,UAAA,IAAAA,UAAA,GACrC0uM,EAAmBnC,IAErB50K,GAAU+2K,KACR/5J,IACF+5J,EAAiBt5K,MAAMu5K,WAAa,OACpCD,EAAiBt5K,MAAM0b,MAAQ,QAGjCtvC,YAAW,WACTktM,EAAiBt5K,MAAMu5K,WAAa,SAASz7K,OAAOw8C,EAAQ,IAAM,YAClEg/H,EAAiBt5K,MAAM0b,MAAQ,OAC9B,MAGD89J,GAAuB,WAC3B,IAAMF,EAAmBnC,IACnBsC,EAAwBt3L,SAASrU,OAAOwhC,iBAAiBgqK,GAAkB59J,OACjF49J,EAAiBt5K,MAAM0sG,eAAe,cACtC4sE,EAAiBt5K,MAAM0b,MAAQ,OAC/B,IAAMg+J,EAA4Bv3L,SAASrU,OAAOwhC,iBAAiBgqK,GAAkB59J,OAC/Ei+J,EAA0Bx3L,SAASs3L,EAAwBC,EAA4B,KAC7FJ,EAAiBt5K,MAAM0sG,eAAe,cACtC4sE,EAAiBt5K,MAAM0b,MAAQ,GAAG5d,OAAO67K,EAAyB,MAI9DC,GAAY,WAAH,MAA2B,qBAAX9rM,QAA8C,qBAAbtB,UAE1DqtM,GAAY,4BAA6B/7K,OAAO+3K,EAAYziD,MAAO,wBAA0Bt1H,OAAO+3K,EAAY,kBAAmB,aAAe/3K,OAAO+3K,EAAYrsI,MAAO,sDAA4D1rC,OAAO+3K,EAAYxnM,MAAO,+BAAiCyvB,OAAO+3K,EAAY,kBAAmB,4BAA8B/3K,OAAO+3K,EAAY34F,KAAM,6BAA+Bp/E,OAAO+3K,EAAYt4F,MAAO,wBAA0Bz/E,OAAO+3K,EAAYziD,MAAO,UAAYt1H,OAAO+3K,EAAYziD,MAAO,4BAA8Bt1H,OAAO+3K,EAAY,kBAAmB,UAAY/3K,OAAO+3K,EAAY,kBAAmB,+BAAiC/3K,OAAO+3K,EAAY7oI,MAAO,uCAA2ClvC,OAAO+3K,EAAYiE,KAAM,yBAA2Bh8K,OAAO+3K,EAAYr3L,MAAO,0FAA8Fsf,OAAO+3K,EAAYzyK,OAAQ,gCAAkCtF,OAAO+3K,EAAY6C,MAAO,6BAA+B56K,OAAO+3K,EAAY78C,SAAU,aAAel7H,OAAO+3K,EAAY78C,SAAU,0DAA8Dl7H,OAAO+3K,EAAYp0H,MAAO,gDAAkD3jD,OAAO+3K,EAAYkE,SAAU,kCAAoCj8K,OAAO+3K,EAAY,sBAAuB,UAAY/3K,OAAO+3K,EAAY,sBAAuB,6BAA+B/3K,OAAO+3K,EAAY1tD,QAAS,yBAA2BrqH,OAAO+3K,EAAYkB,OAAQ,gDAAoDj5K,OAAO+3K,EAAYpqF,QAAS,mDAAuD3tF,OAAO+3K,EAAYe,KAAM,mDAAuD94K,OAAO+3K,EAAY9mL,OAAQ,2CAA6C+O,OAAO+3K,EAAYrsH,OAAQ,6BAA+B1rD,OAAO+3K,EAAY,gCAAiC,yBAA2B/3K,OAAO+3K,EAAY,sBAAuB,kCAAmCntM,QAAQ,aAAc,IAEjgEsxM,GAAoB,WACxB,IAAMC,EAAelE,IAErB,QAAKkE,IAILA,EAAaxkL,SACb2M,GAAY,CAAC51B,SAASqiC,gBAAiBriC,SAASgiC,MAAO,CAACqnK,EAAY,eAAgBA,EAAY,eAAgBA,EAAY,iBACrH,IAGHqE,GAAyB,WACzBC,GAAK53K,aACP43K,GAAKD,0BAIHE,GAA0B,WAC9B,IAAM5wI,EAAQ2sI,IACRnpI,EAAQyrI,GAAgBjvI,EAAOqsI,EAAY7oI,OAC3C8sI,EAAOrB,GAAgBjvI,EAAOqsI,EAAYiE,MAC1Ct7L,EAAQgrD,EAAMl6D,cAAc,IAAIwuB,OAAO+3K,EAAYr3L,MAAO,WAC1D67L,EAAc7wI,EAAMl6D,cAAc,IAAIwuB,OAAO+3K,EAAYr3L,MAAO,YAChE4kB,EAASq1K,GAAgBjvI,EAAOqsI,EAAYzyK,QAC5C41H,EAAWxvF,EAAMl6D,cAAc,IAAIwuB,OAAO+3K,EAAY78C,SAAU,WAChE+gD,EAAWtB,GAAgBjvI,EAAOqsI,EAAYkE,UACpD/sI,EAAMstI,QAAUJ,GAChBJ,EAAK7jC,SAAWikC,GAChB92K,EAAO6yI,SAAWikC,GAClBlhD,EAASid,SAAWikC,GACpBH,EAASO,QAAUJ,GAEnB17L,EAAM87L,QAAU,WACdJ,KACAG,EAAY7xM,MAAQgW,EAAMhW,OAG5BgW,EAAMy3J,SAAW,WACfikC,KACA17L,EAAM+7L,YAAY/xM,MAAQgW,EAAMhW,QAI9BgyM,GAAY,SAAAvxK,GAAM,MAAsB,kBAAXA,EAAsBz8B,SAAS8C,cAAc25B,GAAUA,GAEpFwxK,GAAqB,SAAA5yM,GACzB,IAAM2hE,EAAQ2sI,IACd3sI,EAAM5nC,aAAa,OAAQ/5B,EAAO6yM,MAAQ,QAAU,UACpDlxI,EAAM5nC,aAAa,YAAa/5B,EAAO6yM,MAAQ,SAAW,aAErD7yM,EAAO6yM,OACVlxI,EAAM5nC,aAAa,aAAc,SAI/B+4K,GAAW,SAAAhwC,GAC0C,QAArD78J,OAAOwhC,iBAAiBq7H,GAAep/D,WACzC1pE,GAASk0K,IAAgBF,EAAYjwC,MAQnCg1C,GAAO,SAAA/yM,GAEX,IAAMgzM,EAAsBb,KAG5B,GAAIJ,KACFnpL,EAAM,mDADR,CAKA,IAAMqwE,EAAYt0F,SAASW,cAAc,OACzC2zF,EAAUzmE,UAAYw7K,EAAY/0G,UAE9B+5G,GACFh5K,GAASi/D,EAAW+0G,EAAY,kBAGlCiC,EAAah3G,EAAW+4G,IACxB,IAAMlvC,EAAgB6vC,GAAU3yM,EAAOohC,QACvC0hI,EAAc38J,YAAY8yF,GAC1B25G,GAAmB5yM,GACnB8yM,GAAShwC,GACTyvC,OAGIU,GAAuB,SAACvjF,EAAOtuF,GAE/BsuF,aAAiBwjF,YACnB9xK,EAAOj7B,YAAYupH,GACO,kBAAVA,EAChByjF,GAAazjF,EAAOtuF,GACXsuF,GACTugF,EAAa7uK,EAAQsuF,IAInByjF,GAAe,SAACzjF,EAAOtuF,GAEvBsuF,EAAMk+E,OACRwF,GAAiBhyK,EAAQsuF,GAEzBugF,EAAa7uK,EAAQsuF,EAAMp+G,aAIzB8hM,GAAmB,SAAChyK,EAAQ55B,GAGhC,GAFA45B,EAAOo5D,YAAc,GAEjB,KAAKhzF,EACP,IAAK,IAAIzG,EAAI,EAAIA,KAAKyG,EAAOzG,IAC3BqgC,EAAOj7B,YAAYqB,EAAKzG,GAAGqF,WAAU,SAGvCg7B,EAAOj7B,YAAYqB,EAAKpB,WAAU,KAIhCitM,GAAqB,WAIzB,GAAItB,KACF,OAAO,EAGT,IAAMuB,EAAS3uM,SAASW,cAAc,OAChCiuM,EAAqB,CACzBC,gBAAiB,qBACjBC,WAAY,8BACZlvK,UAAW,gBAGb,IAAK,IAAMxjC,KAAKwyM,EACd,GAAIlxM,OAAOhC,UAAUsD,eAAe8B,KAAK8tM,EAAoBxyM,IAAiC,qBAApBuyM,EAAOn7K,MAAMp3B,GACrF,OAAOwyM,EAAmBxyM,GAI9B,OAAO,EArBkB,GA0BrB2yM,GAAmB,WACvB,IAAM3sE,EAAYpiI,SAASW,cAAc,OACzCyhI,EAAUv0G,UAAYw7K,EAAY,qBAClCrpM,SAASgiC,KAAKxgC,YAAY4gI,GAC1B,IAAM4sE,EAAiB5sE,EAAUvgG,wBAAwBqN,MAAQkzF,EAAUhkE,YAE3E,OADAp+D,SAASgiC,KAAKtL,YAAY0rG,GACnB4sE,GAGHC,GAAgB,SAACz0K,EAAUn/B,GAC/B,IAAMsgJ,EAAU8uD,IACVF,EAASD,IACT4E,EAAgBhF,IAChBiF,EAAahF,IACbiF,EAAe5E,IAEhBnvM,EAAOg0M,mBAAsBh0M,EAAOi0M,gBAAmBj0M,EAAOk0M,iBAGjEvyE,GAAK2e,GAFL5gB,GAAK4gB,GAMPkwD,GAAiBlwD,EAAStgJ,EAAQ,WAElCm0M,GAAaN,EAAe,UAAW7zM,GACvCm0M,GAAaL,EAAY,OAAQ9zM,GACjCm0M,GAAaJ,EAAc,SAAU/zM,GACrCo0M,GAAqBP,EAAeC,EAAYC,EAAc/zM,GAE1DA,EAAOq0M,iBACT/zD,EAAQtlH,aAAa+4K,EAAc7E,GACnC5uD,EAAQtlH,aAAa84K,EAAY5E,GACjC5uD,EAAQtlH,aAAa64K,EAAe3E,IAItCe,EAAaf,EAAQlvM,EAAOs0M,YAC5B9D,GAAiBtB,EAAQlvM,EAAQ,WAGnC,SAASo0M,GAAqBP,EAAeC,EAAYC,EAAc/zM,GACrE,IAAKA,EAAOu0M,eACV,OAAOh6K,GAAY,CAACs5K,EAAeC,EAAYC,GAAe/F,EAAYwG,QAG5Ex6K,GAAS,CAAC65K,EAAeC,EAAYC,GAAe/F,EAAYwG,QAE5Dx0M,EAAOy0M,qBACTZ,EAAc17K,MAAM0hD,gBAAkB75E,EAAOy0M,mBAC7Cz6K,GAAS65K,EAAe7F,EAAY,qBAGlChuM,EAAO00M,kBACTZ,EAAW37K,MAAM0hD,gBAAkB75E,EAAO00M,gBAC1C16K,GAAS85K,EAAY9F,EAAY,qBAG/BhuM,EAAO20M,oBACTZ,EAAa57K,MAAM0hD,gBAAkB75E,EAAO20M,kBAC5C36K,GAAS+5K,EAAc/F,EAAY,qBAIvC,SAASmG,GAAap+G,EAAQ6+G,EAAY50M,GACxCkxM,GAAOn7G,EAAQ/1F,EAAO,OAAOi2B,OAAO62K,EAAsB8H,GAAa,WAAY,gBACnF3E,EAAal6G,EAAQ/1F,EAAO,GAAGi2B,OAAO2+K,EAAY,gBAElD7+G,EAAOh8D,aAAa,aAAc/5B,EAAO,GAAGi2B,OAAO2+K,EAAY,qBAG/D7+G,EAAOvjE,UAAYw7K,EAAY4G,GAC/BpE,GAAiBz6G,EAAQ/1F,EAAQ,GAAGi2B,OAAO2+K,EAAY,WACvD56K,GAAS+7D,EAAQ/1F,EAAO,GAAGi2B,OAAO2+K,EAAY,iBAGhD,SAASC,GAAoB57G,EAAWyzG,GACd,kBAAbA,EACTzzG,EAAU9gE,MAAM28K,WAAapI,EACnBA,GACV1yK,GAAS,CAACr1B,SAASqiC,gBAAiBriC,SAASgiC,MAAOqnK,EAAY,gBAIpE,SAAS+G,GAAoB97G,EAAW/mD,GAClCA,KAAY87J,EACdh0K,GAASi/D,EAAW+0G,EAAY97J,KAEhC86J,EAAK,iEACLhzK,GAASi/D,EAAW+0G,EAAYgH,SAIpC,SAASC,GAAgBh8G,EAAWi8G,GAClC,GAAIA,GAAwB,kBAATA,EAAmB,CACpC,IAAMC,EAAY,QAAQl/K,OAAOi/K,GAE7BC,KAAanH,GACfh0K,GAASi/D,EAAW+0G,EAAYmH,KAKtC,IAAMC,GAAkB,SAACj2K,EAAUn/B,GACjC,IAAMi5F,EAAYi1G,IAEbj1G,IAIL47G,GAAoB57G,EAAWj5F,EAAO0sM,UACtCqI,GAAoB97G,EAAWj5F,EAAOkyC,UACtC+iK,GAAgBh8G,EAAWj5F,EAAOk1M,MAElC1E,GAAiBv3G,EAAWj5F,EAAQ,eAYlCq1M,GAAe,CACjBv2L,QAAS,IAAIqgK,QACbm2B,YAAa,IAAIn2B,QACjBo2B,SAAU,IAAIp2B,SAGVq2B,GAAa,CAAC,QAAS,OAAQ,QAAS,SAAU,QAAS,WAAY,YACvEC,GAAc,SAACt2K,EAAUn/B,GAC7B,IAAM2hE,EAAQ2sI,IACRgH,EAAcD,GAAaC,YAAYxpL,IAAIqT,GAC3Cu2K,GAAYJ,GAAet1M,EAAOmlE,QAAUmwI,EAAYnwI,MAC9DqwI,GAAWryM,SAAQ,SAAAwtM,GACjB,IAAMgF,EAAa3H,EAAY2C,GACzB31G,EAAiB41G,GAAgBjvI,EAAOg0I,GAE9CxtG,GAAcwoG,EAAW3wM,EAAO41M,iBAEhC56G,EAAexoE,UAAYmjL,EAEvBD,GACFh2E,GAAK1kC,MAILh7F,EAAOmlE,QACLuwI,GACFG,GAAU71M,GAIZ81M,GAAe91M,KAIb61M,GAAY,SAAA71M,GAChB,IAAK+1M,GAAgB/1M,EAAOmlE,OAC1B,OAAOv8C,EAAM,qJAA4KqN,OAAOj2B,EAAOmlE,MAAO,MAGhN,IAAM61B,EAAiBg7G,GAAkBh2M,EAAOmlE,OAC1CA,EAAQ4wI,GAAgB/1M,EAAOmlE,OAAO61B,EAAgBh7F,GAC5D2hI,GAAKx8D,GAEL5gE,YAAW,WACTusM,GAAW3rI,OAITg2B,GAAmB,SAAAh2B,GACvB,IAAK,IAAIpkE,EAAI,EAAGA,EAAIokE,EAAMztC,WAAW12B,OAAQD,IAAK,CAChD,IAAMk1M,EAAW9wI,EAAMztC,WAAW32B,GAAGwd,KAEhC,CAAC,OAAQ,QAAS,SAASinK,SAASywB,IACvC9wI,EAAM3gC,gBAAgByxK,KAKtB9tG,GAAgB,SAACwoG,EAAWiF,GAChC,IAAMzwI,EAAQurI,GAASpC,IAAYqC,GAEnC,GAAKxrI,EAML,IAAK,IAAM9kB,KAFX86C,GAAiBh2B,GAEEywI,EACjBzwI,EAAMprC,aAAasmB,EAAMu1J,EAAgBv1J,KAIvCy1J,GAAiB,SAAA91M,GACrB,IAAMg7F,EAAiBg7G,GAAkBh2M,EAAOmlE,OAE5CnlE,EAAOywM,aACTz2K,GAASghE,EAAgBh7F,EAAOywM,YAAYtrI,QAI1C+wI,GAAsB,SAAC/wI,EAAOnlE,GAC7BmlE,EAAMm0B,cAAet5F,EAAOm2M,mBAC/BhxI,EAAMm0B,YAAct5F,EAAOm2M,mBAIzBC,GAAgB,SAACjxI,EAAOkxI,EAAWr2M,GACvC,GAAIA,EAAOs2M,WAAY,CACrBnxI,EAAMvnD,GAAKowL,EAAY7oI,MACvB,IAAMyU,EAAQj1E,SAASW,cAAc,SAC/BixM,EAAavI,EAAY,eAC/Bp0H,EAAM7/C,aAAa,MAAOorC,EAAMvnD,IAChCg8D,EAAMpnD,UAAY+jL,EAClBv8K,GAAS4/C,EAAO55E,EAAOywM,YAAY6F,YACnC18H,EAAM2f,UAAYv5F,EAAOs2M,WACzBD,EAAU56G,sBAAsB,cAAe7hB,KAI7Co8H,GAAoB,SAAArF,GACxB,IAAMgF,EAAa3H,EAAY2C,GAAa3C,EAAY2C,GAAa3C,EAAY7oI,MACjF,OAAOyrI,GAAgBtC,IAAYqH,IAG/BI,GAAkB,GAExBA,GAAgBr/L,KAAOq/L,GAAgBS,MAAQT,GAAgB38H,SAAW28H,GAAgB5yB,OAAS4yB,GAAgBU,IAAMV,GAAgBhvL,IAAM,SAACo+C,EAAOnlE,GAUrJ,MATiC,kBAAtBA,EAAOy4F,YAAwD,kBAAtBz4F,EAAOy4F,WACzDtzB,EAAMxkE,MAAQX,EAAOy4F,WACXi1G,EAAU1tM,EAAOy4F,aAC3Bu0G,EAAK,iFAAwF/2K,cAAcj2B,EAAOy4F,WAAY,MAGhI29G,GAAcjxI,EAAOA,EAAOnlE,GAC5Bk2M,GAAoB/wI,EAAOnlE,GAC3BmlE,EAAM71D,KAAOtP,EAAOmlE,MACbA,GAGT4wI,GAAgB9D,KAAO,SAAC9sI,EAAOnlE,GAG7B,OAFAo2M,GAAcjxI,EAAOA,EAAOnlE,GAC5Bk2M,GAAoB/wI,EAAOnlE,GACpBmlE,GAGT4wI,GAAgBp/L,MAAQ,SAACA,EAAO3W,GAC9B,IAAM02M,EAAa//L,EAAMlP,cAAc,SACjC+qM,EAAc77L,EAAMlP,cAAc,UAKxC,OAJAivM,EAAW/1M,MAAQX,EAAOy4F,WAC1Bi+G,EAAWpnM,KAAOtP,EAAOmlE,MACzBqtI,EAAY7xM,MAAQX,EAAOy4F,WAC3B29G,GAAcM,EAAY//L,EAAO3W,GAC1B2W,GAGTo/L,GAAgBx6K,OAAS,SAACA,EAAQv7B,GAGhC,GAFAu7B,EAAOi/D,YAAc,GAEjBx6F,EAAOm2M,iBAAkB,CAC3B,IAAM78G,EAAc30F,SAASW,cAAc,UAC3C2qM,EAAa32G,EAAat5F,EAAOm2M,kBACjC78G,EAAY34F,MAAQ,GACpB24F,EAAYmc,UAAW,EACvBnc,EAAYzP,UAAW,EACvBtuD,EAAOp1B,YAAYmzF,GAIrB,OADA88G,GAAc76K,EAAQA,EAAQv7B,GACvBu7B,GAGTw6K,GAAgBlF,MAAQ,SAAAA,GAEtB,OADAA,EAAMr2G,YAAc,GACbq2G,GAGTkF,GAAgB5kD,SAAW,SAACwlD,EAAmB32M,GAC7C,IAAMmxJ,EAAWu/C,GAASpC,IAAY,YACtCn9C,EAASxwJ,MAAQ,EACjBwwJ,EAASvzI,GAAKowL,EAAY78C,SAC1BA,EAAS9rF,QAAU+lI,QAAQprM,EAAOy4F,YAClC,IAAM7e,EAAQ+8H,EAAkBlvM,cAAc,QAE9C,OADAwoM,EAAar2H,EAAO55E,EAAOm2M,kBACpBQ,GAGTZ,GAAgB7D,SAAW,SAACA,EAAUlyM,GACpCkyM,EAASvxM,MAAQX,EAAOy4F,WACxBy9G,GAAoBhE,EAAUlyM,GAC9Bo2M,GAAclE,EAAUA,EAAUlyM,GAElC,IAAM42M,EAAY,SAAA56K,GAAE,OAAI1hB,SAASrU,OAAOwhC,iBAAiBzL,GAAIyV,YAAcn3B,SAASrU,OAAOwhC,iBAAiBzL,GAAI2V,cAwBhH,OAtBAptC,YAAW,WAET,GAAI,qBAAsB0B,OAAQ,CAEhC,IAAM4wM,EAAoBv8L,SAASrU,OAAOwhC,iBAAiB6mK,KAAYz6J,OAYvE,IAAIijK,kBAV0B,WAC5B,IAAMC,EAAgB7E,EAASt3K,YAAcg8K,EAAU1E,GAGrD5D,IAAWn2K,MAAM0b,MADfkjK,EAAgBF,EACO,GAAG5gL,OAAO8gL,EAAe,MAEzB,QAIeC,QAAQ9E,EAAU,CAC5Dx6K,YAAY,EACZu/K,gBAAiB,CAAC,eAIjB/E,GAGT,IAAMgF,GAAgB,SAAC/3K,EAAUn/B,GAC/B,IAAMm3M,EAAgB1I,IACtB+B,GAAiB2G,EAAen3M,EAAQ,iBAEpCA,EAAOkwM,MACT+C,GAAqBjzM,EAAOkwM,KAAMiH,GAClCx1E,GAAKw1E,EAAe,UACXn3M,EAAO0W,MAChBygM,EAAc38G,YAAcx6F,EAAO0W,KACnCirH,GAAKw1E,EAAe,UAEpBz3E,GAAKy3E,GAGP1B,GAAYt2K,EAAUn/B,IAGlBo3M,GAAe,SAACj4K,EAAUn/B,GAC9B,IAAM2hF,EAAS0tH,IACf6B,GAAOvvH,EAAQ3hF,EAAO2hF,QAElB3hF,EAAO2hF,QACTsxH,GAAqBjzM,EAAO2hF,OAAQA,GAItC6uH,GAAiB7uH,EAAQ3hF,EAAQ,WAG7Bq3M,GAAoB,SAACl4K,EAAUn/B,GACnC,IAAMs3M,EAAc/H,IACpBU,EAAaqH,EAAat3M,EAAOu3M,iBAEjC/G,GAAiB8G,EAAat3M,EAAQ,eACtCkxM,GAAOoG,EAAat3M,EAAOw3M,iBAC3BF,EAAYv9K,aAAa,aAAc/5B,EAAOy3M,uBAG1CC,GAAa,SAACv4K,EAAUn/B,GAC5B,IAAMs1M,EAAcD,GAAaC,YAAYxpL,IAAIqT,GAC3Ck2E,EAAOk5F,IAEb,OAAI+G,GAAet1M,EAAOq1G,OAASigG,EAAYjgG,MAE7C0pB,GAAW1pB,EAAMr1G,QACjB23M,GAAYtiG,EAAMr1G,IAIfA,EAAOq1G,MAASr1G,EAAO43M,SAIxB53M,EAAOq1G,OAAyD,IAAjDhzG,OAAOjB,KAAK6sM,GAAW3rM,QAAQtC,EAAOq1G,OACvDzsF,EAAM,oFAA+FqN,OAAOj2B,EAAOq1G,KAAM,MAClHqqB,GAAKrqB,KAGdssB,GAAKtsB,GAEL0pB,GAAW1pB,EAAMr1G,GACjB23M,GAAYtiG,EAAMr1G,QAElBg6B,GAASq7E,EAAMr1G,EAAOuwM,UAAUl7F,OAbvBqqB,GAAKrqB,IAgBVsiG,GAAc,SAACtiG,EAAMr1G,GACzB,IAAK,IAAM63M,KAAY5J,EACjBjuM,EAAOq1G,OAASwiG,GAClBt9K,GAAY86E,EAAM44F,EAAU4J,IAIhC79K,GAASq7E,EAAM44F,EAAUjuM,EAAOq1G,OAEhCyiG,GAASziG,EAAMr1G,GAEf+3M,KAEAvH,GAAiBn7F,EAAMr1G,EAAQ,SAI3B+3M,GAAkC,WAKtC,IAJA,IAAMp2I,EAAQ2sI,IACR0J,EAAuB/xM,OAAOwhC,iBAAiBk6B,GAAOj6B,iBAAiB,oBACvEuwK,EAAmBt2I,EAAMh8D,iBAAiB,4DAEvC5E,EAAI,EAAGA,EAAIk3M,EAAiBj3M,OAAQD,IAC3Ck3M,EAAiBl3M,GAAGo3B,MAAM0hD,gBAAkBm+H,GAI1Cj5E,GAAa,SAAC1pB,EAAMr1G,GACxBq1G,EAAK7a,YAAc,GAEfx6F,EAAO43M,SACT3H,EAAa56F,EAAM6iG,GAAYl4M,EAAO43M,WACb,YAAhB53M,EAAOq1G,KAChB46F,EAAa56F,EAAM,yTACM,UAAhBr1G,EAAOq1G,KAChB46F,EAAa56F,EAAM,yKAOnB46F,EAAa56F,EAAM6iG,GALK,CACtBC,SAAU,IACVC,QAAS,IACTjsL,KAAM,KAEuCnsB,EAAOq1G,SAIpDyiG,GAAW,SAACziG,EAAMr1G,GACtB,GAAKA,EAAOq4M,UAAZ,CAIAhjG,EAAKl9E,MAAM2hD,MAAQ95E,EAAOq4M,UAC1BhjG,EAAKl9E,MAAMmgL,YAAct4M,EAAOq4M,UAEhC,IAAK,IAALl2M,EAAA,EAAAsuH,EAAkB,CAAC,0BAA2B,2BAA4B,0BAA2B,4BAA2BtuH,EAAAsuH,EAAAzvH,OAAAmB,IAAE,CAA7H,IAAMi3B,EAAGq3F,EAAAtuH,GACZ8uM,GAAS57F,EAAMj8E,EAAK,kBAAmBp5B,EAAOq4M,WAGhDpH,GAAS57F,EAAM,sBAAuB,cAAer1G,EAAOq4M,aAGxDH,GAAc,SAAArpJ,GAAO,MAAI,eAAgB54B,OAAO+3K,EAAY,gBAAiB,MAAO/3K,OAAO44B,EAAS,WAEpG0pJ,GAAc,SAACp5K,EAAUn/B,GAC7B,IAAM01G,EAAQg5F,IAEd,IAAK1uM,EAAO22G,SACV,OAAO+oB,GAAKhqB,GAGdisB,GAAKjsB,EAAO,IAEZA,EAAM37E,aAAa,MAAO/5B,EAAO22G,UACjCjB,EAAM37E,aAAa,MAAO/5B,EAAOw4M,UAEjCxH,GAAoBt7F,EAAO,QAAS11G,EAAOy4M,YAC3CzH,GAAoBt7F,EAAO,SAAU11G,EAAO04M,aAE5ChjG,EAAMljF,UAAYw7K,EAAYt4F,MAC9B86F,GAAiB96F,EAAO11G,EAAQ,UAG5B24M,GAAoB,SAAA7zK,GACxB,IAAM8zK,EAASj0M,SAASW,cAAc,MAGtC,OAFA00B,GAAS4+K,EAAQ5K,EAAY,kBAC7BiC,EAAa2I,EAAQ9zK,GACd8zK,GAGHC,GAAoB,SAAA74M,GACxB,IAAM84M,EAASn0M,SAASW,cAAc,MAOtC,OANA00B,GAAS8+K,EAAQ9K,EAAY,uBAEzBhuM,EAAO+4M,wBACTD,EAAO3gL,MAAM0b,MAAQ7zC,EAAO+4M,uBAGvBD,GAGHE,GAAsB,SAAC75K,EAAUn/B,GACrC,IAAMi5M,EAAyBtK,IAE/B,IAAK3uM,EAAOk5M,eAAiD,IAAhCl5M,EAAOk5M,cAAcl4M,OAChD,OAAO0+H,GAAKu5E,GAGdt3E,GAAKs3E,GACLA,EAAuBz+G,YAAc,GAEjCx6F,EAAOm5M,qBAAuBn5M,EAAOk5M,cAAcl4M,QACrDgsM,EAAK,yIAGPhtM,EAAOk5M,cAAc/1M,SAAQ,SAAC2hC,EAAMnmB,GAClC,IAAMi6L,EAASD,GAAkB7zK,GAOjC,GANAm0K,EAAuB9yM,YAAYyyM,GAE/Bj6L,IAAU3e,EAAOm5M,qBACnBn/K,GAAS4+K,EAAQ5K,EAAY,yBAG3BrvL,IAAU3e,EAAOk5M,cAAcl4M,OAAS,EAAG,CAC7C,IAAM83M,EAASD,GAAkB74M,GACjCi5M,EAAuB9yM,YAAY2yM,QAKnCM,GAAc,SAACj6K,EAAUn/B,GAC7B,IAAMurJ,EAAQijD,IACd0C,GAAO3lD,EAAOvrJ,EAAOurJ,OAASvrJ,EAAOq5M,UAAW,SAE5Cr5M,EAAOurJ,OACT0nD,GAAqBjzM,EAAOurJ,MAAOA,GAGjCvrJ,EAAOq5M,YACT9tD,EAAMhyD,UAAYv5F,EAAOq5M,WAI3B7I,GAAiBjlD,EAAOvrJ,EAAQ,UAG5BiqK,GAAc,SAAC9qI,EAAUn/B,GAC7B,IAAMi5F,EAAYi1G,IACZvsI,EAAQ2sI,IAEVtuM,EAAO6yM,OAET7B,GAAoB/3G,EAAW,QAASj5F,EAAO6zC,OAC/C8tB,EAAMxpC,MAAM0b,MAAQ,OACpB8tB,EAAM3mC,aAAai0K,IAAaV,MAEhCyC,GAAoBrvI,EAAO,QAAS3hE,EAAO6zC,OAI7Cm9J,GAAoBrvI,EAAO,UAAW3hE,EAAO2uC,SAEzC3uC,EAAO80M,aACTnzI,EAAMxpC,MAAM28K,WAAa90M,EAAO80M,YAGlCp1E,GAAKkvE,KAEL1yK,GAAWylC,EAAO3hE,IAGdk8B,GAAa,SAACylC,EAAO3hE,GAEzB2hE,EAAMnvC,UAAY,GAAGyD,OAAO+3K,EAAYrsI,MAAO,KAAK1rC,OAAOyE,GAAUinC,GAAS3hE,EAAOuwM,UAAU5uI,MAAQ,IAEnG3hE,EAAO6yM,OACT74K,GAAS,CAACr1B,SAASqiC,gBAAiBriC,SAASgiC,MAAOqnK,EAAY,gBAChEh0K,GAAS2nC,EAAOqsI,EAAY6E,QAE5B74K,GAAS2nC,EAAOqsI,EAAYsL,OAI9B9I,GAAiB7uI,EAAO3hE,EAAQ,SAEE,kBAAvBA,EAAOywM,aAChBz2K,GAAS2nC,EAAO3hE,EAAOywM,aAIrBzwM,EAAOq1G,MACTr7E,GAAS2nC,EAAOqsI,EAAY,QAAQ/3K,OAAOj2B,EAAOq1G,SAIhDxhF,GAAS,SAACsL,EAAUn/B,GACxBiqK,GAAY9qI,EAAUn/B,GACtBo1M,GAAgBj2K,EAAUn/B,GAC1Bg5M,GAAoB75K,EAAUn/B,GAC9B03M,GAAWv4K,EAAUn/B,GACrBu4M,GAAYp5K,EAAUn/B,GACtBo5M,GAAYj6K,EAAUn/B,GACtBq3M,GAAkBl4K,EAAUn/B,GAC5Bk3M,GAAc/3K,EAAUn/B,GACxB4zM,GAAcz0K,EAAUn/B,GACxBo3M,GAAaj4K,EAAUn/B,GAES,oBAArBA,EAAOu5M,WAChBv5M,EAAOu5M,UAAUjL,MAQfkL,GAAc,WAClB,OAAO9+K,GAAU4zK,MAMbmL,GAAe,WAAH,OAAS5K,KAAsBA,IAAmBj6I,SAK9D8kJ,GAAY,WAAH,OAAS5K,KAAmBA,IAAgBl6I,SAKrD+kJ,GAAc,WAAH,OAASxK,KAAqBA,IAAkBv6I,SAEjE,SAASglJ,KACW,IAAlB,IAAMtH,EAAOnuM,KAAK2zF,EAAA/0F,UAAA/B,OADHoD,EAAI,IAAA7B,MAAAu1F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3zF,EAAI2zF,GAAAh1F,UAAAg1F,GAEnB,OAAA8hH,EAAWvH,EAAQluM,GAqBrB,SAASs6L,GAAMob,GAQb,OAPe,SAAA51M,GAAAqwF,EAAAwlH,EAAA71M,GAAA,IAAAo/B,EAAAwwD,EAAAimH,GAAA,SAAAA,IAAA,OAAA/mH,EAAA,KAAA+mH,GAAAz2K,EAAA/iC,MAAA,KAAAwC,WAGZ,OAHYswF,EAAA0mH,EAAA,EAAA54M,IAAA,QAAAR,MACb,SAAMX,EAAQg6M,GACZ,OAAAC,EAAAzmH,EAAAumH,EAAA15M,WAAA,cAAAoF,KAAA,KAAmBzF,EAAQqC,OAAO0rE,OAAO,GAAI+rI,EAAaE,QAC3DD,EAHY,CAAS51M,MAe1B,IAAM+1M,GAAc,SAAAC,GAClB,IAAIx4I,EAAQ2sI,IAEP3sI,GACH2wI,GAAKsH,OAGPj4I,EAAQ2sI,IACR,IAAMY,EAASD,IAEXY,IACFnwE,GAAK6uE,KAEL6L,GAAcz4I,EAAOw4I,GAGvBx4E,GAAKutE,GACLvtI,EAAM5nC,aAAa,gBAAgB,GACnC4nC,EAAM5nC,aAAa,aAAa,GAChC4nC,EAAMl7D,SAGF2zM,GAAgB,SAACz4I,EAAOw4I,GAC5B,IAAM75D,EAAU8uD,IACVF,EAASD,KAEVkL,GAAmBz/K,GAAUm0K,OAChCsL,EAAkBtL,KAGpBltE,GAAK2e,GAED65D,IACFz6E,GAAKy6E,GACLjL,EAAOn1K,aAAa,yBAA0BogL,EAAgB3nL,YAGhE08K,EAAOtqM,WAAWo2B,aAAak0K,EAAQiL,GACvCngL,GAAS,CAAC2nC,EAAO2+E,GAAU0tD,EAAYqM,UAGnCC,GAAwB,IAExBC,GAAc,GAEdC,GAA6B,WAC7BD,GAAYE,uBAAyBF,GAAYE,sBAAsBh0M,OACzE8zM,GAAYE,sBAAsBh0M,QAClC8zM,GAAYE,sBAAwB,MAC3B91M,SAASgiC,MAClBhiC,SAASgiC,KAAKlgC,SAKZi0M,GAAuB,SAAAC,GAC3B,OAAO,IAAIvzL,SAAQ,SAAAC,GACjB,IAAKszL,EACH,OAAOtzL,IAGT,IAAM3B,EAAIzf,OAAOo6H,QACX5lH,EAAIxU,OAAOm6H,QACjBm6E,GAAYK,oBAAsBr2M,YAAW,WAC3Ci2M,KACAnzL,MACCizL,IAEHr0M,OAAO40M,SAASn1L,EAAGjL,OASjBqgM,GAAe,WACnB,OAAOP,GAAYj/E,SAAWi/E,GAAYj/E,QAAQw/E,gBAO9CC,GAAY,WAChB,GAAIR,GAAYj/E,QAEd,OADAq2E,KACO4I,GAAYj/E,QAAQh3F,QAQzB02K,GAAc,WAClB,GAAIT,GAAYj/E,QAAS,CACvB,IAAMi8D,EAAYgjB,GAAYj/E,QAAQj6H,QAEtC,OADAmwM,GAAwBja,GACjBA,IAQL0jB,GAAc,WAClB,IAAMxoI,EAAQ8nI,GAAYj/E,QAC1B,OAAO7oD,IAAUA,EAAMyoI,QAAUH,KAAcC,OAO3CG,GAAgB,SAAA35F,GACpB,GAAI+4F,GAAYj/E,QAAS,CACvB,IAAMi8D,EAAYgjB,GAAYj/E,QAAQ8/E,SAAS55F,GAE/C,OADAgwF,GAAwBja,GAAW,GAC5BA,IASL8jB,GAAiB,WACrB,OAAOd,GAAYj/E,SAAWi/E,GAAYj/E,QAAQggF,aAGhDC,IAAyB,EACvBC,GAAgB,GACtB,SAASC,KACPD,GAD4Bz4M,UAAA/B,OAAA,QAAAb,IAAA4C,UAAA,GAAAA,UAAA,GAAG,sBACToB,KAEjBo3M,KACH52M,SAASgiC,KAAKjZ,iBAAiB,QAASguL,IACxCH,IAAyB,GAI7B,IAAMG,GAAoB,SAAAzwL,GACxB,IAAK,IAAI+Q,EAAK/Q,EAAMmW,OAAQpF,GAAMA,IAAOr3B,SAAUq3B,EAAKA,EAAGp3B,WACzD,IAAK,IAAMy7C,KAAQm7J,GAAe,CAChC,IAAM/rL,EAAWuM,EAAG1I,aAAa+sB,GAEjC,GAAI5wB,EAIF,YAHA+rL,GAAcn7J,GAAMu5J,KAAK,CACvBnqL,eAQJksL,GAAgB,CACpBpwD,MAAO,GACP8tD,UAAW,GACX3iM,KAAM,GACNw5L,KAAM,GACNvuH,OAAQ,GACR0zB,UAAMl1G,EACNk4M,eAAWl4M,EACXy3M,cAAUz3M,EACVsvB,cAAUtvB,EACV0yM,OAAO,EACPtC,UAAW,CACT5uI,MAAO,aACP+qI,SAAU,sBACVr3F,KAAM,mBAERumG,UAAW,CACTj6I,MAAO,aACP+qI,SAAU,sBACVr3F,KAAM,mBAERo7F,YAAa,GACbrvK,OAAQ,OACRsrK,UAAU,EACVmP,YAAY,EACZC,mBAAmB,EACnBC,gBAAgB,EAChBC,eAAe,EACfC,wBAAwB,EACxBC,wBAAwB,EACxBlI,mBAAmB,EACnBC,gBAAgB,EAChBC,kBAAkB,EAClBiI,gBAAYh8M,EACZi8M,aAASj8M,EACTk8M,kBAAmB,KACnBC,uBAAwB,GACxB7H,wBAAoBt0M,EACpBo8M,eAAgB,KAChBC,oBAAqB,GACrB9H,qBAAiBv0M,EACjBs8M,iBAAkB,SAClBC,sBAAuB,GACvB/H,uBAAmBx0M,EACnBo0M,gBAAgB,EAChBF,gBAAgB,EAChBsI,cAAc,EACdC,WAAW,EACXC,aAAa,EACblC,aAAa,EACbnD,iBAAiB,EACjBD,gBAAiB,UACjBE,qBAAsB,oBACtBnD,WAAY,GACZwI,qBAAqB,EACrBC,kBAAkB,EAClBpmG,cAAUx2G,EACVs4M,gBAAYt4M,EACZu4M,iBAAav4M,EACbq4M,SAAU,GACV/lI,WAAOtyE,EACPsxM,kBAAkB,EAClB59J,WAAO1zC,EACPwuC,aAASxuC,EACT20M,gBAAY30M,EACZglE,WAAOhlE,EACPg2M,iBAAkB,GAClBG,WAAY,GACZ79G,WAAY,GACZukH,aAAc,GACdC,eAAe,EACfrH,gBAAiB,GACjBsH,oBAAgB/8M,EAChBg9M,wBAAwB,EACxBC,uBAAmBj9M,EACnB+0M,MAAM,EACNhjK,SAAU,SACVgnK,cAAe,GACfC,yBAAqBh5M,EACrB44M,2BAAuB54M,EACvBk9M,cAAUl9M,EACVm9M,aAASn9M,EACTo5M,eAAWp5M,EACXo9M,eAAWp9M,EACXq9M,cAAUr9M,EACVs9M,gBAAYt9M,EACZu9M,kBAAkB,GAEdC,GAAkB,CAAC,iBAAkB,oBAAqB,aAAc,iBAAkB,wBAAyB,oBAAqB,mBAAoB,uBAAwB,kBAAmB,yBAA0B,qBAAsB,oBAAqB,sBAAuB,cAAe,sBAAuB,kBAAmB,iBAAkB,WAAY,aAAc,SAAU,YAAa,OAAQ,OAAQ,YAAa,WAAY,WAAY,cAAe,WAAY,aAAc,aAAc,UAAW,gBAAiB,cAAe,iBAAkB,mBAAoB,kBAAmB,oBAAqB,iBAAkB,OAAQ,QAAS,YAAa,aACprBC,GAAmB,GACnBC,GAA0B,CAAC,oBAAqB,gBAAiB,WAAY,eAAgB,YAAa,cAAe,cAAe,aAAc,0BAMtJC,GAAmB,SAAAC,GACvB,OAAO17M,OAAOhC,UAAUsD,eAAe8B,KAAKk2M,GAAeoC,IAOvDC,GAAuB,SAAAD,GAC3B,OAA+C,IAAxCJ,GAAgBr7M,QAAQy7M,IAO3BE,GAAwB,SAAAF,GAC5B,OAAOH,GAAiBG,IAGpBG,GAAsB,SAAAxuF,GACrBouF,GAAiBpuF,IACpBs9E,EAAK,sBAAuB/2K,OAAOy5F,EAAO,OAIxCyuF,GAA2B,SAAAzuF,GAC3BmuF,GAAwBr4B,SAAS91D,IACnCs9E,EAAK,kBAAmB/2K,OAAOy5F,EAAO,mCAIpC0uF,GAA2B,SAAA1uF,GAC3BuuF,GAAsBvuF,IACxBy9E,EAAqBz9E,EAAOuuF,GAAsBvuF,KAUhD2uF,GAAwB,SAAAr+M,GAK5B,IAAK,IAAM0vH,KAJN1vH,EAAO0sM,UAAY1sM,EAAO87M,mBAC7B9O,EAAK,mFAGahtM,EAClBk+M,GAAoBxuF,GAEhB1vH,EAAO6yM,OACTsL,GAAyBzuF,GAG3B0uF,GAAyB1uF,IAMzB4uF,GAA6Bj8M,OAAOmpI,OAAO,CAC7CsyE,iBAAkBA,GAClBE,qBAAsBA,GACtBC,sBAAuBA,GACvBnQ,aAAcA,EACdpzK,UAAW8+K,GACXC,aAAcA,GACdC,UAAWA,GACXC,YAAaA,GACbzL,aAAcA,EACdI,SAAUA,EACVE,SAAUA,EACVC,iBAAkBA,EAClBC,SAAUA,EACVH,QAASA,EACTS,cAAeA,EACfO,eAAgBA,EAChBH,WAAYA,EACZP,iBAAkBA,EAClBC,cAAeA,EACfK,gBAAiBA,EACjBF,UAAWA,EACXI,UAAWA,EACXC,oBAAqBA,EACrBG,qBAAsBA,EACtBb,qBAAsBA,EACtBkB,UAAWA,EACX8J,KAAMA,GACNlb,MAAOA,GACPwb,YAAaA,GACbqE,cAAerE,GACfY,aAAcA,GACdC,UAAWA,GACXC,YAAaA,GACbC,YAAaA,GACbE,cAAeA,GACfE,eAAgBA,GAChBI,iBAAkBA,KAOpB,SAAS+C,KAEP,IAAMlJ,EAAcD,GAAaC,YAAYxpL,IAAI3nB,MAEjD,GAAKmxM,EAAL,CAIA,IAAMC,EAAWF,GAAaE,SAASzpL,IAAI3nB,MAC3Cu7H,GAAK61E,EAASrG,QAEVW,IACEyF,EAAYjgG,MACdssB,GAAK4sE,KAGPkQ,GAAkBlJ,GAGpBh7K,GAAY,CAACg7K,EAAS5zI,MAAO4zI,EAASj1D,SAAU0tD,EAAYqM,SAC5D9E,EAAS5zI,MAAMn9B,gBAAgB,aAC/B+wK,EAAS5zI,MAAMn9B,gBAAgB,gBAC/B+wK,EAAS1B,cAAcp+F,UAAW,EAClC8/F,EAASzB,WAAWr+F,UAAW,EAC/B8/F,EAASxB,aAAat+F,UAAW,GAGnC,IAAMgpG,GAAoB,SAAAlJ,GACxB,IAAM4E,EAAkB5E,EAAS5zI,MAAMvuC,uBAAuBmiL,EAASrG,OAAO57K,aAAa,2BAEvF6mL,EAAgBn5M,OAClB2gI,GAAKw4E,EAAgB,GAAI,gBAChB/I,MACT1xE,GAAK61E,EAASj1D,UAIlB,SAASo+D,GAAWv/K,GAClB,IAAMm2K,EAAcD,GAAaC,YAAYxpL,IAAIqT,GAAYh7B,MACvDoxM,EAAWF,GAAaE,SAASzpL,IAAIqT,GAAYh7B,MAEvD,OAAKoxM,EAIE7E,GAAS6E,EAAS5zI,MAAO2zI,EAAYnwI,OAHnC,KAMX,IAAMw5I,GAAe,WAEgB,OAA/B5O,EAAOC,qBAKPrrM,SAASgiC,KAAKiQ,aAAe3wC,OAAOiuC,cAEtC67J,EAAOC,oBAAsB11L,SAASrU,OAAOwhC,iBAAiB9iC,SAASgiC,MAAMe,iBAAiB,kBAC9F/iC,SAASgiC,KAAKxO,MAAMymL,aAAe,GAAG3oL,OAAO85K,EAAOC,oBAAsB0D,KAAoB,QAG5FmL,GAAgB,WACe,OAA/B9O,EAAOC,sBACTrrM,SAASgiC,KAAKxO,MAAMymL,aAAe,GAAG3oL,OAAO85K,EAAOC,oBAAqB,MACzED,EAAOC,oBAAsB,OAM3B8O,GAAS,WAGb,IAFY,mBAAmB/vM,KAAKgc,UAAUH,aAAe3kB,OAAO84M,UAAmC,aAAvBh0L,UAAUi0L,UAA2Bj0L,UAAUqB,eAAiB,KAEpIikL,GAAS1rM,SAASgiC,KAAMqnK,EAAYiR,QAAS,CACvD,IAAM9uL,EAASxrB,SAASgiC,KAAKI,UAC7BpiC,SAASgiC,KAAKxO,MAAMgP,IAAM,GAAGlR,QAAiB,EAAV9F,EAAa,MACjD6J,GAASr1B,SAASgiC,KAAMqnK,EAAYiR,QACpCC,KACAC,OAIEA,GAAgC,WAGpC,IAFgBp0L,UAAUH,UAAU7jB,MAAM,6CAE9B,CACV,IAAMq4M,EAAoB,GAEtB9Q,IAAW13J,aAAe3wC,OAAOiuC,YAAckrK,IACjDlR,IAAe/1K,MAAM80I,cAAgB,GAAGh3I,OAAOmpL,EAAmB,SAKlEF,GAAiB,WAErB,IACIG,EADEpmH,EAAYi1G,IAGlBj1G,EAAUqmH,aAAe,SAAAt6M,GACvBq6M,EAAmBE,GAAuBv6M,IAG5Ci0F,EAAUumH,YAAc,SAAAx6M,GAClBq6M,IACFr6M,EAAEyrC,iBACFzrC,EAAEy6M,qBAKFF,GAAyB,SAAAt0L,GAC7B,IAAMmW,EAASnW,EAAMmW,OACf63D,EAAYi1G,IAElB,OAAIwR,GAASz0L,KAAU00L,GAAO10L,KAI1BmW,IAAW63D,KAIV/6C,GAAa+6C,IAAiC,UAAnB73D,EAAOjN,SACpB,aAAnBiN,EAAOjN,SACL+pB,GAAauwJ,MACfA,IAAmB/3K,SAAS0K,MAOxBs+K,GAAW,SAAAz0L,GAEf,OAAOA,EAAM20L,SAAW30L,EAAM20L,QAAQ5+M,QAAyC,WAA/BiqB,EAAM20L,QAAQ,GAAGC,WAG7DF,GAAS,SAAA10L,GAEb,OAAOA,EAAM20L,SAAW30L,EAAM20L,QAAQ5+M,OAAS,GAG3C8+M,GAAa,WACjB,GAAIzP,GAAS1rM,SAASgiC,KAAMqnK,EAAYiR,QAAS,CAC/C,IAAM9uL,EAAS7V,SAAS3V,SAASgiC,KAAKxO,MAAMgP,IAAK,IACjD5M,GAAY51B,SAASgiC,KAAMqnK,EAAYiR,QACvCt6M,SAASgiC,KAAKxO,MAAMgP,IAAM,GAC1BxiC,SAASgiC,KAAKI,WAAsB,EAAV5W,IAQxB4vL,GAAgB,WACC9qF,EAAQtwH,SAASgiC,KAAK1R,UAC9B9xB,SAAQ,SAAA64B,GACfA,IAAOkyK,KAAkBlyK,EAAGtF,SAASw3K,OAIrClyK,EAAGskB,aAAa,gBAClBtkB,EAAGjC,aAAa,4BAA6BiC,EAAG1I,aAAa,gBAG/D0I,EAAGjC,aAAa,cAAe,aAG7BimL,GAAkB,WACD/qF,EAAQtwH,SAASgiC,KAAK1R,UAC9B9xB,SAAQ,SAAA64B,GACfA,EAAGskB,aAAa,8BAClBtkB,EAAGjC,aAAa,cAAeiC,EAAG1I,aAAa,8BAC/C0I,EAAGwI,gBAAgB,8BAEnBxI,EAAGwI,gBAAgB,mBAcrBy7K,GAAiB,CACnBC,mBAAoB,IAAI/gC,SAO1B,SAASghC,GAAyBhhL,EAAU85D,EAAW0hH,EAAa6C,GAC9D3N,IACFuQ,GAA0BjhL,EAAUq+K,IAEpC9C,GAAqBC,GAAa57L,MAAK,kBAAMqhM,GAA0BjhL,EAAUq+K,MACjFjD,GAAY8F,cAAcvyL,oBAAoB,UAAWysL,GAAY+F,eAAgB,CACnFC,QAAShG,GAAY2B,yBAEvB3B,GAAYiG,qBAAsB,GAGnB,iCAAiCzxM,KAAKgc,UAAUH,YAI/DquE,EAAUl/D,aAAa,QAAS,2BAChCk/D,EAAUz0D,gBAAgB,SAC1By0D,EAAU1yF,UAAY,IAEtB0yF,EAAUrrE,SAGRgiL,MACFiP,KACAiB,KACAE,MAGFS,KAGF,SAASA,KACPlmL,GAAY,CAAC51B,SAASqiC,gBAAiBriC,SAASgiC,MAAO,CAACqnK,EAAY0S,MAAO1S,EAAY,eAAgBA,EAAY,eAAgBA,EAAY,iBAGjJ,SAASxnM,GAAMm6M,GACb,IAAMh/I,EAAQ2sI,IAEd,GAAK3sI,EAAL,CAIAg/I,EAAeC,GAAoBD,GACnC,IAAMrL,EAAcD,GAAaC,YAAYxpL,IAAI3nB,MAEjD,GAAKmxM,IAAejF,GAAS1uI,EAAO2zI,EAAYsG,UAAUj6I,OAA1D,CAIA,IAAMu+I,EAAqBD,GAAeC,mBAAmBp0L,IAAI3nB,MACjEo2B,GAAYonC,EAAO2zI,EAAY/E,UAAU5uI,OACzC3nC,GAAS2nC,EAAO2zI,EAAYsG,UAAUj6I,OACtC,IAAM+qI,EAAWwB,IACjB3zK,GAAYmyK,EAAU4I,EAAY/E,UAAU7D,UAC5C1yK,GAAS0yK,EAAU4I,EAAYsG,UAAUlP,UACzCmU,GAAqB18M,KAAMw9D,EAAO2zI,GAElC4K,EAAmBS,KAGrB,IAAMC,GAAsB,SAAAD,GAE1B,MAA4B,qBAAjBA,EACF,CACLG,aAAa,EACbC,UAAU,EACVC,aAAa,GAIV3+M,OAAO0rE,OAAO,CACnB+yI,aAAa,EACbC,UAAU,EACVC,aAAa,GACZL,IAGCE,GAAuB,SAAC1hL,EAAUwiC,EAAO2zI,GAC7C,IAAMr8G,EAAYi1G,IAEZ+S,EAAuB5N,IAAqBhC,GAAgB1vI,GAE7B,oBAA1B2zI,EAAYiI,WACrBjI,EAAYiI,UAAU57I,GAGpBs/I,EACFC,GAAa/hL,EAAUwiC,EAAOs3B,EAAWq8G,EAAYqF,YAAarF,EAAYkI,UAG9E2C,GAAyBhhL,EAAU85D,EAAWq8G,EAAYqF,YAAarF,EAAYkI,WAIjF0D,GAAe,SAAC/hL,EAAUwiC,EAAOs3B,EAAW0hH,EAAa6C,GAC7DjD,GAAY4G,+BAAiChB,GAAyB7/M,KAAK,KAAM6+B,EAAU85D,EAAW0hH,EAAa6C,GACnH77I,EAAMj0C,iBAAiB2lL,IAAmB,SAAUruM,GAC9CA,EAAEo8B,SAAWugC,IACf44I,GAAY4G,wCACL5G,GAAY4G,oCAKnBf,GAA4B,SAACjhL,EAAUq+K,GAC3Cj5M,YAAW,WACe,oBAAbi5M,GACTA,EAASl9M,KAAK6+B,EAASn/B,OAAvBw9M,GAGFr+K,EAASiiL,eAIb,SAASC,GAAmBliL,EAAU28D,EAAS2Z,GAC7C,IAAM8/F,EAAWF,GAAaE,SAASzpL,IAAIqT,GAC3C28D,EAAQ34F,SAAQ,SAAA4yF,GACdw/G,EAASx/G,GAAQ0f,SAAWA,KAIhC,SAAS6rG,GAAiBn8I,EAAOswC,GAC/B,IAAKtwC,EACH,OAAO,EAGT,GAAmB,UAAfA,EAAM71D,KAIR,IAHA,IACMiyM,EADkBp8I,EAAMvgE,WAAWA,WACVe,iBAAiB,SAEvC5E,EAAI,EAAGA,EAAIwgN,EAAOvgN,OAAQD,IACjCwgN,EAAOxgN,GAAG00G,SAAWA,OAGvBtwC,EAAMswC,SAAWA,EAIrB,SAAS+rG,KACPH,GAAmBl9M,KAAM,CAAC,gBAAiB,aAAc,iBAAiB,GAE5E,SAASs9M,KACPJ,GAAmBl9M,KAAM,CAAC,gBAAiB,aAAc,iBAAiB,GAE5E,SAASu9M,KACP,OAAOJ,GAAiBn9M,KAAKusM,YAAY,GAE3C,SAASiR,KACP,OAAOL,GAAiBn9M,KAAKusM,YAAY,GAG3C,SAASkR,GAAsBh5L,GAC7B,IAAM2sL,EAAWF,GAAaE,SAASzpL,IAAI3nB,MACrCnE,EAASq1M,GAAaC,YAAYxpL,IAAI3nB,MAC5C8rM,EAAasF,EAAS6H,kBAAmBx0L,GACzC2sL,EAAS6H,kBAAkB5qL,UAAYw7K,EAAY,sBAE/ChuM,EAAOywM,aAAezwM,EAAOywM,YAAY2M,mBAC3CpjL,GAASu7K,EAAS6H,kBAAmBp9M,EAAOywM,YAAY2M,mBAG1Dz7E,GAAK4zE,EAAS6H,mBACd,IAAMj4I,EAAQhhE,KAAKusM,WAEfvrI,IACFA,EAAMprC,aAAa,gBAAgB,GACnCorC,EAAMprC,aAAa,mBAAoBi0K,EAAY,uBACnD8C,GAAW3rI,GACXnrC,GAASmrC,EAAO6oI,EAAY6T,aAIhC,SAASC,KACP,IAAMvM,EAAWF,GAAaE,SAASzpL,IAAI3nB,MAEvCoxM,EAAS6H,mBACX19E,GAAK61E,EAAS6H,mBAGhB,IAAMj4I,EAAQhhE,KAAKusM,WAEfvrI,IACFA,EAAM3gC,gBAAgB,gBACtB2gC,EAAM3gC,gBAAgB,oBACtBjK,GAAY4qC,EAAO6oI,EAAY6T,aAInC,SAASE,KAEP,OADiB1M,GAAaE,SAASzpL,IAAI3nB,MAC3B+0M,cACjB,IAEK8I,GAAK,WACT,SAAAA,EAAYz+F,EAAUv/G,GAAOgvF,EAAA,KAAAgvH,GAC3B79M,KAAKo/G,SAAWA,EAChBp/G,KAAKozL,UAAYvzL,EACjBG,KAAK+2M,SAAU,EACf/2M,KAAK9C,QAkDN,OAjDAgyF,EAAA2uH,EAAA,EAAA7gN,IAAA,QAAAR,MAED,WAOE,OANKwD,KAAK+2M,UACR/2M,KAAK+2M,SAAU,EACf/2M,KAAK89M,QAAU,IAAI30M,KACnBnJ,KAAKyZ,GAAKrZ,WAAWJ,KAAKo/G,SAAUp/G,KAAKozL,YAGpCpzL,KAAKozL,YACb,CAAAp2L,IAAA,OAAAR,MAED,WAOE,OANIwD,KAAK+2M,UACP/2M,KAAK+2M,SAAU,EACf52M,aAAaH,KAAKyZ,IAClBzZ,KAAKozL,WAAa,IAAIjqL,KAASnJ,KAAK89M,SAG/B99M,KAAKozL,YACb,CAAAp2L,IAAA,WAAAR,MAED,SAAS6gH,GACP,IAAM05F,EAAU/2M,KAAK+2M,QAYrB,OAVIA,GACF/2M,KAAKmgC,OAGPngC,KAAKozL,WAAa/1E,EAEd05F,GACF/2M,KAAK9C,QAGA8C,KAAKozL,YACb,CAAAp2L,IAAA,eAAAR,MAED,WAME,OALIwD,KAAK+2M,UACP/2M,KAAKmgC,OACLngC,KAAK9C,SAGA8C,KAAKozL,YACb,CAAAp2L,IAAA,YAAAR,MAED,WACE,OAAOwD,KAAK+2M,YACb8G,EAvDQ,GA2DPE,GAAyB,CAC3B1L,MAAO,SAAC57B,EAAQwiC,GACd,MAAO,wDAAwDruM,KAAK6rK,GAAUxzJ,QAAQC,UAAYD,QAAQC,QAAQ+1L,GAAqB,0BAEzIr2L,IAAK,SAAC6zJ,EAAQwiC,GAEZ,MAAO,8FAA8FruM,KAAK6rK,GAAUxzJ,QAAQC,UAAYD,QAAQC,QAAQ+1L,GAAqB,iBAIjL,SAAS+E,GAA0BniN,GAE5BA,EAAOk9M,gBACV76M,OAAOjB,KAAK8gN,IAAwB/+M,SAAQ,SAAAhC,GACtCnB,EAAOmlE,QAAUhkE,IACnBnB,EAAOk9M,eAAiBgF,GAAuB/gN,OAMvD,SAASihN,GAA4BpiN,KAE9BA,EAAOohC,QAAmC,kBAAlBphC,EAAOohC,SAAwBz8B,SAAS8C,cAAczH,EAAOohC,SAAoC,kBAAlBphC,EAAOohC,SAAwBphC,EAAOohC,OAAOj7B,eACvJ6mM,EAAK,uDACLhtM,EAAOohC,OAAS,QAWpB,SAASihL,GAAcriN,GACrBmiN,GAA0BniN,GAEtBA,EAAO88M,sBAAwB98M,EAAOm8M,YACxCnP,EAAK,oMAGPoV,GAA4BpiN,GAEA,kBAAjBA,EAAOurJ,QAChBvrJ,EAAOurJ,MAAQvrJ,EAAOurJ,MAAMzqJ,MAAM,MAAMgI,KAAK,WAG/CiqM,GAAK/yM,GAGP,IAAMsiN,GAAmB,CAAC,aAAc,YAAa,eAC/CC,GAAoB,SAAAviN,GACxB,IAAMyvB,EAAsC,kBAApBzvB,EAAOyvB,SAAwB9qB,SAAS8C,cAAczH,EAAOyvB,UAAYzvB,EAAOyvB,SAExG,IAAKA,EACH,MAAO,GAGT,IAAM+yL,EAAkB/yL,EAASo/B,QAGjC,OAFA4zJ,GAAwBD,GACTngN,OAAO0rE,OAAO20I,GAAcF,GAAkBG,GAAeH,GAAkBI,GAAaJ,GAAkBK,GAAYL,GAAkBM,GAAaN,GAAkBO,GAAoBP,EAAiBF,MAI3NI,GAAgB,SAAAF,GACpB,IAAM1/M,EAAS,GAgBf,OAfAmyH,EAAQutF,EAAgB78M,iBAAiB,eAAexC,SAAQ,SAAAusH,GAC9DszF,GAA0BtzF,EAAO,CAAC,OAAQ,UAC1C,IAAMquF,EAAYruF,EAAMp8F,aAAa,QACjC3yB,EAAQ+uH,EAAMp8F,aAAa,SAES,mBAA7BqoL,GAAcoC,IAAsC,UAAVp9M,IACnDA,GAAQ,GAG8B,kBAA7Bg7M,GAAcoC,KACvBp9M,EAAQue,KAAKC,MAAMxe,IAGrBmC,EAAOi7M,GAAap9M,KAEfmC,GAGH6/M,GAAiB,SAAAH,GACrB,IAAM1/M,EAAS,GAef,OAdAmyH,EAAQutF,EAAgB78M,iBAAiB,gBAAgBxC,SAAQ,SAAA4yF,GAC/DitH,GAA0BjtH,EAAQ,CAAC,OAAQ,QAAS,eACpD,IAAMzmF,EAAOymF,EAAOziE,aAAa,QACjCxwB,EAAO,GAAGmzB,OAAO3mB,EAAM,eAAiBymF,EAAOxvF,UAC/CzD,EAAO,OAAOmzB,OAAO62K,EAAsBx9L,GAAO,YAAa,EAE3DymF,EAAOz1C,aAAa,WACtBx9C,EAAO,GAAGmzB,OAAO3mB,EAAM,gBAAkBymF,EAAOziE,aAAa,UAG3DyiE,EAAOz1C,aAAa,gBACtBx9C,EAAO,GAAGmzB,OAAO3mB,EAAM,oBAAsBymF,EAAOziE,aAAa,kBAG9DxwB,GAGH8/M,GAAe,SAAAJ,GACnB,IAAM1/M,EAAS,GACT4yG,EAAQ8sG,EAAgB/6M,cAAc,cAsB5C,OApBIiuG,IACFstG,GAA0BttG,EAAO,CAAC,MAAO,QAAS,SAAU,QAExDA,EAAMp1D,aAAa,SACrBx9C,EAAO6zG,SAAWjB,EAAMpiF,aAAa,QAGnCoiF,EAAMp1D,aAAa,WACrBx9C,EAAO21M,WAAa/iG,EAAMpiF,aAAa,UAGrCoiF,EAAMp1D,aAAa,YACrBx9C,EAAO41M,YAAchjG,EAAMpiF,aAAa,WAGtCoiF,EAAMp1D,aAAa,SACrBx9C,EAAO01M,SAAW9iG,EAAMpiF,aAAa,SAIlCxwB,GAGH+/M,GAAc,SAAAL,GAClB,IAAM1/M,EAAS,GACTuyG,EAAOmtG,EAAgB/6M,cAAc,aAgB3C,OAdI4tG,IACF2tG,GAA0B3tG,EAAM,CAAC,OAAQ,UAErCA,EAAK/0D,aAAa,UACpBx9C,EAAOuyG,KAAOA,EAAK/hF,aAAa,SAG9B+hF,EAAK/0D,aAAa,WACpBx9C,EAAOu1M,UAAYhjG,EAAK/hF,aAAa,UAGvCxwB,EAAO80M,SAAWviG,EAAK9uG,WAGlBzD,GAGHggN,GAAe,SAAAN,GACnB,IAAM1/M,EAAS,GACTqiE,EAAQq9I,EAAgB/6M,cAAc,cAExC09D,IACF69I,GAA0B79I,EAAO,CAAC,OAAQ,QAAS,cAAe,UAClEriE,EAAOqiE,MAAQA,EAAM7xC,aAAa,SAAW,OAEzC6xC,EAAM7kB,aAAa,WACrBx9C,EAAOwzM,WAAanxI,EAAM7xC,aAAa,UAGrC6xC,EAAM7kB,aAAa,iBACrBx9C,EAAOqzM,iBAAmBhxI,EAAM7xC,aAAa,gBAG3C6xC,EAAM7kB,aAAa,WACrBx9C,EAAO21F,WAAatzB,EAAM7xC,aAAa,WAI3C,IAAM0pL,EAAewF,EAAgB78M,iBAAiB,qBAYtD,OAVIq3M,EAAah8M,SACf8B,EAAOk6M,aAAe,GACtB/nF,EAAQ+nF,GAAc75M,SAAQ,SAAAiL,GAC5B40M,GAA0B50M,EAAQ,CAAC,UACnC,IAAM60M,EAAc70M,EAAOklB,aAAa,SAClC4vL,EAAa90M,EAAO7H,UAC1BzD,EAAOk6M,aAAaiG,GAAeC,MAIhCpgN,GAGHigN,GAAsB,SAACP,EAAiBW,GAC5C,IAAMrgN,EAAS,GAEf,IAAK,IAAM/B,KAAKoiN,EAAY,CAC1B,IAAMpF,EAAYoF,EAAWpiN,GACvBm5F,EAAMsoH,EAAgB/6M,cAAcs2M,GAEtC7jH,IACF8oH,GAA0B9oH,EAAK,IAC/Bp3F,EAAOi7M,EAAUl9M,QAAQ,SAAU,KAAOq5F,EAAI3zF,UAAUiqB,QAI5D,OAAO1tB,GAGH2/M,GAA0B,SAAAhzL,GAC9B,IAAM2zL,EAAkBd,GAAiBrsL,OAAO,CAAC,aAAc,cAAe,aAAc,YAAa,aAAc,sBACvHg/F,EAAQxlG,EAASwF,UAAU9xB,SAAQ,SAAA64B,GACjC,IAAM7H,EAAU6H,EAAG7H,QAAQvY,eAEe,IAAtCwnM,EAAgB9gN,QAAQ6xB,IAC1B64K,EAAK,yBAAyB/2K,OAAO9B,EAAS,UAK9C6uL,GAA4B,SAAChnL,EAAIqnL,GACrCpuF,EAAQj5F,EAAGtE,YAAYv0B,SAAQ,SAAAi8C,IACsB,IAA/CikK,EAAkB/gN,QAAQ88C,EAAU7gC,OACtCyuL,EAAK,CAAC,2BAA4B/2K,OAAOmpB,EAAU7gC,KAAM,UAAW0X,OAAO+F,EAAG7H,QAAQvY,cAAe,MAAO,GAAGqa,OAAOotL,EAAkBriN,OAAS,2BAA2Bi1B,OAAOotL,EAAkBv6M,KAAK,OAAS,wDAKnNw6M,GAAqB,GAOrBC,GAAY,SAAAvjN,GAChB,IAAMi5F,EAAYi1G,IACZvsI,EAAQ2sI,IAEiB,oBAApBtuM,EAAOq9M,UAChBr9M,EAAOq9M,SAAS17I,GAGlB,IACM6hJ,EADav9M,OAAOwhC,iBAAiB9iC,SAASgiC,MACb+X,UACvC+kK,GAAaxqH,EAAWt3B,EAAO3hE,GAE/BuE,YAAW,WACTm/M,GAAuBzqH,EAAWt3B,KACjC2hJ,IAEC1T,MACF+T,GAAmB1qH,EAAWj5F,EAAO09M,iBAAkB8F,GACvDzD,MAGGlQ,KAAc0K,GAAYE,wBAC7BF,GAAYE,sBAAwB91M,SAASo1F,eAGjB,oBAAnB/5F,EAAOs9M,SAChB/4M,YAAW,kBAAMvE,EAAOs9M,QAAQ37I,MAGlCpnC,GAAY0+D,EAAW+0G,EAAY,mBAG/B4V,GAA4B,SAA5BA,EAA4B34L,GAChC,IAAM02C,EAAQ2sI,IAEd,GAAIrjL,EAAMmW,SAAWugC,EAArB,CAIA,IAAMs3B,EAAYi1G,IAClBvsI,EAAM7zC,oBAAoBulL,GAAmBuQ,GAC7C3qH,EAAU9gE,MAAMumB,UAAY,SAGxBglK,GAAyB,SAACzqH,EAAWt3B,GACrC0xI,IAAqBhC,GAAgB1vI,IACvCs3B,EAAU9gE,MAAMumB,UAAY,SAC5BijB,EAAMj0C,iBAAiB2lL,GAAmBuQ,KAE1C3qH,EAAU9gE,MAAMumB,UAAY,QAI1BilK,GAAqB,SAAC1qH,EAAWykH,EAAkB8F,GACvD1E,KAEIpB,GAA4C,WAAxB8F,GACtB7E,KAIFp6M,YAAW,WACT00F,EAAUlyD,UAAY,MAIpB08K,GAAe,SAACxqH,EAAWt3B,EAAO3hE,GACtCg6B,GAASi/D,EAAWj5F,EAAOuwM,UAAU7D,UAErC/qI,EAAMxpC,MAAM0rL,YAAY,UAAW,IAAK,aACxCliF,GAAKhgE,EAAO,QACZp9D,YAAW,WAETy1B,GAAS2nC,EAAO3hE,EAAOuwM,UAAU5uI,OAEjCA,EAAMxpC,MAAM0sG,eAAe,aAC1By+E,IAEHtpL,GAAS,CAACr1B,SAASqiC,gBAAiBriC,SAASgiC,MAAOqnK,EAAY0S,OAE5D1gN,EAAO67M,YAAc77M,EAAO0sM,WAAa1sM,EAAO6yM,OAClD74K,GAAS,CAACr1B,SAASqiC,gBAAiBriC,SAASgiC,MAAOqnK,EAAY,iBAI9D8V,GAA6B,SAAC3kL,EAAUn/B,GACvB,WAAjBA,EAAOmlE,OAAuC,UAAjBnlE,EAAOmlE,MACtC4+I,GAAmB5kL,EAAUn/B,GACpB,CAAC,OAAQ,QAAS,SAAU,MAAO,YAAYwlL,SAASxlL,EAAOmlE,SAAWooI,EAAevtM,EAAOy4F,aAAei1G,EAAU1tM,EAAOy4F,eACzIyhH,GAAYrL,KACZmV,GAAiB7kL,EAAUn/B,KAGzBikN,GAAgB,SAAC9kL,EAAUm2K,GAC/B,IAAMnwI,EAAQhmC,EAASuxK,WAEvB,IAAKvrI,EACH,OAAO,KAGT,OAAQmwI,EAAYnwI,OAClB,IAAK,WACH,OAAO++I,GAAiB/+I,GAE1B,IAAK,QACH,OAAOg/I,GAAch/I,GAEvB,IAAK,OACH,OAAOi/I,GAAaj/I,GAEtB,QACE,OAAOmwI,EAAY2H,cAAgB93I,EAAMxkE,MAAM6vB,OAAS20C,EAAMxkE,QAI9DujN,GAAmB,SAAA/+I,GAAK,OAAIA,EAAME,QAAU,EAAI,GAEhD8+I,GAAgB,SAAAh/I,GAAK,OAAIA,EAAME,QAAUF,EAAMxkE,MAAQ,MAEvDyjN,GAAe,SAAAj/I,GAAK,OAAIA,EAAMk/I,MAAMrjN,OAA4C,OAAnCmkE,EAAM7xC,aAAa,YAAuB6xC,EAAMk/I,MAAQl/I,EAAMk/I,MAAM,GAAK,MAEtHN,GAAqB,SAAC5kL,EAAUn/B,GACpC,IAAM2hE,EAAQ2sI,IAERgW,EAAsB,SAAAtH,GAAY,OAAIuH,GAAqBvkN,EAAOmlE,OAAOxD,EAAO6iJ,GAAmBxH,GAAeh9M,IAEpHutM,EAAevtM,EAAOg9M,eAAiBtP,EAAU1tM,EAAOg9M,eAC1D9C,GAAYrL,KACZpB,EAAUztM,EAAOg9M,cAAcj+L,MAAK,SAAAi+L,GAClC79K,EAASq/K,cACT8F,EAAoBtH,OAEkB,kBAAxBh9M,EAAOg9M,aACvBsH,EAAoBtkN,EAAOg9M,cAE3Bp0L,EAAM,yEAAyEqN,cAAcj2B,EAAOg9M,gBAIlGgH,GAAmB,SAAC7kL,EAAUn/B,GAClC,IAAMmlE,EAAQhmC,EAASuxK,WACvBhxE,GAAKv6D,GACLsoI,EAAUztM,EAAOy4F,YAAY15E,MAAK,SAAA05E,GAChCtzB,EAAMxkE,MAAyB,WAAjBX,EAAOmlE,MAAqBjoD,WAAWu7E,IAAe,EAAI,GAAGxiE,OAAOwiE,GAClFkpC,GAAKx8D,GACLA,EAAM1+D,QACN04B,EAASq/K,iBACRn/L,OAAM,SAAAwzF,GACPjqF,EAAM,gCAAgCqN,OAAO48E,IAC7C1tC,EAAMxkE,MAAQ,GACdghI,GAAKx8D,GACLA,EAAM1+D,QACN04B,EAASq/K,kBAIP+F,GAAuB,CAC3BhpL,OAAQ,SAAComC,EAAOq7I,EAAch9M,GAC5B,IAAMu7B,EAASq1K,GAAgBjvI,EAAOqsI,EAAYzyK,QAE5CkpL,EAAe,SAAC//M,EAAQggN,EAAazB,GACzC,IAAM70M,EAASzJ,SAASW,cAAc,UACtC8I,EAAOzN,MAAQsiN,EACfhT,EAAa7hM,EAAQs2M,GACrBt2M,EAAOy7E,SAAWrD,GAAWy8H,EAAajjN,EAAOy4F,YACjD/zF,EAAOyB,YAAYiI,IAGrB4uM,EAAa75M,SAAQ,SAAAwhN,GACnB,IAAM1B,EAAc0B,EAAY,GAC1BD,EAAcC,EAAY,GAKhC,GAAIpiN,MAAMC,QAAQkiN,GAAc,CAE9B,IAAME,EAAWjgN,SAASW,cAAc,YACxCs/M,EAAShrI,MAAQqpI,EACjB2B,EAASnvG,UAAW,EAEpBl6E,EAAOp1B,YAAYy+M,GACnBF,EAAYvhN,SAAQ,SAAA2qE,GAAC,OAAI22I,EAAaG,EAAU92I,EAAE,GAAIA,EAAE,YAGxD22I,EAAalpL,EAAQmpL,EAAazB,MAGtC1nL,EAAO90B,SAEToqM,MAAO,SAAClvI,EAAOq7I,EAAch9M,GAC3B,IAAM6wM,EAAQD,GAAgBjvI,EAAOqsI,EAAY6C,OACjDmM,EAAa75M,SAAQ,SAAAwhN,GACnB,IAAME,EAAaF,EAAY,GACzBG,EAAaH,EAAY,GACzBI,EAAapgN,SAASW,cAAc,SACpC0/M,EAAoBrgN,SAASW,cAAc,SACjDy/M,EAAWz1M,KAAO,QAClBy1M,EAAWxmM,KAAOyvL,EAAY6C,MAC9BkU,EAAWpkN,MAAQkkN,EAEfr+H,GAAWq+H,EAAY7kN,EAAOy4F,cAChCssH,EAAW1/I,SAAU,GAGvB,IAAMuU,EAAQj1E,SAASW,cAAc,QACrC2qM,EAAar2H,EAAOkrI,GACpBlrI,EAAMpnD,UAAYw7K,EAAYp0H,MAC9BorI,EAAkB7+M,YAAY4+M,GAC9BC,EAAkB7+M,YAAYyzE,GAC9Bi3H,EAAM1qM,YAAY6+M,MAEpB,IAAMzD,EAAS1Q,EAAMlrM,iBAAiB,SAElC47M,EAAOvgN,QACTugN,EAAO,GAAG96M,UASV+9M,GAAqB,SAArBA,EAAqBxH,GACzB,IAAMl6M,EAAS,GA0Bf,MAxBmB,qBAARm8K,KAAuB+9B,aAAwB/9B,IACxD+9B,EAAa75M,SAAQ,SAACxC,EAAOQ,GAC3B,IAAI8jN,EAAiBtkN,EAES,kBAAnBskN,IAETA,EAAiBT,EAAmBS,IAGtCniN,EAAOiD,KAAK,CAAC5E,EAAK8jN,OAGpB5iN,OAAOjB,KAAK47M,GAAc75M,SAAQ,SAAAhC,GAChC,IAAI8jN,EAAiBjI,EAAa77M,GAEJ,kBAAnB8jN,IAETA,EAAiBT,EAAmBS,IAGtCniN,EAAOiD,KAAK,CAAC5E,EAAK8jN,OAIfniN,GAGH0jF,GAAa,SAACy8H,EAAaxqH,GAC/B,OAAOA,GAAcA,EAAWnnF,aAAe2xM,EAAY3xM,YAGvD4zM,GAA2B,SAAA/lL,GAC/B,IAAMm2K,EAAcD,GAAaC,YAAYxpL,IAAIqT,GACjDA,EAASsiL,iBAELnM,EAAYnwI,MACdggJ,GAA6BhmL,EAAU,WAEvCykF,GAAQzkF,GAAU,IAGhBimL,GAAwB,SAAAjmL,GAC5B,IAAMm2K,EAAcD,GAAaC,YAAYxpL,IAAIqT,GACjDA,EAASsiL,iBAELnM,EAAY6H,uBACdgI,GAA6BhmL,EAAU,QAEvC4vK,GAAK5vK,GAAU,IAGbkmL,GAA0B,SAAClmL,EAAUmmL,GACzCnmL,EAASsiL,iBACT6D,EAAY7Y,EAAcvlL,SAGtBi+L,GAA+B,SAAChmL,EAAU7vB,GAG9C,IAAMgmM,EAAcD,GAAaC,YAAYxpL,IAAIqT,GAC3Cs5D,EAAawrH,GAAc9kL,EAAUm2K,GAEvCA,EAAY4H,eACdqI,GAAqBpmL,EAAUs5D,EAAYnpF,GACjC6vB,EAASuxK,WAAW8U,gBAGZ,SAATl2M,EACTy/L,GAAK5vK,EAAUs5D,GAEfmrB,GAAQzkF,EAAUs5D,IALlBt5D,EAASqiL,gBACTriL,EAASyiL,sBAAsBtM,EAAY8H,qBAQzCmI,GAAuB,SAACpmL,EAAUs5D,EAAYnpF,GAGlD,IAAMgmM,EAAcD,GAAaC,YAAYxpL,IAAIqT,GACjDA,EAASwiL,eACiBv6L,QAAQC,UAAUtI,MAAK,kBAAM0uL,EAAU6H,EAAY4H,eAAezkH,EAAY68G,EAAY8H,uBAClGr+L,MAAK,SAAAq+L,GACrBj+K,EAASqiL,gBACTriL,EAASuiL,cAELtE,EACFj+K,EAASyiL,sBAAsBxE,GACb,SAAT9tM,EACTy/L,GAAK5vK,EAAUs5D,GAEfmrB,GAAQzkF,EAAUs5D,OAKlBs2G,GAAO,SAAC5vK,EAAUx+B,GACtB,IAAM20M,EAAcD,GAAaC,YAAYxpL,IAAIqT,QAAYh/B,GAEzDm1M,EAAYyH,kBACd7C,GAAYpL,KAGVwG,EAAY8G,QACSh1L,QAAQC,UAAUtI,MAAK,kBAAM0uL,EAAU6H,EAAY8G,QAAQz7M,EAAO20M,EAAY8H,uBACtFr+L,MAAK,SAAA0mM,IACG,IAAjBA,EACFtmL,EAASq/K,cAETr/K,EAAS6lI,WAAW,CAClB+7C,UAAU,EACVpgN,MAA+B,qBAAjB8kN,EAA+B9kN,EAAQ8kN,OAK3DtmL,EAAS6lI,WAAW,CAClB+7C,UAAU,EACVpgN,WAKA+kN,GAAc,SAACvmL,EAAUx+B,GAC7Bw+B,EAAS6lI,WAAW,CAClB87C,aAAa,EACbngN,WAIEijH,GAAU,SAACzkF,EAAUx+B,GACzB,IAAM20M,EAAcD,GAAaC,YAAYxpL,IAAIqT,QAAYh/B,GAEzDm1M,EAAYwH,qBACd5C,KAGE5E,EAAY6G,YACdh9K,EAASkzK,yBACiBjrL,QAAQC,UAAUtI,MAAK,kBAAM0uL,EAAU6H,EAAY6G,WAAWx7M,EAAO20M,EAAY8H,uBACzFr+L,MAAK,SAAA4mM,GACjBjrL,GAAUk0K,OAA+C,IAApB+W,EACvCxmL,EAASq/K,cAETkH,GAAYvmL,EAAqC,qBAApBwmL,EAAkChlN,EAAQglN,OAI3ED,GAAYvmL,EAAUx+B,IAIpBilN,GAAoB,SAACzmL,EAAUo7K,EAAajF,EAAagQ,GACzD/K,EAAY8F,eAAiB9F,EAAYiG,sBAC3CjG,EAAY8F,cAAcvyL,oBAAoB,UAAWysL,EAAY+F,eAAgB,CACnFC,QAAShG,EAAY2B,yBAEvB3B,EAAYiG,qBAAsB,GAG/BlL,EAAYzC,QACf0H,EAAY+F,eAAiB,SAAAt7M,GAAC,OAAIs7M,GAAenhL,EAAUn6B,EAAGsgN,IAE9D/K,EAAY8F,cAAgB/K,EAAY4G,uBAAyBj2M,OAASqoM,IAC1EiM,EAAY2B,uBAAyB5G,EAAY4G,uBACjD3B,EAAY8F,cAAc3yL,iBAAiB,UAAW6sL,EAAY+F,eAAgB,CAChFC,QAAShG,EAAY2B,yBAEvB3B,EAAYiG,qBAAsB,IAIhCnwD,GAAW,SAACilD,EAAa32L,EAAOknM,GACpC,IAAMC,EAAoBrW,IAE1B,GAAIqW,EAAkB9kN,OASpB,OARA2d,GAAgBknM,KAEFC,EAAkB9kN,OAC9B2d,EAAQ,GACY,IAAXA,IACTA,EAAQmnM,EAAkB9kN,OAAS,GAG9B8kN,EAAkBnnM,GAAOlY,QAIlC6nM,IAAW7nM,SAEPs/M,GAAsB,CAAC,aAAc,aACrCC,GAA0B,CAAC,YAAa,WAExC1F,GAAiB,SAACnhL,EAAUn6B,EAAGsgN,GACnC,IAAMhQ,EAAcD,GAAaC,YAAYxpL,IAAIqT,GAE5Cm2K,IAIDA,EAAY2G,wBACdj3M,EAAEy6M,kBAIU,UAAVz6M,EAAE7D,IACJ8kN,GAAY9mL,EAAUn6B,EAAGswM,GACN,QAAVtwM,EAAE7D,IACX+kN,GAAUlhN,EAAGswM,GACJ,GAAAr/K,OAAI8vL,GAAwBC,IAAyBxgC,SAASxgL,EAAE7D,KACzEglN,GAAanhN,EAAE7D,KACI,WAAV6D,EAAE7D,KACXilN,GAAUphN,EAAGswM,EAAagQ,KAIxBW,GAAc,SAAC9mL,EAAUn6B,EAAGswM,GAEhC,IAAItwM,EAAEqhN,aAIFrhN,EAAEo8B,QAAUjC,EAASuxK,YAAc1rM,EAAEo8B,OAAO/6B,YAAc84B,EAASuxK,WAAWrqM,UAAW,CAC3F,GAAI,CAAC,WAAY,QAAQm/K,SAAS8vB,EAAYnwI,OAC5C,OAGFs0I,KACAz0M,EAAEyrC,mBAIAy1K,GAAY,SAAClhN,EAAGswM,GAKpB,IAJA,IAAMxyC,EAAgB99J,EAAEo8B,OAClB0kL,EAAoBrW,IACtB6W,GAAY,EAEPvlN,EAAI,EAAGA,EAAI+kN,EAAkB9kN,OAAQD,IAC5C,GAAI+hK,IAAkBgjD,EAAkB/kN,GAAI,CAC1CulN,EAAWvlN,EACX,MAICiE,EAAEs0C,SAKL+2G,GAASilD,EAAagR,GAAW,GAHjCj2D,GAASilD,EAAagR,EAAU,GAMlCthN,EAAEy6M,kBACFz6M,EAAEyrC,kBAGE01K,GAAe,SAAAhlN,GAKnB,GAAK,CAJiB0tM,IACHC,IACEK,KAE0B3pB,SAAS7gL,SAASo1F,eAAjE,CAIA,IAAM4kD,EAAUonE,GAAoBvgC,SAASrkL,GAAO,qBAAuB,yBACrEolN,EAAgB5hN,SAASo1F,cAAc4kD,GAEzC4nE,GACFA,EAAc9/M,UAIZ2/M,GAAY,SAACphN,EAAGswM,EAAagQ,GAC7BhY,EAAegI,EAAYyG,kBAC7B/2M,EAAEyrC,iBACF60K,EAAY7Y,EAAcE,OAIxB6Z,GAAmB,SAACrnL,EAAUo2K,EAAU+P,GACxBjQ,GAAaC,YAAYxpL,IAAIqT,GAEjC0zK,MACd4T,GAAiBtnL,EAAUo2K,EAAU+P,IAIrCoB,GAAqBnR,GAErBoR,GAAyBpR,GACzBqR,GAAiBznL,EAAUo2K,EAAU+P,KAInCmB,GAAmB,SAACtnL,EAAUo2K,EAAU+P,GAE5C/P,EAAS5zI,MAAMotE,QAAU,WACvB,IAAMumE,EAAcD,GAAaC,YAAYxpL,IAAIqT,GAE7Cm2K,EAAYtB,mBAAqBsB,EAAYrB,gBAAkBqB,EAAYpB,kBAAoBoB,EAAYkC,iBAAmBlC,EAAY7iI,OAAS6iI,EAAYnwI,OAInKmgJ,EAAY7Y,EAAcjmM,SAI1BqgN,IAAqB,EAEnBH,GAAuB,SAAAnR,GAC3BA,EAAS5zI,MAAMmlJ,YAAc,WAC3BvR,EAASt8G,UAAU8tH,UAAY,SAAU/hN,GACvCuwM,EAASt8G,UAAU8tH,eAAY5mN,EAG3B6E,EAAEo8B,SAAWm0K,EAASt8G,YACxB4tH,IAAqB,MAMvBF,GAA2B,SAAApR,GAC/BA,EAASt8G,UAAU6tH,YAAc,WAC/BvR,EAAS5zI,MAAMolJ,UAAY,SAAU/hN,GACnCuwM,EAAS5zI,MAAMolJ,eAAY5mN,GAEvB6E,EAAEo8B,SAAWm0K,EAAS5zI,OAAS4zI,EAAS5zI,MAAMjrC,SAAS1xB,EAAEo8B,WAC3DylL,IAAqB,MAMvBD,GAAmB,SAACznL,EAAUo2K,EAAU+P,GAC5C/P,EAASt8G,UAAU81C,QAAU,SAAA/pI,GAC3B,IAAMswM,EAAcD,GAAaC,YAAYxpL,IAAIqT,GAE7C0nL,GACFA,IAAqB,EAInB7hN,EAAEo8B,SAAWm0K,EAASt8G,WAAaq0G,EAAegI,EAAYwG,oBAChEwJ,EAAY7Y,EAAcC,YAKhC,SAASsa,GAAMC,GAA8B,IAAlBnN,EAAW/2M,UAAA/B,OAAA,QAAAb,IAAA4C,UAAA,GAAAA,UAAA,GAAG,GACvCs7M,GAAsBh8M,OAAO0rE,OAAO,GAAI+rI,EAAamN,IAEjD1M,GAAY2M,kBACd3M,GAAY2M,gBAAgB9F,WAExBxR,KACFoQ,MAIJzF,GAAY2M,gBAAkB/iN,KAC9B,IAAMmxM,EAAc6R,GAAcF,EAAYnN,GAC9CuI,GAAc/M,GACdjzM,OAAOmpI,OAAO8pE,GAEViF,GAAYj/E,UACdi/E,GAAYj/E,QAAQh3F,cACbi2K,GAAYj/E,SAIrBh3H,aAAai2M,GAAYK,qBACzB,IAAMrF,EAAW6R,GAAiBjjN,MAGlC,OAFA0vB,GAAO1vB,KAAMmxM,GACbD,GAAaC,YAAYtpL,IAAI7nB,KAAMmxM,GAC5B+R,GAAYljN,KAAMoxM,EAAUD,GAGrC,IAAM6R,GAAgB,SAACF,EAAYnN,GACjC,IAAMwN,EAAiB/E,GAAkB0E,GACnCjnN,EAASqC,OAAO0rE,OAAO,GAAI4tI,GAAe7B,EAAawN,EAAgBL,GAI7E,OAFAjnN,EAAOuwM,UAAYluM,OAAO0rE,OAAO,GAAI4tI,GAAcpL,UAAWvwM,EAAOuwM,WACrEvwM,EAAO47M,UAAYv5M,OAAO0rE,OAAO,GAAI4tI,GAAcC,UAAW57M,EAAO47M,WAC9D57M,GAGHqnN,GAAc,SAACloL,EAAUo2K,EAAUD,GACvC,OAAO,IAAIluL,SAAQ,SAAAC,GAEjB,IAAMi+L,EAAc,SAAAiC,GAClBpoL,EAAS6lI,WAAW,CAClBg8C,aAAa,EACbuG,aAIJtH,GAAeC,mBAAmBl0L,IAAImT,EAAU9X,GAEhDkuL,EAAS1B,cAAc9kE,QAAU,kBAAMm2E,GAAyB/lL,IAEhEo2K,EAASzB,WAAW/kE,QAAU,kBAAMq2E,GAAsBjmL,IAE1Do2K,EAASxB,aAAahlE,QAAU,kBAAMs2E,GAAwBlmL,EAAUmmL,IAExE/P,EAAS+B,YAAYvoE,QAAU,kBAAMu2E,EAAY7Y,EAAcjmM,QAE/DggN,GAAiBrnL,EAAUo2K,EAAU+P,GACrCM,GAAkBzmL,EAAUo7K,GAAajF,EAAagQ,GACtDxB,GAA2B3kL,EAAUm2K,GACrCiO,GAAUjO,GACVkS,GAAWjN,GAAajF,EAAagQ,GACrCmC,GAAUlS,EAAUD,GAEpB/wM,YAAW,WACTgxM,EAASt8G,UAAUlyD,UAAY,SAK/BqgL,GAAmB,SAAAjoL,GACvB,IAAMo2K,EAAW,CACf5zI,MAAO2sI,IACPr1G,UAAWi1G,IACX5tD,QAAS8uD,IACTyE,cAAehF,IACfiF,WAAYhF,IACZiF,aAAc5E,IACdD,OAAQD,IACRqI,YAAa/H,IACb6N,kBAAmBxO,IACnBsK,cAAevK,KAGjB,OADA0G,GAAaE,SAASvpL,IAAImT,EAAUo2K,GAC7BA,GAGHiS,GAAa,SAACE,EAAgBpS,EAAagQ,GAC/C,IAAM7T,EAAmBnC,IACzB5vE,GAAK+xE,GAED6D,EAAY7iI,QACdi1I,EAAepsF,QAAU,IAAI0mF,IAAM,WACjCsD,EAAY,gBACLoC,EAAepsF,UACrBg6E,EAAY7iI,OAEX6iI,EAAY7D,mBACd9vE,GAAK8vE,GACLltM,YAAW,WACLmjN,EAAepsF,SAAWosF,EAAepsF,QAAQ4/E,SAEnD1J,GAAwB8D,EAAY7iI,aAOxCg1I,GAAY,SAAClS,EAAUD,GAC3B,IAAIA,EAAYzC,MAIhB,OAAKvF,EAAegI,EAAY0G,oBAI3B2L,GAAYpS,EAAUD,IACzBjlD,GAASilD,GAAc,EAAG,IAJnBsS,MAQLD,GAAc,SAACpS,EAAUD,GAC7B,OAAIA,EAAYsH,WAAaliL,GAAU66K,EAASzB,aAC9CyB,EAASzB,WAAWrtM,SACb,GAGL6uM,EAAYuH,aAAeniL,GAAU66K,EAASxB,eAChDwB,EAASxB,aAAattM,SACf,MAGL6uM,EAAYqH,eAAgBjiL,GAAU66K,EAAS1B,kBACjD0B,EAAS1B,cAAcptM,SAChB,IAMLmhN,GAAoB,WACpBjjN,SAASo1F,eAAwD,oBAAhCp1F,SAASo1F,cAAc2zE,MAC1D/oK,SAASo1F,cAAc2zE,QAQ3B,SAAS1rE,GAAOhiG,GACd,IAAM2hE,EAAQ2sI,IACRgH,EAAcD,GAAaC,YAAYxpL,IAAI3nB,MAEjD,IAAKw9D,GAAS0uI,GAAS1uI,EAAO2zI,EAAYsG,UAAUj6I,OAClD,OAAOqrI,EAAK,8IAGd,IAAM6a,EAAuB,GAE7BxlN,OAAOjB,KAAKpB,GAAQmD,SAAQ,SAAAusH,GACtB4iF,GAAK0L,qBAAqBtuF,GAC5Bm4F,EAAqBn4F,GAAS1vH,EAAO0vH,GAErCs9E,EAAK,iCAAkC/2K,OAAOy5F,EAAO,iRAGzD,IAAMo4F,EAAgBzlN,OAAO0rE,OAAO,GAAIunI,EAAauS,GACrDh0L,GAAO1vB,KAAM2jN,GACbzS,GAAaC,YAAYtpL,IAAI7nB,KAAM2jN,GACnCzlN,OAAOujG,iBAAiBzhG,KAAM,CAC5BnE,OAAQ,CACNW,MAAO0B,OAAO0rE,OAAO,GAAI5pE,KAAKnE,OAAQA,GACtCozF,UAAU,EACVnnE,YAAY,KAKlB,SAASm1L,KACP,IAAM7L,EAAWF,GAAaE,SAASzpL,IAAI3nB,MACrCmxM,EAAcD,GAAaC,YAAYxpL,IAAI3nB,MAE5CmxM,IAKDC,EAAS5zI,OAAS44I,GAAY4G,iCAChC5G,GAAY4G,wCACL5G,GAAY4G,gCAIjB5G,GAAYwN,qBACdzjN,aAAai2M,GAAYwN,2BAClBxN,GAAYwN,oBAGiB,oBAA3BzS,EAAYmI,YACrBnI,EAAYmI,aAGduK,GAAY7jN,OAGd,IAyCI+iN,GAzCEc,GAAc,SAAA7oL,UAEXA,EAASn/B,cAETu6M,GAAY+F,sBACZ/F,GAAY8F,cAEnB4H,GAAc5S,IACd4S,GAAchI,WAEP1F,GAAY2M,iBAGfe,GAAgB,SAAAvnN,GACpB,IAAK,IAAMK,KAAKL,EACdA,EAAIK,GAAK,IAAIo+K,SAMb+oC,GAA+B7lN,OAAOmpI,OAAO,CAC/CgzE,YAAaA,GACb2J,eAAgB3J,GAChB9N,SAAUgO,GACVl4M,MAAOA,GACPw+J,WAAYx+J,GACZ4hN,WAAY5hN,GACZ6hN,WAAY7hN,GACZg7M,cAAeA,GACfC,eAAgBA,GAChBC,YAAaA,GACbC,aAAcA,GACdC,sBAAuBA,GACvBvP,uBAAwByP,GACxBnT,iBAAkBoT,GAClBiF,MAAOA,GACPhlH,OAAQA,GACRo/G,SAAUA,KAKNkH,GAAU,WACd,SAAAA,IAEE,GAFmBt1H,EAAA,KAAAs1H,GAEG,qBAAXriN,OAAX,CAIAihN,GAAkB/iN,KAAK,QAAAokN,EAAAxlN,UAAA/B,OANVoD,EAAI,IAAA7B,MAAAgmN,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJpkN,EAAIokN,GAAAzlN,UAAAylN,GAOjB,IAAMC,EAAcpmN,OAAOmpI,OAAOrnI,KAAKzC,YAAYosM,aAAa1pM,IAChE/B,OAAOujG,iBAAiBzhG,KAAM,CAC5BnE,OAAQ,CACNW,MAAO8nN,EACPr1H,UAAU,EACVnnE,YAAY,EACZC,cAAc,KAIlB,IAAMpN,EAAU3a,KAAK6iN,MAAM7iN,KAAKnE,QAEhCq1M,GAAav2L,QAAQkN,IAAI7nB,KAAM2a,IAYhC,OAXCu0E,EAAAi1H,EAAA,EAAAnnN,IAAA,OAAAR,MAGF,SAAK+nN,GAEH,OADgBrT,GAAav2L,QAAQgN,IAAI3nB,MAC1B4a,KAAK2pM,KACrB,CAAAvnN,IAAA,UAAAR,MAED,SAAQgoN,GAEN,OADgBtT,GAAav2L,QAAQgN,IAAI3nB,MAC1BykN,QAAQD,OACxBL,EAhCa,GAqChBjmN,OAAO0rE,OAAOu6I,GAAWjoN,UAAW6nN,IAEpC7lN,OAAO0rE,OAAOu6I,GAAYhK,IAE1Bj8M,OAAOjB,KAAK8mN,IAAiB/kN,SAAQ,SAAAhC,GACnCmnN,GAAWnnN,GAAO,WACK,IAAA0nN,EAArB,GAAI3B,GACF,OAAO2B,EAAA3B,IAAgB/lN,GAAIZ,MAAAsoN,EAAA9lN,eAIjCulN,GAAW7b,cAAgBA,EAC3B6b,GAAWz9L,QAAU,SAErB,IAAMynL,GAAOgW,GAGb,OAFAhW,GAAKwW,QAAUxW,GAERA,GAviGyEyW,GA0iG9D,qBAAT5kN,MAAwBA,KAAK6kN,cAAe7kN,KAAK8kN,KAAO9kN,KAAK+kN,WAAa/kN,KAAKmuM,KAAOnuM,KAAKmkN,WAAankN,KAAK6kN,aAExH,oBAAoBrkN,UAAU,SAASK,EAAEmkN,GAAG,IAAI3nG,EAAEx8G,EAAEM,cAAc,SAAS,GAAGN,EAAEU,qBAAqB,QAAQ,GAAGS,YAAYq7G,GAAGA,EAAE4nG,WAAW5nG,EAAE4nG,WAAW3zG,WAAW+L,EAAE4nG,WAAWtmJ,QAAQqmJ,QAAQ,IAAI3nG,EAAEj7G,UAAU4iN,EAAE,MAAMnkN,GAAGw8G,EAAEjoB,UAAU4vH,GAA1M,CAA8MxkN,SAAS,8wsB,6BCjjGrP,oEAAI0kN,EAAsC,WAStC,OARAA,EAAWhnN,OAAO0rE,QAAU,SAASo7I,GACjC,IAAK,IAAIr7M,EAAG/M,EAAI,EAAGygH,EAAIz+G,UAAU/B,OAAQD,EAAIygH,EAAGzgH,IAE5C,IAAK,IAAI6U,KADT9H,EAAI/K,UAAUhC,GACOsB,OAAOhC,UAAUsD,eAAe8B,KAAKqI,EAAG8H,KACzDuzM,EAAEvzM,GAAK9H,EAAE8H,IAEjB,OAAOuzM,IAEK5oN,MAAM4D,KAAMpB,YAU5BumN,EAA6B,WAC7B,SAASA,IAELnlN,KAAKolN,sBAAwB,GAE7BplN,KAAKqlN,aAAe,GAEpBrlN,KAAKslN,aAAe,GAGpBtlN,KAAKulN,mBAAqB,GAE1BvlN,KAAKwlN,iBAAmB,GAExBxlN,KAAKylN,mBAAqB,GAE1BzlN,KAAKyxE,UAAY,EAEjBzxE,KAAK0lN,gBAAkB,GAEvB1lN,KAAK2lN,YAAc,EAEnB3lN,KAAK4lN,SAAW,EAEhB5lN,KAAK6lN,YAAc,EAEnB7lN,KAAK8lN,YAAc,EAEnB9lN,KAAK+lN,YAAc,EAEnB/lN,KAAKgmN,YAAc,EAEnBhmN,KAAKyjF,oBAAqB,EAE1BzjF,KAAKimN,iBAAmB,CAAE3tI,WAAY,GAAIE,cAAe,GAAI0tI,gBAAiB,EAAGC,mBAAoB,GAErGnmN,KAAKomN,SAAW,GAEhBpmN,KAAKqmN,SAAW,GAEhBrmN,KAAKsmN,eAAiB,GACtBtmN,KAAKumN,YAAc,GACnBvmN,KAAKwmN,YAAc,GACnBxmN,KAAKymN,WAAa,EAClBzmN,KAAK0mN,aAAc,EACnB1mN,KAAK2mN,OAAS,EACd3mN,KAAK4mN,YAAc,EACnB5mN,KAAK6mN,wBAAyB,EAC9B7mN,KAAK8mN,gBAAkB,EACvB9mN,KAAK+mN,gBAAkB,EACvB/mN,KAAKgnN,cAAgB,GACrBhnN,KAAKinN,eAAiB,GACtBjnN,KAAKknN,aAAe,GACpBlnN,KAAKmnN,gBAAkB,CAAEC,eAAgB,GAAI7qJ,OAAQ,IACrDv8D,KAAKqnN,cAAgB,KACrBrnN,KAAKsnN,iBAAmB,KACxBtnN,KAAKunN,qBAAsB,EAC3BvnN,KAAKwnN,wBAAyB,EAC9BxnN,KAAKynN,6BAA8B,EACnCznN,KAAK0nN,eAAiB,GAEtB1nN,KAAK2nN,WAAY,EAEjB3nN,KAAK6a,KAAO,GAEZ7a,KAAK4nN,WAAa,GAElB5nN,KAAK6nN,cAAgB,GAErB7nN,KAAK8nN,UAAY,GACjB9nN,KAAK+nN,sBAAuB,EAC5B/nN,KAAKowE,mBAAqB,GAC1BpwE,KAAKgoN,8BAA+B,EACpChoN,KAAKioN,wBAA0B,GAC/BjoN,KAAKkoN,WAAa,GAClBloN,KAAKmoN,qBAAuB,GAC5BnoN,KAAK8xE,aAAe,GACpB9xE,KAAKqd,YAAc,mHACnBrd,KAAK0P,YAAc,mCA61IvB,OAt1IAy1M,EAAYjpN,UAAUksN,aAAe,SAAUtmJ,EAAYumJ,EAAkBx/H,GAwCzE,IAAIzZ,EAwBJ,GA/DApvE,KAAKsoN,iBAAmBz/H,EACxB7oF,KAAKslN,aAAe,GACpBtlN,KAAKulN,mBAAqB,GAC1BvlN,KAAKwlN,iBAAmB,GACxBxlN,KAAKylN,mBAAqB,GAC1BzlN,KAAKyxE,UAAY,EACjBzxE,KAAK0lN,gBAAkB,GACvB1lN,KAAK2lN,YAAc,EACnB3lN,KAAK4lN,SAAW,EAChB5lN,KAAK6lN,YAAc,EACnB7lN,KAAK8lN,YAAc,EACnB9lN,KAAK+lN,YAAc,EACnB/lN,KAAKgmN,YAAc,EACnBhmN,KAAKywE,cAAgBrzE,YAAkB0kE,EAAW2O,eAAiB,GAAK3O,EAAW2O,cACnFzwE,KAAKyjF,oBAAqB,EAC1BzjF,KAAKimN,iBAAmB,CAAE3tI,WAAY,GAAIE,cAAe,GAAI0tI,gBAAiB,EAAGC,mBAAoB,GACrGnmN,KAAKumN,YAAc,GACnBvmN,KAAKwmN,YAAc,GACnBxmN,KAAKolN,sBAAwB,GAC7BplN,KAAKomN,SAAW,GAChBpmN,KAAKqmN,SAAW,GAChBrmN,KAAKymN,WAAa,EAClBzmN,KAAK0mN,aAAc,EACnB1mN,KAAK2mN,OAAS,EACd3mN,KAAK4mN,YAAc,EACnB5mN,KAAK6mN,wBAAyB,EAC9B7mN,KAAK8mN,gBAAkB,EACvB9mN,KAAK+mN,gBAAkB,EACvB/mN,KAAKgnN,cAAgB,GACrBhnN,KAAKinN,eAAiB,GACtBjnN,KAAKknN,aAAe,GACpBlnN,KAAKmnN,gBAAkB,CAAEC,eAAgB,GAAI7qJ,OAAQ,IACrDv8D,KAAKqnN,cAAgB,KACrBrnN,KAAKsnN,iBAAmB,KACxBtnN,KAAKunN,qBAAsB,EAC3BvnN,KAAKwnN,wBAAyB,EAC9BxnN,KAAKynN,6BAA8B,EACnCznN,KAAK0nN,eAAiB,GACtB1nN,KAAK2nN,WAAY,EAEjB3nN,KAAKuoN,UAAY,IAAI9sM,IACrBzb,KAAK+jF,UAAYskI,EAAmBA,EAAiBtkI,eAAY/nF,EACjEgE,KAAKwoN,WAAaH,EAAmBA,EAAiBG,WAAa,GACnExoN,KAAKyoN,aAAeJ,EAAmBA,EAAiBI,aAAe,GACvEzoN,KAAK0oN,WAAa5mJ,EAAWgP,cAC7B9wE,KAAKsyE,sBAAwBxQ,EAAWwQ,sBACxCtyE,KAAKqyE,sBAAsBj1E,YAAkB0kE,EAAWuQ,sBAA8BvQ,EAAWuQ,oBACjGryE,KAAK+xE,gBAAgB30E,YAAkB0kE,EAAWiQ,gBAAwBjQ,EAAWiQ,cACrF/xE,KAAKgyE,mBAAmB50E,YAAkB0kE,EAAWkQ,mBAA2BlQ,EAAWkQ,iBAC3FhyE,KAAKiyE,sBAAsB70E,YAAkB0kE,EAAWmQ,sBAA8BnQ,EAAWmQ,oBACjGjyE,KAAKkyE,kBAAkB90E,YAAkB0kE,EAAWoQ,kBAA0BpQ,EAAWoQ,gBACzFlyE,KAAKmyE,qBAAqB/0E,YAAkB0kE,EAAWqQ,qBAA6BrQ,EAAWqQ,mBAC/FnyE,KAAKoyE,wBAAwBh1E,YAAkB0kE,EAAWsQ,wBAAgCtQ,EAAWsQ,sBACrGpyE,KAAK4wE,iBAAmB9O,EAAW8O,iBACnC5wE,KAAK2oN,sBAAuB,EAC5B3oN,KAAKyjF,qBAAqB4kI,GAAmBA,EAAiB5kI,mBAC9DzjF,KAAK4oN,iBAAiBP,MAAoBA,EAAiBO,gBAAiBP,EAAiBO,gBAC7F5oN,KAAKqlN,aAAe,GACpBrlN,KAAKowE,mBAAqBtO,EACpBA,EAAWA,sBAAsBC,MACnC/hE,KAAK6a,KAAQvb,gBAAewiE,EAAWA,YAAc9hE,KAAK6a,MAAQ7a,KAAK6a,KAAKhe,OAAS,EACjFmD,KAAK6a,KAAOinD,EAAWA,YAE3B9hE,KAAK6a,MAAQ7a,KAAK6a,KAAK,GAAI,CAC3B,IAAK7a,KAAK62E,UAAW,CACO,QAApB/U,EAAW32D,KACXnL,KAAKovE,OAASpvE,KAAK6a,KAAKiP,QAGxB9pB,KAAKovE,OAASlxE,OAAOjB,KAAK+C,KAAK6a,KAAK,IAExC,IAAK,IAAIje,EAAI,EAAGA,EAAIoD,KAAKovE,OAAOvyE,OAAQD,IACpCoD,KAAK8nN,UAAU9nN,KAAKovE,OAAOxyE,IAA0B,QAApBklE,EAAW32D,KAAiBvO,EAAIoD,KAAKovE,OAAOxyE,GAGjFyrN,GAAoBA,EAAiBnjJ,cAAgBmjJ,EAAiBnjJ,aAAa6iJ,uBACnF/nN,KAAK4nN,WAAa5nN,KAAK6a,KACvB7a,KAAK6a,KAAO7a,KAAK6oN,kBAAkB/mJ,IAEvC9hE,KAAK8oE,KAAOhH,EAAWgH,KAAOhH,EAAWgH,KAAO,GAChD9oE,KAAK+5D,QAAU+H,EAAW/H,QAAU+H,EAAW/H,QAAU,GACzD/5D,KAAKgxE,QAAUlP,EAAWkP,QAAUlP,EAAWkP,QAAU,GACzDhxE,KAAKu8D,OAASuF,EAAWvF,OAASuF,EAAWvF,OAAS,GACtDv8D,KAAK8oN,QAAUhnJ,EAAW4P,eAAiB5P,EAAW4P,eAAiB,GACvE1xE,KAAKkmH,OAASpkD,EAAW9G,cAAgB8G,EAAW9G,cAAgB,GACpEh7D,KAAK4xE,wBAA0B9P,EAAW8P,wBAA0B9P,EAAW8P,wBAA0B,GACzG5xE,KAAK0oN,gBAA0C1sN,IAA7B8lE,EAAWgP,eAAqChP,EAAWgP,cAC7E9wE,KAAK8xE,aAAehQ,EAAWgQ,aAAehQ,EAAWgQ,aAAe,GACxE1C,EAASpvE,KAAK+oN,aAAa/oN,KAAK6a,MAChC,IAASje,EAAI,EAAGA,EAAIoD,KAAKovE,OAAOvyE,OAAQD,IACpCoD,KAAK8nN,UAAU9nN,KAAKovE,OAAOxyE,IAA0B,QAApBklE,EAAW32D,KAAiBvO,EAAIoD,KAAKovE,OAAOxyE,GAEjFoD,KAAKgpN,gBAAgBlnJ,GACrB9hE,KAAKipN,eAAejpN,KAAKkpN,sBAAuBpnJ,EAAW8O,mBAA2B9O,EAAW4O,UACjG1wE,KAAKqxE,eACDvP,EAAWuP,eAAkBrxE,KAAKkpN,qBAAuBpnJ,EAAW8O,iBAAoB,GAAK9O,EAAWuP,eAAiB,GAC7HrxE,KAAKmpN,eAAiBnpN,KAAKu8D,OAAO1/D,OAAS,EAC3CmD,KAAKyxE,UAAqC,QAAzB3P,EAAW2P,UAAsB,EAAI,EACtDzxE,KAAKopN,qBAAuBtnJ,EAAW2Q,sBAAwB3Q,EAAW2Q,sBAAwB,GAClGzyE,KAAK+mN,gBAAqC,IAAnB/mN,KAAKyxE,UAAkBzxE,KAAKu8D,OAAO1/D,OAAS,EACnEmD,KAAK8mN,gBAAqC,IAAnB9mN,KAAKyxE,UAAkBzxE,KAAKu8D,OAAO1/D,OAAS,EACnEmD,KAAKuxE,kBAAoBzP,EAAWyP,mBAChC,CAAEwD,UAAW,OAAQD,gBAAiB,IAAK/X,WAAY,GAAI8X,iBAAa74E,GAC5EgE,KAAKqpN,cAAgB,GACrBrpN,KAAKklE,aAAemjJ,EAAoBA,EAAiBnjJ,aAAemjJ,EAAiBnjJ,aAAellE,KAAKklE,kBACvGlpE,EACNgE,KAAK+nN,qBAAuB/nN,KAAKklE,cAAgBllE,KAAKklE,aAAa6iJ,qBACnE/nN,KAAKspN,eAAiBjB,EAAmBA,EAAiBiB,oBAAiBttN,EAC3EgE,KAAKspF,aAAala,EAAQpvE,KAAK0oN,WAAY5mJ,EAAW8O,kBACtD5wE,KAAKupN,uBAAuBznJ,EAAY5jE,OAAOjB,KAAK+C,KAAK62E,YACzD72E,KAAKwpN,iBAAiBxpN,KAAK6a,KAAM7a,KAAKwmN,aACtCxmN,KAAKypN,mBAAmB3nJ,EAAWqP,aAAcnxE,KAAK0oN,YACtD1oN,KAAKumN,YAAcvmN,KAAK0pN,oBAAoB1pN,KAAK6a,MACjD7a,KAAK2pN,cAAgB,GACrB,IAAIC,EAAe5pN,KAAK+5D,QAAQl9D,OAAS,EAEzC,IADAmD,KAAKkoN,WAAa,GACX0B,GAAgB,GACnB5pN,KAAKkoN,WAAWloN,KAAK+5D,QAAQ6vJ,GAAcxvM,MAAQpa,KAAK+5D,QAAQ6vJ,GAChEA,IAEJ5pN,KAAK6pN,oBAAoB/nJ,GACzB9hE,KAAK8pN,iBAAiBhoJ,KAG9BqjJ,EAAYjpN,UAAUqtN,uBAAyB,SAAUznJ,EAAYsN,GACjE,IAAI6U,EAAS,GACbA,EAAO,GAAKniB,EAAWgH,KACvBmb,EAAO,GAAKniB,EAAW/H,QACvBkqB,EAAO,GAAKniB,EAAWvF,OACvB0nB,EAAO,GAAKniB,EAAWkP,QAEvB,IADA,IAAIr7D,EAAM,EACHA,EAAM,GAAG,CACZ,GAAIsuE,EAAOtuE,GACP,IAAK,IAAIoW,EAAM,EAAGA,EAAMk4D,EAAOtuE,GAAK9Y,OAAQkvB,KACnC/rB,KAAKywE,cAActyE,QAAQ8lF,EAAOtuE,GAAKoW,GAAK3R,OAAS,IAAQhd,YAAkBgyE,KAAsD,IAA3CA,EAAOjxE,QAAQ8lF,EAAOtuE,GAAKoW,GAAK3R,SAC3H6pE,EAAOtuE,GAAKmE,OAAOiS,EAAK,GACxBA,KAIZpW,MAIRwvM,EAAYjpN,UAAU2sN,kBAAoB,SAAUz4I,GAChDpwE,KAAK6a,KAAO,GACZ,IAAK,IAAI7c,EAAK,EAAGuF,EAAKvD,KAAK4nN,WAAY5pN,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzD,IAAI6c,EAAOtX,EAAGvF,GACdgC,KAAK6a,KAAK7a,KAAK6a,KAAKhe,QAAUmD,KAAK+pN,oBAAoBlvM,GAE3D,IAAImvM,EAAc55I,EAAmB7T,OAAOrrC,QAAO,SAAUsqB,GACzD,MAAqB,UAAdA,EAAKrwC,MAAkC,kBAAdqwC,EAAKrwC,QACtC1G,KAAI,SAAU+2C,GAAQ,OAAOA,EAAKphC,QACjC6vM,EAAgBD,EAAYntN,OAAS,EACrCqtN,EAAWlqN,KAAK6a,KAChBsvM,EAAe/5I,EAAmBtH,KAAKh3C,OAAOs+C,EAAmBrW,QAAQjoC,OAAOs+C,EAAmBY,UAAUvsE,KAAI,SAAU+2C,GAC3H,OAAOA,EAAKphC,QAEZgwM,EAAe,GACfC,EAAY,GAChBrqN,KAAK6nN,cAAgB,GAGrB,IAFA,IAAIyC,EAAY,GACZC,EAAc,EACT3tN,EAAI,EAAGA,EAAIstN,EAASrtN,OAAQD,IAAK,CACtC,IAAI4tN,EAAWN,EAASttN,GACpBw9E,EAAU,GACd,GAAI6vI,EACA,IAAK,IAAIQ,EAAO,EAAGA,EAAOT,EAAYntN,OAAQ4tN,IAC1CD,EAASxqN,KAAK8nN,UAAUkC,EAAYS,KAAUrtN,YAAkBotN,EAASxqN,KAAK8nN,UAAUkC,EAAYS,MAAWD,EAASxqN,KAAK8nN,UAAUkC,EAAYS,KAAU,EAGrK,IAAK,IAAIC,EAAO,EAAGA,EAAOP,EAAattN,OAAQ6tN,IAC3CtwI,EAAQx4E,KAAK4oN,EAASxqN,KAAK8nN,UAAUqC,EAAaO,MAEtD,IAAIC,EAAavwI,EAAQz1E,KAAK,KAC9B,GAAIylN,EAAaO,GAAa,CAC1B,IAASF,EAAO,EAAGA,EAAOr6I,EAAmB7T,OAAO1/D,OAAQ4tN,IAAQ,CAChE,IAAIG,EAAgBx6I,EAAmB7T,OAAOkuJ,GAAMrwM,KAChDywM,EAAYL,EAASxqN,KAAK8nN,UAAU8C,IACpCE,EAAYV,EAAaO,GACzBI,EAAW36I,EAAmB7T,OAAOkuJ,GAAMt/M,KAC1C/N,YAAkBytN,KACM,kBAAdA,GAAuC,kBAAbE,IACjCA,EAAW,SAEX3tN,YAAkB0tN,EAAUF,IAC5BE,EAAUF,GAA8B,YAAbG,EAAyB,EAAmB,QAAbA,GAAmC,QAAbA,OAC1E/uN,EAAY,EAEuB,kBAA7B8uN,EAAUF,KACtBE,EAAUF,GAAiB,GAEd,UAAbG,EACAD,EAAUF,IAAkB,EAEV,QAAbG,EACA3tN,YAAkB0tN,EAAUF,MAC7BE,EAAUF,GAAiBE,EAAUF,GAAiBC,EAClDA,EAAYC,EAAUF,IAGZ,QAAbG,EACA3tN,YAAkB0tN,EAAUF,MAC7BE,EAAUF,GAAiBE,EAAUF,GAAiBC,EAClDA,EAAYC,EAAUF,IAGZ,YAAbG,EACLD,EAAUF,IAAkBC,EAG5BC,EAAUF,IAAkBC,GAIpC7qN,KAAK4oN,gBACL5oN,KAAK6nN,cAAcyC,EAAUK,IAAa/oN,KAAKhF,QAInDwtN,EAAaO,GAAcH,EAC3BH,EAAUzoN,KAAK4oN,GACXxqN,KAAK4oN,iBACL5oN,KAAK6nN,cAAc0C,GAAe,CAAC3tN,GACnC0tN,EAAUK,GAAcJ,EACxBA,KAIZ,OAAOF,GAEXlF,EAAYjpN,UAAU6sN,aAAe,SAAUluM,GAgZ3C,IA/YA,IAAI9a,EAAQC,KACRgrN,EAAcnwM,EAAK,GACnBhc,EAAU,SAAUkpF,GACpB,IAAIvR,EAAYuR,EAAM3tE,KAClB64D,EAAU8U,EAAM9U,QACpB,KAAInpC,EAAOslC,OAAOjxE,QAAQq4E,IAAc,GAsYpC,MAAO,CAAEh6E,MAAOwuN,GArYhB,IAAIC,EAAc,GACdC,OAAuB,EAC3B,GAAmB,SAAfnjI,EAAM58E,MAAmB2+B,EAAOw8K,eAAe9vI,GAC/C,MAAO,CAAEh6E,MAAOwuN,GAEf,GAAmB,WAAfjjI,EAAM58E,KAAmB,CAC9B,GAAkD,WAA9CyjE,IAAUC,QAAQm8I,EAAYx0I,KAA6B1sC,EAAOw8K,eAAe9vI,GASjF,MAAO,CAAEh6E,MAAOwuN,GAPZjjI,EAAM3R,eACNv7D,EAAKgnE,MAAK,SAAU94E,EAAGpB,GAAK,OAAQsuC,OAAOltC,EAAEhJ,EAAM+nN,UAAUtxI,KAAevgC,OAAOtuC,EAAE5H,EAAM+nN,UAAUtxI,KAC/F,EAAMvgC,OAAOtuC,EAAE5H,EAAM+nN,UAAUtxI,KAAevgC,OAAOltC,EAAEhJ,EAAM+nN,UAAUtxI,MACtE,EAAI,UAOlB,GAAmB,WAAfuR,EAAM58E,MAAqB2+B,EAAOslC,OAAOjxE,QAAQq4E,EAAY,kBAAoB,EACtF,MAAO,CAAEh6E,MAAOwuN,GAGpB,IADA,IAAIrpN,EAAMkZ,EAAKhe,OACR8E,KAAO,CACV,IAAI65C,EAAO3gC,EAAKlZ,GAChB,GAAI65C,EAAK1R,EAAOg+K,UAAUtxI,KAA8B,SAAfuR,EAAM58E,KAAiB,CAC5D,IAAIvC,EAAO,IAAIO,KAAKqyC,EAAK1R,EAAOg+K,UAAUtxI,IAAYrpE,YACtD,IAAK/P,YAAkBwL,IAASm/E,EAAM5R,cAAct5E,OAAS,EACzD,IAAK,IAAID,EAAI,EAAGiqI,EAAQ9+C,EAAM5R,cAAct5E,OAAQD,EAAIiqI,EAAOjqI,IAAK,CAChE,IAAI2F,EAAWwlF,EAAM5R,cAAcv5E,GAC/BuuN,EAAiBrhL,EAAOshL,SAASrjI,EAAOn/E,EAAKyZ,WAC7CgpM,EAAUz8I,IAAUK,UAAU,IAAI9lE,MACtC,OAAQ5G,GACJ,IAAK,QAGG0oN,EADIK,EAAgB1uN,IAAMmrF,EAAM5R,cAAct5E,OAAS,EAAK25E,EAAYA,EAAY,qBACxDj0E,EAC5BunC,EAAOg+K,UAAUwD,GAAmD,QAAnCxhL,EAAOsmC,mBAAmBjlE,KAAkB2+B,EAAOg+K,UAAUwD,GAAgBxhL,EAAOg+K,UAAUwD,GAAgBxhL,EAAOslC,OAAOvyE,OAAUyuN,GAC1H,IAAzCxhL,EAAOslC,OAAOjxE,QAAQmtN,IACtBxhL,EAAOslC,OAAOxtE,KAAK0pN,GAEvB9vK,EAAK1R,EAAOg+K,UAAUwD,IAAkBH,OAAiBnvN,EAAY,IAAImN,KAAKkiN,EAAQ90M,YAAY3N,EAAKzB,gBAAgBgG,WAE3H,MACJ,IAAK,WAGG89M,EADIK,EAAgB1uN,IAAMmrF,EAAM5R,cAAct5E,OAAS,EAAK25E,EAAYA,EAAY,wBACxDj0E,EAC5B,IAAIyE,EAAQO,KAAKu3D,MAAMl2D,EAAK3B,WAAa,GAAK,GAC9C6iC,EAAOg+K,UAAUwD,GAAmD,QAAnCxhL,EAAOsmC,mBAAmBjlE,KAAkB2+B,EAAOg+K,UAAUwD,GAAgBxhL,EAAOg+K,UAAUwD,GAAgBxhL,EAAOslC,OAAOvyE,OAAUyuN,GAC1H,IAAzCxhL,EAAOslC,OAAOjxE,QAAQmtN,IACtBxhL,EAAOslC,OAAOxtE,KAAK0pN,GAEvB9vK,EAAK1R,EAAOg+K,UAAUwD,IAAkBH,OAAiBnvN,GAAc8tC,EAAOi6C,UAAYj6C,EAAOi6C,UAAUltC,YAAY,OAAS,OAAS7vC,EAAMmG,WAEnJ,MACJ,IAAK,cAGG89M,EADIK,EAAgB1uN,IAAMmrF,EAAM5R,cAAct5E,OAAS,EAAK25E,EAAYA,EAAY,2BACxDj0E,EACxByE,EAAQO,KAAKu3D,MAAMl2D,EAAK3B,WAAa,GAAK,GAC9C6iC,EAAOg+K,UAAUwD,GAAmD,QAAnCxhL,EAAOsmC,mBAAmBjlE,KAAkB2+B,EAAOg+K,UAAUwD,GAAgBxhL,EAAOg+K,UAAUwD,GAAgBxhL,EAAOslC,OAAOvyE,OAAUyuN,GAC1H,IAAzCxhL,EAAOslC,OAAOjxE,QAAQmtN,IACtBxhL,EAAOslC,OAAOxtE,KAAK0pN,GAEvB9vK,EAAK1R,EAAOg+K,UAAUwD,IAAkBH,OAAiBnvN,GACnD8tC,EAAOi6C,UAAYj6C,EAAOi6C,UAAUltC,YAAY,OAAS,OAAS7vC,EAAMmG,WAAa,KAChF28B,EAAOi6C,UAAYj6C,EAAOi6C,UAAUltC,YAAY,MAAQ,MAAQ,IACjEjuC,EAAKzB,cAAcgG,WAEjC,MACJ,IAAK,SAGG89M,EADIK,EAAgB1uN,IAAMmrF,EAAM5R,cAAct5E,OAAS,EAAK25E,EAAYA,EAAY,sBACxDj0E,EAC5BunC,EAAOg+K,UAAUwD,GAAmD,QAAnCxhL,EAAOsmC,mBAAmBjlE,KAAkB2+B,EAAOg+K,UAAUwD,GAAgBxhL,EAAOg+K,UAAUwD,GAAgBxhL,EAAOslC,OAAOvyE,OAAUyuN,GAC1H,IAAzCxhL,EAAOslC,OAAOjxE,QAAQmtN,IACtBxhL,EAAOslC,OAAOxtE,KAAK0pN,GAEvB9vK,EAAK1R,EAAOg+K,UAAUwD,IAAkBH,OAAiBnvN,EAAY,IAAImN,KAAKkiN,EAAQE,SAAS3iN,EAAK3B,WAAYokN,EAAQtkN,YAAYoG,WAExI,MACJ,IAAK,OAGG89M,EADIK,EAAgB1uN,IAAMmrF,EAAM5R,cAAct5E,OAAS,EAAK25E,EAAYA,EAAY,oBACxDj0E,EAC5BunC,EAAOg+K,UAAUwD,GAAmD,QAAnCxhL,EAAOsmC,mBAAmBjlE,KAAkB2+B,EAAOg+K,UAAUwD,GAAgBxhL,EAAOg+K,UAAUwD,GAAgBxhL,EAAOslC,OAAOvyE,OAAUyuN,GAC1H,IAAzCxhL,EAAOslC,OAAOjxE,QAAQmtN,IACtBxhL,EAAOslC,OAAOxtE,KAAK0pN,GAEvB9vK,EAAK1R,EAAOg+K,UAAUwD,IAAkBH,OAAiBnvN,EAAY,IAAImN,KAAKkiN,EAAQE,SAAS3iN,EAAK3B,WAAY2B,EAAK7B,YAAYoG,WAErI,MACJ,IAAK,QAGG89M,EADIK,EAAgB1uN,IAAMmrF,EAAM5R,cAAct5E,OAAS,EAAK25E,EAAYA,EAAY,qBACxDj0E,EAC5BunC,EAAOg+K,UAAUwD,GAAmD,QAAnCxhL,EAAOsmC,mBAAmBjlE,KAAkB2+B,EAAOg+K,UAAUwD,GAAgBxhL,EAAOg+K,UAAUwD,GAAgBxhL,EAAOslC,OAAOvyE,OAAUyuN,GAC1H,IAAzCxhL,EAAOslC,OAAOjxE,QAAQmtN,IACtBxhL,EAAOslC,OAAOxtE,KAAK0pN,GAEvB9vK,EAAK1R,EAAOg+K,UAAUwD,IAAkBH,OAAiBnvN,EAAY,IAAImN,KAAKkiN,EAAQv0M,SAASlO,EAAK2E,aAAaJ,WAErH,MACJ,IAAK,UAGG89M,EADIK,EAAgB1uN,IAAMmrF,EAAM5R,cAAct5E,OAAS,EAAK25E,EAAYA,EAAY,uBACxDj0E,EAC5BunC,EAAOg+K,UAAUwD,GAAmD,QAAnCxhL,EAAOsmC,mBAAmBjlE,KAAkB2+B,EAAOg+K,UAAUwD,GAAgBxhL,EAAOg+K,UAAUwD,GAAgBxhL,EAAOslC,OAAOvyE,OAAUyuN,GAC1H,IAAzCxhL,EAAOslC,OAAOjxE,QAAQmtN,IACtBxhL,EAAOslC,OAAOxtE,KAAK0pN,GAEvB9vK,EAAK1R,EAAOg+K,UAAUwD,IAAkBH,OAAiBnvN,EAAY,IAAImN,KAAKkiN,EAAQr0M,WAAWpO,EAAKqO,eAAe9J,WAEzH,MACJ,IAAK,UAGG89M,EADIK,EAAgB1uN,IAAMmrF,EAAM5R,cAAct5E,OAAS,EAAK25E,EAAYA,EAAY,uBACxDj0E,EAC5BunC,EAAOg+K,UAAUwD,GAAmD,QAAnCxhL,EAAOsmC,mBAAmBjlE,KAAkB2+B,EAAOg+K,UAAUwD,GAAgBxhL,EAAOg+K,UAAUwD,GAAgBxhL,EAAOslC,OAAOvyE,OAAUyuN,GAC1H,IAAzCxhL,EAAOslC,OAAOjxE,QAAQmtN,IACtBxhL,EAAOslC,OAAOxtE,KAAK0pN,GAEvB9vK,EAAK1R,EAAOg+K,UAAUwD,IAAkBH,OAAiBnvN,EAAY,IAAImN,KAAKkiN,EAAQtoJ,WAAWn6D,EAAKo6D,eAAe71D,kBAOxI,GAAIquC,EAAK1R,EAAOg+K,UAAUtxI,KAA8B,WAAfuR,EAAM58E,KAAmB,CAC/DggN,EAAiBrhL,EAAOshL,SAASrjI,EAAO9xC,OAAOuF,EAAK1R,EAAOg+K,UAAUtxI,MACzEh7B,EAAK1R,EAAOg+K,UAAUtxI,IAAc20I,OAAiBnvN,EAAYw/C,EAAK1R,EAAOg+K,UAAUtxI,SAEtF,GAAIh7B,EAAK1R,EAAOg+K,UAAUtxI,KAA8B,WAAfuR,EAAM58E,MAAqB48E,EAAMhS,cAAgBgS,EAAMhS,aAAal5E,OAAS,EAIvH,IAHA,IAAIyuN,EAAe90I,EAAY,gBAC3BT,EAAegS,EAAMhS,aACrBihF,OAAa,EACDvvB,GAAP7qI,EAAI,EAAWm5E,EAAal5E,QAAQD,EAAI6qI,EAAO7qI,IAAK,CAErD,IAAI4uN,EAASz1I,EAAan5E,GAC1B,GAAI4uN,EAAOz3I,OAASy3I,EAAOz3I,MAAMl3E,OAAS,EAAG,CACzCquN,EAAuBI,EACvBxhL,EAAOg+K,UAAUwD,GAAmD,QAAnCxhL,EAAOsmC,mBAAmBjlE,KAAkB2+B,EAAOg+K,UAAUwD,GAAgBxhL,EAAOg+K,UAAUwD,GAAgBxhL,EAAOslC,OAAOvyE,OAAUyuN,GAC1H,IAAzCxhL,EAAOslC,OAAOjxE,QAAQmtN,IACtBxhL,EAAOslC,OAAOxtE,KAAK0pN,GAEvB,IAAIG,GAAiG,IAAnF78I,IAAU7Q,QAAQviB,EAAK1R,EAAOg+K,UAAUtxI,IAAYrpE,WAAYq+M,EAAOz3I,OACzFv4B,EAAK1R,EAAOg+K,UAAUwD,IAAkBG,EAAeD,EAAOl1I,WAAkC,KAArBk1I,EAAOl1I,UAAoBk1I,EAAOl1I,UACzGxsC,EAAOi6C,UAAUltC,YAAY,SAAW,IAAMj6C,EAAKo6J,GAAcA,IAAex7G,EAAK1R,EAAOg+K,UAAUtxI,IAAYrpE,WAClH6pJ,EAAax7G,EAAK1R,EAAOg+K,UAAUtxI,IAAYrpE,WACnD6pJ,EAAax7G,EAAK1R,EAAOg+K,UAAUwD,KAOnD,IAFA,IACII,EAAgB,GACX1tN,EAAK,EAAGC,EAFbhB,GAAOiB,OAAOjB,KAAKu+C,GAESx9C,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAIhB,EAAMiB,EAAOD,GACjB0tN,EAAc9pN,OAAM45C,EAAKx+C,IAE7BguN,GAAmD,IAAlCU,EAAcvtN,SAAQ,IAAkBlB,GAAKJ,SAAWqB,OAAOjB,KAAK4d,EAAK,IAAIhe,OAAU2+C,EAAOwvK,EAInH,GAAmB,SAAfjjI,EAAM58E,KAAiB,CAMvB,IALA,IAAIwgN,GAAe,EACfC,EAAa,CAAC9hL,EAAOg/B,KAAMh/B,EAAOiwB,QAASjwB,EAAOyyB,OAAQzyB,EAAOknC,SACjEs5I,EAAYpsN,OAAOjB,KAAKguN,GACxBY,EAAO3tN,OAAOjB,KAAKqtN,GAAWztN,OAC9BivN,OAAa,EACRvoN,EAAK,EAAGwoN,EAAeH,EAAYroN,EAAKwoN,EAAalvN,OAAQ0G,IAAM,CACxE,IAAIwoC,EAAOggL,EAAaxoN,GACxB,IAAKooN,GAAgB5/K,EAAM,CACvB,IAAIhgB,EAAMggB,EAAKlvC,OAEf,IADID,EAAI,EACDA,EAAImvB,GAAK,CACZ,GAAIggB,EAAKnvC,GAAGwd,OAASo8D,EAAW,CAC5Bm1I,GAAe,EACf,IAAIK,EAAcjgL,EAAKnvC,GAIvB,IAHAmvC,EAAKjyB,OAAOld,EAAG,GAEfqvN,IADIA,GAAaniL,EAAOg/B,MACAh3C,OAAOgY,EAAOiwB,QAASjwB,EAAOyyB,OAAQzyB,EAAOknC,SAC9D66I,KAAQ,CACX,IAAIK,EAAYF,EAAY/4I,QAAU+4I,EAAY/4I,QAAU+4I,EAAY5xM,KACxE,GAAI0vB,EAAO2+K,aAAc,CACrB,IAAI0D,EAAeriL,EAAO2+K,aAAa3/I,KACvCqjJ,EACIA,EAAar6L,OAAOgY,EAAO2+K,aAAa1uJ,QAASjwB,EAAO2+K,aAAalsJ,OAAQzyB,EAAO2+K,aAAaz3I,SACrG,IAAIo7I,EAAax9I,IAAU8H,eAAe4zI,EAAUuB,GAAOM,GACvDC,IACAF,EAAYE,EAAWn5I,QAAUm5I,EAAWn5I,QAAUm5I,EAAWhyM,MAGzE,IAAKw0D,IAAU8H,eAAe4zI,EAAUuB,GAAOI,IAAa,CACxDH,EAAab,EAAYX,EAAUuB,IACnC,IAAIQ,EAAW,CACXjyM,KAAMkwM,EAAUuB,GAChB54I,SAAUnpC,EAAOi6C,UAAYj6C,EAAOi6C,UAAUltC,YAAYi1K,GAAcA,GAAc,KAAOI,EAAY,IACzG/gN,KAAM,QACNmoE,gBAAiB04I,EAAY14I,gBAC7BJ,UAAW84I,EAAY94I,UACvBC,SAAU64I,EAAY74I,SACtBI,eAAgBy4I,EAAYz4I,eAC5BC,aAAcw4I,EAAYx4I,aAC1BG,aAAcq4I,EAAYr4I,aAC1BF,eAAgBu4I,EAAYv4I,eAC5B1B,cAAei6I,EAAYt4I,kBAC3BE,iBAAkBo4I,EAAYp4I,kBAElC7nC,EAAKjyB,OAAOld,EAAG,EAAGyvN,IAG1B,MAEJzvN,IAEJ,GAAI+uN,EACA,OAKZ,IADAE,EAAO3tN,OAAOjB,KAAKqtN,GAAWztN,OACvBgvN,KAAQ,CACXC,EAAab,EAAYX,EAAUuB,IAC1BjvN,EAAI,EAAb,IAAK,IAAW0vN,EAAQxiL,EAAOg/K,QAAQjsN,OAAQD,EAAI0vN,EAAO1vN,IACtD,GAAIktC,EAAOg/K,QAAQlsN,GAAGwd,OAASkwM,EAAUuB,GAAO,CAC5C/hL,EAAOg/K,QAAQhvM,OAAOld,EAAG,GACzB,MAGR,GAAmB,aAAfkvN,GAA4C,gBAAfA,EAA8B,CAC3D,IAAIp6I,EAAiB,CACjBt3D,KAAMkwM,EAAUuB,GAChB1gN,KAAM,CAAC,QAAS,SAAU,QAAQhN,QAAQ2tN,IAAe,EAAI,OAAS,OACtE9gN,OAAyB,UAAf8gN,EAA0B,OAAyB,WAAfA,EAA2B,MACrD,SAAfA,EAAyB,QAA0B,UAAfA,EAA0B,OAC3C,YAAfA,EAA4B,MAAwB,YAAfA,EAA4B,WAAQ9vN,GAEtF8tC,EAAOg/K,QAAQlnN,KAAK8vE,UAI3B,GAAmB,WAAfqW,EAAM58E,MAAqB48E,EAAM3R,cAAe,CAErD,IAAIm2I,OAAa,EACbC,OAAW,EACXC,OAAc,EACdC,OAAY,EACZp9I,EAAY,GACZq9I,EAAc,GACdC,EAAa/xM,EAAKhe,OAClBkvB,EAAM,EAEV,IADA+d,EAAOw8K,eAAe9vI,GAAaA,EAC5BzqD,EAAM6gM,GACTD,EAAY/qN,KAAKq0C,OAAOp7B,EAAKkR,GAAK+d,EAAOg+K,UAAUtxI,MAC/C37D,EAAKkR,GAAK+d,EAAOg+K,UAAUtxI,MAAsF,IAAvElH,EAAUnxE,QAAQ83C,OAAOp7B,EAAKkR,GAAK+d,EAAOg+K,UAAUtxI,OAC9FlH,EAAU1tE,KAAKq0C,OAAOp7B,EAAKkR,GAAK+d,EAAOg+K,UAAUtxI,MAErDzqD,IAGJ,IADA,IAAI8gM,EAAkBtlN,KAAK8L,IAAIjX,MAAMmL,KAAM+nE,GAChBw9I,IAAlBlwN,EAAI0yE,EAAU,GAAYu9I,GAAiBjwN,EAAIkwN,GAAOlwN,IAC3D,GAAI+vN,EAAYxuN,QAAQvB,GAAK,EAAG,CAC5B,IAAImwN,GAAgBjjL,EAAOkjL,UAAUnyM,EAAK,IAC1CkyM,GAAcjjL,EAAOg+K,UAAUtxI,IAAc55E,EAC7C,IAAI4d,GAAQmyM,EAAYj7M,YAAY9U,EAAI,GACxC+vN,EAAY7yM,OAAOU,GAAQ,EAAG,EAAG5d,GACjCie,EAAKf,OAAOU,GAAQ,EAAG,EAAGuyM,IAKlC,IAFAH,EAAa/xM,EAAKhe,OAClBkvB,EAAM,EACCA,EAAM6gM,GAAY,CACrB,GAAI/xM,EAAKkR,IAAQlR,EAAKkR,GAAK+d,EAAOg+K,UAAUtxI,IAAa,CAErDk2I,GADAD,EAAcx2K,OAAOp7B,EAAKkR,GAAK+d,EAAOg+K,UAAUtxI,OACrBuR,EAAM3R,cAAgB,GAEjDo2I,EAAcA,EAA8EA,EAAWK,EAAmBA,EAAkBL,EAAhHE,EAAYG,EAAmBA,EAAkBH,EACzED,IAFJF,EAAeA,GAAcE,IAEIA,GAAeD,EAC5C3xM,EAAKkR,GAAK+d,EAAOg+K,UAAUtxI,IAAgB+1I,IAAeC,EAAYD,EAAWp/M,WAAao/M,EAAWp/M,WAAa,IAAMq/M,EAASr/M,WAEhIs/M,EAAcD,GAAYC,IAAgBD,EAAW,IAE1DA,GADAD,EAAaC,EAAW,IACGzkI,EAAM3R,cAAgB,GAAKy2I,EAAmBA,EAAkBN,GAAcxkI,EAAM3R,cAAgB,GAC/Hv7D,EAAKkR,GAAK+d,EAAOg+K,UAAUtxI,IAAgB+1I,IAAeC,EAAYD,EAAWp/M,WAAao/M,EAAWp/M,WAAa,IAAMq/M,EAASr/M,YAGrIu+M,EAAgB,GACpB,IAFA,IAAIzuN,GAEK83B,GAAK,EAAGi4D,GAFb/vF,GAAOiB,OAAOjB,KAAK4d,EAAKkR,IAEIgJ,GAAKi4D,GAAOnwF,OAAQk4B,KAAM,CAClD/3B,EAAMgwF,GAAOj4D,IACjB22L,EAAc9pN,OAAMiZ,EAAKkR,GAAK/uB,IAElCguN,GAAmD,IAAlCU,EAAcvtN,SAAQ,IAAkBlB,GAAKJ,SAAWqB,OAAOjB,KAAK4d,EAAK,IAAIhe,OAAUge,EAAKkR,GAAOi/L,EAExHj/L,IAGJ,IADA,IACSoJ,GAAK,EAAG83L,GADbrB,EAAa,CAAC9hL,EAAOg/B,KAAMh/B,EAAOiwB,QAASjwB,EAAOyyB,OAAQzyB,EAAOknC,SACzB77C,GAAK83L,GAAapwN,OAAQs4B,KAAM,CACxE,IAAIi6C,GAAS69I,GAAa93L,IACtBqkC,GAAQoV,IAAU8H,eAAeF,EAAWpH,IAC5C5V,MACAA,GAAQA,GAAM3lC,WAAa2lC,GAAM3lC,WAAa2lC,IACxCruD,KAAO,SAIZvO,EAAI,EAAb,IAAK,IAAWswN,GAAQpjL,EAAOg/K,QAAQjsN,OAAQD,EAAIswN,GAAOtwN,IACtD,GAAIktC,EAAOg/K,QAAQlsN,GAAGwd,OAASo8D,EAAW,CACtC1sC,EAAOg/K,QAAQhvM,OAAOld,EAAG,GACzB,YAIP,GAAmB,WAAfmrF,EAAM58E,MAAqB+/M,EAAsB,CACtD,IAIIe,GAJAkB,GAAkBjC,EAElBS,GAAe,EACfC,EAAa,CAAC9hL,EAAOg/B,KAAMh/B,EAAOiwB,QAASjwB,EAAOyyB,OAAQzyB,EAAOknC,SAErEi7I,IADIA,GAAaniL,EAAOg/B,MACAh3C,OAAOgY,EAAOiwB,QAASjwB,EAAOyyB,OAAQzyB,EAAOknC,SACrE,IAAIzlE,GAAU,GACT0nE,GAAuB,KAAZA,IACZ1nE,GAAU4hN,GAAgBvqN,MAAM,mBAKpC,IAFA,IAAIwqN,GAAcx+I,IAAU8H,eAAeF,EAAU95E,QAAQ,iBAAkB,IAAKuvN,IAChFoB,GAAmBz+I,IAAU8H,eAAey2I,GAAiBlB,IACxD32L,GAAK,EAAGg4L,GAAe1B,EAAYt2L,GAAKg4L,GAAazwN,OAAQy4B,KAAM,CACpEyW,EAAOuhL,GAAah4L,IACxB,IAAKq2L,GAAgB5/K,EAAM,CAGvB,IAFIhgB,EAAMggB,EAAKlvC,OACXD,EAAI,EACDA,EAAImvB,GAAK,CACZ,GAAIggB,EAAKnvC,GAAGwd,OAAS2tE,EAAM3tE,OAASizM,GAAkB,CAClD1B,GAAe,EACXK,EAAcjgL,EAAKnvC,GACnByvN,EAAW,CACXjyM,KAAM+yM,GACNl6I,QAAWA,GAAuB,KAAZA,EAA0GA,GAAvFm6I,GAAYn6I,QAAUm6I,GAAYn6I,QAAUm6I,GAAYhzM,OAAS7O,GAAQ1O,OAAS,GAC3HsO,KAAM,QACNmoE,gBAAiB04I,EAAY14I,gBAC7BJ,UAAW84I,EAAY94I,UACvBC,SAAU64I,EAAY74I,SACtBpB,cAAei6I,EAAYt4I,kBAC3BE,iBAAkBo4I,EAAYp4I,iBAC9BL,eAAgBy4I,EAAYz4I,eAC5BC,aAAcw4I,EAAYx4I,aAC1BC,eAAgBu4I,EAAYv4I,eAC5BE,aAAcq4I,EAAYr4I,cAE9B5nC,EAAKjyB,OAAOld,EAAG,EAAGyvN,GAClB,MAEC,GAAItgL,EAAKnvC,GAAGwd,OAAS+yM,IAAmBE,GAAkB,CACvDhB,EAAW,CACXjyM,KAAMizM,GAAiBjzM,KACvB64D,QAAWA,GAAuB,KAAZA,EAA6CA,EAA3Bo6I,GAAiBp6I,QACzD9nE,KAAMkiN,GAAiBliN,KACvBmoE,gBAAiB+5I,GAAiB/5I,gBAClCJ,UAAWm6I,GAAiBn6I,UAC5BC,SAAUk6I,GAAiBl6I,SAC3BM,eAAgB45I,GAAiB55I,eACjC1B,cAAes7I,GAAiB35I,kBAChCE,iBAAkBy5I,GAAiBz5I,iBACnCL,eAAgB85I,GAAiB95I,eACjCC,aAAc65I,GAAiB75I,aAC/BG,aAAc05I,GAAiB15I,cAEnC5nC,EAAKjyB,OAAOld,EAAG,EAAGyvN,GAClB,MAEJzvN,IAEJ,GAAI+uN,EACA,OAIZ,IAAI4B,GAAc3+I,IAAU8H,eAAeF,EAAW5H,IAAU+C,oBAAoB7nC,EAAOg/K,UACvFyE,KACAA,GAAYnzM,KAAO+yM,GACnBrjL,EAAOg/K,QAAQlnN,KAAK2rN,KAI5BzjL,EAAOw8K,eAAiBhoN,YAAOwrC,EAAOw8K,eAAgB2E,IAM1DnhL,EAAS9pC,KACJhC,EAAK,EAAGuF,EAAKvD,KAAKkmH,OAAQloH,EAAKuF,EAAG1G,OAAQmB,IAAM,CACrD,IACIwvN,EAAU3uN,EADF0E,EAAGvF,IAEf,GAAuB,kBAAZwvN,EACP,OAAOA,EAAQhxN,MAGvB,OAAOwuN,GAGX7F,EAAYjpN,UAAU8wN,UAAY,SAAUnyM,GAIxC,IAHA,IAAIu0D,EAASlxE,OAAOjB,KAAK4d,GACrBw0D,EAAS,EACTC,EAAY,GACTD,EAASD,EAAOvyE,QACnByyE,EAAUF,EAAOC,SAAWrzE,EAC5BqzE,IAEJ,OAAOC,GAGX61I,EAAYjpN,UAAUkvN,SAAW,SAAUrjI,EAAO0lI,GAC9C,IAAIC,EACJ,GAAmB,SAAf3lI,EAAM58E,KAAiB,CACvB,IAAIwiN,EAAQ,IAAIxkN,KAAKskN,GACjBG,EAA0C,kBAAtB7lI,EAAM7R,WAA2B,IAAI/sE,KAAK4+E,EAAM7R,YAAc6R,EAAM7R,WACxF23I,EAAsC,kBAApB9lI,EAAM9R,SAAyB,IAAI9sE,KAAK4+E,EAAM9R,UAAY8R,EAAM9R,SAGlFy3I,KAFAE,GAAaD,EAAMtrM,UAAYurM,EAAUvrM,WACzCwrM,GAAWF,EAAMtrM,UAAYwrM,EAAQxrM,eAOxC,CACD,IAAIkqM,EAA2C,kBAAtBxkI,EAAM7R,WAA2B//D,SAAS4xE,EAAM7R,WAAY,IAAM6R,EAAM7R,WAC7Fs2I,EAAuC,kBAApBzkI,EAAM9R,SAAyB9/D,SAAS4xE,EAAM9R,SAAU,IAAM8R,EAAM9R,SAEvFy3I,KADAnB,GAAckB,EAASlB,GAAcC,GAAYiB,EAASjB,GAOlE,OAAOkB,GAEXvI,EAAYjpN,UAAU4xN,iBAAmB,SAAUC,EAAaC,GAC5D,IAAIC,EAAmB7wN,YAAkB2wN,EAAYC,KAAmB5wN,YAAkB4C,KAAKslN,aAAa0I,GAAchjN,aAAoFhP,EAAxEgE,KAAKslN,aAAa0I,GAAchjN,OAAQyM,cAAc7U,MAAM,UAClM,OAAQxF,YAAkB6wN,GAA8F,EAA3Eh4K,OAAQj2C,KAAKslN,aAAa0I,GAAchjN,OAAQtO,QAAQ,UAAW,MAEpHyoN,EAAYjpN,UAAUgyN,mBAAqB,SAAU9+I,GAEjD,IADA,IAAIrjD,EAAM/rB,KAAK8oN,QAAQjsN,OAChBkvB,KACH/rB,KAAKslN,aAAatlN,KAAK8oN,QAAQ/8L,GAAK3R,MAAQpa,KAAK8oN,QAAQ/8L,GACrD/rB,KAAK8oN,QAAQ/8L,GAAK5gB,OAClBnL,KAAKulN,mBAAmBvlN,KAAK8oN,QAAQ/8L,GAAK3R,MAAQ,CAC9C+zM,YAAanuN,KAAKuoN,UAAU5sM,cAAc3b,KAAK8oN,QAAQ/8L,IACvDqiM,WAAYpuN,KAAKuoN,UAAU5sM,cAAc,CACrC3Q,OAAQ,sBAAuBG,KAAMnL,KAAK8oN,QAAQ/8L,GAAK5gB,UAY3Eg6M,EAAYjpN,UAAUotF,aAAe,SAAUla,EAAQi/I,EAAQC,GAC3D,IAAInjN,EACAlO,EAAO+C,KAAKovE,OACZ68I,EAAa3tN,YAAO,GAAI0B,KAAK8oE,KAAM,MAAM,GAC7CmjJ,EAAaA,EAAWn6L,OAAO9xB,KAAK+5D,QAAS/5D,KAAKu8D,OAAQv8D,KAAKgxE,SAC/DhxE,KAAKkuN,mBAAmBjC,GACxBjsN,KAAKuuN,mBAAmBtxN,GACxBA,EAAO+C,KAAKovE,OACZ,IAAIo/I,EAAOxuN,KAAKywE,cAAc5zE,OAE9B,IADA2xN,GAAc,EACPA,GAAQ,GAAG,CACd,IAAIh0M,EAAQxa,KAAKovE,OAAOjxE,QAAQ6B,KAAKywE,cAAc+9I,KACpC,IAAXh0M,GACAxa,KAAKovE,OAAOt1D,OAAOU,EAAO,GAE1Bxa,KAAK62E,kBACE72E,KAAK62E,UAAU72E,KAAKywE,cAAc+9I,IAE7CA,IAEJ,IAAI7sN,EAAM1E,EAAKJ,OACX4xN,EAAY,CAAC,SAAU,SAAU,WAAY,OAAQ,WACzD,GAAIzuN,KAAKspN,eAEL,IADAtpN,KAAK62E,UAAY72E,KAAKspN,eACf3nN,KAAO,CACV,IAAI3E,EAAMC,EAAK0E,GACX63D,EAAQx5D,KAAK0uN,gBAAgB1xN,GAC7BgD,KAAK62E,UAAU75E,IACfgD,KAAK62E,UAAU75E,GAAKqlF,YAAa,EACjCriF,KAAK62E,UAAU75E,GAAKwd,MAAQ7Y,EAC5B3B,KAAK62E,UAAU75E,GAAKk0B,OAAS,GAC7BlxB,KAAK62E,UAAU75E,GAAK6kF,KAAOwsI,EAAS,YAAc,OAClDruN,KAAK62E,UAAU75E,GAAKulF,eAAgB,EACpCviF,KAAK62E,UAAU75E,GAAKklF,WAAa,GACjCliF,KAAK62E,UAAU75E,GAAKu2E,gBAAkB/Z,KAAS,mBAAoBA,IAC/DA,EAAM+Z,eACVvzE,KAAK62E,UAAU75E,GAAKy2E,gBAAkBja,KAAS,mBAAoBA,IAC/DA,EAAMia,eACVzzE,KAAK62E,UAAU75E,GAAKw2E,cAAgBha,KAAS,iBAAkBA,IAC3DA,EAAMga,aACVxzE,KAAK62E,UAAU75E,GAAK22E,cAAgBna,KAAS,iBAAkBA,IAC3DA,EAAMma,aACV3zE,KAAK62E,UAAU75E,GAAK02E,mBAAqBla,KAAS,sBAAuBA,IACrEA,EAAMka,kBACV1zE,KAAK62E,UAAU75E,GAAK42E,kBAAoBpa,KAAS,qBAAsBA,IACnEA,EAAMoa,iBACV5zE,KAAK62E,UAAU75E,GAAKo2E,qBAAqB5Z,KAAS,sBAAuBA,KACrEA,EAAM4Z,kBACVpzE,KAAK62E,UAAU75E,GAAKs2E,mBAAmB9Z,KAAS,oBAAqBA,KACjEA,EAAM8Z,gBACVtzE,KAAK62E,UAAU75E,GAAK+0E,eAAiBvY,KAAS,kBAAmBA,IAC7DA,EAAMuY,cACN/xE,KAAKkpN,qBAAuBoF,IAC5BtuN,KAAK62E,UAAU75E,GAAK0kF,WAAa,GACjC1hF,KAAK62E,UAAU75E,GAAKwkF,iBAAmB,GACvCxhF,KAAK62E,UAAU75E,GAAKo9E,QAAU,MAIlCjvE,EAAQquD,GAAS,aAAcA,GAASA,EAAMh1C,UAAYiqM,EAAUtwN,QAAQq7D,EAAMh1C,SAAS/M,gBAAkB,EACzG+hD,EAAMh1C,SAAS/M,cAAgBtM,EACnCnL,KAAK62E,UAAU75E,GAAO,CAClBi2E,QAAUzZ,GAAS,YAAaA,GAASA,EAAMyZ,QAAWzZ,EAAMyZ,QAAUj2E,EAC1Eyc,GAAIzc,EACJmO,MAA0C,IAAlCnO,EAAImB,QAAQ,mBAA6D,IAAhCnB,EAAImB,QAAQ,eACzD,cAAqBnC,IAATmP,GAA+B,cAATA,EAAwB,SAAWA,EACzEk3E,YAAY,EACZR,KAAMwsI,EAAS,YAAc,OAC7BnsI,WAAY,GACZ1nE,MAAO7Y,EACPuvB,OAAQ,GACRwxD,eAAmD,IAAlC1lF,EAAImB,QAAQ,mBAA6D,IAAhCnB,EAAImB,QAAQ,eACtEs1E,gBAAiBja,KAAS,mBAAoBA,IAC1CA,EAAMia,eACVF,gBAAiB/Z,KAAS,mBAAoBA,IAC1CA,EAAM+Z,eACVC,cAAeha,KAAS,iBAAkBA,IACtCA,EAAMga,aACVF,mBAAkB9Z,KAAS,oBAAqBA,KAC5CA,EAAM8Z,gBACVF,qBAAoB5Z,KAAS,sBAAuBA,KAChDA,EAAM4Z,kBACVO,cAAena,KAAS,iBAAkBA,IACtCA,EAAMma,aACVD,mBAAoBla,KAAS,sBAAuBA,IAChDA,EAAMka,kBACVE,kBAAmBpa,KAAS,qBAAsBA,IAC9CA,EAAMoa,iBACV7B,eAAgBvY,KAAS,kBAAmBA,IACxCA,EAAMuY,cACVkF,cAAgBzd,GAAS,SAAUA,EAASA,EAAMruD,KAE0B,aADnC,IAAlCnO,EAAImB,QAAQ,mBAA6D,IAAhCnB,EAAImB,QAAQ,eAA0B,cACpEnC,IAATmP,GAA+B,cAATA,EAAwB,SAAWA,GAAqB,MAAQ,QAC/F+nE,UAAY1Z,GAAS,cAAeA,EAChCA,EAAM0Z,eAAYl3E,EACtBm3E,SAAW3Z,GAAS,aAAcA,EAC9BA,EAAM2Z,cAAWn3E,SAOjC,IADAgE,KAAK62E,UAAY,GACVl1E,KAAO,CACN3E,EAAMC,EAAK0E,GAEfwJ,GADIquD,EAAQx5D,KAAK0uN,gBAAgB1xN,KAChB,aAAcw8D,GAASA,EAAMh1C,UAAYiqM,EAAUtwN,QAAQq7D,EAAMh1C,SAAS/M,gBAAkB,EACzG+hD,EAAMh1C,SAAS/M,cAAgBm3D,IAAUC,QAAQO,EAAOpvE,KAAK8nN,UAAU9qN,KAC3EgD,KAAK62E,UAAU75E,GAAO,CAClByc,GAAIzc,EACJi2E,QAAUzZ,GAAS,YAAaA,GAASA,EAAMyZ,QAAWzZ,EAAMyZ,QAAUj2E,EAC1EmO,MAA0C,IAAlCnO,EAAImB,QAAQ,mBAA6D,IAAhCnB,EAAImB,QAAQ,eACzD,cAAqBnC,IAATmP,GAA+B,cAATA,EAAwB,SAAWA,EACzE+2E,WAAY,GACZ1nE,MAAO7Y,EACPuvB,OAAQ,GACR2wD,KAAMwsI,EAAS,YAAc,OAC7BhsI,YAAY,EACZK,eAAmD,IAAlC1lF,EAAImB,QAAQ,mBAA6D,IAAhCnB,EAAImB,QAAQ,eACtEo1E,gBAAiB/Z,KAAS,mBAAoBA,IAC1CA,EAAM+Z,eACVE,gBAAiBja,KAAS,mBAAoBA,IAC1CA,EAAMia,eACVD,cAAeha,KAAS,iBAAkBA,IACtCA,EAAMga,aACVG,cAAena,KAAS,iBAAkBA,IACtCA,EAAMma,aACVD,mBAAoBla,KAAS,sBAAuBA,IAChDA,EAAMka,kBACVE,kBAAmBpa,KAAS,qBAAsBA,IAC9CA,EAAMoa,iBACV7B,eAAgBvY,KAAS,kBAAmBA,IACxCA,EAAMuY,cACVuB,mBAAkB9Z,KAAS,oBAAqBA,KAC5CA,EAAM8Z,gBACVF,qBAAoB5Z,KAAS,sBAAuBA,KAChDA,EAAM4Z,kBACV6D,cAAgBzd,GAAS,SAAUA,EAASA,EAAMruD,KAE0B,aADnC,IAAlCnO,EAAImB,QAAQ,mBAA6D,IAAhCnB,EAAImB,QAAQ,eAA0B,cACpEnC,IAATmP,GAA+B,cAATA,EAAwB,SAAWA,GAAqB,MAAQ,QAC/F+nE,UAAY1Z,GAAS,cAAeA,EAChCA,EAAM0Z,eAAYl3E,EACtBm3E,SAAW3Z,GAAS,aAAcA,EAC9BA,EAAM2Z,cAAWn3E,GAIjCgE,KAAK2uN,mBAAmB1C,IAE5B9G,EAAYjpN,UAAUwyN,gBAAkB,SAAU1xN,GAC9C,IAAIw8D,EAAQ,GACZ,GAAIx5D,KAAK8xE,aAAaj1E,OAAS,EAC3B,IAAK,IAAI2d,EAAQ,EAAGuR,EAAM/rB,KAAK8xE,aAAaj1E,OAAQ2d,EAAQuR,EAAKvR,IAC7D,GAAIxa,KAAK8xE,aAAat3D,GAAOJ,OAASpd,EAAK,CACvCw8D,EAAQx5D,KAAK8xE,aAAat3D,GAC1B,MAIZ,OAAOg/C,GAEX2rJ,EAAYjpN,UAAU0yN,gBAAkB,SAAUtF,GAG9C,IAFA,IAAIrsN,EAAO+C,KAAKovE,OACZztE,EAAM1E,EAAKJ,OACR8E,KACH3B,KAAK62E,UAAU55E,EAAK0E,IAAM4gF,cAAgB+mI,EAAersN,EAAK0E,IAAM4gF,eAG5E4iI,EAAYjpN,UAAUyyN,mBAAqB,SAAUv/I,GAGjD,IAFA,IAAIrjD,EAAMqjD,EAAOvyE,OACbkzE,EAAM/vE,KAAK4xE,wBAAwB/0E,OAChCkvB,KACH,GAAI/rB,KAAK62E,UAAUzH,EAAOrjD,GAAK3R,MAAO,CAClC,IAAIo/C,EAAQx5D,KAAK62E,UAAUzH,EAAOrjD,GAAK3R,MACvCo/C,EAAMruD,KAAOikE,EAAOrjD,GAAKvH,SAAW4qD,EAAOrjD,GAAKvH,SAAS/M,cAAgB+hD,EAAMruD,KAC/EquD,EAAMyZ,QAAU7D,EAAOrjD,GAAKknD,QAAU7D,EAAOrjD,GAAKknD,QAAU7D,EAAOrjD,GAAK3R,KACxEo/C,EAAM6oB,YAAa,EACnB7oB,EAAM8Z,gBAAkBlE,EAAOrjD,GAAKunD,gBACpC9Z,EAAMyd,cAAgB7H,EAAOrjD,GAAK5gB,KAClCquD,EAAM0Z,UAAY9D,EAAOrjD,GAAKmnD,UAC9B1Z,EAAM2Z,SAAW/D,EAAOrjD,GAAKonD,SAC7B3Z,EAAMoa,iBAAmBxE,EAAOrjD,GAAK6nD,iBACrCpa,EAAM+Z,eAAiBnE,EAAOrjD,GAAKwnD,eACnC/Z,EAAMga,aAAepE,EAAOrjD,GAAKynD,aACjCha,EAAMia,eAAiBrE,EAAOrjD,GAAK0nD,eACnCja,EAAMka,kBAAoBtE,EAAOrjD,GAAK2nD,kBACtCla,EAAMma,aAAevE,EAAOrjD,GAAK4nD,aACjCna,EAAMuY,cAAgB3C,EAAOrjD,GAAKgmD,cAG1C,KAAOhC,KACC/vE,KAAK62E,UAAU72E,KAAK4xE,wBAAwB7B,GAAK31D,QACjDpa,KAAK62E,UAAU72E,KAAK4xE,wBAAwB7B,GAAK31D,MAAM68D,cAAgB,kBACvEj3E,KAAK62E,UAAU72E,KAAK4xE,wBAAwB7B,GAAK31D,MAAMg5D,mBAAoB,EAC3EpzE,KAAK62E,UAAU72E,KAAK4xE,wBAAwB7B,GAAK31D,MAAMg7D,QAAUp1E,KAAK4xE,wBAAwB7B,GAAKqF,UAI/G+vI,EAAYjpN,UAAUqyN,mBAAqB,SAAUtxN,GACjD,IAAK,IAAIe,EAAK,EAAGuF,EAAKvD,KAAK4xE,wBAAyB5zE,EAAKuF,EAAG1G,OAAQmB,IAAM,CACtE,IAAIw7D,EAAQj2D,EAAGvF,GACfgC,KAAKwlN,iBAAiBhsJ,EAAMp/C,MAAQ9b,YAAO,GAAIk7D,EAAO,MAAM,GAC5Dx5D,KAAKwlN,iBAAiBhsJ,EAAMp/C,MAAMy0M,cAAgBr1J,EAAM4b,QAqD5D,IAnDA,IAAI0yI,EAAY5pN,OAAOjB,KAAK+C,KAAKwlN,kBAC7Bh9H,EAAU,SAAUsmI,EAAM/iM,GAC1B,IAAIytC,EAAQivB,EAAO+8H,iBAAiBsC,EAAUgH,IAC1CC,EAAiBv1J,EAAM3lC,WACvBg7L,GAAiBE,EAAiBA,EAAe35I,QAAU5b,EAAM4b,SAAS/oD,OAC1E+oD,EAAUy5I,EAAcnyN,QAAQ,KAAM,IAC1C88D,EAAM4b,QAAUA,EAAQj3E,QAAQ,MAAQ,EAAIsqF,EAAOumI,cAAc55I,GAAWA,GAChC,IAAxC5b,EAAM4b,QAAQj3E,QAAQ,cAAuBq7D,EAAM4b,QAAQj3E,QAAQ,SAAW,IAC9Eq7D,EAAM4b,QAAU5b,EAAM4b,QAAQ14E,QAAQ,SAAU,eAER,IAAxC88D,EAAM4b,QAAQj3E,QAAQ,cAAuBq7D,EAAM4b,QAAQj3E,QAAQ,SAAW,IAC9Eq7D,EAAM4b,QAAU5b,EAAM4b,QAAQ14E,QAAQ,SAAU,eAER,IAAxC88D,EAAM4b,QAAQj3E,QAAQ,cAAuBq7D,EAAM4b,QAAQj3E,QAAQ,SAAW,IAC9Eq7D,EAAM4b,QAAU5b,EAAM4b,QAAQ14E,QAAQ,SAAU,cAGpD88D,EAAMp/C,KAAO20M,EAAiBA,EAAe30M,KAAOo/C,EAAMp/C,MAC1Dnd,EAAOA,EAAKi0B,QAAO,SAAUl0B,GAAO,OAAOA,IAAQw8D,EAAMp/C,SACpDxY,KAAK43D,EAAMp/C,MAEhB,IADA,IAAI60M,EAAcJ,EAAclyN,MAAM,KAC7BgF,EAAM,EAAGutN,EAAMD,EAAYpyN,OAAQ8E,EAAMutN,EAAKvtN,IAAO,CAC1D,IAAIwJ,EAAO8jN,EAAYttN,GAAK0qB,OACxB8iM,EAAiBhkN,EAAKxO,MAAM,oCAC5ByyN,EAAejkN,EAAKvI,MAAM,sBAC1BysN,EAAwC,kBAAtBF,EAAe,GACjC,gBAAwC,oBAAtBA,EAAe,GACjC,kBAA0C,gBAAtBA,EAAe,GAAuB,cAAsC,kBAAtBA,EAAe,GACzF,gBAAwC,cAAtBA,EAAe,GAAqB,YAAcA,EAAe,GACvF,IAC2G,IADvG,CAAC,MAAO,QAAS,MAAO,MAAO,MAAO,UAAW,gBACjD,kBAAmB,cAAe,gBAAiB,YAAa,UAAUhxN,QAAQkxN,GAAwB,CAC1G,IAAI70M,GAA8C,IAArCvd,EAAKkB,QAAQgxN,EAAe,KAAcC,EAAa,GAAMnyN,EAAKkB,QAAQixN,EAAa,IAAMnyN,EAAKkB,QAAQgxN,EAAe,IACjI1mI,EAAOg9H,mBAAmBjsJ,EAAMp/C,MAQjCquE,EAAOg9H,mBAAmBjsJ,EAAMp/C,MAAMxY,KAAK,CACvC4Y,MAAOA,EACPrP,KAAMkkN,EACNj6I,QAASjqE,IAVbs9E,EAAOg9H,mBAAmBjsJ,EAAMp/C,MAAQ,CAAC,CACjCI,MAAOA,EACPrP,KAAMkkN,EACNj6I,QAASjqE,OAc7Bs9E,EAASzoF,KACJ8uN,EAAO,EAAG/iM,EAAM+7L,EAAUjrN,OAAQiyN,EAAO/iM,EAAK+iM,IACnDtmI,EAAQsmI,GAEZ9uN,KAAKovE,OAASnyE,GAElBkoN,EAAYjpN,UAAU8sN,gBAAkB,SAAUnuM,GAC9C7a,KAAKkpN,qBAAsB,EAC3B,IAAIoG,EAAiBz0M,EAAKo2D,eAAiBp2D,EAAKo2D,eAAiB,GAC7Dg7I,EAAa3tN,YAAO,GAAI0B,KAAK8oE,KAAM,MAAM,GAC7CmjJ,EAAaA,EAAWn6L,OAAO9xB,KAAK+5D,SACpC,IAAK,IAAI/7D,EAAK,EAAGuxN,EAAmBD,EAAgBtxN,EAAKuxN,EAAiB1yN,OAAQmB,IAAM,CAEpF,IADA,IAAIkzB,EAASq+L,EAAiBvxN,GACrBuF,EAAK,EAAGisN,EAAevD,EAAY1oN,EAAKisN,EAAa3yN,OAAQ0G,IAAM,CACxE,IAAIi2D,EAAQg2J,EAAajsN,GACzB,GAAI2tB,EAAO9W,OAASo/C,EAAMp/C,MAAwB,UAAhB8W,EAAO/lB,KAAkB,CACvDnL,KAAKkpN,qBAAsB,EAC3B,OAGR,GAAIlpN,KAAKkpN,oBACL,QAIZ/D,EAAYjpN,UAAUuzN,oBAAsB,WACxCzvN,KAAKynN,6BAA8B,EACnC,IAAK,IAAIzpN,EAAK,EAAGuF,EAAKvD,KAAKu8D,OAAQv+D,EAAKuF,EAAG1G,OAAQmB,IAAM,CACrD,IAAIxB,EAAQ+G,EAAGvF,GACf,IAA2L,IAAtL,CAAC,iBAAkB,6BAA8B,6BAA8B,gCAAiC,0BAA2B,iBAAkBG,QAAQ3B,EAAM2O,MAAc,CAC1LnL,KAAKynN,6BAA8B,EACnC,SAIZtC,EAAYjpN,UAAUstN,iBAAmB,SAAU3uM,EAAM60M,GAKrD,IAJA,IAAIzyN,EAAO+C,KAAKovE,OACZugJ,EAAO90M,EAAKhe,OACZwkF,EAAQrhF,KAAK62E,UACb+4I,EAAM3yN,EAAKJ,OACNgzN,EAAK,EAAGA,EAAKD,EAAKC,IAAM,CAC7B,IAAI7yN,EAAMC,EAAK4yN,GACVxuI,EAAMrkF,GAAKo9E,UAAWp6E,KAAK+nN,uBAC5B1mI,EAAMrkF,GAAKo9E,QAAU,IAEpBiH,EAAMrkF,GAAKwkF,mBAAoBxhF,KAAK+nN,uBACrC1mI,EAAMrkF,GAAKwkF,iBAAmB,IAE7BH,EAAMrkF,GAAK0kF,aAAc1hF,KAAK+nN,uBAC/B1mI,EAAMrkF,GAAK0kF,WAAa,IAS5B,IAPA,IAAItH,EAAUiH,EAAMrkF,GAAKo9E,QACrB01I,EAAc5xN,OAAOjB,KAAKm9E,GAASv9E,OAAS,EAC5C2kF,EAAmBH,EAAMrkF,GAAKwkF,iBAC9BE,EAAaL,EAAMrkF,GAAK0kF,WACxBquI,EAAa,EACbC,EAAc,EAETC,EAAK,EAAGA,EAAKN,EAAMM,IAAM,CAC9B,IAAIC,EAAOr1M,EAAKo1M,GAAIjwN,KAAK8nN,UAAU9qN,IAEnC,IAAK8yN,EAAa,CACd,IAAI9mI,EAAOknI,EACPC,GAAkBnwN,KAAKklE,cAAkBllE,KAAKslN,aAAatoN,IAC1D,CAAC,OAAQ,WAAY,QAAQmB,QAAQ6B,KAAKslN,aAAatoN,GAAKmO,OAAS,EAQrEnL,KAAKkzJ,kBAAkBg9D,EAAMlzN,GARgD,CAC9E07E,cAAwB,OAATw3I,EAAiBlwN,KAAK+jF,UAAY/jF,KAAK+jF,UAAUltC,YAAY,QAAUmoC,OAAOkxI,QAChFl0N,IAATk0N,EAAsBlwN,KAAK+jF,UAAa/mF,KAAOgD,KAAKsmN,eAChDtmN,KAAK+jF,UAAUltC,YAAY,mBAAqB72C,KAAK+jF,UAAUltC,YAAY,aAC3EmoC,OAAOkxI,GAASA,EAAK/iN,WAAY8qE,WAAqB,OAATi4I,EAAiBlwN,KAAK+jF,UACvE/jF,KAAK+jF,UAAUltC,YAAY,QAAUmoC,OAAOkxI,QAAkBl0N,IAATk0N,EAAsBlwN,KAAK+jF,UAC/E/mF,KAAOgD,KAAKsmN,eAAkBtmN,KAAK+jF,UAAUltC,YAAY,mBACtD72C,KAAK+jF,UAAUltC,YAAY,aAAemoC,OAAOkxI,GAASA,GAElEC,EAAez3I,gBACfsQ,EAAOmnI,EAAez3I,eAGrB0B,EAAQ56E,eAAe0wN,GAUxB91I,EAAQ81I,GAAM11M,MAAM5Y,KAAKquN,IATzBF,IACA31I,EAAQ81I,GAAQ,CACZ11M,MAAO,CAACy1M,GAAKr2I,QAASm2I,EACtB/1I,YAAWh6E,KAAKipN,aAEpBvnI,EAAW9/E,KAAK,CAAE82E,cAAey3I,EAAez3I,cAAeT,WAAak4I,EAAeC,SAAWD,EAAeC,SAAWD,EAAel4I,cAM9IuJ,EAAiBhiF,eAAewpF,GASjCxH,EAAiBwH,GAAMxuE,MAAM5Y,KAAKquN,IAPlCD,IACAxuI,EAAiBwH,GAAQ,CACrBxuE,MAAO,CAACy1M,GAAKr2I,QAASo2I,EACtBh2I,YAAWh6E,KAAKipN,cAOtByG,EAAOO,KACTP,EAAOO,GAAM,IAIbP,EAAOO,GAAIJ,GAAMz1I,EAAQ81I,GAAMt2I,WAa/CurI,EAAYjpN,UAAUwtN,oBAAsB,SAAU7uM,GAMlD,IALA,IAAI5d,EAAO+C,KAAKovE,OACZztE,EAAMkZ,EAAKhe,OACXwzN,EAAO,GACPC,EAASrzN,EAAKJ,OACd0zN,EAASvwN,KAAK62E,UACXl1E,KAAO,CACV,IAAI6uN,EAAOF,EAIX,IAFAD,EAAK1uN,GAAO,GAEL6uN,KAAQ,CACX,IAAIxzN,EAAMC,EAAKuzN,GACfH,EAAK1uN,GAAK6uN,GAA8B,WAArBD,EAAOvzN,GAAKmO,MAAqB/N,YAAkByd,EAAKlZ,GAAK3B,KAAK8nN,UAAU9qN,KAC3FI,YAAkByd,EAAKlZ,GAAK3B,KAAK8nN,UAAU9qN,KACvC6d,EAAKlZ,GAAK3B,KAAK8nN,UAAU9qN,IACxBoP,MAAM6pC,OAAOp7B,EAAKlZ,GAAK3B,KAAK8nN,UAAU9qN,WACMhB,EAAzCi6C,OAAOp7B,EAAKlZ,GAAK3B,KAAK8nN,UAAU9qN,KAAqB,GAGzE,OAAOqzN,GAEXlL,EAAYjpN,UAAUutN,mBAAqB,SAAUt4I,EAAck9I,GAC/D,IAAK,IAAIoC,EAAM,EAAGC,EAAMv/I,EAAeA,EAAat0E,OAAS,EAAG4zN,EAAMC,GAAOrC,EAAQoC,IAC7EzwN,KAAK62E,UAAU1F,EAAas/I,GAAKr2M,QACjCpa,KAAK62E,UAAU1F,EAAas/I,GAAKr2M,MAAMynE,KAAO1Q,EAAas/I,GAAKh8I,QAI5E0wI,EAAYjpN,UAAU2tN,oBAAsB,SAAUjsN,GAClD,IAAI+yN,EAAW3wN,KAAK2pN,cAChBlyL,EAAO,GAEPm5L,EAAY5wN,KAAK6wN,WAAWjzN,EAAQ65B,GAKpCq5L,EAAM9wN,KAAKwmN,YAAY3pN,OAC3B,GAAI+zN,EAEA,IADA,IAAI3zN,EAAOw6B,EAAKs5L,QAAQv2M,MACfw2M,EAAK,EAAGA,EAAK/zN,EAAKJ,OAAQm0N,SACVh1N,IAAjBy7B,EAAK6kC,cAAgEtgE,IAAvCy7B,EAAK6kC,QAAQ6b,YAAYl7E,EAAK+zN,KAC5DL,EAAS/uN,KAAK3E,EAAK+zN,SAK3B,IAASA,EAAK,EAAGA,EAAKF,EAAKE,SACFh1N,IAAjBy7B,EAAK6kC,cAA0DtgE,IAAjCy7B,EAAK6kC,QAAQ6b,YAAY64I,IACvDL,EAAS/uN,KAAKovN,IAK9B7L,EAAYjpN,UAAU20N,WAAa,SAAUjzN,EAAQqzN,GAKjD,IAJA,IAAI3B,EAAiB1xN,EAAOqzE,eAAiBrzE,EAAOqzE,eAAiB,GACjE2/I,GAAY,EACZ1/L,EAAS,GAEJggM,EAAM,EAAGC,EAAM7B,EAAezyN,OAAQq0N,EAAMC,EAAKD,IAAO,CAC7D,IAAIE,EAAgB9B,EAAe4B,GAAKr9L,WACpCy7L,EAAe4B,GAAKr9L,WAAay7L,EAAe4B,GAEhDlxN,KAAK62E,UAAUu6I,EAAch3M,OAC7Bpa,KAAK62E,UAAUu6I,EAAch3M,MAAMioE,YACnCriF,KAAKqxN,mBAAmBD,EAAexzN,EAAOizE,kBAAmBjzE,EAAO+yE,oBACxE3wE,KAAKsxN,iBAAiBF,GAClBA,IACAlgM,EAASkgM,EAAcr9I,OAEvBq9I,EAAcjmN,MAA+B,YAAvBimN,EAAcjmN,MACpCnL,KAAKuxN,gBAAgBrgM,EAAQkgM,EAAch3M,KAAM62M,EAAO,UAAWG,EAAch9I,gBAAiBw8I,GAClGA,GAAY,GAGZ5wN,KAAKuxN,gBAAgBrgM,EAAQkgM,EAAch3M,KAAM62M,EAAO,UAAWG,EAAch9I,iBAEjFg9I,EAAch9I,kBACdg9I,EAAcr9I,MAAQ,GACtBq9I,EAAcjmN,KAAOimN,EAAcj9I,eAAiB,OAASi9I,EAAc/8I,iBAAmB,SAAW,UAuBrH,OAAOu8I,GAEXzL,EAAYjpN,UAAUm1N,mBAAqB,SAAUD,EAAeI,EAAsBC,GACtF,IAAIj7I,EAAY46I,EAAch3M,KAC1Bs3M,GAAuB,EAEvBzF,EAAa3tN,YAAO,GAAI0B,KAAK8oE,KAAM,MAAM,GAE7C,GADAmjJ,EAAaA,EAAWn6L,OAAO9xB,KAAK+5D,SAChC/5D,KAAK62E,UAAUL,GAAW6L,YAAcmvI,GAH1B,CAAC,UAAW,WAGkDrzN,QAAQizN,EAAcjmN,OAAS,EAAG,CAC9GumN,GAAuB,EACvB,IAAK,IAAI1zN,EAAK,EAAGuF,EAAKvD,KAAKu8D,OAAQv+D,EAAKuF,EAAG1G,OAAQmB,IAAM,CAErD,GAAIw4E,IADQjzE,EAAGvF,GACSoc,KAAM,CAC1Bs3M,GAAuB,EACvB,aAIP,GAAID,EACL,IAAK,IAAI18L,EAAK,EAAG48L,EAAe1F,EAAYl3L,EAAK48L,EAAa90N,OAAQk4B,IAAM,CAExE,GAAIyhD,IADQm7I,EAAa58L,GACD3a,MACnB,CAAC,QAAS,OAAQ,UAAUjc,QAAQizN,EAAcjmN,OAAS,EAAI,CAChEumN,GAAuB,EACvB,OAIZ,OAAOA,GAEXvM,EAAYjpN,UAAUo1N,iBAAmB,SAAUF,GAC/C,GAAI,CAAC,QAAS,OAAQ,UAAUjzN,QAAQizN,EAAcjmN,OAAS,EAAG,CAC9D,IAAIivE,EAAUl8E,OAAOjB,KAAK+C,KAAK62E,UAAUu6I,EAAch3M,MAAMggE,SAE7D,GADAg3I,EAAch9I,iBAAkB,EACL,UAAvBg9I,EAAcjmN,KACdimN,EAAcr9I,MAAQ/zE,KAAK4xN,sBAAsBx3I,EAASg3I,EAAct9I,UAAWs9I,EAAc98I,OAAQ88I,EAAc78I,aAEtH,GAA2B,SAAvB68I,EAAcjmN,KAAiB,CACpCimN,EAAcj9I,gBAAiB,EAC/B,IAAI09I,EAA0C,kBAA1BT,EAAc98I,OAAuB,IAAInrE,KAAKioN,EAAc98I,QAAU88I,EAAc98I,OACpGw9I,EAA0C,kBAA1BV,EAAc78I,OAAuB,IAAIprE,KAAKioN,EAAc78I,QAAU68I,EAAc78I,OACxG68I,EAAcr9I,MAAQ/zE,KAAK+xN,qBAAqB33I,EAASg3I,EAAch3M,KAAMg3M,EAAct9I,UAAW+9I,EAAOC,OAE5G,CACDV,EAAc/8I,kBAAmB,EACjC+8I,EAAcr9I,MAAQ,GACtB,IAAK,IAAI/1E,EAAK,EAAGg0N,EAAY53I,EAASp8E,EAAKg0N,EAAUn1N,OAAQmB,IAAM,CAC/D,IAAIwmC,EAASwtL,EAAUh0N,GACnBi0N,EAAWjyN,KAAKkyN,eAAed,EAAch3M,KAAMg3M,EAAc98I,QACjE69I,EAAWnyN,KAAKkyN,eAAed,EAAch3M,KAAMg3M,EAAc78I,QACjEk5I,EAASztN,KAAKkyN,eAAed,EAAch3M,KAAMoqB,GACjDxkC,KAAKoyN,oBAAoB3E,EAAQ2D,EAAct9I,UAAWm+I,EAAUE,IACpEf,EAAcr9I,MAAMnyE,KAAK4iC,IAMrC4sL,EAAcjmN,KAAQimN,EAAct9I,UADb,CAAC,mBAAoB,kBAAmB,kBAAmB,gBAAiB,cACjC31E,QAAQizN,EAAct9I,YAAc,IACjGs9I,EAAc/8I,iBAAoB,UAAY,UAAY,eAG/D+8I,EAAch9I,iBAAkB,GAGxC+wI,EAAYjpN,UAAU01N,sBAAwB,SAAUx3I,EAAShY,EAAUkS,EAAQC,GAE/E,IADA,IAAIR,EAAQ,GACH/1E,EAAK,EAAGq0N,EAAYj4I,EAASp8E,EAAKq0N,EAAUx1N,OAAQmB,IAAM,CAC/D,IAAIwmC,EAAS6tL,EAAUr0N,GACnBs0N,EAAc9tL,EAAO/sB,cACzB,GAAI68D,EAAOnnE,WACP,OAAQi1D,GACJ,IAAK,SACL,IAAK,gBACGkwJ,IAAgBh+I,EAAO78D,eACvBs8D,EAAMnyE,KAAK4iC,GAEf,MACJ,IAAK,YACL,IAAK,mBACiD,IAA9C8tL,EAAYn0N,QAAQm2E,EAAO78D,gBAC3Bs8D,EAAMnyE,KAAK4iC,GAEf,MACJ,IAAK,WACL,IAAK,kBACqD,OAAlD8tL,EAAY1vN,MAAM0xE,EAAO78D,cAAgB,MACzCs8D,EAAMnyE,KAAK4iC,GAEf,MACJ,IAAK,WACL,IAAK,kBACG8tL,EAAYn0N,QAAQm2E,EAAO78D,gBAAkB,GAC7Cs8D,EAAMnyE,KAAK4iC,GAEf,MACJ,IAAK,cACG8tL,EAAch+I,EAAO78D,eACrBs8D,EAAMnyE,KAAK4iC,GAEf,MACJ,IAAK,uBACG8tL,GAAeh+I,EAAO78D,eACtBs8D,EAAMnyE,KAAK4iC,GAEf,MACJ,IAAK,WACG8tL,EAAch+I,EAAO78D,eACrBs8D,EAAMnyE,KAAK4iC,GAEf,MACJ,IAAK,oBACG8tL,GAAeh+I,EAAO78D,eACtBs8D,EAAMnyE,KAAK4iC,GAEf,MACJ,IAAK,UACL,IAAK,aACI8tL,GAAeh+I,EAAO78D,eAAmB66M,GAAe/9I,EAAO98D,eAChEs8D,EAAMnyE,KAAK4iC,GAEf,MACJ,QACQ8tL,IAAgBh+I,EAAO78D,eACvBs8D,EAAMnyE,KAAK4iC,IAM/B,OAAOuvC,GAEXoxI,EAAYjpN,UAAU61N,qBAAuB,SAAU33I,EAAShgE,EAAMgoD,EAAUkS,EAAQC,GAEpF,IADA,IAAIR,EAAQ,GACH/1E,EAAK,EAAGu0N,EAAYn4I,EAASp8E,EAAKu0N,EAAU11N,OAAQmB,IAAM,CAC/D,IAAIwmC,EAAS+tL,EAAUv0N,GACnBs0N,EAAc,IAAInpN,KAAKq7B,GAC3B,GAAI8vC,EACA,OAAQlS,GACJ,IAAK,SACL,IAAK,gBACGpiE,KAAKkzJ,kBAAkBo/D,EAAYnlN,WAAYiN,GAAMs+D,gBAAkB14E,KAAKkzJ,kBAAkB5+E,EAAOnnE,WAAYiN,GAAMs+D,eACvH3E,EAAMnyE,KAAK5B,KAAKkzJ,kBAAkB1uH,EAAQpqB,GAAMs+D,eAEpD,MACJ,IAAK,QACG45I,EAAYjwM,UAAYiyD,EAAOjyD,WAC/B0xD,EAAMnyE,KAAK5B,KAAKkzJ,kBAAkB1uH,EAAQpqB,GAAMs+D,eAEpD,MACJ,IAAK,iBACG45I,EAAYjwM,WAAaiyD,EAAOjyD,WAChC0xD,EAAMnyE,KAAK5B,KAAKkzJ,kBAAkB1uH,EAAQpqB,GAAMs+D,eAEpD,MACJ,IAAK,SACG45I,EAAYjwM,UAAYiyD,EAAOjyD,WAC/B0xD,EAAMnyE,KAAK5B,KAAKkzJ,kBAAkB1uH,EAAQpqB,GAAMs+D,eAEpD,MACJ,IAAK,kBACG45I,EAAYjwM,WAAaiyD,EAAOjyD,WAChC0xD,EAAMnyE,KAAK5B,KAAKkzJ,kBAAkB1uH,EAAQpqB,GAAMs+D,eAEpD,MACJ,IAAK,UACL,IAAK,aACI45I,EAAYjwM,WAAaiyD,EAAOjyD,WAChCiwM,EAAYjwM,WAAakyD,EAAOlyD,WACjC0xD,EAAMnyE,KAAK5B,KAAKkzJ,kBAAkB1uH,EAAQpqB,GAAMs+D,eAEpD,MACJ,QACQ14E,KAAKkzJ,kBAAkBo/D,EAAYnlN,WAAYiN,GAAMs+D,gBAAkB14E,KAAKkzJ,kBAAkB5+E,EAAOnnE,WAAYiN,GAAMs+D,eACvH3E,EAAMnyE,KAAK5B,KAAKkzJ,kBAAkB1uH,EAAQpqB,GAAMs+D,gBAMpE,OAAO3E,GAGXoxI,EAAYjpN,UAAUk2N,oBAAsB,SAAUntN,EAAKm9D,EAAUkS,EAAQC,GACzE,IAAIi+I,GAAkB,EACtB,GAAwB,kBAAZl+I,EACR,OAAQlS,GACJ,IAAK,SACGn9D,IAAQqvE,IACRk+I,GAAkB,GAEtB,MACJ,IAAK,gBACGvtN,IAAQqvE,IACRk+I,GAAkB,GAEtB,MACJ,IAAK,cACGvtN,EAAMqvE,IACNk+I,GAAkB,GAEtB,MACJ,IAAK,uBACGvtN,GAAOqvE,IACPk+I,GAAkB,GAEtB,MACJ,IAAK,WACGvtN,EAAMqvE,IACNk+I,GAAkB,GAEtB,MACJ,IAAK,oBACGvtN,GAAOqvE,IACPk+I,GAAkB,GAEtB,MACJ,IAAK,UACIvtN,GAAOqvE,GAAYrvE,GAAOsvE,IAC3Bi+I,GAAkB,GAEtB,MACJ,IAAK,aACMvtN,GAAOqvE,GAAYrvE,GAAOsvE,IAC7Bi+I,GAAkB,GAEtB,MACJ,QACQvtN,IAAQqvE,IACRk+I,GAAkB,GAKlC,OAAOA,GAEXrN,EAAYjpN,UAAUq1N,gBAAkB,SAAUrgM,EAAQ9W,EAAMqd,EAAMtsB,EAAMsnN,EAAe7B,GAClFn5L,EAAKtsB,KACNssB,EAAKtsB,GAAQ,CAAEgtE,YAAa,GAAI39D,MAAO,KAIvCxa,KAAK0yN,aAAaxhM,EAAQ9W,EAAMqd,EAAMtsB,EAAMsnN,EAAe7B,IAInEzL,EAAYjpN,UAAUw2N,aAAe,SAAUxhM,EAAQ9W,EAAMqd,EAAMtsB,EAAMsnN,EAAe7B,GACpF,IAAI+B,EAAM,EACNn5J,EAAQx5D,KAAK62E,UAAUz8D,GAC3Bo/C,EAAMtoC,OAASA,EACfsoC,EAAM0oB,WAAa/2E,EACnBquD,EAAM+oB,cAAgBkwI,EACtB,IAAIr4I,EAAWp6E,KAAKslN,aAAalrM,IAC5B,CAAC,OAAQ,WAAY,QAAQjc,QAAQ6B,KAAKslN,aAAalrM,GAAMjP,OAAS,EACvEquD,EAAMgoB,iBAAmBhoB,EAAM4gB,QAC/Bw4I,EAAWhC,EACXiC,EAAQ,GACRxoE,EAAY,GAGhB,IAFAwoE,EAAM1nN,GAAQ,CAAEgtE,YAAa,GAAI39D,MAAO,IACxCxa,KAAKinN,eAAe7sM,GAAQ,CAAE04M,UAAW,IAClC5hM,EAAOyhM,IAAM,CAChB,GAAIv4I,EAAQlpD,EAAOyhM,IAAO,CACtB,IAAIvqI,EAAOhO,EAAQlpD,EAAOyhM,IAAMn4M,MAChC,GAAa,YAATrP,EACA,IAAK,IAAI5C,EAAM,EAAGwqN,EAAM3qI,EAAKvrF,OAAQ0L,EAAMwqN,EAAKxqN,IACvCqqN,QAAkD52N,IAAtCy7B,EAAKtsB,GAAMgtE,YAAYiQ,EAAK7/E,MACzCsqN,EAAM1nN,GAAMgtE,YAAYiQ,EAAK7/E,IAAQ6/E,EAAK7/E,GAC1CsqN,EAAM1nN,GAAMqP,MAAM5Y,KAAKwmF,EAAK7/E,SAInC,CACD,IAASA,EAAM,EAAGwqN,EAAM3qI,EAAKvrF,OAAQ0L,EAAMwqN,EAAKxqN,SACFvM,IAAtCy7B,EAAKtsB,GAAMgtE,YAAYiQ,EAAK7/E,MAC5BkvB,EAAKtsB,GAAMgtE,YAAYiQ,EAAK7/E,IAAQ6/E,EAAK7/E,GACzCkvB,EAAKtsB,GAAMqP,MAAM5Y,KAAKwmF,EAAK7/E,KAGnCvI,KAAKinN,eAAe7sM,GAAM04M,UAAU5hM,EAAOyhM,IAAQzhM,EAAOyhM,IAGlEA,IAEJ,GAAa,YAATxnN,EAAoB,CACpBssB,EAAKtsB,GAAQ0nN,EAAM1nN,GACnB,IAAS5C,EAAM,EAAGA,EAAM2oB,EAAOr0B,OAAQ0L,IAC/B6xE,EAAQlpD,EAAO3oB,MACf8hJ,EAAUn5H,EAAO3oB,IAAQ2oB,EAAO3oB,IAGxC,IAAIwrE,EAAQ71E,OAAOjB,KAAKm9E,GACxB,IAAS7xE,EAAM,EAAGwqN,EAAMh/I,EAAMl3E,OAAQ0L,EAAMwqN,EAAKxqN,SACfvM,IAA1BquJ,EAAUt2E,EAAMxrE,MAChBvI,KAAKinN,eAAe7sM,GAAM04M,UAAU/+I,EAAMxrE,IAAQwrE,EAAMxrE,MAKxE48M,EAAYjpN,UAAU82N,oBAAsB,SAAUC,EAAS/5I,EAAOpQ,EAAM/O,EAASm5J,EAAaC,EAAehoN,GAC7GnL,KAAKozN,iBAAkB,EACvB,IAAIC,EAAY/0N,YAAO,GAAc,QAAT6M,GAAkBnL,KAAKqnN,cAAgBrnN,KAAKqnN,cAAyB,WAATl8M,GAAqBnL,KAAKsnN,iBAAmBtnN,KAAKsnN,iBAAmBx+I,EAAKA,EAAKjsE,OAAS,GAAK,MAAM,GAQ3L,OAPAmD,KAAKszN,gBAAgBxqJ,EAAM/O,EAASm5J,EAAaC,EAAej6I,EAAO+5I,EAAQ74M,KAAMi5M,EAAWloN,GAC5FnL,KAAKozN,mBACS,QAATjoN,GAAyC,OAAvBnL,KAAKqnN,eAAqC,WAATl8M,GAA+C,OAA1BnL,KAAKsnN,mBAC9E6L,EAAcvxN,KAAKyxN,GAEvBvqJ,EAAOqqJ,GAEJrqJ,GAEXq8I,EAAYjpN,UAAUo3N,gBAAkB,SAAUxqJ,EAAM/O,EAASkX,EAAgBkiJ,EAAej6I,EAAO1C,EAAW68I,EAAWloN,GAEzH,IADA,IAAIooN,EAAOzqJ,EAAKjsE,OACPD,EAAI,EAAGA,EAAI22N,EAAM32N,IACtB,GAAIq0E,EAAeuF,GACf,GAAI1N,EAAKlsE,GAAGs8E,QAAUA,EAAO,CACzBl5E,KAAKozN,iBAAkB,EACvBpzN,KAAK62E,UAAUL,GAAW+L,eAAgB,EAC1C,IAAI/lF,EAAQ,EACRy3E,EAAUhD,EAAeuF,GAAWvC,QACpCu/I,EAAOxzN,KAAK62E,UAAU5C,GAASz5D,MAC/B4lF,EAAYpgG,KAAK62E,UAAU5C,GAASgD,cACxCj3E,KAAK0nN,eAAiB,GACtBlrN,EAAkB,QAAT2O,EAAiBnL,KAAKyzN,kBAAkB3qJ,EAAKlsE,GAAG4d,MAAOu/C,EAAQoe,YAAaq7I,EAAMpzH,GACvFpgG,KAAKyzN,kBAAkB15J,EAAQv/C,MAAOsuD,EAAKlsE,GAAGu7E,YAAaq7I,EAAMpzH,GACrE,IAAIszH,EAAc,CACdl9I,UAAWvC,EACXrpB,IAAKke,EAAKlsE,GACV68D,OAAQM,EACRv9D,MAAOA,EACPm3N,SAAU3zN,KAAK4zN,WAAW5zN,KAAK0nN,gBAC/BmM,YAAc/qJ,EAAKlsE,GAAGk9E,UAAYhR,EAAKlsE,GAAGo9E,UAAY,WAA8B,cAAjBlR,EAAKlsE,GAAGuO,KAAuB,aAAe,QACjH2oN,eAAiB/5J,EAAQ+f,UAAY/f,EAAQigB,UAAY,WAA8B,cAAjBjgB,EAAQ5uD,KAAuB,aAAe,QACpH8rE,cAAempB,EACf2zH,gBAAgB,GAEhB/zN,KAAKsoN,kBACLtoN,KAAKsoN,iBAAiBoL,GAE1Bl3N,EAAQk3N,EAAYl3N,MACpBwD,KAAK0nN,eAAiB,GACtB,IAAIuK,EAAWjyN,KAAKkyN,eAAej+I,EAAShD,EAAeuF,GAAWlC,QAClE69I,EAAWnyN,KAAKkyN,eAAej+I,EAAShD,EAAeuF,GAAWjC,QACtE,GAAKv0E,KAAKoyN,oBAAoB51N,EAAOy0E,EAAeuF,GAAW1C,UAAWm+I,EAAUE,IAA8B,cAAjBrpJ,EAAKlsE,GAAGuO,KAK/E,cAAjB29D,EAAKlsE,GAAGuO,OACbgoN,EAAcvxN,KAAKtD,YAAO,GAAIwqE,EAAKlsE,GAAI,MAAM,IAC7Cu2N,EAAcA,EAAct2N,OAAS,GAAGm3N,iBAAkB,OAPiE,CAC3H,IAAIn5M,EAAO7a,KAAKi0N,mBAAmBnrJ,EAAKlsE,GAAIoD,KAAKk0N,mBAC7CtpK,EAAM/vC,GAAciuD,EAAKlsE,GAC7BoD,KAAKm0N,2BAA2BvpK,EAAK5qD,KAAKk0N,kBAAmBb,EAAW,EAAGn6I,EAAO/tE,SAOjF29D,EAAKlsE,GAAGk9E,UAAYhR,EAAKlsE,GAAGw9E,QAAQv9E,OAAS,GAAsB,cAAjBisE,EAAKlsE,GAAGuO,OAC/DgoN,EAAcvxN,KAAKtD,YAAO,GAAIwqE,EAAKlsE,GAAI,MAAM,IAC7Cu2N,EAAcA,EAAct2N,OAAS,GAAGu9E,QAAU,GAClD+4I,EAAcA,EAAct2N,OAAS,GAAGm3N,iBAAkB,EAC1Dh0N,KAAKszN,gBAAgBxqJ,EAAKlsE,GAAGw9E,QAASrgB,EAASkX,EAAgBkiJ,EAAcA,EAAct2N,OAAS,GAAGu9E,QAASlB,EAAO1C,EAAW68I,EAAWloN,KAM7Jg6M,EAAYjpN,UAAUg2N,eAAiB,SAAUj+I,EAASz3E,GACtD,IAAIixN,EAASjxN,EAAQA,EAAM2Q,WAAa,GACxC,GAAInN,KAAKslN,aAAarxI,IAAYz3E,EAAO,CACrC,IAAI43N,EAAgB91N,YAAO,GAAI0B,KAAKslN,aAAarxI,GAAU,MAAM,GAEjE,cADOmgJ,EAAch6M,KACdpa,KAAKuoN,UAAUpsM,YAAYsxM,EAAQ2G,GAG1C,OAAOp0N,KAAKuoN,UAAUpsM,YAAYsxM,EAAQ,CAAEziN,OAAQ,OAG5Dm6M,EAAYjpN,UAAU+3N,mBAAqB,SAAUrpK,EAAKuoK,GAGtD,IAFA,IACIxnE,EADA7iF,EAAOxqE,YAAO,GAAI60N,EAAe,MAAM,GAElCv2N,EAAI,EAAGA,EAAIksE,EAAKjsE,OAAQD,IAAK,CAClC,GAAIguD,EAAIopK,iBAAmBppK,EAAI7e,OAAS+8B,EAAKlsE,GAAGmvC,MAC5C6e,EAAI8uB,UAAU26I,YAAcvrJ,EAAKlsE,GAAG88E,UAAU26I,WAC9CzpK,EAAIqtB,aAAenP,EAAKlsE,GAAGq7E,YAAcrtB,EAAI7e,OAAS+8B,EAAKlsE,GAAGmvC,MAC9D6e,EAAIsuB,QAAUpQ,EAAKlsE,GAAGs8E,OAAStuB,EAAIgvB,UAAY9Q,EAAKlsE,GAAGg9E,QAAS,CAChE+xE,EAAe7iF,EAAKlsE,GACpBu2N,EAAcr5M,OAAOld,EAAG,GACxB,MAEKu2N,EAAcv2N,GAAGk9E,UAAYq5I,EAAcv2N,GAAGw9E,QAAQv9E,OAAS,GACpEmD,KAAKi0N,mBAAmBrpK,EAAKuoK,EAAcv2N,GAAGw9E,SAGtD,OAAOuxE,GAEXw5D,EAAYjpN,UAAUi4N,2BAA6B,SAAUvpK,EAAKke,EAAMwrJ,EAAe13N,EAAGs8E,EAAO/tE,GAC7F,GAAI29D,EAAKjsE,OAAS,EACd,IAAK,IAAImB,EAAK,EAAG8mE,EAASgE,EAAM9qE,EAAK8mE,EAAOjoE,OAAQmB,IAAM,CACtD,IAAIu2N,EAAkBzvJ,EAAO9mE,GAC7B,GAAIu2N,EAAgBr7I,QAAUt8E,EAAG,CAC7B,GAAa,QAATuO,EAEA,IADA,IACS5H,EAAK,EAAGm9I,EADblmI,EAAQowC,EAAIpwC,MACkBjX,EAAKm9I,EAAQ7jJ,OAAQ0G,IAAM,CACzD,IAAIvG,EAAM0jJ,EAAQn9I,GACd+wN,EAAc95M,MAAMrc,QAAQnB,IAAQ,GACpCs3N,EAAc95M,MAAMV,OAAOw6M,EAAc95M,MAAMrc,QAAQnB,GAAM,GAE3D4tD,EAAI8uB,UAAU26I,UAAUlnN,WAAYhP,QAAQo2N,EAAgB76I,UAAU26I,UAAUlnN,aAAe,GACjGonN,EAAgBr7I,QAAUA,GAASq7I,EAAgB/5M,MAAMrc,QAAQnB,IAAQ,GACzEu3N,EAAgB/5M,MAAMV,OAAOy6M,EAAgB/5M,MAAMrc,QAAQnB,GAAM,QAOzE,IADA,IAAIwd,EAAQowC,EAAIutB,YACPpjD,EAAK,EAAGI,EAAKj3B,OAAOjB,KAAKud,GAAQua,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACxD/3B,EAAMm4B,EAAGJ,GACTva,EAAMhb,eAAexC,YACds3N,EAAcn8I,YAAYn7E,GAC3B4tD,EAAI8uB,UAAU26I,UAAUlnN,WAAYhP,QAAQo2N,EAAgB76I,UAAU26I,UAAUlnN,aAAe,GACjGonN,EAAgBr7I,QAAUA,UACnBq7I,EAAgBp8I,YAAYn7E,IAM/Cu3N,GAAmBA,EAAgBn6I,QAAQv9E,OAAS,GACpD03N,EAAgBn6I,QAAQ,GAAGlB,QAAUt8E,EAAI,GAAK23N,EAAgBn6I,QAAQ,GAAGlB,QAAUA,GACnFl5E,KAAKm0N,2BAA2BvpK,EAAK2pK,EAAgBn6I,QAASk6I,EAAe13N,EAAI,EAAGs8E,EAAO/tE,SAMvG,GAAa,QAATA,EAEA,IADA,IACSmqB,EAAK,EAAGk/L,EADbh6M,EAAQowC,EAAIpwC,MACkB8a,EAAKk/L,EAAQ33N,OAAQy4B,IAAM,CACrDt4B,EAAMw3N,EAAQl/L,GACdg/L,EAAc95M,MAAMrc,QAAQnB,IAAQ,GACpCs3N,EAAc95M,MAAMV,OAAOw6M,EAAc95M,MAAMrc,QAAQnB,GAAM,OAMrE,CAAIwd,EAAQowC,EAAIutB,YAChB,IADA,IACSq0C,EAAK,EAAGyjC,EAAK/xJ,OAAOjB,KAAKud,GAAQgyG,EAAKyjC,EAAGpzJ,OAAQ2vH,IAAM,CACxDxvH,EAAMizJ,EAAGzjC,GACThyG,EAAMhb,eAAexC,WACds3N,EAAcn8I,YAAYn7E,MAOrDmoN,EAAYjpN,UAAUu4N,oBAAsB,SAAUC,EAAeC,EAAaC,EAAiB5vM,EAAS7Z,GACxG,IAAK,IAAInN,EAAK,EAAG62N,EAAkBH,EAAe12N,EAAK62N,EAAgBh4N,OAAQmB,IAAM,CACjF,IAAI82N,EAAUD,EAAgB72N,GAC9BgC,KAAK+0N,eAAgB,GACjB/0N,KAAKg1N,wBAAwBF,EAASF,EAAiBzpN,IAA0B,cAAjB2pN,EAAQ3pN,QAC3D,QAATA,EACAnL,KAAK4lN,UAAY5lN,KAAK+mN,gBAGtB/mN,KAAK2lN,aAAe3lN,KAAK8mN,gBAE7B9hM,EAAQpjB,KAAKtD,YAAO,GAAIw2N,EAAS,MAAM,IACvC9vM,EAAQA,EAAQnoB,OAAS,GAAGu9E,QAAU,GAClC06I,EAAQh7I,UAAYg7I,EAAQ96I,WAAa86I,EAAQ16I,QAAQv9E,OAAS,GAClEmD,KAAKy0N,oBAAoBK,EAAQ16I,QAASu6I,EAAaC,EAAiB5vM,EAAQA,EAAQnoB,OAAS,GAAGu9E,QAASjvE,IAIzH,OAAOnL,KAAKi1N,qBAEhB9P,EAAYjpN,UAAU84N,wBAA0B,SAAUF,EAASF,EAAiBzpN,GAChF,IAAK,IAAInN,EAAK,EAAGk3N,EAAoBN,EAAiB52N,EAAKk3N,EAAkBr4N,OAAQmB,IAAM,CACvF,IAAIm3N,EAAUD,EAAkBl3N,GAChC,IAAKgC,KAAK+0N,cAAe,CACrB,GAAID,EAAQ78I,aAAek9I,EAAQl9I,YAC/B68I,EAAQ57I,QAAUi8I,EAAQj8I,OAC1B47I,EAAQp7I,UAAU26I,YAAcc,EAAQz7I,UAAU26I,UAClD,MAAa,QAATlpN,EACIgqN,EAAQ36M,MAAM3d,OAAS,GACvBmD,KAAK+0N,eAAgB,EACrBD,EAAQt6M,MAAQ26M,EAAQ36M,OACjB,IAGPxa,KAAK+0N,eAAgB,EACrBD,EAAQt6M,MAAQ26M,EAAQ36M,OACjB,GAIPtc,OAAOjB,KAAKk4N,EAAQh9I,aAAat7E,OAAS,GAC1CmD,KAAK+0N,eAAgB,EACrBD,EAAQ38I,YAAcg9I,EAAQh9I,aACvB,IAGPn4E,KAAK+0N,eAAgB,EACrBD,EAAQ38I,YAAcg9I,EAAQh9I,aACvB,GAIVg9I,EAAQr7I,UAAYq7I,EAAQ/6I,QAAQv9E,OAAS,GAAsB,cAAjBs4N,EAAQhqN,MAC/DnL,KAAKg1N,wBAAwBF,EAASK,EAAQ/6I,QAASjvE,IAInE,OAAOnL,KAAK+0N,eAEhB5P,EAAYjpN,UAAUk5N,iBAAmB,SAAU98I,EAAYE,GAC3Dx4E,KAAKwjF,aAAc,EACflL,EAAWz7E,OAAS,GAAgD,cAA3Cy7E,EAAWA,EAAWz7E,OAAS,GAAGsO,MACR,IAAnDmtE,EAAWA,EAAWz7E,OAAS,GAAG2d,MAAM3d,SACxCmD,KAAKwjF,aAAc,GAEnBhL,EAAc37E,OAAS,GAAsD,cAAjD27E,EAAcA,EAAc37E,OAAS,GAAGsO,MACQ,IAA5EjN,OAAOjB,KAAKu7E,EAAcA,EAAc37E,OAAS,GAAGs7E,aAAat7E,SACjEmD,KAAKwjF,aAAc,GAEG,IAAtBlL,EAAWz7E,QAAyC,IAAzB27E,EAAc37E,SACzCmD,KAAKwjF,aAAc,IAK3B2hI,EAAYjpN,UAAUm5N,eAAiB,SAAUvzJ,GAC7C9hE,KAAK6a,KAAOinD,EAAWA,WACnB9hE,KAAKklE,cAAgBllE,KAAKklE,aAAa6iJ,uBACvC/nN,KAAK4nN,WAAa5nN,KAAK6a,KACvB7a,KAAK6a,KAAO7a,KAAK6oN,kBAAkB/mJ,IAEvC9hE,KAAKwmN,YAAc,GACnB,IAAK,IAAIxoN,EAAK,EAAGuF,EAAKvD,KAAKovE,OAAQpxE,EAAKuF,EAAG1G,OAAQmB,IAAM,CACrD,IAAIw7D,EAAQj2D,EAAGvF,GACfgC,KAAK62E,UAAUrd,GAAO4gB,QAAU,GAChCp6E,KAAK62E,UAAUrd,GAAOgoB,iBAAmB,GACzCxhF,KAAK62E,UAAUrd,GAAOkoB,WAAa,GAEvC1hF,KAAKwpN,iBAAiBxpN,KAAK6a,KAAM7a,KAAKwmN,aACtCxmN,KAAKumN,YAAcvmN,KAAK0pN,oBAAoB1pN,KAAK6a,MACjD7a,KAAK2pN,cAAgB,GACrB3pN,KAAKqmN,SAAW,GAChBrmN,KAAKomN,SAAW,GAChBpmN,KAAK6pN,oBAAoB/nJ,GACzB9hE,KAAK2nN,WAAY,EACjB3nN,KAAK4oN,gBAAiB,EACtB5oN,KAAK8pN,iBAAiBhoJ,GACtB9hE,KAAK2nN,WAAY,GAErBxC,EAAYjpN,UAAU4tN,iBAAmB,SAAUhoJ,EAAYmkJ,GAC3D,IAAIlsJ,EAAU+H,EAAW/H,QAAU+H,EAAW/H,QAAU,GACpDl/C,EAAO7a,KAAK6a,KACZiuD,EAAOhH,EAAWgH,KAAOhH,EAAWgH,KAAO,GAC3CmI,EAAiBnP,EAAWmP,eAC5B1U,EAASuF,EAAWvF,OAASuF,EAAWvF,OAAS,GACrDv8D,KAAK4mN,YAAc,EACnB5mN,KAAKipN,YAAcnnJ,EAAW4O,UAC9B1wE,KAAKqxE,eAAiBvP,EAAWuP,eAAiBvP,EAAWuP,eAAiB,GAC9ErxE,KAAKwjF,aAAc,EACnB,IAAImmI,EAAgB,GAEhBr2I,EAAmBxK,EAAK,IAAMA,EAAK,GAAGwK,iBAAqBvZ,EAAQ,IAAMA,EAAQ,GAAGuZ,gBACpF24I,EAAa3tN,YAAO,GAAI0B,KAAK8oE,KAAM,MAAM,GAE7C,GADAmjJ,EAAaA,EAAWn6L,OAAO9xB,KAAK+5D,QAAS/5D,KAAKu8D,OAAQv8D,KAAKgxE,SAC3DsC,EACA,IAAK,IAAI09I,EAAK,EAAGA,EAAKhxN,KAAKwmN,YAAY3pN,OAAQm0N,IAC3CrH,EAAc/nN,KAAKovN,GAI3B,IAASA,EAAK,EAAGA,EAAKhxN,KAAK2pN,cAAc9sN,OAAQm0N,IAC7ChxN,KAAKknN,aAAalnN,KAAK2pN,cAAcqH,IAAOhxN,KAAK2pN,cAAcqH,GAGnEhxN,KAAKuxE,kBAAkBsD,iBAAc74E,EACrCgE,KAAKyvN,sBACLzvN,KAAKs1N,mBACAt1N,KAAK2oN,uBAAwB3oN,KAAK2nN,WAC9B1B,IACDjmN,KAAK2lN,YAAc,EACnB3lN,KAAK4lN,SAAW,EAChB5lN,KAAKqmN,SAAW,GAChBrmN,KAAKomN,SAAW,GACI,IAAhBt9I,EAAKjsE,SACLmD,KAAKomN,SACDpmN,KAAKu1N,kBAAkBzsJ,EAAMjuD,EAAM,EAAGiuD,EAAK,GAAGwK,gBAAkBq2I,EAAgB3pN,KAAK2pN,cAAe,MAAO,GAAI3pN,KAAK4wE,mBAErG,IAAnB7W,EAAQl9D,SACRmD,KAAKqmN,SAAWrmN,KAAKu1N,kBAAkBx7J,EAASl/C,EAAM,EAAGk/C,EAAQ,GAAGuZ,gBAChEq2I,EAAgB3pN,KAAK2pN,cAAe,SAAU,GAAI3pN,KAAK4wE,mBAE/D5wE,KAAKw1N,yBACLx1N,KAAK0lN,gBAAmB1lN,KAAKkpN,qBAAuBpnJ,EAAW8O,iBAAoB,CAC/E0H,WAAYh6E,YAAO,GAAI0B,KAAKomN,SAAU,MAAM,GAC5C5tI,cAAel6E,YAAO,GAAI0B,KAAKqmN,SAAU,MAAM,IAC/C,IAGZrmN,KAAKwvE,YAAc,GACnBxvE,KAAKqqD,cAAgB,GACrBrqD,KAAKqlN,aAAe,GACpBrlN,KAAKk0N,kBAAoB,GACzBl0N,KAAKi1N,oBAAsB,GAC3B,IAAIQ,EAAW,GACXC,EAAW,GACXnB,EAAkB,GAClBoB,EAAqB,GACrBC,EAAe51N,KAAKu8D,OAAO1/D,OAC/B,GAAImD,KAAKkpN,qBAAuBpnJ,EAAW8O,mBAAqBq1I,EAAkB,CAC9EjmN,KAAKk0N,kBAAoB,GACzB,IAAI57I,EAAat4E,KAAK0lN,gBAAgBptI,WAClCE,EAAgBx4E,KAAK0lN,gBAAgBltI,cACzC,GAAIvH,EAAep0E,OAAS,EAAG,CAI3B,IAHA,IAAIg5N,EAAe,GACfC,EAAc,GAET93N,EAAK,EAAG+3N,EAAWx5J,EAAQv+D,EAAK+3N,EAASl5N,OAAQmB,IAAM,CAC5D,IAAIxB,EAAQu5N,EAAS/3N,GACrB83N,EAAYt5N,EAAM4d,MAAQ5d,EAE9B,IAAK,IAAI+G,EAAK,EAAGyyN,EAAmB/kJ,EAAgB1tE,EAAKyyN,EAAiBn5N,OAAQ0G,IAAM,CACpF,IAAI2tB,EAAS8kM,EAAiBzyN,GAC9B+0E,EAAci8I,EAAgB13N,OAAS,EAAI03N,EAAkBj8I,EAC7DE,EAAiBm9I,EAAmB94N,OAAS,EAAI84N,EAAqBn9I,EACtEx4E,KAAKk0N,kBAAoB,GACzB,IAAI9C,EAAgBlgM,EAAO2C,WACvB3C,EAAO2C,WAAa3C,EAExB,GAA2B,UAAvBkgM,EAAcjmN,MAAoBnL,KAAK62E,UAAU3lD,EAAO9W,OAASpa,KAAK62E,UAAU3lD,EAAO9W,MAAMioE,WAAY,CACzGwzI,EAAa3kM,EAAO9W,MAAQ8W,EAC5BkgM,EAAcr9I,MAAQ,GAItB,IAHA,IAAIkiJ,GAAU,EACV1C,EAAOzqJ,EAAKjsE,OACZq5N,EAAOn8J,EAAQl9D,OACVD,EAAI,EAAGA,EAAI22N,EAAM32N,IACtB,GAAIw0N,EAAch3M,OAAS0uD,EAAKlsE,GAAGwd,MAAQ07M,EAAY1E,EAAcn9I,WAAagiJ,EAAS,CACvFA,GAAU,EACV1B,EAAkBv0N,KAAKgzN,oBAAoBlqJ,EAAKlsE,GAAIA,EAAG07E,EAAat4E,KAAKsnN,iBAAmBtnN,KAAKsnN,iBAAmB9uI,EAAcA,EAAc37E,OAAS,GAAKg5N,EAAc71N,KAAKk0N,kBAAmB,OACpM,MAGR,IAAK,IAAI/rN,EAAI,EAAGA,EAAI+tN,EAAM/tN,IACtB,GAAIipN,EAAch3M,OAAS2/C,EAAQ5xD,GAAGiS,MAAQ07M,EAAY1E,EAAcn9I,WAAagiJ,EAAS,CAC1FA,GAAU,EACVN,EAAqB31N,KAAKgzN,oBAAoBj5J,EAAQ5xD,GAAIA,EAAGqwE,EAAgBx4E,KAAKqnN,cAAgBrnN,KAAKqnN,cAAgB/uI,EAAWA,EAAWz7E,OAAS,GAAKg5N,EAAc71N,KAAKk0N,kBAAmB,UACjM,SAMpBK,EAAmBA,EAAgB13N,OAAS,EAAI03N,EAAkBj8I,EAClEq9I,EAAsBA,EAAmB94N,OAAS,EAAI84N,EAAqBn9I,EAC3Ex4E,KAAKo1N,iBAAiBb,EAAiBoB,GACvC,IAAIrM,EAAiBhrN,YAAO,GAAI0B,KAAK62E,UAAW,MAAM,GACtD72E,KAAKwmN,YAAc,GACnB,IAAIp3I,EAASpvE,KAAK6a,KAAK,GACvB7a,KAAKspF,aAAala,EAAQpvE,KAAK0oN,WAAY5mJ,EAAW8O,kBACtD5wE,KAAKwpN,iBAAiBxpN,KAAK6a,KAAM7a,KAAKwmN,aACtCxmN,KAAKypN,mBAAmB3nJ,EAAWqP,aAAcnxE,KAAK0oN,YACtD1oN,KAAKumN,YAAcvmN,KAAK0pN,oBAAoB1pN,KAAK6a,MACjD7a,KAAK2pN,cAAgB,GACrB3pN,KAAK6pN,oBAAoB/nJ,GACzB9hE,KAAKomN,SAA2B,IAAhBt9I,EAAKjsE,OACjBmD,KAAKu1N,kBAAkBzsJ,EAAMjuD,EAAM,EAAGiuD,EAAK,GAAGwK,gBAC1Cq2I,EAAgB3pN,KAAK2pN,cAAe,MAAO,IAAM,GACzD3pN,KAAKqmN,SAA8B,IAAnBtsJ,EAAQl9D,OACpBmD,KAAKu1N,kBAAkBx7J,EAASl/C,EAAM,EAAGk/C,EAAQ,GAAGuZ,gBAChDq2I,EAAgB3pN,KAAK2pN,cAAe,SAAU,IAAM,GAC5D3pN,KAAKw1N,yBACLx1N,KAAK4uN,gBAAgBtF,GACrBtpN,KAAK4lN,SAAW,EAChB5lN,KAAK2lN,YAAc,EACnB3lN,KAAKomN,SAAWpmN,KAAKy0N,oBAAoBz0N,KAAKomN,SAAUpmN,KAAKomN,SAAUmO,EAAiBv0N,KAAKi1N,oBAAqB,OAClHj1N,KAAKi1N,oBAAsB,GAC3Bj1N,KAAKqmN,SAAWrmN,KAAKy0N,oBAAoBz0N,KAAKqmN,SAAUrmN,KAAKqmN,SAAUsP,EAAoB31N,KAAKi1N,oBAAqB,UACrHj1N,KAAK2oN,sBAAuB,EAE3B1C,GACDjmN,KAAKm2N,oBAELn2N,KAAKklE,eACA+gJ,GAODjmN,KAAKomN,SAAWH,EAAiB3tI,WACjCt4E,KAAKqmN,SAAWJ,EAAiBztI,cACjCx4E,KAAK4lN,SAAWK,EAAiBC,gBACjClmN,KAAK2lN,YAAcM,EAAiBE,qBATpCnmN,KAAKimN,iBAAiB3tI,WAAat4E,KAAKomN,SACxCpmN,KAAKimN,iBAAiBztI,cAAgBx4E,KAAKqmN,SAC3CrmN,KAAKimN,iBAAiBC,gBAAkBlmN,KAAK4lN,SAC7C5lN,KAAKimN,iBAAiBE,mBAAqBnmN,KAAK2lN,aAQpD3lN,KAAKo2N,yBAETp2N,KAAKq2N,qBAAqBvtJ,EAAM/O,EAAS/5D,KAAKomN,SAAUpmN,KAAKqmN,SAAU9pJ,GACvEv8D,KAAKs2N,cAAct2N,KAAKqmN,SAAUqP,EAAU11N,KAAKwvE,YAAa,EAAGxvE,KAAKyxE,UAAY,EAAImkJ,GACtF51N,KAAKu2N,kBACLv2N,KAAKw2N,aAAax2N,KAAKomN,SAAUqP,EAAUC,EAAU,EAAG11N,KAAKwvE,YAAaomJ,EAAc51N,KAAKqnN,cAAgBrnN,KAAKqnN,cAAgBrnN,KAAKomN,SAASpmN,KAAKomN,SAASvpN,OAAS,GAAMmD,KAAKsnN,iBAAmBtnN,KAAKsnN,iBAAmBtnN,KAAKqmN,SAASrmN,KAAKqmN,SAASxpN,OAAS,IAClQmD,KAAKy2N,uBAAuBhB,EAAUC,EAAU11N,KAAKwvE,aACrDxvE,KAAK0jF,iBAAkB,EACvB1jF,KAAKo1N,iBAAiBp1N,KAAKomN,SAAUpmN,KAAKqmN,WAG9ClB,EAAYjpN,UAAUw6N,cAAgB,SAAUC,EAASC,GAErDD,EAAWv5N,YAAkBu5N,MAAY32N,KAAKkyE,kBAAmBlyE,KAAKmyE,uBAC1DnyE,KAAK8oE,KAAKjsE,OAAS,GAAoB85N,GAC7C32N,KAAKklE,cAAiBllE,KAAKunN,sBAA2BoP,IAAY32N,KAAKqnN,gBACxB,cAAjDrnN,KAAKomN,SAASpmN,KAAKomN,SAASvpN,OAAS,GAAGsO,OACxCnL,KAAKomN,SAAWpmN,KAAKomN,SAAS/kN,MAAM,EAAGrB,KAAKomN,SAASvpN,OAAS,IAGlE+5N,EAAcx5N,YAAkBw5N,MAAe52N,KAAKkyE,kBAAmBlyE,KAAKoyE,0BAChEpyE,KAAK+5D,QAAQl9D,OAAS,GAAoB+5N,GAChD52N,KAAKklE,cAAiBllE,KAAKwnN,yBAA8BoP,IAAe52N,KAAKsnN,mBAC9B,cAAjDtnN,KAAKqmN,SAASrmN,KAAKqmN,SAASxpN,OAAS,GAAGsO,OACxCnL,KAAKqmN,SAAWrmN,KAAKqmN,SAAShlN,MAAM,EAAGrB,KAAKqmN,SAASxpN,OAAS,KAGtEsoN,EAAYjpN,UAAU26N,kBAAoB,SAAUH,GAChD,IAAIC,KAAW32N,KAAKkyE,kBAAmBlyE,KAAKmyE,uBAA8BnyE,KAAK8oE,KAAKjsE,OAAS,GACzF+5N,KAAc52N,KAAKkyE,kBAAmBlyE,KAAKoyE,0BAAiCpyE,KAAK+5D,QAAQl9D,OAAS,GAKtG,GAJI65N,GACA12N,KAAK02N,cAAcC,EAASC,IAG1B52N,KAAKklE,cAAiBllE,KAAKunN,sBAC3BoP,IAAY32N,KAAKqnN,gBAAmBrnN,KAAKqlN,aAAaxoN,OAAS,EAAG,CACpE,IAAIi6N,EAAW,EACX92N,KAAKyxE,WAAazxE,KAAKu8D,OAAO1/D,OAAS,IACvCi6N,EAAW,EAAI92N,KAAKu8D,OAAO1/D,QAE3BmD,KAAKwvE,YAAYxvE,KAAKwvE,YAAY3yE,OAASi6N,IACsB,cAAjE92N,KAAKwvE,YAAYxvE,KAAKwvE,YAAY3yE,OAASi6N,GAAU,GAAG3rN,OACxDnL,KAAKwvE,YAAcxvE,KAAKwvE,YAAYnuE,MAAM,EAAGrB,KAAKwvE,YAAY3yE,OAASi6N,GACvE92N,KAAKqlN,aAAerlN,KAAKqlN,aAAahkN,MAAM,EAAGrB,KAAKqlN,aAAaxoN,OAASi6N,IAIlF,IAAM92N,KAAKklE,cAAiBllE,KAAKwnN,yBAC3BoP,IAAe52N,KAAKsnN,mBAAsBtnN,KAAKqqD,cAAcxtD,OAAS,EAAG,CACvEi6N,EAAW92N,KAAKu8D,OAAO1/D,OAI3B,GAHImD,KAAKyxE,WAAazxE,KAAKu8D,OAAO1/D,OAAS,IACvCi6N,EAAW,GAEX92N,KAAKwvE,YAAY,GAAGxvE,KAAKwvE,YAAY,GAAG3yE,OAASi6N,IACmB,cAApE92N,KAAKwvE,YAAY,GAAGxvE,KAAKwvE,YAAY,GAAG3yE,OAASi6N,GAAU3rN,KAC3D,IAAK,IAAI6lN,EAAK,EAAGA,EAAKhxN,KAAKwvE,YAAY3yE,OAAQm0N,IAI3C,GAHIhxN,KAAKwvE,YAAYwhJ,KACjBhxN,KAAKwvE,YAAYwhJ,GAAMhxN,KAAKwvE,YAAYwhJ,GAAI3vN,MAAM,EAAGrB,KAAKwvE,YAAYwhJ,GAAIn0N,OAASi6N,IAEnF92N,KAAKqqD,cAAc2mK,GACnB,IAAK,IAAIr7M,EAAM3V,KAAKwvE,YAAYwhJ,GAAIn0N,OAAQ8Y,EAAO3V,KAAKwvE,YAAYwhJ,GAAIn0N,OAASi6N,EAAWnhN,WACjF3V,KAAKqqD,cAAc2mK,GAAIr7M,GAMlD3V,KAAKunN,oBAAsBvnN,KAAKwnN,wBAAyB,GAI7DrC,EAAYjpN,UAAU66N,QAAU,SAAUC,GACtCh3N,KAAKs1N,mBACL,IAAI2B,EAAcj3N,KAAKk3N,eAAeF,EAAYxgJ,UAAWwgJ,EAAYjrL,MACzE/rC,KAAKm3N,sBAAsBF,EAAYjyM,QAASgyM,EAAaC,EAAY7nJ,OAAQ6nJ,EAAYlpL,SAAU,GACvG/tC,KAAKimN,iBAAiBC,gBAAkBlmN,KAAK4lN,SAC7C5lN,KAAKimN,iBAAiBE,mBAAqBnmN,KAAK2lN,YACvB,QAArBsR,EAAYlrL,KACZ/rC,KAAKimN,iBAAiB3tI,WAAa2+I,EAAYjyM,QAG/ChlB,KAAKimN,iBAAiBztI,cAAgBy+I,EAAYjyM,QAEtDhlB,KAAKo3N,gBAITjS,EAAYjpN,UAAUm7N,OAAS,SAAUC,GACrC,IAAIL,EAAcj3N,KAAKk3N,eAAeI,EAASl9M,KAAM,IACrDpa,KAAK62E,UAAUygJ,EAASl9M,MAAMynE,KAAOy1I,EAAS7iJ,MAC9Cz0E,KAAKu3N,qBAAqBN,EAAYjyM,QAASsyM,EAAUL,EAAa,GACtEj3N,KAAKo3N,gBAITjS,EAAYjpN,UAAUs7N,SAAW,SAAUC,EAAY31J,GACnD,IAAIm1J,EAAcj3N,KAAKk3N,eAAeO,EAAWr9M,KAAM,IAC/B,YAApBq9M,EAAWtsN,MAAsBssN,EAAW1jJ,MAAMl3E,SAAWmD,KAAK62E,UAAU4gJ,EAAWr9M,MAAMsnE,WAAW7kF,QACxGmD,KAAK62E,UAAU4gJ,EAAWr9M,MAAM8W,OAAS,GACzClxB,KAAK62E,UAAU4gJ,EAAWr9M,MAAM8nE,WAAa,KAG7CliF,KAAK62E,UAAU4gJ,EAAWr9M,MAAM8W,OAASumM,EAAW1jJ,MACpD/zE,KAAK62E,UAAU4gJ,EAAWr9M,MAAM8nE,WAAau1I,EAAWtsN,MAG5D,IADA,IAAIusN,EAAS,GACJ15N,EAAK,EAAGuF,EAAKvD,KAAK2pN,cAAe3rN,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAI2X,EAAMpS,EAAGvF,GACb05N,EAAO/hN,GAAOA,EAElB3V,KAAK2pN,cAAgB,GACrB3pN,KAAKinN,eAAiB,GACtBjnN,KAAK6pN,oBAAoB/nJ,GAKzB,IAHA,IAAI61J,EAAS33N,KAAK2pN,cAAcz4L,QAAO,SAAUvb,GAAO,YAAuB3Z,IAAhB07N,EAAO/hN,MAElEiiN,EAAW,GACN7iM,EAAK,EAAGI,EAAKsiM,EAAW1jJ,MAAOh/C,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAC1D,IAAIymB,EAAOrmB,EAAGJ,GACd6iM,EAASp8K,GAAQA,EAGrB,GADuBx7C,KAAK8oE,KAAK,IAAM9oE,KAAK8oE,KAAK,GAAGwK,iBAAqBtzE,KAAK+5D,QAAQ,IAAM/5D,KAAK+5D,QAAQ,GAAGuZ,gBACvF,CACjB,IAAIq2I,EAAgB,GACpB3pN,KAAKknN,aAAe,GACpB,IAAK,IAAI8J,EAAK,EAAGA,EAAK2G,EAAO96N,OAAQm0N,IACjChxN,KAAKknN,aAAayQ,EAAO3G,IAAO2G,EAAO3G,GAE3C,IAASA,EAAK,EAAGA,EAAKhxN,KAAKwmN,YAAY3pN,OAAQm0N,IAC3CrH,EAAc/nN,KAAKovN,GAEvB2G,EAAShO,EAEb3pN,KAAK63N,0BAA0BJ,EAAYR,EAAaU,GACxD33N,KAAKgoN,8BAA+B,EACpChoN,KAAKioN,wBAA0B,GAC/BjoN,KAAKo3N,gBAITjS,EAAYjpN,UAAU47N,cAAgB,SAAUt+J,GAC5Cx5D,KAAK62E,UAAUrd,EAAMp/C,MAAM68D,cAAgBzd,EAAMruD,KACjDnL,KAAKomN,SAAWpmN,KAAKimN,iBAAiB3tI,WACtCt4E,KAAKqmN,SAAWrmN,KAAKimN,iBAAiBztI,cAClCx4E,KAAK+nN,uBACL/nN,KAAK6a,KAAO7a,KAAK6oN,kBAAkB7oN,KAAKowE,oBACxCpwE,KAAKumN,YAAcvmN,KAAK0pN,oBAAoB1pN,KAAK6a,OAErD7a,KAAKo3N,gBAITjS,EAAYjpN,UAAU67N,gBAAkB,SAAUv+J,GAC9Cx5D,KAAKomN,SAAWpmN,KAAKimN,iBAAiB3tI,WACtCt4E,KAAKqmN,SAAWrmN,KAAKimN,iBAAiBztI,cACtCx4E,KAAKuuN,mBAAmBvuN,KAAKovE,QACzBpvE,KAAK62E,UAAUrd,EAAMp/C,MACrBpa,KAAK62E,UAAUrd,EAAMp/C,MAAMg7D,QAAU5b,EAAM4b,SAG3Cp1E,KAAK62E,UAAUrd,EAAMp/C,MAAQ,CACzBX,GAAI+/C,EAAMp/C,KACV64D,QAASzZ,EAAMp/C,KACfjP,KAAM,SACN8rE,cAAe,kBACfiL,WAAY,GACZ1nE,MAAOxa,KAAKovE,OAAOvyE,OAAS,EAC5Bq0B,OAAQ,GACR2wD,KAAM7hF,KAAK0oN,WAAa,YAAc,OACtCrmI,YAAY,EACZE,eAAe,EACfnN,QAAS5b,EAAM4b,SAEI,IAAnBp1E,KAAKyxE,UACLzxE,KAAKimN,iBAAiBC,gBAAkBlmN,KAAK4lN,SAAY5lN,KAAK4lN,UAAY5lN,KAAKu8D,OAAO1/D,OAAS,GAAMmD,KAAKu8D,OAAO1/D,OAGjHmD,KAAKimN,iBAAiBE,mBAAqBnmN,KAAK2lN,YAAe3lN,KAAK2lN,aAAe3lN,KAAKu8D,OAAO1/D,OAAS,GAAMmD,KAAKu8D,OAAO1/D,QAGlImD,KAAKo3N,gBAETjS,EAAYjpN,UAAUi7N,sBAAwB,SAAUnyM,EAASgyM,EAAa5nJ,EAAQrhC,EAAUiqL,GAE5F,IADA,IAAIl9J,EAAQ,EACLA,EAAQ91C,EAAQnoB,QAAQ,CAC3B,GAAIkxC,IAAaiqL,GACb,GAAIhB,EAAYryL,aAAe3f,EAAQ81C,GAAO4e,UAAU26I,UAAU13N,MAAMqD,KAAKuxE,kBAAkBuD,iBAC1FnwE,KAAKqyN,EAAYriJ,UAAYqiJ,EAAYriJ,UAAY,MAAO,CAC7D,GAA2B,SAAvBqiJ,EAAYlxL,OAAmB,CAC/B9gB,EAAQ81C,GAAOkf,WAAY,EAC3Bh1D,EAAQ81C,GAAOsf,QAAUp6E,KAAKu1N,kBAAkBnmJ,EAAQpvE,KAAK6a,KAAMkzB,EAAW,EAAG/oB,EAAQ81C,GAAOtgD,MAAOw8M,EAAYjrL,KAAMirL,EAAYryL,WACjIhoC,MAAMq6N,EAAYriJ,UAAYqiJ,EAAYriJ,UAAY,MAAMhwE,KAAK3E,KAAKuxE,kBAAkBuD,kBAC5F,IAAImjJ,OAAgB,EACpB,GAAyB,QAArBjB,EAAYjrL,KACZksL,EAAgBj4N,KAAKm2N,kBAAkBnxM,EAAQ81C,GAAOsf,QAASp6E,KAAKqmN,UACpErhM,EAAQ81C,GAAOsf,QAAU69I,EAAc7R,aAEtC,CACD,IAAIr0I,EAAgB/xE,KAAK+xE,eAAiB/xE,KAAKiyE,qBAAuB7C,EAAOrhC,GAAUgkC,cACvF/xE,KAAK2lN,aAAgB5zI,EAAuC,EAAvB/xE,KAAK8mN,gBAC1CmR,EAAgBj4N,KAAKm2N,kBAAkBn2N,KAAKomN,SAAUphM,EAAQ81C,GAAOsf,SACrEp1D,EAAQ81C,GAAOsf,QAAU69I,EAAc5R,eAI3CrhM,EAAQ81C,GAAOkf,WAAY,EAC3Bh6E,KAAKk4N,mBAAmBlzM,EAAQ81C,GAAOsf,QAAS48I,EAAYjrL,KAAMgC,EAAUqhC,EAAQ,SAAS,GAC7FpqD,EAAQ81C,GAAOsf,QAAU,GAE7B,YAGCp1D,EAAQ81C,GAAOsf,QAAQv9E,OAAS,IACrCmoB,EAAQ81C,GAAOsf,QAAUp6E,KAAKm3N,sBAAsBnyM,EAAQ81C,GAAOsf,QAAS48I,EAAa5nJ,EAAQrhC,EAAUiqL,EAAkB,IAEjIl9J,IAEJ,OAAO91C,GAEXmgM,EAAYjpN,UAAUq7N,qBAAuB,SAAUvyM,EAASsyM,EAAUL,EAAae,GAEnF,IADA,IAAIl9J,EAAQ,EACLA,EAAQ91C,EAAQnoB,QAAQ,CAC3B,GAAIo6N,EAAYlpL,WAAaiqL,EAAiB,CAC1ChzM,EAAUhlB,KAAKm4N,iBAAiBnzM,EAASsyM,EAAS7iJ,MAAMtnE,YACxD,MAEK6X,EAAQ81C,GAAOsf,QAAQv9E,OAAS,IACrCmoB,EAAQ81C,GAAOsf,QAAUp6E,KAAKu3N,qBAAqBvyM,EAAQ81C,GAAOsf,QAASk9I,EAAUL,EAAae,EAAkB,IAExHl9J,IAEJ,OAAO91C,GAGXmgM,EAAYjpN,UAAUk8N,sBAAwB,SAAUpzM,EAASyyM,EAAYR,EAAaoB,EAAeL,GAiBrG,IAhBA,IAAIl9J,EAAQ,EACRw9J,GAAS,EACT1vI,EAAU,WACV,GAAIquI,EAAYlpL,WAAaiqL,EAAiB,CAC1C,IAAIO,EAAWC,EACfxzM,EAAUA,EAAQkM,QAAO,SAAUsqB,GAC/B,OAAQ+8K,EAAStR,eAAewQ,EAAWr9M,MAAM04M,UAAUt3K,EAAKk9B,gBAAgC,cAAdl9B,EAAKrwC,QAE3FmtN,GAAS,OAEJtzM,EAAQ81C,GAAOsf,QAAQv9E,OAAS,IACrCmoB,EAAQ81C,GAAOsf,QAAUo+I,EAAOJ,sBAAsBpzM,EAAQ81C,GAAOsf,QAASq9I,EAAYR,EAAaoB,EAAeL,EAAkB,IAE5Il9J,KAEA09J,EAASx4N,KACN86D,EAAQ91C,EAAQnoB,QAAUy7N,GAC7B1vI,IAEJ,IAAI6vI,EAASz4N,KACb,OAAOglB,EAAQkM,QAAO,SAAUsqB,GAC5B,OAAOA,EAAK4+B,QAAQv9E,OAAS,EAAI2+C,EAAK4+B,QAAQv9E,OAAS,EAAI47N,EAAOC,aAAal9K,EAAK28B,YAAakgJ,OAGzGlT,EAAYjpN,UAAUw8N,aAAe,SAAUl+M,EAAO69M,GAClD,IAAIp7N,EAAOiB,OAAOjB,KAAKud,GACnB7Y,EAAM1E,EAAKJ,OACf,GAAY,IAAR8E,EACA,OAAO,EAEX,KAAOA,GAAO,GAAG,CACb,QAAwC3F,IAApCq8N,EAAc79M,EAAMvd,EAAK0E,KACzB,OAAO,EAEXA,IAEJ,OAAO,GAEXwjN,EAAYjpN,UAAUy8N,sBAAwB,SAAU3zM,EAASoqD,EAAQ6nJ,GAuBrE,IAtBA,IAAIn8J,EAAQ,EACR89J,EAAU,WACV,IAAIvE,EAAYrvM,EAAQ81C,GAAO4e,UAAU26I,UACzC,GAAIwE,EAAO5Q,wBAAwBoM,GAAY,CAE3C,IADA,IAAIyE,EAAkB,GACb96N,EAAK,EAAGuF,EAAKyhB,EAAQ81C,GAAOsf,QAASp8E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAChE,IAAIwmC,EAASjhC,EAAGvF,GAChB86N,EAAgBt0L,EAAOk1C,UAAU26I,UAAUlnN,YAAcq3B,EAAOk1C,UAAU26I,UAAUlnN,WAExF,IAAI4rN,EAAgBF,EAAO5Q,wBAAwBoM,GAAWnjM,QAAO,SAAUsT,GAC3E,OAAQs0L,EAAgBt0L,EAAOk1C,UAAU26I,UAAUlnN,eAEvD6X,EAAQ81C,GAAOsf,QAAUp1D,EAAQ81C,GAAOsf,QAAQtoD,OAAOinM,GACvD/zM,EAAQ81C,GAAOsf,QAAUy+I,EAAOV,iBAAiBnzM,EAAQ81C,GAAOsf,QAASy+I,EAAOhiJ,UAAUogJ,EAAY7nJ,OAAOpqD,EAAQ81C,GAAOsf,QAAQ,GAAGlB,OAAO9+D,MAAMynE,aAC7Ig3I,EAAO5Q,wBAAwBoM,GAEtCrvM,EAAQ81C,GAAOsf,QAAQv9E,OAAS,IAChCmoB,EAAQ81C,GAAOsf,QAAUy+I,EAAOF,sBAAsB3zM,EAAQ81C,GAAOsf,QAAShL,EAAQ6nJ,IAE1Fn8J,KAEA+9J,EAAS74N,KACN86D,EAAQ91C,EAAQnoB,QACnB+7N,IAEJ,OAAO5zM,GAEXmgM,EAAYjpN,UAAU27N,0BAA4B,SAAUJ,EAAYR,EAAaU,GAGjF,IAFA,IAAIqB,EAAkC,QAArB/B,EAAYlrL,KAAiB/rC,KAAKomN,SAAWpmN,KAAKqmN,SAC/DgS,EAAgB,GACXr6N,EAAK,EAAGuF,EAAKvD,KAAK2pN,cAAe3rN,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIw9C,EAAOj4C,EAAGvF,GACdq6N,EAAc78K,GAAQA,EAK1B,GAHIx7C,KAAKinN,eAAewQ,EAAWr9M,QAC/B4+M,EAAah5N,KAAKo4N,sBAAsBnB,EAAYjyM,QAASyyM,EAAYR,EAAaoB,EAAe,IAErGV,EAAO96N,OAAS,GAAKo6N,EAAY7nJ,OAAOvyE,OAAS,EAAG,CAEpD,GADAmD,KAAKgoN,8BAA+B,EAChCiP,EAAY7nJ,OAAOl+C,QAAO,SAAUsqB,GAAQ,OAAOA,EAAK83B,mBAAoBz2E,OAAS,EACrF,IAAK,IAAID,EAAI,EAAGA,EAAIoD,KAAK6a,KAAKhe,OAAQD,IAClC+6N,EAAO/1N,KAAKhF,GAKpBoD,KAAKioN,wBAAgC,OAAIjoN,KAAKu1N,kBAAkB0B,EAAY7nJ,OAAQpvE,KAAK6a,KAAM,EAAG88M,EAAQV,EAAYlrL,KAAM,IAC5HitL,EAAah5N,KAAK24N,sBAAsBK,EAAY/B,EAAY7nJ,OAAQ6nJ,GAExE,IADA,IAAIgC,EAAgB,GACXlkM,EAAK,EAAGmkM,EAAeF,EAAYjkM,EAAKmkM,EAAar8N,OAAQk4B,IAAM,CACxE,IAAIhQ,EAASm0M,EAAankM,GAC1BkkM,EAAcl0M,EAAO20D,UAAU26I,UAAUlnN,YAAc4X,EAAO20D,UAAU26I,UAAUlnN,WAEtF,IAAI4rN,EAAgB/4N,KAAKioN,wBAAgC,OAAE/2L,QAAO,SAAUnM,GACxE,OAAQk0M,EAAcl0M,EAAO20D,UAAU26I,UAAUlnN,eAEjDgsN,EAAcH,EAAW9nM,QAAO,SAAUsqB,GAAQ,MAAqB,cAAdA,EAAKrwC,QAC9DguN,EAAYt8N,OAAS,GACrBm8N,EAAW17G,MAGf07G,EAAah5N,KAAKm4N,iBAAiBa,EAAWlnM,OAAOinM,GAAgB/4N,KAAK62E,UAAUogJ,EAAY7nJ,OAAO,GAAGh1D,MAAMynE,MAAM/vD,OAAOqnM,GAExG,QAArBlC,EAAYlrL,KACZ/rC,KAAK4lN,SAAW,EAGhB5lN,KAAK2lN,YAAc,EAEvB3lN,KAAKk4N,mBAAmBc,EAAY/B,EAAYlrL,KAAM,EAAGkrL,EAAY7nJ,OAAQ,QAAQ,GAC5D,QAArB6nJ,EAAYlrL,MACRkrL,EAAYlpL,SAAW,GACvB/tC,KAAKo5N,eAAep5N,KAAK8oE,KAAM9oE,KAAK6a,KAAM,EAAG7a,KAAK2pN,cAAe,MAAO,GAAIqP,GAEhFh5N,KAAKq5N,oBAAoBL,GACzBh5N,KAAKomN,SAAWpmN,KAAKimN,iBAAiB3tI,WAAa0gJ,EACnDh5N,KAAKimN,iBAAiBC,gBAAkBlmN,KAAK4lN,WAGzCqR,EAAYlpL,SAAW,GACvB/tC,KAAKo5N,eAAep5N,KAAK+5D,QAAS/5D,KAAK6a,KAAM,EAAG7a,KAAK2pN,cAAe,SAAU,GAAIqP,GAEtFh5N,KAAKq5N,oBAAoBL,GACzBh5N,KAAKqmN,SAAWrmN,KAAKimN,iBAAiBztI,cAAgBwgJ,EACtDh5N,KAAKimN,iBAAiBE,mBAAqBnmN,KAAK2lN,aAEpD3lN,KAAKm2N,qBAGThR,EAAYjpN,UAAUg7N,eAAiB,SAAU1gJ,EAAWzqC,GACxD/rC,KAAKomN,SAAWpmN,KAAKimN,iBAAiB3tI,WACtCt4E,KAAKqmN,SAAWrmN,KAAKimN,iBAAiBztI,cAKtC,IAHA,IAAIxzD,EAAmB,SADvB+mB,EAAgB,KAATA,EAAc/rC,KAAKs5N,mBAAmB9iJ,GAAazqC,GAC3B/rC,KAAKomN,SAAWpmN,KAAKqmN,SAChDj3I,EAAkB,QAATrjC,EAAiB/rC,KAAK8oE,KAAO9oE,KAAK+5D,QAC3ChsB,EAAW,EACN/vC,EAAK,EAAGu7N,EAAWnqJ,EAAQpxE,EAAKu7N,EAAS18N,OAAQmB,IAAM,CAE5D,GADYu7N,EAASv7N,GACXoc,OAASo8D,EACf,MAEJzoC,IAEJ,MAAO,CAAEhC,KAAMA,EAAMqjC,OAAQA,EAAQpqD,QAASA,EAAS+oB,SAAUA,IAIrEo3K,EAAYjpN,UAAUk7N,aAAe,WACjCp3N,KAAK4mN,YAAc,EACnB5mN,KAAKyvN,sBACLzvN,KAAKo2N,wBACLp2N,KAAKwvE,YAAc,GACnBxvE,KAAKqqD,cAAgB,GACrBrqD,KAAKqlN,aAAe,GACpB,IAAIoQ,EAAW,GACXC,EAAW,GACXE,EAAe51N,KAAKu8D,OAAO1/D,OAC/BmD,KAAKq2N,qBAAqBr2N,KAAK8oE,KAAM9oE,KAAK+5D,QAAS/5D,KAAKomN,SAAUpmN,KAAKqmN,SAAUrmN,KAAKu8D,QACtFv8D,KAAKs2N,cAAct2N,KAAKqmN,SAAUqP,EAAU11N,KAAKwvE,YAAa,EAAGxvE,KAAKyxE,UAAY,EAAImkJ,GACtF51N,KAAKu2N,kBACLv2N,KAAKw2N,aAAax2N,KAAKomN,SAAUqP,EAAUC,EAAU,EAAG11N,KAAKwvE,YAAaomJ,EAAc51N,KAAKqnN,cAAgBrnN,KAAKqnN,cAAgBrnN,KAAKomN,SAASpmN,KAAKomN,SAASvpN,OAAS,GAAMmD,KAAKsnN,iBAAmBtnN,KAAKsnN,iBAAmBtnN,KAAKqmN,SAASrmN,KAAKqmN,SAASxpN,OAAS,IAClQmD,KAAKy2N,uBAAuBhB,EAAUC,EAAU11N,KAAKwvE,aACrDxvE,KAAK0jF,iBAAkB,EACvB1jF,KAAKo1N,iBAAiBp1N,KAAKomN,SAAUpmN,KAAKqmN,WAE9ClB,EAAYjpN,UAAUo9N,mBAAqB,SAAU9iJ,GAGjD,IAFA,IAAIgjJ,EAAY,EACZztL,EAAO,GACJytL,EAAY,GAAc,KAATztL,GAAa,CACjC,OAAQytL,GACJ,KAAK,EACDztL,EAAO/rC,KAAK02E,eAAeF,EAAWx2E,KAAK8oE,MAAQ,MAAQ,GAC3D,MACJ,KAAK,EACD/8B,EAAO/rC,KAAK02E,eAAeF,EAAWx2E,KAAK+5D,SAAW,SAAW,GAGzEy/J,IAEJ,OAAOztL,GAEXo5K,EAAYjpN,UAAUw6E,eAAiB,SAAUF,EAAWpH,GACxD,OAAO,IAAIrN,IAAY,CAAEC,KAAMoN,IAAU9M,cAAa,IAAIV,KAAQM,MAAM,OAAQ,QAASsU,IAAY,IAEzG2uI,EAAYjpN,UAAUg8N,mBAAqB,SAAUlzM,EAAS+mB,EAAMgC,EAAUqhC,EAAQtpC,EAAQ2zL,GAC1F,IAAIC,EAAS,EACTlgK,EAAQ4V,EAAOrhC,GACfgkC,GAAgB,EAOpB,IALIA,EADS,WAAThmC,IACgB/rC,KAAK+xE,eAAiB/xE,KAAKiyE,qBAAuBzY,IAAQA,EAAMuY,gBAGhE/xE,KAAK+xE,eAAiB/xE,KAAKgyE,kBAAoBxY,IAAQA,EAAMuY,cAE1E2nJ,EAAS10M,EAAQnoB,QACP,QAATkvC,EACA/rC,KAAK4lN,SAAW5lN,KAAK4lN,UAAuB,SAAX9/K,IAAyC,IAAnB9lC,KAAKyxE,UAAkBzxE,KAAKu8D,OAAO1/D,OAAS,GAC3E,IAAnBmD,KAAKyxE,UAAkBzxE,KAAKu8D,OAAO1/D,OAAS,GAGjDmD,KAAK2lN,YAAc3lN,KAAK2lN,aAA0B,SAAX7/K,IAAyC,IAAnB9lC,KAAKyxE,UAAkB,EAAIzxE,KAAKu8D,OAAO1/D,QAC5E,IAAnBmD,KAAKyxE,UAAkB,EAAIzxE,KAAKu8D,OAAO1/D,QAE5CmoB,EAAQ00M,GAAQt/I,QAAQv9E,OAAS,GACjCmD,KAAKk4N,mBAAmBlzM,EAAQ00M,GAAQt/I,QAASruC,EAAMgC,EAAW,EAAGqhC,EAAQtpC,GAAQ,GAEzF4zL,IAES,WAAT3tL,IAAsBgmC,GAAiB0nJ,IACvCz5N,KAAK2lN,aAA0B,SAAX7/K,GAAqB9lC,KAAK8mN,gBAAkB9mN,KAAK8mN,kBAK7E3B,EAAYjpN,UAAU6tN,oBAAsB,SAAUhlM,GAIlD,IAHA,IAAI9nB,EAAOiB,OAAOjB,KAAK8nB,GACnBsqD,EAAS,EACTsqJ,EAAe,GACZtqJ,EAASpyE,EAAKJ,QACjB88N,EAAa18N,EAAKoyE,IAAWtqD,EAAO9nB,EAAKoyE,IACzCA,IAEJ,OAAOsqJ,GAEXxU,EAAYjpN,UAAUi8N,iBAAmB,SAAUnzM,EAAS+vD,GACxD,IAAI6kJ,IAAkB55N,KAAKslN,cAAgBtlN,KAAKslN,aAAatgM,EAAQ,GAAG00D,UAAU3tC,OAC9E/rC,KAAKslN,aAAatgM,EAAQ,GAAG00D,UAAU3tC,MAAM5gC,MAC7CylB,EAAY5wB,KAAK62E,UAAU7xD,EAAQ,GAAG00D,UAAU3tC,MACpD,GAAI6tL,EAAe,CACf,GAAIhpM,GAA+B,UAAlBA,EAAUzlB,MAAoB6Z,EAAQnoB,OAAS,GAAwC,iBAA1BmoB,EAAQ,GAAGizD,WAA0B,CAI/G,IAHA,IAAI4hJ,EAAc,GACdC,EAAmB,GACnBC,EAAY,GACPn9N,EAAI,EAAGA,EAAIooB,EAAQnoB,OAAQD,IAC5BwP,MAAM4Y,EAAQpoB,GAAGq7E,WAAW9qE,WAAWw5F,OAAO,IAC9CkzH,EAAYj4N,KAAKojB,EAAQpoB,IAEM,KAA1BooB,EAAQpoB,GAAGq7E,WAChB8hJ,EAAUn4N,KAAKojB,EAAQpoB,IAGvBk9N,EAAiBl4N,KAAKojB,EAAQpoB,IActC,OAXIi9N,EAAYh9N,OAAS,IACrBg9N,EAAiC,cAAnBjpM,EAAUixD,KAAwBg4I,EAAYh4I,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEkvE,WAAatwE,EAAEswE,WAAc,EAAMtwE,EAAEswE,WAAalvE,EAAEkvE,YAAe,EAAI,KAC7I,eAAnBrnD,EAAUixD,KAAyBg4I,EAAYh4I,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEkvE,WAAatwE,EAAEswE,WAAc,EAAMtwE,EAAEswE,WAAalvE,EAAEkvE,YAAe,EAAI,KAAU4hJ,GAErKC,EAAiBj9N,OAAS,IAC1Bi9N,EAAsC,cAAnBlpM,EAAUixD,KACxBi4I,EAAiBj4I,MAAK,SAAU94E,EAAGpB,GAAK,OAAQsuC,OAAOltC,EAAEkvE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAMqzC,OAAOtuC,EAAEswE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAO,EAAMqzC,OAAOtuC,EAAEswE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAMqzC,OAAOltC,EAAEkvE,WAAW9qE,WAAWvK,MAAM,OAAO,KAAQ,EAAI,KACnP,eAAnBguB,EAAUixD,KACLi4I,EAAiBj4I,MAAK,SAAU94E,EAAGpB,GAAK,OAAQsuC,OAAOltC,EAAEkvE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAMqzC,OAAOtuC,EAAEswE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAO,EAAMqzC,OAAOtuC,EAAEswE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAMqzC,OAAOltC,EAAEkvE,WAAW9qE,WAAWvK,MAAM,OAAO,KAAQ,EAAI,KACtQk3N,GAEKC,EAAUjoM,OAAOgoM,EAAkBD,GAGpD,MAAqB,cAAd9kJ,EACF/vD,EAAQ68D,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEkvE,WAAatwE,EAAEswE,WAAc,EAAMtwE,EAAEswE,WAAalvE,EAAEkvE,YAAe,EAAI,KACnG,eAAdlD,EACK/vD,EAAQ68D,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEkvE,WAAatwE,EAAEswE,WAAc,EAAMtwE,EAAEswE,WAAalvE,EAAEkvE,YAAe,EAAI,KACjHjzD,EAIZ,MAAqB,cAAd+vD,EACF/vD,EAAQ68D,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEqnN,SAAWzoN,EAAEyoN,SAAY,EAAMzoN,EAAEyoN,SAAWrnN,EAAEqnN,UAAa,EAAI,KAC3F,eAAdr7I,EACK/vD,EAAQ68D,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEqnN,SAAWzoN,EAAEyoN,SAAY,EAAMzoN,EAAEyoN,SAAWrnN,EAAEqnN,UAAa,EAAI,KACzGprM,GAIhBmgM,EAAYjpN,UAAUi6N,kBAAoB,SAAU/P,EAAUC,GAE1D,IAAI2T,GAAiB,EAMrB,QALiBh+N,IAAboqN,QAAuCpqN,IAAbqqN,IAC1BD,EAAWpmN,KAAKomN,SAChBC,EAAWrmN,KAAKqmN,SAChB2T,GAAiB,GAEjBh6N,KAAKyjF,oBAAsBzjF,KAAKuxE,kBAAkBxU,YACZ,KAAtC/8D,KAAKuxE,kBAAkBxU,YAAqB/8D,KAAKu8D,OAAO1/D,OAAS,EAAG,CAMpE,IALA,IAAIo9N,EAAYj6N,KAAKuxE,kBAAkBxU,WAAWpgE,MAAMqD,KAAKuxE,kBAAkBuD,iBAC3EolJ,EAAQ,GACRC,OAAS,EACTC,OAAQ,EACRnnJ,OAAU,EACLr2E,EAAI,EAAGA,EAAIoD,KAAKu8D,OAAO1/D,OAAQD,IAAK,CACzC,GAAIoD,KAAKu8D,OAAO3/D,GAAGq2E,UAAYgnJ,EAAUA,EAAUp9N,OAAS,GAAI,CAC5Do2E,EAAUjzE,KAAKu8D,OAAO3/D,GAAGwd,KACzB,MAGA64D,EAAUgnJ,EAAUA,EAAUp9N,OAAS,GAG/C,IAA6B,IAAvBmD,KAAKu8D,OAAO1/D,QAAwC,IAAxBmD,KAAK+5D,QAAQl9D,QAAiBmD,KAAKu8D,OAAO1/D,OAAS,IAAMo2E,GAAWjzE,KAAK62E,UAAU5D,GAAU,CAC3H,IAASr2E,EAAI,EAAGA,EAAIq9N,EAAUp9N,OAAS,EAAGD,IACtCs9N,EAAkB,KAAVA,EAAeD,EAAUr9N,GAAMs9N,EAAQl6N,KAAKuxE,kBAAkBuD,gBAAkBmlJ,EAAUr9N,GAEtGu9N,EAASn6N,KAAK62E,UAAU5D,GAASz4D,MACjC4/M,EAAQp6N,KAAK62E,UAAU5D,GAASgE,kBAE/B,CACD,GAAKj3E,KAAKsyE,uBAA8C,IAArB2nJ,EAAUp9N,OAIzC,IAASD,EAAI,EAAGA,EAAIq9N,EAAUp9N,OAAS,EAAGD,IACtCs9N,EAAkB,KAAVA,EAAeD,EAAUr9N,GAAMs9N,EAAQl6N,KAAKuxE,kBAAkBuD,gBAAkBmlJ,EAAUr9N,QAJtGs9N,EAAQl6N,KAAKuxE,kBAAkBxU,WAOnCo9J,EAASn6N,KAAK62E,UAAU72E,KAAKu8D,OAAO,GAAGniD,MAAMI,MAC7C4/M,EAAQp6N,KAAK62E,UAAU72E,KAAKu8D,OAAO,GAAGniD,MAAM68D,cAEhD,IAAIzyC,OAAS,EACU,IAAnBxkC,KAAKyxE,WACLjtC,EAASxkC,KAAKq6N,UAAUhU,EAAU6T,MAE9B9T,EAAWpmN,KAAKs6N,eAAelU,EAAU5hL,EAAQxkC,KAAKuxE,kBAAkBwD,UAAWolJ,EAAQC,KAI/F51L,EAASxkC,KAAKq6N,UAAUjU,EAAU8T,MAE9B7T,EAAWrmN,KAAKs6N,eAAejU,EAAU7hL,EAAQxkC,KAAKuxE,kBAAkBwD,UAAWolJ,EAAQC,IAG/FJ,IACAh6N,KAAKomN,SAAWA,EAChBpmN,KAAKqmN,SAAWA,EACZrmN,KAAKklE,eACLllE,KAAKimN,iBAAiB3tI,WAAat4E,KAAKomN,SACxCpmN,KAAKimN,iBAAiBztI,cAAgBx4E,KAAKqmN,WAIvD,MAAO,CAAED,SAAUA,EAAUC,SAAUA,IAE3ClB,EAAYjpN,UAAUm+N,UAAY,SAAUhU,EAAUtpJ,GAGlD,IAFA,IACIv4B,EADA+1L,EAAOlU,EAASxpN,OAEXsL,EAAI,EAAGA,EAAIoyN,EAAMpyN,IAAK,CAC3B,GAAIk+M,EAASl+M,GAAGuxE,UAAU26I,YAAct3J,EAAY,CAChDv4B,EAAS6hL,EAASl+M,GAClB,MAKJ,GAHSk+M,EAASl+M,GAAGiyE,QAAQv9E,OAAS,IAClC2nC,EAASxkC,KAAKq6N,UAAUhU,EAASl+M,GAAGiyE,QAASrd,IAE7Cv4B,EACA,OAAOA,EAGf,OAAOA,GAEX2gL,EAAYjpN,UAAUo+N,eAAiB,SAAUlU,EAAU5hL,EAAQuwC,EAAWolJ,EAAQC,GAElF,IADA,IAAII,EAAY,GACPx8N,EAAK,EAAGy8N,EAAarU,EAAUpoN,EAAKy8N,EAAW59N,OAAQmB,IAAM,CAElE,GAAoB,eADhB+mB,EAAS01M,EAAWz8N,IACbmN,KACPqvN,EAAU54N,KAAK,CAAE,OAAUmjB,QAE1B,CACD/kB,KAAK0nN,eAAiB,GACtB,IAAIlrN,EAAQwD,KAAKyzN,kBAAkB1uM,EAAOvK,MAAOgqB,EAAO2zC,YAAagiJ,EAAQC,GACzE1G,EAAc,CACdl9I,UAAWx2E,KAAKovE,OAAO+qJ,GACvBvvK,IAAK7lC,EACL00C,OAAQj1B,EACRhoC,MAAOA,EACPm3N,SAAU3zN,KAAK4zN,WAAW5zN,KAAK0nN,gBAC/BmM,YAAc9uM,EAAO+0D,UAAY/0D,EAAOi1D,UAAY,WAA6B,cAAhBj1D,EAAO5Z,KAAuB,aAAe,QAC9G2oN,eAAiBtvL,EAAOs1C,UAAYt1C,EAAOw1C,UAAY,WAA6B,cAAhBx1C,EAAOr5B,KAAuB,aAAe,QACjH8rE,cAAemjJ,EACfrG,gBAAgB,GAEhB/zN,KAAKsoN,kBACLtoN,KAAKsoN,iBAAiBoL,GAE1Bl3N,EAAQk3N,EAAYl3N,MACpBwD,KAAK0nN,eAAiB,GACtB8S,EAAU54N,KAAK,CAAE,OAAUmjB,EAAQ,MAASvoB,KAIpDg+N,EAAU34I,MAAK,SAAU94E,EAAGpB,GACxB,MAAqB,eAAdotE,GACDptE,EAAS,OAA6B,cAAxBA,EAAU,OAAQ,KAC9BA,EAAS,MAAI,IAAMoB,EAAS,OAA6B,cAAxBA,EAAU,OAAQ,KAAoBA,EAAS,MAAI,IACtFA,EAAS,OAA6B,cAAxBA,EAAU,OAAQ,KAC9BA,EAAS,MAAI,IAAMpB,EAAS,OAA6B,cAAxBA,EAAU,OAAQ,KAAoBA,EAAS,MAAI,MAGhG,IAAK,IAAIpE,EAAK,EAAGm3N,EADjBtU,EAAWoU,EAAU/1N,KAAI,SAAU+2C,GAAQ,OAAOA,EAAa,UACvBj4C,EAAKm3N,EAAW79N,OAAQ0G,IAAM,CAClE,IAAIwhB,KAAS21M,EAAWn3N,IACb62E,QAAQv9E,OAAS,IACxBkoB,EAAOq1D,QAAUp6E,KAAKs6N,eAAev1M,EAAOq1D,QAAS51C,EAAQuwC,EAAWolJ,EAAQC,IAGxF,OAAOhU,GAGXjB,EAAYjpN,UAAUs5N,uBAAyB,WAC3Cx1N,KAAKqnN,cAAgBrnN,KAAKsnN,iBAAmB,KAC7C,IAAIqP,KAAW32N,KAAKkyE,kBAAmBlyE,KAAKmyE,uBAA8BnyE,KAAK8oE,KAAKjsE,OAAS,GACzF+5N,KAAc52N,KAAKkyE,kBAAmBlyE,KAAKoyE,0BAAiCpyE,KAAK+5D,QAAQl9D,OAAS,GAClGmD,KAAKynN,6BAELznN,KAAK26N,gBAAgB36N,KAAKomN,SAAUpmN,KAAK2pN,cAAe,GAAI,OACxDgN,IACA32N,KAAK4lN,UAAY5lN,KAAK+mN,iBAG1B/mN,KAAK26N,gBAAgB36N,KAAKqmN,SAAUrmN,KAAK2pN,cAAe,GAAI,UACxDiN,IACA52N,KAAK2lN,aAAe3lN,KAAK8mN,mBAIzB6P,GAEA32N,KAAK26N,gBAAgB36N,KAAKomN,SAAUpmN,KAAK2pN,cAAe,GAAI,OAC5D3pN,KAAK4lN,UAAY5lN,KAAK+mN,iBAGtB/mN,KAAKqnN,cAAgBrnN,KAAK26N,gBAAgB,GAAI36N,KAAK2pN,cAAe,GAAI,OAAO,GAE7EiN,GAEA52N,KAAK26N,gBAAgB36N,KAAKqmN,SAAUrmN,KAAK2pN,cAAe,GAAI,UAC5D3pN,KAAK2lN,aAAe3lN,KAAK8mN,iBAGzB9mN,KAAKsnN,iBAAmBtnN,KAAK26N,gBAAgB,GAAI36N,KAAK2pN,cAAe,GAAI,UAAU,KAI/FxE,EAAYjpN,UAAUq6N,gBAAkB,WAEpC,IADA,IAAIqE,EAAY56N,KAAKwvE,YAAY3yE,OACxB8mF,EAAS,EAAGA,EAASi3I,EAAWj3I,IAAU,CAC/C,IAAIk3I,EAAW76N,KAAKwvE,YAAYmU,GAChC,GAAIk3I,EAOA,IANA,IAAIC,OAAY,EACZC,EAAU,EAGVC,OAAW,EAENC,EAJOJ,EAASh+N,OAIK,EAAGo+N,EAAS,EAAGA,IAAU,CACnD,IAAIl7I,EAAO86I,EAASI,GACpB,GAAIl7I,EAAM,CAIF+6I,IACAA,EAAU9hJ,QAAU+hJ,EACpBD,EAAUhiJ,SAAWgiJ,EAAUhiJ,UAAYiiJ,EAAU,IAEzDC,EAAW,CAAExgN,MAAOulE,EAAKvlE,MAAO29D,YAAa4H,EAAK5H,aAClD4H,EAAKvlE,MAAQ,GACbulE,EAAK5H,YAAc,GACnB2iJ,EAAYx8N,YAAO,GAAIyhF,EAAM,MAAM,GACnCA,EAAKvlE,MAAQwgN,EAASxgN,MACtBulE,EAAK5H,YAAc6iJ,EAAS7iJ,YAE5B,IADA,IAAI+iJ,EAASv3I,EAAS,EACf3jF,KAAKwvE,YAAY0rJ,KAAYl7N,KAAKwvE,YAAY0rJ,GAAQD,IAAS,CAC7Dj7N,KAAKwvE,YAAYmU,GAAQs3I,GAAQjhJ,YAClCh6E,KAAKwvE,YAAYmU,GAAQs3I,GAAQ7hJ,QAAW8hJ,EAASv3I,EAAU,EAC/Dm3I,EAAU1hJ,QAAW8hJ,EAASv3I,EAAU,GAE5C,IAAI6gB,EAA0B,QAAdzkB,EAAK50E,MAAgC,cAAd40E,EAAK50E,KAAwB40E,EAAK50E,KAAO,MAChFnL,KAAKwvE,YAAY0rJ,GAAQD,GAAUj7N,KAAKqqD,cAAc6wK,GAAQD,GAAU,CACpE9vN,KAAMq5F,EAAU9rB,cAA+B,QAAdqH,EAAK50E,MAAgC,cAAd40E,EAAK50E,KAAwB40E,EAAKrH,cACrFqH,EAAKrH,cAAgB,SAC1B3sC,KAAM,SAAUmtC,OAAQ,EAAGJ,SAAUmiJ,EAAQtvJ,SAAUuvJ,EAAQxhJ,UAAWqG,EAAKrG,WAE/EqG,EAAKrG,WAAaqG,EAAKrG,UAAU15E,KAAKuxE,kBAAkBxU,cACxD/8D,KAAKuxE,kBAAkBsD,YAAcomJ,GAEzC,IAAIzqH,GAAY,EACC,cAAbhM,GACAxkG,KAAKwvE,YAAYmU,GAAQs3I,GAAQ7hJ,QAAW8hJ,EAASv3I,EAAU,EAC/Dm3I,EAAU1hJ,QAAW8hJ,EAASv3I,EAAU,GAEO,QAA1C3jF,KAAKwvE,YAAYmU,GAAQs3I,GAAQ9vN,MACtCnL,KAAKwvE,YAAYmU,GAAQs3I,GAAQjhJ,WACjCh6E,KAAKwvE,YAAYmU,EAAS,GAAGs3I,GAAQ7hJ,QAAU8hJ,EAASv3I,EACxD6sB,GAAY,GAGZxwG,KAAKwvE,YAAY0rJ,GAAQD,GAAQ7hJ,SAAW,EAE5C8hJ,EAAUv3I,EAAS,IAAiD,QAA1C3jF,KAAKwvE,YAAYmU,GAAQs3I,GAAQ9vN,MAC3DqlG,KACAxwG,KAAKwvE,YAAY0rJ,GAAQD,GAAQ7hJ,SAAW,GAEhD8hJ,IAEJH,EAAU,OAGVF,EAASI,GAAUj7N,KAAKqqD,cAAcs5B,GAAQs3I,GAAU38N,YAAO,GAAIw8N,EAAW,MAAM,GACpFD,EAASI,GAAQzgN,MAAQxa,KAAKqqD,cAAcs5B,GAAQs3I,GAAQzgN,MAAQwgN,EAASxgN,MAC7EqgN,EAASI,GAAQ9iJ,YAAcn4E,KAAKqqD,cAAcs5B,GAAQs3I,GAAQ9iJ,YAAc6iJ,EAAS7iJ,YACzF4iJ,IACAF,EAASI,GAAQjiJ,QAAU+hJ,EAC3BF,EAASI,GAAQniJ,SAAW+hJ,EAASI,GAAQniJ,UAAYiiJ,EAAU,GAExD,IAAXE,GAAgBH,IAChBA,EAAU9hJ,QAAU+hJ,EACpBD,EAAUhiJ,SAAWgiJ,EAAUhiJ,UAAYiiJ,EAAU,OAMzE5V,EAAYjpN,UAAUo5N,iBAAmB,WACrCt1N,KAAKmoN,qBAAuB,GAC5B,IAAK,IAAIgT,EAAW,EAAGA,EAAWn7N,KAAKqxE,eAAex0E,OAAQs+N,IAE1D,IADA,IAAIC,EAAcp7N,KAAKqxE,eAAe8pJ,GAC7B1U,EAAY,EAAGA,EAAY2U,EAAYrnJ,MAAMl3E,OAAQ4pN,IAAa,CACvE,IAAI4U,EAAeD,EAAYhhN,KAAOpa,KAAKuxE,kBAAkBuD,gBACzDsmJ,EAAYrnJ,MAAM0yI,GAAW9pN,MAAMy+N,EAAYzmJ,WAAWhwE,KAAK3E,KAAKuxE,kBAAkBuD,iBAC1F90E,KAAKmoN,qBAAqBkT,GAAgBA,IAKtDlW,EAAYjpN,UAAUq5N,kBAAoB,SAAUt4N,EAAM4d,EAAMygN,EAAQvtL,EAAUhC,EAAMwvL,EAAcC,GAClG,IAAIx7H,EAAY,GAChB,GAAI/iG,EAAM,CACN,IAAIw+N,EAAOx+N,EAAKJ,OACZ6+N,EAAc,GACdllJ,EAAYv5E,EAAKq+N,GAAQlhN,KACzBo/C,EAAQv8D,EAAKq+N,GAEb1qM,EAAY5wB,KAAK62E,UAAUL,GAC/B,GAAIp5E,YAAkB4C,KAAK27N,gBAAiB,CACxC37N,KAAK27N,eAAiB,GACtB,IAAK,IAAI/+N,EAAI,EAAGA,EAAIoD,KAAKowE,mBAAmBtH,KAAKjsE,OAAQD,IACrDoD,KAAK27N,eAAe37N,KAAKowE,mBAAmBtH,KAAKlsE,GAAGwd,MAAQpa,KAAKowE,mBAAmBtH,KAAKlsE,GAAG4nB,SAEhG,IAAS5nB,EAAI,EAAGA,EAAIoD,KAAKowE,mBAAmBrW,QAAQl9D,OAAQD,IACxDoD,KAAK27N,eAAe37N,KAAKowE,mBAAmBrW,QAAQn9D,GAAGwd,MAAQpa,KAAKowE,mBAAmBrW,QAAQn9D,GAAG4nB,SAEtG,IAAS5nB,EAAI,EAAGA,EAAIoD,KAAKowE,mBAAmB7T,OAAO1/D,OAAQD,IACvDoD,KAAK27N,eAAe37N,KAAKowE,mBAAmB7T,OAAO3/D,GAAGwd,MAAQpa,KAAKowE,mBAAmB7T,OAAO3/D,GAAG4nB,SAGxGoM,EAAUzlB,KAAQ/N,YAAkB4C,KAAK27N,eAAe/qM,EAAUnX,KAA2CmX,EAAUzlB,KAA9CnL,KAAK27N,eAAe/qM,EAAUnX,IACvG,IAAImiN,GAAW,EACXC,EAAc77N,KAAKslN,aAAa9uI,IAC/B,CAAC,OAAQ,WAAY,QAAQr4E,QAAQ6B,KAAKslN,aAAa9uI,GAAWrrE,OAAS,EAC5EmoE,EAAmBvlC,EAASlxC,OAAS,GAAKy+N,EAAS,GAAM9hK,EAAM8Z,gBAC/DwoJ,EAAe,GACnB,GAAIxoJ,EAAiB,CAEjB,IADA,IAAI8G,EAAUl8E,OAAOjB,KAAK2zB,EAAUwpD,SAC3BzkE,EAAM,EAAGkiL,EAAKz9G,EAAQv9E,OAAQ8Y,EAAMkiL,EAAIliL,KACzC3V,KAAKqyE,qBAAwBryE,KAAK+jF,WAAa3J,EAAQzkE,KAAS3V,KAAK+jF,UAAUltC,YAAY,gBAC3FilL,EAAa1hJ,EAAQzkE,IAAQykE,EAAQzkE,IAGzCo4B,EAASlxC,OAAS,IAClB++N,GAAW,EACX7tL,EAASlxC,OAASu9E,EAAQv9E,QAGlC,IAAS8Y,EAAM,EAAGkiL,EAAK9pJ,EAASlxC,OAAQ8Y,EAAMkiL,EAAIliL,IAAO,CACrD,IAAI6uB,EAAS,GACRpnC,YAAkBH,EAAKq+N,GAAQvpJ,gBAAmB90E,EAAKq+N,GAAQvpJ,gBAChEvtC,EAAOutC,eAAgB,GAE3BvtC,EAAOs1C,SAAWwhJ,EAASG,EAAO,EAClCj3L,EAAO00C,MAAQoiJ,EACf92L,EAAOuH,KAAOA,EACdvH,EAAOw0C,QAAU,EACjB,IAAI+iJ,EAASH,EAAWhrM,EAAUwpD,QAAQl8E,OAAOjB,KAAK6+N,GAAc,IAAIliJ,QACpE55E,KAAKwmN,YAAYz4K,EAASp4B,IAAMib,EAAUpW,OAC1CwhN,EAAcJ,EAAW19N,OAAOjB,KAAK6+N,GAAc,GACnDjhN,EAAKkzB,EAASp4B,IAAM3V,KAAK8nN,UAAUtxI,IACvC,KAAKp5E,YAAkB4+N,IAAiBh8N,KAAK+jF,WAAai4I,IAAgBh8N,KAAK+jF,UAAUltC,YAAY,eAC7F72C,KAAKqyE,qBAUb,UADOypJ,EAAaE,IAChB1oJ,IAAmBtzE,KAAKinN,eAAezwI,IACvCx2E,KAAKinN,eAAezwI,GAAWs8I,UAAUkJ,KAAiBA,EAD9D,CAIA,IAAI7L,EAAiB0L,EAAa,CAC9B5jJ,WAAY+jJ,EACZtjJ,cAAe9nD,EAAU8wD,WAAWq6I,EAAS,GAAGrjJ,cAChD03I,SAAUx/L,EAAU8wD,WAAWq6I,EAAS,GAAG9jJ,YAE3C,CACIS,cAA+B,OAAhBsjJ,EAAwBh8N,KAAK+jF,UAAY/jF,KAAK+jF,UAAUltC,YAAY,QAAUmoC,OAAOg9I,QAChFhgO,IAAhBggO,GAA6Bh8N,KAAK+jF,UAAavN,KAAax2E,KAAKsmN,eAC7DtmN,KAAK+jF,UAAUltC,YAAY,mBAAqB72C,KAAK+jF,UAAUltC,YAAY,aACpDmoC,OAAOg9I,GAAc/jJ,WAA4B,OAAhB+jJ,EAAwBh8N,KAAK+jF,UACzF/jF,KAAK+jF,UAAUltC,YAAY,QAAUmoC,OAAOg9I,QAAgChgO,IAAhBggO,EAC3Dh8N,KAAK+jF,UAAavN,KAAax2E,KAAKsmN,eACjCtmN,KAAK+jF,UAAUltC,YAAY,mBAAqB72C,KAAK+jF,UAAUltC,YAAY,aAC3EmoC,OAAOg9I,GAAgBA,GAEvCx3L,EAAOyzC,WAAak4I,EAAel4I,WACnCzzC,EAAOk0C,cAAgBy3I,EAAez3I,cAClCmjJ,IACAr3L,EAAO4rL,SAAWD,EAAeC,UAErC,IAAI6L,GAAY3oJ,QAAwDt3E,IAArCgE,KAAKknN,aAAan5K,EAASp4B,MACzDimN,EAIL,GAAMF,GAAeA,EAAYK,GA8BxBE,IACLP,EAAYK,GAAQvhN,MAAM5Y,KAAKmsC,EAASp4B,IACxC+lN,EAAYK,GAAQ5jJ,YAAYpqC,EAASp4B,IAAQo4B,EAASp4B,QAhCnB,CACvC+lN,EAAYK,GAAU,CAAEvhN,MAAO,GAAI29D,YAAa,IAChD3zC,EAAOhqB,MAAQkhN,EAAYK,GAAQvhN,MACnCgqB,EAAO2zC,YAAcujJ,EAAYK,GAAQ5jJ,YACrC8jJ,IACAz3L,EAAOhqB,MAAQkhN,EAAYK,GAAQvhN,MAAQ,CAACuzB,EAASp4B,IACrD+lN,EAAYK,GAAQ5jJ,YAAYpqC,EAASp4B,IAAQo4B,EAASp4B,GAC1D6uB,EAAO2zC,YAAcujJ,EAAYK,GAAQ5jJ,aAE7C3zC,EAAOo1C,QAAUmiJ,EACjBv3L,EAAOk1C,UAAY,GACnBl1C,EAAOk1C,UAAU3tC,KAAOyqC,EACT,IAAX8kJ,GACA92L,EAAOk1C,UAAU26I,UAAYkH,EAAev7N,KAAKuxE,kBAAkBuD,gBAAkBtwC,EAAOk0C,cAC5Fl0C,EAAOk1C,UAAU6hJ,EAAev7N,KAAKuxE,kBAAkBuD,gBAAkBtwC,EAAOk0C,eAAiB,IAGjGl0C,EAAOk1C,UAAUl1C,EAAOk0C,eAAiB,EACzCl0C,EAAOk1C,UAAU26I,UAAY7vL,EAAOk0C,eAExC,IAAI2iJ,EAAe72L,EAAOk1C,UAAU3tC,KAAO/rC,KAAKuxE,kBAAkBuD,gBAAkBtwC,EAAOk1C,UAAU26I,UACrG7vL,EAAOw1C,aAAawhJ,IAAYx7N,KAAKkpN,uBACzB1kL,EAAOs1C,UAAY95E,KAAKmoN,qBAAqBkT,IACrDr7N,KAAKipN,YAA6Br4L,EAAUwpD,QAAQ4hJ,GAAahiJ,WAErEx1C,EAAO41C,QAAU,GAGjB4lB,EAAUp+F,KAAK4iC,GAMf8uC,IAAoBsoJ,GAAYN,EAAS,GAAK3lN,EAAM,IAAMo4B,EAASlxC,QACnEqB,OAAOjB,KAAK6+N,GAAcj/N,OAAS,IACnC++N,GAAW,EACX/jC,EAAK35L,OAAOjB,KAAK6+N,GAAcj/N,OAC/B8Y,GAAO,SA5EH29D,IAAoBsoJ,GAAYN,EAAS,GAAK3lN,EAAM,IAAMo4B,EAASlxC,QACnEqB,OAAOjB,KAAK6+N,GAAcj/N,OAAS,IACnCg7L,EAAK35L,OAAOjB,KAAK6+N,GAAcj/N,OAC/B++N,GAAW,EACXjmN,GAAO,GA2EnB,IAAK,IAAIpN,EAAM,EAAGwqN,EAAM/yH,EAAUnjG,OAAQ0L,EAAMwqN,EAAKxqN,IAAO,CACnDvI,KAAKgoN,+BACO,QAATj8K,EACA/rC,KAAK4lN,UAAY5lN,KAAK+mN,gBAGtB/mN,KAAK2lN,aAAe3lN,KAAK8mN,iBAGjC,IAAI5tI,EAAQ,KAKZ,GAJI8mB,EAAUz3F,GAAKmxE,WAAasmB,EAAUz3F,GAAKmxE,UAAU26I,YACrDn7I,EAAQ8mB,EAAUz3F,GAAKmxE,UAAU26I,WAErCkH,EAAgBriJ,GAAS8mB,EAAUz3F,GAAKmwE,eACnC14E,KAAKqyE,qBAAuBopJ,EAAO,EAAIH,GAAUt7H,EAAUz3F,GAAKiS,OACjEwlF,EAAUz3F,GAAKiS,MAAM3d,OAAS,EAC9B,GAAIy2E,GAAmBr2E,EAAKq+N,EAAS,IAAMr+N,EAAKq+N,EAAS,GAAGlhN,MACxDlc,OAAOjB,KAAK+C,KAAK62E,UAAU55E,EAAKq+N,EAAS,GAAGlhN,MAAMggE,SAASv9E,OAAS,EACpEmjG,EAAUz3F,GAAKuxE,UAAW,MAEzB,CAGD,IAFA,IAAIoiJ,EAAUl8H,EAAUz3F,GAAKiS,MAAM3d,OAC/Bi+D,EAAQ,EACHn5D,EAAM,EAAGA,EAAMu6N,EAASv6N,IAAO,CAChCq6N,EAAcnhN,EAAKmlF,EAAUz3F,GAAKiS,MAAM7Y,IAAM3B,KAAK8nN,UAAU7qN,EAAKq+N,EAAS,GAAGlhN,QAC7Ehd,YAAkB4+N,IAAiBh8N,KAAK+jF,WACzCi4I,IAAgBh8N,KAAK+jF,UAAUltC,YAAY,eAC3CikB,IAGRklC,EAAUz3F,GAAKuxE,SAAWhf,IAAUohK,EAG5C,GAAIT,EAAO,EAAIH,GAAUt7H,EAAUz3F,GAAKyxE,UAAW,CAC/Ch6E,KAAK2lN,aAAkB3lN,KAAK+xE,eAAiB/xE,KAAKiyE,qBAAuBzY,EAAMuY,eAA2B,WAAThmC,EACtE,EAAvB/rC,KAAK8mN,gBACT,IAAIqV,EAAiBn8H,EAAUz3F,GAAKiS,MACpCwlF,EAAUz3F,GAAK6xE,QAAUp6E,KAAKu1N,kBAAkBt4N,EAAM4d,EAAMygN,EAAS,OAAuBt/N,IAAnBmgO,EAA+B,GAAKA,EAAiBpwL,EAAMwvL,GAChIv7N,KAAKgoN,+BACLhoN,KAAKioN,wBAAwBsT,GAAgBv7H,EAAUz3F,GAAK6xE,UAKxE,GAAIp6E,KAAK0oN,WAAY,CAEjB,GAAImT,EACA,MAA0B,cAAnBjrM,EAAUixD,KACZme,EAAUne,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEqnN,SAAWzoN,EAAEyoN,SAAY,EAAMzoN,EAAEyoN,SAAWrnN,EAAEqnN,UAAa,EAAI,KACxF,eAAnBx/L,EAAUixD,KACLme,EAAUne,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEqnN,SAAWzoN,EAAEyoN,SAAY,EAAMzoN,EAAEyoN,SAAWrnN,EAAEqnN,UAAa,EAAI,KAC3GpwH,EAGR,GAAuB,WAAnBpvE,EAAUzlB,MAAqB60F,EAAUnjG,OAAS,GAA2C,kBAA7BmjG,EAAU,GAAG/nB,WAA2B,CACxG,IAAI4hJ,EAAc,GACdC,EAAmB,GACnBC,EAAY,GAChB,IAASn9N,EAAI,EAAGA,EAAIojG,EAAUnjG,OAAQD,IAC9BwP,MAAM4zF,EAAUpjG,GAAGq7E,WAAW9qE,WAAWw5F,OAAO,IAChDkzH,EAAYj4N,KAAKo+F,EAAUpjG,IAEM,KAA5BojG,EAAUpjG,GAAGq7E,WAClB8hJ,EAAUn4N,KAAKo+F,EAAUpjG,IAGzBk9N,EAAiBl4N,KAAKo+F,EAAUpjG,IAcxC,OAXIi9N,EAAYh9N,OAAS,IACrBg9N,EAAiC,cAAnBjpM,EAAUixD,KAAwBg4I,EAAYh4I,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEkvE,WAAatwE,EAAEswE,WAAc,EAAMtwE,EAAEswE,WAAalvE,EAAEkvE,YAAe,EAAI,KAC7I,eAAnBrnD,EAAUixD,KAAyBg4I,EAAYh4I,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEkvE,WAAatwE,EAAEswE,WAAc,EAAMtwE,EAAEswE,WAAalvE,EAAEkvE,YAAe,EAAI,KAAU4hJ,GAErKC,EAAiBj9N,OAAS,IAC1Bi9N,EAAsC,cAAnBlpM,EAAUixD,KACxBi4I,EAAiBj4I,MAAK,SAAU94E,EAAGpB,GAAK,OAAQsuC,OAAOltC,EAAEkvE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAMqzC,OAAOtuC,EAAEswE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAO,EAAMqzC,OAAOtuC,EAAEswE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAMqzC,OAAOltC,EAAEkvE,WAAW9qE,WAAWvK,MAAM,OAAO,KAAQ,EAAI,KACnP,eAAnBguB,EAAUixD,KACLi4I,EAAiBj4I,MAAK,SAAU94E,EAAGpB,GAAK,OAAQsuC,OAAOltC,EAAEkvE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAMqzC,OAAOtuC,EAAEswE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAO,EAAMqzC,OAAOtuC,EAAEswE,WAAW9qE,WAAWvK,MAAM,OAAO,IAAMqzC,OAAOltC,EAAEkvE,WAAW9qE,WAAWvK,MAAM,OAAO,KAAQ,EAAI,KACtQk3N,GAEOC,EAAUjoM,OAAOgoM,EAAkBD,GAGtD,MAA0B,cAAnBjpM,EAAUixD,KACZme,EAAUne,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEkvE,WAAatwE,EAAEswE,WAAc,EAAMtwE,EAAEswE,WAAalvE,EAAEkvE,YAAe,EAAI,KAChG,eAAnBrnD,EAAUixD,KACLme,EAAUne,MAAK,SAAU94E,EAAGpB,GAAK,OAAQoB,EAAEkvE,WAAatwE,EAAEswE,WAAc,EAAMtwE,EAAEswE,WAAalvE,EAAEkvE,YAAe,EAAI,KACnH+nB,EAKhB,OAAOA,EAKX,OAAOA,GAGfmlH,EAAYjpN,UAAUkgO,gBAAkB,SAAUp3M,GAE9C,IADA,IAAIq3M,EAAe,GACVz/N,EAAI,EAAGA,EAAIooB,EAAQnoB,OAAQD,IACR,cAApBooB,EAAQpoB,GAAGuO,OACXkxN,EAAar3M,EAAQpoB,GAAGg9E,SAAWh9E,GAG3C,OAAOy/N,GAGXlX,EAAYjpN,UAAUk9N,eAAiB,SAAUn8N,EAAM4d,EAAMygN,EAAQvtL,EAAUhC,EAAMwvL,EAAcvU,GAC/F,IAAIhnH,EAAY,GACZq8H,EAAer8N,KAAKo8N,gBAAgBpV,GACxC,GAAI/pN,EAAM,CAIN,IAHA,IAAIy+N,EAAc,GACdliK,EAAQv8D,EAAKq+N,GAAQlhN,KACrBwW,EAAY5wB,KAAK62E,UAAUrd,GACtB7jD,EAAM,EAAGkiL,EAAK9pJ,EAASlxC,OAAQ8Y,EAAMkiL,EAAIliL,IAAO,CACrD,IAAI6uB,EAAS,GACTu3L,EAAS/7N,KAAKwmN,YAAYz4K,EAASp4B,IAAMib,EAAUpW,OACnD8hN,EAAetV,EAAcqV,EAAaN,IAC1Cv/N,EAAQqe,EAAKkzB,EAASp4B,IAAM3V,KAAK8nN,UAAUtuJ,IAC/Ch9D,EAAkB,OAAVA,EAAkBwD,KAAK+jF,UAAY/jF,KAAK+jF,UAAUltC,YAAY,QAAUmoC,OAAOxiF,GAAUA,EACjG,IAAI2zN,EAAkBnwN,KAAKslN,aAAa9rJ,IACnC,CAAC,OAAQ,WAAY,QAAQr7D,QAAQ6B,KAAKslN,aAAa9rJ,GAAOruD,OAAS,EACxEnL,KAAKkzJ,kBAAkB12J,EAAOg9D,GAC9B,CAAEkf,cAAel8E,EAAM2Q,WAAY8qE,WAAYz7E,EAAM2Q,YACnDmvN,GAAgBA,EAAa5jJ,gBAAkBy3I,EAAez3I,gBAG9DgjJ,GAAeA,EAAYK,IAqB7BL,EAAYK,GAAQvhN,MAAM5Y,KAAKmsC,EAASp4B,IACxC+lN,EAAYK,GAAQ5jJ,YAAYpqC,EAASp4B,IAAQo4B,EAASp4B,KArB1D+lN,EAAYK,GAAU,CAAEvhN,MAAO,GAAI29D,YAAa,IAChDmkJ,EAAa9hN,MAAQkhN,EAAYK,GAAQvhN,MAAQ,CAACuzB,EAASp4B,IAC3D+lN,EAAYK,GAAQ5jJ,YAAYpqC,EAASp4B,IAAQo4B,EAASp4B,GAC1D2mN,EAAankJ,YAAcujJ,EAAYK,GAAQ5jJ,YAC/CmkJ,EAAa5iJ,UAAY,GACzB4iJ,EAAa5iJ,UAAU3tC,KAAOytB,EACf,IAAX8hK,GACAgB,EAAa5iJ,UAAU26I,UAAYkH,EAAev7N,KAAKuxE,kBAAkBuD,gBACrEwnJ,EAAa5jJ,cACjB4jJ,EAAa5iJ,UAAU6hJ,EAAev7N,KAAKuxE,kBAAkBuD,gBACzDwnJ,EAAa5jJ,eAAiB,IAGlC4jJ,EAAa5iJ,UAAU4iJ,EAAa5jJ,eAAiB,EACrD4jJ,EAAa5iJ,UAAU26I,UAAYiI,EAAa5jJ,eAEpDl0C,EAAO41C,QAAU,GACjB4lB,EAAUp+F,KAAK4iC,KAQvB,IADA,IAAIpjB,EAAO4lM,EAAcnqN,OAASmjG,EAAUnjG,OACrCukB,EAAO,GACV4+E,EAAUp+F,KAAK,CAAEw4E,QAAS,KAC1Bh5D,IAEJ,IAAK,IAAI7Y,EAAM,EAAGwqN,EAAM/yH,EAAUnjG,OAAQ0L,EAAMwqN,EAAKxqN,IACjD,GAAIy+M,EAAcz+M,GAAK6xE,QAAQv9E,OAAS,EAAG,CACvC,IAAIq8E,EAAQ,KACR8tI,EAAcz+M,GAAKmxE,WAAastI,EAAcz+M,GAAKmxE,UAAU26I,YAC7Dn7I,EAAQ8tI,EAAcz+M,GAAKmxE,UAAU26I,WAEzCkH,EAAgBriJ,GAAS8tI,EAAcz+M,GAAKmwE,cAC5CsnB,EAAUz3F,GAAK6xE,QACXp6E,KAAKo5N,eAAen8N,EAAM4d,EAAMygN,EAAS,EAAGtU,EAAcz+M,GAAKiS,MAAOuxB,EAAMwvL,EAAcvU,EAAcz+M,GAAK6xE,SAGzH,OAAO4lB,EAGP,OAAOA,GAGfmlH,EAAYjpN,UAAUm9N,oBAAsB,SAAUr0M,GAClD,IAAIu3M,EAAWv3M,EAAQA,EAAQnoB,OAAS,GACxC,GAAI0/N,GAA8B,cAAlBA,EAASpxN,KAAsB,CAC3CoxN,EAAS/hN,MAAQxa,KAAK2pN,cAGtB,IADA,IACSqH,EAAK,EAAGwL,EAAOx8N,KAAK2pN,cAAc9sN,OAAQm0N,EAAKwL,EAAMxL,IAC1DuL,EAASpkJ,YAAYn4E,KAAK2pN,cAAcqH,IAAOhxN,KAAK2pN,cAAcqH,GAI1E,OAAOhsM,GAEXmgM,EAAYjpN,UAAUk6N,sBAAwB,WAC1C,GAAIp2N,KAAKklE,aAAc,CACI,IAAnBllE,KAAKyxE,UACLzxE,KAAK+mN,gBAAkB/mN,KAAKu8D,OAAO1/D,OAGnCmD,KAAK8mN,gBAAkB9mN,KAAKu8D,OAAO1/D,OAEvCmD,KAAKymN,WAAazmN,KAAK+mN,gBACvB/mN,KAAK+lN,aAAgB/lN,KAAKklE,aAAau3J,eAAiBz8N,KAAKklE,aAAaw3J,QACrE18N,KAAKklE,aAAaw3J,SAAY18N,KAAK+mN,gBACxC,IAAI4V,EAAiB38N,KAAK+lN,YAA2C,EAA5B/lN,KAAKklE,aAAaw3J,QAAc18N,KAAK+mN,gBAAoB/mN,KAAK4lN,SAClG5lN,KAAK4lN,SAAwC,EAA5B5lN,KAAKklE,aAAaw3J,QAAc18N,KAAK+mN,gBAAoB/mN,KAAK+lN,YAChF4W,EAAgB,IAChBA,EAAgB38N,KAAK+lN,YAAc,EACnC/lN,KAAKklE,aAAau3J,eAAiB,GAEvCz8N,KAAK8lN,aAAe9lN,KAAK+lN,YAAc4W,GAAiB38N,KAAKklE,aAAaw3J,QAC1E18N,KAAK+lN,YAAc4W,EACnB38N,KAAK2mN,OAAS3mN,KAAK+lN,YAA2C,EAA5B/lN,KAAKklE,aAAaw3J,QAAc18N,KAAK+mN,gBACvE/mN,KAAK2mN,OAAS3mN,KAAK2mN,OAAS3mN,KAAK4lN,SAAW5lN,KAAK4lN,SAAW5lN,KAAK2mN,OACjE3mN,KAAKomN,SAAWpmN,KAAK48N,eAAe58N,KAAKomN,SAAU,GAAIpmN,KAAK+lN,YAAa,OACzE/lN,KAAKymN,WAAazmN,KAAK8mN,gBACvB9mN,KAAK0mN,aAAc,EACnB1mN,KAAK6mN,wBAAyB,EAC9B7mN,KAAKgmN,aAAgBhmN,KAAKklE,aAAa23J,kBAAoB78N,KAAKklE,aAAa43J,WACxE98N,KAAKklE,aAAa43J,YAAe98N,KAAK8mN,iBAC3C6V,EAAiB38N,KAAKgmN,YAA8C,EAA/BhmN,KAAKklE,aAAa43J,WAAiB98N,KAAK8mN,gBACzE9mN,KAAK2lN,YACJ3lN,KAAK2lN,YAA8C,EAA/B3lN,KAAKklE,aAAa43J,WAAiB98N,KAAK8mN,gBAAoB9mN,KAAKgmN,aACtE,IAChB2W,EAAgB38N,KAAKgmN,YAAc,EACnChmN,KAAKklE,aAAa23J,kBAAoB,GAE1C78N,KAAK6lN,aAAe7lN,KAAKgmN,YAAc2W,GAAiB38N,KAAKklE,aAAa43J,WAC1E98N,KAAKgmN,YAAc2W,EACnB38N,KAAK2mN,OAAS3mN,KAAKgmN,YAA8C,EAA/BhmN,KAAKklE,aAAa43J,WAAiB98N,KAAK8mN,gBAC1E9mN,KAAK2mN,OAAS3mN,KAAK2mN,OAAS3mN,KAAK2lN,YAAc3lN,KAAK2lN,YAAc3lN,KAAK2mN,OACvE3mN,KAAKqmN,SAAWrmN,KAAK48N,eAAe58N,KAAKqmN,SAAU,GAAIrmN,KAAKgmN,YAAa,UACzEhmN,KAAKymN,WAAa,EAClBzmN,KAAK0mN,aAAc,EACf1mN,KAAKynN,6BACgD,cAAjDznN,KAAKomN,SAASpmN,KAAKomN,SAASvpN,OAAS,GAAGsO,MAC+C,cAAvFnL,KAAKimN,iBAAiB3tI,WAAWt4E,KAAKimN,iBAAiB3tI,WAAWz7E,OAAS,GAAGsO,OAC9EnL,KAAKomN,SAASxkN,KAAK5B,KAAKimN,iBAAiB3tI,WAAWt4E,KAAKimN,iBAAiB3tI,WAAWz7E,OAAS,IAC9FmD,KAAKunN,qBAAsB,GAEsB,cAAjDvnN,KAAKqmN,SAASrmN,KAAKqmN,SAASxpN,OAAS,GAAGsO,MACqD,cAA7FnL,KAAKimN,iBAAiBztI,cAAcx4E,KAAKimN,iBAAiBztI,cAAc37E,OAAS,GAAGsO,OACpFnL,KAAKqmN,SAASzkN,KAAK5B,KAAKimN,iBAAiBztI,cAAcx4E,KAAKimN,iBAAiBztI,cAAc37E,OAAS,IACpGmD,KAAKwnN,wBAAyB,KAIlCxnN,KAAKqnN,cAAgBrnN,KAAKqnN,cAAgBrnN,KAAKqnN,cAC3CrnN,KAAKimN,iBAAiB3tI,WAAWt4E,KAAKimN,iBAAiB3tI,WAAWz7E,OAAS,GAC/EmD,KAAKsnN,iBAAmBtnN,KAAKsnN,iBAAmBtnN,KAAKsnN,iBACjDtnN,KAAKimN,iBAAiBztI,cAAcx4E,KAAKimN,iBAAiBztI,cAAc37E,OAAS,MAIjGsoN,EAAYjpN,UAAU0gO,eAAiB,SAAU53M,EAASgiM,EAAe+V,EAAUhxL,GAE/E,IADA,IAAIp2B,EAAM,EACHqP,EAAQrP,IAAM,CAWjB,GAVA3V,KAAKymN,WAAsB,WAAT16K,EAAoB/rC,KAAK8mN,gBAAkB9mN,KAAK+mN,gBAC9DgW,GAAY/8N,KAAKymN,WAAazmN,KAAK2mN,QAAU3mN,KAAKymN,YAAczmN,KAAK0mN,cACxD,WAAT36K,EACA/rC,KAAK6lN,YAAc7lN,KAAK6lN,YAAc7gM,EAAQrP,GAAKujE,MAGnDl5E,KAAK8lN,YAAc9lN,KAAK8lN,YAAc9gM,EAAQrP,GAAKujE,MAEvDl5E,KAAK0mN,aAAc,GAEnB1mN,KAAK0mN,aACD1mN,KAAK2mN,QAAU3mN,KAAKymN,UAAW,CAC/B,GAAa,WAAT16K,EAaA,MAZA,GAAoC,IAAhC/mB,EAAQrP,GAAKykE,QAAQv9E,OAAc,CACnC,GAAImD,KAAK6mN,uBACL,MAEJ7mN,KAAK6mN,wBAAyB,EAC9B7mN,KAAK2mN,QAAW3hM,EAAQrP,GAAKujE,MAAQl5E,KAAK8mN,qBAEzC,GAAI9mN,KAAK6mN,uBACV,MAsBhB,GAdAG,EAAcplN,KAAKojB,EAAQrP,GAAKykE,QAAQv9E,OAAS,EAAImD,KAAKg9N,mBAAmBh4M,EAAQrP,IAAQqP,EAAQrP,IACjGqP,EAAQrP,GAAKykE,QAAQv9E,OAAS,IACjB,WAATkvC,IAEA/rC,KAAKymN,WAAezmN,KAAK+xE,eAAiB/xE,KAAKiyE,qBAC3CjyE,KAAKkoN,WAAWljM,EAAQrP,GAAK+jE,UAAU3tC,MAAMgmC,cAAwC,EAAvB/xE,KAAK8mN,iBAG3EE,EAAcA,EAAcnqN,OAAS,GAAGu9E,QACpCp6E,KAAK48N,eAAe53M,EAAQrP,GAAKykE,QAAS,GAAI2iJ,EAAUhxL,IAE3D/rC,KAAK0mN,aACNM,EAAc1pG,MAES,IAAvBt4F,EAAQrP,GAAKujE,OAAel5E,KAAK0mN,aAAe1mN,KAAK2mN,QAAU3mN,KAAKymN,UACpE,MAEJ9wM,IAEJ,OAAOqxM,GAGX7B,EAAYjpN,UAAU8gO,mBAAqB,SAAUx4L,GAKjD,IAJA,IAAIvnC,EAAOiB,OAAOjB,KAAKunC,GACnB6qC,EAAS,EACT4tJ,EAAe,GAEZ5tJ,EAASpyE,EAAKJ,QACjBogO,EAAahgO,EAAKoyE,IAAW7qC,EAAOvnC,EAAKoyE,IACpB,YAAjBpyE,EAAKoyE,KACL4tJ,EAAsB,QAAI,IAE9B5tJ,IAGJ,OAAO4tJ,GAEX9X,EAAYjpN,UAAUy+N,gBAAkB,SAAU9yM,EAAKqJ,EAAQgsM,EAAYnxL,GACvE,IAAIpqC,EAAMkmB,EAAIhrB,OAEdgrB,EAAIlmB,GAAO,CACPm4E,UAAU,EACVt/D,MAAO0W,EACPgoD,MAAO,EACPntC,KAAMA,EACNiuC,WAAW,EACX7B,YAAa,GACbiC,QAAS,GACT1B,cAAe,cACfkB,QAASj4E,EACTwJ,KAAM,YACNuuE,UAAW,IAEf7xD,EAAIlmB,GAAK+3E,UAAU7xD,EAAIlmB,GAAK+2E,eAAiB,EAC7C7wD,EAAIlmB,GAAK+3E,UAAU26I,UAAYxsM,EAAIlmB,GAAK+2E,cACxC,IAAK,IAAIs4I,EAAK,EAAGn5B,EAAK3mK,EAAOr0B,OAAQm0N,EAAKn5B,EAAIm5B,IAC1CnpM,EAAIlmB,GAAKw2E,YAAYjnD,EAAO8/L,IAAO9/L,EAAO8/L,GAO9C,OAAOnpM,GAGXs9L,EAAYjpN,UAAUs6N,aAAe,SAAU1tJ,EAAMq0J,EAAYpjK,EAASqjK,EAAMviN,EAAMwiN,EAAKC,EAAQC,GAC/F,IAAK,IAAIpM,EAAMroJ,EAAKjsE,OAAQq0N,EAAM,EAAGA,EAAMC,EAAKD,IAAO,CAEnDiM,EADAC,EAAOviN,EAAKhe,QACOisE,EAAKooJ,GACxB,IAAIsM,EAASJ,EAAOnnL,OAAO/3C,OAAOjB,KAAKkgO,GAAY,IAG/CM,GAAeN,EAAWC,GAAMhjJ,QAAQv9E,OAa5C,GAZAisE,EAAKooJ,GAAKp4I,SAAW,EACrBhQ,EAAKooJ,GAAKvlJ,SAAWyxJ,EAChBviN,EAAKuiN,KACNviN,EAAKuiN,GAAQ,GACbp9N,KAAKqlN,aAAamY,GAAU,IAM5B3iN,EAAKuiN,GAAM,GAAKp9N,KAAKqlN,aAAamY,GAAQ,GAAKx9N,KAAK+pN,oBAAoBjhJ,EAAKooJ,IAE7ElxN,KAAKyxE,YAAczxE,KAAKmpN,gBAAkBnpN,KAAKsyE,uBAAwB,CACvE,IAAIorJ,EAAON,EACPO,EAASH,EACT7xJ,EAAWyxJ,EACf,IAAMt0J,EAAKooJ,GAAKp3I,WAAe18E,YAAkB0rE,EAAKooJ,GAAKn/I,gBACtDjJ,EAAKooJ,GAAKn/I,gBAAmB/xE,KAAK+xE,eAAkB/xE,KAAKgyE,iBAAoB,CAC9E,IAAK,IAAI4rJ,EAAM,EAAGA,EAAMP,EAAKO,IAAO,CAChCR,IACAI,IACA,IAAIK,EAAS79N,KAAKu8D,OAAOqhK,GAAK3qJ,QAAUjzE,KAAKu8D,OAAOqhK,GAAK3qJ,QAAUjzE,KAAKu8D,OAAOqhK,GAAKxjN,KAEhF0jN,EAAS,CACT/xL,KAAM,MACNksC,WAAYj4E,KAAKu8D,OAAOqhK,GAAKxjN,KAC7Bs+D,cAAemlJ,EACf3kJ,MAAO,EACPQ,UAAW,GACXZ,SAAU,EACVnN,SAAUyxJ,EACVjyN,KAAM,SAGL0P,EAAKuiN,KACNviN,EAAKuiN,GAAQ,GACbp9N,KAAKqlN,aAAamY,GAAU,GAC5B3iN,EAAKuiN,GAAM,GAAKp9N,KAAKqlN,aAAamY,GAAQ,GAAKM,GAEnD,IAAIC,EAAQljN,EAAKuiN,GAAM,GAAG1jJ,UAC1BqkJ,EAAMljN,EAAKuiN,EAAOQ,EAAM,GAAG,GAAGlkJ,UAAU26I,UAAYr0N,KAAKuxE,kBAAkBuD,gBAAkB+oJ,GAAU,EACvGE,EAAM1J,UAAYx5M,EAAKuiN,EAAOQ,EAAM,GAAG,GAAGlkJ,UAAU26I,UAAYr0N,KAAKuxE,kBAAkBuD,gBAAkB+oJ,EACzG,IAAK,IAAIj4J,EAAM,EAAGkrJ,EAAM,EAAGkN,EAAMjkK,EAAQl9D,OAAQ+oE,EAAMo4J,IAAOp4J,EAE1D5lE,KAAKi+N,cAAcn1J,EAAM/O,EAASqjK,EAAMviN,EAAM+iN,EAAK1M,EAAKtrJ,EAAKkrJ,EAAK0M,EAAQF,EAAQC,GAClFzM,EAAMj2M,EAAKuiN,GAAMvgO,OACjBge,EAAK6iN,GAAM5M,EAAM,GAAK9wN,KAAKqlN,aAAasY,GAAQ7M,EAAM,GAAK,CACvD/kL,KAAM,QAASksC,WAAY,GAAIe,QAAS,EACxCF,SAAUg4I,EAAKp4I,cAAe,GAAIoB,UAAU,GAKxDnO,EAAWyxJ,MAEV,CACD,IAASx3J,EAAM,EAAGkrJ,EAAM,EAAGkN,EAAMjkK,EAAQl9D,OAAQ+oE,EAAMo4J,IAAOp4J,EAC1DkrJ,EAAMj2M,EAAKuiN,GAAMvgO,OACjBge,EAAK6iN,GAAM5M,GAAO9wN,KAAKqlN,aAAasY,GAAQ7M,GAAO,CAC/C/kL,KAAM,QAASksC,WAAY,GAAIe,QAAS,EACxCF,SAAUg4I,EAAKp4I,cAAe,GAAIoB,UAAU,GAGpDnO,EAAWyxJ,EAAOC,EAEtBr9N,KAAKk+N,iBAAiBp1J,EAAMq0J,EAAYpjK,EAAS4R,EAAU9wD,EAAMwiN,EAAKI,EAAavM,EAAKmM,EAAKC,EAAQC,OAEpG,CACD,IAAS33J,EAAM,EAAGkrJ,EAAM,EAAGkN,EAAMjkK,EAAQl9D,OAAQ+oE,EAAMo4J,IAAOp4J,EAC1D,IAASg4J,EAAM,EAAGA,EAAMP,EAAKO,IACzB59N,KAAKi+N,cAAcn1J,EAAM/O,EAASqjK,EAAMviN,EAAM+iN,EAAK1M,EAAKtrJ,EAAKkrJ,EAAK0M,EAAQF,EAAQC,GAClFzM,EAAMj2M,EAAKuiN,GAAMvgO,OAGzBmD,KAAKk+N,iBAAiBp1J,EAAMq0J,EAAYpjK,EAASqjK,EAAMviN,EAAMwiN,EAAKI,EAAavM,EAAK,EAAGoM,EAAQC,MAe3GpY,EAAYjpN,UAAUm6N,qBAAuB,SAAUvtJ,EAAM/O,EAASqsJ,EAAUC,EAAU9pJ,GACtFv8D,KAAKmnN,gBAAkB,CAAEC,eAAgB,GAAI7qJ,OAAQ,IACrD,IAAK,IAAI8gK,EAAM9gK,EAAO1/D,OAAQ+gO,EAAM,EAAGA,EAAMP,EAAKO,IAC9C,OAAQrhK,EAAOqhK,GAAKzyN,MAChB,IAAK,iBACL,IAAK,6BAEG,IAAI+nE,OAAY,EACZC,OAAW,EACfnzE,KAAKmnN,gBAAgB5qJ,OAAO36D,KAAK26D,EAAOqhK,GAAKxjN,MACzCmiD,EAAOqhK,GAAK1qJ,WAAa3W,EAAOqhK,GAAKzqJ,UACrCD,EAAY3W,EAAOqhK,GAAK1qJ,UACxBC,EAAW5W,EAAOqhK,GAAKzqJ,UAElBnzE,KAAKyxE,YAAczxE,KAAKmpN,gBAAkBnpN,KAAKsyE,wBAA0BvY,EAAQl9D,OAAS,GAC/Fq2E,EAAYnZ,EAAQ,GAAG3/C,KACvB+4D,EAAWj1E,OAAOjB,KAAK+C,KAAK62E,UAAU9c,EAAQ,GAAG3/C,MAAMggE,SAAS,IAE3DtR,EAAKjsE,OAAS,IACnBq2E,EAAYpK,EAAK,GAAG1uD,KACpB+4D,EAAWj1E,OAAOjB,KAAK+C,KAAK62E,UAAU/N,EAAK,GAAG1uD,MAAMggE,SAAS,IAGjE,IADA,IAAI+jJ,GAAmB,EACdngO,EAAK,EAAGogO,EAASt1J,EAAM9qE,EAAKogO,EAAOvhO,OAAQmB,IAAM,CAEtD,GADUogO,EAAOpgO,GACToc,OAAS84D,EAAW,CACxBlzE,KAAKq+N,wBAAwBjY,EAAU7pJ,EAAOqhK,GAAKxjN,KAAM+4D,GAAU,EAAO,MAAO5W,EAAOqhK,GAAKzyN,KAAMnL,KAAKmnN,gBAAgBC,eAAgBwW,GACxIO,GAAmB,EACnB,OAGR,IAAKA,EACD,IAAK,IAAI56N,EAAK,EAAGo3I,EAAY5gF,EAASx2D,EAAKo3I,EAAU99I,OAAQ0G,IAAM,CAE/D,GADao3I,EAAUp3I,GACZ6W,OAAS84D,EAAW,CAC3BlzE,KAAKq+N,wBAAwBhY,EAAU9pJ,EAAOqhK,GAAKxjN,KAAM+4D,GAAU,EAAO,SAAU5W,EAAOqhK,GAAKzyN,KAAMnL,KAAKmnN,gBAAgBC,eAAgBwW,GAC3I,OAKhB,MACJ,IAAK,6BACL,IAAK,gCAEG59N,KAAKmnN,gBAAgB5qJ,OAAO36D,KAAK26D,EAAOqhK,GAAKxjN,MAC7Cpa,KAAKq+N,wBAA8C,+BAArB9hK,EAAOqhK,GAAKzyN,KAAwCi7M,EAAWC,EAAW9pJ,EAAOqhK,GAAKxjN,UAAMpe,GAAW,EAA6B,+BAArBugE,EAAOqhK,GAAKzyN,KAAwC,MAAQ,SAAWoxD,EAAOqhK,GAAKzyN,KAAMnL,KAAKmnN,gBAAgBC,eAAgBwW,GAE/Q,MACJ,IAAK,gBAEG59N,KAAKmnN,gBAAgB5qJ,OAAO36D,KAAK26D,EAAOqhK,GAAKxjN,MAC7Cpa,KAAKq+N,wBAAyBr+N,KAAKyxE,YAAczxE,KAAKmpN,gBAAkBnpN,KAAKsyE,uBAAyB+zI,EAAWD,EAAW7pJ,EAAOqhK,GAAKxjN,UAAMpe,GAAW,EAAQgE,KAAKyxE,YAAczxE,KAAKmpN,gBAAkBnpN,KAAKsyE,uBAAyB,SAAW,MAAQ/V,EAAOqhK,GAAKzyN,KAAMnL,KAAKmnN,gBAAgBC,eAAgBwW,GAEvT,MACJ,IAAK,0BAEO1qJ,OAAY,EAChBlzE,KAAKmnN,gBAAgB5qJ,OAAO36D,KAAK26D,EAAOqhK,GAAKxjN,MACzCmiD,EAAOqhK,GAAK1qJ,UACZA,EAAY3W,EAAOqhK,GAAK1qJ,UAEnBlzE,KAAKyxE,YAAczxE,KAAKmpN,gBAAkBnpN,KAAKsyE,wBAA0BvY,EAAQl9D,OAAS,EAC/Fq2E,EAAYnZ,EAAQ,GAAG3/C,KAElB0uD,EAAKjsE,OAAS,IACnBq2E,EAAYpK,EAAK,GAAG1uD,MAEpB+jN,GAAmB,EACvB,IADA,IACSx8N,EAAMmnE,EAAKjsE,OAAQD,EAAI,EAAGA,EAAI+E,EAAK/E,IACxC,GAAIksE,EAAKlsE,GAAGwd,OAAS84D,EAAW,CAC5BlzE,KAAKq+N,wBAAwBjY,EAAU7pJ,EAAOqhK,GAAKxjN,UAAMpe,GAAW,EAAO,MAAOugE,EAAOqhK,GAAKzyN,KAAMnL,KAAKmnN,gBAAgBC,eAAgBwW,EAAKhhO,GAC9IuhO,GAAmB,EACnB,MAGR,IAAKA,EACD,IAASx8N,EAAMo4D,EAAQl9D,OAAQD,EAAI,EAAGA,EAAI+E,EAAK/E,IAC3C,GAAIm9D,EAAQn9D,GAAGwd,OAAS84D,EAAW,CAC/BlzE,KAAKq+N,wBAAwBhY,EAAU9pJ,EAAOqhK,GAAKxjN,UAAMpe,GAAW,EAAO,SAAUugE,EAAOqhK,GAAKzyN,KAAMnL,KAAKmnN,gBAAgBC,eAAgBwW,EAAKhhO,GACjJ,SAShCuoN,EAAYjpN,UAAUmiO,wBAA0B,SAAUr5M,EAAS5K,EAAM+4D,EAAUmrJ,EAAYnzN,EAAM8rE,EAAekwI,EAAiByW,EAAK1kJ,GACtI,IAAK,IAAIl7E,EAAK,EAAGugO,EAAYv5M,EAAShnB,EAAKugO,EAAU1hO,OAAQmB,IAAM,CAC/D,IAAIkzN,EAAMqN,EAAUvgO,GACpB,OAAQi5E,GACJ,IAAK,iBACL,IAAK,8BAGwC,IADrBi6I,EAAIx3I,UAAU26I,UAAUlnN,WAAWxQ,MAAMqD,KAAKuxE,kBAAkBuD,iBAClE32E,QAAQg1E,IAClBg0I,EAAgBvlN,KAAK5B,KAAKw+N,sBAAsBrrJ,EAAU+9I,EAAIh4I,MAAO/tE,EAAMmzN,EAAYlkN,EAAM68D,EAAei6I,EAAIx3I,UAAU26I,UAAYiK,EAAa,CAACpN,GAAOlsM,EAAU44M,EAAM,IACvK1M,EAAI92I,QAAQv9E,OAAS,GACrBmD,KAAKq+N,wBAAwBnN,EAAI92I,QAAShgE,EAAM+4D,GAAU,EAAMhoE,EAAM8rE,EAAekwI,EAAgBA,EAAgBtqN,OAAS,GAAG4hO,aAAcb,IAG9I1M,EAAI92I,QAAQv9E,OAAS,GAC1BmD,KAAKq+N,wBAAwBnN,EAAI92I,QAAShgE,EAAM+4D,GAAU,EAAOhoE,EAAM8rE,EAAekwI,EAAiByW,GAG/G,MACJ,IAAK,gBACL,IAAK,6BACL,IAAK,gCAEoB,cAAb1M,EAAI/lN,KACJg8M,EAAgBvlN,KAAK5B,KAAKw+N,2BAAsBxiO,EAAWk1N,EAAIh4I,MAAO/tE,GAAM,EAAOiP,EAAM68D,EAAei6I,EAAIx3I,UAAU26I,UAAWrvM,EAAS44M,EAAM,IAG5I1M,EAAI92I,QAAQv9E,OAAS,IACrBsqN,EAAgBvlN,KAAK5B,KAAKw+N,2BAAsBxiO,EAAWk1N,EAAIh4I,MAAO/tE,GAAM,EAAOiP,EAAM68D,EAAei6I,EAAIx3I,UAAU26I,UAAWnD,EAAI92I,QAASwjJ,EAAM,IACpJ59N,KAAKq+N,wBAAwBnN,EAAI92I,QAAShgE,OAAMpe,GAAW,EAAOmP,EAAM8rE,EAAekwI,EAAiByW,IAIpH,MACJ,IAAK,0BAEG,GAAiB,cAAb1M,EAAI/lN,KACJ,GAAI+lN,EAAIh4I,QAAUA,EACd,GAAIg4I,EAAI92I,QAAQv9E,OAAS,EAAG,CACxB,GAAIyhO,EAEA,IADA,IAAII,EAAmBvX,EAAgBA,EAAgBtqN,OAAS,GAAG6hO,iBAC1Dn7N,EAAK,EAAGwxB,EAAKm8L,EAAI92I,QAAS72E,EAAKwxB,EAAGl4B,OAAQ0G,IAAM,CACrD,IAAIihC,EAASzP,EAAGxxB,GAChBm7N,EAAiB98N,KAAK4iC,OAGzB,CACD,IAAI1T,EAAWxyB,YAAO,GAAI4yN,EAAI92I,QAAS,MAAM,GAC7C+sI,EAAgBvlN,KAAK5B,KAAKw+N,2BAAsBxiO,EAAWk1N,EAAIh4I,MAAO/tE,GAAM,EAAOiP,EAAM68D,EAAei6I,EAAIx3I,UAAU26I,UAAWvjM,EAAU8sM,EAAM,KAC7Ic,EAAmBvX,EAAgBA,EAAgBtqN,OAAS,GAAG6hO,kBAClD98N,KAAKsvN,GAE1BlxN,KAAKq+N,wBAAwBnN,EAAI92I,QAAShgE,OAAMpe,GAAW,EAAMmP,EAAM8rE,EAAekwI,EAAiByW,EAAK1kJ,EAAQ,QAG/GolJ,GACDnX,EAAgBvlN,KAAK5B,KAAKw+N,2BAAsBxiO,EAAWk1N,EAAIh4I,MAAO/tE,GAAM,EAAOiP,EAAM68D,EAAei6I,EAAIx3I,UAAU26I,UAAW,CAACnD,GAAM0M,EAAM,SAIjJ1M,EAAI92I,QAAQv9E,OAAS,GAC1BmD,KAAKq+N,wBAAwBnN,EAAI92I,QAAShgE,OAAMpe,GAAW,EAAOmP,EAAM8rE,EAAekwI,EAAiByW,EAAK1kJ,MAQzIisI,EAAYjpN,UAAUsiO,sBAAwB,SAAUrrJ,EAAU+F,EAAO/tE,EAAMmzN,EAAYlkN,EAAM68D,EAAeo9I,EAAWrvM,EAAS25M,GAahI,MAZiB,CACbvkN,KAAM+4D,EACN+F,MAAOA,EACPntC,KAAM5gC,EACNsxF,QAAS6hI,EACT9hO,MAAO4d,EACPjP,KAAM8rE,EACN2nJ,WAAYvK,EACZqK,iBAAkB15M,EAClBy5M,aAAc,GACdI,WAAYF,IAIpBxZ,EAAYjpN,UAAUu6N,uBAAyB,SAAUhB,EAAUC,EAAU76M,GAEzE,GADA7a,KAAKolN,sBAAwB,GACzBplN,KAAKmnN,gBAAgB5qJ,OAAO1/D,OAAS,EAAzC,CAII,IAHA,IAAIiiO,EAAa,GACbhmJ,EAAW,GACXimJ,GAAgB,EACX5N,EAAMt2M,EAAKhe,OAAQq0N,EAAM,EAAGA,EAAMC,EAAKD,IAC5C,QAAkBl1N,IAAd6e,EAAKq2M,SAAuCl1N,IAAjB6e,EAAKq2M,GAAK,GAAkB,CACvD,IAAK6N,EACD,IAAK,IAAIf,EAAMnjN,EAAKq2M,GAAKr0N,OAAQ+oE,EAAM,EAAGA,EAAMo4J,EAAKp4J,IACrB,UAAxB/qD,EAAKq2M,GAAKtrJ,GAAK75B,OACqD,IAApE/rC,KAAKmnN,gBAAgB5qJ,OAAOp+D,QAAQ0c,EAAKq2M,GAAKtrJ,GAAKqS,cACnDa,EAASl3E,KAAKgkE,GACdm5J,GAAgB,GAI5B,GAAIjmJ,EAASj8E,OAAS,GAAqC,UAAhCge,EAAKq2M,GAAKp4I,EAAS,IAAI/sC,OAC8B,IAA5E/rC,KAAKmnN,gBAAgB5qJ,OAAOp+D,QAAQ0c,EAAKq2M,GAAKp4I,EAAS,IAAIb,YAC3D,IAAK,IAAIj6E,EAAK,EAAGghO,EAAalmJ,EAAU96E,EAAKghO,EAAWniO,OAAQmB,IAAM,CAElE8gO,EAAW5N,EAAM,KADb12M,EAAQwkN,EAAWhhO,KACS,CAACkzN,EAAK12M,IAKtDxa,KAAKi/N,iBAAiBxJ,EAAUC,EAAU76M,EAAM7a,KAAKmnN,gBAAgBC,eAAgBtuI,EAAUgmJ,GAE/F,IADA,IACSv7N,EAAK,EAAG27N,EADKhhO,OAAOjB,KAAK6hO,GACoBv7N,EAAK27N,EAAkBriO,OAAQ0G,IAAM,CACvF,IAAIiX,EACaK,EAAKikN,EADlBtkN,EAAQ0kN,EAAkB37N,IACU,IAAIu7N,EAAWtkN,GAAO,IAEnDk+D,cAAiB14E,KAAKmnN,gBAAgBC,eAAevqN,OAAS,EAAImD,KAAKopN,qBAAuB,OACpGppN,KAAKolN,sBAAsB0Z,EAAWtkN,GAAO,MAC9Cxa,KAAKolN,sBAAsB0Z,EAAWtkN,GAAO,IAAM,IAEvDxa,KAAKolN,sBAAsB0Z,EAAWtkN,GAAO,IAAIskN,EAAWtkN,GAAO,IAAM,EAE7Exa,KAAK62N,mBAAkB,KAO/B1R,EAAYjpN,UAAU+iO,iBAAmB,SAAUxJ,EAAUC,EAAU76M,EAAMssM,EAAiBruI,EAAUgmJ,GACpG,IAAK,IAAI9gO,EAAK,EAAGmhO,EAAoBhY,EAAiBnpN,EAAKmhO,EAAkBtiO,OAAQmB,IAAM,CACvF,IAAIgnB,EAAUm6M,EAAkBnhO,GAC5BohO,EAA2Bp6M,EAAQ05M,iBACnCW,EAASr6M,EAAQxoB,MACjBqiO,EAAc7+N,KAAKyxE,YAAczxE,KAAKmpN,gBAAkBnpN,KAAKsyE,uBAAyBttD,EAAQ65M,WAAa,EAC3G5nJ,EAAgBjyD,EAAQ7Z,KACxByzN,EAAa55M,EAAQ45M,WAErBU,EAA0B,QADnBt6M,EAAQ+mB,KAEfwzL,OAAe,EACfC,EAAkB,GAClBC,EAAe,GACfjnJ,EAAgB,GAChBknJ,EAAqB,GACrBC,EAAoB,GACpBC,EAAuB,GAC3B,IAA6L,IAAxL,CAAC,iBAAkB,6BAA8B,6BAA8B,gCAAiC,0BAA2B,iBAAkBzhO,QAAQ6mB,EAAQ7Z,MAC9K,GAAIm0N,GACA,GAAqB,kBAAjBt6M,EAAQ7Z,KACR,IAAK,IAAIgmN,EAAMsE,EAAS54N,OAAQq0N,EAAM,EAAGA,EAAMC,EAAKD,IAChD,QAAsBl1N,IAAlBy5N,EAASvE,IACLuE,EAASvE,GAAKx3I,UAAUklJ,GAAa,CACrCW,EAAe9J,EAASvE,GAGpByO,EAFmB,IAAnB3/N,KAAKyxE,WAAoBzxE,KAAKyxE,WAAa52D,EAAKq2M,EAAM2N,IACtDhkN,EAAKq2M,EAAM2N,GAAY,GAAG5mJ,aAAeonJ,EACrBxkN,EAAKq2M,EAAM2N,GAGX,GAExB,WAMf,CACD,IAAK,IAAIgB,EAAQhlN,EAAKhe,OAAQD,EAAI,EAAGA,EAAIijO,SACrB7jO,IAAZ6e,EAAKje,SAAmCZ,IAAf6e,EAAKje,GAAG,IADOA,IAExC47E,EAAc52E,KAAKiZ,EAAKje,IAOhC,IADA,IAAI+E,EAAM62E,EAAc37E,OACjB8E,KAAO,CACV,IACIm+N,GADAC,EAAUvnJ,EAAc72E,GAAKm3E,EAAS,KACjBb,YACgC,IAArDj4E,KAAKmnN,gBAAgB5qJ,OAAOp+D,QAAQ2hO,KACpCL,EAAejnJ,EAAc72E,GAC7BA,EAAM,GAGd,GAAqB,kBAAjBqjB,EAAQ7Z,KAA0B,CAClC,IAAK,IAAI6yN,EAAMyB,EAAa5iO,OAAQ+oE,EAAM,EAAGA,EAAMo4J,EAAKp4J,IAAO,CAC3D,IAAIo6J,GAAmB,EACvB,QAA0BhkO,IAAtByjO,EAAa75J,IAAsB65J,EAAa75J,GAAK8T,UAAUklJ,GAAa,CAC5EW,EAAeE,EAAa75J,GACvB,IAAIq6J,EAAQplN,EAAKhe,OAAtB,IAA8BD,EAAI,EAAGA,EAAIqjO,EAAOrjO,IAAK,MAEjCZ,KADZ+jO,EAAUllN,EAAKje,UACyBZ,IAAf+jO,EAAQ,IACX,UAAtBA,EAAQn6J,GAAK75B,OACqD,IAAlE/rC,KAAKmnN,gBAAgB5qJ,OAAOp+D,QAAQ4hO,EAAQn6J,GAAKqS,cACjD+nJ,GAAmB,EACnBJ,EAAqBhjO,GAAKmjO,EAAQn6J,GAClC85J,EAAmB99N,KAAKhF,IAGhC,GAAIojO,EACA,OAIZ,GAAoC,IAAhCJ,EAAqB/iO,QAA8C,IAA9B6iO,EAAmB7iO,OACxD,IAASmhO,EAAMyB,EAAa5iO,OAAQ+oE,EAAM,EAAGA,EAAMo4J,EAAKp4J,IAAO,CACvDo6J,GAAmB,EACvB,QAA0BhkO,IAAtByjO,EAAa75J,IAAoF,IAA9D65J,EAAa75J,GAAK8T,UAAU26I,UAAUl2N,QAAQygO,GAAmB,CACpGW,EAAeE,EAAa75J,GAC5B,IAAK,IAAImK,EAAMl1D,EAAKhe,OAAQsL,EAAI,EAAGA,EAAI4nE,EAAK5nE,IAAK,CAC7C,IAAI43N,OACY/jO,KADZ+jO,EAAUllN,EAAK1S,UACyBnM,IAAf+jO,EAAQ,IACX,UAAtBA,EAAQn6J,GAAK75B,OACqD,IAAlE/rC,KAAKmnN,gBAAgB5qJ,OAAOp+D,QAAQ4hO,EAAQn6J,GAAKqS,cACjD+nJ,GAAmB,EAEnBN,EAAmB99N,KAAKuG,IAGhC,GAAI63N,EACA,SAQ5B,OAAQh7M,EAAQ7Z,MACZ,IAAK,iBACL,IAAK,6BAEG,IAAImzN,EAAat5M,EAAQy3E,QACzB,GAAI6iI,EAAgB,CAChB,GAAKhB,EAwBD,IADA,IAAI4B,EAAkBtB,EAAWjiO,MAAMqD,KAAKuxE,kBAAkBuD,iBAC9B2mJ,GAAvBtK,EAAMsE,EAAS54N,OAAe,GAAG4+N,EAAOtK,EAAKsK,IAAQ,CAC1D,QAAuBz/N,IAAnBy5N,EAASgG,GAET,IAAwE,IADxDhG,EAASgG,GAAM/hJ,UAAU26I,UAAU13N,MAAMqD,KAAKuxE,kBAAkBuD,iBAClE32E,QAAQ+hO,EAAgBA,EAAgBrjO,OAAS,KAC3D44N,EAASgG,GAAMviJ,QAAUqmJ,EAAarmJ,MACtC,IAAK,IAAI/jD,EAAK,EAAGgrM,EAAarnJ,EAAU3jD,EAAKgrM,EAAWtjO,OAAQs4B,IAAM,CAC9D3a,EAAQ2lN,EAAWhrM,GAEC,WADpBirM,GAAavlN,EAAK4gN,EAAOoD,GAAYrkN,IAC1BuxB,MAAoBq0L,GAAWnoJ,aAAeonJ,IACzDG,EAAgB59N,KAAK,CAAC65N,EAAOoD,EAAYrkN,IACrCskN,EAAWrD,EAAOoD,EAAa,IAAMrkN,WAC9BskN,EAAWrD,EAAOoD,EAAa,IAAMrkN,UAlCpE,IAAK,IAAIjX,EAAK,EAAG88N,EAA6BjB,EAA0B77N,EAAK88N,EAA2BxjO,OAAQ0G,IAC5G,KAAIi4C,EAAO6kL,EAA2B98N,GAC7B4tN,EAAMsE,EAAS54N,OAAxB,IAAgCq0N,EAAM,EAAGA,EAAMC,EAAKD,IAChD,QAAsBl1N,IAAlBy5N,EAASvE,IACLuE,EAASvE,GAAKx3I,UAAUl+B,EAAKk+B,UAAU26I,YACvCoB,EAASvE,GAAKh4I,QAAUqmJ,EAAarmJ,OAAgC,cAAvBu8I,EAASvE,GAAK/lN,KAC5D,IAAK,IAAI4pB,EAAK,EAAGurM,EAAaxnJ,EAAU/jD,EAAKurM,EAAWzjO,OAAQk4B,IAAM,CAClE,IAAIva,EAAQ8lN,EAAWvrM,GAEC,WADpBqrM,GAAavlN,EAAKq2M,EAAM2N,GAAYrkN,IACzBuxB,MAAoBq0L,GAAWnoJ,aAAeonJ,IACzDG,EAAgB59N,KAAK,CAACsvN,EAAM2N,EAAYrkN,IACpCskN,EAAW5N,EAAM2N,EAAa,IAAMrkN,WAC7BskN,EAAW5N,EAAM2N,EAAa,IAAMrkN,KA8B3E,IAAK,IAAI8a,EAAK,EAAGirM,EAAoBf,EAAiBlqM,EAAKirM,EAAkB1jO,OAAQy4B,IAAM,CACvF,IAGIlC,GAFAgtM,GAAavlN,GADbL,EAAQ+lN,EAAkBjrM,IACF,IAAI9a,EAAM,KAEhBqX,YAAc8tM,EAAkBnlN,EAAM,IAAIqX,YAChEuB,EAAOhnB,MAAMgnB,IAAkC,IAArBgtM,GAAW5jO,OAAqD,IAAtCmjO,EAAkBnlN,EAAM,IAAIhe,MAA3D,EAA8E42B,EAC9FpzB,KAAKolN,sBAAsB5qM,EAAM,MAClCxa,KAAKolN,sBAAsB5qM,EAAM,IAAM,IAErB,mBAAlBy8D,GACAj3E,KAAKolN,sBAAsB5qM,EAAM,IAAIA,EAAM,IAAM4Y,EACjDgtM,GAAW1nJ,cAAyB,IAATtlD,EAAapzB,KAAKopN,qBAAuBppN,KAAKkzJ,kBAAkB9/H,EAAMisM,GAAQ3mJ,gBAKzGtlD,EAAoD,IAA5CusM,EAAkBnlN,EAAM,IAAIqX,YAChC,EAAKuB,EAAOusM,EAAkBnlN,EAAM,IAAIqX,YAC5C7xB,KAAKolN,sBAAsB5qM,EAAM,IAAIA,EAAM,IAAM4Y,EACjDgtM,GAAW1nJ,cAAgB0nJ,GAAWruJ,cAA0B,IAAT3+C,EAAapzB,KAAKuoN,UAAUvsM,aAAaoX,EAAM,CAAEpoB,OAAQ,IAAKqF,sBAAuBrQ,KAAK8tN,iBAAiB9tN,KAAKslN,aAAc8a,GAAWnoJ,cAAiBj4E,KAAKopN,qBAAwBgX,GAAW1nJ,oBAIhQ,CACD,GAAK4lJ,EA2BD,CAAI4B,EAAkBtB,EAAWjiO,MAAMqD,KAAKuxE,kBAAkBuD,iBACrDkpJ,EAAMyB,EAAa5iO,OAA5B,IADA,IACoC0sI,EAAO,EAAGA,EAAOy0F,EAAKz0F,IAAQ,CAC1Dy2F,GAAmB,EACvB,QAA2BhkO,IAAvByjO,EAAal2F,GAEb,IAAwE,IADxDk2F,EAAal2F,GAAM7vD,UAAU26I,UAAU13N,MAAMqD,KAAKuxE,kBAAkBuD,iBACtE32E,QAAQ+hO,EAAgBA,EAAgBrjO,OAAS,KAC3D4iO,EAAal2F,GAAMrwD,QAAUqmJ,EAAarmJ,MAAO,CACjD,IAAK,IAAIg3E,EAAK,EAAGswE,EAAuBd,EAAoBxvE,EAAKswE,EAAqB3jO,OAAQqzJ,IAAM,CAGxE,WADpBkwE,GAAavlN,EADbL,EAAQgmN,EAAqBtwE,IACJ3mB,IACdx9F,MAAoBq0L,GAAWnoJ,aAAeonJ,IACzDW,GAAmB,EACnBR,EAAgB59N,KAAK,CAAC4Y,EAAO+uH,IACzBu1F,EAAWtkN,EAAQ,IAAM+uH,WAClBu1F,EAAWtkN,EAAQ,IAAM+uH,IAI5C,GAAIy2F,EACA,aA7ChB,IAAK,IAAIxzG,EAAK,EAAGi0G,GAA6BrB,EAA0B5yG,EAAKi0G,GAA2B5jO,OAAQ2vH,IAC5G,CAAIhxE,EAAOilL,GAA2Bj0G,GAAtC,IACSwxG,EAAMyB,EAAa5iO,OAA5B,IAAoC+oE,EAAM,EAAGA,EAAMo4J,EAAKp4J,IAAO,CAC3D,IAAIo6J,GAAmB,EACvB,QAA0BhkO,IAAtByjO,EAAa75J,IACb65J,EAAa75J,GAAK8T,UAAUl+B,EAAKk+B,UAAU26I,YAC3CoL,EAAa75J,GAAKsT,QAAUqmJ,EAAarmJ,OAAoC,cAA3BumJ,EAAa75J,GAAKz6D,KAAsB,CAC1F,IAAK,IAAI8kJ,GAAK,EAAGywE,GAAuBhB,EAAoBzvE,GAAKywE,GAAqB7jO,OAAQozJ,KAAM,CAGxE,WADpBmwE,GAAavlN,EADbL,EAAQkmN,GAAqBzwE,KACJrqF,IACd75B,MAAoBq0L,GAAWnoJ,aAAeonJ,IACzDW,GAAmB,EACnBR,EAAgB59N,KAAK,CAAC4Y,EAAOorD,IACzBk5J,EAAWtkN,EAAQ,IAAMorD,WAClBk5J,EAAWtkN,EAAQ,IAAMorD,IAI5C,GAAIo6J,EACA,QAgCpB,IAAIW,QAAiB,EACe,IAAhCf,EAAqB/iO,SACrB8jO,GAAiB3gO,KAAK4gO,kBAAkB57M,EAAQ45M,WAAYlJ,IAEhE,IAAK,IAAImL,GAAK,EAAGC,GAAoBtB,EAAiBqB,GAAKC,GAAkBjkO,OAAQgkO,KAAM,CACvF,IACIT,GAAavlN,GADbL,EAAQsmN,GAAkBD,KACF,IAAIrmN,EAAM,IAClCumN,GAAsB,EAC1B,GAAoC,IAAhCnB,EAAqB/iO,OAAc,CACnC,IAAImkO,GAAchhO,KAAKihO,eAAeb,GAAW9nJ,WAAYm9I,GAC7DsL,GAAsB/gO,KAAKyzN,kBAAkBuN,GAAYxmN,MAAOmmN,GAAexoJ,YAAan4E,KAAK62E,UAAUwoJ,GAAQ7kN,MAAOwK,EAAQ7Z,WAGlI41N,GAAsBnB,EAAqBplN,EAAM,IAAIhe,MAErD42B,EAAOgtM,GAAW5jO,MAAQukO,GAC9B3tM,EAAOhnB,MAAMgnB,GAAQ,EAAIA,EACpBpzB,KAAKolN,sBAAsB5qM,EAAM,MAClCxa,KAAKolN,sBAAsB5qM,EAAM,IAAM,IAErB,mBAAlBy8D,GACAmpJ,GAAW1nJ,cAAyB,IAATtlD,EAAapzB,KAAKopN,qBAAuBppN,KAAKkzJ,kBAAkB9/H,EAAMisM,GAAQ3mJ,cACzG14E,KAAKolN,sBAAsB5qM,EAAM,IAAIA,EAAM,IAAM4Y,IAGjDA,EAAiD,IAAzCwsM,EAAqBplN,EAAM,IAAIhe,MACnC,EAAK42B,EAAOwsM,EAAqBplN,EAAM,IAAIhe,MAC/C4jO,GAAW1nJ,cAA0B,IAATtlD,EAAapzB,KAAKuoN,UAAUvsM,aAAaoX,EAAM,CAAEpoB,OAAQ,IAAKqF,sBAAuBrQ,KAAK8tN,iBAAiB9tN,KAAKslN,aAAc8a,GAAWnoJ,cAAiBj4E,KAAKopN,qBAC3LppN,KAAKolN,sBAAsB5qM,EAAM,IAAIA,EAAM,IAAM4Y,IAIzDpO,EAAQy5M,aAAa5hO,OAAS,GAC9BmD,KAAKi/N,iBAAiBxJ,EAAUC,EAAU76M,EAAMmK,EAAQy5M,aAAc3lJ,EAAUgmJ,GAGxF,MACJ,IAAK,6BACL,IAAK,gCACL,IAAK,0BAEG,GAAIQ,EAAgB,CAChB,IAAK,IAAI4B,GAAK,EAAGC,GAA6B/B,EAA0B8B,GAAKC,GAA2BtkO,OAAQqkO,KAE5G,IADI1lL,EAAO2lL,GAA2BD,IAC7B/P,EAAMsE,EAAS54N,OAAQD,EAAI,EAAGA,EAAIu0N,EAAKv0N,IAC5C,QAAoBZ,IAAhBy5N,EAAS74N,IACL64N,EAAS74N,GAAG88E,UAAUl+B,EAAKk+B,UAAU26I,YACrCoB,EAAS74N,GAAGs8E,QAAU19B,EAAK09B,MAC3B,IAAK,IAAIkoJ,GAAK,EAAGC,GAAavoJ,EAAUsoJ,GAAKC,GAAWxkO,OAAQukO,KAAM,CAC9D5mN,EAAQ6mN,GAAWD,IAEC,WADpBhB,GAAavlN,EAAKje,EAAIiiO,GAAYrkN,IACvBuxB,MAAoBq0L,GAAWnoJ,aAAeonJ,IACzDG,EAAgB59N,KAAK,CAAChF,EAAIiiO,EAAYrkN,IAClCskN,EAAWliO,EAAIiiO,EAAa,IAAMrkN,WAC3BskN,EAAWliO,EAAIiiO,EAAa,IAAMrkN,IAQrE,IAAK,IAAI8mN,GAAK,EAAGC,GAAoB/B,EAAiB8B,GAAKC,GAAkB1kO,OAAQykO,KAAM,CAEnFlB,GAAavlN,GADbje,EAAI2kO,GAAkBD,KACF,IAAI1kO,EAAE,IAD9B,IAGI4kO,GAAmB,EAEnBA,GAD6B,IAA7B7B,EAAkB9iO,QAAgB0iO,EACfv/N,KAAKyzN,kBAAkB8L,EAAa/kN,MAAOk7M,EAAS94N,EAAE,GAAK,GAAGu7E,YAAan4E,KAAK62E,UAAUwoJ,GAAQ7kN,MAAOwK,EAAQ7Z,MAGjHw0N,EAAkB/iO,EAAE,IAAIi1B,YAE3CuB,EAAOgtM,GAAW5jO,MAAQglO,GAC9BpuM,EAAOhnB,MAAMgnB,GAAQ,EAAIA,EACzBgtM,GAAW1nJ,cAAgB0nJ,GAAWruJ,cAA0B,IAAT3+C,EAAapzB,KAAKuoN,UAAUvsM,aAAaoX,EAAM,CAAEpoB,OAAQ,IAAKqF,sBAAuBrQ,KAAK8tN,iBAAiB9tN,KAAKslN,aAAc8a,GAAWnoJ,cAAiBj4E,KAAKopN,qBAAwBgX,GAAW1nJ,cACpP14E,KAAKolN,sBAAsBxoN,EAAE,MAC9BoD,KAAKolN,sBAAsBxoN,EAAE,IAAM,IAEvCoD,KAAKolN,sBAAsBxoN,EAAE,IAAIA,EAAE,IAAMw2B,OAG5C,CACD,IAAK,IAAIquM,GAAK,EAAGC,GAA6BtC,EAA0BqC,GAAKC,GAA2B7kO,OAAQ4kO,KAE5G,IADIjmL,EAAOkmL,GAA2BD,IAC7BzD,EAAMyB,EAAa5iO,OAAQsL,EAAI,EAAGA,EAAI61N,EAAK71N,IAAK,CACjD63N,GAAmB,EACvB,QAAwBhkO,IAApByjO,EAAat3N,IACbs3N,EAAat3N,GAAGuxE,UAAUl+B,EAAKk+B,UAAU26I,WAAY,CACrD,IAAK,IAAIsN,GAAK,EAAGC,GAAuBlC,EAAoBiC,GAAKC,GAAqB/kO,OAAQ8kO,KAAM,CAGxE,WADpBvB,GAAavlN,EADbL,EAAQonN,GAAqBD,KACJx5N,IACd4jC,MAAoBq0L,GAAWnoJ,aAAeonJ,IACzDW,GAAmB,EACnBR,EAAgB59N,KAAK,CAAC4Y,EAAOrS,IACzB22N,EAAWtkN,EAAQ,IAAMrS,WAClB22N,EAAWtkN,EAAQ,IAAMrS,IAI5C,GAAI63N,EACA,OAKhB,IAAI6B,QAAc,EACkB,IAAhCjC,EAAqB/iO,SACrBglO,GAAc7hO,KAAK4gO,kBAAkB57M,EAAQ45M,WAAYlJ,IAE7D,IAAK,IAAIoM,GAAK,EAAGC,GAAoBvC,EAAiBsC,GAAKC,GAAkBllO,OAAQilO,KAAM,CAEnF1B,GAAavlN,GADbje,EAAImlO,GAAkBD,KACF,IAAIllO,EAAE,IAD9B,IAEIolO,GAAmB,EACvB,GAAoC,IAAhCpC,EAAqB/iO,OAAc,CAC/BmkO,GAAchhO,KAAKihO,eAAeb,GAAW9nJ,WAAYm9I,GAC7DuM,GAAmBhiO,KAAKyzN,kBAAkBuN,GAAYxmN,MAAOqnN,GAAY1pJ,YAAan4E,KAAK62E,UAAUwoJ,GAAQ7kN,MAAOwK,EAAQ7Z,WAG5H62N,GAAmBpC,EAAqBhjO,EAAE,IAAIJ,MAElD,IAAIyI,GAAMm7N,GAAW5jO,MAAQwlO,GAC7B/8N,GAAMmH,MAAMnH,IAAO,EAAIA,GACvBm7N,GAAW1nJ,cAAyB,IAARzzE,GAAYjF,KAAKuoN,UAAUvsM,aAAa/W,GAAK,CAAE+F,OAAQ,IAAKqF,sBAAuBrQ,KAAK8tN,iBAAiB9tN,KAAKslN,aAAc8a,GAAWnoJ,cAAiBj4E,KAAKopN,qBACpLppN,KAAKolN,sBAAsBxoN,EAAE,MAC9BoD,KAAKolN,sBAAsBxoN,EAAE,IAAM,IAEvCoD,KAAKolN,sBAAsBxoN,EAAE,IAAIA,EAAE,IAAMqI,IAIrD,MACJ,IAAK,gBAEG,GAAIq6N,EACA,IAAK,IAAI2C,GAAK,EAAGC,GAAappJ,EAAUmpJ,GAAKC,GAAWrlO,OAAQolO,KAC5D,CAAIznN,EAAQ0nN,GAAWD,IACnB7uM,EAAO,EACX,IAFA,IAES+uM,GAAK,EAAGC,GAA6BhD,EAA0B+C,GAAKC,GAA2BvlO,OAAQslO,KAE5G,IADI3mL,EAAO4mL,GAA2BD,IAC7BhR,EAAMsE,EAAS54N,OAAQ4+N,EAAO,EAAGA,EAAOtK,EAAKsK,IAClD,QAAuBz/N,IAAnBy5N,EAASgG,GAAqB,CAC1B2E,GAAavlN,EAAK4gN,EAAOoD,GAAYrkN,GACzC,QAAuBxe,IAAnBy5N,EAASgG,IAAuBhG,EAASgG,GAAM/hJ,UAAUl+B,EAAKk+B,UAAU26I,YACxEoB,EAASgG,GAAMviJ,QAAU19B,EAAK09B,OAA6B,UAApBknJ,GAAWr0L,MAClDq0L,GAAWnoJ,aAAeonJ,EAAQ,CACN,cAAxB5J,EAASgG,GAAMtwN,OACfioB,GAAUgtM,GAAWruJ,gBAAoB30E,YAAkBgjO,GAAWvuM,cAAgBzlB,MAAMg0N,GAAWvuM,aAA0CuuM,GAAW5jO,MAApC4jO,GAAWvuM,YACnIuuM,GAAW1nJ,cAAgB0nJ,GAAWruJ,cAA0B,IAAT3+C,GAAegtM,GAAWvuM,aAA0C,IAA3BuuM,GAAWvuM,YAAqB,GAAK7xB,KAAKkzJ,kBAAkB9/H,EAAMisM,GAAQ3mJ,cAAiB0nJ,GAAW1nJ,cACjM14E,KAAKolN,sBAAsBqW,EAAOoD,KACnC7+N,KAAKolN,sBAAsBqW,EAAOoD,GAAc,IAEpD7+N,KAAKolN,sBAAsBqW,EAAOoD,GAAYrkN,GAAS4Y,GAEvD0rM,EAAWrD,EAAOoD,EAAa,IAAMrkN,WAC9BskN,EAAWrD,EAAOoD,EAAa,IAAMrkN,GAEhD,aAQpB,IAAS22M,EAAMsE,EAAS54N,OAAQq0N,EAAM,EAAGA,EAAMC,EAAKD,IAChD,QAAsBl1N,IAAlBy5N,EAASvE,GACT,CAAI99L,EAAO,EACX,IADA,IACSq5F,GAAK,EAAG41G,GAA6BjD,EAA0B3yG,GAAK41G,GAA2BxlO,OAAQ4vH,KAE5G,IADIjxE,EAAO6mL,GAA2B51G,IAC7BuxG,EAAMyB,EAAa5iO,OAAQ+oE,EAAM,EAAGA,EAAMo4J,EAAKp4J,IAAO,CACvDw6J,GAAavlN,EAAKq2M,EAAM2N,GAAYj5J,GACxC,QAA0B5pE,IAAtByjO,EAAa75J,IACb65J,EAAa75J,GAAK8T,UAAUl+B,EAAKk+B,UAAU26I,YACvB,UAApB+L,GAAWr0L,MAAoBq0L,GAAWnoJ,aAAeonJ,EAAQ,CAClC,cAA3BI,EAAa75J,GAAKz6D,OAClBioB,GAAQgtM,GAAW5jO,MACnB4jO,GAAW1nJ,cAAgB14E,KAAKkzJ,kBAAkB9/H,EAAMisM,GAAQ3mJ,cAC3D14E,KAAKolN,sBAAsB8L,EAAM2N,KAClC7+N,KAAKolN,sBAAsB8L,EAAM2N,GAAc,IAEnD7+N,KAAKolN,sBAAsB8L,EAAM2N,GAAYj5J,GAAOxyC,GAEpD0rM,EAAW5N,EAAM2N,EAAa,IAAMj5J,WAC7Bk5J,EAAW5N,EAAM2N,EAAa,IAAMj5J,GAE/C,YAY5Cu/I,EAAYjpN,UAAU0kO,kBAAoB,SAAUxmN,EAAMs7M,GAEtD,IADA,IAAI7tM,EAAM,CAAEkkB,KAAM,SAAUvxB,MAAO,GAAI29D,YAAa,IAC3Cn6E,EAAK,EAAGskO,EAAa5M,EAAU13N,EAAKskO,EAAWzlO,OAAQmB,IAAM,CAClE,IAAIi5B,EAAOqrM,EAAWtkO,GAClBi5B,GAAQA,EAAKyiD,WAAwD,IAA3CziD,EAAKyiD,UAAU26I,UAAUl2N,QAAQic,KAC3DyN,EAAIrN,MAAQqN,EAAIrN,MAAMsX,OAAOmF,EAAKzc,OAAOqnE,MAAK,SAAU94E,EAAGpB,GAAK,OAAOoB,EAAIpB,KAC3EkgB,EAAIswD,YAAc+sI,EAAS,GAAIr9L,EAAIswD,YAAalhD,EAAKkhD,cAG7D,OAAOtwD,GAEXs9L,EAAYjpN,UAAU+kO,eAAiB,SAAU7mN,EAAMq7M,GACnD,IAAK,IAAIz3N,EAAK,EAAGukO,EAAa9M,EAAUz3N,EAAKukO,EAAW1lO,OAAQmB,IAAM,CAClE,IAAIi5B,EAAOsrM,EAAWvkO,GACtB,GAAIi5B,EAAM,CACN,GAAIA,EAAKyiD,WAAaziD,EAAKyiD,UAAU26I,YAAcj6M,EAC/C,OAAO6c,EAEN,GAAa,KAAT7c,GAA6B,cAAd6c,EAAK9rB,KACzB,OAAO8rB,GAInB,OAAO,MAGXkuL,EAAYjpN,UAAUgiO,iBAAmB,SAAUp1J,EAAMq0J,EAAYpjK,EAASqjK,EAAMviN,EAAMwiN,EAAKI,EAAavM,EAAK0M,EAAKN,EAAQC,GACrHE,GACDz9N,KAAKw2N,aAAa2G,EAAWC,EAAOQ,GAAKxjJ,QAAS+iJ,EAAYpjK,EAASqjK,EAAMviN,EAAMwiN,EAAKC,EAAQC,GAE/Fv9N,KAAKklE,eACNi4J,EAAWC,EAAOQ,GAAKxjJ,QAAU,KAGzC+qI,EAAYjpN,UAAU+hO,cAAgB,SAAUn1J,EAAM/O,EAASqjK,EAAMviN,EAAM+iN,EAAK1M,EAAKtrJ,EAAKkrJ,EAAK0M,EAAQF,EAAQC,GAC3G,IAAI/J,EAAOxzN,KAAK62E,UAAU72E,KAAKu8D,OAAOqhK,GAAKxjN,MAAMI,MAC7C4lF,EAAYpgG,KAAK62E,UAAU72E,KAAKu8D,OAAOqhK,GAAKxjN,MAAM68D,cAClDzd,EAAQx5D,KAAKu8D,OAAOqhK,GAAKxjN,KACzBooN,EAAc,GACdC,EAAc,GACdjmO,EAAQ,EACRq1B,EAAc,EAElB,OAAQuuE,GACJ,IAAK,QAKG,IAFA,IAAIilH,EAAe,CAAC,OAAQ,YAAa,YAAa,aAClDzoN,EAAI,EACCoB,EAAK,EAAG0kO,EAHjBF,EAAc,CAAC,CAAC15J,EAAKooJ,GAAMn3J,EAAQ6L,IAAO,CAACkD,EAAKooJ,GAAMqM,GAAS,CAACD,EAAQvjK,EAAQ6L,IAAO,CAAC03J,EAAQC,IAGlDv/N,EAAK0kO,EAAc7lO,OAAQmB,IAAM,CAC3E,IAAI2lJ,EAAS++E,EAAc1kO,GAC3BykO,EAAYpd,EAAazoN,IAAMoD,KAAKyzN,kBAAmB9vE,EAAO,GAAInpI,MAAQmpI,EAAO,GAAIxrE,YAAaq7I,EAAMpzH,GACxGxjG,IAEJ,IAAI+lO,EAAUF,EAAYrvM,KAASqvM,EAAYG,WAAgBH,EAAYI,UAAcJ,EAAYK,WACrGtmO,IAASssE,EAAKooJ,GAAK92I,QAAQv9E,OAAS,KAAQO,YAAkB0rE,EAAKooJ,GAAKn/I,gBAAmBjJ,EAAKooJ,GAAKn/I,gBAChG/xE,KAAKgyE,kBAAqBhyE,KAAK+xE,cAC/B30E,YAAkBqlO,EAAYrvM,MAAQqvM,EAAYrvM,KAAQhnB,MAAMu2N,GAAS,EAAIA,OAD5B3mO,EAEtD61B,EAAez0B,YAAkBqlO,EAAYrvM,MAAQqvM,EAAYrvM,KAAQhnB,MAAMu2N,GAAS,EAAIA,EAEhG,MACJ,IAAK,yBACL,IAAK,0BACL,IAAK,wBAEGH,EAAc,CAAC,CAAC15J,EAAKooJ,GAAMn3J,EAAQ6L,MACvBhkE,KAAoB,2BAAdw+F,EACd,CAACk9H,EAAQC,GAAyB,4BAAdn9H,EAA0C,CAACk9H,EAAQvjK,EAAQ6L,IAAQ,CAACkD,EAAKooJ,GAAMqM,IACnGlY,EAAe,CAAC,OAAQ,aACxBzoN,EAAI,EACR,IAFA,IAES2G,EAAK,EAAGw/N,EAAgBP,EAAaj/N,EAAKw/N,EAAclmO,OAAQ0G,IAAM,CACvEogJ,EAASo/E,EAAcx/N,GAC3Bk/N,EAAYpd,EAAazoN,IAAMoD,KAAKyzN,kBAAmB9vE,EAAO,GAAInpI,MAAQmpI,EAAO,GAAIxrE,YAAaq7I,EAAMpzH,GACxGxjG,IAEJ,IAAIomO,EAAUP,EAAYrvM,KAASqvM,EAAYG,UAC/CpmO,IAASssE,EAAKooJ,GAAK92I,QAAQv9E,OAAS,KAAQO,YAAkB0rE,EAAKooJ,GAAKn/I,gBAAmBjJ,EAAKooJ,GAAKn/I,gBAChG/xE,KAAK+xE,eAAkB/xE,KAAKgyE,iBAC5B50E,YAAkBqlO,EAAYrvM,MAAQqvM,EAAYrvM,KAAQhnB,MAAM42N,GAAS,EAAIA,OAD5BhnO,EAEtD61B,EAAez0B,YAAkBqlO,EAAYrvM,MAAQqvM,EAAYrvM,KAAQhnB,MAAM42N,GAAS,EAAIA,EAEhG,MACJ,QACI,IAAI/9N,EAAMjF,KAAKyzN,kBAAkB3qJ,EAAKooJ,GAAK12M,MAAOu/C,EAAQ6L,GAAKuS,YAAaq7I,EAAMpzH,GAClF5jG,IAASssE,EAAKooJ,GAAK92I,QAAQv9E,OAAS,KAAQO,YAAkB0rE,EAAKooJ,GAAKn/I,gBAAmBjJ,EAAKooJ,GAAKn/I,gBAChG/xE,KAAK+xE,eAAkB/xE,KAAKgyE,iBAAiC/sE,OAAZjJ,EACtD61B,EAAc5sB,EAGtB,IAAIyuN,EAAc,CACdl9I,UAAWx2E,KAAKu8D,OAAOqhK,GAAKxjN,KAC5BwwC,IAAKke,EAAKooJ,GACVz3J,OAAQM,EAAQ6L,GAChBppE,MAAOA,EACPm3N,SAAU3zN,KAAK4zN,WAAW5zN,KAAK0nN,gBAC/BmM,YAAc/qJ,EAAKooJ,GAAKp3I,UAAYhR,EAAKooJ,GAAKl3I,UAAY,WAAgC,cAAnBlR,EAAKooJ,GAAK/lN,KAAuB,aAAe,QACvH2oN,eAAiB/5J,EAAQ6L,GAAKkU,UAAY/f,EAAQ6L,GAAKoU,UAAY,WAAmC,cAAtBjgB,EAAQ6L,GAAKz6D,KAAuB,aAAe,QACnI8rE,cAAempB,EACf2zH,gBAAgB,GAEhB/zN,KAAKsoN,kBACLtoN,KAAKsoN,iBAAiBoL,GAE1Bl3N,EAAQk3N,EAAYl3N,MACpB,IAAI88E,EAAQxQ,EAAKooJ,GAAKp3I,UAAY/f,EAAQ6L,GAAKkU,UACxB,cAAnBhR,EAAKooJ,GAAK/lN,MAA8C,cAAtB4uD,EAAQ6L,GAAKz6D,KAC/C83N,EAA6B,cAAnBn6J,EAAKooJ,GAAK/lN,MAA8C,cAAtB4uD,EAAQ6L,GAAKz6D,KACzD+3N,EAAYp6J,EAAKooJ,GAAK92I,QAAQv9E,OAAS,KAAQO,YAAkB0rE,EAAKooJ,GAAKn/I,iBAC1EjJ,EAAKooJ,GAAKn/I,gBAAmB/xE,KAAK+xE,gBAAkB/xE,KAAKgyE,kBAC1D0G,EAAgBwqJ,EAChB,QAAgBlnO,IAAVQ,EAAuBwD,KAAKopN,qBACnB,UAAdhpH,GAAuC,kBAAdA,EAAiC5jG,EAAM2mO,iBAC7DnjO,KAAKkzJ,kBAAkB12J,EAAOg9D,GAAOkf,eACxCtsE,MAAM5P,KAAWY,YAAkBZ,IACnC,CAAC,yBAA0B,0BAA2B,wBAAyB2B,QAAQiiG,IAAc,EACtG1nB,EAAgB14E,KAAKuoN,UAAUvsM,aAAaxf,EAAO,CAAEwO,OAAQ,IAAKqF,sBAAuBrQ,KAAK8tN,iBAAiB9tN,KAAKslN,aAAcoO,EAAYl9I,aAExI0sJ,IACN92N,MAAM5P,IAAWY,YAAkBZ,KACwD,IAA1F,CAAC,kBAAmB,cAAe,gBAAiB,aAAc2B,QAAQiiG,KAC3E1nB,EAAgB,WAGpBA,EAAiBg7I,EAAYK,eAAiB32N,YAAkBZ,GAC5DwD,KAAKopN,qBAAuB5sN,EAAM2Q,WAAaurE,EACnD79D,EAAKuiN,GAAMtM,GAAO9wN,KAAKqlN,aAAamY,GAAQ1M,GAAO,CAC/C/kL,KAAM,QAASksC,WAAYze,EAAO2e,YAAan4E,KAAK4oN,eAAiB5oN,KAAK0nN,eAAiB,GAC3FpvI,WAA+B,cAAnBxP,EAAKooJ,GAAK/lN,KAAuB,GAAK29D,EAAKooJ,GAAKx3I,UAAU26I,UACtE77I,cAAqC,cAAtBze,EAAQ6L,GAAKz6D,KAAuB,GAAK4uD,EAAQ6L,GAAK8T,UAAU26I,UAC/E37I,cAAeA,EAAel8E,MAAOY,YAAkBZ,GAAS,EAAIA,EACpEq1B,YAAaz0B,YAAkBy0B,GAAe,EAAIA,EAClD85C,SAAUyxJ,EAAMtkJ,SAAUg4I,EAAKx3I,MAAOA,EAAOE,WAAYypJ,EAASlxJ,eAAgBmxJ,GAEtFljO,KAAK0nN,eAAiB,IAG1BvC,EAAYjpN,UAAU03N,WAAa,SAAUlM,GAGzC,IAFA,IAAI0b,EAAkB,GAEbplO,EAAK,EAAG8vF,EADN5vF,OAAOjB,KAAKyqN,GACS1pN,EAAK8vF,EAAOjxF,OAAQmB,IAAM,CACtD,IAAIwc,EAAQszE,EAAO9vF,GACfgC,KAAK6a,KAAK1E,SAASqE,EAAO,MAC1B4oN,EAAgBxhO,KAAK5B,KAAK6a,KAAK1E,SAASqE,EAAO,MAGvD,OAAO4oN,GAEXje,EAAYjpN,UAAUo6N,cAAgB,SAAUvqL,EAAMoxL,EAAYtiN,EAAMuiN,EAAMiG,GAK1E,IAJA,IAAIlS,EAAMplL,EAAKlvC,OACXymO,EAAWtjO,KAAK+5D,QAAQl9D,OACxB0mO,EAAWvjO,KAAKuxE,kBAAkBxU,WAE7Bm0J,EAAM,EAAGA,EAAMC,EAAKD,IAAO,CAC5BnlL,EAAKmlL,GAAK92I,QAAQv9E,QAClBmD,KAAKs2N,cAAcvqL,EAAKmlL,GAAK92I,QAAS+iJ,EAAYtiN,EAAMuiN,EAAMiG,GAElE,IAAIG,GAAc,GACZpmO,YAAkB2uC,EAAKmlL,GAAKn/I,gBAAmBhmC,EAAKmlL,GAAKn/I,gBAC1D/xE,KAAK+xE,eAAkB/xE,KAAKiyE,oBAY7BkrJ,EADAC,EAAOD,EAAWtgO,QACCmD,KAAK+pN,oBAAoBh+K,EAAKmlL,KAX3CnlL,EAAKmlL,GAAK92I,QAAQv9E,OAAS,GAI7BmD,KAAK4mN,cACL4c,GAAc,GAJdrG,EAAWA,EAAWtgO,QAAUmD,KAAK+pN,oBAAoBh+K,EAAKmlL,IAMlEkM,EAAOD,EAAWtgO,OAAS,GAO/B,IAAI4mO,EAAM13L,EAAKmlL,GAAKh4I,MACpBntC,EAAKmlL,GAAKvlJ,SAAW83J,EACrB13L,EAAKmlL,GAAKp4I,SAAYskJ,EAAOiG,EAAQA,EAChCxoN,EAAK4oN,KACN5oN,EAAK4oN,GAAO,GACZzjO,KAAKqqD,cAAco5K,GAAO,IAI1B5oN,EAAK4oN,GAAMrG,EAAOiG,EAAQA,GAAQrjO,KAAKqqD,cAAco5K,GAAMrG,EAAOiG,EAAQA,GAAQrjO,KAAK+pN,oBAAoBh+K,EAAKmlL,IAEpH,IAAIwS,EAA2C,IAAxB1jO,KAAK+5D,QAAQl9D,QAAuC,IAAvBmD,KAAKu8D,OAAO1/D,OAChE,IAAKmD,KAAKmpN,gBAAkBnpN,KAAKsyE,uBAAyBoxJ,KAAqB1jO,KAAKyxE,WAAa+xJ,EAC7F,IAAK,IAAI5F,EAAM,EAAGA,EAAMyF,EAAMzF,IAAO,CACjC,IAAI+F,EAAS3jO,KAAKu8D,OAAOqhK,GAAK3qJ,QAAUjzE,KAAKu8D,OAAOqhK,GAAK3qJ,QAAUjzE,KAAKu8D,OAAOqhK,GAAKxjN,KAEhF0jN,EAAS,CACT/xL,KAAM,SACNksC,WAAYj4E,KAAKu8D,OAAOqhK,GAAKxjN,KAC7Bs+D,cAAeirJ,EACfzqJ,MAAO,EACPQ,UAAW,GACXZ,SAAWskJ,EAAOiG,EAAQ,EAAIzF,EAC9BjyJ,SAAU23J,GAGTzoN,EAAKyoN,KACNzoN,EAAKyoN,GAAY,GACjBtjO,KAAKqqD,cAAci5K,GAAY,IAI/BzoN,EAAKyoN,GAAWlG,EAAOiG,EAAQ,EAAIzF,GAAO59N,KAAKqqD,cAAci5K,GAAWlG,EAAOiG,EAAQ,EAAIzF,GAAOE,EAEtG,IAAIC,EAAQljN,EAAKyoN,GAAWlG,EAAOiG,EAAQ,EAAIzF,GAAKlkJ,UACpDqkJ,EAAMhyL,EAAKmlL,GAAKx3I,UAAU26I,UAAYr0N,KAAKuxE,kBAAkBuD,gBAAkB6uJ,GAAU,EACzF5F,EAAM1J,UAAYtoL,EAAKmlL,GAAKx3I,UAAU26I,UAAYr0N,KAAKuxE,kBAAkBuD,gBAAkB6uJ,EACvF5F,GAASA,EAAMwF,KACfvjO,KAAKuxE,kBAAkBsD,YAAeuoJ,EAAOiG,EAAQ,EAAIzF,QAI5D7xL,EAAKmlL,GAAKx3I,WAAa3tC,EAAKmlL,GAAKx3I,UAAU6pJ,KAChDvjO,KAAKuxE,kBAAkBsD,YAAeuoJ,EAAOiG,EAAQ,GAEpDrjO,KAAKklE,eACNi4J,EAAWC,GAAMhjJ,QAAU,MAKvC+qI,EAAYjpN,UAAUu3N,kBAAoB,SAAU9nJ,EAAUkJ,EAAar4E,EAAO2O,GAGpEwgE,EAAS9uE,OAAnB,IAGI+mO,EAAK,EAELC,EAAY,EACZC,EAAS,EACTC,GAAS,EACTC,GAAe,EACnB,OAAQ74N,EAAKsM,eACT,IAAK,SAGD,IAFA,IAAI8kD,EAAS,GACTxuB,EAAW,OACS/xC,IAAjB2vE,EAASi4J,SACsB5nO,IAA9B64E,EAAYlJ,EAASi4J,MACrBI,GAAe,EACfhkO,KAAK0nN,eAAe/7I,EAASi4J,IAAOj4J,EAASi4J,GACxCxmO,YAAkB4C,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,KAClD+/D,EAAO36D,KAAK5B,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,KAGnDonO,IAEJ,IAAIjiO,EAAM46D,EAAO1/D,OACb8E,EAAM,IACN46D,EAAOslB,MAAK,SAAU94E,EAAGpB,GAAK,OAAOoB,EAAIpB,KAGrCk8N,EAFAliO,EAAM,IAAM,GAEC46D,EADbxuB,EAAYpsC,EAAM,GAAM,EAAI,EAAMA,EAAM,EAAK,GACb46D,EAAOxuB,EAAW,IAAM,EAI5CwuB,EADZxuB,GAAYpsC,EAAM,GAAK,GAAK,EAAI,GAAOA,EAAM,GAAK,EAAK,IAI/D,MACJ,IAAK,QACD,UAAwB3F,IAAjB2vE,EAASi4J,SACsB5nO,IAA9B64E,EAAYlJ,EAASi4J,MACrBI,GAAe,EACfhkO,KAAK0nN,eAAe/7I,EAASi4J,IAAOj4J,EAASi4J,GAC7CC,GAAczmO,YAAkB4C,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,IAC3D,EAAKwD,KAAK+nN,qBAAuB/nN,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAAS,GAEjFonO,IAEJ,MACJ,IAAK,gBAED,IADA,IAAIK,EAAkB,QACEjoO,IAAjB2vE,EAASi4J,IAAmB,CAC/B,QAAkC5nO,IAA9B64E,EAAYlJ,EAASi4J,IAAoB,CACzC5jO,KAAK0nN,eAAe/7I,EAASi4J,IAAOj4J,EAASi4J,GAC7CI,GAAe,EACf,IAAIE,EAASlkO,KAAK6a,KAAK8wD,EAASi4J,IAAK5jO,KAAK8nN,UAAU9nN,KAAKovE,OAAO5yE,KAC5D2nO,OAAa,EAEZ/mO,YAAkB8mO,KACnBC,EAAaD,EAAM/2N,YACY,IAA3B82N,EAAgBpnO,QAAiBonO,EAAgBpnO,OAAS,IAA8C,IAAzConO,EAAgB9lO,QAAQgmO,MACvFN,GAAc7jO,KAAK+nN,sBAAyC,kBAAVmc,EAAsBA,EAAQ,EAChFD,EAAgBriO,KAAKuiO,KAIjCP,IAEJ,MACJ,IAAK,UACD,UAAwB5nO,IAAjB2vE,EAASi4J,IAAmB,CAC/B,QAAkC5nO,IAA9B64E,EAAYlJ,EAASi4J,IAAoB,CACzC5jO,KAAK0nN,eAAe/7I,EAASi4J,IAAOj4J,EAASi4J,GAC7CI,GAAe,EACXG,EAAankO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAC3CY,YAAkB+mO,GAIdJ,IACLF,EAAYM,IAJZN,EAAcE,GAAU3mO,YAAkBymO,GAAc,EAAIA,EAC5DA,GAAaM,GAKjBJ,GAAS,EAEbH,IAEJ,MACJ,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,YAOD,IANA,IAAIhnO,EAAI,EACJqI,EAAM,EACNm/N,EAAW,GACXC,EAAS,EACTjxM,EAAO,EACPkxM,EAAmB,OACCtoO,IAAjB2vE,EAASi4J,IAAmB,CAC/B,QAAkC5nO,IAA9B64E,EAAYlJ,EAASi4J,IAAoB,CACzCI,GAAe,EACfhkO,KAAK0nN,eAAe/7I,EAASi4J,IAAOj4J,EAASi4J,GACzCO,EAAankO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAC3CY,YAAkB+mO,KACnBl/N,GAAOk/N,EACPC,EAASxiO,KAAKuiO,GACdvnO,KAGRgnO,IAEJ,GAAIhnO,EAAI,EAAG,CACPynO,EAASp/N,EAAMrI,EACf,IAAK,IAAIoB,EAAK,EAAGumO,EAAaH,EAAUpmO,EAAKumO,EAAW1nO,OAAQmB,IAAM,CAClE,IAAIwc,EAAQ+pN,EAAWvmO,GACvBsmO,GAAoB/8N,KAAKi9N,IAAKhqN,EAAQ6pN,EAAS,GAQnDR,EAAsB,KALlBzwM,GADsE,IAArE,CAAC,kBAAmB,eAAgBj1B,QAAQgN,EAAKsM,eAC3ClQ,KAAK47B,KAAKmhM,GAA2C,oBAAvBn5N,EAAKsM,cAAsC7a,EAAKA,EAAI,IAGlF0nO,GAA2C,kBAAvBn5N,EAAKsM,cAAoC7a,EAAKA,EAAI,IAEvDic,IAAMua,OAGhCywM,EAAY5+N,EAEhB,MACJ,IAAK,MACD,IAAIw/N,GAAU,EAEd,IADAZ,OAAY7nO,OACYA,IAAjB2vE,EAASi4J,SACsB5nO,IAA9B64E,EAAYlJ,EAASi4J,UAAgE5nO,IAA1CgE,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,KAC1EwnO,GAAe,EACfhkO,KAAK0nN,eAAe/7I,EAASi4J,IAAOj4J,EAASi4J,GACzCxmO,YAAkBymO,IAAczmO,YAAkB4C,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,IACjFqnO,EAAY7jO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAGvCioO,GACAZ,EAAY7jO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAC3CioO,GAAU,GAGVZ,EAAY7jO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAASqnO,EAAY7jO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAASqnO,GAIpHD,IAEJ,MACJ,IAAK,MAED,IADA,IAAIc,GAAa,OACO1oO,IAAjB2vE,EAASi4J,SACsB5nO,IAA9B64E,EAAYlJ,EAASi4J,UAAgE5nO,IAA1CgE,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,KAC1EwnO,GAAe,EACfhkO,KAAK0nN,eAAe/7I,EAASi4J,IAAOj4J,EAASi4J,GACzCc,GACAb,EAAY7jO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAC3CkoO,GAAa,GAGbb,EAAY7jO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAASqnO,EAAY7jO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAASqnO,GAGhHD,IAEJ,MACJ,IAAK,kBACDI,GAAe,EACfhkO,KAAK0nN,eAAe/7I,EAASi4J,IAAOj4J,EAASi4J,GAC7C,IAAIe,EAAY3kO,KAAKwlN,iBAAiBxlN,KAAKovE,OAAO5yE,IAC9CqyN,EAAgB8V,EAAUvvJ,QAC1BwvJ,EAAiB,GACrB,GAAI5kO,KAAKylN,mBAAmBkf,EAAUvqN,MAElC,IADA,IAAIqrM,EAAqBzlN,KAAKylN,mBAAmBkf,EAAUvqN,MAClDyqN,EAAQ,EAAG3V,EAAMzJ,EAAmB5oN,OAAQgoO,EAAQ3V,EAAK2V,IAAS,CACvE,IAAIC,EAAkBrf,EAAmBof,GACrC1+D,EAAUy+D,EAAeE,EAAgB1vJ,SAC7C,QAAgBp5E,IAAZmqK,EAAuB,CACvB,IAAI4+D,EAASD,EAAgB35N,KAC7Bg7J,EAAUnmK,KAAKyzN,kBAAkB9nJ,EAAUkJ,EAAaiwJ,EAAgBtqN,MAAOuqN,GAC/EH,EAAeE,EAAgB1vJ,SAAW+wF,EAE9C0oD,EAAiBA,EAAenyN,QAAQooO,EAAgB1vJ,QAAS4J,OAAOmnF,IAIhF09D,GADAA,EAAY7jO,KAAK+C,SAAS8rN,MACCj2M,KAAYirN,KAAejrN,IAAWA,SAA0B5c,IAAd6nO,GAA2Bz3N,MAAMy3N,QAAc7nO,EAAY+e,KAAKC,MAAMgkE,OAAO6kJ,IAC1J,MACJ,QAEI,IADAA,OAAY7nO,OACYA,IAAjB2vE,EAASi4J,IAAmB,CAC/B,QAAkC5nO,IAA9B64E,EAAYlJ,EAASi4J,IAAoB,CACzCI,GAAe,EACfhkO,KAAK0nN,eAAe/7I,EAASi4J,IAAOj4J,EAASi4J,GAEzCO,EAAankO,KAAKumN,YAAY56I,EAASi4J,IAAKpnO,GAC5CY,YAAkBymO,IAAczmO,YAAkB+mO,GAClDN,EAAYM,GAGR/mO,YAAkBymO,KAClBA,EAAY,GAEhBA,GAAczmO,YAAkB+mO,GAAc,EAAIA,GAEjD/mO,YAAkB+mO,IACnBL,IAGRF,KAwBZ,OAASz4N,GAA+B,QAAvBA,EAAKsM,eAAyC,IAAdosN,IAC5CzmO,YAAkBymO,GAAeA,EAAYC,EAAUE,EAAeH,OAAY7nO,GAE3FmpN,EAAYjpN,UAAU6G,SAAW,SAAUxG,GACvC,OAAON,SAAS,wBAA0BM,EAAM,IAAzCN,IAIXkpN,EAAYjpN,UAAUg3J,kBAAoB,SAAU12J,EAAOg6E,GAEvD,IAAIwuJ,EAAwB,OAAVxoO,EAAkBwD,KAAK+jF,UAAY/jF,KAAK+jF,UAAUltC,YAAY,QAC5EmoC,OAAOxiF,QAAoBR,IAAVQ,EAChBwD,KAAK+jF,UAAavN,KAAax2E,KAAKsmN,eAAkBtmN,KAAK+jF,UAAUltC,YAAY,mBAC9E72C,KAAK+jF,UAAUltC,YAAY,aAAemoC,OAAOxiF,GAAUA,EAC/D2zN,EAAiB,CACjBz3I,cAAessJ,EAAY73N,WAC3B8qE,WAAY+sJ,EACZ5U,SAAU4U,GAEd,GAAIhlO,KAAKslN,aAAa9uI,KAAep5E,YAAkBZ,GACnD,IACI,IAAIuxN,EAAe/tN,KAAKslN,aAAa9uI,GAAW3iD,WAC5C7zB,KAAKslN,aAAa9uI,GAAW3iD,WAAa7zB,KAAKslN,aAAa9uI,GAC5D49I,EAAgB91N,YAAO,GAAIyvN,EAAa,MAAM,GAQlD,UAPOqG,EAAch6M,MAChBg6M,EAAchkN,0BAA4BgkN,EAAchkN,yBAA2B,UAC7EgkN,EAAchkN,0BAEpBgkN,EAAcjkN,0BAA4BikN,EAAcjkN,yBAA2B,UAC7EikN,EAAcjkN,yBAErBikN,EAAcjpN,KACdglN,EAAez3I,cAAgB14E,KAAKulN,mBAAmB/uI,GAAW23I,YAAY,IAAIhlN,KAAK3M,IACvF2zN,EAAel4I,WAAaz7E,MAE3B,CAED,UADO43N,EAAcjpN,KAChBipN,EAAcppN,SAAahL,KAAK0P,YAAY9E,KAAKwpN,EAAcppN,QAAU,CAC1E,IAAIO,EAAU6oN,EAAcppN,OAAOpI,MAAM5C,KAAKqd,aAC1C1J,GAAO,EACPvW,YAAkBg3N,EAAc9jN,+BACzB8jN,EAAc9jN,sBAErBlT,YAAkBg3N,EAAc/jN,+BACzB+jN,EAAc/jN,sBAErBjT,YAAkBg3N,EAActhN,8BACzBshN,EAActhN,qBAErB1V,YAAkBmO,KAClBA,EAAU6oN,EAAcppN,OAAOpI,MAAM,uHAC9BwxN,EAAc5jN,YACrBmD,GAAO,GAEX,IAAI4L,EAAchU,EAAQ,GACtBoI,IACAygN,EAAc5jN,aAA4C,IAA9B+O,EAAYphB,QAAQ,MAEpD,IAAI8mO,EAAc15N,EAAQ,GACtBjM,eAAc2lO,IAA6C,IAA9BA,EAAY9mO,QAAQ,MAAei2N,EAAc/jN,8BACvE+jN,EAAc/jN,sBAG7B8/M,EAAez3I,cACX14E,KAAKuoN,UAAUvsM,aAAc5P,MAAM6pC,OAAOz5C,IAA0BA,EAAhBy5C,OAAOz5C,GAAgB43N,GAC/EjE,EAAel4I,WAAc7rE,MAAM6pC,OAAOz5C,IAA0BA,EAAhBy5C,OAAOz5C,GAC3D2zN,EAAeC,SAAYhkN,MAAM6pC,OAAOz5C,IAA0BA,EAAhBy5C,OAAOz5C,GAEtB,SAAnCwD,KAAK62E,UAAUL,GAAWqL,MAAmBuyI,EAAcjpN,MAC3D,CAAC,OAAQ,WAAY,QAAQhN,QAAQ6B,KAAKslN,aAAa9uI,GAAWrrE,OAAS,IAC3EglN,EAAeC,SAAWpwN,KAAKulN,mBAAmB/uI,GAAW43I,WAAW,IAAIjlN,KAAK3M,KAEjFwD,KAAK62E,UAAUL,GAAWkM,gBAC1BytI,EAAez3I,cAAiD,QAAjCy3I,EAAez3I,cAC1CssJ,EAAY73N,WAAagjN,EAAez3I,cAC5Cy3I,EAAeC,SAAuC,QAA5BD,EAAeC,SACrC4U,EAAY73N,WAAagjN,EAAeC,UAGpD,MAAOt4I,GACH,IAAK93E,KAAK62E,UAAUL,GAAWkM,cAC3B,MAAM5K,EAEb,QAEO93E,KAAK62E,UAAUL,GAAWkM,gBAC1BytI,EAAez3I,cACVt7E,YAAkB+yN,EAAez3I,gBAAmD,QAAjCy3I,EAAez3I,cAC/DssJ,EAAY73N,WAAagjN,EAAez3I,cAChDy3I,EAAeC,SAAYhzN,YAAkB+yN,EAAeC,WAAyC,QAA5BD,EAAeC,SACpF4U,EAAY73N,WAAagjN,EAAeC,UAIxD,OAAOD,GAGXhL,EAAYjpN,UAAU8yN,cAAgB,SAAU55I,GAC5C,GAAIA,EAAQj3E,QAAQ,MAAQ,EAAG,CAE3B,IADA,IAAI+mO,EAAU,GACP9vJ,EAAQj3E,QAAQ,MAAQ,GAC3Bi3E,EAAUA,EAAQ14E,QAAQ,mBAAmB,SAAU6V,EAAMipC,GAEzD,OADA0pL,EAAQtjO,KAAK45C,GACL,KAAO0pL,EAAQroO,OAAS,MAMxC,IAFAqoO,EAAQtjO,KAAKwzE,GACbA,EAAU,KAAO8vJ,EAAQroO,OAAS,GAC3Bu4E,EAAQj3E,QAAQ,MAAQ,GAC3Bi3E,EAAUA,EAAQ14E,QAAQ,IAAIkI,OAAO,UAAgB,MAAM,SAAU2N,EAAMiI,GACvE,OAAO0qN,EAAQ1qN,GAAO9d,QAAQ,gBAAiB,sBAI3D,OAAO04E,GAEJ+vI,EA36IsB,I,6BCnBjC,kFAsBA,IAAI3gJ,EAAuB,WAQvB,SAASA,EAAMjkE,EAAQ4kO,GACnBnlO,KAAKolO,cAAe,EACpBplO,KAAKqlO,QAAU,IAAI/8J,IACnBtoE,KAAKO,OAASA,EACVP,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAO+Y,GAAGyN,KAAqB/mB,KAAKslO,iBAAkBtlO,MAC3DA,KAAKO,OAAOgpB,iBAAiBxC,IAAoB/mB,KAAK8rD,YAAY3vD,KAAK6D,OACvEA,KAAKO,OAAO+Y,GAAGyN,KAAgB/mB,KAAKsvD,QAAQnzD,KAAK6D,OACjDA,KAAKO,OAAO+Y,GAAGyN,KAAuB/mB,KAAK+zD,eAAgB/zD,MAC3DA,KAAKmlO,aAAeA,GAqNxB,OAnNA3gK,EAAMtoE,UAAUopO,eAAiB,WAC7B,IAAIvlO,EAAQC,KACZ,OAAIA,KAAKulO,eAAqD,SAAnCvlO,KAAKO,OAAO4jE,oBAAkCnkE,KAAKO,OAAOqkE,UAG9E,WACH7kE,EAAMslO,QAAQ1qN,QAAQC,MAAK,WACvB7a,EAAMqvD,kBAENrvD,EAAMwlO,eACNxlO,EAAMg0D,kBAPH/zD,KAAKovD,cAWpBoV,EAAMtoE,UAAU63D,eAAiB,WAC7B/zD,KAAKwlO,eAAexlO,KAAKO,QACzB,IAAIklO,EAAe3jO,OAAO2jO,aACtBA,IAAiBA,EAAazkO,QAAQsC,cAAc,oBACpDmiO,EAAaC,YAAYL,QAAQniN,WAUzCshD,EAAMtoE,UAAU6E,MAAQ,WACpBf,KAAK2lO,kBACL3lO,KAAK4lO,UAAY9jO,OAAOC,KAAK,GAAI,QAAS,UAAYD,OAAOs6H,YAAc,UAAYt6H,OAAOq6H,WAAa,cAC3Gn8H,KAAK4lO,UAAU1jF,OAAO,EAAG,GACzBliJ,KAAK4lO,UAAUC,SAASC,OAAOC,WAAYD,OAAOE,cAEtDxhK,EAAMtoE,UAAUozD,QAAU,WAClBtvD,KAAKulO,eACLvlO,KAAKovD,gBAGboV,EAAMtoE,UAAU4vD,YAAc,WACtB9rD,KAAKulO,gBACLvlO,KAAKolO,cAAe,IAG5B5gK,EAAMtoE,UAAUypO,gBAAkB,WAC9B,IAAI1rK,EAAOj6D,KAAKO,OACZS,EAAUG,YAAc,MAAO,CAC/BsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,SAAU4U,UAAW4rC,EAAKj5D,QAAQqtB,UAAY,kBAE/ErtB,EAAQg1B,UAAUvM,OAAO,eACzBjpB,SAASgiC,KAAKxgC,YAAYhB,GAC1B,IAAIilO,EAAY,IAAIC,IAAKhiK,YAAkBjK,EAAMA,EAAKkK,qBACtD,GAAIlK,EAAKqK,iBAAmBrK,EAAKsK,mBAC7B,IAAK,IAAI3nE,EAAI,EAAGA,EAAIqpO,EAAUlsK,QAAQl9D,OAAQD,IAC1CqpO,EAAUlsK,QAAQn9D,GAAK0B,YAAO,GAAI2nO,EAAUlsK,QAAQn9D,IACpDqpO,EAAUlsK,QAAQn9D,GAAGyqI,YAASrrI,EAIlCgE,KAAKO,OAAO0tJ,YAEZg4E,EAAUE,iBAAmBnmO,KAAKO,OAAO4lO,kBAG7CF,EAAUtvL,KAAO,aACjBsvL,EAAUtkK,MAAQ1H,EAAK4wF,WAAW5rJ,QAClC6C,OAAO2jO,aAAeQ,EACtBA,EAAU34H,YAAa,EACvB,IAAItoE,EAAUihM,EAAU/9L,qBACpBk+L,EAAiBnsK,EAAK/xB,qBACrBlD,GAAWA,EAAQnoC,SAAWupO,EAAevpO,QAC9CopO,EAAUI,mBAAmBD,GAEjCnsK,EAAKjgD,OAAO+M,KAAsB,CAAE/lB,QAASA,EAASslO,UAAWL,IACjEjmO,KAAKO,OAAOsuJ,IAAI,kBAAmB7uJ,KAAK66B,iBACxCorM,EAAUj3F,mBAAqBhvI,KAAKO,OAAOyuI,mBAC3Ci3F,EAAUl/L,SAAS/lC,GACnBilO,EAAUl8M,QAAUkwC,EAAKlwC,SAE7By6C,EAAMtoE,UAAUkzD,aAAe,WAC3B,GAAIpvD,KAAKulO,cAAe,CACpB,IAAItrK,EAAOj6D,KAAKO,OAChB,GAAIP,KAAKolO,aAEL,YADAplO,KAAKimO,YAGT,IAAIhmO,EAAO,CACPm6F,YAAa,QACbp5F,QAASi5D,EAAKj5D,QACdulO,aAActsK,EAAK++E,kBAAkBx3I,iBAAiB,4BACtDuhB,QAAQ,EACRohD,mBAAoBlK,EAAKkK,oBAK7B,GAHKnkE,KAAKolO,cACNnrK,EAAKlwC,QAAQhD,IAAoB9mB,GAEjCA,EAAK8iB,OAEL,YADA8N,YAAOopC,EAAKj5D,SAGXhB,KAAKolO,cACNplO,KAAKimO,cAIjBzhK,EAAMtoE,UAAU+pO,UAAY,WACxB,IAAIhsK,EAAOj6D,KAAKO,OAEhB,GAAoB,SAAhB05D,EAAKtqB,OAAmB,CACxB,IAAI62L,EAAWxmO,KAAKmlO,aAAasB,mBAC7Bn5F,EAAarzE,EAAKj5D,QAAQsC,cAAc,IAAM+4D,KAC9C+oE,EAAYnrE,EAAKj5D,QAAQsC,cAAc,IAAM+4D,KACjDixE,EAAWt5G,MAAM2b,OAAS,OAC1B29F,EAAWt5G,MAAMumB,UAAY,OAC7B6qF,EAAUpxG,MAAMwyM,EAASh8L,SAAW,GACpC46F,EAAUtuG,kBAAkB9C,MAAMwyM,EAAS79D,QAAU,GAGrD1uG,EAAKguC,gBACAhuC,EAAKe,cAAcjB,QAAQl9D,OAI5BmD,KAAKwlO,eAAevrK,GAHpBA,EAAKj5D,QAAQsC,cAAc,oBAAoB0wB,MAAMygB,QAAU,QAOvE,IAAK,IAAIz2C,EAAK,EAAGuF,EAAK,GAAGlC,MAAMC,KAAK24D,EAAKj5D,QAAQiuB,uBAAuBotC,MAAoBr+D,EAAKuF,EAAG1G,OAAQmB,IAAM,EAC1GgD,EAAUuC,EAAGvF,IACTg2B,MAAMsmB,UAAY,SAI9B,IADA,IAAIosL,EAAa,GAAGrlO,MAAMC,KAAK24D,EAAKj5D,QAAQiuB,uBAAuB,gBAC1D8F,EAAK,EAAGI,EAAK,GAAG9zB,MAAMC,KAAKolO,GAAa3xM,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACnE,IAAI/zB,EAAUm0B,EAAGJ,GACjBiB,YAAUh1B,EAAS,CAAC,eAAgB,CAAC,gBAEzChB,KAAK2mO,iBAAiB1sK,GACtBA,EAAKqzC,YAAa,SACXxrG,OAAO2jO,aACd,IAAIxlO,EAAO,CACPe,QAASi5D,EAAKj5D,SAElBi5D,EAAKlwC,QAAQhD,KAAsB9mB,GACnCD,KAAKO,OAAOsuJ,IAAI,qBAAsB7uJ,KAAK66B,kBAE/C2pC,EAAMtoE,UAAUyqO,iBAAmB,SAAU1sK,GACzCjkC,YAAUikC,EAAKj5D,QAAS,CAAC,uBAAwB,CAAC,iBAC9Ci5D,EAAKqzC,YACLz8E,YAAOopC,EAAKj5D,SAEhBhB,KAAK4lO,UAAY3kO,aAAYg5D,EAAKj5D,QAAShB,KAAK4lO,YAEpDphK,EAAMtoE,UAAUspO,eAAiB,SAAUvrK,GACvC,IAAI6L,EAAQ7L,EAAKe,cAAcjB,QAAQl9D,OACnCmE,EAAUi5D,EAAKj5D,QACfyY,EAAK,IAAMwgD,EAAKj5D,QAAQyY,GAC5B,GAAKqsD,EAAL,CAKA,IAFA,IAAI8gK,EAAer1M,aAAU9X,EAAK,6BAA8BzY,GAC5Dg4E,EAAU4tJ,EAAa9gK,EAAQ,GAAG32C,aAAa,WAC1CvyB,EAAI,EAAGA,EAAIgqO,EAAa/pO,OAAQD,IACrCgqO,EAAahqO,GAAGg5B,aAAa,UAAWojD,GAE5C,IAAI6tJ,EAAYt1M,aAAU,WAAa9X,EAAK,WAAYzY,GACpD8lO,EAAmBv1M,aAAU,sBAAuBvwB,GACxDhB,KAAK+mO,aAAaF,EAAW/gK,GAC7B9lE,KAAK+mO,aAAaD,EAAkBhhK,KAExCtB,EAAMtoE,UAAU6qO,aAAe,SAAUF,EAAW/gK,GAChD,IAAK,IAAIlpE,EAAI,EAAGA,EAAIiqO,EAAUhqO,OAAQD,IAClC,IAAK,IAAIuL,EAAI,EAAGA,EAAI29D,EAAO39D,IACvB0+N,EAAUjqO,GAAGk0B,SAAS3oB,GAAG6rB,MAAMygB,QAAU,QAUrD+vB,EAAMtoE,UAAUqpO,YAAc,WAC1B,OAAOvlO,KAAKO,OAAOS,QAAQyY,GAAGtb,QAAQ,UAAY,GAAK6B,KAAKO,OAAO+sG,YAQvE9oC,EAAMtoE,UAAUif,QAAU,WAClBnb,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAOsZ,IAAIkN,KAAqB/mB,KAAKovD,aAAajzD,KAAK6D,OAC5DA,KAAKO,OAAOopB,oBAAoB5C,IAAoB/mB,KAAK8rD,YAAY3vD,KAAK6D,OAC1EA,KAAKO,OAAOsZ,IAAIkN,KAAgB/mB,KAAKsvD,QAAQnzD,KAAK6D,OAClDA,KAAKO,OAAOsZ,IAAIkN,KAAuB/mB,KAAK+zD,kBAQhDyQ,EAAMtoE,UAAU2+B,cAAgB,WAC5B,MAAO,SAEX2pC,EAAMC,cAlPC,CAAC,aAAc,gBAAiB,iBAAkB,oBAAqB,kBAAmB,eAC7F,gBAAiB,YAAa,UAAW,kBAAmB,aAAc,iBAAkB,eAC5F,6BAA8B,iBAAkB,YAChD,gBAAiB,SAAU,SAAU,eAAgB,YAAa,QAAS,cAAe,YAC1F,YAAa,cAAe,eAAgB,mBAAoB,cAAe,qBAAsB,iBACrG,gBAAiB,mBA6OsB3yC,OAAO,CAAC/K,IAAoBA,KAAsBA,OACtFy9C,EAxOgB,I,6BCtB3B,mFAUIwiK,EAA0C,WAC1C,SAASA,EAAyBzmO,EAAQw/D,GACtC//D,KAAKinO,WAAa,GAClBjnO,KAAKknO,cAAgB,GAErBlnO,KAAKmnO,gBAAiB,EACtBnnO,KAAKO,OAASA,EACdP,KAAK+/D,eAAiBA,EACtB//D,KAAKupB,mBAijBT,OA/iBAy9M,EAAyB9qO,UAAUqtB,iBAAmB,WAClDvpB,KAAKqhJ,YAAc,CAAC,CAAEv6H,MAAOC,KAA0BvN,QAASxZ,KAAKonO,mBACjE,CAAEtgN,MAAOC,KAAiCvN,QAASxZ,KAAK+3D,0BACxD,CAAEjxC,MAAOC,KAA8BvN,QAASxZ,KAAKqnO,6BACrD,CAAEvgN,MAAOC,KAA0BvN,QAASxZ,KAAKsnO,uBACjD,CAAExgN,MAAOC,KAA0BvN,QAASxZ,KAAKunO,qBACjD,CAAEzgN,MAAOC,KAAoCvN,QAASxZ,KAAKg4D,8BAC/D+V,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,EAAMrhJ,MAC5DA,KAAKwnO,mBAAqBxnO,KAAKynO,aAAatrO,KAAK6D,MACjDA,KAAKO,OAAOgpB,iBAAiBxC,IAAuB/mB,KAAKwnO,qBAE7DR,EAAyB9qO,UAAUqrO,oBAAsB,WACrDvnO,KAAK0nO,mBAAoB,GAE7BV,EAAyB9qO,UAAUorO,sBAAwB,WACvD,IAAIviN,EAAS/kB,KAAK2nO,oBAAoB3mO,QAAQsC,cAAc,yBACxD8jJ,EAAQriI,EAAOzhB,cAAc,wBAC7BskO,EAAW7iN,EAAOzhB,cAAc,wBACpCtD,KAAK0nO,mBAAoB,EACzB1nO,KAAKO,OAAOsnO,aAAaA,aAAapiF,cACtCzlJ,KAAK8nO,QAAQ9mO,QAAQgzB,MAAMygB,QAAU,GACrCz0C,KAAK+3D,yBAAyB,CAAEu5C,UAAU,IAC1CtxG,KAAK+nO,QAAQ/mO,QAAQgzB,MAAMygB,QAAU,OACrCmzL,EAAS5zM,MAAMygB,QAAU,GACzB2yG,EAAMhlJ,UAAYpC,KAAKO,OAAOwjF,UAAUltC,YAAY,gBACpD,IAAI6T,EAAU1qD,KAAK2nO,oBAAoB3mO,QAAQsC,cAAc,kBAC7DtD,KAAKgoO,wBAA0BhoO,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,0CAC7Eq8B,EAAQ1oD,YAAYhC,KAAKgoO,0BAE7BhB,EAAyB9qO,UAAUmrO,4BAA8B,SAAUpnO,GACvE,GAAID,KAAK8lC,SAAW4oC,IAAuBm1H,SAAU,CACjD,IAAIn5I,EAAU1qD,KAAK2nO,oBAAoB3mO,QAAQsC,cAAc,kBACzDyhB,EAAS/kB,KAAK2nO,oBAAoB3mO,QAAQsC,cAAc,yBACxDskO,EAAW7iN,EAAOzhB,cAAc,wBAChCiP,EAAOwS,EAAOzhB,cAAc,wBAChC,GAAIrD,EAAKgoO,OAAQ,CACbv9K,EAAQo5C,WAAW9vE,MAAMygB,QAAU,OACnCiW,EAAQ1oD,YAAY/B,EAAKg9B,QACzB2qM,EAAS5zM,MAAMygB,QAAU,OACzBz0C,KAAK8nO,QAAQ9mO,QAAQgzB,MAAMygB,QAAU,OACrCz0C,KAAKkoO,eAAelnO,QAAQgzB,MAAMygB,QAAU,OAC5CliC,EAAKnQ,UAAYnC,EAAK8kB,OACtB,IAAIgjN,EAAU/nO,KAAKO,OAAOY,cAAc,UACpC4/D,EAAO/gE,KAAKO,OAAOY,cAAc,OAAQ,CAAEktB,UAAW,uCAC1D05M,EAAQ/lO,YAAY++D,GACpB/gE,KAAK+nO,QAAU,IAAItmG,IAAO,CACtBvrC,SAAU,mBAEdl2F,KAAK+nO,QAAQhhM,SAASghM,GACtBx1N,EAAKqhC,cAAc/c,aAAakxM,EAASx1N,QAEpCvS,KAAK+nO,UAAY/nO,KAAK0nO,oBAC3Bh9K,EAAQo5C,WAAW9vE,MAAMygB,QAAU,GACnChrB,aAAOzpB,KAAK+nO,QAAQ/mO,SACpB4mO,EAAS5zM,MAAMygB,QAAU,GACzBz0C,KAAK8nO,QAAQ9mO,QAAQgzB,MAAMygB,QAAU,GACjCz0C,KAAKgnJ,aACLhnJ,KAAKkoO,eAAelnO,QAAQgzB,MAAMygB,QAAU,IAEhDliC,EAAKnQ,UAAYpC,KAAKmoO,eAAe,CAAEriM,OAAQ4oC,IAAuBm1H,UAAY5jM,EAAKk/D,QAInG6nK,EAAyB9qO,UAAU87D,4BAA8B,SAAU/3D,GACnED,KAAKkoO,iBACLloO,KAAKgnJ,WAAa/mJ,EAAK+mJ,WACvBhnJ,KAAKkoO,eAAelnO,QAAQgzB,MAAMygB,QAAUx0C,EAAK+mJ,WAAa,GAAK,SAG3EggF,EAAyB9qO,UAAU67D,yBAA2B,SAAU93D,GAChED,KAAK8nO,UACL9nO,KAAK8nO,QAAQx2H,SAAWrxG,EAAKqxG,WAGrC01H,EAAyB9qO,UAAUksO,wBAA0B,SAAUjpK,GACnE,IAAIp/D,EAAQC,KACRi6D,EAAOj6D,KAAKO,OAChB,GAAI4+D,EAEA,OADAn/D,KAAKm6J,aAAen6J,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,mCAAoC5U,GAAI0lD,EAAI1jE,IAAM,iBAC7GuE,KAAKm6J,aAGZ,IAAIttD,EAAO5yC,EAAKyK,aAChB1kE,KAAKqoO,gBAAkBpuK,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,YAAa0F,OAAQ,gBACnF,IAAIu0M,EAAgBruK,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,2BACvD63C,EAAe,GACfmoJ,EAASruN,KAAK8lC,SAAW4oC,IAAuB2/I,OAChDxqB,EAAW7jM,KAAK8lC,SAAW4oC,IAAuBm1H,SACtD,GAAIA,EACA,IAAK,IAAIjnM,EAAI,EAAGA,EAAIq9D,EAAKgX,eAAelX,QAAQl9D,OAAQD,IACpDspE,EAAatkE,KAAKq4D,EAAKgX,eAAelX,QAAQn9D,GAAG48D,OAGzD,IAAS58D,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAC7B,MAAKiwG,EAAKjwG,GAAGsgE,UAAa2vC,EAAKjwG,GAAGkrG,cAAgBumH,IAAaxhH,EAAKjwG,GAAGorG,gBAAkB67F,GAAzF,CAGA,IAAI0kC,EAAOtuK,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,uBAClDk6M,EAAK3yM,aAAa,qBAAsBi3E,EAAKjwG,GAAG48D,OAChD+uK,EAAK3yM,aAAa,oBAAqBi3E,EAAKjwG,GAAGnB,KAC/C,IAAIslE,EAAO9G,EAAK94D,cAAc,OAAQ,CAAEiB,UAAWyqG,EAAKjwG,GAAGmgE,WAAY1uC,UAAW,sBAGlF,GAFAk6M,EAAKvmO,YAAY++D,GACjB/gE,KAAKqoO,gBAAgBrmO,YAAYumO,GAC7Bla,EAAQ,CACR,IACI7zM,EADSxa,KAAKwoO,6BAA6B,SAC5BrqO,QAAQ0uG,EAAKjwG,GAAG48D,OAC/Bo4B,EAAS33B,EAAK94D,cAAc,SAAU,CAAEsY,GAAIwgD,EAAKj5D,QAAQyY,GAAKozF,EAAKjwG,GAAG48D,MAAQ,eAC9Ev6D,EAAQqpO,EAAcrmO,YAC1BhD,EAAM+C,YAAY4vF,GAClB22I,EAAKvmO,YAAY/C,GACJ,IAAIwiI,IAAO,CACpBvrC,SAAU,oBAEPnvD,SAAS6qD,GAChBA,EAAOxvF,UAAYoY,GAAS,EAAIxa,KAAKO,OAAO4wE,aAAapX,QAAQv/C,GAAO+kF,UAAY,OACpF3N,EAAOg5C,QAAU,SAAU/pI,GACvBd,EAAM0oO,uBAAuB5nO,EAAEo8B,SAGvC,GAAI4mK,GAAY39H,EAAa/nE,QAAQ0uG,EAAKjwG,GAAG48D,QAAU,EAAG,CACtD,IAAIkvK,EAAUzuK,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,sCACjDs6M,EAAW1uK,EAAK94D,cAAc,OAAQ,CAAEktB,UAAW,mCACvDs6M,EAAS/yM,aAAa,UAAWi3E,EAAKjwG,GAAGuO,MACzCu9N,EAAQ1mO,YAAY2mO,GACpBJ,EAAKvmO,YAAY0mO,IAIzB,OADA9/M,IAAaG,IAAI/oB,KAAKqoO,gBAAiB,QAASroO,KAAK4oO,+BAAgC5oO,MAC9EA,KAAKqoO,iBAGpBrB,EAAyB9qO,UAAUssO,6BAA+B,SAAUpuN,GAExE,IADA,IAAIg1D,EAAS,GACJxyE,EAAI,EAAGA,EAAIoD,KAAKO,OAAO4wE,aAAapX,QAAQl9D,OAAQD,IACzDwyE,EAAOxtE,KAAK5B,KAAKO,OAAO4wE,aAAapX,QAAQn9D,GAAGwd,IAEpD,OAAOg1D,GAEX43J,EAAyB9qO,UAAUusO,uBAAyB,SAAUxrM,GAClE,GAAIA,EAAQ,CACR,IACIu8B,EADYmE,aAAa1gC,EAAQ,sBACf9N,aAAa,sBAC9BnvB,KAAKO,OAAOsoO,oBACb7oO,KAAKknO,cAAgB,GACrBlnO,KAAKinO,WAAa,GAClBjnO,KAAK8oO,eAAgB,EACrB9oO,KAAK+oO,iBAAiB9rM,IAE1B,IAAI+rM,EAAM/rM,EAAOo5D,YACbkJ,EAAoB,SAARypI,EAAiB,YAAsB,cAARA,EAAsB,aAAe,OACpF/rM,EAAO76B,UAAYm9F,EACnBv/F,KAAKipO,cAAczvK,EAAO+lC,KAGlCynI,EAAyB9qO,UAAU6sO,iBAAmB,SAAU9rM,GAE5D,IADA,IAAI06D,EAAU,GAAGt2F,MAAMC,KAAKtB,KAAKqoO,gBAAgBp5M,uBAAuB,oBAC/DryB,EAAI,EAAGA,EAAI+6F,EAAQ96F,OAAQD,IAC5B+6F,EAAQ/6F,KAAOqgC,IACf06D,EAAQ/6F,GAAGwF,UAAY,SAInC4kO,EAAyB9qO,UAAU+sO,cAAgB,SAAUzvK,EAAO+lC,GAChE,IACI/kF,EADSxa,KAAKkpO,yBACC/qO,QAAQq7D,GACvBx5D,KAAKO,OAAOsoO,mBAAqBruN,GAAS,IAC1Cxa,KAAKinO,WAAWntN,OAAOU,EAAO,GAC9Bxa,KAAKknO,cAAcptN,OAAOU,EAAO,IAErCxa,KAAK8oO,eAAgB,EACH,SAAdvpI,IACAv/F,KAAKinO,WAAWrlO,KAAK43D,GACrBx5D,KAAKknO,cAActlO,KAAK,CAAE43D,MAAOA,EAAO+lC,UAAWA,MAG3DynI,EAAyB9qO,UAAUgtO,uBAAyB,WAExD,IADA,IAAI95J,EAAS,GACJxyE,EAAI,EAAGA,EAAIoD,KAAKinO,WAAWpqO,OAAQD,IACxCwyE,EAAOxtE,KAAK5B,KAAKinO,WAAWrqO,IAEhC,OAAOwyE,GAEX43J,EAAyB9qO,UAAU0sO,+BAAiC,SAAU/nO,GAC1E,GAAIb,KAAK8lC,SAAW4oC,IAAuBm1H,SAA3C,CAGA,IAAI5pI,EAAOj6D,KAAKO,OACZ08B,EAASp8B,EAAEo8B,OACf,GAAiC,cAA7Bg9B,EAAKgX,eAAe9lE,KACpB,GAAI8xB,EAAOjH,UAAUzD,SAAS,uBAAyB0K,EAAO2W,cAAc5d,UAAUzD,SAAS,uBAK3F,IAJIinC,EAAQv8B,EAAO9N,aAAa,yBAE5BqqC,EAAQv8B,EAAO2W,cAAczkB,aAAa,uBAE1CqqC,EAAO,CACP,IAAI2F,EAAMlF,EAAKqM,iBAAiB9M,GAChCx5D,KAAKmpO,iBAAkB,EACvBnpO,KAAKopO,qBAAqBjqK,SAG7B,GAAIliC,EAAOjH,UAAUzD,SAAS,gBAAkB0K,EAAO2W,cAAc5d,UAAUzD,SAAS,kBAAmB,CAC5G,IAAI82M,EAAS1rK,aAAa1gC,EAAQ,sBAClC,GAAIosM,EAAQ,CACR,IAAI7vK,EAAQ6vK,EAAOl6M,aAAa,uBAER,UADpBgwC,EAAMlF,EAAKqM,iBAAiB9M,IACxBtoC,OAAO/lB,OAAqBg0D,EAAIjuC,OAAO/lB,MAAqC,SAA7B8uD,EAAKgX,eAAe9lE,QACvEnL,KAAKspO,eAAgB,GAEzBtpO,KAAKO,OAAOsnO,aAAaA,aAAa0B,kBAAkBpqK,GACxDn/D,KAAKwpO,yBAAyBvsM,OAW9C+pM,EAAyB9qO,UAAUktO,qBAAuB,SAAUjqK,GAChE,GAAIn/D,KAAKmnO,gBAAkBnnO,KAAK8lC,SAAW4oC,IAAuBm1H,WAAa7jM,KAAKmpO,gBAChFnpO,KAAKypO,+BAEJ,CAOD,GANAzpO,KAAK0pO,YAAcvqK,EACnBn/D,KAAK2pO,uBAAuBxqK,GACxBn/D,KAAKO,OAAO2sE,kBAAoB/N,IAChCn/D,KAAKO,OAAOsnO,aAAa+B,eAAezqK,GACxCn/D,KAAKO,OAAOsnO,aAAaA,aAAat/E,WAAWvoJ,KAAKO,OAAOsnO,aAAagC,cAAc1qK,OAAKnjE,KAE7FgE,KAAK8lC,SAAW4oC,IAAuB2/I,OAAQ,CAC/C,IAAIpuN,EAAO,CACP8iB,QAAQ,EAAOy9C,UAAWxgE,KAAK2nO,oBAAqBvtI,YAAa,8BAGrE,GADAp6F,KAAKO,OAAOwpB,QAAQhD,IAAiC9mB,GACjDA,EAAK8iB,OACL,OAGR/iB,KAAK2nO,oBAAoBnqG,MAAK,GAC9Bx9H,KAAK2nO,oBAAoB3mO,QAAQgzB,MAAMm0H,UAAY,OACnDnoJ,KAAK8pO,oBAAoB9pO,KAAK2nO,oBAAoB3mO,WAG1DgmO,EAAyB9qO,UAAU4tO,oBAAsB,SAAUC,GAC/D,IAAIzpO,EAAQypO,EAAUzmO,cAAc,aACpC,GAAIhD,EAAO,CACP,IAAI0pO,EAAQD,EAAUzmO,cAAc,yBAAyB++B,wBAAwBsN,OACrFrvC,EAAM0zB,MAAMgP,IAAMgnM,EAAQ,OAGlChD,EAAyB9qO,UAAUutO,yBAA2B,SAAUtqK,GACpE,IAAIlF,EAAOj6D,KAAKO,OAChB,GAAIP,KAAK8lC,SAAW4oC,IAAuBm1H,UAAyC,cAA7B5pI,EAAKgX,eAAe9lE,KAA3E,CAGA,IAAI8+N,EAAWjqO,KAAKO,OAAOY,cAAc,MAAO,CAC5CsY,GAAIwgD,EAAKj5D,QAAQyY,GAAK,eAAgB4U,UAAW,0CAErDruB,KAAKO,OAAOS,QAAQgB,YAAYioO,GAChCjqO,KAAKkqO,gBAAkBlqO,KAAKmqO,iBAAiBhrK,GAAK,GAClD,IAAIl/D,EAAO,CACP8iB,QAAQ,EAAOy9C,UAAWxgE,KAAKkqO,gBAAiB9vI,YAAa,gCAEjEp6F,KAAKO,OAAOwpB,QAAQhD,IAAiC9mB,GACjDA,EAAK8iB,SAGT/iB,KAAKkqO,gBAAgBnjM,SAASkjM,GAC9BjqO,KAAKkqO,gBAAgB1sG,MAAK,GAC1Bx9H,KAAKkqO,gBAAgBlpO,QAAQgzB,MAAMm0H,UAAY,UAEnD6+E,EAAyB9qO,UAAUiuO,iBAAmB,SAAUhrK,EAAKq9F,EAAgB/iJ,GACjF,IAAInN,EAAU,IAAIo7I,IAAO,CACrB+jD,SAAS,EACT2+B,eAAe,EACfC,eAAe,EACfttN,OAAQ/c,KAAKO,OAAOwc,OACpBkgB,OAAQj9B,KAAKO,OAAO+pO,kBAAoBtqO,KAAKO,OAAO+pO,kBAAoB9pO,SAASgiC,KACjF06B,SAAS,EACTv2B,UAAW3mC,KAAKO,OAAOomC,UACvB+jB,QAAS1qD,KAAKooO,wBAAwBjpK,GACtCp9D,KAAM/B,KAAKgoJ,WAAW7rJ,KAAK6D,MAC3B0rD,QAAS1rD,KAAK+nJ,cAAc5rJ,KAAK6D,MACjCqC,MAAOrC,KAAKuqO,kBAAkBpuO,KAAK6D,MACnC0vC,MAAO,OACPC,OAAQ,OACRg4G,kBAAmB,CAAEC,OAAQ,UAajC,OAVAt7I,EAAwB,kBAAI,EACxBkwJ,GACAlwJ,EAAQyY,OAAS/kB,KAAKwqO,uBAAuBrrK,OAAKnjE,GAAW,GAC7DsQ,EAAQ4pF,SAAW,mBAGnB5pF,EAAQyY,OAAS/kB,KAAKwqO,uBAAuBrrK,GAC7C7yD,EAAQ4pF,SAA4C,aAAjCl2F,KAAKO,OAAO2jG,kBAAmClkG,KAAK8lC,SAAW4oC,IAAuBm1H,SACnG,QAAUpqL,EAAK,2BAA6B,QAAUA,GAEzDnN,GAEX06N,EAAyB9qO,UAAUytO,uBAAyB,SAAUxqK,GAClE,IAAIlF,EAAOj6D,KAAKO,OAChB,GAAIP,KAAK8lC,SAAW4oC,IAAuBm1H,UAAyC,cAA7B5pI,EAAKgX,eAAe9lE,KAA3E,CAGA,IAAIsO,EAAKzZ,KAAK8lC,SAAW4oC,IAAuBm1H,SAAW,SAAW,OAClEomC,EAAWjqO,KAAKO,OAAOY,cAAc,MAAO,CAC5CsY,GAAIwgD,EAAKj5D,QAAQyY,GAAK,aAAeA,EAAI4U,UAAW,QAAU5U,EAAK,4BAEvEzZ,KAAKO,OAAOS,QAAQgB,YAAYioO,GAChCjqO,KAAK2nO,oBAAsB3nO,KAAKmqO,iBAAiBhrK,GAAK,EAAO1lD,GAC7DzZ,KAAK2nO,oBAAoB5gM,SAASkjM,KAEtCjD,EAAyB9qO,UAAU6rJ,cAAgB,WAC/C96E,YAAgBjtE,KAAKO,SAEzBymO,EAAyB9qO,UAAU8rJ,WAAa,WAC5C,GAAIhoJ,KAAK8lC,SAAW4oC,IAAuB2/I,QAAUruN,KAAKO,OAAOsoO,kBAC7D,IAAK,IAAIjsO,EAAI,EAAGA,EAAIoD,KAAKO,OAAO4wE,aAAapX,QAAQl9D,OAAQD,IAAK,CAC9DoD,KAAKinO,WAAWrlO,KAAK5B,KAAKO,OAAO4wE,aAAapX,QAAQn9D,GAAG48D,OACzD,IAAIixK,EAAYzqO,KAAKO,OAAO4wE,aAAapX,QAAQn9D,GAAG48D,MAChDgvC,EAAgBxoG,KAAKO,OAAO4wE,aAAapX,QAAQn9D,GAAG2iG,UACxDv/F,KAAKknO,cAActlO,KAAK,CAAE43D,MAAOixK,EAAWlrI,UAAWiJ,MAInEw+H,EAAyB9qO,UAAUquO,kBAAoB,SAAUtqO,GAC7DD,KAAKspO,cAAgBrpO,EAAKe,UAAYf,EAAKe,QAAQsC,cAAc,0BAC1DrD,EAAKe,QAAQg1B,UAAUzD,SAAS,kBACnCvyB,KAAK8lC,SAAW4oC,IAAuBm1H,SACnC5jM,EAAKe,QAAQg1B,UAAUzD,SAAS,kBAChCvyB,KAAKO,OAAOsnO,aAAaA,aAAa6C,sBAAsB1qO,KAAK0nO,mBAE5DznO,EAAKe,QAAQg1B,UAAUzD,SAAS,sBACrCvyB,KAAK2qO,oBAGJ3qO,KAAK8lC,SAAW4oC,IAAuB2/I,QAC5CruN,KAAKonO,oBAETpnO,KAAKO,OAAOsZ,IAAIkN,KAAwB/mB,KAAK4qO,aAEjD5D,EAAyB9qO,UAAU2uO,WAAa,WAC5C,GAAK7qO,KAAK8oO,cAAV,CAII9oO,KAAKknO,cAAcrqO,QACnBmD,KAAKO,OAAO24B,cAAc,CAAEi4C,aAAc,CAAEpX,QAAS,MAAQ,GAEjE,IAAK,IAAIn9D,EAAI,EAAGA,EAAIoD,KAAKknO,cAAcrqO,OAAQD,IAC3CoD,KAAKO,OAAOsqO,WAAW7qO,KAAKknO,cAActqO,GAAG48D,MAAOx5D,KAAKknO,cAActqO,GAAG2iG,UAAWv/F,KAAKO,OAAOsoO,mBAEhG7oO,KAAKknO,cAAcrqO,QACpBmD,KAAKO,OAAOuqO,eAEhB9qO,KAAKonO,yBAZDpnO,KAAKonO,qBAcbJ,EAAyB9qO,UAAUisO,eAAiB,SAAUloO,EAAMk/D,GAChE,IACIioF,EADAntF,EAAOj6D,KAAKO,OAchB,OAZIP,KAAK8lC,SAAW4oC,IAAuB2zB,OACvC+kD,EAAQntF,EAAK8pB,UAAUltC,YAAY,iBAAmB52C,EAAK8qO,gBAAgB,GAEtE/qO,KAAK8lC,SAAW4oC,IAAuBkwE,MAC5CwI,EAAQntF,EAAK8pB,UAAUltC,YAAY,gBAE9B72C,KAAK8lC,SAAW4oC,IAAuBm1H,SAC5Cz8C,EAAQjoF,EAAMA,EAAIpC,YAAcoC,EAAI3F,MAAQS,EAAK8pB,UAAUltC,YAAY,gBAElE72C,KAAK8lC,SAAW4oC,IAAuB2/I,SAC5CjnE,EAAQntF,EAAK8pB,UAAUltC,YAAY,SAEhCuwG,GAEX4/E,EAAyB9qO,UAAU8uO,cAAgB,SAAUllM,GACzD,IAAI1rB,EAOJ,OANI0rB,IAAW4oC,IAAuBkwE,OAAS94G,IAAW4oC,IAAuB2zB,OAC7EjoF,EAAO,2BAEF0rB,IAAW4oC,IAAuBm1H,WACvCzpL,EAAO,oCAEJA,GAEX4sN,EAAyB9qO,UAAU+uO,cAAgB,SAAUnlM,GACzD,IAAIvzB,EAOJ,OANIuzB,IAAW4oC,IAAuBkwE,OAAS94G,IAAW4oC,IAAuB2zB,OAC7E9vF,EAAO,OAEFuzB,IAAW4oC,IAAuBm1H,UAAY7jM,KAAK8lC,SAAW4oC,IAAuB2/I,SAC1F97M,EAAO,YAEJA,GAUXy0N,EAAyB9qO,UAAUsuO,uBAAyB,SAAUrrK,EAAKl/D,EAAMu8J,GAC7E,IAAIz8J,EAAQC,KACRi6D,EAAOj6D,KAAKO,OAChB05D,EAAK3gD,GAAGyN,KAAwB/mB,KAAK4qO,WAAY5qO,MACjD,IAAIyZ,EAAKwgD,EAAKj5D,QAAQyY,GAAKzZ,KAAKgrO,cAAchrO,KAAK8lC,QAC/C/gB,EAASk1C,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,yBAChD68M,EAAWjxK,EAAK94D,cAAc,MAAO,CAAEktB,UAAW,sBAAuB5U,GAAIA,IACjFyxN,EAAS9oO,UAAYpC,KAAKmoO,eAAeloO,EAAMk/D,GAC/Cp6C,EAAO/iB,YAAYkpO,GACnB,IAAIpD,EAAU7tK,EAAK94D,cAAc,UAC5Bq7J,IACDx8J,KAAK8nO,QAAU,IAAIrmG,IAAO,CACtBvrC,SAAU,qCAEd4xI,EAAQ1lO,UAAY63D,EAAK8pB,UAAUltC,YAAY72C,KAAKirO,cAAcjrO,KAAK8lC,SACvE9lC,KAAK8nO,QAAQ/gM,SAAS+gM,GAEtBA,EAAQl9F,QAAU,SAAU/pI,GACxBd,EAAMorO,6BAGd,IAAI9c,EAASruN,KAAK8lC,SAAW4oC,IAAuB2/I,OAChDxqB,EAAW7jM,KAAK8lC,SAAW4oC,IAAuBm1H,SACtD,GAAIA,GAAYwqB,EAAQ,CACpB,IAAI+c,EAAO/c,EAAS,OAAS,SACzBgd,EAAWpxK,EAAK94D,cAAc,UAIlC,GAHAnB,KAAKkoO,eAAiB,IAAIzmG,IAAO,CAC7BvrC,SAAU,0BAA4Bk1I,EAAO,eAE7CvnC,EAAU,CACV,IAAI9iI,EAAO9G,EAAK94D,cAAc,OAAQ,CAAEktB,UAAW,2CACnDg9M,EAASrpO,YAAY++D,QAGrBsqK,EAASjpO,UAAY63D,EAAK8pB,UAAUltC,YAAY,SAEpD9xB,EAAO/iB,YAAYqpO,GACnBrrO,KAAKkoO,eAAenhM,SAASskM,GAC7BA,EAASzgG,QAAU,SAAU/pI,GACpB88D,aAAa98D,EAAEo8B,OAAQ,mBACxBl9B,EAAMQ,OAAOsnO,aAAayD,iBAC1BvrO,EAAMypO,4BAGF3lC,EACA9jM,EAAMwrO,eAGNxrO,EAAMgpO,mBACNhpO,EAAMknO,WAAa,GACnBlnO,EAAMmnO,cAAgB,GACtBnnO,EAAM+oO,eAAgB,IAIlC/jN,EAAO/iB,YAAYqpO,GAKvB,OAHK7uE,GACDz3I,EAAO/iB,YAAY8lO,GAEhB/iN,GAEXiiN,EAAyB9qO,UAAUqvO,YAAc,WAC7CvrO,KAAKO,OAAOsnO,aAAaA,aAAa0B,kBAAkBvpO,KAAK0pO,aAC7D1pO,KAAKO,OAAOsnO,aAAaA,aAAa6C,yBAE1C1D,EAAyB9qO,UAAUivO,yBAA2B,WACtDnrO,KAAK8lC,SAAW4oC,IAAuB2zB,QAAUriG,KAAK8lC,SAAW4oC,IAAuBkwE,MACxF5+I,KAAKO,OAAOkwJ,UAEPzwJ,KAAK8lC,SAAW4oC,IAAuBm1H,SAC5C7jM,KAAKO,OAAOsnO,aAAaA,aAAa2D,kBAAkB,CAAErsK,IAAKn/D,KAAK0pO,YAAaltE,eAAgBx8J,KAAK0nO,oBAEjG1nO,KAAK8lC,SAAW4oC,IAAuB2/I,QAC5CruN,KAAK6qO,cAGb7D,EAAyB9qO,UAAUkrO,kBAAoB,WACnD,GAAIpnO,KAAK0nO,kBAAT,CACI,IAAI+D,EAAgBzrO,KAAK2nO,oBAAoB3mO,QAAQsC,cAAc,oBACnEmmB,aAAOgiN,QAGXzrO,KAAKmpO,iBAAkB,EACvBnpO,KAAK0nO,mBAAoB,EACzB1nO,KAAK0rO,6BAET1E,EAAyB9qO,UAAUwvO,0BAA4B,WAC3D,GAAK1rO,KAAK2nO,oBAAV,CAGA,IAAItkO,EAAO7C,SAASuuB,eAAe/uB,KAAK2nO,oBAAoB3mO,QAAQyY,IAChEzZ,KAAK2nO,sBAAwB3nO,KAAK2nO,oBAAoBxuM,aAAe91B,IACrErD,KAAK2nO,oBAAoBxsN,UACzBsO,aAAOpmB,IAEXrD,KAAK2qO,oBACD3qO,KAAK8lC,SAAW4oC,IAAuB2/I,SACvCruN,KAAKknO,cAAgB,GACrBlnO,KAAKinO,WAAa,GAClBjnO,KAAK8oO,eAAgB,KAG7B9B,EAAyB9qO,UAAUyuO,kBAAoB,WACnD,IAAK3qO,KAAKspO,eAAiBtpO,KAAKkqO,gBAAiB,CAC7C,IAAIyB,EAAYnrO,SAASuuB,eAAe/uB,KAAKkqO,gBAAgBlpO,QAAQyY,IACjEzZ,KAAKkqO,kBAAoBlqO,KAAKkqO,gBAAgB/wM,aAAewyM,IAC7D3rO,KAAKkqO,gBAAgB/uN,UACrBsO,aAAOkiN,IAGf3rO,KAAKmnO,gBAAiB,EACtBnnO,KAAKspO,eAAgB,GAEzBtC,EAAyB9qO,UAAUstO,yBAA2B,SAAUvsM,GACpE,GAAIA,EACIA,EAAO2W,cAAc5d,UAAUzD,SAAS,kBACxC9I,aAAOwT,EAAO2W,eAGdnqB,aAAOwT,QAKX,IADA,IAAI38B,EAAQN,KAAKqoO,gBAAgBv3M,SACxBl0B,EAAI,EAAGA,EAAI0D,EAAMzD,OAAQD,KAC9BqgC,EAAS38B,EAAM1D,GAAG0G,cAAc,sBAE5BmmB,aAAOwT,GACPrgC,MAKhBoqO,EAAyB9qO,UAAU0uO,WAAa,SAAU/pO,GACpC,KAAdA,EAAE8zC,UAAoB30C,KAAK8lC,SAAW4oC,IAAuBm1H,UAC1DhjM,EAAEo8B,OAAOjH,UAAUzD,SAAS,kBAC3BvyB,KAAK8lC,SAAW4oC,IAAuB2zB,QAAUriG,KAAK8lC,SAAW4oC,IAAuBkwE,QAC5F5+I,KAAKmrO,4BAGbnE,EAAyB9qO,UAAUurO,aAAe,SAAUxnO,GAC/B,SAArBA,EAAKm6F,aAA+C,WAArBn6F,EAAKm6F,aACpCp6F,KAAKO,OAAOsZ,IAAIkN,KAAwB/mB,KAAK4qO,aAGrD5D,EAAyB9qO,UAAUytB,oBAAsB,WACjD3pB,KAAKqoO,iBACLz/M,IAAaa,OAAOzpB,KAAKqoO,gBAAiB,QAASroO,KAAK4oO,gCAE5D76J,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,EAAMrhJ,MAC5DA,KAAKO,OAAOopB,oBAAoB5C,IAAuB/mB,KAAKwnO,qBAEzDR,EAzjBmC,I,6BCV9C,2DAQIz2H,EAAiC,WACjC,SAASA,EAAgBxwC,EAAgBx/D,GACrCP,KAAK+/D,eAAiBA,EACtB//D,KAAKO,OAASA,EAgHlB,OA9GAgwG,EAAgBr0G,UAAUwzB,OAAS,SAAU+/E,EAAU7kD,EAAKhuD,EAAGkxE,GAC3D,IAMI89J,EALA77H,EADmB/vG,KAAK+/D,eAAeE,WAAW,uBAClB+vC,gBAAgBplD,EAAI0V,MAAM1jE,GAAG4nG,UAAYj2B,IAAS0/B,MAClFj1B,EAAUpuB,EAAI0V,MAAM1jE,GAAG0zG,SAAW1lD,EAAI0V,MAAM1jE,GAAG0zG,SAC9Cb,EAASz2B,QAAUp8E,GAAMguD,EAAI0V,MAAMzjE,OAAS4yG,EAASz2B,QAAUpuB,EAAI0V,MAAMzjE,OAASD,EACnFw8E,EAAUq2B,EAASr2B,QACnBlc,EAAU,EAEd,GAAItS,EAAIpwC,MAAQ,EAAG,CACf,IAAI8lD,EAAQtgE,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAS,IAClDmD,KAAKO,OAAOwkE,gBAAgBna,EAAIpwC,MAAQ,GAAGigD,UAAYz6D,KAAKO,OAAOwkE,gBAAgBna,EAAIpwC,OAAO8lD,MAC/FtgE,KAAKO,OAAOwkE,gBAAgBna,EAAIpwC,MAAQ,GAAG8lD,MAC3CurK,EAAejhL,EAAI0V,MAAM1jE,GAE7BgvO,EAActrK,EAAMpvC,QAAO,SAAU6uD,GAAQ,OAAOA,EAAKtmB,OAAOh+D,MAAQowO,EAAapyK,OAAY,OAAM,GAI3G,IAFA,IAAIqyK,EAAaF,GAAeA,EAAYG,aAAe,GAAKH,EAAYv7H,aAAe,EACvFu7H,EAAYG,aAAe/yJ,EACtB7wE,EAAIvL,EAAI,EAAGuL,EAAIvL,EAAIkvO,GAAc3jO,EAAIyiD,EAAI0V,MAAMzjE,OAAQsL,KAC/B,IAAzByiD,EAAI0V,MAAMn4D,GAAG+0D,QACbA,IAGAtS,EAAI0V,MAAMn4D,GAAGqoG,WAAY,EAGjC,GAAItzC,EAAU,EAAG,CACb,IAAS/0D,EAAIvL,EAAIo8E,EAAS7wE,EAAIvL,EAAIo8E,EAAU9b,GAAW/0D,EAAIyiD,EAAI0V,MAAMzjE,OAAQsL,IACzEyiD,EAAI0V,MAAMn4D,GAAGqoG,WAAY,EAEzB5zG,EAAIo8E,EAAU9b,GAAWtS,EAAI0V,MAAMzjE,SACnCm8E,GAAYp8E,EAAIo8E,EAAU9b,EAAWtS,EAAI0V,MAAMzjE,QA2BvD,OAxBI+tD,EAAI0V,MAAM1jE,GAAG0zG,WACb1lD,EAAI/vC,KAAK40F,EAASh2C,OAAOD,OAAS5O,EAAI0V,MAAM1jE,GAAGovO,SAC/Cl+J,EAAKiiC,EAAargF,OAAOk7B,EAAI0V,MAAM1jE,GAAIguD,EAAI/vC,KAAM,CAAE,MAAUzd,YAAkBwtD,EAAIpwC,OAAgC,GAAvBowC,EAAIpwC,MAAMrN,cAEtG6rE,EAAU,GACVzlD,YAAWu6C,EAAI,CAAE,QAAWkL,EAAQ7rE,WAAY,eAAgB6rE,EAAQ7rE,aAExEisE,EAAU,IACV7lD,YAAWu6C,EAAI,CAAE,QAAWsL,EAAQjsE,WAAY,eAAgBisE,EAAQjsE,aACxEy9C,EAAI0V,MAAM1jE,GAAGszG,cAAe,EAC5BtlD,EAAI0V,MAAM1jE,GAAGyzG,aAAep6D,OAAOmjC,GAC/BJ,EAAU,IACVpuB,EAAI0V,MAAM1jE,GAAGmvO,aAAe91L,OAAO+iC,KAGvCpuB,EAAIpwC,MAAQ,GAAMoxN,EAAYv7H,aAAe,IAC7CzlD,EAAI0V,MAAM1jE,GAAG4zG,WAAY,EACzB5lD,EAAI0V,MAAM1jE,GAAGyzG,aAAep6D,OAAO21L,EAAYv7H,aAAe,GAC9DzlD,EAAI0V,MAAM1jE,GAAGmvO,aAAeH,EAAYv7H,aAAe,EAAIu7H,EAAYG,aAAe,IAEtF/rO,KAAKO,OAAO6lE,4BAA+Bxb,EAAI0V,MAAM1jE,GAAG0zG,UACvDtwG,KAAKisO,YAAYx8H,EAASh2C,OAAOD,MAAOi2C,EAAS50F,KAAK40F,EAASh2C,OAAOD,SACvEx5D,KAAKksO,iBAAiBz8H,EAASh2C,OAAOD,MAAOi2C,EAAS50F,KAAK40F,EAASh2C,OAAOD,OAAQi2C,EAASz2B,SAEzFlL,GAEXyiC,EAAgBr0G,UAAUgwO,iBAAmB,SAAUC,EAAOtxN,EAAMkmD,GAChE/gE,KAAKosO,cAAcpsO,KAAKqsO,WAAWF,EAAOtxN,GAAOkmD,IAErDwvC,EAAgBr0G,UAAUmwO,WAAa,SAAUC,EAAOzxN,GACpD,OAAOyxN,EAAQ,KAAOzxN,EAAK1N,YAE/BojG,EAAgBr0G,UAAUqwO,SAAW,SAAUvvO,GAC3C,OAAOA,EAAIL,MAAM,OAErB4zG,EAAgBr0G,UAAU+vO,YAAc,SAAUK,EAAOzxN,GAErD,OAAO7a,KAAKwsO,gBAAgBhtO,eAAeQ,KAAKqsO,WAAWC,EAAOzxN,KAEtE01F,EAAgBr0G,UAAUswO,cAAgB,WACtC,OAAOxsO,KAAKO,OAAOksO,YAEvBl8H,EAAgBr0G,UAAUkwO,cAAgB,SAAUpvO,EAAK+jE,GACrD/gE,KAAKO,OAAOksO,WAAWzvO,GAAO+jE,GAElCwvC,EAAgBr0G,UAAUkzI,mBAAqB,SAAUtmE,GAErD,IADA,IAAI4jK,EAAS1sO,KAAKwsO,gBACTxuO,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKyvO,GAAS1uO,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIhB,EAAMuG,EAAGvF,GACTxB,EAAQkwO,EAAO1vO,GACfW,EAAQqC,KAAKusO,SAASvvO,GACtB63E,EAAc70E,KAAK2sO,uBAAuBhvO,EAAM,IAChDivO,EAAiB5sO,KAAKO,OAAOgnI,yBAC7BxmE,EAAOvkE,GAASowO,EAAe,GAAK/3J,GACxC,GAAIA,EAAc+3J,EAAe,IAAM7rK,EAAO,EAC1C,IAAK,IAAIhsC,EAAK,EAAG+vC,EAASgE,EAAM/zC,EAAK+vC,EAAOjoE,OAAQk4B,IAAM,CACtD,IAAI61B,EAAMka,EAAO/vC,GACjB,GAAI61B,EAAI/vC,KAAKld,EAAM,IAAIwP,aAAexP,EAAM,GAAGwP,WAAY,CACvDy9C,EAAI0V,MAAM,GAAGgwC,SAAWvvC,EACxBnW,EAAI0V,MAAM,GAAG0rK,SAAWruO,EAAM,GAC9B,QAKhB,OAAOmrE,GAEXynC,EAAgBr0G,UAAUywO,uBAAyB,SAAUnzK,GAOzD,OANYiC,aAAqBz7D,KAAKO,OAAOkoE,qBAAqB,SAAUjtB,EAAMhhC,GAC9E,GAAIghC,EAAKge,QAAUA,EACf,OAAOh/C,KAGZ,IAGA+1F,EAnH0B,I,6BCRrC,qGAYIs8H,EAA+B,WAM/B,SAASA,EAActsO,GACnBP,KAAK8sO,SAAW,GAChB9sO,KAAKO,OAASA,EAyalB,OAlaAssO,EAAc3wO,UAAUwzB,OAAS,SAAUzvB,EAAM2zC,GAE7C5zC,KAAK4zC,cAAgBA,EACrB5zC,KAAK+sO,gBAAgB9sO,IAEzB4sO,EAAc3wO,UAAU6wO,gBAAkB,SAAU9sO,GAChD,IAAIF,EAAQC,KACRw2E,EAAYv2E,EAAKg9B,OAAO2W,cAAcn6B,GAC1CzZ,KAAKgtO,cAAgB/sO,EAAKg9B,OAAO2W,cACjC,IAAIq5L,EAAuE,WAAvDjtO,KAAKO,OAAOw2E,aAAaF,UAAUL,GAAWrrE,KAAoB,EAAI,EAC1FnL,KAAKktO,aAAeltO,KAAKmtO,YAAYF,GAAe5rO,QACpD,IAAIyhB,EAAY,CACZC,QAAQ,EAAOyzD,UAAWA,EAAW42J,eAAgBptO,KAAKktO,aAAcG,iBAAkB,IAEhD,mBAAhCrtO,KAAKO,OAAOs6B,iBAAwC76B,KAAKO,OAAO+sO,YAC1EttO,KAAKO,OAAO2vE,gBAAkBlwE,KAAKO,QAC/BwpB,QAAQhD,IAA0BjE,GAAW,SAAUyqN,GAC3D,IAAKA,EAAaxqN,OAAQ,CACtBhjB,EAAMmtO,aAAeK,EAAaH,eAClCrtO,EAAMytO,kBAAkBP,EAAeM,EAAaF,kBACpDttO,EAAM0tO,YAAcxtO,EAAKg9B,OACzB,IAAItnB,EAAM5V,EAAM0tO,YAAYprM,wBACxBtiC,EAAMQ,OAAOomC,UACb5mC,EAAM+sO,SAASG,GAAelrO,KAAK4T,EAAIqtB,KAAOlhC,OAAOm6H,SAAWz7H,SAASqiC,gBAAgBD,WAAYjtB,EAAImtB,KAAO,KAGhH/iC,EAAM+sO,SAASG,GAAelrO,KAAK4T,EAAIqtB,KAAOlhC,OAAOm6H,SAAWz7H,SAASqiC,gBAAgBD,WAAYjtB,EAAImtB,WAKzH+pM,EAAc3wO,UAAUsxO,kBAAoB,SAAUP,EAAeI,GACjE,IAAIttO,EAAQC,KACR0tO,EAAY,GAChBA,EAAUT,GAAiB,GACvBjtO,KAAK8sO,SAASG,KAAmBjtO,KAAK8sO,SAASG,GAAe9zM,aAC9Dn5B,KAAK8sO,SAASG,GAAe9xN,UAGjC,IADA,IAuBIwyN,EAvBAC,EAAkB,GACbhxO,EAAI,EAAGA,EAAIoD,KAAKktO,aAAarwO,OAAQD,IAAK,CAC/C,IAAII,EAAMgD,KAAKktO,aAAatwO,GACxBqwO,EACK,CAAC,QAAS,iBAAiB9uO,QAAQnB,IAAQ,GAAO4wO,EAAgBzvO,QAAQnB,GAAO,IAClF0wO,EAAUT,GAAerrO,KAAK,CAAE2Q,KAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAY75C,GAAMyc,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,cAAgBzc,IAC3H4wO,EAAgBhsO,KAAK5E,IAIpBgD,KAAKO,OAAOstO,oBAAoB1vO,QAAQnB,IAAQ,GAAO4wO,EAAgBzvO,QAAQnB,GAAO,IACvF0wO,EAAUT,GAAerrO,KAAK,CAAE2Q,KAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAY75C,GAAMyc,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,IAAMzc,IACjH4wO,EAAgBhsO,KAAK5E,IAI7B0wO,EAAUT,GAAepwO,OAASwwO,IAClCK,EAAUT,GAAenzN,OAAOuzN,GAChCK,EAAUT,GAAerrO,KAAK,CAC1B2Q,KAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAY,cACxCp9B,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAApBzZ,iBAIZ2tO,EAAc,CACV55J,MAAO25J,EAAUT,GACjBtmM,UAAW3mC,KAAKO,OAAOomC,UACvB5pB,OAAQ/c,KAAKO,OAAOwc,OACpB+wN,WAAY9tO,KAAK+tO,eAAe5xO,KAAK6D,KAAMitO,GAC3Ce,QAAS,SAAU/tO,GACfm3B,aAAO,IAAMr3B,EAAMitO,cAAcvzN,GAAI1Z,EAAM6zC,eAAetxC,SAE9D80B,OAAQp3B,KAAKiuO,0BAA0B9xO,KAAK6D,OAEhD,IAAIkuO,EAAc1tO,SAASuuB,eAAe/uB,KAAKO,OAAOS,QAAQyY,IAAMwzN,EAAgB,8BAAgC,0BAChG,OAAhBiB,EACAA,EAAY9rO,UAAY,GAGxB8rO,EAAc/sO,YAAc,KAAM,CAC9BsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,IAAMwzN,EAAgB,8BAAgC,2BAGtFjtO,KAAKO,OAAOS,QAAQgB,YAAYksO,GAChCluO,KAAK8sO,SAASG,GAAiB,IAAIkB,IAAKR,GACxC3tO,KAAK8sO,SAASG,GAAe/+M,kBAAmB,EAChDluB,KAAK8sO,SAASG,GAAelmM,SAASmnM,IAE1CrB,EAAc3wO,UAAUixO,YAAc,SAAUF,GAE5C,IADA,IAAIS,EAAY,GACP9wO,EAAI,EAAGA,EAAIoD,KAAKO,OAAO6sO,eAAevwO,OAAQD,IAAK,CACxD,IAAII,EAAMgD,KAAKO,OAAO6sO,eAAexwO,GACjCqwO,EACK,CAAC,QAAS,iBAAiB9uO,QAAQnB,IAAQ,IAAmC,IAA5B0wO,EAAUvvO,QAAQnB,IACrE0wO,EAAU9rO,KAAK5E,GAIdgD,KAAKO,OAAOstO,oBAAoB1vO,QAAQnB,IAAQ,IAAmC,IAA5B0wO,EAAUvvO,QAAQnB,IAC1E0wO,EAAU9rO,KAAK5E,GAI3B,OAAO0wO,GAEXb,EAAc3wO,UAAU6xO,eAAiB,SAAU9zH,EAAUh6G,GACzDA,EAAKe,QAAQgzB,MAAM0mG,QAAU16H,KAAK8sO,SAAS7yH,GAAUj5G,QAAQgzB,MAAM0mG,OAAS,GAAGvtH,WAC/ElN,EAAKe,QAAQgzB,MAAMygB,QAAU,UAIjCo4L,EAAc3wO,UAAUkyO,0BAA4B,SAAUnxM,EAAQ2W,EAAezoC,GACjF,IAAIpL,EAAQC,KACZA,KAAK4zC,cAAgBA,EACrB,IAAIy6L,EAAcltO,YAAc,MAAO,CACnCsY,GAAIzZ,KAAK4zC,cAAcn6B,GAAK,eAC5B4U,UAAW,yBACX0E,MAAO,CAAE,aAAckK,EAAOxjB,MAElCzZ,KAAK4zC,cAAc5xC,YAAYqsO,GAC/BruO,KAAKquO,YAAc,IAAI3mF,IAAO,CAC1BC,kBAAmB,CAAEC,OAAQ,QAC7B0mF,eAAe,EACfvpN,OAAQ/kB,KAAKO,OAAOwjF,UAAUltC,YAAY,sBAC1C6T,QAAS1qD,KAAKuuO,mBAAmBtxM,EAAQ9xB,GACzCsgM,SAAS,EACTvuI,SAAS,EACTktK,eAAe,EACfzjM,UAAW3mC,KAAKO,OAAOomC,UACvB5pB,OAAQ/c,KAAKO,OAAOwc,OACpB2yB,MAAO,OACPC,OAAQ,OACR5B,SAAU,CAAEuuC,EAAG,SAAUC,EAAG,UAC5Bob,QAAS,CACL,CACIlnC,MAAOzwD,KAAKwuO,oBAAoBryO,KAAK6D,MACrC8nJ,YAAa,CAAE5xD,SAAUjsB,KAAqBvf,QAAS1qD,KAAKO,OAAOwjF,UAAUltC,YAAY,MAAO8qF,WAAW,IAE/G,CACIlxE,MAAO,WACH1wD,EAAMsuO,YAAY9yG,QAEtBusB,YAAa,CAAE5xD,SAAUjsB,IAAyBvf,QAAS1qD,KAAKO,OAAOwjF,UAAUltC,YAAY,aAGrGwzL,cAAgD,mBAAhCrqO,KAAKO,OAAOs6B,iBAAmE,UAA3B76B,KAAKO,OAAOkuO,WAChFxxM,OAAQj9B,KAAK4zC,cACb86L,aAAc,WACV3uO,EAAM4uO,gBAEVtsO,MAAOrC,KAAK2uO,aAAaxyO,KAAK6D,QAElCA,KAAKquO,YAAYngN,kBAAmB,EACpCluB,KAAKquO,YAAYtnM,SAASsnM,IAI9BxB,EAAc3wO,UAAUqyO,mBAAqB,SAAUvB,EAAe7hO,GAClE,IAAIyjO,EAAe5B,EAAc79M,aAAa,gBAC1C0/M,EAAe1jO,GAAiB,eAATA,EAAyBA,EAAO6hO,EAAc79M,aAAa,aAClF+jD,EAAY85J,EAAc79M,aAAa,kBACvCgkD,EAAW65J,EAAc79M,aAAa,iBAC1C0/M,EAA0C,cAA3BA,EAAY1hO,WAA6B0hO,EAAc,MAItE,IAHA,IAAIC,EAAoB,GACpBC,EAAe/uO,KAAKktO,aACpBU,EAAkB,GACbhxO,EAAI,EAAGA,EAAImyO,EAAalyO,OAAQD,IACjCoD,KAAKO,OAAOstO,oBAAoB1vO,QAAQ4wO,EAAanyO,KAAO,GAAKgxO,EAAgBzvO,QAAQ4wO,EAAanyO,IAAM,IAC5GkyO,EAAkBltO,KAAK,CAAEpF,MAAOuyO,EAAanyO,GAAI2V,KAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAYk4L,EAAanyO,MACtGgxO,EAAgBhsO,KAAKmtO,EAAanyO,KAG1C,IAAIoyO,EAAgB,CAAC,iBAAkB,8BACnCC,EAAiB,CAAC,iBAAkB,6BAA8B,2BAClEhjB,EAAa3tN,YAAO,GAAI0B,KAAKO,OAAO6vE,mBAAmBtH,KAAM,MAAM,GACvEmjJ,EAAaA,EAAWn6L,OAAO9xB,KAAKO,OAAO6vE,mBAAmBrW,SAO9D,IANA,IAAIm1K,EAAkB,GAClBC,EAAsB,GAKjBnxO,EAAK,EAAGwxN,EAAevD,EAAYjuN,EAAKwxN,EAAa3yN,OAAQmB,IAAM,CACxE,IAAIw7D,EAAQg2J,EAAaxxN,GACrBxB,EAAQg9D,EAAMp/C,KACd7H,EAAQinD,EAAMyZ,QAAUzZ,EAAMyZ,QAAUzZ,EAAMp/C,KAClD80N,EAAgBttO,KAAK,CAAEpF,MAAOA,EAAO+V,KAAMA,IAEH,IAAxCrU,OAAOjB,KAAKiyO,GAAiBryO,QAC7BqyO,EAAgBttO,KAAK,CAAEpF,MAAO,GAAI+V,KAAM,KACxC2gE,EAAY,GACZi8J,EAAsB,KAGtBj8J,EAAaA,GAAuC,cAAzBA,EAAU/lE,YAAuD,SAAzB+lE,EAAU/lE,WAAyB+lE,EAAYg8J,EAAgB,GAAG1yO,MACrI2yO,EAAsBjxO,OAAOjB,KAAK+C,KAAKO,OAAOw2E,aAAaF,UAAoC,cAAzB3D,EAAU/lE,WAC5E+lE,EAAYg8J,EAAgB,GAAG1yO,OAAQglF,mBAE/CrO,EAAoC,cAAxBA,EAAShmE,WAA6BgmE,EAAWg8J,EAAoB,GACjF,IAAIC,EAAUjuO,YAAc,MAAO,CAC/BktB,UAAW,4BAA6B5U,GAAIzZ,KAAK4zC,cAAcn6B,GAAK,qBACpEsZ,MAAO,CAAE,YAAa87M,EAAa,eAAgBD,EAAc,iBAAkB17J,EAAW,gBAAiBC,KAE/Gk8J,EAAeluO,YAAc,MAAO,CAAEktB,UAAW,8BACjDihN,EAAoBnuO,YAAc,MAAO,CAAEktB,UAAW,2BACtDkhN,EAAoBpuO,YAAc,MAAO,CAAEktB,UAAW,0BACtDmhN,EAAoBruO,YAAc,MAAO,CAAEktB,UAAW,gCACtDohN,EAAoBtuO,YAAc,MAAO,CAAEktB,UAAW,+BACtDqhN,EAAYvuO,YAAc,MAAO,CAAEktB,UAAW,qBAAsBjsB,UAAWpC,KAAKO,OAAOwjF,UAAUltC,YAAY,cAAgB,WACjIw/C,EAAcl1F,YAAc,MAAO,CAAEktB,UAAW,uBAAwBjsB,UAAW4qO,EAAcvzN,GAAGtM,aACpGwiO,EAAgBxuO,YAAc,MAAO,CACrCktB,UAAW,qBAAsBjsB,UAAWpC,KAAKO,OAAOwjF,UAAUltC,YAAY,mBAE9E+4L,EAAiBzuO,YAAc,MAAO,CACtCktB,UAAW,2BAA4BjsB,UAAWpC,KAAKO,OAAOwjF,UAAUltC,YAAY,uBAEpFg5L,EAAiB1uO,YAAc,MAAO,CACtCktB,UAAW,0BAA2BjsB,UAAWpC,KAAKO,OAAOwjF,UAAUltC,YAAY,eAEnFi5L,EAAiB3uO,YAAc,MAAO,CACtCktB,UAAW,qBAAsBjsB,UAAWpC,KAAKO,OAAOwjF,UAAUltC,YAAY,cAE9Ek5L,EAAY5uO,YAAc,MAAO,CAAEktB,UAAW,4BAC9C2hN,EAAiB7uO,YAAc,MAAO,CAAEsY,GAAIzZ,KAAK4zC,cAAcn6B,GAAK,iBACpEw2N,EAAiB9uO,YAAc,MAAO,CAAEsY,GAAIzZ,KAAK4zC,cAAcn6B,GAAK,uBACpEy2N,EAAiB/uO,YAAc,MAAO,CAAEsY,GAAIzZ,KAAK4zC,cAAcn6B,GAAK,sBACpE02N,EAAchvO,YAAc,QAAS,CACrCsY,GAAIzZ,KAAK4zC,cAAcn6B,GAAK,oBAC5B4U,UAAW,uBACX0E,MAAO,CAAE,KAAQ,UAErBs8M,EAAartO,YAAY0tO,GACzBL,EAAartO,YAAYq0F,GACzB05I,EAAU/tO,YAAY2tO,GACtBI,EAAU/tO,YAAYmuO,GACtBZ,EAAkBvtO,YAAY4tO,GAC9BJ,EAAkBxtO,YAAY6tO,GAC9BJ,EAAkBztO,YAAY8tO,GAC9BP,EAAkBvtO,YAAYguO,GAC9BR,EAAkBxtO,YAAYiuO,GAC9BR,EAAkBztO,YAAYkuO,GAC9BZ,EAAkBttO,YAAYqtO,GAC9BC,EAAkBttO,YAAY+tO,GAC9BT,EAAkBttO,YAAYutO,GAC9BD,EAAkBttO,YAAYwtO,GAC9BF,EAAkBttO,YAAYytO,GAC9BL,EAAQptO,YAAYstO,GACpB,IAAIc,EAAgBpwO,KAChBqwO,EAAiB,IAAI31E,IAAa,CAClC54F,WAAYgtK,EAAmBnoM,UAAW3mC,KAAKO,OAAOomC,UAAW5pB,OAAQ/c,KAAKO,OAAOwc,OACrFqyD,OAAQ,CAAE5yE,MAAO,QAAS+V,KAAM,QAChC/V,MAAOqyO,EAEP34I,SAAUjsB,KAAyBv6B,MAAO,OAC1C0C,OAAQ,SAAUnyC,GACdqwO,EAAe93I,SAAkD,IAAxCy2I,EAAe9wO,QAAQ8B,EAAKzD,OACrD+zO,EAAe/3I,SAAiD,IAAvCw2I,EAAc7wO,QAAQ8B,EAAKzD,OAChD+zO,EAAe/3I,SAAgD,IAArC+3I,EAAezuK,WAAWjlE,SACpD0zO,EAAezuK,WAAaqtK,EAC5BoB,EAAej3M,eAI3B+2M,EAAeniN,kBAAmB,EAClCmiN,EAAetpM,SAASipM,GACxB,IAAIM,EAAiB,IAAI51E,IAAa,CAClC54F,WAAYotK,EAAiBvoM,UAAW3mC,KAAKO,OAAOomC,UAAW5pB,OAAQ/c,KAAKO,OAAOwc,OACnFqyD,OAAQ,CAAE5yE,MAAO,QAAS+V,KAAM,QAChC/V,MAAO02E,EAEPslB,SAAmD,IAAzCy2I,EAAe9wO,QAAQ0wO,GACjC34I,SAAUjsB,KAAyBv6B,MAAO,OAC1C0C,OAAQ,SAAUnyC,GACdkvO,EAAsBjxO,OAAOjB,KAAKmzO,EAAc7vO,OAAOw2E,aAAaF,UAAU52E,EAAKzD,OAAOglF,kBAC1F+uJ,EAAezuK,WAAaqtK,EAC5BoB,EAAe/zO,MAAQ2yO,EAAoB,GAC3CoB,EAAe/qE,qBAAuB4qE,EAAc7vO,OAAOwjF,UAAUltC,YAAY,WAAa,IAAMs4L,EAAoB,GACxHoB,EAAej3M,cAGvBg3M,EAAepiN,kBAAmB,EAClCoiN,EAAevpM,SAASkpM,GACxB,IAAIM,EAAiB,IAAI71E,IAAa,CAClC54F,WAAY,CAACqtK,EAAoB,IAAKxoM,UAAW3mC,KAAKO,OAAOomC,UAAW5pB,OAAQ/c,KAAKO,OAAOwc,OAC5FvgB,MAAO22E,EAEP60B,gBAAgB,EAChBw9D,qBAAsBxlK,KAAKO,OAAOwjF,UAAUltC,YAAY,WAAa,IAAMs4L,EAAoB,GAC/F32I,SAAkD,IAAxCw2I,EAAc7wO,QAAQ0wO,GAChC34I,SAAUjsB,KAA2Bv6B,MAAO,SAEhD6gM,EAAeriN,kBAAmB,EAClCqiN,EAAexpM,SAASmpM,GACxB,IAAIM,EAAY,IAAIC,IAAc,CAC9Bt7I,YAAa,sBAEbxuD,UAAW3mC,KAAKO,OAAOomC,UACvB5pB,OAAQ/c,KAAKO,OAAOwc,OACpBvgB,MAAOoyO,EAAcl/L,MAAO,SAIhC,OAFA8gM,EAAUtiN,kBAAmB,EAC7BsiN,EAAUzpM,SAASopM,GACZf,GAEXvC,EAAc3wO,UAAU+xO,0BAA4B,SAAUyC,GAC1D,GAAuB,OAAnBA,EAAKl1L,KAAKjpC,KAAe,CACzB,IAAIy6N,EAAgBhtO,KAAKytO,YAAY75L,cACjCzoC,EAAOulO,EAAKl1L,KAAK/hC,GAAG9c,MAAM,KAAK2gH,MACnC,GAAa,eAATnyG,GAAkC,+BAATA,GACb,4BAATA,GAA+C,mBAATA,EACzCnL,KAAKouO,0BAA0BpB,EAAehtO,KAAK4zC,cAAezoC,OAEjE,CACD,IAAIquD,EAAQwzK,EAAc79M,aAAa,YACnCwhN,EAAc3wO,KAAKO,OAAO6vE,mBAAmB7T,OAC7Cq0K,EAAiB5D,EAAc1pO,cAAc,cAC7CutO,EAAcH,EAAKl1L,KAAKjpC,KAAO,IAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAY,MAAQ,IAC/E72C,KAAKO,OAAOw2E,aAAaF,UAAUrd,GAAOyZ,QAC9C29J,EAAexuO,UAAYyuO,EAC3BD,EAAeh7M,aAAa,QAASi7M,GACrC7D,EAAcp3M,aAAa,YAAazqB,GACxC,IAAK,IAAI2lO,EAAO,EAAGA,EAAO9wO,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAQi0O,IACpE,GAAI9wO,KAAKO,OAAO6vE,mBAAmB7T,OAAOu0K,GAAM12N,OAASo/C,EAAO,CAC5D,IAAIu3K,EAAiBzyO,YAAO,GAAIqyO,EAAYG,GAAMj9M,WAC9C88M,EAAYG,GAAMj9M,WAAa88M,EAAYG,GAAO,MAAM,GAC5DC,EAAe5lO,KAAOA,EACtBnL,KAAKO,OAAOw2E,aAAaF,UAAUrd,GAAOyd,cAAgB9rE,EAC1DwlO,EAAY72N,OAAOg3N,EAAM,EAAGC,GAC5B/wO,KAAKO,OAAOywO,oBAAsBD,EAG1C/wO,KAAK4mJ,sBAIjBimF,EAAc3wO,UAAU0qJ,iBAAmB,SAAUqqF,GAC5CjxO,KAAKO,OAAO2wO,wBAA0D,cAAhClxO,KAAKO,OAAOs6B,gBAIf,mBAAhC76B,KAAKO,OAAOs6B,iBAAmE,UAA3B76B,KAAKO,OAAOkuO,YAChEzuO,KAAKO,OAAO2vE,gBAAgBh3C,cAAc,CACtCk3C,mBAAoBpwE,KAAKO,OAAO6vE,mBAAmBv8C,aACpD,GACH7zB,KAAKO,OAAO2vE,gBAAgBl2D,OAAO+M,KAAiB/mB,MACpDA,KAAKO,OAAO2vE,gBAAgB6G,aAAe/2E,KAAKO,OAAOw2E,cAIvD/2E,KAAKO,OAAO4wO,uBAZhBnxO,KAAKO,OAAOqmJ,iBAAiBqqF,IAgBrCpE,EAAc3wO,UAAUsyO,oBAAsB,WAC1C,IAMIxB,EANAoE,EAAgBpxO,KAAKquO,YAAYrtO,QACjCqwO,EAAkBluO,YAAY,IAAMnD,KAAK4zC,cAAcn6B,GAAK,oBAAqBg3N,KACjFa,EAAkBnuO,YAAY,IAAMnD,KAAK4zC,cAAcn6B,GAAK,eAAgBihJ,KAC5E62E,EAAoBpuO,YAAY,IAAMnD,KAAK4zC,cAAcn6B,GAAK,qBAAsBihJ,KACpF82E,EAAmBruO,YAAY,IAAMnD,KAAK4zC,cAAcn6B,GAAK,oBAAqBihJ,KAClFlkF,EAAY46J,EAAcjiN,aAAa,cAM3C,GAJInvB,KAAK4zC,cAActwC,cAAc,IAAM2mE,QACvC+iK,EAAgBhtO,KAAK4zC,cACjBtwC,cAAc,IAAM2mE,KAAyB,IAAMuM,EAAU95E,QAAQ,cAAe,MAExFswO,EAAe,CACf,IAAI4D,EAAiB5D,EAAc1pO,cAAc,cAC7CutO,EAAc7wO,KAAKO,OAAOwjF,UAAUltC,YAAYy6L,EAAgB90O,OAAS,IACzEwD,KAAKO,OAAOwjF,UAAUltC,YAAY,MAAQ,IAAMw6L,EAAgB70O,MACpEo0O,EAAexuO,UAAYyuO,EAC3BD,EAAeh7M,aAAa,QAASi7M,GACrC7D,EAAcp3M,aAAa,YAAa07M,EAAgB90O,OACxDwwO,EAAcp3M,aAAa,eAAgBy7M,EAAgB70O,OAC3DwwO,EAAcp3M,aAAa,iBAAkB27M,EAAkB/0O,OAC/DwwO,EAAcp3M,aAAa,gBAAiB47M,EAAiBh1O,OAEjE,IAAI03E,EAAgBtF,IAAU8H,eAAeF,EAAWx2E,KAAKO,OAAO6vE,mBAAmB7T,SACvF2X,EAAgBA,EAAcrgD,WAC1BqgD,EAAcrgD,WAAaqgD,GACjBjB,QAAUo+J,EAAgB70O,MACxC03E,EAAc/oE,KAAOmmO,EAAgB90O,MACrC03E,EAAchB,UAAYq+J,EAAkB/0O,MAC5C03E,EAAcf,SAAWq+J,EAAiBh1O,MAC1CwD,KAAKquO,YAAYhsO,QAEjBrC,KAAKO,OAAOywO,oBAAsB98J,EAClCl0E,KAAK4mJ,kBAAiB,IAE1BimF,EAAc3wO,UAAUyyO,aAAe,WAC/Bv3M,aAAO,IAAMp3B,KAAKgtO,cAAcvzN,GAAIzZ,KAAK4zC,gBACzCxc,aAAO,IAAMp3B,KAAKgtO,cAAcvzN,GAAIzZ,KAAK4zC,eAAetxC,QAExDtC,KAAKquO,cAAgBruO,KAAKquO,YAAYl1M,aACtCn5B,KAAKquO,YAAYlzN,UAEjB3a,SAASuuB,eAAe/uB,KAAK4zC,cAAcn6B,GAAK,iBAChDgQ,aAAOjpB,SAASuuB,eAAe/uB,KAAK4zC,cAAcn6B,GAAK,kBAQ/DozN,EAAc3wO,UAAUif,QAAU,WAC1Bnb,KAAKO,OAAO44B,aAGZn5B,KAAK8sO,gBACoB9wO,IAArBgE,KAAK8sO,SAAS,IAAqB9sO,KAAK8sO,SAAS,GAAG3zM,aACpDn5B,KAAK8sO,SAAS,GAAG3xN,eAEInf,IAArBgE,KAAK8sO,SAAS,IAAqB9sO,KAAK8sO,SAAS,GAAG3zM,aACpDn5B,KAAK8sO,SAAS,GAAG3xN,YAOtB0xN,EAjbwB,I,6BCZnC,6CAAIxuM,EAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,EAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAiC5D2yM,EAA8B,SAAUtyM,GAExC,SAASsyM,IACL,OAAkB,OAAXtyM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAqD/D,OAvDAq+B,EAAUozM,EAActyM,GAIxBR,EAAW,CACP3B,eACDy0M,EAAav1O,UAAW,YAAQ,GACnCyiC,EAAW,CACP3B,eACDy0M,EAAav1O,UAAW,eAAW,GACtCyiC,EAAW,CACP3B,YAAS,QACVy0M,EAAav1O,UAAW,YAAQ,GACnCyiC,EAAW,CACP3B,eACDy0M,EAAav1O,UAAW,YAAQ,GACnCyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,uBAAmB,GAC9CyiC,EAAW,CACP3B,eACDy0M,EAAav1O,UAAW,iBAAa,GACxCyiC,EAAW,CACP3B,eACDy0M,EAAav1O,UAAW,gBAAY,GACvCyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,qBAAiB,GAC5CyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,kBAAc,GACzCyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,yBAAqB,GAChDyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,sBAAkB,GAC7CyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,oBAAgB,GAC3CyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,sBAAkB,GAC7CyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,yBAAqB,GAChDyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,oBAAgB,GAC3CyiC,EAAW,CACP3B,aAAS,IACVy0M,EAAav1O,UAAW,wBAAoB,GAC/CyiC,EAAW,CACP3B,eACDy0M,EAAav1O,UAAW,gBAAY,GAChCu1O,EAxDuB,CAyDhCpsM,KAkEEu8C,GAlCuC,SAAUziD,GAEjD,SAASuyM,IACL,OAAkB,OAAXvyM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAF/Dq+B,EAAUqzM,EAAuBvyM,GADM,CAMzCsyM,GAKyB,SAAUtyM,GAEjC,SAASw7C,IACL,OAAkB,OAAXx7C,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAF/Dq+B,EAAUs8C,EAAOx7C,GAIjBR,EAAW,CACP3B,eACD29C,EAAMz+E,UAAW,uBAAmB,GACvCyiC,EAAW,CACP3B,eACD29C,EAAMz+E,UAAW,aAAS,GAC7ByiC,EAAW,CACP3B,eACD29C,EAAMz+E,UAAW,kBAAc,GAClCyiC,EAAW,CACP3B,eACD29C,EAAMz+E,UAAW,gBAAY,GAhBT,CAkBzBmpC,KAK0B,SAAUlG,GAElC,SAASyiD,IACL,OAAkB,OAAXziD,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA6B/D,OA/BAq+B,EAAUujD,EAAQziD,GAIlBR,EAAW,CACP3B,eACD4kD,EAAO1lF,UAAW,YAAQ,GAC7ByiC,EAAW,CACP3B,YAAS,YACV4kD,EAAO1lF,UAAW,YAAQ,GAC7ByiC,EAAW,CACP3B,eACD4kD,EAAO1lF,UAAW,aAAS,GAC9ByiC,EAAW,CACP3B,YAAS,kBACV4kD,EAAO1lF,UAAW,iBAAa,GAClCyiC,EAAW,CACP3B,eACD4kD,EAAO1lF,UAAW,cAAU,GAC/ByiC,EAAW,CACP3B,eACD4kD,EAAO1lF,UAAW,cAAU,GAC/ByiC,EAAW,CACP3B,eACD4kD,EAAO1lF,UAAW,eAAW,GAChCyiC,EAAW,CACP3B,YAAS,IACV4kD,EAAO1lF,UAAW,kBAAc,GACnCyiC,EAAW,CACP3B,eACD4kD,EAAO1lF,UAAW,qBAAiB,GAC/B0lF,EAhCiB,CAiC1Bv8C,MAKEssM,EAA2C,SAAUxyM,GAErD,SAASwyM,IACL,OAAkB,OAAXxyM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUszM,EAA2BxyM,GAIrCR,EAAW,CACP3B,eACD20M,EAA0Bz1O,UAAW,eAAW,GACnDyiC,EAAW,CACP3B,eACD20M,EAA0Bz1O,UAAW,aAAS,GACjDyiC,EAAW,CACP3B,eACD20M,EAA0Bz1O,UAAW,kBAAc,GACtDyiC,EAAW,CACP3B,eACD20M,EAA0Bz1O,UAAW,cAAU,GAClDyiC,EAAW,CACP3B,eACD20M,EAA0Bz1O,UAAW,cAAU,GAClDyiC,EAAW,CACP3B,eACD20M,EAA0Bz1O,UAAW,aAAS,GACjDyiC,EAAW,CACP3B,aAAS,IACV20M,EAA0Bz1O,UAAW,wBAAoB,GACrDy1O,EA1BoC,CA2B7CtsM,KAKEy8C,EAAsB,SAAU3iD,GAEhC,SAAS2iD,IACL,OAAkB,OAAX3iD,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,EAAUyjD,EAAM3iD,GAIhBR,EAAW,CACP3B,eACD8kD,EAAK5lF,UAAW,YAAQ,GAC3ByiC,EAAW,CACP3B,YAAS,cACV8kD,EAAK5lF,UAAW,aAAS,GACrB4lF,EAXe,CAYxBz8C,KAME++C,EAAgC,SAAUjlD,GAE1C,SAASilD,IACL,OAAkB,OAAXjlD,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmC/D,OArCAq+B,EAAU+lD,EAAgBjlD,GAI1BR,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,YAAQ,GACrCyiC,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,6BAAyB,GACtDyiC,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,6BAAyB,GACtDyiC,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,gCAA4B,GACzDyiC,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,gCAA4B,GACzDyiC,EAAW,CACP3B,aAAS,IACVonD,EAAeloF,UAAW,mBAAe,GAC5CyiC,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,gBAAY,GACzCyiC,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,YAAQ,GACrCyiC,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,gBAAY,GACzCyiC,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,4BAAwB,GACrDyiC,EAAW,CACP3B,eACDonD,EAAeloF,UAAW,cAAU,GAChCkoF,EAtCyB,CAuClC/+C,KAOEusM,EAA+B,SAAUzyM,GAEzC,SAASyyM,IACL,OAAkB,OAAXzyM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA0B/D,OA5BAq+B,EAAUuzM,EAAezyM,GAIzBR,EAAW,CACP3B,eACD40M,EAAc11O,UAAW,YAAQ,GACpCyiC,EAAW,CACP3B,eACD40M,EAAc11O,UAAW,qBAAiB,GAC7CyiC,EAAW,CACP3B,eACD40M,EAAc11O,UAAW,kBAAc,GAC1CyiC,EAAW,CACP3B,eACD40M,EAAc11O,UAAW,gBAAY,GACxCyiC,EAAW,CACP3B,YAAS,SACV40M,EAAc11O,UAAW,YAAQ,GACpCyiC,EAAW,CACP3B,eACD40M,EAAc11O,UAAW,qBAAiB,GAC7CyiC,EAAW,CACP3B,eACD40M,EAAc11O,UAAW,eAAW,GACvCyiC,EAAW,CACP3B,eACD40M,EAAc11O,UAAW,oBAAgB,GACrC01O,EA7BwB,CA8BjCvsM,KAsBEwsM,GAjB8B,SAAU1yM,GAExC,SAAS2yM,IACL,OAAkB,OAAX3yM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAF/Dq+B,EAAUyzM,EAAc3yM,GAIxBR,EAAW,CACP3B,eACD80M,EAAa51O,UAAW,iBAAa,GACxCyiC,EAAW,CACP3B,YAAS,KACV80M,EAAa51O,UAAW,aAAS,GAVN,CAYhCmpC,KAK2C,SAAUlG,GAEnD,SAAS0yM,IACL,OAAkB,OAAX1yM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,EAAUwzM,EAAyB1yM,GAInCR,EAAW,CACP3B,eACD60M,EAAwB31O,UAAW,YAAQ,GAC9CyiC,EAAW,CACP3B,eACD60M,EAAwB31O,UAAW,eAAW,GACjDyiC,EAAW,CACP3B,eACD60M,EAAwB31O,UAAW,2BAAuB,GAC7DyiC,EAAW,CACP3B,eACD60M,EAAwB31O,UAAW,oBAAgB,GAC/C21O,EAjBkC,CAkB3CxsM,MAKE0sM,EAA8B,SAAU5yM,GAExC,SAAS4yM,IACL,OAAkB,OAAX5yM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,EAAU0zM,EAAc5yM,GAIxBR,EAAW,CACP3B,eACD+0M,EAAa71O,UAAW,YAAQ,GACnCyiC,EAAW,CACP3B,eACD+0M,EAAa71O,UAAW,aAAS,GACpCyiC,EAAW,CACP3B,eACD+0M,EAAa71O,UAAW,iBAAa,GACjC61O,EAduB,CAehC1sM,KAKE2sM,EAAmC,SAAU7yM,GAE7C,SAAS6yM,IACL,OAAkB,OAAX7yM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,EAAU2zM,EAAmB7yM,GAI7BR,EAAW,CACP3B,eACDg1M,EAAkB91O,UAAW,kBAAc,GAC9CyiC,EAAW,CACP3B,YAAS,MACVg1M,EAAkB91O,UAAW,uBAAmB,GACnDyiC,EAAW,CACP3B,YAAS,SACVg1M,EAAkB91O,UAAW,iBAAa,GAC7CyiC,EAAW,CACP3B,eACDg1M,EAAkB91O,UAAW,eAAW,GACpC81O,EAjB4B,CAkBrC3sM,KAME4sM,EAAgC,SAAU9yM,GAE1C,SAAS8yM,IACL,OAAkB,OAAX9yM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,EAAU4zM,EAAgB9yM,GAI1BR,EAAW,CACP3B,eACDi1M,EAAe/1O,UAAW,gBAAY,GACzCyiC,EAAW,CACP3B,eACDi1M,EAAe/1O,UAAW,gBAAY,GAClC+1O,EAXyB,CAYlC5sM,KAmDE6sM,EAAoC,SAAU/yM,GAE9C,SAAS+yM,IACL,OAAkB,OAAX/yM,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuH/D,OAzHAq+B,EAAU6zM,EAAoB/yM,GAI9BR,EAAW,CACP3B,YAAS,UACVk1M,EAAmBh2O,UAAW,YAAQ,GACzCyiC,EAAW,CACP3B,eACDk1M,EAAmBh2O,UAAW,eAAW,GAC5CyiC,EAAW,CACP3B,eACDk1M,EAAmBh2O,UAAW,YAAQ,GACzCyiC,EAAW,CACP3B,YAAS,eACVk1M,EAAmBh2O,UAAW,oBAAgB,GACjDyiC,EAAW,CACP3B,eACDk1M,EAAmBh2O,UAAW,WAAO,GACxCyiC,EAAW,CACP3B,YAAS,OACVk1M,EAAmBh2O,UAAW,wBAAoB,GACrDyiC,EAAW,CACP3B,eACDk1M,EAAmBh2O,UAAW,kBAAc,GAC/CyiC,EAAW,CACPtB,YAAW,GAAIo0M,IAChBS,EAAmBh2O,UAAW,YAAQ,GACzCyiC,EAAW,CACPtB,YAAW,GAAIo0M,IAChBS,EAAmBh2O,UAAW,eAAW,GAC5CyiC,EAAW,CACPtB,YAAW,GAAIo0M,IAChBS,EAAmBh2O,UAAW,cAAU,GAC3CyiC,EAAW,CACPtB,YAAW,GAAIo0M,IAChBS,EAAmBh2O,UAAW,eAAW,GAC5CyiC,EAAW,CACPtB,YAAW,GAAIo0M,IAChBS,EAAmBh2O,UAAW,oBAAgB,GACjDyiC,EAAW,CACP3B,YAAS,KACVk1M,EAAmBh2O,UAAW,qBAAiB,GAClDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,iBAAa,GAC9CyiC,EAAW,CACP3B,YAAS,WACVk1M,EAAmBh2O,UAAW,iBAAa,GAC9CyiC,EAAW,CACPtB,YAAW,GAAIukD,IAChBswJ,EAAmBh2O,UAAW,sBAAkB,GACnDyiC,EAAW,CACPtB,YAAW,GAAIykD,IAChBowJ,EAAmBh2O,UAAW,oBAAgB,GACjDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,qBAAiB,GAClDyiC,EAAW,CACP3B,YAAS,SACVk1M,EAAmBh2O,UAAW,YAAQ,GACzCyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,yBAAqB,GACtDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,wBAAoB,GACrDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,wBAAoB,GACrDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,qBAAiB,GAClDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,wBAAoB,GACrDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,2BAAuB,GACxDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,uBAAmB,GACpDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,0BAAsB,GACvDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,6BAAyB,GAC1DyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,6BAAyB,GAC1DyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,2BAAuB,GACxDyiC,EAAW,CACP3B,aAAS,IACVk1M,EAAmBh2O,UAAW,mCAA+B,GAChEyiC,EAAW,CACPtB,YAAW,GAAI+mD,IAChB8tJ,EAAmBh2O,UAAW,sBAAkB,GACnDyiC,EAAW,CACPtB,YAAW,GAAI00M,IAChBG,EAAmBh2O,UAAW,sBAAkB,GACnDyiC,EAAW,CACPvB,YAAQ,GAAI40M,IACbE,EAAmBh2O,UAAW,yBAAqB,GACtDyiC,EAAW,CACPtB,YAAW,GAAIw0M,IAChBK,EAAmBh2O,UAAW,+BAA2B,GAC5DyiC,EAAW,CACPtB,YAAW,GAAIs0M,IAChBO,EAAmBh2O,UAAW,iCAA6B,GAC9DyiC,EAAW,CACP3B,eACDk1M,EAAmBh2O,UAAW,6BAAyB,GAC1DyiC,EAAW,CACPtB,YAAW,GAAIu0M,IAChBM,EAAmBh2O,UAAW,qBAAiB,GAClDyiC,EAAW,CACPvB,YAAQ,GAAI60M,IACbC,EAAmBh2O,UAAW,sBAAkB,GAC5Cg2O,EA1H6B,CA2HtC7sM,M,gBCjmBF,IAAiDu/K,IASxC,WACT,OAAiB,WACP,IAAIutB,EAAuB,CAE/B,2DAIC,SAAS7tM,GAGhB,IAAiDsgL,IAIxC,WACT,OAAiB,SAAS5/K,GAEhB,IAAIotM,EAAmB,GAGvB,SAASC,EAA+BC,GAGvC,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUl2L,QAGnC,IAAI9X,EAAS8tM,EAAiBE,GAAY,CACzCl2L,QAAS,GACT3iC,GAAI64N,EACJC,QAAQ,GAUT,OANAvtM,EAAQstM,GAAUhxO,KAAKgjC,EAAO8X,QAAS9X,EAAQA,EAAO8X,QAASi2L,GAG/D/tM,EAAOiuM,QAAS,EAGTjuM,EAAO8X,QAcf,OATAi2L,EAA+B7oO,EAAIw7B,EAGnCqtM,EAA+BzqO,EAAIwqO,EAGnCC,EAA+B5gO,EAAI,GAG5B4gO,EAA+B,GAvCzC,CA0CG,CAEJ,SAAS/tM,EAAQ8X,GAEtB,aACA,IAAIo2L,EAAmB,WACnB,SAASA,EAAgBC,EAAwBC,EAAgBC,QACtC,IAAnBD,IAA6BA,EAAiB,IAClD1yO,KAAK0yO,eAAiBA,EACtB1yO,KAAK2yO,oBAAsBA,EAC3B3yO,KAAKyyO,uBAAyBA,EA0GlC,OApGAD,EAAgBI,sBAAwB,SAAUjyO,EAASkyO,GAKvD,OAJAlyO,EAAQqkB,QAAUrkB,EAAQqkB,SAAW,GACjC6tN,GAAsBA,EAAmBp5N,KACzC9Y,EAAQqkB,QAAQvL,GAAKo5N,EAAmBp5N,IAErC9Y,GAEX6xO,EAAgBM,sBAAwB,SAAUnyO,GAC9C,MAAO,CACH8Y,GAAI9Y,EAAQqkB,SAAWrkB,EAAQqkB,QAAQvL,KAG/C+4N,EAAgBO,eAAiB,SAAUpyO,GACvC,MAA+C,kBAAnCA,GAAWA,EAAQqyO,eAGtB,KAAOryO,EAAQqyO,YAAcryO,EAAQqyO,WAAa,MAE/DR,EAAgBt2O,UAAUyrB,IAAM,SAAU/E,EAAKoC,EAASiuN,GAGpD,YAFgB,IAAZjuN,IAAsBA,EAAU,SACf,IAAjBiuN,IAA2BA,EAAejzO,KAAK2yO,qBAC5C3yO,KAAK6iB,KAAK,CACbwnG,OAAQ,MACRznG,IAAKA,EACLoC,QAASA,GACViuN,IAEPT,EAAgBt2O,UAAUg3O,KAAO,SAAUtwN,EAAK4f,EAAMxd,EAASiuN,GAG3D,YAFgB,IAAZjuN,IAAsBA,EAAU,SACf,IAAjBiuN,IAA2BA,EAAejzO,KAAK2yO,qBAC5C3yO,KAAK6iB,KAAK,CACbwnG,OAAQ,OACRznG,IAAKA,EACLoC,QAASA,EACTwd,KAAMA,GACPywM,IAEPT,EAAgBt2O,UAAUi3O,IAAM,SAAUvwN,EAAK4f,EAAMxd,EAASiuN,GAG1D,YAFgB,IAAZjuN,IAAsBA,EAAU,SACf,IAAjBiuN,IAA2BA,EAAejzO,KAAK2yO,qBAC5C3yO,KAAK6iB,KAAK,CACbwnG,OAAQ,MACRznG,IAAKA,EACLoC,QAASA,EACTwd,KAAMA,GACPywM,IAEPT,EAAgBt2O,UAAUk3O,MAAQ,SAAUxwN,EAAK4f,EAAMxd,EAASiuN,GAG5D,YAFgB,IAAZjuN,IAAsBA,EAAU,SACf,IAAjBiuN,IAA2BA,EAAejzO,KAAK2yO,qBAC5C3yO,KAAK6iB,KAAK,CACbwnG,OAAQ,QACRznG,IAAKA,EACLoC,QAASA,EACTwd,KAAMA,GACPywM,IAEPT,EAAgBt2O,UAAUm3O,OAAS,SAAUzwN,EAAK4f,EAAMxd,EAASiuN,GAI7D,YAHa,IAATzwM,IAAmBA,EAAO,WACd,IAAZxd,IAAsBA,EAAU,SACf,IAAjBiuN,IAA2BA,EAAejzO,KAAK2yO,qBAC5C3yO,KAAK6iB,KAAK,CACbwnG,OAAQ,SACRznG,IAAKA,EACLoC,QAASA,EACTwd,KAAMA,GACPywM,IAEPT,EAAgBt2O,UAAU2mB,KAAO,SAAUu5E,EAAS62I,GAGhD,QAFqB,IAAjBA,IAA2BA,EAAejzO,KAAK2yO,qBACnDv2I,EAAQp3E,QAAUhlB,KAAK4pE,OAAO,GAAI5pE,KAAK0yO,eAAgBt2I,EAAQp3E,UAC1DiuN,EACD,MAAM,IAAIryO,MAAM,2LAEpB,OAAOZ,KAAKyyO,uBAAuB/3M,YAAYu4M,EAAc72I,IAMjEo2I,EAAgBt2O,UAAU0tE,OAAS,SAAU3sC,GAEzC,IADA,IAAIswJ,EAAU,GACLvvL,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCuvL,EAAQvvL,EAAK,GAAKY,UAAUZ,GAEhC,QAAehC,IAAXihC,GAAmC,OAAXA,EACxB,MAAM,IAAI8xD,UAAU,8CAExB,IAAIukJ,EAASp1O,OAAO++B,GAUpB,OATAswJ,EAAQvuL,SAAQ,SAAUpB,GACtB,QAAe5B,IAAX4B,GAAmC,OAAXA,EACxB,IAAK,IAAI21O,KAAW31O,EACZM,OAAOhC,UAAUsD,eAAe8B,KAAK1D,EAAQ21O,KAC7CD,EAAOC,GAAW31O,EAAO21O,OAKlCD,GAEJd,EA/GY,GAiHvBp2L,EAAQo2L,gBAAkBA,MAnKzBluM,EAAO8X,QAAUwoK,KA8Kb,+CAIC,SAAStgL,GAKhB,IAAiDsgL,IAIxC,WACT,OAAiB,WACP,IAAIutB,EAAuB,CAE9B,SAASqB,EAAyBp3L,EAASq3L,GAIlD,IAAIp1M,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQs3L,cAAgBt3L,EAAQu3L,iBAAmBv3L,EAAQw3L,kBAAoBx3L,EAAQy3L,eAAiBz3L,EAAQ03L,QAAU13L,EAAQ23L,uBAAyB33L,EAAQ43L,4BAA8B53L,EAAQ63L,kBAAoB73L,EAAQ83L,cAAgB93L,EAAQ+3L,eAAiB/3L,EAAQg4L,sBAAwBh4L,EAAQi4L,aAAej4L,EAAQk4L,qBAAuBl4L,EAAQm4L,iBAAmBn4L,EAAQo4L,SAAWp4L,EAAQq4L,UAAYr4L,EAAQs4L,cAAgBt4L,EAAQu4L,sBAAwBv4L,EAAQw4L,yBAA2Bx4L,EAAQy4L,gBAAkBz4L,EAAQ04L,eAAiB14L,EAAQ24L,YAAc34L,EAAQ44L,eAAiB54L,EAAQ64L,oBAAsB74L,EAAQ84L,YAAc94L,EAAQ+4L,mBAAqB/4L,EAAQg5L,mBAAqBh5L,EAAQi5L,WAAaj5L,EAAQk5L,qBAAuBl5L,EAAQm5L,mBAAqBn5L,EAAQwlC,OAASxlC,EAAQo5L,sBAAwBp5L,EAAQq5L,2BAA6Br5L,EAAQ+lC,WAAa/lC,EAAQs5L,aAAet5L,EAAQu5L,kBAAoBv5L,EAAQw5L,aAAex5L,EAAQy5L,aAAez5L,EAAQ05L,UAAY15L,EAAQ25L,SAAW35L,EAAQ45L,YAAc55L,EAAQ65L,kBAAoB75L,EAAQ85L,gBAAkB95L,EAAQ+5L,uBAAyB/5L,EAAQg6L,WAAah6L,EAAQi6L,2BAA6Bj6L,EAAQk6L,eAAiBl6L,EAAQm6L,cAAgBn6L,EAAQo6L,aAAep6L,EAAQq6L,eAAY,EACxxCr6L,EAAQs6L,qBAAuBt6L,EAAQu6L,0BAA4Bv6L,EAAQw6L,8BAAgCx6L,EAAQy6L,6BAA+Bz6L,EAAQ06L,yBAA2B16L,EAAQ26L,6BAA+B36L,EAAQ46L,eAAiB56L,EAAQ66L,aAAe76L,EAAQ86L,iBAAmB96L,EAAQ+6L,sBAAwB/6L,EAAQg7L,oBAAsBh7L,EAAQi7L,qBAAuBj7L,EAAQk7L,4BAA8Bl7L,EAAQm7L,mBAAqBn7L,EAAQo7L,2BAA6Bp7L,EAAQq7L,kBAAoBr7L,EAAQs7L,uBAAyBt7L,EAAQu7L,2BAA6Bv7L,EAAQw7L,wBAA0Bx7L,EAAQy7L,sBAAwBz7L,EAAQ07L,2BAA6B17L,EAAQ27L,mBAAqB37L,EAAQ47L,oBAAsB57L,EAAQ67L,sBAAwB77L,EAAQ87L,cAAgB97L,EAAQ+7L,iBAAmB/7L,EAAQg8L,+BAAiCh8L,EAAQi8L,kCAAoCj8L,EAAQk8L,mCAAqCl8L,EAAQm8L,2BAA6Bn8L,EAAQo8L,4BAA8Bp8L,EAAQq8L,oBAAsBr8L,EAAQs8L,eAAiBt8L,EAAQu8L,uBAAyBv8L,EAAQw8L,kBAAoBx8L,EAAQy8L,cAAgBz8L,EAAQ08L,uBAAyB18L,EAAQ28L,oBAAsB38L,EAAQ48L,qBAAuB58L,EAAQ68L,gBAAkB78L,EAAQ88L,6BAA+B98L,EAAQ+8L,mBAAqB/8L,EAAQg9L,qBAAuBh9L,EAAQi9L,qBAAuBj9L,EAAQk9L,mBAAqBl9L,EAAQm9L,eAAiBn9L,EAAQo9L,aAAep9L,EAAQq9L,SAAWr9L,EAAQs9L,cAAgBt9L,EAAQu9L,oBAAiB,EACviDv9L,EAAQw9L,sBAAwBx9L,EAAQy9L,kBAAoBz9L,EAAQ09L,oBAAsB19L,EAAQ29L,yBAA2B39L,EAAQ49L,4BAAyB,EAC9J,IAyGI73J,EAzGA83J,EAAcxG,EAA+B,IAEjD,SAAWgD,GACPA,EAAUA,EAAuB,YAAI,GAAK,cAC1CA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAiB,MAAI,GAAK,QACpCA,EAAUA,EAAyB,cAAI,GAAK,gBAC5CA,EAAUA,EAA2B,gBAAI,GAAK,kBAC9CA,EAAUA,EAAiB,MAAI,GAAK,QAPxC,CAQer6L,EAAQq6L,YAAcr6L,EAAQq6L,UAAY,KAEzD,SAAWD,GACPA,EAAaA,EAAyB,WAAI,GAAK,aAC/CA,EAAaA,EAAuB,SAAI,GAAK,WAC7CA,EAAaA,EAAsB,QAAI,GAAK,UAC5CA,EAAaA,EAAqB,OAAI,GAAK,SAC3CA,EAAaA,EAAqB,OAAI,GAAK,SAC3CA,EAAaA,EAAqB,OAAI,GAAK,SAN/C,CAOkBp6L,EAAQo6L,eAAiBp6L,EAAQo6L,aAAe,KAElE,SAAWD,GACPA,EAAcA,EAAyB,UAAI,GAAK,YAChDA,EAAcA,EAA0B,WAAI,GAAK,aACjDA,EAAcA,EAA0B,WAAI,GAAK,aAHrD,CAImBn6L,EAAQm6L,gBAAkBn6L,EAAQm6L,cAAgB,KAErE,SAAWD,GACPA,EAAeA,EAAwB,QAAI,GAAK,UAChDA,EAAeA,EAA4B,YAAI,GAAK,cAFxD,CAGoBl6L,EAAQk6L,iBAAmBl6L,EAAQk6L,eAAiB,KAExE,SAAWD,GACPA,EAA2BA,EAAoC,QAAI,GAAK,UACxEA,EAA2BA,EAAmC,OAAI,GAAK,SAF3E,CAGgCj6L,EAAQi6L,6BAA+Bj6L,EAAQi6L,2BAA6B,KAE5G,SAAWD,GACPA,EAAWA,EAAmB,OAAI,GAAK,SACvCA,EAAWA,EAAmB,OAAI,GAAK,SACvCA,EAAWA,EAA2B,eAAI,GAAK,iBAC/CA,EAAWA,EAA4B,gBAAI,GAAK,kBAJpD,CAKgBh6L,EAAQg6L,aAAeh6L,EAAQg6L,WAAa,KAE5D,SAAWD,GACPA,EAAuBA,EAAiC,SAAI,GAAK,WACjEA,EAAuBA,EAA8C,sBAAI,GAAK,wBAC9EA,EAAuBA,EAAmC,WAAI,GAAK,aAHvE,CAI4B/5L,EAAQ+5L,yBAA2B/5L,EAAQ+5L,uBAAyB,KAEhG,SAAWD,GACPA,EAAgBA,EAAsB,KAAI,GAAK,OAC/CA,EAAgBA,EAAwB,OAAI,GAAK,SACjDA,EAAgBA,EAAuB,MAAI,GAAK,QAChDA,EAAgBA,EAAsB,KAAI,GAAK,OAJnD,CAKqB95L,EAAQ85L,kBAAoB95L,EAAQ85L,gBAAkB,KAE3E,SAAWD,GACPA,EAAkBA,EAAiC,cAAI,GAAK,gBAC5DA,EAAkBA,EAAoC,iBAAI,GAAK,mBAFnE,CAGuB75L,EAAQ65L,oBAAsB75L,EAAQ65L,kBAAoB,KAEjF,SAAWD,GACPA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAuB,UAAI,GAAK,YAC5CA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAiB,IAAI,GAAK,MAL1C,CAMiB55L,EAAQ45L,cAAgB55L,EAAQ45L,YAAc,KAE/D,SAAWD,GACPA,EAASA,EAAe,KAAI,GAAK,OACjCA,EAASA,EAAe,KAAI,GAAK,OAFrC,CAGc35L,EAAQ25L,WAAa35L,EAAQ25L,SAAW,KAEtD,SAAWD,GACPA,EAAUA,EAAe,IAAI,GAAK,MAClCA,EAAUA,EAAiB,MAAI,GAAK,QAFxC,CAGe15L,EAAQ05L,YAAc15L,EAAQ05L,UAAY,KAEzD,SAAWD,GACPA,EAAaA,EAAmB,KAAI,GAAK,OACzCA,EAAaA,EAA4B,cAAI,GAAK,gBAClDA,EAAaA,EAA4B,cAAI,GAAK,gBAClDA,EAAaA,EAAgC,kBAAI,GAAK,oBACtDA,EAAaA,EAAgC,kBAAI,GAAK,oBAL1D,CAMkBz5L,EAAQy5L,eAAiBz5L,EAAQy5L,aAAe,KAElE,SAAWD,GACPA,EAAaA,EAAqB,OAAI,GAAK,SAC3CA,EAAaA,EAAkB,IAAI,GAAK,MAF5C,CAGkBx5L,EAAQw5L,eAAiBx5L,EAAQw5L,aAAe,KAElE,SAAWD,GACPA,EAAkBA,EAA6B,UAAI,GAAK,YACxDA,EAAkBA,EAA8B,WAAI,GAAK,aACzDA,EAAkBA,EAAuB,IAAI,GAAK,MAClDA,EAAkBA,EAA2B,QAAI,GAAK,UAJ1D,CAKuBv5L,EAAQu5L,oBAAsBv5L,EAAQu5L,kBAAoB,KAEjF,SAAWD,GACPA,EAAaA,EAAqB,OAAI,GAAK,SAC3CA,EAAaA,EAAmB,KAAI,GAAK,OACzCA,EAAaA,EAAqB,OAAI,GAAK,SAH/C,CAIkBt5L,EAAQs5L,eAAiBt5L,EAAQs5L,aAAe,KAElE,SAAWvzJ,GACPA,EAAWA,EAAqB,SAAI,GAAK,WACzCA,EAAWA,EAAkB,MAAI,GAAK,QACtCA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAA2B,eAAI,GAAK,iBAC/CA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAkB,MAAI,GAAK,QACtCA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAAqB,SAAI,GAAK,WACzCA,EAAWA,EAAsB,UAAI,GAAK,YAV9C,CAWGA,EAAa/lC,EAAQ+lC,aAAe/lC,EAAQ+lC,WAAa,KAE5D,SAAWszJ,GACPA,EAA2BA,EAAiC,KAAI,GAAK,OACrEA,EAA2BA,EAAkC,MAAI,GAAK,QACtEA,EAA2BA,EAA0C,cAAI,GAAK,gBAC9EA,EAA2BA,EAAmC,OAAI,GAAK,SACvEA,EAA2BA,EAA2C,eAAI,GAAK,iBAC/EA,EAA2BA,EAAkC,MAAI,GAAK,QACtEA,EAA2BA,EAA0C,cAAI,GAAK,gBAC9EA,EAA2BA,EAAoC,QAAI,GAAK,UACxEA,EAA2BA,EAAkC,MAAI,GAAK,QAT1E,CAUgCr5L,EAAQq5L,6BAA+Br5L,EAAQq5L,2BAA6B,KAE5G,SAAWD,GACPA,EAAsBA,EAA8B,OAAI,GAAK,SAC7DA,EAAsBA,EAA8B,OAAI,GAAK,SAC7DA,EAAsBA,EAA8B,OAAI,GAAK,SAHjE,CAI2Bp5L,EAAQo5L,wBAA0Bp5L,EAAQo5L,sBAAwB,KAC7F,IAAI5zJ,EAAwB,WACxB,SAASA,EAAO3kD,EAAQilD,GACpBliF,KAAKi9B,OAASA,EACdj9B,KAAKkiF,WAAaA,EActB,OAZAN,EAAO1lF,UAAU6xF,OAAS,WACtB,IAAI78D,EAAS,CACTgpN,QAASl6O,KAAKm6O,UACdl9M,OAAQj9B,KAAKi9B,OACbilD,WAAYliF,KAAKkiF,YAMrB,YAH6BlmF,IAAzBgE,KAAKo6O,kBACLlpN,EAAOkpN,gBAAkBp6O,KAAKo6O,iBAE3BlpN,GAEJ0wD,EAjBiB,GAmB5BxlC,EAAQwlC,OAASA,EACjB,IAAI2zJ,EAAoC,SAAUp2M,GAE9C,SAASo2M,EAAmBt4M,EAAQt8B,EAAS05O,GACzC,IAAIt6O,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAWm4J,UAAYt6O,KAI7D,OAHAD,EAAMY,QAAUA,EAChBZ,EAAMs6O,qBAAuBA,EAC7Bt6O,EAAMo6O,UAAY5E,EAAmB4E,UAC9Bp6O,EASX,OAfAs+B,EAAUk3M,EAAoBp2M,GAQ9Bo2M,EAAmBr5O,UAAU6xF,OAAS,WAClC,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAG1C,OAFAkxB,EAAOvwB,QAAUX,KAAKW,QACtBuwB,EAAOmpN,qBAAuBr6O,KAAKq6O,qBAC5BnpN,GAEXqkN,EAAmB4E,UAAY,iDACxB5E,EAhB6B,CAiBtC3zJ,GACFxlC,EAAQm5L,mBAAqBA,EAC7B,IAAID,EAAsC,SAAUn2M,GAEhD,SAASm2M,EAAqBr4M,EAAQs9M,EAAWh+K,GAC7C,IAAIx8D,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAWq4J,iBAAmBx6O,KAIpE,OAHAD,EAAMw8D,OAASA,EACfx8D,EAAMw6O,UAAYA,EAClBx6O,EAAMo6O,UAAY7E,EAAqB6E,UAChCp6O,EASX,OAfAs+B,EAAUi3M,EAAsBn2M,GAQhCm2M,EAAqBp5O,UAAU6xF,OAAS,WACpC,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAG1C,OAFAkxB,EAAOqpN,UAAYv6O,KAAKu6O,UACxBrpN,EAAOqrC,OAASv8D,KAAKu8D,OACdrrC,GAEXokN,EAAqB6E,UAAY,mDAC1B7E,EAhB+B,CAiBxC1zJ,GACFxlC,EAAQk5L,qBAAuBA,EAC/B,IAAID,EAA4B,SAAUl2M,GAEtC,SAASk2M,EAAWp4M,EAAQmlC,EAAUm3F,EAAW6jC,GAC7C,IAAIr9L,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAWs4J,OAASz6O,KAK1D,OAJAD,EAAMqiE,SAAWA,EACjBriE,EAAMw5J,UAAYA,EAClBx5J,EAAMo6O,UAAY9E,EAAW8E,UAC7Bp6O,EAAMq9L,QAAUA,EACTr9L,EAUX,OAjBAs+B,EAAUg3M,EAAYl2M,GAStBk2M,EAAWn5O,UAAU6xF,OAAS,WAC1B,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAI1C,OAHAkxB,EAAOkxC,SAAWpiE,KAAKoiE,SACvBlxC,EAAOqoI,UAAYv5J,KAAKu5J,UACxBroI,EAAOksK,QAAUp9L,KAAKo9L,QACflsK,GAEXmkN,EAAW8E,UAAY,yCAChB9E,EAlBqB,CAmB9BzzJ,GACFxlC,EAAQi5L,WAAaA,EACrB,IAAID,EAAoC,SAAUj2M,GAE9C,SAASi2M,EAAmBn4M,EAAQmlC,EAAUs4K,EAAgBC,EAAcC,GACxE,IAAI76O,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAW04J,eAAiB76O,KAMlE,OALAD,EAAMqiE,SAAWA,EACjBriE,EAAM26O,eAAiBA,EACvB36O,EAAM46O,aAAeA,EACrB56O,EAAM66O,aAAeA,EACrB76O,EAAMo6O,UAAY/E,EAAmB+E,UAC9Bp6O,EAWX,OAnBAs+B,EAAU+2M,EAAoBj2M,GAU9Bi2M,EAAmBl5O,UAAU6xF,OAAS,WAClC,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAK1C,OAJAkxB,EAAOkxC,SAAWpiE,KAAKoiE,SACvBlxC,EAAOwpN,eAAiB16O,KAAK06O,eAC7BxpN,EAAOypN,aAAe36O,KAAK26O,aAC3BzpN,EAAO0pN,aAAe56O,KAAK46O,aACpB1pN,GAEXkkN,EAAmB+E,UAAY,iDACxB/E,EApB6B,CAqBtCxzJ,GACFxlC,EAAQg5L,mBAAqBA,EAC7B,IAAID,EAAoC,SAAUh2M,GAE9C,SAASg2M,EAAmBl4M,EAAQmlC,EAAUs4K,EAAgBC,GAC1D,IAAI56O,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAW24J,eAAiB96O,KAKlE,OAJAD,EAAMqiE,SAAWA,EACjBriE,EAAM26O,eAAiBA,EACvB36O,EAAM46O,aAAeA,EACrB56O,EAAMo6O,UAAYhF,EAAmBgF,UAC9Bp6O,EAUX,OAjBAs+B,EAAU82M,EAAoBh2M,GAS9Bg2M,EAAmBj5O,UAAU6xF,OAAS,WAClC,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAI1C,OAHAkxB,EAAOkxC,SAAWpiE,KAAKoiE,SACvBlxC,EAAOwpN,eAAiB16O,KAAK06O,eAC7BxpN,EAAOypN,aAAe36O,KAAK26O,aACpBzpN,GAEXikN,EAAmBgF,UAAY,iDACxBhF,EAlB6B,CAmBtCvzJ,GACFxlC,EAAQ+4L,mBAAqBA,EAC7B,IAAID,EAA6B,SAAU/1M,GAEvC,SAAS+1M,EAAYj4M,EAAQmlC,GAEzB,IADA,IAAI7F,EAAS,GACJv+D,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCu+D,EAAOv+D,EAAK,GAAKY,UAAUZ,GAE/B,IAAI+B,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAW44J,QAAU/6O,KAG3D,GAFAD,EAAMqiE,SAAWA,EACjBriE,EAAMo6O,UAAYjF,EAAYiF,UACR,IAAlB59K,EAAO1/D,QAA6B,QAAbulE,EACvB,MAAM,IAAIxhE,MAAM,mEAcpB,OAPIxC,MAAMC,QAAQk+D,EAAO,IAErBx8D,EAAMw8D,OAASA,EAAO,GAGtBx8D,EAAMw8D,OAASA,EAEZx8D,EAUX,OAlCAs+B,EAAU62M,EAAa/1M,GA0BvB+1M,EAAYh5O,UAAU6xF,OAAS,WAC3B,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAI1C,OAHAkxB,EAAOkxC,SAAWpiE,KAAKoiE,SACvBlxC,EAAOqrC,OAASv8D,KAAKu8D,OACrBrrC,EAAO8pN,yBAA2Bh7O,KAAKg7O,uBAChC9pN,GAEXgkN,EAAYiF,UAAY,0CACjBjF,EAnCsB,CAoC/BtzJ,GACFxlC,EAAQ84L,YAAcA,EACtB,IAAID,EAAqC,SAAU91M,GAE/C,SAAS81M,EAAoBh4M,EAAQmlC,EAAU7F,EAAQ0+K,GACnD,IAAIl7O,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQmlC,EAAU7F,IAAWv8D,KAC3DD,EAAMk7O,UAAYA,EAClBl7O,EAAMk9B,OAASA,EACf,IAAIi+M,EAAej+M,EAAOhgC,KAAOggC,EAAOhgC,KAAKJ,OAAS,EACtD,GAAIq+O,EAAe,IAAMD,EACrB,MAAM,IAAIr6O,MAAM,qFAAqFkxB,OAAOopN,EAAc,UAE9H,GAAqB,IAAjBA,GAAsBD,GAAaA,EAAUp+O,OAAS,EACtD,MAAM,IAAI+D,MAAM,wFAEpB,IAAK,IAAI5C,EAAK,EAAGuF,EAAKxD,EAAMk7O,UAAWj9O,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzD,IAAIm9O,EAAW53O,EAAGvF,GAClB,GAAIm9O,EAAU,CACV,IAAIC,EAAgBD,EAASt+O,OAC7B,GAAIu+O,IAAkBF,EAClB,MAAM,IAAIt6O,MAAM,qFAAqFkxB,OAAOspN,EAAe,gBAAgBtpN,OAAOopN,EAAc,WAI5K,OAAOn7O,EAOX,OA5BAs+B,EAAU42M,EAAqB91M,GAuB/B81M,EAAoB/4O,UAAU6xF,OAAS,WACnC,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAE1C,OADAkxB,EAAO+pN,UAAYj7O,KAAKi7O,UACjB/pN,GAEJ+jN,EA7B8B,CA8BvCC,GACF94L,EAAQ64L,oBAAsBA,EAC9B,IAAID,EAAgC,SAAU71M,GAE1C,SAAS61M,EAAe/3M,EAAQmlC,GAC5B,IAAIriE,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAWk5J,WAAar7O,KAG9D,OAFAD,EAAMqiE,SAAWA,EACjBriE,EAAMo6O,UAAYnF,EAAemF,UAC1Bp6O,EASX,OAdAs+B,EAAU22M,EAAgB71M,GAO1B61M,EAAe94O,UAAU6xF,OAAS,WAC9B,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAG1C,OAFAkxB,EAAOkxC,SAAWpiE,KAAKoiE,SACvBlxC,EAAO+L,OAASj9B,KAAKi9B,OACd/L,GAEX8jN,EAAemF,UAAY,6CACpBnF,EAfyB,CAgBlCpzJ,GACFxlC,EAAQ44L,eAAiBA,EACzB,IAAID,EAA6B,SAAU51M,GAEvC,SAAS41M,EAAY93M,EAAQmlC,EAAU7F,GACnC,IAAIx8D,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAWm5J,QAAUt7O,KAI3D,OAHAD,EAAMqiE,SAAWA,EACjBriE,EAAMo6O,UAAYpF,EAAYoF,UAC9Bp6O,EAAMw8D,OAASA,EACRx8D,EAUX,OAhBAs+B,EAAU02M,EAAa51M,GAQvB41M,EAAY74O,UAAU6xF,OAAS,WAC3B,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAI1C,OAHAkxB,EAAOkxC,SAAWpiE,KAAKoiE,SACvBlxC,EAAOqrC,OAASv8D,KAAKu8D,OACrBrrC,EAAO+L,OAASj9B,KAAKi9B,OACd/L,GAEX6jN,EAAYoF,UAAY,0CACjBpF,EAjBsB,CAkB/BnzJ,GACFxlC,EAAQ24L,YAAcA,EACtB,IAAID,EAAgC,SAAU31M,GAE1C,SAAS21M,EAAe73M,EAAQs+M,GAE5B,IADA,IAAI/lK,EAAa,GACRx3E,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCw3E,EAAWx3E,EAAK,GAAKY,UAAUZ,GAEnC,IAQIw9O,EARAz7O,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAWs5J,WAAaz7O,KAG9D,GAFAD,EAAMo6O,UAAYrF,EAAeqF,UAEF,kBAApBoB,GAA2D,IAA3BA,EAAgB1+O,OAEvD,MAAM,IAAI+D,MAAM,yDAAyDkxB,OAAOypN,IAgBpF,GAdAx7O,EAAMw7O,gBAAkBA,GASpBC,EAFAp9O,MAAMC,QAAQm3E,EAAW,IAEHA,EAAW,GAGXA,GAEF34E,OAAS,EAC7B,MAAM,IAAI+D,MAAM,sEAAsEkxB,OAAO0jD,EAAW34E,SAE5G,GAAmC,IAA/B2+O,EAAoB3+O,QAAoC,QAApB0+O,EACpC,MAAM,IAAI36O,MAAM,4EAGpB,OADAb,EAAMy1E,WAAagmK,EACZz7O,EASX,OA3CAs+B,EAAUy2M,EAAgB31M,GAoC1B21M,EAAe54O,UAAU6xF,OAAS,WAC9B,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAG1C,OAFAkxB,EAAOqqN,gBAAkBv7O,KAAKu7O,gBAC9BrqN,EAAOskD,WAAax1E,KAAKw1E,WAClBtkD,GAEX4jN,EAAeqF,UAAY,6CACpBrF,EA5CyB,CA6ClClzJ,GACFxlC,EAAQ04L,eAAiBA,EACzB,IAAID,EAAiC,SAAU11M,GAE3C,SAAS01M,EAAgB53M,EAAQy+M,GAC7B,IAAI37O,EAAQo/B,EAAO79B,KAAKtB,KAAMi9B,EAAQklD,EAAWw5J,YAAc37O,KAG/D,OAFAD,EAAMo6O,UAAYtF,EAAgBsF,UAClCp6O,EAAM27O,cAAgBA,EACf37O,EASX,OAdAs+B,EAAUw2M,EAAiB11M,GAO3B01M,EAAgB34O,UAAU6xF,OAAS,WAC/B,IAAI78D,EAASiO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAG1C,OAFAkxB,EAAOwqN,cAAgB17O,KAAK07O,cAC5BxqN,EAAO+L,OAASj9B,KAAKi9B,OACd/L,GAEX2jN,EAAgBsF,UAAY,8CACrBtF,EAf0B,CAgBnCjzJ,GAUF,SAAS8yJ,EAAcxjN,GACnB,GAAIA,EAAOgxD,WACP,OAAOhxD,EAAOgxD,WAElB,IAAI05J,EAAc1qN,EACd2qN,EAAiB3qN,EACrB,MAAqC,kBAAzB0qN,EAAYx5K,UAChBhkE,MAAMC,QAAQu9O,EAAYr/K,QACvB4lB,EAAW44J,MAE8B,kBAAnCc,EAAeN,iBACxBn9O,MAAMC,QAAQw9O,EAAermK,YAC1B2M,EAAWs5J,SAGXt5J,EAAWm4J,QAQ1B,SAAS9F,EAAStvM,GACd,SAAUA,EAAIylB,QAASzlB,EAAIu0B,QAAWv0B,EAAI42M,qBAjC9C1/L,EAAQy4L,gBAAkBA,EAI1Bz4L,EAAQw4L,yBAHR,SAAkC33M,GAC9B,OAAOu3M,EAASv3M,MAAaA,EAAOhgC,MAMxCm/C,EAAQu4L,sBAHR,SAA+BzjN,GAC3B,OAAOwjN,EAAcxjN,KAAYixD,EAAW44J,SAAW7pN,EAAO+pN,WAqBlE7+L,EAAQs4L,cAAgBA,EAIxBt4L,EAAQq4L,UAHR,SAAmBvvM,GACf,YAAqBlpC,IAAdkpC,EAAIylB,YAAuC3uD,IAAhBkpC,EAAI+uC,SAM1C73B,EAAQo4L,SAAWA,EAInBp4L,EAAQm4L,iBAHR,SAA0BrvM,GACtB,UAAUA,EAAIylB,OAASzlB,EAAI86D,WAAa96D,EAAI62M,iBAAmB72M,EAAI42M,sBAMvE1/L,EAAQk4L,qBAHR,SAA8BpvM,GAC1B,SAAUA,EAAIylB,OAASzlB,EAAI86D,WAAa96D,EAAI62M,gBAAkB72M,EAAI42M,sBAMtE1/L,EAAQi4L,aAHR,SAAsBnvM,GAClB,SAAUA,EAAIylB,OAASzlB,EAAIu0B,QAAUv0B,EAAI42M,sBAM7C1/L,EAAQg4L,sBAHR,SAA+BlvM,GAC3B,QAASA,EAAI82M,qBAIjB,SAAW7H,GACPA,EAAeA,EAA6B,aAAI,GAAK,eACrDA,EAAeA,EAA2B,WAAI,GAAK,aACnDA,EAAeA,EAA0B,UAAI,GAAK,YAHtD,CAIoB/3L,EAAQ+3L,iBAAmB/3L,EAAQ+3L,eAAiB,KAExE,SAAWD,GACPA,EAAcA,EAAsB,OAAI,GAAK,SAC7CA,EAAcA,EAA2B,YAAI,GAAK,cAFtD,CAGmB93L,EAAQ83L,gBAAkB93L,EAAQ83L,cAAgB,KAErE,SAAWD,GACPA,EAAkBA,EAA2B,QAAI,GAAK,UACtDA,EAAkBA,EAAwB,KAAI,GAAK,OACnDA,EAAkBA,EAAuB,IAAI,GAAK,MAClDA,EAAkBA,EAAuB,IAAI,GAAK,MAClDA,EAAkBA,EAAuB,IAAI,GAAK,MAClDA,EAAkBA,EAAyB,MAAI,GAAK,QACpDA,EAAkBA,EAA2B,QAAI,GAAK,UACtDA,EAAkBA,EAAiC,cAAI,GAAK,gBARhE,CASuB73L,EAAQ63L,oBAAsB73L,EAAQ63L,kBAAoB,KAEjF,SAAWD,GACPA,EAA4BA,EAAqC,QAAI,GAAK,UAC1EA,EAA4BA,EAA2C,cAAI,GAAK,gBAFpF,CAGiC53L,EAAQ43L,8BAAgC53L,EAAQ43L,4BAA8B,KAE/G,SAAWD,GACPA,EAAuBA,EAA+B,OAAI,GAAK,SAC/DA,EAAuBA,EAA6B,KAAI,GAAK,OAFjE,CAG4B33L,EAAQ23L,yBAA2B33L,EAAQ23L,uBAAyB,KAEhG,SAAWD,GACPA,EAAQA,EAAqB,YAAI,GAAK,cACtCA,EAAQA,EAAoB,WAAI,GAAK,aAFzC,CAGa13L,EAAQ03L,UAAY13L,EAAQ03L,QAAU,KAEnD,SAAWD,GACPA,EAAeA,EAA2B,WAAI,GAAK,aACnDA,EAAeA,EAA2B,WAAI,GAAK,aAFvD,CAGoBz3L,EAAQy3L,iBAAmBz3L,EAAQy3L,eAAiB,KAExE,SAAWD,GACPA,EAAkBA,EAAuB,IAAI,GAAK,MAClDA,EAAkBA,EAAgC,aAAI,GAAK,eAF/D,CAGuBx3L,EAAQw3L,oBAAsBx3L,EAAQw3L,kBAAoB,KAGjFx3L,EAAQu3L,iBAAmB,CACvBsI,aAAc,eACdC,SAAU,wBACVC,kBAAmB,qBACnBC,iBAAkB,mBAClBC,cAAe,gCACfC,kBAAmB,yDAEvBlgM,EAAQs3L,cAAgB,CACpB6I,KAAM,OACNC,OAAQ,SACRC,MAAO,SAEXrgM,EAAQu9L,eAAiB,CACrB+C,IAAK,MACLC,OAAQ,SACRF,MAAO,QACPF,KAAM,OACNK,UAAW,YACXC,aAAc,eACdC,YAAa,cACbC,WAAY,cAGhB,SAAWrD,GACPA,EAAcA,EAAyB,UAAI,GAAK,YAChDA,EAAcA,EAA0B,WAAI,GAAK,aAFrD,CAGmBt9L,EAAQs9L,gBAAkBt9L,EAAQs9L,cAAgB,KACrE,IAAID,EAA0B,WAC1B,SAASA,EAASuD,GACdh9O,KAAKk6O,QAAU8C,EAOnB,OALAvD,EAASv9O,UAAU6xF,OAAS,WACxB,MAAO,CACHmsJ,QAASl6O,KAAKk6O,UAGfT,EATmB,GAW9Br9L,EAAQq9L,SAAWA,EACnB,IAAID,EAA8B,SAAUr6M,GAExC,SAASq6M,EAAayD,GAClB,IAAIl9O,EAAQo/B,EAAO79B,KAAKtB,KAAMw5O,EAAaW,YAAcn6O,KAEzD,OADAD,EAAMk9O,SAAWA,EACVl9O,EAQX,OAZAs+B,EAAUm7M,EAAcr6M,GAMxBq6M,EAAat9O,UAAU6xF,OAAS,WAC5B,IAAI/8D,EAAWmO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAE5C,OADAgxB,EAASisN,SAAWj9O,KAAKi9O,SAClBjsN,GAEXwoN,EAAaW,UAAY,iDAClBX,EAbuB,CAchCC,GACFr9L,EAAQo9L,aAAeA,EACvB,IAAID,EAAgC,SAAUp6M,GAE1C,SAASo6M,EAAe2D,GACpB,IAAIn9O,EAAQo/B,EAAO79B,KAAKtB,KAAMu5O,EAAeY,YAAcn6O,KAE3D,OADAD,EAAMm9O,WAAaA,EACZn9O,EAQX,OAZAs+B,EAAUk7M,EAAgBp6M,GAM1Bo6M,EAAer9O,UAAU6xF,OAAS,WAC9B,IAAI/8D,EAAWmO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAE5C,OADAgxB,EAASksN,WAAal9O,KAAKk9O,WACpBlsN,GAEXuoN,EAAeY,UAAY,mDACpBZ,EAbyB,CAclCE,GACFr9L,EAAQm9L,eAAiBA,EACzB,IAAID,EAAoC,SAAUn6M,GAE9C,SAASm6M,EAAmB6D,GACxB,IAAIp9O,EAAQo/B,EAAO79B,KAAKtB,KAAMu5O,EAAeY,YAAcn6O,KAE3D,OADAD,EAAMo9O,WAAaA,EACZp9O,EAQX,OAZAs+B,EAAUi7M,EAAoBn6M,GAM9Bm6M,EAAmBp9O,UAAU6xF,OAAS,WAClC,IAAI/8D,EAAWmO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAE5C,OADAgxB,EAASmsN,WAAan9O,KAAKm9O,WACpBnsN,GAEXsoN,EAAmBa,UAAY,uDACxBb,EAb6B,CActCG,GACFr9L,EAAQk9L,mBAAqBA,EAC7B,IAAID,EAAsC,SAAUl6M,GAEhD,SAASk6M,EAAqBp8M,GAC1B,IAAIl9B,EAAQo/B,EAAO79B,KAAKtB,KAAMu5O,EAAeY,YAAcn6O,KAE3D,OADAD,EAAMk9B,OAASA,EACRl9B,EAQX,OAZAs+B,EAAUg7M,EAAsBl6M,GAMhCk6M,EAAqBn9O,UAAU6xF,OAAS,WACpC,IAAI/8D,EAAWmO,EAAOjjC,UAAU6xF,OAAOzsF,KAAKtB,MAE5C,OADAgxB,EAASiM,OAASj9B,KAAKi9B,OAChBjM,GAEXqoN,EAAqBc,UAAY,yDAC1Bd,EAb+B,CAcxCI,GA8BF,SAAST,EAAqBhoK,GAC1B,OAAO5yE,MAAMC,QAAQ2yE,GAOzB,SAAS8nK,EAAuBsE,GAC5B,OAAOA,KAAmBA,EAAc9mK,UAO5C,SAASsiK,EAAkByE,GACvB,OAAOj/O,MAAMC,QAAQg/O,GAGzB,SAASC,EAAe74N,GACpB,IAAI9jB,EAAU8jB,EAAM9jB,QAIpB,OAHKA,IACDA,EAAU,GAAGmxB,OAAOrN,EAAM6uE,KAAM,6BAA6BxhE,OAAOrN,EAAM84N,QAAS,gBAEhF,CACH58O,QAASA,GAvDjBy7C,EAAQi9L,qBAAuBA,EAE/B,SAAWD,GACPA,EAAqBA,EAA8B,QAAI,GAAK,UAC5DA,EAAqBA,EAA+B,SAAI,GAAK,WAC7DA,EAAqBA,EAA6B,OAAI,GAAK,SAH/D,CAI0Bh9L,EAAQg9L,uBAAyBh9L,EAAQg9L,qBAAuB,KAK1F,SAAWD,GAEPA,EAAmBA,EAA6B,SAAI,GAAK,WAEzDA,EAAmBA,EAA4B,QAAI,GAAK,UAExDA,EAAmBA,EAAsC,kBAAI,GAAK,oBANtE,CAOwB/8L,EAAQ+8L,qBAAuB/8L,EAAQ+8L,mBAAqB,KAGpF,SAAWD,GACPA,EAA6BA,EAAsC,QAAI,GAAK,UAC5EA,EAA6BA,EAAuC,SAAI,GAAK,WAFjF,CAGkC98L,EAAQ88L,+BAAiC98L,EAAQ88L,6BAA+B,KAIlH98L,EAAQ68L,gBAHR,SAAyBjoK,GACrB,OAAOA,IAAYgoK,EAAqBhoK,IAM5C50B,EAAQ48L,qBAAuBA,EAI/B58L,EAAQ28L,oBAHR,SAA6BqE,GACzB,OAAOA,IAAkBtE,EAAuBsE,IAMpDhhM,EAAQ08L,uBAAyBA,EAIjC18L,EAAQy8L,cAHR,SAAuBwE,GACnB,OAAOA,IAAezE,EAAkByE,IAM5CjhM,EAAQw8L,kBAAoBA,EAc5Bx8L,EAAQu8L,uBAJR,SAAgC33K,GAC5B,IAAIw8K,EAASvD,EAAYwD,WAAWC,wBAAwB38I,SAAS//B,GACrE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQs8L,eAJR,SAAwB13K,GACpB,IAAIw8K,EAASvD,EAAYwD,WAAWE,gBAAgB58I,SAAS//B,GAC7D,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQq8L,oBAJR,SAA6Bz3K,GACzB,IAAIw8K,EAASvD,EAAYwD,WAAWG,qBAAqB78I,SAAS//B,GAClE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQo8L,4BAJR,SAAqCx3K,GACjC,IAAIw8K,EAASvD,EAAYwD,WAAWI,6BAA6B98I,SAAS//B,GAC1E,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQm8L,2BAJR,SAAoCv3K,GAChC,IAAIw8K,EAASvD,EAAYwD,WAAWK,4BAA4B/8I,SAAS//B,GACzE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQk8L,mCAJR,SAA4Ct3K,GACxC,IAAIw8K,EAASvD,EAAYwD,WAAWM,oCAAoCh9I,SAAS//B,GACjF,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQi8L,kCAJR,SAA2Cr3K,GACvC,IAAIw8K,EAASvD,EAAYwD,WAAWO,mCAAmCj9I,SAAS//B,GAChF,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQg8L,+BAJR,SAAwCp3K,GACpC,IAAIw8K,EAASvD,EAAYwD,WAAWQ,gCAAgCl9I,SAAS//B,GAC7E,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ+7L,iBAJR,SAA0Bn3K,GACtB,IAAIw8K,EAASvD,EAAYwD,WAAWS,kBAAkBn9I,SAAS//B,GAC/D,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ87L,cAJR,SAAuBl3K,GACnB,IAAIw8K,EAASvD,EAAYwD,WAAWU,qBAAqBp9I,SAAS//B,GAClE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ67L,sBAJR,SAA+Bj3K,GAC3B,IAAIw8K,EAASvD,EAAYwD,WAAWW,uBAAuBr9I,SAAS//B,GACpE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ47L,oBAJR,SAA6Bh3K,GACzB,IAAIw8K,EAASvD,EAAYwD,WAAWY,qBAAqBt9I,SAAS//B,GAClE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ27L,mBAJR,SAA4B/2K,GACxB,IAAIw8K,EAASvD,EAAYwD,WAAWa,oBAAoBv9I,SAAS//B,GACjE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ07L,2BAJR,SAAoC92K,GAChC,IAAIw8K,EAASvD,EAAYwD,WAAWc,4BAA4Bx9I,SAAS//B,GACzE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQy7L,sBAJR,SAA+B72K,GAC3B,IAAIw8K,EAASvD,EAAYwD,WAAWe,uBAAuBz9I,SAAS//B,GACpE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQw7L,wBAJR,SAAiC52K,GAC7B,IAAIw8K,EAASvD,EAAYwD,WAAWgB,yBAAyB19I,SAAS//B,GACtE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQu7L,2BAJR,SAAoC32K,GAChC,IAAIw8K,EAASvD,EAAYwD,WAAWiB,4BAA4B39I,SAAS//B,GACzE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQs7L,uBAJR,SAAgC12K,GAC5B,IAAIw8K,EAASvD,EAAYwD,WAAWkB,wBAAwB59I,SAAS//B,GACrE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQq7L,kBAJR,SAA2Bz2K,GACvB,IAAIw8K,EAASvD,EAAYwD,WAAWmB,mBAAmB79I,SAAS//B,GAChE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQo7L,2BAJR,SAAoCx2K,GAChC,IAAIw8K,EAASvD,EAAYwD,WAAWoB,4BAA4B99I,SAAS//B,GACzE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQm7L,mBAJR,SAA4Bv2K,GACxB,IAAIw8K,EAASvD,EAAYwD,WAAWqB,oBAAoB/9I,SAAS//B,GACjE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQk7L,4BAJR,SAAqCt2K,GACjC,IAAIw8K,EAASvD,EAAYwD,WAAWsB,6BAA6Bh+I,SAAS//B,GAC1E,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQi7L,qBAJR,SAA8Br2K,GAC1B,IAAIw8K,EAASvD,EAAYwD,WAAWuB,sBAAsBj+I,SAAS//B,GACnE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQg7L,oBAJR,SAA6Bp2K,GACzB,IAAIw8K,EAASvD,EAAYwD,WAAWwB,qBAAqBl+I,SAAS//B,GAClE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ+6L,sBAJR,SAA+Bn2K,GAC3B,IAAIw8K,EAASvD,EAAYwD,WAAWyB,uBAAuBn+I,SAAS//B,GACpE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ86L,iBAJR,SAA0Bl2K,GACtB,IAAIw8K,EAASvD,EAAYwD,WAAW0B,kBAAkBp+I,SAAS//B,GAC/D,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ66L,aAJR,SAAsBj2K,GAClB,IAAIw8K,EAASvD,EAAYwD,WAAW2B,cAAcr+I,SAAS//B,GAC3D,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ46L,eAJR,SAAwBh2K,GACpB,IAAIw8K,EAASvD,EAAYwD,WAAW4B,gBAAgBt+I,SAAS//B,GAC7D,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ26L,6BAJR,SAAsC/1K,GAClC,IAAIw8K,EAASvD,EAAYwD,WAAW6B,8BAA8Bv+I,SAAS//B,GAC3E,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ06L,yBAJR,SAAkC91K,GAC9B,IAAIw8K,EAASvD,EAAYwD,WAAW8B,0BAA0Bx+I,SAAS//B,GACvE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQy6L,6BAJR,SAAsC71K,GAClC,IAAIw8K,EAASvD,EAAYwD,WAAW+B,iBAAiBz+I,SAAS//B,GAC9D,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQw6L,8BAJR,SAAuC51K,GACnC,IAAIw8K,EAASvD,EAAYwD,WAAWgC,+BAA+B1+I,SAAS//B,GAC5E,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQu6L,0BAJR,SAAmC31K,GAC/B,IAAIw8K,EAASvD,EAAYwD,WAAWiC,2BAA2B3+I,SAAS//B,GACxE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQs6L,qBAJR,SAA8B11K,GAC1B,IAAIw8K,EAASvD,EAAYwD,WAAWkC,sBAAsB5+I,SAAS//B,GACnE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ49L,uBAJR,SAAgCh5K,GAC5B,IAAIw8K,EAASvD,EAAYwD,WAAWmC,wBAAwB7+I,SAAS//B,GACrE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ29L,yBAJR,SAAkC/4K,GAC9B,IAAIw8K,EAASvD,EAAYwD,WAAWoC,0BAA0B9+I,SAAS//B,GACvE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQ09L,oBAJR,SAA6B94K,GACzB,IAAIw8K,EAASvD,EAAYwD,WAAWqC,qBAAqB/+I,SAAS//B,GAClE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQy9L,kBAJR,SAA2B74K,GACvB,IAAIw8K,EAASvD,EAAYwD,WAAWsC,mBAAmBh/I,SAAS//B,GAChE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,GAOjDogD,EAAQw9L,sBAJR,SAA+B54K,GAC3B,IAAIw8K,EAASvD,EAAYwD,WAAWuC,uBAAuBj/I,SAAS//B,GACpE,OAAOw8K,EAASA,EAAO/4O,IAAI64O,QAAkBthP,IAO1C,SAACw3O,EAAyBp3L,EAAS6jM,GAI1C/hP,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQqhM,gBAAa,EACrB,IAAIyC,EAAkBD,EAAiC,GACnDE,EAAsBF,EAAiC,GACvDG,EAA8BH,EAAiC,GAC/DI,EAAyBJ,EAAiC,GAC1DK,EAA2BL,EAAiC,GAC5DM,EAA4BN,EAAiC,GAC7DO,EAAwBP,EAAiC,IACzDQ,EAAwBR,EAAiC,IACzDS,EAAqBT,EAAiC,IACtDU,EAAoBV,EAAiC,IACrDW,EAAkBX,EAAiC,IACnDY,EAAmBZ,EAAiC,IACpDa,EAAiBb,EAAiC,IAClDc,EAA0Bd,EAAiC,IAC3De,EAAwBf,EAAiC,IACzDgB,EAAiChB,EAAiC,IAClEiB,EAA8BjB,EAAiC,IAC/DkB,EAAuBlB,EAAiC,IACxDmB,EAAsBnB,EAAiC,IACvDoB,EAAqBpB,EAAiC,IACtDqB,EAAsBrB,EAAiC,IACvDsB,EAA4BtB,EAAiC,IAC7DuB,EAAmBvB,EAAiC,IACpDwB,EAA4BxB,EAAiC,IAC7DyB,EAA2BzB,EAAiC,IAC5D0B,EAAiB1B,EAAiC,IAClD2B,EAAkB3B,EAAiC,GACnD4B,EAA4B5B,EAAiC,IAC7D6B,EAAiC7B,EAAiC,IAClE8B,EAAyB9B,EAAiC,IAC1D+B,EAA2B/B,EAAiC,IAChE7jM,EAAQqhM,WAAa,CACjBK,4BAA6B,IAAIqC,EAAoB8B,4BACrDC,4BAA6B,IAAIN,EAAgBO,cAAc,CAAC,IAChEC,wBAAyB,IAAI1B,EAAmB2B,wBAChDC,kBAAmB,IAAIV,EAAgBW,eAAe,CAAC,IAAIf,EAAiBgB,eAAe,CAAC,IAAIZ,EAAgBa,gBAAmB,IAAIb,EAAgBc,gBAAmB,IAAId,EAAgBe,qBAC9LC,mBAAoB,IAAIpB,EAAiBgB,eAAe,CAAC,IAAI9B,EAAmBmC,qBAAwB,IAAInC,EAAmB2B,wBAA2B,IAAI3B,EAAmBoC,8BAAiC,IAAIpC,EAAmBqC,4BAA+B,IAAIrC,EAAmBsC,4BAA+B,IAAItC,EAAmBuC,oBAAuB,IAAIvC,EAAmBwC,4BAA+B,IAAIxC,EAAmByC,2BACzbC,kBAAmB,IAAI5B,EAAiBgB,eAAe,CAAC,IAAIZ,EAAgBa,gBAAmB,IAAIb,EAAgBc,gBAAmB,IAAId,EAAgBe,mBAC1JU,mBAAoB,IAAInD,EAAgBoD,mBACxCC,mBAAoB,IAAIrD,EAAgBsD,mBACxCzF,oCAAqC,IAAIoC,EAAoBsD,oCAC7DzF,mCAAoC,IAAImC,EAAoBuD,mCAC5DC,uBAAwB,IAAInC,EAAiBgB,eAAe,CAAC,IAAIrC,EAAoBsD,oCAAuC,IAAItD,EAAoBuD,qCACpJE,oBAAqB,IAAIhC,EAAgBO,cAAc,CAAC,EAAG,IAC3D0B,yBAA0B,IAAIjC,EAAgBO,cAAc,CAAC,IAC7D2B,qBAAsB,IAAIpD,EAAmBmC,qBAC7CkB,sBAAuB,IAAInC,EAAgBoC,sBAC3CC,iBAAkB,IAAIrC,EAAgBe,iBACtCvE,uBAAwB,IAAIyC,EAAiBqD,uBAC7CC,gCAAiC,IAAIhE,EAAoBiE,gCACzDnG,gCAAiC,IAAIkC,EAAoBkE,gCACzDC,2BAA4B,IAAI1C,EAAgBW,eAAe,CAAC,IAAIT,EAA+ByC,wBACnGC,8BAA+B,IAAI5C,EAAgBO,cAAc,CAAC,EAAG,EAAG,IACxEsC,kCAAmC,IAAIjD,EAAiBgB,eAAe,CAAC,IAAIrB,EAAqBuD,wBAA2B,IAAIvD,EAAqBwD,8BACrJC,+BAAgC,IAAIhD,EAAgBW,eAAe,CAAC,IAAI9B,EAAsBoE,4BAC9FC,0BAA2B,IAAIrE,EAAsBoE,0BACrDE,+BAAgC,IAAInD,EAAgBW,eAAe,CAAC,IAAInC,EAA4B4E,4BACpGnF,0BAA2B,IAAIO,EAA4B4E,0BAC3DC,uBAAwB,IAAIvE,EAAmBwE,uBAC/CC,sBAAuB,IAAIvD,EAAgBO,cAAc,CAAC,EAAG,EAAG,EAAG,EAAG,IACtEiD,2BAA4B,IAAIzD,EAAe0D,aAAa,CAAC,IAAIzD,EAAgBa,iBAAoB,CAAC,IAAIb,EAAgBa,kBAC1H6C,qBAAsB,IAAIxD,EAA+ByD,qBACzDC,wBAAyB,IAAI5D,EAAgBO,cAAc,CAAC,EAAG,EAAG,IAClEsD,mCAAoC,IAAI7D,EAAgBO,cAAc,CAAC,EAAG,EAAG,IAC7EuD,sBAAuB,IAAI/E,EAAkBgF,sBAC7ChH,wBAAyB,IAAIiC,EAAgBgF,wBAC7C9F,qBAAsB,IAAIO,EAAuBwF,qBACjD3G,uBAAwB,IAAIoB,EAAyBwF,uBACrDC,uBAAwB,IAAInE,EAAgBO,cAAc,CAAC,EAAG,IAC9D6D,wBAAyB,IAAIzF,EAA0B0F,wBACvDC,6BAA8B,IAAIpE,EAA+BqE,6BACjEC,oCAAqC,IAAItE,EAA+BuE,oCACxEC,0BAA2B,IAAI1E,EAAgBO,cAAc,CAAC,EAAG,IACjEoE,sBAAuB,IAAI5F,EAAkB6F,sBAC7C9G,2BAA4B,IAAIc,EAAsBiG,2BACtDC,wBAAyB,IAAI9E,EAAgBW,eAAe,CAAC,IAAI9B,EAAsBkG,qBACvFC,oBAAqB,IAAIpF,EAAiBgB,eAAe,CAAC,IAAIZ,EAAgBW,eAAe,CAAC,IAAI9B,EAAsBkG,qBAAwB,IAAIlG,EAAsBoG,sBAC1KC,yBAA0B,IAAIrG,EAAsBsG,yBACpDnI,mBAAoB,IAAI6B,EAAsBkG,mBAC9CK,wBAAyB,IAAIvF,EAA0BwF,wBACvDC,uBAAwB,IAAIxF,EAAyByF,uBACrD7I,oBAAqB,IAAIuC,EAAiBuG,oBAC1CC,4BAA6B,IAAI3G,EAAmB4G,4BACpDC,+BAAgC,IAAI7G,EAAmB8G,+BACvDC,0BAA2B,IAAI7F,EAAgBW,eAAe,CAAC,IAAI7B,EAAmBwE,yBACtFwC,+BAAgC,IAAIhH,EAAmBiH,+BACvDC,6BAA8B,IAAIlH,EAAmBmH,6BACrDC,sBAAuB,IAAItG,EAAiBgB,eAAe,CAAC,IAAI9B,EAAmB4G,4BAA+B,IAAI5G,EAAmBiH,+BAAkC,IAAIjH,EAAmBmH,6BAAgC,IAAIjG,EAAgBW,eAAe,CAAC,IAAIf,EAAiBgB,eAAe,CAAC,IAAI9B,EAAmB4G,4BAA+B,IAAI5G,EAAmBiH,+BAAkC,IAAIjH,EAAmBmH,6BAAgC,IAAInH,EAAmBqH,gCAAmC,IAAIrH,EAAmBsH,wCACliB3I,gBAAiB,IAAIqB,EAAmBuH,gBACxCC,oBAAqB,IAAItG,EAAgBO,cAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAChFgG,sBAAuB,IAAIvG,EAAgBW,eAAe,CAAC,IAAI7B,EAAmBuH,kBAClFG,iCAAkC,IAAIxG,EAAgBO,cAAc,CAAC,EAAG,EAAG,IAC3EkG,oCAAqC,IAAIzG,EAAgBO,cAAc,CAAC,IACxE9D,qBAAsB,IAAIwC,EAAiByH,qBAC3CC,gCAAiC,IAAI3G,EAAgBO,cAAc,CAAC,EAAG,EAAG,IAC1EqG,8BAA+B,IAAI9H,EAAmBoC,8BACtD2F,iCAAkC,IAAI7G,EAAgBO,cAAc,CAAC,IACrEuG,6BAA8B,IAAI9G,EAAgBO,cAAc,CAAC,IACjEwG,+BAAgC,IAAI/G,EAAgBW,eAAe,CAAC,IAAI7B,EAAmBkI,+BAC3FC,oBAAqB,IAAIjH,EAAgBO,cAAc,CAAC,EAAG,EAAG,EAAG,IACjE3C,iBAAkB,IAAIsB,EAAegI,iBACrCC,uBAAwB,IAAIvH,EAAiBgB,eAAe,CAAC,IAAI/B,EAAsBuI,2BAA8B,IAAIvI,EAAsBwI,gCAC/IC,iCAAkC,IAAItH,EAAgBW,eAAe,CAAC,IAAI9B,EAAsB0I,8BAChGtK,4BAA6B,IAAI4B,EAAsB0I,4BACvDC,sBAAuB,IAAIxH,EAAgBO,cAAc,CAAC,EAAG,IAC7DkH,gCAAiC,IAAIzH,EAAgBO,cAAc,CAAC,IACpEmH,4BAA6B,IAAI5I,EAAmBqC,4BACpDwG,qBAAsB,IAAI3H,EAAgB4H,qBAC1CC,gBAAiB,IAAI7H,EAAgBc,gBACrCgH,2BAA4B,IAAIlI,EAAiBgB,eAAe,CAAC,IAAI9B,EAAmBiJ,2BAA8B,IAAIjJ,EAAmBkJ,4CAC7IC,oBAAqB,IAAIlI,EAAe0D,aAAa,CAAC,IAAIzD,EAAgBa,iBAAoB,CAAC,IAAI9B,EAAkBmJ,wBACrHvL,4BAA6B,IAAIsC,EAAiBkJ,4BAClDC,gCAAiC,IAAIpI,EAAgBO,cAAc,CAAC,EAAG,IACvE8H,sBAAuB,IAAIrI,EAAgBO,cAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IACzE+H,kBAAmB,IAAItJ,EAAgBuJ,kBACvC/K,cAAe,IAAIwB,EAAgBwJ,cACnCC,uBAAwB,IAAIzJ,EAAgB0J,uBAC5CC,qBAAsB,IAAI5I,EAAe0D,aAAa,CAAC,IAAIzD,EAAgBa,iBAAoB,CAAC,IAAI9B,EAAkB6J,sBACtHC,iCAAkC,IAAIrK,EAA4BsK,iCAClE3L,6BAA8B,IAAIkC,EAA+B0J,6BACjEC,iCAAkC,IAAIxJ,EAAoByJ,iCAC1DC,8BAA+B,IAAIlJ,EAAgBW,eAAe,CAAC,IAAItB,EAA+B8J,iCACtGC,yBAA0B,IAAInJ,EAA0BoJ,yBACxDC,qBAAsB,IAAItJ,EAAgBO,cAAc,CAAC,EAAG,EAAG,EAAG,EAAG,IACrEtE,6BAA8B,IAAIsC,EAAoBgL,6BACtDnL,uBAAwB,IAAIgC,EAAyBoJ,uBACrD3L,+BAAgC,IAAIqB,EAAeuK,+BACnDC,kBAAmB,IAAIzK,EAAiB0K,kBACxCC,oBAAqB,IAAI1K,EAAe2K,qBACxCxM,qBAAsB,IAAI8C,EAAuB2J,qBACjDC,iBAAkB,IAAI/J,EAAgBW,eAAe,CAAC,IAAIX,EAAgBW,eAAe,CAAC,IAAIX,EAAgBa,oBAC9GmJ,oCAAqC,IAAIhK,EAAgBO,cAAc,CAAC,EAAG,EAAG,IAC9E0J,wCAAyC,IAAIjK,EAAgBO,cAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAC9F2J,gCAAiC,IAAIlK,EAAgBO,cAAc,CAAC,IACpE4J,4BAA6B,IAAIrL,EAAmBsC,4BACpDgJ,oCAAqC,IAAIpK,EAAgBO,cAAc,CAAC,EAAG,IAC3E8J,wCAAyC,IAAIrK,EAAgBO,cAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACpG+J,wCAAyC,IAAItK,EAAgBO,cAAc,CAAC,EAAG,IAC/EgK,gCAAiC,IAAIvK,EAAgBO,cAAc,CAAC,IACpEiK,4BAA6B,IAAI1L,EAAmBwC,4BACpDmJ,oBAAqB,IAAInM,EAAgBoM,oBACzCtN,sBAAuB,IAAI+B,EAAwBwL,sBACnDC,2BAA4B,IAAIhL,EAAiBgB,eAAe,CAAC,IAAIZ,EAAgBW,eAAe,CAAC,IAAI7B,EAAmBuH,kBAAqB,IAAIvH,EAAmB+L,yBACxK3N,oBAAqB,IAAIkC,EAAsB0L,oBAC/CvO,qBAAsB,IAAI0C,EAAiB8L,qBAC3CpN,0BAA2B,IAAI2B,EAA4B0L,0BAC3DpO,uBAAwB,IAAIqC,EAAiBgM,uBAC7C3O,kBAAmB,IAAIkD,EAAoB0L,kBAC3CC,+BAAgC,IAAI3M,EAA4B4M,+BAChEC,wBAAyB,IAAIzL,EAAiBgB,eAAe,CAAC,IAAIrB,EAAqBuD,wBAA2B,IAAIvD,EAAqB+L,gCAC3ItP,qBAAsB,IAAIyD,EAAmB8L,qBAC7CC,sBAAuB,IAAI5L,EAAiBgB,eAAe,CAAC,IAAI9B,EAAmB4G,4BAA+B,IAAI5G,EAAmBiH,+BAAkC,IAAIjH,EAAmBmH,6BAAgC,IAAInH,EAAmBqH,gCAAmC,IAAIrH,EAAmBsH,oCACnTrK,gBAAiB,IAAI0D,EAAmBgM,gBACxCC,qBAAsB,IAAI1L,EAAgB2L,qBAC1CC,gBAAiB,IAAI5L,EAAgBa,gBACrChE,yBAA0B,IAAIoC,EAAiB4M,yBAC/CC,wBAAyB,IAAI9L,EAAgBW,eAAe,CAAC,IAAIT,EAA+B6L,qBAChGC,yBAA0B,IAAIhM,EAAgBW,eAAe,CAAC,IAAIT,EAA+B+L,uBACjG1O,kBAAmB,IAAImC,EAAoBwM,kBAC3CC,mBAAoB,IAAInM,EAAgBO,cAAc,CAAC,EAAG,IAC1D6L,wBAAyB,IAAIpM,EAAgBO,cAAc,CAAC,IAC5D8L,oBAAqB,IAAIvN,EAAmBuC,oBAC5C3D,8BAA+B,IAAIkC,EAAiBgB,eAAe,CAAC,IAAI9B,EAAmBwN,8BAAiC,IAAIxN,EAAmByN,gCACnJC,kBAAmB,IAAIxM,EAAgBO,cAAc,CAAC,EAAG,IACzDkM,+BAAgC,IAAI7M,EAAiBgB,eAAe,CAAC,IAAIrB,EAAqBuD,wBAA2B,IAAIvD,EAAqBwD,8BAClJ2J,8BAA+B,IAAI9M,EAAiBgB,eAAe,CAAC,IAAIrB,EAAqBuD,wBAA2B,IAAIvD,EAAqBwD,8BACjJ4J,8BAA+B,IAAIhN,EAA0BiN,8BAC7D7O,sBAAuB,IAAI4B,EAA0BkN,sBACrDC,uBAAwB,IAAI9M,EAAgBW,eAAe,CAAC,IAAIhB,EAA0BkN,wBAC1F/P,4BAA6B,IAAImC,EAAiB8N,4BAClDC,sBAAuB,IAAIjO,EAAkBmJ,sBAC7CpM,wBAAyB,IAAIyD,EAAqBuD,wBAClD9E,wBAAyB,IAAI2B,EAA0BsN,wBACvDC,4BAA6B,IAAI3N,EAAqBwD,4BACtD5E,mBAAoB,IAAI6B,EAAgBmN,eAAe,IAAM,KAM1D,SAASvb,EAAyBp3L,EAAS4yM,GAIlD,IAAI3wN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQonM,mBAAqBpnM,EAAQknM,mBAAqBlnM,EAAQkwM,yBAAsB,EACxF,IAAI2C,EAA4BD,EAAiC,GAC7DpN,EAAkBoN,EAAiC,GACnD/U,EAAc+U,EAAiC,GAC/C1C,EAAqC,SAAUntN,GAE/C,SAASmtN,IACL,OAAkB,OAAXntN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUiuN,EAAqBntN,GAI/BmtN,EAAoBpwP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC5D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAW4F,qBAExC,CACI7pL,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAW8F,sBAI5C,OAD8B,IAAI0L,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD8yL,EA1B8B,CA2BvC1K,EAAgBwN,iBAClBhzM,EAAQkwM,oBAAsBA,EAC9B,IAAIhJ,EAAoC,SAAUnkN,GAE9C,SAASmkN,IACL,OAAkB,OAAXnkN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUilN,EAAoBnkN,GAI9BmkN,EAAmBpnP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC3D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD8pL,EAtB6B,CAuBtC1B,EAAgBwN,iBAClBhzM,EAAQknM,mBAAqBA,EAC7B,IAAIE,EAAoC,SAAUrkN,GAE9C,SAASqkN,IACL,OAAkB,OAAXrkN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUmlN,EAAoBrkN,GAI9BqkN,EAAmBtnP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC3D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDgqL,EAtB6B,CAuBtC5B,EAAgBwN,iBAClBhzM,EAAQonM,mBAAqBA,GAKtB,SAAChQ,EAAyBp3L,GAIjCl+C,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ+yM,6BAA0B,EAClC,IAAIA,EAAyC,WACzC,SAASA,EAAwBE,GAC7BrvP,KAAKqvP,qBAAuBA,EAmBhC,OAjBAF,EAAwBjzP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAChE,IAAKx5D,KAAKqvP,qBACN,OAAO,KAGX,IADA,IAAIC,EAAah8J,EAAOA,EAAO,IAAM95B,EAAQA,EACpCx7D,EAAK,EAAGuF,EAAKvD,KAAKqvP,qBAAsBrxP,EAAKuF,EAAG1G,OAAQmB,IAE7D,IADA,IAAIuxP,EAAkBhsP,EAAGvF,GAChB+2B,EAAK,EAAGI,EAAKo6N,EAAgBL,WAAYn6N,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACpE,IACIyoN,EADYroN,EAAGJ,GACIgsE,SAAS//B,EAAMuuL,EAAgB/1L,OAAQ81L,EAAYC,EAAgB/1L,OAC1F,GAAIgkL,EACA,OAAOA,EAInB,OAAO,MAEJ2R,EArBkC,GAuB7C/yM,EAAQ+yM,wBAA0BA,GAK3B,SAAS3b,EAAyBp3L,GAIzC,IAAI/d,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ2yM,eAAiB3yM,EAAQotM,qBAAuBptM,EAAQ4nM,sBAAwB5nM,EAAQmxM,qBAAuBnxM,EAAQ+lM,cAAgB/lM,EAAQozM,gBAAkBpzM,EAAQqzM,eAAiBrzM,EAAQsmM,gBAAkBtmM,EAAQumM,iBAAmBvmM,EAAQqmM,gBAAkBrmM,EAAQszM,cAAgBtzM,EAAQmmM,eAAiBnmM,EAAQgzM,qBAAkB,EAC5V,IAAIA,EAAiC,WACjC,SAASA,KAeT,OAbAA,EAAgBlzP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACxD,OAAa,MAATwH,EACO,KAEU,kBAAVA,GAAsB5iE,MAAMC,QAAQ2iE,GACpC,CAAC,CACArgE,aAAmB3E,IAAVw9D,EAAsBA,EAAQ,qBAAuB,0BAC9D85B,KAAMA,EACNiqJ,QAAS,SAGd,MAEJ6R,EAhB0B,GAkBrChzM,EAAQgzM,gBAAkBA,EAC1B,IAAI7M,EAAgC,WAChC,SAASA,EAAeoN,GACpB3vP,KAAK2vP,eAAiBA,EA6B1B,OA3BApN,EAAermP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACvD,GAAa,MAATwH,EACA,OAAO,KAEX,IAAM5iE,MAAMC,QAAQ2iE,GAChB,MAAO,CAAC,CACArgE,QAAS64D,EAAQ,uBACjB85B,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,SAGrB,IAAK,IAAI3gP,EAAI,EAAGA,EAAIokE,EAAMnkE,OAAQD,IAE9B,IADA,IAAI0yP,GAAch8J,EAAOA,EAAO,IAAM,IAAM95B,EAAQ,IAAM58D,EAAEuQ,WACnDnP,EAAK,EAAGuF,EAAKvD,KAAK2vP,eAAgB3xP,EAAKuF,EAAG1G,OAAQmB,IAGvD,GAFgBuF,EAAGvF,GACI+iG,SAAS//B,EAAMpkE,GAAI0yP,EAAY91L,GAElD,MAAO,CAAC,CACA74D,QAAS64D,EAAQ,uBACjB85B,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,SAK7B,OAAO,MAEJgF,EA/ByB,GAiCpCnmM,EAAQmmM,eAAiBA,EACzB,IAAImN,EAA+B,WAC/B,SAASA,EAAcE,GACnB5vP,KAAK4vP,aAAeA,EAexB,OAbAF,EAAcxzP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACtD,OAAa,MAATwH,EACO,YAEEA,IAAUhhE,KAAK4vP,aACjB,CAAC,CACAjvP,QAAS64D,EAAQ,cAAgBx5D,KAAK4vP,aACtCt8J,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,SAGd,MAEJmS,EAjBwB,GAmBnCtzM,EAAQszM,cAAgBA,EACxB,IAAIjN,EAAiC,SAAUtjN,GAE3C,SAASsjN,IACL,OAAOtjN,EAAO79B,KAAKtB,KAAM,WAAaA,KAE1C,OAJAq+B,EAAUokN,EAAiBtjN,GAIpBsjN,EAL0B,CAMnCiN,GACFtzM,EAAQqmM,gBAAkBA,EAC1B,IAAIE,EAAkC,SAAUxjN,GAE5C,SAASwjN,IACL,OAAOxjN,EAAO79B,KAAKtB,KAAM,YAAcA,KAE3C,OAJAq+B,EAAUskN,EAAkBxjN,GAIrBwjN,EAL2B,CAMpC+M,GACFtzM,EAAQumM,iBAAmBA,EAC3B,IAAID,EAAiC,SAAUvjN,GAE3C,SAASujN,IACL,OAAOvjN,EAAO79B,KAAKtB,KAAM,WAAaA,KAE1C,OAJAq+B,EAAUqkN,EAAiBvjN,GAIpBujN,EAL0B,CAMnCgN,GACFtzM,EAAQsmM,gBAAkBA,EAC1B,IAAI+M,EAAgC,WAChC,SAASA,EAAeI,GACpB7vP,KAAK6vP,eAAiBA,EAe1B,OAbAJ,EAAevzP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACvD,OAAa,MAATwH,EACO,KAEPhhE,KAAK6vP,eAAe1xP,QAAQ6iE,GAAS,EAC9B,CAAC,CACArgE,QAAS64D,EAAQ,uBACjB85B,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,YAGd,MAEJkS,EAjByB,GAmBpCrzM,EAAQqzM,eAAiBA,EACzB,IAAID,EAAiC,SAAUrwN,GAE3C,SAASqwN,EAAgBM,GACrB,IAAI/vP,EAAQo/B,EAAO79B,KAAKtB,KAAM,CAAC8vP,KAAiB9vP,KAEhD,OADAD,EAAM+vP,YAAcA,EACb/vP,EAKX,OATAs+B,EAAUmxN,EAAiBrwN,GAM3BqwN,EAAgBtzP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACxD,OAAOr6B,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,IAEtDg2L,EAV0B,CAWnCC,GACFrzM,EAAQozM,gBAAkBA,EAC1B,IAAIrN,EAA+B,SAAUhjN,GAEzC,SAASgjN,EAAc0N,GACnB,IAAI9vP,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAEjC,OADAD,EAAM8vP,eAAiBA,EAChB9vP,EAaX,OAjBAs+B,EAAU8jN,EAAehjN,GAMzBgjN,EAAcjmP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACtD,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,OAAIgkL,GAGiB,IAAIiS,EAAezvP,KAAK6vP,gBACvB9uJ,SAAS//B,EAAOsyB,EAAM95B,IAEzC2oL,EAlBwB,CAmBjCO,GACFtmM,EAAQ+lM,cAAgBA,EACxB,IAAIoL,EAAsC,SAAUpuN,GAEhD,SAASouN,IACL,OAAOpuN,EAAO79B,KAAKtB,KAAM,CAAC,IAAIyiP,KAAuBziP,KAazD,OAfAq+B,EAAUkvN,EAAsBpuN,GAIhCouN,EAAqBrxP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAE7D,OADar6B,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAEpD,CAAC,CACA74D,QAAS64D,EAAQ,+BACjB85B,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,SAGd,MAEJgQ,EAhB+B,CAiBxChL,GACFnmM,EAAQmxM,qBAAuBA,EAC/B,IAAIvJ,EAAuC,SAAU7kN,GAEjD,SAAS6kN,IACL,OAAO7kN,EAAO79B,KAAKtB,KAAM,CAAC,IAAI2iP,KAAwB3iP,KAa1D,OAfAq+B,EAAU2lN,EAAuB7kN,GAIjC6kN,EAAsB9nP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAE9D,OADar6B,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAEpD,CAAC,CACA74D,QAAS64D,EAAQ,gCACjB85B,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,SAGd,MAEJyG,EAhBgC,CAiBzCzB,GACFnmM,EAAQ4nM,sBAAwBA,EAChC,IAAIwF,EAAsC,SAAUrqN,GAEhD,SAASqqN,IACL,OAAOrqN,EAAO79B,KAAKtB,KAAM,CAAC,IAAI0iP,KAAuB1iP,KAazD,OAfAq+B,EAAUmrN,EAAsBrqN,GAIhCqqN,EAAqBttP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAE7D,OADar6B,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAEpD,CAAC,CACA74D,QAAS64D,EAAQ,+BACjB85B,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,SAGd,MAEJiM,EAhB+B,CAiBxCjH,GACFnmM,EAAQotM,qBAAuBA,EAC/B,IAAIuF,EAAgC,SAAU5vN,GAE1C,SAAS4vN,EAAegB,EAAUC,GAC9B,IAAIjwP,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAGjC,OAFAD,EAAMgwP,SAAWA,EACjBhwP,EAAMiwP,SAAWA,EACVjwP,EAoBX,OAzBAs+B,EAAU0wN,EAAgB5vN,GAO1B4vN,EAAe7yP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACvD,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,OAAIgkL,IAIAx8K,EAAQhhE,KAAKgwP,UAAYhvL,EAAQhhE,KAAK+vP,SAC/B,CAAC,CACApvP,QAAS64D,EAAQ,6BAA+Bx5D,KAAK+vP,SAAS5iP,WAAa,QAAUnN,KAAKgwP,SAAS7iP,WACnGmmF,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,UAGd,OAEJwR,EA1ByB,CA2BlCrM,GACFtmM,EAAQ2yM,eAAiBA,GAKlB,SAASvb,EAAyBp3L,EAAS6zM,GAIlD,IAAI5xN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQioM,gCAAkCjoM,EAAQgoM,gCAAkChoM,EAAQsnM,mCAAqCtnM,EAAQqnM,oCAAsCrnM,EAAQ6lM,4BAA8B7lM,EAAQ+uM,kCAA+B,EAC5P,IAAI8D,EAA4BgB,EAAiC,GAC7DrO,EAAkBqO,EAAiC,GACnDhW,EAAcgW,EAAiC,GAC/C9E,EAA8C,SAAUhsN,GAExD,SAASgsN,IACL,OAAkB,OAAXhsN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU8sN,EAA8BhsN,GAIxCgsN,EAA6BjvP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACrE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwB,IAAItF,EAAgBO,cAAc,CAAC,EAAG,OAI1G,OAD8B,IAAI8M,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD2xL,EAtBuC,CAuBhDvJ,EAAgBwN,iBAClBhzM,EAAQ+uM,6BAA+BA,EACvC,IAAIlJ,EAA6C,SAAU9iN,GAEvD,SAAS8iN,IACL,OAAkB,OAAX9iN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAU4jN,EAA6B9iN,GAIvC8iN,EAA4B/lP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACpE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDyoL,EA9BsC,CA+B/CL,EAAgBwN,iBAClBhzM,EAAQ6lM,4BAA8BA,EACtC,IAAIwB,EAAqD,SAAUtkN,GAE/D,SAASskN,IACL,OAAkB,OAAXtkN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUolN,EAAqCtkN,GAI/CskN,EAAoCvnP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC5E,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDiqL,EAtB8C,CAuBvD7B,EAAgBwN,iBAClBhzM,EAAQqnM,oCAAsCA,EAC9C,IAAIC,EAAoD,SAAUvkN,GAE9D,SAASukN,IACL,OAAkB,OAAXvkN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUqlN,EAAoCvkN,GAI9CukN,EAAmCxnP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC3E,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDkqL,EAtB6C,CAuBtD9B,EAAgBwN,iBAClBhzM,EAAQsnM,mCAAqCA,EAC7C,IAAIU,EAAiD,SAAUjlN,GAE3D,SAASilN,IACL,OAAkB,OAAXjlN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU+lN,EAAiCjlN,GAI3CilN,EAAgCloP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACxE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,qBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD4qL,EA1B0C,CA2BnDxC,EAAgBwN,iBAClBhzM,EAAQgoM,gCAAkCA,EAC1C,IAAIC,EAAiD,SAAUllN,GAE3D,SAASklN,IACL,OAAkB,OAAXllN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUgmN,EAAiCllN,GAI3CklN,EAAgCnoP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACxE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW0G,mCAI3F,OAD8B,IAAI8K,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD6qL,EAtB0C,CAuBnDzC,EAAgBwN,iBAClBhzM,EAAQioM,gCAAkCA,GAKnC,SAAS7Q,EAAyBp3L,EAAS8zM,GAIlD,IAAI7xN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQsuM,iCAAmCtuM,EAAQ4wM,+BAAiC5wM,EAAQ4oM,+BAA4B,EACxH,IAAIiK,EAA4BiB,EAAiC,GAC7DtO,EAAkBsO,EAAiC,GACnDjW,EAAciW,EAAiC,GAC/ClL,EAA2C,SAAU7lN,GAErD,SAAS6lN,IACL,OAAkB,OAAX7lN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+E/D,OAjFAq+B,EAAU2mN,EAA2B7lN,GAIrC6lN,EAA0B9oP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAClE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,mBACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,wBACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,iCAExC,CACIvzL,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWsP,kCAI5C,OAD8B,IAAIkC,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDwrL,EAlFoC,CAmF7CpD,EAAgBwN,iBAClBhzM,EAAQ4oM,0BAA4BA,EACpC,IAAIgI,EAAgD,SAAU7tN,GAE1D,SAAS6tN,IACL,OAAkB,OAAX7tN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU2uN,EAAgC7tN,GAI1C6tN,EAA+B9wP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACvE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,gBACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+G,gCAEvF,CACIhrL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW4Q,kCAI5C,OAD8B,IAAIY,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDwzL,EA1ByC,CA2BlDpL,EAAgBwN,iBAClBhzM,EAAQ4wM,+BAAiCA,EACzC,IAAItC,EAAkD,SAAUvrN,GAE5D,SAASurN,IACL,OAAkB,OAAXvrN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUqsN,EAAkCvrN,GAI5CurN,EAAiCxuP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACzE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWuN,4BAI5C,OAD8B,IAAIiE,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDkxL,EAtB2C,CAuBpD9I,EAAgBwN,iBAClBhzM,EAAQsuM,iCAAmCA,GAKpC,SAASlX,EAAyBp3L,EAAS+zM,GAIlD,IAAI9xN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQypM,0BAAuB,EAC/B,IAAIoJ,EAA4BkB,EAAiC,GAC7DvO,EAAkBuO,EAAiC,GACnDtK,EAAsC,SAAU1mN,GAEhD,SAAS0mN,IACL,OAAkB,OAAX1mN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUwnN,EAAsB1mN,GAIhC0mN,EAAqB3pP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC7D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,YACP01L,WAAY,CAAC,IAAItN,EAAgBwN,mBAIzC,OAD8B,IAAIH,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDqsL,EAtB+B,CAuBxCjE,EAAgBwN,iBAClBhzM,EAAQypM,qBAAuBA,GAKxB,SAASrS,EAAyBp3L,EAASg0M,GAIlD,IAAI/xN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ0pM,4BAAyB,EACjC,IAAImJ,EAA4BmB,EAAiC,GAC7DxO,EAAkBwO,EAAiC,GACnDnW,EAAcmW,EAAiC,GAC/CtK,EAAwC,SAAU3mN,GAElD,SAAS2mN,IACL,OAAkB,OAAX3mN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuC/D,OAzCAq+B,EAAUynN,EAAwB3mN,GAIlC2mN,EAAuB5pP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC/D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,KACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW4M,yBAExC,CACI7wL,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWsQ,qBAExC,CACIv0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,mBAI5C,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDssL,EA1CiC,CA2C1ClE,EAAgBwN,iBAClBhzM,EAAQ0pM,uBAAyBA,GAK1B,SAAStS,EAAyBp3L,EAASi0M,GAIlD,IAAIhyN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ6pM,6BAA0B,EAClC,IAAIgJ,EAA4BoB,EAAiC,GAC7DzO,EAAkByO,EAAiC,GACnDpW,EAAcoW,EAAiC,GAC/CpK,EAAyC,SAAU9mN,GAEnD,SAAS8mN,IACL,OAAkB,OAAX9mN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU4nN,EAAyB9mN,GAInC8mN,EAAwB/pP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAChE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDysL,EAtBkC,CAuB3CrE,EAAgBwN,iBAClBhzM,EAAQ6pM,wBAA0BA,GAK3B,SAASzS,EAAyBp3L,EAASk0M,GAIlD,IAAIjyN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQqqM,gCAA6B,EACrC,IAAIwI,EAA4BqB,EAAkC,GAC9D1O,EAAkB0O,EAAkC,GACpD7J,EAA4C,SAAUtnN,GAEtD,SAASsnN,IACL,OAAkB,OAAXtnN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUooN,EAA4BtnN,GAItCsnN,EAA2BvqP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACnE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAAC,IAAItN,EAAgBc,kBAErC,CACIlpL,MAAO,iBACP01L,WAAY,CAAC,IAAItN,EAAgBO,cAAc,CAAC,EAAG,OAI3D,OAD8B,IAAI8M,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDitL,EA1BqC,CA2B9C7E,EAAgBwN,iBAClBhzM,EAAQqqM,2BAA6BA,GAK9B,SAASjT,EAAyBp3L,EAASm0M,GAIlD,IAAIlyN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQyqM,oBAAsBzqM,EAAQ+sM,4BAA8B/sM,EAAQuqM,mBAAqBvqM,EAAQyoM,0BAA4BzoM,EAAQo0M,uBAAyBp0M,EAAQ2qM,yBAA2B3qM,EAAQ6sM,8BAAgC7sM,EAAQ4sM,2BAA6B5sM,EAAQq0M,gCAA6B,EAC3T,IAAIxB,EAA4BsB,EAAkC,GAC9D3O,EAAkB2O,EAAkC,GACpDtW,EAAcsW,EAAkC,GAChDE,EAA4C,SAAUtxN,GAEtD,SAASsxN,IACL,OAAkB,OAAXtxN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUoyN,EAA4BtxN,GAItCsxN,EAA2Bv0P,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACnE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,mBAI5C,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDi3L,EA1BqC,CA2B9C7O,EAAgBwN,iBAClBhzM,EAAQq0M,2BAA6BA,EACrC,IAAIzH,EAA4C,SAAU7pN,GAEtD,SAAS6pN,IACL,OAAkB,OAAX7pN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU2qN,EAA4B7pN,GAItC6pN,EAA2B9sP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACnE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAW2L,wBAExC,CACI5vL,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWuJ,2BAI5C,OAD8B,IAAIiI,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDwvL,EA1BqC,CA2B9CyH,GACFr0M,EAAQ4sM,2BAA6BA,EACrC,IAAIC,EAA+C,SAAU9pN,GAEzD,SAAS8pN,IACL,OAAkB,OAAX9pN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU4qN,EAA+B9pN,GAIzC8pN,EAA8B/sP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACtE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAWuJ,2BAI5C,OAD8B,IAAIiI,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDyvL,EA1BwC,CA2BjDwH,GACFr0M,EAAQ6sM,8BAAgCA,EACxC,IAAIlC,EAA0C,SAAU5nN,GAEpD,SAAS4nN,IACL,OAAkB,OAAX5nN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU0oN,EAA0B5nN,GAIpC4nN,EAAyB7qP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACjE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,oBACP01L,WAAY,CAACjV,EAAYwD,WAAWsL,yBAExC,CACIvvL,MAAO,oBACP01L,WAAY,CAACjV,EAAYwD,WAAWsL,0BAI5C,OAD8B,IAAIkG,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDutL,EA1BmC,CA2B5CnF,EAAgBwN,iBAClBhzM,EAAQ2qM,yBAA2BA,EACnC,IAAIyJ,EAAwC,SAAUrxN,GAElD,SAASqxN,IACL,OAAkB,OAAXrxN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUmyN,EAAwBrxN,GAIlCqxN,EAAuBt0P,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC/D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWqJ,4BAI3F,OAD8B,IAAImI,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDg3L,EA1BiC,CA2B1C5O,EAAgBwN,iBAClBhzM,EAAQo0M,uBAAyBA,EACjC,IAAI3L,EAA2C,SAAU1lN,GAErD,SAAS0lN,IACL,OAAkB,OAAX1lN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAUwmN,EAA2B1lN,GAIrC0lN,EAA0B3oP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAClE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWgH,qCAI5C,OAD8B,IAAIwK,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDqrL,EA9BoC,CA+B7C2L,GACFp0M,EAAQyoM,0BAA4BA,EACpC,IAAI8B,EAAoC,SAAUxnN,GAE9C,SAASwnN,IACL,OAAkB,OAAXxnN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUsoN,EAAoBxnN,GAI9BwnN,EAAmBzqP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC3D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWqH,6BAI5C,OAD8B,IAAImK,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDmtL,EAtB6B,CAuBtC/E,EAAgBwN,iBAClBhzM,EAAQuqM,mBAAqBA,EAC7B,IAAIwC,EAA6C,SAAUhqN,GAEvD,SAASgqN,IACL,OAAkB,OAAXhqN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAU8qN,EAA6BhqN,GAIvCgqN,EAA4BjtP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACpE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAW2L,yBAI5C,OAD8B,IAAI6F,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD2vL,EA9BsC,CA+B/CvH,EAAgBwN,iBAClBhzM,EAAQ+sM,4BAA8BA,EACtC,IAAItC,EAAqC,SAAU1nN,GAE/C,SAAS0nN,IACL,OAAkB,OAAX1nN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUwoN,EAAqB1nN,GAI/B0nN,EAAoB3qP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC5D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWmH,iCAEvF,CACIprL,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWyL,oCAI5C,OAD8B,IAAI+F,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDqtL,EA1B8B,CA2BvCjF,EAAgBwN,iBAClBhzM,EAAQyqM,oBAAsBA,GAKvB,SAASrT,EAAyBp3L,EAASs0M,GAIlD,IAAIryN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQqwM,uBAAyBrwM,EAAQwtM,0CAA4CxtM,EAAQutM,2BAA6BvtM,EAAQ8oM,uBAAyB9oM,EAAQ+xM,8BAAgC/xM,EAAQ8xM,8BAAgC9xM,EAAQ6rM,gBAAkB7rM,EAAQwsM,6BAA+BxsM,EAAQ+mM,yBAA2B/mM,EAAQ0mM,8BAAgC1mM,EAAQ2mM,4BAA8B3mM,EAAQ6mM,oBAAsB7mM,EAAQ8mM,4BAA8B9mM,EAAQ4mM,4BAA8B5mM,EAAQu0M,gCAAkCv0M,EAAQimM,wBAA0BjmM,EAAQymM,qBAAuBzmM,EAAQw0M,oBAAsBx0M,EAAQorM,+BAAiCprM,EAAQyrM,6BAA+BzrM,EAAQ4rM,kCAAoC5rM,EAAQurM,+BAAiCvrM,EAAQ2rM,gCAAkC3rM,EAAQkrM,iCAA8B,EACr4B,IAAI2H,EAA4ByB,EAAkC,GAC9D9O,EAAkB8O,EAAkC,GACpDzW,EAAcyW,EAAkC,GAChDpJ,EAA6C,SAAUnoN,GAEvD,SAASmoN,IACL,OAAkB,OAAXnoN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUipN,EAA6BnoN,GAIvCmoN,EAA4BprP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACpE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD8tL,EA1BsC,CA2B/C1F,EAAgBwN,iBAClBhzM,EAAQkrM,4BAA8BA,EACtC,IAAIS,EAAiD,SAAU5oN,GAE3D,SAAS4oN,IACL,OAAkB,OAAX5oN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU0pN,EAAiC5oN,GAI3C4oN,EAAgC7rP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACxE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW6P,wBAI3F,OAD8B,IAAI2B,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDuuL,EAtB0C,CAuBnDT,GACFlrM,EAAQ2rM,gCAAkCA,EAC1C,IAAIJ,EAAgD,SAAUxoN,GAE1D,SAASwoN,IACL,OAAkB,OAAXxoN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAUspN,EAAgCxoN,GAI1CwoN,EAA+BzrP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACvE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDmuL,EA9ByC,CA+BlD/F,EAAgBwN,iBAClBhzM,EAAQurM,+BAAiCA,EACzC,IAAIK,EAAmD,SAAU7oN,GAE7D,SAAS6oN,IACL,OAAkB,OAAX7oN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU2pN,EAAmC7oN,GAI7C6oN,EAAkC9rP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC1E,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW6P,wBAI3F,OAD8B,IAAI2B,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDwuL,EAtB4C,CAuBrDL,GACFvrM,EAAQ4rM,kCAAoCA,EAC5C,IAAIH,EAA8C,SAAU1oN,GAExD,SAAS0oN,IACL,OAAkB,OAAX1oN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUwpN,EAA8B1oN,GAIxC0oN,EAA6B3rP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACrE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDquL,EA1BuC,CA2BhDjG,EAAgBwN,iBAClBhzM,EAAQyrM,6BAA+BA,EACvC,IAAIL,EAAgD,SAAUroN,GAE1D,SAASqoN,IACL,OAAkB,OAAXroN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAUmpN,EAAgCroN,GAI1CqoN,EAA+BtrP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACvE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,qBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,qBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,mBAI5C,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDguL,EA9ByC,CA+BlD5F,EAAgBwN,iBAClBhzM,EAAQorM,+BAAiCA,EACzC,IAAIoJ,EAAqC,SAAUzxN,GAE/C,SAASyxN,IACL,OAAkB,OAAXzxN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+B/D,OAjCAq+B,EAAUuyN,EAAqBzxN,GAI/ByxN,EAAoB10P,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC5D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWqK,wBAEvF,CACItuL,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWyK,sBAExC,CACI1uL,MAAO,kBACP01L,WAAY,CAACjV,EAAYwD,WAAW8J,kCAI5C,OAD8B,IAAI0H,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDo3L,EAlC8B,CAmCvChP,EAAgBwN,iBAClBhzM,EAAQw0M,oBAAsBA,EAC9B,IAAI/N,EAAsC,SAAU1jN,GAEhD,SAAS0jN,IACL,OAAkB,OAAX1jN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+B/D,OAjCAq+B,EAAUwkN,EAAsB1jN,GAIhC0jN,EAAqB3mP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC7D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW6E,oBAEvF,CACI9oL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWoG,2BAExC,CACIrqL,MAAO,yBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDqpL,EAlC+B,CAmCxC+N,GACFx0M,EAAQymM,qBAAuBA,EAC/B,IAAIR,EAAyC,SAAUljN,GAEnD,SAASkjN,IACL,OAAkB,OAAXljN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAUgkN,EAAyBljN,GAInCkjN,EAAwBnmP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAChE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,kBACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWgK,4BAExC,CACIjuL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWyE,+BAI5C,OAD8B,IAAI+M,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD6oL,EA9BkC,CA+B3CuO,GACFx0M,EAAQimM,wBAA0BA,EAClC,IAAIsO,EAAiD,SAAUxxN,GAE3D,SAASwxN,IACL,OAAkB,OAAXxxN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+B/D,OAjCAq+B,EAAUsyN,EAAiCxxN,GAI3CwxN,EAAgCz0P,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACxE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWmO,sCAEvF,CACIpyL,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,kBAExC,CACIjwL,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWwO,0CAEvF,CACIzyL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWuO,uCAI5C,OAD8B,IAAIiD,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDm3L,EAlC0C,CAmCnDC,GACFx0M,EAAQu0M,gCAAkCA,EAC1C,IAAI3N,EAA6C,SAAU7jN,GAEvD,SAAS6jN,IACL,OAAkB,OAAX7jN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAU2kN,EAA6B7jN,GAIvC6jN,EAA4B9mP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACpE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWwG,mBAEvF,CACIzqL,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWoO,0CAEvF,CACIryL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWqO,mCAI5C,OAD8B,IAAImD,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDwpL,EA9BsC,CA+B/C2N,GACFv0M,EAAQ4mM,4BAA8BA,EACtC,IAAIE,EAA6C,SAAU/jN,GAEvD,SAAS+jN,IACL,OAAkB,OAAX/jN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU6kN,EAA6B/jN,GAIvC+jN,EAA4BhnP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACpE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWyO,0CAEvF,CACI1yL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAW0O,mCAI5C,OAD8B,IAAI8C,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD0pL,EA1BsC,CA2B/CyN,GACFv0M,EAAQ8mM,4BAA8BA,EACtC,IAAID,EAAqC,SAAU9jN,GAE/C,SAAS8jN,IACL,OAAkB,OAAX9jN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+B/D,OAjCAq+B,EAAU4kN,EAAqB9jN,GAI/B8jN,EAAoB/mP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC5D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWgM,kBAEvF,CACIjwL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWuQ,0BAExC,CACIx0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWqK,yBAI3F,OAD8B,IAAImH,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDypL,EAlC8B,CAmCvC2N,GACFx0M,EAAQ6mM,oBAAsBA,EAC9B,IAAIF,EAA6C,SAAU5jN,GAEvD,SAAS4jN,IACL,OAAkB,OAAX5jN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAU0kN,EAA6B5jN,GAIvC4jN,EAA4B7mP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACpE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,uBACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAW4L,mCAI5C,OAD8B,IAAI4F,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDupL,EA9BsC,CA+B/C6N,GACFx0M,EAAQ2mM,4BAA8BA,EACtC,IAAID,EAA+C,SAAU3jN,GAEzD,SAAS2jN,IACL,OAAkB,OAAX3jN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAUykN,EAA+B3jN,GAIzC2jN,EAA8B5mP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACtE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWwG,mBAEvF,CACIzqL,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW6E,oBAEvF,CACI9oL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWgL,oCAI5C,OAD8B,IAAIwG,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDspL,EA9BwC,CA+BjD8N,GACFx0M,EAAQ0mM,8BAAgCA,EACxC,IAAIK,EAA0C,SAAUhkN,GAEpD,SAASgkN,IACL,OAAkB,OAAXhkN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU8kN,EAA0BhkN,GAIpCgkN,EAAyBjnP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACjE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,gBACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWkL,iCAEvF,CACInvL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWiL,gCAI5C,OAD8B,IAAIuG,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD2pL,EA1BmC,CA2B5CyN,GACFx0M,EAAQ+mM,yBAA2BA,EACnC,IAAIyF,EAA8C,SAAUzpN,GAExD,SAASypN,IACL,OAAkB,OAAXzpN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+B/D,OAjCAq+B,EAAUuqN,EAA8BzpN,GAIxCypN,EAA6B1sP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACrE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAW2F,oBAExC,CACI5pL,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAW6E,oBAExC,CACI9oL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWkL,iCAExC,CACInvL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,mBAI5C,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDovL,EAlCuC,CAmChDhH,EAAgBwN,iBAClBhzM,EAAQwsM,6BAA+BA,EACvC,IAAIX,EAAiC,SAAU9oN,GAE3C,SAAS8oN,IACL,OAAkB,OAAX9oN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAY/D,OAdAq+B,EAAU4pN,EAAiB9oN,GAI3B8oN,EAAgB/rP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACxD,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,OAAIgkL,GAGGvD,EAAYwD,WAAWmF,mBAAmB7hJ,SAAS//B,EAAOsyB,EAAM95B,IAEpEyuL,EAf0B,CAgBnCrG,EAAgBwN,iBAClBhzM,EAAQ6rM,gBAAkBA,EAC1B,IAAIiG,EAA+C,SAAU/uN,GAEzD,SAAS+uN,IACL,OAAkB,OAAX/uN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU6vN,EAA+B/uN,GAIzC+uN,EAA8BhyP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACtE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,mBACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW2K,mCAEvF,CACI5uL,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW0K,yBAI3F,OAD8B,IAAI8G,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD00L,EA1BwC,CA2BjDtM,EAAgBwN,iBAClBhzM,EAAQ8xM,8BAAgCA,EACxC,IAAIC,EAA+C,SAAUhvN,GAEzD,SAASgvN,IACL,OAAkB,OAAXhvN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU8vN,EAA+BhvN,GAIzCgvN,EAA8BjyP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACtE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,mBACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW4K,sCAEvF,CACI7uL,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWuJ,wBAAyB/M,EAAYwD,WAAW0K,yBAI5F,OAD8B,IAAI8G,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD20L,EA1BwC,CA2BjDvM,EAAgBwN,iBAClBhzM,EAAQ+xM,8BAAgCA,EACxC,IAAIjJ,EAAwC,SAAU/lN,GAElD,SAAS+lN,IACL,OAAkB,OAAX/lN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU6mN,EAAwB/lN,GAIlC+lN,EAAuBhpP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC/D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAW2F,oBAExC,CACI5pL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD0rL,EA1BiC,CA2B1CtD,EAAgBwN,iBAClBhzM,EAAQ8oM,uBAAyBA,EACjC,IAAIyE,EAA4C,SAAUxqN,GAEtD,SAASwqN,IACL,OAAkB,OAAXxqN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUsrN,EAA4BxqN,GAItCwqN,EAA2BztP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACnE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW2K,mCAEvF,CACI5uL,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW0K,yBAI3F,OAD8B,IAAI8G,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDmwL,EA1BqC,CA2B9C/H,EAAgBwN,iBAClBhzM,EAAQutM,2BAA6BA,EACrC,IAAIC,EAA2D,SAAUzqN,GAErE,SAASyqN,IACL,OAAkB,OAAXzqN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUurN,EAA2CzqN,GAIrDyqN,EAA0C1tP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAClF,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW4K,sCAEvF,CACI7uL,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWuJ,wBAAyB/M,EAAYwD,WAAW0K,yBAI5F,OAD8B,IAAI8G,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDowL,EA1BoD,CA2B7DhI,EAAgBwN,iBAClBhzM,EAAQwtM,0CAA4CA,EACpD,IAAI6C,EAAwC,SAAUttN,GAElD,SAASstN,IACL,OAAkB,OAAXttN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUouN,EAAwBttN,GAIlCstN,EAAuBvwP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC/D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWiM,6BAExC,CACIlwL,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWiM,8BAI5C,OAD8B,IAAIuF,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDizL,EA1BiC,CA2B1C7K,EAAgBwN,iBAClBhzM,EAAQqwM,uBAAyBA,GAK1B,SAASjZ,EAAyBp3L,EAASy0M,GAIlD,IAAIxyN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQouM,oBAAsBpuM,EAAQoqM,sBAAwBpqM,EAAQ0tM,sBAAwB1tM,EAAQupM,2BAAwB,EAC9H,IAAIsJ,EAA4B4B,EAAkC,GAC9DjP,EAAkBiP,EAAkC,GACpD5W,EAAc4W,EAAkC,GAChDlL,EAAuC,SAAUxmN,GAEjD,SAASwmN,IACL,OAAkB,OAAXxmN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAUsnN,EAAuBxmN,GAIjCwmN,EAAsBzpP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC9D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyM,oBAExC,CACI1wL,MAAO,gBACP01L,WAAY,CAACjV,EAAYwD,WAAWgI,qCAExC,CACIjsL,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAW8M,wBAI5C,OAD8B,IAAI0E,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDmsL,EA9BgC,CA+BzC/D,EAAgBwN,iBAClBhzM,EAAQupM,sBAAwBA,EAChC,IAAImE,EAAuC,SAAU3qN,GAEjD,SAAS2qN,IACL,OAAkB,OAAX3qN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuC/D,OAzCAq+B,EAAUyrN,EAAuB3qN,GAIjC2qN,EAAsB5tP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC9D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,IACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,kBAExC,CACIjwL,MAAO,IACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,kBAExC,CACIjwL,MAAO,IACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,kBAExC,CACIjwL,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,kBAExC,CACIjwL,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,kBAExC,CACIjwL,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAW8I,yBAI5C,OAD8B,IAAI0I,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDswL,EA1CgC,CA2CzClI,EAAgBwN,iBAClBhzM,EAAQ0tM,sBAAwBA,EAChC,IAAItD,EAAuC,SAAUrnN,GAEjD,SAASqnN,IACL,OAAkB,OAAXrnN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUmoN,EAAuBrnN,GAIjCqnN,EAAsBtqP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC9D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAW6I,6BAI5C,OAD8B,IAAI2I,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDgtL,EAtBgC,CAuBzC5E,EAAgBwN,iBAClBhzM,EAAQoqM,sBAAwBA,EAChC,IAAIgE,EAAqC,SAAUrrN,GAE/C,SAASqrN,IACL,OAAkB,OAAXrrN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUmsN,EAAqBrrN,GAI/BqrN,EAAoBtuP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC5D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,gBACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWoM,sBAEvF,CACIrwL,MAAO,gBACP01L,WAAY,CAACjV,EAAYwD,WAAWmR,yBAI5C,OAD8B,IAAIK,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDgxL,EA1B8B,CA2BvC5I,EAAgBwN,iBAClBhzM,EAAQouM,oBAAsBA,GAKvB,SAAShX,EAAyBp3L,EAAS00M,GAIlD,IAAIzyN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQkuM,uBAAyBluM,EAAQguM,cAAgBhuM,EAAQwpM,wBAA0BxpM,EAAQ+tM,uBAAoB,EACvH,IAAI8E,EAA4B6B,EAAkC,GAC9DlP,EAAkBkP,EAAkC,GACpD7W,EAAc6W,EAAkC,GAChD3G,EAAmC,SAAUhrN,GAE7C,SAASgrN,IACL,OAAkB,OAAXhrN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU8rN,EAAmBhrN,GAI7BgrN,EAAkBjuP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC1D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWwM,yBAI3F,OAD8B,IAAIgF,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD2wL,EAtB4B,CAuBrCvI,EAAgBwN,iBAClBhzM,EAAQ+tM,kBAAoBA,EAC5B,IAAIvE,EAAyC,SAAUzmN,GAEnD,SAASymN,IACL,OAAkB,OAAXzmN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUunN,EAAyBzmN,GAInCymN,EAAwB1pP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAChE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,kBAExC,CACIjwL,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,mBAI5C,OAD8B,IAAIwF,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDosL,EA1BkC,CA2B3CuE,GACF/tM,EAAQwpM,wBAA0BA,EAClC,IAAIwE,EAA+B,SAAUjrN,GAEzC,SAASirN,IACL,OAAkB,OAAXjrN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU+rN,EAAejrN,GAIzBirN,EAAcluP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACtD,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD4wL,EAtBwB,CAuBjCxI,EAAgBwN,iBAClBhzM,EAAQguM,cAAgBA,EACxB,IAAIE,EAAwC,SAAUnrN,GAElD,SAASmrN,IACL,OAAkB,OAAXnrN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAkB/D,OApBAq+B,EAAUisN,EAAwBnrN,GAIlCmrN,EAAuBpuP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC/D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,OAAIgkL,IAGiB,CAAC,aAAc,aAAc,aAC/Br/O,QAAQ6iE,GAAS,EACzB,CAAC,CACArgE,QAAS,wGAGd,OAEJ2pP,EArBiC,CAsB1C1I,EAAgBa,iBAClBrmM,EAAQkuM,uBAAyBA,GAK1B,SAAS9W,EAAyBp3L,EAAS20M,GAIlD,IAAI1yN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQuyM,4BAA8BvyM,EAAQqxM,yBAA2BrxM,EAAQywM,uBAAyBzwM,EAAQ2tM,4BAA8B3tM,EAAQksM,qBAAuBlsM,EAAQgrM,oBAAsBhrM,EAAQ8nM,uBAAyB9nM,EAAQmvM,kBAAoBnvM,EAAQuwM,0BAAuB,EACzS,IAAIsC,EAA4B8B,EAAkC,GAC9DnP,EAAkBmP,EAAkC,GACpD9W,EAAc8W,EAAkC,GAChDpE,EAAsC,SAAUxtN,GAEhD,SAASwtN,IACL,OAAkB,OAAXxtN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2C/D,OA7CAq+B,EAAUsuN,EAAsBxtN,GAIhCwtN,EAAqBzwP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC7D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWW,yBAExC,CACI5kL,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWa,sBAExC,CACI9kL,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWY,uBAExC,CACI7kL,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWc,8BAExC,CACI/kL,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWe,yBAExC,CACIhlL,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWgB,2BAExC,CACIjlL,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWiB,+BAI5C,OAD8B,IAAIuQ,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDmzL,EA9C+B,CA+CxC/K,EAAgBwN,iBAClBhzM,EAAQuwM,qBAAuBA,EAC/B,IAAIpB,EAAmC,SAAUpsN,GAE7C,SAASosN,IACL,OAAkB,OAAXpsN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUktN,EAAmBpsN,GAI7BosN,EAAkBrvP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC1D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWY,wBAI5C,OAD8B,IAAI4Q,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD+xL,EAtB4B,CAuBrC3J,EAAgBwN,iBAClBhzM,EAAQmvM,kBAAoBA,EAC5B,IAAIrH,EAAwC,SAAU/kN,GAElD,SAAS+kN,IACL,OAAkB,OAAX/kN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU6lN,EAAwB/kN,GAIlC+kN,EAAuBhoP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC/D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD0qL,EAtBiC,CAuB1CtC,EAAgBwN,iBAClBhzM,EAAQ8nM,uBAAyBA,EACjC,IAAIkD,EAAqC,SAAUjoN,GAE/C,SAASioN,IACL,OAAkB,OAAXjoN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU+oN,EAAqBjoN,GAI/BioN,EAAoBlrP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC5D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD4tL,EAtB8B,CAuBvCxF,EAAgBwN,iBAClBhzM,EAAQgrM,oBAAsBA,EAC9B,IAAIkB,EAAsC,SAAUnpN,GAEhD,SAASmpN,IACL,OAAkB,OAAXnpN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUiqN,EAAsBnpN,GAIhCmpN,EAAqBpsP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC7D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD8uL,EA1B+B,CA2BxC1G,EAAgBwN,iBAClBhzM,EAAQksM,qBAAuBA,EAC/B,IAAIyB,EAA6C,SAAU5qN,GAEvD,SAAS4qN,IACL,OAAkB,OAAX5qN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU0rN,EAA6B5qN,GAIvC4qN,EAA4B7tP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACpE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWuM,mCAI5C,OAD8B,IAAIiF,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDuwL,EA1BsC,CA2B/CnI,EAAgBwN,iBAClBhzM,EAAQ2tM,4BAA8BA,EACtC,IAAI8C,EAAwC,SAAU1tN,GAElD,SAAS0tN,IACL,OAAkB,OAAX1tN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUwuN,EAAwB1tN,GAIlC0tN,EAAuB3wP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC/D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDqzL,EAtBiC,CAuB1CjL,EAAgBwN,iBAClBhzM,EAAQywM,uBAAyBA,EACjC,IAAIY,EAA0C,SAAUtuN,GAEpD,SAASsuN,IACL,OAAkB,OAAXtuN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUovN,EAA0BtuN,GAIpCsuN,EAAyBvxP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACjE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDi0L,EAtBmC,CAuB5C7L,EAAgBwN,iBAClBhzM,EAAQqxM,yBAA2BA,EACnC,IAAIkB,EAA6C,SAAUxvN,GAEvD,SAASwvN,IACL,OAAkB,OAAXxvN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUswN,EAA6BxvN,GAIvCwvN,EAA4BzyP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACpE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDm1L,EAtBsC,CAuB/C/M,EAAgBwN,iBAClBhzM,EAAQuyM,4BAA8BA,GAK/B,SAASnb,EAAyBp3L,EAAS40M,GAIlD,IAAI3yN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQivM,+BAAiCjvM,EAAQqvM,qBAAuBrvM,EAAQ0sM,sBAAmB,EACnG,IAAImG,EAA4B+B,EAAkC,GAC9DpP,EAAkBoP,EAAkC,GACpD/W,EAAc+W,EAAkC,GAChDlI,EAAkC,SAAU3pN,GAE5C,SAAS2pN,IACL,OAAkB,OAAX3pN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2C/D,OA7CAq+B,EAAUyqN,EAAkB3pN,GAI5B2pN,EAAiB5sP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACzD,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW6P,uBAEvF,CACI9zL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW2Q,oBAExC,CACI50L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW+N,sBAExC,CACIhyL,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWsQ,qBAExC,CACIv0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,mBAI5C,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDsvL,EA9C2B,CA+CpClH,EAAgBwN,iBAClBhzM,EAAQ0sM,iBAAmBA,EAC3B,IAAI2C,EAAsC,SAAUtsN,GAEhD,SAASssN,IACL,OAAkB,OAAXtsN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAUotN,EAAsBtsN,GAIhCssN,EAAqBvvP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC7D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,oBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAW6N,qBAI5C,OAD8B,IAAI2D,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDiyL,EA9B+B,CA+BxC7J,EAAgBwN,iBAClBhzM,EAAQqvM,qBAAuBA,EAC/B,IAAIJ,EAAgD,SAAUlsN,GAE1D,SAASksN,IACL,OAAkB,OAAXlsN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUgtN,EAAgClsN,GAI1CksN,EAA+BnvP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACvE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAW6P,uBAExC,CACI9zL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD6xL,EA1ByC,CA2BlDzJ,EAAgBwN,iBAClBhzM,EAAQivM,+BAAiCA,GAKlC,SAAS7X,EAAyBp3L,EAAS60M,GAIlD,IAAI5yN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQmwM,2BAAwB,EAChC,IAAI0C,EAA4BgC,EAAkC,GAC9DrP,EAAkBqP,EAAkC,GACpDhX,EAAcgX,EAAkC,GAChD1E,EAAuC,SAAUptN,GAEjD,SAASotN,IACL,OAAkB,OAAXptN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmC/D,OArCAq+B,EAAUkuN,EAAuBptN,GAIjCotN,EAAsBrwP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC9D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWsQ,qBAExC,CACIv0L,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWqC,wBAI5C,OAD8B,IAAImP,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD+yL,EAtCgC,CAuCzC3K,EAAgBwN,iBAClBhzM,EAAQmwM,sBAAwBA,GAKzB,SAAS/Y,EAAyBp3L,EAAS80M,GAIlD,IAAI7yN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQswM,yBAAsB,EAC9B,IAAIuC,EAA4BiC,EAAkC,GAC9DtP,EAAkBsP,EAAkC,GACpDjX,EAAciX,EAAkC,GAChDxE,EAAqC,SAAUvtN,GAE/C,SAASutN,IACL,OAAkB,OAAXvtN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuE/D,OAzEAq+B,EAAUquN,EAAqBvtN,GAI/ButN,EAAoBxwP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC5D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,KACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWS,oBAExC,CACI1kL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+O,6BAExC,CACIhzL,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWyN,uBAExC,CACI1xL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW2Q,oBAExC,CACI50L,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWsQ,qBAExC,CACIv0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWkG,yBAExC,CACInqL,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWqC,uBAExC,CACItmL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWuI,0BAExC,CACIxsL,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAW0H,yBAI5C,OAD8B,IAAI8J,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDkzL,EA1E8B,CA2EvC9K,EAAgBwN,iBAClBhzM,EAAQswM,oBAAsBA,GAKvB,SAASlZ,EAAyBp3L,EAAS+0M,GAIlD,IAAI9yN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ2uM,+BAAiC3uM,EAAQuuM,kCAA+B,EAChF,IAAIsE,EAA4BkC,EAAkC,GAC9DvP,EAAkBuP,EAAkC,GACpDlX,EAAckX,EAAkC,GAChDxG,EAA8C,SAAUxrN,GAExD,SAASwrN,IACL,OAAkB,OAAXxrN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+C/D,OAjDAq+B,EAAUssN,EAA8BxrN,GAIxCwrN,EAA6BzuP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACrE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,KACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWmN,mCAExC,CACIpxL,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWsQ,qBAExC,CACIv0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,kBACP01L,WAAY,CAACjV,EAAYwD,WAAWqN,iCAI5C,OAD8B,IAAImE,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDmxL,EAlDuC,CAmDhD/I,EAAgBwN,iBAClBhzM,EAAQuuM,6BAA+BA,EACvC,IAAII,EAAgD,WAChD,SAASA,KAmBT,OAjBAA,EAA+B7uP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACvE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIoO,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,mBAI5C,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDuxL,EApByC,GAsBpD3uM,EAAQ2uM,+BAAiCA,GAKlC,SAASvX,EAAyBp3L,EAASg1M,GAIlD,IAAI/yN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQwwM,+BAA4B,EACpC,IAAIqC,EAA4BmC,EAAkC,GAC9DxP,EAAkBwP,EAAkC,GACpDnX,EAAcmX,EAAkC,GAChDxE,EAA2C,SAAUztN,GAErD,SAASytN,IACL,OAAkB,OAAXztN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUuuN,EAA2BztN,GAIrCytN,EAA0B1wP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAClE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDozL,EAtBoC,CAuB7ChL,EAAgBwN,iBAClBhzM,EAAQwwM,0BAA4BA,GAK7B,SAASpZ,EAAyBp3L,EAASi1M,GAIlD,IAAIhzN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ8wM,8BAAgC9wM,EAAQuoM,4BAA8BvoM,EAAQsoM,6BAA0B,EAChH,IAAIuK,EAA4BoC,EAAkC,GAC9DzP,EAAkByP,EAAkC,GACpDC,EAAkBD,EAAkC,GACpDpX,EAAcoX,EAAkC,GAChD3M,EAAyC,SAAUvlN,GAEnD,SAASulN,IACL,OAAkB,OAAXvlN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAwB/D,OA1BAq+B,EAAUqmN,EAAyBvlN,GAInCulN,EAAwBxoP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAChE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CAEI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,gBAAiB,IAAI8D,EAAgB9B,gBAAgB,sDAE7F,CACIh2L,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDkrL,EA3BkC,CA4B3C9C,EAAgBwN,iBAClBhzM,EAAQsoM,wBAA0BA,EAClC,IAAIC,EAA6C,SAAUxlN,GAEvD,SAASwlN,IACL,OAAkB,OAAXxlN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUsmN,EAA6BxlN,GAIvCwlN,EAA4BzoP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACpE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,gBAAiB,IAAI8D,EAAgB9B,gBAAgB,0DAE5I,CACIh2L,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDmrL,EA1BsC,CA2B/C/C,EAAgBwN,iBAClBhzM,EAAQuoM,4BAA8BA,EACtC,IAAIuI,EAA+C,SAAU/tN,GAEzD,SAAS+tN,IACL,OAAkB,OAAX/tN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU6uN,EAA+B/tN,GAIzC+tN,EAA8BhxP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACtE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,gBAAiB,IAAI8D,EAAgB9B,gBAAgB,4DAE5I,CACIh2L,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW2P,yBAI3F,OAD8B,IAAI6B,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD0zL,EA1BwC,CA2BjDtL,EAAgBwN,iBAClBhzM,EAAQ8wM,8BAAgCA,GAKjC,SAAS1Z,EAAyBp3L,EAASm1M,GAIlD,IAAIlzN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQyuM,iCAAmCzuM,EAAQ0wM,uBAAoB,EACvE,IAAImC,EAA4BsC,EAAkC,GAC9D3P,EAAkB2P,EAAkC,GACpDtX,EAAcsX,EAAkC,GAChDzE,EAAmC,SAAU3tN,GAE7C,SAAS2tN,IACL,OAAkB,OAAX3tN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2F/D,OA7FAq+B,EAAUyuN,EAAmB3tN,GAI7B2tN,EAAkB5wP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC1D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,oBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,wBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,uBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,wBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWmJ,sBAExC,CACIptL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWoL,sBAExC,CACIrvL,MAAO,eACP01L,WAAY,CAACjV,EAAYwD,WAAWiI,wBAExC,CACIlsL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWmG,sBAExC,CACIpqL,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAWmC,0BAExC,CACIpmL,MAAO,aACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWsH,iCAExC,CACIvrL,MAAO,yBACP01L,WAAY,CAACjV,EAAYwD,WAAW8K,kCAExC,CACI/uL,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAW4O,sBAExC,CACI7yL,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWU,uBAExC,CACI3kL,MAAO,2BACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,2BACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,uBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,wBACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,gBACP01L,WAAY,CAACjV,EAAYwD,WAAWuC,0BAI5C,OAD8B,IAAIiP,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDszL,EA9F4B,CA+FrClL,EAAgBwN,iBAClBhzM,EAAQ0wM,kBAAoBA,EAC5B,IAAIjC,EAAkD,SAAU1rN,GAE5D,SAAS0rN,IACL,OAAkB,OAAX1rN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUwsN,EAAkC1rN,GAI5C0rN,EAAiC3uP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACzE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWgN,oCAI5C,OAD8B,IAAIwE,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDqxL,EAtB2C,CAuBpDjJ,EAAgBwN,iBAClBhzM,EAAQyuM,iCAAmCA,GAKpC,SAASrX,EAAyBp3L,EAASo1M,GAIlD,IAAInzN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ+wM,qBAAuB/wM,EAAQixM,qBAAkB,EACzD,IAAI4B,EAA4BuC,EAAkC,GAC9D5P,EAAkB4P,EAAkC,GACpDvX,EAAcuX,EAAkC,GAChDnE,EAAiC,SAAUluN,GAE3C,SAASkuN,IACL,OAAkB,OAAXluN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUgvN,EAAiBluN,GAI3BkuN,EAAgBnxP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACxD,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWwP,0BAEvF,CACIzzL,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWG,wBAI3F,OAD8B,IAAIqR,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD6zL,EA1B0B,CA2BnCzL,EAAgBwN,iBAClBhzM,EAAQixM,gBAAkBA,EAC1B,IAAIF,EAAsC,SAAUhuN,GAEhD,SAASguN,IACL,OAAkB,OAAXhuN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU8uN,EAAsBhuN,GAIhCguN,EAAqBjxP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC7D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW0K,yBAI5C,OAD8B,IAAI8G,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD2zL,EAtB+B,CAuBxCvL,EAAgBwN,iBAClBhzM,EAAQ+wM,qBAAuBA,GAKxB,SAAS3Z,EAAyBp3L,EAASq1M,GAIlD,IAAIpzN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ0xM,uBAAoB,EAC5B,IAAImB,EAA4BwC,EAAkC,GAC9D7P,EAAkB6P,EAAkC,GACpDxX,EAAcwX,EAAkC,GAChD3D,EAAmC,SAAU3uN,GAE7C,SAAS2uN,IACL,OAAkB,OAAX3uN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+C/D,OAjDAq+B,EAAUyvN,EAAmB3uN,GAI7B2uN,EAAkB5xP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC1D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,KACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWsQ,qBAExC,CACIv0L,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,kBAExC,CACIjwL,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWgM,mBAI5C,OAD8B,IAAIwF,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDs0L,EAlD4B,CAmDrClM,EAAgBwN,iBAClBhzM,EAAQ0xM,kBAAoBA,GAKrB,SAASta,EAAyBp3L,EAASs1M,GAIlD,IAAIrzN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQqyM,sBAAwBryM,EAAQoyM,8BAAgCpyM,EAAQyyM,6BAA0B,EAC1G,IAAII,EAA4ByC,EAAkC,GAC9D9P,EAAkB8P,EAAkC,GACpDzX,EAAcyX,EAAkC,GAChD7C,EAAyC,SAAU1vN,GAEnD,SAAS0vN,IACL,OAAkB,OAAX1vN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUwwN,EAAyB1vN,GAInC0vN,EAAwB3yP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAChE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,gBACP01L,WAAY,CAACjV,EAAYwD,WAAWiR,0BAI5C,OAD8B,IAAIO,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDq1L,EAtBkC,CAuB3CjN,EAAgBwN,iBAClBhzM,EAAQyyM,wBAA0BA,EAClC,IAAIL,EAA+C,SAAUrvN,GAEzD,SAASqvN,IACL,OAAkB,OAAXrvN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAUmwN,EAA+BrvN,GAIzCqvN,EAA8BtyP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACtE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDg1L,EAtBwC,CAuBjD5M,EAAgBwN,iBAClBhzM,EAAQoyM,8BAAgCA,EACxC,IAAIC,EAAuC,SAAUtvN,GAEjD,SAASsvN,IACL,OAAkB,OAAXtvN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUowN,EAAuBtvN,GAIjCsvN,EAAsBvyP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC9D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW8Q,gCAEvF,CACI/0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAW6Q,iCAI5C,OAD8B,IAAIW,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDi1L,EA1BgC,CA2BzC7M,EAAgBwN,iBAClBhzM,EAAQqyM,sBAAwBA,GAKzB,SAACjb,EAAyBp3L,GAIjCl+C,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQomM,oBAAiB,EACzB,IAAIA,EAAgC,WAChC,SAASA,EAAe0M,GACpBlvP,KAAKkvP,WAAaA,EAwBtB,OAtBA1M,EAAetmP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACvD,GAAa,MAATwH,EACA,OAAO,KAGX,IADA,IAAI2wL,GAAQ,EACH3zP,EAAK,EAAGuF,EAAKvD,KAAKkvP,WAAYlxP,EAAKuF,EAAG1G,OAAQmB,IAGnD,IAFgBuF,EAAGvF,GACI+iG,SAAS//B,EAAOsyB,EAAM95B,GAChC,CACTm4L,GAAQ,EACR,MAGR,OAAKA,EAOE,KANI,CAAC,CACAhxP,QAAS64D,EAAQ,uBACjB85B,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,aAKlBiF,EA1ByB,GA4BpCpmM,EAAQomM,eAAiBA,GAKlB,SAAChP,EAAyBp3L,GAIjCl+C,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ6qM,6BAA0B,EAClC,IAAIA,EAAyC,WACzC,SAASA,KAYT,OAVAA,EAAwB/qP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAChE,YAAcx9D,IAAVglE,EACO,CAAC,CACArgE,QAAS64D,EAAQ,gBACjB85B,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,cAGd,MAEJ0J,EAbkC,GAe7C7qM,EAAQ6qM,wBAA0BA,GAK3B,SAACzT,EAAyBp3L,GAIjCl+C,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ+qM,4BAAyB,EACjC,IAAIA,EAAwC,WACxC,SAASA,KAYT,OAVAA,EAAuBjrP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC/D,OAAa,MAATwH,EACO,CAAC,CACArgE,QAAS64D,EAAQ,eACjB85B,MAAOA,EAAOA,EAAO,IAAM,IAAM95B,EACjC+jL,QAAS,aAGd,MAEJ4J,EAbiC,GAe5C/qM,EAAQ+qM,uBAAyBA,GAK1B,SAAS3T,EAAyBp3L,EAASw1M,GAIlD,IAAIvzN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQipM,kBAAe,EACvB,IACIA,EAA8B,SAAUlmN,GAExC,SAASkmN,EAAawM,EAAeC,GACjC,IAAI/xP,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAGjC,OAFAD,EAAM8xP,cAAgBA,EACtB9xP,EAAM+xP,gBAAkBA,EACjB/xP,EA+BX,OApCAs+B,EAAUgnN,EAAclmN,GAOxBkmN,EAAanpP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACrD,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAK,IAAIxgP,KAAOgkE,EACZ,GAAIA,EAAMxhE,eAAexC,GAAM,CAE3B,IADA,IAAIsyP,GAAch8J,EAAOA,EAAO,IAAM,IAAM95B,EAAQ,IAAMx8D,EACjDgB,EAAK,EAAGuF,EAAKvD,KAAK6xP,cAAe7zP,EAAKuF,EAAG1G,OAAQmB,IAGtD,GADAw/O,EADmBj6O,EAAGvF,GACA+iG,SAAS/jG,EAAKsyP,EAAY91L,GAE5C,OAAOgkL,EAGf,IAAK,IAAIzoN,EAAK,EAAGI,EAAKn1B,KAAK8xP,gBAAiB/8N,EAAKI,EAAGt4B,OAAQk4B,IAGxD,GADAyoN,EADqBroN,EAAGJ,GACAgsE,SAAS//B,EAAMhkE,GAAMsyP,EAAY91L,GAErD,OAAOgkL,EAKvB,OAAO,MAEJ6H,EArCuB,CADZuM,EAAkC,GAuCtCxC,iBAClBhzM,EAAQipM,aAAeA,GAKhB,SAAS7R,EAAyBp3L,EAAS21M,GAIlD,IAAI1zN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ6uM,8BAA2B,EACnC,IAAIgE,EAA4B8C,EAAkC,GAC9DnQ,EAAkBmQ,EAAkC,GACpD9X,EAAc8X,EAAkC,GAChD9G,EAA0C,SAAU9rN,GAEpD,SAAS8rN,IACL,OAAkB,OAAX9rN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAU4sN,EAA0B9rN,GAIpC8rN,EAAyB/uP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACjE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,mBAExC,CACIzqL,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWwG,oBAI5C,OAD8B,IAAIgL,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDyxL,EA1BmC,CA2B5CrJ,EAAgBwN,iBAClBhzM,EAAQ6uM,yBAA2BA,GAK5B,SAASzX,EAAyBp3L,EAAS41M,GAIlD,IAAI3zN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQuxM,mBAAqBvxM,EAAQyxM,qBAAuBzxM,EAAQmoM,sBAAwBnoM,EAAQmpM,qBAAuBnpM,EAAQiqM,oCAAsCjqM,EAAQ+pM,kCAA+B,EAChN,IAAI8I,EAA4B+C,EAAkC,GAC9DpQ,EAAkBoQ,EAAkC,GACpD/X,EAAc+X,EAAkC,GAChD7L,EAA8C,SAAUhnN,GAExD,SAASgnN,IACL,OAAkB,OAAXhnN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAqD/D,OAvDAq+B,EAAU8nN,EAA8BhnN,GAIxCgnN,EAA6BjqP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GACrE,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,SACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,6BACP01L,WAAY,CAACjV,EAAYwD,WAAW2I,sCAExC,CACI5sL,MAAO,kBACP01L,WAAY,CAACjV,EAAYwD,WAAWmQ,2BAExC,CACIp0L,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWiQ,2BAK5C,OADAlQ,EAD8B,IAAIyR,EAA0BE,wBAAwB//K,GACnD2xB,SAAS//B,EAAOsyB,EAAM95B,MAInDwH,EAAkC,4BAAgC,MAA3BA,EAAsB,eACtD,CAAC,CACArgE,QAAS,gFAGjBqgE,EAAY,MAAiC,MAA5BA,EAAuB,gBACjC,CAAC,CACArgE,QAAS,0DAGA,MAAjBqgE,EAAY,MAAwC,MAA3BA,EAAsB,eACxC,CAAC,CACArgE,QAAS,iEAFrB,IAMGwlP,EAxDuC,CAyDhDvE,EAAgBwN,iBAClBhzM,EAAQ+pM,6BAA+BA,EACvC,IAAIE,EAAqD,SAAUlnN,GAE/D,SAASknN,IACL,OAAkB,OAAXlnN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUgoN,EAAqClnN,GAI/CknN,EAAoCnqP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC5E,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,gBACP01L,WAAY,CAACjV,EAAYwD,WAAWsI,yBAExC,CACIvsL,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAW6H,wBAI5C,OAD8B,IAAI2J,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD6sL,EA1B8C,CA2BvDzE,EAAgBwN,iBAClBhzM,EAAQiqM,oCAAsCA,EAC9C,IAAId,EAAsC,SAAUpmN,GAEhD,SAASomN,IACL,OAAkB,OAAXpmN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUknN,EAAsBpmN,GAIhComN,EAAqBrpP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC7D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,iBACP01L,WAAY,CAACjV,EAAYwD,WAAW+H,0BAExC,CACIhsL,MAAO,oBACP01L,WAAY,CAACjV,EAAYwD,WAAW2H,8BAI5C,OAD8B,IAAI6J,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD+rL,EA1B+B,CA2BxC3D,EAAgBwN,iBAClBhzM,EAAQmpM,qBAAuBA,EAC/B,IAAIhB,EAAuC,SAAUplN,GAEjD,SAASolN,IACL,OAAkB,OAAXplN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2B/D,OA7BAq+B,EAAUkmN,EAAuBplN,GAIjColN,EAAsBroP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC9D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,WACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,mBAI3F,OAD8B,IAAIyB,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD+qL,EA9BgC,CA+BzC3C,EAAgBwN,iBAClBhzM,EAAQmoM,sBAAwBA,EAChC,IAAIsJ,EAAsC,SAAU1uN,GAEhD,SAAS0uN,IACL,OAAkB,OAAX1uN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUwvN,EAAsB1uN,GAIhC0uN,EAAqB3xP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC7D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW6G,8BAI3F,OAD8B,IAAI2K,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDq0L,EA1B+B,CA2BxCjM,EAAgBwN,iBAClBhzM,EAAQyxM,qBAAuBA,EAC/B,IAAIF,EAAoC,SAAUxuN,GAE9C,SAASwuN,IACL,OAAkB,OAAXxuN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuB/D,OAzBAq+B,EAAUsvN,EAAoBxuN,GAI9BwuN,EAAmBzxP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC3D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,OACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWkO,oBAI3F,OAD8B,IAAIsD,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDm0L,EA1B6B,CA2BtC/L,EAAgBwN,iBAClBhzM,EAAQuxM,mBAAqBA,GAKtB,SAASna,EAAyBp3L,EAAS61M,GAIlD,IAAI5zN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQsvM,0BAAuB,EAC/B,IAAIuD,EAA4BgD,EAAkC,GAC9DrQ,EAAkBqQ,EAAkC,GACpDhY,EAAcgY,EAAkC,GAChDvG,EAAsC,SAAUvsN,GAEhD,SAASusN,IACL,OAAkB,OAAXvsN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmC/D,OArCAq+B,EAAUqtN,EAAsBvsN,GAIhCusN,EAAqBxvP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC7D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,cACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAW+P,kBAEvF,CACIh0L,MAAO,UACP01L,WAAY,CAACjV,EAAYwD,WAAW+P,kBAExC,CACIh0L,MAAO,YACP01L,WAAY,CAACjV,EAAYwD,WAAWsQ,qBAExC,CACIv0L,MAAO,QACP01L,WAAY,CAACjV,EAAYwD,WAAWqC,uBAExC,CACItmL,MAAO,sBACP01L,WAAY,CAACjV,EAAYwD,WAAWyJ,uBAAwBjN,EAAYwD,WAAWyI,gCAI3F,OAD8B,IAAI+I,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElDkyL,EAtC+B,CAuCxC9J,EAAgBwN,iBAClBhzM,EAAQsvM,qBAAuBA,GAKxB,SAASlY,EAAyBp3L,EAAS81M,GAIlD,IAAI7zN,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQgvM,4BAAyB,EACjC,IAAI6D,EAA4BiD,EAAkC,GAC9DtQ,EAAkBsQ,EAAkC,GACpD9G,EAAwC,SAAUjsN,GAElD,SAASisN,IACL,OAAkB,OAAXjsN,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmB/D,OArBAq+B,EAAU+sN,EAAwBjsN,GAIlCisN,EAAuBlvP,UAAU6kG,SAAW,SAAU//B,EAAOsyB,EAAM95B,GAC/D,GAAa,MAATwH,EACA,OAAO,KAEX,IAAIw8K,EAASr+M,EAAOjjC,UAAU6kG,SAASz/F,KAAKtB,KAAMghE,EAAOsyB,EAAM95B,GAC/D,GAAIgkL,EACA,OAAOA,EAEX,IAAIpuK,EAAS,CACT,CACI5V,MAAO,8BACP01L,WAAY,CAAC,IAAItN,EAAgBO,cAAc,CAAC,EAAG,OAI3D,OAD8B,IAAI8M,EAA0BE,wBAAwB//K,GACrD2xB,SAAS//B,EAAOsyB,EAAM95B,IAElD4xL,EAtBiC,CAuB1CxJ,EAAgBwN,iBAClBhzM,EAAQgvM,uBAAyBA,IAOnB+G,EAA2B,GA8B/B,OA3BA,SAASC,EAAkC9f,GAE1C,IAAI+f,EAAeF,EAAyB7f,GAC5C,QAAqBt2O,IAAjBq2P,EACH,OAAOA,EAAaj2M,QAGrB,IAAI9X,EAAS6tN,EAAyB7f,GAAY,CAGjDl2L,QAAS,IAOV,OAHA+1L,EAAoBG,GAAUhxO,KAAKgjC,EAAO8X,QAAS9X,EAAQA,EAAO8X,QAASg2M,GAGpE9tN,EAAO8X,QAQkBg2M,CAAkC,GAhuKtE,IAHL9tN,EAAO8X,QAAUwoK,KA6uKb,+CAIC,SAAStgL,GAGhB,IAAiDsgL,IAIxC,WACT,OAAiB,SAAS5/K,GAEhB,IAAIotM,EAAmB,GAGvB,SAASkgB,EAA+BhgB,GAGvC,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUl2L,QAGnC,IAAI9X,EAAS8tM,EAAiBE,GAAY,CACzCl2L,QAAS,GACT3iC,GAAI64N,EACJC,QAAQ,GAUT,OANAvtM,EAAQstM,GAAUhxO,KAAKgjC,EAAO8X,QAAS9X,EAAQA,EAAO8X,QAASk2M,GAG/DhuN,EAAOiuM,QAAS,EAGTjuM,EAAO8X,QAcf,OATAk2M,EAA+B9oP,EAAIw7B,EAGnCstN,EAA+B1qP,EAAIwqO,EAGnCkgB,EAA+B7gP,EAAI,GAG5B6gP,EAA+B,GAvCzC,CA0CG,CAEJ,SAAShuN,EAAQ8X,EAASm2M,GAE/B,aACA,IAAIC,EAAkBD,EAAgC,GAClD7hK,EAAU,WACV,SAASA,EAAO+hK,GACZzyP,KAAKyyP,SAAWA,EAKhBzyP,KAAK0yP,mBAAqB,IAAIF,EAC9BxyP,KAAK2yP,qBAAuB,IAAIH,EAChCxyP,KAAK4yP,oBAAsB,IAAIJ,EAC/BxyP,KAAK6yP,mBAAqB,IAAIL,EAC9BxyP,KAAK8yP,sBAAwB,IAAIN,EAgErC,OA9DA9hK,EAAOx0F,UAAUyrB,IAAM,SAAU/E,EAAKpJ,GAElC,OADAxZ,KAAK+yP,gBAAgB/yP,KAAK0yP,mBAAoB,MAAO9vO,EAAKpJ,GACnDxZ,MAEX0wF,EAAOx0F,UAAUk3O,MAAQ,SAAUxwN,EAAKpJ,GAEpC,OADAxZ,KAAK+yP,gBAAgB/yP,KAAK2yP,qBAAsB,QAAS/vO,EAAKpJ,GACvDxZ,MAEX0wF,EAAOx0F,UAAUg3O,KAAO,SAAUtwN,EAAKpJ,GAEnC,OADAxZ,KAAK+yP,gBAAgB/yP,KAAK4yP,oBAAqB,OAAQhwO,EAAKpJ,GACrDxZ,MAEX0wF,EAAOx0F,UAAUi3O,IAAM,SAAUvwN,EAAKpJ,GAElC,OADAxZ,KAAK+yP,gBAAgB/yP,KAAK6yP,mBAAoB,MAAOjwO,EAAKpJ,GACnDxZ,MAEX0wF,EAAOx0F,UAAUm3O,OAAS,SAAUzwN,EAAKpJ,GAErC,OADAxZ,KAAK+yP,gBAAgB/yP,KAAK8yP,sBAAuB,SAAUlwO,EAAKpJ,GACzDxZ,MAQX0wF,EAAOx0F,UAAU62P,gBAAkB,SAAUC,EAAiB3oI,EAAQznG,EAAKpJ,GAMvEw5O,EAAgBjqO,IAAI,CAChB,CAAEuqE,KAAM1wE,EAAKpJ,QANY,SAAU4iF,GACnC,IAAI62J,EAAW,IAAIC,EACnB,OAAOjwO,QAAQC,QAAQ1J,EAAQ4iF,EAAS62J,IACnCr4O,MAAK,SAAU2G,GAAK,OAAO0xO,SAKpC,IAAIE,EAAkB,CAClBvoP,KAAM,SAAUwxF,GACZ,GAAIA,EAAQiuB,SAAWA,EACnB,OAAO,EAEX,IAAI+oI,EAAiBJ,EAAgBK,UAAUj3J,EAAQx5E,KACvD,QAAuB5mB,IAAnBo3P,EACA,OAAO,EAQX,IAAIE,EAAQF,EAAe,GAI3B,OAHAh3J,EAAQvgG,OAASy3P,EAAMz3P,OACvBugG,EAAQm3J,YAAcH,EAAeG,YACrCn3J,EAAQ5iF,QAAU85O,EAAM95O,SACjB,GAEX8xB,OAAQ,SAAU8wD,GACd,OAAOA,EAAQ5iF,QAAQ4iF,KAG/Bp8F,KAAKyyP,SAASe,WAAWL,IAEtBziK,EA3EG,GA6Edt0C,EAAQs0C,OAASA,EACjB,IAAIwiK,EAAY,WACZ,SAASA,IACLlzP,KAAKgzO,WAAa,IAClBhzO,KAAKglB,QAAU,GACfhlB,KAAKwiC,KAAO,KAMhB,OAJA0wN,EAASh3P,UAAU2mB,KAAO,SAAUmwN,EAAYxwM,GAC5CxiC,KAAKgzO,WAAaA,EAClBhzO,KAAKwiC,KAAOA,GAET0wN,EAVK,GAYhB92M,EAAQ82M,SAAWA,GAKd,SAAS5uN,EAAQ8X,EAASq3M,GAE/B,IAAIC,GAA0D,SAASpvN,IAAS,WAC5E,aACA,SAASqvN,EAA+BrgK,EAAM89B,EAASwiI,GACrD5zP,KAAKszF,KAAOA,EACZtzF,KAAKoxH,QAAUA,EACfpxH,KAAK4zP,SAAWA,EAqBlB,SAASC,EAAgC52N,GACvCj9B,KAAK8zP,OAAS,GACd9zP,KAAK8wB,SAAW,GAChB9wB,KAAKi9B,OAASA,EAsBhB,SAAS82N,EAAsCC,EAAc5iI,EAASwiI,GACpE,OAAO,SAAStgK,EAAM2gK,GACpB,IAAIC,EAAWF,EAAe1gK,EAE9B,IAAI2gK,EAGF,OAAO,IAAIN,EAA+BK,EAAe1gK,EAAM89B,EAASwiI,GAFxEK,EAAeF,EAAsCG,EAAU9iI,EAASwiI,KAO9E,SAASO,EAAiCC,EAAY9gK,EAAM95E,GAE1D,IADA,IAAI7X,EAAM,EACD/E,EAAE,EAAGA,EAAEw3P,EAAWv3P,OAAQD,IACjC+E,GAAOyyP,EAAWx3P,GAAG02F,KAAKz2F,OAI5B,IAAIy2P,EAAQ,CAAEhgK,KADdA,EAAOA,EAAKjmF,OAAO1L,GACO6X,QAASA,GACnC46O,EAAWxyP,KAAK0xP,GAGlB,SAASe,EAAkCC,EAAWljI,EAAShS,EAAUu0D,GACvE,IAAImgF,EAAS1iI,EAAQ0iI,OAErB,IAAK,IAAIxgK,KAAQwgK,EACf,GAAIA,EAAOt0P,eAAe8zF,GAAO,CAC/B,IAAI8gK,EAAaE,EAAUjzP,QAC3B8yP,EAAiCC,EAAY9gK,EAAMwgK,EAAOxgK,IAEtD89B,EAAQtgG,SAASwiE,GACnB+gK,EAAkCD,EAAYhjI,EAAQtgG,SAASwiE,GAAO8rB,EAAUu0D,GAEhFv0D,EAAS99G,KAAKqyK,EAASygF,IA7E/BT,EAA+Bz3P,UAAY,CACzC00F,GAAI,SAAS3zD,EAAQmiF,GACnB,IAAIw0I,EAAW5zP,KAAK4zP,SAQpB,GANIA,GAAYA,EAASW,eACvBt3N,EAAS22N,EAASW,aAAav0P,KAAKoxH,QAAQn0F,OAAQA,IAGtDj9B,KAAKoxH,QAAQroG,IAAI/oB,KAAKszF,KAAMr2D,GAExBmiF,EAAU,CACZ,GAAwB,IAApBA,EAASviH,OAAgB,MAAM,IAAI+D,MAAM,4DAC7CZ,KAAKoxH,QAAQojI,SAASx0P,KAAKszF,KAAMr2D,EAAQmiF,EAAUp/G,KAAK4zP,UAE1D,OAAO5zP,OAUX6zP,EAAgC33P,UAAY,CAC1C6sB,IAAK,SAASuqE,EAAM95E,GAClBxZ,KAAK8zP,OAAOxgK,GAAQ95E,GAGtBg7O,SAAU,SAASlhK,EAAMr2D,EAAQmiF,EAAUw0I,GACzC,IAAIxiI,EAAU,IAAIyiI,EAAgC52N,GAClDj9B,KAAK8wB,SAASwiE,GAAQ89B,EAEtB,IAAIxuH,EAAQmxP,EAAsCzgK,EAAM89B,EAASwiI,GAE7DA,GAAYA,EAASa,gBACvBb,EAASa,eAAex3N,EAAQr6B,GAGlCw8G,EAASx8G,KA4Cb,IAgBI8xP,EAAkC,IAAI9vP,OAAO,MALd,CACjC,IAAK,IAAK,IAAK,IAAK,IAAK,IACzB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAGsDD,KAAK,OAAS,IAAK,KAuBzG,SAASgwP,EAAkCl+E,GAAUz2K,KAAKy2K,OAASA,EAsBnE,SAASm+E,EAAmCx6O,GAAQpa,KAAKoa,KAAOA,EAehE,SAASy6O,EAAgCz6O,GAAQpa,KAAKoa,KAAOA,EAe7D,SAAS06O,KAST,SAASC,EAA0BzB,EAAOtgO,EAAOgiO,GAGvB,MAApB1B,EAAM3sJ,OAAO,KAAc2sJ,EAAQA,EAAMjmP,OAAO,IAEpD,IAAI4nP,EAAW3B,EAAM32P,MAAM,KACvBu1B,EAAU,IAAI9zB,MAAM62P,EAASp4P,QAqBjCm4P,EAAY/vP,IAAM,GAElB,IAAK,IAAIrI,EAAE,EAAGA,EAAEq4P,EAASp4P,OAAQD,IAAK,CACpC,IAA2BgG,EAAvBsyP,EAAUD,EAASr4P,IAEnBgG,EAAQsyP,EAAQtyP,MAAM,iBACxBsvB,EAAQt1B,GAAK,IAAIg4P,EAAmChyP,EAAM,IAC1DowB,EAAMpxB,KAAKgB,EAAM,IACjBoyP,EAAY/vP,KAAO,MACVrC,EAAQsyP,EAAQtyP,MAAM,kBAC/BsvB,EAAQt1B,GAAK,IAAIi4P,EAAgCjyP,EAAM,IACvDoyP,EAAY/vP,KAAO,IACnB+tB,EAAMpxB,KAAKgB,EAAM,KACG,KAAZsyP,GACRhjO,EAAQt1B,GAAK,IAAIk4P,EACjBE,EAAY/vP,KAAO,MAEnBitB,EAAQt1B,GAAK,IAAI+3P,EAAkCO,GACnDF,EAAY/vP,KAAO,KAMvB,OAFA+vP,EAAY/vP,KAAO+vP,EAAY/vP,IAExBitB,EAoBT,SAASijO,EAA0BC,GACjCp1P,KAAKo1P,SAAWA,EAChBp1P,KAAKq1P,WAAa,GAClBr1P,KAAKs1P,UAAY,GACjBt1P,KAAKmF,WAAQnJ,EACbgE,KAAKyyP,cAAWz2P,EAChBgE,KAAKg1P,iBAAch5P,EA8ErB,SAASu5P,EAAkC3pD,EAAQ4pD,GAGjD,IAFA,IAAIH,EAAa,GAERz4P,EAAE,EAAG8E,EAAEkqM,EAAO/uM,OAAQD,EAAE8E,EAAG9E,IAAK,CACvC,IAAIkrE,EAAQ8jI,EAAOhvM,GAEnBy4P,EAAaA,EAAWvjO,OAAOg2C,EAAMllE,MAAM4yP,IAG7C,OAAOH,EAhOTV,EAAkCz4P,UAAY,CAC5Cu5P,SAAU,SAASC,GAGjB,IAFA,IAA0BF,EAAtB/+E,EAASz2K,KAAKy2K,OAET75K,EAAE,EAAGA,EAAE65K,EAAO55K,OAAQD,IAC7B44P,EAAK/+E,EAAO9vE,OAAO/pG,GACnB84P,EAAeA,EAAaviB,IAAI,CAAEwiB,kBAAc35P,EAAW0lM,QAAQ,EAAOk0D,WAAYJ,IAGxF,OAAOE,GAGTvwP,MAAO,WACL,OAAOnF,KAAKy2K,OAAO/5K,QAAQg4P,EAAiC,SAG9D93G,SAAU,WACR,OAAO58I,KAAKy2K,SAKhBm+E,EAAmC14P,UAAY,CAC7Cu5P,SAAU,SAASC,GACjB,OAAOA,EAAaviB,IAAI,CAAEwiB,aAAc,IAAKj0D,QAAQ,EAAMk0D,gBAAY55P,KAGzEmJ,MAAO,WACL,MAAO,WAGTy3I,SAAU,SAAS/gJ,GACjB,OAAOA,EAAOmE,KAAKoa,QAKvBy6O,EAAgC34P,UAAY,CAC1Cu5P,SAAU,SAASC,GACjB,OAAOA,EAAaviB,IAAI,CAAEwiB,aAAc,GAAIj0D,QAAQ,EAAMk0D,gBAAY55P,KAGxEmJ,MAAO,WACL,MAAO,QAGTy3I,SAAU,SAAS/gJ,GACjB,OAAOA,EAAOmE,KAAKoa,QAKvB06O,EAAmC54P,UAAY,CAC7Cu5P,SAAU,SAASC,GACjB,OAAOA,GAETvwP,MAAO,WAAa,MAAO,IAC3By3I,SAAU,WAAa,MAAO,KAmFhCu4G,EAA0Bj5P,UAAY,CACpCyrB,IAAK,SAASytO,GACZ,GAAIp1P,KAAKs1P,UAAUF,EAASQ,YAC1B,OAAO51P,KAAKs1P,UAAUF,EAASQ,YAKjC,IAFA,IAAIP,EAAar1P,KAAKq1P,WAEbz4P,EAAE,EAAGA,EAAEy4P,EAAWx4P,OAAQD,IAAK,CACtC,IAAI0D,EAAQ+0P,EAAWz4P,GAEnB64I,EAAUn1I,EAAM80P,SAASQ,aAAeR,EAASQ,WAGrD,GAFAngH,EAAUA,GAAWn1I,EAAM80P,SAASO,eAAiBP,EAASO,aAI5D,OADA31P,KAAKs1P,UAAUF,EAASQ,YAAct1P,EAC/BA,IAKb6yO,IAAK,SAASiiB,GACZ,IAAIttL,EAIJ,OAAIA,EAAQ9nE,KAAK2nB,IAAIytO,MAGrBttL,EAAQ,IAAIqtL,EAA0BC,GAGtCp1P,KAAKq1P,WAAWzzP,KAAKkmE,GAKjBstL,EAAS1zD,QACX55H,EAAMutL,WAAWzzP,KAAKkmE,IAZiBA,GAoB3CllE,MAAO,SAAS4yP,GAMd,IALA,IACIl1P,EAAO80P,EAAUllE,EADjBmlE,EAAar1P,KAAKq1P,WAGlBQ,EAAW,GAENj5P,EAAE,EAAGA,EAAEy4P,EAAWx4P,OAAQD,IAKY,qBAAjCszL,GAFZklE,GAFA90P,EAAQ+0P,EAAWz4P,IAEFw4P,UAEYQ,aACA,IAAvB1lE,EAAM/xL,QAAQq3P,IAAcK,EAASj0P,KAAKtB,GACM,qBAAnC4vL,EAAQklE,EAASO,gBACP,IAAvBzlE,EAAM/xL,QAAQq3P,IAAcK,EAASj0P,KAAKtB,GAIlD,OAAOu1P,IAuBX,IAAIC,EAA8B53P,OAAOwgC,QAAU,SAASy9I,GAC1D,SAAS45E,KAET,OADAA,EAAE75P,UAAYigL,EACP,IAAI45E,GAGb,SAASC,EAAqCzC,GAC5CvzP,KAAKuzP,YAAcA,GAAe,GA8BpC,SAAS0C,EAAyCp2O,GAGhD,IAAIlhB,EADJkhB,EAAOA,EAAKnjB,QAAQ,OAAQ,OAE5B,IACEiC,EAASu3P,mBAAmBr2O,GAC5B,MAAM4E,GAAQ9lB,EAAS,GACzB,OAAOA,EAnCTq3P,EAAqC95P,UAAY45P,EAA4B,CAC3Eh8O,OAAQ1b,MAAMlC,UAAU4d,OACxBzY,MAAQjD,MAAMlC,UAAUmF,MACxBO,KAAQxD,MAAMlC,UAAU0F,KACxB/E,OAAQ,EACR02P,YAAa,OAmCf,IAAI4C,EAAsC,WACxCn2P,KAAKo2P,UAAY,IAAIjB,EACrBn1P,KAAKgzB,MAAQ,KAIfmjO,EAAoCj6P,UAAY,CAC9C6sB,IAAK,SAAS+qO,EAAQxnP,GAOpB,IANA,IAE2D8N,EAFvDs7O,EAAe11P,KAAKo2P,UAAWjxP,EAAQ,IACvC6vP,EAAc,GACdvC,EAAW,IAAIr0P,MAAM01P,EAAOj3P,QAASw5P,EAAc,GAEnD3nO,GAAU,EAEL9xB,EAAE,EAAGA,EAAEk3P,EAAOj3P,OAAQD,IAAK,CAClC,IAAI02P,EAAQQ,EAAOl3P,GAAIo2B,EAAQ,GAE3BiiO,EAAWF,EAA0BzB,EAAMhgK,KAAMtgE,EAAOgiO,GAE5DqB,EAAcA,EAAYvkO,OAAOmjO,GAEjC,IAAK,IAAI9sP,EAAE,EAAGA,EAAE8sP,EAASp4P,OAAQsL,IAAK,CACpC,IAAI+sP,EAAUD,EAAS9sP,GAEnB+sP,aAAmBJ,IAEvBpmO,GAAU,EAGVgnO,EAAeA,EAAaviB,IAAI,CAAEwiB,kBAAc35P,EAAW0lM,QAAQ,EAAOk0D,WAAY,MACtFzwP,GAAS,IAGTuwP,EAAeR,EAAQO,SAASC,GAChCvwP,GAAS+vP,EAAQ/vP,SAEnB,IAAIqU,EAAU,CAAEA,QAAS85O,EAAM95O,QAASwZ,MAAOA,GAC/Cy/N,EAAS71P,GAAK4c,EAGZkV,IACFgnO,EAAeA,EAAaviB,IAAI,CAAEwiB,kBAAc35P,EAAW0lM,QAAQ,EAAOk0D,WAAY,MACtFzwP,GAAS,KAGXuwP,EAAajD,SAAWA,EACxBiD,EAAavwP,MAAQ,IAAIP,OAAOO,EAAQ,KACxCuwP,EAAaV,YAAcA,GAEvB56O,EAAO9N,GAAWA,EAAQgqP,MAC5Bt2P,KAAKgzB,MAAM5Y,GAAQ,CACjB66O,SAAUoB,EACV5D,SAAUA,KAKhB8D,YAAa,SAASn8O,GACpB,IAAIk5O,EAAQtzP,KAAKgzB,MAAM5Y,GAEvB,IAAKk5O,EAAS,MAAM,IAAI1yP,MAAM,2BAA6BwZ,GAI3D,IAFA,IAAIzb,EAAS,IAAIP,MAAMk1P,EAAMb,SAAS51P,QAE7BD,EAAE,EAAGA,EAAE02P,EAAMb,SAAS51P,OAAQD,IACrC+B,EAAO/B,GAAK02P,EAAMb,SAAS71P,GAG7B,OAAO+B,GAGT63P,SAAU,SAASp8O,GACjB,QAASpa,KAAKgzB,MAAM5Y,IAGtBwiI,SAAU,SAASxiI,EAAMve,GACvB,IAAIy3P,EAAQtzP,KAAKgzB,MAAM5Y,GAAOk5N,EAAS,GACvC,IAAKggB,EAAS,MAAM,IAAI1yP,MAAM,2BAA6BwZ,GAI3D,IAFA,IAAI66O,EAAW3B,EAAM2B,SAEZr4P,EAAE,EAAGA,EAAEq4P,EAASp4P,OAAQD,IAAK,CACpC,IAAIs4P,EAAUD,EAASr4P,GAEnBs4P,aAAmBJ,IAEvBxhB,GAAU,IACVA,GAAU4hB,EAAQt4G,SAAS/gJ,IAS7B,MANyB,MAArBy3O,EAAO3sI,OAAO,KAAc2sI,EAAS,IAAMA,GAE3Cz3O,GAAUA,EAAO03P,cACnBjgB,GAAUtzO,KAAKy2P,oBAAoB56P,EAAO03P,YAAaD,EAAMb,WAGxDnf,GAGTmjB,oBAAqB,SAAS56P,EAAQ42P,GACpC,IA9YiC7nP,EA8Y7Bi3K,EAAQ,GACR5kL,EAAO,GACX,IAAI,IAAID,KAAOnB,EACTA,EAAO2D,eAAexC,IACxBC,EAAK2E,KAAK5E,GAGdC,EAAK4kF,OACL,IAAK,IAAIjlF,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAAK,CAEpC,IAAIJ,EAAQX,EADZmB,EAAMC,EAAKL,IAEX,GAAa,MAATJ,EAAJ,CAGA,IAAIw0L,EAAO1oE,mBAAmBtrH,GAC9B,GA7Z+B4N,EA6ZCpO,EA5ZY,mBAAzC0B,OAAOhC,UAAUiR,SAAS7L,KAAKsJ,GA6ZhC,IAAK,IAAIzC,EAAI,EAAGA,EAAI3L,EAAMK,OAAQsL,IAAK,CACrC,IAAIuuP,EAAY15P,QAAmBsrH,mBAAmB9rH,EAAM2L,IAC5D05K,EAAMjgL,KAAK80P,QAGb1lE,GAAQ,IAAM1oE,mBAAmB9rH,GACjCqlL,EAAMjgL,KAAKovL,IAIf,OAAqB,IAAjBnP,EAAMhlL,OAAuB,GAE1B,IAAMglL,EAAMl9K,KAAK,MAG1BgyP,iBAAkB,SAASxlG,GAEzB,IADA,IAAI0wB,EAAQ1wB,EAAYx0J,MAAM,KAAM42P,EAAc,GAC1C32P,EAAE,EAAGA,EAAIilL,EAAMhlL,OAAQD,IAAK,CAClC,IAIIJ,EAJAw0L,EAAYnP,EAAMjlL,GAAGD,MAAM,KAC3BK,EAAYi5P,EAAyCjlE,EAAK,IAC1DzwE,EAAYvjH,EAAIH,OAChBwB,GAAU,EAEM,IAAhB2yL,EAAKn0L,OACPL,EAAQ,QAGJ+jH,EAAY,GAAiC,OAA5BvjH,EAAIqE,MAAMk/G,EAAW,KACxCliH,GAAU,EAENk1P,EADJv2P,EAAMA,EAAIqE,MAAM,EAAGk/G,EAAY,MAE7BgzI,EAAYv2P,GAAO,KAGvBR,EAAQw0L,EAAK,GAAKilE,EAAyCjlE,EAAK,IAAM,IAEpE3yL,EACFk1P,EAAYv2P,GAAK4E,KAAKpF,GAEtB+2P,EAAYv2P,GAAOR,EAGvB,OAAO+2P,GAGTF,UAAW,SAAS//J,GAClB,IACIsjK,EAASh6P,EAAMqpM,EADf2F,EAAS,CAAE5rM,KAAKo2P,WACW7C,EAAc,GACzCsD,GAAiB,EAGrB,IAAoB,KADpB5wD,EAAa3yG,EAAKn1F,QAAQ,MACH,CACrB,IAAIgzJ,EAAc79D,EAAKjmF,OAAO44L,EAAa,EAAG3yG,EAAKz2F,QACnDy2F,EAAOA,EAAKjmF,OAAO,EAAG44L,GACtBstD,EAAcvzP,KAAK22P,iBAAiBxlG,GAatC,IARuB,OAFvB79D,EAAOorB,UAAUprB,IAERqT,OAAO,KAAcrT,EAAO,IAAMA,IAE3CsjK,EAAUtjK,EAAKz2F,QACD,GAAkC,MAA7By2F,EAAKqT,OAAOiwJ,EAAU,KACvCtjK,EAAOA,EAAKjmF,OAAO,EAAGupP,EAAU,GAChCC,GAAiB,GAGdj6P,EAAE,EAAGA,EAAE02F,EAAKz2F,SACf+uM,EAAS2pD,EAAkC3pD,EAAQt4G,EAAKqT,OAAO/pG,KACnDC,OAFWD,KAKzB,IAAIk6P,EAAY,GAChB,IAAKl6P,EAAE,EAAGA,EAAEgvM,EAAO/uM,OAAQD,IACrBgvM,EAAOhvM,GAAG61P,UAAYqE,EAAUl1P,KAAKgqM,EAAOhvM,IAGlDgvM,EApQJ,SAA2CA,GACzC,OAAOA,EAAO/pH,MAAK,SAAS94E,EAAGpB,GAC7B,OAAOA,EAAEqtP,YAAY/vP,IAAM8D,EAAEisP,YAAY/vP,OAkQhC8xP,CAAkCD,GAE3C,IAAIhvL,EAAQgvL,EAAU,GAEtB,GAAIhvL,GAASA,EAAM2qL,SAMjB,OAHIoE,GAAmD,UAAjC/uL,EAAM3iE,MAAMvH,OAAOyD,OAAO,KAC9CiyF,GAAc,KAzOtB,SAAyCxrB,EAAOwrB,EAAMigK,GACpD,IAAId,EAAW3qL,EAAM2qL,SAAUttP,EAAQ2iE,EAAM3iE,MACzC6xP,EAAW1jK,EAAK1wF,MAAMuC,GAAQ8xP,EAAiB,EAC/Ct4P,EAAS,IAAIq3P,EAAqCzC,GAEtD50P,EAAO9B,OAAS41P,EAAS51P,OAEzB,IAAK,IAAID,EAAE,EAAGA,EAAE61P,EAAS51P,OAAQD,IAAK,CAGpC,IAFA,IAAI4c,EAAUi5O,EAAS71P,GAAIo2B,EAAQxZ,EAAQwZ,MAAOn3B,EAAS,GAElDsM,EAAE,EAAGA,EAAE6qB,EAAMn2B,OAAQsL,IAC5BtM,EAAOm3B,EAAM7qB,IAAM6uP,EAASC,KAG9Bt4P,EAAO/B,GAAK,CAAE4c,QAASA,EAAQA,QAAS3d,OAAQA,EAAQq7P,YAAalkO,EAAMn2B,QAG7E,OAAO8B,EA0NIw4P,CAAgCrvL,EAAOwrB,EAAMigK,MAKZ9uP,IA5gBR,SAAS26G,EAAUg4I,GACvD,IAAIhmI,EAAU,IAAIyiI,EAElBz0I,EAAS20I,EAAsC,GAAI3iI,EAASpxH,KAAK4zP,WAEjES,EAAkC,GAAIjjI,GAAS,SAASkiI,GAClD8D,EAAoBA,EAAiBp3P,KAAMszP,GACxCtzP,KAAK+oB,IAAIuqO,KACftzP,OAsgBLm2P,EAAoCvyD,QAAU,SAE9C,IAAIyzD,EAA8BlB,EAGrB1C,EAAgC,GAAQ,SACqIz3P,KAAtL03P,EAAgC,WAAa,OAAO2D,GAA+B/1P,KAAK86C,EAASq3M,EAAiCr3M,EAAS9X,MAAyDA,EAAO8X,QAAUs3M,GAC5L,qBAAXpvN,GAA0BA,EAAgB,QAC1DA,EAAgB,QAAI+yN,EACK,qBAATr3P,OAChBA,KAAsB,gBAAIq3P,KAE7B/1P,KAAKtB,QAGqBsB,KAAK86C,EAASq3M,EAAgC,EAAhCA,CAAmCnvN,KAIzE,SAASA,EAAQ8X,GAEtB9X,EAAO8X,QAAU,SAAS9X,GAQzB,OAPIA,EAAOgzN,kBACVhzN,EAAOizN,UAAY,aACnBjzN,EAAOy6I,MAAQ,GAEfz6I,EAAOxT,SAAW,GAClBwT,EAAOgzN,gBAAkB,GAEnBhzN,IAMH,SAASA,EAAQ8X,GAEtB9X,EAAO8X,QAAU,WAAa,MAAM,IAAIx7C,MAAM,uCAlyB7C0jC,EAAO8X,QAAUwoK,KA6yBb,gDAIC,SAAS4uB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQq7M,2BAAwB,EAChC,IAAIC,EAAmBF,EAA0C,gDAS7DC,EAAuC,SAAUt4N,GAEjD,SAASs4N,IACL,IAAI13P,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAEhE,OADAD,EAAMy1E,WAAa,GACZz1E,EA+DX,OAnEAs+B,EAAUo5N,EAAuBt4N,GAgBjCs4N,EAAsBv7P,UAAUinE,IAAM,WAElC,OADAnjE,KAAKu7O,gBAAkB,MAChBv7O,MAYXy3P,EAAsBv7P,UAAUknE,GAAK,WAEjC,OADApjE,KAAKu7O,gBAAkB,KAChBv7O,MAaXy3P,EAAsBv7P,UAAUy7P,aAAe,SAAUv1L,EAAU5lE,GAC/D,IAAIs3E,EAAY,CACZ1R,SAAUA,EACV5lE,MAAOA,GAGX,OADAwD,KAAKw1E,WAAW5zE,KAAKkyE,GACd9zE,MAYXy3P,EAAsBv7P,UAAU07P,MAAQ,WAEpC,OADqB,IAAIF,EAAiB5iB,eAAe90O,KAAKi9B,OAAQj9B,KAAKu7O,gBAAiBv7O,KAAKw1E,aAG9FiiL,EApEgC,CARrBD,EAA2C,yCA6E/CK,eAClBz7M,EAAQq7M,sBAAwBA,GAK1B,6CAIC,SAASjkB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ07M,wBAAqB,EAC7B,IAAIJ,EAAmBF,EAA0C,gDAS7DM,EAAoC,SAAU34N,GAE9C,SAAS24N,IACL,IAAI/3P,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAEhE,OADAD,EAAMg4P,0BAA2B,EAC1Bh4P,EA6EX,OAjFAs+B,EAAUy5N,EAAoB34N,GAgB9B24N,EAAmB57P,UAAU87P,GAAK,SAAUz7L,GAGxC,OAFAv8D,KAAKoiE,SAAW,KAChBpiE,KAAKu8D,OAASA,EACPv8D,MAYX83P,EAAmB57P,UAAU+7P,MAAQ,SAAU17L,GAG3C,OAFAv8D,KAAKoiE,SAAW,QAChBpiE,KAAKu8D,OAASA,EACPv8D,MAYX83P,EAAmB57P,UAAUs2B,IAAM,WAG/B,OAFAxyB,KAAKoiE,SAAW,MAChBpiE,KAAKu8D,OAAS,GACPv8D,MAYX83P,EAAmB57P,UAAU8+O,uBAAyB,SAAU+c,GAG5D,YAFiC,IAA7BA,IAAuCA,GAA2B,GACtE/3P,KAAK+3P,yBAA2BA,EACzB/3P,MAYX83P,EAAmB57P,UAAU07P,MAAQ,WACjC,IAAIhc,EAAc,IAAI8b,EAAiBxiB,YAAYl1O,KAAKi9B,OAAQj9B,KAAKoiE,SAAUpiE,KAAKu8D,QAEpF,OADAq/K,EAAYZ,uBAAyBh7O,KAAK+3P,yBACnCnc,GAEJkc,EAlF6B,CARlBN,EAA2C,yCA2F/CK,eAClBz7M,EAAQ07M,mBAAqBA,GAKvB,wCAIC,SAACtkB,EAAyBp3L,GAIjCl+C,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQy7M,mBAAgB,EAMxB,IAAIA,EAA+B,WAC/B,SAASA,KAqFT,OArEAA,EAAc37P,UAAUg8P,iBAAmB,SAAUj7N,GAEjD,OADAj9B,KAAKi9B,OAASA,EACPj9B,MAWX63P,EAAc37P,UAAUi8P,iBAAmB,SAAU7tL,EAAW+xC,GAE5D,OADAr8G,KAAKi9B,OAAS,CAAE0tB,MAAO2f,EAAW7Q,OAAQ4iD,GACnCr8G,MAWX63P,EAAc37P,UAAUk8P,kBAAoB,SAAU9tL,EAAW2J,GAE7D,OADAj0E,KAAKi9B,OAAS,CAAE0tB,MAAO2f,EAAW2J,QAASA,GACpCj0E,MAWX63P,EAAc37P,UAAUm8P,yBAA2B,SAAU/tL,EAAW01B,EAAW+7I,GAE/E,OADA/7O,KAAKi9B,OAAS,CAAE0tB,MAAO2f,EAAW01B,UAAWA,EAAW+7I,eAAgBA,GACjE/7O,MAWX63P,EAAc37P,UAAUo8P,sBAAwB,SAAUhuL,EAAW+xC,EAAYy/H,GAE7E,OADA97O,KAAKi9B,OAAS,CAAE0tB,MAAO2f,EAAW7Q,OAAQ4iD,EAAYy/H,oBAAqBA,GACpE97O,MAWX63P,EAAc37P,UAAUq8P,oCAAsC,SAAUjuL,EAAW01B,EAAW+7I,EAAgBD,GAE1G,OADA97O,KAAKi9B,OAAS,CAAE0tB,MAAO2f,EAAW01B,UAAWA,EAAW+7I,eAAgBA,EAAgBD,oBAAqBA,GACtG97O,MAEJ63P,EAtFwB,GAwFnCz7M,EAAQy7M,cAAgBA,GAKlB,gCAIC,SAACrkB,EAAyBp3L,EAASo7M,GAI1Ct5P,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQo8M,0BAA4Bp8M,EAAQq8M,0BAA4Br8M,EAAQs8M,kBAAoBt8M,EAAQq7M,sBAAwBr7M,EAAQ07M,wBAAqB,EACjK,IAAIa,EAAuBnB,EAAgD,8CAC3Et5P,OAAOwpB,eAAe00B,EAAS,qBAAuB,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOgxO,EAAqBb,sBACzH,IAAIc,EAA0BpB,EAAmD,iDACjFt5P,OAAOwpB,eAAe00B,EAAS,wBAA0B,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOixO,EAAwBnB,yBAC/H,IAAIoB,EAAsBrB,EAA+C,6CACzEt5P,OAAOwpB,eAAe00B,EAAS,oBAAsB,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOkxO,EAAoBH,qBACvH,IAAII,EAA8BtB,EAAuD,qDACzFt5P,OAAOwpB,eAAe00B,EAAS,4BAA8B,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOmxO,EAA4BL,6BACvI,IAAIM,EAA8BvB,EAAuD,qDACzFt5P,OAAOwpB,eAAe00B,EAAS,4BAA8B,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOoxO,EAA4BP,8BAKjI,oDAIC,SAAShlB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQq8M,+BAA4B,EACpC,IAAIf,EAAmBF,EAA0C,gDAS7DiB,EAA2C,SAAUt5N,GAErD,SAASs5N,IACL,IAAI14P,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAEhE,OADAD,EAAMi5P,iBAAkB,EACjBj5P,EAqFX,OAzFAs+B,EAAUo6N,EAA2Bt5N,GAkBrCs5N,EAA0Bv8P,UAAU+8P,OAAS,SAAUve,EAAgBC,GAInE,OAHA36O,KAAKoiE,SAAWs1L,EAAiBliB,sBAAsB0jB,OACvDl5P,KAAK06O,eAAiBA,EACtB16O,KAAK26O,aAAeA,EACb36O,MAcXy4P,EAA0Bv8P,UAAUi9P,OAAS,SAAUze,EAAgBC,GAInE,OAHA36O,KAAKoiE,SAAWs1L,EAAiBliB,sBAAsB4jB,OACvDp5P,KAAK06O,eAAiBA,EACtB16O,KAAK26O,aAAeA,EACb36O,MAcXy4P,EAA0Bv8P,UAAUm9P,OAAS,SAAU3e,EAAgBC,GAInE,OAHA36O,KAAKoiE,SAAWs1L,EAAiBliB,sBAAsB8jB,OACvDt5P,KAAK06O,eAAiBA,EACtB16O,KAAK26O,aAAeA,EACb36O,MAaXy4P,EAA0Bv8P,UAAU0+O,aAAe,SAAUA,GAEzD,OADA56O,KAAKg5P,gBAAkBpe,EAChB56O,MAYXy4P,EAA0Bv8P,UAAU07P,MAAQ,WAExC,OADyB,IAAIF,EAAiBtiB,mBAAmBp1O,KAAKi9B,OAAQj9B,KAAKoiE,SAAUpiE,KAAK06O,eAAgB16O,KAAK26O,aAAc36O,KAAKg5P,kBAGvIP,EA1FoC,CARzBjB,EAA2C,yCAmG/CK,eAClBz7M,EAAQq8M,0BAA4BA,GAK9B,oDAIC,SAASjlB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQo8M,+BAA4B,EACpC,IAAId,EAAmBF,EAA0C,gDAS7DgB,EAA2C,SAAUr5N,GAErD,SAASq5N,IACL,OAAkB,OAAXr5N,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAsE/D,OAxEAq+B,EAAUm6N,EAA2Br5N,GAgBrCq5N,EAA0Bt8P,UAAU+8P,OAAS,SAAUve,EAAgBC,GAInE,OAHA36O,KAAKoiE,SAAWs1L,EAAiBliB,sBAAsB0jB,OACvDl5P,KAAK06O,eAAiBA,EACtB16O,KAAK26O,aAAeA,EACb36O,MAcXw4P,EAA0Bt8P,UAAUi9P,OAAS,SAAUze,EAAgBC,GAInE,OAHA36O,KAAKoiE,SAAWs1L,EAAiBliB,sBAAsB4jB,OACvDp5P,KAAK06O,eAAiBA,EACtB16O,KAAK26O,aAAeA,EACb36O,MAcXw4P,EAA0Bt8P,UAAUm9P,OAAS,SAAU3e,EAAgBC,GAInE,OAHA36O,KAAKoiE,SAAWs1L,EAAiBliB,sBAAsB8jB,OACvDt5P,KAAK06O,eAAiBA,EACtB16O,KAAK26O,aAAeA,EACb36O,MAYXw4P,EAA0Bt8P,UAAU07P,MAAQ,WAExC,OADyB,IAAIF,EAAiBviB,mBAAmBn1O,KAAKi9B,OAAQj9B,KAAKoiE,SAAUpiE,KAAK06O,eAAgB16O,KAAK26O,eAGpH6d,EAzEoC,CARzBhB,EAA2C,yCAkF/CK,eAClBz7M,EAAQo8M,0BAA4BA,GAK9B,4CAIC,SAAShlB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQs8M,uBAAoB,EAC5B,IAAIhB,EAAmBF,EAA0C,gDAS7DkB,EAAmC,SAAUv5N,GAE7C,SAASu5N,IACL,OAAkB,OAAXv5N,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA4D/D,OA9DAq+B,EAAUq6N,EAAmBv5N,GAc7Bu5N,EAAkBx8P,UAAU8mC,IAAM,SAAUu2H,GAGxC,OAFAv5J,KAAKoiE,SAAW,MAChBpiE,KAAKu5J,UAAYA,EACVv5J,MAYX04P,EAAkBx8P,UAAU+mC,OAAS,SAAUs2H,GAG3C,OAFAv5J,KAAKoiE,SAAW,SAChBpiE,KAAKu5J,UAAYA,EACVv5J,MAYX04P,EAAkBx8P,UAAUq9P,cAAgB,SAAUt8N,GAElD,OADAj9B,KAAKw5P,mBAAqBv8N,EACnBj9B,MAYX04P,EAAkBx8P,UAAU07P,MAAQ,WAEhC,OADiB,IAAIF,EAAiBriB,WAAWr1O,KAAKi9B,OAAQj9B,KAAKoiE,SAAUpiE,KAAKu5J,UAAWv5J,KAAKw5P,qBAG/Fd,EA/D4B,CARjBlB,EAA2C,yCAwE/CK,eAClBz7M,EAAQs8M,kBAAoBA,GAKtB,4BAIC,SAASllB,EAAyBp3L,EAASo7M,GAIlD,IAAIiC,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwB7D5+G,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQg+M,sBAAmB,EAC3B,IAAIC,EAAS7C,EAAkC,iBAC3C8C,EAAW9C,EAAoC,mBAQ/C4C,EAAkC,WAIlC,SAASA,EAAiBG,EAASzkN,EAAQ0kN,GACvCx6P,KAAKu6P,QAAUA,EACfv6P,KAAK81C,OAASA,EACd91C,KAAKw6P,OAASA,EAsLlB,OAvKAJ,EAAiBl+P,UAAUu+P,aAAe,WACtC,OAAOhB,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,oBAAqB,CAAElsB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC9G,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehC43N,EAAiBl+P,UAAUE,MAAQ,SAAU2+P,GACzC,OAAOtB,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIo8F,EACJ,OAAOy9J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDx+J,EAAU,CACNhiF,KAAM2gP,GAEVx3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,gCAAiC92I,EAAS,CAAE3gG,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACpI,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAgBhC43N,EAAiBl+P,UAAU8+P,KAAO,SAAUC,GACxC,OAAOxB,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIk7P,EACJ,OAAOrB,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDM,EAAsB,CAClBD,SAAUA,GAEd13P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,yBAA0BgoB,EAAqB,CAAEz/P,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACzI,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehC43N,EAAiBl+P,UAAUkgN,QAAU,SAAU9vM,GAC3C,OAAOmtP,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIo8F,EACJ,OAAOy9J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDx+J,EAAU,CACN9vF,QAASA,GAAW,IAExB/I,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,4BAA6B92I,EAAS,CAAE3gG,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAChI,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehC43N,EAAiBl+P,UAAUi/P,WAAa,SAAUrzL,GAC9C,OAAO2xL,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIo8F,EACJ,OAAOy9J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDx+J,EAAU,CACNt0B,MAAOA,GAEXvkE,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,+BAAgC92I,EAAS,CAAE3gG,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACnI,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAKzB43N,EA7L2B,GA+LtCh+M,EAAQg+M,iBAAmBA,GAKrB,kBAIC,SAAC5mB,EAAyBp3L,GAIjCl+C,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IAMvD4/C,EAAiB,QAJJ,CACT11B,QAAS,SACTvb,KAAM,OAOJ,kBAIC,SAASqoO,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAezCg7N,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwB7D5+G,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQg/M,YAAS,EACjB,IAAI1D,EAAmBF,EAA0C,gDAC7D6D,EAAU7D,EAAmC,kBAC7C8D,EAAQ9D,EAAkC,iBAQ1C4D,EAAwB,SAAUj8N,GAKlC,SAASi8N,EAAOb,EAASv5P,EAAS80C,EAAQylN,EAAcC,GACpD,OAAOr8N,EAAO79B,KAAKtB,KAAMu6P,EAASv5P,EAAS80C,OAAqB95C,EAAWu/P,EAAcC,IAAgBx7P,KAmI7G,OAxIAq+B,EAAU+8N,EAAQj8N,GAYlBi8N,EAAOl/P,UAAUu/P,MAAQ,WACrB,IAAIC,EAAa17P,KAAK27P,cAAgB37P,KAAK27P,aAAaD,UAAa17P,KAAK27P,aAAaD,UAAYN,EAAOQ,mBAAmB57P,KAAK81C,OAAO6kN,UACzI,GAAyB,kBAAde,GAA+C,IAArBA,EAAU7+P,OAC3C,MAAM,IAAI+D,MAAM,+GAEpB,OAAO86P,GAKXN,EAAOl/P,UAAU6kG,SAAW,SAAUjrD,GAClC,OAAO,EAAI4hN,EAAiBrgB,sBAAsBvhM,IAQtDslN,EAAOl/P,UAAU2/P,cAAgB,SAAUL,GACvC,IAAIA,EAAJ,CAGA,IAAI1lN,EAAS91C,KAAK81C,OAClB91C,KAAK27P,aAAe,CAChBG,YAAahmN,EAAOgmN,YACpBJ,UAAW5lN,EAAO4lN,WAAa17P,KAAKy7P,QACpCM,QAASjmN,EAAOimN,QAChB5+J,SAAUrnD,EAAOqnD,SACjB6+J,UAAWlmN,EAAOkmN,UAClBh+K,MAAOloC,EAAOkoC,SAOtBo9K,EAAOl/P,UAAU+/P,2BAA6B,WAC1C,MAAO,eAWXb,EAAOl/P,UAAUggQ,QAAU,WACvB,OAAOzC,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAAG,MAAO,CAAC,EAAa6lL,EAAMa,gBAAgBn8P,KAAKu6P,QAAQM,IAAK76P,KAAK81C,OAAO2+E,SAAUz0H,KAAKw6P,OAAOM,gBACvG,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,gBAgBjDqB,EAAOQ,mBAAqB,SAAUh5O,GAClC,IAEI84O,EADAU,EAAiBx5O,EAAIhgB,MADJ,yBAMrB,OAHIw5P,IACAV,EAAYU,EAAe,IAExBV,GAcXN,EAAOl/P,UAAUwiC,OAAS,WACtB,IAAIn7B,EACJ,OAAOk2P,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIw9O,EAAQx4N,EACZ,OAAO60O,EAAY75P,MAAM,SAAU+0B,GAC/B,OAAQA,EAAG0gD,OACP,KAAK,EAED,GADA+nK,GAAS,EAAIka,EAAiBrgB,sBAAsBr3O,KAAK27P,cAErD,MAAMne,EAEVzoN,EAAG0gD,MAAQ,EACf,KAAK,EASD,OARA1gD,EAAGilO,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACtBojB,EAAU,CACNvpB,IAAKuE,KAAK81C,OAAO2+E,SACjB4nI,aAAcr8P,KAAKu6P,QAAQ+B,oBAEG,QAA1B/4P,EAAKvD,KAAKu8P,kBAA+B,IAAPh5P,OAAgB,EAASA,EAAGi5P,uBAClEx3O,EAAQy3O,uBAAwB,GAE7B,CAAC,EAAaz8P,KAAKu6P,QAAQM,IAAI3nB,KAAK,iBAAkBlzO,KAAK27P,aAAc32O,EAAShlB,KAAKw6P,OAAOM,gBACzG,KAAK,EAED,MAAO,CAAC,EADG/lO,EAAGglO,OACiBv3N,MACnC,KAAK,EAED,MADazN,EAAGglO,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAKzB44N,EAzIiB,CA0I1BC,EAAQqB,OACVtgN,EAAQg/M,OAASA,GAKX,qBAIC,SAAS5nB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQugN,eAAY,EACpB,IAAIjF,EAAmBF,EAA0C,gDAU7DmF,EAA2B,SAAUx9N,GASrC,SAASw9N,EAAUpC,EAASv5P,EAAS80C,EAAQylN,EAAcC,GACvD,IAAIz7P,EAAQo/B,EAAO79B,KAAKtB,KAAMu6P,EAASv5P,EAAS80C,OAAqB95C,EAAWu/P,EAAcC,IAAgBx7P,KAI9G,OAHAD,EAAM68P,SAAW,kBACjB78P,EAAM88P,eAAiB,qBACvBz+P,MAAMlC,UAAU0F,KAAKxF,MAAM2D,EAAM+8P,cAAeH,EAAUG,eACnD/8P,EAmFX,OAhGAs+B,EAAUs+N,EAAWx9N,GA0BrBw9N,EAAUf,mBAAqB,SAAUh5O,GACrC,IAEIm6O,EADAC,EAAmBp6O,EAAIhgB,MADJ,2BAMvB,OAHIo6P,IACAD,EAAcC,EAAiB,IAE5BD,GAOXJ,EAAUzgQ,UAAUu/P,MAAQ,WACxB,IAAI3lN,EAAS91C,KAAK81C,OACdinN,EAAcjnN,EAAOr8B,IAAMzZ,KAAKgB,QAAQmuB,aAAawtO,EAAUM,uBAAyBN,EAAUf,mBAAmB9lN,EAAO6kN,UAChI,GAA2B,kBAAhBoC,GAAmD,IAAvBA,EAAYlgQ,OAC/C,MAAM,IAAI+D,MAAM,iIAAiIkxB,OAAO6qO,EAAUM,qBAAsB,OAE5L,OAAOF,GAOXJ,EAAUzgQ,UAAU6kG,SAAW,SAAUm8J,GACrC,IAAIpnN,EAASonN,EACTz4O,GAAQ,EAAIizO,EAAiBvgB,uBAAuBrhM,GACxD,OAAOrxB,GAAgBzkB,KAAKm9P,iBAAiBrnN,EAAOsnN,WAQxDT,EAAUzgQ,UAAU2/P,cAAgB,SAAUL,GACtCA,IAIJx7P,KAAK81C,OAAOr8B,GAAKzZ,KAAKy7P,UAM1BkB,EAAUzgQ,UAAU+/P,2BAA6B,WAC7C,MAAO,kBAOXU,EAAUzgQ,UAAUihQ,iBAAmB,SAAUC,GAC7C,GAAIA,GAAyB,eAAbA,GAA0C,cAAbA,GAAyC,eAAbA,EACrE,MAAO,CAAC,CAAEz8P,QAAS,+EAI3Bg8P,EAAUG,cAAgB,CAAC,cAAe,SAE1CH,EAAUM,qBAAuB,uBAEjCN,EAAUU,cAAgB,eAE1BV,EAAUxxP,KAAO,YACVwxP,EAjGoB,CATjBnF,EAAmC,kBA2GvCkF,OACVtgN,EAAQugN,UAAYA,GAKd,iBAIC,SAASnpB,EAAyBp3L,EAASo7M,GAIlD,IAAIiC,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwB7D5+G,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQsgN,WAAQ,EAChB,IAAIY,EAAS9F,EAA0C,gDACnD+F,EAAY/F,EAAoC,mBAChD8C,EAAW9C,EAAoC,mBAC/C6C,EAAS7C,EAAkC,iBAS3CkF,EAAuB,WAYvB,SAASA,EAAMnC,EAASv5P,EAAS80C,EAAQ0kN,EAAQe,EAAcC,GAG3D,GADAx7P,KAAK88P,cAAgB,IACjB,EAAIzC,EAAOmD,oBAAoB1nN,EAAO6kN,UACtC,MAAM,IAAI/5P,MAAM05P,EAASmD,sBAE7Br/P,MAAMlC,UAAU0F,KAAKxF,MAAM4D,KAAK88P,cAAeJ,EAAMI,eACrD98P,KAAK09P,cAAgB,GACrB19P,KAAKu6P,QAAUA,EACfv6P,KAAKgB,QAAUA,EACfhB,KAAKw6P,OAASA,EACdx6P,KAAK29P,cAAe,EACpB39P,KAAK49P,UAAY9nN,EAAO3qC,KAAKsM,cAC7BzX,KAAKgpG,SAAW,GAChBhpG,KAAKkmH,OAAS,GACdlmH,KAAK69P,eAAe/nN,EAAQ0lN,IACxB,EAAInB,EAAOyD,UAAU99P,KAAK49P,WAC1B59P,KAAK+9P,WAAU,EAA+DxC,EAAcC,GAG5Fx7P,KAAK+9P,WAAU,EAA4DxC,EAAcC,GAgnBjG,OAvmBAkB,EAAMxgQ,UAAUwiC,OAAS,WACrB,MAAM,IAAI99B,MAAM,sBAOpB87P,EAAMxgQ,UAAU8hQ,KAAO,WACnB,OAAOvE,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,eAAgB,KAAM,CAAEz3O,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAChH,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAUhCk6N,EAAMxgQ,UAAU+hQ,OAAS,SAAUC,GAC/B,OAAOzE,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,iBAAkBgrB,EAAkB,CAAEziQ,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC9H,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAkBhCk6N,EAAMxgQ,UAAUiiQ,iBAAmB,WAC/B,OAAO1E,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,oBAAqB,CAAElsB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC9G,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WA+BhCk6N,EAAMxgQ,UAAUy6C,KAAO,SAAU4kN,GAC7B,IAAIh4P,EACJ,OAAOk2P,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIszF,EAAMtuE,EAASo5O,EACnB,OAAOvE,EAAY75P,MAAM,SAAU+0B,GAC/B,OAAQA,EAAG0gD,OACP,KAAK,EACD,IAAKz1E,KAAK81C,OAAOgmN,YAEb,OADA7gJ,QAAQojJ,MAAM,sEACP,CAAC,GAEZ,IAAKr+P,KAAK29P,aAEN,OADA1iJ,QAAQojJ,MAAM,uEACP,CAAC,GAaZ,GAXA/qK,EAAOioK,GAAqC,WAArBv7P,KAAK81C,OAAO3qC,KAAoBnL,KAAK68P,eAAiB78P,KAAK48P,SAClF53O,EAAU,CACNvpB,IAAKuE,KAAK81C,OAAO2+E,SACjB4nI,aAAcr8P,KAAKu6P,QAAQ+B,kBAC3BgC,aAAct+P,KAAK81C,OAAOwoN,aAC1BC,WAAYhB,EAAU54C,QAAQj+L,UAEA,QAA1BnjB,EAAKvD,KAAKu8P,kBAA+B,IAAPh5P,OAAgB,EAASA,EAAGi5P,uBAClEx3O,EAAQy3O,uBAAwB,GAEpC2B,EAAU,IAAIj1P,KACVnJ,KAAKw+P,kBAAmB,EAAInE,EAAOoE,2BAA2Bz+P,KAAKw+P,gBAAiBJ,GAAW,IAE/F,OADAnjJ,QAAQojJ,MAAM,qFACP,CAAC,GAEZr+P,KAAKw+P,gBAAkBJ,EACvBrpO,EAAG0gD,MAAQ,EACf,KAAK,EAED,OADA1gD,EAAGilO,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK5/I,EAAMtzF,KAAK81C,OAAQ9wB,EAAShlB,KAAKw6P,OAAOM,gBACvF,KAAK,EAED,MAAO,CAAC,EADG/lO,EAAGglO,OACiBv3N,MACnC,KAAK,EAED,MADazN,EAAGglO,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WA0BhCk6N,EAAMxgQ,UAAU2d,IAAM,SAAUmP,EAAWxP,GACvC,IAAIzZ,EAAQC,KACR0+P,EAAY,CAAEtkP,KAAM4O,EAAW7d,KAAM,KAAMsO,GAAI,KAAMjd,MAAO,MAC5Dgd,IACA,EAAI6gP,EAAO5wO,SAAQ,SAAUk1O,GAAgB,OAAOA,EAAa/zP,KAAK8zP,IAAeC,EAAarzN,SAAW9xB,IAAaxZ,KAAK09P,eAC/H19P,KAAKgB,QAAQ2oB,oBAAoBX,EAAWxP,IAGhBxZ,KAAK09P,cAC5BxsO,QAAO,SAAUytO,GAAgB,OAAOA,EAAa/zP,KAAK8zP,MAE1D1/P,SAAQ,SAAU4/P,IACnB,EAAIvE,EAAO5wO,SAAQ,SAAUk1O,GAAgB,OAAOA,IAAiBC,IAAyB7+P,EAAM29P,eACpG39P,EAAMiB,QAAQ2oB,oBAAoBX,EAAW41O,EAAqBtzN,YAiB9EoxN,EAAMxgQ,UAAUod,GAAK,SAAU0P,EAAWxP,GACtC,IAA+C,IAA3CxZ,KAAK88P,cAAc3+P,QAAQ6qB,GAC3B,MAAM,IAAIpoB,MAAM,4BAA4BkxB,OAAO9xB,KAAK88P,cAAe,kBAAkBhrO,OAAO9I,IAEpGhpB,KAAK09P,cAAc97P,KAAK,CACpBgJ,KAAM,SAAUkc,GAAS,OAAOA,EAAM1M,OAAS4O,GAC/CsiB,OAAQ9xB,IAEZxZ,KAAKgB,QAAQuoB,iBAAiBP,EAAWxP,IAU7CkjP,EAAMxgQ,UAAU2iQ,OAAS,WACrB,OAAOpF,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAAG,MAAO,CAAC,EAAaz1E,KAAK22C,QAClC,KAAK,EAAG,MAAO,CAAC,EAAcpzC,EAAGw2P,gBAUjD2C,EAAMxgQ,UAAU4iQ,eAAiB,SAAUhD,GACvC,OAAOrC,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI++P,EAAW9L,EACf,OAAO4G,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAKqmL,EACD,MAAM,IAAIl7P,MAAM,gCAGpBm+P,EAA2B,YAD3BA,EAAY/+P,KAAK81C,OAAO3qC,OAC6B,WAAd4zP,GAAwC,QAAdA,GAAqC,gBAAdA,EAA+B,SAAWA,EAClIx7P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,IAAM6rB,EAAY,SAAUjD,EAAa,CAAErgQ,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACnI,KAAK,EAKD,OAJA7H,EAAW1vP,EAAGw2P,OACd/5P,KAAK81C,OAAOgmN,YAAcA,EAC1B97P,KAAKgB,QAAQ40B,aAAa8mO,EAAMsC,qBAAsBlD,GACtD97P,KAAKu6P,QAAQuB,YAAcA,EACpB,CAAC,EAAc7I,EAASzwN,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAahCk6N,EAAMxgQ,UAAU+iQ,eAAiB,SAAUC,GACvC,IAAIpD,EAAc97P,KAAK81C,OAAOgmN,aAAe97P,KAAKgB,QAAQmuB,aAAautO,EAAMsC,uBAAyBE,EACtG,IAAKpD,EACD,MAAM,IAAIl7P,MAAM,oHAAoHkxB,OAAO4qO,EAAMsC,qBAAsB,yDAE3K,OAAOlD,GASXY,EAAMxgQ,UAAU2hQ,eAAiB,SAAU/nN,EAAQ0lN,GAC/C,IACIj4P,EAAIwxB,EAAII,EAAIG,EAAIk3F,EAAIyjC,EAAIC,EAAI2wE,EAAIK,EADhCnhO,EAAQC,KAERA,KAAKm/P,iBACLn/P,KAAK81C,QAAS,EAAIukN,EAAOzwL,QAAQ,GAAI5pE,KAAKm/P,gBAAiBrpN,GAE3D91C,KAAKm/P,gBAAkB,MAKvBn/P,KAAK81C,QAAS,EAAIukN,EAAOzwL,QAAQ,GAAI9zB,GAEzC91C,KAAK81C,OAAO6kN,SAAW36P,KAAKo/P,YAAY5D,GACxCx7P,KAAK81C,OAAOimN,QAAU/7P,KAAKq/P,aAC3Br/P,KAAKs/P,oBAAoBxpN,GACzB91C,KAAK81C,OAAO2+E,SAAWz0H,KAAKu/P,cAC5B,IAAIliB,EAA4F,QAA9EtoN,EAA4B,QAAtBxxB,EAAKvD,KAAK81C,cAA2B,IAAPvyC,OAAgB,EAASA,EAAG45F,gBAA6B,IAAPpoE,OAAgB,EAASA,EAAGsoN,WACpIr9O,KAAKgpG,SAAkG,QAAtF7zE,EAAoB,OAAfkoN,QAAsC,IAAfA,OAAwB,EAASA,EAAWr0I,gBAA6B,IAAP7zE,EAAgBA,EAAK,GACpIn1B,KAAKkmH,OAA8F,QAApF5wF,EAAoB,OAAf+nN,QAAsC,IAAfA,OAAwB,EAASA,EAAWn3H,cAA2B,IAAP5wF,EAAgBA,EAAK,GAChIt1B,KAAKw/P,kBAA6J,QAAxItvG,EAAoF,QAA9ED,EAA4B,QAAtBzjC,EAAKxsH,KAAK81C,cAA2B,IAAP02E,OAAgB,EAASA,EAAGrvB,gBAA6B,IAAP8yD,OAAgB,EAASA,EAAGwvG,kBAA+B,IAAPvvG,EAAgBA,EAAKotG,EAAOlnB,WAAWspB,OAEjN,IAAIC,EAAiG,QAA9Ez+B,EAA4B,QAAtBL,EAAK7gO,KAAK81C,cAA2B,IAAP+qL,OAAgB,EAASA,EAAG1jI,gBAA6B,IAAP+jI,OAAgB,EAASA,EAAGmc,WACrIj/O,MAAMC,QAAQshQ,KACd3/P,KAAKgpG,SAAW,GAChB22J,EAAgBl7P,KAAI,SAAUm7P,IAA+B,OAAdA,QAAoC,IAAdA,OAAuB,EAASA,EAAUC,UAC3G9/P,EAAMipG,SAASpnG,KAAKg+P,EAAUC,aAGlCrE,GAEAx7P,KAAKm/P,gBAAkBn/P,KAAK81C,OAC5B91C,KAAKm/P,gBAAgBb,cAAe,GAGpCt+P,KAAK81C,OAAOgmN,YAAc97P,KAAKi/P,eAAej/P,KAAKu6P,QAAQuB,aAE/D97P,KAAKu8P,WAAav8P,KAAK81C,OAAOymN,WAC9Bv8P,KAAK8/P,mBAAmB9/P,KAAKu8P,mBACtBv8P,KAAK81C,OAAOymN,WACnBv8P,KAAK67P,cAAcL,IASvBkB,EAAMxgQ,UAAU4jQ,mBAAqB,SAAUvD,GAC3C,GAAKA,EAAL,CAGA,IAAK,IAAIv/P,KAAOu/P,EACZ,GAAIA,EAAW/8P,eAAexC,IAAmC,oBAApBu/P,EAAWv/P,GACpD,MAAM,IAAI4D,MAAM5D,EAAM,uBAI9B,GADiCu/P,EAAWwD,2BACV,CAC9B,GAAqC,WAAjC//P,KAAK49P,UAAUnmP,cACf,MAAM,IAAI7W,MAAM,gEAEpBZ,KAAK81C,OAAO6kN,UAAW,EAAIN,EAAO2F,eAAehgQ,KAAK81C,OAAO6kN,SAAU,wBAAyB,QAGpG,GAD0B4B,EAAWC,uBAEmD,IAA/E,CAAC,SAAU,cAAe,UAAUr+P,QAAQ6B,KAAK49P,UAAUnmP,gBAA0BzX,KAAK81C,OAAOkmN,YAAcsB,EAAOxnB,UAAUmqB,KACjI,MAAM,IAAIr/P,MAAM,gEAW5B87P,EAAMxgQ,UAAUojQ,oBAAsB,SAAUxpN,GAC5C,GAAKA,EAAOqnD,SAAZ,CAGA,IAAI+iK,EAAiBpqN,EAAOqnD,SAAS+iK,eACjCA,GAAkBA,EAAev5O,WACjC3mB,KAAK81C,OAAO6kN,UAAW,EAAIN,EAAO2F,eAAehgQ,KAAK81C,OAAO6kN,SAAU,WAAYuF,EAAev5O,WAElGu5O,GAAkBA,EAAeC,eACjCngQ,KAAK81C,OAAO6kN,UAAW,EAAIN,EAAO2F,eAAehgQ,KAAK81C,OAAO6kN,SAAU,eAAgBuF,EAAeC,iBAU9GzD,EAAMxgQ,UAAUkjQ,YAAc,SAAU5D,GACpC,IAAIb,EAAW36P,KAAK81C,OAAO6kN,UAAY36P,KAAKgB,QAAQmuB,aAAautO,EAAM0D,mBAKvE,GAJI5E,IAAgBb,IAEhBA,EAAW36P,KAAKqgQ,mBAAmBrgQ,KAAK81C,OAAOwqN,WAE3B,kBAAb3F,GAA6C,IAApBA,EAAS99P,OACzC,MAAM,IAAI+D,MAAM,qIAAqIkxB,OAAO4qO,EAAM0D,kBAAmB,OAEzL,OAAOzF,GAKX+B,EAAMxgQ,UAAUmkQ,mBAAqB,SAAUC,GACtCA,IACDA,EAAW5D,EAAM6D,sBAErB,IAAIC,EAAWxgQ,KAAKi8P,6BAGpB,GAAoC,KADpCqE,EAAWA,EAAS7oP,cAAc4U,QACrBluB,QAAQ,WACjB,MAAM,IAAIyC,MAAM,0CAEpB,OAAqC,IAAjC0/P,EAASniQ,QAAQ,YACV,GAAG2zB,OAAOwuO,EAAU,KAAKxuO,OAAO0uO,GAEpC,WAAW1uO,OAAOwuO,EAAU,KAAKxuO,OAAO0uO,IAUnD9D,EAAMxgQ,UAAUqjQ,YAAc,WAC1B,OAAOv/P,KAAK81C,OAAO2+E,UAAYz0H,KAAKgB,QAAQmuB,aAAautO,EAAM+D,iBAAkB,EAAIpG,EAAOqG,uBAShGhE,EAAMxgQ,UAAUmjQ,WAAa,WACzB,OAAOr/P,KAAK81C,OAAOimN,SAAWW,EAAMiE,wBAAwB3gQ,KAAK81C,OAAO6kN,WAK5E+B,EAAMxgQ,UAAU0kQ,WAAa,YACD5gQ,KAAKw6P,OAAOqG,mBAAqB7gQ,KAAKw6P,OAAOsG,qBAAuB9gQ,KAAKw6P,OAAOuG,sBAAwB/gQ,KAAKw6P,OAAOwG,yBAC1H1/P,KAAKtB,KAAKw6P,SAKhCkC,EAAMxgQ,UAAU+kQ,eAAiB,WACxBjhQ,KAAKkhQ,aAAalhQ,KAAKw6P,UAGPh6P,SAASygQ,gBAAkBzgQ,SAAS2gQ,qBAAuB3gQ,SAAS4gQ,sBAAwB5gQ,SAAS6gQ,kBAC3G//P,KAAKd,WAWxBk8P,EAAMxgQ,UAAUglQ,aAAe,SAAU1G,GAErC,MADc,CAAC,oBAAqB,0BAA2B,6BAA8B,uBAC9E9wO,MAAK,SAAUzf,GAAU,OAAOzJ,SAASyJ,KAAYuwP,MAOxEkC,EAAMxgQ,UAAU6hQ,UAAY,SAAUuD,EAAQ/F,EAAcC,GACxD,IAAIz7P,EAAQC,KACZ,IAAKA,KAAKw6P,OAAQ,CACd,IAAI+G,EAAgB/gQ,SAASW,cAAc,UACvCw5P,EAAW36P,KAAK81C,OAAO2+E,UAAW,EAAI4lI,EAAO2F,eAAehgQ,KAAK81C,OAAO6kN,SAAU,MAAO36P,KAAK81C,OAAO2+E,UAAYz0H,KAAK81C,OAAO6kN,SACjI4G,EAAcvtO,MAAM0b,MAAQ,OAC5B6xN,EAAcvtO,MAAM2b,OAAS,OAC7B4xN,EAAc3rO,aAAa,MAAO+kO,GAClC4G,EAAc3rO,aAAa,YAAa,MACxC2rO,EAAc3rO,aAAa,kBAAmB,QAE9C,IADA,IAAInC,EAAOzzB,KAAKgB,QACTyyB,EAAKqwE,YACRrwE,EAAKyD,YAAYzD,EAAKqwE,YAE1BrwE,EAAKzxB,YAAYu/P,GACjBvhQ,KAAKw6P,OAAS/mO,EAAKqwE,WAEvB,GAAIw9J,EAAQ,CACR,IAAK9F,EAAa,CAEd,IAAIhe,EAASx9O,KAAK+gG,SAAS/gG,KAAK81C,QAChC,GAAI0nM,EACA,MAAMA,EAGdx9O,KAAKw6P,OAAOjxO,iBAAiB,QAAQ,WACjCxpB,EAAM49P,cAAe,EACrB59P,EAAM42C,KAAK4kN,MACZ,GACCv7P,KAAKu6P,QAAQiH,yBAA2B9E,EAAM+E,oBAC9CzhQ,KAAK0hQ,iBAAmB,WACpB3hQ,EAAM4hQ,oBAAoB5hQ,EAAM+1C,SAGpC91C,KAAKgB,QAAQuoB,iBAAiB,QAASvpB,KAAK0hQ,kBAAkB,SAIlE1hQ,KAAKw6P,OAAOjxO,iBAAiB,QAAQ,WAAc,OAAOxpB,EAAM2+B,YAAa,IAMrFg+N,EAAMxgQ,UAAU0lQ,kBAAoB,SAAUx6G,GACrCpnJ,KAAKw6P,SAGG,MAATpzG,EACApnJ,KAAKw6P,OAAOn6N,gBAAgB,SAG5BrgC,KAAKw6P,OAAO5kO,aAAa,QAASwxH,KAM1Cs1G,EAAMxgQ,UAAU2lQ,qBAAuB,SAAUxkH,GACxCr9I,KAAKgB,SAGVhB,KAAKgB,QAAQ40B,aAAa,WAAyB,MAAZynH,EAAoB,IAAMA,EAASlwI,aAK9EuvP,EAAMxgQ,UAAU4lQ,wBAA0B,SAAUC,GAC3C/hQ,KAAKgB,SAGVhB,KAAKgB,QAAQq/B,gBAAgB,aAWjCq8N,EAAMiE,wBAA0B,SAAU/9O,GACtC,IAEIm5O,EADAiG,EAAep/O,EAAIhgB,MADJ,uBAMnB,OAHIo/P,IACAjG,EAAUiG,EAAa,IAEpBjG,GAOXW,EAAMxgQ,UAAUylQ,oBAAsB,SAAU7rN,GAC5C,OAAO2jN,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIw9O,EACJ,OAAOqc,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAK3/B,EAAOgmN,YACR,MAAO,CAAC,GAGZ,GADAte,EAASx9O,KAAK+gG,SAASjrD,GAEnB,MAAM0nM,EAGV,GAAiC,MAA7Bx9O,KAAKw6P,OAAOM,cACZ,MAAO,CAAC,GAEZv3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,oBAAqBp9L,EAAQ,CAAEr6C,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACvH,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAMhCk6N,EAAMI,cAAgB,CAAC,SAAU,QAAS,WAAY,kBAAmB,QAAS,eAAgB,gBAAiB,QAEnHJ,EAAMsC,qBAAuB,uBAE7BtC,EAAM0D,kBAAoB,oBAE1B1D,EAAM+D,cAAgB,eAEtB/D,EAAMW,cAAgB,eAEtBX,EAAM6D,qBAAuB,0BAE7B7D,EAAM+E,kBAAoB,EACnB/E,EAhpBgB,GAkpB3BtgN,EAAQsgN,MAAQA,GAKV,kBAIC,SAAClpB,EAAyBp3L,GAIjCl+C,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQqhN,qBAAuBrhN,EAAQw+M,gCAA6B,EACpEx+M,EAAQw+M,2BAA6B,sDACrCx+M,EAAQqhN,qBAAuB,8FAKzB,qBAIC,SAACjqB,EAAyBp3L,EAASo7M,GAI1Ct5P,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ6lN,cAAgB7lN,EAAQ8lN,YAAc9lN,EAAQ+lN,gBAAa,EAInE,IAAIC,EAA8B5K,EAAqD,2EACnF6K,EAAsB7K,EAA6C,4DACnE8K,EAAmB9K,EAA0C,gDAC7D+K,EAAW/K,EAAoC,mBAUnDp7M,EAAQ+lN,WATS,SAAUK,EAAM7vB,EAAqB4rB,EAAYkE,EAASC,GAGvE,YAFmB,IAAfnE,IAAyBA,EAAagE,EAAS59C,QAAQj+L,cAC3C,IAAZ+7O,IAAsBA,EAAUF,EAAS59C,QAAQx5M,MAC9C,IAAIk3P,EAAoB7vB,gBAAgBgwB,EAAM,CACjD,aAAcC,EACd,gBAAiBlE,EACjB,wBAAyBmE,GAC1B/vB,IAgBPv2L,EAAQ8lN,YAbU,SAAU9nP,EAAMuoP,EAAaC,GAC3C,OAAO,IAAIR,EAA4BS,uBAAuB,CAC1DC,0BAA2B,CACvBlwB,sBAAuByvB,EAAoB7vB,gBAAgBI,sBAC3DE,sBAAuBuvB,EAAoB7vB,gBAAgBM,uBAE/DC,eAAgBsvB,EAAoB7vB,gBAAgBO,eACpDgwB,kBAAkB,EAClB3oP,KAAMA,EACNuoP,YAAaA,EACbC,0BAA2BA,KAOnCxmN,EAAQ6lN,cAHY,SAAUO,GAC1B,OAAO,IAAIF,EAAiB5xK,OAAO8xK,KAOjC,gBAIC,SAAShvB,EAAyBp3L,EAASo7M,GAIlD,IAAIiC,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwB7D5+G,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ4mN,UAAO,EACf,IAAItL,EAAmBF,EAA0C,gDAC7DyL,EAAqBzL,EAA8C,6BACnE6C,EAAS7C,EAAkC,iBAC3C8C,EAAW9C,EAAoC,mBAS/CwL,EAAsB,WAWtB,SAASA,EAAK/+K,EAAQ7pE,EAAMwqF,EAAas+J,EAAc1sO,EAAY2sO,EAAaC,EAAsBC,EAAY1yD,EAAY2yD,GAC1HtjQ,KAAKikF,OAASA,EACdjkF,KAAKoa,KAAOA,EACZpa,KAAK4kG,YAAcA,EACnB5kG,KAAKizF,SAAWiwK,EAChBljQ,KAAKw2B,WAAaA,EAClBx2B,KAAKmjQ,YAAcA,EACnBnjQ,KAAKqjQ,WAAaA,EAClBrjQ,KAAKojQ,qBAAuBA,EAC5BpjQ,KAAK2wM,WAAaA,EAClB3wM,KAAKsjQ,UAAYA,EAmcrB,OAvbAN,EAAK9mQ,UAAU20N,WAAa,WACxB,OAAO4oC,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAIlzO,IAAI,iBAAiBmK,OAAO9xB,KAAKoa,KAAM,YAAa,CAAE3e,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBAC9J,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAgBhCwgO,EAAK9mQ,UAAUqnQ,cAAgB,SAAUC,EAAWxyL,GAChD,OAAOyoL,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIyjQ,EACJ,OAAO5J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACDguL,EAAuB,CACnBC,iBAAkBF,EAClBxyL,QAASA,GAEbztE,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAI3nB,KAAK,iBAAiBphN,OAAO9xB,KAAKoa,KAAM,YAAaqpP,EAAsB,CAAEhoQ,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBACrL,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAchCwgO,EAAK9mQ,UAAUynQ,cAAgB,WAC3B,OAAOlK,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAAG,MAAO,CAAC,EAAaz1E,KAAKujQ,cAAc7L,EAAiB/hB,kBAAkBiuB,YACnF,KAAK,EAAG,MAAO,CAAC,EAAcrgQ,EAAGw2P,gBAgBjDiJ,EAAK9mQ,UAAU2nQ,WAAa,SAAU7yL,GAClC,OAAOyoL,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAI1nB,IAAI,iBAAiBrhN,OAAO9xB,KAAKoa,KAAM,YAAa42D,EAAS,CAAEv1E,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBACvK,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehCwgO,EAAK9mQ,UAAUm3O,OAAS,WACpB,OAAOomB,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAIxnB,OAAO,iBAAiBvhN,OAAO9xB,KAAKoa,MAAO,GAAI,CAAE3e,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBACzJ,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAchCwgO,EAAK9mQ,UAAUsgJ,UAAY,WACvB,OAAOi9G,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI2/F,EACJ,OAAOk6J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACDkqB,EAAO,CACHvlF,KAAMpa,KAAKoa,KACXwqF,YAAa,KACb3R,UAAU,GAEd1vF,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAI1nB,IAAI,uBAAwBxzI,EAAM,CAAElkG,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBAC5I,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAchCwgO,EAAK9mQ,UAAU4nQ,eAAiB,SAAUl/J,GACtC,OAAO60J,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI2/F,EACJ,OAAOk6J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACDkqB,EAAO,CACHvlF,KAAMpa,KAAKoa,KACXwqF,YAAaA,GAEjBrhG,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAI1nB,IAAI,iBAAiBrhN,OAAO9xB,KAAKoa,KAAM,SAAUulF,EAAM,CAAElkG,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBACjK,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehCwgO,EAAK9mQ,UAAU6nQ,WAAa,WACxB,OAAOtK,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IACID,EAAQC,KACZ,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAKikF,OAAOnuC,OAAO6kN,UAC1C,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAIlzO,IAAI,iBAAiBmK,OAAO9xB,KAAKoa,KAAM,YAAa,CAAE3e,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBAC9J,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,KACtB/9B,KAAI,SAAUu/P,GAAU,OAAO,IAAIf,EAAmBgB,iBAAiBlkQ,EAAOikQ,EAAO5pP,KAAM4pP,EAAO58G,MAAO48G,EAAO74P,KAAM64P,EAAOE,YAC1I,KAAK,EAED,MADa3gQ,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAkBhCwgO,EAAK9mQ,UAAUioQ,gBAAkB,SAAUjnB,GACvC,OAAOuc,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIizP,EAAU+Q,EACd,OAAOnK,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAKikF,OAAOnuC,OAAO6kN,UAC1C,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAIlzO,IAAI,iBAAiBmK,OAAO9xB,KAAKoa,KAAM,YAAa,CAAE3e,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBAC9J,KAAK,EAGD,OAFA7H,EAAW1vP,EAAGw2P,QACdiK,EAAS/Q,EAASzwN,KAAK2yJ,MAAK,SAAUr4E,GAAK,OAAOA,EAAE1iG,OAAS8iO,MAItD,CAAC,EAAc,IAAI+lB,EAAmBgB,iBAAiBjkQ,KAAMgkQ,EAAO5pP,KAAM4pP,EAAO58G,MAAO48G,EAAO74P,KAAM64P,EAAOE,SAFxG,CAAC,EAAcjhP,QAAQE,OAAOu0O,EAAiB/jB,iBAAiBuI,WAG/E,KAAK,EAED,MADa34O,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAiBhCwgO,EAAK9mQ,UAAUkoQ,sBAAwB,SAAUlnB,EAAYmnB,GACzD,OAAO5K,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIi9O,EACJ,OAAO4c,EAAY75P,MAAM,SAAUuD,GAG/B,OAFA05O,EAAWj9O,KAAKoa,KAET,CAAC,EADCpa,KAAKikF,OACemgL,sBAAsBnnB,EAAUC,EAAYmnB,WAkBrFrB,EAAK9mQ,UAAUooQ,WAAa,SAAUpnB,EAAY37N,EAAGjL,EAAGrO,GACpD,OAAOwxP,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIi9O,EACJ,OAAO4c,EAAY75P,MAAM,SAAUuD,GAG/B,OAFA05O,EAAWj9O,KAAKoa,KAET,CAAC,EADCpa,KAAKikF,OACeqgL,WAAWrnB,EAAUC,EAAY37N,EAAGjL,EAAGrO,WAiBhF+6P,EAAK9mQ,UAAUqoQ,aAAe,SAAUrnB,EAAYxtM,EAAOC,GACvD,OAAO8pN,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIi9O,EACJ,OAAO4c,EAAY75P,MAAM,SAAUuD,GAG/B,OAFA05O,EAAWj9O,KAAKoa,KAET,CAAC,EADCpa,KAAKikF,OACesgL,aAAatnB,EAAUC,EAAYxtM,EAAOC,WAiBnFqzN,EAAK9mQ,UAAUsoQ,WAAa,SAAUC,EAAc/0N,EAAOC,GACvD,OAAO8pN,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAKvD,KAAKizF,SAIH,CAAC,EADCjzF,KAAKikF,OACeygL,iBAAiBD,EAAc/0N,EAAOC,IAHxD,CAAC,EAAc1sB,QAAQE,OAAO,uEAmBrD6/O,EAAK9mQ,UAAUyoQ,WAAa,WACxB,OAAOlL,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IACID,EAAQC,KACZ,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAKikF,OAAOnuC,OAAO6kN,UAC1C,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAIlzO,IAAI,iBAAiBmK,OAAO9xB,KAAKoa,KAAM,YAAa,CAAE3e,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBAC9J,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,KACtBtR,QAAO,SAAU8yO,GAAU,MAAuB,WAAhBA,EAAO74P,QACzC1G,KAAI,SAAUu/P,GAAU,OAAO,IAAIf,EAAmBgB,iBAAiBlkQ,EAAOikQ,EAAO5pP,KAAM4pP,EAAO58G,MAAO48G,EAAO74P,KAAM64P,EAAOE,YAC1I,KAAK,EAED,MADa3gQ,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehCwgO,EAAK9mQ,UAAU0oQ,UAAY,SAAUnF,GACjC,OAAOhG,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI6kQ,EACJ,OAAOhL,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAKikF,OAAOnuC,OAAO6kN,UAC1C,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDiK,EAAiBnN,EAAiBthB,WAAWqpB,GAC7Cl8P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKikF,OAAOs2K,QAAQM,IAAIlzO,IAAI,iBAAiBmK,OAAO9xB,KAAKoa,KAAM,iBAAiB0X,OAAO+yO,GAAiB,CAAEppQ,IAAKuE,KAAKikF,OAAOnuC,OAAO2+E,UAAYz0H,KAAKikF,OAAOu2K,OAAOM,gBAC1L,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADcj/B,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAKzBwgO,EAxde,GA0d1B5mN,EAAQ4mN,KAAOA,GAKT,eAIC,SAASxvB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAezCg7N,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwB7D5+G,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ0oN,SAAM,EACd,IAAIpN,EAAmBF,EAA0C,gDAS7DsN,EAAqB,SAAU3lO,GAK/B,SAAS2lO,EAAIvK,EAASv5P,EAAS80C,EAAQylN,EAAcC,GACjD,IAAIz7P,EAAQo/B,EAAO79B,KAAKtB,KAAMu6P,EAASv5P,EAAS80C,OAAqB95C,EAAWu/P,EAAcC,IAAgBx7P,KAI9G,OAHAD,EAAM68P,SAAW,YACjB78P,EAAM88P,eAAiB,eACvBz+P,MAAMlC,UAAU0F,KAAKxF,MAAM2D,EAAM+8P,cAAegI,EAAIhI,eAC7C/8P,EA+DX,OAxEAs+B,EAAUymO,EAAK3lO,GAgBf2lO,EAAI5oQ,UAAUu/P,MAAQ,WAClB,OAAO,MAQXqJ,EAAI5oQ,UAAU6oQ,YAAc,SAAU/wD,GAClC,OAAOylD,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIglQ,EACJ,OAAOnL,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACDuvL,EAAU,CACNhxD,SAAUA,GAEdzwM,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,iBAAkB8xB,EAAS,CAAEvpQ,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACrH,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAUhCsiO,EAAI5oQ,UAAU2/P,cAAgB,SAAUoJ,KAOxCH,EAAI5oQ,UAAU+/P,2BAA6B,WACvC,MAAO,YAKX6I,EAAI5oQ,UAAU6kG,SAAW,SAAUjrD,GAC/B,OAAO,EAAI4hN,EAAiB7gB,8BAA8B/gM,IAG9DgvN,EAAI35P,KAAO,MAEX25P,EAAIhI,cAAgB,CAAC,SAAU,kBACxBgI,EAzEc,CARXtN,EAAmC,kBAkFvCkF,OACVtgN,EAAQ0oN,IAAMA,GAKR,uBAIC,SAAStxB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAezCg7N,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwB7D5+G,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ8oN,iBAAc,EACtB,IAAIxN,EAAmBF,EAA0C,gDAS7D0N,EAA6B,SAAU/lO,GAKvC,SAAS+lO,EAAY3K,EAASv5P,EAAS80C,EAAQylN,EAAcC,GACzD,IAAIz7P,EAAQo/B,EAAO79B,KAAKtB,KAAMu6P,EAASv5P,EAAS80C,OAAqB95C,EAAWu/P,EAAcC,IAAgBx7P,KAwB9G,OAvBAu6P,EAAQ4K,OAAOjyB,KAAK,YAAYphN,OAAO/xB,EAAM+1C,OAAO2+E,SAAU,2BAA2B,SAAUrqC,EAAKg7K,GAAQ,OAAO3L,EAAU15P,OAAO,OAAQ,GAAQ,WACpJ,IACIg1B,EACJ,OAAO8kO,EAAY75P,MAAM,SAAUm1B,GAC/B,OAAQA,EAAGsgD,OACP,KAAK,EAED,OADK2U,EAAIvuF,OAAOmtB,WAEZ,IAAK,iBAAkB,MAAO,CAAC,EAAa,GAEhD,MAAO,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAohE,EAAI5nD,KAAO4nD,EAAI5nD,MAAQ,GACvB4nD,EAAI5nD,KAAKyhD,OAASjkF,KACX,CAAC,EAAau6P,EAAQ8K,cAAyC,QAA1BtwO,EAAK/0B,KAAKu8P,kBAA+B,IAAPxnO,OAAgB,EAASA,EAAGynO,oBAAqBpyK,EAAKg7K,IACxI,KAAK,EAED,OADAjwO,EAAG4kO,OACI,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAAG,MAAO,CAAC,aAIrBh6P,EAkFX,OA/GAs+B,EAAU6mO,EAAa/lO,GAqCvB+lO,EAAYhpQ,UAAUu/P,MAAQ,WAC1B,OAAO,MAKXyJ,EAAYhpQ,UAAU6kG,SAAW,SAAUjrD,GACvC,OAAO,EAAI4hN,EAAiBtgB,qBAAqBthM,IAQrDovN,EAAYhpQ,UAAU2/P,cAAgB,SAAUL,GACxCA,IAGJx7P,KAAK27P,aAAe37P,KAAK81C,SAM7BovN,EAAYhpQ,UAAU+/P,2BAA6B,WAC/C,MAAO,eAeXiJ,EAAYhpQ,UAAUwiC,OAAS,WAC3B,IAAIn7B,EACJ,OAAOk2P,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIw9O,EAAQx4N,EACZ,OAAO60O,EAAY75P,MAAM,SAAU+0B,GAC/B,OAAQA,EAAG0gD,OACP,KAAK,EAED,GADA+nK,GAAS,EAAIka,EAAiBtgB,qBAAqBp3O,KAAK27P,cAEpD,MAAMne,EAEVzoN,EAAG0gD,MAAQ,EACf,KAAK,EASD,OARA1gD,EAAGilO,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACtBojB,EAAU,CACNvpB,IAAKuE,KAAK81C,OAAO2+E,SACjB4nI,aAAcr8P,KAAKu6P,QAAQ+B,oBAEG,QAA1B/4P,EAAKvD,KAAKu8P,kBAA+B,IAAPh5P,OAAgB,EAASA,EAAGi5P,uBAClEx3O,EAAQy3O,uBAAwB,GAE7B,CAAC,EAAaz8P,KAAKu6P,QAAQM,IAAI3nB,KAAK,eAAgBlzO,KAAK27P,aAAc32O,EAAShlB,KAAKw6P,OAAOM,gBACvG,KAAK,EAED,MAAO,CAAC,EADG/lO,EAAGglO,OACiBv3N,MACnC,KAAK,EAED,MADazN,EAAGglO,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAKzB0iO,EAhHsB,CARnB1N,EAAmC,kBAyHvCkF,OACVtgN,EAAQ8oN,YAAcA,GAKhB,kBAIC,SAAS1xB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAezCg7N,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwBzDwoJ,EAAiBtlQ,MAAQA,KAAKslQ,eAAkB,SAAU10K,EAAI3H,EAAMs8K,GACpE,GAAIA,GAA6B,IAArB3mQ,UAAU/B,OAAc,IAAK,IAA4B2oQ,EAAxB5oQ,EAAI,EAAG8E,EAAIunF,EAAKpsF,OAAYD,EAAI8E,EAAG9E,KACxE4oQ,GAAQ5oQ,KAAKqsF,IACRu8K,IAAIA,EAAKpnQ,MAAMlC,UAAUmF,MAAMC,KAAK2nF,EAAM,EAAGrsF,IAClD4oQ,EAAG5oQ,GAAKqsF,EAAKrsF,IAGrB,OAAOg0F,EAAG9+D,OAAO0zO,GAAMpnQ,MAAMlC,UAAUmF,MAAMC,KAAK2nF,KAEtD/qF,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQqpN,YAAS,EACjB,IAAI/N,EAAmBF,EAA0C,gDAC7D6D,EAAU7D,EAAmC,kBAC7C6C,EAAS7C,EAAkC,iBAC3C8C,EAAW9C,EAAoC,mBAC/CkO,EAASlO,EAAkC,iBAC3CmO,EAAqBnO,EAA8C,6BAUnEiO,EAAwB,SAAUtmO,GAUlC,SAASsmO,EAAOlL,EAASv5P,EAASk8P,EAAY3B,EAAcC,EAAahB,GACrE,IAAIz6P,EAAQC,KACR81C,EAASonN,EAqCb,OApCAn9P,EAAQo/B,EAAO79B,KAAKtB,KAAMu6P,EAASv5P,EAAS80C,EAAQ0kN,EAAQe,EAAcC,IAAgBx7P,MACpF48P,SAAW,eACjB78P,EAAM88P,eAAiB,kBACvBz+P,MAAMlC,UAAU0F,KAAKxF,MAAM2D,EAAM+8P,cAAe2I,EAAO3I,eACvD/8P,EAAM6lQ,iBAAmB,IAAID,EAAmBvL,iBAAiBG,EAASzkN,EAAQ/1C,EAAMy6P,QACxFD,EAAQ4K,OAAOjyB,KAAK,YAAYphN,OAAO/xB,EAAM+1C,OAAO2+E,SAAU,2BAA2B,SAAUrqC,EAAKg7K,GAAQ,OAAO3L,EAAU15P,OAAO,OAAQ,GAAQ,WACpJ,IACIg1B,EAAII,EACR,OAAO0kO,EAAY75P,MAAM,SAAUs1B,GAC/B,OAAQA,EAAGmgD,OACP,KAAK,EAED,OADK2U,EAAIvuF,OAAOmtB,WAEZ,IAAK,WAAY,MAAO,CAAC,EAAa,GACtC,IAAK,iBAAkB,MAAO,CAAC,EAAa,GAEhD,MAAO,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAohE,EAAI5nD,KAAO4nD,EAAI5nD,MAAQ,GACvB4nD,EAAI5nD,KAAKyhD,OAASjkF,KACX,CAAC,EAAau6P,EAAQ8K,cAAyC,QAA1BtwO,EAAK/0B,KAAKu8P,kBAA+B,IAAPxnO,OAAgB,EAASA,EAAGgrO,2BAA4B31K,EAAKg7K,IAC/I,KAAK,EAED,OADA9vO,EAAGykO,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA3vK,EAAI5nD,KAAO4nD,EAAI5nD,MAAQ,GACvB4nD,EAAI5nD,KAAKyhD,OAASjkF,KACX,CAAC,EAAau6P,EAAQ8K,cAAyC,QAA1BlwO,EAAKn1B,KAAKu8P,kBAA+B,IAAPpnO,OAAgB,EAASA,EAAGqnO,oBAAqBpyK,EAAKg7K,IACxI,KAAK,EAED,OADA9vO,EAAGykO,OACI,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAAG,MAAO,CAAC,aAIrBh6P,EAo5CX,OAp8CAs+B,EAAUonO,EAAQtmO,GA6DlBsmO,EAAO7J,mBAAqB,SAAUh5O,GAClC,IAEIijP,EADAC,EAAgBljP,EAAIhgB,MADJ,wBAMpB,OAHIkjQ,IACAD,EAAWC,EAAc,IAEtBD,GAiBXJ,EAAOvpQ,UAAUwzB,OAAS,SAAUomB,GAChC,OAAO2jN,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,iBAAkBp9L,EAAQ,CAAEr6C,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACpH,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehCijO,EAAOvpQ,UAAU6pQ,QAAU,SAAUnhK,GACjC,OAAO60J,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIo8F,EAAS62J,EAAUtzJ,EACvB,OAAOk6J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD2mB,EAAU,CACNwI,YAAaA,GAEjBrhG,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,kBAAmB92I,EAAS,CAAE3gG,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACtH,KAAK,EAGD,OAFA7H,EAAW1vP,EAAGw2P,OACdp6J,EAAOszJ,EAASzwN,KACT,CAAC,EAAc,IAAIkjO,EAAO1C,KAAKhjQ,KAAM2/F,EAAKvlF,KAAMulF,EAAKiF,YAAajF,EAAK1M,SAAU0M,EAAKnpE,WAAYmpE,EAAKwjK,YAAaxjK,EAAKyjK,uBACpI,KAAK,EAED,MADa7/P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehCijO,EAAOvpQ,UAAU8pQ,WAAa,SAAU/oB,GACpC,OAAOwc,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIxnB,OAAO,iBAAiBvhN,OAAOmrN,GAAW,GAAI,CAAExhP,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACnI,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehCijO,EAAOvpQ,UAAU+pQ,WAAa,SAAUhpB,EAAUr4I,GAC9C,OAAO60J,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI2/F,EACJ,OAAOk6J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACDkqB,EAAO,CACHvlF,KAAM6iO,EACNr4I,YAAaA,GAEjBrhG,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI1nB,IAAI,iBAAiBrhN,OAAOmrN,EAAU,SAAUt9I,EAAM,CAAElkG,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC3I,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAkBhCijO,EAAOvpQ,UAAU20N,WAAa,WAC1B,OAAO4oC,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,kBAAmB,CAAElsB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC5G,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAgBhCijO,EAAOvpQ,UAAUqnQ,cAAgB,SAAUC,EAAWxyL,GAClD,OAAOyoL,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIyjQ,EACJ,OAAO5J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACDguL,EAAuB,CACnBC,iBAAkBF,EAClBxyL,QAASA,GAEbztE,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,kBAAmBuwB,EAAsB,CAAEhoQ,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACnI,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAchCijO,EAAOvpQ,UAAUynQ,cAAgB,WAC7B,OAAOlK,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAI,EAAI82P,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UAC5B,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAE3C,CAAC,EAAc56P,KAAKujQ,cAAc7L,EAAiB/hB,kBAAkBiuB,mBAqBxF6B,EAAOvpQ,UAAU2nQ,WAAa,SAAU7yL,GACpC,OAAOyoL,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI1nB,IAAI,kBAAmBniK,EAAS,CAAEv1E,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACrH,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAUhCijO,EAAOvpQ,UAAUu/P,MAAQ,WACrB,IAAI3lN,EAAS91C,KAAK81C,OACd+vN,EAAW/vN,EAAOr8B,IAAMzZ,KAAKgB,QAAQmuB,aAAas2O,EAAOS,oBAAsBT,EAAO7J,mBAAmB9lN,EAAO6kN,UACpH,GAAwB,kBAAbkL,GAA6C,IAApBA,EAAShpQ,OACzC,MAAM,IAAI+D,MAAM,8HAA8HkxB,OAAO2zO,EAAOS,kBAAmB,OAEnL,OAAOL,GAcXJ,EAAOvpQ,UAAUiqQ,SAAW,WACxB,OAAO1M,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IACID,EAAQC,KACZ,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,gBAAiB,CAAElsB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC1G,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,KACtB/9B,KAAI,SAAUk7F,GAAQ,OAAO,IAAI+lK,EAAO1C,KAAKjjQ,EAAO4/F,EAAKvlF,KAAMulF,EAAKiF,YAAajF,EAAK1M,SAAU0M,EAAKnpE,WAAYmpE,EAAKwjK,YAAaxjK,EAAKyjK,qBAAsBzjK,EAAK0jK,WAAY1jK,EAAKgxG,WAAYhxG,EAAK2jK,eAClN,KAAK,EAED,MADa//P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAkBhCijO,EAAOvpQ,UAAUkqQ,cAAgB,SAAUnpB,GACvC,OAAOwc,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIizP,EAAUtzJ,EACd,OAAOk6J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,gBAAiB,CAAElsB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC1G,KAAK,EAGD,OAFA7H,EAAW1vP,EAAGw2P,QACdp6J,EAAOszJ,EAASzwN,KAAK2yJ,MAAK,SAAU1jL,GAAK,OAAOA,EAAE2I,OAAS6iO,MAIpD,CAAC,EAAc,IAAIyoB,EAAO1C,KAAKhjQ,KAAM2/F,EAAKvlF,KAAMulF,EAAKiF,YAAajF,EAAK1M,SAAU0M,EAAKnpE,WAAYmpE,EAAKwjK,YAAaxjK,EAAKyjK,qBAAsBzjK,EAAK0jK,WAAY1jK,EAAKgxG,WAAYhxG,EAAK2jK,YAFlL,CAAC,EAAcrgP,QAAQE,OAAOu0O,EAAiB/jB,iBAAiBuI,WAG/E,KAAK,EAED,MADa34O,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAiBhCijO,EAAOvpQ,UAAUmqQ,cAAgB,WAC7B,OAAO5M,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIizP,EAAUqT,EACd,OAAOzM,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,gBAAiB,CAAElsB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC1G,KAAK,EAGD,OAFA7H,EAAW1vP,EAAGw2P,OACduM,EAAarT,EAASzwN,KAAK2yJ,MAAK,SAAUx1F,GAAQ,OAAOA,EAAK1M,YACvD,CAAC,EAAc,IAAIyyK,EAAO1C,KAAKhjQ,KAAMsmQ,EAAWlsP,KAAMksP,EAAW1hK,YAAa0hK,EAAWrzK,SAAUqzK,EAAW9vO,WAAY8vO,EAAWnD,YAAamD,EAAWlD,qBAAsBkD,EAAWjD,WAAYiD,EAAW31D,WAAY21D,EAAWhD,YACvP,KAAK,EAED,MADc//P,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAoBhCijO,EAAOvpQ,UAAUyjG,KAAO,SAAUvlF,EAAMwqF,EAAa3R,EAAUz8D,GAC3D,OAAO,IAAIkvO,EAAO1C,KAAKhjQ,KAAMoa,EAAMwqF,EAAa3R,EAAUz8D,IAK9DivO,EAAOvpQ,UAAU6E,MAAQ,WACrB,OAAO04P,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,gBAAiB,KAAM,CAAEz3O,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACjH,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADcj/B,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAgBhCijO,EAAOvpQ,UAAUqqQ,QAAU,SAAUtpB,GACjC,OAAOwc,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI2/F,EACJ,OAAOk6J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDj7J,EAAO,CACHvlF,KAAM6iO,EACNr4I,YAAa,KACb3R,UAAU,GAEd1vF,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI1nB,IAAI,uBAAwBxzI,EAAM,CAAElkG,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACvH,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADcx2P,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAwBhCijO,EAAOvpQ,UAAUsqQ,eAAiB,SAAUrpK,GACxC,IAAI55F,EAAIwxB,EACR,OAAO0kO,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIizP,EAAU2M,EAAWD,EACrB5/P,EAAQC,KACZ,OAAO65P,EAAY75P,MAAM,SAAUm1B,GAC/B,OAAQA,EAAGsgD,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,WAAsC,MAAzBx9J,EAASspK,aACzD,MAAO,CAAC,EAAcxjP,QAAQE,OAAOm3O,EAASM,6BAElDzlO,EAAGsgD,MAAQ,EACf,KAAK,EAED,OADAtgD,EAAG6kO,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIznB,MAAM,mBAAoBj2I,EAAU,CAAE1hG,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACzH,KAAK,EAYD,OAXA7H,EAAW99N,EAAG4kO,OACd6F,EAAyB,OAAbziK,QAAkC,IAAbA,OAAsB,EAASA,EAASkgJ,WACzEr9O,KAAKgpG,SAA+F,QAAnFzlG,EAAmB,OAAdq8P,QAAoC,IAAdA,OAAuB,EAASA,EAAU52J,gBAA6B,IAAPzlG,EAAgBA,EAAKvD,KAAKgpG,SACtIhpG,KAAKkmH,OAA2F,QAAjFnxF,EAAmB,OAAd6qO,QAAoC,IAAdA,OAAuB,EAASA,EAAU15I,cAA2B,IAAPnxF,EAAgBA,EAAK/0B,KAAKkmH,OAClIy5I,EAA+B,OAAbxiK,QAAkC,IAAbA,OAAsB,EAASA,EAASkgJ,WAC3Ej/O,MAAMC,QAAQshQ,KACd3/P,KAAKgpG,SAAW,GAChB22J,EAAgBl7P,KAAI,SAAUiiQ,IAA6C,OAArBA,QAAkD,IAArBA,OAA8B,EAASA,EAAiB7G,UACvI9/P,EAAMipG,SAASpnG,KAAK8kQ,EAAiB7G,aAGtC,CAAC,EAAc5M,GAC1B,KAAK,EAED,MADc99N,EAAG4kO,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAUhCijO,EAAOvpQ,UAAU6kG,SAAW,SAAUjrD,GAClC,OAAI,EAAIukN,EAAOK,YAAY16P,KAAK81C,OAAO6kN,WAC5B,EAAIjD,EAAiBpgB,6BAA6BxhM,IAEtD,EAAI4hN,EAAiBngB,oBAAoBzhM,IAOpD2vN,EAAOvpQ,UAAU2/P,cAAgB,SAAUL,GACvC,IAAI1lN,EAAS91C,KAAK81C,OACd91C,KAAK2mQ,iBAAiB7wN,EAAOqnD,YAC7BrnD,EAAO6kN,UAAW,EAAIN,EAAO2F,eAAelqN,EAAO6kN,SAAU,WAAY,SAG7E,IAAIiM,EAA6B5mQ,KAAKgB,QAAQmuB,aAAas2O,EAAOmB,4BAC9DC,EAAiC7mQ,KAAKgB,QAAQmuB,aAAas2O,EAAOoB,gCAClEC,EAAsB,CACtBC,kBAAkD,MAA9BH,OAAsC5qQ,EAA4C,UAA/B4qQ,EACvEI,sBAA0D,MAAlCH,OAA0C7qQ,EAAgD,UAAnC6qQ,GAGnF7mQ,KAAK81C,OAAOqnD,UAAW,EAAIk9J,EAAOzwL,QAAQ,GAAIk9L,EAAqBhxN,EAAOqnD,UACtEq+J,IAGJ1lN,EAAOr8B,GAAKzZ,KAAKy7P,UAMrBgK,EAAOvpQ,UAAU+/P,2BAA6B,WAC1C,MAAO,eAOXwJ,EAAOvpQ,UAAU+qQ,WAAa,SAAUC,GACpC,OAAOzN,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAImnQ,EAASvkP,EACb,OAAOi3O,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAEG0xL,EADoB,kBAAbD,EACGA,EAGAlnQ,KAAKonQ,iBAAiBF,GAEpCtkP,EAAM,sBAAwBukP,EAC9B5jQ,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAKtwN,EAAK,KAAM,CAAEnnB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACrG,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADcj/B,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAYhCijO,EAAOvpQ,UAAUgrC,QAAU,WACvB,OAAOuyN,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,kBAAmB,KAAM,CAAEz3O,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACnH,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADcj/B,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAchCijO,EAAOvpQ,UAAUggQ,QAAU,WACvB,OAAOzC,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,OAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UAC5B,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAE3C,CAAC,GAAa,EAAIP,EAAO8B,iBAAiBn8P,KAAKu6P,QAAQM,IAAK76P,KAAK81C,OAAO2+E,SAAUz0H,KAAKw6P,OAAOM,gBACzG,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,gBAYjD0L,EAAOvpQ,UAAUmrQ,WAAa,SAAUrpL,GACpC,OAAOy7K,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,OAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UAC5B,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAE3C,CAAC,EAAa56P,KAAKsnQ,mBAAmBtpL,IACjD,KAAK,EAAG,MAAO,CAAC,EAAcz6E,EAAGw2P,gBAYjD0L,EAAOvpQ,UAAUqrQ,WAAa,WAC1B,OAAO9N,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,OAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UAC5B,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAE3C,CAAC,EAAa56P,KAAKsnQ,mBAAmB,KACjD,KAAK,EAAG,MAAO,CAAC,EAAc/jQ,EAAGw2P,gBAYjD0L,EAAOvpQ,UAAUsrQ,SAAW,WACxB,OAAO/N,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,gBAAiB,CAAElsB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC1G,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADcj/B,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAYhCijO,EAAOvpQ,UAAUurQ,uBAAyB,WACtC,OAAOhO,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIxnB,OAAO,oBAAqB,KAAM,CAAE53O,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACvH,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADcx2P,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAYhCijO,EAAOvpQ,UAAUwrQ,sBAAwB,WACrC,OAAOjO,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,oBAAqB,KAAM,CAAEz3O,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACrH,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADcx2P,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAehCijO,EAAOvpQ,UAAUyrQ,4BAA8B,WAC3C,OAAOlO,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,6BAA8B,CAAElsB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACvH,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADcj/B,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAmBhCijO,EAAOvpQ,UAAU0rQ,yBAA2B,SAAUC,EAAaC,GAC/D,OAAOrO,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI+nQ,EAAaC,EAAgBC,EACjC,OAAOpO,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAIlD,GAFAmN,EAAchtP,KAAKC,MAAMD,KAAK0uB,UAAUzpC,KAAKgpG,YAErB,KADxBg/J,EAAiBhoQ,KAAKkoQ,qBAAqB,oBAAqBH,EAAaF,EAAaC,IAEtF,MAAMpQ,EAAiB/jB,iBAAiBuI,SAU5C,cAPO6rB,EAAYC,GAAgB1pQ,OAAO6pQ,kBAC1CF,EAAa,CACT5qB,WAAY,CACRr0I,SAAU++J,EACV7hJ,OAAQlmH,KAAKkmH,SAGd,CAAC,EAAalmH,KAAKwmQ,eAAeyB,IAC7C,KAAK,EAAG,MAAO,CAAC,EAAc1kQ,EAAGw2P,gBAwBjD0L,EAAOvpQ,UAAUksQ,sBAAwB,SAAUP,EAAaQ,EAAcP,EAAkBQ,EAAcprB,EAAYC,EAAY7mK,GAKlI,YAJyB,IAArBwxL,IAA+BA,EAAmBO,QACjC,IAAjBC,IAA2BA,EAAe5Q,EAAiB9hB,aAAa+G,aACzD,IAAfO,IAAyBA,OAAalhP,QACxB,IAAds6E,IAAwBA,OAAYt6E,GACjCy9P,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIuoQ,EAAaN,EACjB,OAAOpO,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,OAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UAC5B,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,8BAElD2N,EAAcvoQ,KAAKwoQ,kBAAkB,oBAAqBX,EAAaQ,EAAcP,EAAkBQ,EAAcprB,EAAYC,EAAY7mK,GAC7I2xL,EAAa,CACT5qB,WAAY,CACRr0I,SAAUu/J,EACVriJ,OAAQlmH,KAAKkmH,SAGd,CAAC,EAAalmH,KAAKwmQ,eAAeyB,KAC7C,KAAK,EAAG,MAAO,CAAC,EAAc1kQ,EAAGw2P,gBAmBjD0L,EAAOvpQ,UAAUusQ,yBAA2B,SAAUZ,EAAaa,GAC/D,OAAOjP,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI+nQ,EAAaC,EAAgBC,EACjC,OAAOpO,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAIlD,GAFAmN,EAAchtP,KAAKC,MAAMD,KAAK0uB,UAAUzpC,KAAKgpG,YAErB,KADxBg/J,EAAiBhoQ,KAAKkoQ,qBAAqB,oBAAqBH,EAAaF,EAAaa,IAEtF,MAAMhR,EAAiB/jB,iBAAiBuI,SAW5C,cARO6rB,EAAYC,GAAgB1pQ,OAAOqqQ,yBACnCZ,EAAYC,GAAgB92J,KACnC+2J,EAAa,CACT5qB,WAAY,CACRr0I,SAAU++J,EACV7hJ,OAAQlmH,KAAKkmH,SAGd,CAAC,EAAalmH,KAAKwmQ,eAAeyB,IAC7C,KAAK,EAAG,MAAO,CAAC,EAAc1kQ,EAAGw2P,gBAyBjD0L,EAAOvpQ,UAAU0sQ,sBAAwB,SAAUf,EAAaQ,EAAcK,EAAkBJ,EAAcprB,EAAYC,EAAY7mK,EAAWuyL,GAO7I,YANyB,IAArBH,IAA+BA,EAAmBL,QACjC,IAAjBC,IAA2BA,EAAe5Q,EAAiB9hB,aAAa+G,aACzD,IAAfO,IAAyBA,OAAalhP,QACvB,IAAfmhP,IAAyBA,OAAanhP,QACxB,IAAds6E,IAAwBA,OAAYt6E,QACpB,IAAhB6sQ,IAA0BA,OAAc7sQ,GACrCy9P,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIuoQ,EAAaN,EACjB,OAAOpO,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,OAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UAC5B,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,8BAElD2N,EAAcvoQ,KAAKwoQ,kBAAkB,oBAAqBX,EAAaQ,EAAcK,EAAkBJ,EAAcprB,EAAYC,EAAY7mK,EAAWuyL,GACxJZ,EAAa,CACT5qB,WAAY,CACRr0I,SAAUu/J,EACVriJ,OAAQlmH,KAAKkmH,SAGd,CAAC,EAAalmH,KAAKwmQ,eAAeyB,KAC7C,KAAK,EAAG,MAAO,CAAC,EAAc1kQ,EAAGw2P,gBAkBjD0L,EAAOvpQ,UAAUkoQ,sBAAwB,SAAUnnB,EAAUC,EAAYmnB,GACrE,OAAO5K,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI8oQ,EAAcC,EAClB,OAAOlP,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAEL,MAAO,CAAC,EAAaz1E,KAAKgpQ,eAAe/rB,EAAUC,IACnD,KAAK,EASD,OAPA35O,EAAGw2P,OACH+O,EAAe,CACXzE,aAAc,CACVlnP,KAAMknP,IAGd0E,EAAc/oQ,KAAKipQ,0BAA0BhsB,EAAUC,EAAY4rB,GAC5D,CAAC,EAAc9oQ,KAAKwmQ,eAAeuC,YAmB9DtD,EAAOvpQ,UAAUqoQ,aAAe,SAAUtnB,EAAUC,EAAYxtM,EAAOC,GACnE,OAAO8pN,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI8oQ,EAAcC,EAClB,OAAOlP,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAEL,MAAO,CAAC,EAAaz1E,KAAKgpQ,eAAe/rB,EAAUC,IACnD,KAAK,EAQD,OANA35O,EAAGw2P,OACH+O,EAAe,CACXp5N,MAAOA,EACPC,OAAQA,GAEZo5N,EAAc/oQ,KAAKipQ,0BAA0BhsB,EAAUC,EAAY4rB,GAC5D,CAAC,EAAc9oQ,KAAKwmQ,eAAeuC,YAkB9DtD,EAAOvpQ,UAAUwoQ,iBAAmB,SAAUD,EAAc/0N,EAAOC,GAC/D,OAAO8pN,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIolE,EAAU2jM,EACd,OAAOlP,EAAY75P,MAAM,SAAUuD,GAY/B,OAXA6hE,EAAW,CACPj6D,KAAMs5P,EACN/0N,MAAOA,EACPC,OAAQA,GAEZo5N,EAAc,CACVtJ,WAAY/H,EAAiBthB,WAAW8yB,OACxCzC,aAAc,CACVrhM,SAAUA,IAGX,CAAC,EAAcplE,KAAKwmQ,eAAeuC,WAmBtDtD,EAAOvpQ,UAAUooQ,WAAa,SAAUrnB,EAAUC,EAAY37N,EAAGjL,EAAGrO,GAChE,OAAOwxP,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI8oQ,EAAcC,EAClB,OAAOlP,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAEL,MAAO,CAAC,EAAaz1E,KAAKgpQ,eAAe/rB,EAAUC,IACnD,KAAK,EASD,OAPA35O,EAAGw2P,OACH+O,EAAe,CACXvnP,EAAGA,EACHjL,EAAGA,EACHrO,EAAGA,GAEP8gQ,EAAc/oQ,KAAKipQ,0BAA0BhsB,EAAUC,EAAY4rB,GAC5D,CAAC,EAAc9oQ,KAAKwmQ,eAAeuC,YAe9DtD,EAAOvpQ,UAAUitQ,aAAe,SAAU1J,GACtC,OAAOhG,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIopQ,EAAyBC,EAAwBpB,EAAYhV,EACjE,OAAO4G,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAID,GAHA2zL,EAA0BppQ,KAAK2mQ,iBAAiB,CAAElH,WAAYz/P,KAAKw/P,oBACnE6J,EAAyBrpQ,KAAK2mQ,iBAAiB,CAAElH,WAAYA,IAEzD2J,IAA4BC,EAC5B,KAAM,qIAKV,OAHApB,EAAa,CACTxI,WAAYA,GAET,CAAC,EAAaz/P,KAAKwmQ,eAAeyB,IAC7C,KAAK,EAGD,OAFAhV,EAAW1vP,EAAGw2P,OACd/5P,KAAKw/P,kBAAoBC,EAClB,CAAC,EAAcxM,WAQ1CwS,EAAOvpQ,UAAUssQ,kBAAoB,SAAUr9P,EAAM08P,EAAaQ,EAAciB,EAAWhB,EAAcprB,EAAYC,EAAY7mK,EAAW46B,GACxI,IAAIq4J,EAAgB,CAChBnvP,KAAMytP,EACNzgH,MAAOihH,EACP/pQ,OAAQ,IA2BZ,OAzBAirQ,EAAcjrQ,OAAO6M,GAAQ,CACzBi8I,MAAOkiH,EACPhB,aAAcA,GAEL,sBAATn9P,IACAo+P,EAAcr4J,KAAOA,GAErB56B,WACaizL,EAAcjrQ,OAAO6M,GACpBm9P,aACIiB,EAAcjrQ,OAAO6M,GAC3BmrE,UAAYA,GAExB4mK,IACAqsB,EAAcv4O,SAAW,CACrBkpN,QAAS,mDACTgD,WAAYA,IAGhBC,IACAosB,EAAcv4O,SAAW,CACrBkpN,QAAS,uDACTiD,WAAYA,IAGbmoB,EAAcA,EAAc,GAAItlQ,KAAKgpG,UAAU,GAAO,CAACugK,IAAgB,IAKlF9D,EAAOvpQ,UAAUgsQ,qBAAuB,SAAU/8P,EAAM69F,EAAU6+J,EAAayB,GAC3E,IAAItB,GAAkB,EAItB,OAHAh/J,EAASt/E,MAAK,SAAU8/O,EAAmBhvP,GACvC,QAAQgvP,EAAkBpvP,OAASytP,IAAe2B,EAAkBlrQ,OAAO6M,IAASq+P,EAAkBlrQ,OAAO6M,GAAMi8I,QAAUkiH,KAActB,EAAiBxtP,GAAO,MAEhKwtP,GAKXvC,EAAOvpQ,UAAU+sQ,0BAA4B,SAAUhsB,EAAUC,EAAY4rB,GAEzE,IAAIC,EAAc,CACdtJ,WAAY/H,EAAiBthB,WAAW8yB,OACxCzC,aAAc,CACVgD,YAAa,KAOrB,OAJAV,EAAYtC,aAAagD,YAAYxsB,GAAY,CAC7CysB,cAAe,IAEnBX,EAAYtC,aAAagD,YAAYxsB,GAAUysB,cAAcxsB,GAAc4rB,EACpEC,GAKXtD,EAAOvpQ,UAAU8sQ,eAAiB,SAAU/rB,EAAUC,GAClD,OAAOuc,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAAG,MAAO,CAAC,EAAaz1E,KAAKomQ,cAAcnpB,IAChD,KAAK,EAED,MAAO,CAAC,EADD15O,EAAGw2P,OACgBoK,gBAAgBjnB,IAC9C,KAAK,EAAG,MAAO,CAAC,EAAc35O,EAAGw2P,gBAQjD0L,EAAOvpQ,UAAUorQ,mBAAqB,SAAUtpL,GAC5C,OAAOy7K,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI1nB,IAAI,gBAAiBn1J,EAAO,CAAEviF,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACjH,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADcj/B,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAQhCijO,EAAOvpQ,UAAUkrQ,iBAAmB,SAAUF,GAC1C,IAAI/pP,EACJ,OAAQ+pP,GACJ,KAAKxP,EAAiB3hB,SAAS4zB,KAC3BxsP,EAAO,OACP,MACJ,KAAKu6O,EAAiB3hB,SAAS6zB,KAC3BzsP,EAAO,OAGf,OAAOA,GAKXsoP,EAAOvpQ,UAAUyqQ,iBAAmB,SAAUxpK,GAC1C,OAAOA,IAAaA,EAASsiK,aAAe/H,EAAiBthB,WAAWyzB,iBAAmB1sK,EAASsiK,aAAe/H,EAAiBthB,WAAW0zB,iBAOnJrE,EAAOvpQ,UAAU6tQ,QAAU,WACvB,OAAOtQ,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,eAAgB,CAAElsB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACzG,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADcj/B,EAAGw2P,OACCv3N,KACtB,KAAK,EAAG,MAAO,CAAC,WAUhCijO,EAAOvpQ,UAAU8tQ,QAAU,SAAUC,GACjC,OAAOxQ,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAAG,MAAO,CAAC,EAAaz1E,KAAKwmQ,eAAe,CAAEyD,UAAWA,KAC9D,KAAK,EAED,OADA1mQ,EAAGw2P,OACI,CAAC,WAiB5B0L,EAAOvpQ,UAAUguQ,iBAAmB,WAChC,OAAOzQ,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAcmqQ,EACd,OAAOtQ,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAI,EAAI4kL,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,2BAA4B,KAAM,CAAEz3O,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC5H,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,OADA2nO,EAAU5mQ,EAAGw2P,OACN,CAAC,EAAc92O,QAAQE,OAAOgnP,IACzC,KAAK,EAAG,MAAO,CAAC,WAoBhC1E,EAAOvpQ,UAAUkuQ,qBAAuB,SAAUC,GAC9C,OAAO5Q,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAcsqQ,EACd,OAAOzQ,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,GADA40L,GAAwC,IAArBA,GACf,EAAIhQ,EAAOK,YAAY16P,KAAK81C,OAAO6kN,UACnC,MAAO,CAAC,EAAc13O,QAAQE,OAAOm3O,EAASM,6BAElDr3P,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAK,gCAAgCphN,OAAOu4O,EAAiBl9P,YAAa,KAAM,CAAE1R,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACrK,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,OADA8nO,EAAU/mQ,EAAGw2P,OACN,CAAC,EAAc92O,QAAQE,OAAOmnP,IACzC,KAAK,EAAG,MAAO,CAAC,WAMhC7E,EAAO3I,cAAgB,CAAC,iBAAkB,cAAe,mBAAoB,aAAc,WAAY,kBAAmB,uBAAwB,iBAAkB,gBAAiB,mBAAoB,mBAAoB,QAE7N2I,EAAOS,kBAAoB,oBAE3BT,EAAOmB,2BAA6B,uCAEpCnB,EAAOoB,+BAAiC,4CAExCpB,EAAOpI,cAAgB,eAEvBoI,EAAOt6P,KAAO,SACPs6P,EAr8CiB,CAs8C1BpK,EAAQqB,OACVtgN,EAAQqpN,OAASA,GAKX,mBAIC,SAASjyB,EAAyBp3L,EAASo7M,GAIlD,IAAItyC,EAAYllN,MAAQA,KAAKklN,UAAa,WAStC,OARAA,EAAWhnN,OAAO0rE,QAAU,SAASo7I,GACjC,IAAK,IAAIr7M,EAAG/M,EAAI,EAAGygH,EAAIz+G,UAAU/B,OAAQD,EAAIygH,EAAGzgH,IAE5C,IAAK,IAAI6U,KADT9H,EAAI/K,UAAUhC,GACOsB,OAAOhC,UAAUsD,eAAe8B,KAAKqI,EAAG8H,KACzDuzM,EAAEvzM,GAAK9H,EAAE8H,IAEjB,OAAOuzM,IAEK5oN,MAAM4D,KAAMpB,YAE5B66P,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwB7D5+G,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQmuN,aAAU,EAClB,IAAIlP,EAAU7D,EAAmC,kBAC7CgT,EAAWhT,EAAoC,mBAC/CiT,EAAWjT,EAAoC,mBAC/CkT,EAAclT,EAAuC,sBACrDmT,EAASnT,EAAkC,iBAC3CkO,EAASlO,EAAkC,iBAC3CoT,EAAQpT,EAAiC,gBACzCqT,EAAWrT,EAAoC,mBAC/C8D,EAAQ9D,EAAkC,iBAC1CsT,EAAgBtT,EAAyC,wBACzD+F,EAAY/F,EAAoC,mBAQhD+S,EAAyB,WAUzB,SAASA,EAAQpI,EAAYD,EAAaD,EAAensN,QACtC,IAAXA,IAAqBA,EAAS,IAClC,IAAI/1C,EAAQC,KAIZA,KAAK+qQ,qBAAuB,GAC5B/qQ,KAAKwiQ,KAAON,EAAYpsN,EAAOk1N,SAAUl1N,EAAO6sN,aAChD3iQ,KAAK66P,IAAMsH,EAAWniQ,KAAKwiQ,KAAM,KAAM1sN,EAAOpvB,QAASovB,EAAO3qC,KAAM2qC,EAAO4sN,mBAC3E1iQ,KAAKmlQ,OAASlD,EAAcjiQ,KAAKwiQ,MACjCxiQ,KAAKirQ,gBAAkB3P,EAAMz2K,eAI7B7kF,KAAKmlQ,OAAOjyB,KAAK,wCAAwC,SAAU9oJ,EAAKg7K,GACpE,IAAIt+O,EAAQ,CACR3b,KAAM,SACNsO,GAAI2wE,EAAIvuF,OAAO44H,SACfr6G,KAAMgwE,EAAIvuF,OAAOmtB,UACjBxsB,MAAO4tF,EAAI5nD,MAEfziC,EAAMmrQ,YAAYpkP,MAEtB9mB,KAAKmlQ,OAAOjyB,KAAK,wDAAwD,SAAU9oJ,EAAKg7K,GACpF,IAAIt+O,EAAQ,CACR3b,KAAM,SACNsO,GAAI2wE,EAAIvuF,OAAO44H,SACfr6G,KAAMgwE,EAAIvuF,OAAOmtB,UACjBxsB,MAAO4tF,EAAI5nD,MAEfziC,EAAMmrQ,YAAYpkP,MAEtB9mB,KAAKmlQ,OAAOjyB,KAAK,4EAA4E,SAAU9oJ,EAAKg7K,GACxG,IAAIt+O,EAAQ,CACR3b,KAAM,SACNsO,GAAI2wE,EAAIvuF,OAAO44H,SACfr6G,KAAMgwE,EAAIvuF,OAAOmtB,UACjBxsB,MAAO4tF,EAAI5nD,MAEfziC,EAAMmrQ,YAAYpkP,MAEtB9mB,KAAKmlQ,OAAOjyB,KAAK,2CAA2C,SAAU9oJ,EAAKg7K,GACvE,IAAIt+O,EAAQ,CACR3b,KAAM,YACNsO,GAAI2wE,EAAIvuF,OAAO44H,SACfr6G,KAAMgwE,EAAIvuF,OAAOmtB,UACjBxsB,MAAO4tF,EAAI5nD,MAEfziC,EAAMmrQ,YAAYpkP,MAEtB9mB,KAAKmlQ,OAAOjyB,KAAK,qCAAqC,SAAU9oJ,EAAKg7K,GACjE,IAAIt+O,EAAQ,CACR3b,KAAM,OACNsO,GAAI2wE,EAAIvuF,OAAO44H,SACfr6G,KAAMgwE,EAAIvuF,OAAOmtB,UACjBxsB,MAAO4tF,EAAI5nD,MAEfziC,EAAMmrQ,YAAYpkP,MAKtB9mB,KAAKmlQ,OAAOjyB,KAAK,oCAAoC,SAAU9oJ,EAAKg7K,GAChE,IAAIt+O,EAAQ,CACR3b,KAAM,MACNsO,GAAI2wE,EAAIvuF,OAAO44H,SACfr6G,KAAMgwE,EAAIvuF,OAAOmtB,UACjBxsB,MAAO4tF,EAAI5nD,MAEfziC,EAAMmrQ,YAAYpkP,MAKtB9mB,KAAKmlQ,OAAOjyB,KAAK,oBAAoB,SAAU9oJ,EAAKg7K,GAChD,IAAIt+O,EAAQ,CACR3b,KAAM,SACNsO,GAAI2wE,EAAIvuF,OAAO44H,SACfr6G,KAAM,QACN5d,MAAO4tF,EAAI5nD,MAEfziC,EAAMmrQ,YAAYpkP,MAEtB9mB,KAAKmrQ,OAAS,GAEdnrQ,KAAK81C,OAASwlN,EAAM1xL,OAAO,GAAI2gM,EAAQa,cAAet1N,GAClD91C,KAAK81C,OAAOu1N,0BACZrrQ,KAAKsrQ,kBAkcb,OAxbAf,EAAQruQ,UAAUqvQ,aAAe,SAAUvqQ,EAAS80C,GAChDA,EAAO3qC,KAAO,SACd,IAAIqgQ,EAAiBxqQ,EACjBoC,EAAY,IAAIqnQ,EAASrP,OAAOp7P,KAAMwrQ,EAAgB11N,GAG1D,OAFA01N,EAAeC,aAAeroQ,EAC9BpD,KAAK0rQ,oBAAoBtoQ,EAAWpC,GAC7BoC,GASXmnQ,EAAQruQ,UAAUyvQ,YAAc,SAAU3qQ,EAAS80C,GAC/CA,EAAO3qC,KAAO,cACd,IAAIqgQ,EAAiBxqQ,EACjBoC,EAAY,IAAI0nQ,EAAc5F,YAAYllQ,KAAMwrQ,EAAgB11N,GAGpE,OAFA01N,EAAeC,aAAeroQ,EAC9BpD,KAAK0rQ,oBAAoBtoQ,EAAWpC,GAC7BoC,GAUXmnQ,EAAQruQ,UAAU0yM,KAAO,SAAU95G,EAAWh/C,GAC1C,IAAI/1C,EAAQC,KAIZ,YAHe,IAAX81C,IAAqBA,OAAS95C,GAClC84F,EAAaA,GAAaA,aAAqBi6G,YAAej6G,EAAYt0F,SAASgiC,KACpEpkC,MAAMlC,UAAUmF,MAAMC,KAAKwzF,EAAUtzF,iBAAiB,IAAIswB,OAAOupO,EAAQqB,MAAM0D,kBAAmB,OACjG37P,KAAI,SAAUzD,GAAW,OAAOjB,EAAM6rQ,MAAM5qQ,EAAS80C,OAWzEy0N,EAAQruQ,UAAU0vQ,MAAQ,SAAU5qQ,EAAS80C,GAEzC,YADe,IAAXA,IAAqBA,EAAS,IAC3B91C,KAAK6rQ,cAAc7qQ,EAAS80C,IAYvCy0N,EAAQruQ,UAAUy6C,KAAO,SAAU31C,EAAS80C,GAExC,YADe,IAAXA,IAAqBA,EAAS,IAC3B91C,KAAK6rQ,cAAc7qQ,EAAS80C,GAA2B,GAAwB,IAQ1Fy0N,EAAQruQ,UAAU4vQ,UAAY,SAAU9qQ,EAAS80C,GAC7C,OAAO91C,KAAK6rQ,cAAc7qQ,EAAS80C,GAA2B,GAAyB,IAG3Fy0N,EAAQruQ,UAAU2vQ,cAAgB,SAAU7qQ,EAAS80C,EAAQylN,EAAcC,GAEvE,IAAIp4P,OADW,IAAX0yC,IAAqBA,EAAS,IAElC,IAAI01N,EAAiBxqQ,EACrB,GAAIwqQ,EAAeC,aAAc,CAC7B,GAAIjQ,EACA,MAAM,IAAI56P,MAAM,kCAAkCkxB,OAAO9wB,EAAQkB,UAAW,oDAEhFkB,EAAYpD,KAAK+rQ,cAAcP,EAAgB11N,EAAQylN,QAGvDn4P,EAAYpD,KAAKgsQ,SAASR,EAAgB11N,EAAQylN,EAAcC,GAEpE,OAAOp4P,GAGXmnQ,EAAQruQ,UAAUslQ,sBAAwB,WACtC,OAAKxhQ,KAAKmrQ,OAGHnrQ,KAAKmrQ,OAAOtuQ,OAFR,GAKf0tQ,EAAQruQ,UAAUogQ,gBAAkB,WAChC,OAAOt8P,KAAKirQ,iBAOhBV,EAAQruQ,UAAU+vQ,cAAgB,WAC9B,OAAO1O,EAAU54C,QAAQj+L,SAa7B6jP,EAAQruQ,UAAU8vQ,SAAW,SAAUhrQ,EAAS80C,EAAQylN,EAAcC,GAClE,IAAI0Q,EAAgBp2N,EAAO3qC,MAAQnK,EAAQmuB,aAAaksO,EAAQqB,MAAMW,eACtE,IAAK6O,EAAe,CAChB,IAAIC,EAAiBjnD,EAASA,EAAS,GAAIpvK,GAAS,CAAEgmN,YAAa,KACnE,MAAM,IAAIl7P,MAAM,mCAAmCkxB,OAAO/W,KAAK0uB,UAAU0iO,GAAiB,gBAAgBr6O,OAAO9wB,EAAQkB,UAAW,wIAAwI4vB,OAAOupO,EAAQqB,MAAMW,cAAe,MAAOvrO,OAAO04O,EAAS/E,OAAOt6P,KAAKsM,cAAe,SAGtWq+B,EAAO3qC,KAAO+gQ,EACd,IAAI9oQ,EAAYpD,KAAKosQ,qBAAqBF,EAAelrQ,EAAS80C,EAAQylN,EAAcC,GAGxF,OAFAx6P,EAAQyqQ,aAAeroQ,EACvBpD,KAAK0rQ,oBAAoBtoQ,EAAWpC,GAC7BoC,GAcXmnQ,EAAQruQ,UAAUkwQ,qBAAuB,SAAUF,EAAelrQ,EAAS80C,EAAQylN,EAAcC,GAC7F,IAAIl1N,EAAYg1N,EAAMnmE,MAAK,SAAUk3E,GAAkB,OAAOH,IAAkBG,EAAelhQ,KAAKsM,gBAAkB8yP,EAAQ+B,YAC9H,GAAIhmO,EACA,OAAO,IAAIA,EAAUtmC,KAAMgB,EAAS80C,EAAQylN,EAAcC,GAG9D,IAAI+Q,EAAsBjR,EAAMnmE,MAAK,SAAUq3E,GAA2B,OAAON,EAAcz0P,gBAAkB+0P,EAAwB/0P,gBAAkBvZ,OAAOjB,KAAK+C,KAAK+qQ,uBAC5K,IAAKwB,EACD,MAAM,IAAI3rQ,MAAM,yCAAyCkxB,OAAOo6O,EAAe,iGAEnF,OAAOlsQ,KAAK+qQ,qBAAqBwB,GAAqBvsQ,KAAMgB,EAAS80C,EAAQylN,EAAcC,IAW/F+O,EAAQruQ,UAAU6vQ,cAAgB,SAAU/qQ,EAAS80C,EAAQylN,GACzD,IAAIn4P,EAAYk4P,EAAMnmE,MAAK,SAAU5zK,GAAK,OAAOA,EAAEvgB,UAAYA,IAAYhB,KAAKmrQ,QAChF,IAAK/nQ,EAAW,CACZ,IAAI+oQ,EAAiBjnD,EAASA,EAAS,GAAIpvK,GAAS,CAAEgmN,YAAa,KACnE,MAAM,IAAIl7P,MAAM,mCAAmCkxB,OAAO/W,KAAK0uB,UAAU0iO,GAAiB,gBAAgBr6O,OAAO9wB,EAAQkB,UAAW,+PAGxI,GAAI4zC,EAAO3qC,MAAsC,QAA9B2qC,EAAO3qC,KAAKsM,cAC3B,OAAOzX,KAAKgsQ,SAAShrQ,EAAS80C,GAOlC,GAA2B,kBAAhBA,EAAO3qC,MAAqB2qC,EAAO3qC,OAAS/H,EAAU0yC,OAAO3qC,KAAM,CAI1E,GAAoB,WAAhB2qC,EAAO3qC,MAAqBmwP,EAAMwC,SAAS16P,EAAU0yC,OAAO3qC,MAAO,CACnE,IAAI84E,EAAS,IAAIumL,EAAS/E,OAAOzlQ,KAAMgB,EAAS80C,GAA2B,GAAyB,EAAO90C,EAAQyqQ,aAAajR,QAKhI,OAJAp3P,EAAUy6P,eAAe/nN,GAA0B,GACnDmuC,EAAOttC,OACP31C,EAAQyqQ,aAAexnL,EACvBjkF,KAAK0rQ,oBAAoBtoQ,EAAWpC,GAC7BijF,EAGX,MADIkoL,EAAiBjnD,EAASA,EAAS,GAAIpvK,GAAS,CAAEgmN,YAAa,KAC7D,IAAIl7P,MAAM,4IAA4IkxB,OAAO/W,KAAK0uB,UAAU0iO,GAAiB,gBAAgBr6O,OAAO9wB,EAAQkB,UAAW,0DAA0D4vB,OAAO9xB,KAAK81C,OAAO3qC,KAAM,wCAAwC2mB,OAAOgkB,EAAO3qC,OAI1X,OAFA/H,EAAUy6P,eAAe/nN,GAA0B,GACnD1yC,EAAUuzC,KAAK4kN,GACRn4P,GAWXmnQ,EAAQruQ,UAAUovQ,gBAAkB,WAChC,IAAIvrQ,EAAQC,KACZ8B,OAAOynB,iBAAiB,oBAAoB,SAAUkjP,GAAU,OAAO1sQ,EAAM6uM,KAAKpuM,SAASgiC,SAAU,IAQzG+nO,EAAQruQ,UAAUyrB,IAAM,SAAU3mB,GAC9B,IAAIwqQ,EAAiBxqQ,EACrB,IAAKwqQ,EAAeC,aAChB,MAAM,IAAI7qQ,MAAM,kFAAkFkxB,OAAO9wB,EAAQkB,UAAW,2CAEhI,OAAOspQ,EAAeC,cAS1BlB,EAAQruQ,UAAUi5L,KAAO,SAAU1gE,GAC/B,OAAO6mI,EAAMnmE,MAAK,SAAU5zK,GAAK,OAAOA,EAAEu0B,OAAO2+E,WAAaA,IAAaz0H,KAAKmrQ,SAUpFZ,EAAQruQ,UAAUwvQ,oBAAsB,SAAUtoQ,EAAWpC,GAEzDhB,KAAKmrQ,OAASnrQ,KAAKmrQ,OAAOj6O,QAAO,SAAU06O,GACvC,OAAOA,EAAM5qQ,UAAYA,KAE7BhB,KAAKmrQ,OAAOvpQ,KAAKwB,IAQrBmnQ,EAAQruQ,UAAUq3C,MAAQ,SAAUvyC,GAChC,IAAIwqQ,EAAiBxqQ,EACrB,GAAKwqQ,EAAeC,aAApB,CAIA,IAAIiB,EAAelB,EAAeC,aAC9BiB,EAAahL,kBACbgL,EAAa1rQ,QAAQ2oB,oBAAoB,QAAS+iP,EAAahL,kBAAkB,GAGrFgL,EAAa5P,cAAc99P,SAAQ,SAAUgqB,GACzC0jP,EAAa7yP,IAAImP,MAGrBsyO,EAAM7xO,QAAO,SAAUlI,GAAK,OAAOA,IAAMiqP,EAAeC,eAAiBzrQ,KAAKmrQ,eAEvEK,EAAeC,aAEtB,IAAIjR,EAASx5P,EAAQsC,cAAc,UAC/Bk3P,SACsBx+P,IAAlBw+P,EAAO/wO,OACP+wO,EAAO/wO,SAIP+wO,EAAO5mN,cAAc1c,YAAYsjO,MAU7C+P,EAAQruQ,UAAUywQ,iBAAmB,SAAU7lP,GACxB,SAAfA,EAAM3b,MACNnL,KAAKkrQ,YAAYpkP,IAGzByjP,EAAQruQ,UAAUmpQ,cAAgB,SAAUuH,EAAMxiL,EAAKhmF,GACnD,OAAOq1P,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIrB,EAAQwrQ,EACZ,OAAOtQ,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD,IAAKm3L,EAED,OADAxoQ,EAAIye,KAAK,IAAK,MACP,CAAC,GAEZtf,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAagrQ,EAAKxiL,EAAI5nD,OAClC,KAAK,EAGD,OAFA7jC,EAAS4E,EAAGw2P,OACZ31P,EAAIye,KAAK,IAAKlkB,GACP,CAAC,EAAa,GACzB,KAAK,EAID,OAHAwrQ,EAAU5mQ,EAAGw2P,OACb31P,EAAIye,KAAK,IAAK,MACdo4F,QAAQx2F,MAAM0lP,GACP,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAYhCI,EAAQruQ,UAAUgvQ,YAAc,SAAUpkP,GACtC,IAAI8kP,EAAQtQ,EAAMnmE,MAAK,SAAUy2E,GAC7B,OAAQA,EAAM91N,OAAO2+E,WAAa3tG,EAAMrN,KACzCzZ,KAAKmrQ,QACR,GAAIS,EAAO,CACP,IAAIpvQ,EAAQsqB,EAAMtqB,MAClB,GAAmB,gBAAfsqB,EAAM1M,KAAwB,CAC9B,IAAIyyP,EAAU,UACVltK,EAAOnjG,EAAa,QACxB,IAAKmjG,EACD,MAAM,IAAI/+F,MAAM,wCAAwCkxB,OAAO+6O,EAAS,OAE5ErwQ,EAAa,QAAI,IAAIkpQ,EAAO1C,KAAK4I,EAAOjsK,EAAKvlF,KAAMulF,EAAKiF,aAAa,GAEzE02J,EAAMwR,iBAAiBlB,EAAM5qQ,QAAS8lB,EAAM1M,KAAM5d,KAW1D+tQ,EAAQruQ,UAAU6wQ,QAAU,SAAUj3N,EAAQ90C,GAC1C,IAAIugQ,EAAgB/gQ,SAASW,cAAc,UAC3CogQ,EAAc3rO,aAAa,QAAS,iBACpC2rO,EAAc3rO,aAAa,MAAOkgB,EAAO6kN,UACzC4G,EAAc3rO,aAAa,YAAa,MACxC2rO,EAAc3rO,aAAa,kBAAmB,SAC9C,IAAInC,EAAOzyB,EAQX,OAPKyyB,IACDA,EAAOjzB,SAASe,qBAAqB,QAAQ,IAEjDkyB,EAAKzxB,YAAYu/P,GACjBA,EAAc/9O,OAAS,WACnB83O,EAAMwR,iBAAiBvL,EAAe,YAAa,KAEhDA,GASXgJ,EAAQruQ,UAAU8wQ,WAAa,SAAU7hQ,EAAMub,GAC3C1mB,KAAK66P,IAAInoB,eAAe,cAAgBvnO,EACxCnL,KAAK66P,IAAInoB,eAAe,yBAA2BhsN,GAUvD6jP,EAAQruQ,UAAU+wQ,SAAW,SAAUf,EAAegB,EAAuBC,GACzE,IAAIptQ,EAAQC,KACZ,GAAIs7P,EAAMnmE,MAAK,SAAUk3E,GAAkB,OAAOH,EAAcz0P,gBAAkB40P,EAAelhQ,KAAKsM,gBAAkB8yP,EAAQ+B,YAC5H,MAAM,IAAI1rQ,MAAM,+EAEpB,GAAI06P,EAAMnmE,MAAK,SAAUq3E,GAA2B,OAAON,EAAcz0P,gBAAkB+0P,EAAwB/0P,gBAAkBvZ,OAAOjB,KAAK+C,KAAK+qQ,uBAClJ,MAAM,IAAInqQ,MAAM,qDAEpBZ,KAAK+qQ,qBAAqBmB,GAAiBgB,EAC3CC,EAAgBnuQ,SAAQ,SAAU4jB,GAC9B,IAAKA,EAAIy+J,SAAS,eAAiBz+J,EAAIy+J,SAAS,cAC5C,MAAM,IAAIzgL,MAAM,4BAEpBb,EAAMolQ,OAAOjyB,KAAKtwN,GAAK,SAAUwnE,EAAKg7K,GAClC,IAAIt+O,EAAQ,CACR3b,KAAM+gQ,EACNzyP,GAAI2wE,EAAIvuF,OAAO44H,SACfr6G,KAAMgwE,EAAIvuF,OAAOmtB,UACjBxsB,MAAO4tF,EAAI5nD,MAEfziC,EAAMmrQ,YAAYpkP,UAO9ByjP,EAAQ+B,WAAa,CACjB3B,EAAOyC,KACP5C,EAAS/E,OACTiF,EAAY/N,UACZiO,EAAM9F,IACN+F,EAASwC,QAKb9C,EAAQa,cAAgB,CACpBC,0BAA0B,EAC1BxnP,QAAS,WAEL,IADA,IAAI5jB,EAAO,GACFjC,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCiC,EAAKjC,GAAMY,UAAUZ,GAEzB,OAAOi9G,QAAQ4zC,IAAI5uJ,EAAK,GAAIA,EAAKoB,MAAM,MAGxCkpQ,EAniBkB,GAqiB7BnuN,EAAQmuN,QAAUA,GAKZ,gBAIC,SAAS/2B,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAe7CvgC,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQgxN,UAAO,EACf,IAAI1V,EAAmBF,EAA0C,gDAS7D4V,EAAsB,SAAUjuO,GAKhC,SAASiuO,EAAK7S,EAASv5P,EAASk8P,EAAY3B,EAAcC,GACtD,IAAIz7P,EAAQC,KACR81C,EAASonN,EAIb,OAHAn9P,EAAQo/B,EAAO79B,KAAKtB,KAAMu6P,EAASv5P,EAAS80C,OAAqB95C,EAAWu/P,EAAcC,IAAgBx7P,MACpG48P,SAAW,aACjBx+P,MAAMlC,UAAU0F,KAAKxF,MAAM2D,EAAM+8P,cAAesQ,EAAKtQ,eAC9C/8P,EA+DX,OAzEAs+B,EAAU+uO,EAAMjuO,GAiBhBiuO,EAAKlxQ,UAAUu/P,MAAQ,WACnB,IACI6R,EADSttQ,KAAK81C,OACEr8B,IAAM2zP,EAAKxR,mBAAmB57P,KAAK81C,OAAO6kN,UAC9D,GAAsB,kBAAX2S,GAAyC,IAAlBA,EAAOzwQ,OACrC,MAAM,IAAI+D,MAAM,4GAEpB,OAAO0sQ,GAKXF,EAAKlxQ,UAAU6kG,SAAW,SAAUjrD,GAChC,IAAIy3N,EAAcz3N,EAClB,OAAO,EAAI4hN,EAAiBxgB,kBAAkBq2B,IAOlDH,EAAKlxQ,UAAU2/P,cAAgB,SAAUL,GACjCA,IAIJx7P,KAAK81C,OAAOr8B,GAAKzZ,KAAKy7P,UAM1B2R,EAAKlxQ,UAAU+/P,2BAA6B,WACxC,MAAO,aAWXmR,EAAKxR,mBAAqB,SAAUh5O,GAChC,IAEI0qP,EADAE,EAAc5qP,EAAIhgB,MADJ,sBAMlB,OAHI4qQ,IACAF,EAASE,EAAY,IAElBF,GAGXF,EAAKjiQ,KAAO,OAEZiiQ,EAAKtQ,cAAgB,CAAC,cAAe,cAC9BsQ,EA1Ee,CARZ5V,EAAmC,kBAmFvCkF,OACVtgN,EAAQgxN,KAAOA,GAKT,gBAIC,SAAS55B,EAAyBp3L,GAIzC,IAAIq9M,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OA2D7D,SAAS62E,EAAUh4H,EAAW8xM,GAC1B,IAAKrvQ,MAAMC,QAAQovQ,GACf,MAAM,IAAI7sQ,MAAM,uFAAuFkxB,OAAO27O,IAElH,IAAIjzP,EAOJ,OANAizP,EAAG/jP,MAAK,SAAUnI,EAAG3kB,GACjB,GAAI++D,EAAUp6C,GAEV,OADA/G,EAAQ5d,GACD,KAGR4d,EA0JX,SAASkzP,IAEL,IAAIC,EAAY7rQ,OAAOu4B,QAAUv4B,OAAOs4B,SACpCwzO,EAAmB,IAAIC,YAAY,GAEvC,OADAF,EAAUrzO,gBAAgBszO,GACnBA,EAAiB,GA7M5B1vQ,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ0hN,SAAW1hN,EAAQqiN,0BAA4BriN,EAAQsxN,eAAiBtxN,EAAQohN,mBAAqBphN,EAAQs+M,WAAat+M,EAAQ+/M,gBAAkB//M,EAAQ4jN,cAAgB5jN,EAAQyoC,aAAezoC,EAAQskN,mBAAqBtkN,EAAQwtB,OAASxtB,EAAQ3yB,OAAS2yB,EAAQ+4I,KAAO/4I,EAAQu3I,UAAYv3I,EAAQ0wN,sBAAmB,EAwBxU1wN,EAAQ0wN,iBAfR,SAA0B9rQ,EAASgoB,EAAWK,GAC1C,IAAIykP,EACuB,oBAAhBC,YACPD,EAAc,IAAIC,YAAY/kP,EAAW,CACrCglP,OAAQ3kP,EACR4kP,SAAS,EACTC,YAAY,KAIhBJ,EAActtQ,SAAS24G,YAAY,gBACvBg1J,gBAAgBnlP,GAAW,GAAM,EAAMK,GAEvDroB,EAAQq4G,cAAcy0J,IAyB1B1xN,EAAQu3I,UAAYA,EAcpBv3I,EAAQ+4I,KAJR,SAAcx5H,EAAW8xM,GAErB,OAAOA,EADK95E,EAAUh4H,EAAW8xM,KAQrCrxN,EAAQ3yB,OAJR,SAAgBkyC,EAAW8xM,GACvB,IAAIjzP,EAAQm5K,EAAUh4H,EAAW8xM,GACjCA,EAAG3zP,OAAOU,EAAO,IAmCrB4hC,EAAQwtB,OAvBR,WAEI,IADA,IAAI3pE,EAAO,GACFjC,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCiC,EAAKjC,GAAMY,UAAUZ,GAEzB,IAAIi/B,EAASh9B,EAAK,GAElB,QAAejE,IAAXihC,GAAmC,OAAXA,EACxB,MAAM,IAAI8xD,UAAU,8CAGxB,IADA,IAAIukJ,EAASp1O,OAAO++B,GACXziB,EAAQ,EAAGA,EAAQ5b,UAAU/B,OAAQ2d,IAAS,CACnD,IAAI5c,EAASgB,UAAU4b,GACvB,QAAexe,IAAX4B,GAAmC,OAAXA,EACxB,IAAK,IAAI21O,KAAW31O,EACZA,EAAO4B,eAAe+zO,KACtBD,EAAOC,GAAW31O,EAAO21O,IAKzC,OAAOD,GAYXl3L,EAAQskN,mBAHR,WACI,OAAOgN,IAAiBvgQ,SAAS,IAAIC,UAAU,IAsBnDgvC,EAAQyoC,aAbR,WAKI,OAJQ,IAAI17E,MAAOkZ,UACQ,qBAAhBgf,aAA0D,oBAApBA,YAAYC,KACpDD,YAAYC,MAEd,uBAAuB5kC,QAAQ,SAAS,SAAUy4B,GAErD,IAAI2J,EAAK4uO,IAAmB,GAG5B,OAAO5uO,EAAE3xB,SAAS,QAkB1BivC,EAAQ4jN,cALR,SAAuBp9O,EAAKg3L,EAAWp9M,GACnC,IAAI4xQ,EAAkBxrP,EAAIzkB,QAAQ,KAAO,EAAI,IAAM,IAEnD,OADAykB,GAAOwrP,EAAkBx0D,EAAY,IAAMp9M,GAgC/C4/C,EAAQ+/M,gBAnBR,SAAyBtB,EAAKp/P,EAAKq/P,GAC/B,OAAOrB,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAai5P,EAAIlzO,IAAI,4BAA6B,CAAElsB,IAAKA,GAAOq/P,IAC5E,KAAK,EAED,MAAO,CAAC,GADGv3P,EAAGw2P,OACkBv3N,MACpC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAgBhC4Z,EAAQs+M,WAHR,SAAoBC,GAChB,OAAOA,GAAYA,EAASljP,cAActZ,QAAQ,eAAiB,GAavEi+C,EAAQohN,mBAHR,SAA4B7C,GACxB,OAAOA,GAAYzE,mBAAmByE,GAAUljP,cAActZ,QAAQ,kBAAoB,GAa9Fi+C,EAAQsxN,eAAiBA,EAYzBtxN,EAAQqiN,0BAHR,SAAmCvhQ,EAAOyb,GACtC,OAAOpR,KAAKgH,IAAIrR,EAAMmlB,UAAY1J,EAAI0J,YAa1C+5B,EAAQ0hN,SAHR,SAAkBiB,GACd,MAAqB,WAAdA,GAAwC,gBAAdA,IAO/B,kBAIC,SAASvrB,EAAyBp3L,EAASo7M,GAIlD,IAAIn5N,EAAar+B,MAAQA,KAAKq+B,WAAe,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOzJ,OAAOhC,UAAUsD,eAAe8B,KAAKqG,EAAG8J,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MAC3E5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIonF,UAAU,uBAAyB/P,OAAOr3E,GAAK,iCAE7D,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAZ1C,GAezCg7N,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwB7D5+G,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQixN,YAAS,EACjB,IAAI3V,EAAmBF,EAA0C,gDAC7DgT,EAAWhT,EAAoC,mBAC/CyL,EAAqBzL,EAA8C,6BAOnE6V,EAAwB,SAAUluO,GAUlC,SAASkuO,EAAO9S,EAASv5P,EAASk8P,EAAY3B,EAAcC,EAAahB,GACrE,OAAOr7N,EAAO79B,KAAKtB,KAAMu6P,EAASv5P,EAASk8P,EAAY3B,EAAcC,EAAahB,IAAWx6P,KA6RjG,OAvSAq+B,EAAUgvO,EAAQluO,GAelBkuO,EAAOnxQ,UAAUy6C,KAAO,SAAU4kN,GAC9B,IAAIzlN,EAAS91C,KAAK81C,OAClB,GAAKA,EAAOgmN,YAAZ,CAIA,GAA+B,kBAApBhmN,EAAOmnM,UAAoD,IAA3BnnM,EAAOmnM,SAASpgP,OACvD,MAAM,IAAI+D,MAAM,kDAEpB,GAAiC,kBAAtBk1C,EAAOonM,YAAwD,IAA7BpnM,EAAOonM,WAAWrgP,OAC3D,MAAM,IAAI+D,MAAM,iHAGpB,IAAI8uC,EAAQoG,EAAOpG,MAAQoG,EAAOpG,MAAQ1vC,KAAKw6P,OAAO/jO,YAClDkZ,EAASmG,EAAOnG,OAASmG,EAAOnG,OAAS3vC,KAAKw6P,OAAO5qN,aACrDw1B,EAAW,CACXj6D,KAAMusP,EAAiBlhB,aAAa0yB,OACpCx5N,MAAOA,EACPC,OAAQA,GAER85N,EAAc,GA6BlB,OA5BAA,EAAY3zN,EAAOmnM,UAAY,CAC3BoxB,cAAe,CACXhK,aAAc,CACVlnP,KAAMu6O,EAAiBrhB,2BAA2Bi4B,SAG1D5E,cAAe,IAEnBD,EAAY3zN,EAAOmnM,UAAUysB,cAAc5zN,EAAOonM,YAAc,CAC5DmnB,aAAc,CACVlnP,KAAMu6O,EAAiBrhB,2BAA2Bk4B,SAEtDhtP,EAAG,EACHjL,EAAG,EACHrO,EAAG,EACHynC,MAAO01B,EAAS11B,MAChBC,OAAQy1B,EAASz1B,QAErBmG,EAAOqnD,SAAWrnD,EAAOqnD,UAAY,GACrCrnD,EAAOqnD,SAAS4pK,mBAAoB,EACpCjxN,EAAOqnD,SAAS6pK,uBAAwB,EACxClxN,EAAOqnD,SAASsiK,WAAa/H,EAAiBthB,WAAW8yB,OACzDpzN,EAAOqnD,SAASspK,aAAe,CAC3B+H,cAAe9W,EAAiBnhB,cAAck4B,UAC9CrpM,SAAUA,EACVqkM,YAAaA,GAEjBzpQ,KAAK81C,OAASA,EACP3W,EAAOjjC,UAAUy6C,KAAKr1C,KAAKtB,KAAMu7P,KAO5C8R,EAAOnxQ,UAAUiqQ,SAAW,WACxB,MAAMkH,EAAOqB,2BAQjBrB,EAAOnxQ,UAAUqqQ,QAAU,SAAUoI,GACjC,MAAMtB,EAAOuB,0BAQjBvB,EAAOnxQ,UAAUwzB,OAAS,SAAUm/O,GAChC,OAAOpV,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,MAAM8pQ,EAAOyB,+BAczBzB,EAAOnxQ,UAAU6yQ,oBAAsB,WACnC,OAAOtV,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI81C,EAAQm9M,EAAU+b,EAAsCC,EAAgB9pM,EAC5E,OAAO00L,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD3/B,EAAS91C,KAAK81C,OACdvyC,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI,iBAAiBmK,OAAOgkB,EAAOmnM,SAAU,YAAa,CAAExhP,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC/I,KAAK,EAGD,GAFA7H,EAAW1vP,EAAGw2P,OAEiB,KAD/BiV,EAAkB/b,EAASzwN,KAAKtR,QAAO,SAAUg+O,GAAc,OAAOA,EAAW90P,OAAS07B,EAAOonM,eAC7ErgP,OAKhB,KAJsB,CAClB8D,QAAS,iBACTwuQ,gBAAiB,oBAMzB,OAFAF,EAAiBD,EAAgB,GACjC7pM,EAAcnlE,KAAK2/F,KAAK7pD,EAAOmnM,UACxB,CAAC,EAAc,IAAIgmB,EAAmBgB,iBAAiB9+L,EAAa8pM,EAAe70P,KAAM60P,EAAe7nH,MAAO6nH,EAAe9jQ,KAAM8jQ,EAAe/K,SAC9J,KAAK,EAED,MADa3gQ,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAkBhC6qO,EAAOnxQ,UAAU20N,WAAa,SAAUu+C,GACpC,OAAO3V,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI4iB,EACJ,OAAOi3O,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD7yD,EAAM5iB,KAAKqvQ,mBAAmBD,GAC9B7rQ,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAIlzO,IAAI/E,EAAK,CAAEnnB,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBAC9F,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAuBhC6qO,EAAOnxQ,UAAUqnQ,cAAgB,SAAUC,EAAWxyL,EAASo+L,GAC3D,OAAO3V,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIyjQ,EAAsB7gP,EAC1B,OAAOi3O,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACDguL,EAAuB,CACnBC,iBAAkBF,EAClBxyL,QAASA,GAEbpuD,EAAM5iB,KAAKqvQ,mBAAmBD,GAC9B7rQ,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI3nB,KAAKtwN,EAAK6gP,EAAsB,CAAEhoQ,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACrH,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAuBhC6qO,EAAOnxQ,UAAU2nQ,WAAa,SAAU7yL,EAASo+L,GAC7C,OAAO3V,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAI4iB,EACJ,OAAOi3O,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD7yD,EAAM5iB,KAAKqvQ,mBAAmBD,GAC9B7rQ,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAKu6P,QAAQM,IAAI1nB,IAAIvwN,EAAKouD,EAAS,CAAEv1E,IAAKuE,KAAK81C,OAAO2+E,UAAYz0H,KAAKw6P,OAAOM,gBACvG,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehC6qO,EAAOnxQ,UAAUynQ,cAAgB,SAAUyL,GACvC,OAAO3V,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAAG,MAAO,CAAC,EAAaz1E,KAAKujQ,cAAc7L,EAAiB/hB,kBAAkBiuB,eAAW5nQ,EAAWozQ,IACzG,KAAK,EAAG,MAAO,CAAC,EAAc7rQ,EAAGw2P,gBAQjDsT,EAAOnxQ,UAAUmzQ,mBAAqB,SAAUD,GAC5C,IAAIt5N,EAAS91C,KAAK81C,OAClB,OAAQs5N,GACJ,KAAK1X,EAAiBhiB,aAAa+vB,OAC/B,MAAO,kBACX,KAAK/N,EAAiBhiB,aAAastB,KAC/B,MAAO,iBAAiBlxO,OAAOgkB,EAAOmnM,SAAU,YACpD,QACI,MAAO,iBAAiBnrN,OAAOgkB,EAAOmnM,SAAU,aAAanrN,OAAOgkB,EAAOonM,WAAY,cAInGmwB,EAAOliQ,KAAO,SAEdkiQ,EAAOqB,0BAA4B,uDAEnCrB,EAAOuB,yBAA2B,sDAElCvB,EAAOyB,wBAA0B,oDAC1BzB,EAxSiB,CAyS1B7C,EAAS/E,QACXrpN,EAAQixN,OAASA,GAKX,4BAIC,SAAS75B,EAAyBp3L,EAASo7M,GAIlD,IAAIiC,EAAaz5P,MAAQA,KAAKy5P,WAAc,SAAU7+I,EAAS8+I,EAAYv5O,EAAG0sH,GAE1E,OAAO,IAAK1sH,IAAMA,EAAI8C,WAAU,SAAUC,EAASC,GAC/C,SAASw2O,EAAUn9P,GAAS,IAAMmkC,EAAKksG,EAAUngB,KAAKlwH,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACpF,SAAS+4P,EAASp9P,GAAS,IAAMmkC,EAAKksG,EAAiB,MAAErwI,IAAW,MAAOqE,GAAKsiB,EAAOtiB,IACvF,SAAS8/B,EAAKhiC,GAJlB,IAAenC,EAIamC,EAAOijC,KAAO1e,EAAQvkB,EAAOnC,QAJ1CA,EAIyDmC,EAAOnC,MAJhDA,aAAiB2jB,EAAI3jB,EAAQ,IAAI2jB,GAAE,SAAU+C,GAAWA,EAAQ1mB,OAIToe,KAAK++O,EAAWC,GAClGj5N,GAAMksG,EAAYA,EAAUzwI,MAAMw+G,EAAS8+I,GAAc,KAAKhtI,YAGlEmtI,EAAe75P,MAAQA,KAAK65P,aAAgB,SAAUj/I,EAASp4E,GAC/D,IAAsG54B,EAAG0M,EAAG0uM,EAAG80C,EAA3G1hF,EAAI,CAAE3iG,MAAO,EAAGskL,KAAM,WAAa,GAAW,EAAP/0C,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOg1C,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEptI,KAAMwtI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3qK,SAA0BuqK,EAAEvqK,OAAOC,UAAY,WAAa,OAAOxvF,OAAU85P,EACvJ,SAASI,EAAK78I,GAAK,OAAO,SAAUP,GAAK,OACzC,SAAcq9I,GACV,GAAIvwP,EAAG,MAAM,IAAImlF,UAAU,mCAC3B,KAAOqpF,GAAG,IACN,GAAIxuK,EAAI,EAAG0M,IAAM0uM,EAAY,EAARm1C,EAAG,GAAS7jP,EAAU,OAAI6jP,EAAG,GAAK7jP,EAAS,SAAO0uM,EAAI1uM,EAAU,SAAM0uM,EAAE1jN,KAAKgV,GAAI,GAAKA,EAAEo2G,SAAWs4F,EAAIA,EAAE1jN,KAAKgV,EAAG6jP,EAAG,KAAKv4N,KAAM,OAAOojL,EAE3J,OADI1uM,EAAI,EAAG0uM,IAAGm1C,EAAK,CAAS,EAARA,EAAG,GAAQn1C,EAAExoN,QACzB29P,EAAG,IACP,KAAK,EAAG,KAAK,EAAGn1C,EAAIm1C,EAAI,MACxB,KAAK,EAAc,OAAX/hF,EAAE3iG,QAAgB,CAAEj5E,MAAO29P,EAAG,GAAIv4N,MAAM,GAChD,KAAK,EAAGw2I,EAAE3iG,QAASn/D,EAAI6jP,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/hF,EAAE6hF,IAAI38I,MAAO86D,EAAE4hF,KAAK18I,MAAO,SACxC,QACI,KAAkB0nG,GAAZA,EAAI5sC,EAAE4hF,MAAYn9P,OAAS,GAAKmoN,EAAEA,EAAEnoN,OAAS,MAAkB,IAAVs9P,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/hF,EAAI,EAAG,SACjG,GAAc,IAAV+hF,EAAG,MAAcn1C,GAAMm1C,EAAG,GAAKn1C,EAAE,IAAMm1C,EAAG,GAAKn1C,EAAE,IAAM,CAAE5sC,EAAE3iG,MAAQ0kL,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/hF,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAIA,EAAIm1C,EAAI,MAC7D,GAAIn1C,GAAK5sC,EAAE3iG,MAAQuvI,EAAE,GAAI,CAAE5sC,EAAE3iG,MAAQuvI,EAAE,GAAI5sC,EAAE6hF,IAAIr4P,KAAKu4P,GAAK,MACvDn1C,EAAE,IAAI5sC,EAAE6hF,IAAI38I,MAChB86D,EAAE4hF,KAAK18I,MAAO,SAEtB68I,EAAK33N,EAAKlhC,KAAKs5G,EAASw9D,GAC1B,MAAOv3K,GAAKs5P,EAAK,CAAC,EAAGt5P,GAAIyV,EAAI,EAAK,QAAU1M,EAAIo7M,EAAI,EACtD,GAAY,EAARm1C,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE39P,MAAO29P,EAAG,GAAKA,EAAG,QAAK,EAAQv4N,MAAM,GArB9BjB,CAAK,CAAC08E,EAAGP,OAwB7D5+G,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQ6nN,sBAAmB,EAC3B,IAAIvM,EAAmBF,EAA0C,gDAQ7DyM,EAAkC,WAIlC,SAASA,EAAiBtkK,EAAMvlF,EAAMgtI,EAAOj8I,EAAM+4P,GAC/ClkQ,KAAKoa,KAAOA,EACZpa,KAAKonJ,MAAQA,EACbpnJ,KAAKmL,KAAOA,EACZnL,KAAKkkQ,OAASA,EACdlkQ,KAAK2/F,KAAOA,EAwUhB,OA5TAskK,EAAiB/nQ,UAAU20N,WAAa,WACpC,OAAO4oC,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAK2/F,KAAK1b,OAAOs2K,QAAQM,IAAIlzO,IAAI,iBAAiBmK,OAAO9xB,KAAK2/F,KAAKvlF,KAAM,aAAa0X,OAAO9xB,KAAKoa,KAAM,YAAa,CAAE3e,IAAKuE,KAAK2/F,KAAK1b,OAAOnuC,OAAO2+E,UAAYz0H,KAAK2/F,KAAK1b,OAAOu2K,OAAOM,gBACjN,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAgBhCyhO,EAAiB/nQ,UAAUqnQ,cAAgB,SAAUC,EAAWxyL,GAC5D,OAAOyoL,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIyjQ,EACJ,OAAO5J,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACDguL,EAAuB,CACnBC,iBAAkBF,EAClBxyL,QAASA,GAEbztE,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAK2/F,KAAK1b,OAAOs2K,QAAQM,IAAI3nB,KAAK,iBAAiBphN,OAAO9xB,KAAK2/F,KAAKvlF,KAAM,aAAa0X,OAAO9xB,KAAKoa,KAAM,YAAaqpP,EAAsB,CAAEhoQ,IAAKuE,KAAK2/F,KAAK1b,OAAOnuC,OAAO2+E,UAAYz0H,KAAK2/F,KAAK1b,OAAOu2K,OAAOM,gBACxO,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAchCyhO,EAAiB/nQ,UAAUynQ,cAAgB,WACvC,OAAOlK,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAAG,MAAO,CAAC,EAAaz1E,KAAKujQ,cAAc7L,EAAiB/hB,kBAAkBiuB,YACnF,KAAK,EAAG,MAAO,CAAC,EAAcrgQ,EAAGw2P,gBAgBjDkK,EAAiB/nQ,UAAU2nQ,WAAa,SAAU7yL,GAC9C,OAAOyoL,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAK2/F,KAAK1b,OAAOs2K,QAAQM,IAAI1nB,IAAI,iBAAiBrhN,OAAO9xB,KAAK2/F,KAAKvlF,KAAM,aAAa0X,OAAO9xB,KAAKoa,KAAM,YAAa42D,EAAS,CAAEv1E,IAAKuE,KAAK2/F,KAAK1b,OAAOnuC,OAAO2+E,UAAYz0H,KAAK2/F,KAAK1b,OAAOu2K,OAAOM,gBAC1N,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAkBhCyhO,EAAiB/nQ,UAAUozQ,WAAa,SAAUC,EAAgBzmM,GAC9D,OAAO2wL,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIwvQ,EACJ,OAAO3V,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EACD+5L,EAAwB,CACpB1mM,KAAMA,EACNymM,eAAgBA,GAEpBhsQ,EAAGkyE,MAAQ,EACf,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAK2/F,KAAK1b,OAAOs2K,QAAQM,IAAI3nB,KAAK,iBAAiBphN,OAAO9xB,KAAK2/F,KAAKvlF,KAAM,aAAa0X,OAAO9xB,KAAKoa,KAAM,eAAgBo1P,EAAuB,CAAE/zQ,IAAKuE,KAAK2/F,KAAK1b,OAAOnuC,OAAO2+E,UAAYz0H,KAAK2/F,KAAK1b,OAAOu2K,OAAOM,gBAC5O,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehCyhO,EAAiB/nQ,UAAUuzQ,eAAiB,SAAU3nM,GAClD,OAAO2xL,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAK2/F,KAAK1b,OAAOs2K,QAAQM,IAAI1nB,IAAI,iBAAiBrhN,OAAO9xB,KAAK2/F,KAAKvlF,KAAM,aAAa0X,OAAO9xB,KAAKoa,KAAM,WAAY0tD,EAAO,CAAErsE,IAAKuE,KAAK2/F,KAAK1b,OAAOnuC,OAAO2+E,UAAYz0H,KAAK2/F,KAAK1b,OAAOu2K,OAAOM,gBACvN,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAgBhCyhO,EAAiB/nQ,UAAUwzQ,eAAiB,WACxC,OAAOjW,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAK2/F,KAAK1b,OAAOs2K,QAAQM,IAAIlzO,IAAI,iBAAiBmK,OAAO9xB,KAAK2/F,KAAKvlF,KAAM,aAAa0X,OAAO9xB,KAAKoa,KAAM,WAAY,CAAE3e,IAAKuE,KAAK2/F,KAAK1b,OAAOnuC,OAAO2+E,UAAYz0H,KAAK2/F,KAAK1b,OAAOu2K,OAAOM,gBAChN,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAUhCyhO,EAAiB/nQ,UAAU+C,MAAQ,SAAUm9F,GAEzC,YADgB,IAAZA,IAAsBA,EAAU,IAC7Bq9J,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAK2/F,KAAK1b,OAAOs2K,QAAQM,IAAI3nB,KAAK,iBAAiBphN,OAAO9xB,KAAK2/F,KAAKvlF,KAAM,aAAa0X,OAAO9xB,KAAKoa,KAAM,UAAWgiF,EAAS,CAAE3gG,IAAKuE,KAAK2/F,KAAK1b,OAAOnuC,OAAO2+E,UAAYz0H,KAAK2/F,KAAK1b,OAAOu2K,OAAOM,gBACzN,KAAK,EAED,MAAO,CAAC,EADGv3P,EAAGw2P,OACiBv3N,MACnC,KAAK,EAED,MADaj/B,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAehCyhO,EAAiB/nQ,UAAUkjG,OAAS,SAAUhD,GAC1C,OAAOq9J,EAAUz5P,UAAM,OAAQ,GAAQ,WAEnC,OAAO65P,EAAY75P,MAAM,SAAUuD,GAC/B,OAAQA,EAAGkyE,OACP,KAAK,EAED,OADAlyE,EAAGy2P,KAAKp4P,KAAK,CAAC,EAAG,EAAE,CAAG,IACf,CAAC,EAAa5B,KAAK2/F,KAAK1b,OAAOs2K,QAAQM,IAAI1nB,IAAI,iBAAiBrhN,OAAO9xB,KAAK2/F,KAAKvlF,KAAM,aAAa0X,OAAO9xB,KAAKoa,KAAM,WAAYgiF,EAAS,CAAE3gG,IAAKuE,KAAK2/F,KAAK1b,OAAOnuC,OAAO2+E,UAAYz0H,KAAK2/F,KAAK1b,OAAOu2K,OAAOM,gBACzN,KAAK,EAAG,MAAO,CAAC,EAAcv3P,EAAGw2P,QACjC,KAAK,EAED,MADax2P,EAAGw2P,OACCv3N,KACrB,KAAK,EAAG,MAAO,CAAC,WAkBhCyhO,EAAiB/nQ,UAAUooQ,WAAa,SAAU/iP,EAAGjL,EAAGrO,GACpD,OAAOwxP,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIi9O,EAAUC,EACd,OAAO2c,EAAY75P,MAAM,SAAUuD,GAI/B,OAHA05O,EAAWj9O,KAAK2/F,KAAKvlF,KACrB8iO,EAAal9O,KAAKoa,KAEX,CAAC,EADCpa,KAAK2/F,KAAK1b,OACUqgL,WAAWrnB,EAAUC,EAAY37N,EAAGjL,EAAGrO,WAehFg8P,EAAiB/nQ,UAAUkoQ,sBAAwB,SAAUC,GACzD,OAAO5K,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIi9O,EAAUC,EACd,OAAO2c,EAAY75P,MAAM,SAAUuD,GAI/B,OAHA05O,EAAWj9O,KAAK2/F,KAAKvlF,KACrB8iO,EAAal9O,KAAKoa,KAEX,CAAC,EADCpa,KAAK2/F,KAAK1b,OACUmgL,sBAAsBnnB,EAAUC,EAAYmnB,WAgBrFJ,EAAiB/nQ,UAAUqoQ,aAAe,SAAU70N,EAAOC,GACvD,OAAO8pN,EAAUz5P,UAAM,OAAQ,GAAQ,WACnC,IAAIi9O,EAAUC,EACd,OAAO2c,EAAY75P,MAAM,SAAUuD,GAI/B,OAHA05O,EAAWj9O,KAAK2/F,KAAKvlF,KACrB8iO,EAAal9O,KAAKoa,KAEX,CAAC,EADCpa,KAAK2/F,KAAK1b,OACUsgL,aAAatnB,EAAUC,EAAYxtM,EAAOC,WAI5Es0N,EAjV2B,GAmVtC7nN,EAAQ6nN,iBAAmBA,GAKrB,0EAIC,SAAC3/N,GAGmCoqD,KAAtBpqD,EAAO8X,QAA0B,WAAK,aAAa,IAAIv7C,EAAE,GAAG,OAAO,WAAK,IAAIi+B,EAAEj+B,EAAE3C,OAAOwpB,eAAeoX,EAAE,aAAa,CAACtiC,OAAM,IAAKsiC,EAAE+jO,4BAAuB,EAAO,IAAIl5P,EAAE,WAAW,SAAS9I,EAAEi+B,QAAG,IAASA,IAAIA,EAAE,CAACgkO,0BAA0B,CAAClwB,sBAAsB/xO,EAAE8uQ,6BAA6B78B,sBAAsBjyO,EAAE+uQ,8BAA8B78B,eAAelyO,EAAEgvQ,sBAAsBC,cAAchuQ,OAAOsY,KAAKvZ,EAAE6/P,uBAAuB,IAAI/2P,EAAE3J,KAAKA,KAAK+vQ,uBAAuB,GAAG/vQ,KAAK4yO,sBAAsB9zM,EAAEgkO,2BAA2BhkO,EAAEgkO,0BAA0BlwB,uBAAuB/xO,EAAE8uQ,6BAA6B3vQ,KAAK8yO,sBAAsBh0M,EAAEgkO,2BAA2BhkO,EAAEgkO,0BAA0BhwB,uBAAuBjyO,EAAE+uQ,6BAA6B5vQ,KAAK+yO,eAAej0M,EAAEi0M,gBAAgBlyO,EAAEgvQ,sBAAsB7vQ,KAAK8vQ,cAAchxO,EAAEgxO,eAAehuQ,OAAO9B,KAAKoa,KAAK0kB,EAAE1kB,MAAMvZ,EAAE6/P,qBAAqB1gQ,KAAK2iQ,YAAY7jO,EAAE6jO,cAAa,EAAG3iQ,KAAK4iQ,0BAA0B9jO,EAAE8jO,0BAA0B5iQ,KAAK+iQ,iBAAiBjkO,EAAEikO,mBAAkB,EAAG/iQ,KAAK2iQ,aAAa1nJ,QAAQ4zC,IAAI,iDAAiD/8H,OAAO9xB,KAAKoa,KAAK,0BAA0B0X,OAAO9xB,KAAK8vQ,cAActvQ,SAAS4mJ,QAAQpnJ,KAAKyyP,SAAS,GAAGzyP,KAAKgwQ,qBAAqB,SAASnvQ,GAAG,OAAO8I,EAAEsmQ,kBAAkBpvQ,IAAIb,KAAK9C,QAAQ,OAAO2D,EAAE8uQ,6BAA6B,SAAS7wO,EAAEn1B,GAAG,OAAOm1B,EAAEj+B,EAAEqvQ,qBAAqBvmQ,EAAEm1B,GAAGj+B,EAAE+uQ,6BAA6B,SAAS9wO,GAAG,OAAOA,EAAEj+B,EAAEqvQ,sBAAsBrvQ,EAAEgvQ,sBAAsB,SAAShvQ,GAAG,QAAQA,EAAE4jB,OAAO5jB,EAAEsvQ,eAAe,WAAW,IAAItvQ,EAAE,CAACqiB,QAAQ,KAAKC,OAAO,KAAKxI,QAAQ,MAAMmkB,EAAE,IAAI7b,SAAS,SAAS6b,EAAEn1B,GAAG9I,EAAEqiB,QAAQ4b,EAAEj+B,EAAEsiB,OAAOxZ,KAAK,OAAO9I,EAAE8Z,QAAQmkB,EAAEj+B,GAAGA,EAAE6/P,mBAAmB,WAAW,IAAI7/P,EAAEiB,OAAOu4B,QAAQv4B,OAAOs4B,SAAS0E,EAAE,IAAI+uO,YAAY,GAAG,OAAOhtQ,EAAEy5B,gBAAgBwE,GAAGA,EAAE,GAAG3xB,SAAS,IAAIC,UAAU,IAAIvM,EAAE3E,UAAUs3P,WAAW,SAAS3yP,GAAGb,KAAKyyP,SAAS7wP,KAAKf,IAAIA,EAAE3E,UAAUk0Q,cAAc,SAASvvQ,GAAG,IAAIi+B,EAAE9+B,KAAKyyP,SAASt0P,QAAQ0C,GAAG,IAAI,IAAIi+B,EAAE,MAAM,IAAIl+B,MAAM,wEAAwEZ,KAAKyyP,SAAS34O,OAAOglB,EAAE,IAAIj+B,EAAE3E,UAAUgB,MAAM,WAAW8C,KAAK8vQ,cAAcvmP,iBAAiB,UAAUvpB,KAAKgwQ,uBAAuBnvQ,EAAE3E,UAAUikC,KAAK,WAAWngC,KAAK8vQ,cAAcnmP,oBAAoB,UAAU3pB,KAAKgwQ,uBAAuBnvQ,EAAE3E,UAAUw+B,YAAY,SAASoE,EAAEn1B,GAAG,IAAI0zG,EAAE,CAAC5jG,GAAG5Y,EAAE6/P,sBAAsB1gQ,KAAK4yO,sBAAsBjpO,EAAE0zG,GAAGr9G,KAAK2iQ,cAAc1nJ,QAAQ4zC,IAAI,GAAG/8H,OAAO9xB,KAAKoa,KAAK,sBAAsB6gG,QAAQ4zC,IAAI9zI,KAAK0uB,UAAU9/B,EAAE,KAAK,QAAQm1B,EAAEpE,YAAY/wB,EAAE,KAAK,IAAIggE,EAAE9oE,EAAEsvQ,iBAAiB,OAAOnwQ,KAAK+vQ,uBAAuB1yJ,EAAE5jG,IAAIkwD,EAAEA,EAAEhvD,SAAS9Z,EAAE3E,UAAUm0Q,aAAa,SAASxvQ,EAAEi+B,EAAEn1B,GAAG3J,KAAK4yO,sBAAsB9zM,EAAEn1B,GAAG3J,KAAK2iQ,cAAc1nJ,QAAQ4zC,IAAI,GAAG/8H,OAAO9xB,KAAKoa,KAAK,uBAAuB6gG,QAAQ4zC,IAAI9zI,KAAK0uB,UAAU3K,EAAE,KAAK,QAAQj+B,EAAE65B,YAAYoE,EAAE,MAAMj+B,EAAE3E,UAAU+zQ,kBAAkB,SAASpvQ,GAAG,IAAIi+B,EAAE9+B,KAAKA,KAAK2iQ,cAAc1nJ,QAAQ4zC,IAAI,GAAG/8H,OAAO9xB,KAAKoa,KAAK,uBAAuB6gG,QAAQ4zC,IAAI,SAAS/8H,OAAOjxB,EAAEsK,OAAO8vG,QAAQ4zC,IAAI9zI,KAAK0uB,UAAU5oC,EAAEga,KAAK,KAAK,QAAQ,IAAIlR,EAAE3J,KAAK4iQ,2BAA2B/hQ,EAAEjD,OAAO,GAAG+L,EAAE,CAAC,IAAI0zG,EAAEx8G,EAAEga,KAAK,GAAG,iBAAiBwiG,EAAE,CAAC,IAAI1zC,EAAEq7I,EAAE,IAAIr7I,EAAE3pE,KAAK8yO,sBAAsBz1H,GAAG,MAAMx8G,GAAGb,KAAK+iQ,kBAAkB9nJ,QAAQ4tF,KAAK,SAAS/2K,OAAO9xB,KAAKoa,KAAK,uFAAuFW,KAAK0uB,UAAU4zE,EAAE,KAAK,MAAM,UAAUx8G,GAAG,GAAG8oE,IAAIq7I,EAAEhlN,KAAK+vQ,uBAAuBpmM,EAAElwD,KAAKurM,EAAE,CAAC,IAAIpoN,GAAE,EAAG,IAAIA,EAAEoD,KAAK+yO,eAAe11H,GAAG,MAAMx8G,GAAGo6G,QAAQ4tF,KAAK,SAAS/2K,OAAO9xB,KAAKoa,KAAK,iGAAiGW,KAAK0uB,UAAU4zE,EAAE,KAAK,IAAI,UAAUx8G,GAAGjE,EAAEooN,EAAE7hM,OAAOk6F,GAAG2nG,EAAE9hM,QAAQm6F,UAAUr9G,KAAK+vQ,uBAAuBpmM,EAAElwD,SAASzZ,KAAKyyP,SAAS/oO,MAAM,SAAS7oB,GAAG,IAAImkN,GAAE,EAAG,IAAIA,EAAEnkN,EAAE+J,KAAKyyG,GAAG,MAAMx8G,GAAGi+B,EAAEikO,kBAAkB9nJ,QAAQ4tF,KAAK,SAAS/2K,OAAOgN,EAAE1kB,KAAK,gEAAgEW,KAAK0uB,UAAU4zE,EAAE,KAAK,MAAM,UAAUx8G,GAAG,GAAGmkN,EAAE,CAAC,IAAIpoN,OAAE,EAAO,IAAIA,EAAEqmB,QAAQC,QAAQriB,EAAEyqC,OAAO+xE,IAAI,MAAMx8G,GAAGi+B,EAAEikO,kBAAkB9nJ,QAAQ4tF,KAAK,SAAS/2K,OAAOgN,EAAE1kB,KAAK,mEAAmEW,KAAK0uB,UAAU4zE,EAAE,KAAK,MAAM,UAAUx8G,GAAGjE,EAAEqmB,QAAQC,UAAU,OAAOtmB,EAAEge,MAAM,SAAS/Z,GAAG,IAAIA,EAAE,CAAC,IAAImkN,EAAE,wBAAwBlzL,OAAO/W,KAAK0uB,UAAU4zE,EAAE,KAAK,MAAM,8FAA8Fv+E,EAAEikO,kBAAkB9nJ,QAAQ4tF,KAAK,SAAS/2K,OAAOgN,EAAE1kB,KAAK,OAAO0X,OAAOkzL,IAAInkN,EAAE,CAACozM,QAAQ+Q,GAAGlmL,EAAEuxO,aAAa1mQ,EAAE9I,EAAE8oE,OAAM,OAAQ3pE,KAAK+iQ,kBAAkB9nJ,QAAQ4tF,KAAK,SAAS/2K,OAAO9xB,KAAKoa,KAAK,wCAAwC0X,OAAO9xB,KAAKyyP,SAAS51P,OAAO,eAAei1B,OAAO/W,KAAK0uB,UAAU4zE,EAAE,KAAK,IAAI,WAAWr9G,KAAK+iQ,kBAAkB9nJ,QAAQ4tF,KAAK,SAAS/2K,OAAO9xB,KAAKoa,KAAK,qEAAqEvZ,EAAEqvQ,oBAAoB,yBAAyBrvQ,EAAzkJ,GAA8kJi+B,EAAE+jO,uBAAuBl5P,EAA3sJ,GAAitJ9I,EAAnvJ,KAQxCsxP,EAA2B,GAG/B,SAASqF,EAAoBllB,GAE5B,IAAI+f,EAAeF,EAAyB7f,GAC5C,QAAqBt2O,IAAjBq2P,EACH,OAAOA,EAAaj2M,QAGrB,IAAI9X,EAAS6tN,EAAyB7f,GAAY,CAGjDl2L,QAAS,IAOV,OAHA+1L,EAAoBG,GAAUhxO,KAAKgjC,EAAO8X,QAAS9X,EAAQA,EAAO8X,QAASo7M,GAGpElzN,EAAO8X,QAIzB,IAAIk0N,EAAsB,GA+DhB,OA7DV,WACA,IAAIl0N,EAAUk0N,EAMdpyQ,OAAOwpB,eAAe00B,EAAS,aAAe,CAAE5/C,OAAO,IACvD4/C,EAAQo8M,0BAA4Bp8M,EAAQq8M,0BAA4Br8M,EAAQs8M,kBAAoBt8M,EAAQq7M,sBAAwBr7M,EAAQ07M,mBAAqB17M,EAAQg/M,OAASh/M,EAAQ8oN,YAAc9oN,EAAQ6nN,iBAAmB7nN,EAAQixN,OAASjxN,EAAQ0oN,IAAM1oN,EAAQ4mN,KAAO5mN,EAAQsgN,MAAQtgN,EAAQgxN,KAAOhxN,EAAQugN,UAAYvgN,EAAQqpN,OAASrpN,EAAQkhN,OAASlhN,EAAQm0N,UAAYn0N,EAAQm+M,aAAU,EAI5Y,IAAI+C,EAAS9F,EAA0C,gDACvDp7M,EAAQkhN,OAASA,EACjB,IAAI/C,EAAU/C,EAAqC,oBACnDp7M,EAAQm+M,QAAUA,EAClB,IAAIgW,EAAY/Y,EAAuC,sBACvDp7M,EAAQm0N,UAAYA,EACpB,IAAI/F,EAAWhT,EAAoC,mBACnDt5P,OAAOwpB,eAAe00B,EAAS,SAAW,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO6iP,EAAS/E,UACjG,IAAIiF,EAAclT,EAAuC,sBACzDt5P,OAAOwpB,eAAe00B,EAAS,YAAc,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO+iP,EAAY/N,aACvG,IAAIgO,EAASnT,EAAkC,iBAC/Ct5P,OAAOwpB,eAAe00B,EAAS,OAAS,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOgjP,EAAOyC,QAC7F,IAAI/R,EAAU7D,EAAmC,kBACjDt5P,OAAOwpB,eAAe00B,EAAS,QAAU,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO0zO,EAAQqB,SAC/F,IAAIgJ,EAASlO,EAAkC,iBAC/Ct5P,OAAOwpB,eAAe00B,EAAS,OAAS,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO+9O,EAAO1C,QAC7F,IAAI4H,EAAQpT,EAAiC,gBAC7Ct5P,OAAOwpB,eAAe00B,EAAS,MAAQ,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOijP,EAAM9F,OAC3F,IAAI+F,EAAWrT,EAAoC,mBACnDt5P,OAAOwpB,eAAe00B,EAAS,SAAW,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOkjP,EAASwC,UACjG,IAAIpK,EAAqBzL,EAA8C,6BACvEt5P,OAAOwpB,eAAe00B,EAAS,mBAAqB,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOs7O,EAAmBgB,oBACrH,IAAI6G,EAAgBtT,EAAyC,wBAC7Dt5P,OAAOwpB,eAAe00B,EAAS,cAAgB,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAOmjP,EAAc5F,eAC3G,IAAIuF,EAAWjT,EAAoC,mBACnDt5P,OAAOwpB,eAAe00B,EAAS,SAAW,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO8iP,EAASrP,UACjG,IAAIoV,EAAmBhZ,EAA4C,iCACnEt5P,OAAOwpB,eAAe00B,EAAS,qBAAuB,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO6oP,EAAiB1Y,sBACrH55P,OAAOwpB,eAAe00B,EAAS,wBAA0B,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO6oP,EAAiB/Y,yBACxHv5P,OAAOwpB,eAAe00B,EAAS,oBAAsB,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO6oP,EAAiB9X,qBACpHx6P,OAAOwpB,eAAe00B,EAAS,4BAA8B,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO6oP,EAAiB/X,6BAC5Hv6P,OAAOwpB,eAAe00B,EAAS,4BAA8B,CAAEt0B,YAAY,EAAMH,IAAK,WAAc,OAAO6oP,EAAiBhY,6BAM5H,IAAIiY,EAAU,IAAIlW,EAAQgQ,QAAQgG,EAAUpO,WAAYoO,EAAUrO,YAAaqO,EAAUtO,eAErFngQ,OAAO2uQ,SAAW3uQ,OAAO4uQ,oCACzB5uQ,OAAOA,OAAO4uQ,qCAAuCD,EAIrD3uQ,OAAO2uQ,QAAUA,EAxDrB,GA6DiBH,EAxiZV,IARLhsO,EAAO8X,QAAUwoK,K,mFCLJ,SAASt1H,EAAQ3lB,GAG9B,OAAO2lB,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7lB,GAC7F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAK,mBAAqB4lB,QAAU5lB,EAAEpsE,cAAgBgyF,QAAU5lB,IAAM4lB,OAAOrzF,UAAY,gBAAkBytE,IACzGA,GCLE,SAASgnM,EAAc3rD,GACpC,IAAIpoN,ECFS,SAAqBooN,EAAGlmL,GACrC,GAAI,UAAYwwD,EAAQ01H,KAAOA,EAAG,OAAOA,EACzC,IAAInkN,EAAImkN,EAAEz1H,OAAOqhL,aACjB,QAAI,IAAW/vQ,EAAG,CAChB,IAAIjE,EAAIiE,EAAES,KAAK0jN,EAAGlmL,GAAK,WACvB,GAAI,UAAYwwD,EAAQ1yF,GAAI,OAAOA,EACnC,MAAM,IAAImyF,UAAU,gDAEtB,OAAQ,WAAajwD,EAAIkgD,OAAS/oC,QAAQ+uK,GDNlC4rD,CAAY5rD,EAAG,UACvB,MAAO,UAAY11H,EAAQ1yF,GAAKA,EAAIoiF,OAAOpiF,GEH9B,SAASukG,EAAgB5kG,EAAKS,EAAKR,GAYhD,OAXAQ,EAAM2zQ,EAAc3zQ,MACTT,EACT2B,OAAOwpB,eAAenrB,EAAKS,EAAK,CAC9BR,MAAOA,EACPsrB,YAAY,EACZC,cAAc,EACdknE,UAAU,IAGZ1yF,EAAIS,GAAOR,EAEND,ECZT,SAAS6kG,EAAQvgG,EAAGi+B,GAClB,IAAIkmL,EAAI9mN,OAAOjB,KAAK4D,GACpB,GAAI3C,OAAOojG,sBAAuB,CAChC,IAAI33B,EAAIzrE,OAAOojG,sBAAsBzgG,GACrCi+B,IAAM6qC,EAAIA,EAAEz4C,QAAO,SAAU4N,GAC3B,OAAO5gC,OAAO6gC,yBAAyBl+B,EAAGi+B,GAAGhX,eAC1Ck9L,EAAEpjN,KAAKxF,MAAM4oN,EAAGr7I,GAEvB,OAAOq7I,EAEM,SAAS,EAAenkN,GACrC,IAAK,IAAIi+B,EAAI,EAAGA,EAAIlgC,UAAU/B,OAAQiiC,IAAK,CACzC,IAAIkmL,EAAI,MAAQpmN,UAAUkgC,GAAKlgC,UAAUkgC,GAAK,GAC9CA,EAAI,EAAIsiE,EAAQljG,OAAO8mN,IAAI,GAAIhmN,SAAQ,SAAU8/B,GAC/C,EAAej+B,EAAGi+B,EAAGkmL,EAAElmL,OACpB5gC,OAAOsjG,0BAA4BtjG,OAAOujG,iBAAiB5gG,EAAG3C,OAAOsjG,0BAA0BwjH,IAAM5jH,EAAQljG,OAAO8mN,IAAIhmN,SAAQ,SAAU8/B,GAC7I5gC,OAAOwpB,eAAe7mB,EAAGi+B,EAAG5gC,OAAO6gC,yBAAyBimL,EAAGlmL,OAGnE,OAAOj+B,ECnBT,SAASmuF,EAAkB/xD,EAAQ14B,GACjC,IAAK,IAAI3H,EAAI,EAAGA,EAAI2H,EAAM1H,OAAQD,IAAK,CACrC,IAAIq/B,EAAa13B,EAAM3H,GACvBq/B,EAAWnU,WAAamU,EAAWnU,aAAc,EACjDmU,EAAWlU,cAAe,EACtB,UAAWkU,IAAYA,EAAWgzD,UAAW,GACjD/wF,OAAOwpB,eAAeuV,EAAQ0zO,EAAc10O,EAAWj/B,KAAMi/B,I,YCPlD,SAASozD,EAAgB1lB,GAItC,OAHA0lB,EAAkBnxF,OAAOqgC,eAAiBrgC,OAAOsnE,eAAerpE,OAAS,SAAyBwtE,GAChG,OAAOA,EAAEnrC,WAAatgC,OAAOsnE,eAAemE,KAEvBA,GCJV,SAASknM,IACtB,IACE,IAAI7rD,GAAK/d,QAAQ/qM,UAAU6yE,QAAQztE,KAAK09B,QAAQ8wD,UAAUm3G,QAAS,IAAI,gBACvE,MAAO+d,IACT,OAAQ6rD,EAA4B,WAClC,QAAS7rD,MCHE,SAASv1H,EAA2Bf,EAAMptF,GACvD,GAAIA,IAA2B,WAAlBguF,EAAQhuF,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIytF,UAAU,4DAEtB,OCRa,SAAgCL,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAE3B,OAAOD,EDIA,CAAsBA,GERhB,SAASk9E,EAAkBh4I,EAAKjyB,IAClC,MAAPA,GAAeA,EAAMiyB,EAAI/2B,UAAQ8E,EAAMiyB,EAAI/2B,QAC/C,IAAK,IAAID,EAAI,EAAGivK,EAAO,IAAIztK,MAAMuD,GAAM/E,EAAI+E,EAAK/E,IAAKivK,EAAKjvK,GAAKg3B,EAAIh3B,GACnE,OAAOivK,ECFM,SAASu5B,EAA4Bz7H,EAAG07H,GACrD,GAAK17H,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,EAAiBA,EAAG07H,GACtD,IAAIhoF,EAAIn/G,OAAOhC,UAAUiR,SAAS7L,KAAKqoE,GAAGtoE,MAAM,GAAI,GAEpD,MADU,WAANg8G,GAAkB1zC,EAAEpsE,cAAa8/G,EAAI1zC,EAAEpsE,YAAY6c,MAC7C,QAANijG,GAAqB,QAANA,EAAoBj/G,MAAM6qF,KAAKtf,GACxC,cAAN0zC,GAAqB,2CAA2CzyG,KAAKyyG,GAAW,EAAiB1zC,EAAG07H,QAAxG,GCHa,SAASl5F,EAAmBv4E,GACzC,OCJa,SAA4BA,GACzC,GAAIx1B,MAAMC,QAAQu1B,GAAM,OAAO,EAAiBA,GDGzC,CAAkBA,IELZ,SAA0By4E,GACvC,GAAsB,qBAAX9c,QAAmD,MAAzB8c,EAAK9c,OAAOC,WAA2C,MAAtB6c,EAAK,cAAuB,OAAOjuG,MAAM6qF,KAAKojB,GFInF,CAAgBz4E,IAAQ,EAA2BA,IGLvE,WACb,MAAM,IAAIm7D,UAAU,wIHIwE,GIgD9F,IAAI+hL,EAA0B,WAE5B,SAASA,EAAWxkQ,GAClB,IAAIvM,EAAQC,KAEZA,KAAK+wQ,WAAa,SAAUh7K,GAC1B,IAAI0/F,EAIAA,EAFsB,IAAtB11L,EAAMu7C,KAAKz+C,OACTkD,EAAMixQ,eACCjxQ,EAAMixQ,eAAeziE,YACrBxuM,EAAMq0B,QACNr0B,EAAM+0F,UAAUgP,WAEhB/jG,EAAM01L,OAGR11L,EAAMu7C,KAAKv7C,EAAMu7C,KAAKz+C,OAAS,GAAG0xM,YAG7CxuM,EAAM+0F,UAAUj+D,aAAak/D,EAAK0/F,GAElC11L,EAAMu7C,KAAK15C,KAAKm0F,IAGlB/1F,KAAKixQ,cAA8Bj1Q,IAAnBsQ,EAAQ4kQ,QAA+D5kQ,EAAQ4kQ,OAC/FlxQ,KAAKs7C,KAAO,GACZt7C,KAAKmxQ,IAAM,EACXnxQ,KAAKoxQ,MAAQ9kQ,EAAQ8kQ,MAErBpxQ,KAAKhD,IAAMsP,EAAQtP,IACnBgD,KAAK80F,UAAYxoF,EAAQwoF,UACzB90F,KAAKo0B,QAAU9nB,EAAQ8nB,QACvBp0B,KAAKgxQ,eAAiB1kQ,EAAQ0kQ,eAC9BhxQ,KAAKy1L,OAAS,KAGhB,IAAI47E,EAASP,EAAW50Q,UA4DxB,OA1DAm1Q,EAAOC,QAAU,SAAiBt1N,GAChCA,EAAMh9C,QAAQgB,KAAK+wQ,aAGrBM,EAAO3zK,OAAS,SAAgB6zK,GAI1BvxQ,KAAKmxQ,KAAOnxQ,KAAKixQ,SAAW,KAAQ,KAAO,GAC7CjxQ,KAAK+wQ,WA7DX,SAA4BzkQ,GAC1B,IAAIypF,EAAMv1F,SAASW,cAAc,SASjC,OARA40F,EAAIngE,aAAa,eAAgBtpB,EAAQtP,UAEnBhB,IAAlBsQ,EAAQ8kQ,OACVr7K,EAAIngE,aAAa,QAAStpB,EAAQ8kQ,OAGpCr7K,EAAI/zF,YAAYxB,SAAS01G,eAAe,KACxCngB,EAAIngE,aAAa,SAAU,IACpBmgE,EAmDay7K,CAAmBxxQ,OAGrC,IAAI+1F,EAAM/1F,KAAKs7C,KAAKt7C,KAAKs7C,KAAKz+C,OAAS,GAcvC,GAAImD,KAAKixQ,SAAU,CACjB,IAAIQ,EAhGV,SAAqB17K,GACnB,GAAIA,EAAI07K,MAEN,OAAO17K,EAAI07K,MAMb,IAAK,IAAI70Q,EAAI,EAAGA,EAAI4D,SAASkxQ,YAAY70Q,OAAQD,IAC/C,GAAI4D,SAASkxQ,YAAY90Q,GAAG+0Q,YAAc57K,EAExC,OAAOv1F,SAASkxQ,YAAY90Q,GAoFhBg1Q,CAAY77K,GAExB,IAGE07K,EAAMI,WAAWN,EAAME,EAAMK,SAASj1Q,QACtC,MAAOgE,GACHs7F,QAKNpG,EAAI/zF,YAAYxB,SAAS01G,eAAeq7J,IAG1CvxQ,KAAKmxQ,OAGPE,EAAOv6E,MAAQ,WAEb92L,KAAKs7C,KAAKt8C,SAAQ,SAAU+2F,GAC1B,OAAOA,EAAIt1F,YAAcs1F,EAAIt1F,WAAWy2B,YAAY6+D,MAEtD/1F,KAAKs7C,KAAO,GACZt7C,KAAKmxQ,IAAM,GAONL,EAjGqB,GCrDnBjwQ,EAAK,OACLi+B,EAAM,QACN/1B,EAAS,WAETs0G,EAAU,OACVz1G,EAAU,OACV+B,EAAc,OAUdF,EAAY,aCZZqwP,EAAMvyP,KAAKgH,IAMXs7D,EAAOmV,OAAOkiF,aAMd13J,EAAStL,OAAO0rE,OAOpB,SAASroD,EAAM1gB,EAAOi+B,GAC5B,OAA0B,GAAnBizO,EAAOlxQ,EAAO,MAAiBi+B,GAAU,EAAKizO,EAAOlxQ,EAAO,KAAO,EAAKkxQ,EAAOlxQ,EAAO,KAAO,EAAKkxQ,EAAOlxQ,EAAO,KAAO,EAAKkxQ,EAAOlxQ,EAAO,GAAK,EAOhJ,SAASyV,EAAMzV,GACrB,OAAOA,EAAMwrB,OAQP,SAASlkB,EAAOtH,EAAOi+B,GAC7B,OAAQj+B,EAAQi+B,EAAQ7Z,KAAKpkB,IAAUA,EAAM,GAAKA,EASnD,SAAgBoH,EAASpH,EAAOi+B,EAAS/1B,GACxC,OAAOlI,EAAMnE,QAAQoiC,EAAS/1B,GAQxB,SAASmX,EAASrf,EAAOi+B,GAC/B,OAAOj+B,EAAM1C,QAAQ2gC,GAQf,SAASizO,EAAQlxQ,EAAOi+B,GAC9B,OAAiC,EAA1Bj+B,EAAMuoC,WAAWtK,GASzB,SAAgBze,EAAQxf,EAAOi+B,EAAO/1B,GACrC,OAAOlI,EAAMQ,MAAMy9B,EAAO/1B,GAOpB,SAASipQ,EAAQnxQ,GACvB,OAAOA,EAAMhE,OAOP,SAASo1Q,EAAQpxQ,GACvB,OAAOA,EAAMhE,OAQP,SAASwjG,EAAQx/F,EAAOi+B,GAC9B,OAAOA,EAAMl9B,KAAKf,GAAQA,EAQpB,SAASqxQ,EAASrxQ,EAAOi+B,GAC/B,OAAOj+B,EAAM4D,IAAIq6B,GAAUn6B,KAAK,IC/GvB,IAACwtQ,EAAO,EACP7xP,EAAS,EACTy1O,EAAS,EACTqc,EAAW,EACX1oQ,EAAY,EACZ2oQ,EAAa,GAWjB,SAASC,EAAMzxQ,EAAOi+B,EAAM/1B,EAAQs0G,EAAMz1G,EAAO+B,EAAUq7M,GACjE,MAAO,CAACxoN,MAAOqE,EAAO64J,KAAM56H,EAAMv+B,OAAQwI,EAAQoC,KAAMkyG,EAAM94G,MAAOqD,EAAOkpB,SAAUnnB,EAAU4oQ,KAAMJ,EAAM14M,OAAQn5C,EAAQzjB,OAAQmoN,EAAQwtD,OAAQ,IAQ9I,SAASC,EAAM5xQ,EAAMi+B,GAC3B,OAAOt1B,EAAO8oQ,EAAK,GAAI,KAAM,KAAM,GAAI,KAAM,KAAM,GAAIzxQ,EAAM,CAAChE,QAASgE,EAAKhE,QAASiiC,GAyBtF,SAAgB3e,IAMf,OALAzW,EAAY0oQ,EAAWrc,EAASgc,EAAOM,EAAYD,KAAc,EAE7D9xP,IAAwB,KAAd5W,IACb4W,EAAS,EAAG6xP,KAENzoQ,EAMR,SAAgBgpQ,IACf,OAAOX,EAAOM,EAAYD,GAM3B,SAAgBO,IACf,OAAOP,EAQD,SAASQ,EAAO/xQ,EAAOi+B,GAC7B,OAAOze,EAAOgyP,EAAYxxQ,EAAOi+B,GAO3B,SAAS+zO,EAAOhyQ,GACtB,OAAQA,GAEP,KAAK,EAAG,KAAK,EAAG,KAAK,GAAI,KAAK,GAAI,KAAK,GACtC,OAAO,EAER,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,IAE3D,KAAK,GAAI,KAAK,IAAK,KAAK,IACvB,OAAO,EAER,KAAK,GACJ,OAAO,EAER,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAC/B,OAAO,EAER,KAAK,GAAI,KAAK,GACb,OAAO,EAGT,OAAO,EAOD,SAASiyQ,EAAOjyQ,GACtB,OAAOsxQ,EAAO7xP,EAAS,EAAGy1O,EAASic,EAAOK,EAAaxxQ,GAAQuxQ,EAAW,EAAG,GAOvE,SAASW,GAASlyQ,GACxB,OAAOwxQ,EAAa,GAAIxxQ,EAOlB,SAASy7E,GAASz7E,GACxB,OAAOyV,EAAKs8P,EAAMR,EAAW,EAAGY,GAAmB,KAATnyQ,EAAcA,EAAO,EAAa,KAATA,EAAcA,EAAO,EAAIA,KAetF,SAASoyQ,GAAYpyQ,GAC3B,MAAO6I,EAAYgpQ,MACdhpQ,EAAY,IACfyW,IAIF,OAAO0yP,EAAMhyQ,GAAQ,GAAKgyQ,EAAMnpQ,GAAa,EAAI,GAAK,IAyBhD,SAASwpQ,GAAUryQ,EAAOi+B,GAChC,OAASA,GAAS3e,OAEbzW,EAAY,IAAMA,EAAY,KAAQA,EAAY,IAAMA,EAAY,IAAQA,EAAY,IAAMA,EAAY,MAG/G,OAAOkpQ,EAAM/xQ,EAAO8xQ,KAAW7zO,EAAQ,GAAe,IAAV4zO,KAA0B,IAAVvyP,MAOtD,SAAS6yP,GAAWnyQ,GAC1B,KAAOsf,KACN,OAAQzW,GAEP,KAAK7I,EACJ,OAAOuxQ,EAER,KAAK,GAAI,KAAK,GACA,KAATvxQ,GAAwB,KAATA,GAClBmyQ,GAAUtpQ,GACX,MAED,KAAK,GACS,KAAT7I,GACHmyQ,GAAUnyQ,GACX,MAED,KAAK,GACJsf,IAIH,OAAOiyP,EAQD,SAASe,GAAWtyQ,EAAMi+B,GAChC,KAAO3e,KAEFtf,EAAO6I,IAAc,KAGhB7I,EAAO6I,IAAc,IAAsB,KAAXgpQ,OAG1C,MAAO,KAAOE,EAAM9zO,EAAOszO,EAAW,GAAK,IAAMvoM,EAAc,KAAThpE,EAAcA,EAAOsf,KAOrE,SAASizP,GAAYvyQ,GAC3B,MAAQgyQ,EAAMH,MACbvyP,IAED,OAAOyyP,EAAM/xQ,EAAOuxQ,GC5Od,SAASiB,GAASxyQ,GACxB,OAAOkyQ,GAAQO,GAAM,GAAI,KAAM,KAAM,KAAM,CAAC,IAAKzyQ,EAAQiyQ,EAAMjyQ,GAAQ,EAAG,CAAC,GAAIA,IAehF,SAAgByyQ,GAAOzyQ,EAAOi+B,EAAM/1B,EAAQs0G,EAAMz1G,EAAO+B,EAAUq7M,EAAQuuD,EAAQ32Q,GAiBlF,IAhBA,IAAIgN,EAAQ,EACR+/D,EAAS,EACTjoE,EAASsjN,EACTloG,EAAS,EACTrrG,EAAW,EACXhI,EAAW,EACX9B,EAAW,EACX6rQ,EAAW,EACX3rQ,EAAY,EACZ4rQ,EAAY,EACZ3Z,EAAO,GACPtwP,EAAQ5B,EACR2Z,EAAW5X,EACX2M,EAAY+mG,EACZl1G,EAAa2xP,EAEV0Z,GACN,OAAQ/pQ,EAAWgqQ,EAAWA,EAAYtzP,KAEzC,KAAK,GACJ,GAAgB,KAAZ1W,GAAqD,IAAlCsoQ,EAAO5pQ,EAAYzG,EAAS,GAAU,EACkB,GAA1Ewe,EAAQ/X,GAAcF,EAAQq0E,GAAQm3L,GAAY,IAAK,OAAQ,SAClE5rQ,GAAa,GACd,MAGF,KAAK,GAAI,KAAK,GAAI,KAAK,GACtBM,GAAcm0E,GAAQm3L,GACtB,MAED,KAAK,EAAG,KAAK,GAAI,KAAK,GAAI,KAAK,GAC9BtrQ,GAAc8qQ,GAAWxpQ,GACzB,MAED,KAAK,GACJtB,GAAc+qQ,GAASP,IAAU,EAAG,GACpC,SAED,KAAK,GACJ,OAAQD,KACP,KAAK,GAAI,KAAK,GACbryK,EAAOqzK,GAAQP,GAAUhzP,IAAQwyP,KAAU7zO,EAAM/1B,GAASnM,GAC1D,MACD,QACCuL,GAAc,IAEhB,MAED,KAAK,IAAMR,EACV4rQ,EAAO3pQ,KAAWooQ,EAAO7pQ,GAAcN,EAExC,KAAK,IAAMF,EAAU,KAAK,GAAI,KAAK,EAClC,OAAQ8rQ,GAEP,KAAK,EAAG,KAAK,IAAKD,EAAW,EAE7B,KAAK,GAAK7pM,GAA0B,GAAd9hE,IAAiBM,EAAaF,EAAQE,EAAY,MAAO,KAC1EsJ,EAAW,GAAMugQ,EAAO7pQ,GAAczG,GACzC2+F,EAAO5uF,EAAW,GAAKkiQ,GAAYxrQ,EAAa,IAAKk1G,EAAMt0G,EAAQrH,EAAS,GAAKiyQ,GAAY1rQ,EAAQE,EAAY,IAAK,IAAM,IAAKk1G,EAAMt0G,EAAQrH,EAAS,GAAI9E,GAC7J,MAED,KAAK,GAAIuL,GAAc,IAEvB,QAGC,GAFAk4F,EAAO/pF,EAAYs9P,GAAQzrQ,EAAY22B,EAAM/1B,EAAQa,EAAO+/D,EAAQ/hE,EAAO2rQ,EAAQzZ,EAAMtwP,EAAQ,GAAI+X,EAAW,GAAI7f,GAASiI,GAE3G,MAAd8pQ,EACH,GAAe,IAAX9pM,EACH2pM,GAAMnrQ,EAAY22B,EAAMxoB,EAAWA,EAAW9M,EAAOG,EAAUjI,EAAQ6xQ,EAAQhyP,QAE/E,OAAmB,KAAXu7F,GAA2C,MAA1Bi1J,EAAO5pQ,EAAY,GAAa,IAAM20G,GAE9D,KAAK,IAAK,KAAK,IAAK,KAAK,IAAK,KAAK,IAClCw2J,GAAMzyQ,EAAOyV,EAAWA,EAAW+mG,GAAQhd,EAAOuzK,GAAQ/yQ,EAAOyV,EAAWA,EAAW,EAAG,EAAG1O,EAAO2rQ,EAAQzZ,EAAMlyP,EAAO4B,EAAQ,GAAI9H,GAAS6f,GAAW3Z,EAAO2Z,EAAU7f,EAAQ6xQ,EAAQl2J,EAAO7zG,EAAQ+X,GACzM,MACD,QACC+xP,GAAMnrQ,EAAYmO,EAAWA,EAAWA,EAAW,CAAC,IAAKiL,EAAU,EAAGgyP,EAAQhyP,IAIpF3X,EAAQ+/D,EAASl4D,EAAW,EAAG9J,EAAWE,EAAY,EAAGiyP,EAAO3xP,EAAa,GAAIzG,EAASsjN,EAC1F,MAED,KAAK,GACJtjN,EAAS,EAAIswQ,EAAO7pQ,GAAasJ,EAAWhI,EAC7C,QACC,GAAI9B,EAAW,EACd,GAAiB,KAAb8rQ,IACD9rQ,OACE,GAAiB,KAAb8rQ,GAAkC,GAAd9rQ,KAA6B,MDxE9D+B,EAAY0oQ,EAAW,EAAIL,EAAOM,IAAcD,GAAY,EAExD9xP,IAAwB,KAAd5W,IACb4W,EAAS,EAAG6xP,KAENzoQ,GCoEF,SAEF,OAAQvB,GAAc0hE,EAAK4pM,GAAYA,EAAY9rQ,GAElD,KAAK,GACJE,EAAY8hE,EAAS,EAAI,GAAKxhE,GAAc,MAAO,GACnD,MAED,KAAK,GACJorQ,EAAO3pQ,MAAYooQ,EAAO7pQ,GAAc,GAAKN,EAAWA,EAAY,EACpE,MAED,KAAK,GAEW,KAAX6qQ,MACHvqQ,GAAcm0E,GAAQn8D,MAEvB28F,EAAS41J,IAAQ/oM,EAASjoE,EAASswQ,EAAOlY,EAAO3xP,GAAcirQ,GAAWT,MAAWc,IACrF,MAED,KAAK,GACa,KAAbhqQ,GAAyC,GAAtBuoQ,EAAO7pQ,KAC7BR,EAAW,IAIjB,OAAOgC,EAiBR,SAAgBiqQ,GAAS/yQ,EAAOi+B,EAAM/1B,EAAQs0G,EAAO1zG,EAAQq7M,EAAOuuD,EAAQ32Q,EAAMgN,EAAO+/D,EAAUjoE,GAKlG,IAJA,IAAIo7G,EAAOnzG,EAAS,EAChB8H,EAAkB,IAAX9H,EAAeq7M,EAAQ,CAAC,IAC/Bv7M,EAAOwoQ,EAAOxgQ,GAET9J,EAAI,EAAG6rQ,EAAI,EAAG3rQ,EAAI,EAAGF,EAAI01G,IAAS11G,EAC1C,IAAK,IAAI8rQ,EAAI,EAAG5pM,EAAIxpD,EAAOxf,EAAOi8G,EAAO,EAAGA,EAAOg9I,EAAI0Z,EAAID,EAAO5rQ,KAAM6B,EAAI3I,EAAO4yQ,EAAIhqQ,IAAQgqQ,GAC1FjqQ,EAAI8M,EAAKk9P,EAAI,EAAI/hQ,EAAKgiQ,GAAK,IAAM5pM,EAAI5hE,EAAQ4hE,EAAG,OAAQp4D,EAAKgiQ,QAChE7pQ,EAAM/B,KAAO2B,GAEhB,OAAO8oQ,EAAKzxQ,EAAOi+B,EAAM/1B,EAAmB,IAAXY,EAAe/B,EAAUhL,EAAMgN,EAAO+/D,EAAUjoE,GASlF,SAAgBgyQ,GAAS7yQ,EAAOi+B,EAAM/1B,GACrC,OAAOupQ,EAAKzxQ,EAAOi+B,EAAM/1B,EAAQs0G,EAASxzC,ED/InCngE,GC+IiD2W,EAAOxf,EAAO,GAAI,GAAI,GAU/E,SAAgB8yQ,GAAa9yQ,EAAOi+B,EAAM/1B,EAAQs0G,GACjD,OAAOi1J,EAAKzxQ,EAAOi+B,EAAM/1B,EAAQY,EAAa0W,EAAOxf,EAAO,EAAGw8G,GAASh9F,EAAOxf,EAAOw8G,EAAS,GAAI,GAAIA,GCrLjG,SAASw2J,GAAWhzQ,EAAUi+B,GAIpC,IAHA,IAAI/1B,EAAS,GACTs0G,EAAS40J,EAAOpxQ,GAEX+G,EAAI,EAAGA,EAAIy1G,EAAQz1G,IAC3BmB,GAAU+1B,EAASj+B,EAAS+G,GAAIA,EAAG/G,EAAUi+B,IAAa,GAE3D,OAAO/1B,EAUR,SAAgB+qQ,GAAWjzQ,EAASi+B,EAAO/1B,EAAUi8M,GACpD,OAAQnkN,EAAQsK,MACf,IJPiB,SIOL,GAAItK,EAAQiwB,SAASj0B,OAAQ,MACzC,IJlBkB,UIkBL,KAAK8M,EAAa,OAAO9I,EAAQ2xQ,OAAS3xQ,EAAQ2xQ,QAAU3xQ,EAAQrE,MACjF,KAAK6gH,EAAS,MAAO,GACrB,KAAK5zG,EAAW,OAAO5I,EAAQ2xQ,OAAS3xQ,EAAQrE,MAAQ,IAAMq3Q,GAAUhzQ,EAAQiwB,SAAUk0L,GAAY,IACtG,KAAKp9M,EAAS/G,EAAQrE,MAAQqE,EAAQ0D,MAAMI,KAAK,KAGlD,OAAOqtQ,EAAOjpQ,EAAW8qQ,GAAUhzQ,EAAQiwB,SAAUk0L,IAAankN,EAAQ2xQ,OAAS3xQ,EAAQrE,MAAQ,IAAMuM,EAAW,IAAM,GClC3H,SAASsqL,GAAQxqG,GACf,IAAIkT,EAAQ79F,OAAOwgC,OAAO,MAC1B,OAAO,SAAUwG,GAEf,YADmBlpC,IAAf+/F,EAAM72D,KAAoB62D,EAAM72D,GAAO2jD,EAAG3jD,IACvC62D,EAAM72D,ICCjB,IAAI6uO,GAA8B,SAAqC/yO,EAAO26C,EAAQnhE,GAIpF,IAHA,IAAIgpI,EAAW,EACXwwH,EAAY,EAGdxwH,EAAWwwH,EACXA,EAAYC,IAEK,KAAbzwH,GAAiC,KAAdwwH,IACrBr4L,EAAOnhE,GAAS,IAGd05P,EAAMF,IAIVtnJ,IAGF,OAAOrrH,EAAM2/B,EAAO+M,IA8ClBomO,GAAW,SAAkB33Q,EAAOm/E,GACtC,OAAOy4L,GA5CK,SAAiBpqH,EAAQruE,GAErC,IAAInhE,GAAS,EACTw5P,EAAY,GAEhB,GACE,OAAQE,EAAMF,IACZ,KAAK,EAEe,KAAdA,GAA+B,KAAXC,MAKtBt4L,EAAOnhE,GAAS,GAGlBwvI,EAAOxvI,IAAUu5P,GAA4BhmO,EAAW,EAAG4tC,EAAQnhE,GACnE,MAEF,KAAK,EACHwvI,EAAOxvI,IAAU65P,GAAQL,GACzB,MAEF,KAAK,EAEH,GAAkB,KAAdA,EAAkB,CAEpBhqH,IAASxvI,GAAoB,KAAXy5P,IAAgB,MAAQ,GAC1Ct4L,EAAOnhE,GAASwvI,EAAOxvI,GAAO3d,OAC9B,MAKJ,QACEmtJ,EAAOxvI,IAAUyuE,EAAK+qL,UAEnBA,EAAYtnJ,KAErB,OAAOs9B,EAIQsqH,CAAQC,EAAM/3Q,GAAQm/E,KAInC64L,GAA+B,IAAIx5F,QACnCy5F,GAAS,SAAgBzzQ,GAC3B,GAAqB,SAAjBA,EAAQmK,MAAoBnK,EAAQT,UAExCS,EAAQnE,OAAS,GAFjB,CAUA,IAJA,IAAIL,EAAQwE,EAAQxE,MAChB+D,EAASS,EAAQT,OACjBm0Q,EAAiB1zQ,EAAQy4D,SAAWl5D,EAAOk5D,QAAUz4D,EAAQuxQ,OAAShyQ,EAAOgyQ,KAE1D,SAAhBhyQ,EAAO4K,MAEZ,KADA5K,EAASA,EAAOA,QACH,OAIf,IAA6B,IAAzBS,EAAQuD,MAAM1H,QAAwC,KAAxBL,EAAM4sC,WAAW,IAE/CorO,GAAc7sP,IAAIpnB,MAMlBm0Q,EAAJ,CAIAF,GAAc3sP,IAAI7mB,GAAS,GAK3B,IAJA,IAAI26E,EAAS,GACTzP,EAAQioM,GAAS33Q,EAAOm/E,GACxBg5L,EAAcp0Q,EAAOgE,MAEhB3H,EAAI,EAAGitE,EAAI,EAAGjtE,EAAIsvE,EAAMrvE,OAAQD,IACvC,IAAK,IAAIuL,EAAI,EAAGA,EAAIwsQ,EAAY93Q,OAAQsL,IAAK0hE,IAC3C7oE,EAAQuD,MAAMslE,GAAK8R,EAAO/+E,GAAKsvE,EAAMtvE,GAAGF,QAAQ,OAAQi4Q,EAAYxsQ,IAAMwsQ,EAAYxsQ,GAAK,IAAM+jE,EAAMtvE,MAIzGg4Q,GAAc,SAAqB5zQ,GACrC,GAAqB,SAAjBA,EAAQmK,KAAiB,CAC3B,IAAI3O,EAAQwE,EAAQxE,MAGI,MAAxBA,EAAM4sC,WAAW,IACO,KAAxB5sC,EAAM4sC,WAAW,KAEfpoC,EAAgB,OAAI,GACpBA,EAAQxE,MAAQ,MAmHtB,SAASoX,GAAOpX,EAAOK,GACrB,OAAQssC,EAAK3sC,EAAOK,IAElB,KAAK,KACH,OAAOopB,EAAS,SAAWzpB,EAAQA,EAGrC,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAEL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAEL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAEL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACH,OAAOypB,EAASzpB,EAAQA,EAG1B,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACH,OAAOypB,EAASzpB,EAAQq4Q,EAAMr4Q,EAAQs4Q,EAAKt4Q,EAAQA,EAGrD,KAAK,KACL,KAAK,KACH,OAAOypB,EAASzpB,EAAQs4Q,EAAKt4Q,EAAQA,EAGvC,KAAK,KACH,OAAOypB,EAASzpB,EAAQs4Q,EAAK,QAAUt4Q,EAAQA,EAGjD,KAAK,KACH,OAAOypB,EAASzpB,EAAQE,EAAQF,EAAO,iBAAkBypB,EAAS,WAATA,iBAA0CzpB,EAGrG,KAAK,KACH,OAAOypB,EAASzpB,EAAQs4Q,EAAK,aAAep4Q,EAAQF,EAAO,cAAe,IAAMA,EAGlF,KAAK,KACH,OAAOypB,EAASzpB,EAAQs4Q,EAAK,iBAAmBp4Q,EAAQF,EAAO,4BAA6B,IAAMA,EAGpG,KAAK,KACH,OAAOypB,EAASzpB,EAAQs4Q,EAAKp4Q,EAAQF,EAAO,SAAU,YAAcA,EAGtE,KAAK,KACH,OAAOypB,EAASzpB,EAAQs4Q,EAAKp4Q,EAAQF,EAAO,QAAS,kBAAoBA,EAG3E,KAAK,KACH,OAAOypB,EAAS,OAASvpB,EAAQF,EAAO,QAAS,IAAMypB,EAASzpB,EAAQs4Q,EAAKp4Q,EAAQF,EAAO,OAAQ,YAAcA,EAGpH,KAAK,KACH,OAAOypB,EAASvpB,EAAQF,EAAO,qBAAsB,KAAOypB,EAAS,MAAQzpB,EAG/E,KAAK,KACH,OAAOE,EAAQA,EAAQA,EAAQF,EAAO,eAAgBypB,EAAS,MAAO,cAAeA,EAAS,MAAOzpB,EAAO,IAAMA,EAGpH,KAAK,KACL,KAAK,KACH,OAAOE,EAAQF,EAAO,oBAAqBypB,YAG7C,KAAK,KACH,OAAOvpB,EAAQA,EAAQF,EAAO,oBAAqBypB,EAAS,cAATA,oBAA+C,aAAc,WAAaA,EAASzpB,EAAQA,EAGhJ,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACH,OAAOE,EAAQF,EAAO,kBAAmBypB,EAAS,QAAUzpB,EAG9D,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAEH,GAAIu4Q,EAAOv4Q,GAAS,EAAIK,EAAS,EAAG,OAAQm4Q,EAAOx4Q,EAAOK,EAAS,IAEjE,KAAK,IAEH,GAAkC,KAA9Bm4Q,EAAOx4Q,EAAOK,EAAS,GAAW,MAGxC,KAAK,IACH,OAAOH,EAAQF,EAAO,mBAAoB,0BAAqE,KAA7Bw4Q,EAAOx4Q,EAAOK,EAAS,GAAY,KAAO,UAAYL,EAG1I,KAAK,IACH,OAAQy4Q,EAAQz4Q,EAAO,WAAaoX,GAAOlX,EAAQF,EAAO,UAAW,kBAAmBK,GAAUL,EAAQA,EAE9G,MAGF,KAAK,KAEH,GAAkC,MAA9Bw4Q,EAAOx4Q,EAAOK,EAAS,GAAY,MAGzC,KAAK,KACH,OAAQm4Q,EAAOx4Q,EAAOu4Q,EAAOv4Q,GAAS,IAAMy4Q,EAAQz4Q,EAAO,eAAiB,MAE1E,KAAK,IACH,OAAOE,EAAQF,EAAO,IAAK,IAAMypB,GAAUzpB,EAG7C,KAAK,IACH,OAAOE,EAAQF,EAAO,wBAAyB,KAAOypB,GAAgC,KAAtB+uP,EAAOx4Q,EAAO,IAAa,UAAY,IAAxD,UAA+EypB,EAA/E,wBAA0HzpB,EAG7K,MAGF,KAAK,KACH,OAAQw4Q,EAAOx4Q,EAAOK,EAAS,KAE7B,KAAK,IACH,OAAOopB,EAASzpB,EAAQs4Q,EAAKp4Q,EAAQF,EAAO,qBAAsB,MAAQA,EAG5E,KAAK,IACH,OAAOypB,EAASzpB,EAAQs4Q,EAAKp4Q,EAAQF,EAAO,qBAAsB,SAAWA,EAG/E,KAAK,GACH,OAAOypB,EAASzpB,EAAQs4Q,EAAKp4Q,EAAQF,EAAO,qBAAsB,MAAQA,EAG9E,OAAOypB,EAASzpB,EAAQs4Q,EAAKt4Q,EAAQA,EAGzC,OAAOA,EAGT,IAqCI04Q,GAAuB,CArCZ,SAAkBl0Q,EAASwZ,EAAOsW,EAAUsuF,GACzD,GAAIp+G,EAAQnE,QAAU,IAAQmE,EAAgB,OAAG,OAAQA,EAAQmK,MAC/D,KAAKgqQ,EACHn0Q,EAAgB,OAAI4S,GAAO5S,EAAQxE,MAAOwE,EAAQnE,QAClD,MAEF,KAAKu4Q,EACH,OAAOC,GAAU,CAACl2Q,EAAK6B,EAAS,CAC9BxE,MAAOE,EAAQsE,EAAQxE,MAAO,IAAK,IAAMypB,MACtCm5F,GAEP,KAAKk2J,EACH,GAAIt0Q,EAAQnE,OAAQ,OAAO+jG,EAAQ5/F,EAAQuD,OAAO,SAAU/H,GAC1D,OAAQoG,EAAMpG,EAAO,0BAEnB,IAAK,aACL,IAAK,cACH,OAAO64Q,GAAU,CAACl2Q,EAAK6B,EAAS,CAC9BuD,MAAO,CAAC7H,EAAQF,EAAO,cAAe,gBACnC4iH,GAGP,IAAK,gBACH,OAAOi2J,GAAU,CAACl2Q,EAAK6B,EAAS,CAC9BuD,MAAO,CAAC7H,EAAQF,EAAO,aAAc,IAAMypB,EAAS,eAClD9mB,EAAK6B,EAAS,CAChBuD,MAAO,CAAC7H,EAAQF,EAAO,aAAc,eACnC2C,EAAK6B,EAAS,CAChBuD,MAAO,CAAC7H,EAAQF,EAAO,aAAcs4Q,oBAClC11J,GAGT,MAAO,SAOXm2J,GAAc,SAAqBjpQ,GACrC,IAAItP,EAAMsP,EAAQtP,IAMlB,GAAY,QAARA,EAAe,CACjB,IAAIw4Q,EAAYh1Q,SAASgB,iBAAiB,qCAK1CpD,MAAMlC,UAAU8C,QAAQsC,KAAKk0Q,GAAW,SAAU/hP,IASL,IAFhBA,EAAKtE,aAAa,gBAEpBhxB,QAAQ,OAGjCqC,SAASy2B,KAAKj1B,YAAYyxB,GAC1BA,EAAKmC,aAAa,SAAU,QAIhC,IAAI6/O,EAAgBnpQ,EAAQmpQ,eAAiBP,GAS7C,IACIpgL,EAkBA4gL,EAnBAC,EAAW,GAEXC,EAAiB,GAGnB9gL,EAAYxoF,EAAQwoF,WAAat0F,SAASy2B,KAC1C74B,MAAMlC,UAAU8C,QAAQsC,KAExBd,SAASgB,iBAAiB,wBAA2BxE,EAAM,QAAS,SAAUy2B,GAG5E,IAFA,IAAIoiP,EAASpiP,EAAKtE,aAAa,gBAAgBxyB,MAAM,KAE5CC,EAAI,EAAGA,EAAIi5Q,EAAOh5Q,OAAQD,IACjC+4Q,EAASE,EAAOj5Q,KAAM,EAGxBg5Q,EAAeh0Q,KAAK6xB,MAkBtB,IAAIqiP,ECjfmBj1Q,EDkfnBk1Q,EAAoB,CAACtsO,IClfF5oC,ED4fT,SAAU0wQ,GACtBuE,EAAap4K,OAAO6zK,IC5flB,SAAUzyO,GACXA,EAAQ46H,OACR56H,EAAUA,EAAQ0zO,SACrB3xQ,EAASi+B,MD2fLk3O,EChhBD,SAAqBn1Q,GAC3B,IAAIi+B,EAASmzO,EAAOpxQ,GAEpB,OAAO,SAAUkI,EAASs0G,EAAOz1G,EAAU+B,GAG1C,IAFA,IAAIq7M,EAAS,GAEJuuD,EAAI,EAAGA,EAAIz0O,EAAQy0O,IAC3BvuD,GAAUnkN,EAAW0yQ,GAAGxqQ,EAASs0G,EAAOz1G,EAAU+B,IAAa,GAEhE,OAAOq7M,GDugBYixD,CA1BM,CAACxB,GAAQG,IA0Be9iP,OAAO2jP,EAAeM,IAMrEL,EAAU,SAAgB1kP,EAAUklP,EAAYzE,EAAO0E,GACrDL,EAAerE,EAJR4D,GAAUhqP,GAcV2F,EAAWA,EAAW,IAAMklP,EAAWniP,OAAS,IAAMmiP,EAAWniP,QAdtCiiP,GAgB9BG,IACFp6K,EAAM45K,SAASO,EAAW97P,OAAQ,IAKxC,IAAI2hF,EAAQ,CACV/+F,IAAKA,EACLy0Q,MAAO,IAAIX,EAAW,CACpB9zQ,IAAKA,EACL83F,UAAWA,EACXs8K,MAAO9kQ,EAAQ8kQ,MACfF,OAAQ5kQ,EAAQ4kQ,OAChB98O,QAAS9nB,EAAQ8nB,QACjB48O,eAAgB1kQ,EAAQ0kQ,iBAE1BI,MAAO9kQ,EAAQ8kQ,MACfuE,SAAUA,EACVS,WAAY,GACZ14K,OAAQg4K,GAGV,OADA35K,EAAM01K,MAAMH,QAAQsE,GACb75K,G,MElkBT,SAASs6K,GAAoBD,EAAYE,EAAkBnoM,GACzD,IAAIooM,EAAe,GAQnB,OAPApoM,EAAWxxE,MAAM,KAAKqC,SAAQ,SAAUqvB,QACRryB,IAA1Bo6Q,EAAW/nP,GACbioP,EAAiB10Q,KAAKw0Q,EAAW/nP,GAAa,KAE9CkoP,GAAgBloP,EAAY,OAGzBkoP,EAET,IAAIC,GAAiB,SAAwBz6K,EAAOm6K,EAAYO,GAC9D,IAAIpoP,EAAY0tE,EAAM/+F,IAAM,IAAMk5Q,EAAW97P,MAO5B,IAAhBq8P,QAIwDz6Q,IAAhC+/F,EAAMq6K,WAAW/nP,KACxC0tE,EAAMq6K,WAAW/nP,GAAa6nP,EAAWniP,SAGzC2iP,GAAe,SAAsB36K,EAAOm6K,EAAYO,GAC1DD,GAAez6K,EAAOm6K,EAAYO,GAClC,IAAIpoP,EAAY0tE,EAAM/+F,IAAM,IAAMk5Q,EAAW97P,KAE7C,QAAwCpe,IAApC+/F,EAAM45K,SAASO,EAAW97P,MAAqB,CACjD,IAAIyvE,EAAUqsL,EAEd,GACEn6K,EAAM2B,OAAOw4K,IAAersL,EAAU,IAAMx7D,EAAY,GAAIw7D,EAASkS,EAAM01K,OAAO,GAElF5nL,EAAUA,EAAQ6iC,gBACC1wH,IAAZ6tF,KCvCb,IAAI8sL,GAAe,CACjBC,wBAAyB,EACzBC,YAAa,EACbC,kBAAmB,EACnBC,iBAAkB,EAClBC,iBAAkB,EAClBC,QAAS,EACTC,aAAc,EACdC,gBAAiB,EACjBxxD,YAAa,EACb5rJ,QAAS,EACTq9M,KAAM,EACNC,SAAU,EACVC,aAAc,EACdC,WAAY,EACZC,aAAc,EACdC,UAAW,EACXC,QAAS,EACTC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdloH,WAAY,EACZmoH,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,iBAAkB,EAClBC,WAAY,EACZ9zI,WAAY,EACZ5gG,QAAS,EACT8wC,MAAO,EACP6jM,QAAS,EACTC,QAAS,EACTC,OAAQ,EACR99I,OAAQ,EACR+9I,KAAM,EACNC,gBAAiB,EAEjBC,YAAa,EACbC,aAAc,EACdC,YAAa,EACbC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBC,cAAe,EACfC,YAAa,GCzCXC,GAAiB,aACjBC,GAAiB,8BAEjBC,GAAmB,SAA0B9/P,GAC/C,OAAkC,KAA3BA,EAAS6vB,WAAW,IAGzBkwO,GAAqB,SAA4B98Q,GACnD,OAAgB,MAATA,GAAkC,mBAAVA,GAG7B+8Q,GAAkClmF,IAAQ,SAAUmmF,GACtD,OAAOH,GAAiBG,GAAaA,EAAYA,EAAU98Q,QAAQy8Q,GAAgB,OAAO1hQ,iBAGxFgiQ,GAAoB,SAA2Bz8Q,EAAKR,GACtD,OAAQQ,GACN,IAAK,YACL,IAAK,gBAED,GAAqB,kBAAVR,EACT,OAAOA,EAAME,QAAQ08Q,IAAgB,SAAUx2Q,EAAO82Q,EAAIC,GAMxD,OALAC,GAAS,CACPx/P,KAAMs/P,EACN3lP,OAAQ4lP,EACRjtJ,KAAMktJ,IAEDF,KAMjB,OAAsB,IAAlBG,GAAS78Q,IAAeq8Q,GAAiBr8Q,IAAyB,kBAAVR,GAAgC,IAAVA,EAI3EA,EAHEA,EAAQ,MAoCnB,SAASs9Q,GAAoBC,EAAa3D,EAAY4D,GACpD,GAAqB,MAAjBA,EACF,MAAO,GAGT,QAAuCh+Q,IAAnCg+Q,EAAcC,iBAKhB,OAAOD,EAGT,cAAeA,GACb,IAAK,UAED,MAAO,GAGX,IAAK,SAED,GAA2B,IAAvBA,EAAcE,KAMhB,OALAN,GAAS,CACPx/P,KAAM4/P,EAAc5/P,KACpB2Z,OAAQimP,EAAcjmP,OACtB24F,KAAMktJ,IAEDI,EAAc5/P,KAGvB,QAA6Bpe,IAAzBg+Q,EAAcjmP,OAAsB,CACtC,IAAI24F,EAAOstJ,EAActtJ,KAEzB,QAAa1wH,IAAT0wH,EAGF,UAAgB1wH,IAAT0wH,GACLktJ,GAAS,CACPx/P,KAAMsyG,EAAKtyG,KACX2Z,OAAQ24F,EAAK34F,OACb24F,KAAMktJ,IAERltJ,EAAOA,EAAKA,KAUhB,OANastJ,EAAcjmP,OAAS,IAStC,OA2CR,SAAgCgmP,EAAa3D,EAAY75Q,GACvD,IAAIk6K,EAAS,GAEb,GAAIr4K,MAAMC,QAAQ9B,GAChB,IAAK,IAAIK,EAAI,EAAGA,EAAIL,EAAIM,OAAQD,IAC9B65K,GAAUqjG,GAAoBC,EAAa3D,EAAY75Q,EAAIK,IAAM,SAGnE,IAAK,IAAIg3F,KAAQr3F,EAAK,CACpB,IAAIC,EAAQD,EAAIq3F,GAEhB,GAAqB,kBAAVp3F,EACS,MAAd45Q,QAA4Cp6Q,IAAtBo6Q,EAAW55Q,GACnCi6K,GAAU7iF,EAAO,IAAMwiL,EAAW55Q,GAAS,IAClC88Q,GAAmB98Q,KAC5Bi6K,GAAU8iG,GAAiB3lL,GAAQ,IAAM6lL,GAAkB7lL,EAAMp3F,GAAS,UAO5E,IAAI4B,MAAMC,QAAQ7B,IAA8B,kBAAbA,EAAM,IAAkC,MAAd45Q,QAA+Cp6Q,IAAzBo6Q,EAAW55Q,EAAM,IAM7F,CACL,IAAI29Q,EAAeL,GAAoBC,EAAa3D,EAAY55Q,GAEhE,OAAQo3F,GACN,IAAK,YACL,IAAK,gBAED6iF,GAAU8iG,GAAiB3lL,GAAQ,IAAMumL,EAAe,IACxD,MAGJ,QAMI1jG,GAAU7iF,EAAO,IAAMumL,EAAe,UAtB5C,IAAK,IAAIn8Q,EAAK,EAAGA,EAAKxB,EAAMK,OAAQmB,IAC9Bs7Q,GAAmB98Q,EAAMwB,MAC3By4K,GAAU8iG,GAAiB3lL,GAAQ,IAAM6lL,GAAkB7lL,EAAMp3F,EAAMwB,IAAO,KA4B1F,OAAOy4K,EAhGM2jG,CAAuBL,EAAa3D,EAAY4D,GAG3D,IAAK,WAED,QAAoBh+Q,IAAhB+9Q,EAA2B,CAC7B,IAAIM,EAAiBT,GACjBj7Q,EAASq7Q,EAAcD,GAE3B,OADAH,GAASS,EACFP,GAAoBC,EAAa3D,EAAYz3Q,GAKtD,MAGJ,IAAK,UAkBP,GAAkB,MAAdy3Q,EACF,OAAO4D,EAGT,IAAIM,EAASlE,EAAW4D,GACxB,YAAkBh+Q,IAAXs+Q,EAAuBA,EAASN,EA2DzC,IASIJ,GATAW,GAAe,iCAUnB,IAAIC,GAAkB,SAAyBv6Q,EAAMm2Q,EAAY2D,GAC/D,GAAoB,IAAhB95Q,EAAKpD,QAAmC,kBAAZoD,EAAK,IAA+B,OAAZA,EAAK,SAAkCjE,IAAnBiE,EAAK,GAAG8zB,OAClF,OAAO9zB,EAAK,GAGd,IAAIw6Q,GAAa,EACb1mP,EAAS,GACb6lP,QAAS59Q,EACT,IAAI0+Q,EAAUz6Q,EAAK,GAEJ,MAAXy6Q,QAAmC1+Q,IAAhB0+Q,EAAQ/+J,KAC7B8+J,GAAa,EACb1mP,GAAU+lP,GAAoBC,EAAa3D,EAAYsE,IAMvD3mP,GAAU2mP,EAAQ,GAIpB,IAAK,IAAI99Q,EAAI,EAAGA,EAAIqD,EAAKpD,OAAQD,IAC/Bm3B,GAAU+lP,GAAoBC,EAAa3D,EAAYn2Q,EAAKrD,IAExD69Q,IAKF1mP,GAAU2mP,EAAQ99Q,IActB29Q,GAAat3H,UAAY,EAIzB,IAHA,IACIrgJ,EADA+3Q,EAAiB,GAG0B,QAAvC/3Q,EAAQ23Q,GAAat1P,KAAK8O,KAChC4mP,GAAkB,IAClB/3Q,EAAM,GAkBR,MAAO,CACLwX,KClTJ,SAAiB1V,GAYf,IANA,IAEImlE,EAFApgE,EAAI,EAGJ7M,EAAI,EACJ+E,EAAM+C,EAAI7H,OAEP8E,GAAO,IAAK/E,EAAG+E,GAAO,EAE3BkoE,EAEe,YAAV,OAHLA,EAAwB,IAApBnlE,EAAI0kC,WAAWxsC,IAAmC,IAAtB8H,EAAI0kC,aAAaxsC,KAAc,GAA2B,IAAtB8H,EAAI0kC,aAAaxsC,KAAc,IAA4B,IAAtB8H,EAAI0kC,aAAaxsC,KAAc,MAG9F,OAAZitE,IAAM,KAAgB,IAIpDpgE,EAEe,YAAV,OALLogE,GAEAA,IAAM,MAGoC,OAAZA,IAAM,KAAgB,IAErC,YAAV,MAAJpgE,IAAyC,OAAZA,IAAM,KAAgB,IAItD,OAAQ9H,GACN,KAAK,EACH8H,IAA8B,IAAxB/E,EAAI0kC,WAAWxsC,EAAI,KAAc,GAEzC,KAAK,EACH6M,IAA8B,IAAxB/E,EAAI0kC,WAAWxsC,EAAI,KAAc,EAEzC,KAAK,EAEH6M,EAEe,YAAV,OAHLA,GAAyB,IAApB/E,EAAI0kC,WAAWxsC,MAGsB,OAAZ6M,IAAM,KAAgB,IASxD,SAHAA,EAEe,YAAV,OAHLA,GAAKA,IAAM,MAG+B,OAAZA,IAAM,KAAgB,KACvCA,IAAM,MAAQ,GAAG0D,SAAS,IDkP5BytQ,CAAW7mP,GAAU4mP,EAiB9B5mP,OAAQA,EACR24F,KAAMktJ,KEjTNiB,KAAqBpqL,EAA+B,oBAAIA,EAA+B,mBACvFqqL,GAA2CD,IAL5B,SAAsBn8O,GACvC,OAAOA,KCQLl/B,IDHuCq7Q,IAAsBpqL,kBCG5C,GAAGjxF,gBAEpBu7Q,GAAqCtqL,gBAMlB,qBAAhBs+G,YAA6CwmE,GAAY,CAC9Dv4Q,IAAK,QACF,MAMe+9Q,GAAoBv1K,SAAxC,IAKIw1K,GAAmB,SAA0B1mG,GAE/C,OAAoBrjF,sBAAW,SAAU1sF,EAAOwtF,GAE9C,IAAIgK,EAAQ6L,qBAAWmzK,IACvB,OAAOzmG,EAAK/vK,EAAOw3F,EAAOhK,OA4B9B,IAAIkpL,GAA8BxqL,gBAAoB,IA6DtD,IA2CIyqL,GAAe,qCAEfC,GAAqB,SAA4BhwQ,EAAM5G,GAMzD,IAAI4qH,EAAW,GAEf,IAAK,IAAInyH,KAAOuH,EACV/E,GAAe8B,KAAKiD,EAAOvH,KAC7BmyH,EAASnyH,GAAOuH,EAAMvH,IAY1B,OARAmyH,EAAS+rJ,IAAgB/vQ,EAQlBgkH,GAGLisJ,GAAY,SAAmBjqL,GACjC,IAAI4K,EAAQ5K,EAAK4K,MACbm6K,EAAa/kL,EAAK+kL,WAClBO,EAActlL,EAAKslL,YAMvB,OALAD,GAAez6K,EAAOm6K,EAAYO,GAClCqE,IAAyC,WACvC,OAAOpE,GAAa36K,EAAOm6K,EAAYO,MAGlC,MAsDT,IAAI4E,GAnDyBL,IAAiB,SAAUz2Q,EAAOw3F,EAAOhK,GACpE,IAAIupL,EAAU/2Q,EAAMg3Q,IAIG,kBAAZD,QAAsDt/Q,IAA9B+/F,EAAMq6K,WAAWkF,KAClDA,EAAUv/K,EAAMq6K,WAAWkF,IAG7B,IAAI5zK,EAAmBnjG,EAAM22Q,IACzB5E,EAAmB,CAACgF,GACpBjtP,EAAY,GAEe,kBAApB9pB,EAAM8pB,UACfA,EAAYgoP,GAAoBt6K,EAAMq6K,WAAYE,EAAkB/xQ,EAAM8pB,WAC9C,MAAnB9pB,EAAM8pB,YACfA,EAAY9pB,EAAM8pB,UAAY,KAGhC,IAAI6nP,EAAasE,GAAgBlE,OAAkBt6Q,EAAWy0F,aAAiBwqL,KAU/E5sP,GAAa0tE,EAAM/+F,IAAM,IAAMk5Q,EAAW97P,KAC1C,IAAI+0G,EAAW,GAEf,IAAK,IAAInyH,KAAOuH,EACV/E,GAAe8B,KAAKiD,EAAOvH,IAAgB,QAARA,GAAiBA,IAAQk+Q,KAC9D/rJ,EAASnyH,GAAOuH,EAAMvH,IAM1B,OAFAmyH,EAASp9B,IAAMA,EACfo9B,EAAS9gG,UAAYA,EACDoiE,gBAAoBA,WAAgB,KAAmBA,gBAAoB2qL,GAAW,CACxGr/K,MAAOA,EACPm6K,WAAYA,EACZO,YAAyC,kBAArB/uK,IACLjX,gBAAoBiX,EAAkBynB,OC5GrDqsJ,I,OAAM,SAAarwQ,EAAM5G,GAC3B,IAAItE,EAAOrB,UAEX,GAAa,MAAT2F,IAAkB/E,GAAe8B,KAAKiD,EAAO,OAE/C,OAAOksF,gBAAoBr0F,WAAMJ,EAAWiE,GAG9C,IAAIysL,EAAazsL,EAAKpD,OAClB4+Q,EAAwB,IAAIr9Q,MAAMsuL,GACtC+uF,EAAsB,GAAKC,GAC3BD,EAAsB,GAAKN,GAAmBhwQ,EAAM5G,GAEpD,IAAK,IAAI3H,EAAI,EAAGA,EAAI8vL,EAAY9vL,IAC9B6+Q,EAAsB7+Q,GAAKqD,EAAKrD,GAIlC,OAAO6zF,gBAAoBr0F,MAAM,KAAMq/Q,KAiHzC,SAASF,KACP,IAAK,IAAI5nL,EAAO/0F,UAAU/B,OAAQoD,EAAO,IAAI7B,MAAMu1F,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E3zF,EAAK2zF,GAAQh1F,UAAUg1F,GAGzB,OAAO4mL,GAAgBv6Q,GCpRV,SAASosH,GAAez4F,EAAKh3B,GAC1C,OCLa,SAAyBg3B,GACtC,GAAIx1B,MAAMC,QAAQu1B,GAAM,OAAOA,EDIxB,CAAeA,IELT,SAA+BkL,EAAGp9B,GAC/C,IAAIsjN,EAAI,MAAQlmL,EAAI,KAAO,oBAAsBywD,QAAUzwD,EAAEywD,OAAOC,WAAa1wD,EAAE,cACnF,GAAI,MAAQkmL,EAAG,CACb,IAAInkN,EACFw8G,EACAzgH,EACA22Q,EACAxqQ,EAAI,GACJa,GAAI,EACJ+/D,GAAI,EACN,IACE,GAAI/sE,GAAKooN,EAAIA,EAAE1jN,KAAKw9B,IAAI4tF,KAAM,IAAMhrH,EAAG,CACrC,GAAIxD,OAAO8mN,KAAOA,EAAG,OACrBp7M,GAAI,OACC,OAASA,GAAK/I,EAAIjE,EAAE0E,KAAK0jN,IAAIpjL,QAAU74B,EAAEnH,KAAKf,EAAErE,OAAQuM,EAAElM,SAAW6E,GAAIkI,GAAI,IACpF,MAAOk1B,GACP6qC,GAAI,EAAI0zC,EAAIv+E,EACZ,QACA,IACE,IAAKl1B,GAAK,MAAQo7M,EAAU,SAAMuuD,EAAIvuD,EAAU,SAAK9mN,OAAOq1Q,KAAOA,GAAI,OACvE,QACA,GAAI5pM,EAAG,MAAM0zC,GAGjB,OAAOt0G,GFnBqB,CAAqB6qB,EAAKh3B,IAAM,EAA2Bg3B,EAAKh3B,IGLjF,WACb,MAAM,IAAImyF,UAAU,6IHIgF,G,aIJvF,SAASwpC,GAAyB36H,EAAQ+uH,GACvD,GAAc,MAAV/uH,EAAgB,MAAO,GAC3B,IACIZ,EAAKJ,EADLqgC,EAAS,OAAA0+O,GAAA,GAA6B/9Q,EAAQ+uH,GAElD,GAAIzuH,OAAOojG,sBAAuB,CAChC,IAAIk3B,EAAmBt6H,OAAOojG,sBAAsB1jG,GACpD,IAAKhB,EAAI,EAAGA,EAAI47H,EAAiB37H,OAAQD,IACvCI,EAAMw7H,EAAiB57H,GACnB+vH,EAASxuH,QAAQnB,IAAQ,GACxBkB,OAAOhC,UAAUu8H,qBAAqBn3H,KAAK1D,EAAQZ,KACxDigC,EAAOjgC,GAAOY,EAAOZ,IAGzB,OAAOigC,E,yDCwKT,SAAS2+O,GAAiB1rO,GACxB,OAAA2rO,0BAAA,GACK3rO,GAAI,IACPlN,IAAKkN,EAAK55B,EACVwsB,KAAMoN,EAAK3uB,EACXwhB,MAAOmN,EAAK3uB,EAAI2uB,EAAKR,MACrBzM,OAAQiN,EAAK55B,EAAI45B,EAAKP,SAmEdpoC,KAAK6L,IACL7L,KAAK8L,IC7PjB,SAASyoQ,GAAUroP,GACjB,IAAIsoP,EACJ,OAAsD,OAA7CA,EAAsBtoP,EAAK43E,oBAAyB,EAAS0wK,EAAoBr1M,cAAgB5kE,OAG5G,SAASk6Q,GAAmBh7Q,GAC1B,OAAO86Q,GAAU96Q,GAASsiC,iBAAiBtiC,GAG7C,SAASi7Q,GAAOz/Q,GACd,OAAOA,aAAiBs/Q,GAAUt/Q,GAAOsG,KAE3C,SAASo5Q,GAAYzoP,GACnB,OAAOwoP,GAAOxoP,IAASA,EAAKiiF,UAAY,IAAIj+F,cAAgB,GAG9D,SAAS0kQ,GAAc3/Q,GACrB,OAAOA,aAAiBs/Q,GAAUt/Q,GAAOuyM,YAE3C,SAAS9O,GAAUzjM,GACjB,OAAOA,aAAiBs/Q,GAAUt/Q,GAAOktM,QAE3C,SAAS0yE,GAAa3oP,GAEpB,MAA0B,qBAAf4oP,aAIJ5oP,aADYqoP,GAAUroP,GAAM4oP,YACE5oP,aAAgB4oP,YAEvD,SAASC,GAAkBt7Q,GAAS,IAAAu7Q,EAM9BP,GAAmBh7Q,GAJrBq5C,EAAQkiO,EAARliO,SACAC,EAASiiO,EAATjiO,UACAC,EAASgiO,EAAThiO,UACA9F,EAAO8nO,EAAP9nO,QAEF,MAAO,kCAAkC7pC,KAAKyvC,EAAWE,EAAYD,KAAe,CAAC,SAAU,YAAY+mI,SAAS5sI,GAYtH,SAAS+nO,KACP,QAAmB,qBAARC,MAAwBA,IAAIC,WAChCD,IAAIC,SAAS,0BAA2B,QAEjD,SAASC,GAAsBlpP,GAC7B,MAAO,CAAC,OAAQ,OAAQ,aAAa4tJ,SAAS66F,GAAYzoP,IAGhDlsB,KAAK6L,IACL7L,KAAK8L,IADjB,IAEMs8H,GAAQpoI,KAAKooI,MAEnB,SAASitI,GAAiB57Q,GACxB,IAAMu6Q,EAAMS,GAAmBh7Q,GAG3B0uC,EAAQ32B,WAAWwiQ,EAAI7rO,QAAU,EACjCC,EAAS52B,WAAWwiQ,EAAI5rO,SAAW,EACjCktO,EAAYV,GAAcn7Q,GAC1By1B,EAAcomP,EAAY77Q,EAAQy1B,YAAciZ,EAChDE,EAAeitO,EAAY77Q,EAAQ4uC,aAAeD,EAClDmtO,EAAiBntI,GAAMjgG,KAAWjZ,GAAek5G,GAAMhgG,KAAYC,EAKzE,OAJIktO,IACFptO,EAAQjZ,EACRkZ,EAASC,GAEJ,CACLF,QACAC,SACAotO,SAAUD,GAId,SAASE,GAAch8Q,GACrB,OAAQi/L,GAAUj/L,GAAoCA,EAAzBA,EAAQi8Q,eAGvC,IAAMC,GAAiB,CACrB37P,EAAG,EACHjL,EAAG,GAEL,SAAS6mQ,GAASn8Q,GAChB,IAAMo8Q,EAAaJ,GAAch8Q,GACjC,IAAKm7Q,GAAciB,GACjB,OAAOF,GAET,IAAMhtO,EAAOktO,EAAW/6O,wBAAwBg7O,EAK5CT,GAAiBQ,GAHnB1tO,EAAK2tO,EAAL3tO,MACAC,EAAM0tO,EAAN1tO,OACAotO,EAAQM,EAARN,SAEEx7P,GAAKw7P,EAAWptI,GAAMz/F,EAAKR,OAASQ,EAAKR,OAASA,EAClDp5B,GAAKymQ,EAAWptI,GAAMz/F,EAAKP,QAAUO,EAAKP,QAAUA,EAUxD,OANKpuB,GAAM00B,OAAO3kC,SAASiQ,KACzBA,EAAI,GAEDjL,GAAM2/B,OAAO3kC,SAASgF,KACzBA,EAAI,GAEC,CACLiL,IACAjL,KAIJ,IAAMgnQ,GAAY,CAChB/7P,EAAG,EACHjL,EAAG,GAEL,SAASinQ,GAAiBv8Q,EAASw8Q,EAASC,GAC1C,IAAIC,EAAqBC,EAIzB,QAHgB,IAAZH,IACFA,GAAU,IAEPhB,KACH,OAAOc,GAET,IAAMvhJ,EAAM/6H,EAAU86Q,GAAU96Q,GAAWc,OAC3C,OAAK27Q,GAAwBD,GAAWC,IAAyB1hJ,EACxDuhJ,GAEF,CACL/7P,GAAkD,OAA7Cm8P,EAAsB3hJ,EAAI6hJ,qBAA0B,EAASF,EAAoBjuO,aAAe,EACrGn5B,GAAmD,OAA9CqnQ,EAAuB5hJ,EAAI6hJ,qBAA0B,EAASD,EAAqBnuO,YAAc,GAI1G,SAASnN,GAAsBrhC,EAAS68Q,EAAcC,EAAiBvvO,QAChD,IAAjBsvO,IACFA,GAAe,QAEO,IAApBC,IACFA,GAAkB,GAEpB,IAAMC,EAAa/8Q,EAAQqhC,wBACrB+6O,EAAaJ,GAAch8Q,GAC7Bg9Q,EAAQd,GACRW,IACEtvO,EACE0xJ,GAAU1xJ,KACZyvO,EAAQb,GAAS5uO,IAGnByvO,EAAQb,GAASn8Q,IAGrB,IAAMi9Q,EAAgBV,GAAiBH,EAAYU,EAAiBvvO,GAChEhtB,GAAKw8P,EAAWj7O,KAAOm7O,EAAc18P,GAAKy8P,EAAMz8P,EAChDjL,GAAKynQ,EAAW/6O,IAAMi7O,EAAc3nQ,GAAK0nQ,EAAM1nQ,EAC/Co5B,EAAQquO,EAAWruO,MAAQsuO,EAAMz8P,EACjCouB,EAASouO,EAAWpuO,OAASquO,EAAM1nQ,EACvC,GAAI8mQ,EAIF,IAHA,IAAMrhJ,EAAM+/I,GAAUsB,GAChBc,EAAY3vO,GAAgB0xJ,GAAU1xJ,GAAgButO,GAAUvtO,GAAgBA,EAClF4vO,EAAgBpiJ,EAAIqiJ,aACjBD,GAAiB5vO,GAAgB2vO,IAAcniJ,GAAK,CACzD,IAAMsiJ,EAAclB,GAASgB,GACvBG,EAAaH,EAAc97O,wBAC3Bk5O,EAAMj4O,iBAAiB66O,GAC7BG,EAAW/8P,IAAM48P,EAAcI,WAAaxlQ,WAAWwiQ,EAAIn0G,cAAgBi3G,EAAY98P,EACvF+8P,EAAWhoQ,IAAM6nQ,EAAcK,UAAYzlQ,WAAWwiQ,EAAInyG,aAAei1G,EAAY/nQ,EACrFiL,GAAK88P,EAAY98P,EACjBjL,GAAK+nQ,EAAY/nQ,EACjBo5B,GAAS2uO,EAAY98P,EACrBouB,GAAU0uO,EAAY/nQ,EACtBiL,GAAK+8P,EAAW/8P,EAChBjL,GAAKgoQ,EAAWhoQ,EAChB6nQ,EAAgBrC,GAAUqC,GAAeC,aAG7C,OAAOxC,GAAiB,CACtBlsO,QACAC,SACApuB,IACAjL,MAIJ,SAASmoQ,GAAmBhrP,GAC1B,QAASwoP,GAAOxoP,GAAQA,EAAK43E,cAAgB53E,EAAKjzB,WAAasB,OAAOtB,UAAUqiC,gBAqFlF,SAASuxD,GAAc3gE,GACrB,GAA0B,SAAtByoP,GAAYzoP,GACd,OAAOA,EAET,IAAM90B,EAEN80B,EAAKirP,cAELjrP,EAAKhzB,YAEL27Q,GAAa3oP,IAASA,EAAK03F,MAE3BszJ,GAAmBhrP,GACnB,OAAO2oP,GAAaz9Q,GAAUA,EAAOwsH,KAAOxsH,EAG9C,SAASggR,GAA2BlrP,GAClC,IAAMhzB,EAAa2zF,GAAc3gE,GACjC,OAAIkpP,GAAsBl8Q,GAGjBA,EAAW4qG,cAAc7oE,KAE9B25O,GAAc17Q,IAAe67Q,GAAkB77Q,GAC1CA,EAEFk+Q,GAA2Bl+Q,GAGpC,SAASm+Q,GAAqBnrP,EAAMgE,GAClC,IAAIskP,OACS,IAATtkP,IACFA,EAAO,IAET,IAAMonP,EAAqBF,GAA2BlrP,GAChDqrP,EAASD,KAAsE,OAA7C9C,EAAsBtoP,EAAK43E,oBAAyB,EAAS0wK,EAAoBv5O,MACnHu5F,EAAM+/I,GAAU+C,GACtB,OAAIC,EACKrnP,EAAK3F,OAAOiqG,EAAKA,EAAI6hJ,gBAAkB,GAAItB,GAAkBuC,GAAsBA,EAAqB,IAE1GpnP,EAAK3F,OAAO+sP,EAAoBD,GAAqBC,IAyT9D,ICrnBerkQ,GAFFukQ,kBCWTC,GAAc,CAAC,YAAa,aAAc,KAAM,YAAa,gBAAiB,WAAY,WAAY,UAAW,QAAS,UAAW,eAAgB,cAAe,WAAY,SAKhL93K,GAAO,aAeX,SAAS+3K,GAAkBrrQ,EAAQwG,GACjC,OAAKA,EAEkB,MAAZA,EAAK,GACPxG,EAASwG,EAETxG,EAAS,KAAOwG,EAJhBxG,EAOX,SAASu6D,GAAWv6D,EAAQk0D,GAC1B,IAAK,IAAI6rB,EAAO/0F,UAAU/B,OAAQqiR,EAAgB,IAAI9gR,MAAMu1F,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC3GsrL,EAActrL,EAAO,GAAKh1F,UAAUg1F,GAEtC,IAAIhgE,EAAM,GAAG9B,OAAOotP,GACpB,GAAIp3M,GAASl0D,EACX,IAAK,IAAI5W,KAAO8qE,EACVA,EAAMtoE,eAAexC,IAAQ8qE,EAAM9qE,IACrC42B,EAAIhyB,KAAK,GAAGkwB,OAAOmtP,GAAkBrrQ,EAAQ5W,KAInD,OAAO42B,EAAI1C,QAAO,SAAUt0B,GAC1B,OAAOA,KACN6H,KAAI,SAAU7H,GACf,OAAOoiF,OAAOpiF,GAAGyvB,UAChB1nB,KAAK,KAMV,IAAIw6Q,GAAa,SAAoB3iR,GACnC,OA6Ne0oC,EA7NH1oC,EA8NL4B,MAAMC,QAAQ6mC,GA9NM1oC,EAAM00B,OAAO+1K,SACjB,WAAnB33G,EAAQ9yF,IAAiC,OAAVA,EAAuB,CAACA,GACpD,GA2NT,IAAiB0oC,GApNbk6O,GAAmB,SAA0B76Q,GAiB/C,OAfAA,EAAM8pB,UACJ9pB,EAAM86Q,WACN96Q,EAAM+6Q,GACN/6Q,EAAMg7Q,UACNh7Q,EAAMi7Q,cACNj7Q,EAAMlI,SACNkI,EAAMk7Q,SACNl7Q,EAAMm7Q,QACNn7Q,EAAMmyF,MACNnyF,EAAM+H,QACN/H,EAAMo7Q,aACNp7Q,EAAMq7Q,YACNr7Q,EAAMxH,SACNwH,EAAMy5E,MAED69L,EAAc,GADFtjJ,GAAyBh0H,EAAOy6Q,MAQjDa,GAAgB,SAAuBt7Q,EAAO6V,EAAM0lQ,GACtD,IAAIR,EAAK/6Q,EAAM+6Q,GACbC,EAAYh7Q,EAAMg7Q,UAClBC,EAAgBj7Q,EAAMi7Q,cACtBnxP,EAAY9pB,EAAM8pB,UACpB,MAAO,CACLktP,IAAKgE,EAAUnlQ,EAAM7V,GACrB8pB,UAAWixP,EAAuB,OAApBQ,QAAgD,IAApBA,EAA6BA,EAAkB,GAAIN,EAAcplQ,EAAM7V,GAAQ8pB,KAoB7H,SAAS0xP,GAAkBloP,GACzB,MAAO,CAACr3B,SAASqiC,gBAAiBriC,SAASgiC,KAAM1gC,QAAQ3D,QAAQ05B,IAAO,EAgB1E,SAASmoP,GAAanoP,GACpB,OAAIkoP,GAAkBloP,GACb/1B,OAAO+tC,YAEThY,EAAG+K,UAEZ,SAAS8zK,GAAS7+K,EAAImL,GAEhB+8O,GAAkBloP,GACpB/1B,OAAO40M,SAAS,EAAG1zK,GAGrBnL,EAAG+K,UAAYI,EAgCjB,SAASi9O,GAAaj7D,EAAGr9M,EAAGC,EAAGC,GAC7B,OAAOD,IAAMo9M,EAAIA,EAAIn9M,EAAI,GAAKm9M,EAAIA,EAAI,GAAKr9M,EAE7C,SAASu4Q,GAAiBl/Q,EAAS4vF,GACjC,IAAI9vD,EAAWliC,UAAU/B,OAAS,QAAsBb,IAAjB4C,UAAU,GAAmBA,UAAU,GAAK,IAC/EwgH,EAAWxgH,UAAU/B,OAAS,QAAsBb,IAAjB4C,UAAU,GAAmBA,UAAU,GAAKsoG,GAC/EhqG,EAAQ8iR,GAAah/Q,GACrBoxC,EAASw+C,EAAK1zF,EACdwkN,EAAY,GACZ51F,EAAc,EAClB,SAASq0J,IAEP,IAAIl7Q,EAAMg7Q,GADVn0J,GAAe41F,EACqBxkN,EAAOk1C,EAAQtR,GACnD41K,GAAS11M,EAASiE,GACd6mH,EAAchrF,EAChBh/B,OAAOs/B,sBAAsB++O,GAE7B/gK,EAASp+G,GAGbm/Q,IAMF,SAAStuO,GAAeuuO,EAAQC,GAC9B,IAAIC,EAAWF,EAAO/9O,wBAClBk+O,EAAcF,EAAUh+O,wBACxBm+O,EAAaH,EAAUzwO,aAAe,EACtC2wO,EAAYt9O,OAASu9O,EAAaF,EAASr9O,OAC7CyzK,GAAS0pE,EAAQ74Q,KAAK6L,IAAIitQ,EAAU7wO,UAAY6wO,EAAUl/H,aAAei/H,EAAOxwO,aAAe4wO,EAAYJ,EAAO3tO,eACzG8tO,EAAYv9O,IAAMw9O,EAAaF,EAASt9O,KACjD0zK,GAAS0pE,EAAQ74Q,KAAK8L,IAAIgtQ,EAAU7wO,UAAYgxO,EAAY,IAyBhE,SAASC,KACP,IAEE,OADAjgR,SAAS24G,YAAY,eACd,EACP,MAAOt4G,GACP,OAAO,GAqBX,IAAI6/Q,IAAwB,EACxBp0Q,GAAU,CACZ,cACE,OAAOo0Q,IAAwB,IAI/BlN,GAAsB,qBAAX1xQ,OAAyBA,OAAS,GAC7C0xQ,GAAEjqP,kBAAoBiqP,GAAE7pP,sBAC1B6pP,GAAEjqP,iBAAiB,IAAK29E,GAAM56F,IAC9BknQ,GAAE7pP,oBAAoB,IAAKu9E,IAAM,IAEnC,IAAIy5K,GAAwBD,GAC5B,SAASE,GAAWplO,GAClB,OAAe,MAARA,EAKT,SAASqlO,GAAanB,EAASoB,EAAYC,GACzC,OAAOrB,EAAUoB,EAAaC,EA0BhC,SAASC,GAAiB7vL,GACxB,IAAI8vL,EAAqB9vL,EAAKg3D,UAC5Bi4H,EAASjvL,EAAKivL,OACdc,EAAY/vL,EAAK+vL,UACjBC,EAAqBhwL,EAAKiwL,UAC1BC,EAAelwL,EAAKkwL,aACpBC,EAAkBnwL,EAAKmwL,gBACvBC,EAAgBpwL,EAAKowL,cACnBC,EApKN,SAAyBxgR,GACvB,IAAIgzB,EAAQsP,iBAAiBtiC,GACzBygR,EAAyC,aAAnBztP,EAAM+Z,SAC5B2zO,EAAa,gBACjB,GAAuB,UAAnB1tP,EAAM+Z,SAAsB,OAAOvtC,SAASqiC,gBAChD,IAAK,IAAItiC,EAASS,EAAST,EAASA,EAAOqzC,eAEzC,GADA5f,EAAQsP,iBAAiB/iC,KACrBkhR,GAA0C,WAAnBztP,EAAM+Z,WAG7B2zO,EAAW92Q,KAAKopB,EAAMqmB,SAAWrmB,EAAMumB,UAAYvmB,EAAMsmB,WAC3D,OAAO/5C,EAGX,OAAOC,SAASqiC,gBAsJG8+O,CAAgBvB,GAC/BwB,EAAe,CACjBR,UAAW,SACXj5H,UAAW84H,GAIb,IAAKb,IAAWA,EAAO7xO,aAAc,OAAOqzO,EAI5C,IA3MwB/pP,EA4MtB4a,EAD0B+uO,EAAan/O,wBACFsN,OACnCkyO,EAAwBzB,EAAO/9O,wBACjCy/O,EAAaD,EAAsB5+O,OACnC8+O,EAAaF,EAAsBlyO,OACnCqyO,EAAUH,EAAsB7+O,IAEhCo8F,EAD0BghJ,EAAO7xO,aAAalM,wBACTW,IACnCi/O,EAAaX,EAAkBx/Q,OAAOiuC,YAlNtCgwO,GADoBloP,EAmNiD2pP,GAjNhE1/Q,OAAOiuC,YAETlY,EAAGspH,aAgNNv+G,EAAYo9O,GAAawB,GACzB/zO,EAAet3B,SAASmtB,iBAAiB88O,GAAQ3yO,aAAc,IAC/DF,EAAYp3B,SAASmtB,iBAAiB88O,GAAQ7yO,UAAW,IACzD20O,EAAiB9iJ,EAAe7xF,EAChC40O,EAAiBF,EAAaD,EAC9BI,EAAmBF,EAAiBt/O,EACpCy/O,EAAmB5vO,EAAe7P,EAAYo/O,EAC9CM,EAAaR,EAAaG,EAAar/O,EAAY6K,EACnD80O,EAAW3/O,EAAYo/O,EAAUz0O,EACjCi1O,EAAiB,IACrB,OAAQrB,GACN,IAAK,OACL,IAAK,SAEH,GAAIgB,GAAkBJ,EACpB,MAAO,CACLX,UAAW,SACXj5H,UAAW84H,GAKf,GAAIoB,GAAoBN,IAAeT,EAIrC,OAHID,GACFnB,GAAiBsB,EAAcc,EAAYE,GAEtC,CACLpB,UAAW,SACXj5H,UAAW84H,GAKf,IAAKK,GAAmBe,GAAoBnB,GAAaI,GAAmBa,GAAkBjB,EAQ5F,OAPIG,GACFnB,GAAiBsB,EAAcc,EAAYE,GAMtC,CACLpB,UAAW,SACXj5H,UAHsBm5H,EAAkBa,EAAiB10O,EAAe40O,EAAmB50O,GAU/F,GAA2B,SAAvB0zO,GAAiCG,EAAiB,CAEpD,IAAImB,EAAqBxB,EACrByB,EAAapB,EAAkBY,EAAiBE,EAIpD,OAHIM,GAAcxB,IAChBuB,EAAqBl7Q,KAAK6L,IAAIsvQ,EAAaj1O,EAAe8zO,EAAeN,IAEpE,CACLG,UAAW,MACXj5H,UAAWs6H,GAKf,GAA2B,WAAvBtB,EAIF,OAHIE,GACF3qE,GAAS8qE,EAAcc,GAElB,CACLlB,UAAW,SACXj5H,UAAW84H,GAGf,MACF,IAAK,MAEH,GAAIiB,GAAkBH,EACpB,MAAO,CACLX,UAAW,MACXj5H,UAAW84H,GAKf,GAAImB,GAAoBL,IAAeT,EAIrC,OAHID,GACFnB,GAAiBsB,EAAce,EAAUC,GAEpC,CACLpB,UAAW,MACXj5H,UAAW84H,GAKf,IAAKK,GAAmBc,GAAoBlB,GAAaI,GAAmBY,GAAkBhB,EAAW,CACvG,IAAIyB,EAAsB1B,EAU1B,QANKK,GAAmBc,GAAoBlB,GAAaI,GAAmBY,GAAkBhB,KAC5FyB,EAAsBrB,EAAkBY,EAAiB30O,EAAY60O,EAAmB70O,GAEtF8zO,GACFnB,GAAiBsB,EAAce,EAAUC,GAEpC,CACLpB,UAAW,MACXj5H,UAAWw6H,GAOf,MAAO,CACLvB,UAAW,SACXj5H,UAAW84H,GAEf,QACE,MAAM,IAAIrgR,MAAM,+BAAgCkxB,OAAOqvP,EAAoB,OAE/E,OAAOS,EAaT,IAAIgB,GAAkB,SAAyBnxQ,GAC7C,MAAa,SAANA,EAAe,SAAWA,GAmB/BoxQ,GAAsCl+K,wBAAc,MAGpDm+K,GAAa,SAAoBv+Q,GACnC,IAAIusB,EAAWvsB,EAAMusB,SACnBiyP,EAAgBx+Q,EAAMw+Q,cACtBC,EAAgBz+Q,EAAMy+Q,cACtBC,EAAgB1+Q,EAAM0+Q,cACtBC,EAAe3+Q,EAAM2+Q,aACrBC,EAA2B5+Q,EAAM4+Q,yBACjCnlM,EAAQz5E,EAAMy5E,MAEdolM,GADUx7K,qBAAWi7K,KAA2B,IACrBO,mBACzBrxL,EAAMsxL,iBAAO,MAEfC,EAAaj3J,GADCk3J,mBAASP,GACgB,GACvC76H,EAAYm7H,EAAW,GACvBE,EAAeF,EAAW,GAE1BG,EAAap3J,GADEk3J,mBAAS,MACgB,GACxCnC,EAAYqC,EAAW,GACvBC,EAAeD,EAAW,GACxBlC,EAAgBvjM,EAAM2lM,QAAQpC,cAqBlC,OApBAxC,IAAgB,WACd,IAAIqB,EAASruL,EAAIlI,QACjB,GAAKu2L,EAAL,CAGA,IAAIkB,EAAmC,UAAjB4B,EAElBp7M,EAAQk5M,GAAiB,CAC3B74H,UAAW66H,EACX5C,OAAQA,EACRc,UAAW6B,EACX3B,UAAW6B,EACX5B,aANiB8B,IAA6B7B,EAO9CA,gBAAiBA,EACjBC,cAAeA,IAEjBiC,EAAa17M,EAAMqgF,WACnBu7H,EAAa57M,EAAMs5M,WACI,OAAvBgC,QAAsD,IAAvBA,GAAyCA,EAAmBt7M,EAAMs5M,cAChG,CAAC4B,EAAeC,EAAeC,EAAcC,EAA0BJ,EAAeK,EAAoB7B,IACtGzwP,EAAS,CACdihE,IAAKA,EACL6xL,YAAa/H,EAAcA,EAAc,GAAIt3Q,GAAQ,GAAI,CACvD68Q,UAAWA,GAAawB,GAAgBK,GACxC96H,UAAWA,OAcb07H,GAVO,SAAct/Q,GACvB,IAAIusB,EAAWvsB,EAAMusB,SACnBugE,EAAW9sF,EAAM8sF,SACjByyL,EAAav/Q,EAAMu/Q,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,OAAQ,CAC1DmsO,MAAM,IACJ,CACF3+I,IAAKV,GACJyyL,GAAahzP,IAuCdizP,GAAY,SAAmBC,EAAOC,GACxC,IAAIC,EAAcF,EAAMhmM,MACtBmmM,EAAWD,EAAYP,QAAQQ,SAC/BC,EAASF,EAAYE,OACvB,OAAOvI,EAAc,CACnB13K,UAAW,UACV8/K,EAAW,GAAK,CACjBtuM,MAAOyuM,EAAOC,UACd75O,QAAS,GAAG1Y,OAAkB,EAAXqyP,EAAc,OAAOryP,OAAkB,EAAXqyP,EAAc,SAG7DG,GAAsBP,GACtBQ,GAAoBR,GACpBS,GAAmB,SAA0BjgR,GAC/C,IAAIusB,EAAWvsB,EAAMusB,SACnBgzP,EAAav/Q,EAAMu/Q,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,mBAAoB,CACtE,eAAe,EACf,2BAA2B,IACzBu/Q,GAAahzP,IAEnB0zP,GAAiBzrJ,aAAe,CAC9BjoG,SAAU,cAEZ,IAAI2zP,GAAiB,SAAwBlgR,GAC3C,IAAIusB,EAAWvsB,EAAMusB,SACnBgzP,EAAav/Q,EAAMu/Q,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,iBAAkB,CACpE,eAAe,EACf,wBAAwB,IACtBu/Q,GAAahzP,IAEnB2zP,GAAe1rJ,aAAe,CAC5BjoG,SAAU,cAOZ,IAqKI4zP,GACAC,GAAc,CAAC,QAMnB,ICzyB+CjK,GAAS/+J,GDyyBpD1pB,GAAgD,CAClD73E,KAAM,SACN2Z,OAAQ,2FAON6wP,GAAM,SAAazzL,GACrB,IAAI3U,EAAO2U,EAAK3U,KACdj4E,EAAQg0H,GAAyBpnC,EAAMwzL,IACzC,OAAOnJ,GAAI,MAAO5sL,YAAS,CACzBj/C,OAAQ6sC,EACR9sC,MAAO8sC,EACPqoM,QAAS,YACT,cAAe,OACfx5E,UAAW,QACXkwE,IAAKtpL,IACJ1tF,KAEDugR,GAAY,SAAmBvgR,GACjC,OAAOi3Q,GAAIoJ,GAAKh2L,YAAS,CACvBpS,KAAM,IACLj4E,GAAQi3Q,GAAI,OAAQ,CACrB3zQ,EAAG,iWAGHk9Q,GAAc,SAAqBxgR,GACrC,OAAOi3Q,GAAIoJ,GAAKh2L,YAAS,CACvBpS,KAAM,IACLj4E,GAAQi3Q,GAAI,OAAQ,CACrB3zQ,EAAG,4RAQHm9Q,GAAU,SAAiBC,EAAOhB,GACpC,IAAIpkI,EAAYolI,EAAMplI,UACpBqlI,EAAcD,EAAMjnM,MACpBmmM,EAAWe,EAAYvB,QAAQQ,SAC/BC,EAASc,EAAYd,OACvB,OAAOvI,EAAc,CACnBpmM,MAAO,qBACPhhC,QAAS,OACT84J,WAAY,eACX02E,EAAW,GAAK,CACjBtuM,MAAOkqE,EAAYukI,EAAOe,UAAYf,EAAOgB,UAC7C56O,QAAoB,EAAX25O,EACT,SAAU,CACRxuM,MAAOkqE,EAAYukI,EAAOiB,UAAYjB,EAAOC,cAI/CiB,GAAuBN,GASvBO,GAAoBP,GAwCpBQ,GTxnBY,WACd,IAAIC,EAAalK,GAAIn/Q,WAAM,EAAQwC,WAC/Bwb,EAAO,aAAeqrQ,EAAWrrQ,KAErC,MAAO,CACLA,KAAMA,EACN2Z,OAAQ,cAAgB3Z,EAAO,IAAMqrQ,EAAW1xP,OAAS,IACzDmmP,KAAM,EACN/sQ,SAAU,WACR,MAAO,QAAUnN,KAAKoa,KAAO,IAAMpa,KAAK+zB,OAAS,US+mB5B2xP,CAAUhB,KCn5BUhK,GDm5BmD,CAAC,8DCl5B5F/+J,KACHA,GAAM++J,GAAQr5Q,MAAM,IDi5BiCqjR,GC/4BhDxmR,OAAOmpI,OAAOnpI,OAAOujG,iBAAiBi5K,GAAS,CACpD/+J,IAAK,CACHn/G,MAAO0B,OAAOmpI,OAAO1rB,UDm6BvBgqK,GAAa,SAAoBC,GACnC,IAAI/lR,EAAQ+lR,EAAM/lR,MAChBmsB,EAAS45P,EAAM55P,OACjB,OAAOwvP,GAAI,OAAQ,CACjBD,IAAkBsK,GAAM,CACtBzlP,UAAW,GAAGtO,OAAO0zP,GAAsB,oBAAoB1zP,OAAOjyB,EAAO,gBAC7E61E,gBAAiB,eACjBowM,aAAc,MACdrxO,QAAS,eACTnH,WAAYthB,EAAS,WAAQhwB,EAC7B2zC,OAAQ,MACRo2O,cAAe,MACfr2O,MAAO,OACkC,GAAmE,OAG9Gs2O,GAAmB,SAA0BzhR,GAC/C,IAAIu/Q,EAAav/Q,EAAMu/Q,WACrBptL,EAAQnyF,EAAMmyF,MAChB,OAAO8kL,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,mBAAoB,CACtE0hR,WAAW,EACX,qBAAqB,IACnBnC,GAAatI,GAAImK,GAAY,CAC/B9lR,MAAO,EACPmsB,OAAQ0qE,IACN8kL,GAAImK,GAAY,CAClB9lR,MAAO,IACPmsB,QAAQ,IACNwvP,GAAImK,GAAY,CAClB9lR,MAAO,IACPmsB,QAAS0qE,MAGbsvL,GAAiBjtJ,aAAe,CAC9Bv8C,KAAM,GAGR,IA8CI0pM,GAhBU,SAAiB3hR,GAC7B,IAAIusB,EAAWvsB,EAAMusB,SACnBq1P,EAAa5hR,EAAM4hR,WACnBtmI,EAAYt7I,EAAMs7I,UAClBxuD,EAAW9sF,EAAM8sF,SACjByyL,EAAav/Q,EAAMu/Q,WACnBsC,EAAa7hR,EAAM6hR,WACrB,OAAO5K,GAAI,MAAO5sL,YAAS,CACzBmD,IAAKV,GACJwuL,GAAct7Q,EAAO,UAAW,CACjC0rE,SAAS,EACT,uBAAwBk2M,EACxB,sBAAuBtmI,EACvB,wBAAyBumI,IACvBtC,GAAahzP,IAIfu1P,GAAc,CAAC,QAuDfC,GA/CQ,SAAe/hR,GACzB,IAAIusB,EAAWvsB,EAAMusB,SACnBwuP,EAAK/6Q,EAAM+6Q,GACXC,EAAYh7Q,EAAMg7Q,UAClBC,EAAgBj7Q,EAAMi7Q,cACtB+G,EAAUhiR,EAAMgiR,QAChBC,EAAejiR,EAAMiiR,aACrB1C,EAAav/Q,EAAMu/Q,WACnBruM,EAAQlxE,EAAMkxE,MACduI,EAAQz5E,EAAMy5E,MACd4hM,EAAcr7Q,EAAMq7Q,YACtB,OAAOpE,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,QAAS,CAC3DwjF,OAAO,IACL+7L,GAAatI,GAAI+K,EAAS33L,YAAS,GAAI43L,EAAc,CACvD5G,YAAaA,EACb5hM,MAAOA,EACPuhM,UAAWA,EACXC,cAAeA,EACfF,GAAIA,IACF7pM,GAAQ+lM,GAAI,MAAO,KAAM1qP,KA8B3B21P,GAAY,CAAC,WAAY,aAAc,WAAY,kBAmBnDC,GAAe,CACjBC,SAAU,QACV9pM,KAAM,UACN07D,SAAU,MACVowB,OAAQ,EACRt7H,OAAQ,EACRwwG,QAAS,EACTrzG,QAAS,GAEPo8O,GAAiB,CACnBxP,KAAM,WACN3iO,QAAS,cACTkyO,SAAU,gBACVE,oBAAqB,gBACrB,UAAWhL,EAAc,CACvBnxN,QAAS,uBACTl0B,WAAY,SACZswP,WAAY,OACXJ,KAEDK,GAAa,SAAoBC,GACnC,OAAOnL,EAAc,CACnBpmM,MAAO,QACPE,MAAO,UACPg7H,WAAY,EACZhtK,QAASqjP,EAAW,EAAI,EACxBt3O,MAAO,QACNg3O,KA8EDO,GAAoB,SAA2BC,GACjD,IAAIp2P,EAAWo2P,EAAMp2P,SACnBgzP,EAAaoD,EAAMpD,WACrB,OAAOtI,GAAI,MAAOsI,EAAYhzP,IAahC,IAmIIw7O,GAAa,CACf6a,eA3dmB,SAAwB5iR,GAC3C,IAAIusB,EAAWvsB,EAAMusB,SACnBgzP,EAAav/Q,EAAMu/Q,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,iBAAkB,CACpE0hR,WAAW,EACX,mBAAmB,IACjBnC,GAAahzP,GAAY0qP,GAAIsJ,GAAW,QAsd5CsC,QAASlB,GACTmB,kBAtesB,SAA2B9iR,GACjD,IAAIusB,EAAWvsB,EAAMusB,SACnBgzP,EAAav/Q,EAAMu/Q,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,oBAAqB,CACvE0hR,WAAW,EACX,sBAAsB,IACpBnC,GAAahzP,GAAY0qP,GAAIuJ,GAAa,QAie9CA,YAAaA,GACbD,UAAWA,GACXwC,MAAOhB,GACPiB,aAhSiB,SAAsBhjR,GACvC,IAAIijR,EAAoBpI,GAAiB76Q,GACvCijR,EAAkB3sQ,KAClB,IAAIipQ,EAAavrJ,GAAyBivJ,EAAmBnB,IAC/D,OAAO7K,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,eAAgB,CAClE,iBAAiB,IACfu/Q,KA2RJ2D,oBApjBwB,SAA6BljR,GACrD,IAAIusB,EAAWvsB,EAAMusB,SACnBgzP,EAAav/Q,EAAMu/Q,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,sBAAuB,CACzEmjR,YAAY,IACV5D,GAAahzP,IAgjBjB62P,mBAvcuB,SAA4BpjR,GACnD,IAAIu/Q,EAAav/Q,EAAMu/Q,WACvB,OAAOtI,GAAI,OAAQ5sL,YAAS,GAAIk1L,EAAYjE,GAAct7Q,EAAO,qBAAsB,CACrF,uBAAuB,OAqczBuvF,MAzOU,SAAevvF,GACzB,IAAI+6Q,EAAK/6Q,EAAM+6Q,GACb9iR,EAAQ+H,EAAM/H,MACZgrR,EAAoBpI,GAAiB76Q,GACvC8sF,EAAWm2L,EAAkBn2L,SAC7B80L,EAAaqB,EAAkBrB,WAC/Ba,EAAWQ,EAAkBR,SAC7BY,EAAiBJ,EAAkBI,eACnC9D,EAAavrJ,GAAyBivJ,EAAmBf,IAC3D,OAAOjL,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,QAAS,CAC3D,mBAAmB,IACjB,CACF,aAAc/H,GAAS,KACrBg/Q,GAAI,QAAS5sL,YAAS,CACxBvgE,UAAWixP,EAAG,CACZt+M,OAAO,GACN4mN,GACH71L,IAAKV,EACLr9D,MAAO+yP,GAAWC,GAClB11K,SAAU60K,GACTrC,MAsNHkC,iBAAkBA,GAClB73C,KAAM01C,GACNgE,SA/wBa,SAAkBtjR,GAC/B,IAAIusB,EAAWvsB,EAAMusB,SACnBgzP,EAAav/Q,EAAMu/Q,WACnBzyL,EAAW9sF,EAAM8sF,SACjBquL,EAAUn7Q,EAAMm7Q,QAClB,OAAOlE,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,WAAY,CAC9D,aAAa,EACb,sBAAuBm7Q,IACrB,CACF3tL,IAAKV,GACJyyL,GAAahzP,IAswBhBg3P,WA3sBe,SAAoBvjR,GACnC,IAAIwiC,EAAWxiC,EAAMwiC,SACnBjW,EAAWvsB,EAAMusB,SACjBi3P,EAAiBxjR,EAAMwjR,eACvBjE,EAAav/Q,EAAMu/Q,WACnBb,EAAgB1+Q,EAAM0+Q,cACtBC,EAAe3+Q,EAAM2+Q,aACnB8E,EAAgB3E,iBAAO,MACvB4E,EAAa5E,iBAAO,MAEtB6E,EAAa77J,GADEk3J,mBAASX,GAAgBK,IACA,GACxC7B,EAAY8G,EAAW,GACvB9E,EAAqB8E,EAAW,GAC9BC,EAAyBC,mBAAQ,WACnC,MAAO,CACLhF,mBAAoBA,KAErB,IAEDiF,EAAah8J,GADEk3J,mBAAS,MACgB,GACxC+E,EAAmBD,EAAW,GAC9BE,EAAsBF,EAAW,GAC/BG,EAAyBC,uBAAY,WACvC,GAAKV,EAAL,CACA,IAAI73O,EA7bR,SAA8BlvC,GAC5B,IAAIkvC,EAAOlvC,EAAQqhC,wBACnB,MAAO,CACLY,OAAQiN,EAAKjN,OACb0M,OAAQO,EAAKP,OACb7M,KAAMoN,EAAKpN,KACXC,MAAOmN,EAAKnN,MACZC,IAAKkN,EAAKlN,IACV0M,MAAOQ,EAAKR,OAqbDg5O,CAAqBX,GAC5BY,EAAkC,UAAjBzF,EAA2B,EAAIphR,OAAO+tC,YACvD7jB,EAASkkB,EAAKkxO,GAAauH,EAC3B38P,KAAiC,OAArBs8P,QAAkD,IAArBA,OAA8B,EAASA,EAAiBt8P,SAAWkkB,EAAKpN,QAA+B,OAArBwlP,QAAkD,IAArBA,OAA8B,EAASA,EAAiBp4O,KAAKpN,OAASoN,EAAKR,SAAgC,OAArB44O,QAAkD,IAArBA,OAA8B,EAASA,EAAiBp4O,KAAKR,QAC1U64O,EAAoB,CAClBv8P,OAAQA,EACRkkB,KAAMA,OAGT,CAAC63O,EAAgB7E,EAAc9B,EAAgC,OAArBkH,QAAkD,IAArBA,OAA8B,EAASA,EAAiBt8P,OAA6B,OAArBs8P,QAAkD,IAArBA,OAA8B,EAASA,EAAiBp4O,KAAKpN,KAA2B,OAArBwlP,QAAkD,IAArBA,OAA8B,EAASA,EAAiBp4O,KAAKR,QACpUqvO,IAAgB,WACdyJ,MACC,CAACA,IACJ,IAAII,EAAgBH,uBAAY,WACI,oBAAvBR,EAAWp+L,UACpBo+L,EAAWp+L,UACXo+L,EAAWp+L,QAAU,MAEnBk+L,GAAkBC,EAAcn+L,UAClCo+L,EAAWp+L,QF5HjB,SAAoBhoF,EAAW2/L,EAAU3jG,EAAQvxF,QAC/B,IAAZA,IACFA,EAAU,IACX,IAAAq5F,EAMGr5F,EAAOu8Q,EAAAljL,EAJTmjL,sBAAc,IAAAD,GAAOA,EAAAE,EAAApjL,EACrBqjL,sBAAc,IAAAD,GAAOA,EAAAE,EAAAtjL,EACrBujL,qBAAa,IAAAD,GAAOA,EAAAE,EAAAxjL,EACpByjL,sBAAc,IAAAD,GAAQA,EAElBE,EAAYP,GAAkBE,EAAiB,GAAHl3P,OAAAq6E,aAAQ8zF,GAAUp+L,GAAa+8Q,GAAqB/8Q,GAAaA,EAAUo7Q,eAAiB2B,GAAqB/8Q,EAAUo7Q,gBAAkB,IAAE9wK,aAAMyyK,GAAqBp9E,KAAa,GACzO6nF,EAAUrqR,SAAQ,SAAAsqR,GAEhB,IAAMC,GAAoBtpF,GAAUqpF,IAAaA,EAASn8Q,WAAWk0K,SAAS,MAC1EynG,GAAmBM,IAAiBG,GACtCD,EAAS//P,iBAAiB,SAAUs0E,EAAQ,CAC1Cr0E,SAAS,IAGbw/P,GAAkBM,EAAS//P,iBAAiB,SAAUs0E,MAExD,IAWIt9D,EAXAipP,EAAW,KACXN,IACFM,EAAW,IAAIC,gBAAe,WAC5B5rL,OAEFoiG,GAAUp+L,KAAeunR,GAAkBI,EAAS32E,QAAQhxM,GACvDo+L,GAAUp+L,KAAcA,EAAUo7Q,gBAAmBmM,GACxDI,EAAS32E,QAAQhxM,EAAUo7Q,gBAE7BuM,EAAS32E,QAAQrR,IAGnB,IAAIkoF,EAAcN,EAAiB/mP,GAAsBxgC,GAAa,KAatE,OAZIunR,GAGJ,SAASO,IACP,IAAMC,EAAcvnP,GAAsBxgC,IACtC6nR,GAAgBE,EAAYroQ,IAAMmoQ,EAAYnoQ,GAAKqoQ,EAAYtzQ,IAAMozQ,EAAYpzQ,GAAKszQ,EAAYl6O,QAAUg6O,EAAYh6O,OAASk6O,EAAYj6O,SAAW+5O,EAAY/5O,QACtKkuD,IAEF6rL,EAAcE,EACdrpP,EAAUa,sBAAsBuoP,GARhCA,GAUF9rL,IACO,WACL,IAAIgsL,EACJR,EAAUrqR,SAAQ,SAAAsqR,GAChBR,GAAkBQ,EAAS3/P,oBAAoB,SAAUk0E,GACzDmrL,GAAkBM,EAAS3/P,oBAAoB,SAAUk0E,MAEjC,OAAzBgsL,EAAYL,IAA6BK,EAAUC,aACpDN,EAAW,KACPJ,GACF5oP,qBAAqBD,IEqEAwpP,CAAWhC,EAAgBC,EAAcn+L,QAAS2+L,EAAwB,CAC7FU,cAAe,mBAAoBpnR,YAGtC,CAACimR,EAAgBS,IACpBzJ,IAAgB,WACd6J,MACC,CAACA,IACJ,IAAIoB,EAAuBvB,uBAAY,SAAUwB,GAC/CjC,EAAcn+L,QAAUogM,EACxBrB,MACC,CAACA,IAGJ,IAAK7hP,GAA6B,UAAjBm8O,IAA6BoF,EAAkB,OAAO,KAGvE,IAAI4B,EAAc1O,GAAI,MAAO5sL,YAAS,CACpCmD,IAAKi4L,GACJnK,GAAchE,EAAcA,EAAc,GAAIt3Q,GAAQ,GAAI,CAC3DynB,OAAQs8P,EAAiBt8P,OACzB+hB,SAAUm1O,EACVhzO,KAAMo4O,EAAiBp4O,OACrB,aAAc,CAChB,eAAe,IACb4zO,GAAahzP,GACjB,OAAO0qP,GAAIqH,GAAuBr9K,SAAU,CAC1ChpG,MAAO2rR,GACNphP,EAAwBojP,wBAAaD,EAAanjP,GAAYmjP,IAqoBjEzF,eAAgBA,GAChBD,iBAAkBA,GAClB4F,WApJe,SAAoB7lR,GACnC,IAAIusB,EAAWvsB,EAAMusB,SACnBw7O,EAAa/nQ,EAAM+nQ,WACnBzxP,EAAOtW,EAAMsW,KACbipQ,EAAav/Q,EAAMu/Q,WACnBqC,EAAa5hR,EAAM4hR,WACnBkE,EAAc9lR,EAAM8lR,YACpBzK,EAAcr7Q,EAAMq7Q,YAClB0K,EAAYhe,EAAWge,UACzBC,EAAQje,EAAWie,MACnBC,EAASle,EAAWke,OACtB,OAAOhP,GAAI8O,EAAW,CACpBzvQ,KAAMA,EACNipQ,WAAYjI,EAAcA,EAAc,GAAIgE,GAAct7Q,EAAO,aAAc,CAC7E,eAAe,EACf,2BAA4B4hR,KACzBrC,GACLlE,YAAaA,GACZpE,GAAI+O,EAAO,CACZ1vQ,KAAMA,EACNipQ,WAAYjI,EAAc,GAAIgE,GAAct7Q,EAAO,kBAAmB,CACpE,sBAAsB,KAExBq7Q,YAAaA,GACZ9uP,GAAW0qP,GAAIgP,EAAQ,CACxB3vQ,KAAMA,EACNipQ,WAAYjI,EAAcA,EAAc,GAAIgE,GAAct7Q,EAAO,mBAAoB,CACnF,uBAAuB,KACpB,GAAI,CACP,aAAc,UAAUutB,OAAOhB,GAAY,WAC1Cu5P,GACHzK,YAAaA,MAsHf6K,oBAhKwBxD,GAiKxByD,gBAhKoBzD,GAiKpB0D,iBAhKF,SAA0B3G,GACxB,IAAIlzP,EAAWkzP,EAAMlzP,SACnBgzP,EAAaE,EAAMF,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,CACzBkT,KAAM,UACLgiL,GAAahzP,GAAY0qP,GAAIsJ,GAAW,CACzCtoM,KAAM,OA2JRouM,OA3FW,SAAgBrmR,GAC3B,IAAIusB,EAAWvsB,EAAMusB,SACnBq1P,EAAa5hR,EAAM4hR,WACnBtmI,EAAYt7I,EAAMs7I,UAClBx9D,EAAa99E,EAAM89E,WACnBgP,EAAW9sF,EAAM8sF,SACjByyL,EAAav/Q,EAAMu/Q,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,SAAU,CAC5D0F,QAAQ,EACR,sBAAuBk8Q,EACvB,qBAAsBtmI,EACtB,sBAAuBx9D,IACrB,CACF0P,IAAKV,EACL,gBAAiB80L,GAChBrC,GAAahzP,IA6EhB+5P,YA5DgB,SAAqBtmR,GACrC,IAAIusB,EAAWvsB,EAAMusB,SACnBgzP,EAAav/Q,EAAMu/Q,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,cAAe,CACjE4wF,aAAa,IACX2uL,GAAahzP,IAwDjBg6P,gBA3nBoB,SAAyBvmR,GAC7C,IAAIusB,EAAWvsB,EAAMusB,SACnBgzP,EAAav/Q,EAAMu/Q,WACnBqC,EAAa5hR,EAAM4hR,WACnBzvL,EAAQnyF,EAAMmyF,MAChB,OAAO8kL,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,YAAa,CAC/D,gBAAiB4hR,EACjB,WAAYzvL,IACVotL,GAAahzP,IAonBjBi6P,YAnCgB,SAAqBxmR,GACrC,IAAIusB,EAAWvsB,EAAMusB,SACnBq1P,EAAa5hR,EAAM4hR,WACnBrC,EAAav/Q,EAAMu/Q,WACrB,OAAOtI,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,cAAe,CACjE,gBAAgB,EAChB,4BAA6B4hR,IAC3BrC,GAAahzP,IA6BjBk6P,eA7lBmB,SAAwBzmR,GAC3C,IAAIusB,EAAWvsB,EAAMusB,SACnBgzP,EAAav/Q,EAAMu/Q,WACnBpE,EAAUn7Q,EAAMm7Q,QAChBD,EAAWl7Q,EAAMk7Q,SACnB,OAAOjE,GAAI,MAAO5sL,YAAS,GAAIixL,GAAct7Q,EAAO,iBAAkB,CACpE,mBAAmB,EACnB,4BAA6Bm7Q,EAC7B,6BAA8BD,IAC5BqE,GAAahzP,KE3wBfm6P,GAAYh1O,OAAO7pC,OACnB,SAAkB5P,GACd,MAAwB,kBAAVA,GAAsBA,IAAUA,GAWtD,SAAS0uR,GAAeC,EAAWC,GAC/B,GAAID,EAAUtuR,SAAWuuR,EAAWvuR,OAChC,OAAO,EAEX,IAAK,IAAID,EAAI,EAAGA,EAAIuuR,EAAUtuR,OAAQD,IAClC,GAdS4B,EAcI2sR,EAAUvuR,GAdP6B,EAcW2sR,EAAWxuR,KAbtC4B,IAAUC,GAGVwsR,GAAUzsR,IAAUysR,GAAUxsR,IAW1B,OAAO,EAfnB,IAAiBD,EAAOC,EAkBpB,OAAO,EC0cX,IA/cA,IAAI0yF,GAA+C,CACjD/2E,KAAM,kBACN2Z,OAAQ,0JAYNs3P,GALW,SAAkB9mR,GAC/B,OAAOi3Q,GAAI,OAAQ5sL,YAAS,CAC1B2sL,IAAKpqL,IACJ5sF,KAID+mR,GAA0B,CAC5BC,SAAU,SAAkBhnR,GAC1B,IAAIinR,EAAejnR,EAAMinR,aACvB9L,EAAUn7Q,EAAMm7Q,QAChByG,EAAa5hR,EAAM4hR,WACnBsF,EAAkBlnR,EAAMknR,gBAE1B,OADYlnR,EAAM4U,SAEhB,IAAK,OACH,MAAO,oCAAoC2Y,OAAOq0P,EAAa,GAAK,uDAAwD,mCAAmCr0P,OAAO25P,EAAkB,qDAAuD,GAAI,KACrP,IAAK,QACH,MAAO,GAAG35P,OAAOvtB,EAAM,eAAiB,SAAU,gBAAgButB,OAAO05P,EAAe,uBAAyB,GAAI,mCAAmC15P,OAAO4tP,EAAU,uCAAyC,IACpN,IAAK,QACH,MAAO,6GACT,QACE,MAAO,KAGb9wJ,SAAU,SAAkBrqH,GAC1B,IAAIuhC,EAASvhC,EAAMuhC,OACjB4lP,EAAennR,EAAMkxE,MACrBA,OAAyB,IAAjBi2M,EAA0B,GAAKA,EACvCC,EAASpnR,EAAMonR,OACfxF,EAAa5hR,EAAM4hR,WACrB,OAAQrgP,GACN,IAAK,kBACL,IAAK,YACL,IAAK,eACH,MAAO,UAAUhU,OAAO2jD,EAAO,iBACjC,IAAK,QACH,MAAO,0CACT,IAAK,sBACH,MAAO,SAAS3jD,OAAO65P,EAAO9uR,OAAS,EAAI,IAAM,GAAI,KAAKi1B,OAAO65P,EAAOhnR,KAAK,KAAM,eACrF,IAAK,gBACH,MAAoB,UAAUmtB,OAAO2jD,EAA9B0wM,EAAqC,uCAAkE,eAChH,QACE,MAAO,KAGb5pI,QAAS,SAAiBh4I,GACxB,IAAI4U,EAAU5U,EAAM4U,QAClByyQ,EAAUrnR,EAAMqnR,QAChBt/Q,EAAU/H,EAAM+H,QAChBu/Q,EAAgBtnR,EAAMkxE,MACtBA,OAA0B,IAAlBo2M,EAA2B,GAAKA,EACxCC,EAAcvnR,EAAMunR,YACpB3F,EAAa5hR,EAAM4hR,WACnB9jM,EAAa99E,EAAM89E,WACjB0pM,EAAgB,SAAuBn4P,EAAK4nB,GAC9C,OAAO5nB,GAAOA,EAAI/2B,OAAS,GAAGi1B,OAAO8B,EAAIz1B,QAAQq9C,GAAQ,EAAG,QAAQ1pB,OAAO8B,EAAI/2B,QAAU,IAE3F,GAAgB,UAAZsc,GAAuB2yQ,EACzB,MAAO,SAASh6P,OAAO2jD,EAAO,cAAc3jD,OAAOi6P,EAAcD,EAAaF,GAAU,KAE1F,GAAgB,SAAZzyQ,EAAoB,CACtB,IAAIm4F,EAAW60K,EAAa,YAAc,GACtCxhQ,EAAS,GAAGmN,OAAOuwD,EAAa,WAAa,WAAWvwD,OAAOw/E,GACnE,MAAO,UAAUx/E,OAAO2jD,EAAO,KAAK3jD,OAAOnN,EAAQ,MAAMmN,OAAOi6P,EAAcz/Q,EAASs/Q,GAAU,KAEnG,MAAO,IAETp0D,SAAU,SAAkBjzN,GAC1B,IAAI+vF,EAAa/vF,EAAM+vF,WACrB03L,EAAiBznR,EAAMynR,eACzB,MAAO,GAAGl6P,OAAOk6P,GAAgBl6P,OAAOwiE,EAAa,oBAAsBA,EAAa,GAAI,OA4H5F23L,GAxHa,SAAoB1nR,GACnC,IAAI2nR,EAAgB3nR,EAAM2nR,cACxBC,EAAgB5nR,EAAM4nR,cACtBC,EAAe7nR,EAAM6nR,aACrBC,EAAmB9nR,EAAM8nR,iBACzBxsI,EAAYt7I,EAAMs7I,UAClBisI,EAAcvnR,EAAMunR,YACpBlM,EAAcr7Q,EAAMq7Q,YACpBnmQ,EAAKlV,EAAMkV,GACT6yQ,EAAmB1M,EAAY0M,iBACjCC,EAAiB3M,EAAY2M,eAC7Bj4L,EAAasrL,EAAYtrL,WACzBorL,EAAUE,EAAYF,QACtB8M,EAAmB5M,EAAY4M,iBAC/BhB,EAAe5L,EAAY4L,aAC3BpF,EAAaxG,EAAYwG,WACzB95Q,EAAUszQ,EAAYtzQ,QACtBmgR,EAAqB7M,EAAY6M,mBACjChB,EAAkB7L,EAAY6L,gBAC5BiB,EAAY9M,EAAY,cACxB+M,EAAW/M,EAAY,aAGvBgN,EAAWxE,mBAAQ,WACrB,OAAOvM,EAAcA,EAAc,GAAIyP,IAA0BgB,GAAoB,MACpF,CAACA,IAGAO,EAAezE,mBAAQ,WACzB,IAQmCnjR,EAR/BtE,EAAU,GACd,GAAIurR,GAAiBU,EAASh+J,SAAU,CACtC,IAAI3kH,EAASiiR,EAAcjiR,OACzB6iR,EAAkBZ,EAAc5/Q,QAChCygR,EAAeb,EAAca,aAC7BC,EAAgBd,EAAcc,cAC9BxwR,EAAQ0vR,EAAc1vR,MAOpBkpF,EAAWqnM,GAAgB9iR,IALEhF,EAKiBzI,EAJxC4B,MAAMC,QAAQ4G,GAAa,KAANA,GAK3BwwE,EAAQiQ,EAAW6mM,EAAe7mM,GAAY,GAG9CunM,EAAgBH,GAAmBE,QAAiBhxR,EACpD2vR,EAASsB,EAAgBA,EAAcxoR,IAAI8nR,GAAkB,GAC7DW,EAAgBrR,EAAc,CAGhCsK,WAAYzgM,GAAY8mM,EAAiB9mM,EAAUomM,GACnDr2M,MAAOA,EACPk2M,OAAQA,GACPO,GACHvrR,EAAUisR,EAASh+J,SAASs+J,GAE9B,OAAOvsR,IACN,CAACurR,EAAeU,EAAUJ,EAAkBV,EAAaS,IACxDY,EAAc/E,mBAAQ,WACxB,IAAIgF,EAAW,GACXxB,EAAUO,GAAiBC,EAC3B/pM,KAAgB8pM,GAAiBL,GAAeA,EAAYzqG,SAAS8qG,IACzE,GAAIP,GAAWgB,EAASrwI,QAAS,CAC/B,IAAI8wI,EAAe,CACjBzB,QAASA,EACTn2M,MAAO82M,EAAeX,GACtBzF,WAAYqG,EAAiBZ,EAASE,GACtCzpM,WAAYA,EACZ/1E,QAAS+/Q,EACTlzQ,QAASyyQ,IAAYO,EAAgB,OAAS,QAC9CL,YAAaA,GAEfsB,EAAWR,EAASrwI,QAAQ8wI,GAE9B,OAAOD,IACN,CAACjB,EAAeC,EAAcG,EAAgBC,EAAkBI,EAAUP,EAAkBP,IAC3FwB,EAAclF,mBAAQ,WACxB,IAAImF,EAAa,GACjB,GAAInH,GAAc95Q,EAAQzP,QAAU+vR,EAASp1D,SAAU,CACrD,IAAIw0D,EAAiBS,EAAmB,CACtC3xN,MAAOuxN,EAAiBxvR,SAE1B0wR,EAAaX,EAASp1D,SAAS,CAC7BljI,WAAYA,EACZ03L,eAAgBA,IAGpB,OAAOuB,IACN,CAAClB,EAAkB/3L,EAAY8xL,EAAYwG,EAAUtgR,EAASmgR,IAC7De,EAAepF,mBAAQ,WACzB,IAAIqF,EAAc,GAClB,GAAIb,EAASrB,SAAU,CACrB,IAAIpyQ,EAAUizQ,EAAe,QAAUhG,EAAa,OAAS,QAC7DqH,EAAcb,EAASrB,SAAS,CAC9B,aAAcmB,EACdvzQ,QAASA,EACTgtQ,WAAYgG,GAAiBK,EAAiBL,EAAeL,GAC7DpM,QAASA,EACT8L,aAAcA,EACdC,gBAAiBA,IAGrB,OAAOgC,IACN,CAACf,EAAWP,EAAeC,EAAc1M,EAAS8M,EAAkBhB,EAAcpF,EAAYwG,EAAUd,EAAaL,IACpHiC,EAAc,GAAG57P,OAAOq7P,EAAa,KAAKr7P,OAAOw7P,EAAa,KAAKx7P,OAAO07P,GAC1EG,EAAmBnS,GAAIoS,WAAU,KAAMpS,GAAI,OAAQ,CACrD/hQ,GAAI,kBACHozQ,GAAerR,GAAI,OAAQ,CAC5B/hQ,GAAI,gBACHi0Q,IACCG,EAA0G,yBAAtE,OAAlB3B,QAA4C,IAAlBA,OAA2B,EAASA,EAAcpmP,QAClG,OAAO01O,GAAIoS,WAAU,KAAMpS,GAAI6P,GAAY,CACzC5xQ,GAAIA,GACHo0Q,GAAkBF,GAAmBnS,GAAI6P,GAAY,CACtD,YAAasB,EACb,cAAe,QACf,gBAAiB,kBAChB9sI,IAAcguI,GAAkBF,KAIjC/jM,GAAa,CAAC,CAChBx/E,KAAM,IACN0jR,QAAS,+LACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,oBACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,gBACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,qDACR,CACD1jR,KAAM,IACN0jR,QAAS,qEACR,CACD1jR,KAAM,IACN0jR,QAAS,mFACR,CACD1jR,KAAM,KACN0jR,QAAS,gBACR,CACD1jR,KAAM,KACN0jR,QAAS,gBACR,CACD1jR,KAAM,IACN0jR,QAAS,2KACR,CACD1jR,KAAM,IACN0jR,QAAS,mCACR,CACD1jR,KAAM,IACN0jR,QAAS,yFACR,CACD1jR,KAAM,IACN0jR,QAAS,mFACR,CACD1jR,KAAM,IACN0jR,QAAS,+GACR,CACD1jR,KAAM,IACN0jR,QAAS,6BACR,CACD1jR,KAAM,IACN0jR,QAAS,mFACR,CACD1jR,KAAM,IACN0jR,QAAS,2GACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,+CACR,CACD1jR,KAAM,IACN0jR,QAAS,6FACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,qPACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,2DACR,CACD1jR,KAAM,IACN0jR,QAAS,mCACR,CACD1jR,KAAM,IACN0jR,QAAS,qGACR,CACD1jR,KAAM,IACN0jR,QAAS,qGACR,CACD1jR,KAAM,IACN0jR,QAAS,yFACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,mMACR,CACD1jR,KAAM,IACN0jR,QAAS,+CACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,2DACR,CACD1jR,KAAM,IACN0jR,QAAS,6BACR,CACD1jR,KAAM,IACN0jR,QAAS,uFACR,CACD1jR,KAAM,IACN0jR,QAAS,mFACR,CACD1jR,KAAM,IACN0jR,QAAS,qMACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,oBACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,gBACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,qDACR,CACD1jR,KAAM,IACN0jR,QAAS,2EACR,CACD1jR,KAAM,IACN0jR,QAAS,mFACR,CACD1jR,KAAM,KACN0jR,QAAS,gBACR,CACD1jR,KAAM,IACN0jR,QAAS,iLACR,CACD1jR,KAAM,IACN0jR,QAAS,mCACR,CACD1jR,KAAM,IACN0jR,QAAS,yFACR,CACD1jR,KAAM,IACN0jR,QAAS,yFACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,+GACR,CACD1jR,KAAM,IACN0jR,QAAS,mCACR,CACD1jR,KAAM,IACN0jR,QAAS,mFACR,CACD1jR,KAAM,IACN0jR,QAAS,iHACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,+CACR,CACD1jR,KAAM,IACN0jR,QAAS,mGACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,qPACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,KACN0jR,QAAS,UACR,CACD1jR,KAAM,IACN0jR,QAAS,2DACR,CACD1jR,KAAM,IACN0jR,QAAS,mCACR,CACD1jR,KAAM,IACN0jR,QAAS,qGACR,CACD1jR,KAAM,IACN0jR,QAAS,yGACR,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AAC,SAAU,SAAU,UAC/D,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU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iD,KAAK6tZ,yBAAyB9wZ,SAAS,IAAK,KAC5CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,OAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,OAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,OAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,OAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,OAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,OAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAE7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAM,MAC7CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,MAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,MAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,MAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,MAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,MAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,MAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,MAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,KAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9CiD,KAAK6tZ,yBAAyB9wZ,SAAS,MAAO,OAC9C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AAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxC1D,EAA8B8D,kBAAoB,CAC9C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,KAEtB9D,EAzkBwC,GCT/CxzY,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA0CzCm3Y,GAAiC,SAAUz2Y,GAE3C,SAASy2Y,EAAgBC,EAAqBr5V,EAAMxoD,GAChD,IAAIj0B,EAAQo/B,EAAO79B,KAAKtB,KAAMw8E,EAAwB,qBAAVxoD,EAA2B6hZ,aAA+BD,EAAmBC,EAAoB7hZ,MAAQmtW,GAAa6O,QAAWh8W,IAAUh0B,KAwBvL,OAnBAD,EAAMuyX,qBAAuB,IAAI3E,GAMjC5tX,EAAM+1a,UAAY,CAAC,UAAW,mBAAoB,mBAAoB,oBAClE,kBAAmB,iBAAkB,aAErC/1a,EAAMg2a,cADyB,qBAAxBF,EACez0C,GAAc2wC,UAE9B8D,aAA+BD,EACfC,EAAoBjgW,WAGpBigW,EAE1B91a,EAAMi2a,aACNj2a,EAAMk2a,sBACCl2a,EA8HX,OAxJAs+B,GAAUu3Y,EAAiBz2Y,GA4B3BjhC,OAAOwpB,eAAekuZ,EAAgB15a,UAAW,aAAc,CAO3DyrB,IAAK,WACD,OAAO3nB,KAAK+1a,eAEhBjuZ,YAAY,EACZC,cAAc,IAOlB6tZ,EAAgB15a,UAAU85a,WAAa,WACnC,GAAIh2a,KAAK41E,aAAewrT,GAAc7xS,QAAUvvF,KAAK41E,aAAewrT,GAAckxC,aAAc,CAC5F,IAAIt+Y,EAAQh0B,KAAKg0B,MACjBA,KAAWmtW,GAAajiT,KAAOiiT,GAAa9hT,QAC5Cr/E,KAAK8sM,SAAS94K,KAOtB4hZ,EAAgB15a,UAAUiyY,aAAe,SAAU57H,EAAMvnQ,GACrD,GAAY,MAARunQ,EACA,MAAM,IAAI3xQ,MAAM,8BAKpB,IAHA,IAAI8uC,EAAQ,EAGH9yC,GAFEoD,KAAKoa,KAEH,GAAGzY,GADhB4wQ,EAAOqjK,EAAgB5wP,QAAQutF,IACJ11Q,OAAQD,EAAI+E,EAAK/E,IAAK,CAC7C,IAAI44P,EAAK+c,EAAK31Q,GAEd8yC,GADgB1vC,KAAKk2a,qBAAqB1gL,EAAIxqP,GAGlD,IAAIwxE,EAAOx8E,KAAKiwY,QAAQoE,QAAQrpY,GAGhC,OAFA0kC,GAAUqgW,GAAQiB,mBAAqBx0T,EACvC9sC,EAAQ1vC,KAAK6wY,oBAAoBt+H,EAAMvnQ,EAAQ0kC,IAOnDkmY,EAAgB15a,UAAUu0Y,aAAe,SAAU5zT,GAC/C,IAAIgP,GAAQ,EACRsqV,EAASt5V,EACb,GAAc,MAAVs5V,EAAgB,CAChB,IAAIC,EAAmBp2a,KAAK41E,aAAeugW,EAAOvgW,WAC9CygW,IAAiBl1C,GAAa5hT,UAAY4hT,GAAa+O,WACvDomC,GAAct2a,KAAKg0B,MAAQqiZ,MAAkBF,EAAOniZ,MAAQqiZ,GAChExqV,EAASuqV,GAAmBE,EAEhC,OAAOzqV,GAMX+pV,EAAgB15a,UAAU+5a,oBAAsB,WAGhC/tD,GAAYnsR,MAAMkD,OAAOj/F,MAErC,IAAI4wY,EAGAX,EAAU4hC,GAA8BC,WAAW9xa,KAAK+1a,cAAe/1a,KAAKg0B,MAAOh0B,KAAKw8E,MAC5Fx8E,KAAKiwY,QAAUA,EACfW,EAAY5wY,KAAKimZ,kBACjBjmZ,KAAK2wY,aAAaC,IAMtBglC,EAAgB15a,UAAU+pZ,gBAAkB,WACxC,IAAIl0B,EAAa,IAAID,GAIrB,GAHAC,EAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBnnX,KAAM,IAAI69W,GAAQhpX,KAAKsyX,qBAAqBz1S,OAChGk1S,EAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBnE,QAAS,IAAInF,GAAQhpX,KAAKsyX,qBAAqBrE,QACnG8D,EAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBpE,SAAU,IAAIlF,GAAQhpX,KAAKiwY,QAAQuR,iBACnFxhZ,KAAK41E,aAAewrT,GAAc7xS,QAAUvvF,KAAK41E,aAAewrT,GAAckxC,aAAc,CAC5F,IAAIjrD,EAAWrnX,KAAK81a,UAAUt0C,GAAa+0C,iBAC3CxkD,EAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBjL,SAAU,IAAI2B,GAAQ3B,IAE9E,OAAO0K,GAMX6jD,EAAgB15a,UAAUg6a,qBAAuB,SAAU51Q,EAAUt1J,GACjE,IACIkxV,EAAO,EAUX,OATAA,EAAO57L,EAASl3H,WAAW,GACT,MAAdppC,KAAKoa,MAA8B,MAAdpa,KAAKoa,MAA8B,MAAdpa,KAAKoa,MACjC,MAAdpa,KAAKoa,MAA8B,MAAdpa,KAAKoa,OAC1B8hV,GAAc05E,EAAgBY,YAElCt6E,EAAQA,GAAQ,GAAc,MAATA,EAAgBA,EAAO,EAC9Bl8V,KAAKiwY,QACMyS,WACN3uU,MAAMmoR,IAO7B05E,EAAgB5wP,QAAU,SAAUzyK,GAChC,OAAOA,GAOXqja,EAAgBY,WAAa,GACtBZ,EAzJ0B,CA0JnC7lC,ICpME1xW,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA6CzCypV,GAA6B,SAAU/oV,GAEvC,SAAS+oV,EAAYuuD,GACjB,IAAI12a,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAMjCD,EAAM22a,cAAgB,GAMtB32a,EAAMglX,aAAe,KACrBhlX,EAAMS,SAAWT,EACjB,IAAI42a,GAAU,EACW,qBAAdF,GACPvuD,EAAY0uD,gBAAkB,IAAIvF,GAClCsF,GAAU,GAGVA,EAAUF,EAEd,IAAItuD,EAAU,IAAIhC,GAClBpmX,EAAMwoX,wBAAwBJ,GAC9B,IAAIsB,EAAa,IAAI0R,GACrB1R,EAAWgtD,UAAYE,EACvBltD,EAAWjpX,SAAWT,EACtBA,EAAMyoX,cAAciB,GACpB,IAAIp5S,EAAU,IAAI2qT,GAOlB,OANAj7X,EAAM2oX,WAAWr4S,GACjB83S,EAAQp/V,IAAIsnD,GACZA,EAAQtiC,UAAY,EACpBhuC,EAAMoua,kBAAoB,IAAIkC,GAAqBtwa,GACnDA,EAAM82a,uBAAyB,IAAI9F,GAA0Bhxa,GAC7DswE,EAAQu9S,MAAQ7tX,EAAMoua,kBACfpua,EA8PX,OAnSAs+B,GAAU6pV,EAAa/oV,GAuCvBjhC,OAAOwpB,eAAewgW,EAAa,cAAe,CAM9CvgW,IAAK,WAID,OAHgC,MAA5B3nB,KAAK82a,sBACL92a,KAAK82a,oBAAsB,IAAIlB,GAAgBx0C,GAAc2wC,UAAW,IAErE/xa,KAAK82a,qBAEhBhvZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAewgW,EAAYhsX,UAAW,WAAY,CAKrDyrB,IAAK,WACD,OAAO3nB,KAAKmua,mBAEhBrmZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAewgW,EAAYhsX,UAAW,eAAgB,CAKzDyrB,IAAK,WAID,OAHqB,MAAjB3nB,KAAKm9F,WACLn9F,KAAKm9F,SAAW,IAAIwlS,GAAgB3iY,KAAK02a,gBAEtC12a,KAAKm9F,UAiChBt1E,IAAK,SAAUrrB,GACXwD,KAAKm9F,SAAW3gG,GAEpBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAewgW,EAAYhsX,UAAW,QAAS,CAkBlDyrB,IAAK,WACD,OAAO3nB,KAAK62a,wBAEhB/uZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAewgW,EAAa,QAAS,CAKxCvgW,IAAK,WACD,MAA2C,qBAAhCugW,EAAY0uD,iBAAkE,MAA/B1uD,EAAY0uD,gBAC3D,IAAIvF,GAERnpD,EAAY0uD,iBAMvB/uZ,IAAK,SAAUrrB,GACXwD,KAAK42a,gBAAkBp6a,GAE3BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAewgW,EAAa,cAAe,CAK9CvgW,IAAK,WACD,OAAO3nB,KAAK+2a,gBAMhBlvZ,IAAK,SAAUrrB,GACXwD,KAAK+2a,eAAiBv6a,GAE1BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAewgW,EAAYhsX,UAAW,aAAc,CAMvDyrB,IAAK,WACD,OAAK3nB,KAAK2na,gBAAkB7mC,GAAcoH,KAAUloY,KAAK2na,gBAAkB7mC,GAAcwH,MACjFtoY,KAAK2na,gBAAkB7mC,GAAcsH,UAClCpoY,KAAK2na,cAGL7mC,GAAcoH,KAG7BrgX,IAAK,SAAUrrB,GACNA,IAAUskY,GAAcoH,KAAU1rY,IAAUskY,GAAcwH,MAC1D9rY,IAAUskY,GAAcsH,UACzBpoY,KAAK2na,cAAgBnra,EAGrBwD,KAAK2na,cAAgB7mC,GAAcoH,KAG3CpgX,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAewgW,EAAYhsX,UAAW,WAAY,CAMrDyrB,IAAK,WAID,OAHyB,MAArB3nB,KAAKqua,eACLrua,KAAKqua,aAAe,IAAIxC,IAErB7ra,KAAKqua,cAEhBxmZ,IAAK,SAAUrrB,GACXwD,KAAKqua,aAAe7xa,GAExBsrB,YAAY,EACZC,cAAc,IAElBmgW,EAAYhsX,UAAU6sX,QAAU,SAAU5nB,EAAQ53M,EAAMC,GAEpD,GADAxpJ,KAAKg3a,qBACU,OAAX71E,EACA,MAAM,IAAIvgW,MAAM,kCAEpBZ,KAAK+kX,aAAe5jB,EACpB,IAAI8E,EAAS,IAAI6e,GAAU3jB,GAE3B,GADA8E,EAAOzlW,SAAWR,KACE,mBAATupJ,GAAsC,qBAATC,EACpC,OAAOxpJ,KAAKypX,WAAWzrH,KAAKioG,GAG5BjmW,KAAKypX,WAAWzrH,KAAKioG,EAAQ18M,IAOrC2+N,EAAYhsX,UAAU86a,mBAAqB,WACd,IAArBh3a,KAAK4tX,MAAM9yT,OACX96D,KAAK4tX,MAAM7kW,OAsBnBm/V,EAAYhsX,UAAUif,QAAU,WAC5Bnb,KAAKqwE,aAAUr0E,EACfgE,KAAKquX,gBAAaryX,EAClBgE,KAAKw9X,sBAAmBxhY,EACxBgE,KAAK62a,4BAAyB76a,EAC9BgE,KAAKioX,oBAAiBjsX,EACtBgE,KAAKklE,kBAAelpE,EACpBgE,KAAKqua,kBAAerya,EACpBgE,KAAK2na,mBAAgB3ra,EACrBgE,KAAKmua,uBAAoBnya,EACzBksX,EAAYnsR,MAAM5gF,UAClBnb,KAAKypX,WAAW+R,WAAWrgX,UAC3B+sW,EAAYnsR,WAAQ//F,EACpBgE,KAAK+kX,aAAa5pW,WAOtB+sW,EAAY4uD,oBAAsB,KAMlC5uD,EAAY6uD,gBAAiB,EACtB7uD,EApSsB,CAqS/BF,ICzUEivD,GAA4B,WAM5B,SAASA,IACL,IAAIC,EAAuB,IAAI7tC,GAAO,IAAI7C,GAAS,EAAG,EAAG,IACzD0wC,EAAqBl8V,UAAY4lT,GAAa6I,MAC9C,IAAI0tC,EAAwB,IAAI9tC,GAAO,IAAI7C,GAAS,EAAG,EAAG,IAC1D2wC,EAAsBn8V,UAAY4lT,GAAa6I,MAC/C,IAAI2tC,EAAsB,IAAI/tC,GAAO,IAAI7C,GAAS,EAAG,EAAG,IACxD4wC,EAAoBp8V,UAAY4lT,GAAa6I,MAC7C,IAAI4tC,EAAyB,IAAIhuC,GAAO,IAAI7C,GAAS,EAAG,EAAG,IAC3D6wC,EAAuBr8V,UAAY4lT,GAAa6I,MAChDzpY,KAAKs3a,QAAUJ,EACfl3a,KAAKu3a,SAAWJ,EAChBn3a,KAAKw3a,OAASJ,EACdp3a,KAAKy3a,UAAYJ,EA4FrB,OA1FAn5a,OAAOwpB,eAAeuvZ,EAAW/6a,UAAW,OAAQ,CAMhDyrB,IAAK,WACD,OAAO3nB,KAAKs3a,SAEhBzvZ,IAAK,SAAUrrB,GACXwD,KAAKs3a,QAAU96a,GAEnBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuvZ,EAAW/6a,UAAW,QAAS,CAKjDyrB,IAAK,WACD,OAAO3nB,KAAKu3a,UAEhB1vZ,IAAK,SAAUrrB,GACXwD,KAAKu3a,SAAW/6a,GAEpBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuvZ,EAAW/6a,UAAW,MAAO,CAK/CyrB,IAAK,WACD,OAAO3nB,KAAKw3a,QAEhB3vZ,IAAK,SAAUrrB,GACXwD,KAAKw3a,OAASh7a,GAElBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuvZ,EAAW/6a,UAAW,SAAU,CAKlDyrB,IAAK,WACD,OAAO3nB,KAAKy3a,WAEhB5vZ,IAAK,SAAUrrB,GACXwD,KAAKy3a,UAAYj7a,GAErBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuvZ,EAAW/6a,UAAW,MAAO,CAK/C2rB,IAAK,SAAUrrB,GACXwD,KAAKs3a,QAAUt3a,KAAKu3a,SAAWv3a,KAAKw3a,OAASx3a,KAAKy3a,UAAYj7a,GAElEsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuvZ,EAAW/6a,UAAW,QAAS,CAKjDyrB,IAAK,WACD,OAAS3nB,KAAKs3a,UAAYt3a,KAAKu3a,UAAcv3a,KAAKs3a,UAAYt3a,KAAKw3a,QAAYx3a,KAAKs3a,UAAYt3a,KAAKy3a,WAEzG3vZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuvZ,EAAY,UAAW,CAKzCtvZ,IAAK,WACD,OAAO,IAAIsvZ,GAEfnvZ,YAAY,EACZC,cAAc,IAEXkvZ,EA9GqB,GAiH5BS,GAA6B,WAC7B,SAASA,EAAY50Y,EAAMC,EAAOC,EAAKC,GAKnCjjC,KAAK23a,YAAa,EAKlB33a,KAAK43a,aAAc,EAKnB53a,KAAK63a,WAAY,EAKjB73a,KAAK83a,cAAe,EACA,qBAATh1Y,GAEP9iC,KAAK+3a,QAAU/3a,KAAKg4a,SAAW,KAE/Bh4a,KAAKi4a,UAAYj4a,KAAKk4a,OAAS,KAG/Bl4a,KAAK+3a,QAAUj1Y,EACf9iC,KAAKg4a,SAAWj1Y,EAChB/iC,KAAKk4a,OAASl1Y,EACdhjC,KAAKi4a,UAAYh1Y,EACjBjjC,KAAK23a,YAAa,EAClB33a,KAAK43a,aAAc,EACnB53a,KAAK63a,WAAY,EACjB73a,KAAK83a,cAAe,GA+E5B,OA5EA55a,OAAOwpB,eAAegwZ,EAAYx7a,UAAW,OAAQ,CAMjDyrB,IAAK,WACD,OAAO3nB,KAAK+3a,SAEhBlwZ,IAAK,SAAUrrB,GACXwD,KAAK+3a,QAAUv7a,EACfwD,KAAK23a,YAAa,GAEtB7vZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegwZ,EAAYx7a,UAAW,QAAS,CAKlDyrB,IAAK,WACD,OAAO3nB,KAAKg4a,UAEhBnwZ,IAAK,SAAUrrB,GACXwD,KAAKg4a,SAAWx7a,EAChBwD,KAAK43a,aAAc,GAEvB9vZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegwZ,EAAYx7a,UAAW,MAAO,CAKhDyrB,IAAK,WACD,OAAO3nB,KAAKk4a,QAEhBrwZ,IAAK,SAAUrrB,GACXwD,KAAKk4a,OAAS17a,EACdwD,KAAK63a,WAAY,GAErB/vZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegwZ,EAAYx7a,UAAW,SAAU,CAKnDyrB,IAAK,WACD,OAAO3nB,KAAKi4a,WAEhBpwZ,IAAK,SAAUrrB,GACXwD,KAAKi4a,UAAYz7a,EACjBwD,KAAK83a,cAAe,GAExBhwZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegwZ,EAAYx7a,UAAW,MAAO,CAKhD2rB,IAAK,SAAUrrB,GACXwD,KAAK+3a,QAAU/3a,KAAKg4a,SAAWh4a,KAAKk4a,OAASl4a,KAAKi4a,UAAYz7a,EAC9DwD,KAAK23a,YAAa,EAClB33a,KAAK43a,aAAc,EACnB53a,KAAK63a,WAAY,EACjB73a,KAAK83a,cAAe,GAExBhwZ,YAAY,EACZC,cAAc,IAEX2vZ,EAnHsB,IxBrHjC,SAAWhjB,GAKPA,EAAsBA,EAA+B,QAAI,GAAK,UAK9DA,EAAsBA,EAA8B,OAAI,GAAK,SAVjE,CAWGA,KAA0BA,GAAwB,KyBhBrD,IAyZWyjB,GAzZP95Y,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAkBzC25Y,GAAkC,WAClC,SAASA,KAyET,OAvEAl6a,OAAOwpB,eAAe0wZ,EAAiBl8a,UAAW,kBAAmB,CAMjEyrB,IAAK,WACD,OAAO3nB,KAAKq4a,qBAEhBxwZ,IAAK,SAAUrrB,GACXwD,KAAKq4a,oBAAsB77a,GAE/BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe0wZ,EAAiBl8a,UAAW,YAAa,CAK3DyrB,IAAK,WACD,OAAO3nB,KAAKs4a,eAEhBzwZ,IAAK,SAAUrrB,GACXwD,KAAKs4a,cAAgB97a,GAEzBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe0wZ,EAAiBl8a,UAAW,UAAW,CAKzDyrB,IAAK,WACD,OAAO3nB,KAAKu4a,aAEhB1wZ,IAAK,SAAUrrB,GACXwD,KAAKu4a,YAAc/7a,GAEvBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe0wZ,EAAiBl8a,UAAW,OAAQ,CAKtDyrB,IAAK,WACD,OAAO3nB,KAAKw4a,UAEhB3wZ,IAAK,SAAUrrB,GACXwD,KAAKw4a,SAAWh8a,GAEpBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe0wZ,EAAiBl8a,UAAW,kBAAmB,CAKjEyrB,IAAK,WACD,OAAO3nB,KAAKy4a,qBAEhB5wZ,IAAK,SAAUrrB,GACXwD,KAAKy4a,oBAAsBj8a,GAE/BsrB,YAAY,EACZC,cAAc,IAEXqwZ,EA1E2B,GAgFlCM,GAA8B,SAAUv5Y,GAOxC,SAASu5Y,IACL,IAAI34a,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAIjC,OAHAD,EAAM44a,uBAAyBjkB,GAAsBkkB,QACrD74a,EAAM84a,0BAA2B,EACjC94a,EAAM+4a,2BAA6BX,GAA0BrgI,SACtD/3S,EAqFX,OAhGAs+B,GAAUq6Y,EAAcv5Y,GAaxBjhC,OAAOwpB,eAAegxZ,EAAax8a,UAAW,cAAe,CAMzDyrB,IAAK,WAID,MAHoC,qBAAzB3nB,KAAK+4a,kBACZ/4a,KAAK+4a,gBAAkB,GAEpB/4a,KAAK+4a,iBAEhBlxZ,IAAK,SAAUrrB,GACXwD,KAAK+4a,gBAAkBv8a,GAE3BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegxZ,EAAax8a,UAAW,yBAA0B,CAKpEyrB,IAAK,WACD,OAAO3nB,KAAK84a,4BAEhBjxZ,IAAK,SAAUrrB,GACXwD,KAAK84a,2BAA6Bt8a,GAEtCsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegxZ,EAAax8a,UAAW,0BAA2B,CAKrEyrB,IAAK,WACD,OAAO3nB,KAAK64a,0BAEhBhxZ,IAAK,SAAUrrB,GACXwD,KAAK64a,yBAA2Br8a,GAEpCsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegxZ,EAAax8a,UAAW,cAAe,CAKzDyrB,IAAK,WAID,MAHoC,qBAAzB3nB,KAAKg5a,kBACZh5a,KAAKg5a,gBAAkB,IAAItB,IAExB13a,KAAKg5a,iBAEhBnxZ,IAAK,SAAUrrB,GACyB,qBAAzBwD,KAAKg5a,iBACZh5a,KAAKg5a,gBAAkB,IAAItB,GAC3B13a,KAAKg5a,gBAAkBx8a,GAGvBwD,KAAKg5a,gBAAkBx8a,GAG/BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegxZ,EAAax8a,UAAW,qBAAsB,CAKhEyrB,IAAK,WACD,OAAO3nB,KAAK24a,wBAEhB9wZ,IAAK,SAAUrrB,GACXwD,KAAK24a,uBAAyBn8a,GAElCsrB,YAAY,EACZC,cAAc,IAEX2wZ,EAjGuB,CAkGhCN,IAKEa,GAAkC,SAAU95Y,GAM5C,SAAS85Y,IACL,IAAIl5a,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAMjC,OADAD,EAAMm5a,gBAAkBjC,GAAWtyN,QAC5B5kN,EAgDX,OA5DAs+B,GAAU46Y,EAAkB95Y,GAc5BjhC,OAAOwpB,eAAeuxZ,EAAiB/8a,UAAW,eAAgB,CAM9DyrB,IAAK,WACD,OAAO3nB,KAAKgL,QAEhB6c,IAAK,SAAUrrB,GACXwD,KAAKgL,OAASxO,GAElBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuxZ,EAAiB/8a,UAAW,UAAW,CAKzDyrB,IAAK,WACD,OAAO3nB,KAAKk5a,iBAEhBrxZ,IAAK,SAAUrrB,GACXwD,KAAKk5a,gBAAkB18a,GAE3BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuxZ,EAAiB/8a,UAAW,cAAe,CAK7DyrB,IAAK,WACD,OAAO3nB,KAAKg5a,iBAEhBnxZ,IAAK,SAAUrrB,GACiB,MAAxBwD,KAAKg5a,iBAA2D,qBAAzBh5a,KAAKg5a,kBAC5Ch5a,KAAKg5a,gBAAkB,IAAItB,IAE/B13a,KAAKg5a,gBAAkBx8a,GAE3BsrB,YAAY,EACZC,cAAc,IAEXkxZ,EA7D2B,CA8DpCb,IAKEe,GAAiC,WAcjC,SAASA,KAwHT,OArHAj7a,OAAOwpB,eAAeyxZ,EAAgBj9a,UAAW,kBAAmB,CAMhEyrB,IAAK,WACD,OAAO3nB,KAAKo5a,wBAEhBtxZ,YAAY,EACZC,cAAc,IAElBoxZ,EAAgBj9a,UAAUm9a,mBAAqB,SAAU78a,GAErD,GADAwD,KAAKo5a,uBAAyB58a,EACH,qBAAhBwD,KAAKO,OACZ,IAAK,IAAI3D,EAAI,EAAGA,EAAIoD,KAAKO,OAAO+/D,MAAMxF,MAAOl+D,IACzCoD,KAAKO,OAAO+/D,MAAMg5W,QAAQ18a,GAAGo3B,MAAMulZ,gBAAkB/8a,GAIjE0B,OAAOwpB,eAAeyxZ,EAAgBj9a,UAAW,YAAa,CAK1DyrB,IAAK,WACD,OAAO3nB,KAAKw5a,kBAEhB1xZ,YAAY,EACZC,cAAc,IAElBoxZ,EAAgBj9a,UAAUu9a,aAAe,SAAUj9a,GAE/C,GADAwD,KAAKw5a,iBAAmBh9a,EACG,qBAAhBwD,KAAKO,OACZ,IAAK,IAAI3D,EAAI,EAAGA,EAAIoD,KAAKO,OAAO+/D,MAAMxF,MAAOl+D,IACzCoD,KAAKO,OAAO+/D,MAAMg5W,QAAQ18a,GAAGo3B,MAAM0lZ,UAAYl9a,GAI3D0B,OAAOwpB,eAAeyxZ,EAAgBj9a,UAAW,UAAW,CAKxDyrB,IAAK,WACD,OAAO3nB,KAAK25a,gBAEhB7xZ,YAAY,EACZC,cAAc,IAElBoxZ,EAAgBj9a,UAAU09a,WAAa,SAAUp9a,GAE7C,GADAwD,KAAK25a,eAAiBn9a,EACK,qBAAhBwD,KAAKO,OACZ,IAAK,IAAI3D,EAAI,EAAGA,EAAIoD,KAAKO,OAAO+/D,MAAMxF,MAAOl+D,IACzCoD,KAAKO,OAAO+/D,MAAMg5W,QAAQ18a,GAAGo3B,MAAM6lZ,QAAUr9a,GAIzD0B,OAAOwpB,eAAeyxZ,EAAgBj9a,UAAW,OAAQ,CAKrDyrB,IAAK,WACD,OAAO3nB,KAAK85a,aAEhBhyZ,YAAY,EACZC,cAAc,IAElBoxZ,EAAgBj9a,UAAU+vX,QAAU,SAAUzvX,GAE1C,GADAwD,KAAK85a,YAAct9a,EACQ,qBAAhBwD,KAAKO,OACZ,IAAK,IAAI3D,EAAI,EAAGA,EAAIoD,KAAKO,OAAO+/D,MAAMxF,MAAOl+D,IACzCoD,KAAKO,OAAO+/D,MAAMg5W,QAAQ18a,GAAGo3B,MAAM6oD,KAAOrgF,GAItD0B,OAAOwpB,eAAeyxZ,EAAgBj9a,UAAW,SAAU,CAKvDyrB,IAAK,WAID,MAHkC,qBAAvB3nB,KAAK+5a,eACZ/5a,KAAKg6a,UAAU,IAAI/C,IAEhBj3a,KAAK+5a,eAEhBjyZ,YAAY,EACZC,cAAc,IAElBoxZ,EAAgBj9a,UAAU89a,UAAY,SAAUx9a,GAE5C,GADAwD,KAAK+5a,cAAgBv9a,EACM,qBAAhBwD,KAAKO,OACZ,IAAK,IAAI3D,EAAI,EAAGA,EAAIoD,KAAKO,OAAO+/D,MAAMxF,MAAOl+D,IACzCoD,KAAKO,OAAO+/D,MAAMg5W,QAAQ18a,GAAGo3B,MAAM4rD,QAAUpjF,GAQzD28a,EAAgBj9a,UAAU+9a,UAAY,SAAU15a,GAC5CP,KAAKO,OAASA,GAElBrC,OAAOwpB,eAAeyxZ,EAAgBj9a,UAAW,kBAAmB,CAKhEyrB,IAAK,WACD,OAAO3nB,KAAKk6a,wBAEhBpyZ,YAAY,EACZC,cAAc,IAEXoxZ,EAtI0B,IA8IrC,SAAWhB,GAKPA,EAA0BA,EAAoC,SAAI,GAAK,WAKvEA,EAA0BA,EAAoC,SAAI,GAAK,WAV3E,CAWGA,KAA8BA,GAA4B,KC7Z7D,ICmCWgC,GDnCPC,GAAiC,WAMjC,SAASA,EAAgBp5a,GACrBhB,KAAKq6a,cAAgBr5a,EAiDzB,OA/CA9C,OAAOwpB,eAAe0yZ,EAAgBl+a,UAAW,WAAY,CAMzDyrB,IAAK,WACD,OAAO3nB,KAAKq6a,eAEhBvyZ,YAAY,EACZC,cAAc,IAMlBqyZ,EAAgBl+a,UAAU2G,WAAa,WACnC,OAAO7C,KAAKq6a,eAOhBD,EAAgBl+a,UAAUgoQ,OAAS,SAAU34I,GACzC,OAAOvrH,KAAKs6a,eAAe/uT,IAE/B6uT,EAAgBl+a,UAAUq+a,SAAW,SAAUhvT,GAC3C,OAAOvrH,KAAKs6a,eAAe/uT,IAM/B6uT,EAAgBl+a,UAAUska,YAAc,SAAUr7V,GAG9C,OAFcA,EAAYs7V,QACH13Y,OAG3BqxZ,EAAgBl+a,UAAUs+a,kBAAoB,SAAUjvT,GACpD,GAAc,MAATA,EACD,MAAM,IAAI3qH,MAAM,iCAIpB,OAFa2qH,EAAMvgH,OAAOyva,kBAAoBlvT,EAAMvgH,OAAO0va,eACrD,IAAIv8C,GAAW5yQ,EAAMuqQ,OAAOv0W,EAAG,EAAGgqG,EAAMuqQ,OAAOpmV,MAAO67E,EAAMuqQ,OAAOnmV,SAGtEyqY,EAxD0B,GA2DjCO,GAAiC,WACjC,SAASA,EAAgBC,GACK,qBAAfA,IAIP56a,KAAK66a,MAAQD,EAAWC,MACxB76a,KAAKkkQ,OAAS02K,EAAW12K,OACzBlkQ,KAAK06a,eAAiBE,EAAWF,eACjC16a,KAAK86a,UAAYF,EAAWH,mBAsEpC,OAnEAv8a,OAAOwpB,eAAeizZ,EAAgBz+a,UAAW,SAAU,CAMvDyrB,IAAK,WAID,OAAO3nB,KAAKy/P,YAEhB53O,IAAK,SAAUrrB,GACXwD,KAAKy/P,WAAajjQ,GAEtBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeizZ,EAAgBz+a,UAAW,QAAS,CAKtDyrB,IAAK,WAID,OAAO3nB,KAAKovY,WAEhBvnX,IAAK,SAAUrrB,GACXwD,KAAKovY,UAAY5yY,GAErBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeizZ,EAAgBz+a,UAAW,iBAAkB,CAK/DyrB,IAAK,WAID,MAHyC,qBAA9B3nB,KAAK+6a,sBAAqE,MAA7B/6a,KAAK+6a,uBACzD/6a,KAAK+6a,qBAAuB,IAAI58C,GAAW,EAAG,EAAG,EAAG,IAEjDn+X,KAAK+6a,sBAEhBlzZ,IAAK,SAAUrrB,GACXwD,KAAK+6a,qBAAuBv+a,EAC5BwD,KAAK86a,WAAY,GAErBhzZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeizZ,EAAgBz+a,UAAW,oBAAqB,CAKlEyrB,IAAK,WAID,OAAO3nB,KAAK86a,WAEhBhzZ,YAAY,EACZC,cAAc,IAEX4yZ,EA/E0B,GAkFjCK,GAAiC,WACjC,SAASA,KA6CT,OA3CA98a,OAAOwpB,eAAeszZ,EAAgB9+a,UAAW,OAAQ,CAMrDyrB,IAAK,WACD,OAAO3nB,KAAKqoa,SAEhBxgZ,IAAK,SAAUrrB,GACXwD,KAAKqoa,QAAU7ra,GAEnBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeszZ,EAAgB9+a,UAAW,SAAU,CAKvDyrB,IAAK,WACD,OAAO,IAAIw2W,GAAWn+X,KAAKsja,aAAa/hZ,EAAGvhB,KAAKsja,aAAahtZ,EAAGtW,KAAKsja,aAAa5zX,MAAO1vC,KAAKsja,aAAa3zX,SAE/G9nB,IAAK,SAAUrrB,GACXwD,KAAKsja,aAAe9ma,GAExBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeszZ,EAAgB9+a,UAAW,SAAU,CAKvDyrB,IAAK,WACD,OAAO3nB,KAAKi7a,cAEhBpzZ,IAAK,SAAUrrB,GACXwD,KAAKi7a,aAAez+a,GAExBsrB,YAAY,EACZC,cAAc,IAEXizZ,EA9C0B,GAiDjCE,GAAiC,WAMjC,SAASA,EAAgBv7U,EAAMm2R,GAC3B91X,KAAKqoa,QAAU1oU,EACf3/F,KAAKsja,aAAextC,EAyBxB,OAvBA53X,OAAOwpB,eAAewzZ,EAAgBh/a,UAAW,OAAQ,CAMrDyrB,IAAK,WACD,OAAO3nB,KAAKqoa,SAEhBvgZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAewzZ,EAAgBh/a,UAAW,SAAU,CAKvDyrB,IAAK,WACD,OAAO3nB,KAAKsja,cAEhBx7Y,YAAY,EACZC,cAAc,IAEXmzZ,EAjC0B,GE/LjCC,GAAkC,WAClC,SAASA,KAiFT,OA/EAj9a,OAAOwpB,eAAeyzZ,EAAiBj/a,UAAW,uBAAwB,CAMtEyrB,IAAK,WACD,MAAwC,qBAAzB3nB,KAAKo7a,iBAExBtzZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeyzZ,EAAiBj/a,UAAW,qBAAsB,CAKpEyrB,IAAK,WACD,MAAsC,qBAAvB3nB,KAAKq7a,eAExBvzZ,YAAY,EACZC,cAAc,IAGlBozZ,EAAiBj/a,UAAUo/a,kBAAoB,SAAUr7a,GACjDD,KAAKo7a,iBACLp7a,KAAKo7a,gBAAgBp7a,KAAMC,IAGnCk7a,EAAiBj/a,UAAUq/a,gBAAkB,SAAUt7a,GAC/CD,KAAKq7a,eACLr7a,KAAKq7a,cAAcr7a,KAAMC,IAGjCk7a,EAAiBj/a,UAAU62Y,WAAa,SAAUxpP,EAAMC,EAAMC,EAAMC,GAChE,GAAIF,aAAgBy0O,IAAgC,qBAAfz0O,EAAK95G,OAAyC,qBAAT+5G,EACtE,OAAOzpJ,KAAK+yY,WAAWxpP,EAAMC,EAAKjoI,EAAGioI,EAAKlzI,GAEzC,GAAoB,kBAATkzI,GAAqC,kBAATC,GAAqC,qBAATC,EACpE,OAAO1pJ,KAAK+yY,WAAWxpP,EAAMC,EAAMC,EAAM,MAExC,GAAID,aAAgB20O,IAAoC,qBAAf30O,EAAK95G,OAAyC,qBAAT+5G,EAC/E,OAAOzpJ,KAAK+yY,WAAWxpP,EAAMC,EAAM,MAElC,GAAIA,aAAgBy0O,IAAgC,qBAAfz0O,EAAK95G,OAAyB+5G,aAAgBkxR,GACpF,OAAO36a,KAAK+yY,WAAWxpP,EAAMC,EAAKjoI,EAAGioI,EAAKlzI,EAAGmzI,GAE5C,GAAoB,kBAATD,GAAqC,kBAATC,IAAsBC,aAAgBixR,IAA2B,MAARjxR,GAAe,CAChH,IAAIh6G,EAAS65G,EAAKypP,SAASjG,WAAWr9V,MAAQ85G,EAC1C61Q,EAAkB,IAAIlhC,GAAW30O,EAAMC,EAAM/5G,EAAO,GACxD,OAAO1vC,KAAK+yY,WAAWxpP,EAAM81Q,EAAiB31Q,GAE7C,GAAIF,aAAgB20O,IAAoC,qBAAf30O,EAAK95G,OAAyC,mBAAT+5G,EAE/E,OADAzpJ,KAAKw7a,YAAc/xR,EACZzpJ,KAAK+yY,WAAWxpP,EAAMC,EAAM,MAGnC,IAAIj+B,EAAQ,IAAIyvT,GACZzqC,EAAW/mP,EACXm0Q,EAAWl0Q,EAGf,GAFAl+B,EAAM5rB,KAAO4pD,EACbh+B,EAAMuqQ,OAASya,EACF,MAAThlR,EAAe,CACf,IAAIhqG,EAAIgqG,EAAMuqQ,OAAOv0W,EACjBjL,EAAIi1G,EAAMuqQ,OAAOx/W,EACE,IAAnBi1G,EAAMuqQ,OAAOv0W,IACbA,EAAI01Z,GAAWtyN,QAAQ5hL,MAAM2M,MAAQ,GAElB,IAAnB67E,EAAMuqQ,OAAOx/W,IACbA,EAAI2ga,GAAWtyN,QAAQ3hL,IAAI0M,MAAQ,GAEvC,IAAI+rY,EAAW,IAAIt9C,GAAW58W,EAAGjL,EAAGi1G,EAAMuqQ,OAAOpmV,MAAO67E,EAAMuqQ,OAAOnmV,QACrE47E,EAAMuqQ,OAAS2lD,EAInB,OAFAlwT,EAAMvgH,OAAsB,MAAZ2yZ,EAAoBA,EAAW,IAAIgd,GACtC36a,KAAKkkQ,OAAO34I,IAI1B4vT,EAlF2B,GCPlC98Y,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA0BzCi9Y,GAA8B,SAAUv8Y,GAOxC,SAASu8Y,EAAa16a,GAClB,OAAOm+B,EAAO79B,KAAKtB,KAAMgB,IAAYhB,KAuGzC,OA9GAq+B,GAAUq9Y,EAAcv8Y,GASxBjhC,OAAOwpB,eAAeg0Z,EAAax/a,UAAW,UAAW,CAKrDyrB,IAAK,WACD,OAAOwX,EAAOjjC,UAAU2G,WAAWvB,KAAKtB,OAE5C8nB,YAAY,EACZC,cAAc,IAOlB2zZ,EAAax/a,UAAUo+a,eAAiB,SAAU/uT,GAE9CvrH,KAAKgL,OAAwC,OAA9BhL,KAAKgB,QAAQizY,cAA8D,qBAA9Bj0Y,KAAKgB,QAAQizY,aAAgCj0Y,KAAKgB,QAAQizY,aAAe,KACrI,IAAI9uU,EAAcomD,EAAM5rB,KACpBg8U,EAAgBpwT,EAAMuqQ,OACtBvjX,EAAOvS,KAAKgB,QAAQxE,MACpBmC,EAAS,KACTi9a,EAAa,IAAIC,GAGrB,IAFAD,EAAWj8U,KAAOx6B,EAClBy2W,EAAW5jP,UAAYzlL,IACd,CACLqpa,EAAa57a,KAAK87a,aAAavpa,EAAM4yD,EAAaw2W,EAAepwT,GACjE5sH,EAASqB,KAAK+7a,gBAAgBH,GAC9B,MAGJ,OAAOj9a,GAMX+8a,EAAax/a,UAAU6/a,gBAAkB,SAAUH,GAE/C,OADa,IAAII,GAAoBJ,EAAWj8U,KAAMi8U,EAAW9lD,OAAQ8lD,EAAW5jP,UAAW4jP,EAAWK,iBAQ9GP,EAAax/a,UAAU4/a,aAAe,SAAUvpa,EAAM4yD,EAAaw2W,EAAepwT,GAC9E,IAAI5sH,EAAS,IAAIk9a,GACjBl9a,EAAOq5L,UAAYzlL,EACnB5T,EAAOghG,KAAOx6B,EACdw2W,EAAgB37a,KAAKk8a,mBAAmB/2W,EAAaw2W,GACrD,IACIQ,GADW,IAAIvvC,IACS1oI,OAAO3xP,EAAMvS,KAAKgB,QAAQ67E,KAAM78E,KAAKgL,OAAQ2wa,EAAex2W,EAAYimW,gBAAgBz7X,QAAQ,EAAO,IAAIuuV,GAAM,EAAG,IAC5Ik+C,EAA0C,MAA1BD,EAAankP,UAI7Bg7M,GAHaznR,EAAMvgH,OAAO6va,QAAUhrC,GAAmBwsC,YAC9BF,EAAan9R,MAE3B75E,EAAY6tU,UACvB/J,EAAQjpY,KAAKgB,QAAQszY,WACrBt0Y,KAAKgB,mBAAmBs7a,KACxBrzC,EAAMtzT,MAAQ,IAAI6wT,GAAS,EAAG,EAAG,MAErCwM,EAASkrB,uBAAuBie,EAAcn8a,KAAKgB,QAAQ67E,KAAM78E,KAAKgB,QAAQypY,IAAKxB,EAAO0yC,EAAe37a,KAAKgL,QAC/Fmxa,EAAa7uC,MAAM6uC,EAAa7c,UAAY,GAK3D,OAJA3ga,EAAOs9a,eAAiBjpC,EAASmsB,cAAcgd,EAAa7c,UAAY,EAAG6c,EAAcn8a,KAAKgB,QAAQ67E,KAAM8+V,EAAe37a,KAAKgL,QAChIrM,EAAOm3X,OAAS91X,KAAKu8a,kBAAkBp3W,EAAaw2W,EAAeQ,GACnEx9a,EAAOq5L,UAAYmkP,EAAankP,UAChCr5L,EAAOga,IAAOyja,EACPz9a,GAOX+8a,EAAax/a,UAAUggb,mBAAqB,SAAU/2W,EAAaw2W,GAC/D,IAAIv2W,EAAWD,EAAY6tU,SAASjG,WAEpC,OADA4uC,EAAchsY,OAAUgsY,EAAchsY,OAAS,EAAKgsY,EAAchsY,OAASy1B,EAASz1B,OAASgsY,EAAcrla,EACpGqla,GAOXD,EAAax/a,UAAUqgb,kBAAoB,SAAUp3W,EAAaw2W,EAAeQ,GAC7E,IAAIxc,EAAWwc,EAAa7sC,WACxB/tX,EAAIo6Z,EAAcp6Z,EAClBjL,EAAIqla,EAAcrla,EAClBo5B,EAASisY,EAAcjsY,MAAQ,EAAKisY,EAAcjsY,MAAQiwX,EAASjwX,MACnEC,EAASgwX,EAAShwX,OAGtBpuB,EAFkB4jD,EAAY6tU,SAASirB,4BAA4B0B,EAAUgc,EAAcp6Z,EAAGo6Z,EAAcrla,EAAGtW,KAAKgL,QAEpGuW,EAEhB,IAAIi7Z,EAAgBr3W,EAAY6tU,SAASusB,0BAA0BI,EAAShwX,OAAQgsY,EAAchsY,OAAQ3vC,KAAKgL,QAG/G,OADa,IAAImzX,GAAW58W,EAD5BjL,GAAKkma,EAC6B9sY,EAAOC,IAGtC+rY,EA/GuB,CAgHhCtB,IAEEyB,GACA,aAKAG,GAAqC,SAAU78Y,GAO/C,SAAS68Y,EAAoBr8U,EAAMm2R,EAAQ99L,EAAWikP,GAClD,IAAIl8a,EAAQo/B,EAAO79B,KAAKtB,KAAM2/F,EAAMm2R,IAAW91X,KAG/C,OAFAD,EAAM08a,cAAgBzkP,EACtBj4L,EAAM28a,mBAAqBT,EACpBl8a,EAyBX,OAnCAs+B,GAAU29Y,EAAqB78Y,GAY/BjhC,OAAOwpB,eAAes0Z,EAAoB9/a,UAAW,YAAa,CAM9DyrB,IAAK,WACD,OAAO3nB,KAAKy8a,eAEhB30Z,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAes0Z,EAAoB9/a,UAAW,iBAAkB,CAKnEyrB,IAAK,WACD,OAAO3nB,KAAK08a,oBAEhB50Z,YAAY,EACZC,cAAc,IAEXi0Z,EApC8B,CAqCvCd,ICvLE78Y,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAkCzCk+Y,GAAgC,SAAUx9Y,GAE1C,SAASw9Y,EAAerzR,EAAMC,EAAMC,EAAMC,EAAMC,GAC5C,IAAI3pJ,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAwDjC,OAlDAD,EAAM2qD,QAAU,GAKhB3qD,EAAM68a,aAAe,GAMrB78a,EAAM88a,kBAAmB,EAMzB98a,EAAM+8a,kBAAmB,EACL,qBAATxzR,IAGc,kBAATA,GAAqC,qBAATC,GACxCxpJ,EAAM2qD,QAAU4+F,EAChBvpJ,EAAM68a,aAAetzR,GAEA,kBAATA,GAAqBC,aAAgBwmP,IAA2B,qBAATvmP,GACnEzpJ,EAAM2qD,QAAU4+F,EAChBvpJ,EAAM68a,aAAetzR,EACrBvpJ,EAAM8na,QAAUt+Q,GAEK,kBAATD,GAAqBC,aAAgBwmP,IAAWvmP,aAAgB6/O,IAA0B,qBAAT5/O,GAC7F1pJ,EAAM2qD,QAAU4+F,EAChBvpJ,EAAM68a,aAAetzR,EACrBvpJ,EAAM8na,QAAUt+Q,EAChBxpJ,EAAM6na,OAASp+Q,GAEM,kBAATF,GAAqBC,aAAgBwmP,IAAWvmP,aAAgBq/O,IAA4B,qBAATp/O,GAC/F1pJ,EAAM2qD,QAAU4+F,EAChBvpJ,EAAM68a,aAAetzR,EACrBvpJ,EAAM8na,QAAUt+Q,EAChBxpJ,EAAMqqY,SAAW5gP,IAGjBzpJ,EAAM2qD,QAAU4+F,EAChBvpJ,EAAM68a,aAAetzR,EACrBvpJ,EAAM8na,QAAUt+Q,EAChBxpJ,EAAM6na,OAASp+Q,EACfzpJ,EAAMqqY,SAAW3gP,EACjB1pJ,EAAMiL,OAAS0+I,IAEZ3pJ,EAiUX,OA3XAs+B,GAAUs+Y,EAAgBx9Y,GA4D1BjhC,OAAOwpB,eAAei1Z,EAAezgb,UAAW,OAAQ,CA6BpDyrB,IAAK,WACD,OAAO3nB,KAAK0qD,SAEhB7iC,IAAK,SAAUrrB,GACXwD,KAAK48a,aAAepgb,EACpBwD,KAAK0qD,QAAUluD,GAEnBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAei1Z,EAAezgb,UAAW,QAAS,CAMrDyrB,IAAK,WACD,OAAO3nB,KAAK48a,cAEhB90Z,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAei1Z,EAAezgb,UAAW,MAAO,CAMnDyrB,IAAK,WACD,OAAO3nB,KAAK4na,QAGhB//Y,IAAK,SAAUrrB,GACXwD,KAAK4na,OAASpra,GAElBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAei1Z,EAAezgb,UAAW,QAAS,CAMrDyrB,IAAK,WACD,OAAO3nB,KAAKoqY,UAGhBviX,IAAK,SAAUrrB,GACXwD,KAAKoqY,SAAW5tY,GAEpBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAei1Z,EAAezgb,UAAW,OAAQ,CA6BpDyrB,IAAK,WACD,OAAO3nB,KAAK6na,SAEhBhgZ,IAAK,SAAUrrB,GACXwD,KAAK6na,QAAUrra,EACXwD,KAAK6na,mBAAmB+N,IAAmC,MAAhB51a,KAAK0qD,QAChD1qD,KAAK48a,aAAehH,GAAgB5wP,QAAQhlL,KAAK0qD,SAGjD1qD,KAAK48a,aAAe58a,KAAK0qD,SAGjC5iC,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAei1Z,EAAezgb,UAAW,eAAgB,CAK5DyrB,IAAK,WACD,OAAO3nB,KAAKgL,QAEhB6c,IAAK,SAAUrrB,GACXwD,KAAKgL,OAASxO,GAElBsrB,YAAY,EACZC,cAAc,IAOlB40Z,EAAezgb,UAAUo4Y,SAAW,WAChC,OAAyB,MAAjBt0Y,KAAKoqY,UAA6C,qBAAlBpqY,KAAKoqY,SAA4B,IAAItB,GAAc,IAAItC,GAAS,EAAG,EAAG,IAAMxmY,KAAKoqY,UAa7HuyC,EAAezgb,UAAUgoQ,OAAS,SAAU34I,GAGxC,OAFe,IAAImwT,GAAa17a,MACVkkQ,OAAO34I,IAGjCoxT,EAAezgb,UAAU6gb,SAAW,SAAUxzR,EAAMC,EAAMC,EAAMC,GAC5D,GAAIF,aAAgBy0O,IAAgC,qBAAfz0O,EAAK95G,OAAyC,qBAAT+5G,EAEtE,OADAzpJ,KAAK68a,kBAAmB,EACjB78a,KAAK+8a,SAASxzR,EAAMC,EAAKjoI,EAAGioI,EAAKlzI,GAEvC,GAAoB,kBAATkzI,GAAqC,kBAATC,GAAqC,qBAATC,EAEpE,OADA1pJ,KAAK68a,kBAAmB,EACjB78a,KAAK+8a,SAASxzR,EAAMC,EAAMC,EAAM,MAEtC,GAAID,aAAgB20O,IAAoC,qBAAf30O,EAAK95G,OAAyC,qBAAT+5G,EAC/E,OAAOzpJ,KAAK+8a,SAASxzR,EAAMC,EAAM,MAEhC,GAAIA,aAAgBy0O,IAAgC,qBAAfz0O,EAAK95G,OAAyB+5G,aAAgBkxR,GAEpF,OADA36a,KAAK68a,kBAAmB,EACjB78a,KAAK+8a,SAASxzR,EAAMC,EAAKjoI,EAAGioI,EAAKlzI,EAAGmzI,GAE1C,GAAoB,kBAATD,GAAqC,kBAATC,IAAsBC,aAAgBixR,IAA2B,MAARjxR,GAAe,CAChH1pJ,KAAK68a,kBAAmB,EACxB,IAAIntY,EAAS65G,EAAKypP,SAASjG,WAAWr9V,MAAQ85G,EAC1C61Q,EAAkB,IAAIlhC,GAAW30O,EAAMC,EAAM/5G,EAAO,GACxD,OAAO1vC,KAAK+8a,SAASxzR,EAAM81Q,EAAiB31Q,GAE3C,GAAIF,aAAgB20O,IAAoC,qBAAf30O,EAAK95G,OAAyC,mBAAT+5G,EAC/E,OAAOzpJ,KAAK+8a,SAASxzR,EAAMC,EAAM,MAGjC,IAAI06G,EAAS,IAAI0oI,GACjB,GAAI5sY,KAAK68a,iBAAkB,CACvB,IAAIG,EAAqB94K,EAAOA,OAAOlkQ,KAAKxD,MAAOwD,KAAK68E,KAAM78E,KAAKi0Y,aAAc,IAAI/V,GAAO30O,EAAKypP,SAASjG,WAAWr9V,MAAQ85G,EAAKjoI,EAAI,IAAI,EAAMgoI,EAAKypP,SAASjG,YAC1J89B,OAAe,EAEft6B,EAAW/mP,EACXm0Q,EAAWl0Q,GAFXl+B,EAAQ,IAAIyvT,IAGVr7U,KAAO4pD,EAIb,GAFAh+B,EAAMuqQ,OAASya,EACfhlR,EAAMvgH,OAAsB,MAAZ2yZ,EAAoBA,EAAW,IAAIgd,GAC/CqC,EAAmB1vC,MAAMzwY,OAAS,EAAG,CAErC,GADAmD,KAAKuS,KAAOyqa,EAAmB7tC,YAAY,GAAG58X,KAC1Cg5G,EAAMuqQ,OAAOx/W,GAAKi1G,EAAM5rB,KAAKqzS,SAASjG,WAAWp9V,OAAQ,CACzD,IAAIstY,EAAmB,IAAIh/C,GAAO1yQ,EAAMuqQ,OAAOv0W,EAAGgqG,EAAMuqQ,OAAOx/W,GAC/Du0Z,EAAe7qa,KAAKkkQ,OAAO34I,GAG3B,IAFA,IAAIuqQ,EAAS,IAAIqI,GAAW,EAAG0sC,EAAa/0C,OAAOx/W,EAAI0ma,EAAmBz4S,WAAYglB,EAAKypP,SAASjG,WAAWr9V,MAAOstY,EAAmBz4S,YAEhI3nI,EAAI,EAAGA,EAAIogb,EAAmB1vC,MAAMzwY,OAAQD,IAgBjD,GAfA2uH,EAAM5rB,KAAOkrU,EAAalrU,KAC1B4rB,EAAMuqQ,OAAS,IAAIqI,GAAW,IAAIF,GAAOnI,EAAOv0W,EAAGu0W,EAAOx/W,GAAI,IAAI4nX,GAAMpI,EAAOpmV,MAAOomV,EAAOnmV,SAC7F3vC,KAAKuS,KAAOyqa,EAAmB7tC,YAAYvyY,GAAG2V,KAC1CujX,EAAOx/W,EAAI0ma,EAAmBz4S,WAAasmS,EAAalrU,KAAKqzS,SAASjG,WAAWp9V,UACpE,EACb47E,EAAM5rB,KAAO4rB,EAAM5rB,KAAKqzS,SAASwtB,cAE7B1qC,EADAmnD,EAAiB3ma,EAAKu0Z,EAAalrU,KAAKqzS,SAASjG,WAAWp9V,OAASk7X,EAAa/0C,OAAOnmV,OAChF,IAAIwuV,GAAW,EAAG0sC,EAAa/0C,OAAOnmV,OAAQk7X,EAAalrU,KAAKqzS,SAASjG,WAAWr9V,MAAOstY,EAAmBz4S,YAG9G,IAAI45P,GAAW,EAAG,EAAG0sC,EAAalrU,KAAKqzS,SAASjG,WAAWr9V,MAAOstY,EAAmBz4S,YAElGhZ,EAAMuqQ,OAASA,GAEnB+0C,EAAe7qa,KAAKkkQ,OAAO34I,GACvB3uH,IAAOogb,EAAmB1vC,MAAMzwY,OAAS,EACzCi5X,EAAS,IAAIqI,GAAW,EAAG0sC,EAAa/0C,OAAOx/W,EAAI0ma,EAAmBz4S,WAAYsmS,EAAalrU,KAAKqzS,SAASjG,WAAWr9V,MAAOstY,EAAmBz4S,gBAEjJ,CACD,IAAImmQ,EAAY1qY,KAAK68E,KAAKwzT,cAAcrwY,KAAKuS,KAAMvS,KAAKgL,QAAQ0kC,MAChEm7X,EAAe7qa,KAAKk9a,sBAAsBrS,EAAcngC,EAAWmgC,EAAalrU,KAAKqzS,SAASjG,WAAWr9V,MAAO,IAI5H,OAAOm7X,EAGP,IAAIsS,EAAWn9a,KAAK68E,KAAKwzT,cAAcrwY,KAAKuS,KAAMvS,KAAKgL,QAKvD,OAJIugH,EAAMuqQ,OAAOx/W,GAAKi1G,EAAM5rB,KAAKqzS,SAASjG,WAAWp9V,SACjDk7X,EAAe7qa,KAAKkkQ,OAAO34I,GAC3Bs/S,EAAe7qa,KAAKk9a,sBAAsBrS,EAAcsS,EAASztY,MAAOm7X,EAAalrU,KAAKqzS,SAASjG,WAAWr9V,MAAO,IAElHm7X,EAIPA,EAAe3mK,EAAOA,OAAOlkQ,KAAKxD,MAAOwD,KAAK68E,KAAM78E,KAAKi0Y,aAAc,IAAI/V,GAAM10O,EAAK95G,MAAO,IAAI,EAAO65G,EAAKypP,SAASjG,YAA1H,IAEIxhR,EADA5sH,OAAS,EAET4xY,EAAW/mP,EACXm0Q,EAAWl0Q,EAIf,IANIl+B,EAAQ,IAAIyvT,IAGVr7U,KAAO4pD,EACbh+B,EAAMuqQ,OAASya,EACfhlR,EAAMvgH,OAAsB,MAAZ2yZ,EAAoBA,EAAW,IAAIgd,GAC/C9P,EAAav9B,MAAMzwY,OAAS,EAAG,CAE/B,GADAmD,KAAKuS,KAAOs4Z,EAAa17B,YAAY,GAAG58X,KACpCg5G,EAAMuqQ,OAAOx/W,GAAKi1G,EAAM5rB,KAAKqzS,SAASjG,WAAWp9V,OAAQ,CACrDstY,EAAmB,IAAIh/C,GAAO1yQ,EAAMuqQ,OAAOv0W,EAAGgqG,EAAMuqQ,OAAOx/W,GAC/D3X,EAASqB,KAAKkkQ,OAAO34I,GAGrB,IAFIuqQ,EAAS,IAAIqI,GAAWoS,EAAShvX,EAAG5iB,EAAOm3X,OAAOx/W,EAAIu0Z,EAAatmS,WAAYgsQ,EAAS7gW,MAAOm7X,EAAatmS,YAEvG3nI,EAAI,EAAGA,EAAIiua,EAAav9B,MAAMzwY,OAAQD,IAgB3C,GAfA2uH,EAAM5rB,KAAOhhG,EAAOghG,KACpB4rB,EAAMuqQ,OAAS,IAAIqI,GAAWrI,EAAOv0W,EAAGu0W,EAAOx/W,EAAGw/W,EAAOpmV,MAAOomV,EAAOnmV,QACvE3vC,KAAKuS,KAAOs4Z,EAAa17B,YAAYvyY,GAAG2V,KACpCujX,EAAOx/W,EAAIu0Z,EAAatmS,WAAa5lI,EAAOghG,KAAKqzS,SAASjG,WAAWp9V,UACxD,EACb47E,EAAM5rB,KAAO4rB,EAAM5rB,KAAKqzS,SAASwtB,cAE7B1qC,EADAmnD,EAAiB3ma,EAAK3X,EAAOghG,KAAKqzS,SAASjG,WAAWp9V,OAAShxC,EAAOm3X,OAAOnmV,OACpE,IAAIwuV,GAAWoS,EAAShvX,EAAGspZ,EAAatmS,WAAYgsQ,EAAS7gW,MAAOm7X,EAAatmS,YAGjF,IAAI45P,GAAWoS,EAAShvX,EAAG,EAAGgvX,EAAS7gW,MAAOm7X,EAAatmS,YAExEhZ,EAAMuqQ,OAASA,GAEnBn3X,EAASqB,KAAKkkQ,OAAO34I,GACjB3uH,IAAOiua,EAAav9B,MAAMzwY,OAAS,EACnCi5X,EAAS,IAAIqI,GAAWoS,EAAShvX,EAAG5iB,EAAOm3X,OAAOx/W,EAAIu0Z,EAAatmS,WAAYgsQ,EAAS7gW,MAAOm7X,EAAatmS,gBAE3G,CACGmmQ,EAAY1qY,KAAK68E,KAAKwzT,cAAcrwY,KAAKuS,KAAMvS,KAAKgL,QAAQ0kC,MAChE/wC,EAASqB,KAAKk9a,sBAAsBv+a,EAAQ+rY,EAAW6F,EAAS7gW,MAAO6gW,EAAShvX,IAI5F,OAAO5iB,EAGHw+a,EAAWn9a,KAAK68E,KAAKwzT,cAAcrwY,KAAKuS,KAAMvS,KAAKgL,QAKvD,OAJIugH,EAAMuqQ,OAAOx/W,GAAKi1G,EAAM5rB,KAAKqzS,SAASjG,WAAWp9V,SACjDhxC,EAASqB,KAAKkkQ,OAAO34I,GACrB5sH,EAASqB,KAAKk9a,sBAAsBv+a,EAAQw+a,EAASztY,MAAO6gW,EAAS7gW,MAAO6gW,EAAShvX,IAElF5iB,GAKvBg+a,EAAezgb,UAAUghb,sBAAwB,SAAUv+a,EAAQ+rY,EAAW0yC,EAAcC,GAkBxF,OAhByB,MAArBr9a,KAAKi0Y,cAAqD,qBAAtBj0Y,KAAKi0Y,cAAgCj0Y,KAAKi0Y,aAAalvG,YAAcy7F,GAAiBhkJ,QAC1H79O,EAAOm3X,OAAOv0W,EAAI87Z,GAAiBD,EAAe1yC,GAAa,EAC/D/rY,EAAOm3X,OAAOpmV,MAAQg7V,GAEI,MAArB1qY,KAAKi0Y,cAAqD,qBAAtBj0Y,KAAKi0Y,cAAgCj0Y,KAAKi0Y,aAAalvG,YAAcy7F,GAAiB/jJ,OAC/H99O,EAAOm3X,OAAOv0W,EAAI87Z,GAAiBD,EAAe1yC,GAClD/rY,EAAOm3X,OAAOpmV,MAAQg7V,GAEI,MAArB1qY,KAAKi0Y,cAAqD,qBAAtBj0Y,KAAKi0Y,cAAgCj0Y,KAAKi0Y,aAAalvG,YAAcy7F,GAAiBihC,SAC/H9ia,EAAOm3X,OAAOv0W,EAAI87Z,EAClB1+a,EAAOm3X,OAAOpmV,MAAQ0tY,IAGtBz+a,EAAOm3X,OAAOpmV,MAAQ2tY,EACtB1+a,EAAOm3X,OAAOpmV,MAAQg7V,GAEnB/rY,GAEJg+a,EA5XyB,CA6XlCxB,IC7YEmC,GAA+B,WAC/B,SAASA,EAAch0R,GAMnBtpJ,KAAKsyX,qBAAuB,IAAI3E,GAKhC3tX,KAAK+oY,SAAW,IAAIvC,GAAS,IAAK,IAAK,KAKvCxmY,KAAKktY,UAAY,IAAI/O,GAAW,EAAG,EAAG,EAAG,GAKzCn+X,KAAKqoa,QAAU,KAMfroa,KAAK05a,UAAY,IAAI5wC,GAAc,IAAItC,GAAS,EAAG,EAAG,IAMtDxmY,KAAKu9a,SAAW,IAAI3H,GAAgBx0C,GAAc+wC,WAAY,IAM9Dnya,KAAKgL,OAAS,IAAI8/X,GAAgBtK,GAAiBjkJ,MAKnDv8O,KAAK0qD,QAAU,GAKf1qD,KAAKw9a,cAAgB,IAAI1rD,GAKzB9xX,KAAKy9a,cAAgB,IAAIj3C,GAMzBxmY,KAAK09a,SAAW,EACI,qBAATp0R,EACPtpJ,KAAKyrC,cAGLzrC,KAAKyrC,aACLzrC,KAAK81X,OAASxsO,GAsLtB,OAnLAprJ,OAAOwpB,eAAe41Z,EAAcphb,UAAW,QAAS,CAMpDyrB,IAAK,WACD,OAAO3nB,KAAK+oY,UAEhBlhX,IAAK,SAAUrrB,GACXwD,KAAK+oY,SAAWvsY,GAEpBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe41Z,EAAcphb,UAAW,aAAc,CAKzDyrB,IAAK,WACD,OAAO3nB,KAAKy9a,eAEhB51Z,IAAK,SAAUrrB,GACXwD,KAAKy9a,cAAgBjhb,GAEzBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe41Z,EAAcphb,UAAW,SAAU,CAKrDyrB,IAAK,WACD,OAAO3nB,KAAKktY,WAEhBrlX,IAAK,SAAUrrB,GACXwD,KAAKktY,UAAY1wY,GAErBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe41Z,EAAcphb,UAAW,OAAQ,CAKnDyrB,IAAK,WACD,OAAO3nB,KAAKqoa,SAEhBvgZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe41Z,EAAcphb,UAAW,OAAQ,CAKnDyrB,IAAK,WACD,OAAO3nB,KAAKu9a,UAEhB11Z,IAAK,SAAUrrB,GACXwD,KAAKu9a,SAAW/gb,GAEpBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe41Z,EAAcphb,UAAW,eAAgB,CAK3DyrB,IAAK,WACD,OAAO3nB,KAAKgL,QAEhB6c,IAAK,SAAUrrB,GACXwD,KAAKgL,OAASxO,GAElBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe41Z,EAAcphb,UAAW,QAAS,CAKpDyrB,IAAK,WACD,OAAO3nB,KAAK05a,WAEhB7xZ,IAAK,SAAUrrB,GACXwD,KAAK05a,UAAYl9a,GAErBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe41Z,EAAcphb,UAAW,OAAQ,CAKnDyrB,IAAK,WACD,OAAO3nB,KAAK0qD,SAEhB7iC,IAAK,SAAUrrB,GACXwD,KAAK0qD,QAAUluD,EACfwD,KAAK+xX,WAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqB93S,SAAU,IAAIy9S,GAAUj4X,KAAK0qD,WAE1F5iC,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe41Z,EAAcphb,UAAW,aAAc,CAKzDyrB,IAAK,WACD,OAAO3nB,KAAKw9a,eAEhB31Z,IAAK,SAAUrrB,GACXwD,KAAKw9a,cAAgBhhb,GAEzBsrB,YAAY,EACZC,cAAc,IAOlBu1Z,EAAcphb,UAAUuvC,WAAa,WACjCzrC,KAAKw9a,cAAc5pD,oBAAsB,IAAIS,GAA2Br0X,MACxEA,KAAKw9a,cAAczpW,MAAMh3E,SAASiD,KAAKsyX,qBAAqBnnX,KAAM,IAAI69W,GAAQhpX,KAAKsyX,qBAAqBxD,SAM5GwuD,EAAcphb,UAAUqqQ,QAAU,SAAU5mK,GACxC3/F,KAAKqoa,QAAU1oU,EACf3/F,KAAKw9a,cAAczpW,MAAMh3E,SAASiD,KAAKsyX,qBAAqB7gX,EAAG,IAAIgmX,GAAmBz3X,KAAKqoa,WAM/FiV,EAAcphb,UAAUi3X,UAAY,WAChCnzX,KAAKg+P,QAOTs/K,EAAcphb,UAAU8hQ,KAAO,WAC3B,IAAI2/K,EAAkB,IAAIx/C,GAAWn+X,KAAKktY,UAAU3rX,EAAGvhB,KAAKktY,UAAU52X,EAAGtW,KAAKktY,UAAUx9V,MAAO1vC,KAAKktY,UAAUv9V,QAC1G8wX,EAAUzga,KAAKqoa,QAAQ5H,QACvBmd,EAAgBD,EAAgBhuY,OAChCkuY,EAAgBpd,EAAQ8N,iBAAiBvua,KAAK2/F,KAAM,IAAIs+R,GAAO0/C,EAAgBp8Z,EAAGo8Z,EAAgBrna,IACtGqna,EAAgBp8Z,EAAIs8Z,EAAct8Z,EAClCo8Z,EAAgBjuY,MAAQmuY,EAAct8Z,EAAIo8Z,EAAgBjuY,MAC1DiuY,EAAgBrna,EAAKuna,EAAcvna,EAAItW,KAAK2/F,KAAKn/F,SAAS0kE,aAAa09T,QAAQ5/V,IAC/E26Y,EAAgBhuY,OAASguY,EAAgBrna,EAAIsna,EAC7C59a,KAAKw9a,cAAczpW,MAAMh3E,SAASiD,KAAKsyX,qBAAqBpiV,KAAM8kV,GAASa,cAAc8nD,IACzF39a,KAAK+xX,WAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBrD,GAAI,IAAIuF,GAAUx0X,KAAK09a,YAEpFx/a,OAAOwpB,eAAe41Z,EAAcphb,UAAW,UAAW,CAOtDyrB,IAAK,WACD,OAAO3nB,KAAKw9a,eAEhB11Z,YAAY,EACZC,cAAc,IAEXu1Z,EAzPwB,GClB/Bj/Y,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAmBzCq/Y,GAAmC,SAAU3+Y,GAE7C,SAAS2+Y,EAAkB5wC,GACvB,OAAO/tW,EAAO79B,KAAKtB,KAAMktY,IAAcltY,KAW3C,OAbAq+B,GAAUy/Y,EAAmB3+Y,GAS7B2+Y,EAAkB5hb,UAAUuvC,WAAa,WACrCtM,EAAOjjC,UAAUuvC,WAAWnqC,KAAKtB,MACjCA,KAAK+xX,WAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBnE,QAAS,IAAInF,GAAQhpX,KAAKsyX,qBAAqBzD,QAErGivD,EAd4B,CAerCR,IClCEj/Y,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAkBzCs/Y,GAAyC,SAAU5+Y,GAOnD,SAAS4+Y,EAAwB7wC,GAC7B,IAAIntY,EAAQo/B,EAAO79B,KAAKtB,KAAMktY,IAAcltY,KAQ5C,OADAD,EAAMi+a,UAAY,KACXj+a,EAeX,OA9BAs+B,GAAU0/Y,EAAyB5+Y,GAsBnC4+Y,EAAwB7hb,UAAU+hb,aAAe,SAAUzhb,GACvD,GAAqB,qBAAVA,EACP,OAAOwD,KAAKg+a,UAGZh+a,KAAKg+a,UAAYxhb,GAGlBuhb,EA/BkC,CAgC3CD,IC1CEI,GAA2B,WAM3B,SAASA,IAKLl+a,KAAK8lC,OAAS,KAKd9lC,KAAKsyX,qBAAuB,IAAI3E,GAEhC3tX,KAAKyrC,aAsDT,OApDAvtC,OAAOwpB,eAAew2Z,EAAUhib,UAAW,OAAQ,CAM/CyrB,IAAK,WACD,OAAO3nB,KAAK8lC,QAEhBje,IAAK,SAAUrrB,GAEXwD,KAAK8lC,OAAStpC,EACdwD,KAAK+xX,WAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqB5lQ,KAAM,IAAI+qQ,GAAmBz3X,KAAK8lC,UAG/Fhe,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAew2Z,EAAUhib,UAAW,aAAc,CAKrDyrB,IAAK,WAID,MAHkC,qBAAvB3nB,KAAKw9a,gBACZx9a,KAAKw9a,cAAgB,IAAI1rD,IAEtB9xX,KAAKw9a,eAEhB11Z,YAAY,EACZC,cAAc,IAOlBm2Z,EAAUhib,UAAUuvC,WAAa,WAC7BzrC,KAAK+xX,WAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBnnX,KAAM,IAAI69W,GAAQhpX,KAAKsyX,qBAAqBxsV,UAEzG5nC,OAAOwpB,eAAew2Z,EAAUhib,UAAW,UAAW,CAMlDyrB,IAAK,WACD,OAAO3nB,KAAK+xX,YAEhBjqW,YAAY,EACZC,cAAc,IAEXm2Z,EAxEoB,GCR3B7/Y,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAoBzC0/Y,GAA8B,SAAUh/Y,GAExC,SAASg/Y,EAAapvD,GAClB,IAAIhvX,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAQjC,OADAD,EAAMq+a,0BAA4B,GAC3Br+a,EA2BX,OArCAs+B,GAAU8/Y,EAAch/Y,GAYxBjhC,OAAOwpB,eAAey2Z,EAAajib,UAAW,MAAO,CAMjDyrB,IAAK,WACD,OAAO3nB,KAAKo+a,2BAEhBv2Z,IAAK,SAAUrrB,GACXwD,KAAKo+a,0BAA4B5hb,EACjCwD,KAAK+xX,WAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBvD,IAAK,IAAIkJ,GAAUj4X,KAAKo+a,6BAErFt2Z,YAAY,EACZC,cAAc,IAOlBo2Z,EAAajib,UAAUuvC,WAAa,WAChCtM,EAAOjjC,UAAUuvC,WAAWnqC,KAAKtB,MACjCA,KAAK+xX,WAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqB3oX,EAAG,IAAIq/W,GAAQhpX,KAAKsyX,qBAAqBvD,OAE/FovD,EAtCuB,CAuChCD,IC3DE7/Y,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAoBzC4/Y,GAAkC,SAAUl/Y,GAE5C,SAASk/Y,EAAiBnxC,EAAWne,GACjC,IAAIhvX,EAAQo/B,EAAO79B,KAAKtB,KAAMktY,IAAcltY,KAI5C,MAHmB,qBAAR+uX,IACPhvX,EAAMgvX,IAAMA,GAEThvX,EA2DX,OAjEAs+B,GAAUggZ,EAAkBl/Y,GAQ5BjhC,OAAOwpB,eAAe22Z,EAAiBnib,UAAW,YAAa,CAK3DyrB,IAAK,WAID,MAHiC,qBAAtB3nB,KAAKs+a,eACZt+a,KAAKs+a,aAAe,IAAIH,IAErBn+a,KAAKs+a,cAEhBx2Z,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe22Z,EAAiBnib,UAAW,MAAO,CAMrDyrB,IAAK,WACD,OAAO3nB,KAAKu+a,UAAUxvD,KAE1BlnW,IAAK,SAAUrrB,GACPwD,KAAKu+a,UAAUxvD,MAAQvyX,IACvBwD,KAAKu+a,UAAUxvD,IAAMvyX,IAG7BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe22Z,EAAiBnib,UAAW,SAAU,CAKxDyrB,IAAK,WACD,OAAO3nB,KAAKi+a,gBAEhBp2Z,IAAK,SAAUrrB,GACXwD,KAAKi+a,aAAazhb,GAClBwD,KAAKu+a,UAAU7xT,KAAOlwH,GAE1BsrB,YAAY,EACZC,cAAc,IAOlBs2Z,EAAiBnib,UAAUuvC,WAAa,WACpCtM,EAAOjjC,UAAUuvC,WAAWnqC,KAAKtB,MACjCA,KAAK+xX,WAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBnE,QAAS,IAAInF,GAAQhpX,KAAKsyX,qBAAqBzD,OACpF7uX,KAAKu+a,UAAUv9a,QACnChB,KAAK+xX,WAAWh+S,MAAMh3E,SAASiD,KAAKsyX,qBAAqBvpX,EAAG/I,KAAKu+a,UAAUv9a,UAExEq9a,EAlE2B,CAmEpCN,ICvFE1/Y,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAiDzC69Y,GAAgC,SAAUn9Y,GAO1C,SAASm9Y,IACL,IAAIv8a,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAOjCD,EAAMy+a,uBAAyB,GAM/Bz+a,EAAM0+a,cAAgB,KAOtB1+a,EAAM2+a,mBAAoB,EAC1B3+a,EAAM4+a,cAAgB,IAAI3pD,GAC1B,IAAK,IAAIp4X,EAAI,EAAGA,EAAI,EAAGA,IACnBmD,EAAM4+a,cAAc51Z,IAAI,IAAIyrW,GAAU,IAE1C,OAAOz0X,EAwLX,OAxNAs+B,GAAUi+Y,EAAgBn9Y,GAkC1BjhC,OAAOwpB,eAAe40Z,EAAepgb,UAAW,MAAO,CA6BnDyrB,IAAK,WACD,OAAO3nB,KAAKw+a,wBAEhB32Z,IAAK,SAAUrrB,GACX,GAAqB,IAAjBA,EAAMK,OACN,MAAM,IAAI+D,MAAM,qDAEpBZ,KAAKw+a,uBAAyBhib,GAElCsrB,YAAY,EACZC,cAAc,IAElBu0Z,EAAepgb,UAAUg4Y,KAAO,SAAU5qP,EAAMC,GAC5C,GAAID,aAAgB+wQ,GAAS,CACzB,IAAIn2J,EAAS,IAAI0oI,GACbgyC,EAAoB5+a,KAAK68E,KAAK7oD,MAClC,GAAIu1H,aAAgB00O,GAAQ,CAIxB,GAHAj+X,KAAK0+a,mBAAoB,EACzB1+a,KAAK68E,KAAK7oD,MAAQmtW,GAAa5hT,UAEG,KAD9BsrV,EAAe3mK,EAAOA,OAAOlkQ,KAAKxD,MAAOwD,KAAK68E,KAAM78E,KAAKi0Y,aAAc,IAAI/V,GAAO50O,EAAK0pP,SAASjG,WAAWr9V,MAAQ65G,EAAKhoI,EAAI,IAAI,EAAM+nI,EAAK0pP,SAASjG,aACvIO,MAAMzwY,OAAc,CACjC,IAAI8ia,EAAW3/Z,KAAK68E,KAAKwzT,cAAcrwY,KAAKxD,OACxC0zC,EAAO,IAAIiuV,GAAW50O,EAAMo2Q,GAChCzvX,EAAOlwC,KAAK6+a,gBAAgB3uY,EAAMyvX,EAASjwX,MAAO45G,EAAK0pP,SAASjG,WAAWr9V,MAAO65G,EAAKhoI,GACvFvhB,KAAKy+a,cAAgB,IAAIJ,GAAiBnuY,EAAMlwC,KAAK4iB,KACrD5iB,KAAKy+a,cAAc1sD,WAAWh+S,MAAMh3E,SAAS,SAAUiD,KAAK2+a,eAC5Dr1R,EAAK0hR,YAAYjiZ,IAAI/oB,KAAKy+a,eAC1B,IAAI9/a,EAASqB,KAAK+8a,SAASzzR,EAAMC,GAEjC,OADAvpJ,KAAK68E,KAAK7oD,MAAQ4qZ,EACXjgb,EAGHA,EAASqB,KAAK8+a,0BAA0BjU,EAAcvhR,EAAMC,GAEhE,OADAvpJ,KAAK68E,KAAK7oD,MAAQ4qZ,EACXjgb,EAIX,IAAIksa,EAAe3mK,EAAOA,OAAOlkQ,KAAKxD,MAAOwD,KAAK68E,KAAM78E,KAAKi0Y,aAAc,IAAI/V,GAAM30O,EAAK75G,MAAO,IAAI,EAAO,IAAIwuV,GAAM,EAAG,IAEzH,GADAl+X,KAAK68E,KAAK7oD,MAAQmtW,GAAa5hT,UACG,IAA9BsrV,EAAav9B,MAAMzwY,OAAc,CAC7B8ia,EAAW3/Z,KAAK68E,KAAKwzT,cAAcrwY,KAAKxD,OACxC0zC,EAAO,IAAIiuV,GAAW,IAAIF,GAAO10O,EAAKhoI,EAAGgoI,EAAKjzI,GAAIqpZ,GACtDzvX,EAAOlwC,KAAK6+a,gBAAgB3uY,EAAMyvX,EAASjwX,MAAO65G,EAAK75G,MAAO65G,EAAKhoI,GACnEvhB,KAAKy+a,cAAgB,IAAIJ,GAAiBnuY,EAAMlwC,KAAK4iB,KACrD5iB,KAAKy+a,cAAc1sD,WAAWh+S,MAAMh3E,SAAS,SAAUiD,KAAK2+a,eAC5Dr1R,EAAK0hR,YAAYjiZ,IAAI/oB,KAAKy+a,eAC1B,IAAIr2T,EAAcpoH,KAAK+8a,SAASzzR,EAAMC,GAEtC,OADAvpJ,KAAK68E,KAAK7oD,MAAQ4qZ,EACXx2T,EAGHA,EAAcpoH,KAAK++a,2BAA2BlU,EAAcvhR,EAAMC,GAEtE,OADAvpJ,KAAK68E,KAAK7oD,MAAQ4qZ,EACXx2T,EAKf,IAAIzoB,EAAO,IAAI06T,GAEf,OADA16T,EAAO2pD,EAAK3pD,KACL3/F,KAAKk0Y,KAAKv0S,EAAM4pD,IAS/B+yR,EAAepgb,UAAU4ib,0BAA4B,SAAUngb,EAAQghG,EAAM32D,GAEzE,IADA,IAAI6hY,EACKjua,EAAI,EAAGA,EAAI+B,EAAOwwY,YAAYtyY,OAAQD,IAAK,CAChD,IAAI4/E,EAAOx8E,KAAK68E,KAAKwzT,cAAc1xY,EAAO2uY,MAAM1wY,GAAG2V,MAC/CujX,EAAS,IAAIqI,GAAWn1V,EAAUwzC,GAKtC,GAJU,IAAN5/E,IACAk5X,EAAOv0W,EAAI,GAEfvhB,KAAKuS,KAAO5T,EAAO2uY,MAAM1wY,GAAG2V,KACxBujX,EAAOx/W,EAAIkmE,EAAK7sC,OAASgwD,EAAKqzS,SAASjG,WAAWp9V,OAAQ,CAC1D,GAAU,IAAN/yC,EAMA,MALA+iG,EAAOA,EAAKqzS,SAASwtB,cACrB1qC,EAAS,IAAIqI,GAAW,EAAG,EAAGx+R,EAAKqzS,SAASjG,WAAWr9V,MAAO8sC,EAAK7sC,QACnE3G,EAAS1yB,EAAI,EAMrBw/W,EAAS91X,KAAK6+a,gBAAgB/oD,EAAQt5S,EAAK9sC,MAAOiwD,EAAKqzS,SAASjG,WAAWr9V,MAAOomV,EAAOv0W,GACzFvhB,KAAKy+a,cAAgB,IAAIJ,GAAiBvoD,EAAQ91X,KAAK4iB,KACvD5iB,KAAKy+a,cAAc1sD,WAAWh+S,MAAMh3E,SAAS,SAAUiD,KAAK2+a,eAC5Dh/U,EAAKqrU,YAAYjiZ,IAAI/oB,KAAKy+a,eAEtB5T,EADM,IAANjua,EACeoD,KAAK+8a,SAASp9U,EAAM,IAAIs+R,GAAO,EAAGnI,EAAOx/W,IAGzCtW,KAAK+8a,SAASp9U,EAAMm2R,EAAOv0W,EAAGu0W,EAAOx/W,GAExD0yB,EAAS1yB,GAAKkmE,EAAK7sC,OAEvB,OAAOk7X,GAMXyR,EAAepgb,UAAU6ib,2BAA6B,SAAUpgb,EAAQghG,EAAMm2R,GAE1E,IADA,IAAI+0C,EACKjua,EAAI,EAAGA,EAAI+B,EAAOwwY,YAAYtyY,OAAQD,IAAK,CAChD,IAAI4/E,EAAOx8E,KAAK68E,KAAKwzT,cAAc1xY,EAAO2uY,MAAM1wY,GAAG2V,MAC/CghY,EAAiB,IAAIpV,GAAW,IAAIF,GAAOnI,EAAOv0W,EAAGu0W,EAAOx/W,GAAIkmE,GAGpE,GAFA+2T,EAAiBvzY,KAAK6+a,gBAAgBtrC,EAAgB/2T,EAAK9sC,MAAOomV,EAAOpmV,MAAOomV,EAAOv0W,GACvFvhB,KAAKuS,KAAO5T,EAAO2uY,MAAM1wY,GAAG2V,KACxBujX,EAAOx/W,EAAIkmE,EAAK7sC,OAASgwD,EAAKqzS,SAASjG,WAAWp9V,OAAQ,CAC1D,GAAU,IAAN/yC,EAMA,MALA+iG,EAAOA,EAAKqzS,SAASwtB,cACrB1qC,EAAS,IAAIqI,GAAWrI,EAAOv0W,EAAG,EAAGu0W,EAAOpmV,MAAO8sC,EAAK7sC,QACxD4jW,EAAej9X,EAAI,EAM3BtW,KAAKy+a,cAAgB,IAAIJ,GAAiB9qC,EAAgBvzY,KAAK4iB,KAC/D5iB,KAAKy+a,cAAc1sD,WAAWh+S,MAAMh3E,SAAS,SAAUiD,KAAK2+a,eAC5Dh/U,EAAKqrU,YAAYjiZ,IAAI/oB,KAAKy+a,eAC1B5T,EAAe7qa,KAAK+8a,SAASp9U,EAAMm2R,GACnCA,EAAOx/W,GAAKkmE,EAAK7sC,OAErB,OAAOk7X,GAGXyR,EAAepgb,UAAU2ib,gBAAkB,SAAUlD,EAAejxC,EAAW0yC,EAAcC,GAkBzF,OAhByB,MAArBr9a,KAAKi0Y,cAAqD,qBAAtBj0Y,KAAKi0Y,cAAgCj0Y,KAAKi0Y,aAAalvG,YAAcy7F,GAAiBhkJ,QAC1Hm/L,EAAcp6Z,EAAI87Z,GAAiBD,EAAe1yC,GAAa,EAC/DixC,EAAcjsY,MAAQg7V,GAEI,MAArB1qY,KAAKi0Y,cAAqD,qBAAtBj0Y,KAAKi0Y,cAAgCj0Y,KAAKi0Y,aAAalvG,YAAcy7F,GAAiB/jJ,OAC/Hk/L,EAAcp6Z,EAAI87Z,GAAiBD,EAAe1yC,GAClDixC,EAAcjsY,MAAQg7V,GAEI,MAArB1qY,KAAKi0Y,cAAqD,qBAAtBj0Y,KAAKi0Y,cAAgCj0Y,KAAKi0Y,aAAalvG,YAAcy7F,GAAiBihC,SAC/Hka,EAAcp6Z,EAAI87Z,EAClB1B,EAAcjsY,MAAQ0tY,IAGtBzB,EAAcjsY,MAAQ2tY,EACtB1B,EAAcjsY,MAAQg7V,GAEnBixC,GAEJW,EAzNyB,CA0NlCK,IC3QEt+Y,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAyBzCugZ,GAAiC,SAAU7/Y,GAO3C,SAAS6/Y,EAAgBpE,GACrB,IAAI76a,EAAQo/B,EAAO79B,KAAKtB,KAAM46a,IAAe56a,KAiE7C,OA5DAD,EAAMk/a,iBAAmB,EAKzBl/a,EAAMm/a,SAAW,IAAIhhD,GAAM,EAAG,GAC9Bn+X,EAAMo/a,gBAAkB,EACxBp/a,EAAMq/a,UAAY,EAClBr/a,EAAMs/a,YAAc,EAKpBt/a,EAAM6qT,aAAc,EAKpB7qT,EAAMu/a,gBAAiB,EAKvBv/a,EAAMw/a,cAAe,EAKrBx/a,EAAMy/a,WAAa,IAAIrhD,GAKvBp+X,EAAM0/a,oBAAsB,GAK5B1/a,EAAM4T,MAAO,EAKb5T,EAAM2/a,aAAe,GAKrB3/a,EAAM8wF,gBAAkB,IAAIotS,GAAO,EAAG,GAKtCl+X,EAAM4/a,UAAW,EAMjB5/a,EAAM8sY,wBAAyB,EACxB9sY,EA6sCX,OArxCAs+B,GAAU2gZ,EAAiB7/Y,GA0E3BjhC,OAAOwpB,eAAes3Z,EAAgB9ib,UAAW,OAAQ,CAErDyrB,IAAK,WACD,OAAO3nB,KAAK81B,UAEhBhO,YAAY,EACZC,cAAc,IAwDlBi3Z,EAAgB9ib,UAAU0zT,UAAY,SAAU5kT,GAE5C,OADQA,GAOZg0a,EAAgB9ib,UAAUo+a,eAAiB,SAAU/uT,GACjD,IAAIvgH,EAAShL,KAAK4vT,UAAUrkM,EAAMvgH,QAGlC,GAFAhL,KAAK4/a,iBAAmB5/a,KAAK4vT,UAAUrkM,EAAMvgH,QAC7ChL,KAAKmlE,YAAcomD,EAAM5rB,KACA,OAArB3/F,KAAKmlE,YAML,MAAMvkE,MAAM,4BALKZ,KAAKmlE,YAAYimW,gBAAgBz7X,OAClC3vC,KAAKmlE,YAAYimW,gBAAgB17X,MACjD1vC,KAAK6/a,kBAAoB7/a,KAAKmlE,YAAYimW,gBAM9Cpra,KAAK8/a,gBAAkB9/a,KAAKmlE,YAAY6tU,SAWxC,IAAIx4X,EAUJ,GATAA,EAAQxa,KAAK8/a,gBAAgBngV,KAAK8gU,QAAQtia,QAAQ6B,KAAK8/a,gBAAgBngV,MACvE3/F,KAAKy/a,oBAAoB79a,KAAK4Y,GAChB,MAAVxP,GAAkBA,EAAO6va,QAAUhrC,GAAmBkwC,iBACtD//a,KAAK27a,cAAgB,IAAIx9C,GAAW,IAAIF,GAAO1yQ,EAAMuqQ,OAAOv0W,EAAGgqG,EAAMuqQ,OAAOx/W,GAAI,IAAI4nX,GAAMl+X,KAAKkmO,KAAKnsK,QAAQrqB,MAAO1vC,KAAK8/a,gBAAgB/yC,WAAWp9V,SAGnJ3vC,KAAK27a,cAAgB,IAAIx9C,GAAW,IAAIF,GAAO1yQ,EAAMuqQ,OAAOv0W,EAAGgqG,EAAMuqQ,OAAOx/W,GAAItW,KAAK8/a,gBAAgB/yC,YAG5E,IAAzB/sY,KAAKkmO,KAAKp9J,KAAKhO,MACf96D,KAAK27a,cAAcjsY,MAAS67E,EAAMuqQ,OAAOpmV,MAAQ,EAAK67E,EAAMuqQ,OAAOpmV,MAC9D1vC,KAAK27a,cAAcjsY,MAAQ1vC,KAAKkmO,KAAKp9J,KAAKk3W,OAAO,GAAG1/W,MAAMg5W,QAAQ,GAAGtlZ,MAAM4rD,QAAQ98C,KAAK4M,MAAQ,MAEpG,IAAgC,IAA5B1vC,KAAKkmO,KAAKlhN,QAAQ81C,MAMvB,MAAMl6D,MAAM,sCAHZZ,KAAK27a,cAAcjsY,MAAQ67E,EAAMuqQ,OAAOpmV,MAiC5C,GA5BA1vC,KAAKigb,cAAgB,IAAIhiD,GAAO1yQ,EAAMuqQ,OAAOv0W,EAAGgqG,EAAMuqQ,OAAOx/W,GAazDi1G,EAAMuqQ,OAAOnmV,OAAS,IAAM3vC,KAAKkmO,KAAK0kF,cACtC5qT,KAAK27a,cAAchsY,OAAS47E,EAAMuqQ,OAAOnmV,QAExC3vC,KAAKkmO,KAAK0kF,cACX5qT,KAAKkgb,MAAQlgb,KAAKkmO,KAAKlyM,MAAMmsZ,wBAE5Bngb,KAAKkmO,KAAKlyM,MAAMyqD,yBAMjBz+E,KAAKkmO,KAAKk6M,sBACVpgb,KAAKqgb,8BANLrgb,KAAK0/a,aAAe,GACpB1/a,KAAKkmO,KAAKk6M,oBAAoBpgb,KAAK27a,eACnC37a,KAAK0/a,aAAa99a,KAAK,CAAC,EAAG5B,KAAKkmO,KAAKnsK,QAAQe,MAAQ,KAMrD96D,KAAKkmO,KAAKo5M,eACV,IAAK,IAAI1ib,EAAI,EAAGA,EAAIoD,KAAKkmO,KAAKp9J,KAAKhO,MAAOl+D,KACG,IAArCoD,KAAKkmO,KAAKp9J,KAAKk3W,OAAOpjb,GAAG+yC,QAAkB3vC,KAAKkmO,KAAKp9J,KAAKk3W,OAAOpjb,GAAG0jb,iBACpEtgb,KAAKkmO,KAAKp9J,KAAKk3W,OAAOpjb,GAAG0jb,gBAAiB,GAKtD,OADatgb,KAAK87a,aAAavwT,IAQnCyzT,EAAgB9ib,UAAUmkb,0BAA4B,WAKlD,IAJA,IAAIE,EAAc,EACdC,EAAY,EACZC,EAAa,EACbC,EAAiB1gb,KAAK8/a,gBAAgB/yC,WAAWr9V,MAAQ1vC,KAAK27a,cAAcp6Z,EACvE3kB,EAAI,EAAGA,EAAIoD,KAAKkmO,KAAKnsK,QAAQe,MAAOl+D,IAEzC,IADA6jb,GAAczgb,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,QAC3BgxY,EAAgB,CAE9B,IADA,IAAIE,EAAY,EACPz4a,EAAIo4a,EAAap4a,GAAKvL,MAC3Bgkb,GAAa5gb,KAAKkmO,KAAKnsK,QAAQ4mX,UAAUx4a,GAAGunC,OAC5BgxY,GAFcv4a,IAK9Bq4a,EAAYr4a,EAEhBnI,KAAK0/a,aAAa99a,KAAK,CAAC2+a,EAAaC,IAGrCC,GADAD,EADAD,EAAcC,EAAY,IAEC5jb,EAAKoD,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,MAAQ,EAI/E1vC,KAAK0/a,aAAa99a,KAAK,CAAC2+a,EAAavgb,KAAKkmO,KAAKnsK,QAAQe,MAAQ,KAOnEkkX,EAAgB9ib,UAAU4/a,aAAe,SAAUvwT,GAE/CvrH,KAAKw/a,WAAWj+Z,EAAIgqG,EAAMuqQ,OAAOv0W,EACjCvhB,KAAKw/a,WAAWlpa,EAAIi1G,EAAMuqQ,OAAOx/W,EACjCtW,KAAKw/a,WAAW7vY,OAAS47E,EAAMuqQ,OAAOnmV,OAQtC,IAPA,IAEIhxC,EAFAqM,EAAShL,KAAK4vT,UAAUrkM,EAAMvgH,QAG9B61a,EAAgB,IAAIvuC,GACpBwuC,EAAYv1T,EAAM5rB,KAElBohV,EAAa,GACRvma,EAAQ,EAAGA,EAAQxa,KAAK0/a,aAAa7ib,OAAQ2d,IAAS,CAC3D,IAAIhI,EAAQxS,KAAK0/a,aAAalla,GAC9Bxa,KAAKghb,eAAiBxua,EAAM,GAC5BxS,KAAKihb,aAAezua,EAAM,GAC1B,IAAI0ua,EAAelhb,KAAKmhb,sBAAsBnhb,KAAKmlE,YAAanlE,KAAK27a,cAAe37a,KAAKohb,iBACzFphb,KAAK27a,cAAgBuF,EAAavF,cAClC37a,KAAKohb,gBAAkBF,EAAaE,gBAOpC,IADA,IACS17W,EAAM,EAAGA,EAAM1lE,KAAKkmO,KAAKlhN,QAAQ81C,MAAO4K,IAAO,CACpD,IAAI9a,EAAM5qD,KAAKkmO,KAAKlhN,QAAQq8Z,UAAU37W,GACnB1lE,KAAK27a,cAAcrla,EAEnBtW,KAAKshb,QAAQ12X,IAOnB,EAGjB,IAAIhuD,EAAI,EAEJ2kb,GADWvhb,KAAKkmO,KAAKp9J,KAAKhO,WACd,GAEZnnD,GAAO,EAEXota,EAAa,GAEb,IAAK,IAAI54a,EAAI,EAAGA,EAAInI,KAAKkmO,KAAKp9J,KAAKhO,MAAO3yD,IAAK,CACvCyiD,EAAM5qD,KAAKkmO,KAAKp9J,KAAKk3W,OAAO73a,GAChCvL,IACAoD,KAAKohb,gBAAkBxkb,EAAI,EAC3B,IAAI4kb,EAAiBxhb,KAAK27a,cAAcrla,EACxCwqa,EAAY9gb,KAAKmlE,YACjB65W,EAAgByC,gBAAkB,EAC9B9ta,GAAQi3C,EAAIyP,KAAKuwP,cACA42H,EACjB7ta,GAAO,GAEX,IAAI+ta,EAAY,KA0BhB,IAAqC,GAAjC1hb,KAAKkmO,KAAKy7M,mBACVD,EAAY1hb,KAAKshb,QAAQ12X,GACzBA,EAAIg3X,aAAc,MAEjB,CACD,KAAIh3X,EAAIyP,KAAKwnX,WAAWj3X,IAAIyP,KAAKynX,aAAe9hb,KAAKkmO,KAAKy7M,oBAAsB/2X,EAAI+gB,UAI/E,IAAI/gB,EAAIg3X,YACT,SAGA,MAPAF,EAAY1hb,KAAKshb,QAAQ12X,GACzBA,EAAIg3X,aAAc,EAwE1B,IA9DAb,EAAWn/a,KAAK8/a,EAAU5rD,OAAOpmV,OAsD7B8xY,IAAmBxhb,KAAK27a,cAAcrla,GACtCira,GAAY,EACZvC,EAAgByC,eAAiBzhb,KAAKkmO,KAAKp9J,KAAK0uR,cAAcr5V,QAAQysD,KAGtE22X,GAAY,EACZvC,EAAgByC,gBAAkB,IAE9BC,EAAUK,UAAyB,MAAbjB,GAAmB,CAC7C,IAAIkB,EAAahib,KAAK+7a,kBAoCtB,GADU/7a,KAAKiib,kBAAkBD,GACrBj/Z,QAAUw+Z,EAClB,MACC,GAAIvhb,KAAKkmO,KAAKg8M,yBAA0B,CAEzClib,KAAKmlE,YAAcnlE,KAAKmib,kBAAkBn3a,GAC1Cw2a,EAAiBxhb,KAAK27a,cAAcrla,EACpC,IAAI69X,EAAa,IAAIlW,GAAOg5C,GAAWtyN,QAAQ5hL,MAAM2M,MAAQ,EAAGunY,GAAWtyN,QAAQ3hL,IAAI0M,MAAQ,GAa/F,GAZiC,IAA5B1kC,EAAO0va,eAAen5Z,GAAuC,IAA5BvW,EAAO0va,eAAepka,GAA2C,IAAhCtL,EAAO0va,eAAehrY,OACxD,IAAjC1kC,EAAO0va,eAAe/qY,QAAkB3vC,KAAKigb,cAAc1+Z,IAAM4yX,EAAW5yX,GAAKvhB,KAAKigb,cAAc3pa,IAAM69X,EAAW79X,IACrHtW,KAAK27a,cAAcp6Z,GAAKvhB,KAAKigb,cAAc1+Z,EAC3CvhB,KAAK27a,cAAcrla,GAAKtW,KAAKigb,cAAc3pa,GAE3CtW,KAAKkmO,KAAK0kF,aAAsC,MAAvBhgQ,EAAIyP,KAAKwnX,YACqB,MAAnD7hb,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,aAChCx3X,EAAIy3X,eAAiBrib,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,IAAMhjC,KAAK27a,cAAchsY,SAC9F3vC,KAAK27a,cAAcrla,EAAItW,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,KAIxD,MAAvB4nB,EAAIyP,KAAKwnX,WAAoB,CAC7Bj3X,EAAIyP,KAAKwnX,WAAWj3X,IAAI03X,qBAAsB,EAC9C13X,EAAIyP,KAAKwnX,WAAWj3X,IAAI23X,oBAAsB33X,EAAIy3X,eAAiBrib,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,IAAMhjC,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,OACzK,IAAK,IAAIu/Y,EAAM53X,EAAI+gB,SAAW,EAAG62W,EAAM53X,EAAIyP,KAAKyO,KAAKhO,MAAO0nX,IACxD53X,EAAIyP,KAAKwnX,WAAWj3X,IAAI23X,qBAAuB33X,EAAIyP,KAAKyO,KAAKk3W,OAAOwC,GAAK7yY,OA6BjF,GAAIib,EAAIyP,KAAKuwP,YAAa,CAEtBhgQ,EAAIg3X,aAAc,EAElBh3X,EAAIyP,KAAKsnX,mBAAqB/2X,EAAI+gB,SAClC/gB,EAAIyP,KAAKwnX,WAAWj3X,IAAIyP,KAAKsnX,mBAAqB/2X,EAAIyP,KAAKwnX,WAAWj3X,IAAI+gB,SACtE/gB,EAAIyP,KAAKwnX,WAAWj3X,IAAIyP,KAAKynX,cAC7Bl3X,EAAIyP,KAAKwnX,WAAWj3X,IAAI63X,eAAiB,EACzC73X,EAAIyP,KAAKwnX,WAAWj3X,IAAIyP,KAAKynX,aAAc,GAE/C,MAEJ,GAAIl3X,EAAI63X,cAAgB,EAAG,CAIvB,IAHoC,GAAhC73X,EAAIyP,KAAKsnX,qBACT/2X,EAAIyP,KAAKynX,aAAc,GAEH,MAApBl3X,EAAI52B,MAAM20I,SAA6C,MAAzB/9G,EAAI52B,MAAM20I,OAAO7lI,MAAgD,IAAhC8nB,EAAI52B,MAAM20I,OAAO7lI,KAAK4M,OACzD,MAAxBkb,EAAI52B,MAAM20I,OAAO3lI,KAA8C,IAA/B4nB,EAAI52B,MAAM20I,OAAO3lI,IAAI0M,OAAe,CACxE,IAAInuB,EAAIqpC,EAAI52B,MAAM20I,OAAO7lI,KAAK4M,MAAQ,EAClCp5B,EAAIs0C,EAAI52B,MAAM20I,OAAO3lI,IAAI0M,MAAQ,EACrC,GAAI1vC,KAAK27a,cAAcp6Z,IAAM01Z,GAAWtyN,QAAQ5hL,MAAM2M,MAAQ,GAAK1vC,KAAK27a,cAAcrla,IAAM2ga,GAAWtyN,QAAQ5hL,MAAM2M,MAAQ,EAAG,CAC5H,IAAI+rY,EAAW,IAAIt9C,GAAW58W,EAAGjL,EAAGtW,KAAK27a,cAAcjsY,MAAO1vC,KAAK27a,cAAchsY,QACjF3vC,KAAK27a,cAAgBF,GAG7B,GAAIz7a,KAAKkmO,KAAKw8M,aACV,IAAK,IAAIC,EAAM,EAAGA,EAAM3ib,KAAKkmO,KAAKlhN,QAAQ81C,MAAO6nX,IAAO,CACpD,IAAIC,EAAe5ib,KAAKkmO,KAAKlhN,QAAQq8Z,UAAUsB,GAC/C3ib,KAAKshb,QAAQsB,GAIrB,GADAlB,EAAY1hb,KAAKshb,QAAQ12X,GACrBA,EAAI63X,eAAiB,EACrB,CAAW73X,EAAI23X,oBACf,IADA,IACSM,EAAM,EAAGA,EAAMj4X,EAAI63X,cAAeI,IAAO,CAE9C,IAAIC,EAAc9ib,KAAK+7a,kBASvB,GARU/7a,KAAKiib,kBAAkBa,GACjC9ib,KAAKmlE,YAAcnlE,KAAKmib,kBAAkBn3a,GAC1Cw2a,EAAiBxhb,KAAK27a,cAAcrla,GAEA,GAAhCs0C,EAAIyP,KAAKsnX,qBACT/2X,EAAIyP,KAAKynX,aAAc,GAE3B9hb,KAAK27a,cAAcrla,EAAI,GACnBtW,KAAKkmO,KAAKw8M,aACV,IAAK,IAAIK,EAAM,EAAGA,EAAM/ib,KAAKkmO,KAAKlhN,QAAQ81C,MAAOioX,IAAO,CACpD,IAAIh+Z,EAAS/kB,KAAKkmO,KAAKlhN,QAAQq8Z,UAAU0B,GACzC/ib,KAAKshb,QAAQv8Z,GAIrB/kB,KAAKshb,QAAQ12X,IAMrBA,EAAIyP,KAAKsnX,oBAAsB,EAC/B/2X,EAAIyP,KAAKynX,aAAc,EACvBJ,EAAUK,UAAW,EAGrB,IAAK,IAAIiB,EAAM,EAAGA,EAAMp4X,EAAI0V,MAAMxF,MAAOkoX,IACjCp4X,EAAI0V,MAAMg5W,QAAQ0J,GAAKxmb,iBAAiBymb,KACxCr4X,EAAI0V,MAAMg5W,QAAQ0J,GAAKxmb,MAAMmlb,oBAAsB,KAavE,IAAKD,EAAUK,UAA0B,OAAdjB,GAAsB91a,EAAOk5P,SAAW0rI,GAAcszC,SAAW3B,EAAW,CAEnGvhb,KAAKigb,cAAc1+Z,EAAIvhB,KAAK27a,cAAcp6Z,EA4D1C,GA1DAvhB,KAAKmlE,YAAcnlE,KAAKmib,kBAAkBn3a,GAyCpB,OAAjBugH,EAAMvgH,SAAqBugH,EAAMvgH,OAAOyva,mBAAsC,OAAjBlvT,EAAMuqQ,QACpEvqQ,EAAMuqQ,OAAOnmV,OAAS,IAAM3vC,KAAKkmO,KAAK0kF,cACtC5qT,KAAK27a,cAAchsY,OAAS47E,EAAMuqQ,OAAOnmV,QAEvB,OAAjB47E,EAAMvgH,SAAqBugH,EAAMvgH,OAAOyva,mBAAsC,OAAjBlvT,EAAMuqQ,QACpEvqQ,EAAMuqQ,OAAOx/W,EAAI,IAAMtW,KAAKkmO,KAAK0kF,cACjC5qT,KAAK27a,cAAcrla,EAAIi1G,EAAMuqQ,OAAOx/W,GAExCtW,KAAKigb,cAAc3pa,EAAItW,KAAK27a,cAAcrla,EACrCtL,EAAO0va,eAAen5Z,IAAMvW,EAAO0va,eAAepka,GAClDtL,EAAO0va,eAAepka,IAAMtL,EAAO0va,eAAe/qY,QAClD3kC,EAAO0va,eAAe/qY,SAAW3kC,EAAO0va,eAAehrY,OAA2C,IAAhC1kC,EAAO0va,eAAehrY,QACzF1vC,KAAK27a,cAAcp6Z,GAAKvhB,KAAKigb,cAAc1+Z,GAE3CvhB,KAAK27a,cAAcp6Z,IAAM01Z,GAAWtyN,QAAQ7hL,KAAK4M,MAAQ,IACzD1vC,KAAK27a,cAAcrla,GAAKtW,KAAKigb,cAAc1+Z,GAE3CvhB,KAAKkmO,KAAKw8M,aACV,IAAK,IAAIS,EAAM,EAAGA,EAAMnjb,KAAKkmO,KAAKlhN,QAAQ81C,MAAOqoX,IAAO,CAChDp+Z,EAAS/kB,KAAKkmO,KAAKlhN,QAAQq8Z,UAAU8B,GACzCnjb,KAAKshb,QAAQv8Z,GAGrB/kB,KAAKshb,QAAQ12X,GACY,OAArB5qD,KAAKmlE,aAAyB07W,EAAc50M,YAAYjsO,KAAKmlE,cAC7D07W,EAAc93Z,IAAI/oB,KAAKmlE,YAAa3yD,GAG5C,GAAkC,MAA9Bo4C,EAAIw4X,uBAAgC,CAEpCpjb,KAAKmlE,YAAcva,EAAIw4X,uBAAuBzjV,KAC9C3/F,KAAK8/a,gBAAkB9/a,KAAKmlE,YAAY6tU,SACxChzY,KAAKigb,cAAgB,IAAIhiD,GAAOrzU,EAAIw4X,uBAAuBttD,OAAOv0W,EAAGqpC,EAAIw4X,uBAAuBttD,OAAOx/W,GACvG,IAAI+sa,EAAcrjb,KAAKsjb,kBAAkB14X,EAAKA,EAAIw4X,uBAAuBttD,OAAOnmV,QAGhF,GAFA3vC,KAAK27a,cAAcrla,EAAI+sa,EAEnBvC,GAAa9gb,KAAKmlE,YAAa,CAI/B,IAHA,IAAIo+W,EAASvjb,KAAKmlE,YAAYs7V,QAC1Bz3V,EAAau6W,EAAOplb,QAAQ2ib,GAAa,EACzCl6H,EAAW28H,EAAOplb,QAAQ6B,KAAKmlE,aAC1Bw6B,EAAO32B,EAAY22B,EAAOinN,EAAW,EAAGjnN,IAAQ,CACrD,IAAI6jV,EAAexjb,KAAKmlE,YAAY6tU,SAChCywC,EAAa,IAAIxlD,GAAOjzX,EAAO0va,eAAen5Z,EAAGvW,EAAO0va,eAAepka,GACvEq5B,EAASgwD,GAAQinN,EAAYh8P,EAAIw4X,uBAAuBttD,OAAOnmV,OAAS47E,EAAMuqQ,OAAOx/W,EACpFtW,KAAK27a,cAAchsY,OAAS8zY,EAAWnta,EACxCq5B,GAAU6zY,EAAaz2C,WAAWp9V,SAClCA,GAAU47E,EAAMuqQ,OAAOx/W,GAG3Bmta,EAAWnta,EAAc,MAAVtL,EAAiB,GAAMA,EAAO0va,eAAepka,EAE5D,IAAK,IAAI1O,EAAI,EAAGA,EAAIgjD,EAAI0V,MAAMxF,MAAOlzD,IAAK,CACtC,IACI87a,EADA3jW,EAAOn1B,EAAI0V,MAAMg5W,QAAQ1xa,GAEzB+7a,EAAa,EACjB,GAAI5jW,EAAKvjF,iBAAiBymb,GACtB,IAAK,IAAIW,EAAM,EAAGA,EAAM7jW,EAAKvjF,MAAMu9D,QAAQe,MAAO8oX,IAC9CD,GAAc5jW,EAAKvjF,MAAMu9D,QAAQ4mX,UAAUiD,GAAKC,iBAIpDF,EAAa5jW,EAAKrwC,MAQtBg0Y,EAAYn8a,KAAK8L,IAAIswa,EAAY/4X,EAAIyP,KAAKN,QAAQ4mX,UAAU/4a,GAAG8nC,OAC/DqwC,EAAK+jW,gBAAgBN,EAAc,IAAIrlD,GAAWslD,EAAY,IAAIvlD,GAAMwlD,EAAW/zY,KACnF8zY,EAAWlia,GAAKmia,EAChB97a,GAAMm4E,EAAKgkW,WAAa,GAKhCjD,EAAY9gb,KAAKmlE,cAI7B,IAAI6+W,GAAY,EACZC,EAAyB,EACzBlD,EAAWlkb,OAAS,IACpBonb,EAAyBlD,EAAW,IAExC,IAAImD,EAAoB,CAAC,CAAC,EAAG,IAC7B,IAASt8a,EAAI,EAAGA,EAAI5H,KAAKkmO,KAAKp9J,KAAKhO,MAAOlzD,IACtC,IAA0B,GAAtB5H,KAAKihb,cAAsBjhb,KAAKkmO,KAAKp9J,KAAKk3W,OAAOp4a,GAAG04D,MAAMg5W,QAAQt5a,KAAKihb,cAAczkb,iBAAiBymb,GAAS,CAC/G,IAAI5oX,EAAOr6D,KAAKkmO,KAAKp9J,KAAKk3W,OAAOp4a,GAAG04D,MAAMg5W,QAAQt5a,KAAKihb,cAAczkb,MACrEwD,KAAKmkb,qBAAuB9pX,EAAK8pX,qBACjCH,GAAY,EAYpB,IAAKA,GAAajD,EAAWlkb,OAAS,EAAG,CACrC,IAAS+K,EAAI,EAAGA,EAAIhL,EAAI,EAAGgL,IACnBq8a,EAAyBlD,EAAWn5a,KACpCq8a,EAAyBlD,EAAWn5a,IAG5C5H,KAAKmkb,qBAAuBF,OAG5Bjkb,KAAKmkb,qBAAuBD,EAAkB,GAAG,GAErD,GAAIlkb,KAAK0/a,aAAavhb,QAAQqU,GAASxS,KAAK0/a,aAAa7ib,OAAS,GAC9C,MAAbikb,GAAqB91a,EAAOk5P,QAAU0rI,GAAcszC,QAEvD,GADeljb,KAAKkmO,KAAK0kF,YACM,GAA3Bs5H,EAAkB,GAAG,GAAS,CAChBlkb,KAAKmlE,YAAYs7V,QACPtia,QAAQ6B,KAAKmlE,aACrCnlE,KAAK8/a,gBAAkB9/a,KAAKmlE,YAAY6tU,SACxChzY,KAAK27a,cAAgB,IAAIx9C,GAAW,IAAIF,GAAO,EAAG,GAAIj+X,KAAKmlE,YAAYimW,iBACvDpra,KAAK8/a,gBAAgBngV,KAAK8gU,QAAQtia,QAAQ6B,KAAK8/a,gBAAgBngV,WAG/E3/F,KAAKmlE,YAAcnlE,KAAKmib,kBAAkBn3a,GAS9ChL,KAAK0/a,aAAa7ib,OAAS,IAAM2d,GAASxa,KAAK0/a,aAAa7ib,OAAS,GAAKmO,EAAOk5P,SAAW0rI,GAAcszC,UAC1Gljb,KAAKmlE,YAAcnlE,KAAKmib,kBAAkBn3a,GACrCA,EAAO0va,eAAen5Z,IAAMvW,EAAO0va,eAAepka,GAAOtL,EAAO0va,eAAepka,IAAMtL,EAAO0va,eAAe/qY,QACxG3kC,EAAO0va,eAAe/qY,SAAW3kC,EAAO0va,eAAehrY,OAA2C,IAAhC1kC,EAAO0va,eAAehrY,QAC5F1vC,KAAK27a,cAAcp6Z,GAAKvhB,KAAKigb,cAAc1+Z,EAC3CvhB,KAAK27a,cAAcrla,GAAKtW,KAAKigb,cAAc3pa,IAUvD,OALA3X,EAASqB,KAAK+7a,kBACV/7a,KAAKkmO,KAAKlyM,MAAMyqD,yBAA2Bz+E,KAAKkmO,KAAKlyM,MAAMmsZ,wBAA0BhI,GAA0BngI,UAC/Gh4S,KAAKokb,eAAevD,GAExB7gb,KAAKiib,kBAAkBtjb,GAChBA,GAOXqgb,EAAgB9ib,UAAUimb,kBAAoB,SAAUn3a,GACpD,IAAIy1Z,EAAUzga,KAAKmlE,YAAYs7V,QAC3B4jB,EAAW,KACX7pa,EAAQimZ,EAAQtia,QAAQ6B,KAAKmlE,aACjCnlE,KAAK2T,MAAO,EAER0wa,EADA7pa,IAAUimZ,EAAQ3lW,MAAQ,EACf2lW,EAAQ13Y,MAGR03Y,EAAQt6J,WAAW3rP,EAAQ,GAE1Cxa,KAAK8/a,gBAAkBuE,EAASrxC,SAChC,IAAIsxC,EAAYtkb,KAAK8/a,gBAAgBngV,KAAK8gU,QAAQtia,QAAQ6B,KAAK8/a,gBAAgBngV,MAW/E,OAVuD,IAAjD3/F,KAAKy/a,oBAAoBthb,QAAQmmb,IACnCtkb,KAAKy/a,oBAAoB79a,KAAK0ib,GAElCtkb,KAAK27a,cAAgB,IAAIx9C,GAAW,IAAIF,GAAO,EAAG,GAAIomD,EAASjZ,iBAOxDiZ,GAEXrF,EAAgB9ib,UAAUqob,qBAAuB,SAAUv5a,GACvD,IAAIw5a,EAAgB,IAAI15C,GACxB,OAAQ9/X,EAAO+5R,YAAcy/I,EAAcz/I,WAAa/5R,EAAO+lY,mBAAqByzC,EAAczzC,kBAC9F/lY,EAAOkiX,WAAas3D,EAAct3D,UAAYliX,EAAO2gY,kBAAoB64C,EAAc74C,iBACvF3gY,EAAOm1Z,0BAA4BqkB,EAAcrkB,yBACjDn1Z,EAAO60Z,gBAAkB2kB,EAAc3kB,eACpC70Z,EAAOwkY,YAAcg1C,EAAch1C,WAAaxkY,EAAOkjY,cAAgBs2C,EAAct2C,aACxFljY,EAAOy5a,wBAA0BD,EAAcC,uBAAyBz5a,EAAO05a,SAAWF,EAAcE,QACxG15a,EAAOgjY,kBAAoBw2C,EAAcx2C,iBAAmBhjY,EAAOsQ,cAAgBkpa,EAAclpa,aACjGtQ,EAAOq8Y,iBAAmBm9B,EAAcn9B,gBAAkBr8Y,EAAOg6X,cAAgBw/C,EAAcx/C,aAC/Fh6X,EAAO+jY,WAAay1C,EAAcz1C,UAM1CiwC,EAAgB9ib,UAAUyob,oBAAsB,SAAU3xC,EAAUrnU,EAAUq3B,EAAW8yR,EAAQt5X,EAAOw3B,GACpG,IAAI/zB,EAAO,KAMX,OALID,KAAKkmO,KAAK0+M,qBACV3kb,EAAO,IAAI4kb,GAA8B7xC,EAAUrnU,EAAUq3B,EAAW8yR,EAAQt5X,EAAOw3B,GACvFh0B,KAAKkmO,KAAK4+M,gBAAgB7kb,GAC1B+zB,EAAQ/zB,EAAK+zB,OAEVA,GAMXgrZ,EAAgB9ib,UAAU6ob,mBAAqB,SAAU/xC,EAAUrnU,EAAUq3B,EAAW8yR,EAAQt5X,EAAOwob,GACnG,IAAI/kb,EAAO,KACPD,KAAKkmO,KAAK++M,mBACVhlb,EAAO,IAAIilb,GAA4BlyC,EAAUrnU,EAAUq3B,EAAW8yR,EAAQt5X,EAAOwob,GACrFhlb,KAAKkmO,KAAKi/M,cAAcllb,KAGhC++a,EAAgB9ib,UAAUkob,eAAiB,SAAUvD,GAKjD,IAJA,IAAIrgb,EAAWR,KAAKmlE,YAAY3kE,SAC5BotX,EAAQ,GACR3wX,EAAO4jb,EAAc5jb,OAEhBL,GADIikb,EAActkX,SACd,GAAG3/D,EAAIK,EAAKJ,OAAQD,IAAK,EAC9B+iG,EAAO1iG,EAAKL,IACX6ja,QAAU,KACf7yC,EAAMhsX,KAAK+9F,GACXn/F,EAASotX,MAAMnkW,OAAOk2E,GAG1B,IAAS/iG,EAAI,EAAGA,EAAIikb,EAAcrkW,OAAQ5/E,IAEtC,IADA,IACSuL,EAAIvL,EAAGwob,EAAWvE,EAAcrkW,OAASx8E,KAAK0/a,aAAa7ib,OAASsL,EAAI04a,EAAcrkW,OAAQr0E,GAAKi9a,EAAS,CACjH,IAAIzlV,EAAOiuR,EAAMzlX,IACqB,IAAlC3H,EAASotX,MAAMzvX,QAAQwhG,IACvBn/F,EAASotX,MAAM7kW,IAAI42E,KAUnCq/U,EAAgB9ib,UAAU6/a,gBAAkB,WACxC,GAAI/7a,KAAKkmO,KAAK0kF,aAAe5qT,KAAKkmO,KAAKg8M,yBACnC,IAAK,IAAItlb,EAAI,EAAGA,EAAIoD,KAAKkmO,KAAKp9J,KAAKhO,MAAOl+D,IAAK,CAC3C,IAAIguD,EAAM5qD,KAAKkmO,KAAKp9J,KAAKk3W,OAAOpjb,GAC5BguD,EAAIy3X,eAAiB,GAAKz3X,EAAIy6X,aAC9Brlb,KAAKigb,cAAc3pa,EAAItW,KAAKmlE,YAAY4jW,OAAOzyZ,GAI3D,IAAIw/W,EAUJ,OATK91X,KAAKqvG,YACNymR,EAAS,IAAIqI,GAAWn+X,KAAKigb,cAAe,IAAI/hD,GAAMl+X,KAAK27a,cAAcjsY,MAAO1vC,KAAK27a,cAAcrla,EAC/FtW,KAAKigb,cAAc3pa,KAOpB,IAAIgva,GAAoBtlb,KAAKmlE,YAAa2wT,IAMrDkpD,EAAgB9ib,UAAUonb,kBAAoB,SAAU14X,EAAKjb,GAEzD,IADA,IAAI41Y,EAAY,EACP3ob,EAAIoD,KAAKghb,eAAgBpkb,GAAKoD,KAAKihb,aAAcrkb,IACP,OAAzCguD,EAAI0V,MAAMg5W,QAAQ18a,GAAGyja,iBAAqE,KAAzCz1W,EAAI0V,MAAMg5W,QAAQ18a,GAAGyja,iBACxB,qBAAzCz1W,EAAI0V,MAAMg5W,QAAQ18a,GAAGyja,kBAC5BklB,EAAYh+a,KAAK8L,IAAIkya,EAAW36X,EAAI0V,MAAMg5W,QAAQ18a,GAAG4ob,kBAG7D,OAAOj+a,KAAK8L,IAAIs8B,EAAQ41Y,IAM5BvG,EAAgB9ib,UAAUilb,sBAAwB,SAAUh8W,EAAaw2W,EAAe8J,GACpF,IAAI1ia,GAAS,EACb,GAAI/iB,KAAKkmO,KAAKw/M,qBAAsB,CAChC,IAAIzlb,EAAO,IAAI0lb,GAAgChK,EAAex2W,EAAasgX,GAC3Ezlb,KAAKkmO,KAAKo1M,kBAAkBr7a,GAQ5B8iB,EAAS9iB,EAAK8iB,OACd44Z,EAAgB17a,EAAK61X,OACrB2vD,EAAaxlb,EAAK2lb,cAEtB,MAAO,CAAEx9T,YAAarlG,EAAQ44Z,cAAeA,EAAeyF,gBAAiBqE,IAMjFzG,EAAgB9ib,UAAU+lb,kBAAoB,SAAUtjb,GACpD,IAAIsB,EAAO,IAAI4lb,GAA8Blnb,GAI7C,OAHIqB,KAAKkmO,KAAK4/M,oBACV9lb,KAAKkmO,KAAKq1M,gBAAgBt7a,GAEvBA,GAEX++a,EAAgB9ib,UAAUolb,QAAU,SAAU12X,EAAKjsD,EAAQgxC,GACvD,GAAsB,qBAAXhxC,EAAwB,CAG/B,IAAI66F,EAAW,IAAIusV,GACfC,EAAoB,EAEpBxpW,GADa,IAAIyhT,GAAO,EAAG,GACpB,IAAIC,GAAM,EAAG,IACpBpsR,GAAW,EACf,GAAIlnD,EAAIq7X,cAAe,CACnB,IAAIC,EAAU,EACVC,EAAenmb,KAAKkmO,KAAKp9J,KAAK0uR,cAAcr5V,QAAQysD,IAClC,IAAlBu7X,IAEsB,KADtBA,EAAenmb,KAAKkmO,KAAKlhN,QAAQ7mB,QAAQysD,MAErCknD,GAAW,GAGnB,IAAK,IAAIl1G,EAAI,EAAGA,EAAIguD,EAAI0V,MAAMxF,MAAOl+D,IAAK,CACtC,IAAImjF,EAAOn1B,EAAI0V,MAAMg5W,QAAQ18a,GAC7Bspb,EAAU3+a,KAAK8L,IAAI6ya,EAASnmW,EAAK3G,SAErC,IAASx8E,EAAIupb,EAAcvpb,EAAIupb,EAAeD,EAAStpb,IACnDopb,GAAsBl0U,EAAW9xG,KAAKkmO,KAAKlhN,QAAQq8Z,UAAUzkb,GAAG+yC,OAAS3vC,KAAKkmO,KAAKp9J,KAAKk3W,OAAOpjb,GAAG+yC,OAkB1G,IAAIy2Y,EAAmBx7X,EAAIy3X,eAAiB,EAAMz3X,EAAIy3X,eAAiBz3X,EAAIjb,OA+H3E,OA9HI3vC,KAAKkmO,KAAK0kF,aAAuC,MAAxB5qT,KAAKkmO,KAAK27M,WAyB/B7hb,KAAK27a,cAAcrla,EAAItW,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,OAASmjZ,EAChFpmb,KAAK6/a,kBAAkBlwY,QAAU3vC,KAAK27a,cAAcrla,EAAItW,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,OACtGmjZ,EAAmBpmb,KAAK27a,cAAchsY,QAAU3vC,KAAK27a,cAAcrla,EACrEtW,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,OAAS+iZ,EAAoBhmb,KAAK6/a,kBAAkBlwY,QAEhG3vC,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKgsX,aAAaxL,QAAUhrC,GAAmBy2C,UACxEtH,EAAgByC,eAAiBzhb,KAAKkmO,KAAKp9J,KAAK0uR,cAAcr5V,QAAQysD,GACtE5qD,KAAKkmO,KAAKy7M,mBAAqB3hb,KAAKkmO,KAAKp9J,KAAK0uR,cAAcr5V,QAAQysD,IAEpEo0X,EAAgByC,gBAAkB,GAAKzC,EAAgByC,iBAAmB72X,EAAI+gB,UAC1E3rE,KAAKkmO,KAAKg8M,2BACV1oV,EAASuoV,UAAW,EAOpBvoV,EAASs8R,OAAS91X,KAAK27a,cACvB37a,KAAKumb,iBAAiB/sV,EAAU5uC,EAAKw7X,GACrCx7X,EAAIy6X,YAAa,EACjBz6X,EAAI47X,gBAAkBxH,EAAgByC,kBAa9CjoV,EAASuoV,UAAW,EAChBn3X,EAAIyP,KAAKwnX,WAAWj3X,IAAI23X,oBAAsB,EAC9C33X,EAAIy6X,YAAa,GAGjBz6X,EAAIy6X,YAAa,EACjBe,EAAmBx7X,EAAIjb,QAEvB3vC,KAAKkmO,KAAK0kF,aAAehgQ,EAAIy3X,eAAiB,GACS,MAAnDrib,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,cACpCgE,GAAoBpmb,KAAKkmO,KAAK27M,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,QAG5EjjC,KAAKshb,QAAQ12X,EAAK4uC,EAAU4sV,IAK5BA,EAAmBpmb,KAAK6/a,kBAAkBlwY,OACtC3vC,KAAKkmO,KAAKg8M,2BACV1oV,EAASuoV,UAAW,EAEpB/hb,KAAKumb,iBAAiB/sV,EAAU5uC,EAAKw7X,GACrCx7X,EAAIg3X,aAAc,EAClBh3X,EAAIy6X,YAAa,GACoB,IAAjCz6X,EAAIyP,KAAKsnX,qBACTnoV,EAASuoV,UAAW,IASvB/hb,KAAK27a,cAAcrla,EAAI8va,EAAmBpmb,KAAK6/a,kBAAkBlwY,QACtE3vC,KAAK27a,cAAcrla,EAAI8va,EAAoBpmb,KAAK27a,cAAchsY,OAAS3vC,KAAKigb,cAAc3pa,GAC1FtW,KAAK27a,cAAcrla,EAAI0va,EAAoBhmb,KAAK6/a,kBAAkBlwY,QAE9D3vC,KAAKkmO,KAAKmgN,aAAaxL,QAAUhrC,GAAmBy2C,UACpDtH,EAAgByC,eAAiBzhb,KAAKkmO,KAAKp9J,KAAK0uR,cAAcr5V,QAAQysD,IAEtEo0X,EAAgByC,gBAAkB,GAAKzC,EAAgByC,iBAAmB72X,EAAI+gB,SAC1E3rE,KAAKkmO,KAAKg8M,2BACV1oV,EAASuoV,UAAW,EACpB/hb,KAAKumb,iBAAiB/sV,EAAU5uC,EAAKw7X,GACrCx7X,EAAIy6X,YAAa,EACjBz6X,EAAI47X,gBAAkBxH,EAAgByC,gBACD,IAAjC72X,EAAIyP,KAAKsnX,qBACTnoV,EAASuoV,UAAW,IAS5BvoV,EAASuoV,UAAW,IAIxBvoV,EAASuoV,UAAW,EACpB/hb,KAAKshb,QAAQ12X,EAAK4uC,EAAU4sV,GAC5Bx7X,EAAIy6X,YAAa,GAGlB7rV,EAGP,IACIitV,EAAa,IAAIxoD,GAAOj+X,KAAK27a,cAAcp6Z,EAAGvhB,KAAK27a,cAAcrla,GAKrE3X,EAAOm3X,OAAS,IAAIqI,GAAWsoD,EAAY,IAAIvoD,GAAM,EAAG,IACxDvuV,EAAS3vC,KAAKsjb,kBAAkB14X,EAAKjb,GACrC,IAAS/yC,EAAIoD,KAAKghb,eAAgBpkb,GAAKoD,KAAKihb,aAAcrkb,IAAK,CAC3D,IAAI8pb,EAAgB9pb,EAAIoD,KAAKihb,aAAe,GAAOr2X,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAAa,EAErF,IAAK2C,EACD,IAAK,IAAIv+a,EAAI,EAAGA,EAAIyiD,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAAY57a,IACjDyiD,EAAI0V,MAAMg5W,QAAQ18a,EAAIuL,GAAGw+a,qBAAsB,EAGnDnqW,EAAO,IAAI0hT,GAAMl+X,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,MAAOC,IAUtD3vC,KAAKukb,qBAAqBvkb,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAGoO,SAC1DhL,KAAKukb,qBAAqB35X,EAAI0V,MAAMg5W,QAAQ18a,GAAGq3Y,gBAC/CrpV,EAAI0V,MAAMg5W,QAAQ18a,GAAGq3Y,aAAej0Y,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAGoO,QAEvE,IAAIg6a,EAAYp6X,EAAI0V,MAAMg5W,QAAQ18a,GAAGo3B,MACjCtb,EAAoD,kBAA/BkyC,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,OACX,OAA/BouD,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,MAAkBouD,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,MAAQ,GACxEouD,EAAI0V,MAAMg5W,QAAQ18a,GAAGo3B,MAAQh0B,KAAK2kb,oBAAoB3kb,KAAK8/a,gBAAiB9/a,KAAKohb,gBAAiBxkb,EAAG,IAAIuhY,GAAWsoD,EAAYjqW,GAAO9jE,EAAWssa,GAG1Ip6X,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,iBAAiBymb,MAClC5oX,EAAOzP,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,OAC3B2ib,gBAAkBvib,GAE3B,IAAIu/a,EAAevxX,EAAI0V,MAAMg5W,QAAQ18a,GAAGs3Y,KAAKl0Y,KAAK8/a,gBAAiB,IAAI3hD,GAAWsoD,EAAYjqW,GAAOkqW,GAqBzG,GApBQ97X,EAAIyP,KAAKrmC,MAAMyqD,0BAA4B7zB,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAAa/jb,KAAKihb,cAClFrkb,EAAIguD,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAAa/jb,KAAKihb,aAAe,IAAMjhb,KAAKihb,aAAer2X,EAAI0V,MAAMxF,MAAQ,IACtGlQ,EAAIg8X,iBAAmB5mb,KAAKihb,cAE5Br2X,EAAIyP,KAAKrmC,MAAMyqD,yBAA4B7zB,EAAIg8X,iBAAmB,IAAMh8X,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAC7F/jb,KAAKihb,cAAgBrkb,EAAIguD,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAAa/jb,KAAKihb,aAAe,IAC/Er2X,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAAa/jb,KAAKihb,aAAerkb,EAAI,EAAI,IAC9DguD,EAAI0V,MAAMg5W,QAAQ1uX,EAAIg8X,iBAAmB,GAAGpqb,MAAyB,OAAjB2/a,QAAoDngb,IAA3Bmgb,EAAankP,UACtFmkP,EAAankP,UAAiB,GAClCptI,EAAI0V,MAAMg5W,QAAQ1uX,EAAIg8X,iBAAmB,GAAG3yC,aAAerpV,EAAI0V,MAAMg5W,QAAQ18a,GAAGq3Y,aAChFrpV,EAAI0V,MAAMg5W,QAAQ1uX,EAAIg8X,iBAAmB,GAAG5yZ,MAAQ42B,EAAI0V,MAAMg5W,QAAQ18a,GAAGo3B,MACzE42B,EAAI0V,MAAMg5W,QAAQ1uX,EAAIg8X,iBAAmB,GAAG7C,WAAan5X,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAAa/jb,KAAKihb,aAAerkb,EAAI,GAI3H8b,EAAoD,kBAA/BkyC,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,OACP,OAA/BouD,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,MAAkBouD,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,MAAQ,GACnEkqb,GACD1mb,KAAK+kb,mBAAmB/kb,KAAK8/a,gBAAiB9/a,KAAKohb,gBAAiBxkb,EAAG,IAAIuhY,GAAWsoD,EAAYjqW,GAAO9jE,EAAWkyC,EAAI0V,MAAMg5W,QAAQ18a,GAAGo3B,OAEzI42B,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,iBAAiBymb,GAAS,CAC/C,IAAI5oX,EAAOzP,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,MAC5BwD,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,OAAS1vC,KAAK8/a,gBAAgB/yC,WAAWr9V,OACxE+2Y,EAAWlla,EAAI84C,EAAK8pX,qBACpBsC,EAAWlla,GAAK84C,EAAKrmC,MAAM6yZ,aAG3BJ,EAAWlla,GAAKvhB,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,WAInD+2Y,EAAWlla,GAAKvhB,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,MAGlDkb,EAAIk8X,mBAAoBl8X,EAAI01X,iBAC7Btgb,KAAK27a,cAAcrla,GAAKq5B,GAE5BhxC,EAAOm3X,OAAS,IAAIqI,GAAW,IAAIF,GAAOt/X,EAAOm3X,OAAOv0W,EAAG5iB,EAAOm3X,OAAOx/W,GAAI,IAAI4nX,GAAMuoD,EAAWlla,EAAGkla,EAAWnwa,KAGxH0oa,EAAgB9ib,UAAUqqb,iBAAmB,SAAU5nb,EAAQisD,EAAKm8X,GAChE,IAAI/9Y,EAAW,IAAIi1V,GAAOj+X,KAAK27a,cAAcp6Z,EAAGvhB,KAAK27a,cAAcrla,GAC/Ds0C,EAAIyP,KAAKuwP,aAAehgQ,EAAIyP,KAAK6nX,0BAA4Blib,KAAKigb,cAAc1+Z,IAAMvhB,KAAK27a,cAAcp6Z,IACzGynB,EAASznB,EAAIvhB,KAAKigb,cAAc1+Z,GAEpC5iB,EAAOm3X,OAAS,IAAIqI,GAAWn1V,EAAU,IAAIk1V,GAAM,EAAG,IACtDl+X,KAAKgnb,WAAap8X,EAAIy3X,eAAiB,EAAIrib,KAAK6/a,kBAAkBlwY,OAAS,EAEvEib,EAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,IAAMhjC,KAAK27a,cAAcrla,EAAIs0C,EAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,OAASjjC,KAAK6/a,kBAAkBlwY,SACnHib,EAAIy3X,eAAiBrib,KAAK27a,cAAcrla,EAAIywa,EAAkB/mb,KAAK6/a,kBAAkBlwY,QAQzF,IAAK,IAAI/yC,EAAI,EAAGA,EAAIguD,EAAI0V,MAAMxF,MAAOl+D,IAAK,CACtC,IAAImjF,EAAOn1B,EAAI0V,MAAMg5W,QAAQ18a,GACZmjF,EAAKylW,kBACHuB,GAAmBhnW,EAAKvjF,iBAAiBymb,KACxDr4X,EAAIy3X,eAAiB,GAM7B,IAASzlb,EAAIoD,KAAKghb,eAAgBpkb,GAAKoD,KAAKihb,aAAcrkb,IAAK,CAC3D,IAAI8pb,EAAgB97X,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAAannb,EAAIoD,KAAKihb,aAAe,GACzEr2X,EAAI0V,MAAMg5W,QAAQ18a,GAAGmnb,WAAa,EAMnCvnW,EAAO,IAAI0hT,GAAMl+X,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,MAAO1vC,KAAKgnb,WAAa,EAAMhnb,KAAKgnb,WACpFhnb,KAAK6/a,kBAAkBlwY,QAQvBs3Y,EAAar8X,EAAI0V,MAAMg5W,QAAQ18a,GAAGo3B,MACtC42B,EAAI0V,MAAMg5W,QAAQ18a,GAAGo3B,MAAQizZ,EAC7B,IACI9K,EAAe,KAwBnB,GAtBIA,EAAevxX,EAAI0V,MAAMg5W,QAAQ18a,GAAGs3Y,KAAKl0Y,KAAK8/a,gBAAiB,IAAI3hD,GAAWn1V,EAAUwzC,GAAOkqW,GAG/F97X,EAAIy3X,eAAiB,GACD,MAAhBlG,IACAvxX,EAAI0V,MAAMg5W,QAAQ18a,GAAGsqb,qBAAsB,EAC3Ct8X,EAAI0V,MAAMg5W,QAAQ18a,GAAGyja,gBAA4C,MAA1B8b,EAAankP,UAAoB,IAAMmkP,EAAankP,UACvFptI,EAAIyP,KAAKuwP,cACThgQ,EAAIy3X,eAAiB0E,EAAkB5K,EAAa7sC,WAAW3/V,SAI3EhxC,EAAOojb,SAAapjb,EAAOojb,SAA8Bn3X,EAAI0V,MAAMg5W,QAAQ18a,GAAGsqb,oBAAvCvob,EAAOojb,SAU1Cn3X,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,iBAAiBymb,GAAS,CAC/C,IAAI5oX,EAAOzP,EAAI0V,MAAMg5W,QAAQ18a,GAAGJ,MAChCwD,KAAKmnb,4BAA8Bvqb,EAM/BoD,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,OAAS1vC,KAAK8/a,gBAAgB/yC,WAAWr9V,OACxE1G,EAASznB,EAAIvhB,KAAKmkb,qBAClBn7Y,EAASznB,GAAK84C,EAAKrmC,MAAM6yZ,aAGzB79Y,EAASznB,GAAKvhB,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,WAIjD1G,EAASznB,GAAKvhB,KAAKkmO,KAAKnsK,QAAQ4mX,UAAU/jb,GAAG8yC,MAGrD1vC,KAAK27a,cAAcrla,GAAKtW,KAAKgnb,WAAa,EAAMhnb,KAAKgnb,WAAaD,EAClEpob,EAAOm3X,OAAS,IAAIqI,GAAW,IAAIF,GAAOt/X,EAAOm3X,OAAOv0W,EAAG5iB,EAAOm3X,OAAOx/W,GAAI,IAAI4nX,GAAMl1V,EAASznB,EAAGynB,EAAS1yB,KAMhH0oa,EAAgByC,gBAAkB,EAC3BzC,EAtxC0B,CAuxCnC5E,IASEkL,GAAqC,SAAUnmZ,GAM/C,SAASmmZ,EAAoB3lV,EAAMm2R,GAC/B,OAAO32V,EAAO79B,KAAKtB,KAAM2/F,EAAMm2R,IAAW91X,KAE9C,OARAq+B,GAAUinZ,EAAqBnmZ,GAQxBmmZ,EAT8B,CAUvCpK,IAKEkM,GAAqC,SAAUjoZ,GAM/C,SAASioZ,EAAoBxM,GACzB,OAAOz7Y,EAAO79B,KAAKtB,KAAM46a,IAAe56a,KAE5C,OARAq+B,GAAU+oZ,EAAqBjoZ,GAQxBioZ,EAT8B,CAUvCzM,IAEE0M,GAAmC,WAMnC,SAASA,EAAkBr0C,EAAUrnU,EAAUq3B,EAAW8yR,EAAQt5X,GAC9DwD,KAAKsnb,aAAe37W,EACpB3rE,KAAKunb,cAAgBvkV,EACrBhjG,KAAKkpX,cAAgB1sX,EACrBwD,KAAKwnb,WAAa1xD,EAClB91X,KAAKk0Z,YAAclhB,EA0DvB,OAxDA90Y,OAAOwpB,eAAe2/Z,EAAkBnrb,UAAW,WAAY,CAM3DyrB,IAAK,WACD,OAAO3nB,KAAKsnb,cAEhBx/Z,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe2/Z,EAAkBnrb,UAAW,YAAa,CAK5DyrB,IAAK,WACD,OAAO3nB,KAAKunb,eAEhBz/Z,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe2/Z,EAAkBnrb,UAAW,QAAS,CAKxDyrB,IAAK,WACD,OAAO3nB,KAAKkpX,eAEhBphW,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe2/Z,EAAkBnrb,UAAW,SAAU,CAKzDyrB,IAAK,WACD,OAAO3nB,KAAKwnb,YAEhB1/Z,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe2/Z,EAAkBnrb,UAAW,WAAY,CAK3DyrB,IAAK,WACD,OAAO3nB,KAAKk0Z,aAEhBpsY,YAAY,EACZC,cAAc,IAEXs/Z,EArE4B,GAwEnCxC,GAA+C,SAAU1lZ,GAOzD,SAAS0lZ,EAA8B7xC,EAAUrnU,EAAUq3B,EAAW8yR,EAAQt5X,EAAOw3B,GACjF,IAAIj0B,EAAQo/B,EAAO79B,KAAKtB,KAAMgzY,EAAUrnU,EAAUq3B,EAAW8yR,EAAQt5X,IAAUwD,KAE/E,OADAD,EAAMi0B,MAAQA,EACPj0B,EA+BX,OAxCAs+B,GAAUwmZ,EAA+B1lZ,GAWzCjhC,OAAOwpB,eAAem9Z,EAA8B3ob,UAAW,OAAQ,CAMnEyrB,IAAK,WACD,OAAO3nB,KAAKynb,OAEhB5/Z,IAAK,SAAUrrB,GACXwD,KAAKynb,MAAQjrb,GAEjBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAem9Z,EAA8B3ob,UAAW,QAAS,CAKpEyrB,IAAK,WACD,OAAO3nB,KAAKmvW,WAEhBtnV,IAAK,SAAUrrB,GACXwD,KAAKmvW,UAAY3yW,GAErBsrB,YAAY,EACZC,cAAc,IAEX88Z,EAzCwC,CA0CjDwC,IAEEnC,GAA6C,SAAU/lZ,GAOvD,SAAS+lZ,EAA4BlyC,EAAUrnU,EAAUq3B,EAAW8yR,EAAQt5X,EAAOw3B,GAC/E,IAAIj0B,EAAQo/B,EAAO79B,KAAKtB,KAAMgzY,EAAUrnU,EAAUq3B,EAAW8yR,EAAQt5X,IAAUwD,KAE/E,OADAD,EAAMovW,UAAYn7U,EACXj0B,EAcX,OAvBAs+B,GAAU6mZ,EAA6B/lZ,GAWvCjhC,OAAOwpB,eAAew9Z,EAA4Bhpb,UAAW,QAAS,CAMlEyrB,IAAK,WACD,OAAO3nB,KAAKmvW,WAEhBrnV,YAAY,EACZC,cAAc,IAEXm9Z,EAxBsC,CAyB/CmC,IAEEK,GAAoC,WACpC,SAASA,KAiBT,OAfAxpb,OAAOwpB,eAAegga,EAAmBxrb,UAAW,SAAU,CAM1DyrB,IAAK,WACD,OAAO3nB,KAAK6+I,UAEhBh3H,IAAK,SAAUrrB,GACXwD,KAAK6+I,SAAWriJ,GAEpBsrB,YAAY,EACZC,cAAc,IAEX2/Z,EAlB6B,GAqBpCC,GAA0C,SAAUxoZ,GAOpD,SAASwoZ,EAAyB7xD,EAAQn2R,GACtC,IAAI5/F,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAGjC,OAFAD,EAAM+1X,OAASA,EACf/1X,EAAMsoa,QAAU1oU,EACT5/F,EA4BX,OAtCAs+B,GAAUspZ,EAA0BxoZ,GAYpCjhC,OAAOwpB,eAAeiga,EAAyBzrb,UAAW,SAAU,CAMhEyrB,IAAK,WACD,OAAO3nB,KAAK+gb,YAEhBl5Z,IAAK,SAAUrrB,GACXwD,KAAK+gb,WAAavkb,GAEtBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeiga,EAAyBzrb,UAAW,OAAQ,CAK9DyrB,IAAK,WACD,OAAO3nB,KAAKqoa,SAEhBvgZ,YAAY,EACZC,cAAc,IAEX4/Z,EAvCmC,CAwC5CD,IAKEE,GAAwC,SAAUzoZ,GAOlD,SAASyoZ,EAAuBjpb,GAC5B,IAAIoB,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAEjC,OADAD,EAAM8qa,aAAelsa,EACdoB,EA4BX,OArCAs+B,GAAUupZ,EAAwBzoZ,GAWlCjhC,OAAOwpB,eAAekga,EAAuB1rb,UAAW,SAAU,CAM9DyrB,IAAK,WACD,OAAO3nB,KAAK6qa,cAEhB/iZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAekga,EAAuB1rb,UAAW,WAAY,CAKhEyrB,IAAK,WACD,OAAO3nB,KAAK6nb,aAEhBhga,IAAK,SAAUrrB,GACXwD,KAAK6nb,YAAcrrb,GAEvBsrB,YAAY,EACZC,cAAc,IAEX6/Z,EAtCiC,CAuC1CF,IAKE/B,GAAiD,SAAUxmZ,GAO3D,SAASwmZ,EAAgC7vD,EAAQn2R,EAAMmoV,GACnD,IAAI/nb,EAAQo/B,EAAO79B,KAAKtB,KAAM81X,EAAQn2R,IAAS3/F,KAE/C,OADAD,EAAM+nb,SAAWA,EACV/nb,EAcX,OAvBAs+B,GAAUsnZ,EAAiCxmZ,GAW3CjhC,OAAOwpB,eAAei+Z,EAAgCzpb,UAAW,gBAAiB,CAM9EyrB,IAAK,WACD,OAAO3nB,KAAK8nb,UAEhBhga,YAAY,EACZC,cAAc,IAEX49Z,EAxB0C,CAyBnDgC,IAKE9B,GAA+C,SAAU1mZ,GAOzD,SAAS0mZ,EAA8Blnb,GACnC,OAAOwgC,EAAO79B,KAAKtB,KAAMrB,IAAWqB,KAExC,OATAq+B,GAAUwnZ,EAA+B1mZ,GASlC0mZ,EAVwC,CAWjD+B,IAEE7B,GAAiC,WAMjC,SAASA,IACL/lb,KAAK+nb,eAAiB,IAAI5pD,GAAW,EAAG,EAAG,EAAG,GA8BlD,OA5BAjgY,OAAOwpB,eAAeq+Z,EAAgB7pb,UAAW,WAAY,CAKzDyrB,IAAK,WACD,OAAO3nB,KAAKgob,aAEhBnga,IAAK,SAAUrrB,GACXwD,KAAKgob,YAAcxrb,GAEvBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeq+Z,EAAgB7pb,UAAW,SAAU,CAKvDyrB,IAAK,WACD,OAAO3nB,KAAK+nb,gBAEhBlga,IAAK,SAAUrrB,GACXwD,KAAK+nb,eAAiBvrb,GAE1BsrB,YAAY,EACZC,cAAc,IAEXg+Z,EArC0B,GCzmDjCkC,GAA6B,WAC7B,SAASA,EAAYr9X,GAMjB5qD,KAAK0jb,UAAY,EAMjB1jb,KAAKkob,WAAa,EAMlBlob,KAAKmob,QAAU,EACfnob,KAAKoob,WAAY,EAMjBpob,KAAKqob,OAAQ,EAMbrob,KAAKsob,uBAAyB,EAC9Btob,KAAKuob,YAAa,EAClBvob,KAAKwob,YAAa,EAIlBxob,KAAK+hb,UAAW,EAMhB/hb,KAAKgtZ,SAAU,EACfhtZ,KAAK43Q,YAAc,EACnB53Q,KAAKg5E,QAAU,EACI,qBAARpuB,IACP5qD,KAAK03Q,QAAU9sN,GAgiCvB,OA7hCA1sD,OAAOwpB,eAAeuga,EAAY/rb,UAAW,sBAAuB,CAEhEyrB,IAAK,WACD,OAAO3nB,KAAKyob,6BAEhB5ga,IAAK,SAAUrrB,GACXwD,KAAKyob,4BAA8Bjsb,GAEvCsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,qBAAsB,CAC/DyrB,IAAK,WACD,OAAO3nB,KAAK0ob,4BAEhB7ga,IAAK,SAAUrrB,GACXwD,KAAK0ob,2BAA6Blsb,GAEtCsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,mBAAoB,CAC7DyrB,IAAK,WACD,OAAO3nB,KAAK2ob,0BAEhB9ga,IAAK,SAAUrrB,GACXwD,KAAK2ob,yBAA2Bnsb,GAEpCsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,kBAAmB,CAC5DyrB,IAAK,WACD,OAAO3nB,KAAK4ob,yBAEhB/ga,IAAK,SAAUrrB,GACXwD,KAAK4ob,wBAA0Bpsb,GAEnCsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,kBAAmB,CAK5DyrB,IAAK,WACD,OAAO3nB,KAAKozL,WAEhBvrK,IAAK,SAAUrrB,GACXwD,KAAKozL,UAAY52L,GAErBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,sBAAuB,CAKhEyrB,IAAK,WACD,OAAO3nB,KAAK+hb,UAEhBl6Z,IAAK,SAAUrrB,GACXwD,KAAK+hb,SAAWvlb,GAEpBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,eAAgB,CAKzDyrB,IAAK,WAID,OAHmB,MAAf3nB,KAAKgL,SACLhL,KAAKgL,OAAS,IAAI8/X,IAEf9qY,KAAKgL,QAEhB6c,IAAK,SAAUrrB,GACXwD,KAAKgL,OAASxO,GAElBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,MAAO,CAKhDyrB,IAAK,WACD,OAAO3nB,KAAK03Q,SAEhB7vP,IAAK,SAAUrrB,GACXwD,KAAK03Q,QAAUl7Q,GAEnBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,QAAS,CAKlDyrB,IAAK,WACD,OAAO3nB,KAAK6ob,aAEhBhha,IAAK,SAAUrrB,GAEX,GADAwD,KAAK6ob,YAAcrsb,EACfwD,KAAK6ob,uBAAuB5F,GAAS,CACrCjjb,KAAK4qD,IAAIyP,KAAKyuX,cAAe,EAClB9ob,KAAK6ob,YACXhH,WAAa7hb,KAClBA,KAAK6ob,YAAYj+H,aAAc,EAE/B,IADA,IAAIhlG,EAAW5lN,KAAK4qD,IAAIyP,KAAKyO,KAAKhO,MACzBl+D,EAAI,EAAGA,EAAIgpN,EAAUhpN,IAG1B,IAFA,IAAIguD,EAAM5qD,KAAK4qD,IAAIyP,KAAKyO,KAAKk3W,OAAOpjb,GAChCmsb,EAAWn+X,EAAI0V,MAAMxF,MAChB3yD,EAAI,EAAGA,EAAI4gb,EAAU5gb,IAAK,CACpByiD,EAAI0V,MAAMg5W,QAAQnxa,GACxB5H,OAASP,QAK9B8nB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,UAAW,CAKpDyrB,IAAK,WACD,OAAO3nB,KAAK43Q,aAEhB/vP,IAAK,SAAUrrB,GACX,GAAIA,EAAQ,EACR,MAAM,IAAIoE,MAAM,kFAGhBZ,KAAK43Q,YAAcp7Q,EACnBwD,KAAK4qD,IAAIq7X,eAAgB,EACzBjmb,KAAK4qD,IAAIyP,KAAKilX,gBAAiB,GAGvCx3Z,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,QAAS,CAKlDyrB,IAAK,WAID,OAHsB,MAAlB3nB,KAAKmvW,YACLnvW,KAAKmvW,UAAY,IAAI8pE,IAElBj5a,KAAKmvW,WAEhBtnV,IAAK,SAAUrrB,GACXwD,KAAKmvW,UAAY3yW,GAErBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,SAAU,CAKnDyrB,IAAK,WAID,OAHwB,IAApB3nB,KAAKkob,aACLlob,KAAKkob,WAAalob,KAAKwlb,iBAEpBxlb,KAAKkob,YAEhBrga,IAAK,SAAUrrB,GACXwD,KAAKkob,WAAa1rb,GAEtBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,aAAc,CAKvDyrB,IAAK,WACD,OAAO3nB,KAAKg5E,SAEhBnxD,IAAK,SAAUrrB,GACX,GAAIA,EAAQ,EACR,MAAMoE,MAAM,8DAGZZ,KAAKg5E,QAAUx8E,EACfwD,KAAK4qD,IAAIo+X,kBAAmB,GAGpClha,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeuga,EAAY/rb,UAAW,QAAS,CAKlDyrB,IAAK,WAID,OAHuB,IAAnB3nB,KAAK0jb,WAAmB1jb,KAAK4qD,IAAIyP,KAAK4uX,cACtCjpb,KAAK0jb,UAAY1jb,KAAKkpb,gBAEnB3hb,KAAKooI,MAAM3vI,KAAK0jb,YAE3B77Z,IAAK,SAAUrrB,GACXwD,KAAK0jb,UAAYlnb,GAErBsrB,YAAY,EACZC,cAAc,IAOlBkga,EAAY/rb,UAAUgtb,aAAe,WAGjC,IAAIx5Y,EAAQ,EACRy5Y,EAAW,IAAIv8C,GACnB,GAAgC,kBAArB5sY,KAAK6ob,YAGZn5Y,GADUy5Y,EAASjlL,OAAOlkQ,KAAK6ob,YAAa7ob,KAAKopb,cAAeppb,KAAKi0Y,aAAc,IAAI/V,GAAMjoV,OAAO0jW,UAAW1jW,OAAO0jW,YAAY,EAAO,IAAIzb,GAAM,EAAG,IACzIoR,WAAW5/V,MACxBA,GAA4E,GAAlE1vC,KAAKg0B,MAAM4rD,QAAQ98C,KAAK4M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ78C,MAAM2M,YAElE,GAAI1vC,KAAK6ob,uBAAuB5F,GACjCvzY,EAAQ1vC,KAAK6ob,YAAYrsW,KAAK9sC,WAG7B,GAAI1vC,KAAK6ob,uBAAuB/wB,IAAY93Z,KAAK6ob,uBAAuBpwB,GACzE/oX,GAAS1vC,KAAK6ob,YAAYn5Y,WAEzB,GAAI1vC,KAAK6ob,uBAAuBvM,GAAgB,CACjD,IAAI+M,EAAUrpb,KAAK6ob,YAGnBn5Y,GAFay5Y,EAASjlL,OAAOmlL,EAAQ92a,KAAM82a,EAAQxsW,KAAMwsW,EAAQp1C,aAAc,IAAI/V,GAAM,EAAG,IAAI,EAAO,IAAIA,GAAM,EAAG,IAEpGoR,WAAW5/V,MAC3BA,GAA4E,GAAlE1vC,KAAKg0B,MAAM4rD,QAAQ98C,KAAK4M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ78C,MAAM2M,OA6BvE,OA3BM1vC,KAAK6ob,uBAAuB5F,GASA,MAA1Bjjb,KAAKg0B,MAAMouZ,aAAyD,qBAA3Bpib,KAAKg0B,MAAMouZ,aACT,qBAAhCpib,KAAKg0B,MAAMouZ,YAAYt/Y,MAAwB9iC,KAAKg0B,MAAMouZ,YAAYzK,aAC7EjoY,GAAS1vC,KAAKg0B,MAAMouZ,YAAYt/Y,MAEQ,qBAAjC9iC,KAAKg0B,MAAMouZ,YAAYr/Y,OAAyB/iC,KAAKg0B,MAAMouZ,YAAYxK,cAC9EloY,GAAS1vC,KAAKg0B,MAAMouZ,YAAYr/Y,SAIgB,qBAAzC/iC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYt/Y,MAAwB9iC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYzK,aAC/FjoY,GAAS1vC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYt/Y,MAEQ,qBAA1C9iC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYr/Y,OAAyB/iC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYxK,cAChGloY,GAAS1vC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYr/Y,QArBnB,MAA1B/iC,KAAKg0B,MAAMouZ,YACX1yY,GAAU1vC,KAAKg0B,MAAMouZ,YAAYt/Y,KAAO9iC,KAAKg0B,MAAMouZ,YAAYr/Y,MAG/D2M,GAAU1vC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYt/Y,KAAO9iC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYr/Y,MAqBzF2M,GAAS1vC,KAAK4qD,IAAIyP,KAAKrmC,MAAM6yZ,aAOjCoB,EAAY/rb,UAAUotb,mBAAqB,SAAUt2C,EAAUld,GAC3D,IAAIyjD,EAAkBv5a,KAAKupb,qBAO3B,GALuB,MAAnBhQ,IACAvmC,EAASh1I,OACTg1I,EAASqrB,cAAckb,EAAiBzjD,EAAOv0W,EAAGu0W,EAAOx/W,EAAGw/W,EAAOpmV,MAAOomV,EAAOnmV,QACjFqjW,EAASK,WAEqB,MAA9BrzY,KAAKg0B,MAAMw1Z,gBAAyB,CACxBxpb,KAAKypb,qBACjBz2C,EAAS+rB,UAAU/+Z,KAAKg0B,MAAMw1Z,gBAAiB1zD,EAAOv0W,EAAGu0W,EAAOx/W,EAAGw/W,EAAOpmV,MAAOomV,EAAOnmV,UAQhGs4Y,EAAY/rb,UAAUwtb,wBAA0B,SAAU5zD,GAEtD,IAAI6zD,EAAe,IAAIxrD,GAAWrI,EAAOv0W,EAAGu0W,EAAOx/W,EAAGw/W,EAAOpmV,MAAOomV,EAAOnmV,QAyD3E,OAxDM3vC,KAAK6ob,uBAAuB5F,IAqBA,MAA1Bjjb,KAAKg0B,MAAMouZ,aAAyD,qBAA3Bpib,KAAKg0B,MAAMouZ,aACI,qBAA7Cpib,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYt/Y,MAAwB9iC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYzK,aACvGgS,EAAapoa,GAAKvhB,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYt/Y,KAAO9iC,KAAKmvW,UAAUvvR,QAAQ98C,KAAK4M,MACzFi6Y,EAAaj6Y,OAAS1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYt/Y,MAEP,qBAA5C9iC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYp/Y,KAAuBhjC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYvK,YACtG8R,EAAarza,GAAKtW,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYp/Y,IAAMhjC,KAAKmvW,UAAUvvR,QAAQ58C,IAAI0M,MACvFi6Y,EAAah6Y,QAAU3vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYp/Y,KAEN,qBAA9ChjC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYr/Y,OAAyB/iC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYxK,cACxG+R,EAAaj6Y,OAAS1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYr/Y,OAEJ,qBAA/C/iC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYn/Y,QAA0BjjC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYtK,eACzG6R,EAAah6Y,QAAU3vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYn/Y,UAIpB,qBAAhCjjC,KAAKg0B,MAAMouZ,YAAYt/Y,MAAwB9iC,KAAKg0B,MAAMouZ,YAAYzK,aAC7EgS,EAAapoa,GAAKvhB,KAAKg0B,MAAMouZ,YAAYt/Y,KAAO9iC,KAAKmvW,UAAUvvR,QAAQ98C,KAAK4M,MAC5Ei6Y,EAAaj6Y,OAAS1vC,KAAKg0B,MAAMouZ,YAAYt/Y,MAEP,qBAA/B9iC,KAAKg0B,MAAMouZ,YAAYp/Y,KAAuBhjC,KAAKg0B,MAAMouZ,YAAYvK,YAC5E8R,EAAarza,GAAKtW,KAAKg0B,MAAMouZ,YAAYp/Y,IAAMhjC,KAAKmvW,UAAUvvR,QAAQ58C,IAAI0M,MAC1Ei6Y,EAAah6Y,QAAU3vC,KAAKg0B,MAAMouZ,YAAYp/Y,KAEN,qBAAjChjC,KAAKg0B,MAAMouZ,YAAYr/Y,OAAyB/iC,KAAKg0B,MAAMouZ,YAAYxK,cAC9E+R,EAAaj6Y,OAAS1vC,KAAKg0B,MAAMouZ,YAAYr/Y,OAEJ,qBAAlC/iC,KAAKg0B,MAAMouZ,YAAYn/Y,QAA0BjjC,KAAKg0B,MAAMouZ,YAAYtK,eAC/E6R,EAAah6Y,QAAU3vC,KAAKg0B,MAAMouZ,YAAYn/Y,SAGtD0mZ,EAAaj6Y,OAAU1vC,KAAKmvW,UAAUvvR,QAAQ98C,KAAK4M,MAAQ1vC,KAAKmvW,UAAUvvR,QAAQ78C,MAAM2M,MACxFi6Y,EAAah6Y,QAAW3vC,KAAKmvW,UAAUvvR,QAAQ58C,IAAI0M,MAAQ1vC,KAAKmvW,UAAUvvR,QAAQ38C,OAAOyM,OArDnD,qBAA3B1vC,KAAKg0B,MAAMouZ,aAAyD,MAA1Bpib,KAAKg0B,MAAMouZ,aAC5DuH,EAAapoa,GAAKvhB,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYt/Y,KAAO9iC,KAAKmvW,UAAUvvR,QAAQ98C,KAAK4M,MACzFi6Y,EAAarza,GAAKtW,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYp/Y,IAAMhjC,KAAKmvW,UAAUvvR,QAAQ58C,IAAI0M,MACvFi6Y,EAAaj6Y,OAAU1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYr/Y,MAAQ/iC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYt/Y,KACvG6mZ,EAAah6Y,QAAW3vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYn/Y,OAASjjC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYp/Y,IACzG2mZ,EAAah6Y,QAAW3vC,KAAKmvW,UAAUvvR,QAAQ58C,IAAI0M,MAAQ1vC,KAAKmvW,UAAUvvR,QAAQ38C,OAAOyM,QAGzFi6Y,EAAapoa,GAAKvhB,KAAKg0B,MAAMouZ,YAAYt/Y,KAAO9iC,KAAKmvW,UAAUvvR,QAAQ98C,KAAK4M,MAC5Ei6Y,EAAarza,GAAKtW,KAAKg0B,MAAMouZ,YAAYp/Y,IAAMhjC,KAAKmvW,UAAUvvR,QAAQ58C,IAAI0M,MAC1Ei6Y,EAAaj6Y,OAAU1vC,KAAKg0B,MAAMouZ,YAAYr/Y,MAAQ/iC,KAAKg0B,MAAMouZ,YAAYt/Y,KAC7E6mZ,EAAaj6Y,OAAU1vC,KAAKmvW,UAAUvvR,QAAQ98C,KAAK4M,MAAQ1vC,KAAKmvW,UAAUvvR,QAAQ78C,MAAM2M,MACxFi6Y,EAAah6Y,QAAW3vC,KAAKg0B,MAAMouZ,YAAYn/Y,OAASjjC,KAAKg0B,MAAMouZ,YAAYp/Y,IAC/E2mZ,EAAah6Y,QAAW3vC,KAAKmvW,UAAUvvR,QAAQ58C,IAAI0M,MAAQ1vC,KAAKmvW,UAAUvvR,QAAQ38C,OAAOyM,MACpE,IAAjB1vC,KAAKo5E,UACLuwW,EAAaj6Y,OAAU1vC,KAAKg0B,MAAM4rD,QAAQ98C,KAAK4M,QAwCpDi6Y,GAMX1B,EAAY/rb,UAAUg4Y,KAAO,SAAUlB,EAAUld,EAAQ8zD,GACrD,IAsBIjrb,EAAS,KAab,GAAIqB,KAAKyob,6BAA+Bzob,KAAK0ob,2BAA4B,CACrE,IAAI1ob,KAAKyob,8BAA+Bzob,KAAK4qD,IAAIyP,KAAKrmC,MAAMyqD,wBAMxD,OAAO9/E,EALP,GAAKqB,KAAK4qD,IAAIg8X,iBAAmB,GAAM5mb,KAAK4qD,IAAI0V,MAAMniE,QAAQ6B,OAASA,KAAK4qD,IAAIg8X,iBAAmB,GAAqC,GAA7B5mb,KAAK4qD,IAAIg8X,kBAAyB5mb,KAAKyob,4BAC9I,OAAO9pb,EAQnBm3X,EAAS91X,KAAK6pb,sBAAsB/zD,EAAQkd,GAC5ChzY,KAAKspb,mBAAmBt2C,EAAUld,GAClC,IAAI+jD,EAAU75a,KAAK8pb,aACfpQ,EAAY15a,KAAK+pb,eACE,qBAAZlQ,GAAgD,qBAAdH,IACzCA,EAAY,IAAI5wC,GAAc,IAAItC,GAAS,EAAG,EAAG,KAErD,IAAI3pT,EAAO78E,KAAKopb,cACZY,EAAYhqb,KAAKiqb,kBACjBC,EAAkBp0D,EAmBtB,GAlBIo0D,EAAgBv6Y,QAAUqjW,EAASjG,WAAWp9V,QAE1C3vC,KAAK4qD,IAAIyP,KAAK6nX,2BACdgI,EAAgBv6Y,QAAUu6Y,EAAgB5za,GAclD4za,EAAkBlqb,KAAK0pb,wBAAwBQ,GACf,kBAArBlqb,KAAK6ob,aAAsD,kBAAnB7ob,KAAKozL,UAAwB,CAC5E,IAAIzhL,OAAO,EACP0tZ,OAAkB,EAKtB,GAHIA,EADA6qB,EAAgBv6Y,OAASktC,EAAKltC,OACZ,IAAIwuV,GAAW+rD,EAAgB3oa,EAAG2oa,EAAgB5za,EAAG4za,EAAgBx6Y,MAAOmtC,EAAKltC,QAEjFu6Y,EAClBA,EAAgBv6Y,OAASktC,EAAKltC,QAAU3vC,KAAK4qD,IAAIyP,KAAKuwP,aAA2C,MAA5B5qT,KAAK4qD,IAAIyP,KAAKwnX,WAAoB,CACvG,IAAIlyY,EAAS0vX,EAAgB1vX,OAAS3vC,KAAK4qD,IAAIyP,KAAKwnX,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,OAASjjC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,QAC1F,GAArCjjC,KAAK4qD,IAAIyP,KAAKsnX,qBACd3hb,KAAKoob,WAAY,EACjBpob,KAAK4qD,IAAIu/X,cAAe,GAExBx6Y,EAAS,GAAKA,EAASktC,EAAKltC,SAC5B0vX,EAAgB1vX,OAASA,GAQU,GAAvC3vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,cACxBxnB,EAAgB3vX,OAAS1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,YACjD/wD,EAAOpmV,OAAS1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,aAExC7mb,KAAK+hb,UAKLpwa,EAA0B,KAAnB3R,KAAKozL,UAAmBpzL,KAAKozL,UAAYpzL,KAAK6ob,YACrD71C,EAASwqB,WAAW7rZ,EAAMkrE,EAAMg9V,EAASH,EAAWra,EAAgB99Y,EAAG89Y,EAAgB/oZ,EAAG+oZ,EAAgB3vX,MAAO2vX,EAAgB1vX,OAAQq6Y,IAChG,GAArChqb,KAAK4qD,IAAIyP,KAAKsnX,oBAA6B3hb,KAAK4qD,IAAIyP,KAAKuwP,aAAyC,qBAAnB5qT,KAAKozL,YACpFpzL,KAAKozL,UAAY,MAKQ,oBAAlBpzL,KAAKozL,WAA+C,OAAnBpzL,KAAKozL,YAC7CpzL,KAAKozL,UAAY,IAEjBpzL,KAAK4qD,IAAIy6X,YACTryC,EAASwqB,WAAWx9Z,KAAKozL,UAAWv2G,EAAMg9V,EAASH,EAAWra,EAAgB99Y,EAAG89Y,EAAgB/oZ,EAAG+oZ,EAAgB3vX,MAAO2vX,EAAgB1vX,OAAQq6Y,GAWvJhqb,KAAK+hb,UAAW,GAGpBpjb,EAASq0Y,EAASgqC,wBAKjB,GAAIh9a,KAAK6ob,uBAAuB5F,GAAS,CAC1C,IAAIr+W,EAAY5kE,KAAK6ob,YACrBjkX,EAAUgmP,aAAc,EACxBhmP,EAAUi9W,WAAa7hb,KACvB,IAAIoqb,EACJA,EAAaF,EAC8B,GAAvClqb,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,cACxB/wD,EAAOpmV,OAAS1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,aAa5C,IAAIsC,EAAW,IAAInK,GAAgBp6W,GAC/B55D,EAAS,IAAIo8a,GACiB,MAA9Bpnb,KAAK4qD,IAAIyP,KAAKgsX,aACdr7a,EAAShL,KAAK4qD,IAAIyP,KAAKgsX,aAEvBr7a,EAAOk5P,OAAS0rI,GAAcy6C,SAClC,IAAI9+T,EAAQ,IAAIyvT,GAChB,GAAsB,MAAlBhoC,EAASwrB,MAAe,CAExBjzS,EAAM5rB,KAAOqzS,EAASrzS,KACtB4rB,EAAMuqQ,OAASs0D,EACf7+T,EAAMvgH,OAASA,EAEf45D,EAAU0lX,UACV1lX,EAAU2lX,YAEV,IAAIC,EAAkBrB,EAAS5O,SAAShvT,GAExCvrH,KAAKxD,MAAQooE,GAC6B,IAAtC5kE,KAAK4qD,IAAIyP,KAAKsnX,qBACd3hb,KAAK2vC,OAAS3vC,KAAK4qD,IAAI23X,qBAEvBh3T,EAAM5rB,MAAQ6qV,EAAgB7qV,OAE9B6qV,EAAgB10D,OAAOnmV,OAAS3vC,KAAK4qD,IAAI23X,oBACV,GAA3Bvib,KAAK4qD,IAAIy3X,eACTrib,KAAK4qD,IAAIw4X,uBAAyBoH,EAElCxqb,KAAK4qD,IAAIy3X,eAAiBrib,KAAK4qD,IAAI23X,2BAO9C,GAAIvib,KAAK6ob,uBAAuB/wB,IAAY93Z,KAAK6ob,uBAAuBpwB,GAAW,CACpF,IAAIgyB,OAAc,EAEdA,EADAzqb,KAAK6ob,YAAYn5Y,OAASw6Y,EAAgBx6Y,MAC5B,IAAIyuV,GAAW+rD,EAAgB3oa,EAAG2oa,EAAgB5za,EAAGtW,KAAK6ob,YAAYn5Y,MAAOw6Y,EAAgBv6Y,QAG7Fu6Y,EAElBl3C,EAAS+rB,UAAU/+Z,KAAK6ob,YAAa4B,EAAYlpa,EAAGkpa,EAAYn0a,EAAGm0a,EAAY/6Y,MAAO+6Y,EAAY96Y,aAE7F3vC,KAAK6ob,uBAAuBvM,GACjCt8a,KAAK6ob,YAAY30C,KAAKlB,EAAS7tU,YAAa+kX,GAEX,qBAArBlqb,KAAK6ob,cACjB7ob,KAAK6ob,YAAc,GACnB71C,EAASwqB,WAAWx9Z,KAAK6ob,YAAahsW,EAAMg9V,EAASH,EAAWwQ,EAAgB3oa,EAAG2oa,EAAgB5za,EAAG4za,EAAgBx6Y,MAAOw6Y,EAAgBv6Y,OAAQq6Y,GACvH,MAA1Bhqb,KAAKg0B,MAAMouZ,aAAwD,GAAjCpib,KAAKg0B,MAAMouZ,YAAYn/Y,QAA8C,GAA/BjjC,KAAKg0B,MAAMouZ,YAAYt/Y,MAA6C,GAAhC9iC,KAAKg0B,MAAMouZ,YAAYr/Y,OAA4C,GAA9B/iC,KAAKg0B,MAAMouZ,YAAYp/Y,MACxK8yV,EAAOpmV,OAAU1vC,KAAKg0B,MAAM4rD,QAAQ98C,KAAK4M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ78C,MAAM2M,OAEnC,GAAvC1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,cACxB/wD,EAAOpmV,OAAS1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,cAahD,OAV0B,MAAtB7mb,KAAKg0B,MAAM4rD,UACN5/E,KAAKoob,WAGuD,GAAzDpob,KAAK4qD,IAAIyP,KAAKwnX,WAAWj3X,IAAIyP,KAAKsnX,qBAClC3hb,KAAK4qD,IAAIu/X,cAAe,EACxBnqb,KAAK8jb,gBAAgB9wC,EAAUld,IAJnC91X,KAAK8jb,gBAAgB9wC,EAAUld,IAQhCn3X,GAOXspb,EAAY/rb,UAAU4nb,gBAAkB,SAAU9wC,EAAUld,GACpD91X,KAAK4qD,IAAIyP,KAAKrmC,MAAM02Z,qBAAuBh2B,GAAsBi2B,SACjE70D,EAAOv0W,GAAKvhB,KAAKg0B,MAAM4rD,QAAQ98C,KAAK4M,MACpComV,EAAOx/W,GAAKtW,KAAKg0B,MAAM4rD,QAAQ58C,IAAI0M,MACnComV,EAAOpmV,OAAS1vC,KAAKg0B,MAAM4rD,QAAQ78C,MAAM2M,MACzComV,EAAOnmV,QAAU3vC,KAAKg0B,MAAM4rD,QAAQ38C,OAAOyM,OAE/C,IAAIgqO,EAAK,IAAIukH,GAAOnI,EAAOv0W,EAAGu0W,EAAOx/W,EAAIw/W,EAAOnmV,QAC5CgqO,EAAK,IAAIskH,GAAOnI,EAAOv0W,EAAGu0W,EAAOx/W,GACjCm0X,EAAMzqY,KAAKmvW,UAAUvvR,QAAQ98C,KAC7B9iC,KAAKmvW,UAAUvvR,QAAQ98C,KAAKk4C,YAAc4lT,GAAa6I,QACvDgB,EAAID,QAAU7J,GAAWiqD,QAGX,IAAdngD,EAAI/6V,OACJsjW,EAASmrB,SAAS1zB,EAAK/wH,EAAIC,GAE/BD,EAAK,IAAIukH,GAAOnI,EAAOv0W,EAAIu0W,EAAOpmV,MAAOomV,EAAOx/W,GAChDqjQ,EAAK,IAAIskH,GAAOnI,EAAOv0W,EAAIu0W,EAAOpmV,MAAOomV,EAAOx/W,EAAIw/W,EAAOnmV,QAC3D86V,EAAMzqY,KAAKmvW,UAAUvvR,QAAQ78C,MACxB+yV,EAAOv0W,EAAIu0W,EAAOpmV,MAAUsjW,EAASjG,WAAWr9V,MAAS+6V,EAAI/6V,MAAQ,IACtEgqO,EAAK,IAAIukH,GAAO+U,EAASjG,WAAWr9V,MAAS+6V,EAAI/6V,MAAQ,EAAIomV,EAAOx/W,GACpEqjQ,EAAK,IAAIskH,GAAO+U,EAASjG,WAAWr9V,MAAS+6V,EAAI/6V,MAAQ,EAAIomV,EAAOx/W,EAAIw/W,EAAOnmV,SAE/E3vC,KAAKmvW,UAAUvvR,QAAQ78C,MAAMi4C,YAAc4lT,GAAa6I,QACxDgB,EAAID,QAAU7J,GAAWiqD,QAEX,IAAdngD,EAAI/6V,OACJsjW,EAASmrB,SAAS1zB,EAAK/wH,EAAIC,GAE/BD,EAAK,IAAIukH,GAAOnI,EAAOv0W,EAAGu0W,EAAOx/W,GACjCqjQ,EAAK,IAAIskH,GAAOnI,EAAOv0W,EAAIu0W,EAAOpmV,MAAOomV,EAAOx/W,GAChDm0X,EAAMzqY,KAAKmvW,UAAUvvR,QAAQ58C,IACzBhjC,KAAKmvW,UAAUvvR,QAAQ58C,IAAIg4C,YAAc4lT,GAAa6I,QACtDgB,EAAID,QAAU7J,GAAWiqD,QAEX,IAAdngD,EAAI/6V,OACJsjW,EAASmrB,SAAS1zB,EAAK/wH,EAAIC,GAE/BD,EAAK,IAAIukH,GAAOnI,EAAOv0W,EAAIu0W,EAAOpmV,MAAOomV,EAAOx/W,EAAIw/W,EAAOnmV,QAC3DgqO,EAAK,IAAIskH,GAAOnI,EAAOv0W,EAAGu0W,EAAOx/W,EAAIw/W,EAAOnmV,QAC5C86V,EAAMzqY,KAAKmvW,UAAUvvR,QAAQ38C,OACxB6yV,EAAOx/W,EAAIw/W,EAAOnmV,OAAWqjW,EAASjG,WAAWp9V,OAAU86V,EAAI/6V,MAAQ,IACxEgqO,EAAK,IAAIukH,GAAQnI,EAAOv0W,EAAIu0W,EAAOpmV,MAASsjW,EAASjG,WAAWp9V,OAAU86V,EAAI/6V,MAAQ,GACtFiqO,EAAK,IAAIskH,GAAOnI,EAAOv0W,EAAIyxX,EAASjG,WAAWp9V,OAAU86V,EAAI/6V,MAAQ,IAErE1vC,KAAKmvW,UAAUvvR,QAAQ38C,OAAO+3C,YAAc4lT,GAAa6I,QACzDgB,EAAID,QAAU7J,GAAWiqD,QAEX,IAAdngD,EAAI/6V,OACJsjW,EAASmrB,SAAS1zB,EAAK/wH,EAAIC,IAanCsuK,EAAY/rb,UAAU2tb,sBAAwB,SAAU/zD,EAAQh8H,GAC5D,IAAIhoJ,GAAW,EACX+0U,EAAc7mb,KAAK4qD,IAAIyP,KAAKrmC,MAAM6yZ,YAClCA,EAAc,IACd/wD,EAAS,IAAIqI,GAAWrI,EAAOv0W,EAAIsla,EAAa/wD,EAAOx/W,EAAIuwa,EAAa/wD,EAAOpmV,MAAQm3Y,EAAa/wD,EAAOnmV,OAASk3Y,IAExH,IAAIgE,EAAkB7qb,KAAK4qD,IAAI0V,MAAMniE,QAAQ6B,MAC7C,GAAIA,KAAK+jb,WAAa,GAAM/jb,KAAK4qD,IAAIg8X,iBAAmB,GAAMiE,GAAmB7qb,KAAK4qD,IAAIg8X,iBAAmB,GAAM5mb,KAAK2mb,oBAAsB,CAE1I,GAAY,IADR5lX,EAAO/gE,KAAK+jb,aACC/jb,KAAK2mb,oBAClB,IAAK,IAAIx+a,EAAI0ib,EAAkB,EAAG1ib,EAAInI,KAAK4qD,IAAIyP,KAAKN,QAAQe,OACpD96D,KAAK4qD,IAAI0V,MAAMg5W,QAAQnxa,GAAGw+a,oBADiCx+a,IAE3D44D,IAMZ,IADA,IAAI+pX,EAAa,EACRlub,EAAIiub,EAAiBjub,EAAIiub,EAAkB9pX,EAAMnkE,IAAK,CAC3D,GAAIoD,KAAK4qD,IAAIyP,KAAKrmC,MAAMyqD,wBAAyB,CAC7C,IACIssW,EAAY/qb,KAAK4qD,IAAIyP,KAAKmiB,KAAK9sC,MAAQoqN,EAAEizI,WAAWr9V,MAAQ1vC,KAAK4qD,IAAIyP,KAAKmiB,KAAK9sC,MAAQoqN,EAAEizI,WAAWr9V,MAOxG,IANI1vC,KAAK4qD,IAAIyP,KAAKmiB,KAAK9sC,MAAQoqN,EAAEizI,WAAWr9V,MAChComV,EAAOv0W,EAAIupa,EAAa9qb,KAAK4qD,IAAIyP,KAAKN,QAAQ4mX,UAAU/jb,GAAG8yC,MAG3Do7Y,EAAa9qb,KAAK4qD,IAAIyP,KAAKN,QAAQ4mX,UAAU/jb,GAAG8yC,OAEhDq7Y,EACR,MAGRD,GAAc9qb,KAAK4qD,IAAIyP,KAAKN,QAAQ4mX,UAAU/jb,GAAG8yC,MAErDo7Y,GAAc9qb,KAAK4qD,IAAIyP,KAAKrmC,MAAM6yZ,YAClC/wD,EAAOpmV,MAAQo7Y,EAEnB,GAAI9qb,KAAKo5E,QAAU,GAAKp5E,KAAK4qD,IAAIq7X,cAAe,CAC5C,IAAIllX,EAAO/gE,KAAKo5E,QACZgoW,EAAkBphb,KAAK4qD,IAAIyP,KAAKyO,KAAK0uR,cAAcr5V,QAAQ6B,KAAK4qD,MAC5C,GAApBw2X,IAEwB,IADxBA,EAAkBphb,KAAK4qD,IAAIyP,KAAKr1C,QAAQ7mB,QAAQ6B,KAAK4qD,QAEjDknD,GAAW,GAanB,IAAIk5U,EAAc,EAElB,IAASpub,EAAIwkb,EAAiBxkb,EAAIwkb,EAAkBrgX,EAAMnkE,IAAK,CAC3Doub,GAAgBl5U,EAAW9xG,KAAK4qD,IAAIyP,KAAKr1C,QAAQq8Z,UAAUzkb,GAAG+yC,OAAS3vC,KAAK4qD,IAAIyP,KAAKyO,KAAKk3W,OAAOpjb,GAAG+yC,OACpG,IAAIib,EAAM5qD,KAAK4qD,IAAIyP,KAAKyO,KAAKk3W,OAAOpjb,GACrBoD,KAAK4qD,IAAIyP,KAAKyO,KAAK0uR,cAAcr5V,QAAQysD,GAuC5C5qD,KAAK4qD,IAAI0V,MAAMniE,QAAQ6B,MACvCgrb,GAAehrb,KAAK4qD,IAAIyP,KAAKrmC,MAAM6yZ,YAMnC/wD,EAAOnmV,OAASq7Y,EAEXhrb,KAAK4qD,IAAIk8X,mBACVhxD,EAAOnmV,OAASq7Y,GAGxB,OAAOl1D,GAOXmyD,EAAY/rb,UAAUktb,YAAc,WAChC,MAA+B,qBAApBppb,KAAKg0B,MAAM6oD,MAA2C,MAAnB78E,KAAKg0B,MAAM6oD,KAC9C78E,KAAKg0B,MAAM6oD,KAEkB,qBAAxB78E,KAAK4qD,IAAI52B,MAAM6oD,MAA+C,MAAvB78E,KAAK4qD,IAAI52B,MAAM6oD,KAC3D78E,KAAK4qD,IAAI52B,MAAM6oD,KAEmB,qBAA7B78E,KAAK4qD,IAAIyP,KAAKrmC,MAAM6oD,MAAoD,MAA5B78E,KAAK4qD,IAAIyP,KAAKrmC,MAAM6oD,KACrE78E,KAAK4qD,IAAIyP,KAAKrmC,MAAM6oD,KAGpBqrS,GAAYqsB,aAO3B0zC,EAAY/rb,UAAU6tb,aAAe,WACjC,MAAoC,qBAAzB/pb,KAAKg0B,MAAM0lZ,WAAqD,MAAxB15a,KAAKg0B,MAAM0lZ,UACnD15a,KAAKg0B,MAAM0lZ,UAEuB,qBAA7B15a,KAAK4qD,IAAI52B,MAAM0lZ,WAAyD,MAA5B15a,KAAK4qD,IAAI52B,MAAM0lZ,UAChE15a,KAAK4qD,IAAI52B,MAAM0lZ,UAGf15a,KAAK4qD,IAAIyP,KAAKrmC,MAAM0lZ,WAOnCuO,EAAY/rb,UAAU4tb,WAAa,WAC/B,MAAkC,qBAAvB9pb,KAAKg0B,MAAM6lZ,SAAiD,MAAtB75a,KAAKg0B,MAAM6lZ,QACjD75a,KAAKg0B,MAAM6lZ,QAEqB,qBAA3B75a,KAAK4qD,IAAI52B,MAAM6lZ,SAAqD,MAA1B75a,KAAK4qD,IAAI52B,MAAM6lZ,QAC9D75a,KAAK4qD,IAAI52B,MAAM6lZ,QAGf75a,KAAK4qD,IAAIyP,KAAKrmC,MAAM6lZ,SAOnCoO,EAAY/rb,UAAUqtb,mBAAqB,WACvC,MAA0C,qBAA/Bvpb,KAAKg0B,MAAMulZ,iBAAiE,MAA9Bv5a,KAAKg0B,MAAMulZ,gBACzDv5a,KAAKg0B,MAAMulZ,gBAE6B,qBAAnCv5a,KAAK4qD,IAAI52B,MAAMulZ,iBAAqE,MAAlCv5a,KAAK4qD,IAAI52B,MAAMulZ,gBACtEv5a,KAAK4qD,IAAI52B,MAAMulZ,gBAGfv5a,KAAK4qD,IAAIyP,KAAKrmC,MAAMulZ,iBAOnC0O,EAAY/rb,UAAUutb,mBAAqB,WACvC,MAA0C,qBAA/Bzpb,KAAKg0B,MAAMw1Z,iBAAiE,MAA9Bxpb,KAAKg0B,MAAMw1Z,gBACzDxpb,KAAKg0B,MAAMw1Z,gBAE6B,qBAAnCxpb,KAAK4qD,IAAI52B,MAAMw1Z,iBAAqE,MAAlCxpb,KAAK4qD,IAAI52B,MAAMw1Z,gBACtExpb,KAAK4qD,IAAI52B,MAAMw1Z,gBAGfxpb,KAAK4qD,IAAIyP,KAAKrmC,MAAMw1Z,iBAOnCvB,EAAY/rb,UAAU+tb,gBAAkB,WACpC,MAAuC,qBAA5Bjqb,KAAKg0B,MAAMigX,cAA2D,MAA3Bj0Y,KAAKg0B,MAAMigX,aACtDj0Y,KAAKg0B,MAAMigX,aAGXj0Y,KAAKi0Y,cAOpBg0C,EAAY/rb,UAAUspb,cAAgB,WAGlC,IAAI91Y,EAAQ1vC,KAAKirb,iBAEa,MAA1Bjrb,KAAKg0B,MAAMouZ,aAAyD,qBAA3Bpib,KAAKg0B,MAAMouZ,YACpD1yY,GAAU1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYr/Y,MAAQ/iC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYt/Y,MAI1F4M,GAAU1vC,KAAKg0B,MAAMouZ,YAAYr/Y,MAAQ/iC,KAAKg0B,MAAMouZ,YAAYt/Y,KAChE4M,GAAU1vC,KAAKg0B,MAAM4rD,QAAQ98C,KAAK4M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ78C,MAAM2M,OAEvE,IAAIC,EAAS,EACTw5Y,EAAW,IAAIv8C,GACnB,GAAgC,kBAArB5sY,KAAK6ob,aAAsD,kBAAnB7ob,KAAKozL,UAAwB,CAC5E,IAAI83P,EAAelrb,KAAK6ob,YAEnB7ob,KAAK+hb,WACNmJ,EAAoC,OAAnBlrb,KAAKozL,WAAyC,KAAnBpzL,KAAKozL,WACnB,qBAAnBpzL,KAAKozL,UAA6BpzL,KAAKozL,UAAYpzL,KAAK6ob,aACvE,IACI7lV,EAAYhjG,KAAK4qD,IAAI0V,MAAMniE,QAAQ6B,MACI,GAAvCA,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,cACxBn3Y,GAA+C,EAAtC1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,aAEhC7mb,KAAK4qD,IAAI0V,MAAMg5W,QAAQt2U,GAAWwlV,YAAexob,KAAK4qD,IAAI0V,MAAMg5W,QAAQt2U,GAAWulV,aAChFvob,KAAK03Q,QAAQr9M,KAAKuwP,aACdl7Q,EAAQ,GACR1vC,KAAKmob,QAAUz4Y,EACe,MAA1B1vC,KAAKg0B,MAAMouZ,aAAyD,qBAA3Bpib,KAAKg0B,MAAMouZ,YACpDpib,KAAKmob,SAAYnob,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYr/Y,MAAQ/iC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYt/Y,MAGjG9iC,KAAKmob,SAAYnob,KAAKg0B,MAAMouZ,YAAYr/Y,MAAQ/iC,KAAKg0B,MAAMouZ,YAAYt/Y,KACvE9iC,KAAKmob,SAAYnob,KAAKg0B,MAAM4rD,QAAQ98C,KAAK4M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ78C,MAAM2M,QAI9E1vC,KAAKmob,QAAUz4Y,EAGnBC,GADMw5Y,EAASjlL,OAAOgnL,EAAclrb,KAAKopb,cAAeppb,KAAKi0Y,aAAc,IAAI/V,GAAMl+X,KAAKmob,QAAS,IAAI,EAAO,IAAIjqD,GAAM,EAAG,IAC7GoR,WAAW3/V,QAIzBA,GADMw5Y,EAASjlL,OAAOgnL,EAAclrb,KAAKopb,cAAeppb,KAAKi0Y,aAAc,IAAI/V,GAAMxuV,EAAO,IAAI,EAAO,IAAIwuV,GAAM,EAAG,IACtGoR,WAAW3/V,QAIjCA,GAA6E,GAAlE3vC,KAAKg0B,MAAM4rD,QAAQ58C,IAAI0M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ38C,OAAOyM,YAEnE,GAAI1vC,KAAK6ob,uBAAuB5F,GAAS,CACtCjgV,EAAYhjG,KAAK4qD,IAAI0V,MAAMniE,QAAQ6B,MAAvC,IACImrb,EAAgB,EACW,MAA1Bnrb,KAAKg0B,MAAMouZ,aAAyD,qBAA3Bpib,KAAKg0B,MAAMouZ,aACrD+I,EAAgBnrb,KAAKirb,iBACsB,qBAAhCjrb,KAAKg0B,MAAMouZ,YAAYt/Y,MAAwB9iC,KAAKg0B,MAAMouZ,YAAYzK,aAC7EwT,GAAiBnrb,KAAKg0B,MAAMouZ,YAAYt/Y,MAEA,qBAAjC9iC,KAAKg0B,MAAMouZ,YAAYr/Y,OAAyB/iC,KAAKg0B,MAAMouZ,YAAYxK,cAC9EuT,GAAiBnrb,KAAKg0B,MAAMouZ,YAAYr/Y,QAGH,MAAnC/iC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,aAAkE,qBAApCpib,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,aAC5E+I,EAAgBnrb,KAAKirb,iBAC+B,qBAAzCjrb,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYt/Y,MAAwB9iC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYzK,aAC/FwT,GAAiBnrb,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYt/Y,MAEA,qBAA1C9iC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYr/Y,OAAyB/iC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYxK,cAChGuT,GAAiBnrb,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYr/Y,QAIrDooZ,EAAgBnrb,KAAKirb,iBAEzBjrb,KAAK6ob,YAAYzJ,UAAY+L,EACxBnrb,KAAK4qD,IAAI0V,MAAMg5W,QAAQt2U,GAAWwlV,YAAexob,KAAK4qD,IAAI0V,MAAMg5W,QAAQt2U,GAAWulV,WAIpF54Y,GAA6E,GAAlE3vC,KAAKg0B,MAAM4rD,QAAQ58C,IAAI0M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ38C,OAAOyM,OAHpEC,EAAS3vC,KAAK6ob,YAAYrsW,KAAK7sC,OAKS,IAAxC3vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,cACxBn3Y,GAA+C,EAAtC1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAM6yZ,aAGP,MAA1B7mb,KAAKg0B,MAAMouZ,aAAyD,qBAA3Bpib,KAAKg0B,MAAMouZ,cACD,qBAAxCpib,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,KAAuBhjC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYvK,YAC9FloY,GAAU3vC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,KAE1ChjC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYtK,cAAkE,qBAA3C93a,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,SACvF0M,GAAU3vC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,SAGlD0M,GAAU3vC,KAAK6ob,YAAY70Z,MAAM6yZ,iBAEhC,GAAI7mb,KAAK6ob,uBAAuB/wB,IAAY93Z,KAAK6ob,uBAAuBpwB,GACzE9oX,GAAU3vC,KAAK6ob,YAAYl5Y,YAE1B,GAAI3vC,KAAK6ob,uBAAuBvM,GAAgB,CACjD,IAAI+M,EAAUrpb,KAAK6ob,YAInBl5Y,GAFUw5Y,EAASjlL,OAAOmlL,EAAQ92a,KAAM82a,EAAQxsW,KAAMwsW,EAAQp1C,aAAc,IAAI/V,GAAMxuV,EAAO,IAAI,EAAO,IAAIwuV,GAAM,EAAG,IAEvGoR,WAAW3/V,OACzBA,GAA6E,GAAlE3vC,KAAKg0B,MAAM4rD,QAAQ58C,IAAI0M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ38C,OAAOyM,WAEnC,qBAArB1vC,KAAK6ob,cACa,MAA1B7ob,KAAKg0B,MAAMouZ,aAAyD,qBAA3Bpib,KAAKg0B,MAAMouZ,YACpD1yY,GAAU1vC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYr/Y,MAAQ/iC,KAAK03Q,QAAQr9M,KAAKrmC,MAAMouZ,YAAYt/Y,MAG1F4M,GAAU1vC,KAAKg0B,MAAMouZ,YAAYr/Y,MAAQ/iC,KAAKg0B,MAAMouZ,YAAYt/Y,KAChE4M,GAAU1vC,KAAKg0B,MAAM4rD,QAAQ98C,KAAK4M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ78C,MAAM2M,OAEvEC,GAA6E,GAAlE3vC,KAAKg0B,MAAM4rD,QAAQ58C,IAAI0M,MAAQ1vC,KAAKg0B,MAAM4rD,QAAQ38C,OAAOyM,QA8BxE,OA3BM1vC,KAAK6ob,uBAAuB5F,GASA,MAA1Bjjb,KAAKg0B,MAAMouZ,aAAyD,qBAA3Bpib,KAAKg0B,MAAMouZ,aACD,qBAAxCpib,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,KAAuBhjC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYvK,YAC9FloY,GAAU3vC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,KAEQ,qBAA3ChjC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,QAA0BjjC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYtK,eACjGnoY,GAAU3vC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,UAIJ,qBAA/BjjC,KAAKg0B,MAAMouZ,YAAYp/Y,KAAuBhjC,KAAKg0B,MAAMouZ,YAAYvK,YAC5EloY,GAAU3vC,KAAKg0B,MAAMouZ,YAAYp/Y,KAEQ,qBAAlChjC,KAAKg0B,MAAMouZ,YAAYn/Y,QAA0BjjC,KAAKg0B,MAAMouZ,YAAYtK,eAC/EnoY,GAAU3vC,KAAKg0B,MAAMouZ,YAAYn/Y,SArBX,MAA1BjjC,KAAKg0B,MAAMouZ,aAAyD,qBAA3Bpib,KAAKg0B,MAAMouZ,YACpDzyY,GAAW3vC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,IAAMhjC,KAAK4qD,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,OAGjF0M,GAAW3vC,KAAKg0B,MAAMouZ,YAAYp/Y,IAAMhjC,KAAKg0B,MAAMouZ,YAAYn/Y,OAqBvE0M,GAAU3vC,KAAK4qD,IAAIyP,KAAKrmC,MAAM6yZ,aAOlCoB,EAAY/rb,UAAU+ub,eAAiB,WACnC,IAAIjoV,EAAYhjG,KAAK4qD,IAAI0V,MAAMniE,QAAQ6B,MAEnC+jb,GADW/jb,KAAK4qD,IAAIyP,KAAKyO,KAAK0uR,cAAcr5V,QAAQ6B,KAAK4qD,KAC5C5qD,KAAK+jb,YAClBr0Y,EAAQ,EACZ,GAAmB,IAAfq0Y,EACA,IAAK,IAAInnb,EAAI,EAAGA,EAAImnb,EAAYnnb,IAC5B8yC,GAAS1vC,KAAK4qD,IAAIyP,KAAKN,QAAQ4mX,UAAU39U,EAAYpmG,GAAG8yC,WAG3D,GAAIq0Y,EAAa,EAClB,IAASnnb,EAAI,EAAGA,EAAImnb,EAAYnnb,IAC5B8yC,GAAS1vC,KAAK4qD,IAAIyP,KAAKN,QAAQ4mX,UAAU39U,EAAYpmG,GAAG8yC,MACnD9yC,EAAI,EAAKmnb,IACV/jb,KAAK4qD,IAAI0V,MAAMg5W,QAAQt2U,EAAYpmG,EAAI,GAAG4rb,YAAa,GAInE,GAAmB,MAAfxob,KAAKO,QAAkBP,KAAKO,OAAOqqD,IAAIlb,MAAQ,GAC1C1vC,KAAK4qD,IAAIyP,KAAKuwP,aAA+B,MAAf5qT,KAAKO,QAAmBP,KAAK4qD,IAAIlb,MAAQ1vC,KAAKO,OAAOqqD,IAAIlb,MAAQ,CAChGA,EAAQ,EACR,IAAK,IAAIvnC,EAAI,EAAGA,EAAInI,KAAKO,OAAOwjb,WAAY57a,IACxCunC,GAAS1vC,KAAKO,OAAOqqD,IAAIyP,KAAKN,QAAQ4mX,UAAUx4a,GAAGunC,MAEvDA,GAAgB1vC,KAAK4qD,IAAI0V,MAAMxF,MAGvC,OAAOprB,GAEJu4Y,EAhlCsB,GAwlC7BmD,GAAuC,WAMvC,SAASA,EAAsBxgY,GAK3B5qD,KAAKsgE,MAAQ,GACbtgE,KAAK03Q,QAAU9sN,EA0CnB,OAnCAwgY,EAAsBlvb,UAAUo9a,QAAU,SAAU9+Z,GAChD,GAAIA,EAAQ,GAAKA,GAASxa,KAAK86D,MAC3B,MAAM,IAAIl6D,MAAM,4BAEpB,OAAOZ,KAAKsgE,MAAM9lD,IAEtBtc,OAAOwpB,eAAe0ja,EAAsBlvb,UAAW,QAAS,CAK5DyrB,IAAK,WACD,OAAO3nB,KAAKsgE,MAAMzjE,QAEtBirB,YAAY,EACZC,cAAc,IAElBqja,EAAsBlvb,UAAU6sB,IAAM,SAAUg3D,GAC5C,GAAoB,qBAATA,EAAsB,CAC7B,IAAIsrW,EAAW,IAAIpD,GAEnB,OADAjob,KAAK+oB,IAAIsia,GACFtrW,EAGPA,EAAKn1B,IAAM5qD,KAAK03Q,QAChB13Q,KAAKsgE,MAAM1+D,KAAKm+E,IAOxBqrW,EAAsBlvb,UAAUiC,QAAU,SAAU4hF,GAChD,OAAO//E,KAAKsgE,MAAMniE,QAAQ4hF,IAEvBqrW,EAtDgC,GCtmCvCE,GAA+B,WAM/B,SAASA,EAAcjxX,GAMnBr6D,KAAK6jb,YAAc,EACnB7jb,KAAKq6D,KAAOA,EAkChB,OAhCAn8D,OAAOwpB,eAAe4ja,EAAcpvb,UAAW,QAAS,CAKpDyrB,IAAK,WACD,OAAO3nB,KAAK6jb,aAEhBh8Z,IAAK,SAAUrrB,GACXwD,KAAKurb,eAAgB,EACrBvrb,KAAK6jb,YAAcrnb,GAEvBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe4ja,EAAcpvb,UAAW,SAAU,CAKrDyrB,IAAK,WAID,OAHyB,MAArB3nB,KAAKi0Y,eACLj0Y,KAAKi0Y,aAAe,IAAInJ,IAErB9qY,KAAKi0Y,cAEhBpsX,IAAK,SAAUrrB,GACXwD,KAAKi0Y,aAAez3Y,GAExBsrB,YAAY,EACZC,cAAc,IAEXuja,EA/CwB,GAuD/BE,GAAyC,WAOzC,SAASA,EAAwBnxX,GAK7Br6D,KAAKyrb,gBAAkB,GAKvBzrb,KAAK6jb,YAAc,EACnB7jb,KAAKq6D,KAAOA,EACZr6D,KAAKyrb,gBAAkB,GA0H3B,OAnHAD,EAAwBtvb,UAAU6sB,IAAM,SAAU+xC,GAI9C,IAAK,IAAIl+D,EAAI,EAAGA,EAAIk+D,EAAOl+D,IAAK,CAC5BoD,KAAKyrb,gBAAgB7pb,KAAK,IAAI0pb,GAActrb,KAAKq6D,OACjD,IAAK,IAAI7/C,EAAQ,EAAGA,EAAQxa,KAAKq6D,KAAKyO,KAAKhO,MAAOtgD,IAAS,CACvD,IAAIowC,EAAM5qD,KAAKq6D,KAAKyO,KAAKk3W,OAAOxla,GAC5BulE,EAAO,IAAIkoW,GACfloW,EAAKvjF,MAAQ,GACbouD,EAAI0V,MAAMv3C,IAAIg3D,MAS1B7hF,OAAOwpB,eAAe8ja,EAAwBtvb,UAAW,QAAS,CAK9DyrB,IAAK,WACD,OAAO3nB,KAAKyrb,gBAAgB5ub,QAEhCirB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe8ja,EAAwBtvb,UAAW,QAAS,CAK9DyrB,IAAK,WAQD,OAPyB,IAArB3nB,KAAK6jb,cACL7jb,KAAK6jb,YAAc7jb,KAAKogb,uBAEG,IAA3Bpgb,KAAKq6D,KAAKqxX,cAAsB1rb,KAAK6jb,cAAgB7jb,KAAKq6D,KAAKqxX,cAAiB1rb,KAAKq6D,KAAKrmC,MAAMyqD,0BAChGz+E,KAAK6jb,YAAc7jb,KAAKq6D,KAAKqxX,aAC7B1rb,KAAKq6D,KAAKsxX,aAAc,GAErB3rb,KAAK6jb,aAEhB/7Z,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe8ja,EAAwBtvb,UAAW,UAAW,CAKhEyrB,IAAK,WACD,OAAO3nB,KAAKyrb,iBAEhB3ja,YAAY,EACZC,cAAc,IAMlByja,EAAwBtvb,UAAUykb,UAAY,SAAUnma,GACpD,GAAIA,GAAS,GAAKA,GAASxa,KAAK+5D,QAAQl9D,OACpC,OAAOmD,KAAK+5D,QAAQv/C,GAGpB,MAAM5Z,MAAM,0CAA4C4Z,IAQhEgxa,EAAwBtvb,UAAUkkb,oBAAsB,WACpD,IAAI0K,EAAa,EACjB9qb,KAAKq6D,KAAK+lX,sBACV,IAAK,IAAIxjb,EAAI,EAAGk+D,EAAQ96D,KAAKyrb,gBAAgB5ub,OAAQD,EAAIk+D,EAAOl+D,IAC5Dkub,GAAc9qb,KAAKyrb,gBAAgB7ub,GAAG8yC,MAE1C,OAAOo7Y,GAMXU,EAAwBtvb,UAAU0vb,iBAAmB,SAAUd,GAI3D,IAHA,IAAInjC,EAAS,GAETkkC,EAAY7rb,KAAK86D,MACZl+D,EAAI,EAAGA,EAAIoD,KAAK86D,MAAOl+D,IACxBoD,KAAKq6D,KAAKsxX,aAAeb,GAAc,IAAM9qb,KAAKyrb,gBAAgB7ub,GAAG2ub,cACrEvrb,KAAKyrb,gBAAgB7ub,GAAG8yC,MAAQ,GAGhCi4W,EAAO/qZ,GAAKoD,KAAKyrb,gBAAgB7ub,GAAG8yC,MAChC1vC,KAAKyrb,gBAAgB7ub,GAAG8yC,MAAQ,GAAK1vC,KAAKyrb,gBAAgB7ub,GAAG2ub,eAC7DT,GAAc9qb,KAAKyrb,gBAAgB7ub,GAAG8yC,MACtCm8Y,KAGAlkC,EAAO/qZ,GAAK,GAIxB,IAASA,EAAI,EAAGA,EAAIoD,KAAK86D,MAAOl+D,IAAK,CACjC,IAAI8yC,EAAQo7Y,EAAae,EACrBlkC,EAAO/qZ,IAAM,IACb+qZ,EAAO/qZ,GAAK8yC,GAGpB,OAAOi4W,GAEJ6jC,EA7IkC,GCvDzCM,GAA4B,WAM5B,SAASA,EAAWzxX,GAKhBr6D,KAAK+rb,qBAAuB,EAK5B/rb,KAAKu+D,UAAY,EAKjBv+D,KAAKgsb,SAAW,EAKhBhsb,KAAK4hb,aAAc,EAMnB5hb,KAAKisb,uBAAwB,EAK7Bjsb,KAAKyib,cAAgB,EAMrBzib,KAAKsgb,gBAAiB,EACtBtgb,KAAKksb,2BAA4B,EAMjClsb,KAAKmsb,oBAAqB,EAC1Bnsb,KAAKqlb,YAAa,EAClBrlb,KAAKmqb,cAAe,EACpBnqb,KAAKosb,QAAU/xX,EAoQnB,OAlQAn8D,OAAOwpB,eAAeoka,EAAW5vb,UAAW,gBAAiB,CAMzDyrB,IAAK,WACD,OAAO3nB,KAAKqsb,gBAEhBxka,IAAK,SAAUrrB,GACXwD,KAAKqsb,eAAiB7vb,GAE1BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,QAAS,CAKjDyrB,IAAK,WAID,OAHsB,MAAlB3nB,KAAKssb,YACLtsb,KAAKssb,UAAY,IAAIlB,GAAsBprb,OAExCA,KAAKssb,WAEhBxka,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,OAAQ,CAKhDyrB,IAAK,WACD,OAAO3nB,KAAKosb,SAEhBvka,IAAK,SAAUrrB,GACXwD,KAAKosb,QAAU5vb,GAEnBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,QAAS,CAKjDyrB,IAAK,WAKD,MAJ6B,qBAAlB3nB,KAAKusb,WACZvsb,KAAKusb,SAAW,IAAIpT,GACpBn5a,KAAKusb,SAAStS,UAAUj6a,OAErBA,KAAKusb,UAEhB1ka,IAAK,SAAUrrB,GACXwD,KAAKusb,SAAW/vb,EAChB,IAAK,IAAII,EAAI,EAAGA,EAAIoD,KAAKsgE,MAAMxF,MAAOl+D,IAClCoD,KAAKsgE,MAAMg5W,QAAQ18a,GAAGo3B,MAAM4rD,QAAUpjF,EAAMmsK,OAClB,qBAAfnsK,EAAMqgF,OACb78E,KAAKsgE,MAAMg5W,QAAQ18a,GAAGo3B,MAAM6oD,KAAOrgF,EAAMqgF,MAER,qBAA1BrgF,EAAM+8a,kBACbv5a,KAAKsgE,MAAMg5W,QAAQ18a,GAAGo3B,MAAMulZ,gBAAkB/8a,EAAM+8a,iBAEnB,qBAA1B/8a,EAAMgtb,kBACbxpb,KAAKsgE,MAAMg5W,QAAQ18a,GAAGo3B,MAAMw1Z,gBAAkBhtb,EAAMgtb,iBAEzB,qBAApBhtb,EAAMk9a,YACb15a,KAAKsgE,MAAMg5W,QAAQ18a,GAAGo3B,MAAM0lZ,UAAYl9a,EAAMk9a,WAErB,qBAAlBl9a,EAAMq9a,UACb75a,KAAKsgE,MAAMg5W,QAAQ18a,GAAGo3B,MAAM6lZ,QAAUr9a,EAAMq9a,UAIxD/xZ,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,iBAAkB,CAK1DyrB,IAAK,WAID,MAHuC,qBAA5B3nB,KAAKwsb,qBACZxsb,KAAKwsb,mBAAqB,GAEvBxsb,KAAKwsb,oBAEhB3ka,IAAK,SAAUrrB,GACXwD,KAAKwsb,mBAAqBhwb,GAE9BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,mBAAoB,CAK5DyrB,IAAK,WACD,OAAO3nB,KAAK+rb,sBAEhBlka,IAAK,SAAUrrB,GACXwD,KAAK+rb,qBAAuBvvb,GAEhCsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,SAAU,CAKlDyrB,IAAK,WAID,OAHK3nB,KAAKsgb,iBACNtgb,KAAKu+D,UAAYv+D,KAAKwlb,iBAEnBxlb,KAAKu+D,WAEhB12C,IAAK,SAAUrrB,GACXwD,KAAKu+D,UAAY/hE,EACjBwD,KAAKsgb,gBAAiB,GAE1Bx4Z,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,QAAS,CAKjDyrB,IAAK,WAID,OAHsB,IAAlB3nB,KAAKgsb,UAA2C,qBAAlBhsb,KAAKgsb,WACnChsb,KAAKgsb,SAAWhsb,KAAKkpb,gBAElBlpb,KAAKgsb,UAEhBlka,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,yBAA0B,CAKlEyrB,IAAK,WACD,OAAO3nB,KAAKysb,YAEhB5ka,IAAK,SAAUrrB,GACXwD,KAAKysb,WAAajwb,GAEtBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,mBAAoB,CAK5DyrB,IAAK,WACD,OAAO3nB,KAAK0sb,mBAEhB7ka,IAAK,SAAUrrB,GACXwD,KAAK0sb,kBAAoBlwb,GAE7BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,mBAAoB,CAK5DyrB,IAAK,WACD,OAAO3nB,KAAKmsb,oBAEhBtka,IAAK,SAAUrrB,GACXwD,KAAKmsb,mBAAqB3vb,GAE9BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeoka,EAAW5vb,UAAW,WAAY,CAKpDyrB,IAAK,WACD,OAAO3nB,KAAKq6D,KAAKyO,KAAK0uR,cAAcr5V,QAAQ6B,OAEhD8nB,YAAY,EACZC,cAAc,IAOlB+ja,EAAW5vb,UAAUspb,cAAgB,WACjC,IACIjnX,EADA+pX,EAAyB,EAEzBngS,EAAY,EAEZ5pF,EADAv+D,KAAKsgE,MAAMg5W,QAAQ,GAAGlgW,QAAU,EACpB,EAGAp5E,KAAKsgE,MAAMg5W,QAAQ,GAAG3pY,OAEtC,IAAK,IAAI/yC,EAAI,EAAGA,EAAIoD,KAAKsgE,MAAMxF,MAAOl+D,IAAK,CACvC,IAAImjF,EAAO//E,KAAKsgE,MAAMg5W,QAAQ18a,GAa9B,GAXImjF,EAAKuoW,uBAAyBA,IAC9BA,EAAyBvoW,EAAKuoW,wBASlCtob,KAAK8mb,kBAAmB,EACpB/mW,EAAK3G,QAAU,EAAnB,CAGI,IAFA,IAAIuzW,EAAS/vb,EACTgwb,EAAQ5sb,KAAKq6D,KAAKyO,KAAK0uR,cAAcr5V,QAAQ6B,MACxCmI,EAAI,EAAGA,EAAI43E,EAAK3G,QAASjxE,IACzBA,EAAI,EAAK43E,EAAK3G,UACfp5E,KAAKq6D,KAAKyO,KAAKk3W,OAAO4M,EAAQzkb,EAAI,GAAGm4D,MAAMg5W,QAAQqT,GAAQpE,YAAa,GAG5EpgS,EAAYpoE,EAAKpwC,SACjBw4G,EAAYpoE,EAAKpwC,aAIzB4uB,EAAYh3D,KAAK8L,IAAIkrD,EAAWwhB,EAAKpwC,QAWzC,OATIw4G,EAAY5pF,IACZA,EAAY4pF,GAEE,IAAd5pF,EACAA,EAAY4pF,EAEPmgS,EAAyB,IAC9B/pX,GAAa+pX,GAEV/pX,GAEXutX,EAAW5vb,UAAUgtb,aAAe,WAEhC,IADA,IAAI2D,EAAS,EACJjwb,EAAI,EAAGA,EAAIoD,KAAKq6D,KAAKN,QAAQe,MAAOl+D,IAAK,CAE9Ciwb,GADa7sb,KAAKq6D,KAAKN,QAAQ4mX,UAAU/jb,GACxB8yC,MAErB,OAAOm9Y,GAEJf,EAzTqB,GAgU5BgB,GAAsC,WAMtC,SAASA,EAAqBzyX,GAC1Br6D,KAAK8oE,KAAO,GACZ9oE,KAAKq6D,KAAOA,EAoDhB,OAlDAn8D,OAAOwpB,eAAeola,EAAqB5wb,UAAW,QAAS,CAM3DyrB,IAAK,WACD,OAAO3nB,KAAK8oE,KAAKjsE,QAErBirB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeola,EAAqB5wb,UAAW,gBAAiB,CAMnEyrB,IAAK,WACD,OAAO3nB,KAAK8oE,MAEhBhhD,YAAY,EACZC,cAAc,IAElB+ka,EAAqB5wb,UAAU6wb,OAAS,SAAU7nZ,GAC9C,GAAmB,qBAARA,EAAqB,CAC5B,IAAI8nZ,EAAU,IAAIlB,GAAW9rb,KAAKq6D,MAElC,OADAr6D,KAAK+sb,OAAOC,GACLA,EAOP,GAJA9nZ,EAAIlR,MAAMqlZ,mBAAmBr5a,KAAKq6D,KAAKrmC,MAAMulZ,iBAC7Cr0Y,EAAIlR,MAAMi4V,QAAQjsX,KAAKq6D,KAAKrmC,MAAM6oD,MAClC33C,EAAIlR,MAAMylZ,aAAaz5a,KAAKq6D,KAAKrmC,MAAM0lZ,WACvCx0Y,EAAIlR,MAAM4lZ,WAAW55a,KAAKq6D,KAAKrmC,MAAM6lZ,SACb,IAApB30Y,EAAIo7B,MAAMxF,MACV,IAAK,IAAIl+D,EAAI,EAAGA,EAAIoD,KAAKq6D,KAAKN,QAAQe,MAAOl+D,IACzCsoC,EAAIo7B,MAAMv3C,IAAI,IAAIk/Z,IAG1Bjob,KAAK8oE,KAAKlnE,KAAKsjC,IAOvB4nZ,EAAqB5wb,UAAU8jb,OAAS,SAAUxla,GAC9C,OAAOxa,KAAK8oE,KAAKtuD,IAEdsya,EA5D+B,GAmEtCG,GAAyC,WAMzC,SAASA,EAAwB5yX,GAK7Br6D,KAAK8oE,KAAO,GACZ9oE,KAAKq6D,KAAOA,EACZr6D,KAAK8oE,KAAO,GA2ChB,OApCAmkX,EAAwB/wb,UAAUmlb,UAAY,SAAU7ma,GAIpD,OAAQxa,KAAK8oE,KAAKtuD,IAEtBtc,OAAOwpB,eAAeula,EAAwB/wb,UAAW,QAAS,CAK9DyrB,IAAK,WACD,OAAO3nB,KAAK8oE,KAAKjsE,QAErBirB,YAAY,EACZC,cAAc,IAElBkla,EAAwB/wb,UAAU6sB,IAAM,SAAUmc,GAC9C,GAAmB,kBAARA,EAAkB,CAEzB,IADA,IAAI0lB,OAAM,EACDhuD,EAAI,EAAGA,EAAIsoC,EAAKtoC,IAAK,CAC1BguD,EAAM,IAAIkhY,GAAW9rb,KAAKq6D,MAC1B,IAAK,IAAIlyD,EAAI,EAAGA,EAAInI,KAAKq6D,KAAKN,QAAQe,MAAO3yD,IACzCyiD,EAAI0V,MAAMv3C,IAAI,IAAIk/Z,IAEtBjob,KAAK8oE,KAAKlnE,KAAKgpD,GAEnB,OAAO5qD,KAAK8oE,KAGZ9oE,KAAK8oE,KAAKlnE,KAAKsjC,IAGvB+nZ,EAAwB/wb,UAAUiC,QAAU,SAAUysD,GAClD,OAAO5qD,KAAK8oE,KAAK3qE,QAAQysD,IAEtBqiY,EAxDkC,GCxYzC5uZ,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzCwkZ,GAAyB,SAAU9jZ,GAOnC,SAAS8jZ,IACL,IAAIljb,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAoDjC,OA/CAD,EAAMm/a,SAAW,IAAIhhD,GAAM,EAAG,GAI9Bn+X,EAAM+hb,aAAc,EAKpB/hb,EAAMw/a,cAAe,EAKrBx/a,EAAMy/a,WAAa,IAAIrhD,GAKvBp+X,EAAM0/a,oBAAsB,GAK5B1/a,EAAMo/a,gBAAkB,EACxBp/a,EAAMq/a,UAAY,EAKlBr/a,EAAM4/a,UAAW,EACjB5/a,EAAM4hb,oBAAsB,EAa5B5hb,EAAMu/a,gBAAiB,EACvBv/a,EAAMmtb,eAAgB,EACtBntb,EAAM+ob,cAAe,EACd/ob,EAyoBX,OApsBAs+B,GAAU4kZ,EAAS9jZ,GA6DnBjhC,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,qBAAsB,CAM3DyrB,IAAK,WACD,MAAsC,qBAAvB3nB,KAAKmtb,eAA+D,cAAvBntb,KAAKmtb,eAErErla,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,mBAAoB,CAKzDyrB,IAAK,WACD,MAAoC,qBAArB3nB,KAAKotb,aAA2D,cAArBptb,KAAKotb,aAEnEtla,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,eAAgB,CAKrDyrB,IAAK,WAID,OAH0B,MAAtB3nB,KAAKqtb,eAAuD,qBAAvBrtb,KAAKqtb,gBAC1Crtb,KAAKqtb,eAAgB,GAElBrtb,KAAKqtb,eAEhBxla,IAAK,SAAUrrB,GACXwD,KAAKqtb,cAAgB7wb,GAEzBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,2BAA4B,CAKjEyrB,IAAK,WACD,OAAO3nB,KAAK2/a,UAEhB93Z,IAAK,SAAUrrB,GACXwD,KAAK2/a,SAAWnjb,GAEpBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,UAAW,CAKhDyrB,IAAK,WAID,OAHwB,MAApB3nB,KAAKm6D,aAAmD,qBAArBn6D,KAAKm6D,cACxCn6D,KAAKm6D,YAAc,IAAIqxX,GAAwBxrb,OAE5CA,KAAKm6D,aAEhBryC,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,OAAQ,CAK7CyrB,IAAK,WAID,OAHqB,MAAjB3nB,KAAKk+W,WACLl+W,KAAKk+W,SAAW,IAAI4uE,GAAqB9sb,OAEtCA,KAAKk+W,UAEhBp2V,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,UAAW,CAKhDyrB,IAAK,WAID,OAHwB,MAApB3nB,KAAKstb,aAAmD,qBAArBttb,KAAKstb,cACxCttb,KAAKstb,YAAc,IAAIL,GAAwBjtb,OAE5CA,KAAKstb,aAEhBxla,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,eAAgB,CAKrDyrB,IAAK,WACD,OAAO3nB,KAAKi/a,kBAEhBp3Z,IAAK,SAAUrrB,GACXwD,KAAKi/a,iBAAmBzib,GAE5BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,QAAS,CAK9CyrB,IAAK,WAID,OAHsB,MAAlB3nB,KAAKutb,YACLvtb,KAAKutb,UAAY,IAAI7U,IAElB14a,KAAKutb,WAEhB1la,IAAK,SAAUrrB,GACW,MAAlBwD,KAAKutb,YACLvtb,KAAKutb,UAAY/wb,IAGzBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,cAAe,CAKpDyrB,IAAK,WACD,OAAO3nB,KAAKwtb,aAEhB3la,IAAK,SAAUrrB,GACXwD,KAAKwtb,YAAchxb,GAEvBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,cAAe,CAKpDyrB,IAAK,WACD,OAAO3nB,KAAKytb,aAEhB5la,IAAK,SAAUrrB,GACXwD,KAAKytb,YAAcjxb,GAEvBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,OAAQ,CAoB7CyrB,IAAK,WAID,OAH6B,IAAxB3nB,KAAKk/a,SAASxvY,OAA8C,qBAAxB1vC,KAAKk/a,SAASxvY,OAAmD,IAAzB1vC,KAAKk/a,SAASvvY,SAC3F3vC,KAAKk/a,SAAWl/a,KAAKi0E,WAElBj0E,KAAKk/a,UAKhBr3Z,IAAK,SAAUrrB,GACXwD,KAAKk/a,SAAW1ib,GAEpBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,aAAc,CACnDyrB,IAAK,WACD,OAAO3nB,KAAK0tb,YAEhB7la,IAAK,SAAUrrB,GACXwD,KAAK0tb,WAAalxb,GAEtBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAeu7Z,EAAQ/mb,UAAW,eAAgB,CACrDyrB,IAAK,WACD,OAAO3nB,KAAKi7a,cAEhBnzZ,YAAY,EACZC,cAAc,IAElBk7Z,EAAQ/mb,UAAUg4Y,KAAO,SAAU5qP,EAAMC,EAAMC,EAAMC,GACjD,GAAIF,aAAgB00O,IAAgC,qBAAf10O,EAAK75G,OAAyC,qBAAT85G,EACtE,OAAOxpJ,KAAK+yY,WAAWzpP,EAAMC,EAAKhoI,EAAGgoI,EAAKjzI,GAEzC,GAAoB,kBAATizI,GAAqC,kBAATC,GAAqC,qBAATC,EACpE,OAAOzpJ,KAAK+yY,WAAWzpP,EAAMC,EAAMC,EAAM,MAExC,GAAID,aAAgB40O,IAAoC,qBAAf50O,EAAK75G,OAAyC,qBAAT85G,EAC/E,OAAOxpJ,KAAK+yY,WAAWzpP,EAAMC,EAAM,MAElC,GAAIA,aAAgB00O,IAAgC,qBAAf10O,EAAK75G,OAAyB85G,aAAgBmxR,GACpF,OAAO36a,KAAK+yY,WAAWzpP,EAAMC,EAAKhoI,EAAGgoI,EAAKjzI,EAAGkzI,GAE5C,GAAoB,kBAATD,GAAqC,kBAATC,IAAsBC,aAAgBkxR,IAA2B,MAARlxR,GAAe,CAChH,IAAI/5G,EAAS45G,EAAK0pP,SAASjG,WAAWr9V,MAAQ65G,EAC1C81Q,EAAkB,IAAIlhC,GAAW50O,EAAMC,EAAM95G,EAAO,GACxD,OAAO1vC,KAAK+yY,WAAWzpP,EAAM+1Q,EAAiB51Q,GAE7C,OAAIF,aAAgB40O,IAAoC,qBAAf50O,EAAK75G,OAAyC,mBAAT85G,EACxExpJ,KAAK+yY,WAAWzpP,EAAMC,EAAM,MAG5BvpJ,KAAK+yY,WAAWzpP,EAAMC,EAAMC,IAO3Cy5R,EAAQ/mb,UAAU+3E,QAAU,WAGxB,IAFA,IAAItkC,EAAS,EACTD,EAAQ1vC,KAAK+5D,QAAQrqB,MAChB9yC,EAAI,EAAGA,EAAIoD,KAAKglB,QAAQ81C,MAAOl+D,IAAK,CAEzC+yC,GADU3vC,KAAKglB,QAAQq8Z,UAAUzkb,GACnB+yC,OAElB,IAAS/yC,EAAI,EAAGA,EAAIoD,KAAK8oE,KAAKhO,MAAOl+D,IAAK,CAEtC+yC,GADU3vC,KAAK8oE,KAAKk3W,OAAOpjb,GACb+yC,OAElB,OAAO,IAAIuuV,GAAMxuV,EAAOC,IAE5BszY,EAAQ/mb,UAAU4ob,gBAAkB,SAAU7kb,GACtCD,KAAK4kb,oBACL5kb,KAAKmtb,cAAcntb,KAAMC,IAGjCgjb,EAAQ/mb,UAAUipb,cAAgB,SAAUllb,GACpCD,KAAKilb,kBACLjlb,KAAKotb,YAAYptb,KAAMC,IAO/Bgjb,EAAQ/mb,UAAUgoQ,OAAS,SAAU34I,GACjC,GAAwB,IAApBvrH,KAAK8oE,KAAKhO,MAAa,CACvB,IAAI2qX,EAAazlb,KAAK8oE,KAAKk3W,OAAO,GAAG1/W,MAAMg5W,QAAQ,GAAGtlZ,MACtD,GAA0B,MAAtByxZ,EAAW7lW,UAAgD,MAA3B6lW,EAAW7lW,QAAQ98C,MAAkD,IAAlC2iZ,EAAW7lW,QAAQ98C,KAAK4M,OAChE,MAA1B+1Y,EAAW7lW,QAAQ58C,KAAgD,IAAjCyiZ,EAAW7lW,QAAQ58C,IAAI0M,OAAe,CACzE,IAAInuB,EAAIkka,EAAW7lW,QAAQ98C,KAAK4M,MAAQ,EACpCp5B,EAAImva,EAAW7lW,QAAQ58C,IAAI0M,MAAQ,EACvC,GAAI67E,EAAMuqQ,OAAOv0W,IAAM01Z,GAAWtyN,QAAQ5hL,MAAM2M,MAAQ,GAAK67E,EAAMuqQ,OAAOx/W,IAAM2ga,GAAWtyN,QAAQ5hL,MAAM2M,MAAQ,EAAG,CAChH,IAAI+rY,EAAW,IAAIt9C,GAAW58W,EAAGjL,EAAGtW,KAAKk/a,SAASxvY,MAAO1vC,KAAKk/a,SAASvvY,QACvE47E,EAAMuqQ,OAAS2lD,IAU3B,OANAz7a,KAAKsqb,UACLtqb,KAAKuqb,YACLvqb,KAAKi7a,aAAe1vT,EAAMvgH,OAC1BhL,KAAK2tb,aAAepiU,EAAMuqQ,OACX,IAAIkpD,GAAgBh/a,MACZu6a,SAAShvT,IAGpC03T,EAAQ/mb,UAAUoub,QAAU,WAOxB,IANA,IAAItxW,EAAU,EACVI,EAAU,EACV8qS,EAAmB,EACnBk9D,EAAkB,EAClB8E,EAAU,EACVtgO,EAAW5lN,KAAKglB,QAAQ81C,MACnBl+D,EAAI,EAAGA,EAAIgpN,EAAUhpN,IAAK,CAC/B,IAAIguD,EAAM5qD,KAAKglB,QAAQq8Z,UAAUzkb,GACjCspb,EAAU,EAEV,IADA,IAAI6C,EAAWn+X,EAAI0V,MAAMxF,MAChB3yD,EAAI,EAAGA,EAAI4gb,EAAU5gb,IAAK,CAC/B,IAAI43E,EAAOn1B,EAAI0V,MAAMg5W,QAAQnxa,GAG7B,GAFA+9a,EAAU3+a,KAAK8L,IAAI6ya,EAASnmW,EAAK3G,UAE5B2G,EAAK4mW,sBAAwB5mW,EAAK6tW,qBAAuB7tW,EAAKgkW,WAAa,GAAKhkW,EAAK3G,QAAU,GAAI,CACpG,GAAI2G,EAAKgkW,WAAa57a,EAAIyiD,EAAI0V,MAAMxF,MAChC,MAAM,IAAIl6D,MAAM,iCAAmCuH,EAAEgF,WAAa,WAAavQ,EAAEuQ,YAErF,GAAI4yE,EAAK3G,QAAUx8E,EAAIoD,KAAKglB,QAAQ81C,MAChC,MAAM,IAAIl6D,MAAM,oCAAsCuH,EAAEgF,WAAa,WAAavQ,EAAEuQ,YAKxF,GAAI4yE,EAAKgkW,WAAa,GAAKhkW,EAAK3G,QAAU,EAAG,CAQzC,IAPAJ,EAAU+G,EAAKgkW,WACf3qW,EAAU2G,EAAK3G,QACf8qS,EAAmB/7W,EACnBi5a,EAAkBxkb,EAClBmjF,EAAK8tW,kBAAmB,EACxB9tW,EAAK+tW,iBAAkB,EAEhB90W,EAAU,GACbkrS,IACAt5T,EAAI0V,MAAMg5W,QAAQp1D,GAAkByiE,qBAAsB,EAC1D/7X,EAAI0V,MAAMg5W,QAAQp1D,GAAkB0pE,oBAAqB,EACzDhjY,EAAI0V,MAAMg5W,QAAQp1D,GAAkB9qS,QAAUA,EAC9CJ,IAKJ,IAHAkrS,EAAmB/7W,EACnB6wE,EAAU+G,EAAKgkW,WAER3qW,EAAU,GAAG,CAKhB,IAJAgoW,IACAphb,KAAKglB,QAAQq8Z,UAAUD,GAAiB9gX,MAAMg5W,QAAQnxa,GAAGylb,oBAAqB,EAC9E5tb,KAAKglB,QAAQq8Z,UAAUD,GAAiB9gX,MAAMg5W,QAAQp1D,GAAkB0pE,oBAAqB,EAC7Fx0W,IACOJ,EAAU,GACbkrS,IACAlkX,KAAKglB,QAAQq8Z,UAAUD,GAAiB9gX,MAAMg5W,QAAQp1D,GAAkByiE,qBAAsB,EAC9F3mb,KAAKglB,QAAQq8Z,UAAUD,GAAiB9gX,MAAMg5W,QAAQp1D,GAAkB0pE,oBAAqB,EAC7F50W,IAEJA,EAAU+G,EAAKgkW,WACf7/D,EAAmB/7W,QAGtB,GAAI43E,EAAKgkW,WAAa,GAAsB,IAAjBhkW,EAAK3G,QAKjC,IAJAJ,EAAU+G,EAAKgkW,WACf7/D,EAAmB/7W,EACnB43E,EAAK8tW,kBAAmB,EAEjB70W,EAAU,GACbkrS,IACAt5T,EAAI0V,MAAMg5W,QAAQp1D,GAAkByiE,qBAAsB,EAC1D3tW,SAGH,GAAwB,IAApB+G,EAAKgkW,YAAoBhkW,EAAK3G,QAAU,EAI7C,IAHAA,EAAU2G,EAAK3G,QACfgoW,EAAkBxkb,EAEXw8E,EAAU,GACbgoW,IACAphb,KAAKglB,QAAQq8Z,UAAUD,GAAiB9gX,MAAMg5W,QAAQnxa,GAAGylb,oBAAqB,EAC9Ex0W,KAKhBxuB,EAAImjY,eAAiB7H,IAG7BjD,EAAQ/mb,UAAUqub,UAAY,WAC1B,IAAIyD,EAGA9pE,EAFA+pE,EAAc,EACdC,EAAc,EAEd9M,EAAkB,EAGtB,GAFA4M,EAAcC,EAAc,EAC5B/pE,EAAmBk9D,EAAkB,EACjCphb,KAAKs/a,gBAAkBt/a,KAAKktb,cAE5B,IADA,IAAItnO,EAAW5lN,KAAK8oE,KAAKhO,MAChBl+D,EAAI,EAAGA,EAAIgpN,EAAUhpN,IAAK,CAC/B,IAAIguD,EAAM5qD,KAAK8oE,KAAKk3W,OAAOpjb,GAC3Bsxb,EAAc,EAEd,IADA,IAAInF,EAAWn+X,EAAI0V,MAAMxF,MAChB3yD,EAAI,EAAGA,EAAI4gb,EAAU5gb,IAAK,CAC/B,IAAI43E,EAAOn1B,EAAI0V,MAAMg5W,QAAQnxa,GAG7B,GAFA+lb,EAAc3mb,KAAK8L,IAAI66a,EAAanuW,EAAK3G,UAEpC2G,EAAK4mW,sBAAwB5mW,EAAK6tW,qBAC/B7tW,EAAKgkW,WAAa,GAAKhkW,EAAK3G,QAAU,GAAI,CAC9C,GAAI2G,EAAKgkW,WAAa57a,EAAIyiD,EAAI0V,MAAMxF,MAChC,MAAM,IAAIl6D,MAAM,kCAAoCuH,EAAEgF,WAAa,WAAavQ,EAAEuQ,YAEtF,GAAI4yE,EAAK3G,QAAUx8E,EAAIoD,KAAK8oE,KAAKhO,MAC7B,MAAM,IAAIl6D,MAAM,kCAAoCuH,EAAEgF,WAAa,WAAavQ,EAAEuQ,YAEtF,GAAI4yE,EAAKgkW,WAAa,GAAKhkW,EAAK3G,QAAU,EAAG,CAQzC,IAPA40W,EAAcjuW,EAAKgkW,WACnBkK,EAAcluW,EAAK3G,QACnB8qS,EAAmB/7W,EACnBi5a,EAAkBxkb,EAClBmjF,EAAK8tW,kBAAmB,EACxB9tW,EAAK+tW,iBAAkB,EAEhBE,EAAc,GACjB9pE,IACAt5T,EAAI0V,MAAMg5W,QAAQp1D,GAAkByiE,qBAAsB,EAC1D/7X,EAAI0V,MAAMg5W,QAAQp1D,GAAkB0pE,oBAAqB,EACzDI,IAKJ,IAHA9pE,EAAmB/7W,EACnB6lb,EAAcjuW,EAAKgkW,WAEZkK,EAAc,GAAG,CAKpB,IAJA7M,IACAphb,KAAK8oE,KAAKk3W,OAAOoB,GAAiB9gX,MAAMg5W,QAAQnxa,GAAGylb,oBAAqB,EACxE5tb,KAAK8oE,KAAKk3W,OAAOoB,GAAiB9gX,MAAMg5W,QAAQp1D,GAAkB0pE,oBAAqB,EACvFK,IACOD,EAAc,GACjB9pE,IACAlkX,KAAK8oE,KAAKk3W,OAAOoB,GAAiB9gX,MAAMg5W,QAAQp1D,GAAkByiE,qBAAsB,EACxF3mb,KAAK8oE,KAAKk3W,OAAOoB,GAAiB9gX,MAAMg5W,QAAQp1D,GAAkB0pE,oBAAqB,EACvFI,IAEJA,EAAcjuW,EAAKgkW,WACnB7/D,EAAmB/7W,QAGtB,GAAI43E,EAAKgkW,WAAa,GAAsB,IAAjBhkW,EAAK3G,QAKjC,IAJA40W,EAAcjuW,EAAKgkW,WACnB7/D,EAAmB/7W,EACnB43E,EAAK8tW,kBAAmB,EAEjBG,EAAc,GACjB9pE,IACAt5T,EAAI0V,MAAMg5W,QAAQp1D,GAAkByiE,qBAAsB,EAC1DqH,SAGH,GAAwB,IAApBjuW,EAAKgkW,YAAoBhkW,EAAK3G,QAAU,EAI7C,IAHA60W,EAAcluW,EAAK3G,QACnBgoW,EAAkBxkb,EAEXqxb,EAAc,GACjB7M,IACAphb,KAAK8oE,KAAKk3W,OAAOoB,GAAiB9gX,MAAMg5W,QAAQnxa,GAAGylb,oBAAqB,EACxEK,KAKhBrjY,EAAImjY,eAAiBG,IAIjCjL,EAAQ/mb,UAAUkkb,oBAAsB,SAAUtqD,GAC9C,GAAsB,qBAAXA,EAAwB,CAC/B91X,KAAK2rb,aAAc,EAGnB,IAFA,IAAIhkC,EAAS3nZ,KAAK+5D,QAAQ6xX,iBAAiB91D,EAAOpmV,MAAQomV,EAAOv0W,GAExD3kB,EAAI,EAAGk+D,EAAQ96D,KAAK+5D,QAAQe,MAAOl+D,EAAIk+D,EAAOl+D,IAInDoD,KAAK+5D,QAAQ4mX,UAAU/jb,GAAGinb,YAAcl8B,EAAO/qZ,GAC/CoD,KAAKo/a,UAAYz3B,EAAO/qZ,GAE5B,GAAuB,MAAnBoD,KAAK6hb,YAA4D,GAAtC7hb,KAAKg0B,MAAMyqD,yBAA8F,GAA1Dz+E,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAMyqD,wBAAkC,CAC3I,IAAIj0C,EAAU,EACVq5Y,EAAc,EACdl+N,EAAc3lN,KAAK+5D,QAAQe,MAC3BqzX,EAAuB,EACc,MAArCnub,KAAK6hb,WAAW7tZ,MAAMouZ,aAAoE,qBAAtCpib,KAAK6hb,WAAW7tZ,MAAMouZ,cACrB,oBAA1Cpib,KAAK6hb,WAAW7tZ,MAAMouZ,YAAYt/Y,MAAuB9iC,KAAK6hb,WAAW7tZ,MAAMouZ,YAAYzK,aAClGntY,GAAWxqC,KAAK6hb,WAAW7tZ,MAAMouZ,YAAYt/Y,MAEK,oBAA3C9iC,KAAK6hb,WAAW7tZ,MAAMouZ,YAAYr/Y,OAAwB/iC,KAAK6hb,WAAW7tZ,MAAMouZ,YAAYxK,cACnGptY,GAAWxqC,KAAK6hb,WAAW7tZ,MAAMouZ,YAAYr/Y,QAGrD,IAASnmC,EAAI,EAAGA,EAAIoD,KAAK6hb,WAAWkC,WAAYnnb,IAC5Cinb,GAAe7jb,KAAK6hb,WAAWj3X,IAAIyP,KAAKN,QAAQ4mX,UAAU3gb,KAAKm/a,gBAAkBvib,GAAG8yC,MAExF,IAAK,IAAIvnC,EAAI,EAAGA,EAAInI,KAAK+5D,QAAQe,MAAO3yD,IAChCnI,KAAKm6D,YAAYwmX,UAAUx4a,GAAGunC,MAAQ,GAAK1vC,KAAKm6D,YAAYwmX,UAAUx4a,GAAGojb,gBACzE1H,GAAe7jb,KAAKm6D,YAAYwmX,UAAUx4a,GAAGunC,MAC7Ci2K,KAcR,GAXmD,MAA9C3lN,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,aAA4E,oBAA9Cpib,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,cAChC,oBAAlDpib,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,KAAsBhjC,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYvK,YACnHrtY,GAAWxqC,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYp/Y,KAEM,oBAArDhjC,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,QAAyBjjC,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYtK,eACtHttY,GAAWxqC,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAMouZ,YAAYn/Y,SAGZ,GAA9CjjC,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAM6yZ,cAC/BhD,GAA4D,EAA7C7jb,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAM6yZ,aAE9ChD,EAAcr5Y,IACd2jZ,GAAwBtK,EAAcr5Y,GAAWm7K,EACjD3lN,KAAKo/a,UAAY+O,EACM,MAAnBnub,KAAK6hb,YACL,IAAS15a,EAAI,EAAGA,EAAInI,KAAK+5D,QAAQe,MAAO3yD,IAC/BnI,KAAK+5D,QAAQ4mX,UAAUx4a,GAAGojb,gBAC3Bvrb,KAAK+5D,QAAQ4mX,UAAUx4a,GAAG07a,YAAcsK,QAiB3D,CACGxmC,EAAS,CAAC3nZ,KAAK+5D,QAAQe,OAC3B,IADA,IACSuiD,EAAI,EAAGA,EAAIr9G,KAAK+5D,QAAQe,MAAOuiD,IACpCsqS,EAAOtqS,GAAK,EAEhB,IAAIqmU,EAAY,EAKhB,IAHiC,qBAArB1jb,KAAK4qT,aAA4D,qBAAtB5qT,KAAK2tb,cAAuD,OAArB3tb,KAAK4qT,aAAqD,qBAAtB5qT,KAAK2tb,gBACnI3tb,KAAK0rb,aAAe1rb,KAAK2tb,aAAaj+Y,OAEtC1vC,KAAKglB,QAAQ81C,MAAQ,EACrB,KAAIszX,EAAapub,KAAKglB,QAAQq8Z,UAAU,GAAG/gX,MAAMxF,MAC7C8qJ,EAAW5lN,KAAKglB,QAAQ81C,MAC5B,IAASl+D,EAAI,EAAGA,EAAIwxb,EAAYxxb,IAAK,CACjC8mb,EAAY,EACZ,IAASv7a,EAAI,EAAGA,EAAIy9M,EAAUz9M,IAAK,CAC/B,IAAI6jb,EAAWzkb,KAAK6L,IAAIpT,KAAK0rb,aAAc1rb,KAAKglB,QAAQq8Z,UAAUl5a,GAAGm4D,MAAMg5W,QAAQ18a,GAAG8yC,OACtFg0Y,EAAYn8a,KAAK8L,IAAIqwa,EAAWsI,GAEpCrkC,EAAO/qZ,GAAK8mb,GAepBA,EAAY,EACH9mb,EAAI,EAAb,IAAK,IAAWyxb,EAAarub,KAAK+5D,QAAQe,MAAOl+D,EAAIyxb,EAAYzxb,IAAK,CAClE,IAASuL,EAAI,EAAGy9M,EAAW5lN,KAAK8oE,KAAKhO,MAAO3yD,EAAIy9M,EAAUz9M,IACtD,GAAwD,GAAnDnI,KAAK8oE,KAAKk3W,OAAO73a,GAAGm4D,MAAMg5W,QAAQ18a,GAAGmnb,aAAoB/jb,KAAK8oE,KAAKk3W,OAAO73a,GAAGm4D,MAAMg5W,QAAQ18a,GAAG+pb,qBAAsE,MAA9C3mb,KAAK8oE,KAAKk3W,OAAO73a,GAAGm4D,MAAMg5W,QAAQ18a,GAAGJ,MAAe,CAC3K,GAAkD,MAA9CwD,KAAK8oE,KAAKk3W,OAAO73a,GAAGm4D,MAAMg5W,QAAQ18a,GAAGJ,QAAkBwD,KAAK8oE,KAAKk3W,OAAO73a,GAAGkyD,KAAKrmC,MAAMyqD,wBAC1Ez+E,KAAK8oE,KAAKk3W,OAAO73a,GAAGkyD,KAAKrmC,MAAMouZ,YAAYr/Y,MACnD/iC,KAAK8oE,KAAKk3W,OAAO73a,GAAGkyD,KAAKrmC,MAAMouZ,YAAYt/Y,KACzC9iC,KAAK8oE,KAAKk3W,OAAO73a,GAAGm4D,MAAMg5W,QAAQ18a,GAAGo3B,MAAM4rD,QAAQ98C,KAAK4M,MAI9Ds8Y,EAAW,EACfA,EAAWhsb,KAAK0rb,aAAe,EAAMnkb,KAAK6L,IAAIpT,KAAK0rb,aAAc1rb,KAAK8oE,KAAKk3W,OAAO73a,GAAGm4D,MAAMg5W,QAAQ18a,GAAG8yC,OAAS1vC,KAAK8oE,KAAKk3W,OAAO73a,GAAGm4D,MAAMg5W,QAAQ18a,GAAG8yC,MAapJg0Y,EAAYn8a,KAAK8L,IAAIs0Y,EAAO/qZ,GAAI2K,KAAK8L,IAAIqwa,EAAWsI,IACpDtI,EAAYn8a,KAAK8L,IAAIrT,KAAK+5D,QAAQ4mX,UAAU/jb,GAAG8yC,MAAOg0Y,GAGvC,GAAnB1jb,KAAK8oE,KAAKhO,QACV6sV,EAAO/qZ,GAAK8mb,GAChBA,EAAY,EAEP9mb,EAAI,EAAb,IAAK,IAAW0xb,EAAWtub,KAAK8oE,KAAKhO,MAAOl+D,EAAI0xb,EAAU1xb,IACjD,CAAIuL,EAAI,EAAb,IAAK,IAAWomb,EAAWvub,KAAK+5D,QAAQe,MAAO3yD,EAAIomb,EAAUpmb,IACzD,GAAInI,KAAK8oE,KAAKk3W,OAAOpjb,GAAG0jE,MAAMg5W,QAAQnxa,GAAG47a,WAAa,EAClD,CAAYp8B,EAAOx/Y,GACnB,IADA,IACS0hE,EAAI,EAAGA,EAAI7pE,KAAK8oE,KAAKk3W,OAAOpjb,GAAG0jE,MAAMg5W,QAAQnxa,GAAG47a,WAAYl6W,IACxD89U,EAAOx/Y,EAAI0hE,IAgBpC,IAASjtE,EAAI,EAAGk+D,EAAQ96D,KAAK+5D,QAAQe,MAAOl+D,EAAIk+D,EAAOl+D,KAC/CoD,KAAK+5D,QAAQ4mX,UAAU/jb,GAAG8yC,OAAS,GAE9B1vC,KAAK+5D,QAAQ4mX,UAAU/jb,GAAG8yC,MAAQ,IAAM1vC,KAAK+5D,QAAQ4mX,UAAU/jb,GAAG2ub,iBADvEvrb,KAAK+5D,QAAQ4mX,UAAU/jb,GAAGinb,YAAcl8B,EAAO/qZ,IAInD4tC,EAAU,EAAd,IACIgkZ,EAAW,EACXzF,EAAW/ob,KAAK+5D,QAAQe,MACxB2zX,EAAoB,EACxBD,EAAWxub,KAAKo/a,UAChB,IAASj3a,EAAI,EAAGA,EAAInI,KAAK+5D,QAAQe,MAAO3yD,IAChCnI,KAAKm6D,YAAYwmX,UAAUx4a,GAAGunC,MAAQ,GAAK1vC,KAAKm6D,YAAYwmX,UAAUx4a,GAAGojb,gBACzEiD,GAAYxub,KAAKm6D,YAAYwmX,UAAUx4a,GAAGunC,MAC1Cq5Y,KAWR,GALIyF,EAAW,GACuC,GAA9Cxub,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAM6yZ,cAC/B2H,GAAyD,EAA7Cxub,KAAK6hb,WAAWj3X,IAAIyP,KAAKrmC,MAAM6yZ,aAG/C2H,EAAWhkZ,IACXikZ,EAAqBD,EAAYzF,EACV,MAAnB/ob,KAAK6hb,YACL,IAAS15a,EAAI,EAAGA,EAAInI,KAAK+5D,QAAQe,MAAO3yD,IAC/BnI,KAAK+5D,QAAQ4mX,UAAUx4a,GAAGojb,gBAC3Bvrb,KAAK+5D,QAAQ4mX,UAAUx4a,GAAG07a,YAAc4K,KAMzDxL,EArsBkB,CAssB3B9H,ICntBEuT,GAAwC,WAExC,SAASA,EAAuBplS,EAAMC,EAAMC,EAAMC,EAAMC,GAChDJ,aAAgB60O,IAA8B,qBAAT50O,EACrCvpJ,KAAK2ub,eAAerlS,EAAK/nI,EAAG+nI,EAAKhzI,EAAGgzI,EAAK55G,MAAO45G,EAAK35G,OAAQ,MAExD25G,aAAgB60O,IAAc50O,aAAgB8wQ,IAA2B,qBAAT7wQ,EACrExpJ,KAAK2ub,eAAerlS,EAAK/nI,EAAG+nI,EAAKhzI,EAAGgzI,EAAK55G,MAAO45G,EAAK35G,OAAQ45G,GAExDD,aAAgB20O,IAAU10O,aAAgB20O,IAAyB,qBAAT10O,EAC/DxpJ,KAAK2ub,eAAerlS,EAAK/nI,EAAG+nI,EAAKhzI,EAAGizI,EAAK75G,MAAO65G,EAAK55G,OAAQ,MAExD25G,aAAgB20O,IAAU10O,aAAgB20O,IAAS10O,aAAgB6wQ,IAA2B,qBAAT5wQ,EAC1FzpJ,KAAK2ub,eAAerlS,EAAK/nI,EAAG+nI,EAAKhzI,EAAGizI,EAAK75G,MAAO65G,EAAK55G,OAAQ65G,GAExDF,aAAgB40O,IAAyB,qBAAT30O,EACrCvpJ,KAAK2ub,eAAe,EAAG,EAAGrlS,EAAK55G,MAAO45G,EAAK35G,OAAQ,MAE9B,kBAAT25G,GAAqC,kBAATC,GAAqC,qBAATC,EACpExpJ,KAAK2ub,eAAe,EAAG,EAAGrlS,EAAMC,EAAM,MAEjB,kBAATD,GAAqC,kBAATC,GAAqBC,aAAgB6wQ,IAA2B,qBAAT5wQ,EAC/FzpJ,KAAK2ub,eAAe,EAAG,EAAGrlS,EAAMC,EAAMC,GAGtCxpJ,KAAK2ub,eAAerlS,EAAMC,EAAMC,EAAMC,EAAM,MAylBpD,OAjlBAvrJ,OAAOwpB,eAAegna,EAAuBxyb,UAAW,OAAQ,CAM5DyrB,IAAK,WACD,OAAO3nB,KAAK4ub,WAEhB/ma,IAAK,SAAUrrB,GAEXwD,KAAK4ub,UAAYpyb,EAEjBwD,KAAK6ub,kBAGT/ma,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,YAAa,CAKjEyrB,IAAK,WACD,OAAO3nB,KAAK8ub,gBAEhBjna,IAAK,SAAUrrB,GAEXwD,KAAK+ub,aAAavyb,IAGtBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,aAAc,CAKlEyrB,IAAK,WACD,OAAO3nB,KAAKgvb,cAEhBnna,IAAK,SAAUrrB,GAEXwD,KAAKgvb,aAAexyb,GAGxBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,aAAc,CAKlEyrB,IAAK,WACD,OAAQ3nB,KAAKgvb,cAEjBnna,IAAK,SAAUrrB,GACXwD,KAAKgvb,cAAgBxyb,GAEzBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,WAAY,CAKhEyrB,IAAK,WACD,OAAO3nB,KAAK6wF,iBAEhBhpE,IAAK,SAAUrrB,GACPwD,KAAKmL,OAAS4vX,GAAasC,OAC3Br9X,KAAK6wF,gBAAkBr0F,IAM/BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,IAAK,CAKzDyrB,IAAK,WAED,MAD6C,qBAAzB3nB,KAAK6wF,gBAAmC7wF,KAAK6wF,gBAAgBtvE,EAAI,GAGzFsG,IAAK,SAAUrrB,GACPwD,KAAKmL,OAAS4vX,GAAasC,OAC3Br9X,KAAK6wF,gBAAgBtvE,EAAI/kB,IAMjCsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,IAAK,CAKzDyrB,IAAK,WAED,MAD6C,qBAAzB3nB,KAAK6wF,gBAAmC7wF,KAAK6wF,gBAAgBv6E,EAAI,GAGzFuR,IAAK,SAAUrrB,GACPwD,KAAKmL,OAAS4vX,GAAasC,OAC3Br9X,KAAK6wF,gBAAgBv6E,EAAI9Z,IAMjCsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,OAAQ,CAK5DyrB,IAAK,WACD,OAAO3nB,KAAKsrB,SAASkxD,MAEzB30D,IAAK,SAAUrrB,GACPwD,KAAKmL,OAAS4vX,GAAasC,MAC3Br9X,KAAKsrB,SAASioB,MAAM/2C,IAG5BsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,QAAS,CAK7DyrB,IAAK,WACD,OAAO3nB,KAAKsrB,SAASokB,OAEzB7nB,IAAK,SAAUrrB,GACX,GAAIwD,KAAKsrB,SAASokB,QAAUlzC,GAASwD,KAAKmL,OAAS4vX,GAAasC,KAAM,CAClE,IAAI7gT,EAAOx8E,KAAKsrB,SAASkxD,KACzBA,EAAK9sC,MAAQlzC,EACbwD,KAAKsrB,SAASioB,MAAMipC,KAG5B10D,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,SAAU,CAK9DyrB,IAAK,WACD,OAAO3nB,KAAKsrB,SAASqkB,QAEzB9nB,IAAK,SAAUrrB,GACX,GAAIwD,KAAKsrB,SAASqkB,SAAWnzC,GAASwD,KAAKmL,OAAS4vX,GAAasC,KAAM,CACnE,IAAI7gT,EAAOx8E,KAAKsrB,SAASkxD,KACzBA,EAAK7sC,OAASnzC,EACdwD,KAAKsrB,SAASioB,MAAMipC,KAG5B10D,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,WAAY,CAKhEyrB,IAAK,WACD,OAAO3nB,KAAKsrB,SAAS0nX,UAEzBlrX,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,WAAY,CAKhEyrB,IAAK,WAID,OAAO3nB,KAAKivb,aAEhBnna,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,OAAQ,CAK5DyrB,IAAK,WACD,OAAO3nB,KAAKkvb,cAEhBrna,IAAK,SAAUrrB,GACXwD,KAAKmvb,cAAc3yb,GACnBwD,KAAKkvb,aAAe1yb,GAExBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegna,EAAuBxyb,UAAW,SAAU,CAK9DyrB,IAAK,WACD,OAAO,IAAIw2W,GAAW,IAAIF,GAAOj+X,KAAKuhB,EAAGvhB,KAAKsW,GAAItW,KAAKw8E,OAE3D30D,IAAK,SAAUrrB,GACPwD,KAAKmL,OAAS4vX,GAAasC,OAC3Br9X,KAAKgpC,SAAW,IAAIi1V,GAAOzhY,EAAM+kB,EAAG/kB,EAAM8Z,GAC1CtW,KAAKw8E,KAAO,IAAI0hT,GAAM1hY,EAAMkzC,MAAOlzC,EAAMmzC,UAGjD7nB,YAAY,EACZC,cAAc,IAMlB2ma,EAAuBxyb,UAAUyyb,eAAiB,SAAUrlS,EAAMC,EAAMC,EAAMC,EAAMC,GAChF1pJ,KAAKuhB,EAAI+nI,EACTtpJ,KAAKsW,EAAIizI,EACTvpJ,KAAKivb,YAAc,IAAIn7B,GAAYtqQ,EAAMC,IAO7CilS,EAAuBxyb,UAAUizb,cAAgB,SAAUhkb,GACvD,GAAIA,IAAS4vX,GAAasC,KAAM,CAC5B,OAAQlyX,GACJ,KAAK4vX,GAAar+I,IACd18O,KAAKovb,KAAOv0D,GAAan+I,IACzB,MACJ,KAAKq+I,GAAap+I,OACd38O,KAAKovb,KAAOv0D,GAAal+I,OACzB,MACJ,KAAKo+I,GAAax+I,KACdv8O,KAAKovb,KAAOv0D,GAAat+I,KACzB,MACJ,KAAKw+I,GAAat+I,MACdz8O,KAAKovb,KAAOv0D,GAAap+I,MAGjCz8O,KAAK6ub,mBAObH,EAAuBxyb,UAAU2yb,eAAiB,WAC9C7ub,KAAK+kS,UAAY+1F,GAAkBuC,MAMvCqxD,EAAuBxyb,UAAU6yb,aAAe,SAAUhqJ,GACtD,GAAI/kS,KAAKovb,OAASv0D,GAAawC,KAC3Br9X,KAAK8ub,eAAiB/pJ,MAErB,CAED,IAAIsqJ,GAAW,EACf,OAAQrvb,KAAKovb,MACT,KAAKv0D,GAAat+I,KACd8yM,EAAYtqJ,IAAc+1F,GAAkBw0D,SAAWvqJ,IAAc+1F,GAAkBy0D,YACnFxqJ,IAAc+1F,GAAkB00D,YAAczqJ,IAAc+1F,GAAkBuC,KAClF,MACJ,KAAKxC,GAAan+I,IACd2yM,EAAYtqJ,IAAc+1F,GAAkBw0D,SAAWvqJ,IAAc+1F,GAAkBl+I,WACnFmoD,IAAc+1F,GAAkB20D,UAAY1qJ,IAAc+1F,GAAkBuC,KAChF,MACJ,KAAKxC,GAAap+I,MACd4yM,EAAYtqJ,IAAc+1F,GAAkB20D,UAAY1qJ,IAAc+1F,GAAkB40D,aACpF3qJ,IAAc+1F,GAAkB60D,aAAe5qJ,IAAc+1F,GAAkBuC,KACnF,MACJ,KAAKxC,GAAal+I,OACd0yM,EAAYtqJ,IAAc+1F,GAAkB00D,YAAczqJ,IAAc+1F,GAAkBj+I,cACnFkoD,IAAc+1F,GAAkB60D,aAAe5qJ,IAAc+1F,GAAkBuC,KACtF,MACJ,KAAKxC,GAAaugC,KACdi0B,EAAYtqJ,IAAc+1F,GAAkB80D,cAAgB7qJ,IAAc+1F,GAAkBuC,KAGhGgyD,IACArvb,KAAK8ub,eAAiB/pJ,KAQlC2pJ,EAAuBxyb,UAAUg4Y,KAAO,SAAUsqB,EAAOh+Z,GACrD,IAAIm/F,EAAO6+T,EAAM7+T,KACbm2R,EAAS91X,KAAK6+a,gBAAgBl/U,EAAMn/F,IACtB,IAAds1X,EAAOv0W,IACPu0W,EAAOv0W,EAAI,GAEfi9Y,EAAMxrB,SAASmqB,gBAAgBn9Z,KAAKsrB,SAAU,IAAI2yW,GAAOnI,EAAOv0W,EAAGu0W,EAAOx/W,GAAI,IAAI4nX,GAAMpI,EAAOpmV,MAAOomV,EAAOnmV,UAMjH++Y,EAAuBxyb,UAAU2ib,gBAAkB,SAAUl/U,EAAMn/F,GAC/D,IAAI7B,EAASqB,KAAK81X,OAOlB,OANI91X,KAAK8ub,iBAAmBh0D,GAAkBuC,KAC1C1+X,EAASqB,KAAK6vb,mBAAmBlwV,EAAMn/F,GAElCR,KAAK4ub,YAAc/zD,GAAawC,OACrC1+X,EAASqB,KAAK8vb,cAAcnwV,EAAMn/F,IAE/B7B,GAMX+vb,EAAuBxyb,UAAU2zb,mBAAqB,SAAUlwV,EAAMn/F,GACrDR,KAAK81X,OAOlB,OANI91X,KAAKmL,OAAS4vX,GAAasC,KAClBr9X,KAAK+vb,yBAAyBpwV,EAAMn/F,GAGpCR,KAAKgwb,2BAA2BrwV,EAAMn/F,IAQvDkub,EAAuBxyb,UAAU6zb,yBAA2B,SAAUpwV,EAAMn/F,GACxE,IAAIs1X,EAAS91X,KAAK81X,OAEdm6D,EADatwV,EAAK8gU,QACQwI,gBAAgBzoa,EAAUm/F,GAAM,GAC1Dp+E,EAAIvhB,KAAKuhB,EACTjL,EAAItW,KAAKsW,EACb,OAAQtW,KAAK8ub,gBACT,KAAKh0D,GAAkBw0D,QACnB/ta,EAAI,EACJjL,EAAI,EACJ,MACJ,KAAKwkX,GAAkBl+I,UACnBr7N,GAAK0ua,EAAavgZ,MAAQ1vC,KAAK0vC,OAAS,EACxCp5B,EAAI,EACJ,MACJ,KAAKwkX,GAAkB20D,SACnBlua,EAAI0ua,EAAavgZ,MAAQ1vC,KAAK0vC,MAC9Bp5B,EAAI,EACJ,MACJ,KAAKwkX,GAAkBy0D,WACnBhua,EAAI,EACJjL,GAAK25a,EAAatgZ,OAAS3vC,KAAK2vC,QAAU,EAC1C,MACJ,KAAKmrV,GAAkB80D,aACnBrua,GAAK0ua,EAAavgZ,MAAQ1vC,KAAK0vC,OAAS,EACxCp5B,GAAK25a,EAAatgZ,OAAS3vC,KAAK2vC,QAAU,EAC1C,MACJ,KAAKmrV,GAAkB40D,YACnBnua,EAAI0ua,EAAavgZ,MAAQ1vC,KAAK0vC,MAC9Bp5B,GAAK25a,EAAatgZ,OAAS3vC,KAAK2vC,QAAU,EAC1C,MACJ,KAAKmrV,GAAkB00D,WACnBjua,EAAI,EACJjL,EAAI25a,EAAatgZ,OAAS3vC,KAAK2vC,OAC/B,MACJ,KAAKmrV,GAAkBj+I,aACnBt7N,GAAK0ua,EAAavgZ,MAAQ1vC,KAAK0vC,OAAS,EACxCp5B,EAAI25a,EAAatgZ,OAAS3vC,KAAK2vC,OAC/B,MACJ,KAAKmrV,GAAkB60D,YACnBpua,EAAI0ua,EAAavgZ,MAAQ1vC,KAAK0vC,MAC9Bp5B,EAAI25a,EAAatgZ,OAAS3vC,KAAK2vC,OAKvC,OAFAmmV,EAAOv0W,EAAIA,EACXu0W,EAAOx/W,EAAIA,EACJw/W,GAMX44D,EAAuBxyb,UAAU8zb,2BAA6B,SAAUrwV,EAAMn/F,GAC1E,IAAI7B,EAASqB,KAAK81X,OACd2qC,EAAU9gU,EAAK8gU,QACfwvB,EAAexvB,EAAQwI,gBAAgBzoa,EAAUm/F,GAAM,GACvDp+E,EAAIvhB,KAAKuhB,EACTjL,EAAItW,KAAKsW,EACb,OAAQtW,KAAK8ub,gBACT,KAAKh0D,GAAkBw0D,QACftvb,KAAKmL,OAAS4vX,GAAax+I,MAC3Bh7N,GAAK0ua,EAAa1ua,EAClBjL,EAAI,GAECtW,KAAKmL,OAAS4vX,GAAar+I,MAChCn7N,GAAK0ua,EAAa1ua,EAClBjL,GAAK25a,EAAa35a,GAEtB,MACJ,KAAKwkX,GAAkBl+I,UACnBr7N,GAAK0ua,EAAavgZ,MAAQ1vC,KAAK0vC,OAAS,EACxCp5B,GAAK25a,EAAa35a,EAClB,MACJ,KAAKwkX,GAAkB20D,SACfzvb,KAAKmL,OAAS4vX,GAAat+I,OAC3Bl7N,EAAI0ua,EAAavgZ,MAAQ+wX,EAAQkP,oBAAoBnva,EAAUm/F,GAAM,GAAS3/F,KAAK0vC,MACnFp5B,EAAI,GAECtW,KAAKmL,OAAS4vX,GAAar+I,MAChCn7N,EAAI0ua,EAAavgZ,MAAQ+wX,EAAQkP,oBAAoBnva,EAAUm/F,GAAM,GAAS3/F,KAAK0vC,MACnFp5B,GAAK25a,EAAa35a,GAEtB,MACJ,KAAKwkX,GAAkBy0D,WACnBhua,GAAK0ua,EAAa1ua,EAClBjL,GAAK25a,EAAatgZ,OAAS3vC,KAAK2vC,QAAU,EAC1C,MACJ,KAAKmrV,GAAkB80D,aACnBrua,GAAK0ua,EAAavgZ,MAAQ1vC,KAAK0vC,OAAS,EACxCp5B,GAAK25a,EAAatgZ,OAAS3vC,KAAK2vC,QAAU,EAC1C,MACJ,KAAKmrV,GAAkB40D,YACnBnua,EAAI0ua,EAAavgZ,MAAQ+wX,EAAQkP,oBAAoBnva,EAAUm/F,GAAM,GAAS3/F,KAAK0vC,MACnFp5B,GAAK25a,EAAatgZ,OAAS3vC,KAAK2vC,QAAU,EAC1C,MACJ,KAAKmrV,GAAkB00D,WACfxvb,KAAKmL,OAAS4vX,GAAax+I,MAC3Bh7N,GAAK0ua,EAAa1ua,EAClBjL,EAAI25a,EAAatgZ,OAAS3vC,KAAK2vC,QAE1B3vC,KAAKmL,OAAS4vX,GAAap+I,SAChCp7N,GAAK0ua,EAAa1ua,EAClBjL,EAAI25a,EAAatgZ,OAAS8wX,EAAQmP,sBAAsBpva,EAAUm/F,GAAM,GAAS3/F,KAAK2vC,QAE1F,MACJ,KAAKmrV,GAAkBj+I,aACnBt7N,GAAK0ua,EAAavgZ,MAAQ1vC,KAAK0vC,OAAS,EACxCp5B,EAAI25a,EAAatgZ,OAAS8wX,EAAQmP,sBAAsBpva,EAAUm/F,GAAM,GAAS3/F,KAAK2vC,OACtF,MACJ,KAAKmrV,GAAkB60D,YACf3vb,KAAKmL,OAAS4vX,GAAat+I,OAC3Bl7N,EAAI0ua,EAAavgZ,MAAQ+wX,EAAQkP,oBAAoBnva,EAAUm/F,GAAM,GAAS3/F,KAAK0vC,MACnFp5B,EAAI25a,EAAatgZ,OAAS3vC,KAAK2vC,QAE1B3vC,KAAKmL,OAAS4vX,GAAap+I,SAChCp7N,EAAI0ua,EAAavgZ,MAAQ+wX,EAAQkP,oBAAoBnva,EAAUm/F,GAAM,GAAS3/F,KAAK0vC,MACnFp5B,EAAI25a,EAAatgZ,OAAS8wX,EAAQmP,sBAAsBpva,EAAUm/F,GAAM,GAAS3/F,KAAK2vC,QAMlG,OAFAhxC,EAAO4iB,EAAIA,EACX5iB,EAAO2X,EAAIA,EACJ3X,GAMX+vb,EAAuBxyb,UAAU4zb,cAAgB,SAAUnwV,EAAMn/F,GAChDR,KAAK81X,OAOlB,OANI91X,KAAKmL,OAAS4vX,GAAasC,KAClBr9X,KAAKkwb,oBAAoBvwV,EAAMn/F,GAG/BR,KAAKmwb,sBAAsBxwV,EAAMn/F,IAQlDkub,EAAuBxyb,UAAUg0b,oBAAsB,SAAUvwV,EAAMn/F,GACtDR,KAAK81X,OAAlB,IAEIm6D,EADUtwV,EAAK8gU,QACQwI,gBAAgBzoa,EAAUm/F,GAAM,GACvDp+E,EAAIvhB,KAAKuhB,EACTjL,EAAItW,KAAKsW,EACTo5B,EAAQ1vC,KAAK0vC,MACbC,EAAS3vC,KAAK2vC,OAClB,OAAQ3vC,KAAK4ub,WACT,KAAK/zD,GAAat+I,KACdh7N,EAAI,EACJjL,EAAI,EACJo5B,EAAQ1vC,KAAK0vC,MACbC,EAASsgZ,EAAatgZ,OACtB,MACJ,KAAKkrV,GAAan+I,IACdn7N,EAAI,EACJjL,EAAI,EACJo5B,EAAQugZ,EAAavgZ,MACrBC,EAAS3vC,KAAK2vC,OACd,MACJ,KAAKkrV,GAAap+I,MACdl7N,EAAI0ua,EAAavgZ,MAAQ1vC,KAAK0vC,MAC9Bp5B,EAAI,EACJo5B,EAAQ1vC,KAAK0vC,MACbC,EAASsgZ,EAAatgZ,OACtB,MACJ,KAAKkrV,GAAal+I,OACdp7N,EAAI,EACJjL,EAAI25a,EAAatgZ,OAAS3vC,KAAK2vC,OAC/BD,EAAQugZ,EAAavgZ,MACrBC,EAAS3vC,KAAK2vC,OACd,MACJ,KAAKkrV,GAAaugC,KACd75Y,EAAI,EACJA,EAAI,EACJmuB,EAAQugZ,EAAavgZ,MACrBC,EAASsgZ,EAAatgZ,OAI9B,OADS,IAAIwuV,GAAW58W,EAAGjL,EAAGo5B,EAAOC,IAOzC++Y,EAAuBxyb,UAAUi0b,sBAAwB,SAAUxwV,EAAMn/F,GACxDR,KAAK81X,OAAlB,IACI2qC,EAAU9gU,EAAK8gU,QACfwvB,EAAexvB,EAAQwI,gBAAgBzoa,EAAUm/F,GAAM,GACvD2vS,EAAamxB,EAAQv7V,aAAaq+T,gBAClChiX,EAAIvhB,KAAKuhB,EACTjL,EAAItW,KAAKsW,EACTo5B,EAAQ1vC,KAAK0vC,MACbC,EAAS3vC,KAAK2vC,OAClB,OAAQ3vC,KAAK4ub,WACT,KAAK/zD,GAAat+I,KACdh7N,GAAK0ua,EAAa1ua,EAClBjL,EAAI,EACJo5B,EAAQ1vC,KAAK0vC,MACbC,EAASsgZ,EAAatgZ,OACtB,MACJ,KAAKkrV,GAAan+I,IACdn7N,GAAK0ua,EAAa1ua,EAClBjL,GAAK25a,EAAa35a,EAClBo5B,EAAQ4/V,EAAW5/V,MACnBC,EAAS3vC,KAAK2vC,OACVsgZ,EAAatgZ,OAAS,IACtBr5B,GAAK25a,EAAa35a,EAAIg5X,EAAW3/V,QAErC,MACJ,KAAKkrV,GAAap+I,MACdl7N,EAAI0ua,EAAavgZ,MAAQ+wX,EAAQkP,oBAAoBnva,EAAUm/F,GAAM,GAAS3/F,KAAK0vC,MACnFp5B,EAAI,EACJo5B,EAAQ1vC,KAAK0vC,MACbC,EAASsgZ,EAAatgZ,OACtB,MACJ,KAAKkrV,GAAal+I,OACdp7N,GAAK0ua,EAAa1ua,EAClBjL,EAAI25a,EAAatgZ,OAAS8wX,EAAQmP,sBAAsBpva,EAAUm/F,GAAM,GAAS3/F,KAAK2vC,OACtFD,EAAQ4/V,EAAW5/V,MACnBC,EAAS3vC,KAAK2vC,OACVsgZ,EAAatgZ,OAAS,IACtBr5B,GAAKg5X,EAAW3/V,QAEpB,MACJ,KAAKkrV,GAAaugC,KACd75Y,EAAI,EACJA,EAAI,EACJmuB,EAAQugZ,EAAavgZ,MACrBC,EAASsgZ,EAAatgZ,OAI9B,OADS,IAAIwuV,GAAW58W,EAAGjL,EAAGo5B,EAAOC,IAGlC++Y,EAlnBiC,GCFxC0B,GAAqC,WACrC,SAASA,KAoJT,OA7IAA,EAAoBprQ,QAAU,SAAUqrQ,EAAWC,GAC/C,IAAI3xb,EAAS,GACb,OAAQ2xb,GACJ,KAAK11D,GAAeyC,KAChB1+X,EAAS,GACT,MACJ,KAAKi8X,GAAe21D,QAChB5xb,EAAS0xb,EAAUljb,WACnB,MACJ,KAAKytX,GAAe41D,WAChB7xb,EAASqB,KAAKywb,eAAeJ,GAAW54a,cACxC,MACJ,KAAKmjX,GAAe81D,WAChB/xb,EAASqB,KAAK2wb,cAAcN,GAAW54a,cACvC,MACJ,KAAKmjX,GAAeg2D,WAChBjyb,EAASqB,KAAKywb,eAAeJ,GAC7B,MACJ,KAAKz1D,GAAei2D,WAChBlyb,EAASqB,KAAK2wb,cAAcN,GAGpC,OAAO1xb,GAMXyxb,EAAoBO,cAAgB,SAAUN,GAC1C,IAAIS,EAAS,GACTC,EAAU/wb,KAAKgxb,eAAeX,EAAW,IAAM,KACnDS,GAAUC,EAAQ3oU,YAClBioU,EAAYU,EAAQV,UACpB,IAAIY,EAAWjxb,KAAKgxb,eAAeX,EAAW,IAAK,MACnDS,GAAUG,EAAS7oU,YACnBioU,EAAYY,EAASZ,UACrB,IAAIa,EAAUlxb,KAAKgxb,eAAeX,EAAW,IAAK,KAClDS,GAAUI,EAAQ9oU,YAClBioU,EAAYa,EAAQb,UACpB,IAAIc,EAAWnxb,KAAKgxb,eAAeX,EAAW,IAAK,MACnDS,GAAUK,EAAS/oU,YACnBioU,EAAYc,EAASd,UACrB,IAAIe,EAAUpxb,KAAKgxb,eAAeX,EAAW,IAAK,KAClDS,GAAUM,EAAQhpU,YAClBioU,EAAYe,EAAQf,UACpB,IAAIgB,EAAWrxb,KAAKgxb,eAAeX,EAAW,GAAI,MAClDS,GAAUO,EAASjpU,YACnBioU,EAAYgB,EAAShB,UACrB,IAAIiB,EAAUtxb,KAAKgxb,eAAeX,EAAW,GAAI,KACjDS,GAAUQ,EAAQlpU,YAClBioU,EAAYiB,EAAQjB,UACpB,IAAIkB,EAAWvxb,KAAKgxb,eAAeX,EAAW,GAAI,MAClDS,GAAUS,EAASnpU,YACnBioU,EAAYkB,EAASlB,UACrB,IAAImB,EAAUxxb,KAAKgxb,eAAeX,EAAW,GAAI,KACjDS,GAAUU,EAAQppU,YAClBioU,EAAYmB,EAAQnB,UACpB,IAAIoB,EAAWzxb,KAAKgxb,eAAeX,EAAW,EAAG,MACjDS,GAAUW,EAASrpU,YACnBioU,EAAYoB,EAASpB,UACrB,IAAIqB,EAAU1xb,KAAKgxb,eAAeX,EAAW,EAAG,KAChDS,GAAUY,EAAQtpU,YAClBioU,EAAYqB,EAAQrB,UACpB,IAAIsB,EAAW3xb,KAAKgxb,eAAeX,EAAW,EAAG,MACjDS,GAAUa,EAASvpU,YACnBioU,EAAYsB,EAAStB,UACrB,IAAIuB,EAAU5xb,KAAKgxb,eAAeX,EAAW,EAAG,KAGhD,OAFAS,GAAUc,EAAQxpU,YAClBioU,EAAYuB,EAAQvB,UACbS,EAAO3jb,YAMlBijb,EAAoBK,eAAiB,SAAUoB,GAG3C,IAFA,IAAI/wb,EAAQd,KAAK8xb,gBAAgBD,GAC7Blzb,EAAS,GACNmC,EAAMjE,OAAS,GAAG,CACrB,IAAIqa,EAAMpW,EAAMw8G,MAChB3+G,EAASqB,KAAK+xb,WAAWpzb,EAAQuY,GAErC,OAAOvY,EAAOwO,YAMlBijb,EAAoBY,eAAiB,SAAUx0b,EAAOw1b,EAAWvzD,GAE7D,IADA,IAAIwzD,EAAe,GACZz1b,GAASw1b,GACZx1b,GAASw1b,EACTC,GAAgBxzD,EAEpB,MAAO,CAAEr2Q,YAAa6pU,EAAa9kb,WAAYkjb,UAAW7zb,IAM9D4zb,EAAoB0B,gBAAkB,SAAUD,GAC5C,GAAIA,GAAU,EACV,MAAMjxb,MAAM,+DAGhB,IADA,IAAIE,EAAQ,GACL+wb,EAAS7xb,KAAKkyb,aAAa,CAC9B,IAAIl6P,EAAY65P,EAAS7xb,KAAKkyb,YACZ,IAAdl6P,GACA65P,EAASA,EAAS7xb,KAAKkyb,YAAc,EACrCl6P,EAAYh4L,KAAKkyb,aAGjBL,GAAU7xb,KAAKkyb,YAEnBpxb,EAAMc,KAAKo2L,GAGf,OADAl3L,EAAMc,KAAKiwb,GACJ/wb,GAMXsvb,EAAoB2B,WAAa,SAAUxsD,EAAS/oY,GAGhD,OADA+oY,GADavmT,OAAOkiF,aAAakvR,EAAoB+B,gBAAkB31b,IAU3E4zb,EAAoB8B,YAAc,GAMlC9B,EAAoB+B,gBAAmB,GAChC/B,EArJ8B,GCLrCgC,GAAsC,WACtC,SAASA,EAAqB9ma,EAAU9uB,GAOpCwD,KAAKivb,YAAc,KAKnBjvb,KAAK0qD,QAAU,GACS,qBAAbp/B,IAIPtrB,KAAKsrB,SAAWA,EAChBtrB,KAAKxD,MAAQA,GAgCrB,OA7BA0B,OAAOwpB,eAAe0qa,EAAqBl2b,UAAW,WAAY,CAM9DyrB,IAAK,WACD,OAAO3nB,KAAKivb,aAEhBpna,IAAK,SAAUrrB,GACXwD,KAAKivb,YAAczyb,GAEvBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe0qa,EAAqBl2b,UAAW,QAAS,CAK3DyrB,IAAK,WACD,OAAO3nB,KAAK0qD,SAEhB7iC,IAAK,SAAUrrB,GACXwD,KAAK0qD,QAAUluD,GAEnBsrB,YAAY,EACZC,cAAc,IAEXqqa,EAnD+B,GCJtC/zZ,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzC4zZ,GAAuC,SAAUlzZ,GAEjD,SAASkzZ,IACL,IAAItyb,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAOjC,OADAD,EAAM03B,KAAO,IAAI66W,GACVvyY,EAeX,OAxBAs+B,GAAUg0Z,EAAuBlzZ,GAajCkzZ,EAAsBn2b,UAAU+ja,YAAc,SAAUjtB,EAAUhqW,EAAU8qW,EAAUC,GAClF50W,EAAOjjC,UAAU23Y,kBAAkBvyY,KAAKtB,KAAMgzY,EAAUhqW,EAAU8qW,EAAUC,GAC5E,IAAIv3Y,EAAQwD,KAAK3D,SAAS22Y,GACtB1nX,EAAW,IAAIwoY,GAAY9zZ,KAAKq0Y,WACpCr0Y,KAAKy3B,KAAK16B,SAASi2Y,EAAU,IAAIo/C,GAAqB9ma,EAAU9uB,IACxD8uB,EAAS0nX,SAAjB,IACIx2T,EAAOx8E,KAAKq0Y,UAChB/oX,EAAS0nX,SAASwqB,WAAWhha,EAAOwD,KAAKg0Y,UAAWh0Y,KAAKyqY,IAAKzqY,KAAKs0Y,WAAY,EAAG,EAAG93T,EAAK9sC,MAAO8sC,EAAK7sC,OAAQ3vC,KAAKi0Y,cACnH,IAAIq+C,EAAe,IAAIr0D,GAAOj1V,EAASznB,EAAIvhB,KAAKgpC,SAASznB,EAAGynB,EAAS1yB,EAAItW,KAAKgpC,SAAS1yB,GACvF08X,EAASmqB,gBAAgB7xY,EAAUgna,EAAc,IAAIp0D,GAAM5yW,EAASokB,MAAQokW,EAAUxoX,EAASqkB,OAASokW,KAErGs+C,EAzBgC,CA0BzC/+C,IClDEj1W,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAqBzC8zZ,GAAoC,SAAUpzZ,GAE9C,SAASozZ,EAAmB11W,EAAM0sE,GAC9B,IAAIxpJ,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAkBjC,OAZAD,EAAMyyb,oBAAsB53D,GAAe21D,QACvB,qBAAThnS,EACPxpJ,EAAM88E,KAAOA,EAER0sE,aAAgBs/O,IACrB9oY,EAAM88E,KAAOA,EACb98E,EAAMkpY,MAAQ1/O,IAGdxpJ,EAAM88E,KAAOA,EACb98E,EAAM+1X,OAASvsO,GAEZxpJ,EAoCX,OAxDAs+B,GAAUk0Z,EAAoBpzZ,GAsB9BjhC,OAAOwpB,eAAe6qa,EAAmBr2b,UAAW,cAAe,CAM/DyrB,IAAK,WACD,OAAO3nB,KAAKwyb,qBAEhB3qa,IAAK,SAAUrrB,GACXwD,KAAKwyb,oBAAsBh2b,GAE/BsrB,YAAY,EACZC,cAAc,IAMlBwqa,EAAmBr2b,UAAUG,SAAW,SAAU22Y,GAC9C,IACIrzS,EAAO3/F,KAAKw0Y,oBAAoBxB,GAEpC,OADShzY,KAAKyyb,iBAAiB9yV,IAOnC4yV,EAAmBr2b,UAAUu2b,iBAAmB,SAAU9yV,GACtD,IACIC,EADWD,EAAKn/F,SACKotX,MAAMzvX,QAAQwhG,GAAQ,EAC/C,OAAOywV,GAAoBprQ,QAAQplF,EAAW5/F,KAAKswb,cAEhDiC,EAzD6B,CA0DtCF,IC/EEh0Z,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAoBzCi0Z,GAAmC,SAAUvzZ,GAU7C,SAASuzZ,EAAkB71W,EAAMosT,EAAO12X,GAEpC,IADA,IAAIklB,EAAO,GACFz5B,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCy5B,EAAKz5B,EAAK,GAAKY,UAAUZ,GAE7B,IAAI+B,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAgBjC,OAVAD,EAAMu8Z,wBAA0B,KAKhCv8Z,EAAM4yb,aAAe,GACrB5yb,EAAM88E,KAAOA,EACb98E,EAAMkpY,MAAQA,EACdlpY,EAAMwS,KAAOA,EACbxS,EAAM8yY,gBAAkBp7W,EACjB13B,EA+CX,OA7EAs+B,GAAUq0Z,EAAmBvzZ,GAgC7BjhC,OAAOwpB,eAAegra,EAAkBx2b,UAAW,OAAQ,CAMvDyrB,IAAK,WACD,OAAO3nB,KAAK2yb,cAEhB9qa,IAAK,SAAUrrB,GACXwD,KAAK2yb,aAAen2b,GAExBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAegra,EAAkBx2b,UAAW,kBAAmB,CAKlEyrB,IAAK,WACD,OAAO3nB,KAAKs8Z,yBAEhBz0Y,IAAK,SAAUrrB,GACXwD,KAAKs8Z,wBAA0B9/Z,GAEnCsrB,YAAY,EACZC,cAAc,IAOlB2qa,EAAkBx2b,UAAUG,SAAW,SAAU22Y,GAC7C,IACIzgY,EAAOvS,KAAKuS,KAAKpF,WACrB,GAAoC,qBAAzBnN,KAAK6yY,iBAA2D,MAAxB7yY,KAAK6yY,iBAA2B7yY,KAAK6yY,gBAAgBh2Y,OAAS,EAC7G,IAAK,IAAID,EAAI,EAAGA,EAAIoD,KAAK6yY,gBAAgBh2Y,OAAQD,IAAK,CAClD,IAAIg2b,EAAiB5yb,KAAK6yY,gBAAgBj2Y,GAC1C2V,EAAOA,EAAK7V,QAAQ,IAAME,EAAI,IAAKg2b,EAAev2b,SAAS22Y,IAGnE,OAAOzgY,GAEJmgb,EA9E4B,CA+ErCL,ICnGEh0Z,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzCo0Z,GAAqC,SAAU1zZ,GAG/C,SAAS0zZ,IACL,IAAI9yb,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAMjC,OAHAD,EAAM03B,KAAO,IAAI66W,GAEjBvyY,EAAM+yb,gBAAkB,GACjB/yb,EAyBX,OAlCAs+B,GAAUw0Z,EAAqB1zZ,GAW/B0zZ,EAAoB32b,UAAU+ja,YAAc,SAAUjtB,EAAUhqW,EAAU8qW,EAAUC,GAChF50W,EAAOjjC,UAAU23Y,kBAAkBvyY,KAAKtB,KAAMgzY,EAAUhqW,EAAU8qW,EAAUC,GAC5E,IACIvzY,EADOR,KAAKw0Y,oBAAoBxB,GAChBxyY,SAChBwrY,EAAYhsY,KAAK3D,SAAS22Y,GAE9B,GAAIhzY,KAAKy3B,KAAKw0M,YAAYzrO,GAAW,CACjC,IAAIwwL,EAAOhxL,KAAKy3B,KAAKp7B,SAASmE,GAC1B8xb,EAAe,IAAIr0D,GAAOj1V,EAASznB,EAAIvhB,KAAKgpC,SAASznB,EAAGynB,EAAS1yB,EAAItW,KAAKgpC,SAAS1yB,GACvF08X,EAASmqB,gBAAgBnsO,EAAK1lK,SAAUgna,EAAc,IAAIp0D,GAAMltM,EAAK1lK,SAASokB,MAAQokW,EAAU9iN,EAAK1lK,SAASqkB,OAASokW,IACvH/zY,KAAK8yb,gBAAgBlxb,KAAKoxY,OAEzB,CACD,IAAIx2T,EAAOx8E,KAAKq0Y,UACZ/oX,EAAW,IAAIwoY,GAAYt3U,GAC/Bx8E,KAAKy3B,KAAK16B,SAASyD,EAAU,IAAI4xb,GAAqB9ma,EAAU0gX,IAChE1gX,EAAS0nX,SAASwqB,WAAWxxB,EAAWhsY,KAAKg0Y,UAAWh0Y,KAAKyqY,IAAKzqY,KAAKs0Y,WAAY,EAAG,EAAG93T,EAAK9sC,MAAO8sC,EAAK7sC,OAAQ3vC,KAAKi0Y,cACnHq+C,EAAe,IAAIr0D,GAAOj1V,EAASznB,EAAIvhB,KAAKgpC,SAASznB,EAAGynB,EAAS1yB,EAAItW,KAAKgpC,SAAS1yB,GACvF08X,EAASmqB,gBAAgB7xY,EAAUgna,EAAc,IAAIp0D,GAAM5yW,EAASokB,MAAQokW,EAAUxoX,EAASqkB,OAASokW,IACxG/zY,KAAK8yb,gBAAgBlxb,KAAKoxY,KAI3B6/C,EAnC8B,CAoCvCv/C,IC5DEj1W,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzCs0Z,GAAmC,SAAU5zZ,GAE7C,SAAS4zZ,EAAkBl2W,EAAM0sE,GAC7B,IAAIxpJ,EAAQo/B,EAAO79B,KAAKtB,OAASA,KAkBjC,OAZAD,EAAMyyb,oBAAsB53D,GAAe21D,QACvB,qBAAThnS,EACPxpJ,EAAM88E,KAAOA,EAER0sE,aAAgBs/O,IACrB9oY,EAAM88E,KAAOA,EACb98E,EAAMkpY,MAAQ1/O,IAGdxpJ,EAAM88E,KAAOA,EACb98E,EAAM+1X,OAASvsO,GAEZxpJ,EA8BX,OAlDAs+B,GAAU00Z,EAAmB5zZ,GAsB7BjhC,OAAOwpB,eAAeqra,EAAkB72b,UAAW,cAAe,CAM9DyrB,IAAK,WACD,OAAO3nB,KAAKwyb,qBAEhB3qa,IAAK,SAAUrrB,GACXwD,KAAKwyb,oBAAsBh2b,GAE/BsrB,YAAY,EACZC,cAAc,IAOlBgra,EAAkB72b,UAAUG,SAAW,SAAU22Y,GAC7C,IAGIl4U,EAFO96D,KAAKw0Y,oBAAoBxB,GAChBytB,QAAQlga,OAAOC,SACdotX,MAAM9yT,MAE3B,OADSs1X,GAAoBprQ,QAAQlqH,EAAO96D,KAAKswb,cAG9CyC,EAnD4B,CAoDrCF,IC3EEx0Z,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzCu0Z,GAAiC,SAAU7zZ,GAE3C,SAAS6zZ,EAAgBnrC,EAAcrrU,EAAMxoD,GACzC,IAAIj0B,EAAQo/B,EAAO79B,KAAKtB,KAAMw8E,IAASx8E,KAiBvC,OAZAD,EAAMioZ,aAAc,EAKpBjoZ,EAAM8mZ,WAAY,OACJ7qZ,IAAVg4B,EACAj0B,EAAMkzb,mBAAmBprC,EAAc7zX,GAGvCj0B,EAAMkzb,mBAAmBprC,EAAc1mB,GAAa6O,SAEjDjwY,EA2HX,OA9IAs+B,GAAU20Z,EAAiB7zZ,GAqB3B6zZ,EAAgB92b,UAAUu0Y,aAAe,SAAU5zT,GAG/C,OAFa,GAIjBm2W,EAAgB92b,UAAUiyY,aAAe,SAAU57H,EAAMvnQ,GACrD,IAAI0kC,EAAQ,EACG,OAAX1kC,GAAqC,qBAAXA,GAA0BA,EAAOonZ,gBAAkBlxB,GAAiB7D,KAE9F3tV,EADkB1vC,KAAKkzb,oBAAoB3gL,EAAc7iO,EAAO1kC,GAC5C0kC,MAGpBA,EAAQ1vC,KAAKmyZ,aAAahkB,aAAa57H,GAE3C,IAAI/1L,EAAOx8E,KAAKiwY,QAAQoE,QAAQrpY,GAGhC,OAFA0kC,GAAUqgW,GAAQiB,mBAAqBx0T,EACvC9sC,EAAQ1vC,KAAK6wY,oBAAoBt+H,EAAMvnQ,EAAQ0kC,IAMnDsjZ,EAAgB92b,UAAU0qZ,aAAe,SAAUtmP,EAAUt1J,GACzD,IAAImob,EAAYnzb,KAAKmyZ,aAAavL,aAAatmP,GAG/C,OADA6yR,GAAc,KADHnzb,KAAKiwY,QAAQoE,QAAQrpY,IAKpCgob,EAAgB92b,UAAU+2b,mBAAqB,SAAUprC,EAAc7zX,GACnEh0B,KAAKmyZ,aAAe,IAAIvK,GAAoBC,EAAc7nZ,KAAKw8E,MAC/Dx8E,KAAKozb,eAAep/Z,GACpBh0B,KAAKi2a,uBAET+c,EAAgB92b,UAAUk3b,eAAiB,SAAUp/Z,GACjD,IAAIq/Z,EAASrzb,KAAKmyZ,aAAazJ,WAAW3S,SACD,KAApC/hX,EAAQmtW,GAAa5hT,aACtB8zW,GAAUlyD,GAAa5hT,WAEc,KAApCvrD,EAAQmtW,GAAa+O,aACtBmjD,GAAUlyD,GAAa+O,WAE3BlwY,KAAK8sM,SAASumP,IAElBL,EAAgB92b,UAAU+5a,oBAAsB,WAC5C,IAAIqd,EAAY,KACZprE,GAAY72O,cAEZiiT,EAAYprE,GAAYnsR,MAAMkD,OAAOj/F,OAEzC,IAAI4wY,EAAY,KAEhB,GAAkB,OAAd0iD,QAAoCt3b,IAAds3b,EAAyB,CAE/C1iD,EAAY0iD,EAAU5iD,eACtB,IAAIT,EAAUqjD,EAAUrjD,SACxBA,EAAUA,EAAQhxY,SACVu9E,KAAOx8E,KAAKw8E,KACpBx8E,KAAKiwY,QAAUA,EACfjwY,KAAKmyZ,aAAemhC,EAAUnhC,kBAGb,MAAbmhC,IACItzb,KAAKmyZ,wBAAwBvK,KAC7B5nZ,KAAKmyZ,aAAaohC,QAAUvzb,KAAKgoZ,aAErChoZ,KAAKmyZ,aAAalM,kBAClBrV,EAAY5wY,KAAKmyZ,aAAazhB,eAC9B1wY,KAAKiwY,QAAUjwY,KAAKmyZ,aAAaliB,SAGzCjwY,KAAKiwY,QAAQujD,eAAgB,EAC7Bxzb,KAAK2wY,aAAaC,IAMtBoiD,EAAgB92b,UAAU6uZ,WAAa,SAAUx4Y,GAC7C,IAAIkhY,EAAezzY,KAAKmyZ,aACJ,MAAhB1e,GACAA,EAAasX,WAAWx4Y,IAGhCrU,OAAOwpB,eAAesra,EAAgB92b,UAAW,UAAW,CAKxDyrB,IAAK,WACD,OAAO3nB,KAAK6mZ,WAEhB/+X,YAAY,EACZC,cAAc,IAKlBira,EAAgB92b,UAAUg3b,oBAAsB,SAAU3gL,EAAc7iO,EAAO1kC,GAI3E0kC,EAAQ,EACR,IAAI+jZ,EAAe,KAGf90b,GAFY,IAAIgzZ,IAEGM,cAAc1/I,EAAMvyQ,KAAOgL,EAAOonZ,gBAAkBlxB,GAAiB0gC,YAAqC6xB,GAAc,GAC3IC,EAAc/0b,EAAO0iV,QAEzB,GADAoyG,EAAe90b,EAAOuzZ,OAClBwhC,GAAgC,OAAjBD,EAEf,IADA,IAAIjrC,EAAYxoZ,KAAKmyZ,aAAa3J,UACzB5rZ,EAAI,EAAG+E,EAAM8xb,EAAa52b,OAAQD,EAAI+E,EAAK/E,IAAK,CACrD,IAAIgnZ,EAAa6vC,EAAa72b,GAC1B45Y,EAAQgS,EAAU1F,SAASc,GACjB,OAAVpN,GAAmC,qBAAVA,IACzB9mW,GAAS8mW,EAAM9mW,OAI3B,MAAO,CAAE2xS,QAASqyG,EAAahkZ,MAAOA,IAEnCsjZ,EA/I0B,CAgJnCjjD,IClJE4jD,GAA2B,WAO3B,SAASA,EAAUpzb,GACfP,KAAKm9W,mBAAoB,EACzBn9W,KAAK2tI,iBAAkB,EACvB3tI,KAAK4zb,kBAAmB,EACxB5zb,KAAK6zb,YAAa,EAClB7zb,KAAK8zb,cAAgB,GACrB9zb,KAAK+zb,aAAe,CAAEC,UAAW,EAAGC,UAAW,GAC/Cj0b,KAAKO,OAASA,EACdP,KAAKurB,OAAS,IAAI2xV,GAAa38W,GAC/BP,KAAKq+W,SAAW,GA42CpB,OAr2CAs1E,EAAUz3b,UAAU2+B,cAAgB,WAChC,MAAO,aAEX84Z,EAAUz3b,UAAU0yM,KAAO,SAAUruM,GACjCP,KAAK4/W,qBAAuB,IAAIZ,GAAqBz+W,EAAOwc,QAC5D/c,KAAKglX,iBAAchpX,EACnBgE,KAAKm9W,mBAAoB,EACzBn9W,KAAK2tI,iBAAkB,EACvB3tI,KAAKO,OAASA,EACdP,KAAK6zb,YAAa,EAClB7zb,KAAK2/W,aAAc,EACnBp/W,EAAOkZ,GAAKykD,YAAO,aACnBl+D,KAAKq+W,SAAS99W,EAAOkZ,KAAM,EAC3BzZ,KAAKk0b,gBAAkB,IAAIvxD,IAE/BgxD,EAAUz3b,UAAUi4b,eAAiB,SAAU5zb,EAAQosT,EAAQzpS,EAASi+V,EAAYz0D,EAAqBL,EAAkBlpS,GACvH,IAAIpjB,EAAQC,KACZA,KAAK4uM,KAAKruM,GACLnD,YAAkBuvT,GAInB3sT,KAAKglX,YAAc,IAAIkD,GAHvBloX,KAAKglX,YAAcr4D,EAKvB3sT,KAAKo0b,cAAc7zb,EAAQ4gX,EAAYz0D,EAAqBL,GAAkBzxS,MAAK,WAC/E7a,EAAM4/W,aAAc,EACpBp/W,EAAOwpB,QAAQhD,KAA0BhnB,EAAMq6G,OAAS,CAAEz/F,QAAS5a,EAAMkgX,aAAgB,IACzFlgX,EAAMQ,OAAOsuJ,IAAI,qBAAsB9uJ,EAAM86B,iBAC7C3X,EAAQnjB,EAAMilX,gBACf9pW,OAAM,SAAUra,GACfsiB,EAAOpjB,EAAMilX,aACbjlX,EAAMQ,OAAOwpB,QAAQhD,IAAsBlmB,OAanD8yb,EAAUz3b,UAAU4+K,IAAM,SAAUv6K,EAAQmsT,EAAqBL,EAAkBM,EAAQvyM,GACvF,IAAIr6G,EAAQC,KACZA,KAAK6a,KAAO,IAAIozF,KAAKjuG,KAAKO,QAC1BP,KAAKo6G,OAASA,EACdp6G,KAAKq+W,SAAW,GAChB,IAAI18S,EAAQ,IAAIC,KACZrhE,EAAOqkE,YAAgBxnE,YAAkBsvT,IAAoE,SAA5CA,EAAoBnuO,uBACrFh+E,EAAOskE,aAAeX,YAAkB3jE,GAAQskE,cAEpD,IAAI5kE,EAAO,CACPm6F,YAAa,kBAAmBr3E,QAAQ,EACxCsxa,kBAAmB,GAAIC,iBAAkB,CAAEN,UAAW,EAAGC,UAAW,GAAK9gY,eAAe,GAG5FlzD,EAAe,WAAIM,EAMnB,GADAA,EAAOwpB,QAAQhD,IAAwB9mB,IACrB,IAAdA,EAAQ,OAER,OAAO,IAAIgjB,SAAQ,SAAUC,EAASC,GAClC,OAAOD,OAYf,GATI22C,YAAgB6yP,IAChB1yP,aAAiC0yP,EAAqBnsT,GAEtDN,EAAkB,gBAClB0hE,EAAQu7S,GAAaryN,SAAStqJ,EAAQP,KAAK6a,OAE/C7a,KAAK8zb,cAAgB7zb,EAAW,kBAChCD,KAAK+zb,aAAe9zb,EAAY,iBAChCD,KAAKO,OAAOsuJ,IAAI,kBAAmB7uJ,KAAK66B,kBACnCz9B,YAAkBsvT,KAAyBtvT,YAAkBsvT,EAAoB5qP,aAC/E4qP,EAAoB5qP,sBAAsBC,IAC7C,OAAO,IAAI9+C,SAAQ,SAAUC,EAASC,GAClCupS,EAAoB5qP,WAAW+4B,aAAal5B,GAAO/mD,MAAK,SAAUumW,GAC9DphX,EAAMo0b,eAAe5zb,EAAQosT,EAAQzpS,EAASi+V,EAAYz0D,EAAqBL,EAAkBlpS,SAIxG,GAAK/lB,YAAkBsvT,IAA2D,gBAAnCA,EAAoB5uO,WAKnE,CACD,IAAIsiS,EAAe,GAGnB,OAFAA,EAAax+W,KAAK5B,KAAK6a,KAAKkiF,QAAQ,GAAImgR,GAAaryN,SAAStqJ,EAAQP,KAAK6a,QAC3EulW,EAAax+W,KAAK5B,KAAKurB,OAAOgyV,cAAch9W,IACrC,IAAI0iB,SAAQ,SAAUC,EAASC,GAClCF,QAAQuP,IAAI4tV,GAAcxlW,MAAK,SAAU/Z,GACrCd,EAAM6uM,KAAKruM,GACNnD,YAAkBuvT,GAInB5sT,EAAMilX,YAAc,IAAIkD,GAHxBnoX,EAAMilX,YAAcr4D,EAKxB5sT,EAAMq0b,cAAc7zb,EAAQM,EAAE,GAAI6rT,EAAqBL,GAAkBzxS,MAAK,WAC1E7a,EAAM4/W,aAAc,EACpBp/W,EAAOwpB,QAAQhD,KAA0BhnB,EAAMq6G,OAAS,CAAEz/F,QAAS5a,EAAMkgX,aAAgB,IACzFlgX,EAAMQ,OAAOsuJ,IAAI,qBAAsB9uJ,EAAM86B,iBAC7C3X,EAAQnjB,EAAMilX,gBACf9pW,OAAM,SAAUra,GACfsiB,EAAOpjB,EAAMilX,aACbjlX,EAAMQ,OAAOwpB,QAAQhD,IAAsBlmB,YAxBvD,OAAO,IAAIoiB,SAAQ,SAAUC,EAASC,GAClCpjB,EAAMo0b,eAAe5zb,EAAQosT,EAAQzpS,EAASnjB,EAAMQ,OAAOqnE,wBAAyB8kP,EAAqBL,EAAkBlpS,OA6BvIwwa,EAAUz3b,UAAUk4b,cAAgB,SAAUn6X,EAAMknT,EAAYz0D,EAAqBL,GACjF,IAEI+/H,EAFArsb,EAAQC,KACRyga,EAAUzga,KAAKglX,YAAYiW,SAASlyW,MAExC/oB,KAAKu0b,+BAA+B9zB,EAAS/zG,GAC7C,IAAI27G,EAAU5H,EAAQ7yC,MAAM7kW,MAE5B,OAAO,IAAI9F,SAAQ,SAAUC,EAASC,GAClCipa,EAAUrsb,EAAMygX,kBAAkBvmT,EAAMknT,EAAYz0D,GACpD3sT,EAAMu+W,cAAgBp7V,EACtBnjB,EAAMs+W,SAASpkT,EAAKxgD,KAAM,EAC1B1Z,EAAMwrB,OAAO6yV,eAAer+W,EAAMs+W,SAAUt+W,EAAMu+W,kBACnD1jW,MAAK,WAsBJ,OAlBAwxa,EAAQl4C,KAAKm0B,EAAStoa,EAAMg0b,aAAsB,UAAGh0b,EAAMg0b,aAAsB,WACjFh0b,EAAMy0b,WAAW9nI,GACZL,IAEItsT,EAAMq6G,OASPr6G,EAAMkgX,YAAclgX,EAAMilX,YAAYhnH,QARjC5gQ,YAAkBsvT,IAAwBA,EAAoBruO,SAC/Dt+E,EAAMilX,YAAYhnH,KAAK0uD,EAAoBruO,UAG3Ct+E,EAAMilX,YAAYhnH,KAAK,cAM/Bj+P,EAAMilX,YAAY7pW,iBACX8+C,EAAK4K,cAET9kE,EAAMilX,gBAGrB2uE,EAAUz3b,UAAUq4b,+BAAiC,SAAU9zB,EAAS/zG,GAQpE,OAPKtvT,YAAkBsvT,IAA0BtvT,YAAkBsvT,EAAoB1vO,kBAC/E5/E,YAAkBsvT,EAAoBtnP,YAC1CplE,KAAKk0b,gBAAgB9wD,YAAuD,cAAxC12E,EAAoB1vO,gBACpD09S,GAAmB4I,UAAY5I,GAAmBsI,SACtDhjY,KAAKk0b,gBAAgB13W,KAAOx8E,KAAKy0b,YAAY/nI,EAAoBtnP,UACjEq7V,EAAQ+N,gBAAgBxua,KAAKk0b,kBAE1BzzB,GAEXkzB,EAAUz3b,UAAUskX,kBAAoB,SAAUvmT,EAAMknT,EAAYz0D,GAChE,IAAIjuO,GAA0B,EAC1Bpa,EAAWrkE,KAAKO,OAAO+jE,iBAAmBtkE,KAAKO,OAAOgkE,mBACrDnnE,YAAkBsvT,KACnB1sT,KAAK00b,UAAYhoI,EAAoB1uO,MACrCS,IAA0BrhF,YAAkBsvT,EAAoBjuO,0BACrDiuO,EAAoBjuO,yBAEnC,IAAIlzD,EAAS,IAAI2xV,GAAajjT,EAAMj6D,KAAKurB,OAAO2nC,qBAC5C4O,EAAa9hE,KAAK20b,wBAAwBjoI,EAAqBy0D,EAAWxiX,QAC1Eo7D,EAAUF,YAAgB6yP,GAC1B/vP,aAAe+vP,EAAoB3yP,QAASE,EAAKmM,4BACjD76C,EAAOuzV,qBAAqBz6S,EAAWpK,EAAKyK,aAAezK,EAAKF,SACpEA,EAAUA,EAAQ7oC,QAAO,SAAU6oC,GAAW,OAAO38D,YAAkB28D,EAAQivC,aAC/E,IAAI6qV,GAAa,EACb55X,EAAKe,cAAcjB,QAAQl9D,SAC3Bg3b,GAAa,GAEb55X,EAAK2K,YAAcxnE,YAAkBsvT,KACrCzyP,EAAKkK,mBAAqBuoP,EAAoBnuO,qBAAuB,YAGzE,IAAI6tW,EAAU,IAAInJ,GAEd2R,EAAmB50b,KAAKqkX,sBACxB17M,EAASisR,EAAiBjsR,OAC1BksR,EAAaD,EAAiB/3W,KAC9Bi4W,EAAcF,EAAiB3rD,MAC/B7gR,EAAc78F,EAAOmyV,WAAW3jT,EAAS/5D,KAAKm9W,mBAE9ChjT,EAAciuD,EAAYruD,QAE9BqyX,EAAUpsb,KAAK+0b,mBAAmB96X,EAAKe,cAAcjB,QAAQl9D,OAAQuvb,EAAShkU,EAAYt/C,KAAM3O,EAAawuG,EAAQksR,EAAYC,EAAa76X,EAAMwkB,EAAyB1kB,GAE7K/5D,KAAKg1b,oBAAoB76X,EAAaiyX,EAAS7ga,EAAQ0uC,EAAMwkB,GAC7D,IAAIw2W,EAAoBj1b,KAAKk1b,8BAC7B,IAAK93b,YAAkB0kE,IAAeA,EAAWjlE,QAW7C,GAVIg3b,GACKz2b,YAAkB63b,EAAkBtsR,UACrCA,EAASssR,EAAkBtsR,QAE/B3oK,KAAKm1b,sBAAsB/I,EAAStqX,EAAY3H,EAAaF,EAAM0uG,EAAQ,EAAGssR,EAAkBp4W,KAAMo4W,EAClGhsD,MAAOgsD,EAAkB1b,gBAAiBp4D,EAAYz0D,EAAqBnhS,EAAQ,IAGvFvrB,KAAKo1b,cAAczsR,EAAQxuG,EAAaF,EAAM6H,EAAYsqX,EAAS,EAAG1/H,EAAqBnhS,EAAQ,IAElGnuB,YAAkB+jX,EAAW7iT,YAAa,CAC3C,IAAIykT,EAAe,IAAI5nQ,KAAsBlhD,GACzCkpT,OAAQ,EACR1pT,EAASspT,EAAar+S,aAC1BjL,EAASA,EAAOvoC,QAAO,SAAUiuC,GAAO,OAAO/hE,YAAkB+hE,EAAI6pC,WAA0B,aAAb7pC,EAAIh0D,QAClF8uD,EAAKqE,WAAWzhE,QAAUmD,KAAKO,SAAW05D,GAC1CA,EAAK+oT,gBAAgBC,qBAGrBE,EADAnjX,KAAK4zb,iBACG7wE,EAAav2Q,aAAa1qC,EAAYq/S,EAAW7iT,YAEpDt+D,KAAK2tI,gBACFo1O,EAAav2Q,aAAaxsG,KAAKO,OAAOqnE,wBAAyBu5S,EAAW7iT,YAE7Eu1X,EACG9wE,EAAav2Q,aAAa1qC,EAAWymB,QAAS44R,EAAW7iT,YAGzDykT,EAAav2Q,aAAa20Q,EAAWxiX,OAAQwiX,EAAW7iT,WAAY,KAAM,KAAM7E,GAE5Fz5D,KAAKwhX,kBAAkB2B,EAAOipE,EAASzjR,EAAQssR,EAAkBp4W,KAAMo4W,EAAkBhsD,MAAOgsD,EAAkB1b,iBAAiB,SAI7H6S,EAAQtjX,KAAKikX,SACnB/4Z,MAAMgmZ,UAAUrxQ,GAExB,OAAOyjR,GAEXuH,EAAUz3b,UAAUg5b,4BAA8B,WAC9C,GAAK93b,YAAkB4C,KAAK00b,YAAet3b,YAAkB4C,KAAK00b,UAAUzhX,SAoBxE,MAAO,CAAE4J,KAAM,IAAI+4V,GAAgBx0C,GAAc2wC,UAAW,MAAO9oC,MAAO,IAAIH,GAAc,IAAItC,GAAS,EAAG,EAAG,IAC3G+yC,gBAAiB,IAAIzwC,GAAc,IAAItC,GAAS,IAAK,IAAK,OApB9D,IAAI3wT,EAAYz4E,YAAkB4C,KAAK00b,UAAUzhX,QAAQ4C,UAA8C,KAAlC71E,KAAK00b,UAAUzhX,QAAQ4C,SACxFD,EAAcx4E,YAAkB4C,KAAK00b,UAAUzhX,QAAQ6L,UACDsiT,GAAc2wC,UAApE/xa,KAAKq1b,cAAcr1b,KAAK00b,UAAUzhX,QAAQ6L,UAC1Cy8R,EAAYv7W,KAAKs1b,aAAat1b,KAAK00b,UAAUzhX,SAC7C81T,EAAW,IAAIvC,GAAS,EAAG,EAAG,GAClC,IAAKppY,YAAkB4C,KAAK00b,UAAUzhX,QAAQ2L,WAAY,CACtD,IAAI22W,EAAgBv1b,KAAKw1b,SAASx1b,KAAK00b,UAAUzhX,QAAQ2L,WACzDmqT,EAAW,IAAIvC,GAAS+uD,EAAcz2Z,EAAGy2Z,EAAcz7L,EAAGy7L,EAAc5tb,GAE5E,IAAI8tb,EAAgBz1b,KAAK00b,UAAUzhX,QAAQ01F,OAAS3oK,KAAK01b,eAAe11b,KAAK00b,UAAUzhX,QAAQ01F,QAAU,KACrG9rF,EAAO,IAAI+4V,GAAgBhgW,EAAYC,EAAU0lS,GAIrD,OAHKn+W,YAAkB4C,KAAK00b,UAAUzhX,QAAQ4J,QAC1CA,EAAO78E,KAAK00b,UAAUzhX,QAAQ4J,MAE3B,CAAEA,KAAMA,EAAMosT,MAAO,IAAIH,GAAcC,GAAWwwC,gBAAiB,IAAIzwC,GAAc,IAAItC,GAAS,IAAK,IAAK,MAC/G79N,OAAQ8sR,IAQpB9B,EAAUz3b,UAAUy5b,eAAiB,SAAU11b,GAC3C,IAII+zB,EAAQ,EACZ,GAAI/zB,EAAK8kB,QAAU9kB,EAAK8kB,OAAO83D,KAAM,CACjC,IAAIg4W,EAAa50b,EAAK8kB,OAAO83D,KAAe,WACxC+4W,EAAa31b,EAAK8kB,OAAO83D,KAAa,SACtCg5W,EAAc51b,EAAK8kB,OAAO83D,KAAc,UAE5C,GADA7oD,EAAS52B,YAAkB+jY,GAAa00D,IAAgB,EAAI10D,GAAa00D,GACrE51b,EAAK8kB,OAAO83D,KAAe,WAC3B58E,EAAK8kB,OAAO83D,KAAO,IAAIm2W,GAAgB6B,EAAYe,EAAY5ha,OAE9D,CACD,IAAI8ha,EAAgB14b,YAAkBy3b,GACDzzD,GAAc2wC,UAA/C/xa,KAAKq1b,cAAcR,GACvB50b,EAAK8kB,OAAO83D,KAAO,IAAI+4V,GAAgBkgB,EAAcF,EAAY5ha,IAGzE,GAAI/zB,EAAKgzE,SAAWhzE,EAAKgzE,QAAQ4J,KAAM,CACnC,IAAIk5W,EAAc91b,EAAKgzE,QAAQ4J,KAAe,WAC1Cm5W,EAAc/1b,EAAKgzE,QAAQ4J,KAAa,SACxCo5W,EAAeh2b,EAAKgzE,QAAQ4J,KAAc,UAE9C,GADA7oD,EAAS52B,YAAkB+jY,GAAa80D,IAAiB,EAAI90D,GAAa80D,GACtEh2b,EAAKgzE,QAAQ4J,KAAe,WAC5B58E,EAAKgzE,QAAQ4J,KAAO,IAAIm2W,GAAgB+C,EAAaC,EAAahia,OAEjE,CACD,IAAIkia,EAAgB94b,YAAkB24b,GACA30D,GAAc2wC,UAAhD/xa,KAAKq1b,cAAcU,GACvB91b,EAAKgzE,QAAQ4J,KAAO,IAAI+4V,GAAgBsgB,EAAcF,EAAahia,IAG3E,GAAI/zB,EAAKi+E,QAAUj+E,EAAKi+E,OAAOrB,KAAM,CACjC,IAAIs5W,EAAal2b,EAAKi+E,OAAOrB,KAAe,WACxCu5W,EAAan2b,EAAKi+E,OAAOrB,KAAa,SACtCw5W,EAAcp2b,EAAKi+E,OAAOrB,KAAc,UAE5C,GADA7oD,EAAS52B,YAAkB+jY,GAAak1D,IAAgB,EAAIl1D,GAAak1D,GACrEp2b,EAAKi+E,OAAOrB,KAAe,WAC3B58E,EAAKi+E,OAAOrB,KAAO,IAAIm2W,GAAgBmD,EAAYC,EAAYpia,OAE9D,CACD,IAAIsia,EAAgBl5b,YAAkB+4b,GACD/0D,GAAc2wC,UAA/C/xa,KAAKq1b,cAAcc,GACvBl2b,EAAKi+E,OAAOrB,KAAO,IAAI+4V,GAAgB0gB,EAAcF,EAAYpia,MAI7E2/Z,EAAUz3b,UAAUmoX,oBAAsB,WACtC,IAAI17M,EAAS,IAAIsuQ,GACjB,GAAK75a,YAAkB4C,KAAK00b,YAAet3b,YAAkB4C,KAAK00b,UAAU3va,QAmBxE,OADA4jJ,EAAOn2I,IAAM,IAAI62W,GAAO,IAAI7C,GAAS,IAAK,IAAK,MACxC,CAAE79N,OAAQA,EAAQ9rF,KAAM,IAAI+4V,GAAgBx0C,GAAc2wC,UAAW,MACxE9oC,MAAO,IAAIH,GAAc,IAAItC,GAAS,IAAK,IAAK,OAnBpD,IAAI5wT,EAAcx4E,YAAkB4C,KAAK00b,UAAU3va,OAAO+5D,UACDsiT,GAAc2wC,UAAnE/xa,KAAKq1b,cAAcr1b,KAAK00b,UAAU3va,OAAO+5D,UACzCy8R,EAAYv7W,KAAKs1b,aAAat1b,KAAK00b,UAAU3va,QAC7C8wD,EAAYz4E,YAAkB4C,KAAK00b,UAAU3va,OAAO8wD,UAA6C,KAAjC71E,KAAK00b,UAAU3va,OAAO8wD,SACtFkzT,EAAW,IAAIvC,GACnB,IAAKppY,YAAkB4C,KAAK00b,UAAU3va,OAAO65D,WAAY,CACrD,IAAI22W,EAAgBv1b,KAAKw1b,SAASx1b,KAAK00b,UAAU3va,OAAO65D,WACxDmqT,EAAW,IAAIvC,GAAS+uD,EAAcz2Z,EAAGy2Z,EAAcz7L,EAAGy7L,EAAc5tb,GAE5E,IAAIk1E,EAAO,IAAI+4V,GAAgBhgW,EAAYC,EAAU0lS,GAIrD,OAHKn+W,YAAkB4C,KAAK00b,UAAU3va,OAAO83D,QACzCA,EAAO78E,KAAK00b,UAAU3va,OAAO83D,MAE1B,CAAE8rF,OAAQ3oK,KAAK01b,eAAe11b,KAAK00b,UAAU3va,OAAO4jJ,QAAS9rF,KAAMA,EAAMosT,MAAO,IAAIH,GAAcC,KAUjH4qD,EAAUz3b,UAAUi5b,sBAAwB,SAAU/I,EAAStqX,EAAY3H,EAAaF,EAAM0uG,EAAQzvF,EAAO2D,EAAMosT,EAAOswC,EAAiBp4D,EAAYz0D,EAAqBnhS,EAAQ/Q,GAmDhL,IAlDA,IAAIza,EAAQC,KACRm/R,EAAajmN,EACbr6E,EAAU,SAAU03b,GACpB,IAAI3rY,EAAMwhY,EAAQtjX,KAAKikX,SACnB5tX,EAAMlF,EAAKqM,iBAAiBiwX,EAAgB/8X,OAE5Cv5D,EAAO,CACPzD,MAAO+5b,EAAgBv5b,IACvBy8D,OAAQ0F,EACRnrC,WAAOh4B,EACPwlE,aAAcrC,EAAIsqC,mBAGlBg4Q,EAAQ,CAAEC,YADF53U,EAAOvpC,OAAO+lE,iBAAiBiwX,EAAgB/8X,OAAOuD,WAAa,MAASoC,EAAIgpC,oBAA0EouV,EAAgBv5b,IAApE8sC,EAAO81U,qBAAqBT,gBAAgBl/W,IAA+B,MAAQs2b,EAAgBz7X,OAASgH,EAAWhH,MAAQ,EAAI,SAAW,SAC9N3vD,KAAM,OACxC2+B,EAAOvpC,OAAOwpB,QAAQhD,KAA2B06V,GAAO,SAAUA,GAO9D,IAAI0B,EANJv4T,EAAI0V,MAAMg5W,QAAQn6I,GAAY3iS,MAAQilX,EAAMC,YAC5C92T,EAAI0V,MAAMg5W,QAAQn6I,EAAa,GAAGnrQ,MAAMigX,aAAe,IAAInJ,GAAgBtK,GAAiBjkJ,MAC5F3xL,EAAI52B,MAAMgmZ,UAAUrxQ,GACpB/9G,EAAI52B,MAAMi4V,QAAQpvS,GAClBjyB,EAAI52B,MAAMylZ,aAAaxwC,GACvBr+U,EAAI52B,MAAMqlZ,mBAAmBE,GAE7B,IAAIid,EAAsB,IAAIx5U,KAA6B/iD,GAU3D,GALIkpT,EAJC/lX,YAAkBm5b,EAAgBxiX,MAAMwU,SAIjCiuW,EAAoBhqV,aAAa+pV,EAAgBxiX,MAAOwiX,GAHxDC,EAAoBhqV,aAAa+pV,EAAgBxiX,MAAMwU,QAASguW,GAKvEn5b,YAAkB+lX,IAA2B,IAAjBA,EAAMtmX,SACnC+tD,EAAI0V,MAAMg5W,QAAQn6I,EAAa,GAAG4kJ,WAAaqI,EAAQryX,QAAQe,OAASqkO,EAAa,KAEpF/hS,YAAkB0kE,EAAWxG,cAAgBwG,EAAWxG,YAAc,EAAG,CAC1Ev7D,EAAMyhX,kBAAkB2B,EAAOipE,EAASzjR,EAAQ9rF,EAAMosT,EAAOswC,GAAiB,EAAM3uX,EAAKu0O,GACzFp/R,EAAMo1b,sBAAsB/I,EAASmK,EAAgBxiX,MAAO5Z,EAAaF,EAAM0uG,EAASw2H,EAAa,EAAItiN,EAAMosT,EAAOswC,EAAiBp4D,EAAYz0D,EAAqBnhS,EAAQ/Q,GAEhL2oW,EADwB,IAAItmQ,KAA2B5iD,GAC7BuyC,aAAa+pV,EAAgBxiX,MAAMwU,QAASguW,GACtEx2b,EAAMyhX,kBAAkB2B,EAAOipE,EAASzjR,EAAQ9rF,EAAMosT,EAAOswC,GAAiB,OAE7E,CACDx5a,EAAMyhX,kBAAkB2B,EAAOipE,EAASzjR,EAAQ9rF,EAAMosT,EAAOswC,GAAiB,EAAM3uX,EAAKu0O,GACzF3kR,EAAQza,EAAMq1b,cAAczsR,EAAQxuG,EAAaF,EAAMs8X,EAAgBxiX,MAAOq4W,EAAUjtJ,EAAa,EAAIutB,EAAqBnhS,EAAQ/Q,GAEtI2oW,EADwB,IAAItmQ,KAA2B5iD,GAC7BuyC,aAAa+pV,EAAgBxiX,MAAOwiX,GAE9Dx2b,EAAMyhX,kBAAkB2B,EAAOipE,EAASzjR,EAAQ9rF,EAAMosT,EAAOswC,GAAiB,EAAO,KAAM,MADrE,QAK9BzvY,EAAS9pC,KACJhC,EAAK,EAAG00J,EAAe5wF,EAAY9jE,EAAK00J,EAAa71J,OAAQmB,IAAM,CAExEa,EADsB6zJ,EAAa10J,MAI3C21b,EAAUz3b,UAAU64b,mBAAqB,SAAUz5X,EAAa8wX,EAAStjX,EAAM6mF,EAAYgZ,EAAQksR,EAAYC,EAAaz6X,EAAMokB,EAAyBg4W,GACvJ,IAAI12b,EAAQC,KACR2lN,EAAch2D,EAAW9yJ,OAASy+D,EAClCwK,EAAQD,aAAmB4wX,GAC3B5pV,EAAO4pV,EACPj8a,EAAQ,EACRxa,KAAKO,OAAO0nG,gBACZztF,EAAQxa,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,QAE9Cuvb,EAAQryX,QAAQhxC,IAAI48L,GACpBymO,EAAQpna,QAAQ+D,IAAI+/C,EAAKjsE,QACzB,IAAI65b,EAAmB,SAAUC,EAAQzjT,EAAQ/zE,EAAKia,EAASJ,GAC3D,IAAI9uB,EAAakiY,EAAQpna,QAAQq8Z,UAAUsV,GACvCC,EAAU1sY,EAAWoW,MAAMg5W,QAAQpmS,GACnCnzD,EAAOjX,EAAK6tX,GAAQr2X,MAAM4yE,GACzB91I,YAAkB+hE,EAAI2lO,mBACvB8xJ,EAAQ5ia,MAAMigX,aAAel0Y,EAAM82b,uBAAuB13X,EAAI2lO,kBAE9D1rN,EAAU,IACVw9W,EAAQx9W,QAAUA,EAClBw9W,EAAQ5ia,MAAMigX,aAAel0Y,EAAM+2b,qBAAqB,SAAUF,EAAQ5ia,MAAMigX,aAAc90U,EAAIglC,YAElGnrB,EAAU,IACV49W,EAAQ7S,WAAa/qW,GAEzB9uB,EAAWl2B,MAAMgmZ,UAAUrxQ,GAC3Bz+G,EAAWl2B,MAAMi4V,QAAQ4oE,GACzB3qY,EAAWl2B,MAAMylZ,aAAaqb,GAC9B8B,EAAQp6b,MAAQ2iE,EAAIpC,WACf3/D,YAAkB2iF,IAAUA,EAAKykB,WAAaj2B,IAASm5D,cAAgB3nD,EAAKykB,WAAaj2B,IAASo5D,eACnGivT,EAAQp6b,MAAQ,GAChBo6b,EAAQlnZ,MAAQ,IAEpB,IAAIzvC,EAAO,CACP8/E,KAAM62W,EACNzyE,SAAUpkS,EACV/rD,MAAO4ia,EAAQ5ia,OAEnBj0B,EAAMQ,OAAOwpB,QAAQhD,KAA+B9mB,IA8BxD,OA5BiB,SAAb82b,EAAuBlqV,EAAM/mC,EAAOi1J,EAASjiJ,EAAUnN,EAAUqrX,GAEjE,IADA,IAAIC,EAAO,EACFr6b,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAS7B,GARIo6b,IAEAl+W,EADAm+W,EAAOA,EAAOl8N,GAAiB,IAANn+N,EAAU,GAAK,GAExCm+N,EAAU,GAETi8N,GAAWnqV,EAAKjwG,GAAGsgE,UACpB4b,GAAsB,GAEtB+zB,EAAKjwG,GAAGm9D,SAAW8yC,EAAKjwG,GAAGm9D,QAAQl9D,OAAQ,CAC3C,IAAIq6b,EAAaH,EAAWlqV,EAAKjwG,GAAGm9D,QAAS+L,EAAQ,EAAG,EAAGlpE,EAAIk8E,EAAUnN,EAAW,GAAG,GACvF+qX,EAAiB/qX,EAAU/uE,EAAIk8E,EAAWt+D,EAAOqyF,EAAKjwG,GAAI,EAAGs6b,GAC7Dn8N,GAAoBm8N,EACpBp+W,EAAWA,EAAWo+W,EAAa,OAE9BrqV,EAAKjwG,GAAGsgE,SAAWn9D,EAAMo9W,qBAC9BpiJ,IACA27N,EAAiB/qX,EAAU/uE,EAAIk8E,EAAWt+D,EAAOqyF,EAAKjwG,GAAIkpE,EAAO,IAGzE,OAAOi1J,EAEXg8N,CAAWlqV,EAAM/mC,EAAO,EAAG,EAAG,GAAG,GAC7BsmX,EAAQryX,QAAQe,OAAS,GAAK2jB,IAC9B2tW,EAAQp4Z,MAAMyqD,yBAA0B,GAErC2tW,GAEXuH,EAAUz3b,UAAUy4b,wBAA0B,SAAUjoI,EAAqB5qP,GACzE,GAAK1kE,YAAkBsvT,GAyCnB1sT,KAAK2tI,iBAAkB,EACvB3tI,KAAK4zb,kBAAmB,MA1CiB,CACpCx2b,YAAkBsvT,EAAoB1uO,SACvCh+E,KAAK00b,UAAYhoI,EAAoB1uO,OAEzC,IAAI+uT,EAAa/sY,KAAKk0b,gBAAgB13W,KAEtC,GADAx8E,KAAKw0b,WAAW9nI,IACXtvT,YAAkBsvT,EAAoBlvO,QAAS,CAEhD,IAAIA,EAASkvO,EAAoBlvO,OAC7BzvC,EAAW,IAAIkwV,GAAO,EAAK8O,EAAWr9V,MAAQ,GAA2B,IAApB8tC,EAAO25W,YAC5D36W,EAAO,IAAI0hT,GAAO6O,EAAWr9V,MAAQ,GAAsB,IAAhB8tC,EAAO7tC,QAClDmmV,EAAS,IAAIqI,GAAWpwV,EAAUyuC,GACtCx8E,KAAKglX,YAAY15V,SAAS2X,OAASjjC,KAAKo3b,iBAAiB,IAAI1I,GAAuB54D,GAASt4S,GAE5FpgF,YAAkBsvT,EAAoB/uO,sBAAyB39E,KAAK6zb,aACrE7zb,KAAKm9W,kBAAoBzwD,EAAoB/uO,qBAE5CvgF,YAAkBsvT,EAAoB5qP,YAOjC1kE,YAAkBsvT,EAAoB5uO,aAY5C99E,KAAK2tI,iBAAkB,EACvB3tI,KAAK4zb,kBAAmB,GAZe,gBAAnClnI,EAAoB5uO,YACpBhc,EAAa9hE,KAAKO,OAAOotI,gBACzB3tI,KAAK2tI,iBAAkB,EACvB3tI,KAAK4zb,kBAAmB,IAGxB5zb,KAAK2tI,iBAAkB,EACvB3tI,KAAK4zb,kBAAmB,IAdtBlnI,EAAoB5qP,sBAAsBC,MAC5CD,EAAa4qP,EAAoB5qP,YAErC9hE,KAAK4zb,kBAAmB,EACxB5zb,KAAK2tI,iBAAkB,GAsB/B,OAAO7rE,GAEX6xX,EAAUz3b,UAAUs4b,WAAa,SAAU9nI,GACvC,IAAI3sT,EAAQC,KACR+sY,EAAa/sY,KAAKk0b,gBAAgB13W,KACtC,IAAKp/E,YAAkBsvT,KAAyBtvT,YAAkBsvT,EAAoB3nS,QAAS,CAE3F,IAAIA,EAAS2nS,EAAoB3nS,OAC7BgpB,EAAW,IAAIkwV,GAAO,EAAGl5W,EAAOq4D,SAChCZ,EAAO,IAAI0hT,GAAO6O,EAAWr9V,MAAQ,GAAsB,IAAhB3qB,EAAO4qB,QAClDmmV,EAAS,IAAIqI,GAAWpwV,EAAUyuC,GACtC,GAAKx8E,KAAK8zb,cAAcj3b,OAGnB,CACD,IAAIw6b,EAAmBr3b,KAAKo3b,iBAAiB,IAAI1I,GAAuB54D,GAAS/wW,GACjF/kB,KAAK8zb,cAAc5ia,QAAO,SAAU1W,GAC5BA,EAAQ,GAAK,GAAKA,EAAQ,EAAIza,EAAMilX,YAAY4I,MAAM9yT,MAAQ,GAC9D/6D,EAAMilX,YAAY4I,MAAMsjD,eAAe12Z,EAAQ,GAAGw4X,SAC7CmqB,gBAAgBk6B,EAAiB/ra,SAAU,IAAI2yW,GAAO,EAAG,YAPtEj+X,KAAKglX,YAAY15V,SAAS0X,IAAMhjC,KAAKo3b,iBAAiB,IAAI1I,GAAuB54D,GAAS/wW,KAatG4ua,EAAUz3b,UAAUk7b,iBAAmB,SAAU9ra,EAAUtqB,GACvD,IAAK,IAAIhD,EAAK,EAAGuF,EAAKvC,EAAQw5E,SAAUx8E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC1D,IAAI0sD,EAAUnnD,EAAGvF,GAEjB,OADAgC,KAAKs3b,yBAAyB5sY,GACtBA,EAAQv/C,MACZ,IAAK,OACD,GAAsB,KAAlBu/C,EAAQluD,YAAkCR,IAAlB0uD,EAAQluD,OAAyC,OAAlBkuD,EAAQluD,OAA2C,kBAAlBkuD,EAAQluD,MAChG,MAAM,IAAIoE,MAAM,yDAEpBZ,KAAK+8a,SAASzxZ,EAAUo/B,GACxB,MACJ,IAAK,aACD1qD,KAAKu3b,eAAejsa,EAAUo/B,GAC9B,MACJ,IAAK,QACD,QAAoB1uD,IAAhB0uD,EAAQxrD,KAAqC,OAAhBwrD,EAAQxrD,KAAgC,KAAhBwrD,EAAQxrD,IAC7D,MAAM,IAAI0B,MAAM,4DAEpBZ,KAAK++Z,UAAUzzY,EAAUo/B,GACzB,MACJ,IAAK,OACD1qD,KAAKm+Z,SAAS7yY,EAAUo/B,GACxB,MACJ,QACI,MAAM,IAAI9pD,MAAM,qCAG5B,OAAO0qB,GAEXqoa,EAAUz3b,UAAUo7b,yBAA2B,SAAU5sY,GACrD,QAAqB1uD,IAAjB0uD,EAAQv/C,MAAuC,OAAjBu/C,EAAQv/C,KACtC,MAAM,IAAIvK,MAAM,oCAGhB,GAAqB,SAAjB8pD,EAAQv/C,KAAiB,CACzB,QAAuBnP,IAAnB0uD,EAAQixB,QAA2C,OAAnBjxB,EAAQixB,OACxC,MAAM,IAAI/6E,MAAM,gCAAkC8pD,EAAQv/C,KAAO,eAGjE,QAA0BnP,IAAtB0uD,EAAQixB,OAAOE,IAA0C,OAAtBnxB,EAAQixB,OAAOE,IAA4C,kBAAtBnxB,EAAQixB,OAAOE,GACvF,MAAM,IAAIj7E,MAAM,wCAA0C8pD,EAAQv/C,KAAO,cAE7E,QAA0BnP,IAAtB0uD,EAAQixB,OAAOI,IAA0C,OAAtBrxB,EAAQixB,OAAOI,IAA4C,kBAAtBrxB,EAAQixB,OAAOI,GACvF,MAAM,IAAIn7E,MAAM,wCAA0C8pD,EAAQv/C,KAAO,cAE7E,QAA0BnP,IAAtB0uD,EAAQixB,OAAOM,IAA0C,OAAtBvxB,EAAQixB,OAAOM,IAA4C,kBAAtBvxB,EAAQixB,OAAOM,GACvF,MAAM,IAAIr7E,MAAM,wCAA0C8pD,EAAQv/C,KAAO,cAE7E,QAA0BnP,IAAtB0uD,EAAQixB,OAAOQ,IAA0C,OAAtBzxB,EAAQixB,OAAOQ,IAA4C,kBAAtBzxB,EAAQixB,OAAOQ,GACvF,MAAM,IAAIv7E,MAAM,wCAA0C8pD,EAAQv/C,KAAO,kBAIhF,CACD,QAAyBnP,IAArB0uD,EAAQ3c,UAA+C,OAArB2c,EAAQ3c,SAC1C,MAAM,IAAIntC,MAAM,kCAAoC8pD,EAAQv/C,KAAO,eAGnE,QAA2BnP,IAAvB0uD,EAAQ3c,SAASxsB,GAA0C,OAAvBmpC,EAAQ3c,SAASxsB,GAA4C,kBAAvBmpC,EAAQ3c,SAASxsB,EAC3F,MAAM,IAAI3gB,MAAM,uCAAyC8pD,EAAQv/C,KAAO,gBAE5E,QAA2BnP,IAAvB0uD,EAAQ3c,SAASz3B,GAA0C,OAAvBo0C,EAAQ3c,SAASz3B,GAA4C,kBAAvBo0C,EAAQ3c,SAASz3B,EAC3F,MAAM,IAAI1V,MAAM,uCAAyC8pD,EAAQv/C,KAAO,kBAO5Fwob,EAAUz3b,UAAU6gb,SAAW,SAAU1O,EAAc3jX,GACnD,IAAImyB,EAAO78E,KAAKg0Y,QAAQtpV,GACpBu+U,EAAQjpY,KAAKw3b,oBAAoB9sY,GACjC+/U,EAAM,KACV,IAAKrtY,YAAkBstD,EAAQ12B,MAAMonD,cAAe,CAChD,IAAIR,EAAW56E,KAAKw1b,SAAS9qY,EAAQ12B,MAAMonD,cAC3CqvT,EAAM,IAAIpB,GAAO,IAAI7C,GAAS5rT,EAAS97C,EAAG87C,EAASk/K,EAAGl/K,EAASjzE,IAEtD,MAATshY,GAAwB,MAAPwB,IACjBxB,EAAQ,IAAIH,GAAc,IAAItC,GAAS,EAAG,EAAG,KAEjD,IAAIhqY,EAAQkuD,EAAQluD,MAAM2Q,WACtBoU,EAAyB,IAArBmpC,EAAQ3c,SAASxsB,EACrBjL,EAAyB,IAArBo0C,EAAQ3c,SAASz3B,EACrBtL,EAAS,IAAI8/X,GACbnsY,EAASqB,KAAKy3b,iBAAiB/sY,EAAS1/C,GAC7B,OAAXrM,GAAoBvB,YAAkBuB,EAAOqM,SAAY5N,YAAkBuB,EAAO69E,MAIlF6xV,EAAar7B,SAASwqB,WAAWhha,EAAOqgF,EAAM4tT,EAAKxB,EAAO1nX,EAAGjL,EAAGtL,GAHhEqja,EAAar7B,SAASwqB,WAAWhha,EAAOqgF,EAAM4tT,EAAKxB,EAAO1nX,EAAGjL,EAAG3X,EAAO69E,KAAK9sC,MAAO/wC,EAAO69E,KAAK7sC,OAAQhxC,EAAOqM,SAOtH2ob,EAAUz3b,UAAUq7b,eAAiB,SAAUG,EAAgBhtY,GAC3D,IAAImyB,EAAO78E,KAAKg0Y,QAAQtpV,GACpBu+U,EAAQ,KACZ,GAAK7rY,YAAkBstD,EAAQ12B,MAAMknD,gBAKjC+tT,EAAQ,IAAIH,GAAc,IAAItC,GAAS,EAAG,EAAG,QALK,CAClD,IAAImxD,EAAa33b,KAAKw1b,SAAS9qY,EAAQ12B,MAAMknD,gBAC7C+tT,EAAQ,IAAIH,GAAc,IAAItC,GAASmxD,EAAW74Z,EAAG64Z,EAAW79L,EAAG69L,EAAWhwb,IAKlF,IAEIiwb,EACA5sb,EAHA6sb,EAAa,IAAItF,GAAmB11W,EAAMosT,GAI9C,GAHA4uD,EAAWvH,YAActwb,KAAK83b,mBAAmBptY,EAAQ+vB,gBAGpDr9E,YAAkBstD,EAAQ1/C,QA4B3B4sb,EAAiB,IAAIlF,GAAkB71W,EAAMosT,EAD7Cj+X,EAAS,MACmD6sb,OA5BxB,CACpC,IAAIvuG,EAAQ,SACRz/P,EAAU,WACd,IAAuC,IAAnCn/B,EAAQ1/C,OAAO7M,QAAQmrV,KAAsD,IAArC5+R,EAAQ1/C,OAAO7M,QAAQ0rF,IAC3D+kE,EAAY,IAAImkS,GAAkBl2W,IAC5ByzW,YAActwb,KAAK83b,mBAAmBptY,EAAQ+vB,gBAGpDzvE,EAFA0/C,EAAQ1/C,OAAO7M,QAAQmrV,GAAS5+R,EAAQ1/C,OAAO7M,QAAQ0rF,IACvD7+E,EAAS0/C,EAAQ1/C,OAAOtO,QAAQmtF,EAAS,MACzBntF,QAAQ4sV,EAAO,MAG/Bt+U,EAAS0/C,EAAQ1/C,OAAOtO,QAAQmtF,EAAS,MACzBntF,QAAQ4sV,EAAO,KAEnCsuG,EAAiB,IAAIlF,GAAkB71W,EAAMosT,EAAOj+X,EAAQ6sb,EAAYjpS,QAEvE,IAAyC,IAArClkG,EAAQ1/C,OAAO7M,QAAQ0rF,KAAsD,IAAnCn/B,EAAQ1/C,OAAO7M,QAAQmrV,GACtEt+U,EAAS0/C,EAAQ1/C,OAAOtO,QAAQmtF,EAAS,KACzC+tW,EAAiB,IAAIlF,GAAkB71W,EAAMosT,EAAOj+X,EAAQ6sb,OAE3D,CACD,IAAIjpS,EAAY,IAAImkS,GAAkBl2W,GACtC7xE,EAAS0/C,EAAQ1/C,OAAOtO,QAAQ4sV,EAAO,KACvCsuG,EAAiB,IAAIlF,GAAkB71W,EAAMosT,EAAOj+X,EAAQ4jJ,IAOpE,IAAIrtI,EAAyB,IAArBmpC,EAAQ3c,SAASxsB,EACrBjL,EAAyB,IAArBo0C,EAAQ3c,SAASz3B,EACrB3X,EAASqB,KAAKy3b,iBAAiB/sY,EAASktY,EAAe3jD,cAC5C,OAAXt1Y,GAAoBvB,YAAkBuB,EAAOqM,SAAY5N,YAAkBuB,EAAO69E,QAClFo7W,EAAe3jD,aAAet1Y,EAAOqM,OACrC4sb,EAAe9hE,OAAS,IAAIqI,GAAW58W,EAAGjL,EAAG3X,EAAO69E,KAAK9sC,MAAO/wC,EAAO69E,KAAK7sC,SAEhFioZ,EAAe1jD,KAAKwjD,EAAe1kD,SAAUzxX,EAAGjL,IAGpDq9a,EAAUz3b,UAAU6ia,UAAY,SAAU24B,EAAgBhtY,GACtD,IAAInpC,EAAyB,IAArBmpC,EAAQ3c,SAASxsB,EACrBjL,EAAyB,IAArBo0C,EAAQ3c,SAASz3B,EACrBo5B,EAAUtyC,YAAkBstD,EAAQ8xB,WAAuCxgF,EAAR,IAArB0uD,EAAQ8xB,KAAK9sC,MAC3DC,EAAWvyC,YAAkBstD,EAAQ8xB,WAAwCxgF,EAAR,IAAtB0uD,EAAQ8xB,KAAK7sC,OAC5D4hE,EAAQ,IAAIknT,GAAU/tW,EAAQxrD,KAC7B9B,YAAkBsyC,GAInBgoZ,EAAe1kD,SAAS+rB,UAAUxtT,EAAOhwF,EAAGjL,GAH5Cohb,EAAe1kD,SAAS+rB,UAAUxtT,EAAOhwF,EAAGjL,EAAGo5B,EAAOC,IAO9DgkZ,EAAUz3b,UAAUiia,SAAW,SAAUu5B,EAAgBhtY,GACrD,IAAImxB,EAAyB,IAApBnxB,EAAQixB,OAAOE,GACpBE,EAAyB,IAApBrxB,EAAQixB,OAAOI,GACpBE,EAAyB,IAApBvxB,EAAQixB,OAAOM,GACpBE,EAAyB,IAApBzxB,EAAQixB,OAAOQ,GACpBsuT,EAAMzqY,KAAK+3b,kBAAkBrtY,GAC5BttD,YAAkBstD,EAAQ12B,QAA4B,OAAlB02B,EAAQ12B,QACxC52B,YAAkBstD,EAAQ12B,MAAM8mD,UAAsC,OAA1BpwB,EAAQ12B,MAAM8mD,SAAqD,kBAA1BpwB,EAAQ12B,MAAM8mD,UACpG2vT,EAAI/6V,MAAgC,IAAxBgb,EAAQ12B,MAAM8mD,SAE9B2vT,EAAIzvT,UAAYh7E,KAAKg4b,aAAattY,EAAQ12B,MAAMgnD,YAEpD08W,EAAe1kD,SAASmrB,SAAS1zB,EAAK5uT,EAAIE,EAAIE,EAAIE,IAEtDw3W,EAAUz3b,UAAUslX,kBAAoB,SAAU2B,EAAOipE,EAASzjR,EAAQ9rF,EAAMosT,EAAOswC,EAAiB0e,EAAWvhT,EAAYyoJ,EAAY+4J,GACvI,IAAK,IAAIl6b,EAAK,EAAGm6b,EAAUh1E,EAAOnlX,EAAKm6b,EAAQt7b,OAAQmB,IAAM,CAOzD,IANA,IAAI4sD,EAAMutY,EAAQn6b,GACdo6b,GAA4B,EAC5B59a,EAAQ,EACRkU,GAAU,EAEVlyB,EAAQ,GACHI,EAAI,EAAGA,EAAIwvb,EAAQryX,QAAQe,MAAOl+D,IAAK,CAC5C,IAAImjF,EAAOn1B,EAAI0V,MAAM9lD,GACrB,GAAIulE,EAAKykB,WAAaj2B,IAAS2tC,mBAA/B,CAKA,IAAKl8G,KAAKm9W,kBAAmB,CACzB,UAAwBnhX,IAAjB+jF,EAAK7iB,SACR,GAAI6iB,EAAKykB,WAAaj2B,IAAS2tC,mBAA/B,CAGA,GAAK9+G,YAAkBs5I,GAgBnBl6I,EAAMoF,KAAK,SAfX,GAAKxE,YAAkBs5I,EAAWp2E,MAAMg5W,QAAQ18a,GAAGJ,OAW/CA,EAAMoF,KAAK,QAX4C,CACvD,IAAI3B,EAAO,CAAE2qD,IAAKA,EAAKz/C,KAAM,eAAgB6oB,MAAO0iH,EAAWp2E,OAC/DtgE,KAAKO,OAAOwpB,QAAQhD,KAAkC9mB,GACtDzD,EAAMoF,KAAK,IACXpF,EAAMoF,KAAK80I,EAAWp2E,MAAMg5W,QAAQ18a,GAAGJ,OACvCkyB,GAAU,EACLupa,IACDr7b,GAAK,GAUjBA,GAAK,EACL4d,GAAgB,EAChBulE,EAAOn1B,EAAI0V,MAAM9lD,GAErB,MAAQpd,YAAkB2iF,EAAK7iB,WAAa6iB,EAAK7iB,SAC7C1iD,GAAgB,EAChBulE,EAAOn1B,EAAI0V,MAAM9lD,GAGzB,GAAIulE,EAAKmuB,WAAY,CACjB,IAAIhF,EAAa,GACjB,GAAK9rG,YAAkB2iF,EAAKtmB,OAAOk3C,iBAAoBvzG,YAAkB2iF,EAAKtmB,OAAO4hD,uBAC7Ej+G,YAAkB2iF,EAAKtmB,OAAO2hD,qBAmBjC,CAEGz8G,EAASqB,KAAKq4b,0BAA0BztY,EAAI/vC,KAAKklE,EAAKtmB,OAAOD,QAC5Dp8D,YAAkBuB,IACnBnC,EAAMoF,KAAKjD,OAvByC,CAExD,IAAIA,EACJuqG,GADIvqG,EAASqB,KAAKs4b,oBAAoBpvV,EAAYtsG,EAAGw7b,EAA0Br4W,IAC3Dw4W,iBACpBH,EAA2Bz5b,EAAOy5b,yBAClC,IAAIpvN,OAAM,EACNnuN,EAAO+vC,EAAI/vC,KAAKklE,EAAKtmB,OAAOD,MAAQumB,EAAKtmB,OAAOD,MAAQumB,EAAKtmB,OAAO4iD,YACpEr8G,KAAKO,OAAOgiG,SAAWviG,KAAKO,OAAOilS,OACnCx8D,EAAO9/H,EAAW1rG,YAAa+wE,IAAUwR,EAAKykB,WAAW3pF,EAAM7a,KAAKO,QAChEP,KAAKO,OAAOgiG,SACZviG,KAAKO,OAAOqiG,mBAIhBomI,EAAO9/H,EAAW1rG,YAAa+wE,IAAUwR,EAAKykB,WAAW3pF,GAE7Dre,EAAMoF,KAAKonO,EAAI,GAAG3yI,aAClB3nE,GAAU,QAWdlyB,EAAMoF,KAAK,IAEX8sB,GAAwB,KAAblyB,EAAMI,KAAcQ,YAAkBZ,EAAMI,KAAoB,OAAbJ,EAAMI,KACpE8xB,GAAU,GAEdlU,GAAS,OAxEL5d,IACA4d,IAyER,GAAIy9a,EACA,IAASr7b,EAAKoD,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAU,EAAGD,EAAIJ,EAAMK,OAAS,EAAGD,IAC/EJ,EAAMI,GAAKJ,EAAMI,EAAI,GAG7B,IAAK8xB,EACD,GAAKupa,EAeD,IAASr7b,EAAI,EAAGA,EAAIwvb,EAAQryX,QAAQe,MAAOl+D,IACvC85I,EAAWp2E,MAAMg5W,QAAQ18a,GAAGJ,MAAQA,EAAMI,GAAGuQ,WACzCvQ,IAAOuiS,EAAa,IAAoC,IAA9Bi5J,GAAgE,IAA7BA,EAC7D1hT,EAAWp2E,MAAMg5W,QAAQ18a,GAAGmnb,WAAaqU,GAA4Bj5J,EAAa,GAE7EviS,IAAOuiS,EAAa,IAAoC,IAA9Bi5J,IAC/B1hT,EAAWp2E,MAAMg5W,QAAQ18a,GAAGmnb,WAAaqI,EAAQryX,QAAQe,OAASqkO,EAAa,QArB3E,CACZ,IAAIznB,EAAU00K,EAAQtjX,KAAKikX,SAC3Br1K,EAAQ1jP,MAAMgmZ,UAAUrxQ,GACxB+uG,EAAQ1jP,MAAMi4V,QAAQpvS,GACtB66L,EAAQ1jP,MAAMylZ,aAAaxwC,GAC3BvxH,EAAQ1jP,MAAMqlZ,mBAAmBE,GAC7Bt5a,EAAO,CACP2qD,IAAKA,EAAKz/C,KAAM+sb,EAAkB,cAAgB,SAAUlka,MAAO0jP,EAAQp3M,OAE/EtgE,KAAKO,OAAOwpB,QAAQhD,KAAkC9mB,GACtD,IAAK,IAAIrD,EAAI,EAAGA,EAAIwvb,EAAQryX,QAAQe,MAAOl+D,IACvC86Q,EAAQp3M,MAAMg5W,QAAQ18a,GAAGJ,MAAQA,EAAMI,GAAGuQ,cAkB9Dwmb,EAAUz3b,UAAUo8b,oBAAsB,SAAUpvV,EAAY1uF,EAAO49a,EAA0Br4W,GAa7F,OAZK3iF,YAAkB2iF,EAAKtmB,OAAOk3C,iBAAmB5wB,EAAKykB,WAAaj2B,IAASquC,QAGvEx/G,YAAkB2iF,EAAKtmB,OAAO4hD,sBAOpCnS,EAAW1rG,YAAa+wE,IAAUA,IAASwuC,eAAiB1xF,YAAQ00D,EAAKtmB,OAAO2hD,uBAN9C,IAA9Bg9U,IACAA,EAA2B59a,GAE/B0uF,EAAW1rG,YAAa+wE,IAAUA,IAAS2uC,iBAAmB7xF,YAAQ00D,EAAKtmB,OAAO4hD,uBANlFnS,EAAW1rG,YAAa+wE,IAAUA,IAASquC,UAAYvxF,YAAQ00D,EAAKtmB,OAAOk3C,gBAWxE,CAAE4nV,iBAAkBrvV,EAAYkvV,yBAA0BA,IAGrEzE,EAAUz3b,UAAUm8b,0BAA4B,SAAUx9a,GACtD,OAAKzd,YAAkByd,EAAKyoW,KAGlBlmX,YAAkByd,EAAK0oW,SAGvBnmX,YAAkByd,EAAK2oW,KAGvBpmX,YAAkByd,EAAK4oW,KAGvBrmX,YAAkByd,EAAKuwG,OAGvBhuH,YAAkByd,EAAK6oW,WAGvBtmX,YAAkByd,EAAK8oW,YAGvBvmX,YAAkByd,EAAKquP,aAA5B,EACMruP,EAAKquP,OAHLruP,EAAK8oW,WAHL9oW,EAAK6oW,UAHL7oW,EAAKuwG,MAHLvwG,EAAK4oW,IAHL5oW,EAAK2oW,IAHL3oW,EAAK0oW,QAHL1oW,EAAKyoW,KAkCpBqwE,EAAUz3b,UAAU84b,oBAAsB,SAAU76X,EAAaiyX,EAAS7ga,EAAQ0uC,EAAMwkB,GAEpF,IADA,IAAIzV,EAAa/O,EAAKe,cAAcjB,QAAQl9D,OACnCD,EAAI,EAAGA,EAAIosE,EAAYpsE,IAC5Bwvb,EAAQryX,QAAQ4mX,UAAU/jb,GAAG8yC,MAAQ,GAEzC,IAAS9yC,EAAI,EAAGA,EAAIu9D,EAAYt9D,OAAQD,IAC/BQ,YAAkB+8D,EAAYv9D,GAAGunG,aAClCioV,EAAQryX,QAAQ4mX,UAAU/jb,EAAIosE,GAAYh+D,OAAShL,KAAK62b,uBAAuB18X,EAAYv9D,GAAGunG,YAG9FioV,EAAQp4Z,MAAMyqD,0BAA4BrhF,YAAkB+8D,EAAYv9D,GAAG8yC,QAAU+uC,IACrF2tW,EAAQryX,QAAQ4mX,UAAU/jb,EAAIosE,GAAYt5B,MAAwC,kBAAzByqB,EAAYv9D,GAAG8yC,MAC7C,IAAvByqB,EAAYv9D,GAAG8yC,MAAgE,IAAjDnkB,EAAOuyV,kBAAkB3jT,EAAYv9D,GAAG8yC,SAYtFikZ,EAAUz3b,UAAUs8b,oBAAsB,SAAU5tY,EAAK+9G,GACrD,GAAKvrK,YAAkB4C,KAAK00b,YAAet3b,YAAkB4C,KAAK00b,UAAUx2W,QAkBxEtzB,EAAI52B,MAAMylZ,aAAa,IAAI3wC,GAAc,IAAItC,GAAS,EAAG,EAAG,SAlBqB,CACjF,IAAI5wT,EAAcx4E,YAAkB4C,KAAK00b,UAAUx2W,OAAOY,UACDsiT,GAAc2wC,UAAnE/xa,KAAKq1b,cAAcr1b,KAAK00b,UAAUx2W,OAAOY,UACzCjJ,EAAYz4E,YAAkB4C,KAAK00b,UAAUx2W,OAAOrI,UAA6C,KAAjC71E,KAAK00b,UAAUx2W,OAAOrI,SACtF0lS,EAAYv7W,KAAKs1b,aAAat1b,KAAK00b,UAAUx2W,QAC7CrB,EAAO,IAAI+4V,GAAgBhgW,EAAYC,EAAU0lS,GAChDn+W,YAAkB4C,KAAK00b,UAAUx2W,OAAOrB,QACzCA,EAAO78E,KAAK00b,UAAUx2W,OAAOrB,MAEjCjyB,EAAI52B,MAAMi4V,QAAQpvS,GAClB,IAAIksT,EAAW,IAAIvC,GACnB,IAAKppY,YAAkB4C,KAAK00b,UAAUx2W,OAAOU,WAAY,CACrD,IAAI22W,EAAgBv1b,KAAKw1b,SAASx1b,KAAK00b,UAAUx2W,OAAOU,WACxDmqT,EAAW,IAAIvC,GAAS+uD,EAAcz2Z,EAAGy2Z,EAAcz7L,EAAGy7L,EAAc5tb,GAE5EijD,EAAI52B,MAAMylZ,aAAa,IAAI3wC,GAAcC,IAK7C,IAAI0vD,EAAez4b,KAAK00b,WAAa10b,KAAK00b,UAAUx2W,QAChDl+E,KAAK00b,UAAUx2W,OAAOyqF,OAAS3oK,KAAK01b,eAAe11b,KAAK00b,UAAUx2W,OAAOyqF,QAAUA,EAEvF,OADA/9G,EAAI52B,MAAMgmZ,UAAUye,GACb7tY,GAiBX+oY,EAAUz3b,UAAUk5b,cAAgB,SAAUzsR,EAAQ5uG,EAASE,EAAM6H,EAAYsqX,EAASpjX,EAAY0jP,EAAqBnhS,EAAQogD,GAE/H,IADA,IACS3tE,EAAK,EAAG8mE,EADNv5C,EAAO6xV,gBAAgBrjT,EAAS+H,EAAY7H,EAAM0R,GAC7B3tE,EAAK8mE,EAAOjoE,OAAQmB,IAAM,CACtD,IAAI4sD,EAAMka,EAAO9mE,GACjB2tE,IAIA,IAFA,IAAI+rM,EAAU13Q,KAAKw4b,oBAAoBpM,EAAQtjX,KAAKikX,SAAUpkR,GAC1D+vR,EAAa9tY,EAAI0V,MAAMzjE,OAClBsL,EAAI,EAAGA,EAAIuwb,EAAYvwb,IAAK,CACjC,IAAIg8W,EAAWv5T,EAAI0V,MAAMn4D,GACzB,GAAIg8W,EAAS3/Q,WAAaj2B,IAAS0/B,KAAnC,CAGA,IAAIx0C,EAAS0qT,EAAS1qT,OAClBD,EAAQC,EAAOD,MACfqqK,EAAazmO,YAAkBo8D,GAAyD,GAAhDC,EAAOF,cAAcC,EAAO5O,EAAI/vC,KAAM4+C,GAC9Ej9D,EAASY,YAAkBymO,GAAyB,GAAZA,EACxCxwK,OAAiB,EAsBrB,GArBIoG,EAAOgwC,iBAAmBhwC,EAAOgwC,oBACjCp2C,EAAiB9nC,EAAO+7Q,SAAS9qS,EAAOi9D,GACxCj9D,EAAQH,YAASo9D,EAAOuD,gBAAiB3J,KAIzCpzD,EAAO,CACP4a,KAHO+vC,EAAI/vC,KAIXre,MAAOA,EACPi9D,OAAQA,EACRzlC,WAAOh4B,EACPg9E,QAAS,EACT+G,KAPAA,EAAO23L,EAAQp3M,MAAMg5W,QAAQnxa,KAS5B3L,MAA6B,YAArByD,EAAKw5D,OAAOtuD,MAA4C,kBAAflL,EAAKzD,MAAqByD,EAAKzD,MACjFwD,KAAK4/W,qBAAqBT,gBAAgBl/W,EAAMg6D,EAAKpvD,kBACzD7K,KAAKO,OAAOwpB,QAAQhD,KAAyB9mB,GACxC7C,YAAkB6C,EAAKsxG,SACxBtxG,EAAKzD,MAAQ,IAAIi8Z,GAAUx4Z,EAAKsxG,MAAM8wQ,SAE1CtiS,EAAKvjF,MAAQyD,EAAKzD,OACbY,YAAkB6C,EAAKozW,WAAY,CAEpC,IAAIslF,EAAW,IAAIrc,GAEnBqc,EAAS/1a,IAAM3iB,EAAKozW,UAAUp2U,OAE9B07Z,EAASpmb,KAAOtS,EAAKozW,UAAUlzR,aAAelgF,EAAKozW,UAAUp2U,OAE7D07Z,EAAS97W,KAAO,IAAI+4V,GAAgBx0C,GAAc2wC,UAAW,MAE7D4mB,EAAS1vD,MAAQ,IAAIH,GAAc,IAAItC,GAAS,GAAI,IAAK,MACzDzmT,EAAKvjF,MAAQm8b,EAKjB,GAHKv7b,YAAkB6C,EAAK+zB,QACxBh0B,KAAK20W,iBAAiB50R,EAAM9/E,GAE5BA,EAAK+4E,QAAU,EAAG,CACb7wE,EAAI,EAAIlI,EAAK+4E,QAAW0+L,EAAQp3M,MAAMxF,QACvC76D,EAAK+4E,QAAU0+L,EAAQp3M,MAAMxF,OAAS3yD,EAAI,IAE9C43E,EAAKgkW,WAAa9jb,EAAK+4E,QACvB,IAAK,IAAIp8E,EAAI,EAAGA,EAAImjF,EAAKgkW,WAAYnnb,IAAK,CACvB86Q,EAAQp3M,MAAMg5W,QAAQnxa,EAAIvL,GAChCJ,MAAQ,GAErB2L,GAAMlI,EAAK+4E,QAAU,IAG7B,GAAIpuB,EAAI8P,SAAU,CACd,IACIqlB,EADA64W,EAAY54b,KAAKw4b,oBAAoBpM,EAAQtjX,KAAKikX,SAAUpkR,IAC5D5oF,EAAO64W,EAAUt4X,MAAMg5W,QAAQtwW,IAC9B+6W,WAAa6U,EAAUt4X,MAAMxF,MAASkO,EAC3C+W,EAAK/rD,MAAMouZ,YAAc,IAAI1K,GAAY,GAAI,GAAI,GAAI,IACrDz9W,EAAKqzC,YAAa,EAClB,IAAIxvB,GAAe1gF,YAAkBsvT,IAAwBA,EAAoB5uO,WAC7E4uO,EAAoB5uO,WAAa,WACjCsqC,EAAcpoH,KAAKurB,OAAOizV,gBAAgBvkT,EAAMrP,EAAKkzB,EAAY99E,KAAKq+W,UACtEE,EAAen2P,EAAYxjD,UAC3B5jE,EAAUonH,EAAYpnH,QAC1Bu9W,EAAavyT,cACTzgC,EAAOnH,eAAepkB,KAAKq+W,SAAUE,EAAcv+W,KAAKs+W,eAC5D,IAAIr+W,EAAO,CAAE2kE,UAAW25S,EAAc3zT,IAAKA,EAAKm1B,KAAMA,EAAMjmB,iBAAkB4yP,GAC9E1sT,KAAKO,OAAOwpB,QAAQhD,KAA8B9mB,GAClDs+W,EAAatwT,gBAAkBjuD,KAAKyiX,cAAc1iS,EAAMw+R,EAAc7xD,GACtE6xD,EAAax3U,SAAS/lC,GAE1BhB,KAAKO,OAAOyZ,OAAO+M,KAA2B,CAAE5b,KAAM,MAAO8/D,OAAQrgB,IAEzE,OAAO+gB,GAEXgoX,EAAUz3b,UAAUumX,cAAgB,SAAU1iS,EAAMw+R,EAAc7xD,GAC9D,IAAI3sT,EAAQC,KACZ,OAAO,SAAUrB,GAQb,OAPA4/W,EAAatwT,gBAAkB,KAC/BtvD,EAAOokB,QAAS,EAChBg9D,EAAKvjF,MAAQuD,EAAMygX,kBAAkBjC,EAAc5/W,EAAQ+tT,GAC3D6xD,EAAapjW,UACb0V,YAAO0tV,EAAav9W,SACpBjB,EAAMs+W,SAASE,EAAa9kW,KAAM,EAClC1Z,EAAMwrB,OAAO6yV,eAAer+W,EAAMs+W,SAAUt+W,EAAMu+W,eAC3Cv+R,IAGf4zW,EAAUz3b,UAAUy4W,iBAAmB,SAAU50R,EAAM9/E,GACnD,IAAK7C,YAAkB6C,EAAK+zB,MAAM0hD,iBAAkB,CAChD,IAAI8J,EAAYx/E,KAAKw1b,SAASv1b,EAAK+zB,MAAM0hD,iBACzCqK,EAAK/rD,MAAMulZ,gBAAkB,IAAIzwC,GAAc,IAAItC,GAAShnT,EAAU1gD,EAAG0gD,EAAUs6K,EAAGt6K,EAAU73E,IAWpG,GATKvK,YAAkB6C,EAAK+zB,MAAMm3W,iBAC9BprT,EAAK/rD,MAAMigX,aAAej0Y,KAAK62b,uBAAuB52b,EAAK+zB,MAAMm3W,gBAEhE/tY,YAAkB6C,EAAK+zB,MAAMouZ,eAC9BriW,EAAK/rD,MAAMouZ,YAAcnib,EAAK+zB,MAAMouZ,aAEnChlb,YAAkB6C,EAAK+zB,MAAMo3W,qBAC9BrrT,EAAK/rD,MAAMigX,aAAej0Y,KAAK82b,qBAAqB72b,EAAK+zB,MAAMo3W,kBAAmBrrT,EAAK/rD,MAAMigX,gBAE5F72Y,YAAkB6C,EAAK+zB,MAAMknD,gBAAiB,CAC/C,IAAIA,EAAiBl7E,KAAKw1b,SAASv1b,EAAK+zB,MAAMknD,gBAC9C6E,EAAK/rD,MAAM0lZ,UAAY,IAAI5wC,GAAc,IAAItC,GAAStrT,EAAep8C,EAAGo8C,EAAe4+K,EAAG5+K,EAAevzE,IAE7G,IAAKvK,YAAkB6C,EAAK+zB,MAAMonD,cAAe,CAC7C,IAAIA,EAAep7E,KAAKw1b,SAASv1b,EAAK+zB,MAAMonD,cAC5C2E,EAAK/rD,MAAM6lZ,QAAU,IAAIxwC,GAAO,IAAI7C,GAASprT,EAAat8C,EAAGs8C,EAAa0+K,EAAG1+K,EAAazzE,IAM9F,GAJKvK,YAAkB6C,EAAK+zB,MAAM4hD,aAAgBx4E,YAAkB6C,EAAK+zB,MAAM6hD,WAAcz4E,YAAkB6C,EAAK+zB,MAAMirD,OACrH7hF,YAAkB6C,EAAK+zB,MAAMorD,SAAYhiF,YAAkB6C,EAAK+zB,MAAMsrD,YAAeliF,YAAkB6C,EAAK+zB,MAAM6uY,aACnH9iV,EAAK/rD,MAAM6oD,KAAO78E,KAAKg0Y,QAAQ/zY,KAE9B7C,YAAkB6C,EAAK+zB,MAAM20I,QAAS,CACvC,IAAIA,EAAS,IAAIsuQ,GACb1sY,EAActqC,EAAK+zB,MAAM20I,OAAOj5H,MAEhCA,EAAUtyC,YAAkBmtC,IAAuC,kBAAhBA,OAAoDvuC,EAAT,IAAduuC,EAEhForC,EAAQ,IAAI6wT,GAAS,IAAK,IAAK,KACnC,IAAKppY,YAAkB6C,EAAK+zB,MAAM20I,OAAOhzF,OAAQ,CAC7C,IAAIw+H,EAAcn0M,KAAKw1b,SAASv1b,EAAK+zB,MAAM20I,OAAOhzF,OAClDA,EAAQ,IAAI6wT,GAASryL,EAAYr1K,EAAGq1K,EAAY2lD,EAAG3lD,EAAYxsM,GAEnE,IAAI8iY,EAAM,IAAIpB,GAAO1zT,EAAOjmC,GAEvBtyC,YAAkB6C,EAAK+zB,MAAM20I,OAAO3tF,aACrCyvT,EAAIzvT,UAAYh7E,KAAKg4b,aAAa/3b,EAAK+zB,MAAM20I,OAAO3tF,YAExD2tF,EAAOn2I,IAAMi4W,EACb1qT,EAAK/rD,MAAM4rD,QAAU+oF,EAEpBvrK,YAAkB6C,EAAK+zB,MAAMg6W,mBAC9BjuT,EAAK/rD,MAAMigX,aAAe,IAAInJ,GAC9B/qT,EAAK/rD,MAAMigX,aAAajG,gBAAkB/tY,EAAK+zB,MAAMg6W,kBAW7D2lD,EAAUz3b,UAAU26b,uBAAyB,SAAU1yV,EAAWn5F,GAI9D,YAHehP,IAAXgP,IACAA,EAAS,IAAI8/X,IAET3mS,GACJ,IAAK,QACDn5F,EAAO+5R,UAAYy7F,GAAiB/jJ,MACpC,MACJ,IAAK,SACDzxO,EAAO+5R,UAAYy7F,GAAiBhkJ,OACpC,MACJ,IAAK,UACDxxO,EAAO+5R,UAAYy7F,GAAiBihC,QACpC,MACJ,IAAK,OACDz2Z,EAAO+5R,UAAYy7F,GAAiBjkJ,KAG5C,OAAOvxO,GAWX2ob,EAAUz3b,UAAU46b,qBAAuB,SAAU/wK,EAAe/6Q,EAAQm5F,GAKxE,YAJenoG,IAAXgP,IACAA,EAAS,IAAI8/X,GACb9/X,EAAShL,KAAK62b,uBAAuB1yV,EAAWn5F,IAE5C+6Q,GACJ,IAAK,SACD/6Q,EAAO60Z,cAAgBt/B,GAAqB5jJ,OAC5C,MACJ,IAAK,SACD3xO,EAAO60Z,cAAgBt/B,GAAqBu/B,OAC5C,MACJ,IAAK,MACD90Z,EAAO60Z,cAAgBt/B,GAAqB7jJ,IAGpD,OAAO1xO,GAEX2ob,EAAUz3b,UAAUm5b,cAAgB,SAAUz/W,GAC1C,OAAQA,GACJ,IAAK,aACD,OAAO,EACX,IAAK,UACD,OAAO,EACX,IAAK,SACD,OAAO,EACX,IAAK,eACD,OAAO,EACX,QACI,OAAO,IAInB+9W,EAAUz3b,UAAU83Y,QAAU,SAAUtpV,GACpC,GAAIA,EAAQmyB,KACR,OAAOnyB,EAAQmyB,KAEnB,IAAIhH,EAAaz4E,YAAkBstD,EAAQ12B,MAAM6hD,UAA+C,KAAR,IAAzBnrB,EAAQ12B,MAAM6hD,SACzED,EAAex4E,YAAkBstD,EAAQ12B,MAAM4hD,YACEwrT,GAAc+wC,WAA9Dnya,KAAKq1b,cAAc3qY,EAAQ12B,MAAM4hD,YAClC2lS,EAAY4lB,GAAa6O,QAa7B,OAZK5yY,YAAkBstD,EAAQ12B,MAAMirD,OAASv0B,EAAQ12B,MAAMirD,OACxDs8R,GAAa4lB,GAAajiT,OAEzB9hF,YAAkBstD,EAAQ12B,MAAMorD,SAAW10B,EAAQ12B,MAAMorD,SAC1Dm8R,GAAa4lB,GAAa9hT,SAEzBjiF,YAAkBstD,EAAQ12B,MAAMsrD,YAAc50B,EAAQ12B,MAAMsrD,YAC7Di8R,GAAa4lB,GAAa5hT,YAEzBniF,YAAkBstD,EAAQ12B,MAAM6uY,YAAcn4W,EAAQ12B,MAAM6uY,YAC7DtnD,GAAa4lB,GAAa+O,WAEvB,IAAI0lC,GAAgBhgW,EAAYC,EAAU0lS,IAErDo4E,EAAUz3b,UAAU47b,mBAAqB,SAAUr9W,GAC/C,OAAQA,GACJ,IAAK,aACD,OAAO,EACX,IAAK,aACD,OAAO,EACX,IAAK,aACD,OAAO,EACX,IAAK,aACD,OAAO,EACX,QACI,OAAO,IAGnBk5W,EAAUz3b,UAAUu7b,iBAAmB,SAAU/sY,EAAS1/C,GACtD,IAAK5N,YAAkBstD,EAAQ8xB,MAAO,CAClC,IAAI9sC,EAA6B,IAArBgb,EAAQ8xB,KAAK9sC,MACrBC,EAA+B,IAAtB+a,EAAQ8xB,KAAK7sC,OAE1B,GADA3kC,EAAS,IAAI8/X,GAAgBtK,GAAiBjkJ,KAAMgkJ,GAAqBu/B,SACpE1ia,YAAkBstD,EAAQ12B,MAAMunD,QACjC,OAAQ7wB,EAAQ12B,MAAMunD,QAClB,IAAK,QACDvwE,EAAO+5R,UAAYy7F,GAAiB/jJ,MACpC,MACJ,IAAK,SACDzxO,EAAO+5R,UAAYy7F,GAAiBhkJ,OACpC,MACJ,IAAK,UACDxxO,EAAO+5R,UAAYy7F,GAAiBihC,QACpC,MACJ,QACIz2Z,EAAO+5R,UAAYy7F,GAAiBjkJ,KAMhD,OAHKn/O,YAAkBstD,EAAQ12B,MAAMynD,UACjCzwE,EAAShL,KAAK82b,qBAAqBpsY,EAAQ12B,MAAMynD,OAAQzwE,IAEtD,CAAEA,OAAQA,EAAQwxE,KAAM,IAAI0hT,GAAMxuV,EAAOC,IAEpD,OAAO,MAEXgkZ,EAAUz3b,UAAUu4b,YAAc,SAAUrvX,GACxC,OAAQA,GACJ,IAAK,SACD,OAAO,IAAI84T,GAAM,IAAK,KAC1B,IAAK,OACD,OAAO,IAAIA,GAAM,IAAK,KAC1B,IAAK,QACD,OAAO,IAAIA,GAAM,IAAK,MAC1B,IAAK,KACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,KACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,KACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,KACD,OAAO,IAAIA,GAAM,IAAK,MAC1B,IAAK,KACD,OAAO,IAAIA,GAAM,IAAK,KAC1B,IAAK,KACD,OAAO,IAAIA,GAAM,IAAK,KAC1B,IAAK,KACD,OAAO,IAAIA,GAAM,IAAK,KAC1B,IAAK,KACD,OAAO,IAAIA,GAAM,IAAK,KAC1B,IAAK,KACD,OAAO,IAAIA,GAAM,IAAK,KAG1B,IAAK,KACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,KACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,KACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,KACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,KACD,OAAO,IAAIA,GAAM,IAAK,MAC1B,IAAK,KACD,OAAO,IAAIA,GAAM,IAAK,KAC1B,IAAK,QACD,OAAO,IAAIA,GAAM,IAAK,KAC1B,IAAK,QACD,OAAO,IAAIA,GAAM,IAAK,MAC1B,IAAK,QACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,QACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,QACD,OAAO,IAAIA,GAAM,KAAM,MAC3B,IAAK,OACD,OAAO,IAAIA,GAAM,IAAK,KAC1B,IAAK,aACD,OAAO,IAAIA,GAAM,IAAK,KAC1B,IAAK,cACD,OAAO,IAAIA,GAAM,IAAK,MAC1B,IAAK,SACD,OAAO,IAAIA,GAAM,KAAM,KAC3B,QACI,OAAO,IAAIA,GAAM,IAAK,OAGlCy1D,EAAUz3b,UAAU87b,aAAe,SAAUh9W,GACzC,OAAQA,GACJ,IAAK,OACD,OAAO,EACX,IAAK,MACD,OAAO,EACX,IAAK,UACD,OAAO,EACX,IAAK,aACD,OAAO,EACX,QACI,OAAO,IAGnB24W,EAAUz3b,UAAU67b,kBAAoB,SAAUrtY,GAC9C,IAAI+/U,EAAM,IAAIpB,GAAO,IAAI7C,GAAS,EAAG,EAAG,IACxC,IAAKppY,YAAkBstD,EAAQ12B,QAA4B,OAAlB02B,EAAQ12B,QAAmB52B,YAAkBstD,EAAQ12B,MAAM4mD,UAAW,CAC3G,IAAIA,EAAW56E,KAAKw1b,SAAS9qY,EAAQ12B,MAAM4mD,UAC3C6vT,EAAM,IAAIpB,GAAO,IAAI7C,GAAS5rT,EAAS97C,EAAG87C,EAASk/K,EAAGl/K,EAASjzE,IAEnE,OAAO8iY,GAEXkpD,EAAUz3b,UAAUs7b,oBAAsB,SAAU9sY,GAChD,IAAIu+U,EAAQ,KACZ,IAAK7rY,YAAkBstD,EAAQ12B,MAAMknD,gBAAiB,CAElD,IAAIy8W,EAAa33b,KAAKw1b,SAAS9qY,EAAQ12B,MAAMknD,gBAC7C+tT,EAAQ,IAAIH,GAAc,IAAItC,GAASmxD,EAAW74Z,EAAG64Z,EAAW79L,EAAG69L,EAAWhwb,IAElF,OAAOshY,GAEX0qD,EAAUz3b,UAAUs5b,SAAW,SAAUqD,GACrC,GAAY,OAARA,GAAwB,KAARA,GAA6B,IAAfA,EAAIh8b,OAClC,MAAM,IAAI+D,MAAM,2CAEpBi4b,EAAMA,EAAIzrb,UAAU,GACpB,IAAI0rb,EAAS3ib,SAAS0ib,EAAK,IAI3B,MAAO,CAAE/5Z,EAHAg6Z,GAAU,GAAM,IAGVh/L,EAFNg/L,GAAU,EAAK,IAEHnxb,EADJ,IAATmxb,IAGZnF,EAAUz3b,UAAUo5b,aAAe,SAAUt3W,GACzC,IAAIu9R,EAAY4lB,GAAa6O,QAa7B,OAZK5yY,YAAkB4gF,IAAUA,EAAMiB,OACnCs8R,GAAa4lB,GAAajiT,OAEzB9hF,YAAkB4gF,IAAUA,EAAMoB,SACnCm8R,GAAa4lB,GAAa9hT,SAEzBjiF,YAAkB4gF,IAAUA,EAAMsB,YACnCi8R,GAAa4lB,GAAa5hT,YAEzBniF,YAAkB4gF,IAAUA,EAAM6kV,YACnCtnD,GAAa4lB,GAAa+O,WAEvB30B,GAEXo4E,EAAUz3b,UAAUw5b,eAAiB,SAAU/sR,GAC3C,IAAI/oF,EAAU,IAAIq3V,GAClB,GAAK75a,YAAkBurK,GAkBnB/oF,EAAQptD,IAAM,IAAI62W,GAAO,IAAI7C,GAAS,IAAK,IAAK,UAlBpB,CAC5B,IAAIj8V,EAAco+H,EAAOj5H,MAErBA,EAAUtyC,YAAkBmtC,IAAuC,kBAAhBA,OAAiDvuC,EAAP,IAAduuC,EAE/EorC,EAAQ,IAAI6wT,GAAS,IAAK,IAAK,KACnC,IAAKppY,YAAkBurK,EAAOhzF,OAAQ,CAClC,IAAIw+H,EAAcn0M,KAAKw1b,SAAS7sR,EAAOhzF,OACvCA,EAAQ,IAAI6wT,GAASryL,EAAYr1K,EAAGq1K,EAAY2lD,EAAG3lD,EAAYxsM,GAEnE,IAAI8iY,EAAM,IAAIpB,GAAO1zT,EAAOjmC,GAEvBtyC,YAAkBurK,EAAO3tF,aAC1ByvT,EAAIzvT,UAAYh7E,KAAKg4b,aAAarvR,EAAO3tF,YAE7C4E,EAAQptD,IAAMi4W,EAKlB,OAAO7qT,GAEX+zW,EAAUz3b,UAAUif,QAAU,aAGvBw4a,EA53CoB,G,kBCdpBoF,GACD,aADCA,GAEG,cAFHA,GAGD,UAHCA,GAIC,YAJDA,GAKC,kBALDA,GAMC,YAQRC,GAAwB,WAOxB,SAASA,EAAOz4b,GACZP,KAAKi5b,QAAS,EACdj5b,KAAKk5b,UAAW,EAChBl5b,KAAKO,OAASA,EACVP,KAAKO,OAAO44B,cAGhBn5B,KAAK0kI,aAAe,IAAIqT,KAAmBx3I,GAC3CP,KAAKupB,oBA4uBT,OApuBAyva,EAAO98b,UAAUqsT,eAAiB,SAAUp8E,GACxC,IAAI9vH,OAAwBrgH,IAAVmwO,GAAiC,OAAVA,GAAkBA,EAAMtvO,QAAU,EACvEmD,KAAKO,OAAOmkE,aAAajgE,KAAI,SAAU8c,GAAK,OAAOA,EAAEi4C,SAA8B,kBAAV2yK,EAAsB,CAACA,GAASA,EAC7GnsO,KAAKm5b,WAAW98U,IAEpB28U,EAAO98b,UAAUqsG,QAAU,WACvB,IAAI6wV,EAAWp5b,KAAKO,OAAOmkE,aAAaxzC,QAAO,SAAUtpB,GAAK,OAAqB,IAAdA,EAAE2gG,WAClE9jG,KAAI,SAAUmD,GAAK,OAAOA,EAAE4xD,OAAS5xD,EAAEm1D,cACxCq8X,EAASv8b,OAAS,GAClBmD,KAAKuoT,eAAe6wI,GAEgB,SAApCp5b,KAAKO,OAAOk7I,eAAet+H,MAC3Bnd,KAAK0kI,aAAamU,mBAG1BmgT,EAAO98b,UAAUm9b,aAAe,SAAUltN,EAAO3xN,EAAOf,GACpD,IAEIosH,EACAqM,EACAonT,EAOAC,EACAC,EACAC,EAbAx/X,EAAOj6D,KAAKO,OACZ63I,EAAS,EAKTshT,EAAgBr9X,IAChBs9X,EAAet9X,IACfirP,EAAc,EACd7rT,EAAMge,GAAUzZ,KAAKO,OAAOwjT,oBAAoB53E,GAChDt3J,EAAc70E,KAAKO,OAAOipI,yBAAyB/tI,GAInDm+b,EAAqB55b,KAAKO,OAAO+jI,sBAAsB6nG,GACvDrpM,EAAOm3B,EAAKsK,oBAAsBtK,EAAK0qE,4BACvCn6D,EAAUvQ,EAAKwQ,yBAInB,GAHKrtE,YAAkB68D,EAAK4yO,sBACxBysJ,EAAcr/X,EAAK2nP,yBAEnB3nP,EAAKqK,eAAgB,CACrB,IAAInF,EAAMlF,EAAKqM,iBAAiB6lK,GAC5BhtK,EAAIyM,uBAAyBvP,KAC7BwpE,EAAc5rE,EAAK4tE,iBACnBqK,EAAej4E,EAAK++E,kBACpBugT,EAAkB1zT,EAAYviI,cAAc,kBAAoB7H,EAAM,MAAMm4C,cAAc3xC,WAAU,GACpGu3b,EAAmBtnT,EAAa1wI,iBAAiB,iBAAmBqzE,EAAc,GAAK,KACnFykX,IACAG,EAAkBH,EAAY93b,iBAAiB,iBAAmBqzE,EAAc,GAAK,OAGvD,YAA7B1V,EAAIyM,sBACTi6D,EAAc5rE,EAAK0vE,mBAAmBrmI,cAAc,IAAM+4D,KAAwBvrC,SAAS,GAC3FohH,EAAej4E,EAAKoN,aAAa/jE,cAAc,IAAM+4D,KAAyBvrC,SAAS,GACvFyoa,EAAkB1zT,EAAYviI,cAAc,kBAAoB7H,EAAM,MAAMm4C,cAAc3xC,WAAU,GACpGu3b,EAAmBtnT,EAAa1wI,iBAAiB,iBAAoBqzE,EAAc/xC,EAAQ,GAAK,KAC5Fw2Z,IAEAG,GADAH,EAAcr/X,EAAK4yO,mBAAmBvpS,cAAc,2BAA2BwtB,SAAS,IAC1DtvB,iBAAiB,iBAAoBqzE,EAAc/xC,EAAQ,GAAK,OAG7Fq8B,EAAIyM,uBAAyBvP,MAClCwpE,EAAc5rE,EAAK0vE,mBAAmBrmI,cAAc,0BAA0BwtB,SAAS,GACvFohH,EAAej4E,EAAKoN,aAAa/jE,cAAc,2BAA2BwtB,SAAS,GACnFyoa,EAAkB1zT,EAAYviI,cAAc,kBAAoB7H,EAAM,MAAMm4C,cAAc3xC,WAAU,GACpGu3b,EAAmBtnT,EAAa1wI,iBAAiB,iBAAoBqzE,GAAe/xC,EAAO0nC,GAAY,GAAK,KACxG8uX,IAEAG,GADAH,EAAcr/X,EAAK4yO,mBAAmBvpS,cAAc,2BAA2BwtB,SAAS,IAC1DtvB,iBAAiB,iBAAoBqzE,GAAe/xC,EAAO0nC,GAAY,GAAK,YAKlHq7D,EAAc5rE,EAAK4tE,iBACnBqK,EAAej4E,EAAK++E,kBACpBugT,EAAkB1zT,EAAYviI,cAAc,kBAAoB7H,EAAM,MAAMm4C,cAAc3xC,WAAU,GACpGu3b,EAAmBtnT,EAAa1wI,iBAAiB,iBAAmBqzE,EAAc,GAAK,0BACnFykX,IACAG,EAAkBH,EAAY93b,iBAAiB,iBAAmBqzE,EAAc,GAAK,2BAG7F,IAAIglX,EAAmB,GAAGx4b,MAAMC,KAAKukI,EAAYviI,cAAc,MAAM2rB,uBAAuB,uBAC5F,GAAI4qa,EAAiBh9b,OAAS,EAC1B,IAAK,IAAID,EAAI,EAAGA,EAAIi9b,EAAiBh9b,OAAQD,IACzC0qT,GAAeuyI,EAAiBj9b,GAAG65B,YAG3C,IAAIqja,EAAiB5nT,EAAa5uI,cAAc,yBAC5C4uI,EAAa5uI,cAAc,uBAC1BtD,KAAKO,OAAOusG,gBAAkB9sG,KAAKO,OAAOqkE,YAAck1X,IACzDxyI,GAAewyI,EAAerja,aAElC,IAAIsmC,EAAa,CAACw8X,GACdQ,EAAc,GACdC,EAAa,GACjB,GAAIV,EACA,IAAS18b,EAAI,EAAGA,EAAI68b,EAAgB58b,OAAQD,IACxCo9b,EAAWp9b,GAAK68b,EAAgB78b,GAAGqF,WAAU,GAGrD,IAASrF,EAAI,EAAGA,EAAI48b,EAAiB38b,OAAQD,IACzCm9b,EAAYn9b,GAAK48b,EAAiB58b,GAAGqF,WAAU,GAEnD,IAAIg4b,EAAUj6b,KAAKmmI,YAAYN,EAAa9oE,EA9EzB,gBA+Efm9X,EAAWl6b,KAAKmmI,YAAY+L,EAAc6nT,EAAaL,GACvDS,EAAU,KACVH,EAAWn9b,SACXs9b,EAAUn6b,KAAKmmI,YAAYmzT,EAAaU,EAAYL,IAExD,IAAIS,EAAgBngY,EAAKyK,aAAak1X,GAClClqZ,EAAQ0qZ,EAAc1qZ,MAAQ/sC,YAAW4E,KAAK8L,IAAI4mb,EAASC,EAAUC,IACrEE,EAAcD,EAAc1/S,UAAY3hI,WAAWqhb,EAAc1/S,SAASvtI,YAO9E,GANIgJ,SAASu5B,EAAO,IAAM2qZ,IACtBD,EAAc1qZ,MAAQ2qZ,GAE1Br6b,KAAK0kI,aAAauT,eAAeh+E,EAAKyK,aAAak1X,KAGpC,IAFF3/X,EAAKyK,aAAah7C,MAAK,SAAUnI,GAAK,OAAmB,OAAZA,EAAEmuB,YACzC1zC,IAAZulB,EAAEmuB,OAAuBnuB,EAAEmuB,MAAM7yC,QAAU,KAE9C,KAAImE,EAAUi5D,EAAKyK,aACnB,IAAS9nE,EAAI,EAAGA,EAAIoE,EAAQnE,OAAQD,IAC5BoE,EAAQpE,GAAGsgE,UACXk7E,GAAkBr/H,WAAW/X,EAAQpE,GAAG8yC,QAIpD,IAAI4qZ,EAAiBliT,EAASkvK,EAC1BlvK,EAAS,IAAMn+E,EAAKqK,kBAChBtkE,KAAKO,OAAOusG,gBAAkB9sG,KAAKO,OAAOqkE,YAC1C5kE,KAAK0kI,aAAauT,eAAe,IAAIp7E,KAAO,CAAEntB,MAAO,UAEjB,SAApC1vC,KAAKO,OAAOk7I,eAAet+H,OAC3Bm9a,EAAiB,QAErBz0T,EAAY7xG,MAAM0b,MAAQ/sC,YAAW23b,GACrCpoT,EAAal+G,MAAM0b,MAAQ/sC,YAAW23b,GACjCl9b,YAAkBk8b,KACnBA,EAAYtla,MAAM0b,MAAQ/sC,YAAW23b,KAG7C,IAAIC,EAAa10T,EAAYpvG,YACTwjC,EAAKoN,aAAa70B,YACnB+nZ,GACf10T,EAAY7vG,UAAUjN,IAAI,iBAC1BmpH,EAAal8G,UAAUjN,IAAI,mBAG3B88G,EAAY7vG,UAAUvM,OAAO,iBAC7ByoH,EAAal8G,UAAUvM,OAAO,kBAE7BrsB,YAAkBk8b,IACnBA,EAAYtja,UAAUjN,IAAI,kBASlCiwa,EAAO98b,UAAUif,QAAU,WACvB,IAAI4yR,EAAc/tS,KAAKO,OAAOS,QACzB+sS,IAAiBA,EAAYzqS,cAAc,IAAM+4D,MAAyB0xO,EAAYzqS,cAAc,IAAM+4D,QAG/Gr8D,KAAK0kI,aAAe,KACpB1kI,KAAK61C,eACL71C,KAAK2pB,wBAQTqva,EAAO98b,UAAU2+B,cAAgB,WAC7B,MAAO,UAEXm+Z,EAAO98b,UAAUi9b,WAAa,SAAUhtN,GACpC,IAAK,IAAIvvO,EAAI,EAAGA,EAAIuvO,EAAMtvO,OAAQD,IAAK,CACnC,IAAI45E,EAAY21J,EAAMvvO,GAClBi4E,EAAc70E,KAAKO,OAAO+jI,sBAAsB9tD,GAChD/c,EAASz5D,KAAKO,OAAOmkE,aAAamQ,GAClCA,GAAe,IAAMz3E,YAAkBq8D,KAA8B,IAAnBA,EAAOyD,SACzDl9D,KAAKq5b,aAAa7iX,EAAW3B,KAazCmkX,EAAO98b,UAAUiqI,YAAc,SAAUx7E,EAAOp4C,EAAMwjF,GAClD,IAAIi0N,EAAahqT,KAAKO,OAAOY,cAAc,OAC3C6oT,EAAW37R,UAAYruB,KAAKO,OAAOS,QAAQqtB,UAC3C27R,EAAWh2R,MAAM2qC,QAAU,4DAC3B,IAAIsrP,EAAWjqT,KAAKO,OAAOY,cAAc,OACzC8oT,EAAS57R,UAAY0nE,EACrB,IAAIm0N,EAAUlqT,KAAKO,OAAOY,cAAc,SACxC+oT,EAAQ77R,UAAYs8B,EAAMt8B,UAC1B67R,EAAQl0R,UAAUjN,IAAI,iBACtBmhS,EAAQl2R,MAAM2qC,QAAU,iCAExB,IADA,IAAIwrP,EAAOnqT,KAAKO,OAAOY,cAAc,MAC5BvE,EAAI,EAAGA,EAAI2V,EAAK1V,OAAQD,IAAK,CAClC,IAAI6wE,EAAK08O,EAAKloT,YACdwrE,EAAGp/C,UAAYs8B,EAAMrnD,cAAc,MAAM+qB,UACzCo/C,EAAGzrE,YAAYuQ,EAAK3V,IACpBstT,EAAQloT,YAAYyrE,GAExBw8O,EAASjoT,YAAYkoT,GACrBF,EAAWhoT,YAAYioT,GACvBzpT,SAASgiC,KAAKxgC,YAAYgoT,GAC1B,IAAIwwI,EAAmBtwI,EAAQ7nR,wBAAwBqN,MAEvD,OADAlvC,SAASgiC,KAAKtL,YAAY8yR,GACnBziT,KAAKu3D,KAAK07X,IAMrBxB,EAAO98b,UAAUqtB,iBAAmB,WAC5BvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAO+Y,GAAGyN,KAAwB/mB,KAAKinV,cAAejnV,MAC3DA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAKk0C,WAAYl0C,MACnDA,KAAKO,OAAO+Y,GAAGyN,KAAqB/mB,KAAKuoG,QAASvoG,MAClDA,KAAKO,OAAO+Y,GAAGyN,KAAwB/mB,KAAKinV,cAAejnV,QAM/Dg5b,EAAO98b,UAAUytB,oBAAsB,WAC/B3pB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAOsZ,IAAIkN,KAAwB/mB,KAAKinV,eAC7CjnV,KAAKO,OAAOsZ,IAAIkN,KAAmB/mB,KAAKk0C,YACxCl0C,KAAKO,OAAOsZ,IAAIkN,KAAwB/mB,KAAKinV,iBAMjD+xG,EAAO98b,UAAUwzB,OAAS,WACtB1vB,KAAK61C,eACL71C,KAAKk0C,aACLl0C,KAAKy6b,oBAETzB,EAAO98b,UAAU+qV,cAAgB,WAE7B,IADA,IAAIjmV,EAAUhB,KAAK06b,oBACV99b,EAAI,EAAGA,EAAIoE,EAAQnE,OAAQD,IAC5BoE,EAAQpE,GAAGg3C,cAAchE,aAAe,IACxC5uC,EAAQpE,GAAGo3B,MAAM2b,OAAS3uC,EAAQpE,GAAGg3C,cAAchE,aAAe,MAG1E5vC,KAAKy6b,oBAETzB,EAAO98b,UAAUg4C,WAAa,WAC1BtrB,IAAaG,IAAI/oB,KAAKO,OAAOopI,mBAAoBtjH,IAAQmC,gBAAiBxoB,KAAK26b,iBAAkB36b,MACjG4oB,IAAaG,IAAI/oB,KAAKO,OAAOopI,mBAAoB5iH,KAAiB/mB,KAAK46b,YAAa56b,OAExFg5b,EAAO98b,UAAU25C,aAAe,WAC5BjtB,IAAaa,OAAOzpB,KAAKO,OAAOopI,mBAAoBtjH,IAAQmC,gBAAiBxoB,KAAK26b,kBAClF/xa,IAAaa,OAAOzpB,KAAKO,OAAOopI,mBAAoB5iH,KAAiB/mB,KAAK46b,cAE9E5B,EAAO98b,UAAUw+b,kBAAoB,WACjC,OAAO16b,KAAKO,OAAO+jE,eACf,GAAGjjE,MAAMC,KAAKtB,KAAKO,OAAOopI,mBAAmB16G,uBAAuB8pa,KAClE,GAAG13b,MAAMC,KAAKtB,KAAKO,OAAOsnI,iBAAiB54G,uBAAuB8pa,MAE5EC,EAAO98b,UAAUu+b,iBAAmB,WAEhC,IADA,IAAIz5b,EAAU,GAAGK,MAAMC,KAAKtB,KAAKO,OAAOsnI,iBAAiB54G,uBAAuB8pa,KACvEn8b,EAAI,EAAGA,EAAIoE,EAAQnE,OAAQD,IAChCoE,EAAQpE,GAAGo3B,MAAM2b,OAAS3uC,EAAQpE,GAAGg3C,cAAchE,aAAe,MAG1EopZ,EAAO98b,UAAU0+b,YAAc,SAAU/5b,GACrC,GAAIA,EAAEo8B,OAAOjH,UAAUzD,SAAS,cAAe,CAC3C,IAAI4sC,EAAMn/D,KAAK66b,gBAAgBh6b,GAC/B,GAAIs+D,EAAIpF,QACJ,OAEJ/5D,KAAKq5b,aAAal6X,EAAI3F,MAAOx5D,KAAKO,OAAOipI,yBAAyBrqE,EAAI1jE,KAAM0jE,EAAI1jE,KACnEm8B,YAAQ/2B,EAAEo8B,OAAQ87Z,IACxB/ia,UAAUjN,IAAI,eAG7Biwa,EAAO98b,UAAUy+b,iBAAmB,SAAU95b,GAC1C,IAAK29D,IAAO8P,MAIR,OAHA9P,IAAO8P,MAAQluE,YAAW,WACtBo+D,IAAO8P,MAAQ,OAChB,KACItuE,KAAKouD,YAAYvtD,GAGxBV,aAAaq+D,IAAO8P,OACpB9P,IAAO8P,MAAQ,KACftuE,KAAK46b,YAAY/5b,IAGzBm4b,EAAO98b,UAAUkyD,YAAc,SAAUvtD,GACrC,IAAId,EAAQC,KACZ,GAAIa,EAAEo8B,OAAOjH,UAAUzD,SAAS,cAAe,CAC3C,IAAKvyB,KAAKurB,OAAQ,CACd,GAAiC,IAA7BvrB,KAAKy+D,oBAA2B,CAChC,GAAIz+D,KAAKO,OAAO0nG,cACZ,IAAK,IAAIrrG,EAAI,EAAGA,EAAIoD,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAQD,IAC1DoD,KAAK0kI,aAAauT,eAAe,IAAIp7E,KAAO,CAAEntB,MAAO,SAAW9yC,GAGxE,IAAK,IAAIoB,EAAK,EAAGuF,EAAKvD,KAAK86b,qBAAsB98b,EAAKuF,EAAG1G,OAAQmB,IAAM,CACnE,IAAImhE,EAAM57D,EAAGvF,GACbgC,KAAK0kI,aAAauT,eAAe94E,GAErCn/D,KAAK0kI,aAAamU,kBAItB,GAFA74I,KAAK+6b,4BACL/6b,KAAKgB,QAAUH,EAAEo8B,OACbj9B,KAAKO,OAAOklT,0BAA2B,CACvC,IAAIu1I,EAASh7b,KAAKO,OAAOosE,yBACrBsuX,EAASj7b,KAAKO,OAAOkiT,4BACrBy4I,EAAUl7b,KAAKO,OAAOusE,6BACtB8jP,EAAM,GAAGvvT,MAAMC,KAAK05b,EAAOx5b,iBAAiB,OAC5C25b,EAAM,GAAG95b,MAAMC,KAAK25b,EAAOz5b,iBAAiB,OAC5CipV,EAAO,GACPzqV,KAAKO,OAAO2pE,kBAAoB7N,KAAsB6+X,IACtDzwG,EAAO,GAAGppV,MAAMC,KAAK45b,EAAQ15b,iBAAiB,QAElD,IAAI3C,EAAU,SAAUjC,GACpBmuE,YAAkBjhC,EAAOvpC,QAAQ,SAAU+pE,EAAW1f,GAC9C7qD,EAAMQ,OAAOg+D,UACb3T,EAAIhuD,GAAGo3B,MAAM2b,OAAS5vC,EAAMQ,OAAOg+D,UAAY,KAG/C3T,EAAIhuD,GAAGo3B,MAAM0sG,eAAe,YAEjC,CAACy6T,EAAKvqI,EAAK65B,KAEd3gT,EAAS9pC,KACb,IAASpD,EAAI,EAAGA,EAAIg0T,EAAI/zT,OAAQD,IAC5BiC,EAAQjC,GAGhBoD,KAAKo7b,mBAAqBp7b,KAAKO,OAAOS,QAAQqhC,wBAAwBqN,MACtE1vC,KAAKq7b,eACLr7b,KAAKy5D,OAASz5D,KAAK66b,gBAAgBh6b,GACnCb,KAAKuiC,MAAQviC,KAAKs7b,UAAUz6b,GACxBb,KAAKy5D,OAAOmS,uBAAyBvP,IACjCr8D,KAAKO,OAAOomC,UACZ3mC,KAAKu7b,SAAWv7b,KAAKy5D,OAAO8+E,SAAWx/H,WAAW/Y,KAAKy5D,OAAO8+E,SAASprI,YAAc,GAC/E4L,WAAW3b,YAAkB4C,KAAKy5D,OAAO/pB,OAAS,GAAK1vC,KAAKy5D,OAAO/pB,MAAMviC,YAG/EnN,KAAKu7b,QAAUxib,WAAW3b,YAAkB4C,KAAKy5D,OAAO/pB,OAAS,GAAK1vC,KAAKy5D,OAAO/pB,MAAMviC,aACjFnN,KAAKy5D,OAAO8+E,SAAWx/H,WAAW/Y,KAAKy5D,OAAO8+E,SAASprI,YAAc,GAG3EnN,KAAKO,OAAOomC,UACjB3mC,KAAKu7b,QAAUxib,WAAW/Y,KAAKy5D,OAAO/pB,MAAMviC,aACrCnN,KAAKy5D,OAAO8+E,SAAWx/H,WAAW/Y,KAAKy5D,OAAO8+E,SAASprI,YAAc,GAG5EnN,KAAKu7b,SAAWv7b,KAAKy5D,OAAO8+E,SAAWx/H,WAAW/Y,KAAKy5D,OAAO8+E,SAASprI,YAAc,GAC/E4L,WAAW3b,YAAkB4C,KAAKy5D,OAAO/pB,OAAS,GAAK1vC,KAAKy5D,OAAO/pB,MAAMviC,YAEnFnN,KAAKu7b,SAAWv7b,KAAKuiC,MAEzB,GAAIlc,IAAQa,WAAalnB,KAAKurB,OAAOyK,UAAUzD,SAASwma,IACpD/4b,KAAKurB,OAAOyK,UAAUjN,IAAIgwa,IAC1Bnwa,IAAaG,IAAIvoB,SAAU6lB,IAAQmC,gBAAiBxoB,KAAKw7b,aAAcx7b,MACvE4oB,IAAaG,IAAI/oB,KAAKurB,OAAQlF,IAAQmC,gBAAiBxoB,KAAKouD,YAAapuD,UAExE,CACD,IAAIC,EAAO,CAAEY,EAAGA,EAAG44D,OAAQz5D,KAAKy5D,QAChCz5D,KAAKO,OAAOwpB,QAAQhD,KAAoB9mB,GAAM,SAAUA,GAChDA,EAAK8iB,QAAUhjB,EAAMQ,OAAO8hG,OAC5BtiG,EAAM07b,sBAGV7ya,IAAaG,IAAIvoB,SAAU6lB,IAAQqC,cAAe3oB,EAAM27b,UAAW37b,GACnE6oB,IAAaG,IAAIhpB,EAAMQ,OAAOS,QAASqlB,IAAQoC,eAAgB1oB,EAAMulF,SAAUvlF,GAC/EA,EAAM47b,aAAa,cAKnC3C,EAAO98b,UAAUu/b,mBAAqB,SAAUG,GACxCA,IACAhza,IAAaa,OAAOzpB,KAAKO,OAAOS,QAASqlB,IAAQoC,eAAgBzoB,KAAKslF,UACtE18D,IAAaa,OAAOjpB,SAAU6lB,IAAQqC,cAAe1oB,KAAK07b,WAC1D17b,KAAK27b,aAAa,WAElBt1a,IAAQa,WACR0B,IAAaa,OAAOjpB,SAAU6lB,IAAQmC,gBAAiBxoB,KAAKw7b,cAC5D5ya,IAAaa,OAAOzpB,KAAKurB,OAAQlF,IAAQmC,gBAAiBxoB,KAAKouD,cAEnEv9B,YAAO7wB,KAAKurB,QACZvrB,KAAKknC,WAET8xZ,EAAO98b,UAAUy8I,SAAW,SAAUjpG,EAAO6oG,EAAUmC,GACnD,OAAInC,GAAY7oG,EAAQ6oG,EACbA,EAEDmC,GAAYhrG,EAAQgrG,EACnBA,EAGAhrG,GAGfspZ,EAAO98b,UAAU2/b,sBAAwB,WAErC,IADA,IAAI/la,EAAW,GAAGz0B,MAAMC,KAAKtB,KAAKO,OAAOopI,mBAAmB16G,uBAAuB,eAC1EryB,EAAI,EAAGA,EAAIk5B,EAASj5B,OAAQD,IACjCk5B,EAASl5B,GAAGo3B,MAAM2b,OAAS3vC,KAAKgB,QAAQ4yC,cAAchE,aAAe,MAG7EopZ,EAAO98b,UAAU4/b,WAAa,SAAUriY,EAAQsiY,GAC5C,MAAO,CACHrsZ,MAAO32B,WAAW3b,YAAkB4C,KAAK0kI,aAAaiU,SAASl/E,KAAmD,SAAvCz5D,KAAK0kI,aAAaiU,SAASl/E,GAAqB,IACrHz5D,KAAK0kI,aAAaiU,SAASl/E,GAAQtsD,YAAc4ub,EACvDxjT,SAAU9+E,EAAO8+E,SAAWx/H,WAAW0gD,EAAO8+E,SAASprI,YAAc,KACrEutI,SAAUjhF,EAAOihF,SAAW3hI,WAAW0gD,EAAOihF,SAASvtI,YAAc,OAG7E6rb,EAAO98b,UAAUopF,SAAW,SAAUzkF,GAClC,IAAIzD,YAAkB4C,KAAKy5D,QAA3B,CAGA,IAAIhjC,EAAc,EACdr5B,YAAkB4C,KAAKy5D,UACvBhjC,EAAcknC,aAAa39D,KAAKgB,QAAS,MAAMy1B,aAE/Cz2B,KAAKO,OAAO6pI,gBACZpqI,KAAK67b,wBACL77b,KAAKg8b,mBAET,IAAIz5Z,EAAQviC,KAAKs7b,UAAUz6b,GACvBk7b,EAAY/7b,KAAKO,OAAOomC,YAAcpE,EAAQviC,KAAKuiC,OAAUA,EAAQviC,KAAKuiC,MAC1EviC,KAAKy5D,OAAOmS,uBAAyBvP,MACrC0/X,EAAY/7b,KAAKO,OAAOomC,UAAapE,EAAQviC,KAAKuiC,MAAUviC,KAAKuiC,MAAQA,GAE7E,IAAI8oH,EAAUrrJ,KAAK87b,WAAW97b,KAAKy5D,OAAQsiY,GACtC1wS,EAAQ37G,QACT27G,EAAQ37G,MAAQ9X,YAAQ53B,KAAKgB,QAAS,MAAMy1B,aAEhD,IAAIiZ,EAAQ1vC,KAAK24I,SAAS0S,EAAQ37G,MAAO27G,EAAQ9S,SAAU8S,EAAQ3Q,UAenE,GAdA16I,KAAKO,OAAOsuJ,IAAI,iBAAkB,CAAEp1F,OAAQz5D,KAAKy5D,OAAQ/pB,MAAOA,IAC5D1vC,KAAKy5D,OAAOmS,uBAAyBvP,MAChCr8D,KAAKO,OAAOomC,WAAa3mC,KAAKu7b,SAAWh5Z,IAAYviC,KAAKO,OAAOomC,WAAa3mC,KAAKu7b,SAAWh5Z,KAC/FmN,EAAQ1vC,KAAKy5D,OAAO8+E,SAAWx/H,WAAW/Y,KAAKy5D,OAAO8+E,SAASprI,YAAc,GAC7EnN,KAAKuiC,MAAQA,EAAQviC,KAAKu7b,UAG7Bv7b,KAAKy5D,OAAOmS,uBAAyBvP,OAChCr8D,KAAKO,OAAOomC,WAAa3mC,KAAKu7b,SAAWh5Z,GAAWviC,KAAKO,OAAOomC,WAAa3mC,KAAKu7b,SAAWh5Z,IAC/FviC,KAAKy5D,OAAOmS,uBAAyBvP,MAA0Br8D,KAAKO,OAAOomC,WAAa3mC,KAAKu7b,SAAWh5Z,IACnGviC,KAAKO,OAAOomC,WAAa3mC,KAAKu7b,SAAWh5Z,MAClDmN,EAAQ1vC,KAAKy5D,OAAO8+E,SAAWx/H,WAAW/Y,KAAKy5D,OAAO8+E,SAASprI,YAAc,GAC7EnN,KAAKuiC,MAAQA,EAAQviC,KAAKu7b,SAE1B7rZ,IAAU32B,WAAW3b,YAAkB4C,KAAKy5D,OAAO/pB,QAAgC,SAAtB1vC,KAAKy5D,OAAO/pB,MACzEjZ,EAAYtpB,WAAanN,KAAKy5D,OAAO/pB,MAAMviC,YAAa,CACxDnN,KAAKuiC,MAAQA,EACbviC,KAAKy5D,OAAO/pB,MAAQ/sC,YAAW+sC,GAC/B,IAAIzvC,EAAO,CACPY,EAAGA,EACH44D,OAAQz5D,KAAKy5D,QAGjB,GADAz5D,KAAKO,OAAOwpB,QAAQhD,KAAiB9mB,GACjCA,EAAK8iB,OAEL,YADA/iB,KAAKy7b,oBAAmB,GAG5B,IAAI1hY,EAAU,CAAC/5D,KAAKy5D,QAChBwiY,EAAe,CAACj8b,KAAKy5D,QACrBz5D,KAAKy5D,OAAOM,UACZA,EAAU/5D,KAAKk8b,cAAcl8b,KAAKy5D,OAAQ,IAC1CM,EAAU/5D,KAAKm8b,qBAAqBpiY,GAAS,EAAOgiY,GACpDE,EAAej8b,KAAKm8b,qBAAqBpiY,GAAS,EAAMgiY,IAE5D,IAAK,IAAI/9b,EAAK,EAAGo+b,EAAiBH,EAAcj+b,EAAKo+b,EAAev/b,OAAQmB,IAAM,CAC9E,IAAImhE,EAAMi9X,EAAep+b,GACzBgC,KAAK0kI,aAAauT,eAAe94E,EAAK,KAAM,UAEhDn/D,KAAKq8b,eAETr8b,KAAKk5b,UAAW,IAEpBF,EAAO98b,UAAUigc,qBAAuB,SAAUpiY,EAASuiY,EAAUP,GAEjE,IADA,IAAIE,EAAe,GACVj+b,EAAK,EAAG28I,EAAY5gF,EAAS/7D,EAAK28I,EAAU99I,OAAQmB,IAAM,CAG/D,IAFA,IAAImhE,EAAMw7E,EAAU38I,GAChB8sb,EAAa,EACRlub,EAAI,EAAGA,EAAIm9D,EAAQl9D,OAAQD,IAChCkub,GAAc/xa,WAAWghD,EAAQn9D,GAAG8yC,MAAMviC,YAE9C,IAAIk+I,EAAUrrJ,KAAK87b,WAAW38X,EAAMpmD,WAAWomD,EAAIzvB,OAAUqsZ,EAAYjR,GACrE0D,EAAWxub,KAAK24I,SAAS0S,EAAQ37G,MAAO27G,EAAQ9S,SAAU8S,EAAQ3Q,UACjE8zS,IAAaz1a,WAAWomD,EAAIzvB,MAAMviC,cAC/Bmvb,IACAn9X,EAAIzvB,MAAQ/sC,YAAW6rb,EAAW,EAAI,EAAIA,IAE9CyN,EAAar6b,KAAKu9D,IAG1B,OAAO88X,GAEXjD,EAAO98b,UAAUggc,cAAgB,SAAUziY,EAAQ8iY,GAC/C,IAAK,IAAIv+b,EAAK,EAAGuF,EAAKk2D,EAAOM,QAAS/7D,EAAKuF,EAAG1G,OAAQmB,IAAM,CACxD,IAAImhE,EAAM57D,EAAGvF,IACO,IAAhBmhE,EAAIjC,SAAqBiC,EAAI4oC,gBACzB5oC,EAAIpF,QACJ/5D,KAAKk8b,cAAc/8X,EAAKo9X,GAGxBA,EAAW36b,KAAKu9D,IAI5B,OAAOo9X,GAEXvD,EAAO98b,UAAUw/b,UAAY,SAAU76b,GACnC,GAAKb,KAAKurB,SAAUvrB,KAAKO,OAAO44B,YAAhC,CAGAvQ,IAAaa,OAAOzpB,KAAKO,OAAOS,QAASqlB,IAAQoC,eAAgBzoB,KAAKslF,UACtE18D,IAAaa,OAAOjpB,SAAU6lB,IAAQqC,cAAe1oB,KAAK07b,WAC1D17b,KAAK27b,aAAa,UAClB9qa,YAAO7wB,KAAKurB,QACZ,IAAItrB,EAAO,CAAEY,EAAGA,EAAG44D,OAAQz5D,KAAKy5D,QAC5B/O,EAAU1qD,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KACvDosT,EAAS/9T,EAAQpnD,cAAc,IAAM+4D,KAA2B3R,EAAQpnD,cAAc,IAAM+4D,KAA2B3R,EACvH+9T,EAAOh2U,aAAeg2U,EAAOtnO,eAC7BnhJ,KAAKO,OAAO4kO,aAAawhE,aACzB8hF,EAAOz0V,MAAMumB,UAAY,UAE7Bv6C,KAAKO,OAAOwpB,QAAQhD,KAAmB9mB,GACvC23B,YAAQ53B,KAAKgB,QAAS,iBAAiBg1B,UAAUjN,IAAI,aACjD40C,aAAa39D,KAAKgB,QAAS,kBAC3BhB,KAAK0oV,oBAAqB,EAG1B1oV,KAAK0oV,oBAAqB,EAE1B1oV,KAAKO,OAAO+jE,gBACZtkE,KAAKO,OAAOyZ,OAAO+M,KAAqB,CAAE2lH,KAAM,aAEhD1sI,KAAKO,OAAO6pI,gBACZpqI,KAAK67b,wBACL77b,KAAKO,OAAOyZ,OAAO+M,KAAwB,CAAE2lH,KAAM,cAEvD1sI,KAAKknC,UACLlnC,KAAKw8b,eAAe37b,GACpBb,KAAKk5b,UAAW,IAEpBF,EAAO98b,UAAUo/b,UAAY,SAAUz6b,GACnC,OAAIA,EAAE46M,SAAW56M,EAAE46M,QAAQ5+M,OAChBgE,EAAE46M,QAAQ,GAAGl5K,MAGb1hC,EAAE0hC,OAGjBy2Z,EAAO98b,UAAU4+b,mBAAqB,WAElC,IADA,IAAI/gY,EAAU/5D,KAAKO,OAAOmkE,aACjB1mE,EAAK,EAAGuF,EAAK,GAAGlC,MAAMjF,MAAM4D,KAAKO,OAAOopI,mBAAmBnoI,iBAAiB,oBAAqBxD,EAAKuF,EAAG1G,OAAQmB,IAEtH,IADA,IAAIszB,EAAM/tB,EAAGvF,GACJ+2B,EAAK,EAAGm8H,EAAYn3F,EAAShlC,EAAKm8H,EAAUr0J,OAAQk4B,IAAM,CAC/D,IAAI0kC,EAASy3F,EAAUn8H,GACvB,GAAIzD,EAAIhuB,cAAc,mBAClBguB,EAAIhuB,cAAc,kBAAkB6rB,aAAa,kBAAoBsqC,EAAOh+D,KAAOg+D,EAAOyD,QAAS,CACnGzD,EAAO/pB,MAAQpe,EAAI+Q,wBAAwBqN,MAC3C,OAIZ,OAAOqqB,GAEXi/X,EAAO98b,UAAU6+b,0BAA4B,WACzC,IAAK,IAAI/8b,EAAK,EAAGuF,EAAKvD,KAAKO,OAAOujT,kBAAkB9jT,KAAKO,OAAOw5D,SAAU/7D,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5F,IAAImjT,EAAgB59S,EAAGvF,GACvBmjT,EAAczxQ,MAAQ1vC,KAAKy8b,gBAAgBt7I,EAAe,KAGlE63I,EAAO98b,UAAUugc,gBAAkB,SAAUhjY,EAAQ/pB,GACjD,IAAK,IAAI1xC,EAAK,EAAGuF,EAAKk2D,EAAOM,QAAS/7D,EAAKuF,EAAG1G,OAAQmB,IAAM,CACxD,IAAImhE,EAAM57D,EAAGvF,IACO,IAAhBmhE,EAAIjC,UACAiC,EAAIpF,QACJ/5D,KAAKy8b,gBAAgBt9X,EAAKzvB,GAG1BA,GAASyvB,EAAIzvB,OAIzB,OAAOA,GAEXspZ,EAAO98b,UAAU2+b,gBAAkB,SAAUh6b,GACzC,IAAIk/E,EAAOnoD,YAAQ/2B,EAAEo8B,OAAQ87Z,IAEzBt9b,GADJskF,EAAOA,EAAKz8E,cAAc,qBAAuBy8E,EAAKz8E,cAAc,4BACrD6rB,aAAa,gBAC5B,OAAOnvB,KAAKO,OAAO6jI,eAAe3oI,IAEtCu9b,EAAO98b,UAAUy/b,aAAe,SAAU71Z,GACtC,IAAIk7C,EAAa,GAAG3/E,MAAMC,KAAKtB,KAAKO,OAAOopI,mBAAmBnoI,iBAAiB,OAC/Ew/E,EAAWp/E,KAAK5B,KAAKO,OAAOS,SAC5B,IAAK,IAAIhD,EAAK,EAAG0+b,EAAe17W,EAAYhjF,EAAK0+b,EAAa7/b,OAAQmB,IAAM,CAC9D0+b,EAAa1+b,GACnBg4B,UAAU8P,GAAQizZ,MAG9BC,EAAO98b,UAAUgrC,QAAU,WACvBlnC,KAAKy5D,OAAS,KACdz5D,KAAKuiC,MAAQ,KACbviC,KAAKgB,QAAU,KACfhB,KAAKurB,OAAS,MAElByta,EAAO98b,UAAUm/b,aAAe,WAC5Br7b,KAAKurB,OAASvrB,KAAKO,OAAOY,cAAc,MAAO,CAC3CktB,UAAW0qa,KAEf/4b,KAAKO,OAAOS,QAAQgB,YAAYhC,KAAKurB,QACrCvrB,KAAKg8b,mBAEThD,EAAO98b,UAAU8/b,gBAAkB,WAC/B,IAAI33X,EAAWrkE,KAAKO,OAAO+jE,eACvB30B,EAAS00B,EAAWrkE,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KAAkBzsB,aACjF5vC,KAAKO,OAAO8mE,aAAaz3B,aAAe5vC,KAAKy+D,oBAC/CvuB,EAAOtY,YAAQ53B,KAAKgB,QAAS+3b,IAC7BtrX,EAAK,GAAGpsE,MAAMC,KAAKtB,KAAKO,OAAOopI,mBAAmBnoI,iBAAiB,OACnEuhC,EAAQ/iC,KAAKO,OAAOmqE,6BACpBrG,IAEIoJ,EADA9P,aAAaztB,EAAMmsB,KACd,GAAGh7D,MAAMC,KAAKtB,KAAKO,OAAOopI,mBAAmBrmI,cAAc,IAAM+4D,KAAwB76D,iBAAiB,OAE1GuhC,GAAS46B,aAAaztB,EAAM,yBAC5B,GAAG7uC,MAAMC,KAAKtB,KAAKO,OAAOopI,mBAAmBrmI,cAAc,0BAA0B9B,iBAAiB,OAGtG,GAAGH,MAAMC,KAAKtB,KAAKO,OAAOopI,mBAAmBrmI,cAAc,yBAAyB9B,iBAAiB,QAGlH,IAAK,IAAI5E,EAAI6wE,EAAGtvE,QAAQ+xC,EAAK0D,eAAgBh3C,EAAI6wE,EAAG5wE,QAAUD,GAAK,EAAGA,IAClE+yC,GAAU89B,EAAG7wE,GAAGgzC,aAEpB,IAAIj6B,EAAM3V,KAAK28b,QAAQzsZ,GACnBytB,aAAaztB,EAAM,yBACnBv6B,EAAImtB,MAAS9iC,KAAKO,OAAOomC,UAAYuJ,EAAKzZ,YAAc,GAAI,EAG5D9gB,EAAImtB,MAAS9iC,KAAKO,OAAOomC,WAAY,EAAQuJ,EAAKzZ,YAAc,EAEpEz2B,KAAKurB,OAAOyI,MAAM2qC,QAAU,WAAahvB,EAAS,YAAch6B,EAAIqtB,IAAM,YAAcz7B,KAAKC,MAAMmO,EAAImtB,MAAQ,MAC3G9iC,KAAKO,OAAOqjE,sBACZ5jE,KAAKurB,OAAOyK,UAAUjN,IAAI,uBAGlCiwa,EAAO98b,UAAUuiE,kBAAoB,SAAU9uB,GAC3C,IAAIre,EAAMtxB,KAAKO,OAAO8mE,aAAay8B,WACnC,OAAQxyE,EAAImhB,aAAenhB,EAAI6vH,cAAgBxxG,GAC3Cre,EAAIkhB,YAAclhB,EAAIstC,YAAcH,cAAsB,GAElEu6X,EAAO98b,UAAUs/b,aAAe,SAAU36b,GACtC,IAAIopE,EAAMppE,EAAEo8B,OAAOjH,UACbi0C,EAAI13C,SAASwma,KAAyB9uX,EAAI13C,SAASwma,MAA0B/4b,KAAKurB,SACpF3C,IAAaa,OAAOjpB,SAAU6lB,IAAQmC,gBAAiBxoB,KAAKw7b,cAC5D5ya,IAAaa,OAAOzpB,KAAKurB,OAAQlF,IAAQmC,gBAAiBxoB,KAAKouD,aAC/Dv9B,YAAO7wB,KAAKurB,QACZvrB,KAAKknC,YAGb8xZ,EAAO98b,UAAUmgc,aAAe,WAC5B,IACIv5Z,EADAoN,EAAOtY,YAAQ53B,KAAKgB,QAAS+3b,IAYjC,IATIj2Z,EADA66B,aAAaztB,EAAM,yBACZ3oC,KAAKC,MAAMxH,KAAK28b,QAAQzsZ,GAAMpN,MAAQ9iC,KAAKO,OAAOomC,UAAYuJ,EAAKzZ,YAAc,GAAI,IAGrFlvB,KAAKC,MAAMxH,KAAK28b,QAAQzsZ,GAAMpN,MAAQ9iC,KAAKO,OAAOomC,WAAY,EAAQuJ,EAAKzZ,YAAc,KAGzFz2B,KAAKo7b,qBACZt4Z,EAAO9iC,KAAKo7b,mBAFE,GAIdp7b,KAAKO,OAAO+jE,eAAgB,CAC5B,IACIs4X,EADQhla,YAAQsY,EAAM,IAAMmsB,KACd5sB,WACd3M,EAAO85Z,IACP95Z,EAAO85Z,GAGf58b,KAAKurB,OAAOyI,MAAM8O,KAAOA,EAAO,MAEpCk2Z,EAAO98b,UAAUygc,QAAU,SAAUt5b,GAQjC,IAPA,IAAImkT,EAAe,CACfxkR,IAAK,EACLF,KAAM,GAEN9W,EAAS3oB,EAAKg/B,wBACdgpY,EAAMhoa,EAAKgoG,cACX98D,EAAeovB,aAAat6D,EAAM,WAAagoa,EAAIxoY,gBAChD0L,IACFA,IAAiB88X,EAAI7oY,MAAQ+L,IAAiB88X,EAAIxoY,kBACnB,WAAhC0L,EAAava,MAAM+Z,UACnBQ,EAAeA,EAAa9tC,WAKhC,OAHI8tC,GAAgBA,IAAiBlrC,GAAkC,IAA1BkrC,EAAazW,WACtD0vR,EAAej5Q,EAAalM,yBAEzB,CACHW,IAAKhX,EAAOgX,IAAMwkR,EAAaxkR,IAC/BF,KAAM9W,EAAO8W,KAAO0kR,EAAa1kR,OAGzCk2Z,EAAO98b,UAAUsgc,eAAiB,SAAU37b,GACxC,IAAId,EAAQC,KACRA,KAAKwuT,gBAAkBxuT,KAAKk5b,WACvBl5b,KAAKi5b,QAMN94b,aAAaH,KAAKi5b,QAClBj5b,KAAK46b,YAAY/5b,GACjBb,KAAKi5b,OAAS,MAPdj5b,KAAKi5b,OAAS74b,YAAW,WACrBL,EAAMk5b,OAAS,OAChB,OASfD,EAAO98b,UAAUsyT,aAAe,WAC5B,IAAI/nS,EAAYJ,IAAQI,UAAUhP,cAClC,MAAO,mBAAmB7M,KAAK6b,IAEnCuya,EAAO98b,UAAU2gc,eAAiB,WAC9B78b,KAAKi5b,OAAS,MAEXD,EA3vBiB,G,UCfxB8D,GAAkC,WAOlC,SAASA,EAAiB/1J,GACtB/mS,KAAK+mS,YAAcA,EAiSvB,OAzRA+1J,EAAiB5gc,UAAUwzB,OAAS,WAChC1vB,KAAK+8b,aAAe/8b,KAAK+mS,YAAY/lS,QACrChB,KAAKg9b,yBACLh9b,KAAKi9b,sBACLj9b,KAAKk0C,cAOT4oZ,EAAiB5gc,UAAUgrC,QAAU,WACjClnC,KAAK+mS,YAAYm2J,mBACbl9b,KAAKoB,MAAMvE,QACXmD,KAAKm9b,kBAETn9b,KAAKo9b,gBAQTN,EAAiB5gc,UAAU+gc,oBAAsB,WAC7C,IAAIpuE,EACA7nF,EAAWhnS,KAAK+mS,YAChB7lS,EAAM8lS,EAAShmS,QAAQsC,cAAc,uBACrCuqI,EAAOrtI,SAASo2B,yBACpB11B,EAAIkB,UAAY,GAChB,IAAK,IAAIxF,EAAI,EAAGA,GAAKoqS,EAASp4I,UAAWhyJ,IACrCiyX,EAAO1tX,YAAc,IAAK,CACtBktB,UAAW,iDACX0E,MAAO,CAAE+uE,KAAM,OAAQC,SAAU,KAAM,aAAc,aAAenlG,EAChEqsC,KAAM,sBAAuB7uB,KAAM,YAAcxd,KAErDoqS,EAAS7hO,cAAgBvoE,GACzBo5B,YAAU64V,EAAM,CAAC,gBAAiB,YAAa,CAAC,oBAEpDhhP,EAAK7rI,YAAY6sX,GAErB3tX,EAAIc,YAAY6rI,GAChB7tI,KAAKoB,MAAQ,GAAGC,MAAMC,KAAKJ,EAAIotB,aAQnCwua,EAAiB5gc,UAAUg4C,WAAa,WACpCtrB,IAAaG,IAAI/oB,KAAK+8b,aAAc,QAAS/8b,KAAK0lJ,aAAc1lJ,OAQpE88b,EAAiB5gc,UAAU25C,aAAe,WACtCjtB,IAAaa,OAAOzpB,KAAK+mS,YAAY/lS,QAAS,QAAShB,KAAK0lJ,eAShEo3S,EAAiB5gc,UAAUif,QAAU,WACjCnb,KAAK61C,gBAETinZ,EAAiB5gc,UAAU8gc,uBAAyB,WAChDh9b,KAAKgB,QAAUG,YAAc,MAAO,CAChCktB,UAAW,mBAAoB0E,MAAO,CAAE,KAAQ,gBAEpD/yB,KAAKq9b,iBAAiBr9b,KAAKgB,SAC3BhB,KAAKs9b,mBAAmBt9b,KAAKgB,SAC7BhB,KAAKgB,QAAQgB,YAAYb,YAAc,MAAO,CAAEktB,UAAW,wBAC3DruB,KAAKu9b,mBAAmBv9b,KAAKgB,SAC7BhB,KAAKw9b,gBAAgBx9b,KAAKgB,SAC1BhB,KAAK+mS,YAAY/lS,QAAQgB,YAAYhC,KAAKgB,UAE9C87b,EAAiB5gc,UAAUmhc,iBAAmB,SAAUI,GACpDz9b,KAAKxB,MAAQ2C,YAAc,MAAO,CAC9BktB,UAAW,+BACX0E,MAAO,CACHq0H,MAAO9nJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,oBACnD3mJ,KAAK+mS,YAAYpgJ,kBAAkB,oBACvC,aAAcrnJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,oBAC1D3mJ,KAAK+mS,YAAYpgJ,kBAAkB,oBACvC5kD,SAAU,QAGlB/hG,KAAKi9G,KAAO97G,YAAc,MAAO,CAC7BktB,UAAW,6BACX0E,MAAO,CACHq0H,MAAO9nJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,uBACnD3mJ,KAAK+mS,YAAYpgJ,kBAAkB,uBACvC,aAAcrnJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,uBAC1D3mJ,KAAK+mS,YAAYpgJ,kBAAkB,uBACvC5kD,SAAU,QAGlB9tE,YAAO,CAACj0B,KAAKxB,MAAOwB,KAAKi9G,MAAOwgV,IAEpCX,EAAiB5gc,UAAUohc,mBAAqB,SAAUG,GACtD,IAAIC,EAAYv8b,YAAc,OAC9BnB,KAAK29b,GAAKx8b,YAAc,IAAK,CACzBktB,UAAW,wBAAyBjsB,UAAW,MAC/C2wB,MAAO,CACHq0H,MAAO9nJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,wBACnD3mJ,KAAK+mS,YAAYpgJ,kBAAkB,wBAAyB7kD,KAAM,OACtE,aAAcxiG,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,wBAC1D3mJ,KAAK+mS,YAAYpgJ,kBAAkB,wBACvC5kD,SAAU,KACV3nF,KAAM9a,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,wBAClD3mJ,KAAK+mS,YAAYpgJ,kBAAkB,wBACvC19G,KAAM,yBAGdy0Z,EAAU17b,YAAYhC,KAAK29b,IAC3BF,EAAez7b,YAAY07b,IAE/BZ,EAAiB5gc,UAAUqhc,mBAAqB,SAAUE,GACtD,IAAIG,EAAYz8b,YAAc,OAC9BnB,KAAK69b,GAAK18b,YAAc,IAAK,CACzBktB,UAAW,wBACXjsB,UAAW,MAAO2wB,MAAO,CACrBq0H,MAAO9nJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,oBACnD3mJ,KAAK+mS,YAAYpgJ,kBAAkB,oBAAqB7kD,KAAM,OAClE,aAAcxiG,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,oBAC1D3mJ,KAAK+mS,YAAYpgJ,kBAAkB,oBACvC5kD,SAAU,KACV3nF,KAAM9a,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,oBAClD3mJ,KAAK+mS,YAAYpgJ,kBAAkB,oBACvC19G,KAAM,yBAGd20Z,EAAU57b,YAAYhC,KAAK69b,IAC3BJ,EAAez7b,YAAY47b,IAE/Bd,EAAiB5gc,UAAUshc,gBAAkB,SAAUC,GACnDz9b,KAAK0sH,KAAOvrH,YAAc,MAAO,CAC7BktB,UAAW,6BACX0E,MAAO,CACHq0H,MAAO9nJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,mBACnD3mJ,KAAK+mS,YAAYpgJ,kBAAkB,mBACvC,aAAcrnJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,mBAC1D3mJ,KAAK+mS,YAAYpgJ,kBAAkB,mBACvC5kD,SAAU,QAGlB/hG,KAAK89G,KAAO38G,YAAc,MAAO,CAC7BktB,UAAW,6BACX0E,MAAO,CACHq0H,MAAO9nJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,mBACnD3mJ,KAAK+mS,YAAYpgJ,kBAAkB,mBACvC,aAAcrnJ,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,mBAC1D3mJ,KAAK+mS,YAAYpgJ,kBAAkB,mBACvC5kD,SAAU,QAGlB9tE,YAAO,CAACj0B,KAAK0sH,KAAM1sH,KAAK89G,MAAO2/U,IAEnCX,EAAiB5gc,UAAUwpJ,aAAe,SAAU7kJ,GAChD,IAAImmS,EAAWhnS,KAAK+mS,YAChB9pQ,EAASp8B,EAAEo8B,OAMf,OALA+pQ,EAAS82J,eAAiB92J,EAAS7hO,YAC9BloC,EAAOjH,UAAUzD,SAAS,cAAiBn1B,YAAkB6/B,EAAO9N,aAAa,YAClF63Q,EAAS7hO,YAAchvD,SAAS8mB,EAAO9N,aAAa,SAAU,IAC9D63Q,EAAS1tQ,aAEN,GAEXwja,EAAiB5gc,UAAUihc,gBAAkB,WACzC,IACIY,EACAh4I,EAFA/e,EAAWhnS,KAAK+mS,YAGpBC,EAAS7hO,YAAsC,IAAxB6hO,EAASg3J,WAAmB,EAAIh3J,EAAS7hO,YAC5D6hO,EAAS7hO,YAAc6hO,EAASg3J,YAAch3J,EAASg3J,aACvDh3J,EAAS7hO,YAAc6hO,EAASg3J,YAEpCD,EAAiB5nb,UAAU6wR,EAAS7hO,YAAc6hO,EAASp4I,WAAWzhJ,WAAY,IAC9E65R,EAAS7hO,YAAc6hO,EAASp4I,YAAc,GAAKmvS,EAAiB,IACpEA,GAAkC,GAEtC,IAAK,IAAInhc,EAAI,EAAGA,EAAIoqS,EAASp4I,UAAWhyJ,KACpCmpT,EAAUg4I,EAAiB/2J,EAASp4I,UAAa,EAAIhyJ,IACvCoqS,EAASg3J,YACnBh+b,KAAKoB,MAAMxE,GAAGo3B,MAAMygB,QAAU,GAC9Bz0C,KAAKoB,MAAMxE,GAAGg5B,aAAa,QAASmwR,EAAO54S,YAC3CnN,KAAKoB,MAAMxE,GAAGwF,UAAa4kS,EAAS9pE,WAAiC8pE,EAAS9pE,WAAa6oF,EAA1CA,EAAO54S,WACpD65R,EAAS7hO,cAAgB4gP,EACzB/lT,KAAKoB,MAAMxE,GAAGo5B,UAAUjN,IAAI,mBAG5B/oB,KAAKoB,MAAMxE,GAAGo5B,UAAUvM,OAAO,qBAInCzpB,KAAKoB,MAAMxE,GAAGwF,UAAa4kS,EAAS9pE,WAAiC8pE,EAAS9pE,WAAa6oF,EAA1CA,EAAO54S,WACxDnN,KAAKoB,MAAMxE,GAAGo3B,MAAMygB,QAAU,QAElCze,YAAUh2B,KAAKoB,MAAMxE,GAAI,GAAI,CAAC,gBAAiB,aAEnDoD,KAAKxB,MAAMo3B,aAAa,QAAS,KACjC51B,KAAK89G,KAAKloF,aAAa,QAASoxQ,EAASg3J,WAAW7wb,YACpDnN,KAAKi9G,KAAKrnF,aAAa,SAAUoxQ,EAAS7hO,YAAc,GAAGh4D,YAC3DnN,KAAK0sH,KAAK92F,aAAa,SAAUoxQ,EAAS7hO,YAAc,GAAGh4D,YAC3DnN,KAAK+8b,aAAaz5b,cAAc,aAAasyB,aAAa,QAAS,KACnE51B,KAAK+8b,aAAaz5b,cAAc,YAAYsyB,aAAa,QAASoxQ,EAASg3J,WAAW7wb,YACtFnN,KAAK+8b,aAAaz5b,cAAc,YAAYsyB,aAAa,SAAUoxQ,EAAS7hO,YAAc,GAAGh4D,YAC7FnN,KAAK+8b,aAAaz5b,cAAc,YAAYsyB,aAAa,SAAUoxQ,EAAS7hO,YAAc,GAAGh4D,YAC7FnN,KAAK29b,GAAG/na,aAAa,SAAUzf,SAASnW,KAAKoB,MAAM,GAAG+tB,aAAa,SAAU,IAAM63Q,EAASp4I,WAAWzhJ,YACvGnN,KAAK69b,GAAGjoa,aAAa,SAAUzf,SAASnW,KAAKoB,MAAMpB,KAAKoB,MAAMvE,OAAS,GAAGsyB,aAAa,SAAU,IAAM,GAAGhiB,aAE9G2vb,EAAiB5gc,UAAUkhc,aAAe,WACtCp9b,KAAKi+b,yBACLj+b,KAAKk+b,2BACLl+b,KAAKm+b,2BACLn+b,KAAKo+b,wBACDp+b,KAAKoB,MAAMvE,QACXm5B,YAAUh2B,KAAKoB,OAAOpB,KAAK+mS,YAAY5hO,YAAc,GAAKnlE,KAAK+mS,YAAYn4I,WAAY,CAAC,gBAAiB,YAAa,KAG9HkuS,EAAiB5gc,UAAU+hc,uBAAyB,WAChD,IAAII,EAAY,CAAC,cAAe,mBAC5BC,EAAoB,CAAC,sBAAuB,aAC5C5xH,EAAW,CAAC,aAAc,mBAC1B6xH,EAAmB,CAAC,qBAAsB,aAC1Cv+b,KAAK+mS,YAAYi3J,WAAa,GAAKh+b,KAAK+mS,YAAY5hO,YAAc,GAClEnvC,YAAUh2B,KAAKi9G,KAAMyvN,EAAU6xH,GAC/Bvoa,YAAUh2B,KAAKxB,MAAO6/b,EAAWC,GACjCtoa,YAAUh2B,KAAK+8b,aAAaz5b,cAAc,aAAc+6b,EAAWC,GACnEtoa,YAAUh2B,KAAK+8b,aAAaz5b,cAAc,YAAaopU,EAAU6xH,KAGjEvoa,YAAUh2B,KAAKi9G,KAAMshV,EAAkB7xH,GACvC12S,YAAUh2B,KAAKxB,MAAO8/b,EAAmBD,GACzCroa,YAAUh2B,KAAK+8b,aAAaz5b,cAAc,YAAai7b,EAAkB7xH,GACzE12S,YAAUh2B,KAAK+8b,aAAaz5b,cAAc,aAAcg7b,EAAmBD,KAGnFvB,EAAiB5gc,UAAUgic,yBAA2B,WAC9Cl+b,KAAK+mS,YAAY5hO,YAAcnlE,KAAK+mS,YAAYn4I,UAChD54H,YAAUh2B,KAAK29b,GAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,cAGpF3na,YAAUh2B,KAAK29b,GAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,qBAGtFb,EAAiB5gc,UAAUiic,yBAA2B,WAClD,IAAIn3J,EAAWhnS,KAAK+mS,YAChBs3J,EAAYr+b,KAAKoB,MAAM,GAAGgB,UAAU1F,QAAQsqS,EAAS9pE,WAAY,KAChEmhO,EAAUxhc,SAAWmD,KAAKoB,MAAMvE,QAAWsZ,SAASkob,EAAW,IAAMr3J,EAASp4I,UAAYo4I,EAASg3J,WACpGhoa,YAAUh2B,KAAK69b,GAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAG9E7na,YAAUh2B,KAAK69b,GAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,eAG5Ff,EAAiB5gc,UAAUkic,sBAAwB,WAC/C,IAAI/qG,EAAW,CAAC,aAAc,mBAC1BmrG,EAAmB,CAAC,qBAAsB,aAC1Cna,EAAW,CAAC,aAAc,mBAC1Boa,EAAmB,CAAC,qBAAsB,aAC1Cz3J,EAAWhnS,KAAK+mS,YAChBC,EAAS7hO,cAAgB6hO,EAASg3J,YAA6C,IAA/Bh3J,EAASH,mBACzD7wQ,YAAUh2B,KAAK89G,KAAM0gV,EAAkBnrG,GACvCr9T,YAAUh2B,KAAK0sH,KAAM+xU,EAAkBpa,GACvCruZ,YAAUh2B,KAAK+8b,aAAaz5b,cAAc,YAAak7b,EAAkBnrG,GACzEr9T,YAAUh2B,KAAK+8b,aAAaz5b,cAAc,YAAam7b,EAAkBpa,KAGzEruZ,YAAUh2B,KAAK89G,KAAMu1O,EAAUmrG,GAC/Bxoa,YAAUh2B,KAAK0sH,KAAM23T,EAAUoa,GAC/Bzoa,YAAUh2B,KAAK+8b,aAAaz5b,cAAc,YAAa+vV,EAAUmrG,GACjExoa,YAAUh2B,KAAK+8b,aAAaz5b,cAAc,YAAa+gb,EAAUoa,KAGlE3B,EAzS2B,GCFlC4B,GAA8B,WAO9B,SAASA,EAAa33J,GAClB/mS,KAAK+mS,YAAcA,EAgFvB,OAxEA23J,EAAaxic,UAAUwzB,OAAS,WAC5B,IAAIxuB,EAAMC,YAAc,MAAO,CAAEktB,UAAW,iBAAkB0E,MAAO,CAAE,aAAc,uBACrF/yB,KAAK2+b,cAAgBx9b,YAAc,OAAQ,CAAEktB,UAAW,cAAe0F,OAAQ,oBAC/E/zB,KAAK4+b,iBAAmBz9b,YAAc,OAAQ,CAAEktB,UAAW,iBAAkB0F,OAAQ,oBACrFE,YAAO,CAACj0B,KAAK2+b,cAAe3+b,KAAK4+b,kBAAmB19b,GACpDlB,KAAK+mS,YAAY/lS,QAAQgB,YAAYd,GACrClB,KAAKknC,WAOTw3Z,EAAaxic,UAAUgrC,QAAU,WAC7B,IAAI8/P,EAAWhnS,KAAK+mS,YAChBznS,eACAU,KAAK2+b,cAActoW,YAAcr2F,KAAKgL,OAAOg8R,EAASrgJ,kBAAkB,mBAAoB,CAAgC,IAA/BqgJ,EAASH,kBAA0B,EACxHG,EAAS7hO,YAAa6hO,EAASg3J,YAAc,IAAM,IAC3Dh+b,KAAK4+b,iBAAiBvoW,YAAcr2F,KAAKgL,OAAOg8R,EAASrgJ,kBAAkB,kBAAmB,CAACqgJ,EAASH,mBAAqB,MAG7H7mS,KAAK2+b,cAActoW,YAAcr2F,KAAKgL,OAAOg8R,EAASrgJ,kBAAkB,mBAAoB,CAAgC,IAA/BqgJ,EAASH,kBAA0B,EACxHG,EAAS7hO,YAAa6hO,EAASg3J,YAAc,EAAGh3J,EAASH,mBAAqB,IAAM,IAC5F7mS,KAAK4+b,iBAAiBvoW,YAAcr2F,KAAKgL,OAAOg8R,EAASrgJ,kBAAkBqgJ,EAASH,mBAAqB,EAAI,gBAAkB,kBAAmB,CAACG,EAASH,mBAAqB,EAAGG,EAASH,kBAAqBG,EAAS5hO,UAAY4hO,EAAS7hO,YAAc,GAAM,EAAI,EACpQ6hO,EAAS5hO,SAAW4hO,EAAS7hO,YAAc6hO,EAASH,kBAAoBG,EAASH,kBAC7EG,EAAS5hO,SAAW4hO,EAAS7hO,eAEzCnlE,KAAK2+b,cAAc/qZ,cAAche,aAAa,aAAc51B,KAAK2+b,cAActoW,YAAcr2F,KAAK4+b,iBAAiBvoW,cAOvHqoW,EAAaxic,UAAU2ic,YAAc,WAC7B7+b,KAAK2+b,gBACL3+b,KAAK2+b,cAAc3qa,MAAMygB,QAAU,QAEnCz0C,KAAK4+b,mBACL5+b,KAAK4+b,iBAAiB5qa,MAAMygB,QAAU,SAQ9CiqZ,EAAaxic,UAAU4ic,YAAc,WAC5B9+b,KAAK2+b,eACN3+b,KAAK0vB,SAET1vB,KAAK2+b,cAAc3qa,MAAMygB,QAAU,GACnCz0C,KAAK4+b,iBAAiB5qa,MAAMygB,QAAU,IAS1CiqZ,EAAaxic,UAAUif,QAAU,aAGjCujb,EAAaxic,UAAU8O,OAAS,SAAUtG,EAAKzE,GAE3C,IADA,IAAI4gU,EACKjkU,EAAI,EAAGA,EAAIqD,EAAKpD,OAAQD,IAC7BikU,EAAO,IAAIj8T,OAAO,MAAShI,EAAK,MAAO,MACvC8H,EAAMA,EAAIhI,QAAQmkU,EAAM5gU,EAAKrD,GAAGuQ,YAEpC,OAAOzI,GAEJg6b,EAxFuB,GCJ9Brga,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAqB5Diga,GAAuB,SAAU5/Z,GASjC,SAAS4/Z,EAAMzyb,EAAStL,GACpB,IAAIjB,EAAQo/B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAInD,OAFAD,EAAMi/b,WAAY,EAClBj/b,EAAMk/b,YAAc,gBACbl/b,EAmeX,OAhfAs+B,GAAU0ga,EAAO5/Z,GAqBjB4/Z,EAAM7ic,UAAU8nC,gBAAkB,WAC9B,IAAIgB,EAAU,GAad,OAZIhlC,KAAKk/b,uBACLl6Z,EAAQpjC,KAAK,CACT4iC,OAAQ,kBACRvkC,KAAM,CAACD,QAGXA,KAAKm/b,kBACLn6Z,EAAQpjC,KAAK,CACT4iC,OAAQ,gBACRvkC,KAAM,CAACD,QAGRglC,GAQX+5Z,EAAM7ic,UAAUirC,UAAY,WAExBnnC,KAAKo/b,iBAAmB,CACpBC,gBAAiB,mBACjBC,eAAgB,cAChBC,cAAe,aACfC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBACrBC,iBAAkB,mBAClBC,qBAAsB,uBACtBC,cAAe,iBACfC,iBAAkB,QAClBC,gBAAiB,mBACjBC,eAAgB,cAChBC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBACrBC,iBAAkB,mBAClBC,qBAAsB,uBACtBC,cAAe,iBACfC,iBAAkB,QAClBC,IAAK,OAET1gc,KAAK2gc,gBAAkB,IAAI7D,GAAiB98b,MAC5CA,KAAK4gc,mBAAqB,IAAIlC,GAAa1+b,OAO/C++b,EAAM7ic,UAAUwzB,OAAS,WACjB1vB,KAAKsrB,SACDtrB,KAAK6gc,mBACL7gc,KAAKsZ,GAAGtZ,KAAKi/b,YAAaj/b,KAAK8yS,cAAe9yS,MAC9CA,KAAKga,OAAOha,KAAKi/b,YAAa,KAG9Bj/b,KAAK8yS,iBAIT9yS,KAAK8gc,mBACL9gc,KAAKy+S,YACLz+S,KAAK6mS,kBAAoB7mS,KAAK6mS,mBAAqB,EACnD7mS,KAAK+gc,8BACL/gc,KAAK2gc,gBAAgBjxa,SACjB1vB,KAAKghc,oBACLhhc,KAAK4gc,mBAAmBlxa,SAE5B1vB,KAAKihc,6BACDjhc,KAAKm/b,kBAAoBn/b,KAAKkhc,qBAC9Blhc,KAAKkhc,oBAAoBxxa,SAE7B1vB,KAAKmhc,eACDnhc,KAAKk/b,uBAAyBl/b,KAAKohc,uBACnCphc,KAAKohc,sBAAsB1xa,SAE/B1vB,KAAKknC,UACLlnC,KAAK+pB,QAAQ,UAAW,CAAE,YAAe/pB,KAAKmlE,YAAa,kBAAqBnlE,KAAK6mS,sBAS7Fk4J,EAAM7ic,UAAUysC,eAAiB,WAE7B,OAAO3oC,KAAKqpC,aADI,CAAC,cAAe,cASpC01Z,EAAM7ic,UAAUif,QAAU,WAClBnb,KAAK6gc,oBACL7gc,KAAK6Z,IAAI7Z,KAAKi/b,YAAaj/b,KAAK8yS,eAC3B9yS,KAAKg/b,WACNh/b,KAAKmvI,gBAAgB,CAAC,cAG9BhwG,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,MAC9BA,KAAK2gc,gBAAgBxlb,UACrBnb,KAAK4gc,mBAAmBzlb,UACnBnb,KAAK6gc,oBACN7gc,KAAKgB,QAAQoB,UAAY,KAUjC28b,EAAM7ic,UAAUizI,gBAAkB,SAAU4+K,EAAevzS,GACvDxa,KAAK6oC,cAAcklR,EAAevzS,IAQtCukb,EAAM7ic,UAAU2+B,cAAgB,WAC5B,MAAO,SAUXkka,EAAM7ic,UAAU29B,kBAAoB,SAAU2H,EAASC,GACnD,IAAIzhC,KAAKm5B,YAAT,CAGIqI,EAAQotH,YAAcntH,EAAQmtH,YAC9B5uJ,KAAK2gc,gBAAgB1D,sBACrBj9b,KAAK2gc,gBAAgBz5Z,WAEzB,IAAK,IAAIlpC,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,cACGgC,KAAKqhc,cAAc7/Z,EAAQ2jC,YAAa1jC,EAAQ0jC,cAChDnlE,KAAKshc,mBAAmB9/Z,EAASC,GAErC,MACJ,IAAK,WACL,IAAK,oBACL,IAAK,aACGzhC,KAAKm/b,kBAAoBn/b,KAAKkhc,sBAC1Bz/Z,EAAQ2jC,WAAa5jC,EAAQ4jC,WAC7BplE,KAAKmlE,YAAc,GAEvBnlE,KAAKkhc,oBAAoBK,iBAAiB,QAASvhc,KAAKolE,WAExD5jC,EAAQ4jC,WAAa3jC,EAAQ2jC,UAC7BplE,KAAKolE,SAAW5jC,EAAQ4jC,SACxBplE,KAAKshc,mBAAmB9/Z,EAASC,IAGjCzhC,KAAKknC,UAET,MACJ,IAAK,YACGlnC,KAAKm/b,kBAAoBn/b,KAAKkhc,sBAC9Blhc,KAAKkhc,oBAAoB/lb,UACzBnb,KAAKkhc,oBAAoBxxa,UAE7B1vB,KAAKknC,UACL,MACJ,IAAK,WACDlnC,KAAKkpG,WAAalpG,KAAKqrB,QAAQrrB,KAAKsrB,UACpCtrB,KAAKknC,UACL,MACJ,IAAK,SACDlnC,KAAK8gc,mBACL9gc,KAAKknC,UACL,MACJ,IAAK,wBACGlnC,KAAKk/b,uBAAyBl/b,KAAKohc,uBACnCphc,KAAKohc,sBAAsB1xa,SAE/B,MACJ,IAAK,kBACG1vB,KAAKohc,uBACLphc,KAAKohc,sBAAsBl6Z,UAE/B,MACJ,IAAK,YACDlnC,KAAKy+S,YACL,MACJ,IAAK,qBACGz+S,KAAKghc,mBACLhhc,KAAK4gc,mBAAmB9B,cAGxB9+b,KAAK4gc,mBAAmB/B,kBAY5CE,EAAM7ic,UAAUyqJ,kBAAoB,SAAU3pJ,GAC1C,OAAOgD,KAAK+jF,UAAUltC,YAAY75C,IAQtC+hc,EAAM7ic,UAAU4pT,SAAW,SAAUC,GAC7B/lT,KAAKqhc,cAAct7I,KACnB/lT,KAAKmlE,YAAc4gP,EACnB/lT,KAAKs5B,aAQbyla,EAAM7ic,UAAUslc,YAAc,SAAUp8X,GACpCplE,KAAKolE,SAAWA,EAChBplE,KAAKs5B,YAETyla,EAAM7ic,UAAUijc,eAAiB,WAC7B,SAAuB,IAAnBn/b,KAAKyhc,YAAsBzhc,KAAKyhc,UAAU5kc,SAKlDkic,EAAM7ic,UAAUmlc,cAAgB,SAAUK,EAAWC,GAOjD,OANID,IAAc1hc,KAAKmlE,cACnBnlE,KAAK89b,eAAiB99b,KAAKmlE,aAE1B/nE,YAAkBukc,KACnB3hc,KAAK89b,eAAiB6D,GAEtB3hc,KAAK89b,iBAAmB4D,GAAcA,GAAa,GAAKA,GAAa1hc,KAAKg+b,YAKlFe,EAAM7ic,UAAUolc,mBAAqB,SAAU9/Z,EAASC,GAIpD,GAHIzhC,KAAK4hc,mBACL5hc,KAAK6hc,kBAAkB7hc,KAAKmlE,aAE5B3jC,EAAQ2jC,cAAgB1jC,EAAQ0jC,aAAe3jC,EAAQ4jC,WAAa3jC,EAAQ2jC,SAAU,CACtF,IAAInlE,EAAO,CACPklE,YAAanlE,KAAKmlE,YAClB3jC,QAASA,EAASC,QAASA,EAAS1e,QAAQ,GAEhD/iB,KAAK+pB,QAAQ,QAAS9pB,GACjBA,EAAK8iB,QACN/iB,KAAKknC,YAIjB63Z,EAAM7ic,UAAU42S,cAAgB,WAC5B,IAAI9yS,KAAK6gc,oBAAqB7gc,KAAKg/b,UAAnC,CAGA,IAAIrgc,EACJqB,KAAKgB,QAAQg1B,UAAUjN,IAAI,mBAC3B/oB,KAAKqrB,QAAQrrB,KAAKsrB,UAClB,IAAIzQ,EAAO,CACPsqD,YAAanlE,KAAKmlE,YAAaC,SAAUplE,KAAKolE,SAAUwpF,UAAW5uJ,KAAK4uJ,UACxEi4I,kBAAmB7mS,KAAK6mS,kBAAmBm3J,WAAYh+b,KAAKg+b,YAE5D9ua,EAASlvB,KAAKgB,QAAQ4yC,cAAcn6B,GAAK,YACzCzZ,KAAK6gc,mBACL7gc,KAAK8hc,kBAAL9hc,CAAwB6a,EAAM7a,KAAM,WAAYkvB,EAAQ,KAAM,KAAMlvB,KAAKgB,SACzEhB,KAAK4oC,yBAGLjqC,EAASW,cAAaU,KAAK8hc,kBAAL9hc,CAAwB6a,EAAM7a,KAAM,WAAYkvB,EAAQlvB,KAAKkuB,kBAC/EluB,KAAKwlS,MAAQxlS,KAAK8hc,kBAAL9hc,CAAwB6a,EAAM7a,MAAQA,KAAK8hc,kBAAL9hc,CAAwB6a,GAC/EsjD,YAAen+D,KAAKgB,QAASrC,MAOrCogc,EAAM7ic,UAAUghc,iBAAmB,WAC/Bl9b,KAAKg+b,WAAch+b,KAAK6mS,kBAAoB7mS,KAAKolE,WAAa,EAAMplE,KAAK6mS,kBAAoB7mS,KAAKolE,SAC7FjvD,UAAUnW,KAAK6mS,kBAAoB7mS,KAAKolE,UAAUj4D,WAAY,IAAM,GAM7E4xb,EAAM7ic,UAAU4lc,iBAAmB,WAC/B,OAAO9hc,KAAKkpG,YAOhB61V,EAAM7ic,UAAUmvB,QAAU,SAAUC,GAChC,GAAIA,EACA,IACQ9qB,SAASgB,iBAAiB8pB,GAAUzuB,SACpCmD,KAAKkpG,WAAaltC,YAAiBx7D,SAAS8C,cAAcgoB,GAAUlpB,UAAUiqB,SAGtF,MAAOxrB,GACHb,KAAKkpG,WAAaltC,YAAiB1wC,KAU/Cyza,EAAM7ic,UAAUgrC,QAAU,WAClBlnC,KAAKsrB,SACDtrB,KAAK6gc,mBACL7gc,KAAKk9b,mBACLl9b,KAAKga,OAAOha,KAAKi/b,YAAa,MAG9Bj/b,KAAKgB,QAAQoB,UAAY,GACzBpC,KAAKk9b,mBACLl9b,KAAK8yS,kBAIT9yS,KAAKy+S,YACLz+S,KAAK2gc,gBAAgBz5Z,UACjBlnC,KAAKghc,oBACLhhc,KAAK4gc,mBAAmB15Z,UAExBlnC,KAAKkhc,qBACLlhc,KAAKkhc,oBAAoBh6Z,UAEzBlnC,KAAKk/b,uBAAyBl/b,KAAKohc,uBACnCphc,KAAKohc,sBAAsBl6Z,YAIvC63Z,EAAM7ic,UAAUuiT,UAAY,WACpBz+S,KAAK2mC,UACL3mC,KAAKgB,QAAQg1B,UAAUjN,IAAI,SAG3B/oB,KAAKgB,QAAQg1B,UAAUvM,OAAO,UAGtCs1a,EAAM7ic,UAAU4kc,iBAAmB,WAC/B9gc,KAAK+jF,UAAY,IAAI3tC,IAAKp2C,KAAK66B,gBAAiB76B,KAAKo/b,iBAAkBp/b,KAAK+c,SAEhFgib,EAAM7ic,UAAU2lc,kBAAoB,SAAUrlc,GAC1C,IAAIulc,EAAa/hc,KAAKgic,cAAclgc,OAAOknC,SAASC,KAAM,OAAQzsC,EAAM2Q,YACxErL,OAAOonC,QAAQ64E,UAAU,CAAEzuB,KAAMyuW,GAAc,GAAIA,IAEvDhD,EAAM7ic,UAAU8lc,cAAgB,SAAUjzE,EAAK/xX,EAAKR,GAChD,IAAIqkU,EAAO,IAAIj8T,OAAO,UAAY5H,EAAM,cAAe,KACvD,GAAI+xX,EAAInsX,MAAMi+T,GACV,OAAOkuD,EAAIryX,QAAQmkU,EAAM,KAAO7jU,EAAM,IAAMR,EAAQ,MAGpD,IAAI2sC,EAAO,GAKX,OAJ0B,IAAtB4lV,EAAI5wX,QAAQ,OACZgrC,EAAO4lV,EAAIryX,QAAQ,MAAO,KAC1BqyX,EAAMA,EAAIryX,QAAQ,MAAO,KAEtBqyX,IAA6B,IAAtBA,EAAI5wX,QAAQ,KAAc,IAAM,KAAOnB,EAAM,IAAMR,EAAQ2sC,GAGjF41Z,EAAM7ic,UAAU6kc,4BAA8B,WAC1C/gc,KAAKgB,QAAQgB,YAAYb,YAAc,MAAO,CAC1CktB,UAAW,gCACX0E,MAAO,CAAEq0H,MAAO9nJ,cAAaU,KAAK2mJ,kBAAkB,oBAAsB3mJ,KAAK2mJ,kBAAkB,oBAC7F5kD,SAAU,SAElB/hG,KAAKgB,QAAQgB,YAAYb,YAAc,MAAO,CAC1CktB,UAAW,8BACX0E,MAAO,CAAEq0H,MAAO9nJ,cAAaU,KAAK2mJ,kBAAkB,uBAC5C3mJ,KAAK2mJ,kBAAkB,uBAAwB5kD,SAAU,UAGzEg9V,EAAM7ic,UAAU+kc,2BAA6B,WACzCjhc,KAAKgB,QAAQgB,YAAYb,YAAc,MAAO,CAC1CktB,UAAW,8BACX0E,MAAO,CAAEq0H,MAAO9nJ,cAAaU,KAAK2mJ,kBAAkB,mBAC5C3mJ,KAAK2mJ,kBAAkB,mBAAoB5kD,SAAU,SAEjE/hG,KAAKgB,QAAQgB,YAAYb,YAAc,MAAO,CAC1CktB,UAAW,8BACX0E,MAAO,CAAEq0H,MAAO9nJ,cAAaU,KAAK2mJ,kBAAkB,mBAC5C3mJ,KAAK2mJ,kBAAkB,mBAAoB5kD,SAAU,UAGrEg9V,EAAM7ic,UAAUilc,aAAe,WAC3B,IAAInra,EAAY,CAAC,YAAa,WAAY,WAAY,YACtD,IAAK3P,IAAQa,SACT,IAAK,IAAItqB,EAAI,EAAGA,EAAIo5B,EAAUn5B,OAAQD,IAAK,CACvC,IAAIoE,EAAUhB,KAAKgB,QAAQsC,cAAc0yB,EAAUp5B,IACnDoE,EAAQ40B,aAAa,aAAc50B,EAAQmuB,aAAa,YAIpE4va,EAAM7ic,UAAU2kc,gBAAkB,WAC9B,OAAO7gc,KAAKuiG,SAAWviG,KAAKsrB,UAAuC,kBAAnBtrB,KAAKsrB,UAEzDqT,GAAW,CACP3B,aAAS,IACV+ha,EAAM7ic,UAAW,yBAAqB,GACzCyiC,GAAW,CACP3B,aAAS,IACV+ha,EAAM7ic,UAAW,6BAAyB,GAC7CyiC,GAAW,CACP3B,aAAS,IACV+ha,EAAM7ic,UAAW,0BAAsB,GAC1CyiC,GAAW,CACP3B,YAAS,KACV+ha,EAAM7ic,UAAW,gBAAY,GAChCyiC,GAAW,CACP3B,YAAS,KACV+ha,EAAM7ic,UAAW,iBAAa,GACjCyiC,GAAW,CACP3B,YAAS,IACV+ha,EAAM7ic,UAAW,mBAAe,GACnCyiC,GAAW,CACP3B,eACD+ha,EAAM7ic,UAAW,yBAAqB,GACzCyiC,GAAW,CACP3B,eACD+ha,EAAM7ic,UAAW,uBAAmB,GACvCyiC,GAAW,CACP3B,aAAS,IACV+ha,EAAM7ic,UAAW,iBAAa,GACjCyiC,GAAW,CACP3B,eACD+ha,EAAM7ic,UAAW,gBAAY,GAChCyiC,GAAW,CACP3B,YAAS,KACV+ha,EAAM7ic,UAAW,kBAAc,GAClCyiC,GAAW,CACPp/B,eACDw/b,EAAM7ic,UAAW,aAAS,GAC7ByiC,GAAW,CACPp/B,eACDw/b,EAAM7ic,UAAW,uBAAmB,GACvCyiC,GAAW,CACPp/B,eACDw/b,EAAM7ic,UAAW,eAAW,GAC/B6ic,EAAQpga,GAAW,CACflB,KACDsha,GAhfoB,CAkfzBz4Z,K,SCnhBEk6Z,GAA+B,WAO/B,SAASA,EAAcz5J,GACnB/mS,KAAK+mS,YAAcA,EAkIvB,OAzHAy5J,EAActkc,UAAU2+B,cAAgB,WACpC,MAAO,iBAQX2la,EAActkc,UAAUwzB,OAAS,WAC7B,IAAIs3Q,EAAWhnS,KAAK+mS,YACpB/mS,KAAKiic,iBAAmB9gc,YAAc,MAAO,CAAEktB,UAAW,gBAC1D,IAAI6za,EAAc/gc,YAAc,MAAO,CAAEktB,UAAW,oBAChD8za,EAAiBhhc,YAAc,MAAO,CAAEktB,UAAW,oBACnD2yC,EAAQ7/D,YAAc,QAAS,CAAE4xB,MAAO,CAAE5nB,KAAM,OAAQ42F,SAAU,OACtE/hG,KAAKoic,UAAYjhc,YAAc,OAAQ,CAAEktB,UAAW,aAAcjsB,UAAW9C,cACrEU,KAAK+mS,YAAYpgJ,kBAAkB,iBACnC3mJ,KAAK+mS,YAAYpgJ,kBAAkB,mBAC3Cu7S,EAAYlgc,YAAYg/D,GACxBmhY,EAAengc,YAAYhC,KAAKoic,WAChCpic,KAAKiic,iBAAiBjgc,YAAYkgc,GAClClic,KAAKiic,iBAAiBjgc,YAAYmgc,GAClCnic,KAAK+mS,YAAY/lS,QAAQgB,YAAYhC,KAAKiic,kBAC1C,IAAII,EAAkBric,KAAK+mS,YAAY06J,UACnCa,EAAkBD,EAAgBxlc,OAASmD,KAAKuic,aAAaF,GAC7D,CAACric,KAAK+mS,YAAYpgJ,kBAAkB,OAAQ,IAAK,KAAM,KAAM,MAC7DzrH,EAAel7B,KAAK+mS,YAAY3hO,SACpCplE,KAAKwic,mBAAqB,IAAI9nS,KAAa,CACvC54F,WAAYwgY,EACZ9lc,MAAO0+B,EAAa/tB,WACpBilC,OAAQpyC,KAAK4uH,SAASzyH,KAAK6D,MAC3Bk2F,SAAU,cAEdl2F,KAAKwic,mBAAmBz7Z,SAASi6B,GAC7BqhY,EAAgBxlc,SAChBmD,KAAKwic,mBAAmBxhc,QAAQxE,MAAQwD,KAAK+mS,YAAY3hO,SAASj4D,YAEtE65R,EAAS5hO,SAAWlqC,EACpB8rQ,EAAS1tQ,WACT0tQ,EAASj9Q,QAAQ,kBAAmB,CAAEq7C,SAAUlqC,IAChDl7B,KAAKupB,oBAUTi3a,EAActkc,UAAU0yH,SAAW,SAAU/tH,GACrCb,KAAKwic,mBAAmBhmc,QAAUwD,KAAK+mS,YAAYpgJ,kBAAkB,QACrE3mJ,KAAK+mS,YAAY3hO,SAAWplE,KAAK+mS,YAAYF,kBAC7C7mS,KAAKknC,UACLrmC,EAAErE,MAAQwD,KAAK+mS,YAAY3hO,SACvB5kE,SAASyuB,uBAAuB,0BAA0BpyB,SAC1D2D,SAASyuB,uBAAuB,0BAA0B,GAAG+E,MAAMygB,QAAU,UAIjFz0C,KAAK+mS,YAAY3hO,SAAWjvD,SAASnW,KAAKwic,mBAAmBhmc,MAAO,IAChEwD,KAAKoic,UAAUhgc,YAAcpC,KAAK+mS,YAAYpgJ,kBAAkB,kBAChE3mJ,KAAKknC,WAGblnC,KAAK+mS,YAAYztQ,WACjBt5B,KAAK+mS,YAAYh9Q,QAAQ,kBAAmB,CAAEq7C,SAAUjvD,SAASnW,KAAKwic,mBAAmBhmc,MAAO,OAEpGgkc,EAActkc,UAAUgrC,QAAU,WAC1BlnC,KAAKoic,YACDpic,KAAK+mS,YAAY3hO,WAAaplE,KAAK+mS,YAAYF,kBAC/C7mS,KAAKoic,UAAUhgc,UAAY9C,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,oBACvE3mJ,KAAK+mS,YAAYpgJ,kBAAkB,oBAGvC3mJ,KAAKoic,UAAUhgc,UAAY9C,cAAaU,KAAK+mS,YAAYpgJ,kBAAkB,iBACvE3mJ,KAAK+mS,YAAYpgJ,kBAAkB,mBAInD65S,EAActkc,UAAUumc,kBAAoB,SAAUt+b,GAClD,GAAkC,kBAAvBA,EAAKq9B,QAAQhlC,MAAoB,CACxC,IAAIyI,EAAMd,EAAKq9B,QAAQhlC,MAAM2Q,WAC7BhJ,EAAKq9B,QAAQhlC,MAAQyI,IAG7Bu7b,EAActkc,UAAUqmc,aAAe,SAAUG,GAE7C,IADA,IAAIlnZ,EAAOknZ,EACF9lc,EAAI,EAAGA,EAAI4+C,EAAK3+C,OAAQD,IAC7B4+C,EAAK5+C,GAAKuZ,SAASqlC,EAAK5+C,GAAI,IAAM4+C,EAAK5+C,GAAGuQ,WAA8D,KAAhDnN,KAAK+mS,YAAYpgJ,kBAAkBnrG,EAAK5+C,IAC1FoD,KAAK+mS,YAAYpgJ,kBAAkBnrG,EAAK5+C,IAAM4+C,EAAK5+C,GAE7D,OAAO4+C,GAEXglZ,EAActkc,UAAUqlc,iBAAmB,SAAUp9b,EAAM3H,GACnDwD,KAAKwic,qBACLxic,KAAKwic,mBAAmBr+b,GAAQ3H,IAGxCgkc,EAActkc,UAAUqtB,iBAAmB,WACvCvpB,KAAKwic,mBAAmBlpb,GAAG,oBAAqBtZ,KAAKyic,kBAAmBzic,OAE5Ewgc,EAActkc,UAAUytB,oBAAsB,WAC1C3pB,KAAKwic,mBAAmB3ob,IAAI,oBAAqB7Z,KAAKyic,oBAW1DjC,EAActkc,UAAUif,QAAU,SAAUlb,GACpCD,KAAKwic,qBAAuBxic,KAAKwic,mBAAmBrpa,cACpDn5B,KAAK2pB,sBACL3pB,KAAKwic,mBAAmBrnb,UACxBsO,aAAOzpB,KAAKiic,oBAGbzB,EA1IwB,GCD/BmC,GAAiC,WAOjC,SAASA,EAAgB57J,GACrB/mS,KAAK+mS,YAAcA,EAgEvB,OAxDA47J,EAAgBzmc,UAAU2+B,cAAgB,WACtC,MAAO,mBAQX8na,EAAgBzmc,UAAUwzB,OAAS,WAC/B1vB,KAAKgB,QAAUG,YAAc,MAAO,CAAEktB,UAAW,qBAAsB0E,MAAO,CAAE,aAAc,4BAC9F/yB,KAAK+mS,YAAY/lS,QAAQgB,YAAYhC,KAAKgB,SAC1ChB,KAAKknC,WAOTy7Z,EAAgBzmc,UAAUgrC,QAAU,WAC5BlnC,KAAK+mS,YAAY67J,iBAAmB5ic,KAAK+mS,YAAY67J,gBAAgBz1b,WAAWtQ,QAChFmD,KAAK8+b,cACL9+b,KAAKgB,QAAQoB,UAAYpC,KAAK+mS,YAAY67J,iBAG1C5ic,KAAK6+b,eAQb8D,EAAgBzmc,UAAU2ic,YAAc,WAC/Bzhc,YAAkB4C,KAAKgB,WACxBhB,KAAKgB,QAAQgzB,MAAMygB,QAAU,SAQrCkuZ,EAAgBzmc,UAAU4ic,YAAc,WACpC9+b,KAAKgB,QAAQgzB,MAAMygB,QAAU,IASjCkuZ,EAAgBzmc,UAAUif,QAAU,WAChCsO,aAAOzpB,KAAKgB,UAET2hc,EAxE0B,GCMjC3/L,GAAsB,WAQtB,SAASA,EAAKziQ,EAAQ2kE,GAClBllE,KAAK2lV,iBAAkB,EACvBo5G,GAAM32Z,OAAOu6Z,GAAiBnC,IAC9Bxgc,KAAKO,OAASA,EACdP,KAAKklE,aAAeA,EACpBllE,KAAKupB,mBA8ST,OAtSAy5O,EAAK9mQ,UAAU2+B,cAAgB,WAC3B,MAAO,SAQXmoO,EAAK9mQ,UAAUwzB,OAAS,WACpB,IAAIuqC,EAAOj6D,KAAKO,OAChBP,KAAK6ic,eACAzlc,YAAkB4C,KAAKO,OAAOuyS,iBAC/B9yS,KAAKklE,aAAa55C,SAAWtrB,KAAKO,OAAOuyS,cACzC9yS,KAAKO,OAAO2xS,oBAAqB,GAErClyS,KAAKgB,QAAUhB,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,gBAC7D,IAAI24Q,EAAW87J,YAAW,GAAIxkc,YAAO,GAAIkrC,YAAoBxpC,KAAKklE,eAAgB,CAC9EzU,MAAOzwD,KAAK0lJ,aAAavpJ,KAAK6D,MAC9B+ic,gBAAiB/ic,KAAK+lH,SAAS5pH,KAAK6D,MACpC2mC,UAAWszB,EAAKtzB,UAAW5pB,OAAQk9C,EAAKl9C,OACxC2uC,QAAS1rD,KAAKgjc,YAAY7mc,KAAK6D,OAChC,CAAC,YAAa,aACjBA,KAAKgnS,SAAW,IAAI+3J,GAAM/3J,GAC1BhnS,KAAKgnS,SAASg4J,WAAY,EAC1Bh/b,KAAKgnS,SAAS1tR,GAAGyN,KAAqB/mB,KAAKijc,yBAA0Bjjc,MACrEA,KAAKgnS,SAASzuQ,wBAAyB,GAE3CyqO,EAAK9mQ,UAAU6pH,SAAW,SAAUllH,GAChCb,KAAKklE,aAAaE,SAAWvkE,EAAEukE,SAC1BplE,KAAK4oS,gBACN5oS,KAAKklE,aAAaC,YAAc,IAGxC69L,EAAK9mQ,UAAU8mc,YAAc,WACzB,IAAMhjc,KAAKklE,aAAa55C,SAAW,CAM/B,IALA,IAAI43a,EAAsBljc,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,uBACpEova,EAAiBz9b,KAAKgB,QAAQsC,cAAc,qBAC5CuqI,EAAOrtI,SAASo2B,yBAChBusa,EAAmBnjc,KAAKgB,QAAQsC,cAAc,uBAC9ClC,EAAQ+hc,EAAiB3hc,iBAAiB,KACrC5E,EAAI,EAAGA,EAAIwE,EAAMvE,OAAQD,IAAK,CAC/BoD,KAAKO,OAAOy4I,kBACZ53I,EAAMxE,GAAGg5B,aAAa,YAAa51B,KAAKO,OAAOy4I,kBAAkBv/H,IAGjErY,EAAMxE,GAAGg5B,aAAa,YAAa51B,KAAKO,OAAOS,QAAQmuB,aAAa,MAAQ,kBAEhF,IAAIi0a,EAAsBpjc,KAAKO,OAAOY,cAAc,OACpDiic,EAAoBphc,YAAYZ,EAAMxE,IACtCixI,EAAK7rI,YAAYohc,GAErBF,EAAoBlhc,YAAY6rI,GAChC4vT,EAAe7pT,aAAasvT,EAAqBC,GAEjD,IADA,IAAInta,EAAY,CAAC,YAAa,WAAY,WAAY,UAAW,UAAW,UAAW,WAAY,YAC1F7tB,EAAI,EAAGA,EAAI6tB,EAAUn5B,OAAQsL,IAAK,CACvC,IAAInH,EAAUhB,KAAKgB,QAAQsC,cAAc0yB,EAAU7tB,IAC/CnI,KAAKO,OAAOy4I,mBACZh4I,EAAQ40B,aAAa,YAAa51B,KAAKO,OAAOy4I,kBAAkBv/H,OAKhFupP,EAAK9mQ,UAAUizD,UAAY,SAAUtuD,GACjCb,KAAK85B,YAAYj5B,IAOrBmiQ,EAAK9mQ,UAAUgrC,QAAU,WACrBlnC,KAAKgnS,SAAS9/P,WAQlB87N,EAAK9mQ,UAAU4pT,SAAW,SAAUC,GAChC/lT,KAAKgnS,SAAS8e,SAASC,IAO3B/iD,EAAK9mQ,UAAUslc,YAAc,SAAUp8X,GACnCplE,KAAKgnS,SAASw6J,YAAYp8X,IAS9B49L,EAAK9mQ,UAAU49B,YAAc,SAAUj5B,GACnCb,KAAKO,OAAO2kE,aAAa2hO,kBAAoBhmS,EAAEi6D,MAC/C96D,KAAKO,OAAO+4B,YAShB0pO,EAAK9mQ,UAAUu5J,iBAAmB,SAAU50J,GACxCb,KAAKO,OAAOwpB,QAAQhD,IAAuBzoB,YAAOuC,EAAG,CACjDskE,YAAanlE,KAAKO,OAAO2kE,aAAaC,YAAai1B,YAAa,SAChEjvF,KAAM4b,QAQdi8O,EAAK9mQ,UAAU29B,kBAAoB,SAAUh5B,GACzC,GAAIA,EAAEyjC,SAAWtkC,KAAK66B,gBAAtB,CAIA,IADA,IAAI2G,EAAU3gC,EAAEgzB,WACP71B,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC9D,IAAImG,EAAOZ,EAAGvF,GACdgC,KAAKgnS,SAAS7iS,GAAQq9B,EAAQr9B,GAElCnE,KAAKgnS,SAAS1tQ,aAElB0pO,EAAK9mQ,UAAUwpJ,aAAe,SAAU7kJ,GACpC,IAAIo5D,EAAOj6D,KAAKO,OAChB,GAAIP,KAAKqjc,eAAiB7jY,YAAgBvF,KAAUA,EAAK6sO,eAmBrD,OAlBK9mS,KAAKqjc,cAeNrjc,KAAKqjc,eAAgB,GAdhBjmc,YAAkByD,EAAE2gC,UAAapkC,YAAkByD,EAAE2gC,QAAQ4jC,UAKzDvkE,EAAEskE,cACPlL,EAAKjgD,OAAO+M,KAAqB,CAAEiU,SAAUh7B,KAAMwZ,QAASxZ,KAAK8lT,SAAUx8J,KAAMzoJ,EAAEskE,cACnFnlE,KAAKgnS,SAAS7hO,YAAclL,EAAKiL,aAAaC,cAAgBnlE,KAAKgnS,SAAS7hO,YACxEnlE,KAAKgnS,SAAS82J,eAAiB7jY,EAAKiL,aAAaC,cAPrDlL,EAAKjgD,OAAO+M,KAAqB,CAAEiU,SAAUh7B,KAAMwZ,QAASxZ,KAAKwhc,YAAal4S,KAAMzoJ,EAAE2gC,QAAQ4jC,WAC9FplE,KAAKgnS,SAAS5hO,SAAWvkE,EAAE4gC,QAAQ2jC,SACnCnL,EAAKiL,aAAaE,SAAWvkE,EAAE2gC,QAAQ4jC,UAO3CplE,KAAKqjc,eAAgB,EACrBrjc,KAAKgnS,SAAS1tQ,iBAKlBz4B,EAAEkiB,QAAS,GAGfk3C,EAAKiL,aAAaE,SAAWplE,KAAKgnS,SAAS5hO,SAC3CnL,EAAK6sO,gBAAiB,EACtB,IAAI4lC,EAAW1sU,KAAKklE,aAAaC,YACjCnlE,KAAKklE,aAAaC,YAActkE,EAAEskE,YAClC,IAAIllE,EAAO,CACP8iB,QAAQ,EAAOq3E,YAAa,SAAUkpW,aAAc52H,EACpDvnQ,YAAatkE,EAAEskE,YAAah6D,KAAM4b,KAEtC/mB,KAAKO,OAAOyZ,OAAO+M,KAAqB9mB,GACpCA,EAAK8iB,SACLliB,EAAEkiB,QAAS,GAEf/iB,KAAKO,OAAO0vG,kBAAoB,UAEpC+yJ,EAAK9mQ,UAAU24C,gBAAkB,SAAUh0C,GACnCA,EAAEilC,UAAUq8G,KACZthJ,EAAEyrC,iBACFtsC,KAAKgB,QAAQsC,cAAc6+I,GAAWthJ,EAAEilC,SAAS2qB,UASzDuyM,EAAK9mQ,UAAU8pT,sBAAwB,SAAUrlT,GACxCX,KAAKgnS,SAASk4J,wBACfl/b,KAAKgnS,SAASk4J,uBAAwB,EACtCl/b,KAAKgnS,SAAS1tQ,YAElBt5B,KAAKgnS,SAAS47J,gBAAkBjic,EAChCX,KAAKgnS,SAAS1tQ,YAElB0pO,EAAK9mQ,UAAUqnc,gBAAkB,WAC7Bvjc,KAAK4oS,eAAgB,EACrB5oS,KAAKO,OAAOS,QAAQgB,YAAYhC,KAAKgB,SACrChB,KAAKO,OAAOwhT,aAAa/hT,KAAKgB,SAC9BhB,KAAKgnS,SAASzkM,QAAUviG,KAAKO,OAAOgiG,QACpCviG,KAAKgnS,SAASxB,MAAQxlS,KAAKO,OAAOilS,MAClCxlS,KAAKgnS,SAASjgQ,SAAS/mC,KAAKgB,SAC5BhB,KAAK4oS,eAAgB,GAEzB5lC,EAAK9mQ,UAAU8wI,kBAAoB,SAAUnsI,GACrCA,EAAEyjC,SAAWtkC,KAAK66B,iBAAmBh6B,EAAE2zI,SACvCx0I,KAAK0vB,SACL1vB,KAAKujc,kBACDvjc,KAAK6gc,oBACL7gc,KAAKgnS,SAASk2J,mBACdl9b,KAAK0rD,aAQjBs3M,EAAK9mQ,UAAUqtB,iBAAmB,WAC9BvpB,KAAKyyP,SAAW,CACZ97M,KAAM32C,KAAK0vB,OACX/W,IAAK3Y,KAAKujc,gBACV9gc,MAAOzC,KAAKmvD,UACZq0Y,SAAUxjc,KAAKy1J,iBACfguS,aAAczjc,KAAKgtI,kBACnB02T,cAAe1jc,KAAK65B,kBACpBmxR,SAAUhrT,KAAK60C,gBACf6W,QAAS1rD,KAAK0rD,SAEd1rD,KAAKO,OAAO44B,cAGZn5B,KAAKO,OAAOgiG,SACZviG,KAAKO,OAAOgpB,iBAAiBxC,KAAgB/mB,KAAKyyP,SAAS/mM,QAAQvvD,KAAK6D,OAE5EA,KAAKqhJ,YAAc,CAAC,CAAEv6H,MAAOC,KAAoBvN,QAASxZ,KAAKyyP,SAAS97M,MACpE,CAAE7vB,MAAOC,KAAmBvN,QAASxZ,KAAKyyP,SAAS95O,KACnD,CAAEmO,MAAOC,KAAkBvN,QAASxZ,KAAKyyP,SAAShwP,OAClD,CAAEqkB,MAAOC,KAAqBvN,QAASxZ,KAAKyyP,SAAS+wM,UACrD,CAAE18a,MAAOC,KAAiBvN,QAASxZ,KAAKyyP,SAASgxM,cACjD,CAAE38a,MAAOC,KAA4BvN,QAASxZ,KAAKyyP,SAASixM,eAC5D,CAAE58a,MAAOC,KAAmBvN,QAASxZ,KAAKyyP,SAASu4D,WACvDj9O,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,EAAMrhJ,QAEhEgjQ,EAAK9mQ,UAAUwvD,QAAU,WACjB1rD,KAAK2lV,iBAAmB3lV,KAAK6gc,oBAC7B7gc,KAAK2lV,iBAAkB,EACvB3lV,KAAKijc,6BAGbjgM,EAAK9mQ,UAAU2kc,gBAAkB,WAC7B,OAAO7gc,KAAKO,OAAOgiG,SAAWviG,KAAKgnS,SAAS17Q,UAAgD,kBAA5BtrB,KAAKgnS,SAAS17Q,UAElF03O,EAAK9mQ,UAAU+mc,yBAA2B,WACtC,IAAKjjc,KAAK2lV,iBAAmB3lV,KAAK6gc,kBAAmB,CACjD7gc,KAAKO,OAAO4uI,gBAAgB,CAAC,kBAC7BnvI,KAAKgB,QAAQg1B,UAAUjN,IAAI,mBAC3B/oB,KAAKgnS,SAAS37Q,QAAQrrB,KAAKgnS,SAAS17Q,UACpC,IAAIq0E,EAAO3/F,KAAKO,OAAO2kE,aACnBrqD,EAAO,CACPsqD,YAAaw6B,EAAKx6B,YAAaC,SAAUu6B,EAAKv6B,SAAUwpF,UAAWjvD,EAAKivD,UACxEi4I,kBAAmBlnM,EAAKknM,kBAAmBm3J,WAAYh+b,KAAKgnS,SAASg3J,YAErE9ua,EAASlvB,KAAKO,OAAOkZ,GAAK,iBAC9BzZ,KAAKgnS,SAAS99L,WAAWruF,EAAM7a,KAAKO,OAAQ,gBAAiB2uB,EAAQ,KAAM,KAAMlvB,KAAKgnS,SAAShmS,SAC/FhB,KAAKO,OAAOqiG,oBAOpBogK,EAAK9mQ,UAAUytB,oBAAsB,WAC7B3pB,KAAKO,OAAO44B,cAGZn5B,KAAKO,OAAOgiG,SACZviG,KAAKO,OAAOopB,oBAAoB5C,KAAgB/mB,KAAKyyP,SAAS/mM,SAElE1rD,KAAKO,OAAOsZ,IAAIkN,KAAqB/mB,KAAKijc,0BAC1Cl1X,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,KAQ1D2hH,EAAK9mQ,UAAUif,QAAU,WACrBnb,KAAK2pB,sBACD3pB,KAAK6gc,mBACL7gc,KAAKO,OAAO4uI,gBAAgB,CAAC,kBAEjCnvI,KAAKgnS,SAAS7rR,WAElB6nP,EAAK9mQ,UAAU2mc,aAAe,WACtB7ic,KAAKgnS,WAAahnS,KAAKgnS,SAAS7tQ,cAChCn5B,KAAKgnS,SAAS7rR,UACdsO,aAAOzpB,KAAKgB,WAGbgiQ,EA3Te,GAiUtB7gH,GAAa,CACb6a,OAAQ,UACRC,SAAU,UACV+9I,gBAAiB,UACjBD,cAAe,WACfE,UAAW,QACXC,YAAa,S,kBCnUb5zB,GAAuB,WAUvB,SAASA,EAAM/mR,EAAQy6D,EAAeujC,EAAex+B,GACjD,IAAIhgE,EAAQC,KAEZA,KAAK2jc,cAAe,EACpB3jc,KAAK4jc,gBAAiB,EACtB5jc,KAAK6jc,kBAAmB,EACxB7jc,KAAK8jc,kBAAoB,GACzB9jc,KAAKikI,cAAgB9iI,YAAc,MAAO,CACtCktB,UAAW,0CACX0F,OAAQ,mBAAoBhB,MAAO,CAAE+S,OAAQ,cAEjD9lC,KAAKurB,OAAS,SAAU1qB,GACpB,IAAIo5D,EAAOl6D,EAAMQ,OACb08B,EAASp8B,EAAEyyC,OAAOrW,OAClBj8B,EAAUi8B,EAAOjH,UAAUzD,SAAS,qBAAuB0K,EAC3D0gC,aAAa1gC,EAAQ,qBACzB,SAAKj8B,IAAai8B,EAAOjH,UAAUzD,SAAS,WAAaxyB,EAAMi7D,cAAc8B,mBAG7E/8D,EAAM05D,OAASQ,EAAKqM,iBAAiBtlE,EAAQ81B,kBAAkB3H,aAAa,mBAC5EpvB,EAAMkkI,cAAc5tC,YAAcr1F,EAAQq1F,YAC1Ct2F,EAAMkkI,cAAcjwG,MAAM0b,MAAQ1uC,EAAQy1B,YAAc,EAAI,KAC5D12B,EAAMkkI,cAAcjwG,MAAM2b,OAAS3uC,EAAQ4uC,aAAe,EAAI,KAC9D7vC,EAAMkkI,cAAcruG,aAAa,eAAgB71B,EAAM05D,OAAOh+D,KAC9Dw+D,EAAKj5D,QAAQgB,YAAYjC,EAAMkkI,eACxBlkI,EAAMkkI,gBAGjBjkI,KAAKwuC,UAAY,SAAU3tC,GACvBd,EAAMQ,OAAOS,QAAQg1B,UAAUjN,IAAI,kBAEvC/oB,KAAKswC,KAAO,SAAUzvC,GACdd,EAAMi7D,cAAc8B,iBACpB/8D,EAAMgkc,eAAeljc,GAEzB,IAAIo8B,EAASp8B,EAAEo8B,OACXqqE,EAAevnG,EAAMQ,OAAOS,QAAQsC,cAAc,sBACtDvD,EAAMQ,OAAOwpB,QAAQhD,KAAmB,CAAEkW,OAAQA,EAAQunT,cAAe,aAAc/qR,OAAQ15D,EAAM05D,SAChG15D,EAAMi7D,cAAc8B,kBACrB9mC,YAAUsxE,EAAc,CAAC,gBAAiB,CAAC,oBACrC3pC,aAAa1gC,EAAQo/B,MAAyBsB,aAAa1gC,EAAQ,iBACrEjH,YAAUsxE,EAAc,CAAC,mBAAoB,CAAC,mBAI1DtnG,KAAKiyC,SAAW,SAAUpxC,GACtBd,EAAMQ,OAAOS,QAAQg1B,UAAUvM,OAAO,iBACtC,IAAIu6a,IAAgBrmY,aAAa98D,EAAEo8B,OAAQo/B,MAAyBsB,aAAa98D,EAAEo8B,OAAQ,iBAC3F,GAAIl9B,EAAMi7D,cAAc8B,iBAAmBknY,GAEvC,GADAv6a,aAAO5oB,EAAE0qB,QACLoyC,aAAa98D,EAAEo8B,OAAQ,mBACvBl9B,EAAMkkc,sBAEL,IAAMtmY,aAAa98D,EAAEo8B,OAAQ,UAAY,CAC1C,IAAIu8B,EAAQz5D,EAAMQ,OAAO6jI,eAAevjI,EAAE0qB,OAAO4D,aAAa,iBAAiBqqC,OAC3B,IAAhDz5D,EAAMi7D,cAAcjB,QAAQ57D,QAAQq7D,IACpCz5D,EAAMotT,cAAc3zP,SAKvBwqY,GACLv6a,aAAO5oB,EAAE0qB,SAIjBvrB,KAAK+jc,eAAiB,SAAUljc,GAC5B,IAAIpF,EAAMsE,EAAMQ,OAAOS,QAAQsC,cAAc,sBAAsB6rB,aAAa,gBAC5E+0a,EAAYnkc,EAAMQ,OAAO6jI,eAAe3oI,GAAK+9D,MAC7Cj5D,EAASo9D,aAAa98D,EAAEo8B,OAAQ,mBAChCkna,EAAaxmY,aAAa98D,EAAEo8B,OAAQ,oBACpCorD,EAAU,GAAGhnF,MAAMC,KAAKvB,EAAMiB,QAAQiuB,uBAAuB,sBAC5DxqB,KAAI,SAAU5D,GAAK,OAAOA,EAAEyC,cAAc,OAAO6rB,aAAa,qBAC/D09E,EAAO9xF,KAAKC,MAAMD,KAAK0uB,UAAU4+C,IACrC,GAAI87W,GAAc5jc,EAAQ,CACtB,GAAI4jc,EAAY,CACZ,IAAIlrI,EAAYkrI,EAAW7gc,cAAc,uBAAuB6rB,aAAa,kBACzEi1a,GAAcD,EAAWh1a,aAAa,SAC1C,GAAI8pS,IAAcirI,EAAW,CACzB,IAAIG,EAAYx3V,EAAK1uG,QAAQ+lc,IACV,IAAfG,GACAx3V,EAAK/yF,OAAOuqb,EAAW,GAE3B,IAAI1wb,GAAsB,IAAfywb,GAAoBC,IAAcD,EAC7Cv3V,EAAK/yF,OAAOsqb,GAAazwb,EAAO,EAAI,GAAI,EAAGuwb,SAG1C3jc,IAAuC,IAA7BssG,EAAK1uG,QAAQ+lc,IAC5Br3V,EAAKjrG,KAAKsic,GAEdnkc,EAAMiB,QAAQoB,UAAY,GACtByqG,EAAKhwG,SAAWkD,EAAMiB,QAAQg1B,UAAUzD,SAAS,cACjDxyB,EAAMiB,QAAQg1B,UAAUjN,IAAI,aAEhChpB,EAAM+jc,kBAAoBj3V,EAC1B,IAAK,IAAIjlG,EAAI,EAAGA,EAAIilG,EAAKhwG,OAAQ+K,IAC7B7H,EAAMukc,kBAAkBz3V,EAAKjlG,SAIjC7H,EAAMwkc,WACNxkc,EAAMykc,uBAAuBN,IAGrClkc,KAAK6zC,KAAO,SAAUhzC,GAClB,IAAIo5D,EAAOl6D,EAAMQ,OACbk5D,EAASQ,EAAKmqE,eAAevjI,EAAE2zC,eAAerlB,aAAa,iBAC/DpvB,EAAMiB,QAAQg1B,UAAUvM,OAAO,WAC/BA,aAAO5oB,EAAE2zC,gBACTz0C,EAAM0kc,KAAKrxU,cAAcrzH,EAAMQ,OAAOS,QAAQsC,cAAc,qBAAqB,GACjFvD,EAAM0kc,KAAKxxU,WAAWlzH,EAAMQ,OAAOsnI,iBAAiBvkI,cAAc,wBAAwB,GACtFlG,YAAkBq8D,KAAoC,IAAzBA,EAAOwuC,eACpCtqC,aAAa1D,EAAK4pP,qBAAqBpqP,EAAOh+D,KAAM,UAAU0zB,aAAa,QACvE8qC,EAAKj5D,QAAQmuB,aAAa,MAC9BpvB,EAAMQ,OAAOsuJ,IAAI,yBAA0B,CAAEl7C,WAAY5zG,EAAM86B,gBAAiBwhF,WAAY5iD,EAAOsD,aAGvGh9D,EAAM8sT,YAAYpzP,EAAOD,QAE7Bx5D,KAAK0kc,gBAAiB,EACtB1kc,KAAKykc,KAAO,IAAIjyU,KAChBxyH,KAAKO,OAASA,EACdP,KAAKg7D,cAAgBA,EACrBh7D,KAAK+/D,eAAiBA,EACtB//D,KAAKu+F,cAAgBA,EACrBv+F,KAAKsC,MAAQy9D,EAAeE,WAAW,SACvCjgE,KAAKupB,mBACLvpB,KAAK2kc,eAAiB,IAAI5wT,IAAoB/zI,KAAKO,QAy7BvD,OAv7BA+mR,EAAMprR,UAAUqoc,SAAW,WACvB,IAAKvkc,KAAKgB,QAAQiuB,uBAAuB,oBAAoBpyB,OAAQ,CACjE,IAAI+nc,EAAY5kc,KAAK+zJ,KAAKl9G,YAAY,iBACtC72C,KAAKgB,QAAQoB,UAAYwic,EACzB5kc,KAAKgB,QAAQg1B,UAAUvM,OAAO,eAGtC69P,EAAMprR,UAAU+nc,eAAiB,WAC7Bjkc,KAAK2jc,cAAe,EACpB3jc,KAAK85B,eAETwtP,EAAMprR,UAAU6wD,WAAa,SAAUlsD,GAC/Bb,KAAKg7D,cAAc8B,iBACnB98D,KAAK+jc,eAAeljc,GAExB,IAAIymG,EAAetnG,KAAKO,OAAOS,QAAQsC,cAAc,sBACrD0yB,YAAUsxE,EAAc,CAAC,gBAAiB,CAAC,oBACtC3pC,aAAa98D,EAAEo8B,OAAQ,oBACtBj9B,KAAKO,OAAOu8D,iBAAmBa,aAAa98D,EAAEo8B,OAAQ,iBACxDjH,YAAUsxE,EAAc,CAAC,mBAAoB,CAAC,iBAE9CzmG,EAAEo8B,OAAOjH,UAAUzD,SAAS,mBAC5BvyB,KAAKgB,QAAQg1B,UAAUjN,IAAI,WAG3B/oB,KAAKgB,QAAQg1B,UAAUvM,OAAO,YAGtC69P,EAAMprR,UAAU4wD,gBAAkB,SAAUjsD,GACxC,IAAIA,EAAEo8B,OAAOjH,UAAUzD,SAAS,uBAAhC,CAGA,IAAIsya,EAAW7kc,KAAKO,OAAOS,QAAQsC,cAAc,oBACjDtD,KAAKykc,KAAKrxU,cAAcyxU,EAAUhkc,EAAE44D,OAAOwuC,eAC3C,IAAIjnG,EAAUH,EAAEo8B,OAAOjH,UAAUzD,SAAS,gBAAkB1xB,EAAEo8B,OAAS0gC,aAAa98D,EAAEo8B,OAAQ,gBAC9Fj9B,KAAKykc,KAAKxxU,WAAWjyH,GAAS,GAAOH,EAAE44D,OAAOwuC,iBAElDq/K,EAAMprR,UAAU8wD,WAAa,SAAUnsD,GACnC,IAAIo5D,EAAOj6D,KAAKO,OAChB,GAAgD,aAA5CM,EAAE2zC,eAAerlB,aAAa,UAA0B,CACxD,IAAIsqC,EAASQ,EAAKmqE,eAAevjI,EAAE2zC,eAAerlB,aAAa,iBAC/D,GAAI/xB,YAAkBq8D,KAAoC,IAAzBA,EAAOwuC,eACpCtqC,aAAa1D,EAAK4pP,qBAAqBpqP,EAAOh+D,KAAM,UAAU0zB,aAAa,QACvE8qC,EAAKj5D,QAAQmuB,aAAa,MAC9B,OAEJnvB,KAAKmtT,cAAc1zP,EAAOD,SAOlC8tN,EAAMprR,UAAUqtB,iBAAmB,WAC3BvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAO+Y,GAAGyN,KAAiB/mB,KAAKgtI,kBAAmBhtI,MACxDA,KAAKO,OAAO+Y,GAAGyN,KAAsB/mB,KAAKy1J,iBAAkBz1J,MAC5DA,KAAKO,OAAO+Y,GAAGyN,KAAwB/mB,KAAKy1J,iBAAkBz1J,MAC9DA,KAAKO,OAAO+Y,GAAGyN,KAA4B/mB,KAAK65B,kBAAmB75B,MACnEA,KAAKO,OAAO+Y,GAAGyN,IAAc/mB,KAAK0lJ,aAAc1lJ,MAChDA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAK+sD,WAAY/sD,MACnDA,KAAKO,OAAO+Y,GAAGyN,KAAwB/mB,KAAK8sD,gBAAiB9sD,MAC7DA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAKgtD,WAAYhtD,MACnDA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAKgtD,WAAYhtD,MACnDA,KAAKO,OAAO+Y,GAAGyN,KAAwB/mB,KAAK8kc,iBAAkB9kc,MAC9DA,KAAKO,OAAO+Y,GAAGyN,KAAqB/mB,KAAK8kc,iBAAkB9kc,MAC3DA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAK60C,gBAAiB70C,MACxDA,KAAKO,OAAO+Y,GAAGyN,KAAqB/mB,KAAKkvD,WAAYlvD,MACrDA,KAAKO,OAAO+Y,GAAGyN,KAAgB/mB,KAAKkvD,WAAYlvD,MAChDA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAK0vB,OAAQ1vB,MAC/CA,KAAKO,OAAO+Y,GAAGyN,KAAwB/mB,KAAK+kc,kBAAmB/kc,MAC/DA,KAAKO,OAAO+Y,GAAG,sBAAuBtZ,KAAKglc,kBAAmBhlc,MAC9DA,KAAKO,OAAO+Y,GAAG,wBAAyBtZ,KAAKilc,aAAcjlc,MAC3DA,KAAKO,OAAO+Y,GAAG,uBAAwBtZ,KAAKkvD,WAAYlvD,QAM5DsnR,EAAMprR,UAAUytB,oBAAsB,WAC9B3pB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAOsZ,IAAIkN,KAAmB/mB,KAAK0vB,QACxC1vB,KAAKO,OAAOsZ,IAAIkN,KAAiB/mB,KAAKgtI,mBACtChtI,KAAKO,OAAOsZ,IAAIkN,KAAsB/mB,KAAKy1J,kBAC3Cz1J,KAAKO,OAAOsZ,IAAIkN,KAAwB/mB,KAAKy1J,kBAC7Cz1J,KAAKO,OAAOsZ,IAAIkN,KAA4B/mB,KAAK65B,mBACjD75B,KAAKO,OAAOsZ,IAAIkN,IAAc/mB,KAAK0lJ,cACnC1lJ,KAAKO,OAAOsZ,IAAIkN,KAAmB/mB,KAAK+sD,YACxC/sD,KAAKO,OAAOsZ,IAAIkN,KAAwB/mB,KAAK8sD,iBAC7C9sD,KAAKO,OAAOsZ,IAAIkN,KAAmB/mB,KAAKgtD,YACxChtD,KAAKO,OAAOsZ,IAAIkN,KAAmB/mB,KAAKgtD,YACxChtD,KAAKO,OAAOsZ,IAAIkN,KAAwB/mB,KAAK8kc,kBAC7C9kc,KAAKO,OAAOsZ,IAAIkN,KAAqB/mB,KAAK8kc,kBAC1C9kc,KAAKO,OAAOsZ,IAAIkN,KAAmB/mB,KAAK60C,iBACxC70C,KAAKO,OAAOsZ,IAAIkN,KAAwB/mB,KAAK+kc,mBAC7C/kc,KAAKO,OAAOsZ,IAAI,sBAAuB7Z,KAAKglc,mBAC5Chlc,KAAKO,OAAOsZ,IAAI,wBAAyB7Z,KAAKilc,gBAElD39K,EAAMprR,UAAU8oc,kBAAoB,WAC5Bhlc,KAAKO,OAAO0nG,gBAAkBjoG,KAAKO,OAAO41I,0BAC1Cn2I,KAAK0wE,aAGb42M,EAAMprR,UAAUgzD,WAAa,WACzB,IAAI+K,EAAOj6D,KAAKO,OAGhB,GAFAP,KAAKO,OAAOsZ,IAAIkN,KAAqB/mB,KAAKkvD,YAC1ClvD,KAAKO,OAAOsZ,IAAIkN,KAAgB/mB,KAAKkvD,YACjClvD,KAAKO,OAAOmkE,aAAa7nE,QAAUmD,KAAKg7D,cAAcjB,QAAQl9D,OAAQ,CACtEmD,KAAK0kc,gBAAiB,EACtB,IAAK,IAAI1mc,EAAK,EAAGuF,EAAK02D,EAAKe,cAAcjB,QAAS/7D,EAAKuF,EAAG1G,OAAQmB,IAAM,CACpE,IAAImhE,EAAM57D,EAAGvF,GACbgC,KAAK6sT,YAAY1tP,GAErBn/D,KAAK0kc,gBAAiB,IAG9Bp9K,EAAMprR,UAAU24C,gBAAkB,SAAUh0C,GACxC,IAAIo5D,EAAOj6D,KAAKO,OAChB,GAAiB,cAAbM,EAAEilC,QAA4B9lC,KAAKg7D,cAAcjB,QAAQl9D,SACsC,IAA/F,CAAC,eAAgB,aAAc,gBAAiB,cAAe,SAASsB,QAAQ0C,EAAEilC,QAItF,OADAjlC,EAAEyrC,iBACMzrC,EAAEilC,QACN,IAAK,eACL,IAAK,aAED,IAAI4/C,EAAWzrB,EAAKgqF,eAAiBhqF,EAAKszC,wBAA0B,GACpE,GAAI7nB,EAAS7oF,OAAQ,CAIjB,IAHA,IAAIisE,EAAO7O,EAAK++E,kBAAkB11I,cAAc+4D,KAAgBvrC,SAE5Do0a,OAAS,EACJtoc,EAFKq9D,EAAK8R,cAAc2Z,EAASA,EAAS7oF,OAAS,IAEvC8uE,SAAU/uE,GAAK,EAAGA,IACnC,IAAKksE,EAAKlsE,GAAGo5B,UAAUzD,SAAS8pC,OAAkByM,EAAKlsE,GAAGo5B,UAAUzD,SAAS,eAAgB,CACzF2ya,EAASp8X,EAAKlsE,GACd,MAGRoD,KAAKmlc,mBAAmBD,EAAO5hc,cAA2B,eAAbzC,EAAEilC,OAC3C,sBAAwB,0BAEhC,MACJ,IAAK,gBACD9lC,KAAK0wE,YACL,MACJ,IAAK,cACD1wE,KAAKitT,cACL,MACJ,IAAK,QACD,GAAIjtT,KAAKO,OAAO8hG,QAA8E,OAAnEzqE,YAAQ/2B,EAAEo8B,OAAQ,IAAMj9B,KAAKO,OAAOS,QAAQyY,GAAK,cACxE,OAGJ,IAAIzY,EAAUhB,KAAKsC,MAAM48I,oBAErBt0F,EAAM5pD,EAAUA,EAAQ4yC,cAActwC,cAAc,uBAAyB,KACjF,IAAKsnD,EACD,MAEJ5qD,KAAKmlc,mBAAmBv6Y,GACxB,MACJ,IAAK,YAED,IAAIvnD,EAAO42D,EAAKsqF,YAAYpZ,YAAYnqI,QACxC,GAAIqC,GAAQA,EAAK2yB,UAAUzD,SAAS,gBAAiB,CACjD,IAAIknC,EAASQ,EAAKmqE,eAAe/gI,EAAKyzB,kBAAkB3H,aAAa,iBACjEsqC,EAAOD,OAASS,EAAKe,cAAcjB,QAAQ57D,QAAQs7D,EAAOD,OAAS,EACnEx5D,KAAK6sT,YAAYpzP,EAAOD,OAGxBx5D,KAAKmtT,cAAc1zP,EAAOD,UAM9C8tN,EAAMprR,UAAUwpJ,aAAe,SAAU7kJ,GACrCb,KAAKmlc,mBAAmBtkc,EAAEo8B,QAC1Bj9B,KAAKolc,oBAAoBvkc,EAAEo8B,QAC3Bj9B,KAAKqlc,kBAAkBxkc,EAAEo8B,QACzBj9B,KAAKslc,sBAAsBzkc,EAAEo8B,SAEjCqqP,EAAMprR,UAAUmpc,kBAAoB,SAAUpoa,GACtCA,EAAOjH,UAAUzD,SAAS,oBAC1BvyB,KAAKmtT,cAAclwR,EAAO2W,cAAczkB,aAAa,oBAG7Dm4P,EAAMprR,UAAUopc,sBAAwB,SAAUroa,GAC1Cj9B,KAAKg7D,cAAcuqY,mBACftoa,EAAOjH,UAAUzD,SAAS,kBACtB0K,EAAOjH,UAAUzD,SAAS,mBAC1BvyB,KAAKmtT,cAAcntT,KAAKO,OAAO6jI,eAAennG,EAAO2W,cAAczkB,aAAa,iBAAiBqqC,OAGjGx5D,KAAK6sT,YAAY7sT,KAAKO,OAAO6jI,eAAennG,EAAO2W,cAAczkB,aAAa,iBAAiBqqC,OAI/Fv8B,EAAOjH,UAAUzD,SAAS,oBAC1BvyB,KAAKmtT,cAAclwR,EAAO2W,cAAczkB,aAAa,qBAKrEm4P,EAAMprR,UAAUkpc,oBAAsB,SAAUnoa,GAC5C,IAAIg9B,EAAOj6D,KAAKO,OACZilc,EAAU5ta,YAAQqF,EAAQ,sBAC9B,GAAIg9B,EAAK6tC,cAAgB09V,IAAYvoa,EAAOjH,UAAUzD,SAAS,qBAC1D0K,EAAOjH,UAAUzD,SAAS,mBAAoB,CAC/C,IAAIinC,EAAQgsY,EAAQ1ua,kBAAkB3H,aAAa,kBAC/C8qC,EAAK2pP,uBAAuBpqP,GAAOvqC,uBAAuB,eAAepyB,OACzEo9D,EAAK4wK,WAAWrxK,EAAO,cAAc,GAGrCS,EAAK4wK,WAAWrxK,EAAO,aAAa,KAUhD8tN,EAAMprR,UAAUipc,mBAAqB,SAAUloa,GAC3C,IAAIm6F,EAAOz5D,aAAa1gC,EAAQ,uBAC5B0gC,aAAa1gC,EAAQ,wBACzB,GAAIm6F,EAAM,CACN,IAAIquU,EAAUruU,EAAKp0B,UACf2zV,EAASv/T,EAAKxjF,cAAc+3B,SAC5B+5X,EAAW1lc,KAAKO,OAAOy4I,kBAAkB11I,cAAc+4D,KAAgBvrC,SACvEg4C,EAAO,GAAGznE,MAAMC,KAAKokc,GAAUrkc,MAAMs1b,EAAS,EAAG+O,EAAS7oc,QAC1D8oc,OAAS,EACTC,OAAa,EACbjnW,OAAc,EACdh9B,OAAQ,EACRkkY,EAAW,GACX5rY,EAAOj6D,KAAKO,OACZ46D,EAASi8D,EAAKxjF,cAAc3kB,uBAAuB,gBAAgBpyB,OACnEkiG,GAAS,EA0Bb,GAzBIq4B,EAAKphG,UAAUzD,SAAS,yBACxBsD,YAAS,CAACuhG,GAAO,sBACjBhhG,aAAY,CAACghG,GAAO,wBACpBA,EAAKtgG,kBAAkBzI,UAAY,4CACnC0wE,GAAS,EACLp7B,YAAgB1J,IAChBj6D,KAAK8lc,kBAAkB7rY,EAAMh9B,EAAQ8hE,EAAQp9B,EAAOg9B,GAEpD3+F,KAAKO,OAAOy6D,cAAc+xE,mBAC1B/sI,KAAKO,OAAOwpE,cAAcg8X,cAAc3uU,EAAKxjF,iBAIjD+xZ,GAAS,EACTvva,aAAY,CAACghG,GAAO,sBACpBvhG,YAAS,CAACuhG,GAAO,wBACjBA,EAAKtgG,kBAAkBzI,UAAY,4CAC/Bs1C,YAAgB1J,IAChBj6D,KAAK8lc,kBAAkB7rY,EAAMh9B,GAAS0oa,EAAQhkY,EAAOg9B,GAErD3+F,KAAKO,OAAOy6D,cAAc+xE,mBAC1B/sI,KAAKO,OAAOwpE,cAAci8X,gBAAgB5uU,EAAKxjF,gBAGvD5zC,KAAKykc,KAAK9xU,UAAUyE,EAAMr4B,IACrBp7B,YAAgB1J,KAAUj6D,KAAKO,OAAOy6D,cAAc+xE,kBAAmB,CACxE,IAAK,IAAInwI,EAAI,EAAG+E,EAAMmnE,EAAKjsE,OAAQD,EAAI+E,IAC/BmnE,EAAKlsE,GAAG4E,iBAAiB,MAAMikc,IAC/B38X,EAAKlsE,GAAG4E,iBAAiB,MAAMikc,GAASzva,UAAUzD,SAAS,iBAAmBu2C,GAF1ClsE,IAGhC+oc,EACA78X,EAAKlsE,GAAGo3B,MAAMygB,QAAU,OAGpBq0B,EAAKlsE,GAAGqyB,uBAAuB,gBAAgBpyB,SAAWs+D,EAAS,IACnE2N,EAAKlsE,GAAGo3B,MAAMygB,QAAU,IACxBmxZ,EAAa98X,EAAKlsE,GAAG0G,cAAc,yBAE/Buic,EAASjkc,KAAKgkc,GAEd98X,EAAKlsE,GAAGo5B,UAAUzD,SAAS,gBACvBu2C,EAAKlsE,EAAI,GAAGqyB,uBAAuB,uBAAuBpyB,SAC1DisE,EAAKlsE,GAAGo3B,MAAMygB,QAAU,SAUhDz0C,KAAKimc,kCACLjmc,KAAKO,OAAOyZ,OAAO+M,KAAiC,CAAE+hD,KAAM9oE,KAAKO,OAAOwkE,kBAE5E,IAASnoE,EAAI,EAAG+E,EAAMkkc,EAAShpc,OAAQD,EAAI+E,EAAK/E,IAC5Cw5B,aAAY,CAACyva,EAASjpc,IAAK,sBAC3Bi5B,YAAS,CAACgwa,EAASjpc,IAAK,wBACxBipc,EAASjpc,GAAGk6B,kBAAkBzI,UAAY,4CAC1CruB,KAAKmlc,mBAAmBU,EAASjpc,MAI7C0qR,EAAMprR,UAAU+pc,gCAAkC,WAE9C,IADA,IAAIn9X,EAAO9oE,KAAKO,OAAOwkE,gBACdnoE,EAAI,EAAG+E,EAAMmnE,EAAKjsE,OAAQD,EAAI+E,EAAK/E,IACpCksE,EAAKlsE,GAAG69D,WAA2E,SAA9Dz6D,KAAKO,OAAOmuT,mBAAmB5lP,EAAKlsE,GAAGnB,KAAKu4B,MAAMygB,UACvEq0B,EAAKlsE,GAAGsgE,SAAU,IAI9BoqN,EAAMprR,UAAU4pc,kBAAoB,SAAU7rY,EAAMh9B,EAAQy9B,EAAUiH,EAAOg9B,GACzE,IAAIunW,EAAOjsY,EAAKmoP,oBAAoBnlR,EAAOrF,QAAQ,MAAMzI,aAAa,aACtE+2a,EAAKxrY,SAAWA,EAChBN,aAAeH,GACfj6D,KAAKO,OAAOyZ,OAAO+M,KAA8B,KACjD46C,EAAQ1H,EAAK+0C,gBAAgB77C,eAAc,IACrCkrC,QAAUpkC,EAAK+0C,gBAAgBw/C,eAAev0F,EAAK4wF,WAAW5rJ,SAASo/F,QAC7E,IAAIp+F,EAAO,CAAEm6F,YAAa,gBAAiBy1C,UAAWq2T,GACxCjsY,EAAK+0C,gBAAgBjS,QAAQ98F,EAAM0hE,EAAMw+B,iBAC3CvlF,MAAK,SAAU/Z,GAAK,OAAOo5D,EAAKkP,aAAau+N,mBAAmB7mS,EAAGZ,OAEnFqnR,EAAMprR,UAAUk3G,eAAiB,SAAU14C,GAClCA,GACD16D,KAAKO,OAAOyZ,OAAO+M,KAAwB2zC,GAI/C,IAFA,IACI9P,EADA86Y,EAAW1lc,KAAKO,OAAOy4I,kBAAkB11I,cAAc+4D,KAAgBvrC,SAElEl0B,EAAI,EAAG+E,EAAM+jc,EAAS7oc,OAAQD,EAAI+E,EAAK/E,IACxC8oc,EAAS9oc,GAAG4E,iBAAiB,8CAA8C3E,SAC3E+tD,EAAM86Y,EAAS9oc,GAAG0G,cAAco3D,EAAW,wBAA0B,0BAEjE9P,EAAIv8B,UAAYqsC,EAAW,qBAAuB,uBAClD9P,EAAI9zB,kBAAkBzI,UAAYqsC,EAAW,4CACzC,6CAEFgrY,EAAS9oc,GAAGk6B,kBAAkBd,UAAUzD,SAAS,uBACnDmza,EAAS9oc,GAAGk6B,kBAAkBd,UAAUzD,SAAS,0BACjDmza,EAAS9oc,GAAGo3B,MAAMygB,QAAUimB,EAAW,GAAK,SAIhDgrY,EAAS9oc,GAAGo3B,MAAMygB,QAAUimB,EAAW,GAAK,OAGpD16D,KAAKimc,kCACLjmc,KAAKO,OAAOyZ,OAAO+M,KAAiC,CAAE+hD,KAAM9oE,KAAKO,OAAOwkE,mBAO5EuiN,EAAMprR,UAAUw0E,UAAY,WACxB1wE,KAAKozG,gBAAe,IAOxBk0K,EAAMprR,UAAU+wT,YAAc,WAC1BjtT,KAAKozG,gBAAe,IAQxBk0K,EAAMprR,UAAUwzB,OAAS,WACrB1vB,KAAK+zJ,KAAO/zJ,KAAK+/D,eAAeE,WAAW,gBAC3CjgE,KAAKmmc,sBACLnmc,KAAKomc,kBACLpmc,KAAKqmc,oBAET/+K,EAAMprR,UAAUiqc,oBAAsB,WAClC,IAAIG,EAAYtmc,KAAKO,OAAOS,QAAQsC,cAAc,oBAC9Cgjc,GACA78a,aAAO68a,GAEXtmc,KAAKgB,QAAUhB,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,kBAAmB0E,MAAO,CAAE,SAAY,QACjG/yB,KAAKg7D,cAAc8B,iBACnB98D,KAAKgB,QAAQg1B,UAAUjN,IAAI,mBAE/B/oB,KAAKumc,sBACLvmc,KAAKO,OAAOS,QAAQ61B,aAAa72B,KAAKgB,QAAShB,KAAKO,OAAOS,QAAQ8iG,YAC9D9jG,KAAKg7D,cAAcuvE,eACpBvqI,KAAKgB,QAAQgzB,MAAMygB,QAAU,SAGrC6yO,EAAMprR,UAAUqqc,oBAAsB,SAAUztT,GAC5C,GAAI94I,KAAKg7D,cAAcuvE,eAAiBvqI,KAAKg7D,cAAcjB,QAAQl9D,OAAQ,CACvE,IAAI+nc,EAAY5kc,KAAK+zJ,KAAKl9G,YAAY,iBACtC72C,KAAKgB,QAAQoB,UAAYwic,EACzB5kc,KAAKgB,QAAQg1B,UAAUvM,OAAO,kBAGzBzpB,KAAKgB,QAAQoB,YAAcpC,KAAK+zJ,KAAKl9G,YAAY,mBAA2D,IAAtC72C,KAAKg7D,cAAcjB,QAAQl9D,SAC9FmD,KAAK4jc,iBAAmB5jc,KAAK6jc,mBAAsB/qT,KACvD94I,KAAKgB,QAAQoB,UAAY,IAE7BpC,KAAKgB,QAAQg1B,UAAUjN,IAAI,cAGnCu+P,EAAMprR,UAAUkqc,gBAAkB,WAC9Bpmc,KAAKwmc,wBACLxmc,KAAKymc,yBAETn/K,EAAMprR,UAAUuqc,sBAAwB,WAEzB,IAAIt8Z,IAAUnqC,KAAKgB,QAAS,CACnC0sC,WAAY1tC,KAAKg7D,cAAc8B,gBAAkB,UAAY,qBAC7D5uB,SAAUluC,KAAKg7D,cAAc8B,iBAAmB,GAAK,EACrDvxC,OAAQvrB,KAAKurB,OACbijB,UAAWxuC,KAAKwuC,UAChB8B,KAAMtwC,KAAKswC,KACX2B,SAAUjyC,KAAKiyC,YAGvBq1O,EAAMprR,UAAUsqc,sBAAwB,WAEzB,IAAIxyZ,IAAUh0C,KAAKgB,QAAS,CACnCozC,OAAQ,eACRP,KAAM7zC,KAAK6zC,QASnByzO,EAAMprR,UAAU2wT,YAAc,SAAUxwM,GACpC,IAAIpiD,EAAOj6D,KAAKO,OACZk5D,EAASQ,EAAKqM,iBAAiB+1C,GAC/Bj/G,YAAkBq8D,KAAoC,IAAzBA,EAAOwuC,eACnCjoG,KAAK0kc,gBAAkB1kc,KAAKg7D,cAAcjB,QAAQ57D,QAAQk+G,IAAe,EAC1Er8G,KAAKO,OAAOsuJ,IAAI,yBAA0B,CAAEl7C,WAAY3zG,KAAK66B,gBAAiBwhF,WAAY5iD,EAAOsD,aAGjGyC,YAAgBvF,GAChBA,EAAKjgD,OAAO+M,KAAqB,CAAEiU,SAAUh7B,KAAMwZ,QAASxZ,KAAK6sT,YAAavjK,KAAMjtC,KAGxF5iD,EAAOyD,QAAUjD,EAAKe,cAAc4N,kBACpC5oE,KAAK0mc,QAAUrqV,EACfr8G,KAAK4jc,gBAAiB,EAClB5jc,KAAK0kc,eACL1kc,KAAK85B,cAGL95B,KAAKskc,kBAAkBjoV,GAE3Br8G,KAAKumc,sBACLvmc,KAAK4jc,gBAAiB,IAQ1Bt8K,EAAMprR,UAAUixT,cAAgB,SAAU9wM,GACtC,IAAIpiD,EAAOj6D,KAAKO,OACZk5D,EAASz5D,KAAKO,OAAO6lE,2BACrBpmE,KAAKO,OAAOw5D,QAAQ7oC,QAAO,SAAUtpB,GAAK,OAAOA,EAAE4xD,QAAU6iD,KAAe,GAAKpiD,EAAKqM,iBAAiB+1C,GAC3G,KAAIj/G,YAAkBq8D,KAAoC,IAAzBA,EAAOwuC,eAA2BjoG,KAAKg7D,cAAcjB,QAAQ57D,QAAQk+G,GAAc,GAGpH,GAAI78C,YAAgBvF,GAChBA,EAAKjgD,OAAO+M,KAAqB,CAAEiU,SAAUh7B,KAAMwZ,QAASxZ,KAAKmtT,cAAe7jK,KAAMjtC,QAD1F,CAIA5iD,EAAOyD,SAAU,EACjBl9D,KAAK0mc,QAAUjtY,EAAOD,MACtB,IAAIO,EAAUh/C,KAAKC,MAAMD,KAAK0uB,UAAUzpC,KAAKg7D,cAAcjB,UAE3D,GADAA,EAAQjgD,OAAOigD,EAAQ57D,QAAQ6B,KAAK0mc,SAAU,GAC1C1mc,KAAKu+F,cAAcpgG,QAAQk+G,GAAc,EACzC,IAAK,IAAIz/G,EAAI,EAAG+E,EAAMs4D,EAAKkX,aAAapX,QAAQl9D,OAAQD,EAAI+E,EAAK/E,IAC7D,GAAIy/G,IAAepiD,EAAKkX,aAAapX,QAAQn9D,GAAG48D,MAAO,CACnDS,EAAKkX,aAAapX,QAAQjgD,OAAOld,EAAG,GACpC,MAIRoD,KAAKg7D,cAAc8B,kBACnB98D,KAAK8jc,kBAAoB/pY,GAE7B/5D,KAAKg7D,cAAcjB,QAAUA,EACzBE,EAAKguC,gBACLjoG,KAAK6jc,kBAAmB,EACxB7jc,KAAKO,OAAO+4B,cASpBguP,EAAMprR,UAAU49B,YAAc,WAC1B,IAAIigC,EAAUh/C,KAAKC,MAAMD,KAAK0uB,UAAUzpC,KAAKg7D,cAAcjB,UAC3DA,EAAU/5D,KAAK8jc,kBAAkBjnc,OAASke,KAAKC,MAAMD,KAAK0uB,UAAUzpC,KAAK8jc,oBAAsB/pY,EAC3F/5D,KAAK2jc,gBACkC,IAAnC5pY,EAAQ57D,QAAQ6B,KAAK0mc,UACrB3sY,EAAQn4D,KAAK5B,KAAK0mc,SAEtB1mc,KAAK2mc,qBAAqB3mc,KAAK0mc,UAEnC1mc,KAAK2jc,cAAe,EACpB3jc,KAAKO,OAAOy6D,cAAcjB,QAAUA,EACpC/5D,KAAKO,OAAO+4B,YAShBguP,EAAMprR,UAAUu5J,iBAAmB,SAAU50J,GACnB,aAAlBA,EAAEu5F,YACFp6F,KAAKskc,kBAAkBtkc,KAAK0mc,SAG5B1mc,KAAKwkc,uBAAuBxkc,KAAK0mc,SAErC,IAAIzmc,EAAOD,KAAKg7D,cAAcjB,QAAQ57D,QAAQ6B,KAAK0mc,UAAY,EAAI,CAC/DrqV,WAAYr8G,KAAK0mc,QAAStsW,YAAa,WAAYjvF,KAAM4b,KACzD,CAAEqzE,YAAa,aAAcjvF,KAAM4b,KACvC/mB,KAAKO,OAAOwpB,QAAQhD,IAAuBzoB,YAAOuC,EAAGZ,IACrDD,KAAK0mc,QAAU,MAEnBp/K,EAAMprR,UAAUyqc,qBAAuB,SAAUD,GAE7C,IADA,IAAI9pc,EAAI,EACDA,EAAIoD,KAAKO,OAAO4wE,aAAapX,QAAQl9D,QACpCmD,KAAKO,OAAO4wE,aAAapX,QAAQn9D,GAAG48D,QAAUktY,GAGlD9pc,IAEAoD,KAAKO,OAAO4wE,aAAapX,QAAQl9D,SAAWD,EAC5CoD,KAAKO,OAAO4wE,aAAapX,QAAQn4D,KAAK,CAAE43D,MAAOktY,EAASnnW,UAAW,YAAaF,aAAa,IAEvFr/F,KAAKO,OAAOunG,eAClB9nG,KAAKO,OAAO4wE,aAAapX,QAAQn9D,GAAG2iG,UAAY,cAGxD+nL,EAAMprR,UAAUiF,cAAgB,SAAUq4D,GACtC,IAAIS,EAAOj6D,KAAKO,OACZg/F,EAAY,YACZqnW,EAAW5mc,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,iCACzDw4a,EAAgB7mc,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,kCAC9Dy4a,EAAW9mc,KAAKO,OAAOY,cAAc,MAAO,CAAE4xB,MAAO,CAAE,iBAAkBymC,KACzEuF,YAAevF,IACfstY,EAASlxa,aAAa,iBAAkBopC,YAAkBxF,IAE9D,IAAIC,EAASz5D,KAAKO,OAAO+lE,iBAAiB9M,GAEtCutY,EAAa9sY,EAAK4pP,qBAAqBpqP,EAAOh+D,KA8ClD,OArCIuE,KAAKg7D,cAAc8B,iBACnBgqY,EAAS9kc,YAAYhC,KAAKO,OAAOY,cAAc,OAAQ,CACnDktB,UAAW,6BAA8BjsB,UAAW,SACpD2wB,MAAO,CAAEq0H,MAAO,OAAQrlD,SAAU,KAAM,aAAc,8BAG9D+kW,EAAS9kc,YAAYhC,KAAKO,OAAOY,cAAc,OAAQ,CACnDktB,UAAW,cAAejsB,UAAWq3D,EAAOsD,WAC5ChqC,MAAO,CAAEgvE,SAAU,KAAM,aAAc,8BAGvC/hG,KAAKg7D,cAAcuqY,kBACnBuB,EAAS9kc,YAAYhC,KAAKO,OAAOY,cAAc,OAAQ,CACnDktB,UAAW,6DAA8DjsB,UAAW,SACpF2wB,MAAO,CAAEgvE,SAAU,KAAM,aAAc,qBAG3CglW,EAAWvlc,iBAAiB,8BAA8B3E,SAC1D0iG,EAAYwnW,EAAWzjc,cAAc,gBAAkB,YAAc,cAEzEwjc,EAAS9kc,YAAYhC,KAAKO,OAAOY,cAAc,OAAQ,CACnDktB,UAAW,yBACCkxE,EAAU9nF,cAAgB,WAAa8nF,EAAU9nF,cAAgBrV,UAAW,SACxF2wB,MAAO,CAAEgvE,SAAU,KAAM,aAAc,8BAE3C+kW,EAAS9kc,YAAYhC,KAAKO,OAAOY,cAAc,OAAQ,CACnDktB,UAAW,sCAAuCjsB,UAAW,SAC7D2wB,MAAO,CAAEq0H,MAAOpnJ,KAAK+zJ,KAAKl9G,YAAY,WAClCkrD,SAAU,KAAM,aAAc,8BAClChuE,OAAQ/zB,KAAKg7D,cAAcgsY,kBAAoB,GAAK,kBAExDH,EAAc7kc,YAAY8kc,GACtB9mc,KAAKg7D,cAAc8B,kBACnB8pY,EAAS5kc,YAAY6kc,GACrBD,EAAS5kc,YAAYhC,KAAKinc,mBAC1BJ,EAAgBD,GAEbC,GAEXv/K,EAAMprR,UAAUooc,kBAAoB,SAAU9qY,GAC1C,IAAI8sY,EAAYvnY,YAAevF,GAASx5D,KAAKO,OAAOS,QAAQsC,cAAc,uCACtE07D,YAAkBxF,GAAS,KAAOx5D,KAAKO,OAAOS,QAAQsC,cAAc,uCAAyCk2D,EAAQ,KACzH,IAAIx5D,KAAKg7D,cAAc8B,kBAAmBwpY,EAA1C,CAGA,IAAI7sY,EAASz5D,KAAKO,OAAO+lE,iBAAiB9M,GAC1C,IAAIp8D,YAAkBq8D,GAAtB,CAGA,IAAIotY,EAAgB7mc,KAAKmB,cAAcq4D,GACvC,GAAIx5D,KAAKg7D,cAAc8B,gBAAiB,CACpC,IAAItiD,EAAQxa,KAAKgB,QAAQiuB,uBAAuB,oBAAoBpyB,OACpEgqc,EAAcjxa,aAAa,QAASpb,EAAMrN,YAE9CnN,KAAKgB,QAAQgB,YAAY6kc,MAG7Bv/K,EAAMprR,UAAU+qc,gBAAkB,WAC9B,OAAOjnc,KAAKO,OAAOY,cAAc,OAAQ,CACrCktB,UAAW,kCAAmCjsB,UAAW,SACzD2wB,MAAO,CAAEgvE,SAAU,KAAM,aAAc,qCACvChuE,OAAQ/zB,KAAKg7D,cAAcgsY,kBAAoB,GAAK,kBAG5D1/K,EAAMprR,UAAUmqc,iBAAmB,SAAU76T,GACzC,GAAIxrI,KAAKg7D,cAAcuqY,iBAEnB,IADA,IAAIvgb,EAAU,GAAG3jB,MAAMC,KAAKtB,KAAKO,OAAOsnI,iBAAiB54G,uBAAuB,oBACvEryB,EAAI,EAAG+E,EAAMqjB,EAAQnoB,OAAQD,EAAI+E,EAAK/E,IAC3C,IAAOooB,EAAQpoB,GAAGo5B,UAAUzD,SAAS,iBAAoBvN,EAAQpoB,GAAGo5B,UAAUzD,SAAS,sBAAyB,CAC5G,IAAIknC,EAASz5D,KAAKO,OAAO6jI,eAAep/G,EAAQpoB,GAAGuyB,aAAa,mBAC3DnvB,KAAKO,OAAO2nG,gBAAmBloG,KAAKO,OAAO2nG,iBAAmBzuC,EAAOyuC,kBAClEljF,EAAQpoB,GAAGqyB,uBAAuB,kBAAkBpyB,QACpD4sB,aAAOzE,EAAQpoB,GAAG4E,iBAAiB,mBAAmB,IAErDgqI,GACDxmH,EAAQpoB,GAAGoF,YAAYhC,KAAKO,OAAOY,cAAc,OAAQ,CACrDktB,UAAW,2BACNruB,KAAKg7D,cAAcjB,QAAQ57D,QAAQs7D,EAAOD,QAAU,EAAI,iCACnD,8BAA+BzmC,MAAO,CAAEgvE,SAAU,KAAM,aAAc,sBAQ5GulL,EAAMprR,UAAUsoc,uBAAyB,SAAUhrY,GAC/C,IAAKp8D,YAAkB4C,KAAKknc,eAAe1tY,IAAS,CAChD,IAAIn2D,EAAOrD,KAAKknc,eAAe1tY,GAC/B,GAAIx5D,KAAKg7D,cAAc8B,gBAAiB,CACpC,IAAIvnC,EAAWooC,aAAat6D,EAAM,oBAClComB,aAAO8L,QAGP9L,aAAOpmB,GAEXrD,KAAKumc,sBAETvmc,KAAK6jc,kBAAmB,GAE5Bv8K,EAAMprR,UAAU29B,kBAAoB,SAAUh5B,GAC1C,GAAIA,EAAEyjC,SAAWtkC,KAAK66B,gBAGtB,IAAK,IAAI78B,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAK4D,EAAEgzB,YAAa71B,EAAKuF,EAAG1G,OAAQmB,IAAM,CACnE,IAAImG,EAAOZ,EAAGvF,GACd,OAAQmG,GACJ,IAAK,UAED,IAAIlE,OAAO,EACX,GAAID,KAAK0kc,eAAgB,CACrB,GAAK1kc,KAAK6jc,iBAyBN5jc,EAAO,CAAEo8G,WAAYr8G,KAAK0mc,QAAStsW,YAAa,aAAcjvF,KAAM4b,SAzB5C,CACxB,IAAK/mB,KAAK4jc,eAAgB,CACtB5jc,KAAKumc,qBAAoB,GACzB,IAAK,IAAIp+b,EAAI,EAAGA,EAAInI,KAAKO,OAAO4wE,aAAapX,QAAQl9D,OAAQsL,IACrDnI,KAAKO,OAAO4wE,aAAapX,QAAQ5xD,GAAGk3F,cACpCr/F,KAAKO,OAAO4wE,aAAapX,QAAQjgD,OAAO3R,EAAG,GAC3CA,KAGR,IAAK,IAAIvL,EAAI,EAAGA,EAAIoD,KAAKg7D,cAAcjB,QAAQl9D,OAAQD,IAAK,CACxDoD,KAAK0mc,QAAU1mc,KAAKg7D,cAAcjB,QAAQn9D,GAChCoD,KAAKO,OAAO+lE,iBAAiBtmE,KAAK0mc,SACxCxpY,QAAUl9D,KAAKO,OAAOy6D,cAAc4N,kBACxC5oE,KAAK2mc,qBAAqB3mc,KAAK0mc,SAC3B9pc,EAAIoD,KAAKg7D,cAAcjB,QAAQl9D,OAAS,GACxCmD,KAAKskc,kBAAkBtkc,KAAKg7D,cAAcjB,QAAQn9D,KAI9DqD,EAAO,CACHo8G,WAAYr8G,KAAK0mc,QAAStsW,YAAav5F,EAAEgzB,WAAW1vB,GAAMtH,OAAS,WAAa,aAChFsO,KAAM4b,KAMd,IAAK/mB,KAAKg7D,cAAc4N,kBACpB,KAAI7O,EAAUl5D,EAAE63B,cAAcv0B,GAC9B,IAASvH,EAAI,EAAGA,EAAIm9D,EAAQl9D,OAAQD,KACgB,IAA5CiE,EAAEgzB,WAAW1vB,GAAMhG,QAAQ47D,EAAQn9D,MACnCoD,KAAKO,OAAO+lE,iBAAiBvM,EAAQn9D,IAAIsgE,SAAU,GAI/Dl9D,KAAKO,OAAOyZ,OAAO+M,KAAqB9mB,GAE5C,MACJ,IAAK,eACDD,KAAKumc,sBACDvmc,KAAKg7D,cAAcuvE,aACnBvqI,KAAKgB,QAAQgzB,MAAMygB,QAAU,GAG7Bz0C,KAAKgB,QAAQgzB,MAAMygB,QAAU,OAEjC,MACJ,IAAK,oBACDz0C,KAAKmnc,oBAAoBnnc,KAAKg7D,cAAc4N,mBAC5C5oE,KAAKO,OAAOyZ,OAAO+M,KAAqB,CAAEqzE,YAAa,YACvD,MACJ,IAAK,oBACDp6F,KAAKonc,uBAAuBpnc,KAAKg7D,cAAcgsY,kBAAmB,mBAClE,MACJ,IAAK,mBACDhnc,KAAKonc,uBAAuBpnc,KAAKg7D,cAAcuqY,iBAAkB,wBACjEvlc,KAAKO,OAAO49S,gBACZ,MACJ,IAAK,oBACDn+S,KAAKO,OAAOw9S,mBAK5Bz2B,EAAMprR,UAAUirc,oBAAsB,SAAU5wa,GAC5C,IAAK,IAAI35B,EAAI,EAAGA,EAAIoD,KAAKg7D,cAAcjB,QAAQl9D,OAAQD,IACnDoD,KAAKO,OAAO+lE,iBAAiBtmE,KAAKg7D,cAAcjB,QAAQn9D,IAAIsgE,QAAU3mC,GAG9E+wP,EAAMprR,UAAUkrc,uBAAyB,SAAU7wa,EAAWlI,GAE1D,IADA,IAAIm3a,EAAU,GAAGnkc,MAAMC,KAAKtB,KAAKgB,QAAQiuB,uBAAuBZ,IACvDzxB,EAAI,EAAGA,EAAI4oc,EAAQ3oc,OAAQD,IAChC4oc,EAAQ5oc,GAAGo3B,MAAMygB,QAAUle,EAAY,GAAK,QAGpD+wP,EAAMprR,UAAU8wI,kBAAoB,SAAUnsI,GACtCA,EAAEyjC,SAAWtkC,KAAK66B,iBAAmBh6B,EAAE2zI,QACvCx0I,KAAK0vB,UASb43P,EAAMprR,UAAUif,QAAU,WACtB,IAAI4yR,EAAc/tS,KAAKO,OAAOS,QACzB+sS,IAAiBA,EAAYzqS,cAAc,IAAM+4D,MAAyB0xO,EAAYzqS,cAAc,IAAM+4D,QAI1Gr8D,KAAKO,OAAO44B,aAAgBn5B,KAAKO,OAAOq4B,YACzC54B,KAAKktT,gBAETltT,KAAK2pB,sBACL3pB,KAAKqmc,kBAAiB,GACtB58a,aAAOzpB,KAAKgB,WAQhBsmR,EAAMprR,UAAUgxT,cAAgB,WAC5B,IAAIrgN,EAAO9xF,KAAKC,MAAMD,KAAK0uB,UAAUzpC,KAAKg7D,cAAcjB,UACxD/5D,KAAK0kc,gBAAiB,EACtB,IAAK,IAAI9nc,EAAI,EAAG+E,EAAMkrG,EAAKhwG,OAAQD,EAAI+E,EAAK/E,IACpCA,IAAO+E,EAAM,IACb3B,KAAK0kc,gBAAiB,GAE1B1kc,KAAKmtT,cAActgN,EAAKjwG,IAE5BoD,KAAK0kc,gBAAiB,GAQ1Bp9K,EAAMprR,UAAU2+B,cAAgB,WAC5B,MAAO,SAEXysP,EAAMprR,UAAU4oc,iBAAmB,WAC/B,IACI//a,EADAk1C,EAAOj6D,KAAKO,OAEZssG,EAAO5yC,EAAKkX,aAAapX,QACzB8uP,EAAQ5uP,EAAKe,cAAcjB,QAC3BolC,EAAan/F,KAAKO,OAAOmkE,aAAajgE,KAAI,SAAUmD,GAAK,OAAOA,EAAE4xD,SACtEx5D,KAAKqmc,mBACL,IAAK,IAAIzpc,EAAI,EAAG+E,EAAMkrG,EAAKhwG,OAAQD,EAAI+E,EAAK/E,KACG,IAAvCuiG,EAAWhhG,QAAQ0uG,EAAKjwG,GAAG48D,SAG/Bz0C,EAASk1C,EAAK2pP,uBAAuB/2M,EAAKjwG,GAAG48D,QACxCS,EAAK6tC,eAAiB9nG,KAAKu+F,cAAcpgG,QAAQ0uG,EAAKjwG,GAAG48D,QAAU,GACpEx5D,KAAKg7D,cAAcjB,QAAQ57D,QAAQ0uG,EAAKjwG,GAAG48D,QAAU,IACrDxjC,YAAUjR,EAAOzhB,cAAc,oBAAqB,CAAC,cAAe,oBAAqB,IACrFupG,EAAKhwG,OAAS,GACdkoB,EAAOzhB,cAAc,oBAAoBtB,YAAYhC,KAAKO,OAAOY,cAAc,OAAQ,CAAEktB,UAAW,eAAgBjsB,WAAYxF,EAAI,GAAGuQ,eAGtInN,KAAKknc,eAAer6V,EAAKjwG,GAAG48D,QAAUx5D,KAAKknc,eAAer6V,EAAKjwG,GAAG48D,OAAOvqC,uBAAuB,eAAepyB,SAC1F,cAAtBgwG,EAAKjwG,GAAG2iG,UACRvpE,YAAUh2B,KAAKknc,eAAer6V,EAAKjwG,GAAG48D,OAAOl2D,cAAc,gBAAiB,CAAC,cAAe,oBAAqB,CAAC,eAAgB,sBAGlI0yB,YAAUh2B,KAAKknc,eAAer6V,EAAKjwG,GAAG48D,OAAOl2D,cAAc,gBAAiB,CAAC,eAAgB,qBAAsB,CAAC,cAAe,uBAI/I,IAAS1G,EAAI,EAAG+E,EAAMknT,EAAMhsT,OAAQD,EAAI+E,EAAK/E,KACH,IAAlCuiG,EAAWhhG,QAAQ0qT,EAAMjsT,KAG7Bq9D,EAAK2pP,uBAAuBiF,EAAMjsT,IAAIg5B,aAAa,eAAgB,SAG3E0xP,EAAMprR,UAAUgrc,eAAiB,SAAU1tY,GACvC,OAAIx5D,KAAKgB,SAAWhB,KAAKgB,QAAQsC,cAAc,oBAAsBk2D,EAAQ,MAClEx5D,KAAKgB,QAAQsC,cAAc,oBAAsBk2D,EAAQ,MAAM5lB,cAEnE,MAEX0zO,EAAMprR,UAAU6oc,kBAAoB,SAAUsC,GAC1C,IAAI/oY,EAAat+D,KAAKsnc,uBAAuBD,GACzCp0O,EAAUjzN,KAAK2kc,eAAen4V,aAAaluC,EAAY,IACvDi+C,EAAcv8G,KAAKO,OAAOwkE,gBAAgB7zC,QAAO,SAAU05B,GAAO,OAAQA,EAAI6P,aAC9E8sY,EAAoBt0O,EAAQ/hM,QAAO,SAAUrW,GAAQ,OAAQA,EAAK4/C,aAClEz6D,KAAKO,OAAOgiG,SACZviG,KAAKO,OAAO4uI,gBAAgB,CAAC,sBAAuB,uBAAwB,mBAEhF,IAAK,IAAIvyI,EAAI,EAAGA,EAAI2qc,EAAkB1qc,OAAQD,IAAK,CAC/C,IAAIguD,EAAM28Y,EAAkB3qc,GAExBqD,EAAO,CAAEqgE,MADD1V,EAAI0V,MAAMpvC,QAAO,SAAU6uD,GAAQ,OAAOA,EAAKmuB,cAChCrzF,KAAM+vC,EAAI/vC,KAAM2sb,QAASjrV,EAAY3/G,GAAK2/G,EAAY3/G,GAAGnB,IAAM,IAC1FuE,KAAKO,OAAOyZ,OAAO+M,KAA6B9mB,KAGxDqnR,EAAMprR,UAAUorc,uBAAyB,SAAUD,GAC/C,IAAII,EAAcJ,aAAsBjpc,MAAQipc,EAAa,GACzDv+X,EAAO9oE,KAAKO,OAAOwkE,gBACnB2iY,EAAW1nc,KAAKO,OAAOqnE,wBACvB+/X,EAAc,GACdC,EAAW9+X,EAAKrkE,KAAI,SAAUmmD,GAI9B,MAHiB,WAAbA,EAAIy9C,MACJs/V,EAAY/lc,KAAKgpD,EAAI/vC,MAElB+vC,EAAI2e,mBAAmBrrE,OAAS0sD,EAAI2e,QAAU3e,EAAI/vC,QAEzD2+C,EAAQx5D,KAAKO,OAAOonE,0BAA0B,GAClDigY,EAAkC,IAAvBH,EAAY5qc,OAAe+qc,EAAWH,EACjD,IAAIl2Q,EAAYm2Q,EAASjjc,KAAI,SAAU+2C,GACnC,IACIh/C,EADAqrc,EAAUnuY,KAAS3+B,UAAUy+B,EAAOhe,GAMxC,OAJaosZ,EAASl+a,MAAK,SAAUo+a,GAEjC,OADAtrc,EAAQsrc,EACDD,IAAYnuY,KAAS3+B,UAAUy+B,EAAOsuY,MAEjCtrc,EAAQg/C,KAExBusZ,EAAQV,EACZ,KAAMU,EAAM58b,MAAuB,WAAf48b,EAAM58b,OAAsBw8b,EAAY9qc,OAAS,EACjE,IAAK,IAAID,EAAI,EAAGA,EAAI+qc,EAAY9qc,OAAQD,IAAK,CACzC,IAAI4d,EAAQ+2K,EAAUpzL,QAAQwpc,EAAY/qc,IAC1C20L,EAAUz3K,OAAOU,EAAO,GAKhC,IAFA,IAWI7b,EACAqpc,EAZA1pY,EAAa,GACb2pY,EAAgBjoc,KAAKO,OAAO+9D,WACvBn2D,EAAI,EAAGA,EAAI8/b,EAAcprc,OAAQsL,IAEtC,IADA,IAAIyiD,EAAMq9Y,EAAc9/b,GACf0hE,EAAI,EAAGA,EAAIjf,EAAImP,QAAQl9D,OAAQgtE,IAAK,CACzC,IAAIq+X,EAEJA,EAAO,CAAE/8b,KADEy/C,EAAImP,QAAQ8P,GAAG1+D,KAAKgC,WACXsK,cAAe+hD,MAAO5O,EAAImP,QAAQ8P,GAAGrQ,OACzD8E,EAAW18D,KAAKsmc,GAMxB,IADA,IAAIC,EAAcnoc,KAAKO,OAAOy6D,cAAcjB,QACnCr4D,EAAI,EAAGA,EAAIymc,EAAYtrc,OAAQ6E,IACpCsmc,EAASrpc,GAAkB4yL,EAC3B5yL,EAAS+6D,KAASquB,MAAMigX,EAAQG,EAAYzmc,GAAI48D,EAAY,KAAM,MAEtE,OAAO3/D,GAEX2oR,EAAMprR,UAAU+oc,aAAe,SAAUhlc,GAIrC,IAHA,IAAIxE,EAAMwE,EAAKxE,IACXi/D,EAAWz6D,EAAKy6D,SAChBoO,EAAO9oE,KAAKO,OAAOwkE,gBACdnoE,EAAI,EAAGA,EAAIksE,EAAKjsE,OAAQD,IAAK,CAClC,IAAIguD,EAAMke,EAAKlsE,GACf,GAAIguD,EAAInvD,MAAQA,GAAO2B,YAAkB3B,GAAM,CAC3CmvD,EAAI8P,SAAWA,EAsBf,IArBA,IAAI77D,EAAU,SAAUsJ,GACpB,IAAI2vI,EAAWhvE,EAAK3gE,GAChBigc,OAAgB,EAepB,GAdItwT,EAAS1qC,YAAcxiD,EAAInvD,MAC3B2sc,EAAgBt/X,EAAK53C,QAAO,SAAU3P,GAAK,OAAOA,EAAE9lB,MAAQq8I,EAAS1qC,aAAc,IAEnF0qC,EAAS1qC,YAAcxiD,EAAInvD,IAC3Bq8I,EAAS56E,QAAUtS,EAAI8P,SAEjBt9D,YAAkBgrc,IAAkBtwT,EAAS1qC,YAAcg7V,EAAc3sc,MAC3E2sc,EAAc1tY,WAAsC,IAA1B0tY,EAAclrY,QACxC46E,EAAS56E,SAAU,EAEdkrY,EAAc1tY,WAAsC,IAA1B0tY,EAAclrY,UAC7C46E,EAAS56E,SAAU,IAGvB9/D,YAAkB3B,GAClB,MAAO,SAGN0M,EAAIvL,EAAI,EAAGuL,EAAI2gE,EAAKjsE,OAAQsL,IAAK,CAEtC,GAAgB,UADFtJ,EAAQsJ,GAElB,QAIhBnI,KAAKO,OAAOyZ,OAAO+M,KAAqB,CAAE+hD,KAAMA,EAAM7oE,KAAM,CAAEokE,UAAU,EAAOyE,KAAMA,MAElFw+M,EAlkCgB,GCDvBxlM,GAAsB,WAUtB,SAASA,EAAKvhF,EAAQ4wE,EAAcotB,EAAeoD,GAC/C3hG,KAAK0kc,gBAAiB,EACtB1kc,KAAKqoc,gBAAiB,EACtBroc,KAAKykc,KAAO,IAAIjyU,KAChBxyH,KAAK2rC,cAAgB,KACrB3rC,KAAKO,OAASA,EACdP,KAAKmxE,aAAeA,EACpBnxE,KAAKu+F,cAAgBA,EACrBv+F,KAAK+/D,eAAiB4hC,EACtB3hG,KAAKsC,MAAQq/F,EAAQ1hC,WAAW,SAChCjgE,KAAKupB,mBACLvpB,KAAKo4D,sBAieT,OAzdA0pB,EAAK5lF,UAAU49B,YAAc,WACzB,IACItf,EADA8tb,EAAe,CAAE9uY,MAAOx5D,KAAKq8G,WAAY9c,UAAWv/F,KAAKu/F,WAEzDspN,EAAQ7oT,KAAKO,OAAOy6D,cAAcjB,QAClCpmD,GAAO,EACX,GAAK3T,KAAKimT,aAwBNzrS,EAAQxa,KAAKuoc,0BAA0Bvoc,KAAKq8G,cAC/B,GACTr8G,KAAKmxE,aAAapX,QAAQjgD,OAAOU,EAAO,GAE5Cxa,KAAKmxE,aAAapX,QAAQn4D,KAAK0mc,GAE/Btoc,KAAKmxE,aAAapX,QAAU/5D,KAAKmxE,aAAapX,aA7B9C,GAAK8uP,EAAMhsT,OAGN,CAED,IADA,IAAIoqO,EAAa,GACRrqO,EAAI,EAAG+E,EAAMknT,EAAMhsT,OAAQD,EAAI+E,EAAK/E,IAEzC,GADA4d,EAAQxa,KAAKuoc,0BAA0B1/I,EAAMjsT,GAAIqqO,GAC7CjnO,KAAKq8G,aAAewsM,EAAMjsT,GAC1B+W,GAAO,EACPszN,EAAWrlO,KAAK0mc,OAEf,CACD,IAAIE,EAAOxoc,KAAKyoc,uBAAuB5/I,EAAMjsT,IAC7CqqO,EAAWrlO,KAAK,CAAE43D,MAAOgvY,EAAKhvY,MAAO+lC,UAAWipW,EAAKjpW,UAAWF,YAAampW,EAAKnpW,cAGrF1rF,GACDszN,EAAWrlO,KAAK0mc,GAEpBtoc,KAAKmxE,aAAapX,QAAUktK,OAlB5BjnO,KAAKmxE,aAAapX,QAAU,CAACuuY,GA8BrCtoc,KAAKO,OAAO+4B,WACZt5B,KAAK0oc,cAAgB1oc,KAAKq8G,YAS9Bv6B,EAAK5lF,UAAUu5J,iBAAmB,SAAU50J,GACxC,IAAIZ,EAAQD,KAAKwrI,SAEb,CAAEpxC,YAAa,UAAWjvF,KAAM4b,KAFR,CACxBs1F,WAAYr8G,KAAKq8G,WAAY9c,UAAWv/F,KAAKu/F,UAAWnF,YAAa,UAAWjvF,KAAM4b,KAE1F/mB,KAAKwrI,UAAW,EAChBxrI,KAAKO,OAAOwpB,QAAQhD,IAAuBzoB,YAAOuC,EAAGZ,KAUzD6hF,EAAK5lF,UAAU2uO,WAAa,SAAUxuH,EAAY9c,EAAW0mN,GACzD,IAAIhsP,EAAOj6D,KAAKO,QAC8C,IAA1DP,KAAKO,OAAO+lE,iBAAiB+1C,GAAYvU,cAA0B9nG,KAAKO,OAAOstT,oBAC/E7tT,KAAKO,OAAOsuJ,IAAI,yBAA0B,CAAEl7C,WAAY3zG,KAAK66B,gBAAiBwhF,WAAYA,KAGzFpiD,EAAK4uK,oBACNo9E,EAAchsP,EAAK4uK,mBAEnB7oO,KAAKw/D,kBACLvF,EAAKjgD,OAAO+M,KAAqB,CAC7BiU,SAAUh7B,KAAMwZ,QAASxZ,KAAK6qO,WAC9BvhF,KAAMjtC,EAAYktC,KAAMhqD,EAAWiqD,KAAMy8J,KAIjDjmT,KAAK2oc,iBACL3oc,KAAKq8G,WAAaA,EAClBr8G,KAAKu/F,UAAYA,EACjBv/F,KAAKimT,YAAcA,EACnBjmT,KAAK4oc,kBACL5oc,KAAK6oc,iBAAiBxsV,EAAY4pM,GAClCjmT,KAAK85B,iBAETgoD,EAAK5lF,UAAUk8D,oBAAsB,WAC7Bp4D,KAAK+/D,gBACL//D,KAAK+/D,eAAewqO,wBAAwBvqS,KAAMA,KAAKO,OAAO2sE,iBAAkBwB,IAAuB2/I,SAG/GvsI,EAAK5lF,UAAUysc,eAAiB,WAC5B3oc,KAAK8oc,eAAiBjtY,aAAc77D,KAAKmxE,aAAapX,SACtD/5D,KAAK+oc,SAAW/oc,KAAKu+F,eAEzBzc,EAAK5lF,UAAU8sc,gBAAkB,WAC7Bhpc,KAAKqoc,gBAAiB,EACtBroc,KAAKimT,aAAc,EACnBjmT,KAAKO,OAAO24B,cAAc,CAAEi4C,aAAc,CAAEpX,QAAS/5D,KAAK8oc,kBAAoB,GAE9E9oc,KAAKu+F,cAAgBv+F,KAAK+oc,SAC1B/oc,KAAKqoc,gBAAiB,GAE1BvmX,EAAK5lF,UAAU2sc,iBAAmB,SAAUxsV,EAAY4pM,GACpD,IAAKA,EACD,GAAIjmT,KAAKO,OAAO0nG,cACZ,IAAK,IAAIrrG,EAAI,EAAG+E,EAAM3B,KAAKu+F,cAAc1hG,OAAQD,EAAI+E,EAAK/E,IAClDoD,KAAKO,OAAOy6D,cAAcjB,QAAQ57D,QAAQ6B,KAAKu+F,cAAc3hG,IAAM,IACnEoD,KAAKu+F,cAAczkF,OAAOld,EAAG,GAC7B+E,IACA/E,UAKRoD,KAAKu+F,cAAczkF,OAAO,EAAG9Z,KAAKu+F,cAAc1hG,QAGpDmD,KAAKu+F,cAAcpgG,QAAQk+G,GAAc,GACzCr8G,KAAKu+F,cAAc38F,KAAKy6G,IAQhCv6B,EAAK5lF,UAAU29B,kBAAoB,SAAUh5B,GACzC,GAAIA,EAAEyjC,SAAWtkC,KAAK66B,gBAAtB,CAGA,GAAI76B,KAAK0kc,eAAgB,CACrB,IAAIzkc,EAAOD,KAAKmxE,aAAapX,QAAQl9D,OAAS,CAC1Cw/G,WAAYr8G,KAAKq8G,WAAY9c,UAAWv/F,KAAKu/F,UAAWnF,YAAa,UACrEjvF,KAAM4b,IAAoBkW,OAAQj9B,KAAK2rC,cAAe5oB,QAAQ,GAC9D,CACAq3E,YAAa,UAAWjvF,KAAM4b,IAAoBhE,QAAQ,EAC1Dka,OAAQj9B,KAAK2rC,eAEjB3rC,KAAKO,OAAOyZ,OAAO+M,KAAqB9mB,GAE5CD,KAAKipc,sBACLjpc,KAAK4oc,kBACL5oc,KAAKkpc,iBAETpnX,EAAK5lF,UAAU+sc,oBAAsB,WACjCjpc,KAAKu+F,cAAc1hG,OAAS,EAE5B,IADA,IAAIssc,EAAcnpc,KAAKmxE,aAAapX,QAC3Bn9D,EAAI,EAAGA,EAAIusc,EAAYtsc,OAAQD,IAC/Busc,EAAYvsc,GAAGyiG,aAChBr/F,KAAKu+F,cAAc38F,KAAKunc,EAAYvsc,GAAG48D,QASnDsoB,EAAK5lF,UAAU4uO,aAAe,WAC1B,IAAIj+H,EAAO7uC,YAAsBh+D,KAAKmxE,aAAapX,SACnD,GAAI/5D,KAAKw/D,kBACLx/D,KAAKO,OAAOyZ,OAAO+M,KAAqB,CAAEiU,SAAUh7B,KAAMwZ,QAASxZ,KAAK8qO,oBAG5E,IAAK,IAAIluO,EAAI,EAAG+E,EAAMkrG,EAAKhwG,OAAQD,EAAI+E,EAAK/E,IACxCoD,KAAKmmT,iBAAiBt5M,EAAKjwG,GAAG48D,QAGtCsoB,EAAK5lF,UAAUsjE,gBAAkB,WAC7B,OAAOA,YAAgBx/D,KAAKO,SAShCuhF,EAAK5lF,UAAUiqT,iBAAmB,SAAU3sP,GACxC,IAAIS,EAAOj6D,KAAKO,OACZssG,EAAO7sG,KAAKmxE,aAAapX,QAC7B,KAAoB,IAAhB8yC,EAAKhwG,QAAgBmD,KAAKu+F,cAAcpgG,QAAQq7D,GAAS,GAG7D,GAAIx5D,KAAKw/D,kBACLx/D,KAAKO,OAAOyZ,OAAO+M,KAAqB,CAAEiU,SAAUh7B,KAAMwZ,QAASxZ,KAAKmmT,iBAAkB78J,KAAM9vF,QADpG,CAIAx5D,KAAK2oc,iBACL3oc,KAAK4oc,kBACL,IAAK,IAAIhsc,EAAI,EAAG+E,EAAMkrG,EAAKhwG,OAAQD,EAAI+E,EAAK/E,IACxC,GAAIiwG,EAAKjwG,GAAG48D,QAAUA,EAAO,CACzB,GAAIS,EAAKguC,eAAiBhuC,EAAKe,cAAcjB,QAAQ57D,QAAQ0uG,EAAKjwG,GAAG48D,QAAU,EAC3E,SAEJx5D,KAAKu+F,cAAczkF,OAAO9Z,KAAKu+F,cAAcpgG,QAAQ0uG,EAAKjwG,GAAG48D,OAAQ,GACrEqzC,EAAK/yF,OAAOld,EAAG,GACfoD,KAAKwrI,UAAW,EACZxrI,KAAKqoc,gBACLroc,KAAKO,OAAOyZ,OAAO+M,KAAqB,CACpCqzE,YAAa,UAAWjvF,KAAM4b,IAAoBkW,OAAQj9B,KAAK2rC,gBAGvE,MAGR3rC,KAAKkpc,iBAETpnX,EAAK5lF,UAAUqsc,0BAA4B,SAAU/uY,EAAO+kC,GAExD,IADA,IAAIsO,EAAOtO,GAAgCv+F,KAAKmxE,aAAapX,QACpDn9D,EAAI,EAAG+E,EAAMkrG,EAAKhwG,OAAQD,EAAI+E,EAAK/E,IACxC,GAAIiwG,EAAKjwG,GAAG48D,QAAUA,EAClB,OAAO58D,EAGf,OAAQ,GAQZklF,EAAK5lF,UAAU2+B,cAAgB,WAC3B,MAAO,QAEXinD,EAAK5lF,UAAUgzD,WAAa,WAExB,GADAlvD,KAAKO,OAAOsZ,IAAIkN,KAAqB/mB,KAAKkvD,YACtClvD,KAAKO,OAAOmkE,aAAa7nE,QAAUmD,KAAKmxE,aAAapX,QAAQl9D,OAAQ,CACrE,IAAIo9D,EAAOj6D,KAAKO,OAChBP,KAAK0kc,gBAAiB,EACtB1kc,KAAKimT,YAAcjmT,KAAKmxE,aAAapX,QAAQl9D,OAAS,EACtD,IAAK,IAAImB,EAAK,EAAGuF,EAAK02D,EAAKkX,aAAapX,QAAQ14D,QAASrD,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC3E,IAAImhE,EAAM57D,EAAGvF,GACTgC,KAAKu+F,cAAcpgG,QAAQghE,EAAI3F,QAAU,GACzCx5D,KAAK6qO,WAAW1rK,EAAI3F,MAAO2F,EAAIogC,WAAW,GAGlDv/F,KAAKimT,aAAc,EACnBjmT,KAAK0kc,gBAAiB,IAO9B5iX,EAAK5lF,UAAUqtB,iBAAmB,WAC1BvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKqhJ,YAAc,CAAC,CAAEv6H,MAAOC,KAA4BvN,QAASxZ,KAAKo4D,qBACnE,CAAEtxC,MAAOC,KAAqBvN,QAASxZ,KAAKkvD,YAC5C,CAAEpoC,MAAOC,KAAqBvN,QAASxZ,KAAKy1J,kBAC5C,CAAE3uI,MAAOC,KAA4BvN,QAASxZ,KAAK65B,mBACnD,CAAE/S,MAAOC,IAAcvN,QAASxZ,KAAK0lJ,cACrC,CAAE5+H,MAAOC,KAAwBvN,QAASxZ,KAAK8kc,kBAC/C,CAAEh+a,MAAOC,KAAmBvN,QAASxZ,KAAKwwD,YAC1C,CAAE1pC,MAAOC,IAAoBvN,QAASxZ,KAAKorS,mBAC/Cr9N,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,EAAMrhJ,QAMhE8hF,EAAK5lF,UAAUytB,oBAAsB,WAC7B3pB,KAAKO,OAAO44B,aAGhB40C,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,IAQ1Dv/D,EAAK5lF,UAAUif,QAAU,WACrBnb,KAAKqoc,gBAAiB,EACtB,IAAIt6J,EAAc/tS,KAAKO,OAAOS,QACzB+sS,IAAiBA,EAAYzqS,cAAc,IAAM+4D,MAAyB0xO,EAAYzqS,cAAc,IAAM+4D,QAG3Gr8D,KAAKO,OAAOS,QAAQsC,cAAc,gBAAgB2rB,uBAAuB,gBAAgBpyB,SACzFmD,KAAKO,OAAOS,QAAQsC,cAAc,gBAAgB0wB,MAAMygB,QAAU,QAGjEz0C,KAAKO,OAAOq4B,YACb54B,KAAK8qO,eAET9qO,KAAKqoc,gBAAiB,EACtBroc,KAAK2pB,wBAETm4D,EAAK5lF,UAAUkvS,iBAAmB,SAAUvqS,GAClB,YAAlBA,EAAEu5F,cACFp6F,KAAKgpc,kBACLhpc,KAAK8kc,mBACL9kc,KAAKimT,aAAc,IAG3BnkO,EAAK5lF,UAAUwpJ,aAAe,SAAU7kJ,GACpC,IAAIo5D,EAAOj6D,KAAKO,OAChBP,KAAK2rC,cAAgB,KACrB3rC,KAAKopc,kBAAkBvoc,GACvB,IAAIo8B,EAASrF,YAAQ/2B,EAAEo8B,OAAQ,iBAC/B,GAAIA,IAAWp8B,EAAEo8B,OAAOjH,UAAUzD,SAAS,oBACrC0K,EAAOjH,UAAUzD,SAAS,eAC3B1xB,EAAEo8B,OAAOjH,UAAUzD,SAAS,gBAC5B1xB,EAAEo8B,OAAOjH,UAAUzD,SAAS,kBAC5B1xB,EAAEo8B,OAAOjH,UAAUzD,SAAS,qBAC5BorC,aAAa98D,EAAEo8B,OAAQ,0BACtBg9B,EAAKgqF,gBAAkBhqF,EAAKypC,kBAAkBwgD,sBAC5CrjJ,EAAEo8B,OAAOjH,UAAUzD,SAAS,iBAAkB,CAClD,IACI82a,EADSrpc,KAAKO,OACE6jI,eAAennG,EAAO35B,cAAc,oBAAoB6rB,aAAa,iBACrE,aAAhBk6a,EAAOl+b,OACPnL,KAAKspc,aAAarsa,EAAQp8B,EAAGwoc,GACzBhjb,IAAQa,UACRlnB,KAAKupc,UAAU1oc,IAO3B,GAHIo8B,GACAA,EAAOjH,UAAUvM,OAAO,aAExBk0C,aAAa98D,EAAEo8B,OAAQ,sBACvB0gC,aAAa98D,EAAEo8B,OAAQ,sBAAuB,CAC9C,IAAIusa,EAAS5xa,YAAQ/2B,EAAEo8B,OAAQ,mBAAmB9N,aAAa,OAC3DowE,EAAYniG,YAAkBugE,aAAa98D,EAAEo8B,OAAQ,uBACrD,YAAc,aAClBj9B,KAAK6qO,WAAW5wK,EAAKmqE,eAAeolU,GAAQhwY,MAAO+lC,GAAW,KAGtEzd,EAAK5lF,UAAUs0D,WAAa,SAAU3vD,GAClC,IAAIywB,EAAMzwB,EAAEo8B,OACZ,IAAKj9B,KAAKO,OAAO8hG,SAAwB,UAAbxhG,EAAEilC,QAAmC,cAAbjlC,EAAEilC,QAAuC,eAAbjlC,EAAEilC,SAC3ElO,YAAQtG,EAAK,iBAAkB,CAClC,IAAI2L,EAASj9B,KAAKsC,MAAM48I,oBACxB,GAAI9hJ,YAAkB6/B,KAAYA,EAAOjH,UAAUzD,SAAS,kBACpD0K,EAAO35B,cAAc,oBACzB,OAEJ,IAAI67D,EAAMn/D,KAAKO,OAAO6jI,eAAennG,EAAO35B,cAAc,oBAAoB6rB,aAAa,iBAC3FnvB,KAAKspc,aAAarsa,EAAQp8B,EAAGs+D,KAGrC2iB,EAAK5lF,UAAUotc,aAAe,SAAUrsa,EAAQp8B,EAAG44D,GAC/C,IAAIQ,EAAOj6D,KAAKO,OACZi5D,EAAQC,EAAOD,MACnBx5D,KAAK2rC,cAAgB9qC,EAAEo8B,OACvB,IAAIsiE,EAAatiE,EAAOhO,uBAAuB,eAAepyB,OAC1D,aADmE,YAEnEgE,EAAEs0C,UAAan1C,KAAKmxE,aAAas4X,aAAexsa,EAAOhO,uBAAuB,gBAAgBpyB,UACzFo9D,EAAKe,cAAcjB,QAAQ57D,QAAQq7D,IAAU,GAClDx5D,KAAKmmT,iBAAiB3sP,GAGtBx5D,KAAK6qO,WAAWrxK,EAAO+lC,EAAW1+F,EAAEo0C,SAAWj1C,KAAK0pc,uBACJ,IAA3C9ib,UAAUH,UAAUtoB,QAAQ,WAAoB0C,EAAEgxF,UAG/D/P,EAAK5lF,UAAUqtc,UAAY,SAAU1oc,GACjC,IAAIo8B,EAASrF,YAAQ/2B,EAAEo8B,OAAQ,kBAC3Bj9B,KAAKO,OAAOsoO,mBAAuBzrO,YAAkB6/B,KAAWj9B,KAAKO,OAAOstT,qBAC5E1wP,aAAkBn9D,KAAKO,OAAOS,QAAQsC,cAAc,gBAAiBzC,EAAG,0CAA4Cb,KAAKu+F,cAAc1hG,OAAS,EAAI,iBAAmB,MAG/KilF,EAAK5lF,UAAUktc,kBAAoB,SAAUvoc,GACzC,IAAIo8B,EAASp8B,EAAEo8B,OACXrF,YAAQqF,EAAQ,kBAAoBp8B,EAAEo8B,OAAOjH,UAAUzD,SAAS8pC,MAChEzkC,YAAQqF,EAAQ,gBACZA,EAAOjH,UAAUzD,SAAS,kBACrB0K,EAAOjH,UAAUzD,SAAS,kBAK3B0K,EAAOjH,UAAUvM,OAAO,iBACxBzpB,KAAK0pc,sBAAuB,EAC5B1pc,KAAKO,OAAOS,QAAQsC,cAAc,gBAAgB0wB,MAAMygB,QAAU,SANlExX,EAAOjH,UAAUjN,IAAI,iBACrB/oB,KAAK0pc,sBAAuB,IAUpC1pc,KAAKO,OAAOS,QAAQsC,cAAc,gBAAgB0wB,MAAMygB,QAAU,QAG1EqtC,EAAK5lF,UAAUgtc,aAAe,WAM1B,IALA,IACInkb,EACAqsM,EAFAn3J,EAAOj6D,KAAKO,OAGZssG,EAAO7sG,KAAKmxE,aAAapX,QACzBolC,EAAan/F,KAAKO,OAAOmkE,aAAajgE,KAAI,SAAUmD,GAAK,OAAOA,EAAE4xD,SAC7D58D,EAAI,EAAG+E,EAAMkrG,EAAKhwG,OAAQD,EAAI+E,EAAK/E,IACxCmoB,EAASk1C,EAAK2pP,uBAAuB/2M,EAAKjwG,GAAG48D,QACF,IAAvC2lC,EAAWhhG,QAAQ0uG,EAAKjwG,GAAG48D,QAAiBp8D,YAAkB2nB,KAGlE/kB,KAAKykc,KAAK7xU,QAAQ7tG,EAAQ8nF,EAAKjwG,GAAG2iG,WAC9Bv/F,KAAKimT,aAAep5M,EAAKhwG,OAAS,GAClCkoB,EAAOzhB,cAAc,oBAAoBuzB,aAAa72B,KAAKO,OAAOY,cAAc,OAAQ,CAAEktB,UAAW,eAAgBjsB,WAAYxF,EAAI,GAAGuQ,aAAe4X,EAAOzhB,cAAc,kBAEhL8tN,EAAgBrsM,EAAOzhB,cAAc,oBACX,cAAtBupG,EAAKjwG,GAAG2iG,UACRvpE,YAAUo7L,EAAe,CAAC,cAAe,oBAAqB,IAG9Dp7L,YAAUo7L,EAAe,CAAC,eAAgB,qBAAsB,MAI5EtvI,EAAK5lF,UAAU0sc,gBAAkB,SAAU76Z,GAKvC,IAJA,IACIhpB,EADAk1C,EAAOj6D,KAAKO,OAEZssG,EAAO7sG,KAAKmxE,aAAapX,QACzBolC,EAAan/F,KAAKO,OAAOmkE,aAAajgE,KAAI,SAAUmD,GAAK,OAAOA,EAAE4xD,SAC7D58D,EAAImxC,GAAsB,EAAGpsC,EAAOvE,YAAkB2wC,GAA2B8+D,EAAKhwG,OAApBkxC,EAAW,EAAiBnxC,EAAI+E,EAAK/E,IAC5GmoB,EAASk1C,EAAK2pP,uBAAuB/2M,EAAKjwG,GAAG48D,OACzCp8D,YAAkB2nB,IAAYk1C,EAAKguC,eAAiBhuC,EAAKe,cAAcjB,QAAQ57D,QAAQ0uG,EAAKjwG,GAAG48D,QAAU,IACxGz0C,EAAOzhB,cAAc,sBAGiB,IAAvC67F,EAAWhhG,QAAQ0uG,EAAKjwG,GAAG48D,SAG/Bx5D,KAAKykc,KAAK7xU,QAAQ7tG,EAAQ,QAC1BiR,YAAUjR,EAAOzhB,cAAc,oBAAqB,GAAI,CAAC,eAAgB,oBAAqB,cAAe,qBACzGyhB,EAAOzhB,cAAc,kBACrByhB,EAAOzhB,cAAc,oBAAoB4zB,YAAYnS,EAAOzhB,cAAc,oBAItFw+E,EAAK5lF,UAAUusc,uBAAyB,SAAUjvY,GAC9C,IAAK,IAAI58D,EAAI,EAAG+E,EAAM3B,KAAKmxE,aAAapX,QAAQl9D,OAAQD,EAAI+E,EAAK/E,IAC7D,GAAIoD,KAAKmxE,aAAapX,QAAQn9D,GAAG48D,QAAUA,EACvC,OAAOx5D,KAAKmxE,aAAapX,QAAQn9D,GAGzC,OAAO,GAEXklF,EAAK5lF,UAAUytc,eAAiB,WAE5B,IADA,IAAIxqW,EAAan/F,KAAKO,OAAOmkE,aAAajgE,KAAI,SAAUmD,GAAK,OAAOA,EAAE4xD,SAC7Dx7D,EAAK,EAAGuF,EAAKvD,KAAKu+F,cAAevgG,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAImhE,EAAM57D,EAAGvF,GACb,IAAiC,IAA7BmhG,EAAWhhG,QAAQghE,GAAvB,CAGA,IAAIp6C,EAAS/kB,KAAKO,OAAOqjT,uBAAuBzkP,GAChDn/D,KAAKykc,KAAK7xU,QAAQ7tG,EAAQ/kB,KAAKyoc,uBAAuBtpY,GAAKogC,cAGnEzd,EAAK5lF,UAAU4oc,iBAAmB,SAAUjpc,QACzB,IAAXA,IAAqBA,EAAS,CAAEoE,KAAM,CAAEokE,UAAU,KACjDxoE,EAAOoE,KAAKokE,WACbrkE,KAAK4oc,kBACL5oc,KAAKimT,aAAc,EACnBjmT,KAAK4oc,kBACL5oc,KAAKkpc,eACLlpc,KAAKimT,aAAc,EACnBjmT,KAAK2pc,mBAUb7nX,EAAK5lF,UAAUo1T,eAAiB,SAAU98K,GACtCx0I,KAAKyqS,yBAAyBtjE,eAAiB3yF,EAC/Cx0I,KAAKyqS,yBAAyBrhE,wBAE3BtnJ,EAtfe,GCDf8nX,GAAY,CACnB7kb,OAAQ,IAAMs3C,IACd3R,QAAS,IAAM2R,IACfgsC,KAAM,iBACNwhW,UAAW,qBACXC,SAAU,SACVC,MAAO,eACP12N,OAAQ,WACR2qB,KAAM,SACNj7O,OAAQ,WACR5jB,KAAM,SACNo7E,IAAK,cACLwN,MAAO,eACPiiX,QAAS,iBACTv8F,IAAK,cACLntR,MAAO,gBACP2pX,MAAO,eACPC,MAAO,cACP5gC,MAAO,cACP6gC,MAAO,cACPC,UAAW,mBACXC,WAAY,oBACZC,YAAa,kBACbC,SAAU,eAKVC,GAA6B,WAC7B,SAASA,EAAYjqc,EAAQw/D,GACzB//D,KAAKyqc,aAAe,GACpBzqc,KAAK0qc,aAAe,GACpB1qc,KAAK2qc,YAAc,GACnB3qc,KAAK4qc,WAAa5qc,KAAK6qc,eACvB7qc,KAAKO,OAASA,EACdP,KAAK8qc,OAASvqc,EAAOS,QAAQyY,GAC7BzZ,KAAK+/D,eAAiBA,EACtB//D,KAAKupB,mBAiiBT,OA3hBAihb,EAAYtuc,UAAUqtB,iBAAmB,WACjCvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAO+Y,GAAGyN,KAAiB/mB,KAAK+qc,sBAAuB/qc,MAC5DA,KAAKO,OAAO+Y,GAAGyN,KAAoB/mB,KAAK0vB,OAAQ1vB,QAMpDwqc,EAAYtuc,UAAUytB,oBAAsB,WACpC3pB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAOsZ,IAAIkN,KAAoB/mB,KAAK0vB,QACzC1vB,KAAKO,OAAOsZ,IAAIkN,KAAiB/mB,KAAK+qc,uBACtCnib,IAAaa,OAAOzpB,KAAKgB,QAAS,UAAWhB,KAAKuuS,eAAepyS,KAAK6D,SAE1Ewqc,EAAYtuc,UAAUqyS,eAAiB,SAAU1tS,GAC9B,QAAXA,EAAEq7V,MAA8B,IAAZr7V,EAAEw0C,OACtBr1C,KAAKkuO,YAAY7rO,QAEN,WAAXxB,EAAEq7V,OACFl8V,KAAKkuO,YAAY7rO,QACjBrC,KAAKO,OAAOyZ,OAAO+M,KAAqB,MAGhDyjb,EAAYtuc,UAAUwzB,OAAS,WAC3B1vB,KAAKO,OAAOS,QAAQg1B,UAAUjN,IAAI,cAClC/oB,KAAK+zJ,KAAO/zJ,KAAK+/D,eAAeE,WAAW,gBAC3CjgE,KAAKgB,QAAUhB,KAAKO,OAAOY,cAAc,KAAM,CAAEsY,GAAIzZ,KAAK8qc,OAAS,WACnElib,IAAaG,IAAI/oB,KAAKgB,QAAS,UAAWhB,KAAKuuS,eAAepyS,KAAK6D,OACnEA,KAAKO,OAAOS,QAAQgB,YAAYhC,KAAKgB,SACrC,IAAIi8B,EAAS,IAAMj9B,KAAK8qc,OACxB9qc,KAAKkuO,YAAc,IAAIC,KAAK,CACxBp6J,MAAO/zE,KAAKgrc,eACZrka,UAAW3mC,KAAKO,OAAOomC,UACvBK,kBAAmBhnC,KAAKO,OAAOymC,kBAC/BjqB,OAAQ/c,KAAKO,OAAOwc,OACpBkgB,OAAQA,EACR7F,OAAQp3B,KAAKirc,qBAAqB9uc,KAAK6D,MACvC8tO,WAAY9tO,KAAKkrc,sBAAsB/uc,KAAK6D,MAC5Cmrc,OAAQnrc,KAAK8yD,gBAAgB32D,KAAK6D,MAClCguO,QAAShuO,KAAKorc,mBAAmBjvc,KAAK6D,MACtCk2F,SAAU,gBAEdl2F,KAAKkuO,YAAYnnM,SAAS/mC,KAAKgB,UAEnCwpc,EAAYtuc,UAAU6uc,sBAAwB,SAAUlqc,GAChDA,EAAEyjC,SAAWtkC,KAAK66B,iBAAmBh6B,EAAE2zI,SACnCx0I,KAAKkuO,cACLluO,KAAKkuO,YAAY/yN,UACjBsO,aAAOzpB,KAAKgB,SACZhB,KAAKO,OAAOS,QAAQg1B,UAAUvM,OAAO,eAEzCzpB,KAAK0vB,WAGb86a,EAAYtuc,UAAU8uc,aAAe,WAGjC,IAFA,IAAIt9N,EAAY,GACZ29N,EAAc,GACTrtc,EAAK,EAAGuF,EAAKvD,KAAKO,OAAOkzS,iBAAkBz1S,EAAKuF,EAAG1G,OAAQmB,IAAM,CACtE,IAAIw9C,EAAOj4C,EAAGvF,GACM,kBAATw9C,IAA+D,IAA1Cx7C,KAAKsrc,kBAAkBntc,QAAQq9C,IACP,IAAhDA,EAAK+vZ,oBAAoBptc,QAAQ,UACjCktc,EAAYzpc,KAAK5B,KAAKwrc,kBAAkBhwZ,IAGxCkyL,EAAU9rO,KAAK5B,KAAKwrc,kBAAkBhwZ,IAGrB,kBAATA,GACZkyL,EAAU9rO,KAAK45C,GAGvB,GAAI6vZ,EAAYxuc,OAAS,EAAG,CACxB,IAAI4uc,EAAczrc,KAAKwrc,kBAAkB,UACzCC,EAAY13X,MAAQs3X,EACpB39N,EAAU9rO,KAAK6pc,GAEnB,OAAO/9N,GAEX88N,EAAYtuc,UAAUwvc,YAAc,WAChC,IAAIC,EAAYpkc,KAAKC,MAAMxH,KAAKO,OAAO2kE,aAAa2hO,kBAAoB7mS,KAAKO,OAAO2kE,aAAaE,UAIjG,OAHIplE,KAAKO,OAAO2kE,aAAa2hO,kBAAoB7mS,KAAKO,OAAO2kE,aAAaE,WACtEumY,GAAa,GAEVA,GAEXnB,EAAYtuc,UAAU42D,gBAAkB,WACpC9yD,KAAKioO,QAAS,GAOlBuiO,EAAYtuc,UAAU+uc,qBAAuB,SAAUhrc,GAEnD,OADWD,KAAK4rc,aAAa3rc,EAAKu7C,KAAK/hC,KAEnC,IAAK,aACDzZ,KAAKO,OAAOgoT,eAAe,IAC3B,MACJ,IAAK,UACDvoT,KAAKO,OAAOgoT,eAAevoT,KAAK6rc,aAAaryY,OAC7C,MACJ,IAAK,QACDx5D,KAAKO,OAAOssT,YAAY7sT,KAAK6rc,aAAaryY,OAC1C,MACJ,IAAK,UACDx5D,KAAKO,OAAO4sT,cAAcntT,KAAK6rc,aAAaryY,OAC5C,MACJ,IAAK,OACGx5D,KAAKO,OAAOm8I,aAC0B,UAAlC18I,KAAKO,OAAOm/D,aAAaviD,KACrBnd,KAAK4qD,KAAO5qD,KAAK+/E,OAAS3zE,MAAM+J,SAASnW,KAAK+/E,KAAK5wD,aAAaktC,KAAwB,MACxFr8D,KAAKO,OAAOm8I,WAAWsqK,SAAS7wS,SAASnW,KAAK4qD,IAAIz7B,aAAaktC,KAAwB,IAEvFr8D,KAAKO,OAAOmkE,aAAavuD,SAASnW,KAAK+/E,KAAK5wD,aAAaktC,KAAwB,KAAK7C,QAI1Fx5D,KAAKO,OAAOm8I,WAAW+T,UACvBzwJ,KAAKO,OAAOm8I,WAAWoqK,UAAU9mT,KAAK4qD,OAG9C,MACJ,IAAK,SACG5qD,KAAKO,OAAOm8I,aAC0B,UAAlC18I,KAAKO,OAAOm/D,aAAaviD,MACzBnd,KAAKO,OAAOm8I,WAAW+T,UAEqB,IAA5CzwJ,KAAKO,OAAOsrS,qBAAqBhvS,OACjCmD,KAAKO,OAAOm8I,WAAWqqK,UAAU/mT,KAAK4qD,KAGtC5qD,KAAKO,OAAOq9F,gBAGpB,MACJ,IAAK,OACG59F,KAAKO,OAAOm8I,YACZ18I,KAAKO,OAAOm8I,WAAW+T,UAE3B,MACJ,IAAK,SACGzwJ,KAAKO,OAAOm8I,YACZ18I,KAAKO,OAAOm8I,WAAW5jF,YAE3B,MACJ,IAAK,OACD94D,KAAKO,OAAOpB,OACZ,MACJ,IAAK,YACDa,KAAKO,OAAOksT,YACZ,MACJ,IAAK,cACDzsT,KAAKO,OAAO4rT,cACZ,MACJ,IAAK,YACDnsT,KAAKO,OAAOisT,YACZ,MACJ,IAAK,gBACDxsT,KAAKioO,QAAS,EACdjoO,KAAKO,OAAOsqO,WAAW7qO,KAAK6rc,aAAaryY,MAAO,aAChD,MACJ,IAAK,iBACDx5D,KAAKioO,QAAS,EACdjoO,KAAKO,OAAOsqO,WAAW7qO,KAAK6rc,aAAaryY,MAAO,cAChD,MACJ,IAAK,YACDx5D,KAAKO,OAAOulT,SAAS,GACrB,MACJ,IAAK,WACD9lT,KAAKO,OAAOulT,SAAS9lT,KAAKO,OAAO2kE,aAAaC,YAAc,GAC5D,MACJ,IAAK,WACDnlE,KAAKO,OAAOulT,SAAS9lT,KAAK0rc,eAC1B,MACJ,IAAK,WACD1rc,KAAKO,OAAOulT,SAAS9lT,KAAKO,OAAO2kE,aAAaC,YAAc,GAGpEllE,EAAKw5D,OAASz5D,KAAK6rc,aACnB5rc,EAAK6rc,QAAU9rc,KAAK+rc,cACpB/rc,KAAKO,OAAOwpB,QAAQhD,KAAyB9mB,IAEjDuqc,EAAYtuc,UAAUkvc,mBAAqB,SAAUnrc,GAE7CA,EAAK8zE,MAAMl3E,OAAS,GAAKoD,EAAK8zE,MAAM,GAAS,qBAAao6J,MAC1DnuO,KAAKgsc,mBAEThsc,KAAKO,OAAOyZ,OAAO+M,KAA+B,CAAEkhN,QAAQ,KAEhEuiO,EAAYtuc,UAAU+vc,cAAgB,SAAUzwZ,GAC5C,OAAOx7C,KAAK+zJ,KAAKl9G,YAAY72C,KAAK4qc,WAAWpvZ,KAEjDgvZ,EAAYtuc,UAAU8vc,iBAAmB,WACrChsc,KAAKkuO,YAAYg+N,UAAUlsc,KAAK2qc,aAChC3qc,KAAKkuO,YAAYi5E,YAAYnnT,KAAK0qc,cAClC1qc,KAAK2qc,YAAc,GACnB3qc,KAAK0qc,aAAe,GACpB1qc,KAAKioO,QAAS,GAElBuiO,EAAYtuc,UAAUgvc,sBAAwB,SAAUjrc,GACpD,IAAIksc,EAAcv0a,YAAQ33B,EAAK6mB,MAAMmW,OAAQ,WAC7C,GAAIh9B,EAAK6mB,OAASqlb,GAAeA,IAAgBnsc,KAAKO,OAAOS,QACzDf,EAAK8iB,QAAS,OAEb,GAAI9iB,EAAK6mB,QAAU8Q,YAAQ33B,EAAK6mB,MAAMmW,OAAQ,IAAM2sa,GAAUU,cAC5D1ya,YAAQ33B,EAAK6mB,MAAMmW,OAAQ,IAAM2sa,GAAUW,WAC9C3ya,YAAQ33B,EAAK6mB,MAAMmW,OAAQ,mBAC3BrF,YAAQ33B,EAAK6mB,MAAMmW,OAAQ,oBAC3BrF,YAAQ33B,EAAK6mB,MAAMmW,OAAQ,qBAC3Bh9B,EAAK8iB,QAAS,MAEb,CACD/iB,KAAK6rc,aAAe7rc,KAAK2gb,UAAU1gb,EAAK6mB,OACxC9mB,KAAK+rc,cAAgB/rc,KAAKO,OAAO4hT,WAAWliT,EAAK6mB,MAAMmW,QAClD7/B,YAAkB6C,EAAKw3T,aAAgBz3T,KAAK6rc,cACzC7rc,KAAK+rc,cAAchsX,OACnB//E,KAAKO,OAAOyZ,OAAO+M,KAA+B,CAAEkhN,QAAQ,IAC5DjoO,KAAK0/S,UAAUz/S,EAAK6mB,OAAQ9mB,KAAK+rc,cAAchsX,KAAK/pD,UAAUzD,SAAS,0BACzB,aAAvCvyB,KAAKO,OAAOmjG,kBAAkBv4F,OAK7C,IAFA,IAAIihc,EAAe,GACfC,EAAe,GACVruc,EAAK,EAAGuF,EAAKtD,EAAK8zE,MAAO/1E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACpD,IAAIw9C,EAAOj4C,EAAGvF,GACVhB,EAAMgD,KAAK4rc,aAAapwZ,EAAK/hC,IAC7B6yb,EAAQtsc,KAAKyqc,aAAaztc,GAC9B,IAA6C,IAAzCgD,KAAKsrc,kBAAkBntc,QAAQnB,GAI/B,GAHIgD,KAAKusc,qBAAqBvvc,IAC1BgD,KAAK0qc,aAAa9oc,KAAK45C,EAAKjpC,MAE5BtS,EAAK6mB,QAAU9mB,KAAKwsc,aAAavsc,EAAK6mB,MAAMmW,OAAQ2sa,GAAUvhW,OAC9DroG,KAAKwsc,aAAavsc,EAAK6mB,MAAMmW,OAAQ2sa,GAAUC,YACnC,SAAR7sc,GAA0B,WAARA,GAClBgD,KAAK2qc,YAAY/oc,KAAK45C,EAAKjpC,UAG9B,IAAIvS,KAAKO,OAAOm8I,YAAgD,UAAlC18I,KAAKO,OAAOm/D,aAAaviD,OACtDya,YAAQ33B,EAAK6mB,MAAMmW,OAAQ,gBACzBj9B,KAAKO,OAAOm8I,WAAW7G,kBAAkBx5E,KAAyBx/D,QAClEmD,KAAKO,OAAOm8I,WAAW7G,kBAAkBx5E,KAAuBx/D,QAChEmD,KAAKO,OAAOm8I,WAAW7G,kBAAkBx5E,KAAyBx/D,UAAoB,SAARG,GAA0B,WAARA,GACpG,SAEKI,YAAkB6C,EAAKw3T,aAAex3T,EAAK6mB,QAC5C9mB,KAAKwsc,aAAavsc,EAAK6mB,MAAMmW,OAAQqva,EAAMrva,SAC/Cj9B,KAAK2qc,YAAY/oc,KAAK45C,EAAKjpC,WAG1BipC,EAAKve,QAAUh9B,EAAK6mB,QACxB9mB,KAAKwsc,aAAavsc,EAAK6mB,MAAMmW,OAAQue,EAAKve,QACvCue,EAAKqiJ,UACLuuQ,EAAaxqc,KAAK45C,EAAK/hC,IAGvBzZ,KAAK2qc,YAAY/oc,KAAK45C,EAAKjpC,MAG1BvS,KAAKwsc,aAAavsc,EAAK6mB,MAAMmW,OAAQue,EAAKve,SAAWue,EAAKqiJ,WAC/DwuQ,EAAazqc,KAAK45C,EAAK/hC,IAG3B4yb,EAAaxvc,OAAS,GACtBmD,KAAKkuO,YAAYg+N,UAAUG,GAAc,GAE7Crsc,KAAKkuO,YAAYi5E,YAAYnnT,KAAK0qc,cAAc,GAChD1qc,KAAKkuO,YAAYu+N,UAAUzsc,KAAK2qc,aAC5ByB,EAAavvc,OAAS,GACtBmD,KAAKkuO,YAAYu+N,UAAUL,GAAc,GAE7Cpsc,KAAK8iB,UAAY7iB,EAAK6mB,MACtB7mB,EAAKw5D,OAASz5D,KAAK6rc,aACnB5rc,EAAK6rc,QAAU9rc,KAAK+rc,cACpB/rc,KAAKO,OAAOwpB,QAAQhD,KAAwB9mB,IACxCA,EAAK8iB,QAAW/iB,KAAK2qc,YAAY9tc,SAAWoD,EAAK8zE,MAAMl3E,SAAWoD,EAAKw3T,cACvEz3T,KAAKgsc,mBACL/rc,EAAK8iB,QAAS,GAGtB4jD,YAAiB3mE,KAAKO,OAAOS,QAAShB,KAAKkuO,YAAYltO,QAAQ4yC,gBAEnE42Z,EAAYtuc,UAAUswc,aAAe,SAAU7tS,EAAe3tI,GAC1D,IAAIiM,EAAS0hI,EAUb,OALI1hI,GAJAj9B,KAAK0sc,mBAAmB/tS,IAAmB3tI,IAAa44a,GAAU7kb,QAAUiM,IAAa44a,GAAUl/Y,QAG9F15B,IAAa44a,GAAUl/Y,SAAW15B,IAAa44a,GAAU7kb,OACrD44C,aAAa/lC,YAAQ+mI,EAAe,IAAMtiG,KAAiBrrC,EAAS3jB,OAAO,EAAG2jB,EAASn0B,SAGvF+6B,YAAQ+mI,EAAe3tI,GANvB4G,YAAQ+mI,EAAe3tI,IAAa44a,GAAU7kb,OAAS,QAAUs3C,OAQ7DsB,aAAa1gC,EAAQ,YAAcj9B,KAAKO,OAAOS,SAEpEwpc,EAAYtuc,UAAUwwc,mBAAqB,SAAU/tS,GACjD,SAAQ3+J,KAAKO,OAAO+jE,iBAAkBtkE,KAAKO,OAAOisE,aAC3C50C,YAAQ+mI,EAAeirS,GAAU7kb,UAE5Cylb,EAAYtuc,UAAUqwc,qBAAuB,SAAU/wZ,GACnD,IAAI72B,GAAS,EACb,OAAQ62B,GACJ,IAAK,aACL,IAAK,UACD72B,IAAW3kB,KAAKO,OAAOutT,qBAAqBkrI,MAAYh5b,KAAKO,OAAO8hG,SAC5DriG,KAAK6rc,eAAiB7rc,KAAK6rc,aAAaryY,OAAkB,YAAThe,EACzD,MACJ,IAAK,UACIx7C,KAAKO,OAAO0nG,eAAkBjoG,KAAKO,OAAOutT,qBAAqBxmC,KAAUtnR,KAAK6rc,cAC5E7rc,KAAKO,OAAOy6D,cAAcjB,QAAQ57D,QAAQ6B,KAAK6rc,aAAaryY,QAAU,GACxEx5D,KAAK6rc,eAAiB7rc,KAAK6rc,aAAaryY,SACzC70C,GAAS,GAEb,MACJ,IAAK,YACI3kB,KAAKO,OAAO0nG,gBAAkBjoG,KAAKO,OAAOutT,qBAAqBxmC,KAC5DtnR,KAAKO,OAAOutT,qBAAqBxmC,KAAUtnR,KAAK6rc,cAC7C7rc,KAAKO,OAAOy6D,cAAcjB,QAAQ57D,QAAQ6B,KAAK6rc,aAAaryY,OAAS,KAC5E70C,GAAS,GAEb,MACJ,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,SACI3kB,KAAKO,OAAOm8I,YAAoD,IAArC18I,KAAKO,OAAOwrE,cAAclvE,SACtD8nB,GAAS,GAEb,MACJ,IAAK,OACkD,IAA/C3kB,KAAKO,OAAOgtG,wBAAwB1wG,QACW,IAA/CmD,KAAKO,OAAOqnE,wBAAwB/qE,SACpC8nB,GAAS,GAEb,MACJ,IAAK,SACK3kB,KAAKO,OAAO0yS,kBAAqBjzS,KAAKO,OAAO4rT,cAC9CnsT,KAAKO,OAAOutT,qBAAqB6lI,KAAe3zb,KAAKO,OAAOutT,qBAAqBuxD,OAClF16V,GAAS,GAEb,MACJ,IAAK,YACK3kB,KAAKO,OAAO2yS,gBAAoBlzS,KAAKO,OAAOutT,qBAAqB6lI,MACnEhva,GAAS,GAEb,MACJ,IAAK,cACL,IAAK,YACK3kB,KAAKO,OAAO0yS,kBAAsBjzS,KAAKO,OAAOutT,qBAAqBuxD,MACrE16V,GAAS,GAEb,MACJ,IAAK,gBACL,IAAK,iBACD,IAAM3kB,KAAKO,OAAOunG,eAAkB9nG,KAAKO,OAAOutT,qBAAqBhsO,KAChE9hF,KAAK6rc,eAAiB7rc,KAAK6rc,aAAaryY,MACzC70C,GAAS,OAER,GAAI3kB,KAAKO,OAAOutT,qBAAqBhsO,KAAS9hF,KAAKO,OAAO4wE,aAAapX,QAAQl9D,OAAS,GAAKmD,KAAK6rc,aAEnG,IADA,IAAI1C,EAAcnpc,KAAKO,OAAO4wE,aAAapX,QAClCn9D,EAAI,EAAGA,EAAIusc,EAAYtsc,OAAQD,IAChCusc,EAAYvsc,GAAG48D,QAAUx5D,KAAK6rc,aAAaryY,OACxC2vY,EAAYvsc,GAAG2iG,UAAU9nF,gBAAkB+jC,EAAK/jC,cAAc/a,QAAQ,OAAQ,IAAI6uc,sBACrF5mb,GAAS,GAIrB,MACJ,IAAK,YACL,IAAK,aACI3kB,KAAKO,OAAO0kE,cAAgBjlE,KAAKO,OAAOutT,qBAAqB9qD,KACf,IAA/ChjQ,KAAKO,OAAOqnE,wBAAwB/qE,QACnCmD,KAAKO,OAAOutT,qBAAqB9qD,KAAkD,IAAzChjQ,KAAKO,OAAO2kE,aAAaC,eACpExgD,GAAS,GAEb,MACJ,IAAK,WACL,IAAK,aACI3kB,KAAKO,OAAO0kE,cAAgBjlE,KAAKO,OAAOutT,qBAAqB9qD,KACf,IAA/ChjQ,KAAKO,OAAOqnE,wBAAwB/qE,QACnCmD,KAAKO,OAAOutT,qBAAqB9qD,KAAShjQ,KAAKO,OAAO2kE,aAAaC,cAAgBnlE,KAAK0rc,iBACzF/mb,GAAS,GAIrB,OAAOA,GAOX6lb,EAAYtuc,UAAU0iT,eAAiB,WACnC,OAAO5+S,KAAKgB,SAShBwpc,EAAYtuc,UAAUif,QAAU,WAC5B,IAAI4yR,EAAc/tS,KAAKO,OAAOS,QACzB+sS,IAAiBA,EAAYzqS,cAAc,IAAM+4D,MAAyB0xO,EAAYzqS,cAAc,IAAM+4D,QAG/Gr8D,KAAKkuO,YAAY/yN,UACjBsO,aAAOzpB,KAAKgB,SACZhB,KAAK2pB,sBACL3pB,KAAKO,OAAOS,QAAQg1B,UAAUvM,OAAO,gBAEzC+gb,EAAYtuc,UAAU2+B,cAAgB,WAClC,MAAO,eAEX2va,EAAYtuc,UAAUywc,WAAa,SAAUnxZ,GACzC,OAAOx7C,KAAK8qc,OAAS,UAAYtvZ,GAErCgvZ,EAAYtuc,UAAU0vc,aAAe,SAAUnyb,GAC3C,OAAOA,EAAG/c,QAAQsD,KAAK8qc,OAAS,UAAW,KAE/CN,EAAYtuc,UAAUsvc,kBAAoB,SAAUhwZ,GAChD,IAAIoxZ,EACJ,OAAQpxZ,GACJ,IAAK,aACL,IAAK,UACDoxZ,EAAW,CAAE3va,OAAQ2sa,GAAU7kb,QAC/B,MACJ,IAAK,QACD6nb,EAAW,CAAE3va,OAAQ2sa,GAAU7kb,OAAQmtF,QAAS03V,GAAU7hX,OAC1D,MACJ,IAAK,UACD6kX,EAAW,CAAE3va,OAAQ2sa,GAAU7kb,OAAQmtF,QAAS03V,GAAUI,SAC1D,MACJ,IAAK,OACD4C,EAAW,CAAE3va,OAAQ2sa,GAAUl/Y,QAASwnD,QAAS03V,GAAUE,UAC3D,MACJ,IAAK,SACD8C,EAAW,CAAE3va,OAAQ2sa,GAAUl/Y,QAASwnD,QAAS03V,GAAUv2N,QAC3D,MACJ,IAAK,OACDu5N,EAAW,CAAE3va,OAAQ2sa,GAAUvhW,KAAM6J,QAAS03V,GAAU5rM,MACxD,MACJ,IAAK,SACD4uM,EAAW,CAAE3va,OAAQ2sa,GAAUvhW,KAAM6J,QAAS03V,GAAU7mb,QACxD,MACJ,IAAK,OACD6pb,EAAW,CAAE3va,OAAQ2sa,GAAUl/Y,QAASwnD,QAAS03V,GAAUzqc,MAC3D,MACJ,IAAK,SACDytc,EAAW,CAAE3va,OAAQ2sa,GAAUl/Y,SAC/B,MACJ,IAAK,YACDkiZ,EAAW,CAAE3va,OAAQ2sa,GAAUl/Y,QAASwnD,QAAS03V,GAAUrvX,KAC3D,MACJ,IAAK,cACDqyX,EAAW,CAAE3va,OAAQ2sa,GAAUl/Y,QAASwnD,QAAS03V,GAAUtpX,OAC3D,MACJ,IAAK,YACDssX,EAAW,CAAE3va,OAAQ2sa,GAAUl/Y,QAASwnD,QAAS03V,GAAUn8F,KAC3D,MACJ,IAAK,gBACDm/F,EAAW,CAAE3va,OAAQ2sa,GAAU7kb,OAAQmtF,QAAS03V,GAAUQ,WAC1D,MACJ,IAAK,iBACDwC,EAAW,CAAE3va,OAAQ2sa,GAAU7kb,OAAQmtF,QAAS03V,GAAUS,YAC1D,MACJ,IAAK,YACDuC,EAAW,CAAE3va,OAAQ2sa,GAAUG,MAAO73V,QAAS03V,GAAUK,OACzD,MACJ,IAAK,WACD2C,EAAW,CAAE3va,OAAQ2sa,GAAUG,MAAO73V,QAAS03V,GAAUO,OACzD,MACJ,IAAK,WACDyC,EAAW,CAAE3va,OAAQ2sa,GAAUG,MAAO73V,QAAS03V,GAAUtgC,OACzD,MACJ,IAAK,WACDsjC,EAAW,CAAE3va,OAAQ2sa,GAAUG,MAAO73V,QAAS03V,GAAUM,OAOjE,OAJAlqc,KAAKyqc,aAAajvZ,GAAQ,CACtBjpC,KAAMvS,KAAKisc,cAAczwZ,GAAO/hC,GAAIzZ,KAAK2sc,WAAWnxZ,GACpDve,OAAQ2va,EAAS3va,OAAQi1E,QAAS06V,EAAS16V,QAAU,WAAa06V,EAAS16V,QAAU,IAElFlyG,KAAKyqc,aAAajvZ,IAE7BgvZ,EAAYtuc,UAAUovc,gBAAkB,WACpC,MAAO,CAAC,aAAc,UAClB,QAAS,UAAW,OAAQ,SAAU,OAAQ,SAAU,OAAQ,SAChE,YAAa,cAAe,YAAa,gBAAiB,iBAC1D,YAAa,WAAY,WAAY,aAE7Cd,EAAYtuc,UAAU2uc,aAAe,WAsBjC,MArBiB,CACb,WAAc,aACd,QAAW,UACX,KAAQ,OACR,MAAS,QACT,QAAW,UACX,KAAQ,aACR,OAAU,eACV,KAAQ,OACR,OAAU,eACV,UAAa,YACb,YAAe,cACf,UAAa,YACb,OAAU,SACV,cAAiB,gBACjB,eAAkB,iBAClB,UAAa,YACb,SAAY,WACZ,SAAY,eACZ,SAAY,aAIpBL,EAAYtuc,UAAUykb,UAAY,SAAU9/a,GACxC,IAAIk/E,EAAOnoD,YAAQ/2B,EAAEo8B,OAAQ,mBAC7B,GAAI8iD,EAAM,CACN,IAAItkF,EAAMskF,EAAKz8E,cAAc,6CAA6C6rB,aAAa,gBACvF,OAAOnvB,KAAKO,OAAO6jI,eAAe3oI,GAIlC,OADWuE,KAAKO,OAAO4hT,WAAWthT,EAAEo8B,QAAQw8B,QAC9B,MAGtB+wY,EAAYtuc,UAAUwjT,UAAY,SAAU7+S,EAAGijJ,GAC3C9jJ,KAAK+/E,KAAOl/E,EAAEo8B,OACdj9B,KAAK4qD,IAAMhzB,YAAQ/2B,EAAEo8B,OAAQ,aAAej9B,KAAK4qD,IAC7C5qD,KAAK4qD,KAAOk5F,IAAiBnmF,aAAa98D,EAAEo8B,OAAQ,gBACpDj9B,KAAKO,OAAOm/S,UAAUvpS,SAASnW,KAAK4qD,IAAIz7B,aAAaktC,KAAwB,MAG9EmuY,EA1iBsB,G,2BC3B7BvkK,GAAwB,WAIxB,SAASA,EAAO1lS,GACZP,KAAK6sc,iBAAmB,GACxB7sc,KAAK65U,OAAS,EACd75U,KAAK8sc,SAAW,EAChB9sc,KAAKq1U,cAAgB,GACrBr1U,KAAK+sc,oBAAsB,GAC3B/sc,KAAKgtc,iBAAmB,GACxBhtc,KAAKitc,uBAAyB,GAC9Bjtc,KAAK+tC,SAAW,EAChB/tC,KAAK+nU,WAAa,EAClB/nU,KAAKktc,cAAgB,EACrBltc,KAAKmtc,eAAiB,EACtBntc,KAAKi4E,WAAa,GAClBj4E,KAAKO,OAASA,EACdP,KAAKotc,YAAeptc,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOkyT,kBAAsBzyT,KAAKO,OAAOokU,WAAa,IAAM,IAC/G3kU,KAAKO,OAAOokU,WAAa,IAAM,IACpC3kU,KAAKy4N,OAAkC,SAAzBz4N,KAAKO,OAAOikB,SAAsBxkB,KAAKO,OAAOu2E,iBAAmB92E,KAAKO,OAAOw2E,aAC3F/2E,KAAKqtc,aAAe9sc,EAAO8sc,aAC3Brtc,KAAKstc,WAAattc,KAAKutc,gBACvBvtc,KAAKwtc,QAAU,IAAI3gO,KAAc7sO,KAAKO,QAwxD1C,OApxDA0lS,EAAO/pS,UAAUwzB,OAAS,WACtB,IAAInvB,EAASP,KAAKO,OACdk4N,EAAkC,SAAzBz4N,KAAKO,OAAOikB,SAAsBxkB,KAAKO,OAAOu2E,iBAAmB92E,KAAKO,OAAOw2E,aAK1F,GAJA/2E,KAAKO,OAAOktc,mBAAqB,GACjCztc,KAAKO,OAAOmtc,mBAAqB,GACjC1tc,KAAK2tc,kBAAkBptc,GACvBP,KAAK+lN,YAAc/lN,KAAK4tc,iBACpB5tc,KAAKO,OAAO85D,MAAQr6D,KAAKO,OAAO85D,KAAKr5D,SAAWhB,KAAKO,OAAOS,QAAQsC,cAAc,WAAY,CAiB9F,GAhBAtD,KAAKO,OAAOstc,UAAW,EAClBp1O,EAAO/0I,iBAKJ1jF,KAAKO,OAAOkjF,qBACZg1I,EAAOpT,aAAerlN,KAAK8tc,gBAAgB,UAE/Cr1O,EAAO/0I,iBAAkB,IAPzB+0I,EAAOpuK,cAAgBrqD,KAAK8tc,gBAAgB,UAC5Cr1O,EAAOpT,aAAerlN,KAAK8tc,gBAAgB,UAQ/C9tc,KAAKO,OAAO85D,KAAKnhC,cAAc,CAC3B6gC,QAAS/5D,KAAK+tc,sBAAuBjsY,YAAsC,SAAzB9hE,KAAKO,OAAOikB,UAC1DjkB,EAAO6vE,mBAAmB7T,OAAO1/D,OAAS,KAAOmD,KAAKy4N,OAAOj1I,YAAci1I,EAAOpT,aAClFrlN,KAAK8tc,gBAAgB,WAC1B,GAC6B,SAA5B9tc,KAAKO,OAAO85D,KAAK1qB,OAAmB,CACpC,IAAIq+Z,EAAahuc,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAwBr6B,aAC7Eq+Z,EAAajuc,KAAKO,OAAO85D,KAAKyH,WAAWjlE,OAASmD,KAAKO,OAAO8sc,aAAa9uY,UAC3EyvY,EAAa,IAAMA,EAAaC,GAChCjuc,KAAKO,OAAO85D,KAAK0P,cAAc87Q,mBAAmBooH,GAG1Djuc,KAAKO,OAAO85D,KAAKrgD,OAAO,sBAAuB,IAC3Cha,KAAKO,OAAO2tc,cACZluc,KAAKO,OAAO4tc,WAAa,IAE7Bnuc,KAAKO,OAAO85D,KAAKsxP,iBACb3rT,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOkyT,mBAC3CzyT,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,OACxCjqE,KAAKO,OAAOkyT,kBAAkB27I,kBAE1Bpuc,KAAKO,OAAOS,QAAQsC,cAAc,qBACxCA,cAAc,YAAYlB,UACxBpC,KAAKO,OAAO85D,KAAKsvE,mBAAmBrmI,cAAc,oBAAoBA,cAAc,YAAYlB,UACpGpC,KAAKO,OAAO85D,KAAK3qB,MAAQ1vC,KAAKquc,sBACzBruc,KAAKqtc,aAAaiB,mBAAqBtuc,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOkyT,mBAAqBzyT,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,OAChJjqE,KAAKO,OAAOkyT,kBAAkB7oL,YAE7B5pI,KAAKO,OAAO2tc,aACbluc,KAAKuuc,qBAAoB,QAK7Bvuc,KAAKO,OAAOS,QAAQoB,UAAY,GAChCpC,KAAKwuc,SAASxuc,KAAKO,SAASP,KAAKy4N,OAAOj1I,aACxCxjF,KAAKO,OAAOS,QAAQgB,YAAYb,YAAc,MAAO,CAAEsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,WACpFzZ,KAAKO,OAAO85D,KAAKnsC,kBAAmB,EACpCluB,KAAKO,OAAO85D,KAAKtzB,SAAS,IAAM/mC,KAAKO,OAAOS,QAAQyY,GAAK,SAE7DzZ,KAAKO,OAAO85D,KAAK/gD,GAAGo2C,KAAiB1vD,KAAKm+S,cAAen+S,OAE7DimS,EAAO/pS,UAAUiiT,cAAgB,WAC7B,GAAIn+S,KAAKO,OAAOqjE,qBAAsB,CAClC,IAAIyoE,EAAOrsI,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAC/CqkE,EAAQtuI,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAChDwkY,EAAMngU,EAAMhrI,cAAc,IAAM2mE,MACpCjqE,KAAKO,OAAOmuc,iBAAmBriU,EAAK/oI,cAAc,IAAM2mE,MACpDoiE,EAAK/oI,cAAc,IAAM2mE,MACzBxgD,aAAO4iH,EAAK/oI,cAAc,IAAM2mE,OAGhCjqE,KAAKO,OAAOmuc,iBAAmBvtc,YAAc,MAAO,CAAEktB,UAAW47C,OAErEoiE,EAAKrqI,YAAYhC,KAAKO,OAAOmuc,kBACzBD,GACAh5a,aAAkBz1B,KAAKO,OAAOmuc,iBAAkB,CAAE/+Z,OAAQ,EAAGD,MAAO++Z,EAAIz6a,MAAM0b,QAElFja,aAAkB42G,EAAK/oI,cAAc,YAAa,CAC9CkgC,UAAY8qG,EAAMhrI,cAAc,YAAY0wB,MAAMwP,UAAW7mC,MAAM,KAAK,GAA5D2xI,UAEhB,IAAIh9G,EAAMtxB,KAAKO,OAAOokU,WAAar2L,EAAQA,EAAM16F,cAAcA,cAActwC,cAAc,IAAM2mE,MACjGoiE,EAAK5pG,WAAanR,EAAImR,aAK9BwjQ,EAAO/pS,UAAUsyc,SAAW,SAAUjuc,EAAQmuB,GA0D1C,GAzDA1uB,KAAK2tc,kBAAkBptc,GACvBP,KAAKO,OAAO85D,KAAO,IAAI6rK,IAAK,CACxBx1H,cAAe,EACflkC,WAAY,EACZ2wO,aAAa,EACbr7O,WAAYpzC,EAAU1uB,KAAK2uc,iBAAmB3uc,KAAK8tc,gBAAgB,SACnE/zY,QAASrrC,EAAU1uB,KAAK4uc,oBAAsB5uc,KAAK+tc,sBACnDp+Z,OAAQjhB,EAAU,OAAS1uB,KAAKuuc,sBAChC7+Z,MAAOhhB,EAAW1uB,KAAKqtc,aAAaiB,kBAAoBtuc,KAAKO,OAAOmvC,MAAQ,IAAO1vC,KAAKquc,qBACxFtxb,OAAQxc,EAAOwc,OACf4pB,UAAWpmC,EAAOomC,UAClBssQ,iBAAkB1yS,EAAO0yS,iBACzBC,eAAgB3yS,EAAO2yS,eACvBnrM,cAAe/nG,KAAKqtc,aAAatlW,cACjCqiC,cAAepqI,KAAKqtc,aAAajjU,cACjCttE,iBAAkB98D,KAAKO,OAAOiyT,iBAA0BxyT,KAAKqtc,aAAavwY,gBAC1EmnF,eAAgBjkJ,KAAKqtc,aAAappT,eAElCwvJ,iBAAkBzzS,KAAKqtc,aAAa55J,iBACpC10J,iBAAkB/+I,KAAKqtc,aAAatuT,iBAEpCr7C,kBAAmB1jG,KAAKqtc,aAAa3pW,kBACrC2mC,iBAAkBrqI,KAAKqtc,aAAahjU,iBACpC1lE,UAAW3kE,KAAKqtc,aAAa1oY,UAC7BpG,UAAWv+D,KAAKqtc,aAAa9uY,UAC7B+qP,UAAWtpT,KAAKqtc,aAAa/jJ,UAC7B12P,iBAAkB5yD,KAAK4yD,iBAAiBz2D,KAAK6D,MAC7C8yD,gBAAiB9yD,KAAK8yD,gBAAgB32D,KAAK6D,MAC3CwuD,WAAYxuD,KAAKqtc,aAAa7+Y,WAAaxuD,KAAKqtc,aAAa7+Y,WAAWryD,KAAK6D,KAAKO,aAAUvE,EAC5FixD,YAAajtD,KAAKqtc,aAAapgZ,YAAcjtD,KAAKqtc,aAAapgZ,YAAY9wD,KAAK6D,KAAKO,aAAUvE,EAC/FkxD,cAAeltD,KAAKqtc,aAAangZ,cAAgBltD,KAAKqtc,aAAangZ,cAAc/wD,KAAK6D,KAAKO,aAAUvE,EACrGkwD,aAAclsD,KAAKqtc,aAAanhZ,aAAelsD,KAAKqtc,aAAanhZ,aAAa/vD,KAAK6D,KAAKO,aAAUvE,EAClGmwD,YAAansD,KAAKmsD,YAAYhwD,KAAK6D,MACnCosD,eAAgBpsD,KAAKqtc,aAAajhZ,eAAiBpsD,KAAKqtc,aAAajhZ,eAAejwD,KAAK6D,KAAKO,aAAUvE,EACxGqwD,cAAersD,KAAKqsD,cAAclwD,KAAK6D,MACvCssD,cAAetsD,KAAKqtc,aAAa/gZ,cAAgBtsD,KAAKqtc,aAAa/gZ,cAAcnwD,KAAK6D,KAAKO,aAAUvE,EACrGuwD,aAAcvsD,KAAKusD,aAAapwD,KAAK6D,MACrCwsD,gBAAiBxsD,KAAKqtc,aAAa7gZ,gBAAkBxsD,KAAKqtc,aAAa7gZ,gBAAgBrwD,KAAK6D,KAAKO,aAAUvE,EAC3GywD,eAAgBzsD,KAAKysD,eAAetwD,KAAK6D,MACzCouD,YAAapuD,KAAKqtc,aAAaj/Y,YAAcpuD,KAAKqtc,aAAaj/Y,YAAYjyD,KAAK6D,KAAKO,aAAUvE,EAC/F8wD,gBAAiB9sD,KAAKqtc,aAAavgZ,gBAAkB9sD,KAAKqtc,aAAavgZ,gBAAgB3wD,KAAK6D,WAAQhE,EACpG+wD,WAAY/sD,KAAKqtc,aAAatgZ,WAAa/sD,KAAKqtc,aAAatgZ,WAAW5wD,KAAK6D,WAAQhE,EACrFgxD,WAAYhtD,KAAKqtc,aAAargZ,WAAahtD,KAAKqtc,aAAargZ,WAAW7wD,KAAK6D,WAAQhE,EACrFm2D,kBAAmBnyD,KAAKmyD,kBAAkBh2D,KAAK6D,MAC/CslF,SAAUtlF,KAAK6uc,cAAc1yc,KAAK6D,MAClCsuD,WAAYtuD,KAAK8uc,aAAa3yc,KAAK6D,MACnC4rD,cAAe5rD,KAAK4rD,cAAczvD,KAAK6D,MACvCisD,UAAWjsD,KAAKisD,UAAU9vD,KAAK6D,MAC/B6rD,eAAgB7rD,KAAK6rD,eAAe1vD,KAAK6D,MACzCsyD,yBAA0BtyD,KAAKsyD,yBAAyBn2D,KAAK6D,MAC7D2yD,uBAAwB3yD,KAAK2yD,uBAAuBx2D,KAAK6D,MACzDqyD,mBAAoBryD,KAAKqyD,mBAAmBl2D,KAAK6D,MACjD0yD,iBAAkB1yD,KAAK0yD,iBAAiBv2D,KAAK6D,MAC7CwyD,gBAAiBxyD,KAAKqtc,aAAa76Y,gBAAkBxyD,KAAKqtc,aAAa76Y,gBAAgBr2D,KAAK6D,WAAQhE,EACpGy2D,kBAAmBzyD,KAAKyyD,kBAAkBt2D,KAAK6D,MAC/CoyD,oBAAqBpyD,KAAKoyD,oBAAoBj2D,KAAK6D,QAEnDV,cAAY,CAGZU,KAAKO,OAAO85D,KAAkB,eAAI,EAEtCr6D,KAAKO,OAAO85D,KAAK/gD,GAAG,mBAAoBtZ,KAAK0vD,gBAAgBvzD,KAAK6D,OAClEA,KAAKO,OAAO85D,KAAK/gD,GAAG,mBAAoBtZ,KAAK+uc,eAAe5yc,KAAK6D,QAGrEimS,EAAO/pS,UAAUwzD,gBAAkB,SAAUzvD,GACrCD,KAAKO,OAAOyuc,kBAAoB9wc,OAAOjB,KAAK+C,KAAKO,OAAOyuc,kBAAkB7wc,QAAQ,kBAAoB,IACtG6B,KAAKO,OAAOyuc,sBAAmBhzc,EAC3BgE,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOkyT,mBAC3CzyT,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,OACxCjqE,KAAKO,OAAOkyT,kBAAkB27I,oBAK1CnoK,EAAO/pS,UAAUi2D,kBAAoB,SAAUlyD,GACtC7C,YAAkB6C,EAAK6/W,WAAW/lT,UAAa38D,YAAkB4C,KAAKO,OAAO0uc,gBAC9Ehvc,EAAK6/W,WAAW/lT,QAAQ95D,EAAK6/W,WAAW/lT,QAAQl9D,OAAS,GAAG6yC,MACxD1vC,KAAKO,OAAO0uc,aAAajvc,KAAKO,OAAO0uc,aAAapyc,OAAS,GAAG6yC,OAEtE1vC,KAAKO,OAAOwpB,QAAQhD,IAA0B9mB,IAElDgmS,EAAO/pS,UAAUiwD,YAAc,SAAUlsD,GACrCD,KAAKO,OAAO4oE,aAAauc,WACzB1lF,KAAKO,OAAOwpB,QAAQhD,KAAoB9mB,IAE5CgmS,EAAO/pS,UAAUmwD,cAAgB,SAAUpsD,GACvCD,KAAKO,OAAO4oE,aAAauc,WACzB1lF,KAAKO,OAAOwpB,QAAQhD,KAAsB9mB,IAE9CgmS,EAAO/pS,UAAUqwD,aAAe,SAAUtsD,GAClCD,KAAKO,OAAO2uc,kBAAkB16T,QAC9Bx0I,KAAKO,OAAO85D,KAAKk1O,gBAAgBqe,kBAAkB5tT,KAAKO,OAAO2uc,kBAAkBlmY,WAAYhpE,KAAKO,OAAO2uc,kBAAkBtoJ,UAC3H5mT,KAAKO,OAAO2uc,kBAAkB16T,QAAS,IAGvCx0I,KAAKO,OAAO4oE,aAAauc,WACzB1lF,KAAKO,OAAOwpB,QAAQhD,KAAiB9mB,KAG7CgmS,EAAO/pS,UAAUowD,cAAgB,SAAUrsD,GACvCD,KAAKO,OAAOwpB,QAAQhD,IAAsB9mB,IAE9CgmS,EAAO/pS,UAAUuwD,eAAiB,SAAUxsD,GACxCD,KAAKO,OAAO4oE,aAAauc,WACzB1lF,KAAKO,OAAOwpB,QAAQhD,IAAuB9mB,IAE/CgmS,EAAO/pS,UAAU0vD,cAAgB,SAAU3rD,GACvCD,KAAKO,OAAO4oE,aAAagmY,kBAAkBlvc,IAE/CgmS,EAAO/pS,UAAU2vD,eAAiB,SAAU5rD,GACxCD,KAAKO,OAAO4oE,aAAaimY,qBAAqBnvc,IAElDgmS,EAAO/pS,UAAUo2D,yBAA2B,SAAUryD,GAClDD,KAAKO,OAAO4oE,aAAakmY,iBAAiBpvc,IAE9CgmS,EAAO/pS,UAAUw2D,iBAAmB,SAAUzyD,GAC1CD,KAAKO,OAAO4oE,aAAammY,YAAYrvc,IAEzCgmS,EAAO/pS,UAAUm2D,mBAAqB,SAAUpyD,GAC5CD,KAAKO,OAAO4oE,aAAaomY,cAActvc,IAE3CgmS,EAAO/pS,UAAUy2D,uBAAyB,SAAU1yD,GAChDD,KAAKO,OAAO4oE,aAAaqmY,eAAevvc,IAG5CgmS,EAAO/pS,UAAUu2D,kBAAoB,SAAUxyD,QACZjE,IAA3BgE,KAAKO,OAAOy1W,YAA6D,SAAjCh2W,KAAKO,OAAOy1W,WAAWtmU,QAC/D1vC,KAAKO,OAAOy1W,WAAWtmU,MAAQ,OAC/B1vC,KAAKO,OAAOy1W,gBAAah6W,IAGjCiqS,EAAO/pS,UAAUk2D,oBAAsB,SAAUnyD,QACdjE,IAA3BgE,KAAKO,OAAOy1W,YAA6D,SAAjCh2W,KAAKO,OAAOy1W,WAAWtmU,QAC/D1vC,KAAKO,OAAOy1W,WAAWtmU,MAAQ,OAC/B1vC,KAAKO,OAAOy1W,gBAAah6W,IAIjCiqS,EAAO/pS,UAAU+vD,UAAY,SAAUhsD,GACnC,GAAID,KAAKO,OAAOkvc,eAAiBnwc,cAAY,CACzC,IAAK,IAAItB,EAAK,EAAGuF,EAAKvD,KAAKO,OAAOktc,mBAAoBzvc,EAAKuF,EAAG1G,OAAQmB,IAAM,CACxE,IAAI+hF,EAAOx8E,EAAGvF,GACd,GAAIgC,KAAKO,OAAOkvc,aAAc,CAE1B,IAAIzuc,EAAUhB,KAAKO,OAAOmvc,iBAAZ1vc,CAA8B+/E,EAAM//E,KAAKO,OAAQ,eAAgBP,KAAKO,OAAOS,QAAQyY,GAAK,gBAAiB,KAAM,KAAMsmE,EAAK4vX,YACtI3uc,GAAuB,KAAZA,GAAkBA,EAAQnE,OAAS,IAC1CmD,KAAKO,OAAO4yG,oBACZnzG,KAAKO,OAAOijG,WAAWzjB,EAAK4vX,WAAYx0Z,IAAmBI,SAASv6C,EAAQ,GAAGkB,YAG/ElC,KAAKO,OAAOijG,WAAWzjB,EAAK4vX,WAAY3uc,EAAQ,GAAGkB,aAKnElC,KAAKO,OAAOktc,mBAAqB,IAEjCztc,KAAKO,OAAOS,QAAQsC,cAAc,iBAAsE,IAAjDtD,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,QAAgBmD,KAAKO,OAAO6vE,mBAAmBrW,QAAQl9D,OAAS,IACzJmD,KAAKO,OAAOomC,UACZ3mC,KAAKO,OAAOS,QAAQsC,cAAc,gBAAgB0wB,MAAM47a,YAAc,OAGtE5vc,KAAKO,OAAOS,QAAQsC,cAAc,gBAAgB0wB,MAAM67a,WAAa,QAGzE7vc,KAAKO,OAAO85D,MAAQr6D,KAAKO,OAAO85D,KAAKqqE,cACrC1kI,KAAKO,OAAO85D,KAAKqqE,aAAamU,kBAE9B74I,KAAKO,OAAOstc,UACZ7tc,KAAKuuc,qBAAoB,GAE7Bvuc,KAAKO,OAAO2tc,aAAc,EAC1Bluc,KAAK8vc,qBACA1yc,YAAkB4C,KAAKO,OAAOqoC,uBAC/B5oC,KAAKO,OAAOqoC,uBAEZ5oC,KAAKO,OAAO2qJ,WACZlrJ,KAAKO,OAAOwvc,cAEhB/vc,KAAKO,OAAO2qJ,WAAY,EACxBlrJ,KAAKO,OAAOyZ,OAAO+M,IAAqB,KAE5Ck/Q,EAAO/pS,UAAU4zc,mBAAqB,WAClC,GAAI9vc,KAAKO,OAAOu/J,gBAAkB9/J,KAAKO,OAAOu/J,eAAeh5I,OACJ,OAArD9mB,KAAKO,OAAOu/J,eAAeh5I,MAAMmW,OAAOy4E,SAAmB,CAC3D,IAAIs6V,EAAYhwc,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,SAC3D+vY,EAAUzwT,kBAAkBv/I,KAAKO,OAAOu/J,eAAeh5I,MAAMmW,QAC7D+ya,EAAU1tc,MAAMtC,KAAKO,OAAOu/J,eAAeh5I,OAC3C+O,YAAS,CAAC71B,KAAKO,OAAOu/J,eAAeh5I,MAAMmW,QAAS,CAAC,YAAa,YAClEj9B,KAAKO,OAAOu/J,eAAeh5I,MAAMmW,OAAOrH,aAAa,WAAY,KACjE51B,KAAKO,OAAOu/J,eAAeh5I,WAAQ9qB,IAI3CiqS,EAAO/pS,UAAU42D,gBAAkB,SAAU7yD,GAsQzC,IArQA,IAAIF,EAAQC,KACRnB,EAAU,SAAU28C,GACpB,IAAIy0Z,EAAanma,EAAOvpC,OAAO2vc,gBAC3B7sc,EAAO,KACPy+U,OAAO,EACPquH,OAAiB,EAYrB,GAXIF,EAAWj6a,UAAUzD,SAAS,2BAA6B09a,EAAWj6a,UAAUzD,SAAS,gBACzF09a,EAAWj6a,UAAUzD,SAAS,oBAAsB09a,EAAWj6a,UAAUzD,SAAS,YAAc09a,EAAWj6a,UAAUzD,SAAS,cAC9HlvB,EAAO4sc,EAAWr8Z,cAEbq8Z,EAAWj6a,UAAUzD,SAAS,iBAAmB09a,EAAWj6a,UAAUzD,SAAS,cAAgB09a,EAAWj6a,UAAUzD,SAAS,oBAClI09a,EAAWj6a,UAAUzD,SAAS,iBAAmB09a,EAAWj6a,UAAUzD,SAAS,oBAAsB09a,EAAWj6a,UAAUzD,SAAS,kBACnIlvB,EAAO4sc,EAEFA,EAAWj6a,UAAUzD,SAAS,kBACnClvB,EAAO4sc,EAAWr8Z,cAAcA,gBAE/BvwC,EAED,OADApD,EAAK8iB,QAAS,EACP,CAAEvmB,WAAO,IAEhB6G,EAAK2yB,UAAUzD,SAAS,mBAAqBlvB,EAAK2yB,UAAUzD,SAAS,aACrEuvT,GAAO,GAEPh4S,EAAOvpC,OAAO0nG,eAAiBn+D,EAAOvpC,OAAO6vc,iBAAmBtma,EAAOuma,cAAchtc,KACrF8sc,GAAiB,GAErB,IAAIxkY,EAAW11B,OAAO5yC,EAAK8rB,aAAa,UACpC2pD,EAAW7iC,OAAO5yC,EAAK8rB,aAAa,kBACpCmhb,EAAcxma,EAAOvpC,OAAOivE,YAAY7D,GAAUmN,GAEtD,OADiBt9B,EAAK/hC,IAElB,KAAKqwB,EAAOvpC,OAAOS,QAAQyY,GAAK,UACxBpW,EAAK7B,iBAAiB,IAAMyoE,MAAYptE,OAAS,GAC7C00B,aAAU,IAAMuY,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,UAC3Do2B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAE/E7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,OACpF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,MAElF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,QACpF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,MAClF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,QAIpF63Q,EACA1qT,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAG/E7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAGvF,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,YACxBpW,EAAK7B,iBAAiB,IAAMyoE,KAAcptE,OAAS,GAC/Cu6B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,UACxDo2B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAE/E7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,OACtF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,MAEpF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,QACtF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,MACpF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,UAAWxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,QAIlF63Q,EACA1qT,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAGjF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAGzF,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,gBACvB02b,GAAwC,IAAtBlwc,EAAK8zE,MAAMl3E,SAC9BoD,EAAK8iB,QAAS,GAEdwO,aAAU,IAAMuY,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,UACjE60B,YAAS,CAACuB,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,UAAWipE,MAEnFkmY,GACI5+a,aAAU,IAAMuY,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,UACjEo1B,aAAY,CAACgB,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,UAAWipE,MAG9F,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,kBAI5B,GAHI8X,aAAU,IAAMuY,EAAOvpC,OAAOS,QAAQyY,GAAK,kBAAmBxZ,EAAKe,UACnE60B,YAAS,CAACuB,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,kBAAmBxZ,EAAKe,UAAWipE,MAErFkmY,EAAgB,CAChB,IAAII,GAAkB,EAClB/5X,EAAYnzE,EAAK8rB,aAAa,aAC9B28L,EAAal9I,KAAU8H,eAAeF,EAAW1sC,EAAOvpC,OAAO6vE,mBAAmBpV,eACtF,GAAI8wJ,GAAkC,WAApBA,EAAW3gN,MAAsB2+B,EAAOvpC,OAAOw2E,aAAaF,UAAUL,GAAWkM,eAAiBlM,EAAUr4E,QAAQ,kBAAoB,GAEtJ,GADA2tN,EAAal9I,KAAU8H,eAAeF,EAAU95E,QAAQ,gBAAiB,IAAKotC,EAAOvpC,OAAO6vE,mBAAmBpV,eAC/F,CACZ,IAAI+kB,EAAOj2C,EAAOvpC,OAAOw2E,aAAavH,YAAYv5B,OAAO5yC,EAAK8rB,aAAa,WAAW8mB,OAAO5yC,EAAK8rB,aAAa,mBAC3Gqhb,EAAoB1ma,EAAOvpC,OAAO6vc,eAAeK,iBAAiB1wX,EAAKh0C,KAAMyqC,EAAWuJ,EAAK9H,WAAW9qE,YAC5Gqjc,EAAkB5uc,KAAK,CAAEmqC,KAAMg0C,EAAKh0C,KAAMyqC,UAAWA,EAAWp8D,KAAM2lE,EAAK9H,WAAW9qE,WAAYujc,SAAU3wX,IAE5G,IADA,IAAI+sM,EAAkBhjP,EAAOvpC,OAAO6vc,eAAeO,mBAAmBH,GAC7Dxyc,EAAK,EAAGuF,EAAKuoN,EAAW/1I,aAAc/3E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACjE,IAAI4yc,EAAcrtc,EAAGvF,GACrB,GAAI8uR,EAAgB3uR,QAAQyyc,EAAYt6X,YAAc,EAAG,CACrDi6X,GAAkB,EAClB,cAKPzkP,IAAmC,SAApBA,EAAW3gN,MAAuC,WAApB2gN,EAAW3gN,OAC5D2+B,EAAOvpC,OAAOw2E,aAAaF,UAAUL,GAAWkM,eAAiBlM,EAAUr4E,QAAQ,gBAAkB,KACtGoyc,GAAkB,GAElBh/a,aAAU,IAAMuY,EAAOvpC,OAAOS,QAAQyY,GAAK,kBAAmBxZ,EAAKe,UAAYuvc,GAC/En6a,aAAY,CAACgB,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,kBAAmBxZ,EAAKe,UAAWipE,MAGhG,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,gBACvBqwB,EAAOvpC,OAAOswc,kBAKRxtc,EAAK2yB,UAAUzD,SAAS,aAQ3B6E,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,OAC1F7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,MARrE,KAAnB5mE,EAAK+xF,WACDh+D,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,UAC9Do2B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAPzF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,UAC9Do2B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,gBAAiBxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAe7F,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,WACvBqwB,EAAOvpC,OAAOkjF,mBAKVpgF,EAAK7B,iBAAiB,sBAAsB3E,OAAS,GACtDu6B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAC1Do2B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAGjF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,MAEpF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,WAAYxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,OACrF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,WAAYxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,OAGlF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,OAC3F7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,MAhBhF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,WAAYxZ,EAAKe,UACzDo2B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,WAAYxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAiBxF,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,YACvBqwB,EAAOvpC,OAAOkjF,mBAKVpgF,EAAK7B,iBAAiB,qBAAqB3E,OAAS,GACrDu6B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,WAAYxZ,EAAKe,SACzDo2B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,WAAYxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAGhF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,WAAYxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,MAEnF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,OACtF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,OAGnF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,WAAYxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,OAC1F7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,WAAYxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,MAhB/E7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,UAC1Do2B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,YAAaxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAiBzF,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,mBACvBqwB,EAAOvpC,OAAOuwc,sBACf15a,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,mBAAoBxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAE5F,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,OACvBqwB,EAAOvpC,OAAO2yS,gBACf97Q,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,OAAQxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAEhF,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,SACvBqwB,EAAOvpC,OAAO0yS,kBACf77Q,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,SAAUxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAElF,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,OACvBqwB,EAAOvpC,OAAO0yS,kBACf77Q,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,OAAQxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAEhF,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,aACtBqwB,EAAOvpC,OAAO0yS,kBAAuBnpQ,EAAOvpC,OAAO2yS,gBACrD97Q,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,aAAcxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,MAEtF,MACJ,KAAKngC,EAAOvpC,OAAOS,QAAQyY,GAAK,aAK5B,GAJK2d,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,aAAcxZ,EAAKe,WAC1Do2B,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,aAAcxZ,EAAKe,SAASg1B,UAAUzD,SAAS03C,OACzF7yC,aAAO,IAAM0S,EAAOvpC,OAAOS,QAAQyY,GAAK,aAAcxZ,EAAKe,SAASg1B,UAAUjN,IAAIkhD,OAEjF5mE,EAAK2yB,UAAUzD,SAAS,mBAAqBlvB,EAAK2yB,UAAUzD,SAAS,oBACrElvB,EAAK2yB,UAAUzD,SAAS,WAAalvB,EAAK2yB,UAAUzD,SAAS,kBAAgD,SAA3BuX,EAAOvpC,OAAOikB,SAAqB,CACtH,IAAIusb,EACqB,KAAnB1tc,EAAK+xF,YACP27W,EAAcjna,EAAOvpC,OAAOw2E,aAAaF,UAAUy5X,EAAYr4X,WAAW9qE,YAAYhC,MAE1F,IAAI2X,EAAY,CACZC,QAAQ,EAAOyzD,UAAW85X,EAAYr4X,WAAW9qE,WACjDigO,eAAgBtjM,EAAOqjM,YAAY4jO,GAAa1vc,QAChDgsO,iBAAkB,GAEtBvjM,EAAOvpC,OAAOwpB,QAAQhD,IAA0BjE,GAAW,SAAUyqN,GACjE,IAAKA,EAAaxqN,QAA+B,KAAnB1f,EAAK+xF,UAAmB,CAGlD,IAFA,IAAIw3W,EAAW,GACXh/N,EAAkB,GACbhxO,EAAI,EAAGA,EAAI2wO,EAAaH,eAAevwO,OAAQD,IAAK,CACzD,IAAII,EAAMuwO,EAAaH,eAAexwO,GAClB,WAAhBm0c,EACK,CAAC,QAAS,iBAAiB5yc,QAAQnB,IAAQ,GAAO4wO,EAAgBzvO,QAAQnB,GAAO,IAClF4vc,EAAShrc,KAAK,CAAE2Q,KAAMxS,EAAMQ,OAAOwjF,UAAUltC,YAAY75C,GAAMyc,GAAI1Z,EAAMQ,OAAOS,QAAQyY,GAAK,OAASzc,IACtG4wO,EAAgBhsO,KAAK5E,IAIpB+C,EAAMQ,OAAOstO,oBAAoB1vO,QAAQnB,IAAQ,GAAO4wO,EAAgBzvO,QAAQnB,GAAO,IACxF4vc,EAAShrc,KAAK,CAAE2Q,KAAMxS,EAAMQ,OAAOwjF,UAAUltC,YAAY75C,GAAMyc,GAAI1Z,EAAMQ,OAAOS,QAAQyY,GAAK,OAASzc,IACtG4wO,EAAgBhsO,KAAK5E,IAI7B4vc,EAAS/vc,OAAS0wO,EAAaF,mBAC/Bu/N,EAAS9yb,OAAOyzN,EAAaF,kBAC7Bu/N,EAAShrc,KAAK,CACV2Q,KAAMxS,EAAMQ,OAAOwjF,UAAUltC,YAAY,cACzCp9B,GAAI1Z,EAAMQ,OAAOS,QAAQyY,GAArB1Z,oBAGR6sc,GAAYA,EAAS/vc,QAAU,IAC/B2+C,EAAKu4B,MAAQ64X,EACbx1a,aAAO,IAAMr3B,EAAMQ,OAAOS,QAAQyY,GAAK,aAAcxZ,EAAKe,SAASg1B,UAAUvM,OAAOwgD,cAQ5GngC,EAAS9pC,KACJhC,EAAK,EAAGuF,EAAKtD,EAAK8zE,MAAO/1E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACpD,IACIwvN,EAAU3uN,EADH0E,EAAGvF,IAEd,GAAuB,kBAAZwvN,EACP,OAAOA,EAAQhxN,MAEvBwD,KAAKO,OAAOwpB,QAAQhD,IAAwB9mB,IAEhDgmS,EAAO/pS,UAAUixO,YAAc,SAAUF,GAErC,IADA,IAAIS,EAAY,GACP9wO,EAAI,EAAGA,EAAIoD,KAAKO,OAAO6sO,eAAevwO,OAAQD,IAAK,CACxD,IAAII,EAAMgD,KAAKO,OAAO6sO,eAAexwO,GACf,WAAlBqwO,EACKjtO,KAAKO,OAAOstO,oBAAoB1vO,QAAQnB,IAAQ,IAAmC,IAA5B0wO,EAAUvvO,QAAQnB,IAC1E0wO,EAAU9rO,KAAK5E,GAId,CAAC,QAAS,iBAAiBmB,QAAQnB,IAAQ,IAAmC,IAA5B0wO,EAAUvvO,QAAQnB,IACrE0wO,EAAU9rO,KAAK5E,GAI3B,OAAO0wO,GAEXu4D,EAAO/pS,UAAU02D,iBAAmB,SAAU3yD,GAC1C,IAAIF,EAAQC,KAERi9B,EAASj9B,KAAKO,OAAO2vc,gBACrBxqX,EAAWzlF,EAAKu7C,KAAK/hC,GACrBqN,EAAQ,IAAIkqb,WAAW,WAAY,CACnC,KAAQlvc,OACR,SAAW,EACX,YAAc,IAEdmvc,EAAa,GACb3/a,EAAM,KACN2L,EAAOjH,UAAUzD,SAAS,2BAA6B0K,EAAOjH,UAAUzD,SAAS,gBACjF0K,EAAOjH,UAAUzD,SAAS,oBAAsB0K,EAAOjH,UAAUzD,SAAS,YAAc0K,EAAOjH,UAAUzD,SAAS,cAClHjB,EAAM2L,EAAO2W,cAER3W,EAAOjH,UAAUzD,SAAS,iBAAmB0K,EAAOjH,UAAUzD,SAAS,aAC5EjB,EAAM2L,EAEDA,EAAOjH,UAAUzD,SAAS,kBAC/BjB,EAAM2L,EAAO2W,cAAcA,eAE/B,IAGIqjC,EAHAi6X,EAAUj7Z,OAAO3kB,EAAInC,aAAa,UAClCgib,EAAUl7Z,OAAO3kB,EAAInC,aAAa,kBAClCouT,EAAav9U,KAAKO,OAAOivE,YAAY0hY,GAASC,GAOlD,OALIlxc,EAAKu7C,KAAK/hC,GAAGtb,QAAQ6B,KAAKO,OAAOS,QAAQyY,GAAK,SAAW,IACzDzZ,KAAKw5D,MAAQx5D,KAAKO,OAAOw2E,aAAaF,UAAU0mQ,EAAWtlQ,WAAW9qE,YAAYsM,GAClFzZ,KAAK4uO,aAAe5uO,KAAKO,OAAOw2E,aAAaF,UAAU0mQ,EAAWtlQ,WAAW9qE,YAAY8lE,QACzFgE,EAAgBh3E,EAAKu7C,KAAK/hC,GAAG9c,MAAM,QAAQ,IAEvC+oF,GACJ,KAAK1lF,KAAKO,OAAOS,QAAQyY,GAAK,OAC1Bw3b,EAAa,CACTtkJ,YAAQ3wT,EACRo+G,QAAQ,EACRiyM,kBAAkB,EAClBK,oBAAqB,CAAEruO,SAAU,eAErCr+E,KAAKO,OAAOwpB,QAAQhD,IAAqBkqb,GAAY,SAAU1jO,GAC3D,GAAIjuO,cAAY,CACZ,IAAI8xc,EAAgBxiY,KAAUmO,0BAA0BwwJ,EAAam/E,qBACrE3sT,EAAMQ,OAAOksT,UAAU2kJ,EAAe7jO,EAAa8+E,iBAAkB9+E,EAAao/E,OAAQp/E,EAAanzH,aAGvGr6G,EAAMQ,OAAOksT,UAAUl/E,EAAam/E,oBAAqBn/E,EAAa8+E,iBAAkB9+E,EAAao/E,OAAQp/E,EAAanzH,WAGlI,MACJ,KAAKp6G,KAAKO,OAAOS,QAAQyY,GAAK,SAC1Bw3b,EAAa,CACT72V,QAAQ,EACRiyM,kBAAkB,EAClBC,cAAUtwT,EACVowT,sBAAuB,CAAE/tO,SAAU,gBAEvCr+E,KAAKO,OAAOwpB,QAAQhD,IAAqBkqb,GAAY,SAAU1jO,GAC3D,GAAIjuO,cAAY,CACZ,IAAI+xc,EAAkBziY,KAAU+R,4BAA4B4sJ,EAAa6+E,uBACzErsT,EAAMQ,OAAO4rT,YAAYklJ,EAAiB9jO,EAAa8+E,iBAAkB9+E,EAAa++E,SAAU/+E,EAAanzH,aAG7Gr6G,EAAMQ,OAAO4rT,YAAY5+E,EAAa6+E,sBAAuB7+E,EAAa8+E,iBAAkB9+E,EAAa++E,SAAU/+E,EAAanzH,WAGxI,MACJ,KAAKp6G,KAAKO,OAAOS,QAAQyY,GAAK,OAC1Bw3b,EAAa,CACT72V,QAAQ,EACRkyM,cAAUtwT,EACVqwT,kBAAkB,EAClBD,sBAAuB,CAAE/tO,SAAU,eAEvCr+E,KAAKO,OAAOwpB,QAAQhD,IAAqBkqb,GAAY,SAAU1jO,GAC3D,GAAIjuO,cAAY,CACZ,IAAI+xc,EAAkBziY,KAAU+R,4BAA4B4sJ,EAAa6+E,uBACzErsT,EAAMQ,OAAOisT,UAAU6kJ,EAAiB9jO,EAAa8+E,iBAAkB9+E,EAAa++E,SAAU/+E,EAAanzH,aAG3Gr6G,EAAMQ,OAAOisT,UAAUj/E,EAAa6+E,sBAAuB7+E,EAAa8+E,iBAAkB9+E,EAAa++E,SAAU/+E,EAAanzH,WAGtI,MACJ,KAAKp6G,KAAKO,OAAOS,QAAQyY,GAAK,qBAC1B6X,EAAI+nF,cAAcvyF,GAClB,MACJ,KAAK9mB,KAAKO,OAAOS,QAAQyY,GAAK,WAC1BzZ,KAAKO,OAAO24B,cAAc,CACtBk3C,mBAAoB,CAChBmB,kBAAmB,CACfxU,WAAYwgR,EAAW7jQ,UAAU26I,UACjCv/I,gBAAiB90E,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBuD,oBAI9E90E,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBwD,UAAY,YAC7D,MACJ,KAAK/0E,KAAKO,OAAOS,QAAQyY,GAAK,YAC1BzZ,KAAKO,OAAO24B,cAAc,CACtBk3C,mBAAoB,CAChBmB,kBAAmB,CACfxU,WAAYwgR,EAAW7jQ,UAAU26I,UACjCv/I,gBAAiB90E,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBuD,oBAI9E90E,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBwD,UAAY,aAC7D,MACJ,KAAK/0E,KAAKO,OAAOS,QAAQyY,GAAK,UAC1B,GAAI6X,EAAI9vB,iBAAiB,IAAMyoE,MAAa,CACxC,IAAIl/C,EAAMuG,EAAI9vB,iBAAiB,IAAMyoE,MAAY,GACjDjqE,KAAKO,OAAOw2N,QAAQhsM,GAExB,MACJ,KAAK/qB,KAAKO,OAAOS,QAAQyY,GAAK,YAC1B,GAAI6X,EAAI9vB,iBAAiB,IAAMyoE,KAAe,CAC1C,IAAIqnY,EAAOhgb,EAAI9vB,iBAAiB,IAAMyoE,KAAc,GACpDjqE,KAAKO,OAAOw2N,QAAQu6O,GAExB,MACJ,KAAKtxc,KAAKO,OAAOS,QAAQyY,GAAK,mBAC1BzZ,KAAKO,OAAOgxc,sBAAsBC,8BAClC,MACJ,KAAKxxc,KAAKO,OAAOS,QAAQyY,GAAK,iBAC9B,KAAKzZ,KAAKO,OAAOS,QAAQyY,GAAK,qBAC9B,KAAKzZ,KAAKO,OAAOS,QAAQyY,GAAK,iCAC9B,KAAKzZ,KAAKO,OAAOS,QAAQyY,GAAK,8BAC1B6X,EAAIsE,aAAa,KAAM51B,KAAKw5D,OAC5BloC,EAAIsE,aAAa,eAAgB51B,KAAK4uO,cACtCt9M,EAAIsE,aAAa,aAAc51B,KAAKw5D,OACpCloC,EAAIsE,aAAa,YAAa51B,KAAKy4N,OAAO5hJ,UAAU0mQ,EAAWtlQ,WAAW9qE,YAAY8pE,eACtF3lD,EAAIsE,aAAa,iBAAkB51B,KAAKy4N,OAAO5hJ,UAAU0mQ,EAAWtlQ,WAAW9qE,YAAY+lE,WAC3F5hD,EAAIsE,aAAa,gBAAiB51B,KAAKy4N,OAAO5hJ,UAAU0mQ,EAAWtlQ,WAAW9qE,YAAYgmE,UAC1FnzE,KAAKwtc,QAAQp/N,0BAA0B98M,EAAKtxB,KAAKO,OAAOS,QAASi2E,GACjE,MACJ,KAAKj3E,KAAKO,OAAOS,QAAQyY,GAAK,OAASw9D,EACnCj3E,KAAKyxc,gBAAgBx6X,GACrB,MACJ,KAAKj3E,KAAKO,OAAOS,QAAQyY,GAAK,gBAC9B,KAAKzZ,KAAKO,OAAOS,QAAQyY,GAAK,kBAC1B,GAAIzZ,KAAKO,OAAO6vc,eAAgB,CAC5B,IAAIrjT,EAAS,CACT9vH,OAAQ3L,EACRrnB,OAAQy7E,EACR9xC,cAAe5zC,KAAKO,OAAOS,SAE/BhB,KAAKO,OAAOyZ,OAAO+M,IAAqBgmI,GACxC/sJ,KAAKO,OAAO85D,KAAKskP,kBAAkBzwE,YAAY7rO,SAI3DrC,KAAKO,OAAOwpB,QAAQhD,IAAyB9mB,IAEjDgmS,EAAO/pS,UAAUw1c,wBAA0B,SAAU78X,GAKjD,IAJA,IAAI88X,EAAgBzzc,OAAOjB,KAAK+C,KAAKy4N,OAAOpuK,eAExCunZ,GAAU,EACVp7X,EAAY,GACP7gE,EAHQg8b,EAAc90c,OAGH,EAAG8Y,GAAO,EAAGA,IAAO,CAC5C,IAAIoqE,EAAO//E,KAAKy4N,OAAOpuK,cAAcsnZ,EAAch8b,IAAMk/D,GACzD,IAAIkL,EAWA,OAAO,EALP,GALA6xX,KAAUA,GAAyB,KAAdp7X,IAAmBA,IAAcuJ,EAAKrG,UAAU3tC,KACrEyqC,EAAYuJ,EAAKrG,UAAU3tC,KAAOg0C,EAAKrG,UAAU3tC,KAAK5+B,WAAa,GACjD,QAAd4yE,EAAK50E,OACLymc,GAAU,GAEVA,GAAW7xX,EAAK3F,SAAW2F,EAAK3F,QAAQv9E,OAAS,EACjD,OAAO,EAOnB,OAAO,GAEXopS,EAAO/pS,UAAUm0c,cAAgB,SAAUpza,GACvC,IAAI40a,GAAe,EACnB,GAAI50a,EAAOjH,UAAUzD,SAAS,WAAa0K,EAAOjH,UAAUzD,SAAS,WAAa0K,EAAOjH,UAAUzD,SAAS,oBAAsB0K,EAAOjH,UAAUzD,SAAS,kBACxJs/a,GAAe,MAEd,CACD,IAAIr7X,EAAYv5C,EAAO9N,aAAa,aACpC,IAAKqnD,GAA0B,IAAbA,EAAiB,CAC/B,IAAI06X,EAAUj7Z,OAAOhZ,EAAO9N,aAAa,UACrCgib,EAAUl7Z,OAAOhZ,EAAO9N,aAAa,kBACzCqnD,EAAYx2E,KAAKy4N,OAAOjpJ,YAAY0hY,GAASC,GAASl5X,WAG1D,IADA,IAAI04J,EAAc3wO,KAAKO,OAAO6vE,mBAAmB7T,OACxCu1Y,EAAW,EAAGA,EAAWnhO,EAAY9zO,OAAQi1c,IAClD,GAAI9xc,KAAKO,OAAO6vE,mBAAmB7T,OAAOu1Y,GAAU13b,OAASo8D,EAAW,CACpEq7X,GAAe,EACf,OAIZ,OAAOA,GAGX5rK,EAAO/pS,UAAUu1c,gBAAkB,SAAUrxW,GACzC,GAAIpgG,KAAKO,OAAOstO,oBAAoB1vO,QAAQiiG,IAAc,EAEtD,IADA,IAAIuwI,EAAc3wO,KAAKO,OAAO6vE,mBAAmB7T,OACxCu1Y,EAAW,EAAGA,EAAW9xc,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAQi1c,IAAY,CACxF,GAAI9xc,KAAKO,OAAO6vE,mBAAmB7T,OAAOu1Y,GAAU13b,OAASpa,KAAKw5D,MACzCm3K,EAAYmhO,GAClB3mc,KAAOi1F,IAKtC6lM,EAAO/pS,UAAUyxc,kBAAoB,SAAUptc,GAC3C2lO,IAAK99L,OAAOsyT,IACRn6V,EAAO0yS,kBACP/sE,IAAK99L,OAAOi3U,IAEZ9+W,EAAO2yS,gBACPhtE,IAAK99L,OAAOurZ,IAEhBztN,IAAK99L,OAAOqqQ,KAAWgvC,EAASu3G,IAC5Bh5b,KAAKqtc,aAAa55J,kBAClBvtE,IAAK99L,OAAOoia,KAKpBvkK,EAAO/pS,UAAU61c,mBAAqB,WAelC,GAdA/xc,KAAK2tc,kBAAkB3tc,KAAKO,QAC5BP,KAAKO,OAAO85D,KAAK0tC,cAAgB/nG,KAAKqtc,aAAatlW,cACnD/nG,KAAKO,OAAO85D,KAAK+vE,cAAgBpqI,KAAKqtc,aAAajjU,cACnDpqI,KAAKO,OAAO85D,KAAKyC,iBAAmB98D,KAAKO,OAAOiyT,iBAA0BxyT,KAAKqtc,aAAavwY,gBAC5F98D,KAAKO,OAAO85D,KAAK4pF,eAAiBjkJ,KAAKqtc,aAAappT,eAEpDjkJ,KAAKO,OAAO85D,KAAKo5O,iBAAmBzzS,KAAKqtc,aAAa55J,iBACtDzzS,KAAKO,OAAO85D,KAAK0kF,iBAAmB/+I,KAAKqtc,aAAatuT,iBAEtD/+I,KAAKO,OAAO85D,KAAKqpC,kBAAoB1jG,KAAKqtc,aAAa3pW,kBACvD1jG,KAAKO,OAAO85D,KAAKgwE,iBAAmBrqI,KAAKqtc,aAAahjU,iBACtDrqI,KAAKO,OAAO85D,KAAKsK,UAAY3kE,KAAKqtc,aAAa1oY,UAC/C3kE,KAAKO,OAAO85D,KAAKkE,UAAYv+D,KAAKqtc,aAAa9uY,UAC/Cv+D,KAAKO,OAAO85D,KAAKivP,UAAYtpT,KAAKqtc,aAAa/jJ,UAC3CtpT,KAAKO,OAAOyuc,iBAAkB,CAC9B,IAAI/xc,EAAOiB,OAAOjB,KAAK+C,KAAKO,OAAOyuc,kBAC/B/xc,EAAKkB,QAAQ,WAAa,IAC1B6B,KAAKO,OAAO85D,KAAK1qB,OAAS3vC,KAAKqtc,aAAa19Z,QAE5C1yC,EAAKkB,QAAQ,UAAY,IACzB6B,KAAKO,OAAO85D,KAAK3qB,MAAQ1vC,KAAKqtc,aAAa39Z,OAE/C1vC,KAAKgyc,qBACD/0c,EAAKkB,QAAQ,kBAAoB,GACjC6B,KAAKO,OAAO0xc,gBAGpBjyc,KAAKkyc,wBAETjsK,EAAO/pS,UAAU81c,mBAAqB,WAElC,IADA,IAAI/0c,EAAOiB,OAAOjB,KAAK+C,KAAKO,OAAOyuc,kBAC1Bn1H,EAAS,EAAGA,EAAS75U,KAAKO,OAAO0uc,aAAapyc,OAAQg9U,IAE3D,IADA,IAAIs4H,EAAcnyc,KAAKO,OAAO0uc,aAAap1H,GAClCxqQ,EAAS,EAAGA,EAASpyE,EAAKJ,OAAQwyE,IAAU,CACjD,IAAIryE,EAAMC,EAAKoyE,GAEVjyE,YAAkB4C,KAAKO,OAAO0uc,aAAap1H,GAAQ78U,MAEpDm1c,EAAYn1c,GAAOgD,KAAKO,OAAOyuc,iBAAiBhyc,IAI5DgD,KAAKO,OAAO6xc,gBAAgBpyc,KAAKO,OAAO85D,KAAKN,UAEjDksO,EAAO/pS,UAAUg2c,qBAAuB,WACpC97a,aAAYp2B,KAAKO,OAAOS,QAAQQ,iBAAiB,IAAMyoE,KAA0B,CAACA,IAAyBA,QAE/Gg8N,EAAO/pS,UAAUm2c,oBAAsB,SAAUtyX,EAAMiiS,EAAOp+R,EAAMC,GAChE,GAAI7jF,KAAKO,OAAOkjF,oBAA+C,UAAzBzjF,KAAKO,OAAOikB,SAAsB,CACpE,IAAI8tb,EAAQtyc,KAAKO,OAAO6vE,mBAAmBmB,kBACvC5vE,EAAqB,cAAdo+E,EAAK50E,MACqC,IAAjDnL,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,QAAiBmD,KAAKO,OAAO6vE,mBAAmBkC,sBACrFtyE,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAS,GAAKmD,KAAKO,OAAO6vE,mBAAmBkC,sBAC/EtyE,KAAKO,OAAOw2E,aAAa1sB,cAAcxtD,OAAS,EACC,IAAlDmD,KAAKO,OAAO6vE,mBAAmBrW,QAAQl9D,OAAe,EAAKmD,KAAKO,OAAOw2E,aAAa1sB,cAAcxtD,OAAS,EAHA,EAI/G01c,EAAQD,GAASA,EAAMv1Y,WAAcgjB,EAAKrG,UAAU26I,YAAci+O,EAAMv1Y,WAAa8mB,IAASyuX,EAAMz9X,YACxG,QAAc74E,IAAVs2c,GAAuBC,GAAQ3uX,IAASjiF,GAAoD,WAA7C3B,KAAKO,OAAO6vE,mBAAmBqB,YAC1EuwS,EAAM1+W,cAAc,qBACpB0+W,EAAM1+W,cAAc,oBAAoB0yB,UAAUjN,IAAwB,eAApBupb,EAAMv9X,UACxD,eAAiB,eACrBitS,EAAM1+W,cAAc,oBAAoB0yB,UAAUjN,IAAwB,eAApBupb,EAAMv9X,UACxD,oBAAsB,qBAG1BitS,EAAMhgX,YAAYb,YAAc,MAAO,CACnCktB,UAAgC,eAApBikb,EAAMv9X,UACd,yDACA,2DAGP33E,YAAkB2iF,EAAKjG,WAA2B,cAAdiG,EAAK50E,MAAwB62W,EAAM1+W,cAAc,eACrF0+W,EAAM1+W,cAAc,uBAAyB0+W,EAAM1+W,cAAc,uBAAuB,CACzF,IAAItC,EAAWghX,EAAM1+W,cAAc,uBAAyB0+W,EAAM1+W,cAAc,qBAChFmyB,aAAkBz0B,EAAS,CAAE,cAAe,UAKxD,OAAOghX,GAEX/7E,EAAO/pS,UAAU4yc,aAAe,SAAU7uc,GAEtC,IAAIw5D,EAA+B,oBAAtBx5D,EAAKw5D,OAAOD,MAA8B,kBAAoBv5D,EAAKw5D,OAAO0C,iBAAiB4jB,KAAKrG,UAAU26I,UACvHr0N,KAAKO,OAAO4tc,WAAW10Y,GAAUxjB,OAAOh2C,EAAKw5D,OAAO/pB,MAAMviC,WAAWxQ,MAAM,MAAM,IACjFqD,KAAK6uc,cAAc5uc,GACnBD,KAAKuuc,qBAAoB,GACzBvuc,KAAKO,OAAO85D,KAAK6zP,cAErBjoB,EAAO/pS,UAAU2yc,cAAgB,SAAU5uc,GACvC,GAAID,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOkyT,mBAC3CzyT,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAyB,CAEjE,GADAjqE,KAAKO,OAAOkyT,kBAAkB7oL,YAC1B5pI,KAAKO,OAAOS,QAAQsC,cAAc,gBAAgBmzB,YAAc,MAAQz2B,KAAKO,OAAOiyc,cAAe,CACnGvyc,EAAK8iB,QAAS,EACd,IAAI4sI,EAAa3vJ,KAAKO,OAAO85D,KAAKN,QAC9B41F,GAAcA,EAAW9yJ,OAAS,IAClC8yJ,EAAW,GAAGjgH,MAAQ1vC,KAAKotc,aAE/Bptc,KAAKO,OAAOS,QAAQsC,cAAc,mBAAmBA,cAAc,OAAO0wB,MAAM0b,MAAS1vC,KAAKotc,YAAc,KAC5Gptc,KAAKO,OAAOS,QAAQsC,cAAc,oBAAoBA,cAAc,OAAO0wB,MAAM0b,MAAS1vC,KAAKotc,YAAc,KAEjHptc,KAAKO,OAAOS,QAAQsC,cAAc,iBAAiB0wB,MAAM2b,OAAS,OAClE3vC,KAAKO,OAAOS,QAAQsC,cAAc,mBAAmB0wB,MAAM0b,MACvD1vC,KAAKO,OAAOS,QAAQsC,cAAc,gBAAgBmzB,YAAc,KACpE,IAAIg8a,EAAiBzyc,KAAKO,OAAOS,QAAQsC,cAAc,oBAAoBssC,aAC3E5vC,KAAKO,OAAOS,QAAQsC,cAAc,iBAAiB0wB,MAAM2b,OAAS8ia,EAAiB,KAEvFzyc,KAAKO,OAAOwpB,QAAwB,aAAhB9pB,EAAKY,EAAEsK,MAAuC,YAAhBlL,EAAKY,EAAEsK,KAAqB4b,KAAoBA,KAAiB9mB,IAIvHgmS,EAAO/pS,UAAUwpF,SAAW,WACxBvlF,aAAaH,KAAK+yT,YAClB/yT,KAAK+yT,WAAa3yT,WAAWJ,KAAK+lH,SAAS5pH,KAAK6D,MAAO,MAE3DimS,EAAO/pS,UAAU6pH,SAAW,WAIxB,IAHA,IAAI2sV,EAAY,CAAElC,kBAAmB,GAAIhhY,YAAaxvE,KAAKO,OAAOivE,YAAay+P,YAAa,MAGnFjwU,EAAK,EAAG20c,EADM3yc,KAAKO,OAAOS,QAAQQ,iBAAiB,IAAMyoE,IAA4B,KAAOA,MAC7CjsE,EAAK20c,EAAmB91c,OAAQmB,IAAM,CAC1F,IAAIgD,EAAU2xc,EAAmB30c,GAC7B86E,EAAW7iC,OAAOj1C,EAAQmuB,aAAa,kBACvCw8C,EAAW11B,OAAOj1C,EAAQmuB,aAAa,UACvC4wD,EAAO//E,KAAKy4N,OAAOjpJ,YAAY7D,GAAUmN,GACzCiH,IACkB,UAAdA,EAAKh0C,KACL2ma,EAAUlC,kBAAkB5uc,KAAK,CAC7BqsU,YAAaluP,EACbvjF,MAAOujF,EAAKvjF,MACZg8E,cAAeuH,EAAKvH,cACpBF,WAAYyH,EAAKzH,WACjBrE,QAAS8L,EAAK9H,WAAW9qE,aAGV,WAAd4yE,EAAKh0C,KACV2ma,EAAUlC,kBAAkB5uc,KAAK,CAC7BqsU,YAAaluP,EACbvjF,MAAOujF,EAAKrH,cACZF,cAAeuH,EAAKrG,UAAU26I,UAC9B/7I,WAAY,GACZrE,QAAS,KAIby+X,EAAUlC,kBAAkB5uc,KAAK,CAC7BqsU,YAAaluP,EACbvjF,MAAOujF,EAAKrH,cACZF,cAAe,GACfF,WAAYyH,EAAKrG,UAAU26I,UAC3BpgJ,QAAS,MAKzBj0E,KAAKO,OAAOwpB,QAAQhD,IAAqB2rb,IAE7CzsK,EAAO/pS,UAAUizc,kBAAoB,SAAUlvc,GAC3C,IAAI+hX,EAAQ/hX,EAAK8/E,KACjB,GAAIiiS,GAAUhiX,KAAKO,OAAOstc,UAAa7tc,KAAKy4N,OAAOpuK,cAAe,CAC9D,IAAIiiJ,EAActsM,KAAKO,OAAOqyc,kBAAkB18W,SAChD8rR,EAAMpsV,aAAa,SAAUqgB,OAAO+rU,EAAM7yV,aAAa,UAAYnvB,KAAKy4N,OAAOpuK,cAAcxtD,QAAQsQ,YACrG,IAAI4yE,EAAO9/E,EAAK4a,KAAK,GACrB,GAA4C,MAAxCmnW,EAAM7yV,aAAa,iBAA0B,CAC7C,GAA6B,UAAzBnvB,KAAKO,OAAOikB,SAAsB,CAClC,IAAIqub,EAAc9yX,EAAK50E,MAAsB,UAAd40E,EAAK50E,KACpC62W,EAAM5sR,UAAY,GAClB,IAAIlc,EAAQ6G,EAAK7G,MAAQ6G,EAAK7G,MAAS25X,EAAe7yc,KAAK8sc,SAAW,EAAK,EAC3E,GACQ5zX,EAAQ,GACR8oS,EAAMhgX,YAAYb,YAAc,OAAQ,CACpCktB,UAAqB,IAAV6qD,EAAc,GAAKjP,QAGtCiP,UACKA,GAAS,GAClBA,EAAQ6G,EAAK7G,MAAQ6G,EAAK7G,MAAQ,EAClCl5E,KAAK8sc,SAAY+F,EAAsB7yc,KAAK8sc,SAAb5zX,GAC1B6G,EAAKjG,UAAYZ,EAAQ,GAC1B8oS,EAAMhgX,YAAYb,YAAc,OAAQ,CACpCktB,UAAW47C,QAGnB,IAAIuM,OAAY,EACXx2E,KAAKO,OAAO6vE,mBAAmBtH,KAAKjsE,OAAS,KAC7CkjF,EAAKrG,WAAYx7E,OAAOjB,KAAK8iF,EAAKrG,WAAW78E,OAAS,KACvD25E,EAAY0C,GAAS,EAAIl5E,KAAKO,OAAO6vE,mBAAmBtH,KAAKoQ,GAAO9+D,KAAO,GAC3E4nW,EAAMpsV,aAAa,YAAa4gD,SAIpCwrS,EAAQhiX,KAAK8yc,wBAAwB9wF,EAAOjiS,GAEhD,IAAIgzX,EAAgBhzX,EAAKrH,cACrBqH,EAAK50E,OACa,cAAd40E,EAAK50E,MACLnL,KAAKgzc,YAAcjzX,EAAKpU,SACxBq2S,EAAMhsV,UAAUjN,IAAI,UACpBgqb,EAAgB/yc,KAAKO,OAAOwjF,UAAUltC,YAAY,eAE7CkpC,EAAKrG,UAAU26I,YAAer0N,KAAKO,OAAOwjF,UAAUltC,YAAY,cACpE72C,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBuD,gBAAoBiL,EAAKrH,cAC3EspS,EAAMhsV,UAAUjN,IAAI,UAGpBi5V,EAAMhsV,UAAUjN,IAAI,WAG5Bi5V,EAAMhsV,UAAUjN,IAAIkhD,OACE,IAAlB8V,EAAKjG,UAAsBiG,EAAK1M,YAChC2uS,EAAMhgX,YAAYb,YAAc,MAAO,CACnCktB,YAA+B,IAAnB0xD,EAAK/F,UAAqB/P,IAAeA,MAAc,IAAMA,KACzEl3C,MAAO,CACH,OAA4B,IAAnBgtD,EAAK/F,UAAqBh6E,KAAKO,OAAOwjF,UAAUltC,YAAY,YACjE72C,KAAKO,OAAOwjF,UAAUltC,YAAY,cAIlDmrU,EAAMhgX,YAAYb,YAAc,OAAQ,CACpCktB,UAAW47C,IACX7nE,UAAYpC,KAAKO,OAAO0yc,oBAAsBlzX,EAAKmzX,gBAAkB,iBAAmBH,EAAgB,4BAA8BzmQ,EAAc,KAAOymQ,EAAgB,OAASA,KAExL,IAAIT,EAAQtyc,KAAKO,OAAO4yc,UAAU/iY,mBAAmBmB,kBACrD,GAAIvxE,KAAKO,OAAOkjF,oBACR6uX,GAASA,EAAMv1Y,YAA2D,QAA7C/8D,KAAKO,OAAO6vE,mBAAmBqB,WACzDzxE,KAAKO,OAAOivE,YAAYv5B,OAAO+rU,EAAM7yV,aAAa,WAAW,GAAGuqD,UAAU26I,WACzEr0N,KAAKO,OAAOivE,YAAYv5B,OAAO+rU,EAAM7yV,aAAa,WAAW,GAAGuqD,UAAU26I,YACtEi+O,EAAMv1Y,WAAY,CACtB,IAAI/oC,EAASguV,EAAM1+W,cAAc,cAAgB0+W,EAAM1+W,cAAc,eACjE,oBAAsB,oBAC1B0+W,EAAMhgX,YAAYb,YAAc,MAAO,CACnCktB,UAAgC,eAApBikb,EAAMv9X,UACd,yDACA,uDACJhhD,OAAQC,UAMvB,CACD,IAAIohE,EAAY4sR,EAAM5sR,UACtB4sR,EAAM5sR,UAAY,GAClB4sR,EAAMhsV,UAAUjN,IAAIkhD,OACpB8V,EAAO9/E,EAAK4a,KAAKo7B,OAAO+rU,EAAM7yV,aAAa,oBAClCmqD,OACL0oS,EAAMhsV,UAAUjN,IAAIkhD,MAEpB8V,EAAKvG,YAAcx5E,KAAKozc,cAAgBn9Z,OAAO+rU,EAAM7yV,aAAa,mBAAqBnvB,KAAKgzc,cAAgB/8Z,OAAO+rU,EAAM7yV,aAAa,UACtI6yV,EAAMhsV,UAAUjN,IAAI,WAEU,SAAzB/oB,KAAKO,OAAOikB,SAAsBu7D,EAAKzG,MAAQt5E,KAAK0xc,wBAAyBt0c,YAAkB2iF,EAAKvjF,OAAyBujF,EAAKjH,SAAW,EAAhCiH,EAAKjH,YACvHkpS,EAAMhsV,UAAUjN,IAAI,aAEpBg3D,EAAKmW,UACL8rR,EAAMhsV,UAAUjN,IAAIg3D,EAAKmW,UAE7B8rR,EAAMhgX,YAAYb,YAAc,OAAQ,CACpCktB,UAAW47C,IACX7nE,WAAuD,IAA1C4/W,EAAM3zV,UAAUlwB,QAAQ,cAAuB6B,KAAKO,OAAO8yc,yBACzB,IAA1CrxF,EAAM3zV,UAAUlwB,QAAQ,cAAuB6B,KAAKO,OAAO+yc,sBAAyBvzX,EAAKmzX,gBAC1F,gBAAkB99W,EAAY,4BAA8Bk3G,EAAc,KAAOl3G,EAAY,OAASA,KAE1Gp1F,KAAKO,OAAO8sc,aAAavwY,kBAAoB98D,KAAKO,OAAOiyT,iBACzDwvD,EAAMpsV,aAAa,gBAAiB31B,EAAKw5D,OAAO0C,iBAAiB4jB,KAAKjH,SAAS3rE,YAGvF,GAAInN,KAAKO,OAAOkvc,aAAc,CAC1B,IAAIj1b,EAAQwnW,EAAM7yV,aAAa,SAC3Bokb,EAAWvxF,EAAM7yV,aAAa,iBAC9BuzE,EAAaloF,EAAQ,IAAM+4b,EAC/B,GAAMzxc,QAAUxC,cAYPkb,GAAS+4b,IACdvzc,KAAKO,OAAOmtc,mBAAmBhrW,GAAcs/Q,OAbpB,CAEzB,IAAIhhX,EAAUhB,KAAKO,OAAOmvc,iBAAZ1vc,CAA8B,CAAE2vc,WAAY3tF,EAAO0uF,SAAU3wX,GAAQ//E,KAAKO,OAAQ,eAAgBP,KAAKO,OAAOS,QAAQyY,GAAK,gBAAiB,KAAM,KAAMuoW,GAClKhhX,GAAuB,KAAZA,GAAkBA,EAAQnE,OAAS,IAC1CmD,KAAKO,OAAO4yG,oBACZnzG,KAAKO,OAAOijG,WAAWw+Q,EAAO7mU,IAAmBI,SAASv6C,EAAQ,GAAGkB,YAGrElC,KAAKO,OAAOijG,WAAWw+Q,EAAOhhX,EAAQ,GAAGkB,aAQzDlC,KAAKkiI,aAAa8/O,GAClBhiX,KAAKk0C,WAAW8tU,GAEpB/hX,EAAKuzc,UAAYxzc,KAAKO,OACtBP,KAAKO,OAAOwpB,QAAQhD,IAAsB9mB,IAG9CgmS,EAAO/pS,UAAU42c,wBAA0B,SAAU9wF,EAAOjiS,GACxDiiS,EAAM5sR,UAAY,GAClB,IAAIy3O,EAAgB7sU,KAAKy4N,OAAOo0G,cAChC,GAAI7sU,KAAKO,OAAOqjE,sBACZ,GAAImc,EAAKnG,SAAW,GAAK55E,KAAKO,OAAOu2E,iBAAiBk0P,WAAWnuU,OAAS,EAAG,CACzE,IAAIq0U,EAAUlxU,KAAKO,OAAOu2E,iBAAiBk0P,WAAWjrP,EAAKnG,SACvDu3P,EAAiBD,EAAQE,gBAAgBjzU,QAAQ4hF,EAAK9H,WAAW9qE,YAGjEkkU,GAFYH,EAAQE,gBAAgBhkU,UAAU,EAAG+jU,IAC5B,IAApBpxP,EAAK+uP,WAAmB,GAAK/uP,EAAK9H,WAAW9qE,aACzBxQ,MAAM,OAAO8H,KAAI,SAAU+2C,GAChD,MAAmB,MAAZA,EAAK,GAAaA,EAAQ,IAAMA,KAEnB,IAApBukC,EAAK+uP,YAAoBjC,GACzBwE,EAASzvU,KAAKm+E,EAAK9H,WAAW9qE,YAKlC,IAHA,IAAImkU,GAAkB,EAClBmiI,EAAkB,EAClBC,GAAe,EACVniI,EAAO,EAAGA,EAAOF,EAASx0U,OAAQ00U,IAAQ,CAG/CD,GAFmBD,EAASE,GACI50U,MAAM,MAAME,OAE5C,IAAIi9E,EAA4C,MAAjCo3P,EAAQxB,eAAe6B,QAAiBvxU,KAAKy4N,OAAO5hJ,UAAUq6P,EAAQ92P,QAAQm3P,GAAMpiT,aAAa,eAAiBnvB,KAAKy4N,OAAO5hJ,UAAUq6P,EAAQ92P,QAAQm3P,GAAMpiT,aAAa,cAAcwlS,aAAe4c,EAAOvxU,KAAKO,OAAO6vE,mBAAmBtH,KAAKjsE,OAAS,IAAMmD,KAAKO,OAAO6vE,mBAAmBtH,KAAKyoQ,EAAO,GAAGl+P,YAAcrzE,KAAKO,OAAO6vE,mBAAmBtH,KAAKyoQ,EAAO,GAAGn3T,KAAKjc,QAAQ,cAAgB,GAAK6B,KAAKy4N,OAAO5hJ,UAAU72E,KAAKO,OAAO6vE,mBAAmBtH,KAAKyoQ,EAAO,GAAGn3T,OAASpa,KAAKy4N,OAAO5hJ,UAAU72E,KAAKO,OAAO6vE,mBAAmBtH,KAAKyoQ,EAAO,GAAGn3T,MAAMsuT,eAAuBzyR,OAAOi7R,EAAQ92P,QAAQm3P,GAAMjuU,cAAc,wBAAwB+yF,aAAe,GAC7pBo9W,GAAoBliI,EAAO,GAAKmiI,IAAiB55X,EAAY,EAAI,EACjE45X,EAAe55X,EAGnB,IADA,IAAI3e,EAAS,EACJw4Y,EAAO,EAAGA,EAAOriI,EAAgBqiI,IACtC3xF,EAAMhgX,YAAYb,YAAc,OAAQ,CACpCktB,UAAW47C,QAEf9O,IAEJ,IAASw4Y,EAAO,EAAGA,EAAOF,GAAmBniI,EAAiB,EAAGqiI,IAC7D3xF,EAAMhgX,YAAYb,YAAc,OAAQ,CACpCktB,UAAW47C,QAGnBjqE,KAAK6sc,iBAAiB9sX,EAAKpU,UAAYxQ,EACvCn7D,KAAK4zc,UAAY5zc,KAAK4zc,UAAYz4Y,EAASn7D,KAAK4zc,UAAYz4Y,OAG/D,CACD,IAAI6jR,EAAgBj/P,EAAKigB,UACrBq0H,EAAgC,IAApBt0I,EAAK+uP,WAAoB9uU,KAAK+nU,WAAa,IAAMhoP,EAAKywP,gBAAmBzwP,EAAKywP,gBAC1F12P,EAAWiG,EAAKjG,SACpB,IAAK95E,KAAKq1U,cAAchhH,IAAcA,EAClCr0N,KAAKgtc,iBAAiBhtc,KAAK+tC,UAAYsmL,EACvCr0N,KAAKq1U,cAAchhH,GAAa,CAAEtmL,SAAU/tC,KAAK+tC,SAAU+rC,SAAUA,GACrE95E,KAAK+tC,gBAEJ,GAAIsmL,EAAW,CAEhB,IADA,IAAIw/O,EAAY7zc,KAAKq1U,cAAchhH,GAAWtmL,SACrCp4B,EAAMk+b,EAAY,EAAGl+b,EAAM3V,KAAK+tC,SAAUp4B,WACxC3V,KAAKq1U,cAAcr1U,KAAKgtc,iBAAiBr3b,WACzC3V,KAAKgtc,iBAAiBr3b,GAEjC3V,KAAK+tC,SAAW/tC,KAAK+tC,SAAY8la,EAAY,EAAMA,EAAY,EAAK7zc,KAAK+tC,SAE7E,IAAK/tC,KAAK+sc,oBAAoB/tH,IAAkBA,EAC5Ch/U,KAAKitc,uBAAuBjtc,KAAKmtc,gBAAkBnuH,EACnDh/U,KAAK+sc,oBAAoB/tH,GAAiB,CACtC80H,YAAa9zc,KAAK+tC,SAAW,EAC7Bgma,aAAc/zc,KAAKmtc,gBAEvBntc,KAAKmtc,sBAEJ,GAAInuH,EAAe,CACpB,IAAIg1H,EAAYh0c,KAAK+sc,oBAAoB/tH,GAAe+0H,aACxD,IAASp+b,EAAMq+b,EAAY,EAAGr+b,EAAM3V,KAAKmtc,eAAgBx3b,WAC9C3V,KAAK+sc,oBAAoB/sc,KAAKitc,uBAAuBt3b,WACrD3V,KAAKitc,uBAAuBt3b,GAEvC3V,KAAKmtc,eAAiBntc,KAAKmtc,eAAkB6G,EAAY,EAAMA,EAAY,EAAKh0c,KAAKmtc,eAEzF,GAAwB,IAApBptX,EAAK+uP,YAAoBz6G,GAAar0N,KAAKq1U,cAAchhH,GAAY,CACrE,IAAI4/O,EAAmBj0c,KAAK+sc,oBAAoB/tH,GAC5Ch/U,KAAK+sc,oBAAoB/tH,GAAe+0H,cAAgB,EAC5D/zc,KAAK+nU,WAAa8E,GAAiBonI,GAAoBj0c,KAAKitc,uBAAuBpgI,EAAgB,GAC/F7sU,KAAK+nU,WAAa/nU,KAAKq1U,cAAchhH,GAAWtmL,SAExD,IAAIoqS,EAAUn4U,KAAKq1U,cAAchhH,GAAar0N,KAAKq1U,cAAchhH,GAAWtmL,UAAY,EACpFmma,EAAS,EAEb,IADI/4Y,EAAS,EACN+4Y,GAAU/7H,GAAWA,EAAU,GAAKp4P,EAAK7G,OAAS,GAAG,CACxD,IAAIi7X,EAAan0c,KAAKq1U,cAAcr1U,KAAKgtc,iBAAiBkH,IAASp6X,UAC/D45X,EAAeQ,EAAS,GAAIl0c,KAAKq1U,cAAcr1U,KAAKgtc,iBAAiBkH,EAAS,IAAIp6X,YACjEq6X,GACjBnyF,EAAMhgX,YAAYb,YAAc,OAAQ,CACpCktB,UAAW47C,QAGfiqY,IAAW/7H,IACX6pC,EAAMhgX,YAAYb,YAAc,OAAQ,CACpCktB,UAAW47C,QAEf9O,KAEJ+4Y,IAEoB,IAApBn0X,EAAK+uP,aAAoC,IAAhB/uP,EAAK7G,OAAgBh7E,OAAOjB,KAAK+C,KAAKq1U,eAAex4U,OAAS,IACvFmlX,EAAMhgX,YAAYb,YAAc,OAAQ,CACpCktB,UAAW47C,QAEf9O,KAEJn7D,KAAK6sc,iBAAiB9sX,EAAKpU,UAAYxQ,EACvCn7D,KAAK4zc,UAAY5zc,KAAK4zc,UAAYz4Y,EAASn7D,KAAK4zc,UAAYz4Y,EAUhE,OARA6mT,EAAMpsV,aAAa,YAAamqD,EAAKigB,aACnBhgG,KAAKO,OAAOu2E,iBAAiBk0P,WAAWjrP,EAAKnG,WACgB,IAA1E55E,KAAKO,OAAOu2E,iBAAiBk0P,WAAWjrP,EAAKnG,SAASu2P,gBACmB,IAAtEnwU,KAAKO,OAAOu2E,iBAAiBk0P,WAAWjrP,EAAKnG,SAASw1P,YACgB,IAAtEpvU,KAAKO,OAAOu2E,iBAAiBk0P,WAAWjrP,EAAKnG,SAASw1P,cAE1D4yC,EAAMhsV,UAAUjN,IAAI,UAEjBi5V,GAGX/7E,EAAO/pS,UAAUkzc,qBAAuB,SAAUnvc,GAC9C,GAAIA,EAAK8/E,KAAKtmB,QAAUx5D,EAAK8/E,KAAKtmB,OAAO0C,iBAAkB,CACvD,IAAI4jB,EAAO9/E,EAAK8/E,KAAKtmB,OAAO0C,iBAAiB4jB,KACzCiiS,EAAQ/hX,EAAKwzB,KACjB,GAAIssD,EAAM,CACN,IAAIusH,EAActsM,KAAKO,OAAOqyc,kBAAkB18W,SAC5Chd,EAAQ6G,EAAK7G,MAAQ6G,EAAK7G,MAAQ,GACjB,IAAhB6G,EAAK7G,QAAiB6G,EAAK3G,UAA8B,IAAlB2G,EAAK3G,QAC7Cn5E,EAAKwzB,KAAKO,MAAMygB,QAAU,OAErBsrC,EAAK3G,QAAU,IACpBn5E,EAAKwzB,KAAKmC,aAAa,UAAWmqD,EAAK3G,QAAQjsE,YAC/ClN,EAAKwzB,KAAKmC,aAAa,eAAgBmqD,EAAK3G,QAAQjsE,YAC/C4yE,EAAKpU,SAAWoU,EAAK3G,UAAap5E,KAAKy4N,OAAOpuK,cAAcxtD,SAC7DoD,EAAKwzB,KAAKO,MAAMq0I,kBAAoB,QAG5CpoK,EAAKwzB,KAAKmC,aAAa,gBAAiBmqD,EAAKjH,SAAS3rE,YACtDlN,EAAKwzB,KAAKmC,aAAa,QAASmqD,EAAKpU,SAASx+D,YAC9C,IAAIqpE,OAAY,EAiBhB,GAhB6B,UAAzBx2E,KAAKO,OAAOikB,YACNxkB,KAAKO,OAAO6vE,mBAAmB7T,QAAuD,WAA7Cv8D,KAAKO,OAAO6vE,mBAAmBqB,WAC1EzxE,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAS,GAC9CkjF,EAAKpU,WAAa3rE,KAAKy4N,OAAOpuK,cAAcxtD,OAAS,IAAOmD,KAAKO,OAAO6vE,mBAAmBrW,SAC5F/5D,KAAKO,OAAO6vE,mBAAmBrW,QAAQl9D,OAAS,IAChD25E,EAAY0C,GAAS,GAAKl5E,KAAKO,OAAO6vE,mBAAmBrW,QAAQmf,GAC7Dl5E,KAAKO,OAAO6vE,mBAAmBrW,QAAQmf,GAAO9+D,KAAO,GACzD4nW,EAAMpsV,aAAa,YAAa4gD,IAEhCx2E,KAAK0xc,wBAAwB3xX,EAAKjH,WAClCkpS,EAAMhsV,UAAUjN,IAAI,cAIxBi5V,EAAQhiX,KAAKo0c,2BAA2BpyF,EAAOjiS,GAE/CA,EAAK50E,KAAM,CACX62W,EAAMhsV,UAAUjN,IAAkB,cAAdg3D,EAAK50E,KAAuB,SAAW,UACzC,cAAd40E,EAAK50E,KACLnL,KAAKozc,YAAcrzX,EAAKjH,SAGxBkpS,EAAMhsV,UAAUjN,IAAI,aAExB,IAAIgqb,EAA8B,cAAdhzX,EAAK50E,KAAuBnL,KAAKO,OAAOwjF,UAAUltC,YAAY,cAC9EkpC,EAAKrH,cAAc/7E,MAAM,SAAS,GAAKqD,KAAKO,OAAOwjF,UAAUltC,YAAY,SAChC,OAAzCmrU,EAAM1+W,cAAc,iBACpB0+W,EAAM1+W,cAAc,iBAAiB8xF,UAAY29W,EAGjD/wF,EAAM1+W,cAAc,2BAA2B8xF,UAAY29W,EAInE,GADA/wF,EAAMhsV,UAAUjN,IAAIkhD,KAChBjqE,KAAKO,OAAO8zc,uBAAyBt0X,EAAKmzX,gBAC1C,GAAIlxF,EAAM1+W,cAAc,2BAA4B,CAChD,IAAI8xF,EAAY4sR,EAAM1+W,cAAc,2BAA2B8xF,UAC/D4sR,EAAM1+W,cAAc,2BAA2BlB,UAC3C,gBAAkBgzF,EAAY,4BAA8Bk3G,EAAc,KAAOl3G,EAAY,YAEhG,GAAI4sR,EAAM1+W,cAAc,iBAAkB,CACvC8xF,EAAY4sR,EAAM1+W,cAAc,iBAAiB8xF,UACrD4sR,EAAM1+W,cAAc,iBAAiBlB,UACjC,gBAAkBgzF,EAAY,4BAA8Bk3G,EAAc,KAAOl3G,EAAY,OAGzG,IAAsB,IAAlBrV,EAAKjG,WAAsBiG,EAAK1M,WAAY,CAC5C,IAAIihY,EAAStyF,EAAM1+W,cAAc,oBAC7Bgxc,IACAA,EAAOtgb,MAAM2b,OAAS,OACtB2ka,EAAOtgb,MAAMuwG,WAAa,UAE9B,IAAIrjI,EAAMC,YAAc,MAAO,CAC3BktB,YAA+B,IAAnB0xD,EAAK/F,UAAqB/P,IAAeA,MAAc,IAAMA,KACzEl3C,MAAO,CACH,OAA4B,IAAnBgtD,EAAK/F,UAAqBh6E,KAAKO,OAAOwjF,UAAUltC,YAAY,YACjE72C,KAAKO,OAAOwjF,UAAUltC,YAAY,aAG9CmrU,EAAMlxV,SAAS,GAAGkF,UAAUjN,IAAIkhD,KAC5BnoE,OAAO8kB,UAAUH,UAAUtoB,QAAQ,SAAW,GAAK2D,OAAO8kB,UAAUH,UAAUtoB,QAAQ,YAAc,EACpG6jX,EAAMlxV,SAAS,GAAGkD,MAAMygB,QAAU,QAGlCutU,EAAMlxV,SAAS,GAAGkD,MAAMygB,QAAU,QAEtCutU,EAAMnrV,aAAa31B,EAAK8gX,EAAMlxV,SAAS,IAG3C,GADAkxV,EAAQhiX,KAAKqyc,oBAAoBtyX,EAAMiiS,EAAOjiS,EAAKpU,SAAUoU,EAAKjH,UAC9D94E,KAAKO,OAAOkvc,aAAc,CAC1B,IAAIj1b,EAAQwnW,EAAM7yV,aAAa,SAC3Bokb,EAAWvxF,EAAM7yV,aAAa,iBAC9BuzE,EAAaloF,EAAQ,IAAM+4b,EACzBzxc,QAAUxC,cAGPkb,GAAS+4b,IACdvzc,KAAKO,OAAOmtc,mBAAmBhrW,GAAcs/Q,GAH7ChiX,KAAKO,OAAOktc,mBAAmB7rc,KAAK,CAAE+tc,WAAY3tF,IAO1D,IADA,IAAIrgX,EAAM3B,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OACvCi0O,EAAO,EAAGA,EAAOnvO,EAAKmvO,IAC3B,GAAI9wO,KAAKO,OAAO6vE,mBAAmB7T,OAAOu0K,GAAM12N,OAAS2lE,EAAK9H,WAAY,CACtE,GAA6B,SAAzBj4E,KAAKO,OAAOikB,WACMxkB,KAAKO,OAAOu2E,iBAAiBi0P,cAAchrP,EAAKnG,WACgB,IAA7E55E,KAAKO,OAAOu2E,iBAAiBi0P,cAAchrP,EAAKnG,SAASu2P,gBACmB,IAAzEnwU,KAAKO,OAAOu2E,iBAAiBi0P,cAAchrP,EAAKnG,SAASw1P,YACgB,IAAzEpvU,KAAKO,OAAOu2E,iBAAiBi0P,cAAchrP,EAAKnG,SAASw1P,cAE7D4yC,EAAMhsV,UAAUjN,IAAI,UAGxBg3D,EAAKrG,UAAU26I,YAAer0N,KAAKO,OAAOwjF,UAAUltC,YAAY,cAAiB72C,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBuD,gBAAoBiL,EAAKrH,eACxJqH,EAAKrG,UAAU26I,YAAe,cAAiBr0N,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBuD,gBAAoBiL,EAAKrH,cAC5HspS,EAAMhsV,UAAUjN,IAAI,UAGpBi5V,EAAMhsV,UAAUjN,IAAIkhD,MAIhCjqE,KAAKkiI,aAAa8/O,GAClBhiX,KAAKk0C,WAAW8tU,IAGxBhiX,KAAKO,OAAOwpB,QAAQhD,IAAuB9mB,IAE/CgmS,EAAO/pS,UAAUk4c,2BAA6B,SAAUpyF,EAAOjiS,GAC3DiiS,EAAMpsV,aAAa,YAAiC,IAApBmqD,EAAK+uP,WAAmB/uP,EAAK9H,WAAW9qE,WAAa4yE,EAAKigB,WAC1F,IAAIu0W,EAAWv0c,KAAKy4N,OAAOpuK,cAAc01B,EAAKpU,UAC1C3rE,KAAKy4N,OAAOpuK,cAAc01B,EAAKpU,UAAUoU,EAAKjH,SAAW,QAAK98E,EAYlE,OAXIu4c,GAAYA,EAASt8X,aAAe8H,EAAK9H,YAAcs8X,EAASppc,OAAS40E,EAAK50E,MAC7Eopc,EAASv7X,QAAU,EACpBgpS,EAAMhuV,MAAMygB,QAAU,QAGtButU,EAAMpsV,aAAa,UAAWmqD,EAAK/G,QAAQ7rE,YAC3C60W,EAAMpsV,aAAa,eAAgBmqD,EAAK/G,QAAQ7rE,aAEhD4yE,EAAKpU,WAAc3rE,KAAKy4N,OAAOpuK,cAAcxtD,OAAS,GAA0B,IAApBkjF,EAAK+uP,aACjEkzC,EAAMhuV,MAAMygB,QAAUz0C,KAAKw0c,cAAcx0c,KAAKy4N,OAAOpuK,cAAcxtD,OAAQkjF,GAAQ,OAASiiS,EAAMhuV,MAAMygB,SAErGutU,GAEX/7E,EAAO/pS,UAAUs4c,cAAgB,SAAUn6H,EAAWL,GAKlD,IAJA,IAEIy6H,EACAC,EAHAH,EAAWv0c,KAAKy4N,OAAOpuK,cAAc2vR,EAASruQ,SAAW,GACzD3rE,KAAKy4N,OAAOpuK,cAAc2vR,EAASruQ,SAAW,GAAGquQ,EAASlhQ,eAAY98E,EAGnEu4c,IAAcA,EAASzlI,aAAekL,EAASlL,YAAgBylI,EAASppc,MAAQ6uU,EAAS7uU,OACxFopc,EAASn7X,QAAU,IACnBq7X,EAAiBF,EAASn7X,QAC1Bs7X,EAAgBH,EAAS5oY,UAE7B4oY,EAAWv0c,KAAKy4N,OAAOpuK,cAAckqZ,EAAS5oY,SAAW,GACrD3rE,KAAKy4N,OAAOpuK,cAAckqZ,EAAS5oY,SAAW,GAAGquQ,EAASlhQ,eAAY98E,EAE9E,OAAQ04c,EAAgBD,GAAmBp6H,GAE/Cp0C,EAAO/pS,UAAUy4c,iBAAmB,SAAU9zc,GAC1C,IAAIk/E,EAAOl/E,EAAEo8B,OAAO2W,cAAcA,cAE9B3zC,EAAO,CACPguU,YAFJluP,EAAQA,EAAK1xD,UAAUlwB,QAAQ,oBAAsB,EAAI4hF,EAAKnsC,cAAgBmsC,EAG1EllE,KAAM7a,KAAKy4N,OAAOjpJ,YAAYv5B,OAAO8pC,EAAK5wD,aAAa,WAAW8mB,OAAO8pC,EAAK5wD,aAAa,mBAC3FpM,QAAQ,EACR+rG,YAAajuH,GAEjBb,KAAKO,OAAOwpB,QAAQhD,IAA2B9mB,GAAM,SAAUstO,GAC3D,IAAKA,EAAaxqN,OAAQ,CACtB9iB,EAAKguU,YAAcprU,YAAW5C,EAAKguU,aACnC,IAAIrrT,EAAM3iB,EAAKguU,YAAY9+S,aAAa,YAAelvB,EAAKguU,YAAa9+S,aAAa,YAClFlvB,EAAKguU,YAAY3qU,cAAc,KAAK6rB,aAAa,YACrDrtB,OAAOC,KAAK6gB,QAIxBqjR,EAAO/pS,UAAU0xc,eAAiB,WAG9B,IAFA,IACI1yO,EADA1rJ,EAAcxvE,KAAKO,OAAOivE,YAErBoU,EAAO,EAAGA,GAAQpU,EAAcA,EAAY3yE,OAAS,GAAI+mF,IAC9D,GAAIpU,EAAYoU,IAASpU,EAAYoU,GAAM,IAAoC,QAA9BpU,EAAYoU,GAAM,GAAG73C,KAAgB,CAClFmvL,EAASt3I,EACT,MAGR,OAAOs3I,GAEX+qE,EAAO/pS,UAAU4xc,gBAAkB,SAAU3ic,GACzC,IAAIm4E,EAAc,GAClB,GAAItjF,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAS,IAAMmD,KAAKy4N,OAAOj1I,YACjE,GAAKxjF,KAAKO,OAAOkjF,qBAAwBzjF,KAAKy4N,OAAO/0I,iBAKjD,IAJA,IAAIC,EAAS,EACTnU,EAAcxvE,KAAKO,OAAOivE,YAC1BtyE,EAAiB,UAATiO,EAAmBnL,KAAK+lN,YAAc,EAC9CptM,EAAe,UAATxN,EAAoBqkE,EAAcA,EAAY3yE,OAAS,EAAKmD,KAAK+lN,YAClEniI,EAAO1mF,EAAO0mF,EAAOjrE,EAAKirE,IAC/B,GAAIpU,EAAYoU,GAAO,CAEnBN,EADAK,EAAkB,WAATx4E,EAAoBy4E,EAAOD,GACd,GACtB,IAAK,IAAIE,EAAO,EAAGA,EAAOrU,EAAYoU,GAAM/mF,OAAQgnF,IAC5CrU,EAAYoU,GAAMC,KAClBP,EAAYK,GAAQE,GAAQrU,EAAYoU,GAAMC,IAGtDF,UAKRL,EAAuB,UAATn4E,EAAmBnL,KAAKy4N,OAAOpT,aAAerlN,KAAKy4N,OAAOpuK,mBAI5Ei5B,EAActjF,KAAK2uc,iBAEvB,OAAOrrX,GAIX2iN,EAAO/pS,UAAUyyc,eAAiB,WAM9B,MAJkB,CAAC,CACX7wb,EAAG,CAAE46D,cAAe14E,KAAKO,OAAOwjF,UAAUltC,YAAY,eACtD94B,EAAG,CAAE26D,cAAe14E,KAAKO,OAAOwjF,UAAUltC,YAAY,iBAIlEovP,EAAO/pS,UAAU04c,kBAAoB,SAAU7rB,GAC3C,IAAItyZ,EAAcz2B,KAAKO,OAAOS,QAAQy1B,YAAcz2B,KAAKO,OAAOS,QAAQy1B,YACpEz2B,KAAKO,OAAOS,QAAQqhC,wBAAwBqN,MAC5Cmla,EAAWzoc,MAAMpM,KAAKO,OAAOmvC,OAAU1vC,KAAKO,OAAOmvC,MAAMviC,WAAWhP,QAAQ,MAAQ,EAClF4a,WAAW/Y,KAAKO,OAAOmvC,MAAMviC,YAAc,IAAOspB,EAAeA,EACnEwf,OAAOj2C,KAAKO,OAAOmvC,OACvBmla,EAAWA,GAAY70c,KAAKqtc,aAAaxpB,YAAc7jb,KAAKotc,YAAcptc,KAAKqtc,aAAaxpB,YAAc7jb,KAAKotc,aAAe,EAC9HrkB,GAAsB,EACtB/ob,KAAK80c,cAAiB/rB,EAAW/ob,KAAKqtc,aAAaxpB,YAAegxB,GAClE,IAAIrmB,EAAYzF,EAAW/ob,KAAKqtc,aAAaxpB,YAAegxB,EAAYA,EAAW9rB,EAAY/ob,KAAKqtc,aAAaxpB,YACjH,OAAS7jb,KAAK80c,aAAgB90c,KAAKqtc,aAAaiB,kBAAqD/mc,KAAKC,MAAMgnb,GAA3Cxub,KAAKqtc,aAAaxpB,aAE3F59I,EAAO/pS,UAAU64c,eAAiB,SAAUhsB,GACxC,IAAI8rB,EAAWzoc,MAAMpM,KAAKO,OAAOmvC,OAAU1vC,KAAKO,OAAOmvC,MAAMviC,WAAWhP,QAAQ,MAAQ,EAClF4a,WAAW/Y,KAAKO,OAAOmvC,MAAMviC,YAAc,IAAOnN,KAAKO,OAAOS,QAAQy1B,YAAez2B,KAAKO,OAAOS,QAAQy1B,YAC3Gwf,OAAOj2C,KAAKO,OAAOmvC,OACvBq5Y,GAAsB,EACtB8rB,EAAWA,GAAY70c,KAAKqtc,aAAaxpB,YAAc7jb,KAAKotc,YAAcptc,KAAKqtc,aAAaxpB,YAAc7jb,KAAKotc,aAAe,EAC9Hptc,KAAK80c,cAAiB/rB,EAAW/ob,KAAKqtc,aAAaxpB,YAAegxB,GAClE,IAAIrmB,EAAYzF,EAAW/ob,KAAKqtc,aAAaxpB,YAAegxB,EAAYA,EAAW9rB,EAAY/ob,KAAKqtc,aAAaxpB,YACjH,OAAS7jb,KAAK80c,aAAgB90c,KAAKqtc,aAAaiB,kBAAqD/mc,KAAKC,MAAMgnb,GAA3Cxub,KAAKqtc,aAAaxpB,aAE3F59I,EAAO/pS,UAAUmyc,mBAAqB,WAClC,IAAIwG,EAAW70c,KAAKO,OAAOmvC,MACvBsla,EAAWh1c,KAAKO,OAAOS,QAAQqhC,wBAAwBqN,MACvD1vC,KAAKO,OAAOS,QAAQqhC,wBAAwBqN,MAAQ1vC,KAAKO,OAAOS,QAAQy1B,YAY5E,MAXgC,SAA5Bz2B,KAAKqtc,aAAa39Z,MACQ,SAAtB1vC,KAAKO,OAAOmvC,MACZmla,EAAWG,EAENh1c,KAAKO,OAAOmvC,MAAMviC,WAAWhP,QAAQ,MAAQ,IAClD02c,EAAa97b,WAAW/Y,KAAKO,OAAOmvC,MAAMviC,YAAc,IAAO6nc,GAInEH,EAAW70c,KAAKqtc,aAAa39Z,OAExB1vC,KAAKqtc,aAAaiB,mBAAqBuG,EAAW70c,KAAKO,OAAO00c,YAAej1c,KAAKO,OAAO00c,YAAcJ,GAIpH5uK,EAAO/pS,UAAUqyc,oBAAsB,SAAU2G,GAC7C,IAAIluB,EAAahnb,KAAKO,OAAOovC,OACzBwla,EAAYn1c,KAAKO,OAAO60c,oBAI5B,GAHIhpc,MAAM+oc,KACNA,EAAYA,EAAYn1c,KAAKO,OAAO2gR,UAAYi0L,EAAYn1c,KAAKO,OAAO2gR,WAE5C,UAA5BlhR,KAAKO,OAAO80c,YACZ,GAAiC,SAA7Br1c,KAAKqtc,aAAa19Z,QAAqBwla,GAAan1c,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAO5F,GADA+8W,GADAA,EAAamuB,GAJMn1c,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAiBr6B,cAC3C5vC,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MACrEjqE,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAwBr6B,aAAe,IAC/D5vC,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAoB,GAAK,IAC7B,GAC9B,GAAK,GAAK+8W,EAChCkuB,EAAgB,CAChB,IAAII,EAAct1c,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,KAAwB,KAAOA,MAAWr6B,aAChG2la,EAAgBv1c,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAwBr6B,aAChF2qZ,EAAav6b,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,KAAyB,KAAOA,MAAWxzC,YAEhG++a,EADex1c,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAwBxzC,YAC3C8ja,EAGpCvT,GAAcsuB,KAAgBE,GAAqBxuB,GAAcuuB,QADhDC,GAAwBxuB,EAAasuB,EAAe,IAGrEt1c,KAAKO,OAAO85D,KAAK1qB,OAAS,QAG1B3vC,KAAKO,OAAO85D,KAAK1qB,OAASq3Y,EAC1Bhnb,KAAKO,OAAO85D,KAAK/gC,YAErBt5B,KAAKO,OAAO85D,KAAKqqE,aAAakV,8BAG1BotS,EAAchnb,KAAKy4N,OAAOpT,aAAaxoN,OAASmD,KAAKqtc,aAAa9uY,YAClEyoX,EAAa,aAKrBA,EAAahnb,KAAKqtc,aAAa19Z,OAGvC,OAAOq3Y,EAAahnb,KAAKO,OAAO8sc,aAAa9uY,UAAYv+D,KAAKO,OAAO8sc,aAAa9uY,UAAYyoX,GAElG/gJ,EAAO/pS,UAAU6xc,oBAAsB,WACnC,IAAI0H,EAAqE,IAAjDz1c,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,QACzDmD,KAAKO,OAAO6vE,mBAAmBkC,2BACiCt2E,EAAjEgE,KAAKstc,WAAWttc,KAAKO,OAAO6vE,mBAAmB7T,OAAO,GAAGniD,MACzDs7b,EAAiB,GACrB,IAA8B,SAAzB11c,KAAKO,OAAOikB,UAA6BxkB,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAS,KAAOmD,KAAKy4N,OAAOj1I,YAAa,CACzH,IAAImyX,EAAY31c,KAAKy4N,OAAOpuK,cAAcxtD,OACtC+4c,EAAc,GACdC,EAAW,GACXrnB,EAAWxub,KAAK40c,kBAAkB50c,KAAKy4N,OAAOjpJ,YAAcxvE,KAAKy4N,OAAOjpJ,YAAY,GAAG3yE,OAAS,GACpG,EAAG,CACC,IAAI4/D,EAAc,GACdq5Y,EAAY,EAChBH,IACA,IAAII,EAAW/1c,KAAKy4N,OAAOpuK,cAAcsrZ,GACzC,GAAII,EACA,IAAK,IAAIlyX,EAAO,EAAGA,EAAO3lF,OAAOjB,KAAK84c,GAAUl5c,QAAUk5c,EAAS,GAAK,EAAI,GAAIlyX,IAAQ,CACpF,IAAI7K,EAAW+8X,EAASlyX,IAASkyX,EAASlyX,GAAM7K,QACZ,IAA9B+8X,EAASlyX,GAAMirP,YAAkC,IAAd6mI,EACjCI,EAASlyX,GAAM7K,QAAU48X,EAAY/xX,GAAS,EACtD7K,EAAmC,SAAzBh5E,KAAKO,OAAOikB,SAAsB,EAAIw0D,EAChD,IAAIN,EAAgBq9X,EAASlyX,GAAiC,cAAxBkyX,EAASlyX,GAAM14E,KACjDnL,KAAKO,OAAOwjF,UAAUltC,YAAY,cAAyC,QAAxBk/Z,EAASlyX,GAAM14E,KAClE4qc,EAASlyX,GAAMnL,cAAc/7E,MAAM,SAAS,GAAKqD,KAAKO,OAAOwjF,UAAUltC,YAAY,SACnFk/Z,EAASlyX,GAAMnL,cAAkB,GACrC,GAAIi9X,IAAc31c,KAAKy4N,OAAOpuK,cAAcxtD,OAAS,EACjDm8E,EAAU,EACVvc,EAAYq5Y,GAAa,CACrBt8Y,MAAQqqB,EAAO,iBACf9mB,WAAY2b,EACZvc,iBAAkB,CAAE,KAAQ45Y,EAASlyX,IAErCn0C,MAAOqma,EAASlyX,GAAQ7jF,KAAKg2c,cAAcD,EAASlyX,GAAMnK,UAAU26I,UAAWm6N,GAAYxub,KAAKotc,YAChG70T,SAAU,GACVvtI,OAAiB,IAAT64E,EAAa,GAAMzmF,YAAkBq4c,GAAqBz1c,KAAKstc,WAAWyI,EAASlyX,GAAM5L,YAAcw9X,EAC/G34Y,iBAAkB98D,KAAKO,OAAOiyT,iBAA0BxyT,KAAKO,OAAO8sc,aAAavwY,gBACjFirC,cAAe/nG,KAAKO,OAAO8sc,aAAatlW,cACxC7qC,SAAS,QAGZ,GAAI04Y,EAAY/xX,GAAO,CAMxB,IAHA,IAAIoyX,EAFJj9X,EAAW+8X,EAASlyX,IAAiC,cAAxBkyX,EAASlyX,GAAM14E,MACV,IAA9B4qc,EAASlyX,GAAMirP,WAAoB,EAAI91P,EAEvCk9X,EAAa,GACbC,EAAWtyX,EACRoyX,EAAU,GAAG,CAChB,GAAIx5Y,EAAYq5Y,GAAY,CACxB,IAAKJ,EAAeG,EAASM,IACzB,MAEJD,EAAWt0c,KAAK8zc,EAAeG,EAASM,UAGxC15Y,EAAYq5Y,GAAa,CACrB/4Y,WAAY2b,EAEZlf,MAAOu8Y,EAASlyX,GAAQkyX,EAASlyX,GAAMnK,UAAU26I,UAAY,GAC7Dl4J,iBAAkB,CAAE,KAAQ45Y,EAASlyX,IAErCn0C,MAAOqma,EAASlyX,GAAQ7jF,KAAKg2c,cAAcD,EAASlyX,GAAMnK,UAAU26I,UAAWm6N,GAC3Exub,KAAKotc,YACT70T,SAAU,GACVz7E,iBAAkB98D,KAAKO,OAAOiyT,iBAA0BxyT,KAAKO,OAAO8sc,aAAavwY,gBACjFirC,cAAe/nG,KAAKO,OAAO8sc,aAAatlW,cACxC7qC,SAAS,GAEbg5Y,EAAa,CAACR,EAAeG,EAASM,KAE1CF,GAAoBL,EAAYO,GAChCA,GAAsBP,EAAYO,GAEtC15Y,EAAYq5Y,GAAW/7Y,QAAUm8Y,EAEjCz5Y,EAAYq5Y,KACZr5Y,EAAYq5Y,GAAW1xW,SAAWpkG,KAAKqtc,aAAajpW,UAExDwxW,EAAY/xX,GAAQ7K,EACpB68X,EAAShyX,GAAQiyX,EACjBA,IACAjyX,EAAOA,EAAO7K,EAAU,EAGhC08X,EAAiBj5Y,EAAY5/D,OAAS,EAAI4/D,EAAci5Y,QACnDC,EAAY,GACrBD,EAAe,GAAK,CAChBl8Y,MAAQ,kBACR9pB,MAAO1vC,KAAKotc,YACZ70T,SAAU,GACVx7E,WAAY,GACZD,iBAAiB,EACjBirC,cAAe/nG,KAAKO,OAAO8sc,aAAatlW,cACxC7qC,SAAS,QAIbw4Y,EAAiB11c,KAAK4uc,oBAE1B,GAAI8G,EAAe74c,OAAS,EAAG,CAC3B,IAAIm5W,EAAa0/F,EAAeA,EAAe74c,OAAS,GACxDm5W,EAAWz9N,SAAWy9N,EAAWtmU,MACjCsmU,EAAWtmU,MAAQ,OACfsmU,EAAWj8S,SAAWi8S,EAAWj8S,QAAQl9D,OAAS,GAClDmD,KAAKo2c,sBAAsBpgG,EAAWj8S,QAAQi8S,EAAWj8S,QAAQl9D,OAAS,IAIlF,OADAmD,KAAKO,OAAO81c,yBAAyBX,GAC9BA,GAEXzvK,EAAO/pS,UAAUk6c,sBAAwB,SAAU38Y,GAC/CA,EAAO8+E,SAAW9+E,EAAO/pB,MACzB+pB,EAAO/pB,MAAQ,OACX+pB,EAAOM,SAAWN,EAAOM,QAAQl9D,OAAS,GAC1CmD,KAAKo2c,sBAAsB38Y,EAAOM,QAAQN,EAAOM,QAAQl9D,OAAS,KAK1EopS,EAAO/pS,UAAU85c,cAAgB,SAAUv8Y,EAAQ/pB,GAE/C,OADAA,EAAQ1vC,KAAKO,OAAO4tc,WAAW10Y,GAAUz5D,KAAKO,OAAO4tc,WAAW10Y,GAAU/pB,GAK9Eu2P,EAAO/pS,UAAU0yc,kBAAoB,WACjC,IAAI70Y,EAAU,GACVy0X,EAAWxub,KAAK40c,kBAAkB,GAGtC,OAFA76Y,EAAQn4D,KAAK,CAAE43D,MAAO,kBAAmBuD,WAAY,GAAIw7E,SAAU,GAAI7oG,MAAO1vC,KAAKotc,cACnFrzY,EAAQn4D,KAAK,CAAE43D,MAAO,kBAAmBuD,WAAY/8D,KAAKO,OAAOwjF,UAAUltC,YAAY,cAAe0hG,SAAU,GAAI7oG,MAAO8+Y,IACpHz0X,GAIXksO,EAAO/pS,UAAUqxc,cAAgB,WAE7B,IADA,IAAI+I,EAAc,GACTxlO,EAAO,EAAGA,EAAO9wO,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAQi0O,IAAQ,CAC5E,IAAIt3K,EAAQx5D,KAAKO,OAAO6vE,mBAAmB7T,OAAOu0K,GAC9C9lO,EAAS,IACb,GAA6B,SAAzBhL,KAAKO,OAAOikB,UACZ,GAAIxkB,KAAKO,OAAOu2E,iBAAiBD,UAAUrd,EAAMp/C,MAAO,CACpD,IAAIm8b,EAAUv2c,KAAKO,OAAOu2E,iBAAiBD,UAAUrd,EAAMp/C,MAAM+6D,aACjEnqE,EAASurc,EAAQp4c,QAAQ,MAAQ,EAAIo4c,EAAWA,EAAQ,GAAK,UAIjE,GAAIv2c,KAAKO,OAAO6vE,mBAAmBsB,eAAe70E,OAAS,EACvD,IAAK,IAAI+uT,EAAO,EAAGA,EAAO5rT,KAAKO,OAAO6vE,mBAAmBsB,eAAe70E,OAAQ+uT,IAAQ,CACpF,IAAIl6O,EAAiB1xE,KAAKO,OAAO6vE,mBAAmBsB,eAAek6O,GACnE,GAAIpyP,EAAMp/C,OAASs3D,EAAet3D,KAAM,CACpCpP,EAAS0mE,EAAe1mE,OACxB,OAQhBsrc,EAAY98Y,EAAMp/C,MAAQpP,EAE9B,OAAOsrc,GAGXrwK,EAAO/pS,UAAUmzc,iBAAmB,SAAUpvc,QACpBjE,IAAlBiE,EAAKkkX,UAAyD,SAA/BlkX,EAAKkkX,SAAS1qT,OAAO/pB,QACpD1vC,KAAKO,OAAOy1W,WAAa/1W,EAAKkkX,SAAS1qT,OACvCx5D,EAAKkkX,SAAS1qT,OAAO/pB,MAAQzvC,EAAKkkX,SAAS1qT,OAAO8+E,UAEtDt4I,EAAOD,KAAKw2c,kBAAkBv2c,GAC9BD,KAAKO,OAAOwpB,QAAQhD,IAAiC9mB,IAEzDgmS,EAAO/pS,UAAUszc,eAAiB,SAAUvvc,QAClBjE,IAAlBiE,EAAKkkX,UAAyD,SAA/BlkX,EAAKkkX,SAAS1qT,OAAO/pB,QACpD1vC,KAAKO,OAAOy1W,WAAa/1W,EAAKkkX,SAAS1qT,OACvCx5D,EAAKkkX,SAAS1qT,OAAO/pB,MAAQzvC,EAAKkkX,SAAS1qT,OAAO8+E,UAEtDv4I,KAAKO,OAAOwpB,QAAQhD,IAA+B9mB,IAGvDgmS,EAAO/pS,UAAUqzc,cAAgB,SAAUtvc,GACvC,GAA0B,oBAAtBA,EAAKw5D,OAAOD,MAA6B,CACzC,IAAIq5Y,EAAoC,UAAtB5yc,EAAK4a,KAAK,GAAG1P,KAC3B+tE,EAAQ,EAGRA,EAFyB,SAAzBl5E,KAAKO,OAAOikB,SAEJxkB,KAAK6sc,iBAAiB5sc,EAAK4a,KAAK,GAAG8wD,UAGnCknY,EAAe7yc,KAAK8sc,SAAW,EAAK7sc,EAAK4a,KAAK,GAAGq+D,MAE7Dl5E,KAAK65U,OAAS,EACd55U,EAAK+zB,MAAQ,CAAEunD,OAAQ,OAAQpgB,OAAgB,EAAR+d,GACvCl5E,KAAK8sc,SAAW+F,EAAc7yc,KAAK8sc,SAAW5zX,OAG9Cl5E,KAAK65U,SAEDz8U,YAAkB6C,EAAK4a,KAAK7a,KAAK65U,QAAQr9U,QAAUY,YAAkB6C,EAAK4a,KAAK7a,KAAK65U,QAAQnhQ,eAC5Fz4E,EAAKzD,MAAQ,GAIbyD,EAAKzD,MAAQyD,EAAK4a,KAAK7a,KAAK65U,QAAQr9U,OAASyD,EAAK4a,KAAK7a,KAAK65U,QAAQnhQ,cAG5Ez4E,EAAOD,KAAKy2c,mBAAmBx2c,GAC/BD,KAAKO,OAAOwpB,QAAQhD,IAA2B9mB,IAGnDgmS,EAAO/pS,UAAUozc,YAAc,SAAUrvc,GAErC,GAA0B,qBAD1BA,EAAOD,KAAKy2c,mBAAmBx2c,IACtBw5D,OAAOD,MAA6B,CACzC,IAAI0f,EAAQ,EACR25X,EAAoC,UAAtB5yc,EAAK4a,KAAK,GAAG1P,KAE3B+tE,EADyB,SAAzBl5E,KAAKO,OAAOikB,SACJxkB,KAAK6sc,iBAAiB5sc,EAAK4a,KAAK,GAAG8wD,UAGnCknY,EAAe7yc,KAAK8sc,SAAW,GAA6B,IAAxB7sc,EAAK4a,KAAK,GAAGq+D,MACrDj5E,EAAK4a,KAAK,GAAGq+D,MAAQ,EAE7Bj5E,EAAK+zB,MAAQ,CAAEg6W,gBAAyB,GAAR90T,GAChCl5E,KAAK8sc,SAAW+F,EAAc7yc,KAAK8sc,SAAW5zX,EAElDl5E,KAAKO,OAAOwpB,QAAQhD,IAAyB9mB,IAGjDgmS,EAAO/pS,UAAU6yc,eAAiB,SAAU9uc,GAGxC,IAFA,IAAI6gX,EAAY7gX,EAAK6gX,UACjB/6J,EAAc7nN,OAAOjB,KAAK+C,KAAKy4N,OAAOpuK,eAAextD,OAChDD,EAAI,EAAGA,EAAImpN,EAAanpN,IAAK,CAGlC,IAFA,IAAI0jE,EAAQwgT,EAAUlkX,GAAG0jE,MACrBo2Y,EAAU,GACLvuc,EAAI,EAAGA,EAAIm4D,EAAMzjE,OAAQsL,KACJ,IAAtBm4D,EAAMn4D,GAAGixE,SACTs9X,EAAQ90c,KAAK0+D,EAAMn4D,IAG3B24W,EAAUlkX,GAAG0jE,MAAQo2Y,IAG7BzwK,EAAO/pS,UAAUs6c,kBAAoB,SAAUv2c,GAC3C,IAAIm5E,EAAU,EACd,GAAIn5E,EAAKkkX,SAAS1qT,OAAO0C,iBAAkB,CACvC,IAAI4jB,EAAO9/E,EAAKkkX,SAAS1qT,OAAO0C,iBAAiB4jB,KAC7C//E,KAAKi4E,aAAe8H,EAAK9H,YAAc8H,EAAK/G,QAAU,GAAK+G,EAAK7G,OAAS,IACzEj5E,EAAKkkX,SAASnrS,QAAU/4E,EAAK8/E,KAAK/G,QAAU+G,EAAK/G,SAAW,EAAI+G,EAAK/G,QAAU,GAEnFI,EAAU2G,EAAK3G,SAAW,EAAI2G,EAAK3G,QAAU,EAC3B,6BAAdn5E,EAAKma,OACD2lE,EAAK3G,SAAW,EAChBA,EAAU2G,EAAK3G,QAETh8E,YAAkB2iF,EAAK50E,OAAwB,IAAf40E,EAAK7G,QAC3CE,GAAW,EACXn5E,EAAK8/E,KAAK3G,SAAW,IAG7Bp5E,KAAKi4E,WAAa8H,EAAK9H,gBAGvBmB,EAAUl7E,OAAOjB,KAAK+C,KAAKy4N,OAAOpuK,eAAextD,OAKrD,OAHIoD,EAAK8/E,KAAK3G,UAAYA,GAAWA,GAAW,IAC5Cn5E,EAAK8/E,KAAK3G,QAAUA,GAEjBn5E,GAGXgmS,EAAO/pS,UAAUu6c,mBAAqB,SAAUx2c,GAG5C,OAFAA,EAAKzD,MAAiF,cAAzEyD,EAAK4a,KAAKo7B,OAAOh2C,EAAKw5D,OAAOD,MAAM78D,MAAM,kBAAkB,KAAKwO,KACzEnL,KAAKO,OAAOwjF,UAAUltC,YAAY,cAAgB52C,EAAKzD,MACpDyD,GAEXgmS,EAAO/pS,UAAUgmI,aAAe,SAAUniD,GAClCA,EAAKz8E,cAAc,qBACnBslB,IAAaa,OAAOs2D,EAAKz8E,cAAc,oBAAqBtD,KAAKO,OAAOokU,WAAa,WAAa,QAAS3kU,KAAK20c,mBAMxH1uK,EAAO/pS,UAAUg4C,WAAa,SAAU6rC,GAChCA,EAAKz8E,cAAc,qBACnBslB,IAAaG,IAAIg3D,EAAKz8E,cAAc,oBAAqBtD,KAAKO,OAAOokU,WAAa,WAAa,QAAS3kU,KAAK20c,iBAAkB30c,OAMhIimS,EA/yDiB,G,SCNxB0wK,GAAwB,WACxB,SAASA,EAAOp2c,GAEZP,KAAKO,OAASA,EACdP,KAAKO,OAAOq2c,aAAe52c,KAC3BA,KAAKupB,mBAoFT,OA7EAotb,EAAOz6c,UAAU2+B,cAAgB,WAC7B,MAAO,UAEX87a,EAAOz6c,UAAU26c,qBAAuB,WACpC,GAAK72c,KAAKO,OAAOu2c,YAmBb92c,KAAKO,OAAOu2c,YAAY91c,QAAUhB,KAAKO,OAAOS,QAC9ChB,KAAKO,OAAOu2c,YAAY//X,aAAwC,SAAzB/2E,KAAKO,OAAOikB,SAC/CxkB,KAAKO,OAAOu2E,iBAAmB92E,KAAKO,OAAOw2E,aAC/C/2E,KAAKO,OAAOu2c,YAAYt/T,SAAWx3I,KAAKO,OAAOS,QAAQyY,GAEvDzZ,KAAKO,OAAOu2c,YAAY1mY,mBAAqBpwE,KAAKO,OAAO6vE,mBAAmBv8C,WACxE7zB,KAAKO,OAAO6vE,mBAAmBv8C,WAAa7zB,KAAKO,OAAO6vE,mBAE5DpwE,KAAKO,OAAOu2c,YAAYnjW,WAAa3zG,KAAKO,OAAOs6B,gBACjD76B,KAAKO,OAAOu2c,YAAYnwa,UAAY3mC,KAAKO,OAAOomC,UAChD3mC,KAAKO,OAAOu2c,YAAYnyI,WAAat+S,IAAQa,SAC7ClnB,KAAKO,OAAOu2c,YAAYroO,WAAa,QACrCzuO,KAAKO,OAAOu2c,YAAY/yX,UAAY/jF,KAAKO,OAAOwjF,UAChD/jF,KAAKO,OAAOu2c,YAAYtyb,SAAWxkB,KAAKO,OAAOikB,aAhCrB,CAE1B,IAAIvkB,EAAO,CACPykU,YAAsC,SAAzB1kU,KAAKO,OAAOikB,SAAsBxkB,KAAKO,OAAOu2E,iBAAmB92E,KAAKO,OAAOw2E,aAC1F3G,mBAAoBpwE,KAAKO,OAAO6vE,mBAAmBv8C,WAC/C7zB,KAAKO,OAAO6vE,mBAAmBv8C,WAAa7zB,KAAKO,OAAO6vE,mBAC5D32D,GAAIzZ,KAAKO,OAAOS,QAAQyY,GACxBzY,QAAShB,KAAKO,OAAOS,QACrB2yG,WAAY3zG,KAAKO,OAAOs6B,gBACxB8L,UAAW3mC,KAAKO,OAAOomC,UACvBg+R,WAAYt+S,IAAQa,SACpBunN,WAAY,QACZ1qJ,UAAW/jF,KAAKO,OAAOwjF,UACvBv/D,SAAUxkB,KAAKO,OAAOikB,UAG1BxkB,KAAKO,OAAOu2c,YAAc,IAAIryI,KAAYxkU,GAkB9CD,KAAKO,OAAOu2c,YAAY7mY,QAAUjwE,KAAKO,QAM3Co2c,EAAOz6c,UAAUqtB,iBAAmB,WAChCvpB,KAAKyyP,SAAW,CACZ97M,KAAM32C,KAAK62c,sBAEX72c,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAO+Y,GAAGyN,IAAoB/mB,KAAKyyP,SAAS97M,KAAM32C,MACvDA,KAAKO,OAAO+Y,GAAGyN,KAAiB/mB,KAAKyyP,SAAS97M,KAAM32C,QAMxD22c,EAAOz6c,UAAUytB,oBAAsB,WAC/B3pB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAOsZ,IAAIkN,IAAoB/mB,KAAKyyP,SAAS97M,MAClD32C,KAAKO,OAAOsZ,IAAIkN,KAAiB/mB,KAAKyyP,SAAS97M,QAOnDgga,EAAOz6c,UAAUif,QAAU,WACvBnb,KAAK2pB,sBACD3pB,KAAKO,OAAOu2c,cACZ92c,KAAKO,OAAOu2c,YAAY37b,UACxBnb,KAAKO,OAAOu2c,YAAc,OAG3BH,EAzFiB,G,SCPxBt4a,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAsC5Di4a,IAhCwC,SAAU53a,GAElD,SAAS63a,IACL,OAAkB,OAAX73a,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAF/Dq+B,GAAU24a,EAAwB73a,GAIlCR,GAAW,CACP3B,YAAS,QACVg6a,EAAuB96c,UAAW,YAAQ,GAC7CyiC,GAAW,CACP3B,YAAS,SACVg6a,EAAuB96c,UAAW,yBAAqB,GAC1DyiC,GAAW,CACP3B,YAAS,WACVg6a,EAAuB96c,UAAW,YAAQ,GAC7CyiC,GAAW,CACP3B,aAAS,IACVg6a,EAAuB96c,UAAW,oBAAgB,GACrDyiC,GAAW,CACP3B,aAAS,IACVg6a,EAAuB96c,UAAW,wBAAoB,GACzDyiC,GAAW,CACP3B,YAAS,YACVg6a,EAAuB96c,UAAW,oBAAgB,GACrDyiC,GAAW,CACP3B,aAAS,IACVg6a,EAAuB96c,UAAW,qCAAiC,GAzB9B,CA2B1CmpC,KAKgC,SAAUlG,GAExC,SAAS43a,IACL,OAAkB,OAAX53a,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAsI/D,OAxIAq+B,GAAU04a,EAAc53a,GAIxBR,GAAW,CACP3B,YAAS,SACV+5a,EAAa76c,UAAW,cAAU,GACrCyiC,GAAW,CACP3B,YAAS,SACV+5a,EAAa76c,UAAW,aAAS,GACpCyiC,GAAW,CACP3B,YAAS,SACV+5a,EAAa76c,UAAW,iBAAa,GACxCyiC,GAAW,CACP3B,aAAS,IACV+5a,EAAa76c,UAAW,qBAAiB,GAC5CyiC,GAAW,CACP3B,aAAS,IACV+5a,EAAa76c,UAAW,uBAAmB,GAC9CyiC,GAAW,CACP3B,aAAS,IACV+5a,EAAa76c,UAAW,qBAAiB,GAC5CyiC,GAAW,CACP3B,aAAS,IACV+5a,EAAa76c,UAAW,yBAAqB,GAChDyiC,GAAW,CACP3B,YAAS,OACV+5a,EAAa76c,UAAW,iBAAa,GACxCyiC,GAAW,CACP3B,YAAS,MACV+5a,EAAa76c,UAAW,mBAAe,GAC1CyiC,GAAW,CACP3B,YAAS,aACV+5a,EAAa76c,UAAW,gBAAY,GACvCyiC,GAAW,CACP3B,aAAS,IACV+5a,EAAa76c,UAAW,sBAAkB,GAC7CyiC,GAAW,CACP3B,aAAU,IACX+5a,EAAa76c,UAAW,wBAAoB,GAC/CyiC,GAAW,CACP3B,YAAS,CAAE7f,KAAM,MAAOsxR,kBAAmB,OAAQtjS,KAAM,YAC1D4rc,EAAa76c,UAAW,yBAAqB,GAChDyiC,GAAW,CACP3B,YAAS,CAAEstG,SAAU,UACtBysU,EAAa76c,UAAW,wBAAoB,GAC/CyiC,GAAW,CACP3B,YAAS,aACV+5a,EAAa76c,UAAW,iBAAa,GACxCyiC,GAAW,CACP3B,eACD+5a,EAAa76c,UAAW,wBAAoB,GAC/CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,kBAAc,GACzCyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,qBAAiB,GAC5CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,mBAAe,GAC1CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,uBAAmB,GAC9CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,yBAAqB,GAChDyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,uBAAmB,GAC9CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,wBAAoB,GAC/CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,qBAAiB,GAC5CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,sBAAkB,GAC7CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,oBAAgB,GAC3CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,mBAAe,GAC1CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,sBAAkB,GAC7CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,qBAAiB,GAC5CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,qBAAiB,GAC5CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,oBAAgB,GAC3CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,uBAAmB,GAC9CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,sBAAkB,GAC7CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,mBAAe,GAC1CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,gBAAY,GACvCyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,kBAAc,GACzCyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,8BAA0B,GACrDyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,wBAAoB,GAC/CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,gCAA4B,GACvDyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,0BAAsB,GACjDyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,uBAAmB,GAC9CyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,kBAAc,GACzCyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,kBAAc,GACzCyiC,GAAW,CACPp/B,eACDw3c,EAAa76c,UAAW,oBAAgB,GACpC66c,EAzIuB,CA0IhC1xa,MCzLEg6U,GAA6B,WAM7B,SAASA,EAAY9+W,GACjBP,KAAKi3c,WAAa,EAClBj3c,KAAKO,OAASA,EA+MlB,OAxMA8+W,EAAYnjX,UAAU2+B,cAAgB,WAClC,MAAO,eAEXwkV,EAAYnjX,UAAUg7c,mBAAqB,SAAU9qJ,EAAuBvyF,EAAa1uN,EAAMy6M,GAC3F,IAAItlJ,EAAQ,GACZ,GAAKljE,YAAkBgvT,EAAsBtjP,MAiBrB,KAAhB+wJ,IACa,WAAT1uN,GACAnL,KAAKi3c,aAET32Y,EAAM1+D,KAAK,CACP4Y,MAAO,EAAGhe,MAAOq9N,IAErB75N,KAAK8oE,KAAKlnE,KAAK,CAAE4Y,MAAOxa,KAAKi3c,WAAa,EAAG32Y,MAAOA,IACpDtgE,KAAKi3c,WAAuB,WAAT9rc,EAAqBnL,KAAKi3c,WAAa,EAAIj3c,KAAKi3c,gBAzBvB,CAChDj3c,KAAKi3c,WAAuB,WAAT9rc,EAAqBnL,KAAKi3c,WAAarxP,EAAYwmG,EAAsBtjP,KAAK,GAAGxI,MAAMzjE,OAAUmD,KAAKi3c,WAEzH,IADA,IAAIrsZ,EAAMwhQ,EAAsBtjP,KACvBlsE,EAAI,EAAGA,EAAIguD,EAAI/tD,OAAQD,IAC5B,IAAK,IAAIuL,EAAI,EAAGA,EAAIyiD,EAAIhuD,GAAG0jE,MAAMzjE,OAAQsL,KACrCm4D,EAAQ,IACF1+D,KAAK,CACP4Y,MAAO5d,EAAI,EAAGJ,MAAOouD,EAAIhuD,GAAG0jE,MAAMn4D,GAAG3L,MACrCw8E,QAASpuB,EAAIhuD,GAAG0jE,MAAMn4D,GAAG6wE,QAASI,QAASxuB,EAAIhuD,GAAG0jE,MAAMn4D,GAAGixE,QAASplD,MAAO42B,EAAIhuD,GAAG0jE,MAAMn4D,GAAG6rB,QAE/Fh0B,KAAKi3c,aACLj3c,KAAK8oE,KAAKlnE,KAAK,CAAE4Y,MAAOxa,KAAKi3c,WAAY32Y,MAAOA,IAGxDtgE,KAAKi3c,WAAuB,WAAT9rc,EAAqBy6M,EAAW5lN,KAAKi3c,aAoBhE53F,EAAYnjX,UAAUi7c,cAAgB,SAAUhsc,EAAM2uD,GAClD95D,KAAK8oE,KAAO,GACZ9oE,KAAKi3c,WAAa,EAClB,IAKIG,EALAC,GAAej6c,YAAkB08D,KAAsB18D,YAAkB08D,EAAiB/0C,QAC1Fuyb,GAAel6c,YAAkB08D,KAAsB18D,YAAkB08D,EAAiB0jB,QAC1F+5X,GAAiBn6c,YAAkB08D,KAAsB18D,YAAkB08D,EAAiBukB,UAChGr+E,KAAKy4N,OAAkC,SAAzBz4N,KAAKO,OAAOikB,SAAsBxkB,KAAKO,OAAOu2E,iBAAmB92E,KAAKO,OAAOw2E,aAG3F,IAAIygY,EAAqB5oY,KAAUW,qBAAqBvvE,KAAKy4N,OAAOjpJ,aAChEioY,EAAiBF,EAAgBz9Y,EAAiBukB,SAAW,eAIjE,GAHIg5X,GACAr3c,KAAKk3c,mBAAmBp9Y,EAAiB/0C,OAAQ,GAAI,SAAU+0C,EAAiB/0C,OAAOi8D,YAEvFhhF,KAAKO,OAAOm3c,gBAAkB13c,KAAKO,OAAOqjE,sBAAiD,SAAzB5jE,KAAKO,OAAOikB,SAAqB,CACnG,IAAI0gD,EAAellE,KAAKy4N,OAAOvzJ,aAC/BllE,KAAKy4N,OAAOvzJ,aAAe,KAC3BllE,KAAKy4N,OAAO3O,iBAAiB9pN,KAAKO,OAAO6vE,oBACzCpwE,KAAKO,OAAOo3c,gBAAgB33c,KAAKy4N,OAAOjpJ,aACxC4nY,EAAexoY,KAAUW,qBAAqBvvE,KAAKy4N,OAAOjpJ,aAC1DxvE,KAAKy4N,OAAOjpJ,YAAcgoY,EAC1Bx3c,KAAKy4N,OAAOvzJ,aAAeA,OAG3BkyY,EAAeI,EAEnB,IAGIn5X,EACAt5D,EACAy4D,EACAo6X,EANA33c,EAAO,CACPo+E,SAAUo5X,EAAgB1yb,OAAQ,GAAIy4D,OAAQ,GAAIo6X,gBAAiB,CAACR,IAMxEp3c,KAAKO,OAAOwpB,QAAQhD,IAAqB9mB,GAAM,SAAUstO,GACrDlvJ,EAAWkvJ,EAAalvJ,SACxBt5D,EAASwoN,EAAaxoN,OACtBy4D,EAAS+vJ,EAAa/vJ,OACtBo6X,EAAkBrqO,EAAaqqO,oBAE9BP,GAAej6c,YAAkB6C,EAAKmsT,wBAAqC,KAAXrnS,EACjE/kB,KAAKk3c,mBAAmB,GAAInyb,EAAQ,cAAU/oB,GAExCoB,YAAkB6C,EAAKmsT,wBAA2BhvT,YAAkB6C,EAAKmsT,sBAAsBrnS,SACrG/kB,KAAKk3c,mBAAmBj3c,EAAKmsT,sBAAsBrnS,OAAQ,GAAI,SAAU9kB,EAAKmsT,sBAAsBrnS,OAAOi8D,YAI/G,IADA,IAAI62X,EAAa,GACRC,EAAW,EAAGA,EAAWF,EAAgB/6c,OAAQi7c,IAAY,CAMlE,IALA,IAAItoY,EAAcooY,EAAgBE,GAC9BC,EAAS,EACTrlU,EAASljE,EAAY3yE,OACrBywc,EAAattc,KAAKO,OAAO4oE,aAAaokY,gBACtCx+H,EAAW,EACNnrP,EAAO,EAAGA,EAAO8uD,EAAQ9uD,IAC9B,GAAIpU,EAAYoU,GAAO,CACnB5jF,KAAKi3c,aACLc,EAASvoY,EAAYoU,GAAM/mF,OAE3B,IADA,IAAIyjE,EAAQ,GACHujB,EAAO,EAAGA,EAAOk0X,EAAQl0X,IAC9B,GAAIrU,EAAYoU,GAAMC,GAAO,CACzB,IAAIm0X,EAAYxoY,EAAYoU,GAAMC,GAClC,IAA2B,IAArBm0X,EAAU9+X,OAAiB8+X,EAAU5+X,QAAU,CACjD,IAAIyqJ,EAA+B,UAAnBm0O,EAAUjsa,KAAmBisa,EAAUx7c,MAAQw7c,EAAUt/X,cAUzE,GARImrJ,EADmB,cAAnBm0O,EAAU7sc,KACEnL,KAAKO,OAAOwjF,UAAUltC,YAAY,cAEtB,QAAnBmha,EAAU7sc,KACH04N,EAAU12N,WAAWzQ,QAAQ,QAASsD,KAAKO,OAAOwjF,UAAUltC,YAAY,UAGxEgtL,GAEW,IAArBm0O,EAAU9+X,OAAiB8+X,EAAU5+X,QAAU,CAKjD,GAJA9Y,EAAM1+D,KAAK,CACP4Y,MAAOqpE,EAAO,EAAGrnF,MAAOqnO,EACxB7qJ,QAASg/X,EAAUh/X,QAASI,SAAiC,IAAvB4+X,EAAU5+X,QAAiB,EAAI4+X,EAAU5+X,UAE5D,UAAnB4+X,EAAUjsa,KAAkB,EACxB3/B,MAAM4rc,EAAUx7c,QAAsC,KAA5Bw7c,EAAUt/X,oBACR18E,IAA5Bg8c,EAAUt/X,eAA+Bt7E,YAAkB46c,EAAUx7c,UACrE8jE,EAAMA,EAAMzjE,OAAS,GAAGL,MAAQ,IAEpC,IAAIg9D,EAAsD,QAA7Cx5D,KAAKO,OAAO6vE,mBAAmBqB,WACf,SAAzBzxE,KAAKO,OAAOikB,UAAuBwzb,EAAUx9H,YAC7Cx6U,KAAKy4N,OAAOuyG,WAAWgtI,EAAUx9H,YACjCx6U,KAAKy4N,OAAOuyG,WAAWgtI,EAAUx9H,YAAYpK,YAC7C4nI,EAAU//X,WACd3X,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAQ,CAC5B+4C,aAAcugY,EAAW9zY,GAAQylB,MAAM,EAAOS,UAAU,GAExDs4X,EAAUhkb,QACVssC,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAMwrD,UAAYw4X,EAAUhkb,MAAM0hD,gBAC1DpV,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAM4qD,UAAYo5X,EAAUhkb,MAAM2hD,MAC1DrV,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAM8qD,SAAWk5X,EAAUhkb,MAAM4hD,WACzDtV,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAM6hD,SAAW5/B,OAAO+ha,EAAUhkb,MAAM6hD,SAASl5E,MAAM,MAAM,UAOzF,GAHA2jE,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAQ,CAC5BirD,MAAM,EAAMxD,OAAQ,SAAUiE,UAAU,EAAMvkB,OAAiB,IAAT0oB,EAA+B,GAAlBm0X,EAAU9+X,MAAa,GAEvE,QAAnB8+X,EAAUjsa,MAA2B,IAAT83C,EAE5B,GADAvjB,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAMunD,OAAS,OACV,SAAzBv7E,KAAKO,OAAOikB,SAAqB,CACjC,IAAI22C,EAASn7D,KAAKO,OAAO4oE,aAAa0jY,iBAAiBjpX,GACvDtjB,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAMmnC,OAAkB,EAATA,EACvC4zQ,EAAWA,EAAW5zQ,EAAS4zQ,EAAW5zQ,OAG1CmF,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAMmnC,OAA2B,EAAlB68Y,EAAU9+X,MACjD61P,EAAWipI,EAAU9+X,MAAQ61P,EAAWipI,EAAU9+X,MAAQ61P,EAItEzuQ,EAAMA,EAAMzjE,OAAS,GAAGm3B,MAAM4rD,QAAU,CAAEjK,MAAO,UAAW4mR,UAAW,SAG/E14Q,GAAem0X,EAAUh/X,QAAWg/X,EAAUh/X,QAAU,EAAK,OAG7D1Y,EAAM1+D,KAAK,CACP4Y,MAAOqpE,EAAO,EAAGrnF,MAAO,GAAIw8E,QAAS,EAAGI,QAAS,IAI7Dp5E,KAAK8oE,KAAKlnE,KAAK,CAAE4Y,MAAOxa,KAAKi3c,WAAY32Y,MAAOA,IAGpDg3Y,EACAt3c,KAAKk3c,mBAAmBp9Y,EAAiB0jB,OAAQ,GAAI,SAAU1jB,EAAiB0jB,OAAO0D,aAEjFo2X,GAA0B,KAAX95X,GAAiBpgF,YAAkB6C,EAAKmsT,uBAC7DpsT,KAAKk3c,mBAAmB,GAAI15X,EAAQ,cAAUxhF,GAExCoB,YAAkB6C,EAAKmsT,wBAA2BhvT,YAAkB6C,EAAKmsT,sBAAsB5uO,SACrGx9E,KAAKk3c,mBAAmBj3c,EAAKmsT,sBAAsB5uO,OAAQ,GAAI,SAAUv9E,EAAKmsT,sBAAsB5uO,OAAO0D,YAE/G,IAAInnB,EAAU,GACd,IAAS8pB,EAAO,EAAGA,EAAOk0X,EAAQl0X,IAC9B9pB,EAAQn4D,KAAK,CAAE4Y,MAAOqpE,EAAO,EAAGn0C,MAAO,MAEvCq/R,EAAW,IACXh1Q,EAAQ,GAAGrqB,MAAQ,IAAkB,GAAXq/R,GAE9B8oI,EAAWj2c,KAAK,CAAEm4D,QAASA,EAAS+O,KAAM9oE,KAAK8oE,OAEnD,IAAIw2S,EAAO,IAAIvR,GAAS,CAAEX,WAAYyqG,GAAuB,UAAT1sc,EAAmB,OAAS,WAAOnP,EAAWgE,KAAKO,OAAO8e,cAC1G,UAAYg/D,EAASjxE,UAAUixE,EAASxhF,OAAS,EAAGwhF,EAASxhF,SAAW,SAAWwhF,EAASjxE,UAAUixE,EAASxhF,OAAS,EAAGwhF,EAASxhF,QACpIyiX,EAAKthH,KAAK3/K,GAGVihS,EAAKthH,KAAK3/K,GAAqB,UAATlzE,EAAmB,QAAU,UAQ3Dk0W,EAAYnjX,UAAUif,QAAU,aAEzBkkW,EAvNsB,GCA7B44F,GAA2B,WAM3B,SAASA,EAAU13c,GACfP,KAAKO,OAASA,EA2alB,OApaA03c,EAAU/7c,UAAU2+B,cAAgB,WAChC,MAAO,aAEXo9a,EAAU/7c,UAAU6pQ,QAAU,SAAUmyM,GACpC,IAAIv4W,EAAOu4W,EAAY13c,SAASotX,MAAM7kW,MAClC2jS,EAAsBwrJ,EAAYj4c,KAAKysT,oBACvC3nS,EAAW3nB,YAAkBsvT,IAAyBtvT,YAAkBsvT,EAAoB3nS,SAAY3nB,YAAkBsvT,EAAoB3nS,OAAOy1D,WAAcp9E,YAAkBsvT,EAAoB3nS,OAAOy1D,SAAS,GAAGh+E,OAC7K07c,EAAYj4c,KAAK8kB,OAAhE2nS,EAAoB3nS,OAAOy1D,SAAS,GAAGh+E,MACvCghF,EAAWpgF,YAAkBsvT,IAAyBtvT,YAAkBsvT,EAAoBlvO,SAAYpgF,YAAkBsvT,EAAoBlvO,OAAOhD,WAAcp9E,YAAkBsvT,EAAoBlvO,OAAOhD,SAAS,GAAGh+E,OAC7K07c,EAAYj4c,KAAKu9E,OAAhEkvO,EAAoBlvO,OAAOhD,SAAS,GAAGh+E,MACvCqgF,EAAO,IAAI+4V,GAAgBx0C,GAAc+wC,WAAY,GAAIhxC,GAAa6O,SACtE/G,EAAQ,IAAIH,GAAc,IAAItC,GAAS,EAAG,EAAG,IAC7CiE,EAAM,IAAIpB,GAAO,IAAI7C,GAAS,EAAG,EAAG,GAAI,IAExCr9R,EAAiB,IAAIulV,GAAuB,IAAIvwD,GAAW,EAAG,EAAGx+R,EAAKqzS,SAASjG,WAAWr9V,MAAO,KACrGy5D,EAAe6pS,SAASwqB,WAAWz4Y,EAAQ83D,EAAM4tT,EAAKxB,EAAO,EAAG,EAAG,IAAI6B,GAAgBtK,GAAiBhkJ,SACxG07N,EAAY13c,SAAS8qB,SAAS0X,IAAMmmE,EACpC,IAAIwH,EAAiB,IAAI+9U,GAAuB,IAAIvwD,GAAW,EAAG,EAAGx+R,EAAKqzS,SAASjG,WAAWr9V,MAAO,KAGrG,OAFAihE,EAAeqiS,SAASwqB,WAAWhgV,EAAQX,EAAM4tT,EAAKxB,EAAO,EAAG,EAAG,IAAI6B,GAAgBtK,GAAiBhkJ,SACxG07N,EAAY13c,SAAS8qB,SAAS2X,OAAS0tE,EAChChR,GAEXs4W,EAAU/7c,UAAUi8c,YAAc,SAAUC,GACxC,GAAe,OAAXA,GAA8B,KAAXA,GAAmC,IAAlBA,EAAOv7c,OAC3C,MAAM,IAAI+D,MAAM,0CAEpBw3c,EAASA,EAAOhrc,UAAU,GAC1B,IAAI0rb,EAAS3ib,SAASiic,EAAQ,IAI9B,MAAO,CAAEt5a,EAHAg6Z,GAAU,GAAM,IAGVh/L,EAFNg/L,GAAU,EAAK,IAEHnxb,EADJ,IAATmxb,IAGZmf,EAAU/7c,UAAUo5b,aAAe,SAAUt3W,GACzC,IAAIq6X,EAAWl3E,GAAa6O,QAa5B,OAZK5yY,YAAkB4gF,IAAUA,EAAMiB,OACnCo5X,GAAYl3E,GAAajiT,OAExB9hF,YAAkB4gF,IAAUA,EAAMoB,SACnCi5X,GAAYl3E,GAAa9hT,SAExBjiF,YAAkB4gF,IAAUA,EAAMsB,YACnC+4X,GAAYl3E,GAAa5hT,YAExBniF,YAAkB4gF,IAAUA,EAAM6kV,YACnCw1C,GAAYl3E,GAAa+O,WAEtBmoE,GAEXJ,EAAU/7c,UAAUw5b,eAAiB,SAAU/iK,GAC3C,IAAI/yM,EAAU,IAAIq3V,GAClB,GAAK75a,YAAkBu1R,GAiBlB,CACD,IAAIo2G,EAAW,IAAIvC,GAAS,IAAK,IAAK,KACtC5mT,EAAQptD,IAAM,IAAI62W,GAAON,OAnBQ,CACjC,IAAIx+V,EAAcooP,EAAYjjP,MAE1BA,EAAUtyC,YAAkBmtC,IAAuC,kBAAhBA,OAAiDvuC,EAAP,IAAduuC,EAE/EorC,EAAQ,IAAI6wT,GAAS,IAAK,IAAK,KACnC,IAAKppY,YAAkBu1R,EAAYh9M,OAAQ,CACvC,IAAIw+H,EAAcn0M,KAAKm4c,YAAYxlL,EAAYh9M,OAC/CA,EAAQ,IAAI6wT,GAASryL,EAAYr1K,EAAGq1K,EAAY2lD,EAAG3lD,EAAYxsM,GAEnE,IAAI8iY,EAAM,IAAIpB,GAAO1zT,EAAOjmC,GAEvBtyC,YAAkBu1R,EAAY33M,aAC/ByvT,EAAIzvT,UAAYh7E,KAAKg4b,aAAarlK,EAAY33M,YAElD4E,EAAQptD,IAAMi4W,EAMlB,OAAO7qT,GAEXq4X,EAAU/7c,UAAU87b,aAAe,SAAUsgB,GACzC,OAAQA,GACJ,IAAK,OACD,OAAO,EACX,IAAK,MACD,OAAO,EACX,IAAK,UACD,OAAO,EACX,IAAK,aACD,OAAO,EACX,QACI,OAAO,IAGnBL,EAAU/7c,UAAUq8c,SAAW,WAC3B,IAAI5vS,EAAS,IAAIsuQ,GACjB,GAAK75a,YAAkB4C,KAAKutb,WAmBxB,MAAO,CACHtkD,MAAO,IAAIH,GAAc,IAAItC,IAC7B79N,OAAQA,EAAQ9rF,UAAM7gF,GApB1B,IAAI45E,EAAcx4E,YAAkB4C,KAAKutb,UAAUxoa,OAAO+5D,UACDsiT,GAAc2wC,UAAnE/xa,KAAKq1b,cAAcr1b,KAAKutb,UAAUxoa,OAAO+5D,UACzCy8R,EAAYv7W,KAAKs1b,aAAat1b,KAAKutb,UAAUxoa,QAC7C8wD,EAAYz4E,YAAkB4C,KAAKutb,UAAUxoa,OAAO8wD,UAA6C,KAAjC71E,KAAKutb,UAAUxoa,OAAO8wD,SACtFkzT,EAAW,IAAIvC,GACnB,IAAKppY,YAAkB4C,KAAKutb,UAAUxoa,OAAO65D,WAAY,CACrD,IAAI22W,EAAgBv1b,KAAKm4c,YAAYn4c,KAAKutb,UAAUxoa,OAAO65D,WAC3DmqT,EAAW,IAAIvC,GAAS+uD,EAAcz2Z,EAAGy2Z,EAAcz7L,EAAGy7L,EAAc5tb,GAE5E,IAAIk1E,EAAO,IAAI+4V,GAAgBhgW,EAAYC,EAAU0lS,GAIrD,OAHKn+W,YAAkB4C,KAAKutb,UAAUxoa,OAAO83D,QACzCA,EAAO78E,KAAKutb,UAAUxoa,OAAO83D,MAE1B,CACH8rF,OAAQ3oK,KAAK01b,eAAe11b,KAAKutb,UAAUxoa,OAAO4jJ,QAAS9rF,KAAMA,EAAMosT,MAAO,IAAIH,GAAcC,KAU5GkvE,EAAU/7c,UAAUs8b,oBAAsB,SAAU5tY,EAAK+9G,GACrD,IAAKvrK,YAAkB4C,KAAKutb,aAAenwb,YAAkB4C,KAAKutb,UAAUrvW,QAAS,CACjF,IAAItI,EAAcx4E,YAAkB4C,KAAKutb,UAAUrvW,OAAOY,UACDsiT,GAAc2wC,UAAnE/xa,KAAKq1b,cAAcr1b,KAAKutb,UAAUrvW,OAAOY,UACzCjJ,EAAYz4E,YAAkB4C,KAAKutb,UAAUrvW,OAAOrI,UAA6C,KAAjC71E,KAAKutb,UAAUrvW,OAAOrI,SACtF0lS,EAAYv7W,KAAKs1b,aAAat1b,KAAKutb,UAAUrvW,QAC7CrB,EAAO,IAAI+4V,GAAgBhgW,EAAYC,EAAU0lS,GAChDn+W,YAAkB4C,KAAKutb,UAAUrvW,OAAOrB,QACzCA,EAAO78E,KAAKutb,UAAUrvW,OAAOrB,MAEjCjyB,EAAI52B,MAAMi4V,QAAQpvS,GAClB,IAAIksT,EAAW,IAAIvC,GACnB,IAAKppY,YAAkB4C,KAAKutb,UAAUrvW,OAAOU,WAAY,CACrD,IAAI22W,EAAgBv1b,KAAKm4c,YAAYn4c,KAAKutb,UAAUrvW,OAAOU,WAC3DmqT,EAAW,IAAIvC,GAAS+uD,EAAcz2Z,EAAGy2Z,EAAcz7L,EAAGy7L,EAAc5tb,GAE5EijD,EAAI52B,MAAMylZ,aAAa,IAAI3wC,GAAcC,IAE7C,IAAI0vD,EAAez4b,KAAKutb,WAAavtb,KAAKutb,UAAUrvW,QAChDl+E,KAAKutb,UAAUrvW,OAAOyqF,OAAS3oK,KAAK01b,eAAe11b,KAAKutb,UAAUrvW,OAAOyqF,QAAUA,EAEvF,OADA/9G,EAAI52B,MAAMgmZ,UAAUye,GACb7tY,GAOXqtZ,EAAU/7c,UAAUs8c,YAAc,SAAU9rJ,GACxC1sT,KAAKy4N,OAAkC,SAAzBz4N,KAAKO,OAAOikB,SAAsBxkB,KAAKO,OAAOu2E,iBAAmB92E,KAAKO,OAAOw2E,aAS3F,IARA,IAAImhY,EAAcl4c,KAAKy4c,aACnB5iB,EAAc71b,KAAKu4c,WAEnBG,EAAmB,IAAgB,IAD1B14c,KAAKO,OAAO4oE,aAAayqY,UAAY5zc,KAAKO,OAAO4oE,aAAayqY,UAAY,GAEnFp3X,EAAOj1E,KAAKC,OAAO,IAAMkxc,GAAoB,IAAM,EAEnDC,EAAgB,EAChBnpY,EAAc0oY,EAAYj4c,KAAK23c,gBAAgBe,GAC1C53J,EAAO,EAAGm3J,EAAYj4c,KAAK24c,mBAAqBp8X,EAAO,GAAKukO,EAAOvxO,EAAY3yE,OAAQkkT,IAC5F,IAAK,IAAIjwE,EAAOt0J,EAAMhN,EAAYuxO,IAASjwE,EAAOthK,EAAYuxO,GAAMlkT,OAAQi0O,GAAQt0J,EAChFhN,EAAYuxO,GAAMjnS,OAAOg3N,EAAM,EAAGthK,EAAYuxO,GAAM,IAG5D,IAAIs5B,EAAY7qQ,GAAeA,EAAY3yE,OAAS,EAAI2yE,EAAY,GAAG3yE,OAAS,EAC5Eg8c,EAAgB,EACpB,EAAG,CACMz7c,YAAkBsvT,KACnBwrJ,EAAYj4c,KAAK8kB,OAAW3nB,YAAkBsvT,EAAoB3nS,SAAY3nB,YAAkBsvT,EAAoB3nS,OAAOy1D,WAAcp9E,YAAkBsvT,EAAoB3nS,OAAOy1D,SAAS,GAAGh+E,OAC/I07c,EAAYj4c,KAAK8kB,OAAhE2nS,EAAoB3nS,OAAOy1D,SAAS,GAAGh+E,MAC3C07c,EAAYj4c,KAAKu9E,OAAWpgF,YAAkBsvT,EAAoBlvO,SAAYpgF,YAAkBsvT,EAAoBlvO,OAAOhD,WAAcp9E,YAAkBsvT,EAAoBlvO,OAAOhD,SAAS,GAAGh+E,OAC/I07c,EAAYj4c,KAAKu9E,OAAhEkvO,EAAoBlvO,OAAOhD,SAAS,GAAGh+E,OAE/C,IAAImjG,EAAO3/F,KAAK+lQ,QAAQmyM,GACpB9rB,EAAU,IAAInJ,GACd79W,EAAWoX,EAAO,EAAIA,EAAO,EACjC,GAAIhN,GAAeA,EAAY3yE,OAAS,EAAG,CACvCuvb,EAAQryX,QAAQhxC,IAAIymD,EAAY,GAAG3yE,OAASg8c,GAAiBzzY,EAAWA,EAAWoK,EAAY,GAAG3yE,OAASg8c,GAI3G,IAHA,IAAInmU,EAASljE,EAAY3yE,OACrBo6c,EAAa,EACbloI,EAAW,EACNnrP,EAAO,EAAGA,EAAO8uD,EAAQ9uD,IAC9B,GAAIpU,EAAYoU,GAAO,CACnB,IAAIk1X,IAAgBtpY,EAAYoU,GAAM,IAAoC,QAA9BpU,EAAYoU,GAAM,GAAG73C,MAC7Dgsa,EAASvoY,EAAYoU,GAAM/mF,OAAUg8c,EAAgBzzY,EAAayzY,EAAgBzzY,EAClFoK,EAAYoU,GAAM/mF,OAClBi8c,GACA1sB,EAAQpna,QAAQ+D,IAAI,GAExB,IAAIgwb,EAAcD,EAAsC1sB,EAAQpna,QAAQq8Z,UAAU41B,GAAlD7qB,EAAQtjX,KAAKikX,SACzC+rB,GACAC,EAAW/kb,MAAMgmZ,UAAU6b,EAAYltR,QACnCktR,EAAYh5W,MACZk8X,EAAW/kb,MAAMi4V,QAAQ4pE,EAAYh5W,MAEzCk8X,EAAW/kb,MAAMylZ,aAAaoc,EAAY5sD,QAG1CjpY,KAAKw4b,oBAAoBugB,EAAYljB,EAAYltR,QAIrD,IAFA,IAAIqwS,EAAW,EACXC,GAAa,EACRp1X,EAAOg1X,EAAeh1X,EAAOk0X,EAAQl0X,IAAQ,CAClD,IAAIgvX,GAAc,EAClB,GAAIrjY,EAAYoU,GAAMC,GAAO,CACzB,IAAIm0X,EAAYxoY,EAAYoU,GAAMC,GAClC,IAA2B,IAArBm0X,EAAU9+X,OAAiB8+X,EAAU5+X,QAAU,CACjD,IAAIyqJ,EAAYm0O,EAAUt/X,cAC1BmrJ,EAA+B,cAAnBm0O,EAAU7sc,KAAuBnL,KAAKO,OAAOwjF,UAAUltC,YAAY,cACvD,QAAnBmha,EAAU7sc,KACP04N,EAAU12N,WAAWzQ,QAAQ,QAASsD,KAAKO,OAAOwjF,UAAUltC,YAAY,UAAYgtL,IACjE,IAArBm0O,EAAU9+X,OAAiB8+X,EAAU5+X,WACvC2/X,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUj1B,WAAai0B,EAAUh/X,QACrD5T,EAAW4zY,EAAWhB,EAAUh/X,QAAU5T,EAAW4zY,EAAWhB,EAAUh/X,QAAW,EACtF8/X,GAAed,EAAU5+X,SAAW4+X,EAAU5+X,QAAU,IACxD2/X,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAU5/X,QAAU4+X,EAAU5+X,QAAU4+X,EAAU5+X,QAAU,GAEzF2/X,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUx8c,MAAQqnO,EAAYA,EAAU12N,WAAa,IAEhE,KAAd02N,IACAo1O,GAAa,GAGrBlqI,EAAWipI,EAAU9+X,MAAQ61P,EAAWipI,EAAU9+X,MAAQ61P,EAC1D8jI,EAAiC,UAAnBmF,EAAUjsa,KACxB83C,GAAek1X,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUj1B,WAC7Cg1B,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUj1B,WAAa,EAAK,EAC1Di1B,GAAuBD,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUj1B,WACrDg1B,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUj1B,WAAa,EAAK,EACtDi0B,EAAUhkb,QACV+kb,EAAa/4c,KAAKk5c,WAAWH,EAAYf,EAAWgB,IAExD,IAAI/4c,EAAO,CACP+zB,MAAQgkb,GAAaA,EAAU1+X,MAAS,CAAE2F,MAAM,QAASjjF,EACzDg8c,UAAWA,EACXj4X,KAAMg5X,EAAWz4Y,MAAMg5W,QAAQ0/B,IAEnCh5c,KAAKO,OAAOwpB,QAAQhD,IAAwB9mB,GACxCA,EAAK+zB,OACLh0B,KAAK20W,iBAAiBokG,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAW/4c,OAG7D,CACGA,EAAO,CACP+zB,WAAOh4B,EACPg8c,eAAWh8c,EACX+jF,KAAMg5X,EAAWz4Y,MAAMg5W,QAAQ0/B,IAEnCh5c,KAAKO,OAAOwpB,QAAQhD,IAAwB9mB,GACxCA,EAAK+zB,OACLh0B,KAAK20W,iBAAiBokG,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAW/4c,GAE9D84c,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUx8c,MAAQ,IAC9B,IAATqnF,GAAci1X,GAAe94c,KAAKO,OAAO6vE,mBAAmBrW,SAC5D/5D,KAAKO,OAAO6vE,mBAAmBrW,QAAQl9D,OAAS,GAGlC,IAATgnF,GAAci1X,GAAe94c,KAAKO,OAAO6vE,mBAAmBrW,SACjE/5D,KAAKO,OAAO6vE,mBAAmBrW,QAAQl9D,OAAS,GAChDuvb,EAAQpna,QAAQq8Z,UAAU,GAAG/gX,MAAMg5W,QAAQ,GAAGlgW,QAC1Cl7E,OAAOjB,KAAK+C,KAAKy4N,OAAOpuK,eAAextD,SAL3Cuvb,EAAQpna,QAAQq8Z,UAAU,GAAG/gX,MAAMg5W,QAAQ,GAAGlgW,UAStD,IAAI66T,EAAe,IAAInJ,GACvB,GAA6B,SAAzB9qY,KAAKO,OAAOikB,SAAqB,CACjC,IAAI20b,GAAaL,GAA4B,IAAbE,GAAkBxpY,EAAYoU,GAAMC,GAC/D7jF,KAAKO,OAAO4oE,aAAa0jY,iBAAiBr9X,EAAYoU,GAAMC,GAAMlY,UAAa,EACpFsoU,EAAajG,gBAA6B,GAAXmrE,EAC/BpqI,EAAWA,EAAWoqI,EAAWpqI,EAAWoqI,OAG5CllE,EAAajG,iBAAoB8qE,GAA4B,IAAbE,GAAkBxpY,EAAYoU,GAAMC,KAC7C,IAAnCrU,EAAYoU,GAAMC,GAAM3K,MACQ,GAAhC1J,EAAYoU,GAAMC,GAAM3K,MAAa,EAE7C+6T,EAAalvG,UAAY8tK,EAAcryE,GAAiB/jJ,MAAQ+jJ,GAAiBjkJ,KACjF03J,EAAa4rB,cAAgBt/B,GAAqBu/B,OAClDi5C,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUhlb,MAAMigX,aAAeA,EACxD+kE,IAEAC,IACAF,EAAWppa,OAAS,IAExBsna,IAGR7qB,EAAQryX,QAAQ4mX,UAAU,GAAGjxY,MAAQ,IAAkB,GAAXq/R,EAE1B,IAAlB8pI,GAAuB74c,KAAKO,OAAO6vE,mBAAmBrW,SAAW/5D,KAAKO,OAAO6vE,mBAAmBrW,QAAQl9D,OAAS,GACjHuvb,EAAQpna,QAAQq8Z,UAAU,GAAG/gX,MAAMg5W,QAAQ,GAAGlgW,UAElDgzW,EAAQl4C,KAAKv0S,EAAM,IAAIs+R,GAAO,GAAI,MAClC46E,GAAgCzzY,IACXi1Q,GAAa69H,EAAYj4c,KAAK23c,gBAAgB/6c,OAAU87c,EAAgB,IACzFA,IAEAt+H,GADA7qQ,EAAc0oY,EAAYj4c,KAAK23c,gBAAgBe,KACpBnpY,EAAY3yE,OAAS,EAAI2yE,EAAY,GAAG3yE,OAAS,EAC5Eg8c,EAAgB,SAEfA,EAAgBx+H,GACzB69H,EAAY13c,SAASw9P,KAAKk6M,EAAYj4c,KAAKo+E,SAAW,QACtD65X,EAAY13c,SAAS2a,WAEzB88b,EAAU/7c,UAAUg9c,WAAa,SAAUH,EAAYf,EAAWgB,GAC9D,IAAIrjY,EAAQ31E,KAAKO,OAAO64c,4BAA4B5jB,SAASwiB,EAAUhkb,MAAM0hD,iBACzEuzT,EAAQ,IAAIH,GAAc,IAAItC,GAAS7wT,EAAM72C,EAAG62C,EAAMmkL,EAAGnkL,EAAMhuE,IACnEoxc,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUhlb,MAAMulZ,gBAAkBtwC,EAC3D,IAAIzsT,EAAOvmC,OAAO+ha,EAAUhkb,MAAM6hD,SAASl5E,MAAM,MAAM,IACnDkgF,EAAO,IAAI+4V,GAAgBx0C,GAAc+wC,WAAY31V,EAAM2kT,GAAa6O,SAK5E,OAJA+oE,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUhlb,MAAM6oD,KAAOA,EAChDlH,EAAQ31E,KAAKO,OAAO64c,4BAA4B5jB,SAASwiB,EAAUhkb,MAAM2hD,OACzEszT,EAAQ,IAAIH,GAAc,IAAItC,GAAS7wT,EAAM72C,EAAG62C,EAAMmkL,EAAGnkL,EAAMhuE,IAC/Doxc,EAAWz4Y,MAAMg5W,QAAQ0/B,GAAUhlb,MAAM0lZ,UAAYzwC,EAC9C8vE,GAEXd,EAAU/7c,UAAUm5b,cAAgB,SAAUgkB,GAC1C,OAAQA,GACJ,IAAK,aACD,OAAO,EACX,IAAK,UACD,OAAO,EACX,IAAK,SACD,OAAO,EACX,IAAK,eACD,OAAO,EACX,QACI,OAAO,IAGnBpB,EAAU/7c,UAAU83Y,QAAU,SAAUh2T,GACpC,GAAIA,EAAMhqD,MAAM6oD,KACZ,OAAOmB,EAAMhqD,MAAM6oD,KAEvB,IAAIhH,EAAYmI,EAAM+B,KAAKovR,UAAUtyR,MAAQmB,EAAM+B,KAAKovR,UAAUtyR,KAAKhH,SAAYmI,EAAM+B,KAAKovR,UAAUtyR,KAAKhH,SACvGz4E,YAAkB4gF,EAAMhqD,MAAM6hD,UAA6C,KAAR,IAAvBmI,EAAMhqD,MAAM6hD,SAC1DD,EAAex4E,YAAkB4gF,EAAMhqD,MAAM4hD,YACEwrT,GAAc+wC,WAA5Dnya,KAAKq1b,cAAcr3W,EAAMhqD,MAAM4hD,YAChC2lS,EAAY4lB,GAAa6O,QAa7B,OAZK5yY,YAAkB4gF,EAAMhqD,MAAMirD,OAASjB,EAAMhqD,MAAMirD,OACpDs8R,GAAa4lB,GAAajiT,OAEzB9hF,YAAkB4gF,EAAMhqD,MAAMorD,SAAWpB,EAAMhqD,MAAMorD,SACtDm8R,GAAa4lB,GAAa9hT,SAEzBjiF,YAAkB4gF,EAAMhqD,MAAMsrD,YAActB,EAAMhqD,MAAMsrD,YACzDi8R,GAAa4lB,GAAa5hT,YAEzBniF,YAAkB4gF,EAAMhqD,MAAM6uY,YAAc7kV,EAAMhqD,MAAM6uY,YACzDtnD,GAAa4lB,GAAa+O,WAEvB,IAAI0lC,GAAgBhgW,EAAYC,EAAU0lS,IAErD08F,EAAU/7c,UAAUy4W,iBAAmB,SAAUwP,EAAUj/U,GACvD,IAAK9nC,YAAkB8nC,EAAIlR,MAAM0hD,iBAAkB,CAC/C,IAAI8J,EAAYx/E,KAAKm4c,YAAYjza,EAAIlR,MAAM0hD,iBAC3CyuS,EAASnwV,MAAMulZ,gBAAkB,IAAIzwC,GAAc,IAAItC,GAAShnT,EAAU1gD,EAAG0gD,EAAUs6K,EAAGt6K,EAAU73E,IAExG,IAAKvK,YAAkB8nC,EAAIlR,MAAMknD,gBAAiB,CAC9C,IAAIA,EAAiBl7E,KAAKm4c,YAAYjza,EAAIlR,MAAMknD,gBAChDipS,EAASnwV,MAAM0lZ,UAAY,IAAI5wC,GAAc,IAAItC,GAAStrT,EAAep8C,EAAGo8C,EAAe4+K,EAAG5+K,EAAevzE,IAEjH,IAAKvK,YAAkB8nC,EAAIlR,MAAMonD,cAAe,CAC5C,IAAIk+X,EAAYt5c,KAAKm4c,YAAYjza,EAAIlR,MAAMonD,cAC3C+oS,EAASnwV,MAAM6lZ,QAAU,IAAIxwC,GAAO,IAAI7C,GAAS8yE,EAAUx6a,EAAGw6a,EAAUx/M,EAAGw/M,EAAU3xc,IAMzF,GAJKvK,YAAkB8nC,EAAIlR,MAAM4hD,aAAgBx4E,YAAkB8nC,EAAIlR,MAAM6hD,WAAcz4E,YAAkB8nC,EAAIlR,MAAMirD,OAClH7hF,YAAkB8nC,EAAIlR,MAAMorD,SAAYhiF,YAAkB8nC,EAAIlR,MAAMsrD,YAAeliF,YAAkB8nC,EAAIlR,MAAM6uY,aAChH1+C,EAASnwV,MAAM6oD,KAAO78E,KAAKg0Y,QAAQ9uW,KAElC9nC,YAAkB8nC,EAAIlR,MAAM20I,QAAS,CACtC,IAAIA,EAAS,IAAIsuQ,GACb1sY,EAAcrF,EAAIlR,MAAM20I,OAAOj5H,MAE/BA,EAAUtyC,YAAkBmtC,IAAuC,kBAAhBA,OAAoDvuC,EAAT,IAAduuC,EAEhForC,EAAQ,IAAI6wT,GAAS,IAAK,IAAK,KACnC,IAAKppY,YAAkB8nC,EAAIlR,MAAM20I,OAAOhzF,OAAQ,CAC5C,IAAIw+H,EAAcn0M,KAAKm4c,YAAYjza,EAAIlR,MAAM20I,OAAOhzF,OACpDA,EAAQ,IAAI6wT,GAASryL,EAAYr1K,EAAGq1K,EAAY2lD,EAAG3lD,EAAYxsM,GAEnE,IAAI8iY,EAAM,IAAIpB,GAAO1zT,EAAOjmC,GAEvBtyC,YAAkB8nC,EAAIlR,MAAM20I,OAAO3tF,aACpCyvT,EAAIzvT,UAAYh7E,KAAKg4b,aAAa9yZ,EAAIlR,MAAM20I,OAAO3tF,YAEvD2tF,EAAOn2I,IAAMi4W,EACbtmB,EAASnwV,MAAM4rD,QAAU+oF,IAGjCsvS,EAAU/7c,UAAUu8c,WAAa,WAC7B,IAEIrB,EAFAr3c,EAAQC,KAGRw3c,EAAqB5oY,KAAUW,qBAAqBvvE,KAAKy4N,OAAOjpJ,aACpE,GAAIxvE,KAAKO,OAAOm3c,gBAAkB13c,KAAKO,OAAOqjE,sBAAiD,SAAzB5jE,KAAKO,OAAOikB,SAAqB,CACnG,IAAI0gD,EAAellE,KAAKy4N,OAAOvzJ,aAC/BllE,KAAKy4N,OAAOvzJ,aAAe,KAC3BllE,KAAKy4N,OAAO3O,iBAAiB9pN,KAAKO,OAAO6vE,oBACzCpwE,KAAKO,OAAOo3c,gBAAgB33c,KAAKy4N,OAAOjpJ,aACxC4nY,EAAexoY,KAAUW,qBAAqBvvE,KAAKy4N,OAAOjpJ,aAC1DxvE,KAAKy4N,OAAOjpJ,YAAcgoY,EAC1Bx3c,KAAKy4N,OAAOvzJ,aAAeA,OAG3BkyY,EAAeI,EAGnB,IAGIv9b,EAHAha,EAAO,CACPo+E,SAAU,UAAWt5D,OAAQ,GAAIy4D,OAAQ,GAAIo6X,gBAAiB,CAACR,GAAewB,mBAAmB,EAAM5kb,MAFvGA,WAUJ,OALAh0B,KAAKO,OAAOwpB,QAAQhD,IAAqB9mB,GAAM,SAAUstO,GACrDxtO,EAAMwtb,UAAYhgN,EAAav5M,MAC/B/Z,EAAWszN,KAGR,CAAE/sO,SADM,IAAI0nX,GACUjoX,KAAMga,IAOvCg+b,EAAU/7c,UAAUif,QAAU,aAEvB88b,EAlboB,GCD3BsB,GAAqC,WAKrC,SAASA,EAAoBh5c,GACzBP,KAAKs1C,WAAa,CACdqnH,IAAK,MACLi/I,SAAU,YACVh/I,MAAO,QACP89I,QAAS,gBACTD,UAAW,kBACXG,UAAW,kBACXD,WAAY,mBACZgB,WAAY,cACZD,UAAW,aACXpB,QAAS,UACTD,UAAW,YACXG,UAAW,YACXD,WAAY,aACZ19I,OAAQ,SACR28S,WAAY,gBAEhBx5c,KAAKO,OAASA,EACdP,KAAK8mB,WAAQ9qB,EACbgE,KAAKO,OAAOS,QAAQq8I,UAA6C,IAAlCr9I,KAAKO,OAAOS,QAAQq8I,SAAkB,EAAIr9I,KAAKO,OAAOS,QAAQq8I,SAC7Fr9I,KAAKy5c,wBAA0B,IAAI7ka,IAAe50C,KAAKO,OAAOS,QAAS,CACnE40C,UAAW51C,KAAKggK,iBAAiB7jK,KAAK6D,MACtCs1C,WAAYt1C,KAAKs1C,WACjBtsB,UAAW,YAqanB,OAlaAuwb,EAAoBr9c,UAAU8jK,iBAAmB,SAAUn/J,GACvD,OAAQA,EAAEilC,QACN,IAAK,MACD9lC,KAAK05c,WAAW74c,GAChB,MACJ,IAAK,WACDb,KAAK25c,gBAAgB94c,GACrB,MACJ,IAAK,QACL,IAAK,aACL,IAAK,YACDb,KAAKmyT,aAAatxT,GAClB,MACJ,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACDb,KAAK45c,iBAAiB/4c,GACtB,MACJ,IAAK,SACDb,KAAK8rS,iBACL,MACJ,IAAK,aACD9rS,KAAK65c,gBAAgBh5c,KAIjC04c,EAAoBr9c,UAAU49c,cAAgB,SAAU78a,GACpD,IAAIs1R,EAAkBvyT,KAAK+5c,gBAAgB98a,GAE3C,GADA7G,aAAYm8R,EAAiB,iBACzBvyT,KAAKO,OAAO85D,KAAKr5D,QAAQsC,cAAc,IAAM2mE,MAE7C,IADA,IAAItoE,EAAM4wT,EAAgB11T,OACjBD,EAAI,EAAGA,EAAI+E,EAAK/E,IACrB,GAAI21T,EAAgB31T,GAAGuyB,aAAa,cAAgB8N,EAAO9N,aAAa,YACpE,OAAQojS,EAAgB31T,EAAI,GAAK21T,EAAgB31T,EAAI,GAAKqgC,EAItE,OAAOA,GAEXs8a,EAAoBr9c,UAAU89c,cAAgB,SAAU/8a,GACpD,IAAIs1R,EAAkBvyT,KAAK+5c,gBAAgB98a,GAE3C,GADA7G,aAAYm8R,EAAiB,iBACzBvyT,KAAKO,OAAO85D,KAAKr5D,QAAQsC,cAAc,IAAM2mE,MAE7C,IADA,IAAItoE,EAAM4wT,EAAgB11T,OACjBD,EAAI,EAAGA,EAAI+E,EAAK/E,IACrB,GAAI21T,EAAgB31T,GAAGuyB,aAAa,cAAgB8N,EAAO9N,aAAa,YACpE,OAAQojS,EAAgB31T,EAAI,GAAK21T,EAAgB31T,EAAI,GAAKqgC,EAItE,OAAOA,GAEXs8a,EAAoBr9c,UAAU69c,gBAAkB,SAAU98a,GACtD,IAAI06D,EAKAsiX,EACAC,EACAC,EANAC,EAAyBxib,YAAQqF,EAAQ,IAAMgtC,MAC/CowY,EAAWzib,YAAQqF,EAAQ,IAAMgtC,MACjCqwY,EAAa1ib,YAAQqF,EAAQ,IAAMgtC,KACnCswY,EAAYt9a,EAAOjH,UAAUzD,SAAS03C,MAa1C,GAT+B,OAA3BmwY,EACAF,EAAUE,EAAuBpkb,UAAUzD,SAAS03C,MAElC,OAAbowY,EACLF,EAAwBE,EAASrkb,UAAUzD,SAAS03C,MAEhC,OAAfqwY,IACLL,EAAYK,EAAWtkb,UAAUzD,SAAS03C,MAE1CiwY,GAAWC,GAAyBI,EAAW,CAE/C,IAAIC,EAAoB,GAAGn5c,MAAMC,KAAKtB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAA6BzoE,iBAAiB,IAAMyoE,OAC9HwwY,EAAe,GAAGp5c,MAAMC,KAAKtB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAqBzoE,iBAAiB,IAAMyoE,OACrH0tB,EAAU6iX,EAAkB1ob,OAAO2ob,QAE9BR,IACLtiX,EAAU,GAAGt2F,MAAMC,KAAKtB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,KAA8BzoE,iBAAiB,IAAMyoE,QAGzH,OAAO0tB,GAEX4hX,EAAoBr9c,UAAUw9c,WAAa,SAAU74c,GACjD,IAAIo8B,EAASp8B,EAAEo8B,OACf,GAAIA,IAAWrF,YAAQqF,EAAQ,IAAMgtC,OAA2BhtC,EAAOjH,UAAUzD,SAAS,iBACtF,GAAIvyB,KAAKO,OAAO85D,KAAM,CAClB,IAAI21Y,EAAYhwc,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,SAC3D,GAAIhjC,EAAOjH,UAAUzD,SAAS,gBAAkB0K,EAAO35B,cAAc,kBACjE25B,EAASA,EAAO35B,cAAc,uBAE7B,GAAI25B,EAAOjH,UAAUzD,SAAS,eAAgB,CAC/Cy9a,EAAU1tc,QACV,IAAItB,EAAUgvc,EAAU9wT,oBAIxB,OAHArpH,YAAS,CAAC70B,GAAU,CAAC,YAAa,YAClCA,EAAQ40B,aAAa,WAAY,UACjC/0B,EAAEyrC,iBAGN,IAAIoua,EAAa16c,KAAK85c,cAAc78a,GACpC,GAAIy9a,EAAWvrb,aAAa,cAAgB8N,EAAO9N,aAAa,YACxDnvB,KAAKO,OAAOS,QAAQsC,cAAc,eAClCtD,KAAKO,OAAOS,QAAQsC,cAAc,cAAcsyB,aAAa,WAAY,MACzEQ,aAAYp2B,KAAKO,OAAOS,QAAQQ,iBAAiB,YAAa,WAC9D40B,aAAYp2B,KAAKO,OAAOS,QAAQQ,iBAAiB,cAAe,aAChEwuc,EAAUzwT,kBAAkBv/I,KAAKO,OAAOS,QAAQsC,cAAc,kBAC9DtD,KAAKO,OAAOS,QAAQsC,cAAc,iBAAiBsyB,aAAa,WAAY,MAG5Eo6a,EAAU7kU,YAAY4R,YAAa,EAEvClnH,YAAS,CAAC6kb,GAAa,iBACvBA,EAAWp4c,YAEV,CACD0tc,EAAU1tc,QACNtB,EAAUgvc,EAAU9wT,oBACxBrpH,YAAS,CAAC70B,GAAU,CAAC,YAAa,YAClCA,EAAQ40B,aAAa,WAAY,KAGrC,YADA/0B,EAAEyrC,uBAIL,IAAKtsC,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOo6c,eACjD19a,GAAUrF,YAAQqF,EAAQ,IAAMgtC,OAChC,GAAIjqE,KAAKO,OAAO85D,KAAM,EACd21Y,EAAYhwc,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,UACjD39D,QACNtB,EAAUgvc,EAAU9wT,oBAIxB,OAHArpH,YAAS,CAAC70B,GAAU,CAAC,YAAa,YAClCA,EAAQ40B,aAAa,WAAY,UACjC/0B,EAAEyrC,uBAIL,GAAKtsC,KAAKO,OAAOiyT,iBAAoBxyT,KAAKO,OAAOo6c,gBAClD19a,IAAUrF,YAAQqF,EAAQ,IAAMgtC,OAA0BryC,YAAQqF,EAAQ,0BAkBzE,GAAIA,GAAUrF,YAAQqF,EAAQ,IAAMgtC,OAAqBjqE,KAAKO,OAAOiqI,SAAWxqI,KAAKO,OAAO8rS,cAC7FlsS,aAAaH,KAAK+yT,YAClB/yT,KAAK+yT,WAAa3yT,YAAW,WACzBg2B,aAAYwB,YAAQqF,EAAQ,IAAMgtC,MAAkBzoE,iBAAiB,0BAA2B,aAC5FhB,SAASo1F,eAAiBp1F,SAASo1F,cAAc5/D,UAAUzD,SAAS,gBACpEsD,YAAS,CAACr1B,SAASo1F,eAAgB,qBAI1C,GAAI34D,EAAOjH,UAAUzD,SAAS,oBAAqB,EAChDy9a,EAAYhwc,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,UACjD39D,QACNtB,EAAUgvc,EAAU9wT,oBACxB9oH,aAAY,CAACp1B,GAAU,CAAC,YAAa,YACrCA,EAAQ40B,aAAa,WAAY,KACjC/0B,EAAEyrC,uBAhCF,GAAItsC,KAAKO,OAAO85D,KAAM,CAClB,IAAI0zO,EAAcn2Q,YAAQqF,EAAQ,IAAMgtC,MACpC+lY,EAAYhwc,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,SACvD6I,EAAO,GAAGznE,MAAMC,KAAKysS,EAAYxsS,qBAAqB,OAC1D,GAAI07B,EAAO76B,YAAe0mE,EAAKA,EAAKjsE,OAAS,GAAI+9c,UAAUx4c,UAGtD,CACD4tc,EAAU1tc,QACV,IAAItB,EAAUgvc,EAAU9wT,oBAIxB,OAHArpH,YAAS,CAAC70B,GAAU,CAAC,YAAa,YAClCA,EAAQ40B,aAAa,WAAY,UACjC/0B,EAAEyrC,iBAPF0ja,EAAU7kU,YAAY4R,YAAa,IA8BnDw8T,EAAoBr9c,UAAUy9c,gBAAkB,SAAU94c,GACtD,IAAIo8B,EAASp8B,EAAEo8B,OACf,GAAIA,IAAWrF,YAAQqF,EAAQ,IAAMgtC,OAA2BhtC,EAAOjH,UAAUzD,SAAS,iBACtF,GAAIvyB,KAAKO,OAAO85D,KAAM,CAClB,IAAI21Y,EAAYhwc,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,SAC3D,GAAIhjC,EAAOjH,UAAUzD,SAAS,gBAAkB0K,EAAO35B,cAAc,kBACjE25B,EAASA,EAAO35B,cAAc,uBAE7B,GAAI25B,EAAOjH,UAAUzD,SAAS,eAAgB,CAC/C0K,EAASj9B,KAAKO,OAAOS,QAAQsC,cAAc,kBAAoBtD,KAAKO,OAAOS,QAAQsC,cAAc,kBAC7FtD,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAC5C,IAAIsoP,EAAkBvyT,KAAK+5c,gBAAgB98a,GAC3C,GAAIs1R,EAAgB11T,OAAS,GAAK01T,EAAgBA,EAAgB11T,OAAS,GAMvE,OALAmzc,EAAU7kU,YAAY4R,YAAa,EACnCw1K,EAAgBA,EAAgB11T,OAAS,GAAGyF,QAC5C8zB,aAAYm8R,EAAiB,iBAC7B18R,YAAS,CAAC08R,EAAgBA,EAAgB11T,OAAS,IAAK,sBACxDgE,EAAEyrC,iBAIV,IAAIuua,EAAa76c,KAAKg6c,cAAc/8a,GACpC,GAAI49a,EAAW1rb,aAAa,cAAgB8N,EAAO9N,aAAa,YAI5D,OAHA6gb,EAAU7kU,YAAY4R,YAAa,EACnC89T,EAAWv4c,aACXzB,EAAEyrC,uBAKT,GAAIrP,GAAUj9B,KAAKO,OAAO85D,OAASp9B,EAAOjH,UAAUzD,SAAS,mBAC7D0K,EAAOjH,UAAUzD,SAAS,iBAAmBqF,YAAQqF,EAAQ,MAAM9N,aAAa,cAC7EnvB,KAAKO,OAAO85D,KAAKr5D,QAAQsC,cAAc,uBAAuB6rB,aAAa,aAAe,CAC1F6gb,EAAYhwc,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,SAC3D,GAAIhjC,EAAOjH,UAAUzD,SAAS,kBAAmB,CAC7C0K,EAAUj9B,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,KAAsB,mBACnEjqE,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,KAAsB,mBAC9DjqE,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAC7C,IAAIjpE,EAAUgvc,EAAU9wT,oBACxB9oH,aAAY,CAACp1B,GAAU,CAAC,YAAa,YAEzC,IAAI85c,EAAoB96c,KAAK+5c,gBAAgB98a,GAC7C,GAAI69a,EAAkBj+c,OAAS,EAQ3B,OAPAmzc,EAAU7kU,YAAY4R,YAAa,EACnC38I,YAAW,WACP06c,EAAkBA,EAAkBj+c,OAAS,GAAGyF,WAEpD8zB,aAAY0kb,EAAmB,iBAC/Bjlb,YAAS,CAACilb,EAAkBA,EAAkBj+c,OAAS,IAAK,sBAC5DgE,EAAEyrC,sBAIL,GAAIrP,GAAUrF,YAAQqF,EAAQ,IAAMgtC,OACrCjqE,KAAKO,OAAOiqI,SAAWxqI,KAAKO,OAAO8rS,cACnClsS,aAAaH,KAAK+yT,YAClB/yT,KAAK+yT,WAAa3yT,YAAW,WACzBg2B,aAAYwB,YAAQqF,EAAQ,IAAMgtC,MAAkBzoE,iBAAiB,0BAA2B,aAC5FhB,SAASo1F,eAAiBp1F,SAASo1F,cAAc5/D,UAAUzD,SAAS,gBACpEsD,YAAS,CAACr1B,SAASo1F,eAAgB,qBAI1C,GAAI34D,EAAOjH,UAAUzD,SAAS,oBAAqB,EAChDy9a,EAAYhwc,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,UACjD39D,QACNtB,EAAUgvc,EAAU9wT,oBACxB9oH,aAAY,CAACp1B,GAAU,CAAC,YAAa,YACrCA,EAAQ40B,aAAa,WAAY,KACjC/0B,EAAEyrC,mBAGVita,EAAoBr9c,UAAUi2T,aAAe,SAAUtxT,GACnD,IAAIo8B,EAASp8B,EAAEo8B,OACf,GAAIA,GAAUrF,YAAQqF,EAAQ,IAAMgtC,MAApC,CACI,IAAI+lY,EAAYhwc,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,SAC3D,GAAkB,KAAdp/D,EAAE8zC,SAAmB9zC,EAAEs0C,UAAat0C,EAAEo0C,QAyBrC,GAAkB,KAAdp0C,EAAE8zC,SAAkB9zC,EAAEs0C,WAAat0C,EAAEo0C,SAC1C,GAAIj1C,KAAKO,OAAOkjF,mBAAoB,CAChCzjF,KAAK8mB,MAAQjmB,EACbo8B,EAAOwzB,QACPu/Y,EAAU1tc,QACNtB,EAAUgvc,EAAU9wT,oBACxBrpH,YAAS,CAAC70B,GAAU,CAAC,YAAa,YAClCA,EAAQ40B,aAAa,WAAY,WAGlB,KAAd/0B,EAAE8zC,UAAmB9zC,EAAEs0C,UAAYt0C,EAAEo0C,SACtCj1C,KAAKO,OAAOqyc,mBAAqB31a,EAAO35B,cAAc,MACtD25B,EAAO35B,cAAc,KAAKmtD,aApC9B,GAAIxzB,EAAO35B,cAAc,IAAM2mE,MAAW,CACtCjqE,KAAK8mB,MAAQjmB,EACbo8B,EAAO35B,cAAc,IAAM2mE,MAAUxZ,QACrCu/Y,EAAU1tc,QACV,IAAItB,EAAUgvc,EAAU9wT,oBACxBrpH,YAAS,CAAC70B,GAAU,CAAC,YAAa,YAClCA,EAAQ40B,aAAa,WAAY,UAEhC,GAAIqH,EAAOjH,UAAUzD,SAAS,mBAC/B0K,EAAOo8E,cAAc,IAAI23V,WAAW,WAAY,CAC5C,KAAQlvc,OACR,SAAW,EACX,YAAc,KAEdm7B,EAAO35B,cAAc,sBACrB25B,EAAOwzB,aAGV,GAAIxzB,EAAOjH,UAAUzD,SAAS,oBAAqB,CACpDy9a,EAAU1tc,QACV,IAAItB,EAAUgvc,EAAU9wT,oBACxB9oH,aAAY,CAACp1B,GAAU,CAAC,YAAa,YAkB7CH,EAAEyrC,wBAIVita,EAAoBr9c,UAAU4vS,eAAiB,WAC3C,IAAI77N,EAAUjwE,KAAKO,OACnB61B,aAAY65C,EAAQjvE,QAAQQ,iBAAiB,IAAMyoE,IAA4B,KAAOA,MAAuB,CAACA,KAAsBA,IAA2BA,MAC/JjqE,KAAKO,OAAO4oE,aAAauc,YAE7B6zX,EAAoBr9c,UAAU09c,iBAAmB,SAAU/4c,GACvD,IAAIo8B,EAASp8B,EAAEo8B,OACf,GAAIj9B,KAAKO,OAAO85D,MAAQr6D,KAAKO,OAAO8sc,aAAappT,gBAAsE,QAApDjkJ,KAAKO,OAAO8sc,aAAa3pW,kBAAkBvmF,OACzG8f,EAAOjH,UAAUzD,SAAS,oBAAqB,CAChD,IAGIkjG,EAHAslV,EAAY/6c,KAAKO,OACjBy+N,EAAa/oL,OAAOp1C,EAAEo8B,OAAO9N,aAAa,kBAC1C6rb,EAAa/ka,OAAOp1C,EAAEo8B,OAAO9N,aAAa,UAkB9C,GAfwB,OAApB8N,EAAOy4E,UAAyC,OAApBz4E,EAAOy4E,WAE/B+f,EADa,YAAb50H,EAAEilC,QAAqC,YAAbjlC,EAAEilC,OACJ,IAAfk1a,GAAmC,IAAfh8O,GAAyC,OAApB/hM,EAAOy4E,UACrDqlW,EAAU5xY,aAAa48I,cAAgBi1P,EAAe,KAAOh7c,KAAKi7c,iBAAiBF,EAAWtlV,EAAOupG,EAAYg8O,EAAa,GAEhH,cAAbn6c,EAAEilC,QAAuC,cAAbjlC,EAAEilC,OAC3Bi1a,EAAU/5c,QAAQsC,cAAc,qBAAuB07N,EAAa,cAAgBg8O,EAAa,GAAK,MAE5F,cAAbn6c,EAAEilC,QAAuC,cAAbjlC,EAAEilC,OAC3BjlC,EAAEo8B,OAAOgkC,gBAGTpgE,EAAEo8B,OAAOsxK,aAGpBnxM,YAAkBq4H,GAuBF,YAAb50H,EAAEilC,QACF2vF,EAAQslV,EAAU/5c,QAAQsC,cAAc,mBAAqB07N,EAAa,cAAgBg8O,EAAa,GAAK,MAC5GA,KAEkB,cAAbn6c,EAAEilC,SACP2vF,EAAQslV,EAAU/5c,QAAQsC,cAAc,mBAAqB07N,EAAa,cAAgBg8O,EAAa,GAAK,MAC5GA,KAEC59c,YAAkBq4H,IACnBslV,EAAUjvK,eAAer2K,EAAO50H,EAAGm+N,EAAYg8O,QA/BnD,GAAsD,SAAlDD,EAAU1N,aAAa3pW,kBAAkBvmF,MAAmBs4G,EAAMz/F,UAAUzD,SAAS03C,MAkBrF8wY,EAAUjvK,eAAer2K,EAAO50H,EAAGm+N,EAAYg8O,OAlBkE,CACjHh8O,EAAa/oL,OAAOw/E,EAAMtmG,aAAa,kBACvC6rb,EAAa/ka,OAAOw/E,EAAMtmG,aAAa,UACvC,IAAI+rb,EAAYjla,OAAOw/E,EAAMtmG,aAAa,iBAC1C4rb,EAAUjvK,eAAer2K,EAAO50H,EAAGm+N,EAAYg8O,GAC/C,IAAIG,EAAa,CACbp4b,QAAQ,EACRq4b,aAAa,EACbntI,YAAax4M,EACb56G,KAAMkgc,EAAUvrY,YAAYwrY,GAAYh8O,IAE5C+7O,EAAUhxb,QAAQhD,IAAsBo0b,GAAY,SAAU5tO,GACrDA,EAAaxqN,QACdg4b,EAAUM,qBAAqBx6c,EAAG40H,EAAOupG,EAAYA,GAAck8O,EAAY,EAAKA,EAAY,EAAK,GAAIF,YAsBxH,GAAI/9a,IAAyB,KAAdp8B,EAAE8zC,SAAgC,KAAd9zC,EAAE8zC,UACtC30C,KAAKO,QAAUP,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOkyT,oBAAsBx1R,EAAOjH,UAAUzD,SAAS,oBAAqB,CAC/H,GAAIvyB,KAAKO,OAAO85D,MAAQr6D,KAAKO,OAAOS,QAAQsC,cAAc,oBAAsBtD,KAAKO,OAAOS,QAAQsC,cAAc,mBAAmB9B,iBAAiB,YAAY3E,OAAS,EAUvK,OATAu5B,aAAYp2B,KAAKO,OAAOS,QAAQsC,cAAc,mBAAmB9B,iBAAiB,YAAa,WAC/F40B,aAAYp2B,KAAKO,OAAOS,QAAQsC,cAAc,mBAAmB9B,iBAAiB,cAAe,aACjGxB,KAAKO,OAAOS,QAAQsC,cAAc,iBAAiBsyB,aAAa,WAAY,MAC5D51B,KAAKO,OAAO85D,KAAK0F,eAAeE,WAAW,SACjDs/E,kBAAkBtiH,GAC5BpH,YAAS,CAACoH,GAAS,CAAC,YAAa,YACjCA,EAAOrH,aAAa,WAAY,KAChCqH,EAAO36B,aACPzB,EAAEyrC,sBAIDrP,EAAOjH,UAAUzD,SAAS,qBAAoC,eAAb1xB,EAAEilC,QAAwC,cAAbjlC,EAAEilC,SACrF7I,EAAOwzB,SAIf8oZ,EAAoBr9c,UAAU++c,iBAAmB,SAAUhrY,EAAS3+C,EAAKwnD,EAAUnN,GAC/E,MAAQr6C,GACJA,EAAM2+C,EAAQjvE,QAAQsC,cAAc,mBAAqBw1E,EAAW,aAAenN,EAAW,MAC9FmN,IAEJ,OAAOxnD,GAEXiob,EAAoBr9c,UAAU29c,gBAAkB,SAAUh5c,GACtD,GAAIb,KAAKO,SAAWP,KAAKO,OAAO44B,aAAen5B,KAAKO,OAAOo6c,eACvD36c,KAAKO,OAAO+6c,uBAAyBt7c,KAAKO,OAAO+6c,qBAAqBnib,aACtEn5B,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAA8B,CACtE,IAAKjqE,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAA6Bj0C,UAAUzD,SAAS03C,MAGzF,OAFAjqE,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAA6BxZ,aACrE5vD,EAAEyrC,iBAGGtsC,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAA6Bj0C,UAAUzD,SAAS03C,OAC7FjqE,KAAKO,OAAO+6c,qBAAqBthJ,gBAAkBh6T,KAAKO,OAAO+6c,qBAAqBthJ,eAAeC,kBAClGj6T,KAAKO,OAAO+6c,qBAAqBthJ,eAAeC,gBAAgB9gS,aACjEn5B,KAAKO,OAAO+6c,qBAAqBthJ,eAAeC,gBAAgB1+L,SAS5Eg+U,EAAoBr9c,UAAUif,QAAU,WAChCnb,KAAKy5c,yBACLz5c,KAAKy5c,wBAAwBt+b,WAM9Bo+b,EAlc8B,GCCrCgC,GAAkC,WAGlC,SAASA,EAAiBh7c,GAEtBP,KAAKO,OAASA,EACdP,KAAKO,OAAOo+S,kBAAoB3+S,KAgGpC,OAzFAu7c,EAAiBr/c,UAAUwzB,OAAS,WAChC1vB,KAAKw7c,qBAETD,EAAiBr/c,UAAUs/c,kBAAoB,WAC3C,IAAI9tO,EAAY,CACZ,CAAEn7N,KAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAY,eAAgBp9B,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,YACvF,CAAElH,KAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAY,YAAap9B,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,SACpF,CAAElH,KAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAY,eAAgBp9B,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,YACvF,CAAElH,KAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAY,cAAep9B,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,YAEtFk0N,EAAc,CACdz3I,SAAUjsB,KACV8J,MAAO25J,EACP/mM,UAAW3mC,KAAKO,OAAOomC,UACvB5pB,OAAQ/c,KAAKO,OAAOwc,OACpB+wN,WAAY9tO,KAAKy7c,iBAAiBt/c,KAAK6D,MACvCo3B,OAAQp3B,KAAK07c,oBAAoBv/c,KAAK6D,OAEtC27c,EAAQx6c,YAAc,KAAM,CAC5BsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,sBAEjCzZ,KAAKO,OAAOS,QAAQgB,YAAY25c,GAChC37c,KAAK47c,QAAU,IAAIpR,KAAY78N,GAC/B3tO,KAAK47c,QAAQ1tb,kBAAmB,EAChCluB,KAAK47c,QAAQ70a,SAAS40a,IAE1BJ,EAAiBr/c,UAAUu/c,iBAAmB,SAAUx7c,GACpD,IAAI8zE,EAAQ,GAAG1yE,MAAMC,KAAKrB,EAAKe,QAAQQ,iBAAiB,OACpDs/T,EAAqC,SAAzB9gU,KAAKO,OAAOikB,SAAsBxkB,KAAK67c,aAAa1sb,aAAa,aAC7EnvB,KAAK67c,aAAav4c,cAAc,IAAM2mE,MAAgC96C,aAAa,aAEvF,GADAiH,aAAY29C,EAAO9J,MACD,oBAAd62P,GAAiD,yBAAdA,EACnC,IAAK,IAAI9iU,EAAK,EAAGknO,EAAUnxJ,EAAO/1E,EAAKknO,EAAQroO,OAAQmB,IAAM,EACrDw9C,EAAO0pL,EAAQlnO,IACVq4F,cAAgBr2F,KAAKO,OAAOwjF,UAAUltC,YAAY,eACvDhhB,YAAS,CAAC2lB,GAAOyuB,WAIxB,GAAkB,mBAAd62P,EACL,IAAK,IAAIv9T,EAAK,EAAGu4c,EAAU/nY,EAAOxwE,EAAKu4c,EAAQj/c,OAAQ0G,IAAM,EACrDi4C,EAAOsga,EAAQv4c,IACV8yF,cAAgBr2F,KAAKO,OAAOwjF,UAAUltC,YAAY,aACvD2E,EAAK66C,cAAgBr2F,KAAKO,OAAOwjF,UAAUltC,YAAY,gBACvDhhB,YAAS,CAAC2lB,GAAOyuB,WAIxB,GAA6B,SAAzBjqE,KAAKO,OAAOikB,SACjB,IAAK,IAAIuQ,EAAK,EAAGgnb,EAAUhoY,EAAOh/C,EAAKgnb,EAAQl/c,OAAQk4B,IAAM,CACzD,IAAIymB,EACJ,IADIA,EAAOuga,EAAQhnb,IACVshE,cAAgBr2F,KAAKO,OAAOwjF,UAAUltC,YAAY,cAAe,CACtEhhB,YAAS,CAAC2lB,GAAOyuB,MACjB,SAKhBsxY,EAAiBr/c,UAAUw/c,oBAAsB,SAAUhrO,GACvD,GAAiC,OAA7BA,EAAK1vO,QAAQq1F,YAAsB,CACnC,IAAI7f,EAAYx2E,KAAK67c,aAAa1sb,aAAa,YAC3C6sb,EAAYtrO,EAAKl1L,KAAK/hC,GAAG/c,QAAQsD,KAAKO,OAAOS,QAAQyY,GAAK,IAAK,IAAIhC,cACvEzX,KAAKO,OAAOu2c,YAAY3+I,iBAAiBloP,QAA0C,cAAhCjwE,KAAKO,OAAOs6B,gBAAkC76B,KAAKO,OACjGP,KAAKO,OAAO2vE,gBAAkBlwE,KAAKO,OAAO2vE,gBAAkBlwE,KAAKO,OACtEP,KAAKO,OAAOu2c,YAAY3+I,iBAAiBC,WAAap4T,KAAK67c,aAC3D77c,KAAKO,OAAOu2c,YAAY3+I,iBAAiBvxK,iBAAiBpwE,EAAWwlY,GAAY,GACjFh8c,KAAKO,OAAOqmJ,kBAAiB,GAC7B5mJ,KAAK67c,kBAAe7/c,IAQ5Bu/c,EAAiBr/c,UAAUif,QAAU,WAC5Bnb,KAAKO,OAAO44B,aAGbn5B,KAAK47c,UAAY57c,KAAK47c,QAAQzib,cAC9Bn5B,KAAK47c,QAAQzgc,UACTic,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,oBAAqBjZ,WAC3DipB,aAAO2N,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,oBAAqBjZ,aAOvE+6c,EAtG2B,GCFlCU,GAA+B,WAM/B,SAASA,EAAc17c,GACnBP,KAAKksS,eAAiB,CAAElpQ,IAAK,EAAGF,KAAM,GACtC9iC,KAAKk8c,qBAAuB,CAAEl5a,IAAK,EAAGF,KAAM,GAC5C9iC,KAAKm8c,UAAY,GACjBn8c,KAAKO,OAASA,EACdP,KAAK+2E,aAAwC,UAAzB/2E,KAAKO,OAAOikB,SAAuBxkB,KAAKO,OAAOw2E,aAAe/2E,KAAKO,OAAOu2E,iBAC9F92E,KAAKo8c,oBAgbT,OAzaAH,EAAc//c,UAAU2+B,cAAgB,WACpC,MAAO,iBAEXohb,EAAc//c,UAAUkgd,kBAAoB,WACxCp8c,KAAKO,OAAO+Y,GAAG81C,IAAcpvD,KAAKk0C,WAAYl0C,OAElDi8c,EAAc//c,UAAUg4C,WAAa,WACjC,GAAuC,UAAnCl0C,KAAKO,OAAOiuQ,cAAc5pE,KAAkB,CAC5C,IAAIt2D,EAAQtuI,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAChDokE,EAAQruI,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAChDoiE,EAAOrsI,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAC/C2jO,EAAat/J,EAAM16F,cAAcA,cAActwC,cAAc,IAAM2mE,MAGvE,GAFArhD,IAAagB,YAAY0kH,GACzB1lH,IAAagB,YAAYykH,GACrBruI,KAAK+2E,aAAc,CACnB,IAAIzlD,EAAMtxB,KAAKO,OAAOokU,WAAar2L,EAAQA,EAAM16F,cAAcA,cAActwC,cAAc,IAAM2mE,MACjGrhD,IAAaG,IAAIuI,EAAK,+BAAgCtxB,KAAKq8c,mBAAmBhwU,EAAMiC,EAAOD,GAAQruI,MACnG4oB,IAAaG,IAAIulH,EAAM16F,cAAe,mDAAoD5zC,KAAKs8c,iBAAiBjuU,EAAOC,GAAQtuI,MAC/H4oB,IAAaG,IAAIulH,EAAM16F,cAAcA,cAAe,mBAAoB5zC,KAAKu8c,OAAOlwU,EAAMiC,EAAOD,GAAQruI,MACzG4oB,IAAaG,IAAI6kR,EAAY,SAAU5tS,KAAKstS,wBAAwBh/J,EAAOjC,GAAOrsI,MAClF4oB,IAAaG,IAAIulH,EAAO,SAAUtuI,KAAKstS,wBAAwBM,EAAYvhK,GAAOrsI,MAClF4oB,IAAaG,IAAIsjH,EAAM,SAAUrsI,KAAKstS,wBAAwBM,EAAYt/J,GAAQtuI,MAIlF4oB,IAAaG,IAAIsjH,EAAM,yBAA0BrsI,KAAK2tS,YAAa3tS,MACnE4oB,IAAaG,IAAIsjH,EAAM,wBAAyBrsI,KAAKutS,cAAclhK,EAAMiC,EAAOD,GAAQruI,MACxF4oB,IAAaG,IAAIulH,EAAO,yBAA0BtuI,KAAK2tS,YAAa3tS,MACpE4oB,IAAaG,IAAIulH,EAAO,wBAAyBtuI,KAAKutS,cAAclhK,EAAMiC,EAAOD,GAAQruI,MAE7FA,KAAKO,OAAO85D,KAAK/gD,GAAG,sBAAsB,SAAUrZ,GAChDA,EAAK8iB,QAAS,KAElB/iB,KAAKO,OAAO85D,KAAK/gD,GAAG,iCAAiC,SAAUrZ,GAC3DA,EAAK8iB,QAAS,KAElB/iB,KAAKO,OAAO85D,KAAK6yO,sBAAuB,IAGhD+uK,EAAc//c,UAAUsgd,cAAgB,SAAUluU,EAAOD,GACrD,IAAItuI,EAAQC,KACRgB,EAAUstI,EACd,OAAO,SAAUztI,GACb,IAAImiC,EAAMhiC,EAAQ4yC,cAAchR,WAA6B,IAAhB/hC,EAAE47c,UAA6B,GAAX57c,EAAE22H,OAAc32H,EAAE22H,QAC/Ez3H,EAAMm8c,qBAAqBl5a,MAAQA,IAGvCniC,EAAEyrC,iBACFvsC,EAAMm8c,qBAAqBl5a,IAAMA,EACjCjjC,EAAMo8c,UAAYt7c,EAAEsK,QAG5B8wc,EAAc//c,UAAUwxS,WAAa,SAAU7sS,GAC3C,IAAI4sS,EAAS,CAAElsR,EAAG,EAAGjL,EAAG,GASxB,OARMzV,EAAE46M,SAAW56M,EAAE46M,QAAQ5+M,QAKzB4wS,EAAOlsR,EAAI1gB,EAAE46M,QAAQ,GAAGl5K,MACxBkrQ,EAAOn3R,EAAIzV,EAAE46M,QAAQ,GAAG94K,QALxB8qQ,EAAOlsR,EAAI1gB,EAAE0hC,MACbkrQ,EAAOn3R,EAAIzV,EAAE8hC,OAMV8qQ,GAEXwuK,EAAc//c,UAAUoxS,wBAA0B,SAAUh/J,EAAOjC,GAC/D,IAAItsI,EAAQC,KACR0qD,EAAU4jF,EACVvpH,EAASsnH,EACb,OAAO,SAAUxrI,GAEb,GAAwC,OADzBd,EAAMQ,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAwBr2B,cACnEtwC,cAAc,SAA3B,CAGA,IACIw/B,EADSjiC,EAAEo8B,OACGwF,WACd1iC,EAAMmsS,eAAeppQ,OAASA,IAGlC4nB,EAAQjoB,WAAaK,EACrB/d,EAAO0d,WAAaK,EACpB/iC,EAAMmsS,eAAeppQ,KAAOA,EACxB/iC,EAAMQ,OAAO44B,gBAKzB8ib,EAAc//c,UAAUqxS,cAAgB,SAAUlhK,EAAMiC,EAAOD,GAC3D,IAAItuI,EAAQC,KACRgB,EAAUstI,EACd,OAAO,SAAUztI,GACb,GAAsB,UAAlBA,EAAE2sS,YAAN,CAGA,IAAIC,EAAS1tS,EAAM2tS,WAAW7sS,GAC1BmiC,EAAMhiC,EAAQ4yC,cAAchR,WAAa7iC,EAAM0tS,OAAOn3R,EAAIm3R,EAAOn3R,GACjEgb,EAAMvxB,EAAMQ,OAAOokU,WAAar2L,EAAQttI,EAAQ4yC,cAAcA,cAActwC,cAAc,IAAM2mE,MAChGnnC,EAAOxR,EAAImR,YAAc1iC,EAAM0tS,OAAOlsR,EAAIksR,EAAOlsR,GACjDxhB,EAAMm8c,qBAAqBp5a,OAASA,GAAQA,EAAO,IAGvDupG,EAAK5pG,WAAaK,EAClBxR,EAAImR,WAAaK,EACjB/iC,EAAM0tS,OAAOlsR,EAAIksR,EAAOlsR,EACxBxhB,EAAMm8c,qBAAqBp5a,KAAOA,EAC9B/iC,EAAMm8c,qBAAqBl5a,MAAQA,GAAOA,EAAM,IAGpDjjC,EAAM0tS,OAAOn3R,EAAIm3R,EAAOn3R,EACxBvW,EAAMm8c,qBAAqBl5a,IAAMA,EACjCjjC,EAAMo8c,UAAYt7c,EAAEsK,UAG5B8wc,EAAc//c,UAAU2hG,OAAS,SAAUwuC,EAAMiC,EAAOtrG,EAAKF,EAAMjiC,GAC/D,IAAId,EAAQC,KACZA,KAAKO,OAAO2tc,aAAc,EAC1B,IAAIz1O,EAAkC,UAAzBz4N,KAAKO,OAAOikB,SAAuBxkB,KAAKO,OAAOw2E,aAAe/2E,KAAKO,OAAOu2E,iBAIvF,IAHIx3E,eAAsD,WAAxCU,KAAKO,OAAO6vE,mBAAmBjzD,QAC7Cs7M,EAAOvzJ,aAAellE,KAAKO,OAAO2kE,cAElCllE,KAAKO,OAAO2kE,cAAgBuzJ,EAAOvzJ,aACnC,GAAuB,aAAnBllE,KAAKu/F,UAA0B,CAC/B,IAAIm9W,EAAuC,UAAzB18c,KAAKO,OAAOikB,UACoB,QAA7CxkB,KAAKO,OAAO6vE,mBAAmBqB,UAAsBzxE,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAc,EAC1G8/c,EAAe38c,KAAKO,OAAO2kE,aAAaw3J,QAAUggP,EAAc18c,KAAKO,OAAO8sc,aAAa9uY,UACzFkiW,EAAUl5Z,KAAKu3D,KAAK97B,EAAM25a,GAC9B,GAAK38c,KAAKO,OAAOq8c,gBAAgBvhG,WAAaolD,GAC1ChoM,EAAOvzJ,aAAaw3J,SAAWjE,EAAO7S,SAEtC,OAEJ5lN,KAAKO,OAAOs8c,mBACZ78c,KAAKO,OAAOq8c,gBAAgBvhG,SAAWolD,EACvChoM,EAAOvzJ,aAAau3J,eAAiBgkM,EAAU,EAAIA,EAAU,EAC7D,IAAIq8C,EAAgB,EACpB,GAA6B,UAAzB98c,KAAKO,OAAOikB,SACZ,GAAIllB,cAAY,CACZ,IAAIy9c,EAAU/8c,KAAKO,OACfy8c,EAAW,WAEX5sY,EAAqBtuE,OAAOk7c,GAC5BC,8BAA8B,CAACF,EAAQ3sY,oBAAqB2sY,EAAQ3sY,oBAEpElL,EAAepjE,OAAOk7c,GACtBC,8BAA8B,CAACxkP,EAAOvzJ,cAAeuzJ,EAAOvzJ,cAEhE63Y,EAAQ3/S,eAAeC,kBAAkB,qBAAsB,mBAAoB,CAC/E,mBAAsBjtF,EACtB,aAAgBlL,EAAc,aAAe,IAC9CtqD,MAEH,SAAUC,GACNkic,EAAQG,iBAAiBric,EAAMkic,GAC/BA,EAAQvtY,YAAcipJ,EAAOjpJ,YAC7BstY,EAAgB/8c,EAAMQ,OAAOw2E,aAAagvI,YAC1C,IAAIo3P,EAAY51c,KAAKu3D,KAAKg+Y,GAAiBC,EAAQ73Y,aAAaw3J,QAAUggP,IACtE/mc,EAAMgnc,EAAcQ,EACnB1kP,EAAO3S,YAAc42P,EAAcK,EAAQ1P,aAAa9uY,UAC7Dw+Y,EAAQH,gBAAgBQ,gBAAkBznc,SAGD,WAAxC3V,KAAKO,OAAO6vE,mBAAmBjzD,KACpCnd,KAAKO,OAAO88c,UAAU,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,OAGhEr9c,KAAKO,OAAOw2E,aAAa+yI,iBAAiB9pN,KAAKO,OAAO6vE,mBAAoBpwE,KAAKO,OAAOw2E,aAAakvI,kBACnG62P,EAAgB98c,KAAKO,OAAOw2E,aAAagvI,kBAI7C/lN,KAAKO,OAAOu2E,iBAAiB01P,WAAW,UACxCswI,EAAgB98c,KAAKO,OAAOu2E,iBAAiBwwP,gBAEjD,IAAMhoU,eAAuC,UAAzBU,KAAKO,OAAOikB,SAAuB,CACnDxkB,KAAKO,OAAOivE,YAAcipJ,EAAOjpJ,YACjC,IAAI2tY,EAAY51c,KAAKu3D,KAAKg+Y,GAAiB98c,KAAKO,OAAO2kE,aAAaw3J,QAAUggP,IAC1E/mc,EAAMgnc,EAAcQ,EACnB1kP,EAAO3S,YAAc42P,EAAc18c,KAAKO,OAAO8sc,aAAa9uY,UACjEv+D,KAAKO,OAAOq8c,gBAAgBQ,gBAAkBznc,OAGjD,CACD,IAAI2nc,EAAuC,UAAzBt9c,KAAKO,OAAOikB,UACoB,WAA7CxkB,KAAKO,OAAO6vE,mBAAmBqB,UAAyBzxE,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAc,EAC7G0gd,EAAev9c,KAAKO,OAAO2kE,aAAa43J,WACxCwgP,EAAct9c,KAAKO,OAAO8sc,aAAaxpB,YACvCpjB,EAAUl5Z,KAAKu3D,KAAKh8B,EAAOy6a,GAC/B,GAAIv9c,KAAKO,OAAOq8c,gBAAgBxhG,aAAeqlD,EAE3C,OAEJzga,KAAKO,OAAOs8c,mBACZ,IAAIt5X,EAAQvjF,KAAKO,OACjBgjF,EAAMq5X,gBAAgBxhG,WAAaqlD,EACnChoM,EAAOvzJ,aAAa23J,kBAAoB4jM,EAAU,EAAIA,EAAU,EAChE,IAAI+8C,EAAgB,EACpB,GAAuB,UAAnBj6X,EAAM/+D,SACN,GAAIllB,cAAY,CACR09c,EAAW,WAAf,IACIS,EAAUz9c,KAAKO,OAEf2kE,EAAepjE,OAAOk7c,GACtBC,8BAA8B,CAACxkP,EAAOvzJ,cAAeuzJ,EAAOvzJ,cAE5DkL,EAAqBtuE,OAAOk7c,GAC5BC,8BAA8B,CAACQ,EAAQrtY,oBAAqBqtY,EAAQrtY,oBAExEqtY,EAAQrgT,eAAeC,kBAAkB,qBAAsB,mBAAoB,CAC/E,mBAAsBjtF,EACtB,aAAgBlL,EAAc,aAAe,IAC9CtqD,MAEH,SAAUC,GACN4ic,EAAQP,iBAAiBric,EAAM4ic,GAC/BD,EAAgBC,EAAQ1mY,aAAaivI,YACrCy3P,EAAQjuY,YAAcipJ,EAAOjpJ,YAC7B,IAAI2tY,EAAY51c,KAAKu3D,KAAK0+Y,GAAiBC,EAAQv4Y,aAAa43J,WAAawgP,IACzE3nc,EAAM4nc,EAAcJ,EAAa1kP,EAAO5S,YACxCy3P,EAAcG,EAAQpQ,aAAaxpB,YACvC45B,EAAQb,gBAAgBc,kBAAoB/nc,SAGH,WAAxC3V,KAAKO,OAAO6vE,mBAAmBjzD,KACpCnd,KAAKO,OAAO88c,UAAU,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,OAGhE95X,EAAMxM,aAAa+yI,iBAAiBvmI,EAAMnT,mBAAoBmT,EAAMxM,aAAakvI,kBACjFu3P,EAAgBj6X,EAAMxM,aAAaivI,kBAIvCziI,EAAMzM,iBAAiB01P,WAAW,UAClCgxI,EAAgBj6X,EAAMzM,iBAAiBywP,gBAE3C,IAAMjoU,eAAiC,UAAnBikF,EAAM/+D,SAAuB,CAC7C++D,EAAM/T,YAAcipJ,EAAOjpJ,YACvB2tY,EAAY51c,KAAKu3D,KAAK0+Y,GAAiBj6X,EAAMre,aAAa43J,WAAawgP,IACvE3nc,EAAM4nc,EAAcJ,EAAa1kP,EAAO5S,YACxCy3P,EAAc/5X,EAAM8pX,aAAaxpB,YACrCtgW,EAAMq5X,gBAAgBc,kBAAoB/nc,KAK1Dsmc,EAAc//c,UAAUyxS,UAAY,WAChC,IAAI5tS,EAAQC,KACZ,OAAO,SAAUa,GACS,UAAlBA,EAAE2sS,cAGNztS,EAAM0tS,OAAS1tS,EAAM2tS,WAAW7sS,MAGxCo7c,EAAc//c,UAAUqgd,OAAS,SAAUlwU,EAAMiC,EAAOD,GACpD,IAAItuI,EAAQC,KACZ,OAAO,SAAUa,GACb,IAAIywB,EAAMvxB,EAAMQ,OAAOokU,WAAar2L,EAAQA,EAAM16F,cAAcA,cAActwC,cAAc,IAAM2mE,MAClGlqE,EAAM89F,OAAOwuC,EAAMiC,EAAOA,EAAM16F,cAAchR,UAAY7iC,EAAMQ,OAAOo9c,oBAAqBrsb,EAAImR,WAAa1iC,EAAMQ,OAAOq9c,sBAAuB/8c,KAGzJo7c,EAAc//c,UAAUmgd,mBAAqB,SAAUhwU,EAAMiC,EAAOD,GAChE,IAEI0kL,EAFAhzT,EAAQC,KAGZ,OAAO,SAAUa,GACb,IAAIywB,EAAMvxB,EAAMQ,OAAOokU,WAAar2L,EAAQA,EAAM16F,cAAcA,cAActwC,cAAc,IAAM2mE,MAC9FnnC,EAAOxR,EAAImR,WAAa1iC,EAAMQ,OAAOq9c,sBASzC,GARe,UAAX/8c,EAAEsK,MAA+B,cAAXtK,EAAEsK,MAA4C,UAApBpL,EAAMo8c,WAA6C,cAApBp8c,EAAMo8c,YACrFh8c,aAAa4yT,GAEbA,EAAa3yT,YAAW,WACpB0iC,EAAkB,cAAXjiC,EAAEsK,KAAuBmmB,EAAImR,WAAaK,EACjD/iC,EAAM89F,OAAOwuC,EAAMiC,EAAOA,EAAM16F,cAAchR,UAAY7iC,EAAMQ,OAAOo9c,oBAAqB76a,EAAMjiC,KACnG,MAEHd,EAAMmsS,eAAeppQ,OAASA,EAAlC,CAGA/iC,EAAMQ,OAAOq4C,gBAAkB74C,EAAMw/F,UAAY,aACjD,IAAIs+W,IAAgB/6a,EAAO/iC,EAAMQ,OAAOq8c,gBAAgBc,kBAAoBpsb,EAAImR,YAC5Eq7a,EAAcxvU,EAAMhrI,cAAc,IAAM2mE,MAAWj2C,MAAMwP,UAAU7mC,MAAM,KAAKE,OAAS,EACvFyxI,EAAMhrI,cAAc,IAAM2mE,MAAWj2C,MAAMwP,UAAU7mC,MAAM,KAAK,GAAG0vB,OAAS,OAC5EiF,EAAImR,WAAa1iC,EAAMQ,OAAOw9c,uBAC9Btob,aAAkB64G,EAAMhrI,cAAc,YAAa,CAC/CkgC,UAAW,aAAeq6a,EAAa,MAAQC,IAEnDrob,aAAkB42G,EAAK/oI,cAAc,YAAa,CAC9CkgC,UAAW,aAAeq6a,EAAf,aAGnB,IAAIG,EAAaj+c,EAAMQ,OAAOq8c,gBAAgBc,kBAAoB56a,IAC5D/iC,EAAMQ,OAAOq8c,gBAAgBc,kBAAoB56a,GAAUA,EAAOupG,EAAK51G,aACxE12B,EAAMQ,OAAOq8c,gBAAgBc,kBAAoBpvU,EAAMhrI,cAAc,YAAYmzB,aAClFwnb,EAAc12c,KAAKu3D,KAAK/+D,EAAMQ,OAAOq8c,gBAAgBc,kBAAoB39c,EAAMQ,OAAOq9c,uBACtF79c,EAAMQ,OAAOw9c,qBACjB,GAAIh+c,EAAMQ,OAAOq8c,gBAAgBc,kBAAoB56a,GAAek7a,EAAa,GAAKC,EAAc,CAE5Fn7a,EAAOupG,EAAKztE,aACR7+D,EAAMQ,OAAOq8c,gBAAgB95a,KAAO,IACpC/iC,EAAMQ,OAAOq8c,gBAAgB95a,KAAOupG,EAAKztE,aAE7C7+D,EAAMQ,OAAOq8c,gBAAgB95a,KAAO/iC,EAAMQ,OAAOq8c,gBAAgB95a,KAAO,GACxEk7a,EAAaj+c,EAAMQ,OAAOq8c,gBAAgBc,kBAAoB56a,EACzDk7a,EAAaj+c,EAAMQ,OAAOq8c,gBAAgB95a,KAASk7a,EAAaj+c,EAAMQ,OAAOq8c,gBAAgB95a,MAGlGk7a,GAAcj+c,EAAMQ,OAAOq8c,gBAAgBc,kBAE/CG,IAAgB/6a,GAAQ/iC,EAAMQ,OAAOq8c,gBAAgBc,kBAAoBM,GAAc1vU,EAAM16F,cAAcA,cAActwC,cAAc,IAAM2mE,MAAuBxnC,YACpK,IAAIy7a,EAAUn+c,EAAMQ,OAAO8sc,aAAaxpB,YAAc9jb,EAAMg3E,aAAa4uI,YACrEu4P,EAASn+c,EAAMQ,OAAOw9c,uBACtBh+c,EAAMQ,OAAOq9c,sBAAwBM,EAASn+c,EAAMQ,OAAOw9c,qBAC3DG,EAASn+c,EAAMQ,OAAOw9c,sBAEtBF,EAAaK,GAAUL,EAAa/6a,IACpC+6a,EAAa/6a,EACbk7a,EAAa,GAEjBvob,aAAkB64G,EAAMhrI,cAAc,YAAa,CAC/CkgC,UAAW,aAAeq6a,EAAa,MAAQC,IAEnDrob,aAAkB42G,EAAK/oI,cAAc,YAAa,CAC9CkgC,UAAW,aAAeq6a,EAAf,YAEf99c,EAAMQ,OAAOq8c,gBAAgBc,kBAAoB39c,EAAMQ,OAAOq8c,gBAAgBc,kBAAoBM,EAEtGj+c,EAAMmsS,eAAeppQ,KAAOA,EAC5B/iC,EAAMm8c,qBAAqBp5a,KAAOA,EAClC/iC,EAAMo8c,UAAY,GAClB9vU,EAAK5pG,WAAanR,EAAImR,cAG9Bw5a,EAAc//c,UAAUogd,iBAAmB,SAAUjuU,EAAOC,GACxD,IACIykL,EADAhzT,EAAQC,KAEZ,OAAO,SAAUa,GACb,IAAImiC,EAAMsrG,EAAM16F,cAAchR,UAAY7iC,EAAMQ,OAAOo9c,oBACvD,GAAe,UAAX98c,EAAEsK,MAA+B,cAAXtK,EAAEsK,MAA4C,UAApBpL,EAAMo8c,WAA6C,cAApBp8c,EAAMo8c,WAAwC,UAAXt7c,EAAEsK,MAA+B,YAAXtK,EAAEsK,KAAoB,CAC9J,IAAIsqH,EAAQ11H,EAAMQ,OAAOokU,WAAar2L,EAAQA,EAAM16F,cAAcA,cAActwC,cAAc,IAAM2mE,MACpG9pE,aAAa4yT,GACbA,EAAa3yT,YAAW,WACpBL,EAAM89F,OAAO,KAAMywC,EAAOA,EAAM16F,cAAchR,UAAY7iC,EAAMQ,OAAOo9c,oBAAqBloV,EAAMhzF,WAAa1iC,EAAMQ,OAAOq9c,sBAAuB/8c,KACpJ,KAGP,GAAId,EAAMmsS,eAAelpQ,MAAQA,EAAjC,CAGAjjC,EAAMQ,OAAOq4C,gBAAkB74C,EAAMw/F,UAAY,WACjD,IAAIu+W,IAAiB96a,EAAMjjC,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkB9uU,EAAM16F,cAAchR,WAC1Fi7a,EAAavvU,EAAMhrI,cAAc,IAAM2mE,MAAWj2C,MAAMwP,UAAU7mC,MAAM,KAAK,GAAG0vB,OAChFyxb,EAAc/9c,EAAMQ,OAAO49c,WAAWh9T,eACtC28T,EAAc/9c,EAAMQ,OAAO49c,WAAWh9T,cAEtC7S,EAAM16F,cAAchR,UAAY7iC,EAAMQ,OAAOw9c,uBAC7Ctob,aAAkB44G,EAAM/qI,cAAc,YAAa,CAC/CkgC,UAAW,iBAA2Bs6a,EAAc,QAExDrob,aAAkB64G,EAAMhrI,cAAc,YAAa,CAC/CkgC,UAAWq6a,EAAa,IAAMC,EAAc,SAGpD,IAAIE,EAAaj+c,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkBp6a,IAC1DjjC,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkBp6a,GAASA,EAAMqrG,EAAMz6F,cAAcutG,cACnFphJ,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkB/uU,EAAM/qI,cAAc,YAAYssC,cAChFqua,EAAc12c,KAAKu3D,KAAK/+D,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkBr9c,EAAMQ,OAAOo9c,qBACpF59c,EAAMQ,OAAOw9c,qBACjB,GAAIh+c,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkBp6a,GAAcg7a,EAAa,GAAKC,EAAc,CAEzFj7a,EAAMqrG,EAAMz6F,cAAcutG,cACtBphJ,EAAMQ,OAAOq8c,gBAAgB55a,IAAM,IACnCjjC,EAAMQ,OAAOq8c,gBAAgB55a,IAAMqrG,EAAMz6F,cAAcutG,cAE3DphJ,EAAMQ,OAAOq8c,gBAAgB55a,IAAMjjC,EAAMQ,OAAOq8c,gBAAgB55a,IAAM,GACtEg7a,EAAaj+c,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkBp6a,EACvDg7a,EAAaj+c,EAAMQ,OAAOq8c,gBAAgB55a,IAAQg7a,EAAaj+c,EAAMQ,OAAOq8c,gBAAgB55a,KAGjGg7a,GAAcj+c,EAAMQ,OAAOq8c,gBAAgBQ,gBAE/C,IAAIhkH,EAAer5V,EAAMQ,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAwB3mE,cAAc,YAClGw6c,IAAiB96a,GAAOjjC,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkBY,GAAc1vU,EAAM16F,cAAchR,WACzG,IAAIgwT,EAAW7yV,EAAMQ,OAAO8sc,aAAa9uY,UAAYx+D,EAAMg3E,aAAa6uI,SAAW,GAC7EwzI,EAAaj4M,aACfyxM,EAAU7yV,EAAMQ,OAAOw9c,uBACvBh+c,EAAMQ,OAAOo9c,oBAAsB/qH,EAAU7yV,EAAMQ,OAAOw9c,qBAC1DnrH,EAAU7yV,EAAMQ,OAAOw9c,sBAEvBD,EAAclrH,GAAWkrH,EAAc96a,IACvC86a,EAAc96a,EACdg7a,EAAa,GAEbF,EAAc/9c,EAAMQ,OAAO49c,WAAWh9T,eACtC28T,EAAc/9c,EAAMQ,OAAO49c,WAAWh9T,cAE1C1rH,aAAkB44G,EAAM/qI,cAAc,YAAa,CAC/CkgC,UAAW,iBAA2Bs6a,EAAc,QAExDrob,aAAkB64G,EAAMhrI,cAAc,YAAa,CAC/CkgC,UAAWq6a,EAAa,IAAMC,EAAc,QAEhD/9c,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkBr9c,EAAMQ,OAAOq8c,gBAAgBQ,gBAAkBY,EAElGj+c,EAAMmsS,eAAelpQ,IAAMA,EAC3BjjC,EAAMm8c,qBAAqBl5a,IAAMA,EACjCjjC,EAAMo8c,UAAY,MAO1BF,EAAc//c,UAAUkid,qBAAuB,WACvCp+c,KAAKO,OAAO44B,aAGhBn5B,KAAKO,OAAOsZ,IAAIu1C,IAAcpvD,KAAKk0C,aAOvC+na,EAAc//c,UAAUif,QAAU,WAC9Bnb,KAAKo+c,wBAEFnC,EA5bwB,G,6BCM/BoC,GAAyB,WACzB,SAASA,EAAQ99c,EAAQw/D,GACrB//D,KAAKs+c,gBAAkB,GACvBt+c,KAAK+zE,MAAQ,CAAC,MAAO,OAAQ,SAAU,SAAU,SAAU,QAAS,SAChE,gBAAiB,YAAa,cAAe,YAAa,cAC9D/zE,KAAKO,OAASA,EACdP,KAAK8qc,OAASvqc,EAAOS,QAAQyY,GAC7BzZ,KAAK+/D,eAAiBA,EACtB//D,KAAKupB,mBA6eT,OA3eA80b,EAAQnid,UAAUwzB,OAAS,WACvB1vB,KAAK+zJ,KAAO/zJ,KAAK+/D,eAAeE,WAAW,gBAK3C,IAJA,IAEI0kQ,EAAa3kU,KAAKO,OAAO2sE,iBACzBqxY,EAAiB,CAAC,OAAQ,SAAU,SAAU,UACzCvgd,EAAK,EAAGwgd,EAJF,CAAC,MAAO,OAAQ,SAAU,SAAU,SAAU,QACzD,YAAa,cAAe,aAAc,aAGNxgd,EAAKwgd,EAAW3hd,OAAQmB,IAAM,CAClE,IAAIw9C,EAAOgja,EAAWxgd,GAClBygd,EAAUjja,EAAK/jC,cACfinc,EAAaD,EAAQ,GAAGjnc,cAAgBinc,EAAQp9c,MAAM,GAC1DrB,KAAKs+c,gBAAgB9ia,GAAQ,CACzB/hC,GAAIzZ,KAAK8qc,OAAS,IAAM2T,EAASE,WAAY,KAAOF,EACpDlsc,KAAMvS,KAAK+zJ,KAAKl9G,YAAY6na,GAAaE,YAAa5+c,KAAK+zJ,KAAKl9G,YAAY6na,IAE5E/5I,IACA3kU,KAAKs+c,gBAAgB9ia,GAAMjpC,KAAO,GAClCvS,KAAKs+c,gBAAgB9ia,GAAM0hB,SAA4C,IAAlCqhZ,EAAepgd,QAAQq9C,IAGpEx7C,KAAKs+c,gBAAgBvzK,OAAS,CAC1BtxR,GAAIzZ,KAAK8qc,OAAS,UAClB8T,YAAa5+c,KAAK+zJ,KAAKl9G,YAAY,UAAW2tW,MAAO,QAAStuT,SAAU,mBACxE/qF,KAAM,SAEVnL,KAAKs+c,gBAAgBO,cAAgB,CACjCplc,GAAIzZ,KAAK8qc,OAAL9qc,iBAAqCk2F,SAAU,4BAA6B4oX,WAAY,sBAC5Fvsc,KAAMoyT,EAAa,GAAK3kU,KAAK+zJ,KAAKl9G,YAAY,iBAC9C+na,YAAa5+c,KAAK+zJ,KAAKl9G,YAAY,iBAAkB2tW,MAAO,SAE3B,aAAjCxkZ,KAAKO,OAAO2jG,mBACRlkG,KAAKO,OAAOynG,gBAAsD,cAApChoG,KAAKO,OAAO0wE,eAAe9lE,OACzDnL,KAAKs+c,gBAAgBS,iBAAmB,CACpCtlc,GAAIzZ,KAAK8qc,OAAL9qc,oBAAwCk2F,SAAU,gCACtD4oX,WAAY,mBAAyBF,YAAa5+c,KAAK+zJ,KAAKl9G,YAAY,kBAG5E72C,KAAKO,OAAOunG,eACZ9nG,KAAKs+c,gBAAgBU,eAAiB,CAClCvlc,GAAIzZ,KAAK8qc,OAAL9qc,kBAAsCk2F,SAAU,gCACpD4oX,WAAY,iBAAuBF,YAAa5+c,KAAK+zJ,KAAKl9G,YAAY,WAI9E72C,KAAKO,OAAO2sE,kBAAoBltE,KAAKO,OAAOiqI,QAAQrsI,QAAQ,WAAa,IACzE6B,KAAKs+c,gBAAgBW,eAAiB,CAClCxlc,GAAIzZ,KAAK8qc,OAAL9qc,kBAAsCk2F,SAAU,gCACpD4oX,WAAY,iBAAuB5hZ,SAAS,IAGpDl9D,KAAKk/c,iBAQTb,EAAQnid,UAAUwiT,WAAa,WAC3B,OAAO1+S,KAAKwqI,QAAQxpI,SAQxBq9c,EAAQnid,UAAUif,QAAU,WACpBnb,KAAKwqI,UAAYxqI,KAAKwqI,QAAQrxG,cACzBn5B,KAAKwqI,QAAQxpI,SAOdhB,KAAKwqI,QAAQ3wH,IAAI,gCAAiC7Z,KAAKm/c,wBACvDn/c,KAAKwqI,QAAQrvH,YAPbnb,KAAKO,OAAO4uI,gBAAgB,CAAC,oBACzBnvI,KAAKO,OAAOgiG,SACZviG,KAAKO,OAAOqiG,mBAOpB5iG,KAAKilJ,cACLjlJ,KAAK2pB,sBACLF,aAAOzpB,KAAKgB,WAGpBq9c,EAAQnid,UAAUkjd,iBAAmB,WACjCp/c,KAAKq/c,cAAgBjob,aAAO,IAAMp3B,KAAK8qc,OAAS,aAAc9qc,KAAKgB,SACnEhB,KAAKglJ,YACLhlJ,KAAKs/c,sBACDt/c,KAAKO,OAAOirJ,gBACZxrJ,KAAKu/c,mBAGblB,EAAQnid,UAAUsjd,eAAiB,SAAUC,GACrCz/c,KAAKgB,QAAQsC,cAAc,wBACtBtD,KAAKO,OAAO2sE,kBAAoBuyY,EACjCz/c,KAAKgB,QAAQsC,cAAc,qBAAqBlB,UAAY,oFACzCpC,KAAK8qc,OAAS,4FACX9qc,KAAK+zJ,KAAKl9G,YAAY,UAAY,oCACtC72C,KAAK8qc,OAAS,4GACH9qc,KAAK+zJ,KAAKl9G,YAAY,UAAY,4DAI/D72C,KAAKgB,QAAQsC,cAAc,qBAAqBlB,UAAY,aAAepC,KAAK8qc,OAC1E,4GACuB9qc,KAAK+zJ,KAAKl9G,YAAY,UAAY,6DAIvE72C,KAAKo/c,oBAETf,EAAQnid,UAAUgjd,cAAgB,WAC9B,IAAInrY,EAAQ/zE,KAAKg4J,WACjBh4J,KAAKwqI,QAAU,IAAIk1U,KAAK,CACpB3rY,MAAOA,EACP4rY,QAAS3/c,KAAK4/c,oBAAoBzjd,KAAK6D,MACvCgnC,kBAAmBhnC,KAAKO,OAAOymC,kBAC/BL,UAAW3mC,KAAKO,OAAOomC,UACvB+kB,QAAS1rD,KAAKw/c,eAAerjd,KAAK6D,QAEtCA,KAAKwqI,QAAQjoC,QAAUviG,KAAKO,OAAOgiG,QACnCviG,KAAKwqI,QAAQlxH,GAAG,gCAAiCtZ,KAAKm/c,uBAAwBn/c,MAE9EA,KAAKwqI,QAAwB,kBAAI,EACjC,IAAIq1U,EAAU,mBAUd,GARI7/c,KAAKO,OAAOs/c,KACZ7/c,KAAKwqI,QAAoB,mBAAI,GAC7BxqI,KAAKwqI,QAAQq1U,GAAW7/c,KAAKO,OAAOs/c,IAExC7/c,KAAKgB,QAAUhB,KAAKO,OAAOY,cAAc,MAAO,CAAEsY,GAAIzZ,KAAK8qc,OAAS,kBAChE9qc,KAAKO,OAAO2sE,kBACZltE,KAAKgB,QAAQg1B,UAAUjN,IAAI,iBAE3B/oB,KAAKO,OAAO4mS,gBACZ,GAAK7nS,eAAuD,kBAAjCU,KAAKO,OAAO4mS,gBAIlC,CACD,IAAI7kM,EAAkBtiG,KAAKO,OAAOgiG,SAAoD,kBAAjCviG,KAAKO,OAAO4mS,gBAC7D24K,EAAK9/c,KAAKO,OAAOS,QAAQyY,GAAK,kBAC9B6oF,GACAtmC,aAAiBh8D,KAAKO,OAAO4mS,gBAA7BnrO,CAA8C,GAAIh8D,KAAKO,OAAQ,kBAAmBu/c,EAAI,KAAM,KAAM9/c,KAAKgB,SACvGhB,KAAKO,OAAOqiG,mBAGZzkC,YAAen+D,KAAKgB,QAASg7D,aAAiBh8D,KAAKO,OAAO4mS,gBAA7BnrO,CAA8C,GAAIh8D,KAAKO,OAAQ,yBAXhGP,KAAKwqI,QAAQzjG,SAAS/mC,KAAKO,OAAO4mS,iBAClCnnS,KAAKgB,QAAUhB,KAAKwqI,QAAQxpI,aAehChB,KAAKwqI,QAAQzjG,SAAS/mC,KAAKgB,SAE/BhB,KAAKO,OAAOS,QAAQ61B,aAAa72B,KAAKgB,QAAShB,KAAKO,OAAOopI,qBAE/D00U,EAAQnid,UAAUijd,uBAAyB,SAAUl/c,GAC7CD,KAAKO,OAAOgiG,SAAWtiG,IACvBD,KAAKO,OAAOitH,QAAUxtH,KAAKO,OAAOitH,QAAQ17F,OAAO7xB,GACjDD,KAAKO,OAAOqiG,oBAGpBy7W,EAAQnid,UAAU6jd,uBAAyB,SAAUC,GAC7CA,GACAhgd,KAAKw/c,gBAAe,GACpBx/c,KAAKigd,8BAA8BtxY,IAAwBuxY,UAC3Dlgd,KAAKq/c,cAAgBjob,aAAO,IAAMp3B,KAAK8qc,OAAS,aAAc9qc,KAAKgB,SACvD28D,aAAa39D,KAAKq/c,cAAe,mBACvCrpb,UAAUjN,IAAI,sBAChB/oB,KAAKO,OAAOirJ,gBACZxrJ,KAAKu/c,kBAETv/c,KAAKmgd,aAAar7T,YAAY,CAAE7nH,OAAQj9B,KAAKq/c,gBAC7Cr/c,KAAKq/c,cAAc/8c,SAGnBtC,KAAKigd,8BAA8BtxY,IAAwBu8E,YAGnEmzT,EAAQnid,UAAU+jd,8BAAgC,SAAUn6a,GACxD,GAAIA,IAAW6oC,IAAwBu8E,UAAW,CAK9C,IAJA,IAAIzxI,EAAKzZ,KAAKO,OAAOS,QAAQyY,GACzBs6D,EAAQ,CAACt6D,EAAK,QAASA,EAAK,WAC5BirS,EAAkB1kT,KAAKO,OAAOgtG,wBAC9BgxW,EAAiB,CAAC9kc,EAAK,kBAAmBA,EAAK,UAAWA,EAAK,WAC1Dzb,EAAK,EAAGuF,EAAKvD,KAAKwqI,QAAQz2D,MAAO/1E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIw9C,EAAOj4C,EAAGvF,IACVoid,EAAapgd,KAAKwqI,QAAQxpI,QAAQsC,cAAc,IAAMk4C,EAAK/hC,OAEvDs6D,EAAM51E,QAAQq9C,EAAK/hC,KAAO,EACtBirS,EAAgB7nT,OAChBujd,EAAWxsa,cAAc5d,UAAUvM,OAAO,YAG1C22b,EAAWxsa,cAAc5d,UAAUjN,IAAI,aAIF,IAArCw1b,EAAepgd,QAAQq9C,EAAK/hC,IAC5B2mc,EAAWxsa,cAAc5d,UAAUvM,OAAO,YAG1C22b,EAAWxsa,cAAc5d,UAAUjN,IAAI,aAKvD,GAAI/oB,KAAKq/c,cACO1hZ,aAAa39D,KAAKq/c,cAAe,mBACvCrpb,UAAUvM,OAAO,sBACvBzpB,KAAKw/c,gBAAe,GACpBx/c,KAAKilJ,cACLjlJ,KAAKq/c,mBAAgBrjd,EAG7B,GAAI8pC,IAAW6oC,IAAwBuxY,SACnC,CAAInsY,EAAQ,CAAC/zE,KAAKO,OAAOS,QAAQyY,GAAK,kBAAmBzZ,KAAKO,OAAOS,QAAQyY,GAAK,WAClF,IADA,IACSsb,EAAK,EAAGI,EAAKn1B,KAAKwqI,QAAQz2D,MAAOh/C,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAC5D,IACIqrb,EADA5ka,EAAOrmB,EAAGJ,IACVqrb,EAAapgd,KAAKwqI,QAAQxpI,QAAQsC,cAAc,IAAMk4C,EAAK/hC,OAEvDs6D,EAAM51E,QAAQq9C,EAAK/hC,KAAO,EAC1B2mc,EAAWxsa,cAAc5d,UAAUvM,OAAO,YAG1C22b,EAAWxsa,cAAc5d,UAAUjN,IAAI,gBAO3Ds1b,EAAQnid,UAAUojd,oBAAsB,SAAUr/c,GAC9C,IAAIg6D,EAAOj6D,KAAKO,OACZ4mT,EAAc,GACdujJ,EAAe,GACfriW,EAAOpuC,EAAKyF,aACZ2gZ,EAAUpmZ,EAAK0zE,iBAAmB1zE,EAAK0zE,gBAAgB9wI,OACvDwrG,EAAKirM,YACL6T,EAAYvlT,KAAK5B,KAAK8qc,OAAS,QAG/BJ,EAAa9oc,KAAK5B,KAAK8qc,OAAS,QAEhCziW,EAAK9oC,cAAgB8gZ,EACrBl5J,EAAYvlT,KAAK5B,KAAK8qc,OAAS,SAG/BJ,EAAa9oc,KAAK5B,KAAK8qc,OAAS,SAEhCziW,EAAKkrM,eAAiB8sK,EACtBl5J,EAAYvlT,KAAK5B,KAAK8qc,OAAS,WAG/BJ,EAAa9oc,KAAK5B,KAAK8qc,OAAS,WAEL,UAA3B7wY,EAAKyF,aAAaviD,KACd88C,EAAKj5D,QAAQiuB,uBAAuB,eAAepyB,SAAWwrG,EAAKirM,aAAejrM,EAAK9oC,eACvF4nP,EAAYvlT,KAAK5B,KAAK8qc,OAAS,WAC/B3jJ,EAAYvlT,KAAK5B,KAAK8qc,OAAS,aAG/BJ,EAAa9oc,KAAK5B,KAAK8qc,OAAS,WAChCJ,EAAa9oc,KAAK5B,KAAK8qc,OAAS,YAIhC7wY,EAAKooC,SAAWgG,EAAKirM,aAAejrM,EAAK9oC,eACzC4nP,EAAc,CAACnnT,KAAK8qc,OAAS,UAAW9qc,KAAK8qc,OAAS,WACtDJ,EAAe,CAAC1qc,KAAK8qc,OAAS,OAAQ9qc,KAAK8qc,OAAS,QAAS9qc,KAAK8qc,OAAS,aAG3EJ,EAAa9oc,KAAK5B,KAAK8qc,OAAS,WAChCJ,EAAa9oc,KAAK5B,KAAK8qc,OAAS,YAGxC9qc,KAAKmnT,YAAYA,GAAa,GAC9BnnT,KAAKmnT,YAAYujJ,GAAc,IAEnC2T,EAAQnid,UAAU87J,SAAW,WACzB,IAAIjkF,EAAQ,GACR02D,EAAezqI,KAAKO,OAAOiqI,SAAW,GAC1C,GAAqC,kBAAzBxqI,KAAKO,OAAOiqI,QACpB,MAAO,GAE0B,aAAjCxqI,KAAKO,OAAO2jG,mBACRlkG,KAAKO,OAAOynG,gBAAsD,cAApChoG,KAAKO,OAAO0wE,eAAe9lE,MACzD4oE,EAAMnyE,KAAK5B,KAAKsgd,cAAc,qBAE9Btgd,KAAKO,OAAOunG,cACZ/zB,EAAMnyE,KAAK5B,KAAKsgd,cAAc,oBAGtC,IAAK,IAAItid,EAAK,EAAGuid,EAAiB91U,EAAczsI,EAAKuid,EAAe1jd,OAAQmB,IAAM,CAC9E,IAAIw9C,EAAO+ka,EAAevid,GAC1B,cAAew9C,GACX,IAAK,SACDu4B,EAAMnyE,KAAK5B,KAAKsgd,cAActgd,KAAK+zE,MAAMv4B,KACzC,MACJ,IAAK,SACDu4B,EAAMnyE,KAAK5B,KAAKsgd,cAAc9ka,IAC9B,MACJ,QACIu4B,EAAMnyE,KAAK5B,KAAK4nC,QAAQ4T,KAMpC,OAHIx7C,KAAKO,OAAO2sE,kBAAoBltE,KAAKO,OAAOiqI,QAAQrsI,QAAQ,WAAa,GACzE41E,EAAMnyE,KAAK5B,KAAKsgd,cAAc,mBAE3BvsY,GAEXsqY,EAAQnid,UAAU0rC,QAAU,SAAU44a,GAClC,IAAIhla,EAAOx7C,KAAKs+c,gBAAgBkC,EAAWjuc,MAC3C,OAAOipC,EAAOl9C,YAAOk9C,EAAMA,EAAMgla,GAAcA,GAEnDnC,EAAQnid,UAAUokd,cAAgB,SAAUtzG,GACxC,OAAOhtW,KAAKs+c,gBAAgBtxG,IAAa,CAAEz6V,KAAMy6V,EAAUvzV,GAAIzZ,KAAK8qc,OAAS,IAAM99F,IAUvFqxG,EAAQnid,UAAUirT,YAAc,SAAUpzO,EAAO6iB,GAC7C,IAAK,IAAI54F,EAAK,EAAGknO,EAAUnxJ,EAAO/1E,EAAKknO,EAAQroO,OAAQmB,IAAM,CACzD,IAAIw9C,EAAO0pL,EAAQlnO,GACfgD,EAAUo2B,aAAO,IAAMokB,EAAMx7C,KAAKgB,SAClCA,GACAhB,KAAKwqI,QAAQ28K,YAAYnmT,EAAQ4yC,cAAegjD,KAI5DynX,EAAQnid,UAAU0jd,oBAAsB,SAAU3/c,GAC9C,IAAIF,EAAQC,KACRi6D,EAAOj6D,KAAKO,OACZkgd,EAAMzgd,KAAK8qc,OACfxsc,YAAO2B,EAAM,CAAE8iB,QAAQ,IACvB,IAAIsrQ,EAAUpuR,EACVs4C,EAAgBt4C,EAAKs4C,cACzB0hB,EAAKlwC,QAAQhD,KAAqBsnQ,GAAS,SAAUqyL,GAEjD,GADAA,EAAYnoa,cAAgBmoa,EAAYnoa,cAAgBmoa,EAAYnoa,cAAgBA,GAC/Emoa,EAAY39b,OACb,QAAS3lB,YAAkBsjd,EAAYlla,OAASkla,EAAYlla,KAAK/hC,IAC7D,KAAKgnc,EAAM,SACPxmZ,EAAKl5D,QACL,MACJ,KAAK0/c,EAAM,QACPxmZ,EAAK6sP,YACL,MACJ,KAAK25J,EAAM,UACPxmZ,EAAKw2F,UACL,MACJ,KAAKgwT,EAAM,UACPxmZ,EAAKnB,YACL,MACJ,KAAK2nZ,EAAM,OACPxmZ,EAAK0jC,YACL,MACJ,KAAK8iX,EAAM,UACPxmZ,EAAK2jC,eACL,MACJ,KAAK6iX,EAAM,UACHC,EAAYnoa,cAActb,OAAOxjB,KAAOgnc,EAAM,iBAAmB1gd,EAAMs/c,cACvEt/c,EAAMk/F,UAEDhlC,EAAKiT,kBAAqBntE,EAAMs/c,gBACjCqB,EAAYnoa,cAActb,OAAOjH,UAAUzD,SAAS,qBACjDmub,EAAYnoa,cAActb,OAAOxjB,KAAOgnc,EAAM,iBACrD1gd,EAAMggd,wBAAuB,GAEjC,MACJ,KAAKU,EAAM,iBAEP,IAAIE,EAAa5gd,EAAMQ,OAAOS,QAAQsC,cAAc,YAChDgT,EAAIqqc,EAAWt+a,wBAAwBW,IACvCzhB,EAAIo/b,EAAWt+a,wBAAwBS,KACvC89a,EAAYF,EAAYnoa,cAActb,OAE1C3mB,EAAIqqc,EAAWt+a,wBAAwBW,IAAM29a,EAAWnxa,UACxDyqB,EAAKwuP,oBAAoBlnS,EAAGjL,EAAGsqc,GAC/B,MACJ,KAAKH,EAAM,oBACPxmZ,EAAK6wE,6BACL,MACJ,KAAK21U,EAAM,kBACPxmZ,EAAK4wE,2BACL,MACJ,KAAK41U,EAAM,kBACP1gd,EAAMggd,wBAAuB,QAMjD1B,EAAQnid,UAAUszD,aAAe,SAAU3uD,GACtB,SAAbA,EAAEyjC,QACFtkC,KAAKs/c,uBAGbjB,EAAQnid,UAAU29B,kBAAoB,SAAUh5B,GACxCA,EAAEyjC,SAAWtkC,KAAK66B,iBAAoB76B,KAAKO,OAAOiqI,UAGlDxqI,KAAKgB,SACLyoB,aAAOzpB,KAAKgB,SAEhBhB,KAAK0vB,WAET2ub,EAAQnid,UAAU2kd,aAAe,SAAUhgd,GACrB,KAAdA,EAAE8zC,SACF30C,KAAKi/F,UAGbo/W,EAAQnid,UAAU+iG,OAAS,WACvBj/F,KAAKO,OAAO0+F,OAAOj/F,KAAKq/c,cAAc7id,QAE1C6hd,EAAQnid,UAAUqjd,gBAAkB,WAC5Bv/c,KAAKq/c,gBACLr/c,KAAKq/c,cAAc7id,MAAQwD,KAAKO,OAAOirJ,eAAexuJ,MAG9Dqhd,EAAQnid,UAAU8oJ,UAAY,WACtBhlJ,KAAKq/c,gBACLr/c,KAAKmgd,aAAe,IAAIv7T,KAAU5kJ,KAAKq/c,eACvCz2b,IAAaG,IAAI/oB,KAAKq/c,cAAe,QAASr/c,KAAK6gd,aAAc7gd,MACjEA,KAAKmgd,aAAan7T,cAG1Bq5T,EAAQnid,UAAU+oJ,YAAc,WACxBjlJ,KAAKq/c,gBACLz2b,IAAaa,OAAOzpB,KAAKq/c,cAAe,QAASr/c,KAAK6gd,cACtD7gd,KAAKmgd,aAAal7T,gBAG1Bo5T,EAAQnid,UAAU4kd,gBAAkB,WAC5B9gd,KAAKgB,SACLyoB,aAAOzpB,KAAKgB,SAEhBhB,KAAK0vB,UAET2ub,EAAQnid,UAAUqtB,iBAAmB,WAC7BvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKqhJ,YAAc,CAAC,CAAEv6H,MAAOC,KAA4BvN,QAASxZ,KAAK8gd,iBACnE,CAAEh6b,MAAOC,KAAmBvN,QAASxZ,KAAK0vB,QAC1C,CAAE5I,MAAOC,KAAiBvN,QAASxZ,KAAK65B,mBACxC,CAAE/S,MAAOC,KAA4BvN,QAASxZ,KAAKu/c,gBAAgBpjd,KAAK6D,OACxE,CAAE8mB,MAAOC,KAAqBvN,QAASxZ,KAAKs/c,qBAC5C,CAAEx4b,MAAOC,KAAuBvN,QAASxZ,KAAKs/c,qBAC9C,CAAEx4b,MAAOC,KAA4BvN,QAASxZ,KAAKwvD,cACnD,CAAE1oC,MAAOC,KAAkBvN,QAASxZ,KAAKs/c,qBACzC,CAAEx4b,MAAOC,IAAcvN,QAASxZ,KAAK+gd,wBACrC,CAAEj6b,MAAOC,KAAsBvN,QAASxZ,KAAK8gd,kBACjD/yY,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,EAAMrhJ,MAC5DA,KAAKghd,oBAAsBhhd,KAAKmsD,YAAYhwD,KAAK6D,MACjDA,KAAKihd,sBAAwBjhd,KAAKmsD,YAAYhwD,KAAK6D,MACnDA,KAAKO,OAAOgpB,iBAAiBxC,KAAoB/mB,KAAKghd,qBACtDhhd,KAAKO,OAAOgpB,iBAAiBxC,KAAsB/mB,KAAKihd,yBAE5D5C,EAAQnid,UAAUytB,oBAAsB,WAChC3pB,KAAKO,OAAO44B,cAGhB40C,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,GACtDrhJ,KAAKO,OAAOopB,oBAAoB5C,KAAoB/mB,KAAKghd,qBACzDhhd,KAAKO,OAAOopB,oBAAoB5C,KAAsB/mB,KAAKihd,yBAE/D5C,EAAQnid,UAAU6kd,uBAAyB,SAAUlgd,GACjD,IAAIo8B,EAASp8B,EAAEo8B,OACXijb,EAAWjjb,EAAOjH,UAAUzD,SAAS,kBAAoB0K,EAAOjH,UAAUzD,SAAS,oBACnFvyB,KAAKO,OAAO2sE,mBAAqBgzY,GAAYlgd,KAAKq/c,gBAC9C1hZ,aAAa98D,EAAEo8B,OAAQ,kBAC3Bj9B,KAAK+/c,wBAAuB,IAGpC1B,EAAQnid,UAAUiwD,YAAc,WACxBnsD,KAAKO,OAAO2sE,kBACZltE,KAAKigd,8BAA8BtxY,IAAwBu8E,YAQnEmzT,EAAQnid,UAAU2+B,cAAgB,WAC9B,MAAO,WAEJwjb,EArfkB,G,kBCAzBQ,GAA+B,WAQ/B,SAASA,EAAct+c,EAAQw/D,GAC3B//D,KAAKkhd,WAAa,GAClBlhd,KAAKmhd,WAAa,GAClBnhd,KAAKohd,eAAiB,GACtBphd,KAAKqhd,iBAAmB,GACxBrhd,KAAKshd,WAAY,EACjBthd,KAAKuhd,gBAAiB,EACtBvhd,KAAKwhd,mBAAqB,GAC1Bxhd,KAAK0rS,oBAAsB,GAC3B1rS,KAAKyhd,eAAgB,EACrBzhd,KAAK0hd,mBAAoB,EACzB1hd,KAAK2hd,eAAiB,aACtB3hd,KAAK4hd,eAAiB,GACtB5hd,KAAKO,OAASA,EACdP,KAAK+/D,eAAiBA,EACtB//D,KAAKupB,mBACLvpB,KAAKulJ,SAAW1hD,aAAe7jG,KAAKO,OAAOY,eAAe,EAAM,CAAE+/D,SAAS,EAAMuU,MAAO,MACxFz1E,KAAKwlJ,UAAY3hD,aAAe7jG,KAAKO,OAAOY,eAAe,EAAM,CAAE+/D,SAAS,EAAOuU,MAAO,MAC1Fz1E,KAAKulJ,SAAS1uH,aAAa72B,KAAKO,OAAOY,cAAc,QAAS,CAC1DktB,UAAW,+BAAgC0E,MAAO,CAAE5nB,KAAM,cAC1DnL,KAAKulJ,SAASzhD,YAClB9jG,KAAKwlJ,UAAU3uH,aAAa72B,KAAKO,OAAOY,cAAc,QAAS,CAC3DktB,UAAW,+BAAgC0E,MAAO,CAAE,KAAQ,cAC5D/yB,KAAKwlJ,UAAU1hD,YACnB9jG,KAAKwlJ,UAAUliJ,cAAc,YAAY0yB,UAAUjN,IAAI,aACnD/oB,KAAKO,OAAOomC,WACZ9Q,YAAS,CAAC71B,KAAKulJ,SAAUvlJ,KAAKwlJ,WAAY,CAAC,UAmpBnD,OAhpBAq5T,EAAc3id,UAAUif,QAAU,WAC9B,IAAI4yR,EAAc/tS,KAAKO,OAAOS,QACzB+sS,IAAiBA,EAAYzqS,cAAc,IAAM+4D,MAAyB0xO,EAAYzqS,cAAc,IAAM+4D,QAG/Gr8D,KAAK2pB,sBACL3pB,KAAKkiI,eACA9kI,YAAkB4C,KAAK6hd,UAAW7hd,KAAK6hd,OAAO7gd,SAAYhB,KAAK6hd,OAAO1ob,aACvEn5B,KAAK6hd,OAAO1mc,YAGpB0jc,EAAc3id,UAAU4ld,UAAY,WAC5B9hd,KAAKO,OAAOomC,UACZ9Q,YAAS,GAAGx0B,MAAMC,KAAKtB,KAAK02G,SAASznF,uBAAuB,uBAAwB,CAAC,UAGrFmH,aAAY,GAAG/0B,MAAMC,KAAKtB,KAAK02G,SAASznF,uBAAuB,uBAAwB,CAAC,WAOhG4vb,EAAc3id,UAAUqtB,iBAAmB,WACnCvpB,KAAKO,OAAO44B,cAGhBvQ,IAAaG,IAAIvoB,SAAU,QAASR,KAAK0lJ,aAAc1lJ,MACvDA,KAAKO,OAAO+Y,GAAGyN,KAAiB/mB,KAAK+hd,qBAAsB/hd,MAC3DA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAK0vB,OAAQ1vB,MAC/CA,KAAKO,OAAOgpB,iBAAiBxC,KAAkB/mB,KAAKgid,WAAW7ld,KAAK6D,OACpEA,KAAKO,OAAO+Y,GAAGyN,KAAgB/mB,KAAKmb,QAASnb,MAC7CA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAK8hd,UAAW9hd,MAClDA,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAK6gd,aAAc7gd,MACrDA,KAAKO,OAAO+Y,GAAGyN,KAAqB/mB,KAAKiid,eAAgBjid,QAM7D6+c,EAAc3id,UAAUytB,oBAAsB,WACtC3pB,KAAKO,OAAO44B,cAGhBvQ,IAAaa,OAAOjpB,SAAU,QAASR,KAAK0lJ,cAC5C1lJ,KAAKO,OAAOsZ,IAAIkN,KAAmB/mB,KAAK0vB,QACxC1vB,KAAKO,OAAOsZ,IAAIkN,KAAgB/mB,KAAKmb,SACrCnb,KAAKO,OAAOsZ,IAAIkN,KAAiB/mB,KAAK+hd,sBACtC/hd,KAAKO,OAAOsZ,IAAIkN,KAAmB/mB,KAAK8hd,WACxC9hd,KAAKO,OAAO+Y,GAAGyN,KAAmB/mB,KAAK6gd,aAAc7gd,MACrDA,KAAKO,OAAOsZ,IAAIkN,KAAqB/mB,KAAKiid,kBAE9CpD,EAAc3id,UAAUwzB,OAAS,WAC7B1vB,KAAK+zJ,KAAO/zJ,KAAK+/D,eAAeE,WAAW,gBAC3CjgE,KAAKkid,mBACLlid,KAAK08S,mBAAqB18S,KAAK+/D,eAAeE,WAAW,oBAE7D4+Y,EAAc3id,UAAUwpJ,aAAe,SAAU7kJ,GAC7C,IAAI89J,EAAgB99J,EAAEo8B,OACtB,IAAKj9B,KAAK0hd,kBAAmB,CACzB,GAAKtkd,YAAkBw6B,YAAQ+mI,EAAe,WAAcvhK,YAAkBw6B,YAAQ+mI,EAAe,kBAe5FvhK,YAAkB4C,KAAK6hd,UAAW7hd,KAAK6hd,OAAO3kZ,SAAYyhG,EAAc3oI,UAAUzD,SAAS,qBAC5FvyB,KAAK6hd,OAAOtmV,OACZv7H,KAAKmid,eACLnid,KAAKoid,uBAELpid,KAAKshd,WAAY,QAnBrB,GAAI3iT,EAAc3oI,UAAUzD,SAAS,wBAA0BosI,EAAc3oI,UAAUzD,SAAS,iBAC5F,GAAKvyB,KAAKuhd,gBAAkBvhd,KAAK6hd,OAAO3kZ,UAAal9D,KAAKshd,UAEtD,YADAthd,KAAKshd,WAAY,QAIhB3iT,EAAc3oI,UAAUzD,SAAS,iBACtCosI,EAAc/qH,cAActwC,cAAc,eAAe9G,MAAQ,GACjEwD,KAAKqid,oBAAoB,IACzBrid,KAAKsid,mBACLtid,KAAKuid,0BAYTvid,KAAKO,OAAOusG,gBAAkB9sG,KAAKO,OAAOqkE,aAC1C5kE,KAAKwid,UAAY3hd,EAAEo8B,QAGvBj9B,KAAK0hd,mBAAqB7gd,EAAEo8B,OAAOjH,UAAUzD,SAAS,gBACtDvyB,KAAKoid,uBAETpid,KAAK8hd,aAETjD,EAAc3id,UAAU8ld,WAAa,YAC5B5kd,YAAkB4C,KAAK6hd,SAAW7hd,KAAK6hd,OAAO3kZ,UAC/Cl9D,KAAK6hd,OAAOtmV,OAEZv7H,KAAKshd,WAAY,IAYzBzC,EAAc3id,UAAUysT,oBAAsB,SAAUpnS,EAAGjL,EAAG2mB,GAI1D,GAHKj9B,KAAK6hd,OAAO3kZ,UAAYl9D,KAAKO,OAAOusG,iBAAkB9sG,KAAKO,OAAOqkE,WACnE5kE,KAAKyid,mBAEJzid,KAAK6hd,OAAO3kZ,QAwCbl9D,KAAKgid,aACLhid,KAAK0id,gBACL1id,KAAKmid,eACLnid,KAAKoid,2BA3CiB,CAEtB,GADWpid,KAAK2id,+BACP5/b,OACL,OAEAka,IACAj9B,KAAKwid,UAAYvlb,GAErBj9B,KAAKoid,uBACLpid,KAAK6hd,OAAOvob,WACZt5B,KAAK6hd,OAAO7gd,QAAQgzB,MAAMm0H,UAAY,QACtC,IAAI1nF,EAAiBzgE,KAAK6hd,OAAO7gd,QAAQgzB,MAAMygB,QAC/Cz0C,KAAK6hd,OAAO7gd,QAAQgzB,MAAMygB,QAAU,QACpC,IAAIksB,EAASC,aAA+BhpC,YAAQqF,EAAQ,mBAAoBj9B,KAAK6hd,OAAO7gd,SAC5FhB,KAAK6hd,OAAO7gd,QAAQgzB,MAAMygB,QAAUgsB,EACpCzgE,KAAK6hd,OAAO7gd,QAAQgzB,MAAMgP,IAAM29B,EAAO39B,IAAMpL,YAAQqF,EAAQ,iBAAiBoF,wBAAwBsN,OAAS,KAE1GvyC,YAAkBw6B,YAAQqF,EAAQ,gBACnCj9B,KAAK6hd,OAAOnya,MAAQ,KAEpBrpB,IAAQa,UACRlnB,KAAK6hd,OAAO5kb,OAASz8B,SAASgiC,KAC9BxiC,KAAK6hd,OAAO9za,SAAW,CAAEuuC,EAAG,SAAUC,EAAG,UACzCv8E,KAAK6hd,OAAOlnV,kBACZ36H,KAAK6hd,OAAO9/c,KAAO/B,KAAK4id,SAASzmd,KAAK6D,OAGlCA,KAAKO,OAAOomC,UACZ3mC,KAAK6hd,OAAO7gd,QAAQgzB,MAAM8O,KAAO7F,EAAOwS,WAAa,KAGrDzvC,KAAK6hd,OAAO7gd,QAAQgzB,MAAM8O,KAAS69B,EAAO79B,KAfnC,IAesDlL,YAAQqF,EAAQ,iBAAiB2hC,YAAe,EAAI,KAGzH5+D,KAAKsid,mBACLtid,KAAK6hd,OAAOrkV,OACZx9H,KAAKO,OAAOyZ,OAAO+M,KAA4B,CAAE87b,OAAQ7id,KAAK6hd,SASlE7hd,KAAK8hd,aASTjD,EAAc3id,UAAUkxT,kBAAoB,SAAU9wO,EAAGC,IACrDv8E,KAAK0hd,mBAAoB,EACrB1hd,KAAK6hd,OAAO3kZ,SACZl9D,KAAKgid,aAGEhid,KAAK2id,+BACP5/b,SAGJ/iB,KAAKyhd,cAKNzhd,KAAKoid,wBAJLpid,KAAK6hd,OAAOn3Z,QAAU1qD,KAAK8id,oBAC3B9id,KAAK+id,yBAKT/id,KAAK6hd,OAAOvob,WACZt5B,KAAK6hd,OAAO9za,SAAW,CAAEuuC,EAAG,SAAUC,EAAG,UACrCn/E,YAAkBk/E,IAClBt8E,KAAK6hd,OAAO9za,SAAW,CAAEuuC,EAAG,SAAUC,EAAG,UACzCv8E,KAAK6hd,OAAOlnV,oBAGZ36H,KAAK6hd,OAAO7gd,QAAQgzB,MAAMgP,IAAM,GAChChjC,KAAK6hd,OAAO7gd,QAAQgzB,MAAM8O,KAAO,GACjC9iC,KAAK6hd,OAAO7gd,QAAQgzB,MAAMgP,IAAMu5C,EAAI,KACpCv8E,KAAK6hd,OAAO7gd,QAAQgzB,MAAM8O,KAAOw5C,EAAI,MAEzCt8E,KAAK6hd,OAAO/zO,WAAa9tO,KAAKgjd,iBAAiB7md,KAAK6D,MACpDA,KAAK6hd,OAAOrkV,OACZx9H,KAAKyhd,eAAgB,EACrBzhd,KAAK6hd,OAAOoB,YAAcjjd,KAAKkjd,kBAAkB/md,KAAK6D,QAE1D6+c,EAAc3id,UAAU6ld,qBAAuB,SAAUlhd,GACjDA,EAAEyjC,SAAWtkC,KAAK66B,iBAAmBh6B,EAAE2zI,QACvCx0I,KAAK0vB,UAGbmvb,EAAc3id,UAAU2kd,aAAe,SAAUhgd,GAC5B,WAAbA,EAAEilC,QACF9lC,KAAKgid,cAGbnD,EAAc3id,UAAU8md,iBAAmB,WACvC,IAAI3D,EAAgBr/c,KAAK6hd,OAAOn3Z,QAAQpnD,cAAc,oBACtDslB,IAAaG,IAAIs2b,EAAe,QAASr/c,KAAKmjd,0BAA2Bnjd,OAE7E6+c,EAAc3id,UAAUgnd,kBAAoB,WACxC,IAAI7D,EAAgBr/c,KAAK6hd,OAAOn3Z,QAAQpnD,cAAc,oBACtDslB,IAAaa,OAAO41b,EAAe,QAASr/c,KAAKmjd,4BAErDtE,EAAc3id,UAAUwoE,WAAa,WAGjC,OAFc1kE,KAAKO,OAAOmkE,aAAaxzC,QAAO,SAAUuoC,GAAU,MAAwB,aAAhBA,EAAOtuD,OAC3C,IAA/BsuD,EAAO2uC,qBAAkD,aAAhB3uC,EAAOtuD,WAAwCnP,IAAjBy9D,EAAOD,UAGzFqlZ,EAAc3id,UAAUgmd,iBAAmB,WACvClid,KAAKojd,OAASpjd,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,eAAgB5U,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,WACzGzZ,KAAKojd,OAAOxtb,aAAa,aAAc51B,KAAK+zJ,KAAKl9G,YAAY,4BAC7D72C,KAAKO,OAAOS,QAAQgB,YAAYhC,KAAKojd,QACrCpjd,KAAK6hd,OAAS,IAAIn6T,KAAO,CACrB3iI,OAAQ/kB,KAAK+zJ,KAAKl9G,YAAY,iBAC9BuzL,eAAe,EACfC,eAAe,EACfttN,OAAQ/c,KAAKO,OAAOwc,OACpBmgD,SAAS,EACTv2B,UAAW3mC,KAAKO,OAAOomC,UACvB1J,OAAQz8B,SAASuuB,eAAe/uB,KAAKO,OAAOS,QAAQyY,IACpDk+E,QAAS,CAAC,CACFlnC,MAAOzwD,KAAKqjd,mBAAmBlnd,KAAK6D,MACpC8nJ,YAAa,CACTp9F,QAAS1qD,KAAK+zJ,KAAKl9G,YAAY,YAAa8qF,WAAW,EACvDzrC,SAAU,oBAGlB,CACIzlC,MAAOzwD,KAAKsjd,cAAcnnd,KAAK6D,MAC/B8nJ,YAAa,CAAE5xD,SAAU,yBAA0BxrC,QAAS1qD,KAAK+zJ,KAAKl9G,YAAY,mBAE1F6T,QAAS1qD,KAAK8id,oBACdpza,MAAO,IACPwmD,SAAU,OACVyxD,kBAAmB,CAAEC,OAAQ,UAGjC5nJ,KAAK6hd,OAAuB,kBAAI,EAChC7hd,KAAK6hd,OAAO96a,SAAS/mC,KAAKojd,QAC1Bpjd,KAAKk0C,cAET2qa,EAAc3id,UAAU4md,kBAAoB,WACxC9id,KAAKovO,QAAUpvO,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,oBAC7D,IAAIk1b,EAAYvjd,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,sCAC1Dm1b,EAAcxjd,KAAKO,OAAOY,cAAc,QAAS,CACjDktB,UAAW,0BACX0E,MAAO,CAAEoiE,YAAan1F,KAAK+zJ,KAAKl9G,YAAY,aAE5C4sa,EAAezjd,KAAKO,OAAOY,cAAc,OAAQ,CACjDktB,UAAW,kDACX0E,MAAO,CAAEq0H,MAAOpnJ,KAAK+zJ,KAAKl9G,YAAY,aAEtC6sa,EAAS1jd,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,oBAC3DruB,KAAK02G,SAAW12G,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,oBAC9Dk1b,EAAUvhd,YAAYwhd,GACtBD,EAAUvhd,YAAYyhd,GACtBzjd,KAAKmgd,aAAe,IAAIv7T,KAAU4+T,GAClC,IAAIG,EAAkB3jd,KAAK4jd,oBAAoB5jd,KAAKO,OAAOmkE,cAK3D,OAJA1kE,KAAK02G,SAAS10G,YAAY2hd,GAC1BD,EAAO1hd,YAAYhC,KAAK02G,UACxB12G,KAAKovO,QAAQptO,YAAYuhd,GACzBvjd,KAAKovO,QAAQptO,YAAY0hd,GAClB1jd,KAAKovO,SAEhByvO,EAAc3id,UAAUmnd,mBAAqB,SAAUpjd,GACnDD,KAAKwhd,mBAAqB,GAC1Bxhd,KAAK0rS,oBAAsB,GAC3B1rS,KAAKohd,eAAkBphd,KAAKohd,eAAevkd,OAAS,EAAKmD,KAAKohd,eAAiBphd,KAAKqhd,iBACpFrhd,KAAK6jd,mBAAmB7jd,KAAKohd,gBAC7B,IAAI0C,EAAkB9jd,KAAK42G,UAAUtzG,cAAc,eAC/CtD,KAAK42G,UAAUp1G,iBAAiB,gCAAgC3E,OAC/DO,YAAkB6C,IACf6jd,EAAkB9jd,KAAKO,OAAOmkE,aAAa7nE,SACvCmD,KAAKmhd,WAAWtkd,QAChBmD,KAAK+jd,kBAAkB/jd,KAAKmhd,YAAY,GAExCnhd,KAAKkhd,WAAWrkd,QAChBmD,KAAK+jd,kBAAkB/jd,KAAKkhd,YAAY,GAE5Clhd,KAAK08S,mBAAmB93K,WAAW5kI,KAAKwhd,mBAAoBxhd,KAAK0rS,qBACjE1rS,KAAKmid,eACLnid,KAAKO,OAAOyZ,OAAO+M,KAAuB,CAAEud,OAAQ,SACD,IAA/CtkC,KAAKO,OAAOqnE,wBAAwB/qE,QACjBmD,KAAKO,OAAOS,QAAQsC,cAAc,eAAeA,cAAc,MACrEsyB,aAAa,UAAW51B,KAAKO,OAAOkoE,oBAAoB5rE,OAAOsQ,cAK5F0xc,EAAc3id,UAAU+ld,eAAiB,SAAUphd,GACzB,gBAAlBA,EAAEu5F,aACFp6F,KAAKgkd,oBAIbnF,EAAc3id,UAAU8nd,iBAAmB,WACvChkd,KAAKkhd,WAAa,GAClBlhd,KAAKmhd,WAAa,GAClBnhd,KAAKgid,cAETnD,EAAc3id,UAAU2nd,mBAAqB,SAAUzC,GACnD,IAAK,IAAI5mc,EAAQ,EAAGA,EAAQ4mc,EAAevkd,OAAQ2d,IAAS,CACxD,IAAIgvb,EAAS4X,EAAe5mc,GACxBypc,EAAajkd,KAAKO,OAAO6jI,eAAeolU,GAC5Cxpc,KAAK0rS,oBAAoB9pS,KAAKqid,KAGtCpF,EAAc3id,UAAU6nd,kBAAoB,SAAUG,EAAcp8Y,GAChE,IAAK,IAAIttD,EAAQ,EAAGA,EAAQ0pc,EAAarnd,OAAQ2d,IAAS,CACtD,IAAIgvb,EAAS0a,EAAa1pc,GACtBypc,EAAajkd,KAAKO,OAAO6jI,eAAeolU,GACpB,aAApBya,EAAW94c,OACX84c,EAAW/mZ,QAAU4K,GAEzB9nE,KAAKwhd,mBAAmB5/c,KAAKqid,KAGrCpF,EAAc3id,UAAUimd,aAAe,WACnCnid,KAAKgkd,mBACLhkd,KAAK0id,iBAET7D,EAAc3id,UAAUond,cAAgB,WACpCtjd,KAAKmid,eACLnid,KAAKO,OAAOyZ,OAAO+M,KAAoC,CAAE87b,OAAQ7id,KAAK6hd,UAE1EhD,EAAc3id,UAAUiod,iBAAmB,SAAUlyW,EAAWmyW,EAAQ7yb,QAClD,IAAdA,IAAwBA,GAAY,GACpC0gF,IACyC,IAArCjyG,KAAKmhd,WAAWhjd,QAAQimd,IACxBpkd,KAAKmhd,WAAWrnc,OAAO9Z,KAAKmhd,WAAWhjd,QAAQimd,GAAS,IAEnB,IAArCpkd,KAAKkhd,WAAW/id,QAAQimd,IACxBpkd,KAAKkhd,WAAWt/c,KAAKwid,MAIgB,IAArCpkd,KAAKkhd,WAAW/id,QAAQimd,IACxBpkd,KAAKkhd,WAAWpnc,OAAO9Z,KAAKkhd,WAAW/id,QAAQimd,GAAS,IAEnB,IAArCpkd,KAAKmhd,WAAWhjd,QAAQimd,IACxBpkd,KAAKmhd,WAAWv/c,KAAKwid,IAGzB7yb,EACK0gF,EAIDjyG,KAAKqhd,iBAAiBz/c,KAAKwid,GAH3Bpkd,KAAKohd,eAAex/c,KAAKwid,IAMiB,IAAzCpkd,KAAKohd,eAAejjd,QAAQimd,GACjCpkd,KAAKohd,eAAetnc,OAAO9Z,KAAKohd,eAAejjd,QAAQimd,GAAS,GAGhEpkd,KAAKohd,eAAex/c,KAAKwid,IAGjCvF,EAAc3id,UAAUmmd,oBAAsB,SAAUgC,GACpD,IACIC,EACAC,EAFAC,GAAc,EAGdC,EAAYzkd,KAAKojd,OAAO9/c,cAAc,qBACtCohd,EAAe1kd,KAAK42G,UAAUtzG,cAAc,aAC5CtD,KAAK42G,UAAUp1G,iBAAiB,8BAA8B3E,OAclE,GAbAmD,KAAKyhd,eAAgB,EACjBgD,IACAF,EAAWE,EAAUnhd,cAAc,UAAUw3B,cAAc,IAE7C,KAAdupb,GACArkd,KAAKsid,mBACLgC,EAAUtkd,KAAK0kE,aACf8/Y,GAAc,GAGdF,EAAU,IAAIviZ,IAAY/hE,KAAK0kE,cAAcpC,cAAa,IAAIV,MACzDM,MAAM,aAAcliE,KAAK2hd,eAAgB0C,GAAW,EAAMrkd,KAAKO,OAAOokd,sBAAsB54X,eAEjGu4X,EAAQznd,OACRmD,KAAK02G,SAASt0G,UAAY,IAC1BpC,KAAK02G,SAAS1gF,UAAUvM,OAAO,aAC/BzpB,KAAK02G,SAAS10G,YAAYhC,KAAK4jd,oBAAoBU,IAC9CE,EAKGD,GAAYG,IACZH,EAASjzW,UAAW,IALxBtxG,KAAK0id,gBACL1id,KAAKuid,6BAQR,CACD,IAAIqC,EAAY5kd,KAAKO,OAAOY,cAAc,OAAQ,CAAEktB,UAAW,kBAC/Du2b,EAAUxid,UAAYpC,KAAK+zJ,KAAKl9G,YAAY,UAC5C72C,KAAK02G,SAASt0G,UAAY,IAC1BpC,KAAK02G,SAAS10G,YAAY4id,GAC1B5kd,KAAK02G,SAAS1gF,UAAUjN,IAAI,aACxBw7b,IACAA,EAASjzW,UAAW,GAG5BtxG,KAAK2T,MAAO,EACZ3T,KAAK42M,aAETioQ,EAAc3id,UAAUg4C,WAAa,WACjCtrB,IAAaG,IAAI/oB,KAAK6hd,OAAO7gd,QAAS,QAAShB,KAAK6kd,qBAAsB7kd,MAC1E4oB,IAAaG,IAAI/oB,KAAKmgd,aAAat7T,UAAW,QAAS7kJ,KAAKmjd,0BAA2Bnjd,MACvFA,KAAKmgd,aAAan7T,aAEtB65T,EAAc3id,UAAUgmI,aAAe,WAC/BliI,KAAKO,OAAO44B,cAGZn5B,KAAK6hd,OAAO7gd,SACZ4nB,IAAaa,OAAOzpB,KAAK6hd,OAAO7gd,QAAS,QAAShB,KAAK6kd,sBAE3Dj8b,IAAaa,OAAOzpB,KAAKmgd,aAAat7T,UAAW,QAAS7kJ,KAAKmjd,2BAC/Dnjd,KAAKmgd,aAAal7T,gBAEtB45T,EAAc3id,UAAU2od,qBAAuB,SAAUhkd,GACrD,IAAIikd,EACAzhd,EAAOs6D,aAAa98D,EAAEo8B,OAAQ,sBAClC,GAAI55B,EAAM,CASN,GARgBA,EAAKC,cAAc,gBAE/BtD,KAAK+kd,iBAAiB1hd,EAAKC,cAAc,aAGzCw9D,aAAez9D,EAAKuwC,eAExBvwC,EAAKC,cAAc,iBAAiBhB,QAChCe,EAAKC,cAAc,YACnBwhd,GAAa,MAEZ,KAAIzhd,EAAKC,cAAc,cAIxB,OAHAwhd,GAAa,EAKjB9kd,KAAK+id,wBACL,IAAI3/J,EAAYzlP,aAAat6D,EAAM,YAAY8rB,aAAa,OACxDsqC,EAASz5D,KAAKO,OAAOmkE,aACzB,GAAkB,mBAAd0+O,EAAgC,CAChCpjT,KAAKohd,eAAiB,GACtBphd,KAAKqhd,iBAAmB,GACxB,IAAK,IAAIzkd,EAAI,EAAGA,EAAI68D,EAAO58D,OAAQD,IAC3B68D,EAAO78D,GAAGwrG,qBACVpoG,KAAKmkd,iBAAiBW,EAAYrrZ,EAAO78D,GAAGnB,KAAK,QAKzDuE,KAAKmkd,iBAAiBW,EAAY1hK,GAEtCpjT,KAAKuid,0BAGb1D,EAAc3id,UAAU6md,sBAAwB,WAC5C,IAAIh3b,EAAM/rB,KAAK42G,UAAU9lF,SAASj0B,OAAS,EACvCwxB,EAAY,GACZhrB,EAAOrD,KAAK42G,UAAU9lF,SAAS,GAAGxtB,cAAc,YAChDoiF,EAAW1lF,KAAK42G,UAAUp1G,iBAAiB,8BAA8B3E,OACzEyvJ,EAAMtsJ,KAAK6hd,OAAOt1T,OAAO,GAC7BD,EAAIh7C,UAAW,EACXvlF,IAAQ25D,EACRr3D,EAAY,CAAC,WAERq3D,EACLr3D,EAAY,CAAC,WAGbA,EAAY,CAAC,aACbi+H,EAAIh7C,UAAW,GAEnBg7C,EAAIhzH,WACJlD,aAAY,CAAC/yB,GAAO,CAAC,UAAW,SAAU,cAC1CwyB,YAAS,CAACxyB,GAAOgrB,IAErBwwb,EAAc3id,UAAU6od,gBAAkB,SAAU7jZ,GAEhD,IADA,IACSljE,EAAK,EAAGouJ,EADJ,GAAG/qJ,MAAMC,KAAKtB,KAAK42G,UAAU3nF,uBAAuB,YAC7BjxB,EAAKouJ,EAASvvJ,OAAQmB,IAAM,CAC5D,IAAIupJ,EAAO6E,EAASpuJ,GACpBqjE,aAAqBkmF,EAAMrmF,KAGnC29Y,EAAc3id,UAAUqmd,sBAAwB,WAE5C,IADA,IAAIn+H,EAAcpkV,KAAKO,OAAOkoE,oBACrB7rE,EAAI,EAAGA,EAAIwnV,EAAYvnV,OAAQD,IAAK,CACzC,IAAIood,EAAY5gI,EAAYxnV,GAAGnB,KACiB,IAA5CuE,KAAK4hd,eAAezjd,QAAQ6md,IAC5Bhld,KAAK4hd,eAAehgd,KAAKojd,GAGjC,IAASpod,EAAI,EAAGA,EAAIoD,KAAKmhd,WAAWtkd,OAAQD,IAAK,CAC7C,IAAI4d,EAAQxa,KAAK4hd,eAAezjd,QAAQ6B,KAAKmhd,WAAWvkd,KACzC,IAAX4d,GACAxa,KAAK4hd,eAAe9nc,OAAOU,EAAO,GAG1C,IAAIkrE,EAAsC,IAA3B1lF,KAAKkhd,WAAWrkd,OAAe,EAAImD,KAAK4hd,eAAe/kd,OAClEyvJ,EAAMtsJ,KAAKojd,OAAO9/c,cAAc,qBAAqBA,cAAc,UAAUw3B,cAAc,GAC/FwxH,EAAIh7C,UAAW,EAGf,IAFA,IAAI2zW,EAAe,GACfpuJ,EAAa,GAAGx1T,MAAMC,KAAKtB,KAAKO,OAAOS,QAAQiuB,uBAAuB,eAC1Di2b,GAAPtod,EAAI,EAAci6T,EAAWh6T,QAAQD,EAAIsod,EAAUtod,IAAK,CAC7D,IAAIoE,EAAU61T,EAAWj6T,GACrBood,EAAYrnZ,aAAa38D,EAAS,YAAYmuB,aAAa,OAC/D81b,EAAarjd,KAAKojd,GAEtB,IAAIG,EAAWnld,KAAKkhd,WAAWhwb,QAAO,SAAUuoC,GAAU,OAAyC,IAAlCwrZ,EAAa9md,QAAQs7D,MACrE,IAAbisB,GAAsC,IAApBy/X,EAAStod,SAC3ByvJ,EAAIh7C,UAAW,GAEnBg7C,EAAIhzH,YAERulb,EAAc3id,UAAU0nd,oBAAsB,SAAUwB,GACpDpld,KAAK42G,UAAY52G,KAAKO,OAAOY,cAAc,KAAM,CAAEktB,UAAW,oBAC9D,IAAIs+H,EAAiB3sJ,KAAK+zJ,KAAKl9G,YAAY,aACvCwua,EAASrld,KAAKO,OAAOY,cAAc,KAAM,CAAEktB,UAAW,iCACtDkD,EAAYvxB,KAAK6jG,eAAe8oD,GAAgB,EAAO,kBACvDy4T,EAAMvod,SACN00B,EAAUjuB,cAAc,uBAAuBwzB,kBAAkBd,UAAUjN,IAAI,eAC/EwI,EAAUjuB,cAAc,YAAY0yB,UAAUjN,IAAI,eAClD/oB,KAAKktJ,WAAW37H,EAAUjuB,cAAc,aAAa,GACrD+hd,EAAOrjd,YAAYuvB,GACnBvxB,KAAK42G,UAAU50G,YAAYqjd,IAE/B,IAAK,IAAIzod,EAAI,EAAGA,EAAIwod,EAAMvod,OAAQD,IAAK,CACnC,IAAIm9D,EAAUqrZ,EAAMxod,GACpBoD,KAAKsld,eAAevrZ,GAExB,OAAO/5D,KAAK42G,WAEhBioW,EAAc3id,UAAUkmd,qBAAuB,WAC3Cpid,KAAK6hd,OAAO7gd,QAAQsC,cAAc,iBAAiB9G,MAAQ,GAC3DwD,KAAKqid,oBAAoB,IAGzB,IAFA,IAAIviG,EAAa9/W,KAAKO,OAClBgld,EAAuBvld,KAAK6hd,OAAO7gd,QAAQQ,iBAAiB,iCACvD5E,EAAI,EAAG4od,EAAUD,EAAqB1od,OAAQD,EAAI4od,EAAS5od,IAAK,CACrE,IAAIoE,EAAUukd,EAAqB3od,GAC/Bood,OAAY,EAEZA,EADAhld,KAAKO,OAAOqkE,WAAa5kE,KAAKO,OAAOusG,eACzBnvC,aAAa39D,KAAK6hd,OAAO7gd,QAAQQ,iBAAiB,iCAAiC5E,GAAI,YAAYuyB,aAAa,OAGhHwuC,aAAa38D,EAAS,YAAYmuB,aAAa,OAE/D,IAAIsqC,EAASqmT,EAAW17O,eAAe4gV,GACnCS,EAAU,GAAGpkd,MAAMC,KAAKN,EAAQ4yC,cAAc3kB,uBAAuB,cACrEwqC,EAAOyD,UAAYuoZ,EAAQ5od,QAC3BmE,EAAQkgE,SAAU,EAClBlhE,KAAKktJ,WAAWlsJ,EAAQ4yC,cAActwC,cAAc,aAAa,KAGjEtC,EAAQkgE,SAAU,EAClBlhE,KAAKktJ,WAAWlsJ,EAAQ4yC,cAActwC,cAAc,aAAa,MAI7Eu7c,EAAc3id,UAAUgxJ,WAAa,SAAUlsJ,EAAS8mE,GAChDA,EACA9xC,YAAUh1B,EAAS,CAAC,WAAY,CAAC,cAGjCg1B,YAAUh1B,EAAS,CAAC,aAAc,CAAC,aAG3C69c,EAAc3id,UAAU2nG,eAAiB,SAAUpuB,EAAOvU,EAASzlE,GAC/D,IAAIiqd,EAAOxkZ,EAAUlhE,KAAKulJ,SAAStjJ,WAAU,GAAQjC,KAAKwlJ,UAAUvjJ,WAAU,GAE9E,OADAyjd,EAAKpid,cAAc,YAAYlB,UAAYqzE,EACpCrU,YAAmB3lE,EAAKiqd,EAAM,aAEzC7G,EAAc3id,UAAUopd,eAAiB,SAAU7rZ,GAC/C,IAAI4rZ,EACAM,EACAC,EACJ,GAAInsZ,EAAO2uC,oBAAqB,CAC5Bi9W,EAASrld,KAAKO,OAAOY,cAAc,KAAM,CAAEktB,UAAW,gBAAiB0F,OAAQ,kBAAmBta,GAAI,UAAYggD,EAAOh+D,MACzHkqd,GAAwD,IAAzC3ld,KAAKmhd,WAAWhjd,QAAQs7D,EAAOh+D,KAC9Cmqd,GAAwD,IAAzC5ld,KAAKkhd,WAAW/id,QAAQs7D,EAAOh+D,KAC9C,IAAIoqd,EAAiB7ld,KAAK6jG,eAAepqC,EAAOsD,WAAatD,EAAOyD,UAAYyoZ,GAAiBC,EAAcnsZ,EAAOh+D,KACtH4pd,EAAOrjd,YAAY6jd,GACnB7ld,KAAK42G,UAAU50G,YAAYqjd,GAE3Brld,KAAKyhd,eACLzhd,KAAK+id,yBAGblE,EAAc3id,UAAUind,0BAA4B,SAAUtid,GAC1Db,KAAK0id,gBACL1id,KAAK8ld,YAAcjld,EAAEo8B,OAAOzgC,MAC5BwD,KAAK42M,YACL52M,KAAK+ld,WAAWlld,IAEpBg+c,EAAc3id,UAAU6pd,WAAa,SAAUlld,GAE3C,IAAI04G,EAAQv5G,KACRuC,EAAYg3G,EAAM5lG,MAAsB,KAAd9S,EAAE8zC,QAAuB,EAAN,IACjD30C,KAAKsuE,MAAQxsE,OAAOU,aAAY,WAAc+2G,EAAM8oW,oBAAoB9oW,EAAMusW,eAAiBvjd,IAEnGs8c,EAAc3id,UAAU06M,UAAY,WAChC90M,OAAOY,cAAc1C,KAAKsuE,QAE9BuwY,EAAc3id,UAAUwmd,cAAgB,WACpC1id,KAAKojd,OAAO9/c,cAAc,yBAAyB0yB,UAAUjN,IAAI,gBAErE81b,EAAc3id,UAAUomd,iBAAmB,WACvCtid,KAAKojd,OAAO9/c,cAAc,yBAAyB0yB,UAAUvM,OAAO,gBAExEo1b,EAAc3id,UAAU0md,SAAW,WAC3Bv8b,IAAQa,WACRlnB,KAAK6hd,OAAO7gd,QAAQsC,cAAc,mBAAmB0yB,UAAUvM,OAAO,iBACtEzpB,KAAK6hd,OAAO7gd,QAAQQ,iBAAiB,eAAe,GAAGc,UAI/Du8c,EAAc3id,UAAU2+B,cAAgB,WACpC,MAAO,iBAEXgkb,EAAc3id,UAAUumd,iBAAmB,WAIvC,IAHA,IAAIuD,EAAS,GAAG3kd,MAAMC,KAAKd,SAASyuB,uBAAuB,YAAYiC,QAAO,SAAU+0b,GACpF,OAAOA,EAAOjwb,UAAUzD,SAAS,mBAE5B31B,EAAI,EAAGspd,EAASF,EAAOnpd,OAAQD,EAAIspd,EAAQtpd,KAC5Copd,EAAOppd,GAAGo5B,UAAUzD,SAAS,aAAevyB,KAAKO,OAAOS,QAAQyY,GAAK,WAAausc,EAAOppd,GAAG6c,KAC5Fusc,EAAOppd,GAAGk+B,cAAc,GAAGygG,QAIvCsjV,EAAc3id,UAAUymd,6BAA+B,WACnD,IAAIp3T,EAAQ,CACRnxD,YAAa,0BAA2Bp5F,QAAShB,KAAKO,OAAOS,QAC7D+4D,QAAS/5D,KAAK0kE,aAAc3hD,QAAQ,EACpC4+b,eAAgB3hd,KAAKO,OAAOokd,sBAAsBviZ,UAItD,OAFApiE,KAAKO,OAAOwpB,QAAQhD,IAAgCwkI,GACpDvrJ,KAAK2hd,eAAiBp2T,EAAMo2T,eACrBp2T,GAEJszT,EArrBwB,GCH/BsH,GAAkC,WAMlC,SAASA,EAAiB5ld,GACtBP,KAAKO,OAASA,EA0WlB,OAxWA4ld,EAAiBjqd,UAAUkqd,OAAS,SAAUtwb,EAAU71B,GAEpD,IAAIurD,EADJxrD,KAAKqiG,QAAS,EAEd,IAAIgkX,EAAS95Y,YAAgBvsE,KAAKO,QAC9BwpV,EAAUn9Q,YAAoB5sE,KAAKO,QACnC+jE,EAAetkE,KAAKO,OAAO+jE,eAC3BgiZ,EAAkBhiZ,GAAgBtkE,KAAKO,OAAO6lE,4BAA8BnmE,EAAK02V,SAQrF,GANInrS,EADAxrD,KAAKO,OAAOisE,YAA0D,QAA5CxsE,KAAKO,OAAOm/D,aAAa+M,eAC3C65Y,EAAkBtmd,KAAKO,OAAOmsE,wBAA0B1sE,KAAKO,OAAOsnI,iBAAiBvkI,cAAc+4D,KAGnGiqZ,EAAkBtmd,KAAKO,OAAOosE,yBAA2B3sE,KAAKO,OAAOy4I,kBAAkB11I,cAAc+4D,KAEjHp8D,EAAK2qD,IAAM5qD,KAAKO,OAAOY,cAAc,KAAM,CAAEktB,UAAW,qBACpDm9B,EAAMloD,cAAc,eAAgB,CACpC,IAAI8lE,EAAW5d,EAAMloD,cAAc,eAEnC,GADA8lE,EAAS3oE,WAAWy2B,YAAYkyC,GAC5B9E,IAAiBgiZ,EAAiB,CAClC,IAAIr1J,EAAYjxT,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KAAyB/4D,cAAc+4D,KAEpG,GADC40P,EAAUn6R,kBAAmBr2B,WAAWy2B,YAAY+5R,EAAUn6R,mBAC3D92B,KAAKO,OAAO2pE,kBAAoB7N,IAAoB,CACpD,IAAIkqZ,EAAYvmd,KAAKO,OAAO8mE,aAAa/jE,cAAc,2BAA2BA,cAAc+4D,KAC/FkqZ,EAAUzvb,kBAAmBr2B,WAAWy2B,YAAYqvb,EAAUzvb,qBAY3E,GARgD,QAA5C92B,KAAKO,OAAOm/D,aAAa+M,eACzBjhB,EAAM30B,aAAa52B,EAAK2qD,IAAKY,EAAMs4C,YAGnCt4C,EAAMxpD,YAAY/B,EAAK2qD,KAE3B3qD,EAAK2qD,IAAI5oD,YAAYhC,KAAKwmd,eAAe1wb,GAAU,OAAO95B,EAAWiE,GAAM,IAC3ED,KAAKO,OAAOm8I,WAAW+pU,aAAaxmd,EAAK2qD,IAAK3qD,GAC1CqkE,IAAiBgiZ,EAAiB,CAClC,IAAI7iZ,EAAOzjE,KAAK0md,kBAAkBzmd,EAAK2qD,IAAK3qD,GAS5C,GARgD,QAA5CD,KAAKO,OAAOm/D,aAAa+M,eACzB45Y,EAAOxvb,aAAa4sC,EAAM4iZ,EAAOviX,YAGjCuiX,EAAOrkd,YAAYyhE,GAEvBxjE,EAAK2qD,IAAItnD,cAAc,iBAAiBsyB,aAAa,UAAW51B,KAAKO,OAAOklT,0BAA4B,IACxGhiP,EAAK7tC,aAAa,UAAW,IAAM51B,KAAKO,OAAOkoE,oBAAoB5rE,OAASmD,KAAKO,OAAOklT,4BACpFskC,EAAS,CACT,IAAI48H,EAAQ3md,KAAK4md,sBAAsB3md,EAAK2qD,IAAK3qD,GACD,QAA5CD,KAAKO,OAAOm/D,aAAa+M,eACzBs9Q,EAAQlzT,aAAa8vb,EAAO58H,EAAQjmP,YAGpCimP,EAAQ/nV,YAAY2kd,GAExB,IAAI3tY,EAAUh5E,KAAKO,OAAOklT,0BAA4BzlT,KAAKO,OAAOmqE,6BAClEzqE,EAAK2qD,IAAItnD,cAAc,iBAAiBsyB,aAAa,UAAWojD,EAAU,IAC1E2tY,EAAMrjd,cAAc,iBAAiBsyB,aAAa,UAAW,GAAK51B,KAAKO,OAAOmqE,8BAEvD,SAAvB1qE,KAAKO,OAAOovC,QACZ3vC,KAAKO,OAAOyZ,OAAO+M,KAAqB,MAIpDo/b,EAAiBjqd,UAAU0qd,sBAAwB,SAAUt1b,EAAKrxB,GAC9D,IAAI0md,EAAQr1b,EAAIrvB,WAAU,GACtBs7R,EAAOt9R,EAAK4md,gBAAkBF,EAAMrjd,cAAc,QACtD,OAAItD,KAAKO,OAAOm/D,aAAap0C,UACzBiyQ,EAAKn7R,UAAY,GACjBpC,KAAKm+D,eAAeo/N,EAAMt9R,EAAKgzN,SAAS,GACjC0zP,IAEX3md,KAAK8md,kBAAkBx1b,EAAKq1b,GAC5BA,EAAMrjd,cAAc+4D,KAAmBj6D,UAAYpC,KAAKO,OAAOopI,mBAC1DrmI,cAAc,0BAA0BA,cAAc+4D,KAAmBj6D,UACvEukd,IAEXR,EAAiBjqd,UAAUwqd,kBAAoB,SAAUp1b,EAAKrxB,GAC1D,IAAIwjE,EAAOnyC,EAAIrvB,WAAU,GACrBs7R,EAAOt9R,EAAK8md,YAActjZ,EAAKngE,cAAc,QACjD,OAAItD,KAAKO,OAAOm/D,aAAap0C,UACzBiyQ,EAAKn7R,UAAY,GACjBpC,KAAKm+D,eAAeo/N,EAAMt9R,EAAKgzN,SAAS,GACjCxvJ,IAEXzjE,KAAKsjE,cAAchyC,EAAKmyC,GACxBA,EAAKngE,cAAc+4D,KAAmBj6D,UAAYpC,KAAKO,OAAOopI,mBACzDrmI,cAAc,IAAM+4D,KAAwB/4D,cAAc+4D,KAAmBj6D,UAC3EqhE,IAEX0iZ,EAAiBjqd,UAAU8qd,iBAAmB,SAAUp8Z,EAAKkjB,GAKzD,OAJAA,EAAKA,EAAGh8C,OAAO,GAAGzwB,MAAMC,KAAKtB,KAAKind,aAAar8Z,GAAKppD,iBAAiB,kBACjExB,KAAKO,OAAO2pE,kBAAoB7N,MAChCyR,EAAKA,EAAGh8C,OAAO,GAAGzwB,MAAMC,KAAKtB,KAAKknd,kBAAkBt8Z,GAAKppD,iBAAiB,mBAEvEssE,GAEXq4Y,EAAiBjqd,UAAUgrd,kBAAoB,SAAUt8Z,GACrD,IAAI8iB,EAAMv3D,SAASy0C,EAAIz7B,aAAaktC,KAAwB,IACxDgyE,EAAQruI,KAAKO,OAAOkiT,4BACpBl2K,EAAOvsI,KAAKO,OAAO6wT,uBACnB53K,EAAQx5I,KAAKO,OAAOssE,4BACpBmkE,EAAShxI,KAAKO,OAAOusE,6BACzB,OAAIuhE,EAAM97G,SAASq4B,IAAQ2hF,EAAKh6G,SAASq4B,GAC9B5qD,KAAKO,OAAO2hT,yBAAyBx0O,GAEvCsjE,EAAOz+G,SAASq4B,IAAQ4uF,EAAMjnH,SAASq4B,GACrC5qD,KAAKO,OAAO4zI,cAAczmE,GAE9B9iB,GAEXu7Z,EAAiBjqd,UAAU+qd,aAAe,SAAUr8Z,GAChD,GAAI5qD,KAAKO,OAAO+jE,eAAgB,CAC5B,IAAIoJ,EAAMv3D,SAASy0C,EAAIz7B,aAAaktC,KAAwB,IACxDgyE,EAAQruI,KAAKO,OAAOkiT,4BACpBn0K,EAAQtuI,KAAKO,OAAOosE,yBACpB4/D,EAAOvsI,KAAKO,OAAO6wT,uBACnB/kL,EAAOrsI,KAAKO,OAAOmsE,wBACvB,GAAI2hE,EAAM97G,SAASq4B,IAAQ2hF,EAAKh6G,SAASq4B,GACrC,OAAO5qD,KAAKO,OAAOg0I,qBAAqB7mE,GAEvC,GAAI4gE,EAAM/7G,SAASq4B,IAAQyhF,EAAK95G,SAASq4B,GAC1C,OAAO5qD,KAAKO,OAAO4zI,cAAczmE,GAGzC,OAAO9iB,GAEXu7Z,EAAiBjqd,UAAU2hG,OAAS,SAAU/nE,EAAU71B,GACpDD,KAAKqiG,QAAS,EACd,IAAI8kX,EAAyBlnd,EAAKknd,uBAC9BxwH,EAAW12V,EAAK02V,SACfA,IAAa/+T,YAAQ33B,EAAK2qD,IAAK,IAAMyR,OAA4BzkC,YAAQ33B,EAAK2qD,IAAK,IAAMyR,OAC1Fp8D,EAAK2qD,IAAM5qD,KAAKind,aAAahnd,EAAK2qD,OAElChzB,YAAQ33B,EAAK2qD,IAAK,4BAA8BhzB,YAAQ33B,EAAK2qD,IAAK,6BAClE3qD,EAAK2qD,IAAM5qD,KAAKknd,kBAAkBjnd,EAAK2qD,MAE3C,IAAI07Z,EAAkBtmd,KAAKO,OAAO+jE,gBAAkBtkE,KAAKO,OAAO6lE,4BAA8BuwR,EAC1FywH,EAAY,GAAG/ld,MAAMC,KAAKrB,EAAK2qD,IAAIppD,iBAAiB,iBACxDvB,EAAK2qD,IAAIxoD,UAAY,GAChBkkd,GAAoBa,IACrBC,EAAYpnd,KAAKgnd,iBAAiB/md,EAAK2qD,IAAKw8Z,IAEhDnnd,EAAK2qD,IAAI5oD,YAAYhC,KAAKwmd,eAAe1wb,GAAU,EAAMsxb,EAAWnnd,GAAM,IAC1EA,EAAK2qD,IAAI50B,UAAUjN,IAAIszC,KACvBr8D,KAAKO,OAAOm8I,WAAW+pU,aAAaxmd,EAAK2qD,IAAK3qD,GACzCqmd,GAAoBa,GACrBnnd,KAAKqnd,kBAAkBpnd,EAAK2qD,IAAK3qD,IAGzCkmd,EAAiBjqd,UAAUmrd,kBAAoB,SAAUz8Z,EAAK3qD,GAC1D,IAKIqnd,EACA/4U,EANAzgE,EAAKljB,EAAIk5C,WACT9jG,KAAKO,OAAOklT,2BAA6BzlT,KAAKO,OAAOm/D,aAAap0C,WAClEwiD,EAAGxqE,cAAc+4D,KAAmBj6D,UAAYpC,KAAKO,OAAOopI,mBAAmBrmI,cAAc,IAAM+4D,KAC/F/4D,cAAc+4D,KAAmBj6D,WAIzC,IACIsrE,EAAMv3D,SAASy0C,EAAIz7B,aAAaktC,KAAwB,IAC5D,GAAIr8D,KAAKO,OAAO+jE,eAAgB,CACxBoJ,EAAM1tE,KAAKO,OAAOisE,YAClB+hE,EAAOvuI,KAAKO,OAAOopI,mBACnB29U,EAAO,IAAMjrZ,MAGbkyE,EAAOvuI,KAAKO,OAAO8mE,aACnBigZ,EAAO,IAAMjrZ,KAEjB,IAAIkrZ,EAAMz5Y,EAAG7rE,WAAU,GACnBuld,EAAO15Y,EAAG7rE,WAAU,GACpBs7R,EAAOt9R,EAAK8md,YAAcQ,EAAIjkd,cAAc,QAC5CtD,KAAKO,OAAOm/D,aAAap0C,UACzBtrB,KAAKynd,gBAAgBlqL,EAAMt9R,EAAKgzN,SAEpC,IAAIzgF,OAAQ,EACRy8J,OAAS,EACT1gK,EAAKjrI,cAAcgkd,GAAM/0b,SAASq4B,IAClC4nF,EAAQxyI,KAAKO,OAAOg0I,qBAAqB7mE,GACzC1tE,KAAK0nd,iBAAiBl1U,EAAO1kE,EAAIy5Y,GAC7Bvnd,KAAKO,OAAO2pE,kBAAoB7N,MAChCp8D,EAAK4md,gBAAkBW,EAAKlkd,cAAc,QAC1CtD,KAAKynd,gBAAgBxnd,EAAK4md,gBAAiB5md,EAAKgzN,SAChDg8E,EAASjvS,KAAKO,OAAO2hT,yBAAyBx0O,GAC9C1tE,KAAK2nd,sBAAsB14K,EAAQnhO,EAAI05Y,MAI3Ch1U,EAAQxyI,KAAKO,OAAO4zI,cAAczmE,GAClC1tE,KAAK0nd,iBAAiBl1U,EAAO+0U,EAAKz5Y,GAC9B9tE,KAAKO,OAAO2pE,kBAAoB7N,MAChCp8D,EAAK4md,gBAAkBW,EAAKlkd,cAAc,QAC1CtD,KAAKynd,gBAAgBxnd,EAAK4md,gBAAiB5md,EAAKgzN,SAChDg8E,EAASjvS,KAAKO,OAAO2hT,yBAAyBx0O,GAC9C1tE,KAAK2nd,sBAAsB14K,EAAQu4K,EAAM15Y,KAG7CxuE,eAAcU,KAAKO,OAAOsK,kBAC1B5K,EAAgB,YAAE+B,YAAYuld,GAC9Btnd,EAAgB,YAAE+1B,UAAUjN,IAAIszC,OAGhCm2E,EAAMxwI,YAAYuld,GAClB/0U,EAAMx8G,UAAUjN,IAAIszC,KAChBr8D,KAAKO,OAAO2pE,kBAAoB7N,MAChC4yO,EAAOjtS,YAAYwld,GACnBv4K,EAAOj5Q,UAAUjN,IAAIszC,KACrBwK,YAAoB5mE,EAAK4md,gBAAgBvjd,cAAc,mBAAoBrD,EAAKs9R,KAAKj6R,cAAc,sBAG3GujE,YAAoB5mE,EAAK8md,YAAYzjd,cAAc,mBAAoBrD,EAAKs9R,KAAKj6R,cAAc,sBAGvG6id,EAAiBjqd,UAAUurd,gBAAkB,SAAUlqL,EAAM1iR,GACrD7a,KAAKO,OAAOm/D,aAAap0C,WACzBiyQ,EAAKn7R,UAAY,GACjBpC,KAAKm+D,eAAeo/N,EAAM1iR,GAAM,KAGxCsrc,EAAiBjqd,UAAUyrd,sBAAwB,SAAU/8Z,EAAKt5B,EAAKq1b,GACnE/7Z,EAAIxoD,UAAY,GAChBpC,KAAK8md,kBAAkBx1b,EAAKq1b,GAC5BA,EAAMrjd,cAAc+4D,KAAmBj6D,UAAYpC,KAAKO,OAAOopI,mBAC1DrmI,cAAc,0BAA0BA,cAAc+4D,KAAmBj6D,UAC9EkvB,EAAIsE,aAAa,UAAW51B,KAAKO,OAAOklT,0BAA4BzlT,KAAKO,OAAOmqE,6BAA+B,IAC/Gi8Y,EAAM/wb,aAAa,UAAW51B,KAAKO,OAAOmqE,6BAA+B,KAE7Ey7Y,EAAiBjqd,UAAUwrd,iBAAmB,SAAU98Z,EAAKt5B,EAAKmyC,GAC9D7Y,EAAIxoD,UAAY,GAChBpC,KAAKsjE,cAAchyC,EAAKmyC,GACxBA,EAAKngE,cAAc+4D,KAAmBj6D,UAAYpC,KAAKO,OAAOopI,mBACzDrmI,cAAc,IAAM+4D,KAAwB/4D,cAAc+4D,KAAmBj6D,UAClFkvB,EAAIsE,aAAa,UAAW51B,KAAKO,OAAOklT,0BAA4B,IACpEhiP,EAAK7tC,aAAa,UAAW51B,KAAKO,OAAO+gT,yBAAyBthT,KAAKO,OAAO6lE,4BAA4BvpE,OAASmD,KAAKO,OAAOklT,0BAA4B,KAE/J0gK,EAAiBjqd,UAAU4qd,kBAAoB,SAAUx1b,EAAKq1b,GAC1DA,EAAMrjd,cAAc,MAAMlB,UAAY,GAGtC,IAFA,IAAIyqG,EAAO7sG,KAAKO,OAAOmkE,aACnBmF,EAAI,EACCjtE,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAAKitE,IAClC,GAAIgjC,EAAKjwG,GAAGgvE,uBAAyBvP,IAAsB,CACvD,IAAI7hD,EAAQqvD,EAAI7pE,KAAKO,OAAOkqE,yBAC5Bk8Y,EAAMrjd,cAAc,MAAMtB,YAAYsvB,EAAIhuB,cAAc,MAAM4zB,YAAY5F,EAAIhuB,cAAc,MAAMwtB,SAAStW,KAC3GqvD,MAIZs8Y,EAAiBjqd,UAAUonE,cAAgB,SAAUhyC,EAAKmyC,GACtDA,EAAKngE,cAAc,MAAMlB,UAAY,GAGrC,IAFA,IAAIyqG,EAAO7sG,KAAKO,OAAOmkE,aACnBmF,EAAI,EACCjtE,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAAKitE,IACG,YAAjCgjC,EAAKjwG,GAAGgvE,uBACRnI,EAAKngE,cAAc,MAAMtB,YAAYsvB,EAAIhuB,cAAc,MAAM4zB,YAAY5F,EAAIhuB,cAAc,MAAMwtB,SAAS+4C,KAC1GA,MAKZs8Y,EAAiBjqd,UAAUsqd,eAAiB,SAAU1wb,EAAUusE,EAAQ+kX,EAAWnnd,EAAMokE,GACrF,IAAIpK,EAAOj6D,KAAKO,OACZw6D,EAAO,EACPq4O,EAAYh2S,YAAkB68D,EAAK6yC,iBAAoB1vG,YAAkB68D,EAAK2K,WAAiB,EAAJ,EAC3F3K,EAAKguC,gBACLltC,EAAOd,EAAKe,cAAcjB,QAAQl9D,QAEtC,IAAIixE,EAAK9tE,KAAKO,OAAOY,cAAc,KAAM,CACrCktB,UAAW,0BACX0E,MAAO,CACHm1Q,SAAUjuO,EAAKqnP,yBAAyBthT,KAAKO,OAAO6lE,4BAA4BvpE,OAASo9D,EAAKwrP,0BACxFzlT,KAAKO,OAAOg7G,kBAAkBpuG,cAGxCowR,EAAOt9R,EAAKs9R,KACZv9R,KAAKO,OAAOY,cAAc,OAAQ,CAAEsY,GAAIwgD,EAAKj5D,QAAQyY,GAAK,WAAY4U,UAAW,eACrF,GAAIruB,KAAKO,OAAOm/D,aAAap0C,SAGzB,OAFAtrB,KAAKm+D,eAAeo/N,EAAMt9R,EAAKgzN,QAAS5uJ,GACxCyJ,EAAG9rE,YAAYu7R,GACRzvN,EAEX,IAAInjB,EAAQ3qD,KAAKO,OAAOY,cAAc,QAAS,CAAEktB,UAAW,wBAAyB0E,MAAO,CAAEuzG,YAAa,UAC3G37E,EAAM3oD,YAAYi4D,EAAK++E,kBAAkB11I,cAAc+4D,KAAmBp6D,WAAU,IACpF,IAAIupD,EAAQxrD,KAAKO,OAAOY,cAAck7D,KAClCoR,EAAKztE,KAAKO,OAAOY,cAAc,MAC/BvE,EAAI,EAOR,IANIw2S,GACA3lO,EAAG52C,aAAa72B,KAAKO,OAAOY,cAAc,KAAM,CAAEktB,UAAW,wBAA0Bo/C,EAAGq2B,YAE1F7pC,EAAKuJ,iBACLiK,EAAGzrE,YAAYhC,KAAKO,OAAOY,cAAc,KAAM,CAAEktB,UAAW,sBAEzDzxB,EAAIm+D,GACP0S,EAAGzrE,YAAYhC,KAAKO,OAAOY,cAAc,KAAM,CAAEktB,UAAW,kBAC5DzxB,IAEJ,IAAI4M,EAAI,EACR5M,EAAI,EAGJ,IAFA,IAAI0pd,EAAkBrsZ,EAAKqK,gBAAkBrK,EAAKmM,4BAA8BnmE,EAAK02V,SACjF9pP,EAAO5sG,EAAKknd,uBAAyBnnd,KAAKO,OAAOk8D,YAAcxC,EAAKyK,aAChE29B,GAAU74F,EAAI49c,EAAUvqd,QAAUD,EAAIiwG,EAAKhwG,QAAWD,EAAIiwG,EAAKhwG,QAAQ,CAC3E,IAAIkkE,EAAOshC,EAAS+kX,EAAU59c,GAAG2lB,aAAa,WAAa,KACvDgwC,EAAM0tC,EAAKjwG,GACf,GAAK0pd,GAAgD,YAA7BnnZ,EAAIyM,sBACpB3rE,EAAKknd,yBAA2BhoZ,EAAI6pC,UAAY7pC,EAAI8pC,mBAAqB9pC,EAAI3F,OACjF58D,QAFJ,CAKA,IAAIgrd,EAAO5nd,KAAKO,OAAOY,cAAc,KAAM,CACvCktB,UAAWguC,IAAkBtpC,MAAO,CAAEiB,MAAO,eAAiBmrC,EAAIglC,UAAYhlC,EAAIglC,UAAY,IAAK,QAAWpjC,GAAc,MAE5H5B,EAAIjC,SACJ0qZ,EAAK5ld,YAAY8zB,EAASqpC,EAAI1jE,MACO,aAAjCuE,KAAKO,OAAO2jG,mBACZhoC,aAAsB0rZ,EAAM,CAAE,YAAazoZ,EAAIpC,aACrC,IAANngE,GACAgrd,EAAK5xb,UAAUjN,IAAI,0BAGN,gBAAjBo2C,EAAI0pC,SACJ++W,EAAK5xb,UAAUjN,IAAI,eAEdo2C,EAAI6pC,UAAY7pC,EAAI8pC,mBACzBpzE,YAAS,CAAC+xb,GAAO,kBAIrBA,EAAK5xb,UAAUjN,IAAI,UAEvB0kD,EAAGzrE,YAAY4ld,GACfhrd,EAAImkE,EAAOnkE,EAAIuZ,SAAS4qD,EAAM,IAAMnkE,EAAI,EACxC4M,KAMJ,OAJAgiD,EAAMxpD,YAAYyrE,GAClB9iB,EAAM3oD,YAAYwpD,GAClB+xO,EAAKv7R,YAAY2oD,GACjBmjB,EAAG9rE,YAAYu7R,GACRzvN,GAEXq4Y,EAAiBjqd,UAAUytB,oBAAsB,aAGjDw8b,EAAiBjqd,UAAUiiE,eAAiB,SAAUo/N,EAAM1iR,EAAMwpD,GAC9D,IAAItkE,EAAQC,KACRyiG,EAAYnkG,YAAO,GAAIuc,EAAM,CAAE+jI,OAAQ5+I,KAAKqiG,OAAQh+B,SAAUA,IAAY,GAC1EwjZ,EAAiB7nd,KAAKO,OAAOS,QAAQyY,GAAK,uBAC1CzZ,KAAKO,OAAOgiG,SAA0D,kBAAvCviG,KAAKO,OAAOm/D,aAAap0C,UACxDtrB,KAAKO,OAAOkoG,iBAAZzoG,CAA8ByiG,EAAWziG,KAAKO,OAAQ,uBAAwBsnd,EAAgB,KAAM,KAAMtqL,GAC1Gv9R,KAAKO,OAAOqiG,mBAGZzkC,YAAeo/N,EAAMv9R,KAAKO,OAAOkoG,iBAAZzoG,CAA8ByiG,EAAWziG,KAAKO,OAAQ,uBAAwBsnd,IAWvGt5b,aAAqBs5b,EAAgB,WAAY7nd,KAAKO,OAAOm/D,cAAc,GAT5D,WAEX,IADA,IAAImtC,EAAO9sG,EAAMQ,OAAOmkE,aACf9nE,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IACzBiwG,EAAKjwG,GAAG0vE,kBACRvsE,EAAMQ,OAAOm8I,WAAWy3M,QAAQjoR,MAAM2gC,EAAKjwG,GAAG48D,OAC1CqzC,EAAKjwG,GAAG0vE,qBAMrB65Y,EAjX2B,GCFlC2B,GAAiC,WAMjC,SAASA,EAAgBvnd,GACrBP,KAAKO,OAASA,EAiClB,OA/BAund,EAAgB5rd,UAAU2hG,OAAS,SAAU/nE,EAAU71B,GACnD,GAAID,KAAKO,OAAOgiG,SAAWtiG,EAAK8nd,cAAgB9nd,EAAK8nd,aAAaz8b,SAAU,CACxE,IAAI23E,EAAYhjG,EAAK8/E,KAAKnsC,cACtBo0a,EAAQ/nd,EAAK8/E,KAAK99E,WAAU,GAChCghG,EAAUpsE,aAAamxb,EAAO/kX,EAAUnyE,SAAS3a,SAASlW,EAAK8/E,KAAK5wD,aAAaktC,KAAwB,MACzG2rZ,EAAM1ld,QACNrC,EAAK8/E,KAAKt2D,SACVxpB,EAAK8/E,KAAOioY,EAEhB/nd,EAAK8/E,KAAK39E,UAAY,GACtBnC,EAAK8/E,KAAK/9E,YAAYhC,KAAKwmd,eAAe1wb,EAAU71B,IACpDA,EAAK8/E,KAAK/pD,UAAUvM,OAAO,qBAC3BxpB,EAAK8/E,KAAK/pD,UAAUjN,IAAI,qBACxBiN,YAAU/1B,EAAK2qD,IAAK,CAACyR,IAAoB,cAAe,KAE5DyrZ,EAAgB5rd,UAAUsqd,eAAiB,SAAU1wb,EAAU71B,GAC3D,IAAIg6D,EAAOj6D,KAAKO,OACZg9R,EAAOv9R,KAAKO,OACXY,cAAc,OAAQ,CAAEsY,GAAIwgD,EAAKj5D,QAAQyY,GAAK,WAAY4U,UAAW,eAQ1E,OAPAkvQ,EAAKv7R,YAAY8zB,EAAS71B,EAAK8nd,aAAatsd,MACT,gBAA/BwE,EAAK8nd,aAAal/W,UAClB5oG,EAAK8/E,KAAK/pD,UAAUjN,IAAI,cAEvB9oB,EAAK8nd,aAAal/W,UACnB5oG,EAAK8/E,KAAK/pD,UAAUjN,IAAI,cAErBw0Q,GAEXuqL,EAAgB5rd,UAAUytB,oBAAsB,aAGzCm+b,EAxC0B,G,SCKjCG,GAAkC,WAOlC,SAASA,EAAiB1nd,EAAQw/D,GAC9B//D,KAAKO,OAASA,EACdP,KAAK+/D,eAAiBA,EAClB//D,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAO+Y,GAAGyN,KAAsB/mB,KAAKmb,QAASnb,MACnDA,KAAKO,OAAO+Y,GAAGyN,KAAgB/mB,KAAKmb,QAASnb,OA6LjD,OA3LAiod,EAAiB/rd,UAAUgsd,aAAe,WACtClod,KAAK+zJ,KAAO/zJ,KAAK+/D,eAAeE,WAAW,iBAE/CgoZ,EAAiB/rd,UAAUkqd,OAAS,SAAUtwb,EAAU71B,GACpDD,KAAKqiG,QAAS,EACdriG,KAAKmod,aAAaryb,EAAU71B,IAEhCgod,EAAiB/rd,UAAU2hG,OAAS,SAAU/nE,EAAU71B,GACpDD,KAAKqiG,QAAS,EACdriG,KAAKmod,aAAaryb,EAAU71B,IAEhCgod,EAAiB/rd,UAAUksd,mBAAqB,SAAUnod,GACtD,IAAIg6D,EAAOj6D,KAAKO,OAEhB,GAAIP,KAAKO,OAAO2sE,iBAAkB,CAC9B,IAAIm7Y,EAAwB,IAAIrhP,KAAyBhnO,KAAKO,OAAQP,KAAK+/D,gBAE3E,OADAsoZ,EAAsBvib,OAAS9lC,KAAKqiG,OAAS3zB,IAAuB2zB,OAAS3zB,IAAuBkwE,MAC7FypU,EAAsB79O,4BAAuBxuO,EAAWiE,GAanE,OAVQg6D,EAAKyF,aAAaypC,eACTnpG,KAAKsod,6BAA6B,iBAAkBrod,GAExDD,KAAKqiG,OACDriG,KAAK+zJ,KAAKl9G,YAAY,iBAAmB52C,EAAK8qO,gBAAgB,GAG9D/qO,KAAK+zJ,KAAKl9G,YAAY,iBAK3Coxa,EAAiB/rd,UAAUisd,aAAe,SAAUryb,EAAU71B,GAC1D,IAAIg6D,EAAOj6D,KAAKO,OAChBP,KAAK6id,OAAS7id,KAAKO,OAAOY,cAAc,MAAO,CAAEsY,GAAIwgD,EAAKj5D,QAAQyY,GAAK,sBAAuBsa,OAAQ,gBAClGkmC,EAAKiT,kBACLltE,KAAK6id,OAAO7sb,UAAUjN,IAAI,uBAE9B/oB,KAAK6id,OAAOjtb,aAAa,aAAc,eACvCqkC,EAAKj5D,QAAQgB,YAAYhC,KAAK6id,QAC9B7id,KAAKkod,eAGLlod,KAAKwgE,UAAY,IAAIknF,KAAOppJ,YAAO,CAC/BymB,OAAQ/kB,KAAKood,mBAAmBnod,GAAOwrM,SAAS,EAAMvuI,SAAS,EAAMg5B,SAAU,gBAC/ExrC,QAAS1qD,KAAKwmd,eAAe1wb,EAAU71B,GACvCmqO,eAAe,EACfkE,eAAe,EAEfjsO,MAAOrC,KAAKuod,YAAYpsd,KAAK6D,MAC7B0rD,QAAS1rD,KAAK+nJ,cAAc5rJ,KAAK6D,MACjCqqO,eAAe,EAAM36L,MAAOuqB,EAAKyF,aAAap0C,SAAW,OAAS,QAClE2R,OAAQh9B,EAAKg9B,OAASh9B,EAAKg9B,OAASz8B,SAASgiC,KAAMmlH,kBAAmB,CAAEC,OAAQ,QAChFj3C,eAAgB12C,EAAKyF,aAAaixC,eAAiB3wG,KAAKsod,6BAA6B,iBAAkBrod,GAAQ,KAC/G03F,QAAS,CAAC,CACFlnC,MAAOzwD,KAAK6nJ,SAAS1rJ,KAAK6D,MAC1B8nJ,YAAa,CAAEp9F,QAAS1qD,KAAK+zJ,KAAKl9G,YAAY,cAAeq/C,SAAU,YAAayrC,WAAW,IAEnG,CAAElxE,MAAOzwD,KAAK6nJ,SAAS1rJ,KAAK6D,MAAO8nJ,YAAa,CAAE5xD,SAAU,SAAUxrC,QAAS1qD,KAAK+zJ,KAAKl9G,YAAY,oBAC1GojB,EAAKyF,aAAamjZ,QAAU5oZ,EAAKyF,aAAamjZ,OAAOhnd,QAAgB,KACxEoE,EAAK4id,OAAS7id,KAAKwgE,UAEnBxgE,KAAKwgE,UAA0B,kBAAI,EACnCxgE,KAAK2pO,yBACL3pO,KAAKwgE,UAAUz5B,SAAS/mC,KAAK6id,QAC7Bl8Y,YAAiB3mE,KAAKO,OAAOS,QAAShB,KAAKwgE,UAAUx/D,QAAQ4yC,eACzDqmB,EAAKiT,kBACLltE,KAAKwgE,UAAUg9D,MAAK,IAG5ByqV,EAAiB/rd,UAAU6rJ,cAAgB,WACvC96E,YAAgBjtE,KAAKO,SAEzB0nd,EAAiB/rd,UAAUytO,uBAAyB,WAChD,IAAI5pO,EAAQC,KACRA,KAAKO,OAAO2sE,mBACRltE,KAAKO,OAAO+pO,oBACZtqO,KAAKwgE,UAAUvjC,OAASj9B,KAAKO,OAAO+pO,mBAExCtqO,KAAKwgE,UAAUm3B,QAAU,CAAC,IAC1B33F,KAAKwgE,UAAU4pK,eAAgB,EAC/BpqO,KAAKwgE,UAAUtD,SAAU,EACzBl9D,KAAKwgE,UAAU9wB,MAAQ,OACvB1vC,KAAKwgE,UAAUz+D,KAAO,WAClBhC,EAAMygE,UAAUx/D,QAAQgzB,MAAMm0H,UAAY,UAItD8/T,EAAiB/rd,UAAU2rJ,SAAW,SAAUhnJ,GACxCb,KAAK+zJ,KAAKl9G,YAAY,gBAAgBp/B,gBAAkB5W,EAAEo8B,OAAOm4D,UAAU/oE,OAAO5U,cAClFzX,KAAKuod,cAGLvod,KAAKO,OAAOkwJ,WAGpBw3T,EAAiB/rd,UAAUqsd,YAAc,WACrCvod,KAAKO,OAAOu4D,aAGhBmvZ,EAAiB/rd,UAAUif,QAAU,SAAUlb,GAE3C,IADA,IAAIuod,EAAsB,CAAC,WAAY,iBAAkB,kBAChD5rd,EAAI,EAAGA,EAAI4rd,EAAoB3rd,OAAQD,IAC5C,GAAIoD,KAAKO,OAAOm/D,aAAa8oZ,EAAoB5rd,IAAK,CAClD,IAAI4xB,EAAeg6b,EAAoB5rd,GAAG+pG,OAAO,GAAGnvF,cAAgBgxc,EAAoB5rd,GAAGyE,MAAM,GAC7Fwmd,EAAiB7nd,KAAKO,OAAOS,QAAQyY,GAAK,eAAiB+U,EAC/DD,aAAqBs5b,EAAgBr5b,EAAcxuB,KAAKO,OAAOm/D,cAGvE1/D,KAAKO,OAAOyZ,OAAO+M,KAAoB,IACvC/mB,KAAKO,OAAO8hG,QAAS,EACrBriG,KAAKO,OAAOyZ,OAAO+M,KAAuB,IACtC/mB,KAAK6id,SAAW7id,KAAKwgE,UAAUrnC,cAC/Bn5B,KAAKwgE,UAAUrlD,UACfsO,aAAOzpB,KAAK6id,UAGpBoF,EAAiB/rd,UAAUosd,6BAA+B,SAAUG,EAAYxod,GAC5E,IAAIyod,EAAU1od,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,WAAao6b,IACrEhmX,EAAYnkG,YAAO,GAAI2B,EAAKgzN,QAAS,CAAEr0E,OAAQ5+I,KAAKqiG,SAAU,GAC9DK,EAAa1iG,KAAKO,OAAOS,QAAQyY,GAAK,eAAiBgvc,EAI3D,OAHAtqZ,YAAeuqZ,GAAyB,mBAAfD,EAAkCzod,KAAKO,OAAO8jT,wBACnErkT,KAAKO,OAAOgkT,yBAAyB9hN,EAAWziG,KAAKO,OAAQ,eAAiBkod,EAAY/lX,IAC9Fn0E,aAAqBm0E,EAAY+lX,EAAYzod,KAAKO,OAAOm/D,cAClDgpZ,GAEXT,EAAiB/rd,UAAUsqd,eAAiB,SAAU1wb,EAAU71B,GAC5D,IAAIF,EAAQC,KACRi6D,EAAOj6D,KAAKO,OACZW,EAAMlB,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAWruB,KAAKqiG,OAAShmC,IAAqB,kBACvFkhO,EAAOt9R,EAAKs9R,KACZv9R,KAAKO,OAAOY,cAAc,OAAQ,CAAEsY,GAAIwgD,EAAKj5D,QAAQyY,GAAK,WAAY4U,UAAW,eACrF,GAAIruB,KAAKO,OAAOm/D,aAAap0C,SAAU,CACnC,IAAIu8b,EAAiB7nd,KAAKO,OAAOS,QAAQyY,GAAK,uBAC1CgpF,EAAYnkG,YAAO,GAAI2B,EAAKgzN,QAAS,CAAEr0E,OAAQ5+I,KAAKqiG,SAAU,GAC5CriG,KAAKO,OAAOgiG,SAA0D,kBAAvCviG,KAAKO,OAAOm/D,aAAap0C,UAE1EtrB,KAAKO,OAAOkoG,iBAAZzoG,CAA8ByiG,EAAWziG,KAAKO,OAAQ,uBAAwBsnd,EAAgB,KAAM,KAAMtqL,GAC1Gv9R,KAAKO,OAAOqiG,mBAGZzkC,YAAeo/N,EAAMv9R,KAAKO,OAAOkoG,iBAAZzoG,CAA8ByiG,EAAWziG,KAAKO,OAAQ,uBAAwBsnd,IAavG,OAFAt5b,aAAqBs5b,EAAgB,WAAY7nd,KAAKO,OAAOm/D,cAAc,GAT5D,WAEX,IADA,IAAI3F,EAAUh6D,EAAMQ,OAAOmkE,aAClB9nE,EAAI,EAAGA,EAAIm9D,EAAQl9D,OAAQD,IAC5Bm9D,EAAQn9D,GAAG0vE,kBACXvsE,EAAMQ,OAAOm8I,WAAWy3M,QAAQjoR,MAAMnS,EAAQn9D,GAAG48D,OAC7CO,EAAQn9D,GAAG0vE,oBAK3BprE,EAAIc,YAAYu7R,GACTr8R,EAKX,IAHA,IAAIypD,EAAQ3qD,KAAKO,OAAOY,cAAc,QAAS,CAAEktB,UAAWguC,IAAgBtpC,MAAO,CAAEuzG,YAAa,SAC9F96E,EAAQxrD,KAAKO,OAAOY,cAAck7D,KAClCwwC,EAAO5yC,EAAKyK,aACP9nE,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAC7B,KAAIoD,KAAKO,OAAOm8I,WAAWisU,qBAAqB97W,EAAKjwG,KAAOiwG,EAAKjwG,GAAGosG,UAAY6D,EAAKjwG,GAAGqsG,kBACnE,aAAjB4D,EAAKjwG,GAAGuO,MADZ,CAIA,IAAIsiE,EAAKztE,KAAKO,OAAOY,cAAc,MAC/Bynd,EAAW5od,KAAKO,OAAOY,cAAc,KAAM,CAC3CktB,UAAWguC,IAAkBtpC,MAAO,CAChCiB,MAAO,eAAiBh0B,KAAKO,OAAOomC,UAAY,QAAU,QAAU,kBAG5E7Q,EAAS+2E,EAAKjwG,GAAGnB,KAAKu6B,UAAUvM,OAAO,WACvCm/b,EAAS5md,YAAY8zB,EAAS+2E,EAAKjwG,GAAGnB,MACtCgyE,EAAGzrE,YAAY4md,GACfp9Z,EAAMxpD,YAAYyrE,GAKtB,OAHA9iB,EAAM3oD,YAAYwpD,GAClB+xO,EAAKv7R,YAAY2oD,GACjBzpD,EAAIc,YAAYu7R,GACTr8R,GAEX+md,EAAiB/rd,UAAUytB,oBAAsB,WACzC3pB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAOsZ,IAAIkN,KAAsB/mB,KAAKmb,SAC3Cnb,KAAKO,OAAOsZ,IAAIkN,KAAgB/mB,KAAKmb,WAElC8sc,EA3M2B,GCGlCY,GAA4B,WAO5B,SAASA,EAAWtod,EAAQw/D,GAExB//D,KAAK6oG,SAAW,CACZ,OAAUs9W,GACV,OAAUA,GAAkB,MAAS2B,GAAiB,OAAUG,IAEpEjod,KAAKO,OAASA,EACdP,KAAK+/D,eAAiBA,EACtB//D,KAAKomS,SAAW,IAAIpmS,KAAK6oG,SAAS7oG,KAAKO,OAAOm/D,aAAaviD,MAAM5c,EAAQw/D,GACzE//D,KAAKsC,MAAQy9D,EAAeE,WAAW,SAgO3C,OA9NA4oZ,EAAW3sd,UAAUkqd,OAAS,SAAUnmd,GACpCD,KAAKomS,SAASggL,OAAOpmd,KAAK8od,gBAAgB7od,GAAOA,GACjDD,KAAK+od,cAAc9od,IAEvB4od,EAAW3sd,UAAU2hG,OAAS,SAAU59F,GACpCD,KAAKomS,SAASvoM,OAAO79F,KAAK8od,gBAAgB7od,GAAOA,GACpBA,EAAKknd,yBAE9Bnnd,KAAKO,OAAOyZ,OAAO+M,IAAwB9mB,GAC3CD,KAAK+od,cAAc9od,KAG3B4od,EAAW3sd,UAAU6sd,cAAgB,SAAU9od,GAC3C,IACI4/I,EACA9/D,EAEAipY,EACAC,EALAhvZ,EAAOj6D,KAAKO,OAMZgjE,EAAUtJ,EAAKqK,eACf9pD,EAAiC,UAAzBy/C,EAAKiQ,iBAA0D,WAA3BjQ,EAAKyF,aAAaviD,KAAoB,EAAI,EACtFogR,EAAkC,WAA3BtjO,EAAKyF,aAAaviD,KACzBia,aAAO,IAAM6iC,EAAKj5D,QAAQyY,GAAK,kCAAmCjZ,UAClEy5D,EAAKj5D,QAAQiuB,uBAAuB,cAAczU,GAClD8rc,EAAkB/iZ,GAAWvjE,KAAKO,OAAO6lE,4BAA8BnmE,EAAK02V,SAChF,GAAIpzR,GAAsC,WAA3BtJ,EAAKyF,aAAaviD,KAAmB,CAChD,IAAIwuD,EAAWx1D,SAASlW,EAAK2qD,IAAIz7B,aAAaktC,KAAwB,IAClEpC,EAAKuS,aAAqC,QAArBvsE,EAAKm6F,aAA8D,QAArCngC,EAAKyF,aAAa+M,gBAClEd,EAAW1R,EAAKuS,aACnBw8Y,EAAQ/uZ,EAAKj5D,QAAQsC,cAAc,IAAM+4D,KAAwB/4D,cAAc,eAC3EtD,KAAKO,OAAO2pE,kBAAoB7N,MAChC4sZ,EAAShpd,EAAK4md,mBAIlBmC,EAAQ/uZ,EAAKj5D,QAAQsC,cAAc,IAAM+4D,KAAyB/4D,cAAc,eAC5EtD,KAAKO,OAAO2pE,kBAAoB7N,MAChC4sZ,EAAShpd,EAAK4md,kBAK1B,IADA,IACS7od,EAAK,EAAGkrd,EADqB,UAA3BjvZ,EAAKyF,aAAaviD,KAAmB88C,EAAKyK,aAAe,CAACzK,EAAKqM,iBAAiBrmE,EAAKo8G,aAChEr+G,EAAKkrd,EAAOrsd,OAAQmB,IAAM,CACtD,IAAImhE,EAAM+pZ,EAAOlrd,GACjB,IAAIsod,GAAgD,YAA7BnnZ,EAAIyM,qBAG3B,IAAI5rE,KAAKO,OAAOm/D,aAAap0C,UAAaluB,YAAkB+hE,EAAI3F,QAchE,IAAIx5D,KAAKO,OAAOm8I,WAAWisU,qBAAqBxpZ,KAAQA,EAAI6pC,SAA5D,CAIS7pC,EAAI5F,cAAc4F,EAAI3F,MAAOv5D,EAAKgzN,QAAS9zJ,GAEhD4gB,EAD6B,YAA7B5gB,EAAIyM,sBAAiE,WAA3B3R,EAAKyF,aAAaviD,KACrD6rc,EAAM1ld,cAAc,iBAAmB67D,EAAI1jE,IAAM,KAEnDwtd,GAAU9pZ,EAAIyM,uBAAyBvP,KAAmD,WAA3BpC,EAAKyF,aAAaviD,KAC/E8rc,EAAO3ld,cAAc,iBAAmB67D,EAAI1jE,IAAM,KAGlD8hS,EAAKj6R,cAAc,iBAAmB67D,EAAI1jE,IAAM,KAE3D,IAAIkW,EAAOwtD,EAAIkpC,KAAKlmG,MACf/E,YAAkB2iF,KACC,kBAATpuE,GACPA,EAAOopB,YAAUppB,EAAM7P,SAClB,CACDmxN,QAAShzN,EAAKgzN,QAASjyN,QAAS++E,EAAMtmB,OAAQ0F,EAAKi7B,YAAan6F,EAAKm6F,YAAaxvC,IAAK3qD,EAAK2qD,IAC5FyI,eAAgB8L,EAAIsqC,mBAAqB1uE,YAAUokC,EAAI3F,MAAOv5D,EAAKozD,kBAIvE8L,EAAIkpC,KAAKlmG,MAAM,CACX8wN,QAAShzN,EAAKgzN,QAASjyN,QAAS++E,EAAMtmB,OAAQ0F,EAAKi7B,YAAan6F,EAAKm6F,YAAaxvC,IAAK3qD,EAAK2qD,IAC5FyI,eAAgB8L,EAAIsqC,mBAAqB1uE,YAAUokC,EAAI3F,MAAOv5D,EAAKozD,kBAGtEwsF,GAAc9/D,EAAK5wD,aAAa,cACjCnvB,KAAKghJ,aAAajhE,EAAM9/E,EAAKkL,MAC7B00I,GAAY,SA7CpB,CACI,IAAIpwC,EAAWnxG,YAAO,GAAI2B,GAC1BwvG,EAASzuG,QAAUu8R,EAAKj6R,cAAc,SAAW07D,YAAkBG,EAAI3F,OAAS,KAC5Ep8D,YAAkBqyG,EAASzuG,UAAYuiE,IACvCksC,EAASzuG,QAAUgod,EAAM1ld,cAAc,SAAW07D,YAAkBG,EAAI3F,OAAS,MAEvD,kBAAnB2F,EAAIkpC,KAAKlmG,MAChB44B,YAAUokC,EAAIkpC,KAAKlmG,MAAOL,OAA1Bi5B,CAAkC00E,GAGlCtwC,EAAIkpC,KAAKlmG,MAAMstG,IAuC3B,GAAIlsC,IAAYvjE,KAAKO,OAAO6pI,gBAAwC,QAArBnqI,EAAKm6F,aAA+C,cAArBn6F,EAAKm6F,cAC1C,WAAlCp6F,KAAKO,OAAOm/D,aAAaviD,OAAsB/f,YAAkBmgS,KAAUngS,YAAkB4rd,GAAQ,CACxG,IAAIG,EAAcH,EAAM1ld,cAAc,MAAMwtB,SAAS,GACjDs4b,EAAc7rL,EAAKj6R,cAAc,MAAMwtB,SAAS,GACpD,GAAIs4b,EAAWx5a,aAAeu5a,EAAWv5a,cAErC,GADAu5a,EAAWn1b,MAAM2b,OAASy5a,EAAWx5a,aAAe,KAChDq5a,EACkBD,EAAM1ld,cAAc,MAAMwtB,SAAS,GACzCkD,MAAM2b,OAASy5a,EAAWx5a,aAAe,UAKzD,GADAw5a,EAAWp1b,MAAM2b,OAASw5a,EAAWv5a,aAAe,KAChDq5a,EACkBD,EAAM1ld,cAAc,MAAMwtB,SAAS,GACzCkD,MAAM2b,OAASw5a,EAAWv5a,aAAe,OAMrEi5a,EAAW3sd,UAAU8kJ,aAAe,SAAU39I,EAAM8H,GAChD,IAAIk+c,EAASrpd,KAAKO,OAAOS,QAAQsC,cAAc,wBAC1ClG,YAAkBisd,IACnBA,EAAOC,mBAAmBtzb,UAAUjN,IAAI,WAEN,UAAlC/oB,KAAKO,OAAOm/D,aAAaviD,MACzBnd,KAAKsC,MAAMkvF,QAAQ,CAAEv0D,OAAQrF,YAAQv0B,EAAM,QAAS,IAGtCrD,KAAKO,OAAOqjE,sBAA0D,WAAlC5jE,KAAKO,OAAOm/D,aAAaviD,MAC3Dnd,KAAKO,OAAOqjE,sBAAoE,WAA5C5jE,KAAKO,OAAOm/D,aAAa+M,gBACtE9O,aAAat6D,EAAMg5D,KACtBh5D,EAAKf,QAILe,EAAKf,MAAM,CAAE28I,eAAe,IAGhC57I,EAAK2yB,UAAUzD,SAAS,kBACxBlvB,EAAKyhK,kBAAkBzhK,EAAK7G,MAAMK,OAAQwG,EAAK7G,MAAMK,SAG7Dgsd,EAAW3sd,UAAU4sd,gBAAkB,SAAU7od,GAC7C,IAAIg6D,EAAOj6D,KAAKO,OACZu1B,EAAW,GACX+2E,EAAkC,UAA3B5yC,EAAKyF,aAAaviD,KAAmB88C,EAAKyK,aAAe,CAACzK,EAAKqM,iBAAiBrmE,EAAKo8G,aAIhG,GAHIp8G,EAAKknd,yBACLt6W,EAAO7sG,KAAKO,OAAOk8D,aAEnBz8D,KAAKO,OAAOm/D,aAAap0C,SACzB,MAAO,GAGX,IADA,IAAIg7b,EAAkBrsZ,EAAKqK,gBAAkBrK,EAAKmM,4BAA8BnmE,EAAK02V,SAC5E/5V,EAAI,EAAG+E,EAAMkrG,EAAKhwG,OAAQD,EAAI+E,EAAK/E,IAAK,CAC7C,IAAIuiE,EAAM0tC,EAAKjwG,GACf,KAAIoD,KAAKO,OAAOm8I,WAAWisU,qBAAqBxpZ,IAASmnZ,GAAoD,YAAjCz5W,EAAKjwG,GAAGgvE,sBAC5E3rE,EAAKknd,yBAA2BhoZ,EAAI6pC,UAAY7pC,EAAI8pC,mBAAqB9pC,EAAI3F,QAGrF,GAAI2F,EAAI6pC,UAAY7pC,EAAI8pC,iBAAxB,CACI,IAAI6G,EAAmB9vG,KAAK+/D,eAAeE,WAAW,uBAClDtjC,EAAQ,IAAI4vE,IAAkBvsG,KAAKO,QACnCwvG,EAAeD,EAAiBE,gBAAgBzhC,IAASs/B,eAEzD9tB,EADQpjD,EAAM6vE,aAAavsG,EAAKgzN,SAAS,GAAG3yJ,MAC/BpvC,QAAO,SAAU6uD,GAAQ,OAAOA,EAAKwpY,SAClDz7Y,EAAKiiC,EAAargF,OAAOqwD,EAAKnjF,GAAIqD,EAAKgzN,QAAS,CAAE,MAAShzN,EAAK2qD,IAAM3qD,EAAK2qD,IAAIz7B,aAAaktC,KAAyB,GAAKr8D,KAAKO,OAAOqjE,uBACtI1iE,EAAM4sE,EAAGh3C,mBACTlB,aAAa,YAAak4C,EAAG3+C,aAAa,cAC9C2G,EAASqpC,EAAI1jE,KAAOyF,MATxB,CAYA,IAAI1E,EAAS2iE,EAAI5F,cAAc4F,EAAI3F,MAAOv5D,EAAKgzN,QAAS9zJ,GACpDqqZ,EAAQ,CAAE/vZ,OAAQ0F,EAAK3iE,MAAOA,EAAO2O,KAAMlL,EAAKm6F,YAAav/E,KAAM5a,EAAKgzN,SACxEthN,EAAOwtD,EAAIkpC,KAAK3pE,OAChBsiC,OAAQ,EACZ,GAAI7B,EAAIoqC,aAAc,CAClBvoC,EAAQhhE,KAAKO,OAAOY,cAAc,OAAQ,CAAE4xB,MAAO,CAAE,eAAgBosC,EAAI1jE,OACzE,IAAI8pS,EAASvlS,KAAKO,OAAOS,QAAQyY,GAAK0lD,EAAI1jE,IAAM,eAC5Cgud,EAAWlkZ,YAAgB,GAAItlE,EAAKgzN,QAAS,CAAEx5J,OAAQ0F,IAE3D,GADsBn/D,KAAKO,OAAOgiG,SAAyC,kBAAtBpjC,EAAIoqC,aAErDpqC,EAAIspC,iBAAJtpC,CAAsB7gE,YAAO,CAAE,MAAS2B,EAAK0rE,UAAY89Y,GAAWzpd,KAAKO,OAAQ,eAAgBglS,EAAQ,KAAM,KAAMvkO,GACrHhhE,KAAKO,OAAOqiG,sBAEX,CACD,IAAIt3E,EAAW6zC,EAAIspC,iBAAJtpC,CAAsB7gE,YAAO,CAAE,MAAS2B,EAAK0rE,UAAY89Y,GAAWzpd,KAAKO,OAAQ,eAAgBglS,GAChHpnO,YAAe6C,EAAO11C,QAGzB,CASG,IAAIpqB,EADR,GAAqB,kBALjB8/D,EAFgB,kBAATrvD,GACPA,EAAOopB,YAAUppB,EAAM7P,SACV0nd,GAGLrqZ,EAAIkpC,KAAK3pE,OAAO8qb,KAGpBtod,EAAMlB,KAAKO,OAAOY,cAAc,QAChCiB,UAAY4+D,EAChBA,EAAQ9/D,EAAI4iG,WAEhB,IAAI4lX,EAA4B,UAAlB1oZ,EAAMhxC,SAAuBgxC,EAAMx/D,iBAAiB,SAAS3E,OACvEuxE,EAAmBpP,YAAkBG,EAAI3F,OAC7CjmC,YAAWm2b,EAAU1oZ,EAAM19D,cAAc,SAAW09D,EAAO,CACvD5mD,KAAMg0D,EAAkB,eAAgBjP,EAAI1jE,IAC5Cge,GAAIwgD,EAAKj5D,QAAQyY,GAAK20D,IAE1Bp4C,YAAUgrC,EAAO,CAAC,UAAW,WAAY,IACnB,UAAlB7B,EAAIglC,WACJnjC,EAAMhrC,UAAUjN,IAAI,cAEnBo2C,EAAIG,cAAgBH,EAAIE,aAAoC,cAArBp/D,EAAKm6F,aAC5Cj7B,EAAIE,YAAmC,QAArBp/D,EAAKm6F,cACxBp5B,EAAMprC,aAAa,WAAY,IAGvCE,EAASqpC,EAAI1jE,KAAOulE,GAExB,OAAOlrC,GAEX+yb,EAAW3sd,UAAUif,QAAU,WAC3Bnb,KAAKomS,SAASz8Q,uBAEXk/b,EAhPqB,G,UCT5Bc,GAA8B,WAC9B,SAASA,EAAappd,GAClBP,KAAKO,OAASA,EAalB,OAXAopd,EAAaztd,UAAUwiC,OAAS,SAAUz+B,GACtC,OAAOiuE,YAAkBluE,KAAKO,OAAQN,EAAKw5D,OAAQ,UAAW,CAAEtuD,KAAM,UAE1Ew+c,EAAaztd,UAAUswY,KAAO,SAAUxrY,GACpC,OAAOA,EAAQ85B,cAAc,GAAGt+B,OAEpCmtd,EAAaztd,UAAUif,QAAU,WACzBnb,KAAKzD,KACLyD,KAAKzD,IAAI4e,WAGVwuc,EAfuB,GCN9Btrb,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzCmrb,GAAiC,SAAUzqb,GAE3C,SAASyqb,IACL,IAAI7pd,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAEhE,OADAD,EAAM8pd,cAAgB,CAAC,wBAAyB,YACzC9pd,EAoDX,OAxDAs+B,GAAUurb,EAAiBzqb,GAM3Byqb,EAAgB1td,UAAUwiC,OAAS,SAAUz+B,GACzC,IACIkuE,EAAa,qBAIjB,MAHiB,aAFPluE,EAAKw5D,OAEPtuD,OACJgjE,EAAa,yCAEVD,YAAkBluE,KAAKO,OAAQN,EAAKw5D,OAAQ0U,EAAY,CAAEhjE,KAAM,WAAY3O,MAAOyD,EAAKzD,SAEnGotd,EAAgB1td,UAAUswY,KAAO,SAAUxrY,GACvC,OAAOA,EAAQkgE,SAEnB0oZ,EAAgB1td,UAAUiG,MAAQ,SAAUlC,GACxC,IAAI6pd,EACAC,EAOJ,GANK3sd,YAAkB6C,EAAK2qD,OACxBk/Z,EAAe7pd,EAAK2qD,IAAItnD,cAAc,wBAEtCy3B,YAAU96B,EAAKw5D,OAAOD,MAAOv5D,EAAKgzN,WAClC82P,EAAWhvc,KAAKC,MAAM+f,YAAU96B,EAAKw5D,OAAOD,MAAOv5D,EAAKgzN,SAAS9lN,WAAWsK,iBAE3Era,YAAkB0sd,IAAsC,aAArB7pd,EAAKw5D,OAAOtuD,KAAqB,CAGrE,GAFAnL,KAAK6oG,SAAW7oG,KAAKO,OAAOm/D,aAAaviD,KACzCnd,KAAKgqd,QAAU/pd,EAAK2qD,IACK,QAArB3qD,EAAKm6F,YAAuB,CAC5B,IAAIxvC,EAAM5qD,KAAKO,OAAO6hT,oBAAoBniT,EAAK2qD,IAAIz7B,aAAa,aAChE46b,IAAWn/Z,GAAMA,EAAIy3B,WAEzBhiB,IAAuBjkE,WAAM,EAAQ,CAAC,GAAGiF,MAAMC,KAAKrB,EAAK2qD,IAAI37B,uBAAuBotC,MAAoB0tZ,GAAUj4b,OAAO9xB,KAAK6pd,gBAElI7pd,KAAKzD,IAAM,IAAI0td,KAAS3rd,YAAO,CAC3Bm3E,MAAyC,WAAlCz1E,KAAKO,OAAOm/D,aAAaviD,KAAoB,IAAMld,EAAKw5D,OAAOsD,WACtEmE,QAAS6oZ,EACTz4W,UAAWpyC,YAAWj/D,EAAKw5D,OAAQx5D,EAAKm6F,YAAan6F,EAAKe,SAAU2lC,UAAW3mC,KAAKO,OAAOomC,UAC3FyL,OAAQpyC,KAAKuuD,eAAepyD,KAAK6D,OAClCC,EAAKw5D,OAAO4uC,KAAKxsG,SACpBmE,KAAKzD,IAAIwqC,SAAS9mC,EAAKe,UAE3B4od,EAAgB1td,UAAUqyD,eAAiB,SAAUtuD,GACjD,GAAID,KAAKgqd,SAA6B,WAAlBhqd,KAAK6oG,SAAuB,CAC5C,IAAI9/E,GAAM,EACL9oB,EAAKihE,SAINn4C,GAAM,EACN/oB,KAAKgqd,QAAQp0b,aAAa,gBAAiB7M,EAAI5b,aAJ/CnN,KAAKgqd,QAAQ3pb,gBAAgB,iBAMjCggC,IAAuBjkE,WAAM,EAAQ,CAAC,GAAGiF,MAAMC,KAAKtB,KAAKgqd,QAAQ/6b,uBAAuBotC,MAAoBtzC,GAAK+I,OAAO9xB,KAAK6pd,kBAG9HD,EAzD0B,CA0DnCD,IClFEtrb,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzCyrb,GAAkC,SAAU/qb,GAE5C,SAAS+qb,EAAiB3pd,GACtB,IAAIR,EAEJo/B,EAAO79B,KAAKtB,OAASA,KAGrB,OAFAD,EAAMQ,OAASA,EACfR,EAAM4T,MAAO,EACN5T,EA+DX,OAtEAs+B,GAAU6rb,EAAkB/qb,GAS5B+qb,EAAiBhud,UAAUiG,MAAQ,SAAUlC,GACzC,IAAIkqd,EAA6C,WAAlCnqd,KAAKO,OAAOm/D,aAAaviD,KACxCnd,KAAKy5D,OAASx5D,EAAKw5D,OACnB,IAAImC,EAAO,IAAIkH,KAAU7iE,EAAKw5D,OAAOD,MAAO,WAAY,MAAM,GAAM,GAChE39D,EAAS,GACb,GAAIoE,EAAKw5D,OAAO4uC,KAAKxsG,OAEjB,IADA,IAAIoB,EAAOiB,OAAOjB,KAAKgD,EAAKw5D,OAAO4uC,KAAKxsG,QAC/Be,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAC7Bf,EAAOoB,EAAKL,IAAkB,UAAZK,EAAKL,GAAiBqD,EAAKw5D,OAAO4uC,KAAKxsG,OAAOoB,EAAKL,IAAIqC,QAAUgB,EAAKw5D,OAAO4uC,KAAKxsG,OAAOoB,EAAKL,IAGxHoD,KAAKzD,IAAM,IAAIm+J,KAAap8J,YAAO,CAC/BwjE,WAAY9hE,KAAKO,OAAOuhE,sBAAsBC,IAC1C/hE,KAAKO,OAAOuhE,WAAa,IAAIC,IAAY/hE,KAAKO,OAAOuhE,YACzDH,OAAO,IAAIC,MAAQM,MAAMtG,GAAMxkC,OAAOn3B,EAAKw5D,OAAOD,OAAQg/B,QAASt5B,YAAWj/D,EAAKw5D,OAAQx5D,EAAKm6F,YAAan6F,EAAKe,SAClHouE,OAAQ,CAAE5yE,MAAOyD,EAAKw5D,OAAOD,OAC7Bh9D,MAAOu+B,YAAU96B,EAAKw5D,OAAOD,MAAOv5D,EAAKgzN,SACzCtsL,UAAW3mC,KAAKO,OAAOomC,UAAWolB,eAAgB/rD,KAAKoqd,iBAAiBjud,KAAK6D,MAC7E0rD,QAAS1rD,KAAKqqd,gBAAgBlud,KAAK6D,MACnCm1F,YAAag1X,EAAW,GAAKlqd,EAAKw5D,OAAOsD,WAAY2pG,YAAa,QAClEvyE,eAAgBg2X,EAAW,QAAU,SAAUpod,KAAM/B,KAAKsqd,aAAanud,KAAK6D,MAC5E+0E,UAAW,YACX+4J,WAAY9tO,KAAKuqd,mBAAmBpud,KAAK6D,OAC1CnE,IACCmE,KAAKO,OAAOqjE,uBACZ5jE,KAAKzD,IAAIulE,WAAa,CAAC7hE,EAAKgzN,UAEhCjzN,KAAKzD,IAAIolE,MAAM9lE,OAASmE,KAAKO,OAAOohE,MAAM9lE,OAC1CmE,KAAKzD,IAAIwqC,SAAS9mC,EAAKe,SAEvBf,EAAKe,QAAQ40B,aAAa,OAAQopC,YAAkB/+D,EAAKw5D,OAAOD,SAGpE0wZ,EAAiBhud,UAAUmud,gBAAkB,SAAUxpd,GACnDb,KAAK2T,MAAO,GAEhBu2c,EAAiBhud,UAAUqud,mBAAqB,WACxCvqd,KAAKO,OAAOqjE,uBACZ5jE,KAAKzD,IAAIulE,WAAa9hE,KAAKO,OAAOuhE,sBAAsBC,IACpD/hE,KAAKO,OAAOuhE,WAAa,IAAIC,IAAY/hE,KAAKO,OAAOuhE,cAGjEooZ,EAAiBhud,UAAUkud,iBAAmB,SAAUvpd,GACpDA,EAAElC,OAAS+6D,KAASqxB,SAASlqF,EAAElC,OAAQqB,KAAKzD,IAAI6yE,OAAO5yE,OAAO,GAC1DwD,KAAK2T,MAAQ3T,KAAKy5D,OAAOqI,aACrB,WAAY9hE,KAAKy5D,OAAOqI,WACxB9hE,KAAKy5D,OAAOqI,WAAWnjE,OAASkC,EAAElC,OAE7BqB,KAAKy5D,OAAOqI,sBAAsBC,MACvC/hE,KAAKy5D,OAAOqI,WAAWA,WAAWE,KAAOnhE,EAAElC,SAGnDqB,KAAK2T,MAAO,GAEhBu2c,EAAiBhud,UAAUoud,aAAe,SAAUrqd,GAChD,IAAIuqd,EAAa7sZ,aAAa39D,KAAKzD,IAAIyE,QAAS,YAChD,GAAsC,WAAlChB,KAAKO,OAAOm/D,aAAaviD,OAAsB/f,YAAkBotd,GAAa,CAC9E,IAAI3I,EAASzqb,aAAO,IAAMozb,EAAW/wc,GAAIjZ,UAAUs6B,cAAc,GACjE76B,EAAKu9D,MAAMx8D,QAAQgzB,MAAM0mG,QAAUmnV,EAAOnnV,OAAS,GAAGvtH,aAGvD+8c,EAvE2B,CAwEpCP,I,UCxFEc,GAAiC,WACjC,SAASA,EAAgBlqd,GACrBP,KAAKO,OAASA,EAuClB,OArCAkqd,EAAgBvud,UAAUogU,gBAAkB,SAAUr8T,GAClD,GAAqB,KAAjBA,EAAK00C,SAAmC,IAAjB10C,EAAK00C,QAAe,CAC3C,IAAIjJ,EAAMlrC,SAAS24G,YAAY,cAC/BztE,EAAI0tE,UAAU,UAAU,GAAO,GAE/Bp5G,KAAKq5G,cAAc3tE,KAG3B++a,EAAgBvud,UAAUwiC,OAAS,SAAUz+B,GAEzC,OADAD,KAAKxE,UAAY,IAAIigB,IAAqBzb,KAAKO,OAAOwc,QAC/CmxD,YAAkBluE,KAAKO,OAAQN,EAAKw5D,OAAQ,UAAW,KAGlEgxZ,EAAgBvud,UAAUswY,KAAO,SAAUxrY,GACvC,OAAOhB,KAAKzD,IAAIC,OAEpBiud,EAAgBvud,UAAUiG,MAAQ,SAAUlC,GACxC,IAAIk/D,EAAMl/D,EAAKw5D,OACX0wZ,EAA6C,WAAlCnqd,KAAKO,OAAOm/D,aAAaviD,KACxCnd,KAAKzD,IAAM,IAAIqnU,KAAetlU,YAAO,CACjC9B,MAAOuc,WAAWgiB,YAAU96B,EAAKw5D,OAAOD,MAAOv5D,EAAKgzN,UACpDtsL,UAAW3mC,KAAKO,OAAOomC,UACvBwuD,YAAag1X,EAAW,GAAKlqd,EAAKw5D,OAAOsD,WACzCy7B,QAASt5B,YAAWj/D,EAAKw5D,OAAQx5D,EAAKm6F,YAAan6F,EAAKe,SACxDmzF,eAAkD,WAAlCn0F,KAAKO,OAAOm/D,aAAaviD,KAAoB,QAAU,SACvEJ,OAAQ/c,KAAKO,OAAOwc,QACrBoiD,EAAIkpC,KAAKxsG,SACZoE,EAAKe,QAAQ40B,aAAa,OAAQopC,YAAkB/+D,EAAKw5D,OAAOD,QAChEx5D,KAAKzD,IAAIwqC,SAAS9mC,EAAKe,SACvBhB,KAAKzD,IAAIyE,QAAQuoB,iBAAiB,UAAWvpB,KAAKs8T,kBAEtDmuJ,EAAgBvud,UAAUif,QAAU,WAC5Bnb,KAAKzD,MAAQyD,KAAKzD,IAAI48B,cACtBn5B,KAAKzD,IAAIyE,QAAQ2oB,oBAAoB,UAAW3pB,KAAKs8T,iBACrDt8T,KAAKzD,IAAI4e,YAGVsvc,EAzC0B,GCRjCpsb,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAO5D4rb,GAAgB,gBAChBC,GAAgB,CAAC,QAAS,QAAS,SAanCC,GAAyB,SAAUzrb,GAQnC,SAASyrb,EAAQt+c,EAAStL,GACtB,IAAIjB,EAAQo/B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAQnD,OAPAD,EAAM46J,cAAgB,KACtB56J,EAAMkuJ,WAAY,EAClBluJ,EAAM8qd,eAAgB,EACtB9qd,EAAM+qd,QAAS,EACf/qd,EAAMgrd,mBAAqB,KAC3Bhrd,EAAMylS,OAAQ,EACdzlS,EAAMird,eAAiB1+c,EAChBvM,EAwrBX,OAxsBAs+B,GAAUusb,EAASzrb,GA0BnByrb,EAAQ1ud,UAAU29B,kBAAoB,SAAU2H,EAASC,GACrD,IAAK,IAAIzjC,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,iBACD81F,IAAM6E,eAAe34F,KAAKird,gBAC1Bn3X,IAAM+E,YAAY74F,KAAKkrd,kBAAmBlrd,KAAKm0F,eAAgBn0F,KAAKm1F,aACpE,MACJ,IAAK,UACDrB,IAAM6C,WAAW32F,KAAKw4F,QAASx4F,KAAKkrd,kBAAmBlrd,KAAKm0F,eAAgBn0F,KAAKird,eAAen2X,WAChG90F,KAAKigK,iBACL,MACJ,IAAK,QACDnsE,IAAM4E,SAASl3D,EAAQkO,MAAO1vC,KAAKird,eAAen2X,WAClD,MACJ,IAAK,QAEG,IAAIq2X,EAAenrd,KAAKw4B,oBACxBx4B,KAAKw4B,qBAAsB,EACtBx4B,KAAKord,QAAQprd,KAAKxD,SACnBwD,KAAKxD,MAAQwD,KAAKxD,MAAM2Q,YAE5BnN,KAAKw4B,oBAAsB2yb,EAC3Br3X,IAAM/2F,SAASiD,KAAKxD,MAAOwD,KAAKkrd,kBAAmBlrd,KAAKm0F,eAAgBn0F,KAAKu4F,iBACzEv4F,KAAK6qd,gBACL7qd,KAAKgB,QAAQxE,MAAQwD,KAAKkrd,kBAAkB1ud,OAEhDwD,KAAK+qd,mBAAqB/qd,KAAKkrd,kBAAkB1ud,OAE5CwD,KAAKiuJ,WAAajuJ,KAAKwlS,SAAiC,IAAvBxlS,KAAKgyJ,eACvChyJ,KAAK26J,cAAgB36J,KAAKiuJ,UAAYjuJ,KAAKxD,MAAQwD,KAAK26J,cACxD36J,KAAKgyJ,eAAgB,IAEhB50J,YAAkB4C,KAAKiuJ,aAAejuJ,KAAKiuJ,WAC5CjuJ,KAAKiuJ,YAAcjuJ,KAAKgyJ,eAAmBhyJ,KAAKiuJ,WAAa7wJ,YAAkB4C,KAAKgyJ,iBACxFhyJ,KAAKqrd,mBAGb,MACJ,IAAK,iBAEGrrd,KAAKsrd,0BACLtrd,KAAKurd,0BACLvrd,KAAKwrd,iBAAgB,GACrB13X,IAAMsE,kBAAkBp4F,KAAKird,eAAen2X,UAAW90F,KAAKgB,SAEhE,MACJ,IAAK,WACD8yF,IAAMwC,YAAYt2F,KAAKw2F,SAAUx2F,KAAKkrd,mBACtC,MACJ,IAAK,OACsC,aAAnClrd,KAAKkrd,kBAAkBl7b,UACvBhwB,KAAKkrd,kBAAkBt1b,aAAa,OAAQ51B,KAAKmL,MACjD2oF,IAAMsE,kBAAkBp4F,KAAKird,eAAen2X,UAAW90F,KAAKgB,SAC5DhB,KAAKqrd,oBAET,MACJ,IAAK,kBACsC,aAAnCrrd,KAAKkrd,kBAAkBl7b,UACvB8jE,IAAMoD,eAAel3F,KAAKu4F,gBAAiBv4F,KAAKkrd,kBAAmBlrd,KAAKird,gBACxEjrd,KAAKigK,kBAET,MACJ,IAAK,YACDnsE,IAAM2C,aAAaz2F,KAAK2mC,UAAW,CAAC3mC,KAAKird,eAAen2X,YACxD,MACJ,IAAK,cACDhB,IAAMsC,eAAep2F,KAAKm1F,YAAan1F,KAAKkrd,mBAC5C,MACJ,IAAK,eACyB,OAAtBlrd,KAAKyrd,cAA+C,KAAtBzrd,KAAKyrd,aACnCzrd,KAAKkrd,kBAAkBO,aAAezrd,KAAKyrd,aAG3Czrd,KAAKg3F,iBAAiB,CAAC,iBAE3B,MACJ,IAAK,WACDh3F,KAAK0rd,eAAelqb,EAAQ00D,SAAUz0D,EAAQy0D,UAC9C,MACJ,IAAK,SACDl2F,KAAKuoN,UAAY,IAAI9sM,IAAqBzb,KAAK+c,QAC/C/c,KAAK+zJ,KAAKx9G,UAAUv2C,KAAK+c,QACzB/c,KAAKk5B,cAAc,CAAEi8D,YAAan1F,KAAK+zJ,KAAKl9G,YAAY,iBAAkB,GAC1Ei9C,IAAMsC,eAAep2F,KAAKm1F,YAAan1F,KAAKkrd,sBAW5DN,EAAQ1ud,UAAU2+B,cAAgB,WAC9B,MAAO,WAEX+vb,EAAQ1ud,UAAUkvd,QAAU,SAAU1md,GAClC,OAASA,GAAO,QAAQkG,KAAKlG,IAEjCkmd,EAAQ1ud,UAAUirC,UAAY,WAC1B,IAAM7nC,gBAAcU,KAAK6K,iBAAmB,CAOxC,GANA7K,KAAKsnG,aAAetnG,KAAKgB,QAAQiB,WAAU,GAC3CjC,KAAK2/J,YAAc/nI,YAAQ53B,KAAKgB,QAAS,QACpC5D,YAAkB4C,KAAK2/J,eACxB3/J,KAAK8qd,QAAS,GAGW,gBAAzB9qd,KAAKgB,QAAQgvB,QAA2B,CAMxC,IALA,IAAI2oF,EAAat8G,YAAS,gBAAiB2D,KAAKgB,SAC5CqzF,EAAer0F,KAAK2rd,UACpB3rd,KAAKmB,cAAc,YACnBnB,KAAKmB,cAAc,SACnBqZ,EAAQ,EACAA,EAAQxa,KAAKgB,QAAQuyB,WAAW12B,OAAQ2d,IAAS,CAEnC,QADlBoxc,EAAgB5rd,KAAKgB,QAAQuyB,WAAW/Y,GAAOk7F,YAE/CrhB,EAAaz+D,aAAag2b,EAAe5rd,KAAKgB,QAAQuyB,WAAW/Y,GAAOm7F,WACxEthB,EAAajyF,UAAYpC,KAAKgB,QAAQoB,UAChB,SAAlBwpd,GACA5rd,KAAKgB,QAAQq/B,gBAAgB,SAIzCrgC,KAAKgB,QAAQgB,YAAYqyF,GACzBr0F,KAAKgB,QAAUqzF,EACft3F,aAAS,gBAAiB47G,EAAY34G,KAAKgB,SAE/ChB,KAAKsrd,0BACLtrd,KAAKwrd,iBAAgB,GACQ,aAAzBxrd,KAAKgB,QAAQgvB,SACbhwB,KAAKgB,QAAQ40B,aAAa,OAAQ51B,KAAKmL,MAE3CnL,KAAKgB,QAAQ40B,aAAa,OAAQ,WAClC51B,KAAKuoN,UAAY,IAAI9sM,IAAqBzb,KAAK+c,QAC/C,IAAI6tb,EAAa,CAAEz1W,YAAan1F,KAAKm1F,aAWrC,GAVAn1F,KAAK+zJ,KAAO,IAAI39G,IAAK,UAAWw0Z,EAAY5qc,KAAK+c,QACJ,KAAzC/c,KAAK+zJ,KAAKl9G,YAAY,gBACtB72C,KAAKk5B,cAAc,CAAEi8D,YAAan1F,KAAKm1F,aAAen1F,KAAK+zJ,KAAKl9G,YAAY,iBAAkB,GAE7F72C,KAAKgB,QAAQm7C,aAAa,OAC3Bn8C,KAAKgB,QAAQ40B,aAAa,KAAMn2B,YAAY,YAE3CO,KAAKgB,QAAQm7C,aAAa,SAC3Bn8C,KAAKgB,QAAQ40B,aAAa,OAAQ51B,KAAKgB,QAAQmuB,aAAa,OAEnC,UAAzBnvB,KAAKgB,QAAQgvB,SAAuBhwB,KAAK2rd,UAAW,CACpD3rd,KAAK6qd,eAAgB,EACrB7qd,KAAK+tM,SAAW/tM,KAAKmB,cAAc,YACnCnB,KAAKgB,QAAQP,WAAWo2B,aAAa72B,KAAK+tM,SAAU/tM,KAAKgB,SACzDhB,KAAKgB,QAAQ40B,aAAa,OAAQ,UAClC51B,KAAK+tM,SAASn4K,aAAa,OAAQ51B,KAAKgB,QAAQmuB,aAAa,SAC7DnvB,KAAKgB,QAAQq/B,gBAAgB,QAC7BrgC,KAAK+tM,SAASn4K,aAAa,OAAQ51B,KAAKgB,QAAQmuB,aAAa,SAC7DnvB,KAAKgB,QAAQq/B,gBAAgB,QAC7BrgC,KAAK+tM,SAASn4K,aAAa,KAAMn2B,YAAY,aAC7C,IAAIosd,EAAgB,CAAC,cAAe,WAAY,QAAS,WAAY,OAAQ,gBAC7E,IAASrxc,EAAQ,EAAGA,EAAQxa,KAAKgB,QAAQuyB,WAAW12B,OAAQ2d,IAAS,CACjE,IAAIoxc,EAAgB5rd,KAAKgB,QAAQuyB,WAAW/Y,GAAOk7F,SAC/C11G,KAAKgB,QAAQm7C,aAAayva,IAAkBjB,GAAcxsd,QAAQytd,GAAiB,GAC/D,OAAlBA,GAA4C,SAAlBA,GAA8C,iBAAlBA,IAExD5rd,KAAK+tM,SAASn4K,aAAag2b,EAAe5rd,KAAKgB,QAAQuyB,WAAW/Y,GAAOm7F,WACrEk2W,EAAc1td,QAAQytd,GAAiB,IACvC5rd,KAAKgB,QAAQq/B,gBAAgBurb,GAC7Bpxc,UAOxBowc,EAAQ1ud,UAAUsvd,gBAAkB,SAAUt0N,GAG1C,IAFA,IAESl5P,EAAK,EAAG8td,EAFL50N,EAAY95P,YAAkB4C,KAAKqyG,gBAAkB,GAAKn0G,OAAOjB,KAAK+C,KAAKqyG,gBACnF,CAAC,cAAe,WAAY,QAAS,WAAY,OAAQ,gBAC3Br0G,EAAK8td,EAAQjvd,OAAQmB,IAAM,CACzD,IAAIhB,EAAM8ud,EAAQ9td,GAClB,IAAKZ,YAAkB4C,KAAKgB,QAAQmuB,aAAanyB,IAC7C,OAAQA,GACJ,IAAK,WACD,GAAKI,YAAkB4C,KAAKgrd,sBAAuDhvd,IAAnCgE,KAAKgrd,eAAwB,SAAqB9zN,EAAW,CACzG,IAAI1+J,EAA6C,aAAnCx4F,KAAKgB,QAAQmuB,aAAanyB,IAA0D,KAAnCgD,KAAKgB,QAAQmuB,aAAanyB,IAClD,SAAnCgD,KAAKgB,QAAQmuB,aAAanyB,GAC9BgD,KAAKk5B,cAAc,CAAEs/D,QAASA,IAAY0+J,GAE9C,MACJ,IAAK,WACD,GAAK95P,YAAkB4C,KAAKgrd,sBAAwDhvd,IAApCgE,KAAKgrd,eAAyB,UAAqB9zN,EAAW,CAC1G,IAAI1gK,EAA8C,aAAnCx2F,KAAKgB,QAAQmuB,aAAanyB,IAA0D,KAAnCgD,KAAKgB,QAAQmuB,aAAanyB,IAChD,SAAnCgD,KAAKgB,QAAQmuB,aAAanyB,GACjCgD,KAAKk5B,cAAc,CAAEs9D,SAAUA,IAAa0gK,GAEhD,MACJ,IAAK,eACI95P,YAAkB4C,KAAKgrd,sBAA2Dhvd,IAAvCgE,KAAKgrd,eAA4B,aAAqB9zN,IAClGl3P,KAAKk5B,cAAc,CAAEi8D,YAAan1F,KAAKgB,QAAQm0F,cAAgB+hK,GAEnE,MACJ,IAAK,eACD,GAAK95P,YAAkB4C,KAAKgrd,sBAA4Dhvd,IAAxCgE,KAAKgrd,eAA6B,cAAqB9zN,EAAW,CAC9G,IAAI60N,EAAgD,QAA9B/rd,KAAKgB,QAAQyqd,aAAyB,MAAQ,KACpEzrd,KAAKk5B,cAAc,CAAEuyb,aAAcM,IAAoB70N,GAE3D,MACJ,IAAK,SACI95P,YAAkB4C,KAAKgrd,sBAAqDhvd,IAAjCgE,KAAKgrd,eAAsB,OAAqB9zN,IAC5Fl3P,KAAKk5B,cAAc,CAAE18B,MAAOwD,KAAKgB,QAAQxE,QAAU06P,GAEvD,MACJ,IAAK,QACI95P,YAAkB4C,KAAKgrd,sBAAoDhvd,IAAhCgE,KAAKgrd,eAAqB,MAAqB9zN,IAC3Fl3P,KAAKk5B,cAAc,CAAE/tB,KAAMnL,KAAKgB,QAAQmK,OAAS+rP,MAazE0zN,EAAQ1ud,UAAUwzB,OAAS,WACvB,IAAIs8b,EAAuBhsd,KAAKk2F,SAC3B94F,YAAkB4C,KAAKk2F,WAA+B,KAAlBl2F,KAAKk2F,WAC1C81X,EAAuBhsd,KAAKisd,uBAAuBjsd,KAAKk2F,WAEtD52F,eAAcU,KAAK6K,kBAoBrB7K,KAAKkrd,kBAAoBlrd,KAAKgB,QAC9BhB,KAAKird,eAAiB,CAAEn2X,UAAW90F,KAAKgB,QAAQ4yC,eAC5C5zC,KAAKu4F,kBAAoBv4F,KAAK2rd,YAC9B3rd,KAAKird,eAAe5zX,YAAcr3F,KAAKird,eAAen2X,UAAUxxF,cAAc,iBAC9EwwF,IAAM4B,mBAAmB11F,KAAKkrd,kBAAmBlrd,KAAKird,eAAe5zX,YAAar3F,KAAKird,eAAen2X,YAE9E,SAAxB90F,KAAKm0F,gBACLL,IAAMW,mBAAmBz0F,KAAKkrd,mBAGlCp3X,IAAMG,iBAAiB,CAAEjzF,QAAShB,KAAKkrd,kBAAmBvzX,QAAS,KAAM3C,UAAW,KAAMb,eAAgBn0F,KAAKm0F,eAAgBtgE,WAAY7zB,KAAK6zB,eA7BhJ7zB,KAAKkrd,kBAAqBlrd,KAAK6qd,cAAiB7qd,KAAK+tM,SAAW/tM,KAAKgB,QACrEhB,KAAKird,eAAiBn3X,IAAMwE,YAAY,CACpCt3F,QAAShB,KAAKkrd,kBACd/2X,eAAgBn0F,KAAKm0F,eACrBtgE,WAAY,CACR2kE,QAASx4F,KAAKw4F,QACd7xD,UAAW3mC,KAAK2mC,UAChBuvD,SAAU81X,EACVx1X,SAAUx2F,KAAKw2F,SACfrB,YAAan1F,KAAKm1F,YAClBoD,gBAAiBv4F,KAAKu4F,mBAG9Bv4F,KAAKurd,0BACDvrd,KAAK6qd,eACL7qd,KAAKkrd,kBAAkBzqd,WAAWo2B,aAAa72B,KAAKgB,QAAShB,KAAKkrd,oBAgB1Elrd,KAAKk0C,aACA92C,YAAkB4C,KAAKxD,SACxBs3F,IAAM/2F,SAASiD,KAAKxD,MAAOwD,KAAKkrd,kBAAmBlrd,KAAKm0F,eAAgBn0F,KAAKu4F,iBACzEv4F,KAAK6qd,gBACL7qd,KAAKgB,QAAQxE,MAAQwD,KAAKkrd,kBAAkB1ud,QAG/CY,YAAkB4C,KAAKxD,SACxBwD,KAAKksd,aAAelsd,KAAKxD,MACzBwD,KAAKmsd,mBAEiB,OAAtBnsd,KAAKyrd,cAA+C,KAAtBzrd,KAAKyrd,aACnCzrd,KAAKkrd,kBAAkBO,aAAezrd,KAAKyrd,aAErCrud,YAAkB4C,KAAKgrd,sBAA4Dhvd,IAAxCgE,KAAKgrd,eAA6B,cACnFhrd,KAAKg3F,iBAAiB,CAAC,iBAE3Bh3F,KAAK26J,cAAgB36J,KAAKxD,MAC1BwD,KAAK+qd,mBAAqB/qd,KAAKxD,MAC/BwD,KAAKkrd,kBAAkBhwb,aAAel7B,KAAKkrd,kBAAkB1ud,MAC7Ds3F,IAAM4E,SAAS14F,KAAK0vC,MAAO1vC,KAAKird,eAAen2X,WAC/C90F,KAAK+nC,kBAET6ib,EAAQ1ud,UAAUqvd,wBAA0B,WACxC,IAAKnud,YAAkB4C,KAAKqyG,gBACxB,IAAK,IAAIr0G,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAK+C,KAAKqyG,gBAAiBr0G,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC1E,IAAIhB,EAAMuG,EAAGvF,GACb,GAAI2sd,GAAcxsd,QAAQnB,IAAQ,EAC9B,GAAY,UAARA,EAAiB,CACjB,IAAIovd,EAAqBpsd,KAAKisd,uBAAuBjsd,KAAKqyG,eAAer1G,IAC9C,KAAvBovd,GACAv2b,YAAS,CAAC71B,KAAKird,eAAen2X,WAAYs3X,EAAmBzvd,MAAM,WAGtE,GAAY,UAARK,EAAiB,CACtB,IAAI8vM,EAAW9sM,KAAKird,eAAen2X,UAAU3lE,aAAanyB,GAC1D8vM,EAAY1vM,YAAkB0vM,GAC1B9sM,KAAKqyG,eAAer1G,GADmB8vM,EAAW9sM,KAAKqyG,eAAer1G,GAE1EgD,KAAKird,eAAen2X,UAAUl/D,aAAa54B,EAAK8vM,QAGhD9sM,KAAKird,eAAen2X,UAAUl/D,aAAa54B,EAAKgD,KAAKqyG,eAAer1G,MAMxF4td,EAAQ1ud,UAAUovd,wBAA0B,WACxC,IAAKlud,YAAkB4C,KAAKqyG,gBACxB,IAAK,IAAIr0G,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAK+C,KAAKqyG,gBAAiBr0G,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC1E,IAAIhB,EAAMuG,EAAGvF,GACT2sd,GAAcxsd,QAAQnB,GAAO,GAC7BgD,KAAKgB,QAAQ40B,aAAa54B,EAAKgD,KAAKqyG,eAAer1G,MAKnE4td,EAAQ1ud,UAAUwvd,eAAiB,SAAU3gT,EAAU50E,GACnDrC,IAAMmC,YAAYj2F,KAAKisd,uBAAuBlhT,GAAW,CAAC/qK,KAAKird,eAAen2X,WAAY90F,KAAKisd,uBAAuB91X,KAE1Hy0X,EAAQ1ud,UAAU+vd,uBAAyB,SAAUrkM,GACjD,IAAIjpR,EAASipR,EAIb,OAHKxqR,YAAkBwqR,IAAsC,KAAnBA,IACtCjpR,EAAUipR,EAAelrR,QAAQ,OAAQ,KAAM2vB,QAE5C1tB,GAEXisd,EAAQ1ud,UAAUiwd,gBAAkB,WAC3Bnsd,KAAKiuJ,WACNjuJ,KAAKkrd,kBAAkBt1b,aAAa,QAAS51B,KAAKksd,eAG1DtB,EAAQ1ud,UAAUg4C,WAAa,WAC3BtrB,IAAaG,IAAI/oB,KAAKkrd,kBAAmB,QAASlrd,KAAKqsd,aAAcrsd,MACrE4oB,IAAaG,IAAI/oB,KAAKkrd,kBAAmB,OAAQlrd,KAAKuqT,gBAAiBvqT,MACvE4oB,IAAaG,IAAI/oB,KAAKkrd,kBAAmB,QAASlrd,KAAKssd,aAActsd,MACrE4oB,IAAaG,IAAI/oB,KAAKkrd,kBAAmB,SAAUlrd,KAAKusd,cAAevsd,MACnEA,KAAK8qd,QACLlic,IAAaG,IAAI/oB,KAAK2/J,YAAa,QAAS3/J,KAAKwsd,UAAWxsd,MAEhEA,KAAKigK,kBACA7iK,YAAkB4C,KAAKird,eAAen2X,UAAUxxF,cAAc,mBAA6C,SAAxBtD,KAAKm0F,gBACtFn0F,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,eACpDvyB,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,cACjD3J,IAAaG,IAAK/oB,KAAKird,eAAen2X,UAAUxxF,cAAc,iBAAmB,iBAAkBtD,KAAKysd,iBAAkBzsd,OAGlI4qd,EAAQ1ud,UAAUuwd,iBAAmB,WACjCzsd,KAAKird,eAAen2X,UAAU9+D,UAAUjN,IAAI,iBAC5C,IAAI0sD,EAAQz1E,KAAKird,eAAen2X,UAAUxxF,cAAc,iBACnDlG,YAAkBq4E,KACnBA,EAAMz/C,UAAUjN,IAAI,eAChB0sD,EAAMz/C,UAAUzD,SAAS,mBACzBkjD,EAAMz/C,UAAUvM,OAAO,oBAInCmhc,EAAQ1ud,UAAUwwd,WAAa,SAAUlwd,GACrC,IAAI2ud,EAAenrd,KAAKw4B,oBACxBx4B,KAAKw4B,qBAAsB,EAC3Bx4B,KAAKxD,MAAQA,EACbwD,KAAKw4B,oBAAsB2yb,GAE/BP,EAAQ1ud,UAAUswd,UAAY,WAO1B,GANIxsd,KAAKiuJ,UACLjuJ,KAAK0sd,WAAW,IAGhB1sd,KAAK0sd,WAAW1sd,KAAKksd,eAEpB9ud,YAAkB4C,KAAKird,gBAAiB,CACzC,IAAIx1Y,EAAQz1E,KAAKird,eAAen2X,UAAUxxF,cAAc,iBACnDlG,YAAkBq4E,KACdr4E,YAAkB4C,KAAKksd,eAAuC,KAAtBlsd,KAAKksd,cAC9Cz2Y,EAAMz/C,UAAUjN,IAAI,kBACpB0sD,EAAMz/C,UAAUvM,OAAO,gBAEI,KAAtBzpB,KAAKksd,eACVz2Y,EAAMz/C,UAAUjN,IAAI,eACpB0sD,EAAMz/C,UAAUvM,OAAO,sBAKvCmhc,EAAQ1ud,UAAUmwd,aAAe,SAAUpsd,GACvC,IAAI6iB,EAAY,CACZgyE,UAAW90F,KAAKird,eAAen2X,UAC/BhuE,MAAO7mB,EACPzD,MAAOwD,KAAKxD,OAEhBwD,KAAK+pB,QAAQ,QAASjH,IAE1B8nc,EAAQ1ud,UAAUquT,gBAAkB,SAAUtqT,GACb,OAAvBD,KAAK26J,eAAyC,OAAf36J,KAAKxD,OAAmD,KAAjCwD,KAAKkrd,kBAAkB1ud,OAC9EwD,KAAK26J,gBAAkB36J,KAAKkrd,kBAAkB1ud,OAC/CwD,KAAKqrd,iBAAiBprd,GAAM,GAEhC,IAAI6iB,EAAY,CACZgyE,UAAW90F,KAAKird,eAAen2X,UAC/BhuE,MAAO7mB,EACPzD,MAAOwD,KAAKxD,OAEhBwD,KAAK+pB,QAAQ,OAAQjH,IAEzB8nc,EAAQ1ud,UAAUowd,aAAe,SAAUrsd,GAEvC,IACI6iB,EAAY,CACZgE,MAAO7mB,EACPzD,MAAOwD,KAAKkrd,kBAAkB1ud,MAC9Bm+J,cAAe36J,KAAK+qd,mBACpBj2X,UAAW90F,KAAKird,eAAen2X,WAEnC90F,KAAK+qd,mBAAqB/qd,KAAKkrd,kBAAkB1ud,MAE7CwD,KAAKiuJ,YATQjuJ,KAUF2sd,YAAY,CAAEnwd,MAAOwD,KAAKkrd,kBAAkB1ud,QACvDwD,KAAKgyJ,eAAgB,GAErBhyJ,KAAKwlS,QACLxlS,KAAKgyJ,eAAgB,GAEzBhyJ,KAAK+pB,QAAQ,QAASjH,GACtB7iB,EAAKq7M,mBAETsvQ,EAAQ1ud,UAAUqwd,cAAgB,SAAUtsd,GACxCD,KAAKk5B,cAAc,CAAE18B,MAAOwD,KAAKkrd,kBAAkB1ud,QAAS,GAC5DwD,KAAKqrd,iBAAiBprd,GAAM,GAC5BA,EAAKq7M,mBAETsvQ,EAAQ1ud,UAAUmvd,iBAAmB,SAAUvkc,EAAO8lc,GAClD,IAAI9pc,EAAY,CACZgE,MAAOA,EACPtqB,MAAOwD,KAAKxD,MACZm+J,cAAe36J,KAAK26J,cACpB7lE,UAAW90F,KAAKird,eAAen2X,UAC/B+3X,cAAeD,IAA4B,EAC3CxxT,aAAcwxT,IAA4B,GAE9C5sd,KAAKgyJ,eAAgB,EACrBhyJ,KAAK+pB,QAAQ,SAAUjH,GACvB9iB,KAAK26J,cAAgB36J,KAAKxD,OAE9Boud,EAAQ1ud,UAAU+jK,eAAiB,WAC3BjgK,KAAKu4F,iBAAsD,aAAnCv4F,KAAKkrd,kBAAkBl7b,UAC3ChwB,KAAKw4F,QACL5vE,IAAaG,IAAI/oB,KAAKird,eAAe5zX,YAAa,uBAAwBr3F,KAAK8sd,kBAAmB9sd,MAGlG4oB,IAAaa,OAAOzpB,KAAKird,eAAe5zX,YAAa,uBAAwBr3F,KAAK8sd,qBAI9FlC,EAAQ1ud,UAAU4wd,kBAAoB,SAAUhmc,GAE5C,GADAA,EAAMwlB,kBACAtsC,KAAKird,eAAe5zX,YAAYrhE,UAAUzD,SAnfvC,qBAmf8D,CACnEuhE,IAAM/2F,SAAS,GAAIiD,KAAKkrd,kBAAmBlrd,KAAKm0F,eAAgBn0F,KAAKu4F,iBACjEv4F,KAAK6qd,gBACL7qd,KAAKgB,QAAQxE,MAAQwD,KAAKkrd,kBAAkB1ud,OAEhDwD,KAAKk5B,cAAc,CAAE18B,MAAOwD,KAAKkrd,kBAAkB1ud,QAAS,GAC5D,IAAIsmB,EAAY,CACZgE,MAAOA,EACPtqB,MAAOwD,KAAKkrd,kBAAkB1ud,MAC9Bm+J,cAAe36J,KAAK+qd,mBACpBj2X,UAAW90F,KAAKird,eAAen2X,WAEnC90F,KAAK+pB,QAAQ,QAASjH,GACtB9iB,KAAK+qd,mBAAqB/qd,KAAKkrd,kBAAkB1ud,MACjDwD,KAAKqrd,iBAAiBvkc,GAAO,KAGrC8jc,EAAQ1ud,UAAUgmI,aAAe,WAC7Bt5G,IAAaa,OAAOzpB,KAAKkrd,kBAAmB,QAASlrd,KAAKqsd,cAC1Dzjc,IAAaa,OAAOzpB,KAAKkrd,kBAAmB,OAAQlrd,KAAKuqT,iBACzD3hS,IAAaa,OAAOzpB,KAAKkrd,kBAAmB,QAASlrd,KAAKssd,cAC1D1jc,IAAaa,OAAOzpB,KAAKkrd,kBAAmB,SAAUlrd,KAAKusd,eACvDvsd,KAAK8qd,QACLlic,IAAaa,OAAOzpB,KAAK2/J,YAAa,QAAS3/J,KAAKwsd,YAEnDpvd,YAAkB4C,KAAKird,eAAen2X,UAAUxxF,cAAc,mBAA6C,SAAxBtD,KAAKm0F,gBACtFn0F,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,cACpDvyB,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,eACjD3J,IAAaa,OAAQzpB,KAAKird,eAAen2X,UAAUxxF,cAAc,iBAAmB,iBAAkBtD,KAAKysd,mBAUnH7B,EAAQ1ud,UAAUif,QAAU,WACxBnb,KAAKkiI,eACC5iI,eAAcU,KAAK6K,iBAiBrB7K,KAAKird,eAAiB,MAhBO,UAAzBjrd,KAAKgB,QAAQgvB,SAAuBhwB,KAAK2rd,YACzC96b,YAAO7wB,KAAKird,eAAen2X,UAAUvzF,qBAAqB,YAAY,IACtEvB,KAAKkrd,kBAAoBlrd,KAAKgB,QAC9BhB,KAAKgB,QAAQq/B,gBAAgB,SAEjCrgC,KAAKkrd,kBAAkB1ud,MAAQwD,KAAKkrd,kBAAkBhwb,aACtDl7B,KAAKkrd,kBAAkBl1b,UAAUvM,OAAO,WACxCzpB,KAAKg3F,iBAAiB,CAAC,mBAAoB,gBAAiB,gBAAiB,oBACxE55F,YAAkB4C,KAAKird,kBACxBjrd,KAAKird,eAAen2X,UAAUwC,sBAAsB,WAAYt3F,KAAKkrd,mBACrEr6b,YAAO7wB,KAAKird,eAAen2X,YAE/B90F,KAAKird,eAAiB,KACtB9rb,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,QActC4qd,EAAQ1ud,UAAUm9F,QAAU,SAAUtrD,EAAUurD,GAC5CxF,IAAMuF,QAAQtrD,EAAUurD,EAAOt5F,KAAKird,eAAen2X,UAAW90F,KAAKkrd,kBAAmBlrd,KAAKmB,gBAO/Fypd,EAAQ1ud,UAAUysC,eAAiB,WAE/B,OAAO3oC,KAAKqpC,aADI,CAAC,WAUrBuhb,EAAQ1ud,UAAU+6F,cAAgB,SAAU1jE,GACxC,IAAK,IAAIv1B,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKs2B,GAAav1B,EAAKuF,EAAG1G,OAAQmB,IAAM,CACjE,IAAIhB,EAAMuG,EAAGvF,GACD,aAARhB,GACAgD,KAAKk5B,cAAc,CAAEs/D,SAAS,IAAS,GACvC1E,IAAM6C,WAAW32F,KAAKw4F,QAASx4F,KAAKkrd,kBAAmBlrd,KAAKm0F,eAAgBn0F,KAAKird,eAAen2X,YAEnF,aAAR93F,GACLgD,KAAKk5B,cAAc,CAAEs9D,UAAU,IAAQ,GACvC1C,IAAMwC,YAAYt2F,KAAKw2F,SAAUx2F,KAAKkrd,oBAEzB,UAARlud,EACLgD,KAAKkrd,kBAAkBl1b,UAAUjN,IAAIwK,EAAWv2B,IAEnC,gBAARA,GACLgD,KAAKk5B,cAAc,CAAEi8D,YAAa5hE,EAAWv2B,KAAQ,GACrD82F,IAAMsC,eAAep2F,KAAKm1F,YAAan1F,KAAKkrd,qBAE/B,SAARlud,GAAkBgD,KAAKkrd,kBAAkBl7b,QAC9ChwB,KAAKkrd,kBAAkBt1b,aAAa54B,EAAKu2B,EAAWv2B,OAahE4td,EAAQ1ud,UAAU86F,iBAAmB,SAAUzjE,GAC3C,IAAK,IAAIv1B,EAAK,EAAG+5G,EAAexkF,EAAYv1B,EAAK+5G,EAAal7G,OAAQmB,IAAM,CACxE,IAAIhB,EAAM+6G,EAAa/5G,GACX,aAARhB,GACAgD,KAAKk5B,cAAc,CAAEs/D,SAAS,IAAQ,GACtC1E,IAAM6C,WAAW32F,KAAKw4F,QAASx4F,KAAKkrd,kBAAmBlrd,KAAKm0F,eAAgBn0F,KAAKird,eAAen2X,YAEnF,aAAR93F,GACLgD,KAAKk5B,cAAc,CAAEs9D,UAAU,IAAS,GACxC1C,IAAMwC,YAAYt2F,KAAKw2F,SAAUx2F,KAAKkrd,oBAEzB,gBAARlud,GACLgD,KAAKk5B,cAAc,CAAEi8D,YAAa,OAAQ,GAC1CrB,IAAMsC,eAAep2F,KAAKm1F,YAAan1F,KAAKkrd,oBAG5Clrd,KAAKkrd,kBAAkB7qb,gBAAgBrjC,KASnD4td,EAAQ1ud,UAAUimI,QAAU,WACpB3hI,SAASo1F,gBAAkB51F,KAAKkrd,mBAAqBlrd,KAAKw4F,UAC1Dx4F,KAAKkrd,kBAAkB5od,SACnBtC,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,kBAC9CvyB,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,cACjDvyB,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,cACpDsD,YAAS,CAAC71B,KAAKird,eAAen2X,WAAY,CAAC41X,OASvDE,EAAQ1ud,UAAUsjK,SAAW,WACrBh/J,SAASo1F,gBAAkB51F,KAAKkrd,mBAAqBlrd,KAAKw4F,UAC1Dx4F,KAAKkrd,kBAAkB3hT,QACnBvpK,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,kBAC9CvyB,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,cACjDvyB,KAAKird,eAAen2X,UAAU9+D,UAAUzD,SAAS,cACpD6D,aAAY,CAACp2B,KAAKird,eAAen2X,WAAY,CAAC41X,OAI1D/rb,GAAW,CACP3B,YAAS,SACV4tb,EAAQ1ud,UAAW,YAAQ,GAC9ByiC,GAAW,CACP3B,aAAS,IACV4tb,EAAQ1ud,UAAW,gBAAY,GAClCyiC,GAAW,CACP3B,YAAS,OACV4tb,EAAQ1ud,UAAW,aAAS,GAC/ByiC,GAAW,CACP3B,YAAS,UACV4tb,EAAQ1ud,UAAW,sBAAkB,GACxCyiC,GAAW,CACP3B,YAAS,KACV4tb,EAAQ1ud,UAAW,gBAAY,GAClCyiC,GAAW,CACP3B,YAAS,OACV4tb,EAAQ1ud,UAAW,mBAAe,GACrCyiC,GAAW,CACP3B,YAAS,OACV4tb,EAAQ1ud,UAAW,oBAAgB,GACtCyiC,GAAW,CACP3B,YAAS,KACV4tb,EAAQ1ud,UAAW,sBAAkB,GACxCyiC,GAAW,CACP3B,aAAS,IACV4tb,EAAQ1ud,UAAW,iBAAa,GACnCyiC,GAAW,CACP3B,aAAS,IACV4tb,EAAQ1ud,UAAW,eAAW,GACjCyiC,GAAW,CACP3B,aAAS,IACV4tb,EAAQ1ud,UAAW,uBAAmB,GACzCyiC,GAAW,CACP3B,aAAS,IACV4tb,EAAQ1ud,UAAW,yBAAqB,GAC3CyiC,GAAW,CACP3B,YAAS,OACV4tb,EAAQ1ud,UAAW,aAAS,GAC/ByiC,GAAW,CACPp/B,eACDqrd,EAAQ1ud,UAAW,eAAW,GACjCyiC,GAAW,CACPp/B,eACDqrd,EAAQ1ud,UAAW,iBAAa,GACnCyiC,GAAW,CACPp/B,eACDqrd,EAAQ1ud,UAAW,cAAU,GAChCyiC,GAAW,CACPp/B,eACDqrd,EAAQ1ud,UAAW,YAAQ,GAC9ByiC,GAAW,CACPp/B,eACDqrd,EAAQ1ud,UAAW,aAAS,GAC/ByiC,GAAW,CACPp/B,eACDqrd,EAAQ1ud,UAAW,aAAS,GAC/B0ud,EAAUjsb,GAAW,CACjBlB,KACDmtb,GAxsBsB,CA0sB3Btkb,KChvBEjI,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAsBzCsub,GAAiC,SAAU5tb,GAE3C,SAAS4tb,IACL,OAAkB,OAAX5tb,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAqB/D,OAvBAq+B,GAAU0ub,EAAiB5tb,GAI3B4tb,EAAgB7wd,UAAUwiC,OAAS,SAAUz+B,GACzC,IAAIi8C,EAAO,CACP/wC,KAAM,OAAQ3O,MAAQY,YAAkB6C,EAAKzD,OAAsB,GAAbyD,EAAKzD,MAAYw3B,MAAO,cAAgB/zB,EAAKw5D,OAAO0qC,WAE9G,OAAOj2B,YAAkBluE,KAAKO,OAAQN,EAAKw5D,OAAQ,gCAAiCvd,IAExF6wa,EAAgB7wd,UAAUswY,KAAO,SAAUxrY,GACvC,OAAOA,EAAQxE,OAEnBuwd,EAAgB7wd,UAAUiG,MAAQ,SAAUlC,GACxC,IAAIk/D,EAAMl/D,EAAKw5D,OACX0wZ,EAA6C,WAAlCnqd,KAAKO,OAAOm/D,aAAaviD,KACxCnd,KAAKzD,IAAM,IAAIqud,GAAQtsd,YAAO,CAC1B0C,QAASf,EAAKe,QAASmzF,eAAkD,WAAlCn0F,KAAKO,OAAOm/D,aAAaviD,KAAoB,QAAU,SAC9FwpB,UAAW3mC,KAAKO,OAAOomC,UAAW6xD,QAASt5B,YAAWj/D,EAAKw5D,OAAQx5D,EAAKm6F,YAAan6F,EAAKe,SAC1Fm0F,YAAag1X,EAAW,GAAKlqd,EAAKw5D,OAAOsD,YAC1CoC,EAAIkpC,KAAKxsG,SACZmE,KAAKzD,IAAIwqC,SAAS9mC,EAAKe,UAEpB+rd,EAxB0B,CAyBnCpD,IClCEqD,GAA4B,WAC5B,SAASA,EAAWzsd,EAAQw/D,EAAgBqmO,GACxCpmS,KAAKC,KAAO,GACZD,KAAKitd,mBAAqB,GAC1Bjtd,KAAKO,OAASA,EACdP,KAAKomS,SAAWA,EAChBpmS,KAAK+/D,eAAiBA,EACtB//D,KAAKupB,mBA4hBT,OA1hBAyjc,EAAW9wd,UAAUwpJ,aAAe,SAAU7kJ,GAC1C,IAAIo8B,EAASp8B,EAAEo8B,OACXg9B,EAAOj6D,KAAKO,QACTo9D,aAAa1gC,EAAQo/B,MACxBsB,aAAaA,aAAa1gC,EAAQo/B,KAAuB,UAAU5iD,KAAOwgD,EAAKj5D,QAAQyY,IAASwgD,EAAKuS,YAClG7O,aAAa1gC,EAAQo/B,QAA8BsB,aAAa1gC,EAAQ,sBAC3Ej9B,KAAK2rE,SAAWhO,aAAa1gC,EAAQo/B,KAC/BlmD,SAAS8mB,EAAO2W,cAAczkB,aAAaktC,KAAwB,KAAO,EAC5EpC,EAAKooC,QACLpoC,EAAKyiF,WAAW+T,YAI5Bu8T,EAAW9wd,UAAUsuT,gBAAkB,SAAU3pT,GACzC88D,aAAa98D,EAAEo8B,OAAQo/B,MAAqBr8D,KAAKO,OAAOm/D,aAAawtZ,qBACrEltd,KAAKO,OAAOm8I,WAAWoqK,UAAUnpP,aAAa98D,EAAEo8B,OAAQo/B,OAUhE2wZ,EAAW9wd,UAAUixd,aAAe,SAAUtsd,GAC1Cb,KAAKO,OAAO8hG,QAAS,EAErB,OAAQxhG,EAAEu5F,aACN,IAAK,QACKp6F,KAAKO,OAAOqvG,qBAA8D,aAAvC5vG,KAAKO,OAAOmjG,kBAAkBv4F,OAC9DnL,KAAKO,OAAOwzS,oBACC,SAAdlzS,EAAQ,QACRb,KAAKO,OAAOm/S,UAAU,GAG9B1/S,KAAKO,OAAOwpB,QAAQhD,IAAuBzoB,YAAOuC,EAAG,CACjDu5F,YAAa,OACbjvF,KAAM4b,OAEV,MACJ,IAAK,SACD/mB,KAAKO,OAAOwpB,QAAQhD,IAAuBzoB,YAAOuC,EAAG,CACjDu5F,YAAa,SACbjvF,KAAM4b,OAEL/mB,KAAKO,OAAOqvG,qBACb5vG,KAAKO,OAAOm/S,UAAU1/S,KAAKotd,gBAK3CJ,EAAW9wd,UAAUmxd,YAAc,SAAUhmB,EAAYp8X,EAAQ0rR,GAG7D,IAFA,IAAI22H,EAActtd,KAAKO,OAAOonE,0BAC1B4lZ,EAAmB,GACd3wd,EAAI,EAAGA,EAAI0wd,EAAYzwd,OAAQD,IACpC2wd,EAAiB3rd,KAAKm5B,YAAUuyb,EAAY1wd,GAAIyqc,IAOpD,MALW,CACPzxT,WAAY03U,EAAaviP,gBAAiBwiP,EAAkBnzX,YAAa,YACzE64H,QAASo0O,EAAY17X,SAAU3rE,KAAK2rE,SAAUxgE,KAAM,OAAQ4X,QAAQ,EACpEswC,eAAgB4X,GAAUA,EAAO5X,eAAgBp2B,YAAQjhC,EAAW26V,SAAUA,IAItFq2H,EAAW9wd,UAAU4qT,UAAY,SAAUr5O,GACvC,IAAI1tE,EAAQC,KACRi6D,EAAOj6D,KAAKO,OAEhB,GADAP,KAAK2rE,SAAW3rE,KAAKotd,aAAej3c,SAASs3D,EAAGt+C,aAAaktC,KAAwB,IACjFpC,EAAK2J,sBAAwB3J,EAAKwyC,wBAAyB,CAC3D,IAAIz7E,EAAW,yBAA2BhxB,KAAK2rE,SAAW,KAE1D,IADiB3rE,KAAKO,OAAOS,QAAQsC,cAAc0tB,GAE/C,OAGR,IAAInwB,EAAI,CAAEga,UAAM7e,EAAWwe,MAAOxa,KAAK2rE,SAAUgrR,UAAU,GAE3D,GADA32V,KAAKO,OAAOyZ,OAAO+M,KAAqClmB,GACpD8iE,YAAgB1J,GAAO,CACvB,IAAIisY,EAAOjsY,EAAKmoP,oBAAoB30O,EAAGt+C,aAAa,aACpDnvB,KAAKuwJ,aAAe21S,EAAKrrb,UAEnB7a,KAAKuwJ,eAAiBvwJ,KAAKO,OAAOqjE,uBAAwB5jE,KAAKO,OAAOksG,wBAGtEzsG,KAAKO,OAAOqjE,uBAClB5jE,KAAKuwJ,aAAejyJ,YAAO,GAAI,GAAI27D,EAAK2N,wBAAwB5nE,KAAK2rE,WAAW,IAHhF3rE,KAAKuwJ,aAAe1vJ,EAAEga,KAK1B,IAAIwsb,EAAa/oc,YAAO,GAAI,GAAIuC,EAAEga,MAAQ7a,KAAKuwJ,cAAc,GAC7DvwJ,KAAKvE,IAAMgyE,EAAGt+C,aAAa,YAC3B,IAAI87C,EAAShR,EAAKmoP,oBAAoBpiT,KAAKvE,KACvCwE,EAAOD,KAAKqtd,YAAYhmB,EAAYp8X,EAAQpqE,EAAE81V,UAClD12V,EAAK2qD,IAAM6iB,EACNxtE,EAAK02V,SAYN32V,KAAKwtd,kBAAkBvtd,EAAMwtE,IAX7BztE,KAAKO,OAAOyZ,OAAO+M,KAAoC,CAAEtrB,IAAKuE,KAAKvE,IAAKgyd,SAAUztd,KAAKuwJ,aAAcm9T,YAAa1td,KAAKqtd,YAAYlxd,KAAK6D,MAAOomS,SAAUpmS,KAAKomS,WAC9JnsO,EAAKlwC,QAAQhD,IAAkB9mB,GAAM,SAAU0td,GAC3CA,EAAcxid,KAAO,cACrB8uD,EAAKlwC,QAAQhD,IAAoB4mc,GAAe,SAAUC,GACjDA,EAAS7qc,QACVhjB,EAAMytd,kBAAkBI,EAAUngZ,WAStDu/Y,EAAW9wd,UAAUsxd,kBAAoB,SAAUI,EAAUngZ,GACzD,IAAIxT,EAAOj6D,KAAKO,OAChB05D,EAAKooC,QAAS,EACdurX,EAAShja,IAAMgja,EAAShja,IAAMgja,EAAShja,IAAM6iB,EACd,WAA3BxT,EAAKyF,aAAaviD,MAClB88C,EAAK6xO,iBAEsB,WAA3B7xO,EAAKyF,aAAaviD,MAAqB88C,EAAKs1O,kBAC5Ct1O,EAAKs1O,gBAAgB7zI,cAAe,EACpCkyT,EAAShja,IAAI50B,UAAUjN,IAAI,iBAE/B/oB,KAAKomS,SAASvoM,OAAO+vX,GACrB5td,KAAKvE,IAAMgyE,EAAGt+C,aAAa,YAC3B8qC,EAAKyiF,WAAWmxU,sBAChBD,EAASzid,KAAO,iBAChB8uD,EAAKlwC,QAAQhD,IAAuB6mc,GACpC5td,KAAKC,KAAO2td,EACR5td,KAAKO,OAAO6pI,eACZpqI,KAAKO,OAAOyZ,OAAO+M,KAAqB,CAAE2lH,KAAM,cAGxDsgV,EAAW9wd,UAAUukJ,UAAY,SAAUjmI,EAAOK,GAC9C,IAAI9a,EAAQC,KACRi6D,EAAOj6D,KAAKO,OAChBP,KAAKotd,aAAe5yc,EACpB,IAAIva,EAAO,CACPm6F,YAAa,OAAQt0D,OAAQ,OAAQ36B,KAAM4b,IAAoBlM,KAAMA,EAAMkI,QAAQ,EACnFwtI,aAAct2F,EAAK2N,wBAAwBptD,GAC3CowC,IAAKqP,EAAKk6E,cAAc35H,IAE5By/C,EAAKouF,cACLpuF,EAAKjgD,OAAO+M,KAAmB9mB,GAC3BA,EAAK0a,QACL1a,EAAK0a,QAAQC,MAAK,WAAc,OAAOq/C,EAAK/yB,aAAchsB,OAAM,SAAUra,GAAK,OAAOd,EAAM+td,OAAOjtd,MAGnGo5D,EAAK/yB,WAGb8lb,EAAW9wd,UAAU+uT,iBAAmB,WACpC,IAAIhxP,EAAOj6D,KAAKO,OACZwtd,EAAU9zZ,EAAKyiF,WAAWuuK,mBAC1B+iK,EAAiB,CACjBP,SAAUztd,KAAKuwJ,aAAcw9T,SAAS,EAAME,QAASjud,KAAKotd,aAAcc,OAAQlud,KAAKmud,eAGzF,OADAl0Z,EAAKjgD,OAAO+M,KAA4Binc,GAChCD,GAAWC,EAAeD,SAEtCf,EAAW9wd,UAAUu0J,QAAU,WAC3B,IAAIx2F,EAAOj6D,KAAKO,OAChB,GAAKP,KAAKO,OAAO8hG,QAAWriG,KAAKirT,mBAAjC,CAGA,IAAIo8I,EAAa/oc,YAAO,GAAI,GAAI0B,KAAKuwJ,cAAc,GAC/CtwJ,EAAO3B,YAAO0B,KAAKC,KAAM,CACzBm6F,YAAa,OAAQjvF,KAAM4b,IAAoBlM,KAAMwsb,EAAYtkb,QAAQ,EACzEwtI,aAAcvwJ,KAAKuwJ,aAAcywE,YAAa/mK,EAAK8kF,iBAAkB1rF,eAAgB,KAErF74C,EAAiC,UAAzBy/C,EAAKiQ,gBAA8B,EAAI,EAC/CkkZ,EAAmC,WAA3Bn0Z,EAAKyF,aAAaviD,KAC1Bkxc,EAAaj3b,aAAO,IAAM6iC,EAAKj5D,QAAQyY,GAAK,sBAAuBjZ,UACnE8td,EAAUF,EAAQC,EAAW/qd,cAAc,eAAiB22D,EAAKj5D,QAAQiuB,uBAAuB,cAAczU,GAC9GK,EAAO,CACP8jI,YAAargJ,YAAO,GAAI,GAAI0B,KAAKuwJ,cAAc,GAAO3R,OAAO,EAAO+3M,UAAU,EAAOlmM,SAAS,GAYlG,GAVAzwJ,KAAKO,OAAOyZ,OAAO+M,KAAuBlM,IACrC7a,KAAKO,OAAOqjE,sBAAwB5jE,KAAKO,OAAOksG,0BACZ,WAAlCzsG,KAAKO,OAAOm/D,aAAaviD,MAAqBjf,OAAOjB,KAAK4d,EAAK8jI,aAAa9hJ,OAC3EmD,KAAKO,OAAO8hG,SACZriG,KAAKitd,mBAAqB5lB,EAAapnc,EAAK4a,KAAOA,EAAK8jI,aAI5D0oT,EAAaptY,EAAKyiF,WAAW03M,qBAAqBk6H,EAASjnB,GAE3DptY,EAAKqK,gBAA6C,WAA3BrK,EAAKyF,aAAaviD,KAAmB,CAC5D,IAAIoxc,EAAUt0Z,EAAKqyE,0BAA0BhpI,cAAc,eACvDkrd,EAAUv0Z,EAAKiyE,2BAA2B5oI,cAAc,eACxDmrd,EAAU,CAACF,GAAWC,GACtBE,OAAW,EACXC,OAAW,EACXhI,EAAQ,GACR1sZ,EAAKiQ,kBAAoB7N,MACzBqyZ,EAAWz0Z,EAAKw/E,uBAAuBn2I,cAAc,eACrDqrd,EAAW10Z,EAAKgyP,wBAAwB3oT,cAAc,eACtDqjd,EAAQ,CAAC+H,GAAYC,IAEzB5jZ,YAAkB/qE,KAAKO,QAAQ,SAAU+pE,EAAWx0C,GAChD,IAAK,IAAI93B,EAAK,EAAGgiC,EAAalK,EAAU93B,EAAKgiC,EAAWnjC,OAAQmB,IAAM,CAClE,IAAIszB,EAAM0O,EAAWhiC,GACjBszB,IACA+1a,EAAaptY,EAAKyiF,WAAW03M,qBAAqB9iU,EAAK+1a,OAGhE,CAAC,GAAIonB,EAAS9H,IAErB,IAAIiI,EAAY,GAAGvtd,MAAMC,KAAK24D,EAAKj5D,QAAQiuB,uBAAuBotC,MAAqBx/D,OAIvF,GAHKge,EAAK+jI,QAAS1gJ,OAAOjB,KAAK+C,KAAKitd,oBAAoBpwd,QAAW+xd,IAC/DA,EAAY,GAEZR,EAAQC,EAAWp/b,uBAAuBotC,KAAoBx/D,OAAS+xd,EACvE3ud,EAAK6lC,OAAS,OACdm0B,EAAKlwC,QAAQhD,IAAoB9mB,GAAM,SAAU4ud,GACzCA,EAAY9rc,SAGhBk3C,EAAKouF,cACLpuF,EAAKjgD,OAAO+M,KAAmB8nc,YAUnC,GANA5ud,EAAK6lC,OAAS,MACd7lC,EAAK+gO,YAAc,EACnB/gO,EAAKua,MAAQxa,KAAKmud,cAClBl0Z,EAAKjgD,OAAO+M,KAAiC,IAC7CkzC,EAAKjgD,OAAO+M,KAAqB9mB,GACjCD,KAAKmud,cAAgB,KACjBlud,EAAK8iB,OACL,SAIZiqc,EAAW9wd,UAAU4yd,gBAAkB,WACnC,IAAI70Z,EAAOj6D,KAAKO,OAChB05D,EAAKyiF,WAAWqyU,iBAChB90Z,EAAKyiF,WAAWzqF,cAChBjyD,KAAKO,OAAOyZ,OAAO+M,KAAsB,KAE7Cimc,EAAW9wd,UAAU8yd,YAAc,SAAU/ud,GACzC,IAAIF,EAAQC,KACRC,EAAK0a,QACL1a,EAAK0a,QAAQC,MAAK,SAAU/Z,GAAK,OAAOd,EAAMkvd,OAAOpud,EAAGZ,MAAUib,OAAM,SAAUra,GAAK,OAAOd,EAAM+td,OAAOjtd,MAG3Gb,KAAKm2V,YAAYl2V,EAAK4a,KAAM5a,IAGpC+sd,EAAW9wd,UAAU+yd,OAAS,SAAUpud,EAAGZ,GACvCD,KAAKm2V,YAAYt1V,EAAGZ,IAExB+sd,EAAW9wd,UAAU4xd,OAAS,SAAUjtd,GACpCb,KAAKkvd,YAAYrud,IAErBmsd,EAAW9wd,UAAU06V,sBAAwB,SAAU/7U,GAC9C7a,KAAKO,OAAOqjE,sBAAyB5jE,KAAKO,OAAOksG,0BAClDzsG,KAAKO,OAAOqnE,wBAAwB5nE,KAAKotd,cAAgBvyc,IAGjEmyc,EAAW9wd,UAAUizd,eAAiB,SAAUlvd,GACxCD,KAAKO,OAAOm8I,WAAWy3M,UAAYn0V,KAAKO,OAAOm8I,WAAWy3M,QAAQh7T,cAClEn5B,KAAK8ud,kBACL9ud,KAAKovd,iBACiC,WAAlCpvd,KAAKO,OAAOm/D,aAAaviD,MAAqC,QAAhBld,EAAK6lC,QACnD9lC,KAAKO,OAAOgvS,iBACZvvS,KAAKO,OAAOS,QAAQsC,cAAc,iBAAiB0yB,UAAUvM,OAAO,kBAIhFujc,EAAW9wd,UAAUi6V,YAAc,SAAUt1V,EAAGZ,GAC5C,IAAK7C,YAAkByD,MAAQA,aAAazC,OAAQ,CAEhD6B,EAAK4a,KAAOvc,YAAO,GAAIA,YAAO,GAAI2B,EAAY,QAAGA,EAAK4a,MAAOha,GAEjEb,KAAKmvd,eAAelvd,GACpBD,KAAKO,OAAOwpB,QAAQhD,IAAwB9mB,GAC5CA,EAAKkL,KAAO4b,IACZ/mB,KAAKO,OAAO8hG,QAAS,EACrBriG,KAAKovG,WAAWnvG,EAAK4a,MACrB7a,KAAKO,OAAOyZ,OAAO+M,KAAiC9mB,GACpDD,KAAKO,OAAOm8I,WAAW+pU,aAAaxmd,EAAK2qD,KACzC5qD,KAAKO,OAAOm8I,WAAW2yU,WAAY,EACnCrvd,KAAK42V,sBAAsB32V,EAAK4a,MAChC7a,KAAKsvd,iBACLtvd,KAAKotd,aAAe,KACpBptd,KAAKO,OAAOwpB,QAAQhD,IAAuB9mB,KACrCD,KAAKO,OAAOqvG,qBAA8D,aAAvC5vG,KAAKO,OAAOmjG,kBAAkBv4F,OAC9DnL,KAAKO,OAAOwzS,qBAAwB/zS,KAAKO,OAAOmjG,kBAAkB6rX,eACjC,WAAlCvvd,KAAKO,OAAOm/D,aAAaviD,MACzBnd,KAAKO,OAAOm/S,UAAU1/S,KAAK2rE,UAAY,EAAI3rE,KAAK2rE,SAAW3rE,KAAKotd,cAGxEptd,KAAKO,OAAOosI,eAEhBqgV,EAAW9wd,UAAUszd,UAAY,YACxBxvd,KAAKyvd,UAAYzvd,KAAKO,OAAO8hG,QAC9BriG,KAAKovd,iBAELpvd,KAAKyvd,WACLzvd,KAAKyvd,SAAShmc,SACdzpB,KAAKyvd,SAAW,KAChBzvd,KAAK0vd,YAAY15b,UAAUvM,OAAO,gBAElCzpB,KAAKO,OAAO+jE,gBAAkBtkE,KAAK2vd,cACnC3vd,KAAK2vd,YAAYlmc,SACjBzpB,KAAK6mV,OAAO7wT,UAAUvM,OAAO,iBAGrCujc,EAAW9wd,UAAUozd,eAAiB,WAClC,IAAIziX,EAAO7sG,KAAKO,OAAOmkE,aACnB1kE,KAAKO,OAAOm/D,aAAap0C,UAA8C,WAAlCtrB,KAAKO,OAAOm/D,aAAaviD,MAC9DoR,aAAqBvuB,KAAKO,OAAOS,QAAQyY,GAAK,uBAAwB,WAAYzZ,KAAKO,OAAOm/D,cAElG,IAAK,IAAI9iE,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAAK,CAClC,IAAIuiE,EAAM0tC,EAAKjwG,GACXuiE,EAAI7zC,UACJiD,aAAqBvuB,KAAKO,OAAOS,QAAQyY,GAAK0lD,EAAI1jE,IAAK,WAAY0jE,GAAK,GAExEA,EAAIoqC,cACJh7E,aAAqBvuB,KAAKO,OAAOS,QAAQyY,GAAK0lD,EAAI1jE,IAAM,eAAgB,eAAgB0jE,KAIpG6tZ,EAAW9wd,UAAUgzd,YAAc,SAAUrud,GACzCb,KAAKO,OAAOwpB,QAAQhD,IAAuB,CAAEtC,MAAO5jB,IACpDb,KAAKO,OAAOosI,cACZ3sI,KAAKO,OAAOsuJ,IAAI,gBAAiB,CAAEpqI,MAAO5jB,KAE9Cmsd,EAAW9wd,UAAU0zd,YAAc,WAC/B,IAAI1ob,GAAU,EACV4jB,EAAY9qD,KAAKO,OAAOS,QAAQsC,cAAc,eAKlD,OAJKtD,KAAKO,OAAOqjE,uBAAwB5jE,KAAKO,OAAO6wI,uBAAuBC,aACnC,WAAlCrxI,KAAKO,OAAOm/D,aAAaviD,MAAsB2tC,IAClD5jB,GAAU,GAEPA,GAEX8lb,EAAW9wd,UAAUkzG,WAAa,SAAUv0F,GACxC,IAAI0oD,EAAUvjE,KAAKO,OAAO+jE,eACtB1Z,EAAM,IAAIqkD,IAAYjvG,KAAK+/D,eAAgB,KAAM//D,KAAKO,QACtD0qE,EAASjrE,KAAKO,OAAO6hT,oBAAoBpiT,KAAKvE,KAClD,GAAIwvE,EAAQ,CACRA,EAAO1B,QAAU1uD,EACjB7a,KAAKO,OAAOyZ,OAAO+M,KAA4BlM,GAC/CymD,aAAmB2J,EAAQjrE,KAAKO,OAAOgmE,uBAAwB0E,EAAO1B,SAClEvpE,KAAK4vd,eACLhla,EAAI1jB,QAAQ+jC,EAAQjrE,KAAKO,OAAOmkE,cAAc,GAElD,IAAI+I,EAAK,GAAGpsE,MAAMC,KAAKtB,KAAKO,OAAOS,QAAQQ,iBAAiB,mBAAqBypE,EAAOzwD,MAAQ,OAChG,GAAI+oD,GAAWkK,EAAG5wE,OACd,IAAK,IAAID,EAAI,EAAGA,EAAI6wE,EAAG5wE,OAAQD,IAAK,CAChC,IAAIq1S,EAASxkO,EAAG7wE,GAAGuyB,aAAa,YAC5B8iR,IAAWjyS,KAAKvE,OAChBwvE,EAASjrE,KAAKO,OAAO6hT,oBAAoBnQ,IAClC1oO,QAAU1uD,EACjB+vC,EAAI1jB,QAAQ+jC,EAAQjrE,KAAKO,OAAOmkE,cAAc,GAC9C1kE,KAAKO,OAAOm8I,WAAW+pU,aAAah5Y,EAAG7wE,QAM3Dowd,EAAW9wd,UAAU48D,UAAY,WAC7B,IAAI/4D,EAAQC,KACZ,GAAKA,KAAKO,OAAO8hG,OAAjB,CAGA,IAAIpoC,EAAOj6D,KAAKO,OACZN,EAAO3B,YAAO0B,KAAKC,KAAM,CACzBm6F,YAAa,SAAUjvF,KAAM4b,IAAoBhE,QAAQ,EAAOlI,KAAM7a,KAAKuwJ,aAAcywE,YAAa/mK,EAAK8kF,mBAE/G9kF,EAAKjgD,OAAO+M,KAAgC9mB,GAC5CD,KAAKsvd,iBACLr1Z,EAAKlwC,QAAQhD,IAAoB9mB,GAAM,SAAU4vd,GAC7C,IAAIA,EAAc9sc,OAAlB,CAGuC,WAAnChjB,EAAMQ,OAAOm/D,aAAaviD,MAC1Bpd,EAAMQ,OAAOyZ,OAAO+M,KAAsB,IAE9CkzC,EAAKooC,QAAS,EACdtiG,EAAMqvd,iBACNS,EAAc1kd,KAAO4b,IACU,WAA3BkzC,EAAKyF,aAAaviD,MAClBpd,EAAMqvG,WAAWygX,EAAch1c,MAEnC,IAAIotE,EAAahuB,EAAKe,cAAc+xE,mBAAqB9yE,EAAKe,cAAcjB,QAAQl9D,SAC5Eo9D,EAAK++E,kBAAkB11I,cAAc,iBACxC22D,EAAK++E,kBAAkB11I,cAAc,kBACrC22D,EAAK++E,kBAAkB11I,cAAc,aAAgB2kF,GACtDhuB,EAAKkP,aAAaC,WAES,WAA3BnP,EAAKyF,aAAaviD,MAClB88C,EAAKylP,UAAU3/S,EAAM4rE,UAEzB1R,EAAKlwC,QAAQhD,IAAuB8oc,SAG5C7C,EAAW9wd,UAAUyhG,UAAY,SAAU9iF,EAAML,GAC7C,IAAIza,EAAQC,KACRi6D,EAAOj6D,KAAKO,OAEhB,GADAP,KAAKmud,cAAgB3zc,EAASpd,YAAkBod,GAAiB,EAARA,EACrDK,EACAo/C,EAAKjgD,OAAO+M,KAAqB,CAC7BqzE,YAAa,OAAQjvF,KAAM4b,IAAoBlM,KAAMA,EAAMmmN,YAAa,EAAGl7L,OAAQ,MAAOtrB,MAAOA,SAIzG,IAAIy/C,EAAKooC,OAAT,CAGAriG,KAAKuwJ,aAAe,GACpBvwJ,KAAKvE,IAAM,GACX,IAAIoxG,EAAO5yC,EAAKyK,aACZuuJ,EAAU,CAAEt0E,YAAa,GAAIg4M,UAAU,GAC3C32V,KAAKO,OAAOyZ,OAAO+M,KAAuBksM,GAC1C,IAAK,IAAIr2N,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IACzBq2N,EAAQ0jI,UAA6C,YAAjC9pP,EAAKjwG,GAAGgvE,sBAG5BihC,EAAKjwG,GAAG48D,OACRE,KAAS38D,SAAS8vG,EAAKjwG,GAAG48D,MAAOqzC,EAAKjwG,GAAGs+B,aAAcl7B,KAAKuwJ,cAGpE,IAAItwJ,EAAO,CACP8iB,QAAQ,EAAOswC,eAAgB,GAC/B+mC,YAAa,MAAOv/E,KAAM7a,KAAKuwJ,aAAcplJ,KAAM4b,IAAoBvM,MAAOA,EAC9Ey4M,QAASjzN,KAAKuwJ,aAActzH,YAAQjhC,EAAW26V,SAAU1jI,EAAQ0jI,WAEhE32V,KAAKO,OAAOqjE,sBAAwB5jE,KAAKO,OAAO6wI,uBAAuBC,cACrEnzI,OAAOjB,KAAKg2N,EAAQt0E,aAAa9hJ,SACpCoD,EAAK4a,KAAO5a,EAAKgzN,QAAUA,EAAQt0E,aAElC1+I,EAAK02V,SAUN32V,KAAK8vd,iBAAiB7vd,IATtBD,KAAKO,OAAOyZ,OAAO+M,KAAoC,CAAEtrB,IAAKuE,KAAKvE,IAAKgyd,SAAUztd,KAAKuwJ,aAAcm9T,YAAa1td,KAAKqtd,YAAYlxd,KAAK6D,MAAOomS,SAAUpmS,KAAKomS,WAC9JnsO,EAAKlwC,QAAQhD,IAAoB9mB,GAAM,SAAU8vd,GACzCA,EAAQhtc,QAGZhjB,EAAM+vd,iBAAiBC,SAOnC/C,EAAW9wd,UAAU4zd,iBAAmB,SAAUC,GAC9C,IAAI91Z,EAAOj6D,KAAKO,OAChB05D,EAAKooC,QAAS,EACiB,WAA3BpoC,EAAKyF,aAAaviD,MAClB88C,EAAK6xO,iBAET9rS,KAAKomS,SAASggL,OAAO2J,GACrB91Z,EAAKyiF,WAAWmxU,sBAChBkC,EAAQ5kd,KAAO4b,IACfgpc,EAAQnla,IAAMqP,EAAKj5D,QAAQsC,cAAc,IAAM+4D,KAC/CpC,EAAKlwC,QAAQhD,IAAuBgpc,GACpC/vd,KAAKC,KAAO8vd,GAEhB/C,EAAW9wd,UAAU0hG,aAAe,SAAUipN,EAAWhsS,GAErD,GADA7a,KAAKotd,aAAeptd,KAAKO,OAAOw+I,iBAC5BlkI,EAAM,CACNA,EAAQA,aAAgBzc,MAASyc,EAAO,CAACA,GACzC,IAAIo/C,EAAOj6D,KAAKO,OACZyvd,EAAU9xd,OAAOjB,KAAK4d,GAAMhe,OAChCgqT,EAAYA,GAAa7mT,KAAKO,OAAOonE,0BAA0B,GAU/D,IATA,IAAI9oE,EAAU,SAAUjC,GACpB,IAAI2G,EACA0sd,EACAC,EAAYj2Z,EAAK0zE,gBAAgBjkH,MAAK,SAAUw0D,GAEhD,OADA+xY,EAAY/xY,EACLrjE,EAAKje,KAAOm+B,YAAU8rR,EAAW3oO,IAAWrjE,EAAKje,KAAOshF,KAEnErjE,EAAKje,GAAKszd,EAAYD,EAAYp1c,EAAKje,GAAGiqT,GAAahsS,EAAKje,KAAM2G,EAAK,IAAOsjT,GAAahsS,EAAKje,GAAI2G,IAE/F3G,EAAI,EAAGA,EAAIozd,EAASpzd,IACzBiC,EAAQjC,GAGhB,IAAIqD,EAAO,CACPm6F,YAAa,SAAUjvF,KAAM4b,IAAoBssC,eAAgB,GACjEx4C,KAAMA,GAAc7a,KAAKO,OAAOsrS,qBAAsBp+N,GAAIztE,KAAKO,OAAOkkT,kBAAmB1hS,QAAQ,GAMrG,GAJK3lB,YAAkB4C,KAAKO,OAAO6xS,mBAC/BnyS,EAAK4a,KAAK,GACN7a,KAAKO,OAAO6hT,oBAAoBpiT,KAAKO,OAAO4zI,cAAcn0I,KAAKO,OAAO6xS,iBAAiBjjR,aAAa,aAAatU,MAErH7a,KAAKO,OAAOqjE,sBAAwB3jE,EAAK4a,KAAKhe,OAAS,EAAG,CAC1D,IAAIpB,EAAMuE,KAAKO,OAAOkkT,kBAAkB,GAAGt1R,aAAa,YACxDlvB,EAAK4a,KAAO,CAAC7a,KAAKO,OAAO6hT,oBAAoB3mT,GAAKof,MAEtD7a,KAAKO,OAAOyZ,OAAO+M,KAAqB9mB,IAE5C+sd,EAAW9wd,UAAUkzd,eAAiB,WAIlC,IAHA,IAAIn1Z,EAAOj6D,KAAKO,OACZ4vd,EAAc,GAAG9ud,MAAMC,KAAK24D,EAAKj5D,QAAQiuB,uBAAuBotC,MAChE+zZ,EAAe,GAAG/ud,MAAMC,KAAK24D,EAAKj5D,QAAQiuB,uBAAuBotC,MAC5Dz/D,EAAI,EAAGA,EAAIuzd,EAAYtzd,OAAQD,IACpC6sB,aAAO0mc,EAAYvzd,IAEvB,IAASA,EAAI,EAAGA,EAAIwzd,EAAavzd,OAAQD,IACrCwzd,EAAaxzd,GAAGo5B,UAAUvM,OAAO4yC,MAOzC2wZ,EAAW9wd,UAAUqtB,iBAAmB,WAChCvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKqhJ,YAAc,CAAC,CAAEv6H,MAAOC,KAAmBvN,QAASxZ,KAAKgvd,aAC1D,CAAEloc,MAAOC,KAAkBvN,QAASxZ,KAAKwqT,iBACzC,CAAE1jS,MAAOC,IAAcvN,QAASxZ,KAAK0lJ,cACrC,CAAE5+H,MAAOC,KAAoBvN,QAASxZ,KAAKmvd,gBAC3C,CAAEroc,MAAOC,KAAiBvN,QAASxZ,KAAKwqT,iBACxC,CAAE1jS,MAAOC,KAAuBvN,QAASxZ,KAAKmtd,cAC9C,CAAErmc,MAAOC,KAAqBvN,QAASxZ,KAAKmtd,cAC5C,CAAErmc,MAAOC,KAAsBvN,QAASxZ,KAAK84D,WAC7C,CAAEhyC,MAAOC,IAAoBvN,QAASxZ,KAAKwvd,YAC/CzhZ,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,EAAMrhJ,QAMhEgtd,EAAW9wd,UAAUytB,oBAAsB,WACnC3pB,KAAKO,OAAO44B,aAGhB40C,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,IAM1D2rU,EAAW9wd,UAAUif,QAAU,WAC3Bnb,KAAK2pB,sBACL3pB,KAAKomS,SAASjrR,WAEX6xc,EAniBqB,GCb5B3ub,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAmBzC4xb,GAA4B,SAAUlxb,GAEtC,SAASkxb,EAAW9vd,EAAQw/D,EAAgBqmO,GACxC,IAAIrmS,EAAQo/B,EAAO79B,KAAKtB,KAAMO,EAAQw/D,IAAmB//D,KAIzD,OAHAD,EAAMQ,OAASA,EACfR,EAAMggE,eAAiBA,EACvBhgE,EAAMqmS,SAAWA,EACVrmS,EAoBX,OA1BAs+B,GAAUgyb,EAAYlxb,GAQtBkxb,EAAWn0d,UAAU48D,UAAY,WAC7B35B,EAAOjjC,UAAU48D,UAAUx3D,KAAKtB,OAEpCqwd,EAAWn0d,UAAUyhG,UAAY,SAAU9iF,EAAML,GAC7C2kB,EAAOjjC,UAAUyhG,UAAUr8F,KAAKtB,KAAM6a,EAAML,IAEhD61c,EAAWn0d,UAAUu0J,QAAU,WAC3BtxH,EAAOjjC,UAAUu0J,QAAQnvJ,KAAKtB,OAElCqwd,EAAWn0d,UAAUukJ,UAAY,SAAUjmI,EAAOK,GAC9CskB,EAAOjjC,UAAUukJ,UAAUn/I,KAAKtB,KAAMwa,EAAOK,IAEjDw1c,EAAWn0d,UAAU0hG,aAAe,SAAUipN,EAAWhsS,GACrDskB,EAAOjjC,UAAU0hG,aAAat8F,KAAKtB,KAAM6mT,EAAWhsS,IAExDw1c,EAAWn0d,UAAU4qT,UAAY,SAAUr5O,GACvCtuC,EAAOjjC,UAAU4qT,UAAUxlT,KAAKtB,KAAMytE,IAEnC4iZ,EA3BqB,CA4B9BrD,I,SC1BEsD,GAA2B,WAC3B,SAASA,EAAU/vd,EAAQw/D,EAAgBqmO,GACvCpmS,KAAK0zN,YAAc,GACnB1zN,KAAKuwd,aAAe,GACpBvwd,KAAKwwd,UAAY,GACjBxwd,KAAKywd,UAAW,EAChBzwd,KAAK0wd,iBAAkB,EACvB1wd,KAAKO,OAASA,EACdP,KAAK+/D,eAAiBA,EACtB//D,KAAKomS,SAAWA,EAChBpmS,KAAKsC,MAAQy9D,EAAeE,WAAW,SACvCjgE,KAAKupB,mBA6mCT,OAvmCA+mc,EAAUp0d,UAAUqtB,iBAAmB,WAC/BvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKqhJ,YAAc,CAAC,CAAEv6H,MAAOC,IAAcvN,QAASxZ,KAAK0lJ,cACrD,CAAE5+H,MAAOC,KAAiBvN,QAASxZ,KAAKwqT,iBACxC,CAAE1jS,MAAOC,IAA0BvN,QAASxZ,KAAK2wd,qBACjD,CAAE7pc,MAAOC,IAAoBvN,QAASxZ,KAAK4wd,eAC3C,CAAE9pc,MAAOC,KAAkBvN,QAASxZ,KAAKwqT,iBACzC,CAAE1jS,MAAOC,KAAmBvN,QAASxZ,KAAKuuS,gBAC1C,CAAEznR,MAAOC,KAAwBvN,QAASxZ,KAAK8zD,iBAC/C,CAAEhtC,MAAOC,IAAmBvN,QAASxZ,KAAKwvd,YAC9CzhZ,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,EAAMrhJ,MAC5DA,KAAK2qT,kBAAoB3qT,KAAKisD,UAAU9vD,KAAK6D,MAC7CA,KAAK6wd,oBAAsB7wd,KAAKstD,YAAYnxD,KAAK6D,MACjDA,KAAKO,OAAOgpB,iBAAiBxC,KAAkB/mB,KAAK2qT,mBACpD3qT,KAAKO,OAAOgpB,iBAAiBxC,IAAoB/mB,KAAK6wd,uBAM1DP,EAAUp0d,UAAUytB,oBAAsB,WAClC3pB,KAAKO,OAAO44B,cAGhB40C,YAAuB/tE,KAAKO,OAAQP,KAAKqhJ,aAAa,GACtDrhJ,KAAKO,OAAOopB,oBAAoB5C,KAAkB/mB,KAAK2qT,mBACvD3qT,KAAKO,OAAOopB,oBAAoB5C,IAAoB/mB,KAAK6wd,uBAE7DP,EAAUp0d,UAAUoxD,YAAc,WAC9BttD,KAAKO,OAAOgkJ,YAAYrvF,gBAE5Bo7Z,EAAUp0d,UAAU+vD,UAAY,WAC5BjsD,KAAKO,OAAOyZ,OAAO+M,KAAuB,KAM9Cupc,EAAUp0d,UAAUif,QAAU,WAC1Bnb,KAAK2pB,uBAET2mc,EAAUp0d,UAAUwpJ,aAAe,SAAU7kJ,GACpC88D,aAAa98D,EAAEo8B,OAAQj9B,KAAKO,OAAOS,QAAQyY,GAAK,QAAQ,KACrDzZ,KAAKO,OAAO8hG,QAAUzqE,YAAQ53B,KAAKu9R,KAAM,QAAU3lQ,YAAQ/2B,EAAEo8B,OAAQ,QACrEj9B,KAAKinT,WACLjnT,KAAK8zD,mBAEL6J,aAAa98D,EAAEo8B,OAAQo/B,OAAsBr8D,KAAKO,OAAO8hG,QACzDriG,KAAK8wd,WAAWjwd,EAAEo8B,UAI9Bqzb,EAAUp0d,UAAUsuT,gBAAkB,SAAU3pT,GAC5C,IAAIo8B,EAAS0gC,aAAa98D,EAAEo8B,OAAQo/B,KAChCoR,EAAK9P,aAAa98D,EAAEo8B,OAAQo/B,KAC5BsP,EAAW8B,GAAMt3D,SAASs3D,EAAGt+C,aAAaktC,KAAwB,IAClEyc,EAAW77C,GAAU9mB,SAAS8mB,EAAO9N,aAAaktC,KAAwB,IACzEj/D,YAAkB6/B,IAAY7/B,YAAkBuuE,IAAcv/D,MAAM0sE,IACjE77C,EAAO2W,cAAc5d,UAAUzD,SAAS8pC,MAC5Cr8D,KAAKgnT,SAASr7O,EAAU3rE,KAAKO,OAAOmkE,aAAaoU,GAAUtf,MAAOx5D,KAAK+wd,SAASplZ,KAGxF2kZ,EAAUp0d,UAAUy0d,oBAAsB,SAAU9vd,GAC5Cb,KAAKO,OAAO8hG,QAAUriG,KAAKgxd,oBAC1Bnwd,EAAE28I,SAAY,CAAC,MAAO,WAAY,QAAS,cAAcr/I,QAAQ0C,EAAEusI,QAAQtnG,SAAW,KACvFjlC,EAAEkiB,QAAS,EACPliB,EAAE28I,QACF38I,EAAE48I,UAAUnxG,iBAGZzrC,EAAEusI,QAAQ9gG,mBAItBgkb,EAAUp0d,UAAU00d,cAAgB,SAAU/vd,GAC1C,IAAI0iE,EAAUvjE,KAAKO,OAAOgqE,qBACtB0mZ,EAAejxd,KAAKO,OAAOmqE,6BAC3B4jE,EAAQtuI,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KACrDgwE,EAAOrsI,KAAKO,OAAOopI,mBAAmBrmI,cAAc,IAAM+4D,KAC1Dy8E,IAAUj4I,EAAEi0F,UAAUlnB,YAAc/sE,EAAEi0F,UAAUoZ,eAAiBluG,KAAKO,OAAOisE,YAAc3rE,EAAEi0F,UAAUgd,UAC3G,GAAKjxG,EAAEssI,QAAS2L,EAAhB,CAMA,IAAIv1I,EAAK1C,EAAEi0F,UAAUwyC,QAAS37D,EAAWpoE,EAAG,GAAIy/F,EAAYz/F,EAAG,GAI/D,GAHIggE,IAAY+qE,EAAM/7G,SAAS1xB,EAAEG,UAAahB,KAAKO,OAAOisE,YAAc6/D,EAAK95G,SAAS1xB,EAAEG,YACpFgiG,GAAaz/B,GAEb0tZ,EAAc,CACd,IAAIz3U,EAAQx5I,KAAKO,OAAOopI,mBAAmBrmI,cAAc,2BAC5CtD,KAAKO,OAAO8mE,aAAa/jE,cAAc,2BACzCivB,SAAS1xB,EAAEG,UAAahB,KAAKO,OAAOisE,YAAcgtE,EAAMjnH,SAAS1xB,EAAEG,YAC1EgiG,GAAcz/B,EAAUvjE,KAAKO,OAAOkqE,0BAGxCzqE,KAAKO,OAAOisE,YAAc3rE,EAAEi0F,UAAUlnB,YACtCjC,GAAY3rE,KAAKO,OAAOisE,YAE5B,IAAI61B,EAASriG,KAAKO,OAAO8hG,OACzB,IAAKriG,KAAKO,OAAOS,QAAQiuB,uBAAuB,gBAAgBpyB,OAE5D,OADAwlG,EAASA,IAAWriG,KAAKgxd,kBACjBnwd,EAAEusI,QAAQtnG,QACd,IAAK,MACL,IAAK,WAED,IAAIq5B,EAAMn/D,KAAKO,OAAOmkE,aAAa7jE,EAAEymI,QAAQ,IACzCnoE,IAAQn/D,KAAKO,OAAO8hG,QACpBriG,KAAKgnT,SAASnmT,EAAEymI,QAAQ,GAAInoE,EAAI3F,QAEhC6oC,GAAUriG,KAAKO,OAAOiiJ,uBACtBxiJ,KAAKkxd,kBAAkBvlZ,EAAUq3B,GAErC,MACJ,IAAK,QACL,IAAK,aACDniG,EAAEusI,QAAQ9gG,iBAEV,IAAIrsC,EAAO,CAAE8iB,QAAQ,EAAOqqH,QAASvsI,EAAEusI,SACvCptI,KAAKO,OAAOyZ,OAAO,sBAAuB/Z,IACrCA,EAAK8iB,QAAUs/E,GAChBriG,KAAKgnT,SAASr7O,EAAU3rE,KAAK0zN,YAAYj6J,OAAOD,OAEpD,MACJ,IAAK,KACDx5D,KAAKkxd,kBAAkBvlZ,EAAUq3B,GACjChjG,KAAKsC,MAAMA,cA9CftC,KAAKO,OAAO8hG,QAAUy2C,GACtB94I,KAAKinT,YAkDjBqpK,EAAUp0d,UAAU60d,SAAW,SAAUv2c,GACrC,OAAOxa,KAAKO,OAAOwrE,cAAcvxD,GAAOwb,UAAUzD,SAAS,kBAE/D+9b,EAAUp0d,UAAUg1d,kBAAoB,SAAUv6B,EAAQ8O,GACtDzlc,KAAK0zN,YAAY/nJ,SAAWgrX,EAC5B32b,KAAK0zN,YAAY1wH,UAAYyiW,EAC7Bzlc,KAAKgnT,SAAS2vI,EAAQ32b,KAAKO,OAAOmkE,aAAa+gY,GAASjsY,MAAOx5D,KAAK+wd,SAASp6B,KAEjF25B,EAAUp0d,UAAU48D,UAAY,WAC5B,IAAI/4D,EAAQC,KACRi6D,EAAOj6D,KAAKO,OACZuoE,EAAO9oE,KAAKO,OAAOwkE,gBACnB9qD,EAAW,CAAE8I,QAAQ,EAAOouc,aAAcnxd,KAAK61I,mBAEnD,GADA57E,EAAKjgD,OAAO+M,IAA0B9M,IAClCA,EAAS8I,OAAb,CAGIk3C,EAAKooC,QACLriG,KAAKinT,UAAS,GAElBjnT,KAAKoxd,SAAU,EACfn3Z,EAAK6xO,iBAiBL,IAhBA,IAemB+kB,EAffwgK,EAAUnmZ,YAAkBlrE,KAAKO,QACjC1B,EAAU,SAAUjC,GACpB,IAAI00d,GAAW,EACXx7U,EAAUhtE,EAAKlsE,GAAGk5I,QACtB/qE,YAAkBjhC,EAAOvpC,QAAQ,SAAU+pE,EAAWxB,IAClDwoZ,EAAWvxd,EAAMwxd,0BAA0BzoZ,EAAKlsE,GAAIk5I,KAEhDhtE,EAAKhvD,OAAOld,EAAG,KAEpBy0d,GACCC,GACA10d,IAEJi0T,EAAUj0T,GAEVktC,EAAS9pC,KACJpD,EAAI,EAAGA,EAAIksE,EAAKjsE,OAAQD,IAC7BiC,EAAQjC,GACRA,EAAIi0T,EAEH52P,EAAK++E,kBAAkB11I,cAAc,aACtC22D,EAAKkP,aAAa6+N,iBAEtB,IAAI/nS,EACkCD,KAAKO,OAAOwkE,gBAElD9K,EAAKjgD,OAAO+M,IAAoB,CAC5B+hD,KAAM9oE,KAAKO,OAAOwkE,gBAAgBloE,OAASmD,KAAKO,OAAOwkE,gBACnD,CAAC,IAAI0oC,KAAI,CAAEhzC,WAAW,EAAM6F,MAAO,CAAC,IAAI6tC,KAAK,CAAED,YAAY,EAAMhxC,SAAS,UAElFjD,EAAKylP,UAAU1/S,KAAK0zN,YAAY/nJ,UAChC3rE,KAAKwxd,gBACLv3Z,EAAKjgD,OAAO+M,KAAuB,IACnC/mB,KAAKO,OAAOyZ,OAAO+M,KAAuB,IAC1C9mB,EAAO,CAAEm6F,YAAa,cAAetxB,KAAM9oE,KAAKO,OAAOwkE,iBACvD9K,EAAKlwC,QAAQhD,IAAoB9mB,KAErCqwd,EAAUp0d,UAAUq1d,0BAA4B,SAAU3ma,EAAKkrF,GAC3D,IAAI77E,EAAOj6D,KAAKO,OACZymI,EAAc,IAAI/3B,IAAYjvG,KAAK+/D,eAAgB,KAAM//D,KAAKO,QAC9Dkxd,GAAqB,EACzB,GAAI37U,EAAS,CACTlrF,EAAIkrF,QAAUA,EACd,IAAIroE,EAAKxT,EAAKy0P,mBAAmB9jQ,EAAInvD,KACrC,GAAIgyE,IACIA,EAAGz3C,UAAUzD,SAAS,kBACtB9I,aAAOgkD,GACPgkZ,GAAqB,IAGrBnwZ,aAAmB1W,EAAK5qD,KAAKO,OAAOgmE,uBAAwB3b,EAAI/vC,aACzD+vC,EAAI2e,eACJ3e,EAAIy9C,KACXz9C,EAAIkrF,SAAU,EACd9/G,YAAUy3C,EAAI,GAAI,CAAC,cAAe,gBAClCu5D,EAAY9/F,QAAQ0jB,EAAKqP,EAAKyK,cAAc,IAE5C1kE,KAAKO,OAAO+9D,WAAWzhE,OAAS,GAAG,CACnC,IACIgsG,EAAW,GACfA,EAAa,KAAI,SACjB7oG,KAAKO,OAAOyZ,OAAO+M,KAA8B8hF,GAC7C7oG,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAS,GAC3CmD,KAAKO,OAAOyZ,OAAO+M,KAAwB8hF,IAK3D,OAAO4oX,GAEXnB,EAAUp0d,UAAUw1d,uBAAyB,SAAUjkZ,GACnD,GAAIA,EAAGz3C,UAAUzD,SAAS,eAAgB,CACtCk7C,EAAGptC,gBAAgB,iBAEnB,IADA,IAAIsxb,EAAa,GAAGtwd,MAAMC,KAAKmsE,EAAGx+C,uBAAuB,0BAChDryB,EAAI,EAAGA,EAAI+0d,EAAW90d,OAAQD,IACnCw5B,aAAY,CAACu7b,EAAW/0d,IAAK,CAAC,wBAAyB,aAG/Do5B,YAAUy3C,EAAI,GAAI,CAAC,cAAe,iBAEtC6iZ,EAAUp0d,UAAU0hG,aAAe,SAAUipN,EAAWhsS,GACpD7a,KAAKinT,WACDjnT,KAAKgxd,mBACLhxd,KAAKinT,UAAS,GAElBjnT,KAAKoxd,SAAU,EACfpxd,KAAK4xd,WAAW/qK,EAAWhsS,GACvB7a,KAAKO,OAAO+9D,WAAWzhE,OAAS,IAChCmD,KAAKO,OAAOyZ,OAAO+M,KAA8B,IAC7C/mB,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAAS,GAC3CmD,KAAKO,OAAOyZ,OAAO+M,KAAwB,MAIvDupc,EAAUp0d,UAAUyhG,UAAY,SAAU9iF,GACtC7a,KAAK6xd,WAAWh3c,IAEpBy1c,EAAUp0d,UAAUu0J,QAAU,WACtBzwJ,KAAKO,OAAO8hG,QAAUriG,KAAKgxd,mBAG/Bhxd,KAAK8xd,aAETxB,EAAUp0d,UAAUszd,UAAY,WAC5B,IAAK,IAAI5yd,EAAI,EAAGA,EAAIsB,OAAOjB,KAAK+C,KAAKuwd,cAAc1zd,OAAQD,IACvD,IAAK,IAAIuL,EAAI,EAAGA,EAAIjK,OAAOjB,KAAK+C,KAAKwwd,WAAW3zd,OAAQsL,IAChDjK,OAAOjB,KAAK+C,KAAKuwd,cAAc3zd,KAAOsB,OAAOjB,KAAK+C,KAAKwwd,WAAWrod,KAClEnI,KAAKwwd,UAAUtyd,OAAOjB,KAAK+C,KAAKwwd,WAAWrod,IAAI4pd,YAAY/xd,KAAKuwd,aAAaryd,OAAOjB,KAAK+C,KAAKuwd,cAAc3zd,KACxGoD,KAAKuwd,aAAaryd,OAAOjB,KAAK+C,KAAKuwd,cAAc3zd,IAAIo5B,UAAUzD,SAAS,0BACxEvyB,KAAKuwd,aAAaryd,OAAOjB,KAAK+C,KAAKuwd,cAAc3zd,IAC5Co5B,UAAUvM,OAAO,wBAAyB,4BAA6B,aAK5FzpB,KAAKwwd,UAAY,GACjBxwd,KAAKuwd,aAAe,IAExBD,EAAUp0d,UAAU80d,gBAAkB,WAClC,OAAOhxd,KAAKO,OAAOm8I,WAAWy3M,UAAYn0V,KAAKO,OAAOm8I,WAAWy3M,QAAQpzP,YAE7EuvX,EAAUp0d,UAAU41d,UAAY,WAC5B,IAAI73Z,EAAOj6D,KAAKO,OAEhB,GAAI05D,EAAK21C,oBAAqB,CAC1B,IAAIoiX,EAAc/3Z,EAAKj5D,QAAQsC,cAAc,qBAAqBswC,cAC9Do+a,EAAYh8b,UAAUzD,SAAS,wBAC/B0nC,EAAKiL,aAAa2hO,kBAAoB5sO,EAAK0zE,gBAAgB9wI,QAC3Du5B,aAAY,CAAC47b,GAAc,CAAC,wBAIpC,GADAhyd,KAAKinT,aACDhtP,EAAKooC,QAAUriG,KAAK8zD,mBAAqBmG,EAAKooC,QAAlD,CAGA,IAAI94B,EAAUvpE,KAAK61I,kBACwB,aAAvC71I,KAAKO,OAAOmjG,kBAAkBv4F,MAAuBo+D,EAAsB,eAAE1sE,QAC7EmD,KAAKO,OAAOmjG,kBAAkBC,mBAC9Bp6B,EAAsB,eAAIvpE,KAAKiyd,mBAC/Bjyd,KAAKiyd,mBAAqB,IAE9B,IAAI70X,EAAW,CACXpyC,eAAgBhrD,KAAKO,OAAOwkE,gBACvB7zC,QAAO,SAAU05B,GAAO,OAAOA,EAAIkrF,UAAoD,IAAzC,CAAC,MAAO,UAAU33I,QAAQysD,EAAIy9C,SAC5E5jG,KAAI,SAAUmmD,GAAO,OAAOA,EAAI/vC,SAErC5a,EAAO,CAAEkxd,aAAc5nZ,EAASxmD,QAAQ,GAC5Ck3C,EAAKlwC,QAAQhD,IAAwB9mB,GAAM,SAAUiyd,GAC7CA,EAAoBnvc,SAGxBk3C,EAAKouF,cACLpuF,EAAKjgD,OAAO+M,IAAiB,CAAEwiD,QAASA,EAAS6zB,SAAUA,UAGnEkzX,EAAUp0d,UAAU25I,gBAAkB,WAOlC,IANA,IAAItsE,EAAU,CACVte,aAAc,GACdC,eAAgB,GAChBF,eAAgB,IAGXhtD,EAAK,EAAG8mE,EADN9kE,KAAKO,OAAOwkE,gBACS/mE,EAAK8mE,EAAOjoE,OAAQmB,IAAM,CACtD,IAAI4sD,EAAMka,EAAO9mE,GACjB,GAAI4sD,EAAIkrF,QACJ,OAAQlrF,EAAIy9C,MACR,IAAK,MACD9+B,EAAQte,aAAarpD,KAAKgpD,EAAI2e,SAC9B,MACJ,IAAK,SACDA,EAAQre,eAAetpD,KAAKgpD,EAAI/vC,MAChC,MACJ,QACI0uD,EAAQve,eAAeppD,KAAKgpD,EAAI2e,UAIhD,OAAOA,GAOX+mZ,EAAUp0d,UAAUi2d,uBAAyB,SAAU12d,GAGnD,IAFA,IAAIqtE,EAAO9oE,KAAKO,OAAOwkE,gBACnBnoE,EAAI,EACC+E,EAAMmnE,EAAKjsE,OAAQD,EAAI+E,GACxBmnE,EAAKlsE,GAAGnB,MAAQA,EADamB,KAKrCmuE,YAAkB/qE,KAAKO,QAAQ,SAAU+pE,EAAWxB,GAChDA,EAAKhvD,OAAOld,EAAG,KAChBsuE,YAAkBlrE,KAAKO,UAO9B+vd,EAAUp0d,UAAU80T,aAAe,SAAUpmQ,GACzC,IAAIqP,EAAOj6D,KAAKO,OACZ8vR,EAA6C,QAArCp2N,EAAKyF,aAAa+M,eAC9B1B,YAAkB/qE,KAAKO,QAAQ,SAAU+pE,EAAWxB,GAChD,IAAIspZ,EAAWxna,EAAI3rD,QACnBmzd,EAAS9xZ,MAAQ+J,aAA0BpQ,EAAMm4Z,EAAS9xZ,MAAOgK,GAC7D+lN,EACAvnN,EAAK/sE,QAAQq2d,GAGbtpZ,EAAKlnE,KAAKwwd,KAEflnZ,YAAkBlrE,KAAKO,SAAS,IAGvC+vd,EAAUp0d,UAAU01d,WAAa,SAAU/qK,EAAWhsS,GAClD,IAAI9a,EAAQC,KACZA,KAAKiyd,mBAAqB,GAC1B,IAAIh4Z,EAAOj6D,KAAKO,OACZia,EAAQy/C,EAAK8kF,iBACbwnF,EAAetsK,EAAKwqP,kBACpBxkT,EAAO,CACP21I,WAAY51I,KAAKO,OAAOonE,0BACxBgE,SAAUnxD,EACVy4M,QAASp4M,GAAco/C,EAAK4xO,qBAAqB,GACjD9oR,QAAQ,IAEPzjB,gBAAcU,KAAKO,OAAO8xd,gBAEvBpyd,EAAK2qD,IADL/vC,EACWo/C,EAAKyiF,WAAW41U,aAAer4Z,EAAKy0P,mBAAmBz0P,EAAKyiF,WAAW41U,cAC5Er4Z,EAAKgsE,UAAUhsE,EAAK2N,wBAAwBzpE,QAAQ0c,IAG/CA,EAAOo/C,EAAKgsE,UAAUzrH,GAAS+rN,EAAa,GAEtDtmO,EAAK2qD,OAKdqP,EAAKlwC,QAAQhD,IAA0B9mB,GAAM,SAAUsyd,GACnD,IAAIA,EAAsBxvc,OAA1B,CAOA,GAJAhjB,EAAMkyd,mBAAqBh4Z,EAAK4xO,qBAChC5xO,EAAK6xO,iBACLymL,EAAsB3na,IAAM2na,EAAsB3na,IAC9C2na,EAAsB3na,IAAM/vC,EAAOo/C,EAAKgsE,UAAUzrH,GAAS+rN,EAAa,GACxExmO,EAAMQ,OAAO+jE,eAAgB,CACzBzpD,IACAL,EAAQrE,SAASo8c,EAAsB3na,IAAIz7B,aAAaktC,KAAwB,KAChFkqK,EAAe,IACF3kO,KAAKq4D,EAAKk6E,cAAc35H,IACrC+rN,EAAa3kO,KAAKq4D,EAAKs6E,qBAAqB/5H,IACxCy/C,EAAKiQ,kBAAoB7N,KACzBkqK,EAAa3kO,KAAKq4D,EAAKioP,yBAAyB1nS,KAGxD,IAAK,IAAI5d,EAAI,EAAGA,EAAI2pO,EAAa1pO,OAAQD,IAAK,CAC1C,IAAInB,EAAM8qO,EAAa3pO,GAAGuyB,aAAa,YACvC,GAAIo3M,EAAa3pO,GAAGo5B,UAAUzD,SAAS,iBACnCxyB,EAAMoyd,uBAAuB12d,GAC7BguB,aAAO88M,EAAa3pO,SAGhBquE,EAAShR,EAAKmoP,oBAAoB3mT,IAC/Bq6I,SAAU,EACjB7qE,EAAOo9B,KAAO,SACdryE,YAAUuwM,EAAa3pO,GAAI,CAAC,cAAe,eAAgB,IACvDq9D,EAAKuS,YAAchyD,EAAQy/C,EAAKuS,YAAcvS,EAAK4R,qBAAqBhvE,QAAUo9D,EAAKuS,aACvFvS,EAAKyS,wBAAwB1qE,YAAYi4D,EAAKs6E,qBAAqBt6E,EAAKuS,WAAa,IACrFvS,EAAKm3P,uBAAuBpvT,YAAYi4D,EAAKk6E,cAAcl6E,EAAKuS,WAAa,IACzEvS,EAAKiQ,kBAAoB7N,KACzBpC,EAAK4S,4BAA4B7qE,YAAYi4D,EAAKioP,yBAAyBjoP,EAAKuS,WAAa,KAGjGvS,EAAKuS,YAAchyD,EAAQy/C,EAAKuS,YAAcvS,EAAK8R,cAAclvE,QAAUo9D,EAAKuS,YAChFvS,EAAK4tE,iBAAiBvkI,cAAc+4D,KAAgBr6D,YAAYi4D,EAAKk6E,cAAcl6E,EAAKuS,WAAa,WAGtG+5J,EAAa3pO,SAGvB,GAAKmD,EAAMQ,OAAO+jE,gBAA2C,IAAxBiiK,EAAa1pO,SAAgBge,EAgBnE,IAASje,EAAI,EAAGA,EAAI2pO,EAAa1pO,OAAQD,IAAK,CAC1C,IAAI41d,EAAWjsP,EAAa3pO,GAAGuyB,aAAa,YAC5C,GAAIo3M,EAAa3pO,GAAGo5B,UAAUzD,SAAS,iBACnCxyB,EAAMoyd,uBAAuBK,GAC7B/oc,aAAO88M,EAAa3pO,QAEnB,CACDo5B,YAAUuwM,EAAa3pO,GAAI,CAAC,cAAe,eAAgB,IAC3D,IAAIokO,EAAc/mK,EAAKmoP,oBAAoBowK,GAC3CxxP,EAAYlrF,SAAU,EACtBkrF,EAAY34H,KAAO,gBACZk+H,EAAa3pO,QA3B8C,CAC1E,IAOQquE,EAPJxvE,EAAM82d,EAAsB3na,IAAIz7B,aAAa,YAEjD,GADA1zB,EAAMof,GAAQ9a,EAAMQ,OAAOm8I,WAAW41U,aAAe72d,EAAMsE,EAAMQ,OAAOm8I,WAAW41U,aAAe72d,EAC9F82d,EAAsB3na,IAAI50B,UAAUzD,SAAS,iBAC7CxyB,EAAMoyd,uBAAuB12d,GAC7BguB,aAAO8oc,EAAsB3na,UAGzBqgB,EAAShR,EAAKmoP,oBAAoB3mT,IAC/Bq6I,SAAU,EACjB7qE,EAAOo9B,KAAO,SACdryE,YAAUu8b,EAAsB3na,IAAK,CAAC,cAAe,eAAgB,WAElE2na,EAAsB3na,IAkBjC7qD,EAAMyxd,gBACF32c,IACAo/C,EAAKyiF,WAAW41U,kBAAet2d,EAC3Bi+D,EAAKwqP,kBAAkB5nT,SACvB2d,EAAQrE,SAAS8jD,EAAKwqP,kBAAkB,GAAGt1R,aAAaktC,KAAwB,MAGnFpC,EAAK21C,qBACN31C,EAAKylP,UAAUllS,GAEnBy/C,EAAKlwC,QAAQhD,IAAoBwrc,GACjCt4Z,EAAKjgD,OAAO+M,IAAoB,CAAE+hD,KAAM/oE,EAAMQ,OAAOwkE,kBACrD9K,EAAKjgD,OAAO+M,KAAuB,SAG3Cupc,EAAUp0d,UAAUs1d,cAAgB,WAsBhC,IArBA,IAoBmBiB,EAnBf3pZ,EADO9oE,KAAKO,OACA+qE,gBAAe,GAC3B4jO,EAAW7jO,YAAmBrrE,KAAKO,QACnCmyd,EAAcxnZ,YAAkBlrE,KAAKO,QACrCioF,EAAU,SAAU5rF,EAAGuL,EAAGxG,GACtBmnE,EAAKlsE,GAAGo5B,UAAUzD,SAAS8pC,OAAkByM,EAAKlsE,GAAGo5B,UAAUzD,SAAS,gBACxEw4C,YAAkB0d,EAAOloF,QAAQ,SAAU+pE,EAAWN,EAAas5O,GAC/Dt5O,EAAYptE,GAAGg5B,aAAaymC,IAAuBl0D,EAAEgF,YACrDm2S,EAAW1mT,GAAG4d,MAAQrS,IACvB+mS,EAAU,KAAMwjL,GACnBvqd,KAGA4iE,YAAkB0d,EAAOloF,QAAQ,SAAU+pE,EAAWN,EAAas5O,GAC/Dt5O,EAAYptE,GAAGyjC,gBAAgBg8B,KAC/BinP,EAAW1mT,GAAG4d,OAAS,IACxB00R,EAAU,KAAMwjL,GAEvBD,EAAUtqd,GAEVsgF,EAASzoF,KACJpD,EAAI,EAAGuL,EAAI,EAAGxG,EAAMmnE,EAAKjsE,OAAQD,EAAI+E,EAAK/E,IAC/C4rF,EAAQ5rF,EAAGuL,GACXA,EAAIsqd,GAGZnC,EAAUp0d,UAAUy2d,iBAAmB,SAAU93c,GAC7C,OAAOkjD,YAAQljD,EAAM7a,KAAKO,OAAOqnE,0BAErC0oZ,EAAUp0d,UAAU21d,WAAa,SAAUh3c,GACvC,IAAI9a,EAAQC,KACRi6D,EAAOj6D,KAAKO,OAChB,GAAK05D,EAAKyF,aAAa4zO,cAGnBr5O,EAAKooC,SACLriG,KAAKinT,WACLjnT,KAAKO,OAAOyZ,OAAO+M,KAAwB,MAE3CkzC,EAAKooC,QAAT,CAGAriG,KAAKO,OAAOS,QAAQg1B,UAAUjN,IAAI,aAClC,IACI9oB,EAAO,CACP2yd,YAFc/3c,GAAc7a,KAAK6yd,iBAGjCj9U,WAAY37E,EAAK0N,0BACjB5kD,QAAQ,GAEZk3C,EAAKlwC,QAAQhD,IAAuB9mB,GAAM,SAAU6yd,GAChD,IAAIA,EAAmB/vc,OAAvB,CAKA,IAAIssR,EACAo7C,EAHJ1qV,EAAMqxd,SAAU,EAChBn3Z,EAAK6xO,iBASL,IANA,IAII3sO,EACA3kD,EALAowC,EAAM,IAAIqkD,IAAYlvG,EAAMggE,eAAgB,KAAMhgE,EAAMQ,QAExD6tI,EADQ,IAAI7hC,IAAkBxsG,EAAMQ,QAClBisG,aAAa,CAACsmX,EAAmBF,cACnDnlZ,EAAK7iB,EAAIl7B,OAAO0+G,EAAU,GAAIn0E,EAAKyK,cAG9B9nE,EAAI,EAAGA,EAAImD,EAAMQ,OAAOy6D,cAAcjB,QAAQl9D,OAAQD,IAC3D6wE,EAAG52C,aAAa92B,EAAMQ,OAAOY,cAAc,KAAM,CAAEktB,UAAW,iBAAmBo/C,EAAGq2B,YACpFsqC,EAAU,GAAG9tE,MAAMvkE,QAAQ,IAAIoyG,KAAK,CAAE3J,SAAUj2B,IAAS4Q,UAE7D,IAAI3zB,EAAQyO,EAAK++E,kBAAkB11I,cAAc+4D,KAEjD,GADAoR,EAAGz3C,UAAUjN,IAAI,iBACbyiC,EAAMloD,cAAc,eAAgB,CACpC,IAAI8lE,EAAW5d,EAAMloD,cAAc,eACnC8lE,EAAS3oE,WAAWy2B,YAAYkyC,GAChCrpE,EAAMgzd,oBAEN94Z,EAAKqK,iBACLmmR,EAAOh9Q,EAAGxrE,WAAU,GACpBotS,EAAMtvS,EAAMujE,cAAcmK,EAAIg9Q,GAC9Bh9Q,EAA8B,UAAzBxT,EAAKiQ,gBAA8BugR,EAAOh9Q,EAC/C1tE,EAAMizd,mBAAmBvlZ,EAAI4hO,EAAKo7C,IAGlCj/R,EADAyO,EAAKuS,YAAmD,QAArCvS,EAAKyF,aAAa+M,eAC7BxS,EAAK4tE,iBAAiBvkI,cAAc+4D,KAGpCpC,EAAK++E,kBAAkB11I,cAAc+4D,KAEA,QAA7Ct8D,EAAMQ,OAAOm/D,aAAa+M,eAC1BjhB,EAAM30B,aAAa42C,EAAIjiB,EAAMs4C,YAG7Bt4C,EAAMxpD,YAAYyrE,GAEtB53C,YAAS,GAAGx0B,MAAMC,KAAKmsE,EAAGx+C,uBAAuBotC,MAAoB,CAAC,gBACtE+xE,EAAU,GAAG0H,SAAU,EACvB1H,EAAU,GAAG7kE,QAAUjrE,YAAO,GAAI,GAAI8vI,EAAU,GAAGvzH,MAAM,GACzDuzH,EAAU,GAAG/lC,KAAO,MACpBtoG,EAAMixT,aAAa5iL,EAAU,IAC7BruI,EAAMyxd,gBACNzxd,EAAMuC,MAAMo/I,iBACZznF,EAAKjgD,OAAO+M,IAAiB,CAAE+hD,KAAM/oE,EAAMQ,OAAOwkE,gBAAiB9kE,KAAM,CAAEokE,SAAUtkE,EAAMQ,OAAO+jE,kBAClG,IAAIiF,EAAUxpE,EAAM81I,kBAChBo9U,EAASlzd,EAAMmzd,iBAC8B,QAA7Cnzd,EAAMQ,OAAOm/D,aAAa+M,eAC1BxS,EAAKylP,UAAU,GAGfzlP,EAAKylP,UAAUuzK,GAEdp4c,IACDL,EAAQza,EAAMozd,qBAAqB,GAAG,GACtCh0Z,EAAMlF,EAAKyK,aAAalqD,GACyB,QAA7Cza,EAAMQ,OAAOm/D,aAAa+M,eAC1B1sE,EAAMinT,SAAS,EAAG7nP,EAAI3F,OAAO,GAG7Bz5D,EAAMinT,SAASisK,EAAQ9zZ,EAAI3F,OAAO,IAGtCz5D,EAAMQ,OAAO+9D,WAAWzhE,OAAS,IAAMge,GAAQ0uD,EAAQlN,KAAuBx/D,SAC9EkD,EAAMQ,OAAOyZ,OAAO+M,KAA8B,IAEtD,IAAIwkI,EAAQ,CACRqnU,YAAaE,EAAmBF,YAAahoa,IAAK6iB,EAClDs6Y,aAAc5oZ,EAAK0V,YAAar6D,EAAOo7H,WAAYk9U,EAAmBl9U,WAAY71D,KAAMtS,EAAGnN,MAAM9lD,IAErGy/C,EAAKlwC,QAAQhD,IAAiBwkI,GAC1BtxF,EAAKqK,gBACLuC,YAAoBwoO,EAAI/rS,cAAc,mBAAoBmqE,EAAGnqE,cAAc,0BAIvFgtd,EAAUp0d,UAAU82d,mBAAqB,SAAUvlZ,EAAI4hO,EAAKo7C,GACxD,IAAIxwR,EAAOj6D,KAAKO,OACZ8ld,EAAS95Y,YAAgBvsE,KAAKO,QAC9BwpV,EAAUn9Q,YAAoB5sE,KAAKO,QACE,QAArC05D,EAAKyF,aAAa+M,eAClB45Y,EAAOxvb,aAAaw4Q,EAAKg3K,EAAOviX,YAGhCuiX,EAAOrkd,YAAYqtS,GAEvBx5Q,YAAS,GAAGx0B,MAAMC,KAAK+tS,EAAIpgR,uBAAuBotC,MAAoB,CAAC,gBACnE0tR,GAAWU,IAC8B,QAArCxwR,EAAKyF,aAAa+M,eAClBs9Q,EAAQlzT,aAAa4zT,EAAMV,EAAQjmP,YAGnCimP,EAAQ/nV,YAAYyoV,GAExB50T,YAAS,GAAGx0B,MAAMC,KAAKmpV,EAAKx7T,uBAAuBotC,MAAoB,CAAC,gBACxEwK,YAAoB4jR,EAAKnnV,cAAc,mBAAoBmqE,EAAGnqE,cAAc,qBAE5D,SAAhB22D,EAAKtqB,QACLsqB,EAAKjgD,OAAO+M,KAAqB,KAGzCupc,EAAUp0d,UAAU62d,kBAAoB,WACpC,IAAI94Z,EAAOj6D,KAAKO,OAChB,GAAI05D,EAAKqK,eAAgB,CACrB,IAAI2sP,EAAYh3P,EAAKoN,aAAa/jE,cAAc,IAAM+4D,KAAyB/4D,cAAc+4D,KAE7F,GADC40P,EAAUn6R,kBAAmBr2B,WAAWy2B,YAAY+5R,EAAUn6R,mBAC3DmjC,EAAKiQ,kBAAoB7N,IAAoB,CAC7C,IAAI0tR,EAAU9vR,EAAKoN,aAAa/jE,cAAc,2BAA2BA,cAAc+4D,KACtF0tR,EAAQjzT,kBAAmBr2B,WAAWy2B,YAAY6yT,EAAQjzT,sBAIvEw5b,EAAUp0d,UAAUonE,cAAgB,SAAUhyC,EAAK2xG,GAC/C,IAAIx/D,EAAOnyC,EAAIrvB,WAAU,GACrBuoE,EAAUxqE,KAAKO,OAAOkqE,yBACtB3nC,EAAO9iC,KAAKO,OAAOgqE,qBACnBxnC,EAAQ/iC,KAAKO,OAAOmqE,6BAIxB,OAHAe,aAAcn6C,EAAK,EAAGwR,GACtB2oC,aAAchI,EAAM3gC,EAAMC,EAAQ0gC,EAAK3yC,SAASj0B,OAASkmC,EAAQ0gC,EAAK3yC,SAASj0B,QAC/E4uE,aAAcw3D,EAAUngG,EAAO0nC,EAASy4D,EAASnyG,SAASj0B,QACnD4mE,GAEX6sZ,EAAUp0d,UAAUi3d,qBAAuB,SAAUt+Y,EAAa+pE,EAAOw0U,GAIrE,IAHA,IAEIv7Y,EAFAg1B,EAAO7sG,KAAKO,OAAOmkE,aACnBkiP,EAAW/5M,EAAKhwG,OAEXD,EAAIi4E,EAAaj4E,EAAIgqT,EAAUhqT,IAAK,CAEzC,GADAi7E,IAAau7Y,GAAYh2d,YAAkByvG,EAAKjwG,GAAG0vE,kBAC9CsyE,GAAS5+I,KAAKqzd,YAAYxmX,EAAKjwG,IAChC,OAAOA,EAEN,GAAIgiJ,IAAU/xC,EAAKjwG,GAAG0uB,UAAYuhF,EAAKjwG,GAAGsgE,SAAW2vC,EAAKjwG,GAAG2iE,gBAC5DstC,EAAKjwG,GAAGyiE,aAAcwtC,EAAKjwG,GAAG0iE,gBAAkBuY,EAClD,OAAOj7E,EAGf,OAAQ,GAEZ0zd,EAAUp0d,UAAUm3d,YAAc,SAAUl0Z,GACxC,OAAQA,EAAI7zC,UAAY6zC,EAAIjC,UAAYiC,EAAIG,eAAiBH,EAAIE,YAAcF,EAAII,cAEvF+wZ,EAAUp0d,UAAU22d,eAAiB,WAIjC,IAHA,IACIh4c,EAAO,GACPy4c,EAAU,CAAE,OAAU,EAAG,OAAU,KAAM,SAAW,EAAO,KAAQ,KAAM,SAAY,MAChFt1d,EAAK,EAAGuF,EAHNvD,KAAKO,OAGYk8D,YAAcz+D,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAImhE,EAAM57D,EAAGvF,GACTmhE,EAAI3F,OACJz8D,aAASoiE,EAAI3F,MAAOt7D,OAAOjB,KAAKkiE,GAAKhhE,QAAQ,iBAAmB,EAAIghE,EAAIjkC,aAAeo4b,EAAQn0Z,EAAIh0D,MAAO0P,GAGlH,OAAOA,GAEXy1c,EAAUp0d,UAAU40d,WAAa,SAAU7zb,GACvC,IAAI89B,EAAO,EACP/6D,KAAKO,OAAO0nG,gBACZltC,EAAO/6D,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,QAE7CmD,KAAK0zN,YAAY1wH,UAAY/lE,EAAO+lE,UAAYjoC,EAChD/6D,KAAK0zN,YAAY/nJ,SAAWx1D,SAAS8mB,EAAO9N,aAAa,SAAU,KAEvEmhc,EAAUp0d,UAAU8qT,SAAW,SAAUxsS,EAAOg/C,EAAOolF,GACnD,IAAI3kF,EAAOj6D,KAAKO,OACZ4+D,EAAMlF,EAAKqM,iBAAiB9M,GAChCx5D,KAAKwa,MAAQA,EACbxa,KAAKw5D,MAAQA,EACbx5D,KAAK4+I,MAAQA,EACb,IAAIisK,EAAY5wP,EAAKooC,UAAYriG,KAAK0zN,YAAYj6J,OAAOD,QAAUA,GAC3Dx5D,KAAK0zN,YAAY/nJ,WAAanxD,GAASxa,KAAKO,OAAOwrE,cAAclvE,OAAS,IAAM2d,GACpFy/C,EAAKyF,aAAaH,gBACbsrP,GAAa1rP,EAAII,aAClBv/D,KAAKuzd,eAAe/4c,EAAOg/C,EAAOolF,GAE7BisK,IACL7qT,KAAKywd,UAAW,EAChBzwd,KAAKinT,cAIjBqpK,EAAUp0d,UAAUq3d,eAAiB,SAAU/4c,EAAOg/C,EAAOolF,GACzD,IAAI7+I,EAAQC,KACRi6D,EAAOj6D,KAAKO,OACZ4+D,EAAMlF,EAAKqM,iBAAiB9M,GAC5Bv8D,EAAOg9D,EAAK0N,0BAChB,IAAI1N,EAAKooC,OAAT,CAGA,IAAIz3C,EACA4oa,EACAvgQ,EAAU30N,YAAO,GAAI,GAAI0B,KAAKyzd,eAAej5c,IAAQ,GAUzD,GATiC,YAA7B2kD,EAAIyM,sBAAsCzM,EAAIyM,uBAAyBvP,KACvEzR,EAAmC,YAA7BuU,EAAIyM,qBAAqC3R,EAAK4R,qBAAqBrxD,GAASy/C,EAAK6R,yBAAyBtxD,GAChHg5c,EAAWxzd,KAAKO,OAAO6hT,oBAAoBx3P,EAAIz7B,aAAa,aAC5D8jM,EAAUugQ,EAASjqZ,QAAUjrE,YAAO,GAAI,GAAIk1d,EAASjqZ,SAAS,GAAQ0pJ,IAGtEroK,EAAMqP,EAAK8R,cAAcvxD,GACzBy4M,EAAU30N,YAAO,GAAI,GAAI0B,KAAKyzd,eAAej5c,IAAQ,IAEpDvd,EAAK,KAAOkiE,EAAI3F,QAAU5O,EAAI50B,UAAUzD,SAAS,kBAAqB4sC,EAAIpF,SAC1EoF,EAAIG,cAAgBH,EAAIE,WACzBr/D,KAAKO,OAAOiiJ,sBAAuB,MAFvC,CAKAxiJ,KAAKO,OAAOiiJ,sBAAuB,EACnCxiJ,KAAKO,OAAOS,QAAQg1B,UAAUjN,IAAI,aAClC,IAAIkiD,EAAShR,EAAKmoP,oBAAoBx3P,EAAIz7B,aAAa,aACnDmxC,EAAQ,GAAGj/D,MAAMjF,MAAMwuD,EAAI0V,OAC3BrgE,EAAO,CACPo8G,WAAYl9C,EAAI3F,MAAOgI,cAAepkE,YAAkB+hE,EAAInC,iBAC5D44E,WAAY34I,EAAMg2N,QAASA,EAC3B3mJ,gBAAiBhuE,YAAO,GAAI6gE,EAAImN,gBAAkBnN,EAAImN,gBAAkB,IACxE9vE,MAAOu+B,YAAUokC,EAAI3F,MAAOy5J,GAC5B9nN,KAAOyzI,EAAiB,MAAT,OAAgB77H,QAAQ,EACvCswC,eAAgB4X,GAAUA,EAAO5X,iBAEhC/zD,gBAAcU,KAAKO,OAAO8xd,gBAC3Bpyd,EAAK8/E,KAAOzf,EAAMtgE,KAAK0zd,YAAYpzZ,EAAOtgE,KAAK2zd,WAAWx0Z,EAAI1jE,OAC9DwE,EAAK2qD,IAAMA,EACX3qD,EAAK8nd,aAAe5oZ,EACfl/D,EAAK8/E,QAId9lB,EAAKlwC,QAAQhD,IAAiB9mB,GAAM,SAAU2zd,GACtCA,EAAa7wc,SAGjB6wc,EAAa7zY,KAAO6zY,EAAa7zY,KAAO6zY,EAAa7zY,KAAOzf,EAAMvgE,EAAM2zd,YAAYpzZ,EAAOvgE,EAAM4zd,WAAWx0Z,EAAI1jE,OAChHm4d,EAAahpa,IAAMgpa,EAAahpa,IAAMgpa,EAAahpa,IAAMA,EACzDgpa,EAAa7L,aAAe6L,EAAa7L,aAAe6L,EAAa7L,aAAe5oZ,EACpFy0Z,EAAa7L,aAAavtc,MAAQpd,YAAkBw2d,EAAa7L,aAAavtc,OAAS,EAAIo5c,EAAa7L,aAAavtc,MACrHza,EAAM2zN,YAAc,CAChBT,QAASA,EAASx5J,OAAQ0F,EAAK3iE,MAAOo3d,EAAap3d,MAAOglE,aAAcoyZ,EAAapyZ,aAAcmK,SAAUnxD,EAC7GwoF,UAAW7sF,SAASy9c,EAAa7zY,KAAK5wD,aAAaktC,KAAwB,IAC3EhJ,eAAgBuga,EAAavga,gBAE7Buga,EAAa7zY,KAAK/pD,UAAUzD,SAAS,iBACrCxyB,EAAM8zd,WAAY,EAClBD,EAAa7zY,KAAK/pD,UAAUvM,OAAO,gBAEvCwwC,EAAKooC,QAAS,EACdpoC,EAAK6xO,iBACA7xO,EAAK21C,qBAAwB31C,EAAK85O,oBACnC95O,EAAKylP,UAAU3/S,EAAM2zN,YAAY/nJ,UAAU,GAE/C5rE,EAAMqmS,SAASvoM,OAAO+1X,GACtB7zd,EAAMQ,OAAOyZ,OAAO+M,IAA8B6sc,GAClD7zd,EAAMw9R,KAAOnmQ,aAAO,IAAM6iC,EAAKj5D,QAAQyY,GAAK,WAAYwgD,EAAKj5D,SAC7Di5D,EAAKyiF,WAAWmxU,oBAAoB,CAAC1uZ,IACrCp/D,EAAMQ,OAAOS,QAAQsC,cAAc,gBAAgB0wB,MAAMygB,QAAU,cAG3E67a,EAAUp0d,UAAUozS,WAAa,SAAU3jO,EAAUnS,EAAOh9D,GACxD,IAAIy9D,EAAOj6D,KAAKO,OACZ4+D,EAAMlF,EAAKqM,iBAAiB9M,GAC5Bh/C,EAAQy/C,EAAKqqE,sBAAsB9qE,GACvC,GAAI2F,IAAQA,EAAIG,cAAgBH,EAAII,aAAc,CAC9C,IAAIuO,EAAK9B,YAAwBhsE,KAAKO,OAAQ4+D,EAAKwM,EAAUnxD,GACzDywD,EAAsC,YAA7B9L,EAAIyM,qBAAqC5rE,KAAKO,OAAO4qE,uBAAuBQ,GACrFxM,EAAIyM,uBAAyBvP,IAAuBpC,EAAKmR,2BAA2BO,GAC9E1R,EAAKmoP,oBAAoBt0O,EAAGl6B,cAAczkB,aAAa,aACjEnvB,KAAK+iG,UAAUj1B,EAAI3O,EAAK8L,EAAQzuE,GAChCwD,KAAKO,OAAOwpB,QAAQhD,KAAsB,CACtCg5D,KAAM//E,KAAK8zd,YAAchmZ,EAAIrU,OAAQ0F,EAAKtkD,KAAMowD,EAAO1B,YAInE+mZ,EAAUp0d,UAAU63d,WAAa,SAAU9oZ,EAAQzR,EAAOh9D,GACtD,IAAIw3d,EACJ,GAAKh0d,KAAKO,OAAO+jE,eAmBZ,CACD,IAAI0xE,EAASh2I,KAAKO,OAAOmuT,mBAAmBzjP,EAAOxvE,KAC/CkwE,EAAWx1D,SAAS6/H,EAAO7mH,aAAaktC,KAAwB,KACpE23Z,EAAgBh0d,KAAKO,OAAOwkE,gBAAgB4G,IACzBpC,UACfyqZ,EAAczqZ,QAAUjrE,YAAO,GAAI,GAAI2sE,EAAOpwD,MAAM,IAEnDzd,YAAkBo8D,IACnBz8D,aAASy8D,EAAOh9D,EAAOw3d,EAAczqZ,SAEzC,IAAI0qZ,EAAmBj0d,KAAKO,OAAO4qE,uBAAuBQ,GAM1D,GALAsoZ,EAAiB1qZ,QAAUjrE,YAAO,GAAI,GAAI01d,EAAczqZ,SAAS,GAC7D0B,EAAOpwD,KAAK2+C,KAAWh9D,IACvBy3d,EAAiBn+U,SAAU,EAC3Bk+U,EAAcl+U,SAAU,GAExB91I,KAAKO,OAAO2pE,kBAAoB7N,IAAoB,CACpD,IAAI63Z,EAAcl0d,KAAKO,OAAO6qE,2BAA2BO,GACzDuoZ,EAAY3qZ,QAAUjrE,YAAO,GAAI,GAAI01d,EAAczqZ,SAAS,GACxD0B,EAAOpwD,KAAK2+C,KAAWh9D,IACvB03d,EAAYp+U,SAAU,SAhC9B,GANK7qE,EAAO1B,UACR0B,EAAO1B,QAAUjrE,YAAO,GAAI,GAAI2sE,EAAOpwD,MAAM,IAE5Czd,YAAkBo8D,IACnBE,KAAS38D,SAASy8D,EAAOh9D,EAAOyuE,EAAO1B,SAEvC0B,EAAOpwD,KAAK2+C,KAAWh9D,EAAO,CAC9B,IAAI2O,EAAOnL,KAAKO,OAAO+lE,iBAAiB9M,GAAOruD,KACjC,SAATA,GAA4B,aAATA,EAChB,IAAIhC,KAAK8hE,EAAOpwD,KAAK2+C,IAAQrsD,aAAe,IAAIhE,KAAK3M,GAAO2Q,aAC5D89D,EAAO6qE,SAAU,GAIrB7qE,EAAO6qE,SAAU,IA6BjCw6U,EAAUp0d,UAAUukJ,UAAY,SAAUjmI,EAAOK,GAE7C,IADA,IACS7c,EAAK,EAAGC,EADNC,OAAOjB,KAAK4d,GACS7c,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAImhE,EAAMlhE,EAAOD,GACjBgC,KAAKsvS,WAAW90R,EAAO2kD,EAAKtkD,EAAKskD,MAGzCmxZ,EAAUp0d,UAAUy3d,WAAa,SAAUl4d,GACvC,IAAI6uH,EAAOtqH,KAAKO,OAAO4oI,oBAAoB1tI,GAAOuE,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,OAOpF,OANKO,YAAkB4C,KAAKO,OAAOusG,iBAAoB1vG,YAAkB4C,KAAKO,OAAOqkE,YACjF0lD,IAEAtqH,KAAKO,OAAOijE,iBACZ8mD,IAEGA,GAEXgmW,EAAUp0d,UAAU6mG,UAAY,SAAUj1B,EAAIrU,EAAQwR,EAAQzuE,GAC1D,IACI23d,EADAp0Y,EAAO,IAAI2hB,KAAa1hG,KAAKO,OAAQP,KAAK+/D,gBAE9CvjE,EAAwB,WAAhBi9D,EAAOtuD,MAAsB/N,YAAkBZ,GAA6BA,EAApBuc,WAAWvc,GAC3EwD,KAAK+zd,WAAW9oZ,EAAQxR,EAAOD,MAAOh9D,GACtC,IAUIo3C,EACAovD,EAXAz/B,EAAUvjE,KAAKO,OAAOgkE,oBAAsBvkE,KAAKO,OAAOokI,6BACrD3kI,KAAKO,OAAOmqE,6BACnBnH,EAAUA,GAAWvjE,KAAKO,OAAOijE,gBAAkBD,EAAU,EAAIA,EACjEjC,aAAmB2J,EAAQjrE,KAAKO,OAAOgmE,uBAAwB0E,EAAO1B,SAElE4qZ,EADA5wZ,GAA2C,YAAhC9J,EAAOmS,sBAAsC5rE,KAAKO,OAAOmkE,aAAa7nE,SAAWouE,EAAO3K,MAAMzjE,OAC/FouE,EAAO3K,MAAMj/D,MAAMkiE,EAAS0H,EAAO3K,MAAMzjE,QAGzCouE,EAAO3K,MAIjBtgE,KAAKO,OAAOgiG,UACZ3uD,EAAgBk6B,EAAGl6B,cACnBovD,EAAYl1B,EAAGk1B,WAEnB,IAAIxoF,EAAQ,EACR+oD,IACA/oD,EAAwC,YAAhCi/C,EAAOmS,sBAAsE,UAAhC5rE,KAAKO,OAAO2pE,gBAC3D3G,EAAU9J,EAAOmS,uBAAyBvP,IAC1Cr8D,KAAKO,OAAOokI,4BAA8B3kI,KAAKO,OAAOkqE,yBAA2BjwD,GAE3FulE,EAAKgjB,UAAUj1B,EAAIqmZ,EAAQn0d,KAAK2zd,WAAWl6Z,EAAOh+D,KAAO+e,GAAQywD,EAAO1B,QAAS,CAAE,MAASvpE,KAAK2zd,WAAWl6Z,EAAOh+D,OAC/GuE,KAAKO,OAAOgiG,SACZviG,KAAK8zd,WAAalgb,EAAc0sB,MAAM0iC,GACtCpvD,EAAc0sB,MAAM0iC,GAAWhtE,UAAUjN,IAAI,gBAG7C+kD,EAAG93C,UAAUjN,IAAI,eAErB+kD,EAAG93C,UAAUjN,IAAI,eACjB/oB,KAAKO,OAAOyZ,OAAO+M,KAAuB,KAE9Cupc,EAAUp0d,UAAUw3d,YAAc,SAAUpzZ,EAAO9lD,GAC/C,IAAI8vG,EAAO,EACPtqH,KAAKO,OAAO0nG,eAAiBjoG,KAAKO,OAAOy6D,cAAcjB,UACvDuwD,EAAOtqH,KAAKO,OAAOy6D,cAAcjB,QAAQl9D,QAExCO,YAAkB4C,KAAKO,OAAOusG,iBAAoB1vG,YAAkB4C,KAAKO,OAAOqkE,YACjF0lD,IAEAtqH,KAAKO,OAAOijE,iBACZ8mD,IAEJ,IAAK,IAAI9gH,EAAI,EAAGA,EAAI82D,EAAMzjE,OAAQ2M,IAAK,CAEnC,GADe2M,SAASmqD,EAAM92D,GAAG2lB,aAAaktC,KAAwB,MACrD7hD,EAAQ8vG,EACrB,OAAO9gH,EAGf,OAAQ,GAEZ8md,EAAUp0d,UAAU43D,gBAAkB,WAClC,IAAImG,EAAOj6D,KAAKO,OACZ0yd,EAASjzd,KAAKkzd,iBAClB,GAAIlzd,KAAKoxd,UAAYn3Z,EAAKooC,OAAQ,CAC9B,IAAK,IAAIzlG,EAAIoD,KAAK0zN,YAAY1wH,UAAWpmG,EAAIq9D,EAAKyK,aAAa7nE,OAAQD,IAAK,CACxE,GAAIq9D,EAAKooC,OACL,OAEJ,IAAI7nF,EAAQxa,KAAKmzd,qBAAqBnzd,KAAK0zN,YAAY1wH,UAAY,GAAG,GAAM,GACxE7jC,EAAMlF,EAAKyK,aAAalqD,GAC5B,GAAI2kD,EAAK,CACL,GAAgD,WAA5Cn/D,KAAKO,OAAOm/D,aAAa+M,eACzBzsE,KAAKgnT,SAASisK,EAAQ9zZ,EAAI3F,OAAO,OAEhC,CACD,IAAIv5D,EAAO,CAAEua,MAAO,EAAGi/C,OAAQ0F,GAC/Bn/D,KAAKO,OAAOyZ,OAAO+M,KAAsB9mB,GACzCD,KAAKgnT,SAAS/mT,EAAKua,MAAO2kD,EAAI3F,OAAO,GAEzCx5D,KAAKinT,YAGRhtP,EAAKooC,SACNriG,KAAKoxd,SAAU,KAI3Bd,EAAUp0d,UAAUk4d,eAAiB,WACjC,IAAIn0d,EAAOD,KAAKq0d,mBAChBp0d,EAAKzD,MAAQyD,EAAK06J,cAClB36J,KAAKs0d,gBAAgBr0d,EAAMA,EAAK8/E,KAAKnsC,cAAe3zC,EAAKw5D,QAAQ,EAAjEz5D,CAAuEC,IAE3Eqwd,EAAUp0d,UAAUm4d,iBAAmB,WACnC,IAAIp6Z,EAAOj6D,KAAKO,OAChBP,KAAKO,OAAOS,QAAQg1B,UAAUvM,OAAO,aACrC,IAAIgwC,EAASz5D,KAAK0zN,YAAYj6J,OAC1Bl9D,EAAM,GACVA,EAAIk9D,EAAOD,OAASz+B,YAAU0+B,EAAOD,MAAOx5D,KAAK0zN,YAAYT,SAC7D,IAAIo0O,EAAaptY,EAAKyiF,WAAW03M,qBAAqBp0V,KAAKu9R,KAAMhhS,GAC7Dg4d,EAAkBj2d,YAAO,GAAI+oc,GACjCA,EAAa/oc,YAAO,GAAI+oc,EAAYrnc,KAAK0zN,YAAYT,SACrD,IAAIz2N,EAAQu+B,YAAU0+B,EAAOD,MAAO+6Z,GAC/Bn3d,YAAkBq8D,EAAOD,QAAW18D,YAAYN,IACjDO,aAAS08D,EAAOD,MAAOh9D,EAAO6qc,GAElC,IAAIpnc,EAAO,CACPo8G,WAAY5iD,EAAOD,MACnBh9D,MAAOu+B,YAAU0+B,EAAOD,MAAO6tY,GAC/Bp0O,QAASjzN,KAAK0zN,YAAYT,QAC1Bx5J,OAAQA,EACRkhG,cAAe36J,KAAK0zN,YAAYl3N,MAChCglE,aAAcxhE,KAAK0zN,YAAYlyJ,aAC/Bz+C,QAAQ,GAMZ,OAJKzjB,gBAAcU,KAAKO,OAAO8xd,gBAC3Bpyd,EAAK8/E,KAAO//E,KAAKu9R,KAAK3pP,cACtB3zC,EAAK8nd,aAAetuZ,GAEjBx5D,GAEXqwd,EAAUp0d,UAAU+qT,SAAW,SAAUutK,GACrC,IAAIx0d,KAAK0wd,iBAAoB1wd,KAAKu9R,KAAlC,CAGA,IAAItjO,EAAOj6D,KAAKO,OAChB,GAAKi0d,GAAiBv6Z,EAAKooC,SAAUriG,KAAKgxd,kBAA1C,CAGAhxd,KAAK0wd,iBAAkB,EACvB,IAAIzwd,EAAOD,KAAKq0d,mBACZ5mZ,EAAKxtE,EAAK8/E,KAAKnsC,cACfurB,EAAMl/D,EAAKw5D,OACV+6Z,EAKDx0d,KAAKs0d,gBAAgBr0d,EAAMwtE,EAAItO,EAA/Bn/D,CAAoCC,IAJpCg6D,EAAKlwC,QAAQhD,IAAiB9mB,EAAMD,KAAKs0d,gBAAgBr0d,EAAMwtE,EAAItO,IACnElF,EAAKjgD,OAAO+M,IAAkB,CAAEotU,QAASn0V,KAAKu9R,WAMtD+yL,EAAUp0d,UAAUo4d,gBAAkB,SAAUG,EAAchnZ,EAAIhU,EAAQi7Z,GACtE,IAAI30d,EAAQC,KACZ,OAAO,SAAUy0d,GACb,IAAIx6Z,EAAOl6D,EAAMQ,OAIjB,GAHAk0d,EAAa10Y,KAAO00Y,EAAa10Y,KAAO00Y,EAAa10Y,KAAOhgF,EAAMw9R,KAAK3pP,cACvE6gb,EAAa1M,aAAe0M,EAAa1M,aAAe0M,EAAa1M,aAAetuZ,EACpFg7Z,EAAa1M,aAAavtc,MAAQpd,YAAkBq3d,EAAa1M,aAAavtc,OAAS,EAAIi6c,EAAa1M,aAAavtc,MACjHi6c,EAAa1xc,QAEb,GADAhjB,EAAM2wd,iBAAkB,EACpB3wd,EAAM0wd,SAAU,CAEhB,GADA1wd,EAAM0wd,UAAW,EACb1wd,EAAM2zN,YAAY/nJ,WAAa5rE,EAAMya,OAASza,EAAM2zN,YAAYj6J,OAAOD,QAAUz5D,EAAMy5D,MACvF,OAEJz5D,EAAMwzd,eAAexzd,EAAMya,MAAOza,EAAMy5D,MAAOz5D,EAAM6+I,YAP7D,CAWA3kF,EAAKyiF,WAAWqyU,eAAe,CAACt1Z,IAChCQ,EAAKooC,QAAS,EACdpoC,EAAKyiF,WAAWzqF,cAChBlyD,EAAMQ,OAAOyZ,OAAO+M,KAAuB,IAC3C,IAAIkkD,EAAStN,aAAa82Z,EAAa10Y,KAAM1jB,MACtCsB,aAAa82Z,EAAa10Y,KAAM1jB,KAA0BpC,EAAKmoP,oBAAoB30O,EAAGt+C,aAAa,aAAa,GACjH8qC,EAAKmoP,oBAAoB30O,EAAGt+C,aAAa,aA6B/C,GA5BI8qC,EAAKiQ,kBAAoB7N,MAAuBsB,aAAa82Z,EAAa10Y,KAAM,0BAC7EpiB,aAAa82Z,EAAa10Y,KAAM,6BACnC9U,EAAShR,EAAKmoP,oBAAoB30O,EAAGt+C,aAAa,aAAa,GAAO,IAE1EpvB,EAAMgjG,UAAU0xX,EAAa10Y,KAAMtmB,EAAQwR,EAAQwpZ,EAAaj4d,OAC5DuD,EAAMQ,OAAOgiG,UACbkyX,EAAa10Y,KAAOhgF,EAAM+zd,YAE9B19b,aAAY,CAACq3C,GAAK,CAACpR,IAAoB,eACvCjmC,aAAY,CAACq+b,EAAa10Y,MAAO,CAAC,oBAAqB,iBAClD3iF,YAAkBq3d,EAAaj4d,QAAUi4d,EAAaj4d,MAAM2Q,cAC3D/P,YAAkB2C,EAAM2zN,YAAYl3N,OAAmC,GAA1BuD,EAAM2zN,YAAYl3N,OAAY2Q,aAAepN,EAAM8zd,WAC9Fz2d,YAAkBq3d,EAAaj4d,QAAUY,YAAkB6tE,EAAOpwD,KAAK4+C,EAAOD,SAC9Ep8D,YAAkB2C,EAAM2zN,YAAYl3N,SAAWi4d,EAAa10Y,KAAKnsC,cAAc5d,UAAUzD,SAAS,mBACtGkic,EAAa10Y,KAAK/pD,UAAUvM,OAAO,eAEnCrsB,YAAkBs3d,IAClBz6Z,EAAKlwC,QAAQhD,IAAkB0tc,GAEnCx6Z,EAAKjgD,OAAO+M,KAAuB,IACnChnB,EAAM8zd,WAAY,EACd9zd,EAAMQ,OAAO+9D,WAAWzhE,OAAS,IACjCkD,EAAMQ,OAAOyZ,OAAO+M,KAA8B,IAC9ChnB,EAAMQ,OAAOy6D,cAAcjB,QAAQl9D,OAAS,IAAMkD,EAAMgxd,SAAShxd,EAAM2zN,YAAY/nJ,WACnF5rE,EAAMQ,OAAOyZ,OAAO+M,KAAwB,KAGpDhnB,EAAM2wd,iBAAkB,EACpB3wd,EAAM0wd,SAAU,CAEhB,GADA1wd,EAAM0wd,UAAW,EACb1wd,EAAM2zN,YAAY/nJ,WAAa5rE,EAAMya,OAASza,EAAM2zN,YAAYj6J,OAAOD,QAAUz5D,EAAMy5D,MACvF,OAEJ,IAAI2F,EAAMlF,EAAKqM,iBAAiBvmE,EAAMy5D,OAClC2F,GAAOA,EAAII,cACXx/D,EAAMwzd,eAAexzd,EAAMya,MAAOza,EAAMy5D,MAAOz5D,EAAM6+I,OAGzD81U,GACAz6Z,EAAKjgD,OAAO+M,KAAqB,OAI7Cupc,EAAUp0d,UAAUu3d,eAAiB,SAAUj5c,GAC3C,IAAIowC,EAAM5qD,KAAKO,OAAO6hT,oBAAoBpiT,KAAKO,OAAOwrE,cAAcvxD,GAAO2U,aAAa,aACxF,OAAOy7B,EAAI2e,QAAU3e,EAAI2e,QAAU3e,EAAI/vC,MAE3Cy1c,EAAUp0d,UAAUqyS,eAAiB,SAAU1tS,GAC3C,IAAkB,QAAbA,EAAEilC,QAAiC,aAAbjlC,EAAEilC,SAA0B9lC,KAAKO,OAAO8hG,OAAQ,CACvE,IAAIpoC,EAAOj6D,KAAKO,OACZ0yd,EAASjzd,KAAKkzd,iBACdiB,EAAUx2Z,aAAa98D,EAAEo8B,OAAQo/B,KACrC,GAAI83Z,EAAS,CACT,IAAIp0Y,EAAOo0Y,EAAQ7wd,cAAc,YACjC,GAAIy8E,EAAM,CACN,IAAI40Y,EAAiB30d,KAAKO,OAAOkoE,oBAE7BksZ,EAD2B,QAAb9zd,EAAEilC,OAAmB6ub,EAAe93d,OAAS,EAAI,GACnC28D,QAAUumB,EAAK5wD,aAAa,MAAM9tB,MAAMrB,KAAKO,OAAOS,QAAQyY,GAAG5c,UACvFmD,KAAK0zN,YAAY/nJ,WAAasnZ,GAAuB,QAAbpyd,EAAEilC,OACD,QAArCm0B,EAAKyF,aAAa+M,gBAClBxS,EAAKyF,aAAa+M,eAAiB,SACnCzsE,KAAK29F,YACL1jC,EAAKyF,aAAa+M,eAAiB,OAGnCzsE,KAAK29F,YAIT39F,KAAKinT,gBAW7BqpK,EAAUp0d,UAAU04d,qBAAuB,WACnC50d,KAAKgxd,oBACLhxd,KAAKO,OAAOyZ,OAAO+M,KAAoB,IACvC/mB,KAAKO,OAAO8hG,QAAS,EACrBriG,KAAK6zd,WAAY,IAGzBvD,EAAUp0d,UAAUg3d,eAAiB,WACjC,IAAI3pZ,EAAUvpE,KAAK61I,kBACnB,OAAO71I,KAAKO,OAAOqnE,wBAAwB/qE,OAAS0sE,EAAQlN,KAAuBx/D,OAC/E0sE,EAAQlN,KAAyBx/D,OAAS,GAE3Cyzd,EAxnCoB,GCrB3Bjyb,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAmBzCo2b,GAA4B,SAAU11b,GAEtC,SAAS01b,EAAWt0d,EAAQw/D,EAAgBqmO,GACxC,IAAIrmS,EAEJo/B,EAAO79B,KAAKtB,KAAMO,EAAQw/D,IAAmB//D,KAI7C,OAHAD,EAAMQ,OAASA,EACfR,EAAMggE,eAAiBA,EACvBhgE,EAAMqmS,SAAWA,EACVrmS,EAwBX,OAhCAs+B,GAAUw2b,EAAY11b,GAUtB01b,EAAW34d,UAAU48D,UAAY,WAE7B35B,EAAOjjC,UAAU48D,UAAUx3D,KAAKtB,OAEpC60d,EAAW34d,UAAUyhG,UAAY,SAAU9iF,EAAML,GAE7C2kB,EAAOjjC,UAAUyhG,UAAUr8F,KAAKtB,KAAM6a,EAAML,IAEhDq6c,EAAW34d,UAAUu0J,QAAU,WAE3BtxH,EAAOjjC,UAAUu0J,QAAQnvJ,KAAKtB,OAElC60d,EAAW34d,UAAUukJ,UAAY,SAAUjmI,EAAOK,GAC9CskB,EAAOjjC,UAAUukJ,UAAUn/I,KAAKtB,KAAMwa,EAAOK,IAEjDg6c,EAAW34d,UAAU0hG,aAAe,SAAUipN,EAAWhsS,GAErDskB,EAAOjjC,UAAU0hG,aAAat8F,KAAKtB,KAAM6mT,EAAWhsS,IAExDg6c,EAAW34d,UAAU4qT,UAAY,SAAUr5O,GACvCtuC,EAAOjjC,UAAU4qT,UAAUxlT,KAAKtB,KAAMytE,IAEnConZ,EAjCqB,CAkC9B7H,I3DrDE3ub,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAUrD35B,GAAQ,CAEf2vd,MAAO,IAAIlwd,OAAO,mHAElBglW,IAAK,kFACLmrH,SAAU,IAAInwd,OAAO,2DACrBowd,OAAQ,IAAIpwd,OAAO,YACnBqwd,MAAO,IAAIrwd,OAAO,qBAClBswd,WAAY,IAAItwd,OAAO,kBAS3B,SAAWu1a,GAIPA,EAAYA,EAAqB,QAAI,GAAK,UAI1CA,EAAYA,EAAmB,MAAI,GAAK,QAR5C,CASGA,KAAgBA,GAAc,KAgBjC,IAAIg7C,GAA+B,SAAUh2b,GASzC,SAASg2b,EAAcn0d,EAASsL,GAC5B,IAAIvM,EAAQo/B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KA6CnD,GA5CAD,EAAMq1d,UAAY,GAClBr1d,EAAMs1d,WAAa,GACnBt1d,EAAMu1d,aAAc,EACpBv1d,EAAMmyR,SAAW,WACjBnyR,EAAMw1d,YAAc,KACpBx1d,EAAMs0F,aAAe,KACrBt0F,EAAMy1d,YAAc,+DAEpBz1d,EAAM01d,cAAgB,GAMtB11d,EAAM21d,gBAAkB,CACpBxjM,SAAU,0BACV7/E,MAAO,sCACPzvL,IAAK,4BACLha,KAAM,6BACN+sd,QAAS,qCACTC,WAAY,iCACZ52S,OAAQ,+BACRp5K,OAAQ,4BACRs+K,UAAW,4CACX2xS,UAAW,wCACX/oS,YAAa,4DACbt6K,MAAO,4CACPa,IAAK,kDACLD,IAAK,qDACLjO,MAAO,gCACPmtM,IAAK,qCACL/mM,QAAS,wCACTuqd,QAAS,qCAEc,qBAAhB/1d,EAAMmsE,QACbnsE,EAAMmsE,MAAQ,IAElBnsE,EAAMg0J,KAAO,IAAI39G,IAAK,gBAAiBr2C,EAAM21d,gBAAiB31d,EAAMgd,QAChEhd,EAAMgd,QACNhd,EAAMg2d,aAEV16c,KAAa/B,GAAG,uBAAwBvZ,EAAMi2d,kBAAmBj2d,GACjEiB,EAA6B,kBAAZA,EAAuBo2B,aAAOp2B,EAASR,UAAYQ,EAE/C,MAAjBjB,EAAMiB,QASV,OARIjB,EAAMiB,QAAQ40B,aAAa,aAAc,IACzC71B,EAAMk2d,cAAgB1kc,aAAUxxB,EAAMy1d,YAAaz1d,EAAMiB,SACzDjB,EAAMm2d,mBACNn2d,EAAMm0C,aAKHn0C,EA6kBX,IAAIo2d,EA8HJ,OA1wBA93b,GAAU82b,EAAeh2b,GAiEzBg3b,EAAkBhB,EASlBA,EAAcj5d,UAAUk6d,SAAW,SAAUh8c,EAAM8xD,GAC3C9xD,IAEIpa,KAAKksE,MAAM1sE,eAAe4a,GAC1B9b,YAAO0B,KAAKksE,MAAM9xD,GAAO8xD,EAAO,IAGhClsE,KAAKksE,MAAM9xD,GAAQ8xD,IAY/BipZ,EAAcj5d,UAAUm6d,YAAc,SAAUj8c,EAAM8xD,GAClD,GAAK9xD,GAAS8xD,EAGT,GAAIlsE,KAAKksE,MAAM9xD,KAAU8xD,SACnBlsE,KAAKksE,MAAM9xD,OAEjB,IAAKhd,YAAkB4C,KAAKksE,MAAM9xD,IAAS8xD,GAM5C,OALA,IAAK,IAAItvE,EAAI,EAAGA,EAAIsvE,EAAMrvE,OAAQD,WACvBoD,KAAKksE,MAAM9xD,GAAM8xD,EAAMtvE,SAPlCoD,KAAKksE,MAAQ,IAsBrBipZ,EAAcj5d,UAAU6kG,SAAW,SAAUrb,GACzC,IAAIxZ,EAAQhuE,OAAOjB,KAAK+C,KAAKksE,OAC7B,GAAIwZ,GAAYxZ,EAAMrvE,OAGlB,OAFAmD,KAAKs2d,cAAc5wY,IAEiB,IAA7BxZ,EAAM/tE,QAAQunF,IAEP,IAF2B1lF,KAAKq1d,WAAWnkc,QAAO,SAAUrW,GACtE,OAAOA,EAAKT,OAASsrE,KACtB7oF,OAGHmD,KAAKq1d,WAAa,GAClB,IAAK,IAAIr3d,EAAK,EAAGu4d,EAAUrqZ,EAAOluE,EAAKu4d,EAAQ15d,OAAQmB,IAAM,CACzD,IAAI6/N,EAAS04P,EAAQv4d,GACrBgC,KAAKs2d,cAAcz4P,GAEvB,OAAkC,IAA3B79N,KAAKq1d,WAAWx4d,QAS/Bs4d,EAAcj5d,UAAUq3C,MAAQ,WAC5BvzC,KAAKgB,QAAQuyC,QACbvzC,KAAKw2d,aASTrB,EAAcj5d,UAAUu6d,gBAAkB,SAAUr8c,GAEhD,OADApa,KAAKq0F,aAAgBj9D,aAAO,UAAYhd,EAAO,KAAMpa,KAAKgB,SACnDhB,KAAKq0F,cAQhB8gY,EAAcj5d,UAAUif,QAAU,WAC9Bnb,KAAKuzC,QACLvzC,KAAK61C,eACL71C,KAAKksE,MAAQ,GAEb,IADA,IACSluE,EAAK,EAAGgiC,EADFzO,aAAU,IAAMvxB,KAAK02d,WAAa,MAAQ12d,KAAK22d,WAAY32d,KAAKgB,SACvChD,EAAKgiC,EAAWnjC,OAAQmB,IAAM,CAClE,IAAIgD,EAAUg/B,EAAWhiC,GACzB6yB,YAAO7vB,GAEXm+B,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,MAC9Bqb,KAAaxB,IAAI,uBAAwB7Z,KAAKg2d,oBASlDb,EAAcj5d,UAAU29B,kBAAoB,SAAU2H,EAASC,GAC3D,IAAK,IAAIzjC,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,SACDgC,KAAK+1d,gBASrBZ,EAAcj5d,UAAU65d,WAAa,WACjC,IAAK,IAAI/3d,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAK+C,KAAK01d,iBAAkB13d,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC3E,IAAIhB,EAAMuG,EAAGvF,GACbgC,KAAK+zJ,KAAKx9G,UAAUv2C,KAAK+c,QACzB,IAAIvgB,EAAQwD,KAAK+zJ,KAAKl9G,YAAY75C,GAClCgD,KAAKy1d,cAAcz4d,GAAOR,IAOlC24d,EAAcj5d,UAAU2+B,cAAgB,WACpC,MAAO,iBAOXs6b,EAAcj5d,UAAU85d,kBAAoB,SAAU/1d,GAClDD,KAAK+c,OAAS9c,EAAK8c,OACnB/c,KAAK+1d,cAOTZ,EAAcj5d,UAAUgrC,QAAU,WAC9BlnC,KAAK61C,eACL71C,KAAKi2d,cAAgB1kc,aAAUvxB,KAAKw1d,YAAax1d,KAAKgB,SACtDhB,KAAKk0C,cAETihb,EAAcj5d,UAAUs6d,UAAY,WAChCx2d,KAAKq1d,WAAa,GAClBr1d,KAAKo1d,UAAY,GAEjB,IADA,IACSp3d,EAAK,EAAG44d,EADFrlc,aAAUvxB,KAAKw1d,YAAax1d,KAAKgB,SACRhD,EAAK44d,EAAW/5d,OAAQmB,IAAM,CAClE,IACIgjE,EADU41Z,EAAW54d,GAEzBgjE,EAAM3gC,gBAAgB,gBACtB2gC,EAAMhrC,UAAUvM,OAAOzpB,KAAK02d,YACxB11Z,EAAM5mD,KAAKvd,OAAS,IACpBmD,KAAKy2d,gBAAgBz1Z,EAAM5mD,MAC3Bpa,KAAK62d,gBAAgB71Z,EAAM5mD,MAC3Bpa,KAAK6+b,YAAY79X,EAAM5mD,OAE3B4mD,EAAMhrC,UAAUvM,OAAOzpB,KAAK22d,cAGpCxB,EAAcj5d,UAAUg6d,iBAAmB,WAMvC,IALA,IAAIY,EAAW,CAAC,WAAY,iBAAkB,QAAS,cAAe,YAAa,YAAa,UAAW,SACvG,UAAW,oBAAqB,OAAQ,kBAAmB,MAAO,MAAO,QAAS,UAAW,yBAC7F,yBAA0B,yBAA0B,qBAAsB,yBAA0B,sBACpG,sBAAuB,kBACvBC,EAAgB,CAAC,SAAU,QAAS,MAAO,OAAQ,SAAU,OACxD/4d,EAAK,EAAGuF,EAAMvD,KAAKi2d,cAAgBj4d,EAAKuF,EAAG1G,OAAQmB,IAAM,CAI9D,IAHA,IAAIgjE,EAAQz9D,EAAGvF,GAEXg5d,EAAU,GACLjic,EAAK,EAAGkic,EAAaH,EAAU/hc,EAAKkic,EAAWp6d,OAAQk4B,IAAM,CAClE,IAAIw8O,EAAO0lN,EAAWlic,GACtB,GAAiC,OAA7BisC,EAAM7xC,aAAaoiP,GACnB,OAAQA,GACJ,IAAK,WACDvxQ,KAAKk3d,QAAQl2Z,EAAOg2Z,EAASzlN,EAAMvwM,EAAMkxN,UACzC,MACJ,IAAK,kBACD3gB,EAAOvwM,EAAM7xC,aAAaoiP,GAC1BvxQ,KAAKk3d,QAAQl2Z,EAAOg2Z,EAASzlN,GAAM,GACnC,MACJ,IAAK,QAC0C,IAAvCwlN,EAAc54d,QAAQ6iE,EAAM71D,OAC5BnL,KAAKk3d,QAAQl2Z,EAAOg2Z,EAASh2Z,EAAM71D,MAAM,GAE7C,MACJ,IAAK,cACL,IAAK,QACDnL,KAAKk3d,QAAQl2Z,EAAOg2Z,EAASzlN,EAAMx2P,KAAKC,MAAMgmD,EAAM7xC,aAAaoiP,KACjE,MACJ,IAAK,UAEG,IAAI93P,EAAKunD,EAAM7xC,aAAaoiP,GAC5BvxQ,KAAKk3d,QAAQl2Z,EAAOg2Z,EAASzlN,EAAM93P,GAEvC,MACJ,QAC2C,SAAnCunD,EAAM7xC,aAAa,YACnBnvB,KAAKm3d,eAAen2Z,EAAOg2Z,EAASzlN,EAAMvwM,EAAM7xC,aAAaoiP,IAG7DvxQ,KAAKk3d,QAAQl2Z,EAAOg2Z,EAASzlN,EAAMvwM,EAAM7xC,aAAaoiP,KAMtC,IAAhCrzQ,OAAOjB,KAAK+5d,GAASn6d,QACrBmD,KAAKo2d,SAASp1Z,EAAM5mD,KAAM48c,KAItC7B,EAAcj5d,UAAUi7d,eAAiB,SAAUn2Z,EAAOo2Z,EAASC,EAAU76d,GACzE,IAAI26d,EAAiBE,EAAS16d,MAAM,KAChC26d,EAAY,CAAC,WAAY,aAAc,QAAS,YAAa,YAAa,QAAS,QAAS,WAC5FC,EAAgBJ,EAAeA,EAAet6d,OAAS,GACvD26d,EAAiBL,EAAeA,EAAet6d,OAAS,GAC5D,IAA0C,IAAtCy6d,EAAUn5d,QAAQo5d,GAClB,OAAQA,GACJ,IAAK,WACDv3d,KAAKk3d,QAAQl2Z,EAAOo2Z,EAAS,WAAY56d,GACzC,MACJ,IAAK,aACDwD,KAAKk3d,QAAQl2Z,EAAOo2Z,EAAS,aAAc56d,GAC3C,MACJ,IAAK,QACDwD,KAAKk3d,QAAQl2Z,EAAOo2Z,EAAS,MAAO56d,QAI3C,IAA2C,IAAvC86d,EAAUn5d,QAAQq5d,GACvB,OAAQA,GACJ,IAAK,YACDx3d,KAAKk3d,QAAQl2Z,EAAOo2Z,EAAS,YAAa56d,GAC1C,MACJ,IAAK,YACDwD,KAAKk3d,QAAQl2Z,EAAOo2Z,EAAS,YAAa56d,GAC1C,MACJ,IAAK,QAEG,IAAIi7d,EAAWz2Z,EAAM7xC,aAAa,sBAC9Buoc,EAAW12Z,EAAM7xC,aAAa,sBAClCnvB,KAAKk3d,QAAQl2Z,EAAOo2Z,EAAS,QAAS,CAACK,EAAUC,IAErD,MACJ,IAAK,UAEG,IAAIj+c,EAAKunD,EAAM7xC,aAAakoc,GAAU16d,MAAM,KAC5CqD,KAAKk3d,QAAQl2Z,EAAOo2Z,EAAS,UAAW39c,EAAGA,EAAG5c,OAAS,IAE3D,MACJ,IAAK,QACDmD,KAAKk3d,QAAQl2Z,EAAOo2Z,EAAS,QAAS56d,KAKtD24d,EAAcj5d,UAAUg7d,QAAU,SAAUl2Z,EAAOo2Z,EAASC,EAAU76d,GAClE,IAEIm7d,EAFAh3d,EAAUqgE,EAAM7xC,aAAa,QAAUkoc,EAAW,YAClDO,EAAoB52Z,EAAM7xC,aAAa,YAAckoc,GAErDr3d,KAAKksE,MAAMlL,EAAM5mD,OAAsB,mBAAbi9c,GAA8C,WAAbA,IAC3Dr3d,KAAKy2d,gBAAgBz1Z,EAAM5mD,MAC3Bu9c,EAAgB33d,KAAK63d,gBAAgB73d,KAAKksE,MAAMlL,EAAM5mD,MAAMi9c,GAAWA,IAEvE12d,EACAnE,EAAQ,CAACA,EAAOmE,GAEXi3d,EACLp7d,EAAQ,CAACA,EAAOo7d,GAEXD,IACLn7d,EAAQ,CAACA,EAAOm7d,IAEpBP,EAAQC,GAAY76d,GAGxB24d,EAAcj5d,UAAUg4C,WAAa,WACjC,IAAK,IAAIl2C,EAAK,EAAGuF,EAAMvD,KAAKi2d,cAAgBj4d,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC9D,IAAIgjE,EAAQz9D,EAAGvF,GACXm4d,EAAgB2B,YAAY92Z,GAC5Bp4C,IAAaG,IAAIi4C,EAAO,QAAShhE,KAAK0lJ,aAAc1lJ,MAE7B,WAAlBghE,EAAMhxC,QACXpH,IAAaG,IAAIi4C,EAAO,SAAUhhE,KAAKusd,cAAevsd,OAGtD4oB,IAAaG,IAAIi4C,EAAO,WAAYhhE,KAAKuqT,gBAAiBvqT,MAC1D4oB,IAAaG,IAAIi4C,EAAO,QAAShhE,KAAK6gd,aAAc7gd,OAG5D4oB,IAAaG,IAAI/oB,KAAKgB,QAAS,SAAUhB,KAAK+3d,cAAe/3d,MAC7D4oB,IAAaG,IAAI/oB,KAAKgB,QAAS,QAAShB,KAAK29J,aAAc39J,OAG/Dm1d,EAAcj5d,UAAU25C,aAAe,WACnC,IAAK,IAAI73C,EAAK,EAAGuF,EAAMvD,KAAKi2d,cAAgBj4d,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC9D,IAAIgjE,EAAQz9D,EAAGvF,GACf4qB,IAAagB,YAAYo3C,GAE7Bp4C,IAAaa,OAAOzpB,KAAKgB,QAAS,SAAUhB,KAAK+3d,eACjDnvc,IAAaa,OAAOzpB,KAAKgB,QAAS,QAAShB,KAAK29J,eAGpDw3T,EAAcj5d,UAAUquT,gBAAkB,SAAU1pT,GAChDb,KAAK+pB,QAAQ,WAAYlpB,GAEzB,IAAIG,EAAUH,EAAEo8B,OACZj9B,KAAKksE,MAAMlrE,EAAQoZ,QACfpa,KAAKksE,MAAMlrE,EAAQoZ,MAAMpa,KAAKkyR,WAAalxR,EAAQxE,MAAMK,OAAS,EAClEmD,KAAK+gG,SAAS//F,EAAQoZ,OAEyB,IAA1Cpa,KAAKo1d,UAAUj3d,QAAQ6C,EAAQoZ,OACpCpa,KAAKo1d,UAAUxzd,KAAKZ,EAAQoZ,QAKxC+6c,EAAcj5d,UAAU2kd,aAAe,SAAUhgd,GAC7Cb,KAAK+pB,QAAQ,QAASlpB,GACtB,IAAIG,EAAUH,EAAEo8B,QAGA,IAAZp8B,EAAEw0C,OAAiBr1C,KAAKksE,MAAMlrE,EAAQoZ,SAAUpa,KAAKksE,MAAMlrE,EAAQoZ,OAAUpa,KAAKksE,MAAMlrE,EAAQoZ,MAAMpa,KAAKkyR,cAGjE,IAA1ClyR,KAAKo1d,UAAUj3d,QAAQ6C,EAAQoZ,OAAgBpa,KAAKksE,MAAMlrE,EAAQoZ,QAA2C,IAJ/F,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KAIuBjc,QAAQ0C,EAAEw0C,QACjGr1C,KAAK+gG,SAAS//F,EAAQoZ,OAI9B+6c,EAAcj5d,UAAUwpJ,aAAe,SAAU7kJ,GAC7Cb,KAAK+pB,QAAQ,QAASlpB,GACtB,IAAIG,EAAUH,EAAEo8B,OAEK,WAAjBj8B,EAAQmK,KACRnL,KAAK+gG,SAAS//F,EAAQoZ,MAE0B,OAA3CpZ,EAAQmuB,aAAa,oBAE1BnvB,KAAKs1d,aAAc,IAI3BH,EAAcj5d,UAAUqwd,cAAgB,SAAU1rd,GAC9Cb,KAAK+pB,QAAQ,SAAUlpB,GACvB,IAAIG,EAAUH,EAAEo8B,OAChBj9B,KAAK+gG,SAAS//F,EAAQoZ,OAG1B+6c,EAAcj5d,UAAU67d,cAAgB,SAAUl3d,GAC9Cb,KAAK+pB,QAAQ,SAAUlpB,GAGlBb,KAAKs1d,aAAgBt1d,KAAK+gG,WAI3B/gG,KAAKs1d,aAAc,EAHnBz0d,EAAEyrC,kBAOV6ob,EAAcj5d,UAAUyhK,aAAe,WACnC39J,KAAKw2d,aAGTrB,EAAcj5d,UAAUo6d,cAAgB,SAAUl8c,GAC9C,GAAKpa,KAAKksE,MAAM9xD,GAAhB,CAGA,IAAI8xD,EAAQhuE,OAAOjB,KAAK+C,KAAKksE,MAAM9xD,IAC/B49c,GAAa,EACbC,GAAqB,EACrBC,EAAQhsZ,EAAM/tE,QAAQ,kBACtBusN,EAAOx+I,EAAM/tE,QAAQ,UAQzB,GAPA6B,KAAKy2d,gBAAgBr8c,IACP,IAAVswM,IACAstQ,GAAa,IAEF,IAAXE,IACAD,GAAqB,IAEpBD,GAAeA,GAAcC,EAAlC,EACmB,IAAXC,GACAhsZ,EAAMpyD,OAAOo+c,EAAO,IAEV,IAAVxtQ,GACAx+I,EAAMpyD,OAAQ4wM,EAAO,EAAI,GAE7B1qN,KAAK62d,gBAAgBz8c,GACrB,IAAK,IAAIpc,EAAK,EAAGm6d,EAAUjsZ,EAAOluE,EAAKm6d,EAAQt7d,OAAQmB,IAAM,CACzD,IAAIuzQ,EAAO4mN,EAAQn6d,GACfo6d,EAAep4d,KAAK63d,gBAAgB73d,KAAKksE,MAAM9xD,GAAMm3P,GAAOA,GAC5D8mN,EAAY,CAAEj+c,KAAMA,EAAMzZ,QAASy3d,GACnCt1c,EAAY,CACZw1c,UAAWl+c,EACXpZ,QAAShB,KAAKq0F,aACd1zF,QAASy3d,GAEb,IAAKp4d,KAAK+td,QAAQ3zc,EAAMm3P,KAAUvxQ,KAAKq0F,aAAar+D,UAAUzD,SAASvyB,KAAK87B,QAAS,CACjF97B,KAAKu4d,iBAAiBn+c,GACtBpa,KAAKq1d,WAAWzzd,KAAKy2d,GAErBr4d,KAAKq0F,aAAaz+D,aAAa,eAAgB,QAC/C51B,KAAKq0F,aAAaz+D,aAAa,mBAAoB51B,KAAKq0F,aAAa56E,GAAK,SAC1EzZ,KAAKq0F,aAAar+D,UAAUjN,IAAI/oB,KAAK02d,YACrC12d,KAAKq0F,aAAar+D,UAAUvM,OAAOzpB,KAAK22d,YACnC32d,KAAKu1d,YAINv1d,KAAK8+b,YAAYu5B,GAHjBr4d,KAAKw4d,mBAAmBp+c,EAAMi+c,EAAU13d,QAASX,KAAKq0F,cAK1DvxE,EAAU21c,aAAez4d,KAAKu1d,YAC9Bzyc,EAAU6B,OAAS,UACnB3kB,KAAKq0F,aAAar+D,UAAUjN,IAAI/oB,KAAK02d,YACrC12d,KAAKq0F,aAAar+D,UAAUvM,OAAOzpB,KAAK22d,YACxC32d,KAAK04d,yBAAyBt+c,EAAM0I,GACpC9iB,KAAK+pB,QAAQ,qBAAsBjH,GAEtB,aAATyuP,GACAvxQ,KAAKq0F,aAAaz+D,aAAa,gBAAiB,QAEpD,MAGA51B,KAAK6+b,YAAYzkb,GACjB0I,EAAU6B,OAAS,UACnB3kB,KAAK+pB,QAAQ,qBAAsBjH,OASnDqyc,EAAcj5d,UAAUw8d,yBAA2B,SAAUt+c,EAAMu+c,GAC1D34d,KAAKksE,MAAM9xD,GAAMpa,KAAKkyR,WAAclyR,KAAKq0F,aAAa73F,MAAMK,QAAWO,YAAkB4C,KAAKu1d,eAC/Fv1d,KAAKu1d,YAAYnzd,UAAYpC,KAAKq0F,aAAa73F,MAC/CwD,KAAKu1d,YAAY3/b,aAAa,eAAgB,SAC9C+ic,EAAMh0c,OAAS,GACf3kB,KAAK6+b,YAAYzkb,KAIzB+6c,EAAcj5d,UAAU6xd,QAAU,SAAU3zc,EAAMm3P,GAC9C,IAAI11Q,EAASmE,KAAKksE,MAAM9xD,GAAMm3P,GAC1BhmJ,EAAS1vH,aAAkBuC,OAA8B,kBAAdvC,EAAO,GAAmBA,EAAO,GAAKA,EACjF+8d,EAAc54d,KAAKksE,MAAM9xD,GAAMm3P,GAC/BtxQ,EAAO,CAAEzD,MAAOwD,KAAKq0F,aAAa73F,MAAO+uH,MAAOA,EAAOvqH,QAAShB,KAAKq0F,aAAcsrE,YAAa3/J,KAAKgB,SAEzG,OADAhB,KAAK+pB,QAAQ,kBAAmB9pB,IAC3BA,EAAKsrH,OAAkB,aAATgmJ,IAGfqnN,GAAyC,oBAAnBA,EAAY,GACzBA,EAAY,GACXt3d,KAAKtB,KAAM,CAAEgB,QAAShB,KAAKq0F,aAAc73F,MAAOwD,KAAKq0F,aAAa73F,QAEvE25d,EAAgB2B,YAAY93d,KAAKq0F,cACzB,aAATk9K,GAGGhgP,aAAU,eAAiBnX,EAAO,aAAcpa,KAAKgB,SAASnE,OAAS,EAGvEs5d,EAAgB0C,eAAetnN,GAAMtxQ,KAIpDk1d,EAAcj5d,UAAU27d,gBAAkB,SAAUiB,EAAWvnN,GAC3D,IAAI5wQ,EAAUX,KAAKq0F,aAAallE,aAAa,QAAUoiP,EAAO,YAC1DvxQ,KAAKq0F,aAAallE,aAAa,QAAUoiP,EAAO,YAC/CunN,aAAqB16d,OAAiC,kBAAjB06d,EAAU,GAAmBA,EAAU,GAC7B,IAA3C56d,OAAOjB,KAAK+C,KAAKy1d,eAAe54d,OAAgBmD,KAAKy1d,cAAclkN,GAAQvxQ,KAAK01d,gBAAgBnkN,GACrGzoD,EAAUnoN,EAAQiC,MAAM,WAC5B,IAAKxF,YAAkB0rN,GACnB,IAAK,IAAIlsN,EAAI,EAAGA,EAAIksN,EAAQjsN,OAAQD,IAAK,CACrC,IAAIJ,EAAQs8d,aAAqB16d,MAAQ06d,EAAUl8d,GAAKk8d,EACxDn4d,EAAUA,EAAQjE,QAAQosN,EAAQlsN,GAAIJ,GAG9C,OAAOmE,GAGXw0d,EAAcj5d,UAAUs8d,mBAAqB,SAAUp+c,EAAMzZ,EAASqgE,GAClE,IAAIy3Z,EAAet3d,YAAcnB,KAAKy4d,aAAc,CAChDpqc,UAAWruB,KAAK02d,WAChBt0d,UAAWzB,EACXoyB,MAAO,CAAEgmc,IAAK3+c,KAUlB,GAPIpa,KAAKg5d,cAAgB7+C,GAAY8+C,UACjCR,EAAazic,UAAUvM,OAAOzpB,KAAK02d,YACnC+B,EAAazic,UAAUjN,IAAI,aAC3B0vc,EAAet3d,YAAcnB,KAAKk5d,eAAgB,CAAE7qc,UAAWruB,KAAK02d,WAAYt0d,UAAWq2d,EAAav2d,aAE5Gu2d,EAAah/c,GAAKzZ,KAAKq0F,aAAaj6E,KAAO,QAEvCpa,KAAKgB,QAAQsC,cAAc,qBAAuB09D,EAAMvnD,GAAK,MAC7DzZ,KAAKgB,QAAQsC,cAAc,qBAAuB09D,EAAMvnD,GAAK,MAAMzX,YAAYy2d,QAE9E,IAAmD,IAA/Cz3Z,EAAM7kB,aAAa,wBAAkC,CAE1D,IAAIg9a,EAAcn4Z,EAAM7xC,aAAa,wBACpBiI,aAAO,IAAM+hc,EAAan5d,KAAKgB,SACrCgB,YAAYy2d,QAEM,MAAxBz4d,KAAKo5d,gBAEVp5d,KAAKo5d,gBAAgB93d,KAAKtB,KAAMA,KAAKq0F,aAAcokY,GAGnDz4d,KAAKq0F,aAAa5zF,WAAWo2B,aAAa4hc,EAAcz4d,KAAKq0F,aAAak6G,aAE9EkqR,EAAazkc,MAAMygB,QAAU,QAC7Bz0C,KAAK62d,gBAAgBz8c,GACrBpa,KAAKo1d,UAAUxzd,KAAKwY,GACpBpa,KAAKq5d,cAAcj/c,IAGvB+6c,EAAcj5d,UAAU26d,gBAAkB,SAAUz8c,GAKhD,OAJApa,KAAKu1d,YAAcn+b,aAAOp3B,KAAKy4d,aAAe,IAAMz4d,KAAK02d,WAAY12d,KAAKq0F,aAAazgD,eAClF5zC,KAAKu1d,cACNv1d,KAAKu1d,YAAcn+b,aAAOp3B,KAAKy4d,aAAe,IAAMz4d,KAAK02d,WAAa,SAAWt8c,EAAO,KAAMpa,KAAKgB,UAEhGhB,KAAKu1d,aAGhBJ,EAAcj5d,UAAUq8d,iBAAmB,SAAUn+c,GACjD,IAAK,IAAIxd,EAAI,EAAGA,EAAIoD,KAAKq1d,WAAWx4d,OAAQD,IAAK,CAClCoD,KAAKq1d,WAAWz4d,GAClBwd,OAASA,GACdpa,KAAKq1d,WAAWv7c,OAAOld,EAAG,KAKtCu4d,EAAcj5d,UAAU4ic,YAAc,SAAUu5B,GAC5Cr4d,KAAKu1d,YAAYvhc,MAAMygB,QAAU,QACjCz0C,KAAKu1d,YAAYnzd,UAAYi2d,EAAU13d,QACvCX,KAAKq5d,cAAchB,EAAUj+c,OAGjC+6c,EAAcj5d,UAAU2ic,YAAc,SAAUzkb,GACxCpa,KAAKu1d,cACLv1d,KAAKu1d,YAAYvhc,MAAMygB,QAAU,OACjCz0C,KAAKu4d,iBAAiBn+c,GACtBpa,KAAKq0F,aAAar+D,UAAUjN,IAAI/oB,KAAK22d,YACrC32d,KAAKq0F,aAAar+D,UAAUvM,OAAOzpB,KAAK02d,YACxC12d,KAAKq0F,aAAaz+D,aAAa,eAAgB,WAIvDu/b,EAAcj5d,UAAUm9d,cAAgB,SAAUj/c,GACzCpa,KAAKksE,MAAM9xD,GAAMpa,KAAKkyR,WAAclyR,KAAKq0F,aAAa73F,MAAMK,QAAWO,YAAkB4C,KAAKu1d,eAC/Fv1d,KAAKu1d,YAAYnzd,UAAYpC,KAAKq0F,aAAa73F,MAC/CwD,KAAKu1d,YAAY3/b,aAAa,eAAgB,SAC9C51B,KAAK6+b,YAAYzkb,KAIzB+6c,EAAc2C,YAAc,SAAU92Z,GAClC,IAAIwrI,EAAYxrI,EAAM7xC,aAAa,QACnC,OAAOq9K,IAA4B,aAAdA,GAA0C,UAAdA,GAAuC,WAAdA,IAI9E2oR,EAAc0D,eAAiB,CAC3B3mM,SAAU,SAAUjoR,GAChB,OAAQmC,MAAMjD,KAAK6R,MAAM/Q,EAAOzN,QAAqDyN,EAAOzN,MAAM2Q,WAAWtQ,OAAS,GAA3EuP,MAAM,IAAIjD,KAAKc,EAAOzN,OAAO6lB,YAE5EgwL,MAAO,SAAUpoM,GACb,OAAO9E,GAAM2vd,MAAMlqd,KAAKX,EAAOzN,QAEnComB,IAAK,SAAU3Y,GACX,OAAO9E,GAAMykW,IAAIh/V,KAAKX,EAAOzN,QAEjCm5d,QAAS,SAAU1rd,GACf,OAAO9E,GAAM4vd,SAASnqd,KAAKX,EAAOzN,QAEtC81M,IAAK,SAAUroM,GACX,OAAO9E,GAAM8vd,MAAMrqd,KAAKX,EAAOzN,QAEnCo5d,WAAY,SAAU3rd,GAClB,OAAO9E,GAAM+vd,WAAWtqd,KAAKX,EAAOzN,QAExCwiL,OAAQ,SAAU/0K,GACd,OAAQmC,MAAM6pC,OAAOhsC,EAAOzN,UAA0C,IAA/ByN,EAAOzN,MAAM2B,QAAQ,MAEhEyH,OAAQ,SAAUqE,GACd,OAAO9E,GAAM6vd,OAAOpqd,KAAKX,EAAOzN,QAEpC0nL,UAAW,SAAUj6K,GACjB,OAAOA,EAAOzN,MAAMK,QAAUoN,EAAOshH,OAEzCsqW,UAAW,SAAU5rd,GACjB,OAAOA,EAAOzN,MAAMK,QAAUoN,EAAOshH,OAEzCuhE,YAAa,SAAU7iL,GACnB,IAAIshH,EAAQthH,EAAOshH,MACnB,OAAOthH,EAAOzN,MAAMK,QAAU0uH,EAAM,IAAMthH,EAAOzN,MAAMK,QAAU0uH,EAAM,IAE3E/4G,MAAO,SAAUvI,GACb,IAAIshH,EAAQthH,EAAOshH,MACnB,OAAQn/G,MAAM6pC,OAAOhsC,EAAOzN,SAAWy5C,OAAOhsC,EAAOzN,QAAU+uH,EAAM,IAAMt1E,OAAOhsC,EAAOzN,QAAU+uH,EAAM,IAE7G3iH,KAAM,SAAUqB,GACZ,OAAQmC,MAAM,IAAIjD,KAAKc,EAAOzN,OAAO6lB,YAEzChP,IAAK,SAAUpJ,GACX,OAAKmC,MAAM6pC,OAAOhsC,EAAOzN,QAKlB,IAAI2M,KAAKc,EAAOzN,OAAO6lB,WAAa,IAAIlZ,KAAK4R,KAAKC,MAAMD,KAAK0uB,UAAUx/B,EAAOshH,SAASlpG,WAHlFpY,EAAOzN,OAASyN,EAAOshH,OAKvCn4G,IAAK,SAAUnJ,GACX,GAAKmC,MAAM6pC,OAAOhsC,EAAOzN,QAIpB,KAAqC,IAAhCyN,EAAOzN,MAAO2B,QAAQ,KAAa,CACzC,IAAIm7d,EAAQrvd,EAAOzN,MAAOE,QAAQ,KAAM,IACxC,OAAOqc,WAAWugd,IAASrvd,EAAOshH,MAIlC,OAAO,IAAIpiH,KAAKc,EAAOzN,OAAO6lB,WAAa,IAAIlZ,KAAK4R,KAAKC,MAAMD,KAAK0uB,UAAUx/B,EAAOshH,SAASlpG,UAR9F,OAAQpY,EAAOzN,OAASyN,EAAOshH,OAWvCpmH,MAAO,SAAU8E,GACb,OAAO,IAAIrF,OAAOqF,EAAOshH,OAAO3gH,KAAKX,EAAOzN,QAEhDs5d,QAAS,SAAU7rd,GACf,IAAIssY,EAAYtsY,EAAO01J,YAAYr8J,cAAc,IAAM2G,EAAOshH,OAE9D,OADAthH,EAAOshH,MAAQgrR,EAAU/5Y,MAClByN,EAAOshH,QAAUthH,EAAOzN,QAGvCmiC,GAAW,CACP3B,YAAS,KACVm4b,EAAcj5d,UAAW,cAAU,GACtCyiC,GAAW,CACP3B,YAAS,aACVm4b,EAAcj5d,UAAW,cAAU,GACtCyiC,GAAW,CACP3B,eACDm4b,EAAcj5d,UAAW,aAAS,GACrCyiC,GAAW,CACP3B,YAAS,YACVm4b,EAAcj5d,UAAW,kBAAc,GAC1CyiC,GAAW,CACP3B,YAAS,YACVm4b,EAAcj5d,UAAW,kBAAc,GAC1CyiC,GAAW,CACP3B,YAAS,UACVm4b,EAAcj5d,UAAW,oBAAgB,GAC5CyiC,GAAW,CACP3B,YAAS,QACVm4b,EAAcj5d,UAAW,sBAAkB,GAC9CyiC,GAAW,CACP3B,YAASm9Y,GAAY5vJ,QACtB4qM,EAAcj5d,UAAW,mBAAe,GAC3CyiC,GAAW,CACPp/B,eACD41d,EAAcj5d,UAAW,gBAAY,GACxCyiC,GAAW,CACPp/B,eACD41d,EAAcj5d,UAAW,aAAS,GACrCyiC,GAAW,CACPp/B,eACD41d,EAAcj5d,UAAW,aAAS,GACrCyiC,GAAW,CACPp/B,eACD41d,EAAcj5d,UAAW,cAAU,GACtCyiC,GAAW,CACPp/B,eACD41d,EAAcj5d,UAAW,cAAU,GACtCyiC,GAAW,CACPp/B,eACD41d,EAAcj5d,UAAW,uBAAmB,GAC/CyiC,GAAW,CACPp/B,eACD41d,EAAcj5d,UAAW,0BAAsB,GAClDyiC,GAAW,CACPp/B,eACD41d,EAAcj5d,UAAW,uBAAmB,GAC/Ci5d,EAAgBgB,EAAkBx3b,GAAW,CACzClB,KACD03b,GA1wB4B,CA4wBjC/8b,K,oB4Dj1BEiG,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAsBzC86b,GAAoC,SAAUp6b,GAE9C,SAASo6b,IACL,OAAkB,OAAXp6b,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUk7b,EAAoBp6b,GAI9Bo6b,EAAmBr9d,UAAUiG,MAAQ,SAAUlC,GACd,mBAAzBA,EAAKw5D,OAAOovC,SACZ7oG,KAAKzD,IAAM,IAAIi9d,KAAWl7d,YAAOm7d,GAAsBx5d,EAAMD,KAAKO,OAAOm/D,aAAaviD,KAAMnd,KAAKO,OAAOomC,WAAY1mC,EAAKw5D,OAAO4uC,KAAKxsG,SAEvG,uBAAzBoE,EAAKw5D,OAAOovC,WACjB7oG,KAAKzD,IAAM,IAAIknU,KAAenlU,YAAOm7d,GAAsBx5d,EAAMD,KAAKO,OAAOm/D,aAAaviD,KAAMnd,KAAKO,OAAOomC,WAAY1mC,EAAKw5D,OAAO4uC,KAAKxsG,UAE7ImE,KAAKzD,IAAIwqC,SAAS9mC,EAAKe,UAEpBu4d,EAd6B,CAetC5P,IAGF,SAAS8P,GAAsBx5d,EAAMkd,EAAMy8I,GACvC,IAAIuwT,EAAoB,WAAThtc,EACXnS,EAAS+4D,YAAoB9jE,EAAKw5D,OAAOzuD,OAAQ/K,EAAKw5D,OAAOtuD,MAC7D3O,EAAQu+B,YAAU96B,EAAKw5D,OAAOD,MAAOv5D,EAAKgzN,SAE9C,MAAO,CACH9+H,eAAgBg2X,EAAW,QAAU,SACrC3td,MAHJA,EAAQA,EAAQ,IAAI2M,KAAK3M,GAAS,KAI9BwO,OAAQA,EACRmqF,YAAag1X,EACT,GAAKlqd,EAAKw5D,OAAOsD,WAAYp2B,UAAWizH,EAC5CphE,QAASt5B,YAAWj/D,EAAKw5D,OAAQx5D,EAAKm6F,YAAan6F,EAAKe,UC9ChE,ICDWi9E,GDCPy7Y,GAAkC,WAClC,SAASA,EAAiBn5d,GACtBP,KAAKO,OAASA,EAWlB,OATAm5d,EAAiBx9d,UAAUswY,KAAO,SAAUxrY,EAASxE,GACjD,OAAOA,GAEXk9d,EAAiBx9d,UAAUiG,MAAQ,aAGnCu3d,EAAiBx9d,UAAUif,QAAU,aAG9Bu+c,EAb2B,GEoBlC/vN,GAAsB,WAQtB,SAASA,EAAKppQ,EAAQw/D,GAClB//D,KAAK6oG,SAAW,CAAE,OAAUwnX,GAAY,OAAUA,GAAY,MAASC,GAAW,OAAUuE,IAC5F70d,KAAKO,OAASA,EACdP,KAAK+/D,eAAiBA,EACtB//D,KAAK+zJ,KAAO/zJ,KAAK+/D,eAAeE,WAAW,gBAC3CjgE,KAAKupB,mBACLvpB,KAAK25d,gBACL35d,KAAK45d,iBACL55d,KAAK65d,mBAi/BT,OA/+BAlwN,EAAKztQ,UAAU49d,iBAAmB,WAE9B,IADA,IAAIjtX,EAAO7sG,KAAKO,OAAOk8D,YACd7/D,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAC7B,GAAIoD,KAAKO,OAAOm/D,aAAap0C,UAAYuhF,EAAKjwG,GAAG2sG,aAAc,CAE3DsD,EAAKjwG,GAAGyrG,KAAO/pG,YAAO,IAAIqrQ,EAAKowN,aAAwB,aAAE/5d,KAAKO,QAASssG,EAAKjwG,GAAGyrG,MAAQ,SAGvFwE,EAAKjwG,GAAGyrG,KAAO/pG,YAAO,IAAIqrQ,EAAKowN,aAAaltX,EAAKjwG,GAAGisG,UAAY8gK,EAAKowN,aAAaltX,EAAKjwG,GAAGisG,UACtFgE,EAAKjwG,GAAGisG,SAAW,eAAe7oG,KAAKO,OAAQP,KAAK+/D,gBAAiB8sC,EAAKjwG,GAAGyrG,MAAQ,IAGjGroG,KAAKO,OAAOsuJ,IAAI,2BAQpB86G,EAAKztQ,UAAU2+B,cAAgB,WAC3B,MAAO,QAOX8uO,EAAKztQ,UAAU29B,kBAAoB,SAAUh5B,GACzC,GAAIA,EAAEyjC,SAAWtkC,KAAK66B,gBAItB,IADA,IAAIo/B,EAAOj6D,KAAKO,OACPvC,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAK4D,EAAEgzB,YAAa71B,EAAKuF,EAAG1G,OAAQmB,IAAM,CAEnE,OADWuF,EAAGvF,IAEV,IAAK,cACL,IAAK,gBACL,IAAK,gBACGi8D,EAAKyF,aAAa4zO,aAAer5O,EAAKyF,aAAaH,cAAgBtF,EAAKyF,aAAa6zO,gBACrFvzS,KAAKkvD,aAET,MACJ,IAAK,OACDlvD,KAAK25d,gBACL1/Z,EAAKooC,QAAS,EACdpoC,EAAK/yB,aAKrByiO,EAAKztQ,UAAUy9d,cAAgB,WACvB35d,KAAK08I,YACL18I,KAAK08I,WAAWvhI,UAEpBnb,KAAKomS,SAAW,IAAIyiL,GAAW7od,KAAKO,OAAQP,KAAK+/D,gBACjD//D,KAAK08I,WAAa,IAAI18I,KAAK6oG,SAAS7oG,KAAKO,OAAOm/D,aAAaviD,MAAMnd,KAAKO,OAAQP,KAAK+/D,eAAgB//D,KAAKomS,WAE9Gz8B,EAAKztQ,UAAUgzD,WAAa,WACxBlvD,KAAK85d,oBAQTnwN,EAAKztQ,UAAU4qT,UAAY,SAAUr5O,GACjC,IAAIxT,EAAOj6D,KAAKO,OAChB,GAAK05D,EAAKyF,aAAaH,eAAgBtF,EAAKooC,QAAqC,UAA3BpoC,EAAKyF,aAAaviD,KAAxE,CAIA,GADAnd,KAAKO,OAAOS,QAAQg1B,UAAUjN,IAAI,aAC7BkxC,EAAKwqP,kBAAkB5nT,OAMlB4wE,IACNA,EAAKxT,EAAKwqP,kBAAkB,SAN5B,IAAKh3O,EAED,YADAztE,KAAKwnJ,WAAW,qBAAsBxnJ,KAAKg6d,WAOnDh6d,KAAKqvd,UAAY5hZ,EAAG9B,WAAa3rE,KAAKO,OAAO8mE,aAAa/jE,cAAc,iBAAiBqoE,SAChE,SAArB8B,EAAGz5C,MAAMygB,UAGbz0C,KAAK08I,WAAWoqK,UAAUr5O,GAC1BztE,KAAKi6d,iBACLhga,EAAKj5D,QAAQsC,cAAc,gBAAgB0wB,MAAMygB,QAAU,OAC3Dz0C,KAAKO,OAAOyZ,OAAO,aAAc,OAUrC2vP,EAAKztQ,UAAUuqd,aAAe,SAAUh5Y,EAAIxtE,GACxC,IAAIwmd,EAAezmd,KAAKqvd,UACG,SAAvBrvd,KAAKO,OAAOovC,QAAiE,WAA5C3vC,KAAKO,OAAOm/D,aAAa+M,gBAA+BxsE,GACpE,QAArBA,EAAKm6F,aAAyBp6F,KAAKO,OAAOovC,OAAS3vC,KAAKO,OAAOy4I,kBAAkBvmG,aACjF5c,YAAS,GAAGx0B,MAAMC,KAAKmsE,EAAGx+C,uBAAuBotC,MAAoB,kBAEhEoqZ,GAAgBh5Y,GAAMA,EAAGz3C,WAC9BH,YAAS,GAAGx0B,MAAMC,KAAKmsE,EAAGx+C,uBAAuBotC,MAAoB,kBAQ7EstM,EAAKztQ,UAAU48D,UAAY,WACe,UAAlC94D,KAAKO,OAAOm/D,aAAaviD,MAAoBnd,KAAKO,OAAOm/D,aAAaC,mBACnE3/D,KAAKO,OAAOS,QAAQiuB,uBAAuB,eAAepyB,OAC7DmD,KAAKwnJ,WAAW,aAAcxnJ,KAAKwgE,YAGvCxgE,KAAKO,OAAOS,QAAQg1B,UAAUvM,OAAO,aACrCzpB,KAAK08I,WAAW5jF,YAChB94D,KAAKi6d,iBACLj6d,KAAKO,OAAOyZ,OAAO+M,IAAkB,MAEzC4iP,EAAKztQ,UAAU+9d,eAAiB,WAC5Bj6d,KAAKO,OAAOyZ,OAAO+M,KAAuB,KAU9C4iP,EAAKztQ,UAAUyhG,UAAY,SAAU9iF,EAAML,GACvC,GAAKxa,KAAKO,OAAOm/D,aAAa4zO,YAA9B,CAGA,IAAIrzS,EAAO,CAAE6mT,WAAW,GACnBjsS,GACD7a,KAAKO,OAAOyZ,OAAO+M,KAAoC9mB,GAEvDA,EAAK6mT,YACL9mT,KAAKO,OAAOS,QAAQg1B,UAAUjN,IAAI,aAClC/oB,KAAK08I,WAAW/+C,UAAU9iF,EAAML,GAChCxa,KAAKi6d,iBACLj6d,KAAKO,OAAOyZ,OAAO,YAAa,OAWxC2vP,EAAKztQ,UAAU0hG,aAAe,SAAUipN,EAAWhsS,GAC/C,IAAIo/C,EAAOj6D,KAAKO,OACX05D,EAAKyF,aAAa6zO,gBAGlB14R,GACIo/C,EAAK4xO,qBAAqBhvS,SAAUO,YAAkB68D,EAAKm4O,iBAKhEn4O,EAAKyF,aAAaw6Z,wBAClBl6d,KAAKwnJ,WAAW,gBAAiBxnJ,KAAKwgE,WAG1CxgE,KAAK08I,WAAW9+C,aAAaipN,EAAWhsS,GARhC7a,KAAKwnJ,WAAW,uBAAwBxnJ,KAAKg6d,aAgBzDrwN,EAAKztQ,UAAU6qT,UAAY,SAAUt5O,GACjCztE,KAAKsyd,aAAe7kZ,EAAGt+C,aAAa,YACpC,IAAI87C,EAASjrE,KAAKO,OAAO6hT,oBAAoBpiT,KAAKsyd,cAC7Cl1d,YAAkB6tE,IACnBjrE,KAAK49F,aAAa,KAAM3yB,EAAOpwD,OAQvC8uP,EAAKztQ,UAAUu0J,QAAU,WACiB,UAAlCzwJ,KAAKO,OAAOm/D,aAAaviD,MAAoBnd,KAAKO,OAAOm/D,aAAaC,oBACrEviE,YAAkB4C,KAAKm0V,UAAYn0V,KAAKm0V,QAAQpzP,cACjD/gG,KAAKO,OAAOm8I,WAAWuqK,WACvBjnT,KAAKO,OAAOyZ,OAAO+M,KAAwB,IACvC3pB,YAAkB4C,KAAKm0V,UAAYn0V,KAAKm0V,QAAQpzP,YAChD/gG,KAAKwnJ,WAAW,mBAAoBxnJ,KAAKwgE,WAIjDxgE,KAAKm6d,cAUTxwN,EAAKztQ,UAAUozS,WAAa,SAAU3jO,EAAUnS,EAAOh9D,GACnDwD,KAAK08I,WAAW4yJ,WAAW3jO,EAAUnS,EAAOh9D,IAShDmtQ,EAAKztQ,UAAUukJ,UAAY,SAAUjmI,EAAOK,GACxC7a,KAAK08I,WAAW+D,UAAUjmI,EAAOK,IAOrC8uP,EAAKztQ,UAAUoxD,YAAc,WACzBttD,KAAK84D,aAOT6wM,EAAKztQ,UAAU41d,UAAY,WACvB9xd,KAAKywJ,WASTk5G,EAAKztQ,UAAU8qT,SAAW,SAAUxsS,EAAOg/C,GACvCx5D,KAAK08I,WAAWsqK,SAASxsS,EAAOg/C,IAOpCmwM,EAAKztQ,UAAU+uT,iBAAmB,WAC9B,IAAImvK,GAAQp6d,KAAKm0V,SAAUn0V,KAAKm0V,QAAQpzP,WACpCs5X,GAAQr6d,KAAKs6d,UAAWt6d,KAAKs6d,SAASv5X,WACtCw5X,GAAQv6d,KAAKw6d,WAAYx6d,KAAKw6d,UAAUz5X,WAC5C,OAAOq5X,GAASC,GAASE,GAO7B5wN,EAAKztQ,UAAU25I,gBAAkB,WAC7B,OAAO71I,KAAK08I,WAAW7G,gBAAkB71I,KAAK08I,WAAW7G,kBAAoB,IAOjF8zH,EAAKztQ,UAAUu+d,uBAAyB,WACpC,IAAIl+d,EAAMyD,KAAKo0V,qBAAqBp0V,KAAKm0V,QAAQnzV,QAAS,IAC1D,OAAOzE,EAAI2B,OAAOjB,KAAKV,GAAK,KAOhCotQ,EAAKztQ,UAAU+qT,SAAW,WACtBjnT,KAAK08I,WAAWuqK,YAEpBt9C,EAAKztQ,UAAUi+d,WAAa,WACxBn6d,KAAKO,OAAOS,QAAQg1B,UAAUvM,OAAO,aACrCzpB,KAAK08I,WAAW+T,UAChBzwJ,KAAKi6d,kBAETtwN,EAAKztQ,UAAUsrJ,WAAa,SAAU98F,EAASnuD,GAC3CA,EAAImuD,QAAU,QAAU1qD,KAAK+zJ,KAAKl9G,YAAY6T,GAAW,SACzDnuD,EAAI+8B,WACJ/8B,EAAIihI,QAERmsI,EAAKztQ,UAAUw+d,iBAAmB,SAAUv7Z,EAAK3iE,GAC7C,IAAIyI,EAAMzI,EACV,OAAQ2iE,EAAIh0D,MACR,IAAK,SACDlG,EAAOmH,MAAM2M,WAAWvc,IAA8B,KAApBuc,WAAWvc,GAC7C,MACJ,IAAK,UACoB,gBAAjB2iE,EAAI0pC,WACJ5jG,EAAMzI,IAAUwD,KAAK+zJ,KAAKl9G,YAAY,UAAqB,IAAVr6C,GAErD,MACJ,IAAK,OACL,IAAK,WACoB,mBAAjB2iE,EAAI0pC,UAAkD,uBAAjB1pC,EAAI0pC,UACtCrsG,GAASA,EAAMK,OAClBoI,EAAM,IAAIkE,KAAK3M,GAEA,KAAVA,IACLyI,EAAM,MAIlB,OAAOA,GAEX0kQ,EAAKztQ,UAAUy+d,eAAiB,WAE5B,IADA,IACS38d,EAAK,EAAGgiC,EADF,GAAG3+B,MAAMC,KAAKtB,KAAKO,OAAOS,QAAQiuB,uBAAuB,gBAChCjxB,EAAKgiC,EAAWnjC,OAAQmB,IAAM,CAClE,IAAIqF,EAAO28B,EAAWhiC,GACtByrB,aAAOpmB,GAEXrD,KAAKO,OAAO8mE,aAAavwC,kBAAkB9C,MAAM+Z,SAAW,YAEhE47N,EAAKztQ,UAAU29d,iBAAmB,WAC9B75d,KAAKwgE,UAAYxgE,KAAK46d,UAAU,CAC5B,CACInqa,MAAOzwD,KAAK66d,MAAM1+d,KAAK6D,MACvB8nJ,YAAa,CAAEp9F,QAAS1qD,KAAK+zJ,KAAKl9G,YAAY,YAAaq/C,SAAU,YAAayrC,WAAW,IAEjG,CACIlxE,MAAOzwD,KAAK86d,UAAU3+d,KAAK6D,MAC3B8nJ,YAAa,CAAE5xD,SAAU,SAAUxrC,QAAS1qD,KAAK+zJ,KAAKl9G,YAAY,mBAEvE,gBAEP8yN,EAAKztQ,UAAU09d,eAAiB,WAC5B55d,KAAKg6d,UAAYh6d,KAAK46d,UAAU,CAC5B,CACInqa,MAAOzwD,KAAK+6d,WAAW5+d,KAAK6D,MAAO8nJ,YAAa,CAAEp9F,QAAS1qD,KAAK+zJ,KAAKl9G,YAAY,YAAaq/C,SAAU,SAAUyrC,WAAW,KAElI,cAEPgoI,EAAKztQ,UAAU6+d,WAAa,WACxB/6d,KAAKg6d,UAAUz+V,QAEnBouI,EAAKztQ,UAAU0+d,UAAY,SAAUI,EAAY5gd,GAC7C,IAAIlZ,EAAMlB,KAAKO,OAAOY,cAAc,MAAO,CAAEsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAKW,IAC1Epa,KAAKO,OAAOS,QAAQgB,YAAYd,GAChC,IAAIoL,EAAU,CACV89N,eAAe,EACf3+B,SAAS,EACTvuI,SAAS,EACTmtK,eAAe,EACfptM,OAAQj9B,KAAKO,OAAOS,QACpB0uC,MAAO,QACPi4G,kBAAmB,CAAEC,OAAQ,SAEjCt7I,EAAQqrF,QAAUqjY,EAClB,IAAIz+d,EAAM,IAAImrJ,KAAOp7I,GAIrB,OAFA/P,EAAoB,kBAAI,EACxBA,EAAIwqC,SAAS7lC,GACN3E,GAEXotQ,EAAKztQ,UAAU4+d,UAAY,WACvB96d,KAAKO,OAAOgkJ,YAAYhG,iBACxBv+I,KAAKO,OAAOgkJ,YAAYrvF,eACxBl1D,KAAKwgE,UAAU+6D,QAEnBouI,EAAKztQ,UAAU2+d,MAAQ,WACnB,OAAQ76d,KAAKwgE,UAAUx/D,QAAQsC,cAAc,kBAAkBwzB,kBAAkBs+D,WAC7E,KAAKp1F,KAAK+zJ,KAAKl9G,YAAY,iBACvB72C,KAAK08I,WAAW9+C,eAChB,MACJ,KAAK59F,KAAK+zJ,KAAKl9G,YAAY,cACvB72C,KAAK08I,WAAW5jF,YAChB,MACJ,KAAK94D,KAAK+zJ,KAAKl9G,YAAY,oBACvB72C,KAAKm6d,aACL,MACJ,KAAKn6d,KAAK+zJ,KAAKl9G,YAAY,wBACe,UAAlC72C,KAAKO,OAAOm/D,aAAaviD,MACzBnd,KAAK08I,WAAWk4U,uBAEpB50d,KAAKi7d,gBAGbj7d,KAAK86d,aAMTnxN,EAAKztQ,UAAUqtB,iBAAmB,WAC1BvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKk7d,aAAe,CAAC,CAAEp0c,MAAOC,KAA4BvN,QAASxZ,KAAK65B,mBACpE,CAAE/S,MAAOC,KAAmBvN,QAASxZ,KAAKkvD,YAC1C,CAAEpoC,MAAOC,KAAmBvN,QAASxZ,KAAK60C,iBAC1C,CAAE/tB,MAAOC,IAAgBvN,QAASxZ,KAAK85d,kBACvC,CAAEhzc,MAAOC,KAAuBvN,QAASxZ,KAAK26d,gBAC9C,CAAE7zc,MAAOC,KAAqBvN,QAASxZ,KAAK6xD,cAC5C,CAAE/qC,MAAOC,KAAoBvN,QAASxZ,KAAKiyD,cAC/C8b,YAAuB/tE,KAAKO,OAAQP,KAAKk7d,cAAc,EAAMl7d,MAC7DA,KAAKm7d,oBAAsBn7d,KAAKw2V,cAAcr6V,KAAK6D,MACnDA,KAAKo7d,uBAAyBp7d,KAAK+rD,eAAe5vD,KAAK6D,MACvDA,KAAKO,OAAOgpB,iBAAiBxC,IAAoB/mB,KAAKm7d,qBACtDn7d,KAAKO,OAAOgpB,iBAAiBxC,IAAuB/mB,KAAKo7d,0BAM7DzxN,EAAKztQ,UAAUytB,oBAAsB,WAC7B3pB,KAAKO,OAAO44B,cAGhB40C,YAAuB/tE,KAAKO,OAAQP,KAAKk7d,cAAc,GACvDl7d,KAAKO,OAAOopB,oBAAoB5C,IAAuB/mB,KAAKo7d,wBAC5Dp7d,KAAKO,OAAOopB,oBAAoB5C,IAAoB/mB,KAAKm7d,uBAE7DxxN,EAAKztQ,UAAU6vD,eAAiB,SAAUlrD,GACxB,CAAC,MAAO,YAAa,OAAQ,SAAU,UACzC1C,QAAQ0C,EAAEu5F,aAAe,IACjCp6F,KAAKO,OAAO8hG,QAAS,GAEH,cAAlBxhG,EAAEu5F,aACFp6F,KAAKO,OAAOgkJ,YAAYrvF,eAE5Bl1D,KAAKi6d,kBAQTtwN,EAAKztQ,UAAUk4V,qBAAuB,SAAU72D,EAAM8pK,GAClD,IAAIptY,EAAOj6D,KAAKO,OAChB,GAAI05D,EAAKyF,aAAap0C,SAAU,CAE5B,IADA,IAAIwK,EAAW,GAAGz0B,MAAMC,KAAKi8R,EAAKznQ,UACzB+zC,EAAI,EAAGA,EAAI/zC,EAASj5B,OAAQgtE,IACjC,IAAM/zC,EAAS+zC,GAAG1tB,aAAa,SAAsC,mBAA1BrmB,EAAS+zC,GAAGx7C,WACnDyH,EAAS+zC,GAAG7zC,UAAUzD,SAAS,oBAA4C,WAArBuD,EAAS+zC,GAAG1+D,OACjEwyD,aAAa7nC,EAAS+zC,GAAI,sBAAuBlM,aAAa7nC,EAAS+zC,GAAI,uBAAyB,CACrG,IAAIrQ,EAAS1jC,EAAS+zC,GAAG1tB,aAAa,QAAW8iB,aAAkBnpC,EAAS+zC,GAAG16C,aAAa,SACxF8vC,aAAkBnpC,EAAS+zC,GAAG16C,aAAa,OAC3CsqC,EAASQ,EAAKqM,iBAAiB9M,IAAU,CAAEA,MAAOA,EAAOruD,KAAM2qB,EAAS+zC,GAAG16C,aAAa,SACxF3yB,OAAQ,EACQ,aAAhBi9D,EAAOtuD,MAAuC,YAAhBsuD,EAAOtuD,KACrC3O,EAAQs5B,EAAS+zC,GAAG3I,QAEfprC,EAAS+zC,GAAGrtE,OACjBA,EAAQs5B,EAAS+zC,GAAGrtE,MAChBs5B,EAAS+zC,GAAG/uC,eACZhF,EAAS+zC,GAAG/uC,cAAcj+B,SACzBO,YAAkB04B,EAAS+zC,GAAG/uC,cAAc,GAAGt+B,SAChDs5B,EAAS+zC,GAAG0/F,OACZ/sK,EAAQs5B,EAAS+zC,GAAG/uC,cAAc,GAAGt+B,MAChB,SAAhBi9D,EAAOtuD,MAAmC,aAAhBsuD,EAAOtuD,MAAuC,aAAhBsuD,EAAOtuD,OAC/D2qB,EAAS+zC,GAAG/uC,cAAc,GAAGjwB,mBAC9BrO,EAAQs5B,EAAS+zC,GAAGrtE,SAIvBs5B,EAAS+zC,GAAG/uC,gBACjBt+B,EAAQs5B,EAAS+zC,GAAG/uC,cAAc,GAAGt+B,OAErCi9D,EAAO4uC,MAAoC,kBAArB5uC,EAAO4uC,KAAKmkS,KAClChwY,EAAQH,YAASo9D,EAAO4uC,KAAKmkS,KAAM1qY,OAA3BzF,CAAmCy5B,EAAS+zC,GAAIrtE,GAEnDi9D,EAAO4uC,MAAQ5uC,EAAO4uC,KAAKmkS,OAChChwY,EAAQi9D,EAAO4uC,KAAKmkS,KAAK12W,EAAS+zC,GAAIrtE,IAE1CA,EAAQy9D,EAAKyiF,WAAWg+U,iBAAiBjha,EAAQj9D,GACxB,UAArBs5B,EAAS+zC,GAAG1+D,KACR2qB,EAAS+zC,GAAG3I,SACZxH,KAAS38D,SAAS08D,EAAOD,MAAOh9D,EAAO6qc,GAI3C3tY,KAAS38D,SAAS08D,EAAOD,MAAOh9D,EAAO6qc,GAInD,OAAOA,EAGX,IADA,IAAIloY,EAAMlF,EAAKwC,YAAYvrC,QAAO,SAAUiuC,GAAO,OAAOA,EAAIoqC,gBACrDphG,EAAI,EAAGA,EAAIg3D,EAAItiE,OAAQsL,IAC5B,GAAIo1R,EAAKv+N,YAAkBG,EAAIh3D,GAAGqxD,QAAS,CACvC,IAAIy8Z,EAAgB,GAAG50d,MAAMC,KAAKi8R,EAAKv+N,YAAkBG,EAAIh3D,GAAGqxD,SAE5D7nD,GADJskd,EAAgBA,EAAcp5d,OAASo5d,EAAgB,CAAC14L,EAAKv+N,YAAkBG,EAAIh3D,GAAGqxD,UAC7DtoC,QAAO,SAAUrwB,GACtC,OAAQzD,YAAmByD,EAAEi6B,kBAEb,IAAhBnpB,EAAK9U,SACL8U,EAAOskd,EAAc/kc,QAAO,SAAUrwB,GAAK,OAAOA,EAAEs7C,aAAa,YAErE,IAAS0tB,EAAI,EAAGA,EAAIl4D,EAAK9U,OAAQgtE,IAAK,CAC9BrtE,EAAQwD,KAAK3D,SAAS8iE,EAAIh3D,GAAIwJ,EAAKk4D,GAAIw9X,GAC3C3tY,KAAS38D,SAASoiE,EAAIh3D,GAAGqxD,MAAOh9D,EAAO6qc,IAKnD,IADA,IAAIg0B,EAAS,GAAGh6d,MAAMC,KAAKi8R,EAAKtuQ,uBAAuB,YAC9CryB,EAAI,EAAG+E,EAAM05d,EAAOx+d,OAAQD,EAAI+E,EAAK/E,IAAK,CAC/C,IAAI0+d,EAAQrha,EAAKmqE,eAAei3V,EAAOz+d,GAAGuyB,aAAa,iBACvD,GAAImsc,GAASA,EAAM9ha,MAAO,CAClBh9D,EAAQwD,KAAK3D,SAASi/d,EAAOD,EAAOz+d,GAAIyqc,GAC5C3tY,KAAS38D,SAASu+d,EAAM9ha,MAAOh9D,EAAO6qc,IAG9C,OAAOA,GAEX19L,EAAKztQ,UAAUG,SAAW,SAAU8iE,EAAK6B,EAAOqmY,GAC5C,IAAI7qc,EAAQwkE,EAAMlmC,cACdkmC,EAAMlmC,cAAc,GAAGt+B,MAAQwkE,EAAMxkE,MACrCy9D,EAAOj6D,KAAKO,OACZoR,EAAOwtD,EAAIkpC,KAAKmkS,KAcpB,MAbiB,aAAbrtU,EAAIh0D,MAAoC,YAAbg0D,EAAIh0D,OAC/B3O,EAAQwkE,EAAME,SAEE,kBAATvvD,GACPA,EAAOtV,YAASsV,EAAM7P,QACtBtF,EAAQy9D,EAAKyiF,WAAWg+U,iBAAiBv7Z,EAAMxtD,EAAMqvD,EAAOxkE,KAG5DA,EAAQy9D,EAAKyiF,WAAWg+U,iBAAiBv7Z,EAAKA,EAAIkpC,KAAKmkS,KAAKxrU,EAAOxkE,IAEnEY,YAAkBiqc,EAAWloY,EAAI3F,SAAqB,KAAVh9D,IAC5CA,EAAQ6qc,EAAWloY,EAAI3F,QAEpBh9D,GAOXmtQ,EAAKztQ,UAAUs6V,cAAgB,SAAU31V,GACrC,GAAsB,gBAAlBA,EAAEu5F,aAAiCp6F,KAAKO,OAAO8hG,QACV,UAAlCriG,KAAKO,OAAOm/D,aAAaviD,KAC5Bnd,KAAK84D,gBAEJ,CACD,IAAIkxZ,EAAUhqd,KAAKO,OAAOS,QAAQsC,cAAc,IAAM+4D,KAClD0wX,EAAS/sb,KAAKO,OAAOS,QAAQsC,cAAc,IAAM+4D,KACrD,GAAI2tZ,GAAWhqd,KAAKO,OAAOisE,YAAgC,kBAAlB3rE,EAAEu5F,aACpCjkF,SAASwnD,aAAaqsZ,EAAS3tZ,KAAcltC,aAAaktC,KAAwB,IAAMr8D,KAAKO,OAAOisE,WACvG,OAEJ,IACI+uZ,GAAgE,IADvC,CAAC,kBAAmB,mBAAoB,sBAAuB,OAAQ,iBAAkB,iBAC9Ep9d,QAAQ0C,EAAEu5F,aAC9CohY,EAAuBx7d,KAAKO,OAAOqjE,sBAAwB5jE,KAAKm0V,UAC5Dn0V,KAAKm0V,QAAQh7T,cAAgB6wb,GAAWj9B,GAA4B,WAAlBlsb,EAAEu5F,cAA6BmhY,IACnFv7d,KAAKO,OAAOqjE,sBAA0D,UAAlC5jE,KAAKO,OAAOm/D,aAAaviD,MAAoBnd,KAAKm0V,UAAYn0V,KAAKm0V,QAAQh7T,aAC9Goic,IAAe16d,EAAEkiB,QAAWy4c,KAC/Bx7d,KAAK+ud,iBACL/ud,KAAKiyD,iBASjB03M,EAAKztQ,UAAU6yd,eAAiB,SAAUliX,GAC3B7sG,KAAKO,OACPm/D,aAAap0C,WAClBtrB,KAAKO,OAAO4uI,gBAAgB,CAAC,yBACzBnvI,KAAKO,OAAOgiG,SACZviG,KAAKO,OAAOqiG,oBAGpBiK,EAAOA,GAAc7sG,KAAKO,OAAO+gT,yBAAyBthT,KAAKO,OAAO6lE,6BAC7D18C,MAAK,SAAU+vC,GAAU,OAAQr8D,YAAkBq8D,EAAO8vC,mBAC/DvpG,KAAKO,OAAO4uI,gBAAgB,CAAC,iBACzBnvI,KAAKO,OAAOgiG,SACZviG,KAAKO,OAAOqiG,mBAGpB,IAAK,IAAI5kG,EAAK,EAAGkrd,EAASr8W,EAAM7uG,EAAKkrd,EAAOrsd,OAAQmB,IAAM,CACtD,IAAImhE,EAAM+pZ,EAAOlrd,GACb2T,EAAOwtD,EAAIkpC,KAAKltF,QAChBgkD,EAAIkpC,KAAKltF,UACW,kBAATxJ,GACPA,EAAOtV,YAASsV,EAAM7P,WAItBq9D,EAAIkpC,KAAKltF,WAKrB,IADA,IAAI2a,EAAW,GAAGz0B,MAAMC,KAAKtB,KAAKm0V,QAAQnzV,QAAQ80B,UACzCl5B,EAAI,EAAGA,EAAIk5B,EAASj5B,OAAQD,IAC7Bk5B,EAASl5B,GAAGu/C,aAAa,SACrBrmB,EAASl5B,GAAGk+B,eACZhF,EAASl5B,GAAGk+B,cAAcj+B,SACzBi5B,EAASl5B,GAAGk+B,cAAc,GAAG3B,aAC9BrD,EAASl5B,GAAGk+B,cAAc,GAAG3f,WAS7CwuP,EAAKztQ,UAAU+1D,YAAc,WACzBjyD,KAAK26d,iBAEL,IADA,IAAIc,EAAc,CAACz7d,KAAKm0V,QAASn0V,KAAKs6d,SAAUt6d,KAAKw6d,UAAWx6d,KAAK07d,gBAC5D9+d,EAAI,EAAGA,EAAI6+d,EAAY5+d,OAAQD,IAChC6+d,EAAY7+d,IAAM6+d,EAAY7+d,GAAGoE,UAAYy6d,EAAY7+d,GAAGu8B,aAC5Dsic,EAAY7+d,GAAGue,UAGvBnb,KAAK26d,kBAQThxN,EAAKztQ,UAAUif,QAAU,WACrB,IAAI4yR,EAAc/tS,KAAKO,OAAOS,QAC9B,GAAK+sS,EAAL,CAGA,IAAIwP,KAAexP,EAAYzqS,cAAc,IAAM+4D,OAC/C0xO,EAAYzqS,cAAc,IAAM+4D,MAChCkhP,GACAv9S,KAAKiyD,cAETjyD,KAAK2pB,sBACL,IAAItmB,EAAOrD,KAAKwgE,UAAUx/D,QACtBqC,EAAKqgE,kBAAoB,IACzB1jE,KAAKwgE,UAAUrlD,UACfsO,aAAOpmB,KAEXA,EAAOrD,KAAKg6d,UAAUh5d,SACb0iE,kBAAoB,IACzB1jE,KAAKg6d,UAAU7+c,UACfsO,aAAOpmB,IAENk6S,GAGDv9S,KAAK08I,YACL18I,KAAK08I,WAAWvhI,YAGxBwuP,EAAKztQ,UAAU24C,gBAAkB,SAAUh0C,GACvC,OAAQA,EAAEilC,QACN,IAAK,SACD9lC,KAAK29F,YACL,MACJ,IAAK,SACyB,UAArB98F,EAAEo8B,OAAOjN,UAAuBnvB,EAAEo8B,OAAOjH,UAAUzD,SAAS,kBACzD/xB,SAAS8C,cAAc,kBAC3BtD,KAAK49F,eAET,MACJ,IAAK,KACD59F,KAAK8mT,YACL,MACJ,IAAK,QACInpP,aAAa98D,EAAEo8B,OAAQ,qBAAyD,UAAlCj9B,KAAKO,OAAOm/D,aAAaviD,QACvEwgD,aAAa98D,EAAEo8B,OAAQo/B,MAA0Br8D,KAAKO,OAAOisE,YACvD7O,aAAa98D,EAAEo8B,OAAQo/B,OAC1B77D,SAASyuB,uBAAuB,gBAAgBpyB,SACpDgE,EAAEyrC,iBACFtsC,KAAKywJ,WAET,MACJ,IAAK,SACGzwJ,KAAKO,OAAO8hG,SAC0B,UAAlCriG,KAAKO,OAAOm/D,aAAaviD,KACzBnd,KAAK08I,WAAW03U,iBAGhBp0d,KAAK84D,eAMzB6wM,EAAKztQ,UAAU21D,aAAe,SAAU5xD,GACpCD,KAAK27d,WAAa17d,EAClBD,KAAKwnJ,WAAW,uBAAwBxnJ,KAAKwgE,YAEjDmpM,EAAKztQ,UAAU++d,cAAgB,WAC3Bj7d,KAAK27d,WAAWnid,QAAQlY,KAAKtB,KAAK27d,WAAW3gc,SAAUh7B,KAAK27d,WAAWryU,KAAMtpJ,KAAK27d,WAAWpyU,KAAMvpJ,KAAK27d,WAAWnyU,KAAMxpJ,KAAK27d,WAAWlyU,KAAMzpJ,KAAK27d,WAAWjyU,KAAM1pJ,KAAK27d,WAAWhyU,KAAM3pJ,KAAK27d,WAAW7uF,KAAM9sY,KAAK27d,WAAWl+D,OAOrO9zJ,EAAKztQ,UAAU2xd,oBAAsB,SAAUhhX,GAC3C,IAAI5yC,EAAOj6D,KAAKO,OACZgjE,EAAUtJ,EAAKqK,eACf6lZ,EAA6C,WAAlCnqd,KAAKO,OAAOm/D,aAAaviD,KACpCuwD,EAAsC,UAAhC1tE,KAAKO,OAAO2pE,iBAA+BigZ,EAAW,EAAI,EAChE5sL,EAAyC,WAAlCv9R,KAAKO,OAAOm/D,aAAaviD,KAChC88C,EAAKj5D,QAAQiuB,uBAAuB,cAAcy+C,GAClDt2C,aAAO,IAAM6iC,EAAKj5D,QAAQyY,GAAK,kCAAmCjZ,UAClEga,EAAwC,UAAhCxa,KAAKO,OAAO2pE,iBAA+BigZ,EAAW,EAAI,EAClEyR,EAAQ3ha,EAAKj5D,QAAQiuB,uBAAuB,cAAczU,GAC1D0xD,EAAQ,GACRC,EAAS,GACTC,EAAU,GACdygC,EAAOA,GAAc5yC,EAAKyK,aAC1B,IAAK,IAAI9nE,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IACxBiwG,EAAKjwG,GAAGsgE,SAGT2vC,EAAKjwG,GAAG0vE,iBACRL,aAAmB4gC,EAAKjwG,GAAI4d,EAAO0xD,EAAOC,EAAQC,EAASygC,EAAKhwG,QAGxE,GAAI0mE,GAA6C,WAAlCvjE,KAAKO,OAAOm/D,aAAaviD,MAEpC,GADAnd,KAAKO,OAAOm8I,WAAW49U,SAAWt6d,KAAK67d,cAAcD,EAAOzvZ,GACxDnsE,KAAKO,OAAO2pE,kBAAoB7N,IAAoB,CACpD,IAAI4sZ,EAAShvZ,EAAKj5D,QAAQiuB,uBAAuB,cAAc,GAC/DjvB,KAAKO,OAAOm8I,WAAW89U,UAAYx6d,KAAK67d,cAAc5S,EAAQ78Y,SAIlEF,EAAQ5tE,YAAO4tE,EAAOC,EAAQC,GAElCpsE,KAAKO,OAAOm8I,WAAWy3M,QAAUn0V,KAAK67d,cAAct+L,EAAMrxN,IAQ9Dy9L,EAAKztQ,UAAU2/d,cAAgB,SAAUt+L,EAAMrxN,GAC3C,IAAInsE,EAAQC,KACZ,OAAO,IAAIm1d,GAAc53L,EAAM,CAC3BrxN,MAAOA,EACPnvD,OAAQ/c,KAAKO,OAAOwc,OACpB++c,mBAAoB,SAAU77d,GAC1BF,EAAM+7d,mBAAmB77d,IAE7Bm5d,gBAAiB,SAAU/kY,EAAc5vE,GACrC,IAAIhpB,EAAM44F,EAAallE,aAAa,gBAChClvB,EAAO,CACPw5D,OAAQ15D,EAAMQ,OAAO6jI,eAAe3oI,GACpCgpB,MAAOA,EACP4vE,aAAcA,EACd73F,MAAO63F,EAAa73F,OAExBuD,EAAMg8d,kBAAkB1nY,EAAc5vE,GACtC1kB,EAAMQ,OAAOyZ,OAAO+M,KAA2B9mB,OAI3D0pQ,EAAKztQ,UAAU6/d,kBAAoB,SAAU1nY,EAAc5vE,GACvD,GAAIzkB,KAAKO,OAAO8hG,OAAQ,CACpB,IAAI5oF,EAAKgL,EAAM0K,aAAa,OACxB9rB,EAAOrD,KAAKg8d,aAAa3nY,GAAc/wF,cAAc,IAAMmW,EAAK,UAC/DpW,EAIDA,EAAKC,cAAc,kBAAkBlB,UAAYqiB,EAAMviB,UAHvDlC,KAAKqpT,cAAch1N,EAAc5vE,EAAOhL,EAAI,MAOxDkwP,EAAKztQ,UAAU8/d,aAAe,SAAU3nY,GACpC,IAAI4nY,EAEAtxa,EADAsP,EAAOj6D,KAAKO,OAEhB,GAA+B,WAA3B05D,EAAKyF,aAAaviD,KAAmB,CACrC8+c,EAAUhia,EAAKuS,YAAcvS,EAAKuS,YAC3Br2D,SAASyhB,YAAQy8D,EAAc,IAAMh4B,KAAcltC,aAAaktC,KAAwB,KAAO,GACtG,IAAI7C,EAAQ66B,EAAaj6E,KACrB+kD,OAAM,EACN3F,IACA2F,EAAMkH,YAA0BrmE,KAAKO,OAAQ0+D,aAAkBzF,KAE/D2F,GAAOlF,EAAKqK,eACqB,gBAA7BnF,EAAIyM,qBACJjhB,EAAQsxa,EAAShia,EAAKuyE,yBAAyBlpI,cAAc,SACvD22D,EAAKmyE,0BAA0B9oI,cAAc,SAEjB,iBAA7B67D,EAAIyM,qBACTjhB,EAAQsxa,EAAShia,EAAKw/E,uBAAuBn2I,cAAc,SACrD22D,EAAKgyP,wBAAwB3oT,cAAc,SAEf,YAA7B67D,EAAIyM,uBACTjhB,EAAQsxa,EAAShia,EAAKqyE,0BAA0BhpI,cAAc,SACxD22D,EAAKiyE,2BAA2B5oI,cAAc,UAIxDqnD,EAAQsxa,EAAShia,EAAK4tE,iBAAmB5tE,EAAK++E,uBAIlDruF,EAAQvzB,aAAO,IAAM6iC,EAAKj5D,QAAQyY,GAAK,sBAAuBjZ,UAElE,OAAOmqD,GAEXg/M,EAAKztQ,UAAUgge,kBAAoB,SAAU74d,EAAMpD,GAC/C,IAAI6tE,EAAKnQ,aAAa19D,EAAKe,QAASq7D,KACpC,GAAIyR,EAAI,CACJ,IAAIquZ,EAAUruZ,EAAGzrC,wBAAwBU,MACrCq5b,EAAY/4d,EAAKg/B,wBAAwBU,MAC7C,GAAIq5b,EAAYD,EAAS,CACrB,IAAIjvY,EAASkvY,EAAYD,EACzB94d,EAAK2wB,MAAM8O,KAAQz/B,EAAKosC,WAAay9C,EAAU,QAI3Dy8K,EAAKztQ,UAAU4/d,mBAAqB,SAAU77d,GAC1C,GAAID,KAAKO,OAAO8hG,OAAQ,CACpB,IAAIh/F,EAAOrD,KAAKg8d,aAAa/7d,EAAKe,SAASsC,cAAc,IAAMrD,EAAKq4d,UAAY,UAC5Ej1d,IACoB,YAAhBpD,EAAK0kB,QACLthB,EAAK2wB,MAAMygB,QAAU,GACrBz0C,KAAKk8d,kBAAkB74d,EAAMpD,IAG7BoD,EAAK2wB,MAAMygB,QAAU,UAKrCk1N,EAAKztQ,UAAUmtT,cAAgB,SAAUroT,EAASyjB,EAAOrK,EAAMq6B,GAC3D,IAAIglB,EAASz5D,KAAKO,OAAO+lE,iBAAiBlsD,GACtC+5U,EAAUn0V,KAAKO,OAAO2pE,kBAAoB7N,KAAwD,WAAlCr8D,KAAKO,OAAOm/D,aAAaviD,MACtFs8C,EAAOmS,uBAAyBvP,IAAuBr8D,KAAKw6d,UAAUx5d,QAAUhB,KAAKm0V,QAAQnzV,QAChGq7d,EAAa1+Z,aAAa38D,EAAS,wBACnCq7d,IACAloI,EAAUn0V,KAAK07d,eAAe16d,SAElC,IAAIs7d,EAAWt8d,KAAKO,OAAO8mE,aAAavwC,kBACpCysC,EAAUvjE,KAAKO,OAAOgkE,oBAAsBvkE,KAAKO,OAAOokI,6BACrD3kI,KAAKO,OAAOmqE,6BACfnH,IACA+4Z,EAAWt8d,KAAKO,OAAO2rI,4BAE3B,IAKI+vV,EAEAM,EAPA5lI,EAAW2lI,EAAS7pb,aAAe6pb,EAASn7U,cAAgBm7U,EAAS9pb,YAAc8pb,EAAS19Z,YAC5FurZ,EAA6C,WAAlCnqd,KAAKO,OAAOm/D,aAAaviD,KACpC2wD,EAAKl2C,YAAQ52B,EAAS,IAAMq7D,KAC5BzR,EAAMhzB,YAAQ52B,EAAS,IAAMq7D,KAC7BgyE,EAAQruI,KAAKO,OAAO8mE,aAAa/jE,cAAc,IAAM+4D,KAErDmga,GAAgB,EAEhBC,GAAqB,EACrBC,EAAmBn1d,KAAKooI,MAAM3vI,KAAKO,OAAO8mE,aAAa85E,aAAenhJ,KAAKO,OAAOs+D,gBAAkB,EACpGiK,EAAQulE,EACN,GAAGhtI,MAAMC,KAAKtB,KAAKO,OAAO6rI,0BAA0Bn9G,uBAAuBotC,MAD7D,GAAGh7D,MAAMC,KAAKtB,KAAKO,OAAO8mE,aAAap4C,uBAAuBotC,MAQlF,GANsC,UAAlCr8D,KAAKO,OAAOm/D,aAAaviD,MACrBu/c,EAAmB,GAAK5zZ,EAAKjsE,QAAU6/d,GACpC5zZ,EAAKA,EAAKjsE,OAAS,GAAGsyB,aAAaktC,OAA2BzR,EAAIz7B,aAAaktC,OAClFoga,GAAqB,GAGzBtS,EAAU,CACV,GAAInqd,KAAKO,OAAOisE,WAAY,CACxB,IAAImwZ,EAAep5Z,EAAUvjE,KAAKO,OAAOisI,yBAAyBlpI,cAAc+4D,KAAgBvrC,SAC1F9wB,KAAKO,OAAOsnI,iBAAiBvkI,cAAc+4D,KAAgBvrC,SAEjE0rc,GADAP,EAASU,EAAa9/d,QAAUsZ,SAASy0C,EAAIz7B,aAAaktC,KAAwB,KAAO,KAC/DlmD,SAASy0C,EAAIz7B,aAAaktC,KAAwB,MAAQsga,EAAa9/d,OAAS,GAE1G2/d,GAAkBE,EAAmB,GAAK5zZ,EAAKjsE,QAAU6/d,IACR,WAA5C18d,KAAKO,OAAOm/D,aAAa+M,gBAAgCzsE,KAAK08I,WAAWz8I,MAClC,QAArCD,KAAK08I,WAAWz8I,KAAKm6F,aAA4BtsB,EAAG93C,UAAUzD,SAAS,mBACtEq4B,EAAI50B,UAAUzD,SAAS8pC,OAAyBoga,KACxDF,GAA4B,GAGpC,IAAI5xa,EAAQw/Z,EACP8R,EAASj8d,KAAKO,OAAOsnI,iBAAmB7nI,KAAKO,OAAOy4I,kBACrD5hH,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,qCAAsCjZ,UAC5Eo8d,EAASjya,EAAMtoB,wBACfS,EAAOqnb,EACPnqd,KAAKO,OAAOS,QAAQqhC,wBAAwBS,KAAO85b,EAAO95b,KAC1Dk+B,EAAQppC,YAAQ52B,EAAS,MACzB67d,EAAc77Z,EAAQA,EAAM3+B,wBAA0BrhC,EAAQ4yC,cAAcvR,wBAC5EnhC,EAAMlB,KAAKO,OAAOY,cAAc,MAAO,CACvCktB,UAAW,qDACX5U,GAAIW,EAAO,SACX2Z,OAAQ,WAAa0gB,EAAU,UACzBwnb,EAASY,EAAY75b,IAAM65b,EAAYltb,OAASktb,EAAY55b,OAAS25b,EAAO55b,KACvEugC,EAAU8qE,EAAMzrG,UAAY,IAAM+nB,EAAM/nB,UAAY,GAAK,YAC/Di6b,EAAY/5b,KAAOA,EAAO6nB,EAAMloB,WAAao6b,EAAYntb,MAAQ,GAH9D,gBAIWmtb,EAAYntb,MAAQ,0BAEvCy6a,GAAYyS,EAAO95b,KAAOA,IAC1B5hC,EAAI8yB,MAAM8O,KAAO3sB,SAASjV,EAAI8yB,MAAM8O,KAAM,IAAM85b,EAAO95b,KAAOA,EAAO,MAEzE,IAEIg6b,EAFApya,EAAU1qD,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,mBAC5Dq8B,EAAQ1oD,YAAYyiB,GAEhB83c,IACAO,EAAQ98d,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,8BAChDrsB,YAAYhC,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,oCAChEyuc,EAAM96d,YAAYhC,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,uCAGhEyuc,EAAQ98d,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,2BAChDrsB,YAAYhC,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,iCAChEyuc,EAAM96d,YAAYhC,KAAKO,OAAOY,cAAc,MAAO,CAAEktB,UAAW,kCAEpEntB,EAAIc,YAAY0oD,GAChBxpD,EAAIc,YAAY86d,GACXT,IAAe94Z,IAAWvjE,KAAKO,OAAOisE,YAAiD,WAAlCxsE,KAAKO,OAAOm/D,aAAaviD,MAe3Ek/c,EACAr8d,KAAK07d,eAAe16d,QAAQgB,YAAYd,GAGxClB,KAAKm0V,QAAQnzV,QAAQgB,YAAYd,KAlBe,WAAlClB,KAAKO,OAAOm/D,aAAaviD,KACvCya,YAAQ52B,EAAS,eAAiB42B,YAAQ52B,EAAS,IAAMq7D,MACjDroC,MAAM+Z,SAAW,WAC7B7sC,EAAI8yB,MAAM+Z,SAAW,WACiB,UAAlC/tC,KAAKO,OAAOm/D,aAAaviD,MACxBya,YAAQ52B,EAAS,IAAMq7D,MAA2BzkC,YAAQ52B,EAAS,IAAMq7D,MACtEr8D,KAAKO,OAAOisE,aAAejJ,EAC/B4wR,EAAQnyV,YAAYd,GAGpBlB,KAAKs6d,SAASt5d,QAAQgB,YAAYd,KAWrCq7d,GAA6BpS,GAAYmS,EAASj6b,wBAAwBY,OAAS45b,EAAY55b,OAAS45b,EAAYltb,SACrH2sb,EAAS15b,UAAY05b,EAAS15b,UAAY1hC,EAAI0uC,aAAektb,EAAMrqb,cAEvE,IAAI8xF,EAAapuH,SAAS3V,SAASkmE,YAAYpjC,iBAAiBpiC,EAAK,MAAMqiC,iBAAiB,aAAc,IAW1G,GAVIriC,EAAImhC,wBAAwBqN,MAAQmtb,EAAYntb,OAChDxuC,EAAIoC,cAAc,SAAS++B,wBAAwBsN,QAAuB,IAAb40F,IAAqB,IAClFrjI,EAAI8yB,MAAM0b,MAAQxuC,EAAI8yB,MAAM0mH,WAE3Bn3E,GAAWvjE,KAAKO,OAAOisE,aAAiD,WAAlCxsE,KAAKO,OAAOm/D,aAAaviD,KAChEjc,EAAI8yB,MAAM8O,KAAOk+B,EAAMvxB,YAAcuxB,EAAMvqC,YAAc,EAAIv1B,EAAIu1B,YAAc,GAAK,KAGpFv1B,EAAI8yB,MAAM8O,KAAQ3sB,SAASjV,EAAI8yB,MAAM8O,KAAM,IAAM5hC,EAAIu1B,YAAc,EAAK,KAExE0zb,IAAaxzH,IAAa32V,KAAKO,OAAO0kE,aAAe1B,GAAWvjE,KAAKO,OAAOisE,WAAY,CACxF8vZ,EAAStoc,MAAM+Z,SAAW,SAC1B,IAAIp4B,EAAMirD,aAA+BI,EAAO9/D,GAChDA,EAAI8yB,MAAMgP,IAAMrtB,EAAIqtB,IAAM65b,EAAYltb,OAAS,EAAI,KAEvD,GAAI4sb,EAA2B,CAC3B,IAAI5lI,GAAapzR,GAAkC,SAAvBvjE,KAAKO,OAAOovC,QAAsB3vC,KAAKO,OAAOisE,YAClExsE,KAAKO,OAAOqjE,qBAMhB1iE,EAAI8yB,MAAMiP,OAAS45b,EAAYltb,OAAS,EAAI,SANN,CACtC,IAAI6C,EAAc8pb,EAAS9pb,YAAc8pb,EAAS7lc,YAAcgoC,cAAsB,EACtFv9D,EAAI8yB,MAAMiP,OAAUjjC,KAAKO,OAAOovC,OAAS2sb,EAASh5d,cAAc,SAASssC,aACnE4C,EAAeqqb,EAAYltb,OAAS,EAAI,KAKlD,GAAIm5B,EAAKjsE,OAAS6/d,GAAgE,WAA5C18d,KAAKO,OAAOm/D,aAAa+M,gBAAgCzsE,KAAK08I,WAAWz8I,MACnE,QAArCD,KAAK08I,WAAWz8I,KAAKm6F,YAAwB,CAChD,IACI2iY,GADY/8d,KAAKO,OAAOisE,WAAaxsE,KAAKO,OAAOisE,YAAc1D,EAAKjsE,OAAS,GAAKisE,EAAKjsE,OAAS,GACvEmD,KAAKO,OAAOs+D,eACrC9wB,EAAW/tC,KAAKO,OAAO8mE,aAAa85E,aAAe47U,EACvD77d,EAAI8yB,MAAMiP,OAAS8K,EAAW,EAAI,KAEtC7sC,EAAI8yB,MAAMgP,IAAM,OAQxB2mO,EAAKztQ,UAAUysd,qBAAuB,SAAUxpZ,GAC5C,OAAQA,EAAIjC,WAAal9D,KAAKO,OAAOy6D,cAAcjB,QAAQ57D,QAAQghE,EAAI3F,QAAU,IAOrFmwM,EAAKqzN,WAAa,SAAUC,GACxBtzN,EAAKowN,aAAez7d,YAAOqrQ,EAAKowN,aAAckD,IAElDtzN,EAAKowN,aAAe,CAChB,aAAgB7P,GAAkB,YAAeO,GACjD,eAAkB8O,GAAoB,mBAAsBA,GAC5D,YAAe3P,GAAiB,YAAemD,GAC/C,aAAgB2M,IAEb/vN,EAjgCe,G,SCzBtBtrO,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAsBzCy+b,GAAuC,SAAU/9b,GAEjD,SAAS+9b,EAAsB38d,EAAQohG,GACnC,IAAI5hG,EAAQo/B,EAAO79B,KAAKtB,KAAMO,EAAQohG,IAAY3hG,KAQlD,OAPAD,EAAMitO,cAAgBjtO,EAAMQ,OAAOY,cAAc,SAAU,IAC3DpB,EAAMo9d,UAAYp9d,EAAMQ,OAAOY,cAAc,MAAO,CAAEktB,UAAW,mBAAoB0F,OAAQ,0BAC7Fh0B,EAAMiB,QAAUjB,EAAMQ,OAAOY,cAAc,KAAM,CAC7CktB,UAAW,0BAA2B0E,MAAO,CACzC+uE,KAAM,WAAYC,SAAU,QAG7BhiG,EAmEX,OA7EAs+B,GAAU6+b,EAAuB/9b,GAqBjC+9b,EAAsBhhe,UAAUwzB,OAAS,SAAUqwD,EAAMllE,EAAM0Y,EAAY6pc,GACvE,IAAI3pc,EAAOzzB,KAAKgB,QAAQiB,YAIxB,GAFAwxB,EAAKzxB,YAAYhC,KAAKm9d,UAAUl7d,aAChCwxB,EAAKmC,aAAa,aAAc,mCAAqCmqD,EAAKtmB,OAAOsD,YAC7EgjB,EAAKtmB,OAAOwvC,iBACZ,GAAIjpG,KAAKO,OAAOgiG,SAAqD,kBAAlCxiB,EAAKtmB,OAAOwvC,iBAAgC,CAC3E,IAAIs8L,EAASvlS,KAAKO,OAAS,mBAC3Bw/E,EAAKtmB,OAAOkpC,mBAAZ5iB,CAAgCllE,EAAM7a,KAAKO,OAAQ,mBAAoBglS,EAAQ,KAAM,KAAM9xQ,EAAKqD,mBAChG92B,KAAKO,OAAOqiG,uBAGZzkC,YAAe1qC,EAAKqD,kBAAmBipD,EAAKtmB,OAAOkpC,mBAAZ5iB,CAAgCllE,SAI3E,IAAK,IAAI7c,EAAK,EAAGuF,EAAKw8E,EAAKipB,SAAUhrG,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAI6hQ,EAAUt8P,EAAGvF,GACjBy1B,EAAOzzB,KAAKgwM,aAAav8K,EAAMosO,EAAStsO,EAAW/Y,MAAOqlP,EAAW,KAY7E,OATA7/P,KAAKgkG,cAAcvwE,EAAMssD,EAAMxsD,IACzBvzB,KAAKO,OAAOqjE,sBAAwB5jE,KAAKO,OAAO8hG,QAAW+6X,GAC7Dvnc,YAAS,GAAGx0B,MAAMC,KAAKmyB,EAAKxE,uBAAuB,kBAAmB,UACtEmH,aAAY,GAAG/0B,MAAMC,KAAKmyB,EAAKxE,uBAAuB,kBAAmB,YAGzE4G,YAAS,GAAGx0B,MAAMC,KAAKmyB,EAAKxE,uBAAuB,kBAAmB,UACtEmH,aAAY,GAAG/0B,MAAMC,KAAKmyB,EAAKxE,uBAAuB,kBAAmB,WAEtEwE,GAEXypc,EAAsBhhe,UAAU8zM,aAAe,SAAUv8K,EAAM4pc,EAAc7id,EAAO/e,GAChF,IAAIm2F,EAAS5xF,KAAKgtO,cAAc/qO,YAChCsxB,YAAWq+D,EAAQ,CACf,GAAM5xF,KAAKO,OAAOS,QAAQyY,IAAM4jd,EAAalyd,MAAQ,IAAM,IAAMqP,EAAQ,IAAM/e,EAAK,KAAQ,SAC5F2rJ,MAAQhqJ,YAAkBige,EAAaj2U,OACnCi2U,EAAaA,aAAa3ya,SAAW1qD,KAAK4hG,UAAU/qD,YAAYwmb,EAAalyd,OAASkyd,EAAalyd,KADvDkyd,EAAaj2U,MAE7D,WAAY3rJ,IAEhBm2F,EAAOg5C,QAAUyyV,EAAaA,aAAa5sa,MAC3C,IAAI6sa,EAAY,IAAI77V,KAAO47V,EAAaA,aAAczrY,GAGtD,OAFA0rY,EAAUC,YAAcF,EAAalyd,KACrCsoB,EAAKqD,kBAAkB90B,YAAYs7d,EAAUt8d,SACrCq8d,EAAalyd,MACjB,IAAK,OACL,IAAK,SACD0qB,YAAS,CAAC+7D,GAAS,CAAC,gBAAiB,KAAOyrY,EAAalyd,KAAKsM,cAAgB,WAC9E,MACJ,IAAK,SACL,IAAK,OACDoe,YAAS,CAAC+7D,GAAS,CAAC,gBAAiB,KAAOyrY,EAAalyd,KAAKsM,cAAgB,WAGtF,OAAOgc,GAEJypc,EA9EgC,CA+EzCx7X,MC1FEmM,GAA+B,WAC/B,SAASA,EAActtG,EAAQohG,GAC3B3hG,KAAKO,OAASA,EACdP,KAAK2hG,QAAUA,EACf3hG,KAAKw9d,iBACLx9d,KAAKupB,mBAuHT,OArHAskF,EAAc3xG,UAAUshe,eAAiB,WACvBx9d,KAAK2hG,QAAQ1hC,WAAW,uBAC9BupO,gBAAgBj7N,IAASs/B,cAAe,IAAIqvX,GAAsBl9d,KAAKO,OAAQP,KAAK2hG,WAEhGkM,EAAc3xG,UAAUuhe,oBAAsB,SAAU58d,GACpD,IAAIo5D,EAAOj6D,KAAKO,OACZ08B,EAASrF,YAAQ/2B,EAAEo8B,OAAQ,UAC/B,GAAKA,GAAWrF,YAAQ/2B,EAAEo8B,OAAQ,kBAAlC,CASA,IANA,IAGIygc,EAHAJ,EAAYrgc,EAAOnC,cAAc,GACjC3vB,EAAOmyd,EAAUC,YACjB9he,EAAMwhC,EAAO9N,aAAa,YAE1By7B,EAAMqP,EAAKmoP,oBAAoBxqR,YAAQqF,EAAQ,IAAMo/B,KAAcltC,aAAa,aAChF09E,EAAO7sG,KAAKO,OAAOk8D,YACd7/D,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IAC7B,GAAIiwG,EAAKjwG,GAAGosG,SAER,IADA,IAAI20X,EAAc9wX,EAAKjwG,GAAGosG,SACjB7gG,EAAI,EAAGA,EAAIw1d,EAAY9ge,OAAQsL,IAAK,CAGrCw1d,EAAYx1d,GAAa,MAAM1M,GAAOkie,EAAYx1d,GAAe,OAAMgD,IACvEuyd,EAAgBC,EAAYx1d,IAK5C,IAAIlI,EAAO,CACP8iB,QAAQ,EACRka,OAAQA,EACRygc,cAAeA,EACfzqQ,QAAS71N,YAAkBwtD,QAAO5uD,EAAY4uD,EAAI/vC,MAEtD7a,KAAKO,OAAOwpB,QAAQglC,KAAc9uD,GAAM,SAAU29d,GAC9C,IAAIN,EAAUhsX,UAAar3C,EAAKyiF,aAAckhV,EAAiB76c,OAG/D,OAAQ5X,GACJ,IAAK,OACD8uD,EAAKyiF,WAAW+T,UAChBx2F,EAAKyiF,WAAWoqK,UAAUlvR,YAAQqF,EAAQ,OAC1C,MACJ,IAAK,SACDg9B,EAAKyiF,WAAW5jF,YAChB,MACJ,IAAK,OACDmB,EAAKyiF,WAAW+T,UAChB,MACJ,IAAK,SAC8B,UAA3Bx2F,EAAKyF,aAAaviD,MAClB88C,EAAKyiF,WAAW+T,UAEpBx2F,EAAKm4O,gBAAkBj8R,SAASyhB,YAAQqF,EAAQ,MAAM9N,aAAaktC,KAAwB,IAC3FpC,EAAK6xO,iBAEL7xO,EAAKylP,UAAUzlP,EAAKm4O,iBAAiB,GACrCn4O,EAAKyiF,WAAW9+C,eAChB3jC,EAAKm4O,qBAAkBp2S,QAUvC6xG,EAAc3xG,UAAU2+B,cAAgB,WACpC,MAAO,iBAQXgzE,EAAc3xG,UAAUif,QAAU,WAC1Bnb,KAAKO,OAAO44B,aAGhBn5B,KAAK2pB,uBAETkkF,EAAc3xG,UAAUytB,oBAAsB,WACtC3pB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAOsZ,IAAI42C,IAAOzwD,KAAKy9d,qBAC5Bz9d,KAAKO,OAAOsZ,IAAI22C,KAAYxwD,KAAK60C,iBACjC70C,KAAKO,OAAOsZ,IAAIq1C,KAAYlvD,KAAK22C,QAErCk3D,EAAc3xG,UAAUqtB,iBAAmB,WACnCvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAO+Y,GAAGm3C,IAAOzwD,KAAKy9d,oBAAqBz9d,MAChDA,KAAKO,OAAO+Y,GAAGk3C,KAAYxwD,KAAK60C,gBAAiB70C,MACjDA,KAAKO,OAAO+Y,GAAG41C,KAAYlvD,KAAK22C,KAAM32C,QAE1C6tG,EAAc3xG,UAAU24C,gBAAkB,SAAUh0C,GAC/B,UAAbA,EAAEilC,QAAsBlO,YAAQ/2B,EAAEo8B,OAAQ,uBAC1Cj9B,KAAKy9d,oBAAoB58d,GACzBA,EAAEyrC,mBAGVuhE,EAAc3xG,UAAUy6C,KAAO,WAG3B,IAFA,IACIwoB,EAAMn/D,KAAKO,OAAOk8D,YACb7/D,EAAI,EAAGA,EAAIuiE,EAAItiE,OAAQD,IAC5B,GAAIuiE,EAAIviE,GAAGosG,SAEP,IADA,IAAI60X,EAAa1+Z,EAAIviE,GAAGosG,SACf7gG,EAAI,EAAGA,EAAI01d,EAAWhhe,OAAQsL,IACnC01d,EAAW11d,GAAM,IAAI+1D,YAAO,gBAKrC2vC,EA5HwB,GCD/BouW,GAA+B,WAC/B,SAASA,EAAc17c,EAAQohG,GAC3B3hG,KAAKO,OAASA,EACdP,KAAK2hG,QAAUA,EACf3hG,KAAKupB,mBAoJT,OAlJA0yb,EAAc//c,UAAU2+B,cAAgB,WACpC,MAAO,iBAEXohb,EAAc//c,UAAUmtS,oBAAsB,WAC1CrpS,KAAKO,OAAOsuJ,IAAI,CAAC,aAAc,kBAAmB,kBAClD,IAAIu3I,EAAWpmS,KAAK2hG,QAAQ1hC,WAAW,mBAClCjgE,KAAKO,OAAO+jE,iBACTtkE,KAAKO,OAAO6lE,4BACZggO,EAASkD,YAAY96N,IAAW2O,OAAQ,IAAIy6Q,EAAsB53V,KAAKO,OAAQP,KAAK2hG,UAExFykM,EAASkD,YAAY96N,IAAWg4N,QAAS,IAAI0oD,EAAuBlvV,KAAKO,OAAQP,KAAK2hG,WAE1F3hG,KAAK89d,kBAET7hB,EAAc//c,UAAU4he,eAAiB,WACrC,IAAIv/Z,EAAYv+D,KAAKO,OAAOs+D,eACxB+zR,EAAU5yV,KAAKO,OAAOovC,OAAOxiC,WAAWhP,QAAQ,KAAO,EAAI6B,KAAKO,OAAOovC,OACvE3vC,KAAKO,OAAOS,QAAQqhC,wBAAwBsN,OAChD3vC,KAAKy1V,aAAe7C,EAAUr0R,GAC9B,IAAI5uB,EAA0B,EAAjB3vC,KAAKy1V,UACdj5Q,EAAOx8E,KAAKO,OAAO2kE,aAAaE,SACpCplE,KAAKO,OAAO24B,cAAc,CAAEgsC,aAAc,CAAEE,SAAUoX,EAAO7sC,EAASA,EAAS6sC,KAAU,IAE7Fy/X,EAAc//c,UAAUqtB,iBAAmB,WACnCvpB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAO+Y,GAAG21C,KAAajvD,KAAKqpS,oBAAqBrpS,MACtDA,KAAKO,OAAO+Y,GAAGyN,KAA2B/mB,KAAK+2V,sBAAuB/2V,MACtEA,KAAKO,OAAO+Y,GAAGyN,KAAoC/mB,KAAKm5D,4BAA6Bn5D,MACrFA,KAAKO,OAAO+Y,GAAGyN,KAA4B/mB,KAAK+9d,0BAA2B/9d,QAE/Ei8c,EAAc//c,UAAUytB,oBAAsB,WACtC3pB,KAAKO,OAAO44B,cAGhBn5B,KAAKO,OAAOsZ,IAAIo1C,KAAajvD,KAAKqpS,qBAClCrpS,KAAKO,OAAOsZ,IAAIkN,KAA2B/mB,KAAK+2V,uBAChD/2V,KAAKO,OAAOsZ,IAAIkN,KAAoC/mB,KAAKm5D,6BACzDn5D,KAAKO,OAAOsZ,IAAIkN,KAA4B/mB,KAAK+9d,6BAErD9hB,EAAc//c,UAAUk4V,qBAAuB,SAAUq5H,GACrD,IAAI5yc,EAAO,CACP8jI,YAAargJ,YAAO,GAAI,GAAImvd,GAAU,GAAO7uU,OAAO,EAAO+3M,UAAU,EAAOlmM,SAAS,GAGzF,OADAzwJ,KAAKO,OAAOyZ,OAAO+M,KAAuBlM,GACnCA,EAAK8jI,aAEhBs9T,EAAc//c,UAAUi9D,4BAA8B,SAAUt4D,GAC5D,IAAIo5D,EAAOj6D,KAAKO,OAChB,GAAI05D,EAAK2J,sBAAmD,WAA3B3J,EAAKyF,aAAaviD,KAAmB,CAClE,IAAI0vF,EAAO5yC,EAAKF,QACZitE,EAAc,IAAI/3B,IAAYjvG,KAAK2hG,QAAS,KAAM3hG,KAAKO,QACvD0qE,EAAS3sE,YAAO,GAAI,GAAI27D,EAAKmoP,oBAAoBvhT,EAAEpF,MAAM,GAC7Dw+D,EAAKjgD,OAAO+M,KAAoCkkD,GAChD,IAAIhrE,EAAOY,EAAE6sd,YAAY1td,KAAKo0V,qBAAqBvzV,EAAE4sd,UAAW,IAAI,GACpExtd,EAAKknd,wBAAyB,EAC9Blnd,EAAK2qD,IAAMo8E,EAAYt3G,OAAOu7C,EAAQ4hC,GACtChsG,EAAEulS,SAASvoM,OAAO59F,GAElB,IADA,IAAIisE,EAAQ,GACHtvE,EAAI,EAAGA,EAAIiwG,EAAKhwG,OAAQD,IACxBiwG,EAAKjwG,GAAGsgE,SAGT2vC,EAAKjwG,GAAG0vE,iBACRL,aAAmB4gC,EAAKjwG,GAAI,EAAGsvE,EAAO,GAAI,GAAI2gC,EAAKhwG,QAAQ,GAGnEoD,EAAKs9R,KAAKvnQ,UAAUjN,IAAI,wBACxBkxC,EAAKyiF,WAAWg/U,eAAiBzha,EAAKyiF,WAAWm/U,cAAc57d,EAAKs9R,KAAMrxN,KAGlF+vY,EAAc//c,UAAU6he,0BAA4B,SAAU99d,GAC1D,IAAIg6D,EAAOj6D,KAAKO,OACZkkB,EAAQw1C,EAAKj5D,QAAQsC,cAAc,8CACvC,GAAI22D,EAAKyiF,WAAWg/U,eAChB,GAAIj3c,GAAiC,SAAxBA,EAAMuP,MAAMygB,QAAoB,CACzC,IAAIupb,EAAev5c,EAAM4d,wBACrB47b,EAAQhka,EAAKj5D,QAAQQ,iBAAiB,eACtC+7R,EAAO0gM,EAAM,GACbC,EAAcjka,EAAKoN,aAAahlC,wBAAwBS,KAK5D,GAJIm7b,EAAMphe,OAAS,IACf0gS,EAAgC,UAAzBtjO,EAAKiQ,gBAA8B+zZ,EAAM,GAAKA,EAAM,GAC3DC,EAAcjka,EAAKiyE,2BAA2B7pG,wBAAwBS,MAEtEk7b,EAAal7b,KAAOo7b,GAAeF,EAAaj7b,MAAQk3B,EAAKj5D,QAAQy1B,YAAa,CAClF,IAAI27E,EAAUmrL,EAAKj6R,cAAc,iDACjCtD,KAAKi5D,aAAam5C,EAAS,CAAE67W,QAAShud,EAAKgud,QAASC,OAAQjud,EAAKiud,SAAU,SAG9E,GAAIj0Z,EAAKyiF,WAAWg/U,kBAAoBj3c,GAAiC,SAAxBA,EAAMuP,MAAMygB,SAAqB,CAEnF,IADA,IAAI0pb,EAAiBlka,EAAKyiF,WAAWg/U,eAAe16d,QAAQQ,iBAAiB,iDACpE5E,EAAI,EAAGA,EAAIuhe,EAAethe,OAAQD,IACvC6sB,aAAO00c,EAAevhe,IAI1B,GAFAoD,KAAKo+d,8BAA8Bnka,EAAKyiF,WAAWg/U,eAAe16d,QAAShB,KAAKo0V,qBAAqBn0V,EAAKwtd,WAC1Gxtd,EAAK8td,QAAU9zZ,EAAKyiF,WAAWg/U,eAAe36X,YACzC9gG,EAAK8td,QAAS,CACX37W,EAAUn4C,EAAKyiF,WAAWg/U,eAAe16d,QAAQsC,cAAc,iDACnEtD,KAAKi5D,aAAam5C,EAAS,CAAE67W,QAAShud,EAAKgud,QAASC,OAAQjud,EAAKiud,YAKjFjS,EAAc//c,UAAU+8D,aAAe,SAAUm5C,EAASnyG,EAAMo+d,GAC5D,IAAIpka,EAAOj6D,KAAKO,OAChB,GAAI6xG,EAAS,CACT,IAAIvF,EAAO5yC,EAAKwC,YACZjD,EAAQyF,aAAkBmzC,EAAQ34F,IAAI9c,MAAM,KAAK,GACjDwiE,EAAMlF,EAAKqM,iBAAiB9M,GAC5B52B,EAAY5iC,KAAKO,OAAO8mE,aAAavwC,kBAAkB8L,UACvDgoB,EAAMqP,EAAKk6E,cAAcl0I,EAAKgud,SAClC,GAAIoQ,IAAel/Z,IAAS/hE,YAAkB6C,EAAKiud,SAAWtrb,EAAY,IAAQxlC,YAAkB6C,EAAKgud,WAAarja,EAAM,CAExH,IADA,IAAIgpS,OAAgB,EACXh3V,EAAI,EAAGA,EAAIiwG,EAAKhwG,SAAWsiE,EAAKviE,IACrC,GAAIiwG,EAAKjwG,GAAG48D,QAAUA,EAAO,CACzBo6R,EAAgB/mP,EAAKjwG,GACrB,MAGJyhe,IACAzqI,EAAgBz0R,GAEpBn/D,KAAKO,OAAOyZ,OAAO+M,KAAqB6sU,MAIpDqoH,EAAc//c,UAAUkie,8BAAgC,SAAU7gM,EAAM8pK,GACzDrnc,KAAKO,OAEhB,IAFA,IACI86d,EAAS,GAAGh6d,MAAMC,KAAKi8R,EAAKtuQ,uBAAuB,YAC9CryB,EAAI,EAAG+E,EAAM05d,EAAOx+d,OAAQD,EAAI+E,EAAK/E,IAAK,CAC/C,IAAIuiE,EAAMkP,YAAoBruE,KAAKO,OAAQ86d,EAAOz+d,GAAGuyB,aAAa,iBAC9D3yB,EAAQH,YAAS8iE,EAAI3F,MAAO6tY,GAChC7qc,EAAQY,YAAkBZ,GAAS,GAAKA,EACxC6+d,EAAOz+d,GAAGJ,MAAQA,IAG1By/c,EAAc//c,UAAU66V,sBAAwB,SAAU92V,GAClDD,KAAKO,OAAO6lE,4BAA8C,WAAhBnmE,EAAKqkC,QAChCtkC,KAAK2hG,QAAQ1hC,WAAW,mBAC9BqmO,YAAY93N,IAAWg4N,SAASuwD,yBAGjDklH,EAAc//c,UAAUif,QAAU,WAC9Bnb,KAAK2pB,uBAEFsyb,EAxJwB,GCC/BqiB,GAAoC,WAMpC,SAASA,EAAmB/9d,GAExBP,KAAKu+d,YAAc,GACnBv+d,KAAKmvE,WAAa,GAClBnvE,KAAKk8J,WAAY,EACjBl8J,KAAKw+d,iBAAmB,GACxBx+d,KAAKy+d,SAAW,GAChBz+d,KAAKstc,WAAa,GAClBttc,KAAKO,OAASA,EACdP,KAAKy4N,OAAkC,SAAzBz4N,KAAKO,OAAOikB,SAAsBxkB,KAAKO,OAAOu2E,iBAAmB92E,KAAKO,OAAOw2E,aAue/F,OAreAunZ,EAAmBpie,UAAU6tN,oBAAsB,SAAUhlM,GAIzD,IAHA,IAAI9nB,EAAOiB,OAAOjB,KAAK8nB,GACnBsqD,EAAS,EACTsqJ,EAAe,GACZtqJ,EAASpyE,EAAKJ,QACjB88N,EAAa18N,EAAKoyE,IAAWtqD,EAAO9nB,EAAKoyE,IACzCA,IAEJ,OAAOsqJ,GAIX2kQ,EAAmBpie,UAAUwie,uBAAyB,SAAU57c,GAC5D,IAAI/iB,EAAQC,KACZA,KAAKy+d,SAAW37c,EAAU67c,QAC1B,IAAK,IAAI/he,EAAI,EAAGA,EAAIkmB,EAAU67c,QAAQ9he,OAAQD,IAC1CoD,KAAKmvE,WAAWvtE,KAAK5B,KAAK+pN,oBAAoBjnM,EAAU67c,QAAQ/he,KAEpE,IAAIq7E,EAAan1D,EAAUmrT,YAAYh2P,WAAW9qE,WAClD,GAAwD,UAApDnN,KAAKy4N,OAAO5hJ,UAAUoB,GAAYhB,eAA6Bj3E,KAAKO,OAAOm/D,aAAak/Z,oBACxF5+d,KAAKO,OAAOm/D,aAAaH,cAA6C,IAA7Bz8C,EAAU67c,QAAQ9he,QACP,kBAApDmD,KAAKy4N,OAAO5hJ,UAAUoB,GAAYhB,eAAmF,kBAAtCn0D,EAAU67c,QAAQ,GAAG1mZ,GACpGj4E,KAAKgnT,SAASlkS,OAEb,CACD9iB,KAAK6+d,2BACL,IAAIC,EAAqB39d,YAAc,MAAO,CAC1CsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,gBAC7B4U,UAAW47C,OAEfjqE,KAAKO,OAAOS,QAAQgB,YAAY88d,GAChC9+d,KAAK2yT,YAAc,IAAIjrK,KAAO,CAC1BC,kBAAmB,CAAEC,OAAQ,QAC7B0mF,eAAe,EACfvpN,OAAQ/kB,KAAKO,OAAOwjF,UAAUltC,YAAY,WAC1C6T,QAAS1qD,KAAK++d,uBAAuBj8c,GACrCgrN,WAAY,WACR/tO,EAAMi/d,iBAAiB9lc,cAAc,CACjC4oC,WAAY/hE,EAAMQ,OAAOm/D,aAAaH,aAClCx/D,EAAMk/d,mBAAmBn8c,GAAa/iB,EAAM0+d,SAChD9ub,OAAS5vC,EAAMQ,OAAOm/D,aAAaH,aAAqB,IAAN,MACnD,IAEP0jZ,YAAa,WACT,GAAIljd,EAAMQ,OAAOm/D,aAAaH,cAAgBx/D,EAAMm8J,UAAW,CACd,QAAzCn8J,EAAMQ,OAAO6vE,mBAAmBjlE,MAChCpL,EAAM2xD,WAAW3xD,EAAMi/d,iBAAiBl9Z,YAI5C,IAFA,IACIm7W,EAAmB,GACdj/a,EAAK,EAAGkhe,EAFWhhe,OAAOjB,KAAK8C,EAAMy+d,kBAEoBxge,EAAKkhe,EAAwBrie,OAAQmB,IAAM,CACzG,IAAIxB,EAAQ0ie,EAAwBlhe,GACpCi/a,EAAiBr7a,KAAK7B,EAAMy+d,iBAAiBhie,IAOjD,IALA,IAAIs+D,EAAQ58D,OAAOjB,KAAK8C,EAAMy+d,kBAAkB3he,OAC5Cg+T,EAAW,GACXskK,EAAY,GACZ3kd,EAAQ,EAEHjX,EAAK,EAAGwxB,EAAKh1B,EAAMi/d,iBAAiBl9Z,WAAYv+D,EAAKwxB,EAAGl4B,OAAQ0G,IAAM,CAC3E,IAAIi4C,EAAOzmB,EAAGxxB,GACd,GAAInG,YAAkBo+C,EAAc,UAA0B,KAApBA,EAAc,QAAU,CAC9D,IAAK,IAAIrmB,EAAK,EAAGG,EAAKv1B,EAAM04N,OAAOrpJ,OAAQj6C,EAAKG,EAAGz4B,OAAQs4B,IAAM,CAC7D,IAAIqkC,EAAQlkC,EAAGH,GACX/3B,YAAkBo+C,EAAKge,YAChBhe,EAAKge,UAGbhe,EAAc,QACrBq/Q,EAASj5T,KAAK45C,QAETsf,EAAQ,IACTx7D,eAAcS,EAAMQ,OAAOm/D,aAAa0/Z,sBACxCr/d,EAAMQ,OAAOw2E,aAAal8D,KAAKo7B,OAAOuF,EAAc,UAAMA,UAEvDz7C,EAAMy+d,iBAAiBhjb,EAAc,QAAEruC,YAC9Cgyd,EAAUv9d,KAAK45C,GACfsf,KAEyC,WAAzC/6D,EAAMQ,OAAO6vE,mBAAmBjzD,OAC5Bq+B,EAAc,gBACPA,EAAc,QAErBz7C,EAAM0+d,SAASjkd,GAAgB,gBACxBza,EAAM0+d,SAASjkd,GAAgB,SAG9CA,IAGJ,GADAsgD,EAAQ,EACJx7D,eAAcS,EAAMQ,OAAOqjE,qBAAsB,CACjD,IAAIy7Z,EAAet/d,EAEnBs/d,EAAa9+d,OAAO68J,eAAeC,kBAAkB,qBAAsB,gBAAiB,CACxF,QAAWw9J,EAAU,WAAcwkK,EAAab,iBAAkB,aAAgBa,EAAaZ,WAChG7jd,MAAK,SAAUC,GACdwkd,EAAa9+d,OAAO28c,iBAAiBric,EAAMwkd,EAAa9+d,QACxD8+d,EAAa9+d,OAAOg4B,wBAAyB,EAC7C8mc,EAAa9+d,OAAO24B,cAAc,CAAEs2C,YAAa6vZ,EAAa9+d,OAAOw2E,aAAavH,cAAe,UAC1F6vZ,EAAa9+d,OAAOo4B,YAAY62C,YACvC6vZ,EAAa9+d,OAAOg4B,wBAAyB,EAC7C8mc,EAAanjU,WAAY,EACzBmjU,EAAab,iBAAmB,WAInC,GAA6C,WAAzCz+d,EAAMQ,OAAO6vE,mBAAmBjzD,KAAmB,CAGxD,IAFA,IAAImid,EAAY,GACZrie,EAAOiB,OAAOjB,KAAK8C,EAAMy+d,kBACpB78d,EAAM,EAAGA,EAAM1E,EAAKJ,OAAQ8E,WAC1B5B,EAAMQ,OAAOg/d,kBAAkBpnZ,YAAYp4E,EAAMy+d,iBAAiBvhe,EAAK0E,KAC9E29d,EAAU19d,KAAK,CAAE49d,IAAKvie,EAAK0E,GAAMu4E,MAAOn6E,EAAMy+d,iBAAiBvhe,EAAK0E,MAExE,IAAIw2E,EAAc,GAClBl7E,EAAOiB,OAAOjB,KAAK8C,EAAMQ,OAAOg/d,kBAAkBpnZ,aAClD,IAASx2E,EAAM,EAAGA,EAAM1E,EAAKJ,OAAQ8E,IACjCw2E,EAAYv2E,KAAK,CAAE49d,IAAKvie,EAAK0E,GAAMu4E,MAAOn6E,EAAMQ,OAAOg/d,kBAAkBpnZ,YAAYl7E,EAAK0E,MAE9F5B,EAAMQ,OAAO88c,UAAU,gBAAiB,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,CAAE,UAAaxiJ,EAAU,YAAeykK,EAAW,YAAeH,EAAWhnZ,YAAaA,QAE3K,CAID,IAHA,IAAIpE,EAAQ,GAGHy4C,EAAK,EAAGyjC,EAFLlwJ,EAAMQ,OAAOwnN,sBAAwBhoN,EAAMQ,OAAOqjE,qBAC1D7jE,EAAMQ,OAAOw2E,aAAa6wI,WAAa7nN,EAAMQ,OAAOw2E,aAAal8D,KACzC2xG,EAAKyjC,EAAGpzJ,OAAQ2vH,IAAM,QAC1ChxE,EAAOy0G,EAAGzjC,IACO,aAC4BxwH,IAA7C+D,EAAMy+d,iBAAiB1ja,EAAM3tD,aAC7B4mE,EAAMnyE,KAAK45C,GAEfsf,IAGJiZ,EAAQA,EAAMjiD,OAAO+oS,GACrB,IAAI51J,EAAc,CACdm0N,YAAar5X,EAAMi/d,iBAAiBl9Z,WACpCyuF,aAAcxwJ,EAAMovE,WACpB8tW,iBAAkBA,EAClBl6Z,QAAQ,GAEZhjB,EAAMQ,OAAOwpB,QAAQhD,IAAsBk+I,GACtCA,EAAYliJ,SACbhjB,EAAMQ,OAAO24B,cAAc,CAAEk3C,mBAAoB,CAAEtO,WAAYiS,KAAW,GAC1Eh0E,EAAM04N,OAAOpD,eAAet1N,EAAMQ,OAAO6vE,oBACzCrwE,EAAMQ,OAAOivE,YAAczvE,EAAM04N,OAAOjpJ,cAI9ClwE,eAAcS,EAAMQ,OAAOqjE,uBAC7B7jE,EAAMm8J,WAAY,EAClBn8J,EAAMy+d,iBAAmB,KAGjC/yR,SAAS,EACTvuI,SAAS,EACTktK,eAAe,EACfrtN,OAAQ/c,KAAKO,OAAOwc,OACpB4pB,UAAW3mC,KAAKO,OAAOomC,UACvB+I,MAAO1vC,KAAKO,OAAOokU,WAAa,OAAS,MACzC52R,SAAU,CAAEuuC,EAAG,SAAUC,EAAG,UAC5B8tJ,eAAe,EACfptM,OAAQz8B,SAASgiC,KACjBngC,MAAOrC,KAAK6+d,yBAAyB1ie,KAAK6D,QAE9CA,KAAK2yT,YAAYzkS,kBAAmB,EACpCluB,KAAK2yT,YAAY5rR,SAAS+3b,GAE1Brpc,aAAkBz1B,KAAK2yT,YAAY3xT,QAAS,CAAE,WAAc,cAGpEs9d,EAAmBpie,UAAU8qT,SAAW,SAAUlkS,GAC9C,IAAI/iB,EAAQC,KACRy/d,EAAaz/d,KAAKO,OAAO8sc,aAAatlW,cACtC9vB,EAAan1D,EAAUmrT,YAAYh2P,WAAW9qE,WAC9CgrE,EAAcliC,OAAO/3C,OAAOjB,KAAK6lB,EAAUmrT,YAAY91P,cAC3Dr1D,EAAU6oB,cAAc7U,kBAAkB9C,MAAMygB,QAAU,OAC1D,IAAIovL,EAAY5tL,OAAOnzB,EAAU67c,QAAQ,GAAG1mZ,IAExCs4E,EAAevwJ,KAAK+pN,oBAAoBjnM,EAAU67c,QAAQ77c,EAAU67c,QAAQ9he,OAAS,IACrFu8X,EAAct2W,EAAU67c,QAAQ77c,EAAU67c,QAAQ9he,OAAS,GAE3DimB,EAAUmrT,YAAYh2P,cAAcs4E,IACpC6oO,EAAYt2W,EAAUmrT,YAAYh2P,YAAcn1D,EAAUmrT,YAAYp8S,aAE1E7xB,KAAK0/d,eAAiB,IAAI97J,KAAe,CACrCpnU,MAAOqnO,EACPl9L,UAAW3mC,KAAKO,OAAOomC,UACvB6xD,SAAS,EACTxtF,OAAQ,UACR+R,OAAQ/c,KAAKO,OAAOwc,OACpBq1B,OAAQ,WACJ,IAAIutb,EAAe5/d,EAAM2/d,eAAelje,MACpCoje,EAAa98c,EAAUmrT,YAAY91P,YAAYA,GACnDr1D,EAAU67c,QAAQ,GAAG1mZ,GAAc0nZ,EACnC5/d,EAAMQ,OAAOw2E,aAAal8D,KAAK+kd,GAAc98c,EAAU67c,QAAQ,IAEnEp1T,KAAM,WACF,IAAIzmJ,EAAY,CACZs2W,YAAaA,EACb7oO,aAAcA,EACd0sR,iBAAkB7jD,EAAY5+W,MAC9BuI,QAAQ,GAEZhjB,EAAMQ,OAAOwpB,QAAQhD,IAAsBjE,GACtCA,EAAUC,SACXhjB,EAAMQ,OAAO24B,cAAc,CAAEk3C,mBAAoB,CAAEtO,WAAY/hE,EAAMQ,OAAOw2E,aAAal8D,QAAU,GACnG9a,EAAM04N,OAAOpD,eAAet1N,EAAMQ,OAAO6vE,oBACzCrwE,EAAMQ,OAAOivE,YAAczvE,EAAM04N,OAAOjpJ,YACxCzvE,EAAMQ,OAAO8sc,aAAatlW,cAAgB03X,MAItD,IAAII,EAAiB1+d,YAAc,QAAS,CACxCsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,cAEjCqJ,EAAU6oB,cAAc3pC,YAAY69d,GACpC7/d,KAAK0/d,eAAe34b,SAAS84b,GAC7B/8c,EAAUmrT,YAAYzxU,MAAQwD,KAAK0/d,eAAelje,MAClDwD,KAAK0/d,eAAev9V,UACpBniI,KAAKO,OAAO8sc,aAAatlW,eAAgB,GAG7Cu2X,EAAmBpie,UAAUw1D,WAAa,SAAUoQ,GAIhD,IAHA,IAAIg+Z,EAAU,EACVjld,EAAQ7a,KAAKO,OAAOwnN,sBAAwB/nN,KAAKO,OAAOqjE,qBACxD5jE,KAAKO,OAAOw2E,aAAa6wI,WAAa5nN,KAAKO,OAAOw2E,aAAal8D,KAC5Dild,EAAUh+Z,EAAWjlE,QAAQ,CAIhC,IAHA,IAAIuyE,EAASlxE,OAAOjB,KAAK6kE,EAAWg+Z,IAChCzwZ,EAAS,EACTC,EAAY,GACTD,EAASD,EAAOvyE,QACdO,YAAkB4C,KAAKO,OAAOw2E,aAAa+wI,UAAU14I,EAAOC,OAC7DC,EAAUtvE,KAAKO,OAAOw2E,aAAa+wI,UAAU14I,EAAOC,KAAYvN,EAAWg+Z,GAAS1wZ,EAAOC,KAE/FA,IAEJx0D,EAAKinD,EAAWg+Z,GAAkB,SAAKxwZ,EACvCwwZ,IAEA9/d,KAAKO,OAAOwnN,sBAAwB/nN,KAAKO,OAAOqjE,qBAChD5jE,KAAKO,OAAOw2E,aAAa6wI,WAAa/sM,EAGtC7a,KAAKO,OAAOw2E,aAAal8D,KAAOA,GAGxCyjd,EAAmBpie,UAAU2ie,yBAA2B,WAChD7+d,KAAK2yT,cAAgB3yT,KAAK2yT,YAAYx5R,aACtCn5B,KAAK2yT,YAAYx3S,UAErB,IAAIi2N,EAAgB5wO,SAASuuB,eAAe/uB,KAAKO,OAAOS,QAAQyY,GAAK,iBACjE23N,GACA3nN,aAAO2nN,GAEP5wO,SAASuuB,eAAe/uB,KAAKO,OAAOS,QAAQyY,GAAK,4BACjDgQ,aAAOjpB,SAASuuB,eAAe/uB,KAAKO,OAAOS,QAAQyY,GAAK,6BAIhE6kd,EAAmBpie,UAAU6ie,uBAAyB,SAAUj8c,GAC5D,IAAIi9c,EAAmB5+d,YAAc,MAAO,CAAEsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,oBAAqB4U,UAAW47C,OACvG+1Z,EAAyB7+d,YAAc,MAAO,CAC9CsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GACpB,0BAA2B4U,UAAW47C,OAe9C,GAb6B,KAAzBnnD,EAAUw1D,aACV0nZ,EAAuB59d,UAAY,eAC/B6nE,KAA4C,gBAAkBA,KAAqC,IACnGjqE,KAAKO,OAAOwjF,UAAUltC,YAAY,OAAS,wBAC3CozB,KAA2C,IAAMnnD,EAAUw1D,WAAa,kBAEhD,KAA5Bx1D,EAAU01D,gBACVwnZ,EAAuB59d,UAAY49d,EAAuB59d,UAAY,eAClE6nE,KAA4C,gBAC5CA,KAAqC,IAAMjqE,KAAKO,OAAOwjF,UAAUltC,YAAY,UAC7E,wBAA0BozB,KAA2C,IACrEnnD,EAAU01D,cAAgB,kBAEV,KAApB11D,EAAUtmB,MAAc,CACxB,IAAIy3E,EAAUnxD,EAAUtmB,MAAMG,MAAM,KAAK,GACrCH,EAAQsmB,EAAUtmB,MAAMG,MAAM,KAAK,GAAGA,MAAM,KAAK,GACvC,MAAVH,IACAwje,EAAuB59d,UAAY49d,EAAuB59d,UAAY,eAClE6nE,KAA4C,gBAC5CA,KAAqC,IACrCgK,EAAU,wBAA0BhK,KAA2C,IAAMztE,EAAQ,kBAGzG,IAAIiuI,EAAe,CAAC,iBAChBzqI,KAAKO,OAAOm/D,aAAaH,eAErBkrE,EADAzqI,KAAKO,OAAOm/D,aAAa0/Z,oBACV,CAAC,gBAAiB,OAEM,UAAlCp/d,KAAKO,OAAOm/D,aAAaviD,KACf,CAAC,gBAAiB,MAAO,SAAU,SAAU,UAErB,WAAlCnd,KAAKO,OAAOm/D,aAAaviD,KACf,CAAC,gBAAiB,MAAO,OAAQ,UAGjC,CAAC,gBAAiB,MAAO,OAAQ,SAAU,SAAU,WAG5E,IAAI6hd,EAAmB79d,YAAc,MAAO,CAAEsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,oBAAqB4U,UAAW47C,OAC3Gi8J,IAAK99L,OAAOqqQ,KAAWgvC,EAASu3G,GAAQqlB,GAASQ,IACjD7+c,KAAKg/d,iBAAmB,IAAI94P,IAAK,CAC7BojF,UAAW,UACXvhN,eAAe,EACfjrC,iBAAiB,EACjB42O,mBAAmB,EACnByJ,aAAa,EACb3yK,QAASC,EACT1wE,QAASj3C,EAAUq3C,YACnBp9C,OAAQ/c,KAAKO,OAAOwc,OACpB4pB,UAAW3mC,KAAKO,OAAOomC,UACvBi9B,sBAAuB5jE,KAAKO,OAAOm/D,aAAaH,aAChD0F,YAAajlE,KAAKO,OAAOm/D,aAAaH,aACtC2F,aAAc,CAAEE,SAAU,IAC1B7G,UAAWv+D,KAAKO,OAAO8sc,aAAa9uY,YAEpCj/D,gBACAU,KAAKg/d,iBAAgC,eAAI,GAEhB,SAAzBh/d,KAAKO,OAAOikB,UACZxkB,KAAKige,aAET,IAAIC,EAAelge,KA0DnB,OAzDAA,KAAKO,OAAOwpB,QAAQhD,IAA0B,CAC1C2pb,SAAU5tb,EACVqkD,QAAS7nE,mBAAatD,EAAYgE,KAAKg/d,iBACvC7zd,KAAM,YAENnL,KAAKg/d,iBAAiB/rL,kBACtB/sE,IAAK99L,OAAOi3U,IAEZr/W,KAAKg/d,iBAAiB9rL,gBACtBhtE,IAAK99L,OAAOurZ,IAEZ3zb,KAAKO,OAAOm/D,aAAaH,cACzB2mK,IAAK99L,OAAOuhO,GAAM3G,IAClBhjQ,KAAKg/d,iBAAiBt/Z,aAAe1/D,KAAKO,OAAOm/D,aAC7C1/D,KAAKO,OAAOm/D,aAAa0/Z,qBACzBp/d,KAAKg/d,iBAAiBt/Z,aAAaviD,KAAO,SAC1Cnd,KAAKg/d,iBAAiBt/Z,aAAawtZ,qBAAsB,EACzDhnP,IAAK99L,OAAOylE,IACZ7tG,KAAKg/d,iBAAiBjla,QAAQn4D,KAAK,CAC/Bm7D,WAAY/8D,KAAKO,OAAOwjF,UAAUltC,YAAY,iBAAkBnH,MAAO,IAAK04D,qBAAqB,EACjGY,SAAU,CACN,CAAE79F,KAAM,OAAQkyd,aAAc,CAAEnrX,QAAS,kBAAmBhc,SAAU,WACtE,CAAE/qF,KAAM,SAAUkyd,aAAc,CAAEnrX,QAAS,mBAAoBhc,SAAU,WACzE,CAAE/qF,KAAM,OAAQkyd,aAAc,CAAEnrX,QAAS,mBAAoBhc,SAAU,WACvE,CAAE/qF,KAAM,SAAUkyd,aAAc,CAAEnrX,QAAS,wBAAyBhc,SAAU,eAKtFl2F,KAAKg/d,iBAAiBt/Z,aAAawtZ,oBAAsBltd,KAAKO,OAAOm/D,aAAawtZ,oBAEtFltd,KAAKg/d,iBAAiBjla,QAAQn4D,KAAK,CAC/B43D,MAAO,UAAW0D,SAAS,EAAOoC,cAAc,EAAMn0D,KAAM,SAAUi9F,qBAAqB,IAE/FpoG,KAAKg/d,iBAAiBjza,eAAiB,SAAU9rD,GACpB,cAArBA,EAAKm6F,aAAoD,SAArBn6F,EAAKm6F,aAA+C,WAArBn6F,EAAKm6F,cACxE8lY,EAAahkU,WAAY,IAE4B,WAApDgkU,EAAalB,iBAAiBt/Z,aAAaviD,MAA0C,SAArBld,EAAKm6F,aACtE8lY,EAAalB,iBAAiBh+d,QAAQQ,iBAAiB,qBAAqB3E,OAAS,IACpFqje,EAAa3/d,OAAOm/D,aAAa0/Z,qBAA6C,cAArBn/d,EAAKm6F,cAC/D8lY,EAAavtK,YAAYp3L,QAGjCv7H,KAAKg/d,iBAAiBtxa,gBAAkB,WACpCwya,EAAahkU,WAAY,IAK7BgqE,IAAK99L,OAAO6za,IAEhBz7c,SAASgiC,KAAKxgC,YAAYg9d,GAC1Bh/d,KAAKg/d,iBAAiB9wc,kBAAmB,EACzCluB,KAAKg/d,iBAAiBj4b,SAASi4b,GAC/Be,EAAiB/9d,YAAYg+d,GAC7BD,EAAiB/9d,YAAYg9d,GACtBe,GAGXzB,EAAmBpie,UAAUike,iBAAmB,SAAUxB,GACtD,IAAI1he,EAAgC,SAAzB+C,KAAKO,OAAOikB,SAAsBm6c,EAAQ,GAAKzge,OAAOjB,KAAK0he,EAAQ,IAAM,GAChFzge,OAAOjB,KAAK+C,KAAKy4N,OAAO5hJ,WACxB9c,EAAU,GACd,GAAI/5D,KAAKO,OAAO6vE,mBAAmBsB,eAAe70E,OAAS,EACvD,IAAK,IAAID,EAAI,EAAGA,EAAIoD,KAAKO,OAAO6vE,mBAAmBsB,eAAe70E,OAAQD,IACtEoD,KAAKstc,WAAWttc,KAAKO,OAAO6vE,mBAAmBsB,eAAe90E,GAAGwd,MAAQpa,KAAKO,OAAO6vE,mBAAmBsB,eAAe90E,GAAGoO,OAGlI,GAA6B,SAAzBhL,KAAKO,OAAOikB,SACZ,IAAK,IAAIxmB,EAAK,EAAGC,EAAShB,EAAMe,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAIhB,EAAMiB,EAAOD,GACjB+7D,EAAQn4D,KAAK,CACT43D,MAAOx8D,EAAIN,QAAQ,mCAAoC,IAAIA,QAAQ,MAAO,IAAIC,MAAM,KAAKgsH,UAAUhkH,KAAK,IACxGo4D,WAAY//D,EAAIN,QAAQ,2BAA4B,IAAIA,QAAQ,WAAY,KACxEA,QAAQ,MAAO,IAAIC,MAAM,KAAKgsH,UAAUhkH,KAAK,KACjD+qC,MAAO,IACPwtB,SAAS,EACToP,gBAAiB,CAAE4lN,UAAU,GAC7BlnR,OAAS5N,YAAkB4C,KAAKstc,WAAWtwc,IAA+B,KAAvBgD,KAAKstc,WAAWtwc,GACnEmO,KAAO/N,YAAkB4C,KAAKstc,WAAWtwc,IAAe,SAAP,YAKzD,IAAK,IAAIuG,EAAK,EAAGypF,EAAS/vF,EAAMsG,EAAKypF,EAAOnwF,OAAQ0G,IAAM,CAClDvG,EAAMgwF,EAAOzpF,GACjB,GAAiD,oBAA7CvD,KAAKy4N,OAAO5hJ,UAAU75E,GAAKi6E,cAAqC,CAChE,IAAI4xB,EAAW,GACXouN,IAAoD,SAApCj3T,KAAKy4N,OAAO5hJ,UAAU75E,GAAKmO,MAAuD,aAApCnL,KAAKy4N,OAAO5hJ,UAAU75E,GAAKmO,QAAyBnL,KAAKoge,iBAAiBpje,IAAS2he,EAAQ,IAAMA,EAAQ,GAAG3he,KAAqD,IAA7C2he,EAAQ,GAAG3he,GAAKmQ,WAAWhP,QAAQ,OAErN0qG,EADoC,WAApC7oG,KAAKy4N,OAAO5hJ,UAAU75E,GAAKmO,KAChB,cAE8B,SAApCnL,KAAKy4N,OAAO5hJ,UAAU75E,GAAKmO,MAAmB8rT,EACxC,iBAE8B,aAApCj3T,KAAKy4N,OAAO5hJ,UAAU75E,GAAKmO,MAAuB8rT,EAC5C,qBAGA,cAEfl9P,EAAQn4D,KAAK,CACT43D,MAAOx8D,EACP+/D,WAAY/8D,KAAKy4N,OAAO5hJ,UAAU75E,GAAKi2E,QACvCvjC,MAAO,IACPwtB,QAASl9D,KAAKy4N,OAAO5hJ,UAAU75E,GAAKqlF,WACpC/V,gBAAiB,CAAE4lN,UAAU,GAC7BrpL,SAAUA,EACV79F,OAAS5N,YAAkB4C,KAAKstc,WAAWtwc,IAA+B,KAAvBgD,KAAKstc,WAAWtwc,GACnEmO,KAAO/N,YAAkB4C,KAAKstc,WAAWtwc,IAAe,SAAP,QAKjE,OAAO+8D,GAEXuka,EAAmBpie,UAAUkke,iBAAmB,SAAUpje,GACtD,IAAK,IAAI2E,EAAM,EAAGA,EAAM3B,KAAKO,OAAO6vE,mBAAmBsB,eAAe70E,OAAQ8E,IAC1E,GAAI3B,KAAKO,OAAO6vE,mBAAmBsB,eAAe/vE,GAAKyY,OAASpd,GAAOgD,KAAKO,OAAO6vE,mBAAmBsB,eAAe/vE,GAAKwJ,KAAKhN,QAAQ,SAAW,EAC9I,OAAO,EAGf,IAASwD,EAAM,EAAGA,EAAM3B,KAAKO,OAAO6vE,mBAAmB0B,aAAaj1E,OAAQ8E,IACxE,GAAI3B,KAAKO,OAAO6vE,mBAAmB0B,aAAanwE,GAAKyY,OAASpd,GAAOgD,KAAKO,OAAO6vE,mBAAmB0B,aAAanwE,GAAK6iB,SAASrmB,QAAQ,SAAW,EAC9I,OAAO,EAGf,OAAO,GAEXmge,EAAmBpie,UAAU+je,WAAa,WAEtC,IADA,IAAIzld,EAAQ,EACLA,EAAQxa,KAAKy+d,SAAS5he,QAAQ,CAKjC,IAJA,IAAIge,EAAO7a,KAAKy+d,SAASjkd,GACrBvd,EAAOiB,OAAOjB,KAAK+C,KAAKy+d,SAASjkd,IACjCstE,EAAU,GACVlrF,EAAI,EACDA,EAAIK,EAAKJ,QAAQ,CAEpBirF,EADU7qF,EAAKL,GAAGF,QAAQ,mCAAoC,IAAIA,QAAQ,MAAO,IAAIC,MAAM,KAAKgsH,UAAUhkH,KAAK,KAChGkW,EAAK5d,EAAKL,IACzBA,IAEJoD,KAAKy+d,SAASjkd,GAASstE,EACvBttE,MAGR8jd,EAAmBpie,UAAU+ie,mBAAqB,SAAUn8c,GAIxD,IAHA,IAAIy7c,EAAcv+d,KAAKu+d,YAAY1he,OAAS,EAAImD,KAAKu+d,YAAcrge,OAAOjB,KAAK6lB,EAAUmrT,YAAY91P,aACjGwmZ,EAAU3+d,KAAKy+d,SACf3ja,EAAQ,EACH98D,EAAK,EAAGqie,EAAY1B,EAAS3ge,EAAKqie,EAAUxje,OAAQmB,IAAM,CACpDqie,EAAUrie,GACP,QAAIuge,EAAYzja,GAC9B96D,KAAKw+d,iBAAiBD,EAAYzja,GAAO3tD,YAAc8oC,OAAOsob,EAAYzja,IAC1EA,IAEJ,OAAO6ja,GAEJL,EAtf6B,GCJpCgC,GAA8B,WAM9B,SAASA,EAAa//d,GAClBP,KAAKO,OAASA,EACdP,KAAK8+d,mBAAqB,IAAIR,GAAmBt+d,KAAKO,QACtDP,KAAKo8c,oBA0LT,OAnLAkkB,EAAapke,UAAU2+B,cAAgB,WACnC,MAAO,gBAEXylc,EAAapke,UAAUkgd,kBAAoB,WACvCp8c,KAAKO,OAAO+Y,GAAG81C,IAAcpvD,KAAKk0C,WAAYl0C,OAElDsge,EAAapke,UAAUg4C,WAAa,WAChCl0C,KAAKkiI,eACLt5G,IAAaG,IAAI/oB,KAAKO,OAAOS,QAAS,WAAYhB,KAAKsqT,kBAAmBtqT,OAE9Esge,EAAapke,UAAUgmI,aAAe,WAClCt5G,IAAaa,OAAOzpB,KAAKO,OAAOS,QAAS,WAAYhB,KAAKsqT,oBAE9Dg2K,EAAapke,UAAUouT,kBAAoB,SAAUzpT,GACjD,IAAIo8B,EAASp8B,EAAEo8B,OACX3L,EAAM,KAWV,GAVI2L,EAAOjH,UAAUzD,SAAS,2BAA6B0K,EAAOjH,UAAUzD,SAAS,gBACjF0K,EAAOjH,UAAUzD,SAAS,mBAC1BjB,EAAM2L,EAAO2W,cAER3W,EAAOjH,UAAUzD,SAAS,iBAAmB0K,EAAOjH,UAAUzD,SAAS,aAC5EjB,EAAM2L,EAEDA,EAAOjH,UAAUzD,SAAS,kBAC/BjB,EAAM2L,EAAO2W,cAAcA,eAE3BtiB,IACItxB,KAAKO,OAAOswc,mBAAqBv/a,EAAI0E,UAAUzD,SAAS,oBAAsBvyB,KAAKO,OAAOm/D,aAAaH,cAAc,CACrH,IAAIuZ,EAAW7iC,OAAO3kB,EAAInC,aAAa,kBACnCw8C,EAAW11B,OAAO3kB,EAAInC,aAAa,UACvCnvB,KAAKuge,oBAAoBvge,KAAKO,OAAOivE,YAAY7D,GAAUmN,GAAWnN,EAAUmN,EAAUxnD,KAMtGgvc,EAAapke,UAAUqke,oBAAsB,SAAUhjJ,EAAY5xQ,EAAUmN,EAAU93E,GACnFhB,KAAKO,OAAOige,oBAAsBx/d,EAClChB,KAAKO,OAAOg/d,kBAAoBhiJ,EAChC,IAAI9kH,EAAkC,SAAzBz4N,KAAKO,OAAOikB,SAAsBxkB,KAAKO,OAAOu2E,iBAAmB92E,KAAKO,OAAOw2E,aACtF0pZ,EAAe,GACfC,EAAU,GACV/B,EAAU,GACd,QAA8B3ie,IAA1BuhV,EAAWjlQ,iBAAyDt8E,IAA7BuhV,EAAW/kQ,gBAAgCp7E,YAAkBmgV,EAAW/gV,OAAQ,CACvH,GAA6B,SAAzBwD,KAAKO,OAAOikB,SAAqB,CACjC,IAAIm8c,OAAY,EAOZvwJ,GALAuwJ,EAD6C,QAA7C3ge,KAAKO,OAAO6vE,mBAAmBqB,UACnBgnJ,EAAOuyG,WAAWuS,EAAW/C,YAG7B/hH,EAAOsyG,cAAcwS,EAAW9C,aAG5ChiH,EAAO63G,cAAcqwJ,EAAUvwJ,aAAemN,EAAWtlQ,WAC7D,GAAIwgJ,EAAO5hJ,UAAUu5P,IAAgB33G,EAAO5hJ,UAAUu5P,GAAah9P,kBAE/D,YADApzE,KAAKO,OAAOu2c,YAAYv+I,YAAYC,kBAAkBx4T,KAAKO,OAAOwjF,UAAUltC,YAAY,SAAU72C,KAAKO,OAAOwjF,UAAUltC,YAAY,eAGxI4pb,EAAehoQ,EAAO5hJ,UAAUu5P,GAAemN,EAAWtlQ,YAAYhF,QACtEytZ,EAAUjoQ,EAAO5hJ,UAAUu5P,GAAemN,EAAWtlQ,YAAYhB,cACjEj3E,KAAKO,OAAOu2E,iBAAiBwmQ,oBAAoBC,EAAYv9U,KAAKO,OAAOqge,uBACzE,IACIjC,EAAU5jd,KAAKC,MAAMy9M,EAAOwyG,UAEhC,MAAOnzP,GAEH,YADA93E,KAAKO,OAAOu2c,YAAYv+I,YAAYC,kBAAkBx4T,KAAKO,OAAOwjF,UAAUltC,YAAY,SAAU4hL,EAAOwyG,eAI5G,CACDw1J,EAAehoQ,EAAO5hJ,UAAU0mQ,EAAWtlQ,WAAW9qE,YAClDsrN,EAAO5hJ,UAAU0mQ,EAAWtlQ,WAAW9qE,YAAY8lE,QAAUsqQ,EAAWtlQ,WAAW9qE,WACvFuzd,EAAUjoQ,EAAO5hJ,UAAU0mQ,EAAWtlQ,YAAcwgJ,EAAO5hJ,UAAU0mQ,EAAWtlQ,YAAYhB,cAAgB,GAC5G,IAAIooZ,EAAer/d,KACnB,GAAIV,eAAcU,KAAKO,OAAOqjE,qBAE1By7Z,EAAa9+d,OAAO68J,eAAeC,kBAAkB,qBAAsB,eAAgB,CAAE,SAAY1xF,EAAU,YAAemN,IAAYl+D,MAAK,SAAUC,GACzJ8jd,EAAU5jd,KAAKC,MAAMH,EAAK8jd,SAG1B,IAFA,IAAIkC,EAAY9ld,KAAKC,MAAMH,EAAKs9D,aAC5BA,EAAc,GACTx2E,EAAM,EAAGA,EAAMk/d,EAAUhke,OAAQ8E,IACtCw2E,EAAY0oZ,EAAUl/d,GAAK69d,KAAOqB,EAAUl/d,GAAKu4E,MAErDqjQ,EAAWplQ,YAAcA,EACzBknZ,EAAayB,cAAcL,EAAcC,EAAS/B,EAASphJ,EAAYv8U,WAI1E,GAA4C,WAAxChB,KAAKO,OAAO6vE,mBAAmBjzD,KACpCnd,KAAKO,OAAO88c,UAAU,eAAgB,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,CAAE1xY,SAAUA,EAAUkJ,YAAaiE,SAG7G,GAAI94E,KAAKO,OAAOqjE,sBAAwB5jE,KAAKO,OAAOwnN,qBAAsB,CACtE,IAAIg5Q,EAAa7ie,OAAOjB,KAAKsgV,EAAWplQ,aACxCn4E,KAAK8+d,mBAAmBP,YAAc,GACtC,IAAK,IAAIvge,EAAK,EAAGgje,EAAeD,EAAY/ie,EAAKgje,EAAanke,OAAQmB,IAElE,IADA,IAAI4lJ,EAASo9U,EAAahje,GACjBuF,EAAK,EAAGwxB,EAAK/0B,KAAKO,OAAOw2E,aAAa8wI,cAAc5xK,OAAO2tG,IAAUrgJ,EAAKwxB,EAAGl4B,OAAQ0G,IAAM,CAChG,IAAI09d,EAASlsc,EAAGxxB,GAChBo7d,EAAQ/8d,KAAK5B,KAAKO,OAAOw2E,aAAa6wI,WAAWq5Q,IACjDjhe,KAAK8+d,mBAAmBP,YAAY38d,KAAKq/d,EAAO9zd,kBAMxD,IADA,IACSgoB,EAAK,EAAG+rc,EADbH,EAAa7ie,OAAOjB,KAAKsgV,EAAWplQ,aACIhjD,EAAK+rc,EAAarke,OAAQs4B,IAAM,CACxE,IAAI3a,EAAQ0md,EAAa/rc,GACzBwpc,EAAQ/8d,KAAK5B,KAAKO,OAAOw2E,aAAal8D,KAAKo7B,OAAOz7B,MAK5Dlb,eAAcU,KAAKO,OAAOqjE,sBAAiE,WAAxC5jE,KAAKO,OAAO6vE,mBAAmBjzD,MACpFnd,KAAK8ge,cAAcL,EAAcC,EAAS/B,EAASphJ,EAAYv8U,KAK3Es/d,EAAapke,UAAU8wN,UAAY,SAAUlqM,GAIzC,IAHA,IAAIusD,EAAS,EACTywZ,EAAU,EACVjld,EAAO,GACJild,EAAUh9c,EAAU67c,QAAQ9he,QAAQ,CAEvC,IADA,IAAI88N,EAAe,GACZtqJ,EAASvsD,EAAUq3C,YAAYt9D,QAClC88N,EAAa72M,EAAUq3C,YAAYkV,GAAQ7V,OAAiD,WAAxCx5D,KAAKO,OAAO6vE,mBAAmBjzD,KAC/E2F,EAAU67c,QAAQmB,IAA2F,IAAlF9/d,KAAKO,OAAOw2E,aAAa3H,OAAOjxE,QAAQ2kB,EAAUq3C,YAAYkV,GAAQ7V,OAAgBx5D,KAAKO,OAAOw2E,aAAa3H,OAAOjxE,QAAQ2kB,EAAUq3C,YAAYkV,GAAQ7V,OAAS,GAChM12C,EAAU67c,QAAQmB,GAAS9/d,KAAKO,OAAOw2E,aAAa+wI,UAAUhlM,EAAUq3C,YAAYkV,GAAQ7V,QAChG6V,IAEJx0D,EAAKjZ,KAAK+3N,GACVmmQ,IACAzwZ,EAAS,EAGb,OADAvsD,EAAU67c,QAAU9jd,EACbiI,GAIXw9c,EAAapke,UAAU4ke,cAAgB,SAAUL,EAAcC,EAAS/B,EAASphJ,EAAYv8U,GACzF,IAAImge,EAAyB,oBAAZT,EAAgCD,EAAatzd,WAAyB,KAAZuzd,EACtE1ge,KAAKO,OAAOwjF,UAAUltC,YAAY6pb,GAAW,IAAM1ge,KAAKO,OAAOwjF,UAAUltC,YAAY,MAAQ,IAAM4pb,EACpGA,EACA39c,EAAY,CACZ6oB,cAAe3qC,EACfitU,YAAasP,EACbohJ,QAASA,EACTrmZ,WAAsC,KAA1BilQ,EAAWjlQ,WAAoB,GAAKilQ,EAAWjlQ,WAAWnrE,WAAWxQ,MAAMqD,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBuD,iBAAiBnwE,KAAK,OAC9J6zE,cAA4C,KAA7B+kQ,EAAW/kQ,cAAuB,GAAK+kQ,EAAW/kQ,cAAcrrE,WAAWxQ,MAAMqD,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBuD,iBAAiBnwE,KAAK,OACvKnI,MAAO2ke,EAAa,IAAM5jJ,EAAW7kQ,cAAgB,IACrDve,YAAan6D,KAAK8+d,mBAAmBqB,iBAAiBxB,GACtD57c,QAAQ,GAEgC,QAAxC/iB,KAAKO,OAAO6vE,mBAAmBjlE,OAC/B2X,EAAY9iB,KAAKgtN,UAAUlqM,IAE/B,IAAI0iE,EAAexlF,KACfm6D,EAAcr3C,EAAUq3C,YAC5Bn6D,KAAKO,OAAOwpB,QAAQhD,IAAqBjE,GAAW,SAAUyqN,GAC1D,GAAIjuO,cAAY,CACZ,IAAK,IAAI1C,EAAI,EAAGA,EAAI2wO,EAAapzK,YAAYt9D,OAAQD,IAC7Cu9D,EAAYv9D,GAAG48D,QAAU+zK,EAAapzK,YAAYv9D,GAAG48D,QACrDW,EAAYv9D,GAAG48D,MAAQ+zK,EAAapzK,YAAYv9D,GAAG48D,MACnDW,EAAYv9D,GAAGisG,SAAW0kI,EAAapzK,YAAYv9D,GAAGisG,SACtD1uC,EAAYv9D,GAAGmgE,WAAawwK,EAAapzK,YAAYv9D,GAAGmgE,WACxD5C,EAAYv9D,GAAGuO,KAAOoiO,EAAapzK,YAAYv9D,GAAGuO,KAClDgvD,EAAYv9D,GAAG0vE,gBAAkBihK,EAAapzK,YAAYv9D,GAAG0vE,gBAC7DnS,EAAYv9D,GAAGsgE,QAAUqwK,EAAapzK,YAAYv9D,GAAGsgE,QACrD/C,EAAYv9D,GAAG8yC,MAAQ69L,EAAapzK,YAAYv9D,GAAG8yC,OAG3D69L,EAAapzK,YAAcA,EAE1Br3C,EAAUC,QACXyiE,EAAas5Y,mBAAmBJ,uBAAuBnxP,OAI5D+yP,EAnMuB,GNiF3B,SAASc,GAAepjZ,GAC3B,IAAIqjZ,EACJ,OAAQrjZ,GACJ,IAAK,SACDqjZ,EAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UACnD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,aAIL,IAAK,YACDA,EAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UACnD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,oBACL,IAAK,eACL,IAAK,eACDA,EAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UACnD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,eACDA,EAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UACnD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,aACDA,EAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UACnD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,gBACDA,EAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UACnD,UAAW,UAAW,UAAW,UAAW,WAChD,MAIJ,QACIA,EAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UACnD,UAAW,UAAW,UAAW,UAAW,WAGxD,OAAOA,EAGJ,SAASC,GAActjZ,GAC1B,IAAIhqD,EACAutc,EAA2B,iBAAVvjZ,EAA2B,UAAuB,eAAVA,EAAyB,UAAY,SAClG,OAAQA,GACJ,IAAK,oBACL,IAAK,eACL,IAAK,eACDhqD,EAAQ,CACJwtc,UAAW,UACXC,UAAW,UACXC,SAAU,UACVC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,WAAY,UACZC,YAAa,UACbrxR,WAAY,UACZsxR,WAAY,UACZC,SAAU,UACVC,cAAe,UACfC,cAAe,UACfC,eAAgB,UAChBC,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnBC,aAAc,UACdC,kBAAmB,0BACnBC,oBAAqB,UACrBC,sBAAuB,WAE3B,MACJ,IAAK,eACL,IAAK,aACL,IAAK,gBACD7uc,EAAQ,CACJwtc,UAAW,UAAWC,UAAW,UACjCC,SAAU,WACVC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,cAAe,WACfC,WAAY,UACZC,YAAa,UACbrxR,WAAY4wR,EACZU,WAAY,WACZC,SAAU,UACVC,cAAe,UACfC,cAAe,UACfC,eAAgB,UAChBC,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnBC,aAAc,KACdC,kBAAmB,wBACnBC,oBAAqB,UACrBC,sBAAuB,WAE3B,MACJ,IAAK,aACD7uc,EAAQ,CACJwtc,UAAW,UAAWC,UAAW,UAAWC,SAAU,UAAWC,cAAe,UAChFC,cAAe,UAAWC,cAAe,UAAWC,cAAe,UAAWC,WAAY,UAAWC,YAAa,UAClHrxR,WAAY,UAAWsxR,WAAY,UAAWC,SAAU,UAAWC,cAAe,UAAWC,cAAe,UAC5GC,eAAgB,UAAWC,YAAa,qBAAsBC,iBAAkB,oBAChFC,kBAAmB,yBAA0BC,kBAAmB,yBAA0BC,aAAc,KACxGC,kBAAmB,yBAA0BC,oBAAqB,oBAAqBC,sBAAuB,WAElH,MACJ,QACI7uc,EAAQ,CACJwtc,UAAW,UACXC,UAAW,UACXC,SAAU,UACVC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,WAAY,UACZC,YAAa,UACbrxR,WAAY,UACZsxR,WAAY,OACZC,SAAU,UACVC,cAAe,UACfC,cAAe,UACfC,eAAgB,UAChBC,YAAa,uBACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnBC,aAAc,KACdC,kBAAmB,0BACnBC,oBAAqB,UACrBC,sBAAuB,WAInC,OAAO7uc,GAlOX,SAAWiqD,GAEPA,EAAM6kZ,cAAgB,CAClBtmZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAM8kZ,cAAgB,CAClBvmZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAM+kZ,eAAiB,CACnBxmZ,KAAM,OACN67L,WAAY,MACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMglZ,kBAAoB,CACtBzmZ,KAAM,OACN67L,WAAY,MACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMilZ,mBAAqB,CACvB1mZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMklZ,iBAAmB,CACrB3mZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMmlZ,gBAAkB,CACpB5mZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMolZ,gBAAkB,CACpB7mZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMqlZ,mBAAqB,CACvB9mZ,KAAM,OACN67L,WAAY,UACZ1iM,MAAO,UACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMslZ,eAAiB,CACnB/mZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YA/EpB,CAiFGqI,KAAUA,GAAQ,KOtFrB,IAAI5/C,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAO5D0kc,GAA2B,SAAUrkc,GAErC,SAASqkc,IACL,OAAkB,OAAXrkc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAiB/D,OAnBAq+B,GAAUmlc,EAAWrkc,GAIrBR,GAAW,CACP3B,YAAS,SACVwmc,EAAUtne,UAAW,YAAQ,GAChCyiC,GAAW,CACP3B,YAAS,OACVwmc,EAAUtne,UAAW,aAAS,GACjCyiC,GAAW,CACP3B,YAAS,IACVwmc,EAAUtne,UAAW,aAAS,GACjCyiC,GAAW,CACP3B,YAAS,OACVwmc,EAAUtne,UAAW,cAAU,GAClCyiC,GAAW,CACP3B,YAAS,KACVwmc,EAAUtne,UAAW,iBAAa,GAC9Bsne,EApBoB,CAqB7Bn+b,KAKEy3C,GAAsB,SAAU39C,GAEhC,SAAS29C,IACL,OAAkB,OAAX39C,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA0B/D,OA5BAq+B,GAAUy+C,EAAM39C,GAIhBR,GAAW,CACP3B,YAAS,WACV8/C,EAAK5gF,UAAW,iBAAa,GAChCyiC,GAAW,CACP3B,YAAS,SACV8/C,EAAK5gF,UAAW,YAAQ,GAC3ByiC,GAAW,CACP3B,YAAS,WACV8/C,EAAK5gF,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,YAAS,KACV8/C,EAAK5gF,UAAW,aAAS,GAC5ByiC,GAAW,CACP3B,YAAS,WACV8/C,EAAK5gF,UAAW,qBAAiB,GACpCyiC,GAAW,CACP3B,YAAS,aACV8/C,EAAK5gF,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,YAAS,IACV8/C,EAAK5gF,UAAW,eAAW,GAC9ByiC,GAAW,CACP3B,YAAS,SACV8/C,EAAK5gF,UAAW,oBAAgB,GAC5B4gF,EA7Be,CA8BxBz3C,KAKE+2T,GAAwB,SAAUj9T,GAElC,SAASi9T,IACL,OAAkB,OAAXj9T,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAU+9T,EAAQj9T,GAIlBR,GAAW,CACP3B,YAAS,KACVo/T,EAAOlgW,UAAW,aAAS,GAC9ByiC,GAAW,CACP3B,YAAS,IACVo/T,EAAOlgW,UAAW,aAAS,GACvBkgW,EAXiB,CAY1B/2T,KAKEo+b,GAAwB,SAAUtkc,GAElC,SAASskc,IACL,OAAkB,OAAXtkc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAUolc,EAAQtkc,GAIlBR,GAAW,CACP3B,YAAS,IACVymc,EAAOvne,UAAW,SAAK,GAC1ByiC,GAAW,CACP3B,YAAS,IACVymc,EAAOvne,UAAW,SAAK,GACnBune,EAXiB,CAY1Bp+b,KAKEq+b,GAA2B,SAAUvkc,GAErC,SAASukc,IACL,OAAkB,OAAXvkc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAUqlc,EAAWvkc,GAIrBR,GAAW,CACPvB,YAAQ,GAAIg/T,KACbsnI,EAAUxne,UAAW,cAAU,GAClCyiC,GAAW,CACP3B,YAAS,gBACV0mc,EAAUxne,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,YAAS,IACV0mc,EAAUxne,UAAW,eAAW,GACnCyiC,GAAW,CACP3B,YAAS,OACV0mc,EAAUxne,UAAW,uBAAmB,GACpCwne,EAjBoB,CAkB7Br+b,KAKEs+b,GAAwB,SAAUxkc,GAElC,SAASwkc,IACL,OAAkB,OAAXxkc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAUslc,EAAQxkc,GAIlBR,GAAW,CACP3B,YAAS,KACV2mc,EAAOzne,UAAW,YAAQ,GAC7ByiC,GAAW,CACP3B,YAAS,KACV2mc,EAAOzne,UAAW,aAAS,GAC9ByiC,GAAW,CACP3B,YAAS,KACV2mc,EAAOzne,UAAW,WAAO,GAC5ByiC,GAAW,CACP3B,YAAS,KACV2mc,EAAOzne,UAAW,cAAU,GACxByne,EAjBiB,CAkB1Bt+b,KAKEu+b,GAAkC,SAAUzkc,GAE5C,SAASykc,IACL,OAAkB,OAAXzkc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAUulc,EAAkBzkc,GAI5BR,GAAW,CACP3B,YAAS,IACV4mc,EAAiB1ne,UAAW,YAAQ,GACvCyiC,GAAW,CACP3B,YAAS,IACV4mc,EAAiB1ne,UAAW,aAAS,GACxCyiC,GAAW,CACP3B,YAAS,IACV4mc,EAAiB1ne,UAAW,WAAO,GACtCyiC,GAAW,CACP3B,YAAS,IACV4mc,EAAiB1ne,UAAW,cAAU,GAClC0ne,EAjB2B,CAkBpCv+b,KAKEnG,GAA2B,SAAUC,GAErC,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUa,EAAWC,GAIrBR,GAAW,CACP3B,aAAS,IACVkC,EAAUhjC,UAAW,cAAU,GAClCyiC,GAAW,CACP3B,YAAS,MACVkC,EAAUhjC,UAAW,gBAAY,GACpCyiC,GAAW,CACP3B,YAAS,IACVkC,EAAUhjC,UAAW,aAAS,GAC1BgjC,EAdoB,CAe7BmG,KAOEw+b,GAAyB,SAAU1kc,GAEnC,SAAS0kc,IACL,OAAkB,OAAX1kc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAUwlc,EAAS1kc,GAInBR,GAAW,CACP3B,YAAS,IACV6mc,EAAQ3ne,UAAW,cAAU,GAChCyiC,GAAW,CACP3B,YAAS,IACV6mc,EAAQ3ne,UAAW,aAAS,GACxB2ne,EAXkB,CAY3Bx+b,KAKEy+b,GAA8B,SAAU3kc,GAExC,SAAS2kc,IACL,OAAkB,OAAX3kc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAUylc,EAAc3kc,GAIxBR,GAAW,CACP3B,YAAS,IACV8mc,EAAa5ne,UAAW,eAAW,GACtCyiC,GAAW,CACP3B,YAAS,IACV8mc,EAAa5ne,UAAW,gBAAY,GACvCyiC,GAAW,CACP3B,YAAS,IACV8mc,EAAa5ne,UAAW,kBAAc,GACzCyiC,GAAW,CACP3B,YAAS,IACV8mc,EAAa5ne,UAAW,mBAAe,GACnC4ne,EAjBuB,CAkBhCz+b,KAKEgzC,GACA,SAAe0rZ,EAAaC,GACxBhke,KAAKike,OAASF,EACd/je,KAAKo3C,MAAQ4sb,GAQjBE,GAAoC,SAAU/kc,GAE9C,SAAS+kc,IACL,OAAkB,OAAX/kc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAU6lc,EAAoB/kc,GAI9BR,GAAW,CACP3B,YAAS,OACVknc,EAAmBhoe,UAAW,YAAQ,GACzCyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,cAAejmC,MAAO,GAAK0sT,KAC7C8nI,EAAmBhoe,UAAW,cAAU,GAC3CyiC,GAAW,CACP3B,YAAS,QACVknc,EAAmBhoe,UAAW,YAAQ,GAClCgoe,EAd6B,CAetC7+b,KAKE8+b,GAA8B,SAAUhlc,GAExC,SAASglc,IACL,OAAkB,OAAXhlc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAU8lc,EAAchlc,GAIxBR,GAAW,CACP3B,aAAS,IACVmnc,EAAajoe,UAAW,cAAU,GACrCyiC,GAAW,CACP3B,YAAS,OACVmnc,EAAajoe,UAAW,YAAQ,GACnCyiC,GAAW,CACP3B,YAAS,OACVmnc,EAAajoe,UAAW,YAAQ,GACnCyiC,GAAW,CACP3B,YAAS,OACVmnc,EAAajoe,UAAW,YAAQ,GAC5Bioe,EAjBuB,CAkBhC9+b,KAOE++b,GAAiC,SAAUjlc,GAE3C,SAASilc,IACL,OAAkB,OAAXjlc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA4C/D,OA9CAq+B,GAAU+lc,EAAiBjlc,GAI3BR,GAAW,CACP3B,aAAS,IACVonc,EAAgBloe,UAAW,cAAU,GACxCyiC,GAAW,CACP3B,aAAS,IACVonc,EAAgBloe,UAAW,oBAAgB,GAC9CyiC,GAAW,CACP3B,aAAS,IACVonc,EAAgBloe,UAAW,cAAU,GACxCyiC,GAAW,CACP3B,YAAS,OACVonc,EAAgBloe,UAAW,YAAQ,GACtCyiC,GAAW,CACP3B,YAAS,OACVonc,EAAgBloe,UAAW,cAAU,GACxCyiC,GAAW,CACP3B,YAAS,MACVonc,EAAgBloe,UAAW,eAAW,GACzCyiC,GAAW,CACPvB,YAAQ6gD,GAAMklZ,iBAAkBrmZ,KACjCsnZ,EAAgBloe,UAAW,iBAAa,GAC3CyiC,GAAW,CACP3B,YAAS,OACVonc,EAAgBloe,UAAW,cAAU,GACxCyiC,GAAW,CACP3B,YAAS,OACVonc,EAAgBloe,UAAW,gBAAY,GAC1CyiC,GAAW,CACP3B,aAAS,IACVonc,EAAgBloe,UAAW,uBAAmB,GACjDyiC,GAAW,CACP3B,YAAS,MACVonc,EAAgBloe,UAAW,gBAAY,GAC1CyiC,GAAW,CACP3B,YAAS,MACVonc,EAAgBloe,UAAW,uBAAmB,GACjDyiC,GAAW,CACP3B,aAAS,IACVonc,EAAgBloe,UAAW,sBAAkB,GAChDyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,IAAO0sT,KAC3CgoI,EAAgBloe,UAAW,cAAU,GACjCkoe,EA/C0B,CAgDnC/+b,KAKEg/b,GAAyB,SAAUllc,GAEnC,SAASklc,IACL,OAAkB,OAAXllc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAUgmc,EAASllc,GAInBR,GAAW,CACP3B,YAAS,UACVqnc,EAAQnoe,UAAW,oBAAgB,GACtCyiC,GAAW,CACP3B,YAAS,IACVqnc,EAAQnoe,UAAW,gBAAY,GAClCyiC,GAAW,CACP3B,YAAS,OACVqnc,EAAQnoe,UAAW,YAAQ,GAC9ByiC,GAAW,CACP3B,aAAS,IACVqnc,EAAQnoe,UAAW,gBAAY,GAC3Bmoe,EAjBkB,CAkB3Bh/b,KClXEi/b,IDuXwC,SAAUnlc,GAElD,SAASolc,IACL,OAAkB,OAAXplc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAF/Dq+B,GAAUkmc,EAAwBplc,GAIlCR,GAAW,CACP3B,YAAS,KACVunc,EAAuBroe,UAAW,cAAU,GAC/CyiC,GAAW,CACP3B,YAAS,WACVunc,EAAuBroe,UAAW,gBAAY,GACjDyiC,GAAW,CACPtB,YAAW,GAAIgnc,KAChBE,EAAuBroe,UAAW,eAAW,GAbR,CAe1CmpC,KCtY+B,WAE7B,SAASi/b,EAAYE,GAEjBxke,KAAKyke,QAAU,6BACfzke,KAAK0ke,OAASF,EAmYlB,OA/XAF,EAAYpoe,UAAU25R,eAAiB,SAAUvpR,EAAStP,GACtD,OAAOsP,EAAQtP,IAQnBsne,EAAYpoe,UAAUyoe,UAAY,SAAUr4d,GAUxC,OATIlP,YAAkBkP,EAAQmN,MAC1BnN,EAAQmN,GAAKzZ,KAAK0ke,OAAS,QAE/B1ke,KAAK4ke,OAASpke,SAASuuB,eAAeziB,EAAQmN,IAC1Crc,YAAkBoD,SAASuuB,eAAeziB,EAAQmN,OAClDzZ,KAAK4ke,OAASpke,SAASm1B,gBAAgB31B,KAAKyke,QAAS,QAEzDzke,KAAK4ke,OAAS5ke,KAAK6ke,qBAAqBv4d,EAAStM,KAAK4ke,QACtD5ke,KAAK8ke,WAAWx4d,EAAQojC,MAAOpjC,EAAQqjC,QAChC3vC,KAAK4ke,QAGhBN,EAAYpoe,UAAU4oe,WAAa,SAAUp1b,EAAOC,GAChD,IAAI3uC,EAAUR,SAASuuB,eAAe/uB,KAAK0ke,QACvCloZ,EAAQp/E,YAAkB4D,GAA6C,KAAlCA,EAAQqhC,wBAC7CjlC,YAAkB4C,KAAK0vC,QAAU1vC,KAAK0vC,OAAS,EAC/C1vC,KAAK4ke,OAAOhvc,aAAa,QAAS8Z,EAAQA,EAAMviC,WAAaqvE,EAAK9sC,MAAMviC,YAGxEnN,KAAK4ke,OAAOhvc,aAAa,QAAS51B,KAAK0vC,MAAMviC,YAE7C/P,YAAkB4C,KAAK2vC,SAAW3vC,KAAK2vC,QAAU,EACjD3vC,KAAK4ke,OAAOhvc,aAAa,SAAU+Z,EAASA,EAAOxiC,WAAa,OAGhEnN,KAAK4ke,OAAOhvc,aAAa,SAAU51B,KAAK2vC,OAAOxiC,aASvDm3d,EAAYpoe,UAAU8oa,SAAW,SAAU14Z,GACvC,IAAIgnF,EAAO9yF,SAASuuB,eAAeziB,EAAQmN,IAK3C,OAJa,OAAT65E,IACAA,EAAO9yF,SAASm1B,gBAAgB31B,KAAKyke,QAAS,SAElDnxY,EAAOtzF,KAAK6ke,qBAAqBv4d,EAASgnF,IAS9CgxY,EAAYpoe,UAAUiia,SAAW,SAAU7xZ,GACvC,IAAIimQ,EAAO/xQ,SAASuuB,eAAeziB,EAAQmN,IAK3C,OAJa,OAAT84P,IACAA,EAAO/xQ,SAASm1B,gBAAgB31B,KAAKyke,QAAS,SAElDlyN,EAAOvyQ,KAAK6ke,qBAAqBv4d,EAASimQ,IAS9C+xN,EAAYpoe,UAAUmia,cAAgB,SAAU/xZ,GAC5C,IAAI4gY,EAAY1sY,SAASuuB,eAAeziB,EAAQmN,IAKhD,OAJkB,OAAdyzX,IACAA,EAAY1sY,SAASm1B,gBAAgB31B,KAAKyke,QAAS,SAEvDv3F,EAAYltY,KAAK6ke,qBAAqBv4d,EAAS4gY,IASnDo3F,EAAYpoe,UAAU6oe,WAAa,SAAUz4d,GACzC,IAAI04d,EAASxke,SAASuuB,eAAeziB,EAAQmN,IAK7C,OAJe,OAAXurd,IACAA,EAASxke,SAASm1B,gBAAgB31B,KAAKyke,QAAS,WAEpDO,EAAShle,KAAK6ke,qBAAqBv4d,EAAS04d,IAShDV,EAAYpoe,UAAU+oe,aAAe,SAAU34d,GAC3C,IAAI44d,EAAW1ke,SAASuuB,eAAeziB,EAAQmN,IAK/C,OAJiB,OAAbyrd,IACAA,EAAW1ke,SAASm1B,gBAAgB31B,KAAKyke,QAAS,aAEtDS,EAAWlle,KAAK6ke,qBAAqBv4d,EAAS44d,IASlDZ,EAAYpoe,UAAUipe,YAAc,SAAU74d,GAC1C,IAAI84d,EAAU5ke,SAASuuB,eAAeziB,EAAQmN,IAK9C,OAJgB,OAAZ2rd,IACAA,EAAU5ke,SAASm1B,gBAAgB31B,KAAKyke,QAAS,YAErDW,EAAUple,KAAK6ke,qBAAqBv4d,EAAS84d,IASjDd,EAAYpoe,UAAUmpe,YAAc,SAAU/4d,GAC1C,IAAIg5d,EAAU9ke,SAASuuB,eAAeziB,EAAQmN,IAK9C,OAJgB,OAAZ6rd,IACAA,EAAU9ke,SAASm1B,gBAAgB31B,KAAKyke,QAAS,YAErDa,EAAUtle,KAAK6ke,qBAAqBv4d,EAASg5d,IASjDhB,EAAYpoe,UAAU6ia,UAAY,SAAUzyZ,GACxC,IAAImtW,EAAMj5W,SAASm1B,gBAAgB31B,KAAKyke,QAAS,SAcjD,OAbAhrH,EAAI8rH,eAAe,KAAM,SAAUj5d,EAAQqjC,OAAOxiC,YAClDssW,EAAI8rH,eAAe,KAAM,QAASj5d,EAAQojC,MAAMviC,YAChDssW,EAAI8rH,eAAe,+BAAgC,OAAQj5d,EAAQ28B,MACnEwwU,EAAI8rH,eAAe,KAAM,IAAKj5d,EAAQiV,EAAEpU,YACxCssW,EAAI8rH,eAAe,KAAM,IAAKj5d,EAAQgK,EAAEnJ,YACxCssW,EAAI8rH,eAAe,KAAM,KAAMj5d,EAAQmN,IACvCggW,EAAI8rH,eAAe,KAAM,aAAcj5d,EAAQkqB,YAC1Cp5B,YAAkB4C,KAAK61R,eAAevpR,EAAS,eAChDmtW,EAAI8rH,eAAe,KAAM,YAAavle,KAAK61R,eAAevpR,EAAS,cAElElP,YAAkBkP,EAAQk5d,sBAC3B/rH,EAAI8rH,eAAe,KAAM,sBAAuBj5d,EAAQk5d,qBAErD/rH,GASX6qH,EAAYpoe,UAAUupe,WAAa,SAAUn5d,EAASmpE,GAClD,IAAIljE,EAAO/R,SAASm1B,gBAAgB31B,KAAKyke,QAAS,QAKlD,OAJAlyd,EAAOvS,KAAK6ke,qBAAqBv4d,EAASiG,GACrCnV,YAAkBq4E,KACnBljE,EAAK8jF,YAAc5gB,GAEhBljE,GASX+xd,EAAYpoe,UAAUwpe,YAAc,SAAUp5d,EAASmpE,GACnD,IAAIkwZ,EAAQnle,SAASm1B,gBAAgB31B,KAAKyke,QAAS,SAKnD,OAJAkB,EAAQ3le,KAAK6ke,qBAAqBv4d,EAASq5d,GACtCvoe,YAAkBq4E,KACnBkwZ,EAAMtvY,YAAc5gB,GAEjBkwZ,GAQXrB,EAAYpoe,UAAU0pe,YAAc,SAAUrzd,GAC1C,IAAI60I,EAAQ5mJ,SAASm1B,gBAAgB31B,KAAKyke,QAAS,SAEnD,OADAr9U,EAAM/wD,YAAc9jF,EACb60I,GAOXk9U,EAAYpoe,UAAU2pe,WAAa,WAE/B,OADWrle,SAASm1B,gBAAgB31B,KAAKyke,QAAS,SAStDH,EAAYpoe,UAAU4pe,eAAiB,SAAUx5d,GAC7C,IAAI4gX,EAAW1sX,SAASm1B,gBAAgB31B,KAAKyke,QAAS,YAEtD,OADAv3G,EAAWltX,KAAK6ke,qBAAqBv4d,EAAS4gX,IASlDo3G,EAAYpoe,UAAU6pe,oBAAsB,SAAUz5d,GAClD,IAAI05d,EAAgBxle,SAASm1B,gBAAgB31B,KAAKyke,QAAS,iBAE3D,OADAuB,EAAgBhme,KAAK6ke,qBAAqBv4d,EAAS05d,IASvD1B,EAAYpoe,UAAU+pe,YAAc,SAAU35d,GAC1C,IAAIy7E,EAAQvnF,SAASm1B,gBAAgB31B,KAAKyke,QAAS,KAEnD,OADA18Y,EAAQ/nF,KAAK6ke,qBAAqBv4d,EAASy7E,IAU/Cu8Y,EAAYpoe,UAAUgqe,cAAgB,SAAU55d,EAAStL,GACrD,IAAIuK,EAAU/K,SAASm1B,gBAAgB31B,KAAKyke,QAASzje,GAErD,OADAuK,EAAUvL,KAAK6ke,qBAAqBv4d,EAASf,IAWjD+4d,EAAYpoe,UAAUiqe,qBAAuB,SAAU/hN,EAAQhqQ,EAAM9N,GACjE,IAAI85d,EACJ,GAAKhpe,YAAkBgnR,EAAO,GAAGiiN,WAa7BD,EAAYhiN,EAAO,GAAGzuM,MAAMxoE,eAba,CACzC,IAAIm5d,EAAa,CACb,GAAMtme,KAAK0ke,OAAS,IAAMtqd,EAAO,iBACjC,GAAM9N,EAAQgzQ,GAAK,IACnB,GAAMhzQ,EAAQi6d,GAAK,IACnB,EAAKj6d,EAAQwyB,EAAI,IACjB,GAAMxyB,EAAQk6d,GAAK,IACnB,GAAMl6d,EAAQm6d,GAAK,KAEvBzme,KAAK0me,aAAa,iBAAkBJ,EAAYliN,GAChDgiN,EAAY,QAAUpme,KAAK0ke,OAAS,IAAMtqd,EAAO,kBAKrD,OAAOgsd,GAUX9B,EAAYpoe,UAAUyqe,qBAAuB,SAAUviN,EAAQhqQ,EAAM9N,GACjE,IAAI85d,EACJ,GAAKhpe,YAAkBgnR,EAAO,GAAGiiN,WAY7BD,EAAYhiN,EAAO,GAAGzuM,MAAMxoE,eAZa,CACzC,IAAIm5d,EAAa,CACb,GAAMtme,KAAK0ke,OAAS,IAAMtqd,EAAO,iBACjC,GAAM9N,EAAQuvE,GAAK,IACnB,GAAMvvE,EAAQyvE,GAAK,IACnB,GAAMzvE,EAAQ2vE,GAAK,IACnB,GAAM3vE,EAAQ6vE,GAAK,KAEvBn8E,KAAK0me,aAAa,iBAAkBJ,EAAYliN,GAChDgiN,EAAY,QAAUpme,KAAK0ke,OAAS,IAAMtqd,EAAO,kBAKrD,OAAOgsd,GAUX9B,EAAYpoe,UAAUwqe,aAAe,SAAUE,EAAct6d,EAAS83Q,GAClE,IAAIyiN,EAAO7me,KAAK6le,aACZiB,EAAWtme,SAASm1B,gBAAgB31B,KAAKyke,QAASmC,GACtDE,EAAW9me,KAAK6ke,qBAAqBv4d,EAASw6d,GAC9C,IAAK,IAAIlqe,EAAI,EAAGA,EAAIwnR,EAAOvnR,OAAQD,IAAK,CACpC,IAAImqe,EAASvme,SAASm1B,gBAAgB31B,KAAKyke,QAAS,QACpDsC,EAAOnxc,aAAa,SAAUwuP,EAAOxnR,GAAGype,WACxCU,EAAOnxc,aAAa,aAAcwuP,EAAOxnR,GAAG+4E,OAC5CoxZ,EAAOnxc,aAAa,eAAgBwuP,EAAOxnR,GAAG+mC,QAAWygP,EAAOxnR,GAAG+mC,QAAW,KACzEvmC,YAAkBgnR,EAAOxnR,GAAGo3B,QAC7B+yc,EAAOnxc,aAAa,QAASwuP,EAAOxnR,GAAGo3B,OAE3C8yc,EAAS9ke,YAAY+ke,GAGzB,OADAF,EAAK7ke,YAAY8ke,GACVD,GAQXvC,EAAYpoe,UAAU8qe,aAAe,SAAU16d,GAC3C,IAAIu6d,EAAO7me,KAAK6le,aACZ34G,EAAWltX,KAAK8le,eAAe,CAAE,GAAMx5d,EAAQmN,KACnDnN,EAAQmN,GAAKnN,EAAQmN,GAAK,QAC1B,IAAIy2B,EAAOlwC,KAAKq+Z,cAAc/xZ,GAG9B,OAFA4gX,EAASlrX,YAAYkuC,GACrB22b,EAAK7ke,YAAYkrX,GACV25G,GAQXvC,EAAYpoe,UAAU+qe,qBAAuB,SAAU36d,GACnD,IAAIu6d,EAAO7me,KAAK6le,aACZ34G,EAAWltX,KAAK8le,eAAe,CAAE,GAAMx5d,EAAQmN,KACnDnN,EAAQmN,GAAKnN,EAAQmN,GAAK,UAC1B,IAAIurd,EAAShle,KAAK+ke,WAAWz4d,GAG7B,OAFA4gX,EAASlrX,YAAYgje,GACrB6B,EAAK7ke,YAAYkrX,GACV25G,GASXvC,EAAYpoe,UAAU2oe,qBAAuB,SAAUv4d,EAAStL,GAE5D,IADA,IAAI/D,EAAOiB,OAAOjB,KAAKqP,GACd1P,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAC7BoE,EAAQ40B,aAAa34B,EAAKL,GAAI0P,EAAQrP,EAAKL,KAE/C,OAAOoE,GAMXsje,EAAYpoe,UAAUgre,aAAe,WACjC,OAAO,MAEJ5C,EAxYsB,ICI7B6C,GAAgC,WAEhC,SAASA,EAAe3C,GACpBxke,KAAK0ke,OAASF,EAwflB,OApfA2C,EAAejre,UAAU25R,eAAiB,SAAUvpR,EAAStP,GACzD,OAAOsP,EAAQtP,IASnBmqe,EAAejre,UAAUgre,aAAe,SAAU56d,GAC9C,IAAI86d,EAAY5me,SAASW,cAAc,UAKvC,OAJAime,EAAUxxc,aAAa,KAAM51B,KAAK0ke,OAAS,WAC3C1ke,KAAKqne,IAAMD,EAAUE,WAAW,MAChCtne,KAAKone,UAAYA,EACjBpne,KAAKune,cAAcj7d,EAAQojC,MAAOpjC,EAAQqjC,QACnC3vC,KAAKone,WAShBD,EAAejre,UAAUqre,cAAgB,SAAU73b,EAAOC,GACtD,IAAI3uC,EAAUR,SAASuuB,eAAe/uB,KAAK0ke,QACvCloZ,EAAQp/E,YAAkB4D,GAA6C,KAAlCA,EAAQqhC,wBAC7CjlC,YAAkB4C,KAAK0vC,OACvB1vC,KAAKone,UAAUxxc,aAAa,QAAS8Z,EAAQA,EAAMviC,WAAaqvE,EAAK9sC,MAAMviC,YAG3EnN,KAAKone,UAAUxxc,aAAa,QAAS51B,KAAK0vC,MAAMviC,YAEhD/P,YAAkB4C,KAAK2vC,QACvB3vC,KAAKone,UAAUxxc,aAAa,SAAU+Z,EAASA,EAAOxiC,WAAa,OAGnEnN,KAAKone,UAAUxxc,aAAa,SAAU51B,KAAK2vC,OAAOxiC,aAI1Dg6d,EAAejre,UAAU8nG,cAAgB,SAAU13F,GAC/CtM,KAAKqne,IAAI38F,UAAY1qY,KAAK61R,eAAevpR,EAAS,gBAClD,IAAIk7d,EAAYxne,KAAK61R,eAAevpR,EAAS,oBAC7C,IAAKlP,YAAkBoqe,GAAY,CAC/B,IAAIC,EAAkBD,EAAU7qe,MAAM,KACtCqD,KAAKqne,IAAIK,YAAY,CAACvxd,SAASsxd,EAAgB,GAAI,IAAKtxd,SAASsxd,EAAgB,GAAI,MAEzFzne,KAAKqne,IAAIM,YAAc3ne,KAAK61R,eAAevpR,EAAS,WAQxD66d,EAAejre,UAAUiia,SAAW,SAAU7xZ,GAC1CtM,KAAKqne,IAAIrpO,OACTh+P,KAAKqne,IAAI78G,YACTxqX,KAAKqne,IAAI38F,UAAY1qY,KAAK61R,eAAevpR,EAAS,gBAClDtM,KAAKqne,IAAIM,YAAcr7d,EAAQo+W,OAC/B1qX,KAAKqne,IAAInlV,OAAO51I,EAAQuvE,GAAIvvE,EAAQyvE,IACpC/7E,KAAKqne,IAAIO,OAAOt7d,EAAQ2vE,GAAI3vE,EAAQ6vE,IACpCn8E,KAAKqne,IAAI38G,SACT1qX,KAAKqne,IAAIh0F,WASb8zF,EAAejre,UAAUmia,cAAgB,SAAU/xZ,EAASu7d,GACxD,IAAIC,EAAY9ne,KAAKqne,IACjBU,EAAez7d,EAAQu6Z,GAsB3B,OArBA7ma,KAAKqne,IAAIrpO,OACTh+P,KAAKqne,IAAI78G,YACLq9G,GACA7ne,KAAKqne,IAAIx0I,UAAUg1I,EAAgB,GAAIA,EAAgB,IAE3D7ne,KAAKqne,IAAIW,YAAchoe,KAAK61R,eAAevpR,EAAS,WACpDtM,KAAKgkG,cAAc13F,GACnBtM,KAAKqne,IAAIn3b,KAAK5jC,EAAQiV,EAAGjV,EAAQgK,EAAGhK,EAAQojC,MAAOpjC,EAAQqjC,QACtC,OAAjBo4b,GAAyBA,GAAgB,EACzC/ne,KAAKioe,iBAAiB37d,IAGD,SAAjBA,EAAQ8vL,OACR9vL,EAAQ8vL,KAAO,eAEnBp8L,KAAKqne,IAAIa,UAAY57d,EAAQ8vL,KAC7Bp8L,KAAKqne,IAAIc,SAAS77d,EAAQiV,EAAGjV,EAAQgK,EAAGhK,EAAQojC,MAAOpjC,EAAQqjC,QAC/D3vC,KAAKqne,IAAI38G,UAEb1qX,KAAKqne,IAAIh0F,UACTrzY,KAAKqne,IAAMS,EACH9ne,KAAKone,WAGjBD,EAAejre,UAAU+re,iBAAmB,SAAU37d,GAClD,IAAIy7d,EAAez7d,EAAQu6Z,GACvBtlZ,EAAIjV,EAAQiV,EACZjL,EAAIhK,EAAQgK,EACZo5B,EAAQpjC,EAAQojC,MAChBC,EAASrjC,EAAQqjC,OACA,SAAjBrjC,EAAQ8vL,OACR9vL,EAAQ8vL,KAAO,eAEnBp8L,KAAKqne,IAAIa,UAAY57d,EAAQ8vL,KACzB1sJ,EAAQ,EAAIq4b,IACZA,EAAer4b,EAAQ,GAEvBC,EAAS,EAAIo4b,IACbA,EAAep4b,EAAS,GAE5B3vC,KAAKqne,IAAI78G,YACTxqX,KAAKqne,IAAInlV,OAAO3gI,EAAImuB,EAAQq4b,EAAczxd,GAC1CtW,KAAKqne,IAAIe,MAAM7md,EAAImuB,EAAOp5B,EAAGiL,EAAImuB,EAAOp5B,EAAIq5B,EAAQo4b,GACpD/ne,KAAKqne,IAAIe,MAAM7md,EAAImuB,EAAOp5B,EAAIq5B,EAAQpuB,EAAGjL,EAAIq5B,EAAQo4b,GACrD/ne,KAAKqne,IAAIe,MAAM7md,EAAGjL,EAAIq5B,EAAQpuB,EAAGjL,EAAGyxd,GACpC/ne,KAAKqne,IAAIe,MAAM7md,EAAGjL,EAAGiL,EAAImuB,EAAOp5B,EAAGyxd,GACnC/ne,KAAKqne,IAAI37G,YACT1rX,KAAKqne,IAAIjrS,OACTp8L,KAAKqne,IAAI38G,UASby8G,EAAejre,UAAU8oa,SAAW,SAAU14Z,EAASu7d,GACnD,IACIQ,EADO/7d,EAAQzE,EACElL,MAAM,KACvB4tC,EAAcvqC,KAAK61R,eAAevpR,EAAS,gBAC3Cw7d,EAAY9ne,KAAKqne,IACjB1zd,GAAO,EACX3T,KAAKqne,IAAIrpO,OACTh+P,KAAKqne,IAAI78G,YACLq9G,GACA7ne,KAAKqne,IAAIx0I,UAAUg1I,EAAgB,GAAIA,EAAgB,IAE3D7ne,KAAKqne,IAAIW,YAAc17d,EAAQq3B,QAAUr3B,EAAQq3B,QAAU3jC,KAAK61R,eAAevpR,EAAS,gBACxFtM,KAAKgkG,cAAc13F,GACnB,IAAK,IAAI1P,EAAI,EAAGA,EAAIyre,EAAUxre,OAAQD,GAAQ,EAAG,CAC7C,IAAIi/E,EAAK9iE,WAAWsvd,EAAUzre,EAAI,IAC9Bm/E,EAAKhjE,WAAWsvd,EAAUzre,EAAI,IAClC,OAAQyre,EAAUzre,IACd,IAAK,IACI0P,EAAQg8d,QAAWh8d,EAAQgzQ,IAC5Bt/Q,KAAKqne,IAAInlV,OAAOrmE,EAAIE,GAExB,MACJ,IAAK,IACIzvE,EAAQg8d,QACTtoe,KAAKqne,IAAIO,OAAO/rZ,EAAIE,GAExB,MACJ,IAAK,IACD,IAAIwsZ,EAAKxvd,WAAWsvd,EAAUzre,EAAI,IAC9B4re,EAAKzvd,WAAWsvd,EAAUzre,EAAI,IAClCoD,KAAKqne,IAAIoB,iBAAiB5sZ,EAAIE,EAAIwsZ,EAAIC,GACtC5re,GAAQ,EACR,MACJ,IAAK,IACD,IAAI8re,EAAK3vd,WAAWsvd,EAAUzre,EAAI,IAC9B+re,EAAK5vd,WAAWsvd,EAAUzre,EAAI,IAC9Bgse,EAAK7vd,WAAWsvd,EAAUzre,EAAI,IAC9Bise,EAAK9vd,WAAWsvd,EAAUzre,EAAI,IAClCoD,KAAKqne,IAAIyB,cAAcjtZ,EAAIE,EAAI2sZ,EAAIC,EAAIC,EAAIC,GAC3Cjse,GAAQ,EACR,MACJ,IAAK,IACI0P,EAAQg8d,OAUJ30d,IACL3T,KAAKqne,IAAI0B,IAAIz8d,EAAQiV,EAAGjV,EAAQgK,EAAGhK,EAAQ42B,OAAQ52B,EAAQpP,MAAOoP,EAAQqM,IAAKrM,EAAQ08d,kBACvFhpe,KAAKqne,IAAI0B,IAAIz8d,EAAQiV,EAAGjV,EAAQgK,EAAGhK,EAAQg8d,OAAQh8d,EAAQqM,IAAKrM,EAAQpP,OAAQoP,EAAQ08d,kBACxFr1d,GAAO,GAZHrH,EAAQgzQ,GACRt/Q,KAAKqne,IAAI0B,IAAIz8d,EAAQgzQ,GAAIhzQ,EAAQi6d,GAAIj6d,EAAQ42B,OAAQ,EAAG,EAAI37B,KAAK6pY,GAAI9kY,EAAQ08d,mBAG7Ehpe,KAAKqne,IAAInlV,OAAO51I,EAAQiV,EAAGjV,EAAQgK,GACnCtW,KAAKqne,IAAI0B,IAAIz8d,EAAQiV,EAAGjV,EAAQgK,EAAGhK,EAAQ42B,OAAQ52B,EAAQpP,MAAOoP,EAAQqM,IAAKrM,EAAQ08d,kBACvFhpe,KAAKqne,IAAIO,OAAOt7d,EAAQiV,EAAGjV,EAAQgK,IAQ3C1Z,GAAQ,EACR,MACJ,IAAK,IACL,IAAK,IACDoD,KAAKqne,IAAI37G,YAET9uX,GAAQ,GAapB,MATqB,SAAjB0P,EAAQ8vL,WAAoCpgM,IAAjBsQ,EAAQ8vL,OACnCp8L,KAAKqne,IAAIa,UAAY57d,EAAQ8vL,KAC7Bp8L,KAAKqne,IAAIjrS,QAET7xJ,EAAc,GACdvqC,KAAKqne,IAAI38G,SAEb1qX,KAAKqne,IAAIh0F,UACTrzY,KAAKqne,IAAMS,EACJ9ne,KAAKone,WAahBD,EAAejre,UAAUupe,WAAa,SAAUn5d,EAASmpE,EAAOwzZ,EAAQC,EAAQC,EAAIC,GAChF,IAAI/wN,EAAar4Q,KAAK61R,eAAevpR,EAAS,eACzClP,YAAkBi7Q,IAA4C,YAA7BA,EAAW5gQ,gBAC7C4gQ,EAAa,UAEjB,IAAIxiM,EAAW71E,KAAK61R,eAAevpR,EAAS,aACxCspE,EAAa51E,KAAK61R,eAAevpR,EAAS,eAE1CuwE,EADY78E,KAAK61R,eAAevpR,EAAS,cAAcmL,cACnC,IAAM4gQ,EAAa,IAAMxiM,EAAW,IAAMD,EAC9Dg1B,EAAS5qG,KAAK61R,eAAevpR,EAAS,eACtCq3B,OAA8B3nC,IAApBsQ,EAAQq3B,QAAwBr3B,EAAQq3B,QAAU,EAYhE,GAXe,WAAXinE,IACAA,EAAS,UAEb5qG,KAAKqne,IAAIrpO,OACTh+P,KAAKqne,IAAIa,UAAY57d,EAAQ8vL,KAC7Bp8L,KAAKqne,IAAIxqZ,KAAOA,EAChB78E,KAAKqne,IAAIljY,UAAYyG,EACrB5qG,KAAKqne,IAAIW,YAAcrkc,EACnBr3B,EAAQ+8d,WACRrpe,KAAKqne,IAAIiC,aAAeh9d,EAAQ+8d,WAE/BD,EAAS,CAEVppe,KAAKqne,IAAIx0I,UAAUvmV,EAAQiV,EAAKgod,GAAiBN,GAAkB,GAAI38d,EAAQgK,GAAK4yd,GAAkB,IACtGlpe,KAAKqne,IAAI93G,OAAOjjX,EAAQk9d,cAAgBjie,KAAK6pY,GAAK,KAItD,OAFApxY,KAAKqne,IAAIoC,SAASh0Z,EAAO2zZ,EAAU98d,EAAQiV,EAAI,EAAG6nd,EAAUD,EAAK,GACjEnpe,KAAKqne,IAAIh0F,UACFrzY,KAAKone,WAShBD,EAAejre,UAAU6oe,WAAa,SAAUz4d,EAASu7d,GACrD,IAAIC,EAAY9ne,KAAKqne,IAcrB,OAbArne,KAAKqne,IAAIrpO,OACTh+P,KAAKqne,IAAI78G,YACTxqX,KAAKqne,IAAI0B,IAAIz8d,EAAQgzQ,GAAIhzQ,EAAQi6d,GAAIj6d,EAAQwyB,EAAG,EAAG,EAAIv3B,KAAK6pY,IAC5DpxY,KAAKqne,IAAIa,UAAY57d,EAAQ8vL,KAC7Bp8L,KAAKqne,IAAIW,YAAc17d,EAAQq3B,QAC/B3jC,KAAKqne,IAAIjrS,OACLyrS,GACA7ne,KAAKqne,IAAIx0I,UAAUg1I,EAAgB,GAAIA,EAAgB,IAE3D7ne,KAAKgkG,cAAc13F,GACnBtM,KAAKqne,IAAI38G,SACT1qX,KAAKqne,IAAIh0F,UACTrzY,KAAKqne,IAAMS,EACJ9ne,KAAKone,WAQhBD,EAAejre,UAAU+oe,aAAe,SAAU34d,GAC9CtM,KAAKqne,IAAIrpO,OACTh+P,KAAKqne,IAAI78G,YAET,IADA,IAAI7uS,EAASrvE,EAAQqvE,OAAOh/E,MAAM,KACzBC,EAAI,EAAGA,EAAI++E,EAAO9+E,OAAS,EAAGD,IAAK,CACxC,IAAIw6C,EAAQukC,EAAO/+E,GAAGD,MAAM,KACxB4kB,EAAIxI,WAAWq+B,EAAM,IACrB9gC,EAAIyC,WAAWq+B,EAAM,IACf,IAANx6C,EACAoD,KAAKqne,IAAInlV,OAAO3gI,EAAGjL,GAGnBtW,KAAKqne,IAAIO,OAAOrmd,EAAGjL,GAG3BtW,KAAKqne,IAAI38F,UAAY1qY,KAAK61R,eAAevpR,EAAS,gBAClDtM,KAAKqne,IAAIM,YAAcr7d,EAAQo+W,OAC/B1qX,KAAKqne,IAAI38G,SACT1qX,KAAKqne,IAAIh0F,WASb8zF,EAAejre,UAAUipe,YAAc,SAAU74d,EAASu7d,GACtD,IAAIC,EAAY9ne,KAAKqne,IACjBqC,EAAgBnie,KAAK8L,IAAI/G,EAAQu6Z,GAAIv6Z,EAAQw6Z,IAC7Cx1B,EAAShlY,EAAQu6Z,GAAK6iE,EACtBn4F,EAASjlY,EAAQw6Z,GAAK4iE,EAC1B1pe,KAAKqne,IAAIrpO,OACTh+P,KAAKqne,IAAI78G,YACTxqX,KAAKqne,IAAIx0I,UAAUvmV,EAAQgzQ,GAAIhzQ,EAAQi6d,IACnCsB,GACA7ne,KAAKqne,IAAIx0I,UAAUg1I,EAAgB,GAAIA,EAAgB,IAE3D7ne,KAAKqne,IAAIrpO,OACTh+P,KAAKqne,IAAIrpN,MAAMszH,EAAQC,GACvBvxY,KAAKqne,IAAI0B,IAAI,EAAG,EAAGW,EAAe,EAAG,EAAInie,KAAK6pY,IAAI,GAClDpxY,KAAKqne,IAAIa,UAAY57d,EAAQ8vL,KAC7Bp8L,KAAKqne,IAAIjrS,OACTp8L,KAAKqne,IAAIh0F,UACTrzY,KAAKqne,IAAI38F,UAAY1qY,KAAK61R,eAAevpR,EAAS,gBAClDtM,KAAKqne,IAAIM,YAAcr7d,EAAQo+W,OAC/B1qX,KAAKqne,IAAI38G,SACT1qX,KAAKqne,IAAIh0F,UACTrzY,KAAKqne,IAAMS,GAQfX,EAAejre,UAAU6ia,UAAY,SAAUzyZ,GAC3CtM,KAAKqne,IAAIrpO,OACT,IAAI2rO,EAAW,IAAIntI,MACdp/V,YAAkBkP,EAAQ28B,QAC3B0gc,EAASzqe,IAAMoN,EAAQ28B,KACvBjpC,KAAKqne,IAAItoE,UAAU4qE,EAAUr9d,EAAQiV,EAAGjV,EAAQgK,EAAGhK,EAAQojC,MAAOpjC,EAAQqjC,SAE9E3vC,KAAKqne,IAAIh0F,WAQb8zF,EAAejre,UAAUyqe,qBAAuB,SAAUviN,GACtD,IAAIwlN,EAKJ,OAJKxse,YAAkBgnR,EAAO,GAAGiiN,aAC7BuD,EAAa5pe,KAAKqne,IAAIV,qBAAqB,EAAG,EAAG,EAAG3me,KAAKone,UAAUz3b,SAE3D3vC,KAAK6pe,kBAAkBzlN,EAAQwlN,IAS/CzC,EAAejre,UAAUiqe,qBAAuB,SAAU/hN,GACtD,IAAIwlN,EAKJ,OAJKxse,YAAkBgnR,EAAO,GAAGiiN,aAC7BuD,EAAa5pe,KAAKqne,IAAIlB,qBAAqB,EAAG,EAAG,EAAG,EAAG,EAAGnme,KAAKone,UAAUz3b,SAE7D3vC,KAAK6pe,kBAAkBzlN,EAAQwlN,IAInDzC,EAAejre,UAAU2te,kBAAoB,SAAUzlN,EAAQwlN,GAC3D,IAAIxD,EACJ,GAAKhpe,YAAkBgnR,EAAO,GAAGiiN,WAU7BD,EAAYhiN,EAAO,GAAGzuM,MAAMxoE,eAVa,CACzC,IAAK,IAAIvQ,EAAI,EAAGA,GAAKwnR,EAAOvnR,OAAS,EAAGD,IAAK,CACzC,IAAI+4E,EAAQyuM,EAAOxnR,GAAG+4E,MAClBm0Z,EAAgB1lN,EAAOxnR,GAAGype,UAAWhle,MAAM,GAAI,GAC/C0oe,EAAY5zd,SAAS2zd,EAAc,IAAM,IAC7CF,EAAWI,aAAaD,EAAWp0Z,GAEvCywZ,EAAYwD,EAAWz8d,WAK3B,OAAOi5d,GASXe,EAAejre,UAAU2oe,qBAAuB,SAAUv4d,EAAStL,GAG/D,IAFA,IAAI/D,EAAOiB,OAAOjB,KAAKqP,GACnBiwD,EAASr+D,OAAOjB,KAAKqP,GAAS7H,KAAI,SAAUzH,GAAO,OAAOsP,EAAQtP,MAC7DJ,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAC7BoE,EAAQ40B,aAAa34B,EAAKL,GAAI2/D,EAAO3/D,IAEzC,OAAO,MAQXuqe,EAAejre,UAAU+te,uBAAyB,SAAU39d,GACxDtM,KAAK6ke,qBAAqBv4d,EAAStM,KAAKone,WACxC,IAAIC,EAAMrne,KAAKqne,IACf,IAAKjqe,YAAkB4C,KAAKirH,SAAU,CAClC,IAAIi/W,EAAQ,IAAI1tI,MAChB0tI,EAAM1md,OAAS,WACX6jd,EAAItoE,UAAUmrE,EAAO,EAAG,IAE5BA,EAAMhre,IAAMc,KAAKirH,UAQzBk8W,EAAejre,UAAUiue,UAAY,SAAUj6b,GAC3ClwC,KAAKqne,IAAIh0F,UACTrzY,KAAKqne,IAAI8C,UAAUj6b,EAAK3uB,EAAG2uB,EAAK55B,EAAG45B,EAAKR,MAAOQ,EAAKP,SAMxDw3b,EAAejre,UAAU+pe,YAAc,WACnC,OAAO,MAOXkB,EAAejre,UAAU8qe,aAAe,WACpC,OAAO,MAOXG,EAAejre,UAAUkue,WAAa,SAAU99d,GAC5CtM,KAAKqne,IAAIrpO,OACTh+P,KAAKqne,IAAIa,UAAY,cACrBloe,KAAKqne,IAAIn3b,KAAK5jC,EAAQiV,EAAGjV,EAAQgK,EAAGhK,EAAQojC,MAAOpjC,EAAQqjC,QAC3D3vC,KAAKqne,IAAIjrS,OACTp8L,KAAKqne,IAAI77F,QAKb27F,EAAejre,UAAUmue,cAAgB,WACrCrqe,KAAKqne,IAAIh0F,WAMb8zF,EAAejre,UAAUmpe,YAAc,WACnC,OAAO,MAQX8B,EAAejre,UAAU2pe,WAAa,WAClC,OAAO,MAMXsB,EAAejre,UAAU4pe,eAAiB,WACtC,OAAO,MAQXqB,EAAejre,UAAUyoe,UAAY,WACjC,OAAO,MAEJwC,EA3fyB,GCXpC,IAAI9oc,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBtC,SAAS6rc,GAAY/3d,EAAMsqE,GAC9B,IAAI0tZ,EAAYh4d,GAAQ,GACpBi4d,EAAahqe,SAASuuB,eAAe,oBAKzC,GAJmB,OAAfy7c,IACAA,EAAarpe,YAAc,OAAQ,CAAEsY,GAAI,qBACzCjZ,SAASgiC,KAAKxgC,YAAYwoe,IAER,kBAAVj4d,IAAuBA,EAAKpU,QAAQ,MAAQ,GAAKoU,EAAKpU,QAAQ,MAAQ,GAAI,CAElF,IADA,IAAI87N,EAAY1nN,EAAK5V,MAAM,KAClBC,EAAI,EAAGA,EAAIq9N,EAAUp9N,OAAQD,KACK,IAAnCq9N,EAAUr9N,GAAGuB,QAAQ,WACrB87N,EAAUr9N,GAAKq9N,EAAUr9N,GAAGF,QAAQ,QAAS,MAGrD6V,EAAO0nN,EAAUt1N,KAAK,KAc1B,OAZA6le,EAAWpoe,UAAamoe,EAAUpse,QAAQ,SAAW,GAAKose,EAAUpse,QAAQ,UAAY,EAAKose,EAAYh4d,EACzGi4d,EAAWx2c,MAAM+Z,SAAW,QAC5By8b,EAAWx2c,MAAM6hD,SAAWgH,EAAKL,KACjCguZ,EAAWx2c,MAAMqkP,WAAax7L,EAAKw7L,WACnCmyN,EAAWx2c,MAAMunV,UAAY1+R,EAAK0+R,UAClCivH,EAAWx2c,MAAM4hD,WAAaiH,EAAKjH,WACnC40Z,EAAWx2c,MAAMwC,WAAa,SAC9Bg0c,EAAWx2c,MAAMgP,IAAM,OACvBwnc,EAAWx2c,MAAM8O,KAAO,IACxB0nc,EAAWx2c,MAAM8yP,WAAa,SAE9B0jN,EAAWx2c,MAAMuwG,WAAa,SACvB,IAAI9nD,GAAK+tZ,EAAW5ra,YAAa4ra,EAAWrpV,cAGhD,SAASspV,GAAcC,EAAIC,EAAIz6b,EAAM06b,EAAeC,EAAc7nc,EAAKC,EAAQH,EAAMgoc,EAAMC,EAAMC,GACpG,IAAIzrY,EAAY,GACZ/mD,EAAStI,EAAK3uB,EACdk3B,EAASvI,EAAK55B,EACdo5B,EAAQQ,EAAK3uB,EAAI2uB,EAAKR,MACtBC,EAASO,EAAK55B,EAAI45B,EAAKP,OAmE3B,OAlEAq7b,EAAYA,GAAwB,EAChChoc,GAKAu8D,GAJAA,EAAYA,EAAUztE,OAAO,KAAa0mB,EAAU,KAAOC,EAASkyb,GAAM,MAAQnyb,EAAS,IACrFC,EAAS,KAAOD,EAASkyb,GAAM,IAAMjyb,EADd,QAEX/I,EAAQg7b,GAAM,IAAOjyb,EAAU,MAAQ/I,EAAQ,IAC3D+I,EAAS,IAAO/I,EAAS,KAAO+I,EAASkyb,KACzB74c,OAAO,MAAc4d,EAAS,KAAOC,EAASg7b,GAAM,MAAQj7b,EAAQ,IACnFC,EAAU,KAAOD,EAAQg7b,GAAM,IAAO/6b,GACxB,IAAjBk7b,IAEAtrY,GADAA,EAAYA,EAAUztE,OAAO,OAAc84c,EAAcrpd,EAAIspd,EAAe,GAAK,IAAOl7b,IAClE7d,OAAO,OAAcg5c,EAAOE,GAAa,KAAOr7b,EAASk7b,EAAeG,IAC9FzrY,GAAa,MAAcurY,EAAQ,KAAOn7b,EAASk7b,GAAgB,KAAOC,EAAOE,GAC7E,KAAOr7b,EAASk7b,EAAeG,IAGnCzrY,EADCqrY,EAAcrpd,EAAIspd,EAAe,EAAKryb,EAC3B+mD,EAAUztE,OAAO,OAAc84c,EAAcrpd,EAAIspd,EAAe,GAAK,IAAMl7b,EAA1D,OACX6I,EAASkyb,GAAM,IAAM/6b,EAAS,MAAQ6I,EAAS,IAC3D7I,EAAS,IAAO6I,EAAU,KAAO7I,EAASg7b,GAAM,MAGjC,IAAjBE,EACYtrY,EAAUztE,OAAO,OAAc0mB,EAASkyb,GAAM,IAAM/6b,EAAS,MAAQ6I,EAAS,IACpF7I,EAAS,IAAO6I,EAAU,KAAO7I,EAASg7b,GAAM,MAG1CprY,EAAUztE,OAAO,MAAc0mB,EAAU,KAAO7I,EAASg7b,GAAM,OAI9E1nc,GAGLs8D,GAFAA,EAAYA,EAAUztE,OAAO,KAAa0mB,EAAU,KAAOC,EAASkyb,GAAM,MAAQnyb,EAAS,IACpFC,EAAU,KAAOD,EAASkyb,GAAM,IAAOjyb,EADjB,OACyCmyb,EAAcrpd,EAAIspd,EAAe,GAAK,IAAOpyb,IAC7F3mB,OAAO,OAAcg5c,EAAOE,GAAa,KAAOJ,EAAct0d,EAAI00d,IAIxFzrY,GAFAA,GADAA,GAAa,MAAcurY,EAAQ,IAAOF,EAAct0d,EAAK,KAAOw0d,EAAOE,GAAa,KAAOJ,EAAct0d,EAAI00d,IAC3Fl5c,OAAO,OAAc84c,EAAcrpd,EAAIspd,EAAe,GAAK,IAAOpyb,EAA3D,OACtB/I,EAAQg7b,GAAM,IAAOjyb,EAAU,MAAS/I,EAAS,IAAO+I,EAAU,IAAO/I,EAAS,KAAO+I,EAASkyb,KACnF74c,OAAO,MAAc4d,EAAS,KAAOC,EAASg7b,GAAM,MAASj7b,EAAS,IACrFC,EAAU,KAAOD,EAAQg7b,GAAM,IAAO/6b,EADhB,OAEX6I,EAASkyb,GAAM,IAAO/6b,EAAU,MAAS6I,EAAU,IAC9D7I,EAAU,IAAO6I,EAAU,KAAO7I,EAASg7b,GAAM,OAEnD7nc,GAKLy8D,GAFAA,GAFAA,EAAYA,EAAUztE,OAAO,KAAa0mB,EAAU,KAAOC,EAASkyb,GAAM,MAAQnyb,EAAS,IACpFC,EAAU,KAAOD,EAASkyb,GAAM,IAAOjyb,IACxB3mB,OAAO,OAAc4d,EAAQg7b,GAAM,IAAOjyb,EAAU,MAAS/I,EAAS,IACrF+I,EAAU,IAAO/I,EAAS,KAAO+I,EAASkyb,GADpB,MACwCj7b,EAAS,KAAOk7b,EAAct0d,EAAIu0d,EAAe,KAChG/4c,OAAO,OAAc4d,EAAQm7b,EAAeG,GAAa,KAAOD,EAAOC,IAI7FzrY,GAFAA,GADAA,GAAa,OAAS7vD,EAAQm7b,GAAgB,IAAOE,EAAQ,KAAOr7b,EAAQm7b,EAAeG,GAAa,KAAOD,EAAOC,IAChGl5c,OAAO,MAAc4d,EAAS,KAAOk7b,EAAct0d,EAAIu0d,EAAe,GAA/D,MACXn7b,EAAS,KAAOC,EAASg7b,GAAM,MAAQj7b,EAAQ,IAAOC,EAAU,KAAOD,EAAQg7b,GAAM,IAAO/6b,IACxF7d,OAAO,OAAc0mB,EAASkyb,GAAM,IAAO/6b,EAAU,MAAQ6I,EAAS,IACrF7I,EAAU,IAAO6I,EAAU,KAAO7I,EAASg7b,GAAM,QAKxDprY,GAFAA,EAAYA,EAAUztE,OAAO,MAAa0mB,EAASkyb,GAAM,IAAOjyb,EAAU,MAASD,EAAU,IACtFC,EAAU,IAAOD,EAAU,KAAOC,EAASkyb,GADrB,MACyCnyb,EAAU,KAAOoyb,EAAct0d,EAAIu0d,EAAe,KAClG/4c,OAAO,OAAc0mB,EAASqyb,EAAeG,GAAa,KAAOD,EAAOC,IAK9FzrY,GAHAA,GADAA,GAAa,OAAS/mD,EAASqyb,GAAgB,IAAOE,EAAQ,KAAOvyb,EAASqyb,EAAeG,GAAa,KAAOD,EAAOC,IAClGl5c,OAAO,MAAc0mB,EAAU,KAAOoyb,EAAct0d,EAAIu0d,EAAe,GAAhE,MACXryb,EAAU,KAAO7I,EAASg7b,GAAM,MAAQnyb,EAAS,IAC5D7I,EAAU,KAAO6I,EAASkyb,GAAM,IAAO/6b,IACxB7d,OAAO,OAAc4d,EAAQg7b,GAAM,IAAO/6b,EAAU,MAAQD,EAAQ,IACnFC,EAAU,IAAOD,EAAS,KAAOC,EAASg7b,GADpB,MAEXj7b,EAAS,KAAO+I,EAASkyb,GAAM,MAAQj7b,EAAQ,IAC1D+I,EAAU,KAAO/I,EAAQg7b,GAAM,IAAOjyb,EAAU,OAEpD8mD,EAGX,IAAI9iB,GACA,SAAc/sC,EAAOC,GACjB3vC,KAAK0vC,MAAQA,EACb1vC,KAAK2vC,OAASA,GAMlBs7b,GACA,SAAc1pd,EAAGjL,EAAGo5B,EAAOC,GACvB3vC,KAAKuhB,EAAIA,EACTvhB,KAAKsW,EAAIA,EACTtW,KAAK0vC,MAAQA,EACb1vC,KAAK2vC,OAASA,GAKlBu7b,GACA,SAAcjoc,EAAQF,GAClB/iC,KAAK2kM,QAAU5hK,EACf/iC,KAAKowR,SAAWntP,GAMpBkoc,GACA,SAAyB1xd,GACrBzZ,KAAKyZ,GAAKA,GAMd2xd,GAA4B,SAAUjsc,GAEtC,SAASisc,EAAW3xd,EAAI8H,EAAGjL,EAAGs0F,EAAQr4F,EAAMixB,EAAW6nc,EAAU7B,QAC3C,IAAdhmc,IAAwBA,EAAY,IACxC,IAAIzjC,EAAQo/B,EAAO79B,KAAKtB,KAAMyZ,IAAOzZ,KAWrC,OAVAD,EAAMyjC,UAAY,GAClBzjC,EAAMsre,SAAW,OACjBtre,EAAMype,cAAgB,EACtBzpe,EAAMwhB,EAAIA,EACVxhB,EAAMuW,EAAIA,EACVvW,EAAM6qG,OAASA,EACf7qG,EAAMwS,KAAOA,EACbxS,EAAMyjC,UAAYA,EAClBzjC,EAAMsre,SAAWA,EACjBtre,EAAMype,cAAgBA,EACfzpe,EAEX,OAhBAs+B,GAAU+sc,EAAYjsc,GAgBfisc,EAjBqB,CAkB9BD,IAGK,SAAStoe,GAAW4W,GACvB,OAAOjZ,SAASuuB,eAAetV,GAG5B,SAASsiC,GAActiC,GAC1B,IAAIzY,EAAU6B,GAAW4W,GACrBzY,GACAyoB,aAAOzoB,GAIR,SAASsqe,GAAWtic,EAAU6jX,EAAOrwU,EAAM55D,EAAKtW,EAASmpE,GAC5D,IAAI2wN,EAAW,IAAIk+L,GAAY,IAC3B3yd,EAMD,SAAyBq3B,EAAUwzC,EAAMqwU,EAAOvgZ,EAASsW,GAC5D,IAAI0wE,EACAi4Y,EAAe,OACf77b,EAAQ8sC,EAAK9sC,MACbC,EAAS6sC,EAAK7sC,OACd67b,EAAOxic,EAASznB,EAChBkqd,EAAOzic,EAAS1yB,EAChBiL,EAAIynB,EAASznB,GAAMmuB,EAAQ,EAC3Bp5B,EAAI0yB,EAAS1yB,GAAMq5B,EAAS,EAChC,OAAQk9W,GACJ,IAAK,SACL,IAAK,SACD0+E,EAAe,UACf5te,YAAM2O,EAAS,CAAE,GAAMojC,EAAQ,EAAG,GAAMC,EAAS,EAAG,GAAM67b,EAAM,GAAMC,IACtE,MACJ,IAAK,QACDn4Y,EAAO,KAAY/xE,EAAI,IAAMkqd,EAAtB,OAAgDD,EAAQ97b,EAAQ,GAAM,IAAM+7b,EAA5E,MACSD,EAAO,KAAOC,EAAQ97b,EAAS,GADxC,MACgE67b,EAAO,KACzEC,GAAS97b,EAAS,GACvBhyC,YAAM2O,EAAS,CAAE,EAAKgnF,IACtB,MACJ,IAAK,iBACDA,EAAO,KAAY/xE,EAAI,IAAMkqd,EAAtB,OAAgDD,EAAQ97b,EAAQ,GAAM,IAAM+7b,EACnF9te,YAAM2O,EAAS,CAAE,EAAKgnF,IACtB,MACJ,IAAK,eACDA,EAAO,KAAYk4Y,EAAO,KAAOC,EAAQ97b,EAAS,GAA3C,MAAmE67b,EAAO,KAAOC,GAAS97b,EAAS,GAC1GhyC,YAAM2O,EAAS,CAAE,EAAKgnF,IACtB,MACJ,IAAK,UACDA,EAAO,KAAY/xE,EAAI,IAAMkqd,EAAtB,MACSD,EAAO,KAAOC,GAAS97b,EAAS,GADzC,OAEU67b,EAAQ97b,EAAQ,GAAM,IAAM+7b,EAFtC,MAGSD,EAAO,KAAOC,EAAQ97b,EAAS,GAHxC,MAISpuB,EAAI,IAAMkqd,EAAO,KACjC9te,YAAM2O,EAAS,CAAE,EAAKgnF,IACtB,MACJ,IAAK,YACDA,EAAO,KAAY/xE,EAAI,KAAOkqd,GAAS97b,EAAS,GAAzC,OACU67b,EAAQ97b,EAAQ,GAAM,KAAO+7b,GAAS97b,EAAS,GADzD,OAEU67b,EAAQ97b,EAAQ,GAAM,KAAO+7b,EAAQ97b,EAAS,GAFxD,MAGSpuB,EAAI,KAAOkqd,EAAQ97b,EAAS,GAHrC,MAISpuB,EAAI,KAAOkqd,GAAS97b,EAAS,GAAM,KACnDhyC,YAAM2O,EAAS,CAAE,EAAKgnF,IACtB,MACJ,IAAK,WACDA,EAAO,KAAY/xE,EAAI,KAAOkqd,EAAQ97b,EAAS,GAAxC,MACS67b,EAAO,KAAOC,GAAS97b,EAAS,GADzC,OAEU67b,EAAQ97b,EAAQ,GAAM,KAAO+7b,EAAQ97b,EAAS,GAFxD,MAGSpuB,EAAI,KAAOkqd,EAAQ97b,EAAS,GAAM,KAClDhyC,YAAM2O,EAAS,CAAE,EAAKgnF,IACtB,MACJ,IAAK,mBACDA,EAAO,MAAak4Y,EAAQ97b,EAAQ,GAAM,KAAO+7b,EAAQ97b,EAAS,GAA3D,MACS67b,EAAO,KAAOC,EAAQ97b,EAAS,GADxC,OAEU67b,EAAQ97b,EAAQ,GAAM,KAAO+7b,EAAQ97b,EAAS,GAFxD,OAGU67b,EAAQ97b,EAAQ,GAAM,KAAO+7b,EAAQ97b,EAAS,GAAM,KACrEhyC,YAAM2O,EAAS,CAAE,EAAKgnF,IACtB,MACJ,IAAK,WAID,IAHA,IAAIirF,EAAK,GACLg6K,OAAS,EACTC,OAAS,EACJ57V,EAAI,EAAGA,GAAK,EAAGA,IACpB27V,EAAU7oT,EAAQ,EAAKnoC,KAAKkqY,IAAKlqY,KAAK6pY,GAAK,KAAQx0Y,EAAI2hL,IACvDi6K,EAAU7oT,EAAS,EAAKpoC,KAAKmwH,IAAKnwH,KAAK6pY,GAAK,KAAQx0Y,EAAI2hL,IAEpDjrF,EADM,IAAN12F,EACO,MAAa4ue,EAAOjzI,GAAU,KAAOkzI,EAAOjzI,GAAU,IAGtDllQ,EAAKxhE,OAAO,MAAa05c,EAAOjzI,GAAU,KAAOkzI,EAAOjzI,GAAU,KAGjFllQ,EAAOA,EAAKxhE,OAAO,KACnBn0B,YAAM2O,EAAS,CAAE,EAAKgnF,IACtB,MACJ,IAAK,QACDi4Y,EAAe,QACf5te,YAAM2O,EAAS,CAAE,KAAQsW,EAAK,OAAU+sB,EAAQ,MAASD,EAAOnuB,EAAGA,EAAGjL,EAAGA,IAGjF,MAAO,CAAEgqM,aAAch0M,EAASi/d,aAAcA,GAvFnCG,CAAgB1ic,EAAUwzC,EAAMqwU,EAAOvgZ,EAASsW,GACvD4nd,EAAapkM,EAAS,OAASz0R,EAAK45d,cAAc55d,EAAK2uM,cAE3D,OADAkqR,EAAW50c,aAAa,aAAc6/C,GAC/B+0Z,EAuFX,IAAImB,GAA4B,SAAUxsc,GAEtC,SAASwsc,EAAWlyd,EAAI2iL,EAAM1sJ,EAAOimC,EAAOhyC,EAAS6jc,EAAW3/d,GAC5D,IAAI9H,EAAQo/B,EAAO79B,KAAKtB,KAAMyZ,IAAOzZ,KAOrC,OANAD,EAAM4jC,QAAUA,EAChB5jC,EAAMq8L,KAAOA,EACbr8L,EAAM2qX,OAAS/0S,EACf51E,EAAM,gBAAkB2vC,EACxB3vC,EAAM,oBAAsByne,EAC5Bzne,EAAM8H,EAAIA,EACH9H,EAEX,OAXAs+B,GAAUstc,EAAYxsc,GAWfwsc,EAZqB,CAa9BR,IA8BF,IAAIS,GACA,SAAyBrqd,EAAGjL,GACxBtW,KAAKuhB,EAAIA,EACTvhB,KAAKsW,EAAIA,GC/Ub+nB,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAkB5D+sc,GAA2B,SAAU1sc,GAErC,SAAS0sc,IACL,OAAkB,OAAX1sc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAoB/D,OAtBAq+B,GAAUwtc,EAAW1sc,GAIrBR,GAAW,CACP3B,YAAS,OACV6uc,EAAU3ve,UAAW,YAAQ,GAChCyiC,GAAW,CACP3B,YAAS,KACV6uc,EAAU3ve,UAAW,aAAS,GACjCyiC,GAAW,CACP3B,YAAS,aACV6uc,EAAU3ve,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,YAAS,WACV6uc,EAAU3ve,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,YAAS,WACV6uc,EAAU3ve,UAAW,iBAAa,GACrCyiC,GAAW,CACP3B,YAAS,IACV6uc,EAAU3ve,UAAW,eAAW,GAC5B2ve,EAvBoB,CAwB7Bxmc,KAOEymc,GAA+B,SAAU3sc,GAEzC,SAAS2sc,IACL,OAAkB,OAAX3sc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAUytc,EAAe3sc,GAIzBR,GAAW,CACP3B,YAAS,KACV8uc,EAAc5ve,UAAW,aAAS,GACrCyiC,GAAW,CACP3B,YAAS,IACV8uc,EAAc5ve,UAAW,aAAS,GAC9B4ve,EAXwB,CAYjCzmc,KAOE0mc,GAA4B,SAAU5sc,GAEtC,SAAS4sc,IACL,OAAkB,OAAX5sc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAU0tc,EAAY5sc,GAItBR,GAAW,CACP3B,YAAS,IACV+uc,EAAW7ve,UAAW,SAAK,GAC9ByiC,GAAW,CACP3B,YAAS,IACV+uc,EAAW7ve,UAAW,SAAK,GAC9ByiC,GAAW,CACP3B,YAAS,IACV+uc,EAAW7ve,UAAW,aAAS,GAClCyiC,GAAW,CACP3B,YAAS,IACV+uc,EAAW7ve,UAAW,cAAU,GAC5B6ve,EAjBqB,CAkB9B1mc,KAOE2mc,GAA8B,SAAU7sc,GAExC,SAAS6sc,IACL,OAAkB,OAAX7sc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAU2tc,EAAc7sc,GAIxBR,GAAW,CACP3B,YAAS,IACVgvc,EAAa9ve,UAAW,SAAK,GAChCyiC,GAAW,CACP3B,YAAS,IACVgvc,EAAa9ve,UAAW,SAAK,GACzB8ve,EAXuB,CAYhC3mc,KAcEkkR,GAAyB,SAAUpqR,GAOnC,SAASoqR,EAAQj9S,EAAStL,GACtB,OAAOm+B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAsxBlD,OA7xBAq+B,GAAUkrR,EAASpqR,GAcnBoqR,EAAQrtT,UAAUirC,UAAY,WAC1BnnC,KAAKu4B,wBAAyB,EAC9Bv4B,KAAKise,sBACAjse,KAAKkse,UACNlse,KAAKmse,YAETnse,KAAKose,wBAET7iL,EAAQrtT,UAAU+ve,oBAAsB,WACpCjse,KAAKomS,SAAW,IAAIk+L,GAAYtke,KAAKgB,QAAQyY,IAC7CzZ,KAAKqse,WChKN,SAA8BruZ,GACjC,IAAIhqD,EACJ,OAAQgqD,GACJ,IAAK,eACL,IAAK,eACDhqD,EAAQ,CACJsuc,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,WAEvB,MACJ,IAAK,eACL,IAAK,aACL,IAAK,gBACDzuc,EAAQ,CACJsuc,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,WAEvB,MACJ,IAAK,aACDzuc,EAAQ,CACJsuc,YAAa,qBACbC,iBAAkB,sBAClBC,kBAAmB,2BACnBC,kBAAmB,4BAEvB,MACJ,QACIzuc,EAAQ,CACJsuc,YAAa,uBACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,WAI/B,OAAOzuc,EDyHes4c,CAAqBtse,KAAKg+E,OAC5Ch+E,KAAK04E,cAAgB,GACrB14E,KAAKwqC,QAAU,EACfxqC,KAAKykO,SAAU,EACfzkO,KAAKuse,YAAc,IAEvBhjL,EAAQrtT,UAAUiwe,UAAY,WAC1B,IAAIK,EAAYhse,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,QACtDgzd,EAAiBjse,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,mBAC3DzZ,KAAKsvd,gBACLzgc,aAAoB7uB,KAAKgB,QAAQyY,GAAbzZ,kCAEpBwse,GAAaA,EAAU/re,YACvBgpB,aAAO+id,GAEPC,GAAkBA,EAAehse,YACjCgpB,aAAOgjd,IAMfljL,EAAQrtT,UAAUwzB,OAAS,WAEvB,GADA1vB,KAAK0se,WAAY,EACZ1se,KAAKsrB,SAUNtrB,KAAK2se,mBACL3se,KAAK4se,eAAe5se,KAAK6se,WAAY7se,KAAKgpC,cAX1B,CAChBhpC,KAAK8se,WAAW9se,KAAKykO,SACrB,IAAIsoQ,EAAW,CACXhqd,QAAQ,EAAO3I,KAAM,gBAAiBg4F,QAASpyG,MAEnDA,KAAK+pB,QAAQ,gBAAiBgjd,GAC9B,IAAIC,EAAahte,KAAKite,qBAAqBjte,KAAK6se,WAAY7se,KAAKgpC,UACjEhpC,KAAKkte,WAAWF,EAAW58M,SAAU48M,EAAWroS,QAAS3kM,KAAKmte,YAMlEnte,KAAK+pB,QAAQ,SAAU,CAAEqoF,QAASpyG,OAClC,IAAIgB,EAAUR,SAASuuB,eAAe,oBAClC/tB,GACAyoB,aAAOzoB,GAEXhB,KAAKu4B,wBAAyB,GAElCgxR,EAAQrtT,UAAUkwe,qBAAuB,WAErC,GADApse,KAAKote,aAAe,IACfpte,KAAKsrB,UAAYtrB,KAAKqte,OAAQ,CAE/B,IAAIb,EAAYxse,KAAKomS,SAASu+L,UAAU,CAAElrd,GAAIzZ,KAAKgB,QAAQyY,GAAK,SAChEzZ,KAAKgB,QAAQgB,YAAYwqe,GAEzB,IAAIc,EAAe9se,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,UACxD6zd,IACDA,EAAette,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIzZ,KAAKgB,QAAQyY,GAAK,YACpDmc,aAAa,YAAa,kBAE3C42c,EAAUxqe,YAAYsre,GACtB,IAAIC,EAAcvte,KAAKomS,SAAS4+H,SAAS,CACrC,GAAMhla,KAAKgB,QAAQyY,GAAK,QAAS,eAA+B,eAAfzZ,KAAKg+E,MAAyB,EAAIh+E,KAAK2oK,OAAOj5H,MAC/F,KAAQ1vC,KAAKo8L,MAAQp8L,KAAKqse,WAAW/J,YAAa,QAA0B,eAAftie,KAAKg+E,MAAyB,GAAMh+E,KAAK2jC,QACtG,OAAU3jC,KAAK2oK,OAAOhzF,QAE1B23Z,EAAatre,YAAYure,KAGjChkL,EAAQrtT,UAAUgxe,WAAa,SAAU98M,EAAUzrF,EAASnoH,GACxD,GAAIx8E,KAAKwte,OAAO3we,QAAU,EACtB,OAAO,KAOX,IALA,IAAI4we,EACA3ya,EAAQ,EACR4ya,EAAc1te,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIzZ,KAAKgB,QAAQyY,GAAK,qBAChE6zd,EAAezqe,GAAW7C,KAAKgB,QAAQyY,GAAK,UAC5C8H,EAAoB,EAAfvhB,KAAK2te,QAAgBnxZ,EAAO,GAAMmoH,EAAU3kM,KAAK6qe,aAAe,GAChE7se,EAAK,EAAGuF,EAAKvD,KAAKwte,OAAQxve,EAAKuF,EAAG1G,OAAQmB,IAAM,CACrD,IAAI6uZ,EAAQtpZ,EAAGvF,GACD,SAAV6uZ,IACA4gF,EAAc,IAAI9B,GAAW3re,KAAKgB,QAAQyY,GAAK,cAAgBqhD,EAAO96D,KAAKqhe,QAAQvma,GAAQ,EAAG,UAAW,EAAG,MACxG96D,KAAKuse,YAAYzxa,IACjB4ya,EAAY1re,YAAYspe,GAAW,IAAIM,GAAgBrqd,EAAGvhB,KAAKuse,YAAYzxa,GAAS96D,KAAKwqC,SAAW4lP,EAAWpwR,KAAK6qe,aAAe,IAAKh+E,EAAO,IAAIpwU,GAAKD,EAAMA,GAAO,GAAIixZ,EAAa,OAE1L3ya,KAGRwya,EAAatre,YAAY0re,IAE7BnkL,EAAQrtT,UAAU+we,qBAAuB,SAAUJ,EAAY7jc,GAC3D,IAMIkH,EANA09b,EAAa/qe,GAAW7C,KAAKgB,QAAQyY,IACrCmxd,EAAgB,IAAIgB,GAAgB,EAAG,GACvCiC,EAAc,IAAIjC,GAAgB,EAAG,GACrCY,EAAY3pe,GAAW7C,KAAKgB,QAAQyY,GAAK,QACzC6zd,EAAezqe,GAAW7C,KAAKgB,QAAQyY,GAAK,UAC5C8zd,EAAc1qe,GAAW7C,KAAKgB,QAAQyY,GAAK,SAE3C42Q,GAAQ,EACR+c,GAAS,EACThd,GAAW,EACX7uQ,EAAI,EACJjL,EAAI,EAqBR,GApBAtW,KAAKgre,UAAY,EACG,KAAhBhre,KAAK+kB,SACL/kB,KAAK8te,YAAYn+b,QAAU3vC,KAAK+te,SAEhC/te,KAAK0qD,QAAQ7tD,OAAS,GACtBqzC,EAAOlwC,KAAKgue,sBAAsBnB,EAAY7se,KAAKgpC,SAASznB,EAAGvhB,KAAKgpC,SAAS1yB,GAC7E+5Q,GAAQ,IAGRngP,EAAOlwC,KAAKiue,gBAAgBpB,EAAY7jc,EAAU4hc,EAAeiD,GAC5D7te,KAAKkue,SAON3sd,GADA6rR,EAAUl9P,EAAK3uB,EAAKynB,EAASznB,EAAIvhB,KAAK48Z,WAAWr7Y,GACnC,EAAIvhB,KAAK6qe,cALvBz6M,IADAC,EAASngP,EAAK55B,EAAK0yB,EAAS1yB,EAAItW,KAAK48Z,WAAWtmZ,GAEhDA,EAAK+5Q,EAAQ,EAAIrwR,KAAK6qe,eAOV,KAAhB7qe,KAAK+kB,OAAe,CACpB,IAAI6wa,EAAa00C,GAAYtqe,KAAKwoV,OAASxoV,KAAKmue,YAAcnue,KAAK+kB,OAAQ/kB,KAAKoue,WAAWz+b,OACvE,EAAf3vC,KAAK+te,SAAgB39M,EAAWpwR,KAAK6qe,aAAe,IAAM7qe,KAAKwoV,OAAS,EAAI,GAE7EjpP,EAAY,MADc,EAAfv/F,KAAK2te,SAAiBvgM,GAAW/c,GAAUD,EAA+B,EAApBpwR,KAAK6qe,eACzC,IAAMj1C,EACnC,MAAQ1lZ,EAAKR,OAAU09P,GAAW/c,GAAUD,EAA+B,EAApBpwR,KAAK6qe,cAAoC,EAAf7qe,KAAK2te,SACtF,IAAM/3C,EACNy4C,EAAgBrue,KAAKomS,SAAS4+H,SAAS,CACvC,GAAMhla,KAAKgB,QAAQyY,GAAK,eAAgB,eAAgB,EACxD,KAAQ,KAAM,QAAW,GAAK,OAAUzZ,KAAKqse,WAAW5J,kBAAmB,EAAKljY,IAEpF+tY,EAAatre,YAAYqse,GAE7B,IAAInxe,EAAQ8C,KAAK2oK,OAAOj5H,MAAQ,EAC5B4+b,EAAY,IAAIrD,GAAK/te,EAAQqkB,EAAGrkB,EAAQoZ,EAAG45B,EAAKR,MAAQxyC,EAAOgzC,EAAKP,OAASzyC,GAkBjF,GAjBAowe,EAAa13c,aAAa,UAAW,MACjC51B,KAAKuue,iBAAoBvue,KAAKqte,QAAWrte,KAAKykO,QAI9CzkO,KAAKwue,UAAUZ,EAAY19b,EAAK3uB,EAAG2uB,EAAK55B,GAHxCtW,KAAKyue,kBAAkBb,EAAY19b,GAMvCs8b,EAAU52c,aAAa,UAAWsa,EAAKP,OAAS3vC,KAAK2oK,OAAOj5H,OAAa1vC,KAAKkue,SAAa,EAAIlue,KAAK6qe,cAAgB,GAAG19d,YACvHq/d,EAAU52c,aAAa,SAAUsa,EAAKR,MAAQ1vC,KAAK2oK,OAAOj5H,OAAY1vC,KAAKkue,SAAiBlue,KAAK6qe,aAAT,GAAyB,GAAG19d,YACpHq/d,EAAU52c,aAAa,UAAW,KAC7Bx4B,YAAkB4C,KAAK0ue,oBACxBr+M,EAAQrwR,KAAK0ue,iBAAiBvwe,QAAQ,QAAU,EAChDiyR,EAAWpwR,KAAK0ue,iBAAiBvwe,QAAQ,WAAa,EACtDivS,EAASptS,KAAK0ue,iBAAiBvwe,QAAQ,SAAW,GAEtDove,EAAY33c,aAAa,IAAK60c,GAAczqe,KAAK6ma,GAAI7ma,KAAK8ma,GAAIwnE,EAAW1D,EAAe5qe,KAAK6qe,aAAcx6M,EAAOD,EAAUgd,EAAQygM,EAAYtsd,EAAGssd,EAAYv3d,EAAGtW,KAAKgre,YACnKhre,KAAK2ue,cAA+B,eAAf3ue,KAAKg+E,MAAwB,CAElD,IAAI4wZ,EAAW5ue,KAAKgB,QAAQyY,GAAK,UACjC8zd,EAAY33c,aAAa,SAAUvP,IAAQiD,KAAO,GAAK,QAAUsld,EAAW,KAC5E,IAAIC,EAAS,eAAiBD,EAAW,sEACzCC,GAAU,yGACVA,GAAU,oGACV,IAAIC,EAAa9ue,KAAKomS,SAASy/L,aAC/BiJ,EAAWl5c,aAAa,KAAM51B,KAAKgB,QAAQyY,GAAK,0BAChD6zd,EAAatre,YAAY8se,GACzBA,EAAW1se,UAAYyse,EAI3B,OAFAtB,EAAY33c,aAAa,SAAU51B,KAAK2oK,OAAOhzF,OAC/C31E,KAAK+ue,WAAW,IAAInD,GAAgBrqd,EAAGjL,GAAI85Q,GAAWgd,IAAW/c,IAAUD,GACpE,IAAI86M,GAAK96M,GAAWgd,IAAW/c,IAAUD,IAEpDm5B,EAAQrtT,UAAU6ye,WAAa,SAAU33b,EAAOg5O,EAAUzrF,GACtD,IAAI3jM,EAAUR,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,SACpD22Q,GACApvR,EAAQ40B,aAAa,YAAa,eAAiB51B,KAAK6qe,aAAe,KAEvElmS,GACA3jM,EAAQ40B,aAAa,YAAa,aAAe51B,KAAK6qe,aAAe,QAG7EthL,EAAQrtT,UAAU8ye,kBAAoB,WAClChve,KAAK04E,cAAgB,GACgD,KAAjE14E,KAAK+kB,OAAOroB,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAI2vB,SACtDrsB,KAAK04E,cAAgB14E,KAAK04E,cAAc5mD,OAAO9xB,KAAK+kB,SAExD/kB,KAAK04E,cAAgB14E,KAAK04E,cAAc5mD,OAAO9xB,KAAK0qD,UAGxD6+P,EAAQrtT,UAAU4we,WAAa,SAAU9sB,GACrC,IAGI1yE,EAIA2hG,EACAC,EAEA38N,EACA48N,EAXAx/b,EAAS,EACTD,EAAQ,EACR0/b,EAAW,EAGXvyZ,EAAOv+E,YAAO,GAAI0B,KAAKoue,UAAW,MAAM,GAAS,WACjDd,EAAezqe,GAAW7C,KAAKgB,QAAQyY,GAAK,UAG5C41d,EAAa,GAGjBrve,KAAKgve,oBACL,IACIpkY,EADqD,QAAtCpqG,SAASgiC,KAAKrT,aAAa,OAClB,MAAQ,QACpCnvB,KAAKsve,UAAYtve,KAAK6se,WAAWtrd,EAAIvhB,KAAKgpC,SAASznB,EACnDvhB,KAAKuve,WAAcvve,KAAK6se,WAAWtrd,EAAIvhB,KAAK6se,WAAWn9b,MAAS1vC,KAAKsve,UACrE,IAAIjlb,EAAgBrqD,KAAK+kB,OAAOroB,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAI2vB,OACtEmjd,EAAYxve,KAAK+kB,OAAO5mB,QAAQ,QAAU,GAAK6B,KAAK+kB,OAAO5mB,QAAQ,SAAW,EAC9Esxe,EAAcnF,GAAYtqe,KAAK04E,cAAc,GAAImE,GAAMntC,MAAS,EAAI1vC,KAAK2te,QAAW3te,KAAK6qe,aACzF6E,EAAe1ve,KAAKgpC,SAASznB,EAAIkud,EAAezve,KAAKgpC,SAASznB,EAC9Doud,EAAgB3ve,KAAK6se,WAAWtrd,EAAIvhB,KAAK6se,WAAWn9b,MAAU1vC,KAAKgpC,SAASznB,EAAIkud,EAEhFG,EAAiC,KAAlBvlb,EAAwBrqD,KAAK+te,QAAU,EACtD8B,GAAQ,EACRr7P,GAAW,EACfx0O,KAAKuse,YAAc,GACnB,IAGIuD,EAHA3C,EAAcnte,KAAKwte,OAAO3we,OAAS,EAAK,GAAK,EAC7Ckze,EAAiB/ve,KAAKwte,OAAO3we,OAAS,EAAK,EAAI,EAI/Cw7Q,EAAa,SACb23N,EAAahwe,KAAKqse,WAAW7J,kBAC7B2G,EAAM,GAAKpwd,WAHA,QAGyBA,WAAW8jE,EAAKL,MACnDwjY,IAAYhgd,KAAKkse,WAClBnwb,GAAc/7C,KAAKgB,QAAQyY,GAAK,SAChCsiC,GAAc/7C,KAAKgB,QAAQyY,GAAK,gBAChCsiC,GAAc/7C,KAAKgB,QAAQyY,GAAK,oBAChCsiC,GAAc/7C,KAAKgB,QAAQyY,GAAK,2BAOpC,IALA,IAAInN,EAAU,IAAI8+d,GAAWpre,KAAKgB,QAAQyY,GAAK,QAAwB,EAAfzZ,KAAK2te,QAA6B,EAAf3te,KAAK+te,QAA6B,EAAf/te,KAAKwqC,SAAgC,IAAjBxqC,KAAK+te,QAAgB,EAAI,GAAKnjY,EAAQ,IACpJh3D,EDnFL,SAAqBtnC,EAASuwE,EAAMlH,EAAOp1E,GAC9C,IAAI0ve,EACA7pM,EAAW,IAAIk+L,GAAY,IAC/B2L,EAAgB,CACZ,GAAM3je,EAAQmN,GACd,EAAKnN,EAAQiV,EACb,EAAKjV,EAAQgK,EACb,KAAQq/D,EACR,YAAakH,EAAKL,KAClB,aAAcK,EAAK0+R,UACnB,cAAe1+R,EAAKjH,WACpB,cAAeiH,EAAKw7L,WACpB,cAAe/rQ,EAAQs+F,OACvB,UAAat+F,EAAQk3B,UACrB,QAAWq5C,EAAKl5C,QAChB,oBAAqBr3B,EAAQ++d,UAEjC,IAAI94d,EAA+B,kBAAjBjG,EAAQiG,KAAoBjG,EAAQiG,KAAOjG,EAAQiG,KAAK,GACtEi4d,EAAapkM,EAASq/L,WAAWwK,EAAe19d,GAOpD,OANAi4d,EAAWx2c,MAAM4hD,WAAaiH,EAAKjH,WACnC40Z,EAAWx2c,MAAMunV,UAAY1+R,EAAK0+R,UAClCivH,EAAWx2c,MAAM6hD,SAAWgH,EAAKL,KACjCguZ,EAAWx2c,MAAMqkP,WAAax7L,EAAKw7L,WACnCmyN,EAAWx2c,MAAM2hD,MAAQkH,EAAKlH,MAC9Bp1E,EAAOyB,YAAYwoe,GACZA,EC0DiB0F,CAAY5je,EAASuwE,EAAM,KAAMywZ,GACjD6C,EAA8C,IAA9Bnwe,KAAK04E,cAAc77E,QAAgBmD,KAAK04E,cAAc,GAAGv6E,QAAQ,WAAa,EAC9F2zG,EAA2B,KAAhB9xG,KAAK+kB,OAChBy3D,EAAOs1B,GAAY09X,EAAY,GAAK,GAC/B3la,EAAI,EAAGuma,EAAepwe,KAAK04E,cAAc77E,OAAQgtE,EAAIuma,EAAcvma,IAaxE,GAZAqla,EAAiBlve,KAAK04E,cAAc7O,GAAGntE,QAAQ,gBAAiB,OAC3DA,QAAQ,kBAAmB,QAC3BC,MAAM,YACD,IAANktE,IAAYsma,GAAiBnwe,KAAKqwe,aACjCrwe,KAAKsve,UAAYG,GAAeC,KAChC1ve,KAAKuve,WAAaE,GAAeE,KAClCG,EAAkBvoe,KAAKooI,MAAM3vI,KAAKsve,UAAYtve,KAAKuve,WAAcvve,KAAKsve,UAAY9yZ,EAASx8E,KAAKuve,WAAa/yZ,GAE7G0yZ,GAD2B,KAAlB7kb,EAAuBA,EAAgBrqD,KAAK04E,cAAc7O,IAC3CjnE,MAAM,IAAIgC,OAAO,OAASkre,EAAkB,IAAK,MACzE9ve,KAAKmue,YAAcqB,EAAY,MAAQN,EAAevqe,KAAK,QAAU,OAASuqe,EAAevqe,KAAK,QAClG3E,KAAKwoV,OAAS0mJ,EAAerye,OAAS,GAEhB,KAAtBqye,EAAe,GAAnB,CAGW,IAANrla,GAA+B,KAAlBxf,GACdrqD,KAAKuse,YAAY3qe,MAAwB,KAAlByoD,EAAwBrqD,KAAK+te,QAAW,GAAKzhe,EAAQgK,EAAIq5B,GAEpF,IAAK,IAAI/yC,EAAI,EAAG+E,EAAMute,EAAerye,OAAQD,EAAI+E,EAAK/E,IAAK,CAGvDwye,EAAW,EACX56P,GAAW,EACX7kM,GAAUw5b,EACV,IAAK,IAAIhhe,EAAI,EAAG0+H,GALhBymQ,EAAQ4hG,EAAetye,GAAGF,QAAQ,OAAQ,WAAWA,QAAQ,SAAU,YAAYA,QAAQ,KAAM,mBAC5FC,MAAM,SAImBE,OAAQsL,EAAI0+H,EAAO1+H,IAC7CoqQ,EAAO+6H,EAAMnlY,GACR,KAAKyC,KAAK2nQ,IAAkB,KAATA,IACpBA,EAAO,OAEL/9B,GAAqB,MAAT+9B,GAA4E,KAA1DA,EAAK71Q,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAI2vB,UAC/E+id,GAAqB,MAAT78N,EAhDX,EAgDuC,EACpC/9B,IAAaq7P,GACbV,EAAc,CACV5td,EAAmB,EAAfvhB,KAAK2te,SAAgBR,EAAa4C,GACtC5G,GAAIA,GAAO30P,EAAYo7P,EAAc,GAAIxzS,KAAM,IAEnDwzS,EAAc,MAIVT,EADAU,GAASr7P,EACK,CACVjzN,EAAsB,KAAlB8oC,EAAyC,EAAfrqD,KAAK2te,SAAgBR,EAAa4C,GAC1C,EAAf/ve,KAAK2te,SAAgB3te,KAAKwoV,OAAU2kJ,EAAa4C,EAAiB,IAI/D,GAGtBv7P,GAAW,EACXy6P,EAAejve,KAAKomS,SAASs/L,YAAYyJ,EAAa,IACtDv7b,EAAc5xC,YAAYite,GACtB18N,EAAKp0Q,QAAQ,QAAU,GAAOqxe,GAAmB,IAANrne,GAAiB,IAAN0hE,IAAaioC,GAAY9xG,KAAKwoV,SACpFnwE,EAAa,OACb23N,EAAahwe,KAAKqse,WAAW9J,iBAC7B8M,EAAa,eAAiBh3N,EAC9Bx7L,EAAKw7L,WAAaA,EACjB42N,EAAcr5c,aAAa,OAAQ51B,KAAKoue,UAAUz4Z,OAASq6Z,KAG5DX,EAA4B,SAAfh3N,EAAwB,eAAiBA,EAAa,GACnEx7L,EAAKw7L,WAAaA,EACjB42N,EAAcr5c,aAAa,OAAQ51B,KAAKoue,UAAUz4Z,OAASq6Z,KAE5Dz9N,EAAKp0Q,QAAQ,SAAW,GAAOqxe,GAAarne,IAAM0+H,EAAQ,GAAW,IAANh9D,IAAaioC,GAAY9xG,KAAKwoV,WAC7FnwE,EAAa,SACb23N,EAAahwe,KAAKqse,WAAW7J,mBAGhCyM,EAAc54Y,YAAck8K,EAAOvyQ,KAAKswe,eAAe/9N,GACxD68N,GAAY9E,GAAY/3N,EAAM11L,GAAMntC,MACjB,KAAf2/b,IACAJ,EAAaj7c,MAAMqkP,WAAag3N,EAAW1ye,MAAM,gBAAgB,GACjEsye,EAAaj7c,MAAM2hD,MAAQs5Z,EAAa9/c,aAAa,SAGzD8/c,EAAaj7c,MAAM4hD,WAAa,UAChCq5Z,EAAaj7c,MAAMunV,UAAY,UAC/B0zH,EAAaj7c,MAAM6hD,SAAW,UAC9Bg6Z,GAAQ,GAGhBT,GApGS,EAqGT1/b,EAAQnoC,KAAK8L,IAAIq8B,EAAO0/b,IAGhCpve,KAAK8te,YAAc,IAAIrxZ,GAAK/sC,GAASA,EAAQ,EAAK,EAAI1vC,KAAK2te,QAAW,GAAIh+b,GAC1E3vC,KAAK8te,YAAYp+b,OAAUy9b,EAAa4C,EACxC,IAAI/ue,EAAW4yC,EAActlB,WAAW,GACxC,GAAsB,KAAlB+7B,GAAwBrpD,IAAYhB,KAAKwoV,OAAQ,CACjD3rQ,EAAKw7L,WAAa,OAClB,IAAIk4N,GAAWvwe,KAAK8te,YAAYp+b,MAAS,EAAI1vC,KAAKwqC,SAAY,EAAI8/b,GAAYjgb,EAAewyB,GAAMntC,MAAQ,EAC3G1uC,EAAQ40B,aAAa,IAAK26c,EAAQpje,cAG1Co8S,EAAQrtT,UAAUo0e,eAAiB,SAAU/9d,GACzC,IAAIi+d,EAAQj+d,EAAK3P,MAAM,yBACvB,GAAIxF,YAAkBoze,GAClB,OAAOj+d,EAGX,IADA,IAAIk+d,EAAY,8DAA8D7le,KAAK2H,GAC1E3V,EAAI,EAAGA,EAAI4ze,EAAM3ze,OAAQD,IAC1BoD,KAAK0we,mBAAmBF,EAAM5ze,GAAGF,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAI2vB,UACpF9Z,EAAOA,EAAK7V,QAAQ8ze,EAAM5ze,GAAI6ze,EAAY,SAAW,KAG7D,OAAOl+d,GAEXg3S,EAAQrtT,UAAUw0e,mBAAqB,SAAU1ve,GAC7C,MAAqD,+BAA9CR,SAASW,cAAcH,GAASmM,YAE3Co8S,EAAQrtT,UAAU0we,eAAiB,SAAUC,EAAY7jc,GACrD,IAAI+jc,EAAW,CAAEhqd,QAAQ,EAAO3I,KAAM,gBAAiBg4F,QAASpyG,MAChEA,KAAK+pB,QAAQ,gBAAiBgjd,GAC9B,IAAIxse,EAASC,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,IAC9CzZ,KAAKkse,UACLlse,KAAKmse,YAET,IAAIwE,EAAepwe,EAAOu2B,kBAI1B,GAHI65c,GACAlnd,aAAOknd,GAEN5D,EAAShqd,OAwCV0G,aAAO5mB,GAAW7C,KAAKgB,QAAQyY,GAAK,iBAxClB,CAGlB,IAFA,IAAIpW,EAAOlC,YAAc,MAAO,CAAEsY,GAAIzZ,KAAKgB,QAAQyY,GAAK,oBACpDw4G,EAAkBjyH,KAAKkpG,WAAWlpG,KAAK6a,KAAM7a,KAAK4we,gBAAiBvte,EAAKoW,GAAIpW,EAAKoW,GAAK,kBAAmB,IACtGw4G,GAAmBA,EAAgBp1H,OAAS,GAC3CyC,eAAyC,IAA3B2yH,EAAgBp1H,QAC9BwG,EAAKrB,YAAYiwH,EAAgB,IACjCA,EAAkB,MAGlB5uH,EAAKrB,YAAYiwH,EAAgB,IAGzC1xH,EAAOyB,YAAYqB,GACnB,IAAIrC,EAAUhB,KAAKkse,SAAW7oe,EAAOrD,KAAKgB,QACtCkvC,EAAOlvC,EAAQqhC,wBACnBriC,KAAKwqC,QAAU,EACfxqC,KAAK8te,YAAc,IAAIrxZ,GAAKvsC,EAAKR,MAAOQ,EAAKP,QAC7C,IAAIkhc,EAAc7we,KAAKqte,OAASrte,KAAKgue,sBAAsBnB,EAAY7se,KAAKgpC,SAASznB,EAAGvhB,KAAKgpC,SAAS1yB,GAChGtW,KAAKiue,gBAAgBpB,EAAY7jc,EAAU,IAAI4ic,GAAgB,EAAG,GAAI,IAAIA,GAAgB,EAAG,IAOnG,IANI5re,KAAKuue,iBAAoBvue,KAAKqte,QAAWrte,KAAKykO,QAI9CzkO,KAAKwue,UAAUxte,EAAS6ve,EAAYtvd,EAAGsvd,EAAYv6d,GAHnDtW,KAAKyue,kBAAkBzue,KAAKgB,QAAS6ve,GAKrC7we,KAAKsvd,eAAgB,CAErB,IAAIwhB,EAAkB,WAClB,IAAIC,EAAQlue,GAAWmue,EAAahwe,QAAQyY,IAAI4oB,wBAChD2uc,EAAalD,YAAc,IAAIrxZ,GAAKs0Z,EAAMrhc,MAAOqhc,EAAMphc,QACvD,IAAIshc,EAAeD,EAAa/C,gBAAgBpB,EAAY7jc,EAAU,IAAI4ic,GAAgB,EAAG,GAAI,IAAIA,GAAgB,EAAG,IACxHoF,EAAaxC,UAAU3re,GAAWmue,EAAahwe,QAAQyY,IAAKw3d,EAAa1vd,EAAG0vd,EAAa36d,IAGzF06d,EAAehxe,KACnB8we,EAAgB30e,KAAK60e,EAAcnE,EAAY7jc,GAC/Cza,aAAqBvuB,KAAKgB,QAAQyY,GAAbzZ,iCAAyDA,KAAKsvd,eAAel1c,KAAMpa,KAAKsvd,eAAe/ud,YAAQvE,EAAW80e,MAO3JvnL,EAAQrtT,UAAU8xe,sBAAwB,SAAUl4G,EAAQv0W,EAAGjL,GAC3D,IAMI46d,EANAxhc,EAAQ1vC,KAAK8te,YAAYp+b,MAAS,EAAI1vC,KAAK2te,QAC3Ch+b,EAAS3vC,KAAK8te,YAAYn+b,OAAU,EAAI3vC,KAAK+te,QAC7C8C,EAAc,IAAI5F,GAAK1pd,EAAI,EAAIvhB,KAAKwqC,QAASl0B,EAAIq5B,EAAS3vC,KAAKwqC,QAASkF,EAAOC,GAC/Ewhc,EAAqBN,EAAYv6d,EAAIu6d,EAAYlhc,OACjDyhc,EAAiBt7G,EAAOx/W,EAAIw/W,EAAOnmV,OACnC0hc,GAAe,EAEfrxe,KAAK4we,kBAELS,GAAyD,IADpCrxe,KAAK4we,gBAAyB,QAAM,GAC3Bzye,QAAQ,eAe1C,OAZIize,EAAiBD,IACjBD,EAAmBC,EAAqBC,EACxCP,EAAYv6d,GAAM46d,EAAmB,EAAIlxe,KAAKwqC,SAG9Cqmc,EAAYv6d,EAAIw/W,EAAOx/W,IACvB46d,EAAmBp7G,EAAOx/W,EAAIu6d,EAAYv6d,EAC1Cu6d,EAAYv6d,GAAK+6d,EAAgBR,EAAYlhc,OAAS,EAAI3vC,KAAKwqC,QAAY0mc,EAAmB,EAAIlxe,KAAKwqC,SAEvGqmc,EAAYtvd,EAAIsvd,EAAYnhc,MAAQomV,EAAOv0W,EAAIu0W,EAAOpmV,QACtDmhc,EAAYtvd,GAAMsvd,EAAYnhc,MAAQ,EAAI1vC,KAAKwqC,SAE5Cqmc,GAEXtnL,EAAQrtT,UAAUo1e,mBAAqB,SAAUx7G,EAAQy7G,EAAgB3G,EAAeiD,GACpF,IAAI9/b,EAAW/tC,KAAK0ue,iBAChB8C,EAAQxxe,KAAK48Z,WAAWr7Y,EACxBkwd,EAAQzxe,KAAK48Z,WAAWtmZ,EACxBo7d,EAAe1xe,KAAKgsB,OACpB0jB,EAAQ1vC,KAAK8te,YAAYp+b,MAAS,EAAI1vC,KAAK2te,QAC3Ch+b,EAAS3vC,KAAK8te,YAAYn+b,OAAU,EAAI3vC,KAAK+te,QAC7C/kc,EAAW,IAAI4ic,GAAgB2F,EAAehwd,EAAGgwd,EAAej7d,GA+BpE,MA9BiB,QAAby3B,GAAmC,WAAbA,GACtB/E,EAAW,IAAI4ic,GAAgB5ic,EAASznB,EAAIiwd,EAAQxxe,KAAK8te,YAAYp+b,MAAQ,EAAI1vC,KAAKwqC,QAASxB,EAAS1yB,EAAIm7d,EAAQzxe,KAAK8te,YAAYn+b,OAAU,EAAI3vC,KAAKwqC,QAAWxqC,KAAK6qe,aAAe6G,GACvL9G,EAAcrpd,EAAIssd,EAAYtsd,EAAImuB,EAAQ,EACzB,WAAb3B,IACA/E,EAAS1yB,EAAIi7d,EAAej7d,EAAIm7d,EAAQC,GAExC57G,EAAOv0W,EAAIu0W,EAAOpmV,MAAQ1G,EAASznB,EAAImuB,GACvC1G,EAASznB,EAAKu0W,EAAOpmV,MAAQA,EAAWomV,EAAOv0W,EAAIu0W,EAAOpmV,MAASA,EAAQ,EAAKomV,EAAOv0W,EACvFqpd,EAAcrpd,EAAIssd,EAAYtsd,EAAKu0W,EAAOpmV,MAAQA,EAAUomV,EAAOv0W,EAAIgwd,EAAehwd,EAAIynB,EAASznB,EAAKgwd,EAAehwd,GAElHu0W,EAAOv0W,EAAIynB,EAASznB,IACzBynB,EAASznB,EAAIu0W,EAAOv0W,EACpBqpd,EAAcrpd,EAAIssd,EAAYtsd,EAAIgwd,EAAehwd,KAIrDynB,EAAW,IAAI4ic,GAAgB5ic,EAASznB,EAAIiwd,EAAQE,EAAc1oc,EAAS1yB,EAAIm7d,EAAQzxe,KAAK8te,YAAYn+b,OAAS,EAAK3vC,KAAKwqC,SAC3Hogc,EAAct0d,EAAIu3d,EAAYv3d,EAAIq5B,EAAS,EAC1B,SAAb5B,IACA/E,EAASznB,EAAIgwd,EAAehwd,EAAIiwd,EAAQE,GAAgBhic,EAAQ1vC,KAAK6qe,eAErE/0G,EAAOx/W,EAAIw/W,EAAOnmV,OAAS3G,EAAS1yB,EAAIq5B,GACxC3G,EAAS1yB,EAAKw/W,EAAOnmV,OAASA,EAAYmmV,EAAOx/W,EAAIw/W,EAAOnmV,OAAUA,EAAS,EAAKmmV,EAAOx/W,EAC3Fs0d,EAAct0d,EAAIu3d,EAAYv3d,EAAKw/W,EAAOnmV,OAASA,EAAWmmV,EAAOx/W,EAAIi7d,EAAej7d,EAAI0yB,EAAS1yB,EAAKi7d,EAAej7d,GAEpHw/W,EAAOx/W,EAAI0yB,EAAS1yB,IACzB0yB,EAAS1yB,EAAIw/W,EAAOx/W,EACpBs0d,EAAct0d,EAAIu3d,EAAYv3d,EAAIi7d,EAAej7d,IAGlD,IAAI20d,GAAKjic,EAASznB,EAAGynB,EAAS1yB,EAAGo5B,EAAOC,IAGnD45Q,EAAQrtT,UAAU+xe,gBAAkB,SAAUn4G,EAAQy7G,EAAgB3G,EAAeiD,GACjF,IAAKzwe,YAAkB4C,KAAK0ue,kBAExB,OADkB1ue,KAAKsxe,mBAAmBx7G,EAAQy7G,EAAgB3G,EAAeiD,GAGrF,IAAI7kc,EAAW,IAAI4ic,GAAgB2F,EAAehwd,EAAGgwd,EAAej7d,GAChEo5B,EAAQ1vC,KAAK8te,YAAYp+b,MAAS,EAAI1vC,KAAK2te,QAC3Ch+b,EAAS3vC,KAAK8te,YAAYn+b,OAAU,EAAI3vC,KAAK+te,QAC7C2D,EAAe1xe,KAAKgsB,OACpBwld,EAAQxxe,KAAK48Z,WAAWr7Y,EACxBkwd,EAAQzxe,KAAK48Z,WAAWtmZ,EACxBq7d,EAAU77G,EAAOv0W,EACjBqwd,EAAU97G,EAAOx/W,EAgErB,OA/DKtW,KAAKkue,UAiCNllc,EAAW,IAAI4ic,GAAgB5ic,EAASznB,EAAIiwd,EAAQE,EAAc1oc,EAAS1yB,EAAIm7d,EAAQzxe,KAAK8te,YAAYn+b,OAAS,EAAK3vC,KAAKwqC,SAC3Hogc,EAAct0d,EAAIu3d,EAAYv3d,EAAIq5B,EAAS,GACtC3G,EAASznB,EAAImuB,EAAQ1vC,KAAK6qe,aAAe8G,EAAU77G,EAAOpmV,OAAW1vC,KAAKyY,cAC3EuwB,EAASznB,GAAKgwd,EAAehwd,EAAIu0W,EAAOpmV,MAAQomV,EAAOpmV,MAAQ6hc,EAAehwd,GACxEiwd,EAAQE,GAAgBhic,EAAQ1vC,KAAK6qe,eAE3C7hc,EAASznB,EAAIowd,IACb3oc,EAASznB,GAAKgwd,EAAehwd,EAAI,EAAI,EAAIgwd,EAAehwd,GAAKiwd,EAAQE,GAErE1oc,EAAS1yB,GAAKs7d,IACdhH,EAAct0d,GAAMs7d,EAAU5oc,EAAS1yB,EACvCu3d,EAAYv3d,GAAMs7d,EAAU5oc,EAAS1yB,EACrC0yB,EAAS1yB,EAAIs7d,GAEb5oc,EAAS1yB,EAAIq5B,GAAUiic,EAAU97G,EAAOnmV,SACxCi7b,EAAct0d,GAAO0yB,EAAS1yB,EAAIq5B,GAAWiic,EAAU97G,EAAOnmV,QAC9Dk+b,EAAYv3d,GAAO0yB,EAAS1yB,EAAIq5B,GAAWiic,EAAU97G,EAAOnmV,QAC5D3G,EAAS1yB,GAAO0yB,EAAS1yB,EAAIq5B,GAAWiic,EAAU97G,EAAOnmV,SAEzDi7b,EAAct0d,EAAItW,KAAK6qe,aAAe,EAAIl7b,EAAS3vC,KAAK8ma,KACxD8jE,EAAct0d,EAAIq5B,EAAS3vC,KAAK8ma,GAAK9ma,KAAK6qe,aAAe,EACzDgD,EAAYv3d,EAAIq5B,EAChB3vC,KAAKgre,UAAY,GAEjBJ,EAAct0d,EAAItW,KAAK6qe,aAAe,EAAI7qe,KAAK8ma,KAC/C8jE,EAAct0d,EAAItW,KAAK8ma,GAAK9ma,KAAK6qe,aAAe,EAChDgD,EAAYv3d,EAAI,EAChBtW,KAAKgre,UAAY,KA3DrBhic,EAAW,IAAI4ic,GAAgB5ic,EAASznB,EAAIiwd,EAAQxxe,KAAK8te,YAAYp+b,MAAQ,EAAI1vC,KAAKwqC,QAASxB,EAAS1yB,EAAIm7d,EAAQzxe,KAAK8te,YAAYn+b,OAAU,EAAI3vC,KAAKwqC,QAAWxqC,KAAK6qe,aAAe6G,GACvL9G,EAAcrpd,EAAIssd,EAAYtsd,EAAImuB,EAAQ,GACtC1G,EAAS1yB,EAAIs7d,GAAY5xe,KAAKyY,cAC9BuwB,EAAS1yB,GAAKi7d,EAAej7d,EAAI,EAAI,EAAIi7d,EAAej7d,GAAKm7d,EAAQC,GAErE1oc,EAAS1yB,EAAIq5B,EAAS3vC,KAAK6qe,aAAe+G,EAAU97G,EAAOnmV,SAC3D3G,EAAS1yB,EAAI/O,KAAK6L,IAAIm+d,EAAej7d,EAAGs7d,EAAU97G,EAAOnmV,QAAU8hc,EAC7Dzxe,KAAK8te,YAAYn+b,OAAU,EAAI3vC,KAAKwqC,QAAWxqC,KAAK6qe,aAAe6G,GAE7E7D,EAAYtsd,EAAImuB,EAAQ,EACpB1G,EAASznB,EAAIowd,IACb/G,EAAcrpd,GAAMowd,EAAU3oc,EAASznB,EACvCssd,EAAYtsd,GAAMowd,EAAU3oc,EAASznB,EACrCynB,EAASznB,EAAIowd,GAEb3oc,EAASznB,EAAImuB,EAAQiic,EAAU77G,EAAOpmV,QACtCk7b,EAAcrpd,GAAOynB,EAASznB,EAAImuB,GAAUiic,EAAU77G,EAAOpmV,OAC7Dm+b,EAAYtsd,GAAOynB,EAASznB,EAAImuB,GAAUiic,EAAU77G,EAAOpmV,OAC3D1G,EAASznB,GAAOynB,EAASznB,EAAImuB,GAAUiic,EAAU77G,EAAOpmV,QAExDk7b,EAAcrpd,EAAIvhB,KAAK6qe,aAAe,EAAIn7b,EAAQ1vC,KAAK6ma,KACvD+jE,EAAcrpd,EAAImuB,EAAQ1vC,KAAK6ma,GAAK7ma,KAAK6qe,aAAe,EACxDgD,EAAYtsd,EAAImuB,EAChB1vC,KAAKgre,UAAY,GAEjBJ,EAAcrpd,EAAIvhB,KAAK6qe,aAAe,EAAI7qe,KAAK6ma,KAC/C+jE,EAAcrpd,EAAIvhB,KAAK6ma,GAAK7ma,KAAK6qe,aAAe,EAChDgD,EAAYtsd,EAAI,EAChBvhB,KAAKgre,UAAY,IAkClB,IAAIC,GAAKjic,EAASznB,EAAGynB,EAAS1yB,EAAGo5B,EAAOC,IAEnD45Q,EAAQrtT,UAAUuye,kBAAoB,SAAUb,EAAY19b,GACxD,IAGI2hc,EAHA9xe,EAAQC,KACRuhB,EAAIxI,WAAW60d,EAAW55c,MAAM8O,MAChCxsB,EAAIyC,WAAW60d,EAAW55c,MAAMgP,KAEpC,IAAI9D,IAAU,IAAIY,QAAQ8tc,EAAY,CAClC9sc,SAAU9gC,KAAK8gC,SACfK,SAAU,SAAUlhC,GAChB4xe,EAAc5xe,EAAKygC,UAAYzgC,EAAK6gC,SACpC8sc,EAAW55c,MAAMoM,UAAY,KAC7Bwtc,EAAW55c,MAAM8O,KAAQvhB,EAAIswd,GAAc3hc,EAAK3uB,EAAIA,GAAM,KAC1Dqsd,EAAW55c,MAAMgP,IAAO1sB,EAAIu7d,GAAc3hc,EAAK55B,EAAIA,GAAM,MAE7DqC,IAAK,SAAUgkB,GACX58B,EAAMyue,UAAUZ,EAAY19b,EAAK3uB,EAAG2uB,EAAK55B,GACzCvW,EAAMgqB,QAAQ,oBAAqB,CAAEqoF,QAASryG,QAI1DwpT,EAAQrtT,UAAUsye,UAAY,SAAUZ,EAAYrsd,EAAGjL,GACnDs3d,EAAW55c,MAAM8O,KAAOvhB,EAAI,KAC5Bqsd,EAAW55c,MAAMgP,IAAM1sB,EAAI,MAE/BizS,EAAQrtT,UAAUywe,iBAAmB,WACjC,GAAI3se,KAAKsrB,SACL,IACQ9qB,SAASgB,iBAAiBxB,KAAKsrB,UAAUzuB,SACzCmD,KAAKkpG,WAAa4oY,YAAiBtxe,SAAS8C,cAActD,KAAKsrB,UAAUlpB,UAAUiqB,SAG3F,MAAOxrB,GACHb,KAAKkpG,WAAa4oY,YAAiB9xe,KAAKsrB,YAKpDi+R,EAAQrtT,UAAU61e,QAAU,WACxB,IAAIhye,EAAQC,KACRgye,EAAkBhye,KAAKkse,WAAalse,KAAKsrB,SAAYzoB,GAAW7C,KAAKgB,QAAQyY,GAAK,QAClF5W,GAAW7C,KAAKgB,QAAQyY,IAC5B,GAAIu4d,EAAgB,CAChB,IAAIC,EAAiBD,EAAeluY,WAKpC,GAJI9jG,KAAKkse,WAAalse,KAAKsrB,WACvB2md,EAAiBzxe,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,UAAYjZ,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,UAC7Gw4d,IAEHA,EACD,OAAO,KAEX,IAAIC,EAAYn5d,WAAWk5d,EAAe9id,aAAa,aAAe,EACtE,IAAI+P,IAAU,IAAIY,QAAQmyc,EAAgB,CACtCnxc,SAAU,IACVK,SAAU,SAAUlhC,GAEhBF,EAAMoye,kBAAkBF,EAAgBC,EAAYjye,EAAKygC,UAAYzgC,EAAK6gC,WAE9EnoB,IAAK,WACD5Y,EAAM2se,WAAY,EAClB3se,EAAMqye,aAAaH,QAKnC1oL,EAAQrtT,UAAUi2e,kBAAoB,SAAUE,EAAc1uc,EAASjD,GACnE2xc,EAAar+c,MAAMoM,UAAY,GAC/Biyc,EAAaz8c,aAAa,WAAY+N,EAAUjD,GAAWvzB,aAK/Do8S,EAAQrtT,UAAUk2e,aAAe,SAAUC,GACvCA,EAAaz8c,aAAa,UAAW,KACjC51B,KAAKsrB,WACL+md,EAAar+c,MAAMygB,QAAU,QAEjCz0C,KAAK+pB,QAAQ,oBAAqB,CAAEqoF,QAASpyG,QAOjDupT,EAAQrtT,UAAUysC,eAAiB,WAE/B,OAAO3oC,KAAKqpC,aADI,KAQpBkgR,EAAQrtT,UAAU2+B,cAAgB,WAC9B,MAAO,WAOX0uR,EAAQrtT,UAAUif,QAAU,WACxBgkB,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,MAC9BA,KAAKgB,QAAQg1B,UAAUvM,OAAO,cAQlC8/R,EAAQrtT,UAAU29B,kBAAoB,SAAU2H,EAASC,GACjDzhC,KAAKsvd,gBACLzgc,aAAoB7uB,KAAKgB,QAAQyY,GAAbzZ,kCAExBA,KAAKykO,SAAU,EACfzkO,KAAK0vB,UAETiP,GAAW,CACP3B,aAAS,IACVusR,EAAQrtT,UAAW,cAAU,GAChCyiC,GAAW,CACP3B,aAAS,IACVusR,EAAQrtT,UAAW,cAAU,GAChCyiC,GAAW,CACP3B,aAAS,IACVusR,EAAQrtT,UAAW,oBAAgB,GACtCyiC,GAAW,CACP3B,YAAS,OACVusR,EAAQrtT,UAAW,YAAQ,GAC9ByiC,GAAW,CACP3B,YAAS,KACVusR,EAAQrtT,UAAW,cAAU,GAChCyiC,GAAW,CACP3B,YAAS,MACVusR,EAAQrtT,UAAW,eAAW,GACjCyiC,GAAW,CACPvB,YAAQ,CAAEo/C,KAAM,OAAQ67L,WAAY,SAAU1iM,MAAO,KAAM4lS,UAAW,SAAU3lS,WAAY,YAAci2Z,KAC3GtiL,EAAQrtT,UAAW,iBAAa,GACnCyiC,GAAW,CACP3B,YAAS,OACVusR,EAAQrtT,UAAW,gBAAY,GAClCyiC,GAAW,CACP3B,aAAS,IACVusR,EAAQrtT,UAAW,uBAAmB,GACzCyiC,GAAW,CACP3B,YAAS,MACVusR,EAAQrtT,UAAW,gBAAY,GAClCyiC,GAAW,CACP3B,aAAS,IACVusR,EAAQrtT,UAAW,gBAAY,GAClCyiC,GAAW,CACP3B,aAAS,IACVusR,EAAQrtT,UAAW,kBAAc,GACpCyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,IAAOo8b,KAC3CviL,EAAQrtT,UAAW,cAAU,GAChCyiC,GAAW,CACP3B,YAAS,KACVusR,EAAQrtT,UAAW,eAAW,GACjCyiC,GAAW,CACP3B,YAAS,KACVusR,EAAQrtT,UAAW,kBAAc,GACpCyiC,GAAW,CACPvB,YAAQ,CAAE7b,EAAG,EAAGjL,EAAG,GAAK01d,KACzBziL,EAAQrtT,UAAW,kBAAc,GACpCyiC,GAAW,CACP3B,YAAS,KACVusR,EAAQrtT,UAAW,eAAW,GACjCyiC,GAAW,CACP3B,YAAS,KACVusR,EAAQrtT,UAAW,cAAU,GAChCyiC,GAAW,CACPvB,YAAQ,CAAE7b,EAAG,EAAGjL,EAAG,GAAK01d,KACzBziL,EAAQrtT,UAAW,gBAAY,GAClCyiC,GAAW,CACP3B,YAAS,IACVusR,EAAQrtT,UAAW,cAAU,GAChCyiC,GAAW,CACP3B,YAAS,IACVusR,EAAQrtT,UAAW,UAAM,GAC5ByiC,GAAW,CACP3B,YAAS,IACVusR,EAAQrtT,UAAW,UAAM,GAC5ByiC,GAAW,CACP3B,YAAS,IACVusR,EAAQrtT,UAAW,eAAW,GACjCyiC,GAAW,CACP3B,YAAS,IACVusR,EAAQrtT,UAAW,eAAW,GACjCyiC,GAAW,CACP3B,YAAS,KACVusR,EAAQrtT,UAAW,oBAAgB,GACtCyiC,GAAW,CACP3B,YAAS,OACVusR,EAAQrtT,UAAW,YAAQ,GAC9ByiC,GAAW,CACP3B,YAAS,aACVusR,EAAQrtT,UAAW,aAAS,GAC/ByiC,GAAW,CACPvB,YAAQ,CAAE7b,EAAG,EAAGjL,EAAG,EAAGo5B,MAAO,EAAGC,OAAQ,GAAKo8b,KAC9CxiL,EAAQrtT,UAAW,kBAAc,GACpCyiC,GAAW,CACP3B,YAAS,OACVusR,EAAQrtT,UAAW,qBAAiB,GACvCyiC,GAAW,CACP3B,eACDusR,EAAQrtT,UAAW,sBAAkB,GACxCyiC,GAAW,CACP3B,aAAS,IACVusR,EAAQrtT,UAAW,gBAAY,GAClCyiC,GAAW,CACP3B,aAAS,IACVusR,EAAQrtT,UAAW,kBAAc,GACpCyiC,GAAW,CACP3B,YAAS,OACVusR,EAAQrtT,UAAW,wBAAoB,GAC1CyiC,GAAW,CACP3B,YAAS,OACVusR,EAAQrtT,UAAW,uBAAmB,GACzCyiC,GAAW,CACPp/B,eACDgqT,EAAQrtT,UAAW,qBAAiB,GACvCyiC,GAAW,CACPp/B,eACDgqT,EAAQrtT,UAAW,cAAU,GAChCyiC,GAAW,CACPp/B,eACDgqT,EAAQrtT,UAAW,yBAAqB,GAC3CqtT,EAAU5qR,GAAW,CACjBlB,KACD8rR,GA7xBsB,CA+xB3BjjR,KEj6BEgsc,GAA6B,WAC7B,SAASA,EAAYp1e,EAAOyb,GAOpBzb,EAAQyb,GACR3Y,KAAKuye,OAASr1e,EACd8C,KAAKwye,KAAO75d,IAGZ3Y,KAAKuye,OAAS55d,EACd3Y,KAAKwye,KAAOt1e,GAwCpB,OArCAgB,OAAOwpB,eAAe4qd,EAAYp2e,UAAW,QAAS,CAGlDyrB,IAAK,WACD,OAAO3nB,KAAKuye,QAEhBzqd,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe4qd,EAAYp2e,UAAW,MAAO,CAEhDyrB,IAAK,WACD,OAAO3nB,KAAKwye,MAEhB1qd,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe4qd,EAAYp2e,UAAW,QAAS,CAMlDyrB,IAAK,WACD,OAAQ3nB,KAAKwye,KAAOxye,KAAKuye,QAE7Bzqd,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAe4qd,EAAYp2e,UAAW,SAAU,CAEnDyrB,IAAK,WACD,OAAO3nB,KAAKuye,QAAUvye,KAAKwye,KAAOxye,KAAKuye,QAAU,GAErDzqd,YAAY,EACZC,cAAc,IAEXuqd,EAtDsB,GCC7BG,GAAwB,WAMxB,SAASA,EAAOC,GACZ1ye,KAAKw0O,SAAW,EAChBx0O,KAAK0ye,MAAQA,EAwUjB,OAjUAD,EAAOv2e,UAAUy2e,6BAA+B,SAAU5mc,EAAMy1E,EAAOhlC,GACnE,IAAIo2Z,EAA8BC,GAA+Br2Z,EAAMzwC,GACnE+mc,EAAetxX,EAAQoxX,EAC3B,IAAKx1e,YAAkB2uC,EAAKgnc,kBACxB,OAAOD,EAGX,IADA,IAAIE,EAAczre,KAAKi9N,IAAI,GAAIj9N,KAAKC,MAAMyre,GAAQH,EAAc,MACvD90e,EAAK,EAAGuF,EAAKwoC,EAAKmnc,aAAcl1e,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC3D,IACIm1e,EAAkBH,EADPzve,EAAGvF,GAElB,GAAI40e,EAA+BpxX,EAAQ2xX,EACvC,MAEJL,EAAeK,EAEnB,OAAOL,GAOXL,EAAOv2e,UAAUk3e,eAAiB,SAAUrnc,EAAMywC,GAC9Cx8E,KAAKqze,sBAAsBtnc,IACrBA,EAAKunc,eAAmBtze,KAAKw0O,SAAW,GAC1CzoM,EAAKwnc,YAAYhxe,SAAWwpC,EAAKxpC,UAAYvC,KAAK2ye,6BAA6B5mc,EAAMA,EAAKync,YAAYhyX,MAAOhlC,GAC7GzwC,EAAKwnc,YAAYlge,IAAM04B,EAAKync,YAAY76d,IAAMozB,EAAKwnc,YAAYhxe,SAC1DwpC,EAAKync,YAAYt2e,MAAQ6uC,EAAKwnc,YAAYhxe,SAAW,GAAKwpC,EAAKync,YAAYt2e,MAAQ,EACpF6uC,EAAKwnc,YAAYnge,IAAM,EAGvB24B,EAAKwnc,YAAYnge,IAAM24B,EAAKync,YAAYt2e,MAAQ6uC,EAAKwnc,YAAYhxe,WAIrEwpC,EAAKwnc,YAAYhxe,SAAWwpC,EAAKxpC,UAAYvC,KAAK2ye,6BAA6B5mc,EAAMA,EAAKync,YAAYhyX,MAAOhlC,GAC7GzwC,EAAKwnc,YAAYnge,IAAM24B,EAAKync,YAAYt2e,MACxC6uC,EAAKwnc,YAAYlge,IAAM04B,EAAKync,YAAY76d,MAQhD85d,EAAOv2e,UAAUm3e,sBAAwB,SAAUtnc,GAE1B,OAAjBA,EAAK0nc,QACLzze,KAAKoT,IAAM24B,EAAK0nc,QAEE,OAAbzze,KAAKoT,KAAgBpT,KAAKoT,MAAQ6iC,OAAOy9b,oBAC9C1ze,KAAKoT,IAAM,GAGM,OAAjB24B,EAAK4nc,QACL3ze,KAAKqT,IAAM04B,EAAK4nc,QAEE,OAAb3ze,KAAKqT,KAAgBrT,KAAKqT,MAAQ4iC,OAAO29b,oBAC9C5ze,KAAKqT,IAAM,GAEXrT,KAAKoT,MAAQpT,KAAKqT,MAClBrT,KAAKqT,IAAM04B,EAAK8nc,UAAU11e,QAAQ,aAAe,EAAI6B,KAAKqT,IAAMrT,KAAKoT,IAAM,GAE/E24B,EAAKync,YAAc,IAAIlB,GAAYtye,KAAKoT,IAAKpT,KAAKqT,KAClD04B,EAAKwnc,YAAc,IAQvBd,EAAOv2e,UAAU43e,0BAA4B,SAAUt3Z,EAAMzwC,GACzD/rC,KAAK+ze,eAAehoc,GACpB/rC,KAAKoze,eAAernc,EAAMywC,GAC1Bx8E,KAAKg0e,kBAAkBjoc,EAAMywC,GAC7Bx8E,KAAKi0e,uBAAuBloc,EAAM/rC,KAAK0ye,QAO3CD,EAAOv2e,UAAU63e,eAAiB,SAAUhoc,GAIxC,GAFA/rC,KAAKoT,IAAM,KACXpT,KAAKqT,IAAM,MACN6ge,GAASnoc,GACV,IAAK,IAAI/tC,EAAK,EAAGuF,EAAKwoC,EAAKk4b,OAAQjme,EAAKuF,EAAG1G,OAAQmB,IAAM,CACrD,IAAIime,EAAS1ge,EAAGvF,GACXime,EAAO/ma,UAGZl9D,KAAKm0e,gBAAkB,EACvBpoc,EAAKqoc,eAAiBnQ,EAAOtoZ,OAAO9+E,SAC9Bone,EAAO94d,KAAKhN,QAAQ,WAAa,GAAK8le,EAAO94d,KAAKhN,QAAQ,cAAgB,IAA2B,eAArB4tC,EAAKq3V,aACnF6gG,EAAO94d,KAAKhN,QAAQ,QAAU,GAA0B,aAArB4tC,EAAKq3V,eACZ,WAA3B6gG,EAAOpkW,MAAMg0W,WAAqD,aAA3B5P,EAAOpkW,MAAMg0W,WACpB,SAA9B5P,EAAOpkW,MAAMw0W,eAChBr0e,KAAKm0e,gBAAiE,GAA/CG,GAAkBrQ,EAAOpkW,MAAO9zF,EAAKk4b,UAI3C,eAArBl4b,EAAKq3V,cACDpjY,KAAK0ye,MAAM6B,oBACXv0e,KAAKw0e,WAAWzoc,EAAMk4b,GAGtBjke,KAAKy0e,WAAWxQ,EAAOlpF,KAAO/6Y,KAAKm0e,gBAAiBlQ,EAAOhpF,KAAOj7Y,KAAKm0e,kBAItD,aAArBpoc,EAAKq3V,cACLpjY,KAAKw0O,UAA6B,WAAhByvP,EAAO94d,MAAqC,QAAhB84d,EAAO94d,MAAsC,WAApB84d,EAAOyQ,SAAyB,EAAI,EACvG10e,KAAK0ye,MAAM6B,oBACXv0e,KAAKy0e,WAAWxQ,EAAOlpF,KAAO/6Y,KAAKm0e,gBAAiBlQ,EAAOhpF,KAAOj7Y,KAAKm0e,iBAGvEn0e,KAAKw0e,WAAWzoc,EAAMk4b,OAM1CwO,EAAOv2e,UAAUs4e,WAAa,SAAUzoc,EAAMk4b,GACtCA,EAAO0Q,aAAangW,QAAUx0I,KAAK0ye,MAAMkC,QACrC50e,KAAK0ye,MAAMkC,OAAS7oc,EAAK8oc,aAAaxhe,MACtC4wd,EAAO/oF,KAAOl7Y,KAAK0ye,MAAMkC,MAAQ7oc,EAAK8oc,aAAatye,UAEnDvC,KAAK0ye,MAAMkC,OAAS7oc,EAAK8oc,aAAazhe,MACtC6wd,EAAOjpF,KAAOh7Y,KAAK0ye,MAAMkC,MAAQ7oc,EAAK8oc,aAAatye,WAG3DvC,KAAKy0e,WAAWxQ,EAAOjpF,KAAMipF,EAAO/oF,OAExCu3F,EAAOv2e,UAAUu4e,WAAa,SAAUrhe,EAAKC,IACxB,OAAbrT,KAAKoT,KAAgBpT,KAAKoT,IAAMA,KAChCpT,KAAKoT,IAAMA,IAEE,OAAbpT,KAAKqT,KAAgBrT,KAAKqT,IAAMA,KAChCrT,KAAKqT,IAAMA,GAEVrT,KAAKqT,MAAQrT,KAAKoT,KAAQpT,KAAKqT,IAAM,GAAKrT,KAAKoT,IAAM,IACtDpT,KAAKqT,IAAM,IAQnBo/d,EAAOv2e,UAAU83e,kBAAoB,SAAUjoc,EAAMywC,GACjD,IAAIt/E,EAAQ6uC,EAAKwnc,YAAYnge,IACzBuF,EAAMozB,EAAKwnc,YAAYlge,IAC3B,IAAK6ge,GAASnoc,GAAO,CACjB,IAAIxpC,EAAWwpC,EAAKwnc,YAAYhxe,SAC5BioC,EAAUuB,EAAK+oc,gBAAgB90e,KAAK0ye,OACxB,eAAZloc,GAAwC,UAAZA,EAC5BxqC,KAAK+0e,eAAehpc,EAAM7uC,EAAOyb,EAAKpW,GAErB,WAAZioC,EACLxqC,KAAKg1e,WAAWjpc,EAAM7uC,EAAOyb,EAAKpW,EAAUi6E,GAG5Cx8E,KAAKi1e,kBAAkBlpc,EAAM7uC,EAAOyb,EAAKpW,GAGjDwpC,EAAKwnc,YAAY/xX,MAAQz1E,EAAKwnc,YAAYlge,IAAM04B,EAAKwnc,YAAYnge,IACjEpT,KAAKk1e,sBAAsB14Z,EAAMzwC,IAErC0mc,EAAOv2e,UAAU+4e,kBAAoB,SAAUlpc,EAAM0nc,EAASE,EAASpxe,GACnEwpC,EAAKwnc,YAAc,CACfnge,IAAqB,MAAhB24B,EAAK0nc,QAAkB1nc,EAAK0nc,QAAUA,EAC3Cpge,IAAqB,MAAhB04B,EAAK4nc,QAAkB5nc,EAAK4nc,QAAUA,EAC3Cpxe,SAA2B,MAAjBwpC,EAAKxpC,SAAmBwpC,EAAKxpC,SAAWA,EAClDi/G,MAAOz1E,EAAKwnc,YAAY/xX,QAGhCixX,EAAOv2e,UAAU64e,eAAiB,SAAUhpc,EAAM7uC,EAAOyb,EAAKpW,GAC1D,IAAIkxe,EACAE,EACJF,EAAUlse,KAAKC,MAAMtK,EAAQqF,GAAYA,EACzCoxe,EAAUpse,KAAKu3D,KAAKnmD,EAAMpW,GAAYA,EACZ,eAAtBwpC,EAAKsoc,eACLZ,GAAWlxe,EACXoxe,GAAWpxe,GAEfvC,KAAKi1e,kBAAkBlpc,EAAM0nc,EAASE,EAASpxe,IAEnDkwe,EAAOv2e,UAAU84e,WAAa,SAAUjpc,EAAM7uC,EAAOyb,EAAKpW,EAAUi6E,GAChE,IACIi3Z,EACAE,EACApnR,EAAarvN,EACbA,EAAQ,GACRqvN,EAAa,EAGR,KAAQhqN,GADDA,GADZkxe,EAAUv2e,EAAiB,IAARA,GACeqF,IAE9Bkxe,GAAWlxe,GAEXkxe,EAAUlxe,EAAW,IACrBkxe,EAAWA,EAAUlxe,EAAakxe,EAAUlxe,KAIhDkxe,EAAUv2e,EAAU,EAAM,EAAOyb,EAAO,EAAKzb,EAAwB,IAAfyb,EAAMzb,IAC9CqF,EAAW,IACrBkxe,GAAYA,EAAUlxe,GAKzB,KAAQA,GADDA,GADZoxe,EAAWh7d,EAAM,EAAMA,EAA2B,KAApBA,EAAM4zM,GAAuB5zM,EAA2B,KAApBA,EAAM4zM,IACtChqN,IAE9Boxe,GAAWpxe,GAEXoxe,EAAUpxe,EAAW,IACrBoxe,EAAWA,EAAUpxe,EAAaoxe,EAAUpxe,GAEhDwpC,EAAKync,YAAc,IAAIlB,GAAYmB,EAASE,GAC5B,IAAZF,IACAlxe,EAAWvC,KAAK2ye,6BAA6B5mc,EAAMA,EAAKync,YAAYhyX,MAAOhlC,GAC3Em3Z,EAAUpse,KAAKu3D,KAAK60a,EAAUpxe,GAAYA,GAE9CvC,KAAKi1e,kBAAkBlpc,EAAM0nc,EAASE,EAASpxe,IAOnDkwe,EAAOv2e,UAAUg5e,sBAAwB,SAAU14Z,EAAMzwC,GAKrD,GAJAA,EAAK8oc,aAAe,CAChBxhe,IAAK04B,EAAKwnc,YAAYlge,IAAKD,IAAK24B,EAAKwnc,YAAYnge,IACjDouG,MAAOz1E,EAAKwnc,YAAY/xX,MAAOj/G,SAAUwpC,EAAKwnc,YAAYhxe,UAE7B,cAA7BvC,KAAK0ye,MAAMyC,cAA+B,CAC1C,IAAIltZ,GAAa7qF,YAAkB2uC,EAAKqpc,mBAA4Brpc,EAAKqpc,iBAAiBntZ,YACrFl8C,EAAKspc,WAAa,GAAKtpc,EAAKupc,aAAe,KAAOrtZ,IACnDl8C,EAAKwpc,+BAA+Bv1e,KAAK0ye,OACzC3mc,EAAKypc,mBAAmBh5Z,EAAMx8E,KAAK0ye,OACnC3mc,EAAK8oc,aAAatye,SAAYwpC,EAAK0pc,6BAAkD,aAAnB1pc,EAAK8nc,UACnE7ze,KAAK2ye,6BAA6B5mc,EAAMA,EAAKync,YAAYhyX,MAAOhlC,GAC9DzwC,EAAK8oc,aAAatye,UAGhCwpC,EAAK2pc,mBAAmB11e,KAAK0ye,MAAO3mc,EAAK8oc,aAAazhe,IAAK24B,EAAK8oc,aAAaxhe,IAAK04B,EAAK8oc,aAAatye,WAOxGkwe,EAAOv2e,UAAU+3e,uBAAyB,SAAUloc,EAAM2mc,GAEtD3mc,EAAK4pc,cAAgB,GACrB,IACIC,EADAC,EAAe9pc,EAAK8oc,aAAazhe,MAGF,UADjBs/d,EAAM73c,iBAC8C,eAAxB63c,EAAMyC,iBAC9Bppc,EAAKspc,WAAa,GAAKtpc,EAAKupc,aAAe,GAAKt1e,KAAKm0e,mBACvE0B,EAAe9pc,EAAK8oc,aAAazhe,IAAO24B,EAAK8oc,aAAazhe,IAAM24B,EAAK8oc,aAAatye,UAEtF,IAgBIuze,EAhBA9qe,EAAShL,KAAK4vT,UAAU7jR,GACxBsgC,EAAuC,OAA5BrhE,EAAOpI,MAAM,WACxBmze,EAAiB,EACjBC,EAAe,EAcnB,IAbIjqc,EAAKkqc,aAAelqc,EAAKkqc,YAAY93e,QAAQ,MAAQ,IACrD63e,EAAe7/d,SAAS41B,EAAKkqc,YAAY7oe,UAAU,EAAG2+B,EAAKkqc,YAAYp5e,QAAS,KAEpFkvC,EAAK/gC,OAAS0ne,EAAMzua,KAAKpoD,gBAAgB,CACrC7Q,OAAQqhE,EAAW,GAAKrhE,EACxBwF,YAAakie,EAAMwD,uBAEvBnqc,EAAKoqc,WAAapqc,EAAK/gC,OAAO+gC,EAAK8oc,aAAazhe,KAChD24B,EAAKqqc,SAAWrqc,EAAK/gC,OAAO+gC,EAAK8oc,aAAaxhe,KAC1C04B,EAAK8oc,aAAatye,WAAawpC,EAAK8oc,aAAatye,SAAW,IAAIpE,QAAQ,MAAQ,IAChF43e,GAAkBhqc,EAAK8oc,aAAatye,SAAW,IAAI5F,MAAM,KAAK,GAAGE,QAG7Dg5e,GAAgB9pc,EAAK8oc,aAAaxhe,KAASyie,IAA0BD,EAAeA,GAAgB9pc,EAAK8oc,aAAatye,SAC1Huze,EAAwBD,EACxBD,EAAct3e,YAAO,GAAIjC,YAAS,aAAc0vC,EAAK6pc,YAAa,MAAM,GACpES,GAAOR,EAAc9pc,EAAK8oc,eAC1ByB,GAAmB5D,EAAOmD,EAAc71e,KAAKu2e,YAAYxqc,EAAMsgC,EAAUrhE,EAAQ6qe,GAAeD,EAAY7pc,GAGhH8pc,IAAiBA,EAAe,IAAI13e,QAAQ,MAAQ,IAAM03e,EAAe,IAAIl5e,MAAM,KAAK,GAAGE,OAAS,KACpGg5e,GAAgBA,EAAe,IAAIl5e,MAAM,KAAK,GAAGE,QAAUm5e,GAAgBD,IACtEF,EAAahie,QAAQmie,GAAgBD,GAAkBF,IACxC9pc,EAAK8oc,aAAaxhe,KAClCije,GAAmB5D,EAAOmD,EAAc71e,KAAKu2e,YAAYxqc,EAAMsgC,EAAUrhE,EAAQ6qe,GAAeD,EAAY7pc,GAGhHA,EAAKyqc,kBACLzqc,EAAKyqc,iBAAiBx2e,KAAK0ye,QAQnCD,EAAOv2e,UAAU0zT,UAAY,SAAU7jR,GACnC,OAAIA,EAAKkqc,YACiC,IAAlClqc,EAAKkqc,YAAY93e,QAAQ,OAAuD,IAAzC4tC,EAAKkqc,YAAY93e,QAAQ,YAAqB4tC,EAAK0qc,WACnF,WAEJ1qc,EAAKkqc,YAETlqc,EAAK0qc,WAAa,WAAa,IAO1ChE,EAAOv2e,UAAUq6e,YAAc,SAAUxqc,EAAMsgC,EAAUrhE,EAAQ6qe,GAC7D,OAAOxpa,EAAWrhE,EAAOtO,QAAQ,UAAWqvC,EAAK/gC,OAAO6qe,IAClD9pc,EAAK/gC,OAAO6qe,IAEfpD,EAhViB,GCAjBiE,GAAc,cAEd//b,GAAO,OAIPggc,GAAe,eAEfC,GAAa,aAEbC,GAAc,cAEdC,GAAsB,sBAEtBC,GAAe,eAEfC,GAAkB,kBAIlBC,GAAsB,sBAEtBC,GAAuB,uBAEvBC,GAAgB,gBAEhBC,GAAiB,iBAEjBC,GAAkB,kBAElBC,GAAa,aAIbC,GAAY,YAEZC,GAAkB,kBAElBC,GAAiB,iBAEjBC,GAAe,eAEfC,GAAe,eAEfC,GAAe,eAEfC,GAAoB,oBAEpBC,GAAU,UAEVC,GAAe,eAEf9qb,GAAc,cAId+qb,GAAc,cAEdC,GAAY,YAEZC,GAAgB,gBAIhBpyZ,GAAuB,uBAQvBqyZ,GAAS,SAETC,GAAS,WAETjzZ,GAAe,eAEfkzZ,GAAc,cAIdC,GAAY,YCzFnBj6c,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAS5Dy5c,GAAyC,SAAUp5c,GAEnD,SAASo5c,IACL,OAAkB,OAAXp5c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAgC/D,OAlCAq+B,GAAUk6c,EAAyBp5c,GAInCR,GAAW,CACP3B,YAAS,MACVu7c,EAAwBr8e,UAAW,SAAK,GAC3CyiC,GAAW,CACP3B,YAAS,MACVu7c,EAAwBr8e,UAAW,SAAK,GAC3CyiC,GAAW,CACP3B,YAAS,OACVu7c,EAAwBr8e,UAAW,eAAW,GACjDyiC,GAAW,CACP3B,YAAS,WACVu7c,EAAwBr8e,UAAW,2BAAuB,GAC7DyiC,GAAW,CACP3B,YAAS,UACVu7c,EAAwBr8e,UAAW,uBAAmB,GACzDyiC,GAAW,CACP3B,YAAS,UACVu7c,EAAwBr8e,UAAW,cAAU,GAChDyiC,GAAW,CACP3B,YAAS,WACVu7c,EAAwBr8e,UAAW,yBAAqB,GAC3DyiC,GAAW,CACP3B,YAAS,OACVu7c,EAAwBr8e,UAAW,iBAAa,GACnDyiC,GAAW,CACP3B,YAAS,OACVu7c,EAAwBr8e,UAAW,iBAAa,GACnDyiC,GAAW,CACP3B,YAAS,OACVu7c,EAAwBr8e,UAAW,mBAAe,GAC9Cq8e,EAnCkC,CAoC3Clzc,KAKEmzc,GAA6B,SAAUr5c,GAEvC,SAASq5c,IACL,OAAkB,OAAXr5c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUm6c,EAAar5c,GAIvBR,GAAW,CACP3B,YAAS,KACVw7c,EAAYt8e,UAAW,aAAS,GACnCyiC,GAAW,CACP3B,YAAS,IACVw7c,EAAYt8e,UAAW,aAAS,GACnCyiC,GAAW,CACP3B,YAAS,cACVw7c,EAAYt8e,UAAW,YAAQ,GAC3Bs8e,EAdsB,CAe/Bnzc,KAKEozc,GAAsC,SAAUt5c,GAEhD,SAASs5c,IACL,OAAkB,OAAXt5c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAoB/D,OAtBAq+B,GAAUo6c,EAAsBt5c,GAIhCR,GAAW,CACP3B,YAAS,OACVy7c,EAAqBv8e,UAAW,aAAS,GAC5CyiC,GAAW,CACP3B,YAAS,OACVy7c,EAAqBv8e,UAAW,WAAO,GAC1CyiC,GAAW,CACP3B,YAAS,KACVy7c,EAAqBv8e,UAAW,YAAQ,GAC3CyiC,GAAW,CACP3B,YAAS,OACVy7c,EAAqBv8e,UAAW,wBAAoB,GACvDyiC,GAAW,CACP3B,YAAS,OACVy7c,EAAqBv8e,UAAW,wBAAoB,GACvDyiC,GAAW,CACP3B,YAAS,KACVy7c,EAAqBv8e,UAAW,YAAQ,GACpCu8e,EAvB+B,CAwBxCpzc,KAKEqzc,GAAmC,SAAUv5c,GAE7C,SAASu5c,IACL,OAAkB,OAAXv5c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuE/D,OAzEAq+B,GAAUq6c,EAAmBv5c,GAI7BR,GAAW,CACP3B,aAAS,IACV07c,EAAkBx8e,UAAW,eAAW,GAC3CyiC,GAAW,CACP3B,aAAS,IACV07c,EAAkBx8e,UAAW,qBAAiB,GACjDyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,WAAO,GACvCyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,YACV07c,EAAkBx8e,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,iBAAa,GAC7CyiC,GAAW,CACP3B,YAAS,SACV07c,EAAkBx8e,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,aAAS,IACV07c,EAAkBx8e,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,mBAAe,GAC/CyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,mBAAe,GAC/CyiC,GAAW,CACP3B,aAAS,IACV07c,EAAkBx8e,UAAW,mBAAe,GAC/CyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,oBAAgB,GAChDyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,kBAAc,GAC9CyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,uBAAmB,GACnDyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,cAAejmC,MAAO,GAAK0sT,KAC7Cs8I,EAAkBx8e,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,KACV07c,EAAkBx8e,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,YAAS,WACV07c,EAAkBx8e,UAAW,2BAAuB,GACvDyiC,GAAW,CACP3B,YAAS,WACV07c,EAAkBx8e,UAAW,yBAAqB,GACrDyiC,GAAW,CACPvB,YAAQ6gD,GAAMqlZ,mBAAoBxmZ,KACnC47Z,EAAkBx8e,UAAW,iBAAa,GAC7CyiC,GAAW,CACP3B,YAAS,WACV07c,EAAkBx8e,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,IACV07c,EAAkBx8e,UAAW,eAAW,GACpCw8e,EA1E4B,CA2ErCrzc,KAKEszc,GAAkC,SAAUx5c,GAE5C,SAASw5c,IACL,OAAkB,OAAXx5c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAiB/D,OAnBAq+B,GAAUs6c,EAAkBx5c,GAI5BR,GAAW,CACP3B,YAAS,WACV27c,EAAiBz8e,UAAW,iBAAa,GAC5CyiC,GAAW,CACP3B,YAAS,SACV27c,EAAiBz8e,UAAW,gBAAY,GAC3CyiC,GAAW,CACPvB,YAAQ6gD,GAAM6kZ,cAAehmZ,KAC9B67Z,EAAiBz8e,UAAW,iBAAa,GAC5CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,KAAMjmC,MAAO,EAAGvkC,KAAM,aAAeqte,KACvDG,EAAiBz8e,UAAW,cAAU,GACzCyiC,GAAW,CACPtB,YAAW,GAAIo7c,KAChBE,EAAiBz8e,UAAW,kBAAc,GACtCy8e,EApB2B,CAqBpCtzc,KAOEuzc,GAAwC,SAAUz5c,GAElD,SAASy5c,IACL,OAAkB,OAAXz5c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAUu6c,EAAwBz5c,GAIlCR,GAAW,CACP3B,YAAS,OACV47c,EAAuB18e,UAAW,eAAW,GAChDyiC,GAAW,CACP3B,YAAS,OACV47c,EAAuB18e,UAAW,eAAW,GACzC08e,EAXiC,CAY1Cvzc,KAKEwzc,GAAmC,SAAU15c,GAE7C,SAAS05c,IACL,OAAkB,OAAX15c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUw6c,EAAmB15c,GAI7BR,GAAW,CACP3B,aAAS,IACV67c,EAAkB38e,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,OACV67c,EAAkB38e,UAAW,oBAAgB,GAChDyiC,GAAW,CACPvB,YAAQ,GAAIw7c,KACbC,EAAkB38e,UAAW,aAAS,GAClC28e,EAd4B,CAerCxzc,KChQEhH,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAqB5D2uE,GAAqB,SAAUtuE,GAE/B,SAASsuE,IAOL,IAAI1tG,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAOhE,OALAD,EAAMw3E,KAAO,GAEbx3E,EAAM+4e,UAAY,GAElB/4e,EAAMg5e,SAAW,GACVh5e,EA4BX,OA3CAs+B,GAAUovE,EAAKtuE,GAuBfsuE,EAAIvxG,UAAU88e,YAAc,SAAUjtc,EAAMktc,GACxC,IAAIvpc,EAAQ,EAER3D,EAAKmxB,SAAWnxB,EAAKmtc,qBACrBxpc,GAAU3D,EAAKotc,aAAaptc,EAAKqtc,aAAeH,EAC5Cltc,EAAKstc,cAActtc,EAAKqtc,YAHb,GAGiE,GAAvBrtc,EAAKwwT,UAAU7sT,OAExE3D,EAAKutc,gBACLt5e,KAAK+4e,SAASn3e,KAAK8tC,GAGnB1vC,KAAK84e,UAAUl3e,KAAK8tC,IAG5B/Q,GAAW,CACP3B,YAAS,SACVywE,EAAIvxG,UAAW,cAAU,GAC5ByiC,GAAW,CACPvB,YAAQ,GAAIg/T,KACb3uP,EAAIvxG,UAAW,cAAU,GACrBuxG,EA5Cc,CA6CvBpoE,KAKEw3B,GAAwB,SAAU19B,GAElC,SAAS09B,IAOL,IAAI98D,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAShE,OAPAD,EAAMw3E,KAAO,GAEbx3E,EAAM+4e,UAAY,GAElB/4e,EAAMg5e,SAAW,GAEjBh5e,EAAMyqC,QAAU,EACTzqC,EA4BX,OA7CAs+B,GAAUw+B,EAAQ19B,GAyBlB09B,EAAO3gE,UAAU88e,YAAc,SAAUjtc,EAAMktc,GAC3C,IAAItpc,EAAS,EAET5D,EAAKmxB,SAAWnxB,EAAKmtc,qBACrBvpc,GAAW5D,EAAKotc,aAAaptc,EAAKqtc,aAAeH,EAC7Cltc,EAAKstc,cAActtc,EAAKqtc,YAHb,GAGiE,GAAvBrtc,EAAKwwT,UAAU7sT,OAExE3D,EAAKutc,gBACLt5e,KAAK+4e,SAASn3e,KAAK+tC,GAGnB3vC,KAAK84e,UAAUl3e,KAAK+tC,IAG5BhR,GAAW,CACP3B,YAAS,SACV6/B,EAAO3gE,UAAW,aAAS,GAC9ByiC,GAAW,CACPvB,YAAQ,GAAIg/T,KACbv/R,EAAO3gE,UAAW,cAAU,GACxB2gE,EA9CiB,CA+C1Bx3B,KAKEk0c,GAAgC,SAAUp6c,GAE1C,SAASo6c,IACL,OAAkB,OAAXp6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUk7c,EAAgBp6c,GAI1BR,GAAW,CACP3B,YAAS,IACVu8c,EAAer9e,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,KACVu8c,EAAer9e,UAAW,iBAAa,GAC1CyiC,GAAW,CACP3B,YAAS,OACVu8c,EAAer9e,UAAW,aAAS,GAC/Bq9e,EAdyB,CAelCl0c,KAKEm0c,GAAgC,SAAUr6c,GAE1C,SAASq6c,IACL,OAAkB,OAAXr6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUm7c,EAAgBr6c,GAI1BR,GAAW,CACP3B,YAAS,KACVw8c,EAAet9e,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,KACVw8c,EAAet9e,UAAW,iBAAa,GAC1CyiC,GAAW,CACP3B,YAAS,OACVw8c,EAAet9e,UAAW,aAAS,GAC/Bs9e,EAdyB,CAelCn0c,KAKEo0c,GAA0B,SAAUt6c,GAEpC,SAASs6c,IACL,OAAkB,OAAXt6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUo7c,EAAUt6c,GAIpBR,GAAW,CACP3B,YAAS,IACVy8c,EAASv9e,UAAW,aAAS,GAChCyiC,GAAW,CACP3B,YAAS,KACVy8c,EAASv9e,UAAW,iBAAa,GACpCyiC,GAAW,CACP3B,YAAS,OACVy8c,EAASv9e,UAAW,aAAS,GACzBu9e,EAdmB,CAe5Bp0c,KAKEq0c,GAAgC,SAAUv6c,GAE1C,SAASu6c,IACL,OAAkB,OAAXv6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUq7c,EAAgBv6c,GAI1BR,GAAW,CACP3B,YAAS,IACV08c,EAAex9e,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,IACV08c,EAAex9e,UAAW,cAAU,GACvCyiC,GAAW,CACP3B,YAAS,OACV08c,EAAex9e,UAAW,aAAS,GAC/Bw9e,EAdyB,CAelCr0c,KAKEs0c,GAAgC,SAAUx6c,GAE1C,SAASw6c,IACL,OAAkB,OAAXx6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUs7c,EAAgBx6c,GAI1BR,GAAW,CACP3B,YAAS,KACV28c,EAAez9e,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,IACV28c,EAAez9e,UAAW,cAAU,GACvCyiC,GAAW,CACP3B,YAAS,OACV28c,EAAez9e,UAAW,aAAS,GAC/By9e,EAdyB,CAelCt0c,KAKEu0c,GAAkC,SAAUz6c,GAE5C,SAASy6c,IACL,OAAkB,OAAXz6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUu7c,EAAkBz6c,GAI5BR,GAAW,CACP3B,aAAS,IACV48c,EAAiB19e,UAAW,cAAU,GACzCyiC,GAAW,CACP3B,YAAS,OACV48c,EAAiB19e,UAAW,YAAQ,GACvCyiC,GAAW,CACPvB,YAAQ6gD,GAAMilZ,mBAAoBpmZ,KACnC88Z,EAAiB19e,UAAW,iBAAa,GACrC09e,EAd2B,CAepCv0c,KAOE2yC,GAAsB,SAAU74C,GAGhC,SAAS64C,EAAKz3E,EAAQytB,EAAUkN,EAAc78B,GAC1C,IAAI0B,EAAQo/B,EAAO79B,KAAKtB,KAAMO,EAAQytB,EAAUkN,EAAc78B,IAAY2B,KAmC1E,OAjCAD,EAAM41e,cAAgB,GAEtB51e,EAAMkke,OAAS,GAEflke,EAAMmwC,KAAO,IAAI+6b,QAAKjve,OAAWA,EAAW,EAAG,GAE/C+D,EAAM85e,eAAiB,KAEvB95e,EAAMmze,aAAe,CAAC,GAAI,EAAG,EAAG,GAEhCnze,EAAM02e,YAAa,EAEnB12e,EAAM+5e,QAAU,KAEhB/5e,EAAMg6e,YAAc,KAEpBh6e,EAAMi6e,sBAAwB,EAE9Bj6e,EAAMk6e,SAAU,EAEhBl6e,EAAMm6e,qBAAsB,EAE5Bn6e,EAAMo6e,gBAAkB,GAExBp6e,EAAMq6e,UAAY,IAAI39Z,GAAK,EAAG,GAO9B18E,EAAMm5e,oBAAqB,EAC3Bn5e,EAAMyxY,MAAQzxY,EAAMype,cACbzpe,EAwkBX,OA9mBAs+B,GAAU25C,EAAM74C,GA8ChB64C,EAAK97E,UAAUi9e,aAAe,SAAUkB,GACpC,MAA0B,WAAtBr6e,KAAKs6e,aACE,GAEPD,GAAeA,EAAUxF,eAAgB70e,KAAKu6e,SAASF,EAAUxF,cAG9D70e,KAAKw6e,eAAe7qc,OAFhB,GAUfqoC,EAAK97E,UAAUq+e,SAAW,SAAU/ne,GAChC,OAAQioe,GAAOz6e,KAAK85e,QAAStne,KACvBxS,KAAKs5e,iBAAmBt5e,KAAK85e,SAAWtne,EAAMa,KAASrT,KAAKs5e,iBAAmBt5e,KAAK85e,SAAWtne,EAAMY,KAQ/G4kE,EAAK97E,UAAUm9e,cAAgB,SAAUgB,EAAWK,GAChD,IAcIt5d,EACA5kB,EAfA49e,EAAY,EACZO,EAAoC,eAArB36e,KAAKojY,YACxB,GAAIpjY,KAAKonJ,QACLpnJ,KAAKo6e,UAAY9P,GAAYtqe,KAAKonJ,MAAOpnJ,KAAK46e,YAC9CR,EAAYp6e,KAAKo6e,UAAUzqc,OAAS+qc,EAChC16e,KAAKkwC,KAAKR,OAAS1vC,KAAKkwC,KAAKP,QAAQ,CACrC,IAAI/iC,EAAW+te,EAAe36e,KAAKkwC,KAAKR,MAAQ1vC,KAAKkwC,KAAKP,OAC1D3vC,KAAKm6e,gBAAkB9vS,GAASrqM,KAAKonJ,MAAOpnJ,KAAK46e,WAAYhue,GAC7Dwte,GAAyBp6e,KAAKm6e,gBAAgBt9e,OAGtD,GAA2B,WAAvBmD,KAAK66e,cACL,OAAOT,EAAYM,EAIvB,IAAII,EAAYV,EAAYM,EAAe16e,KAAK+6e,aAAe/6e,KAAKg7e,cACzC,aAArBh7e,KAAKojY,YAA8BpjY,KAAKi7e,aAAavrc,MAAQ1vC,KAAKi7e,aAAatrc,QAAU3vC,KAAKg6e,sBACpG,GAAIK,GAAar6e,KAAKk7e,oBAAqB,CACvC,IAAI1oe,EAAQ6ne,EAAUxF,aAClBr4Z,EAAkC,eAA1B69Z,EAAUj3G,YAAgCi3G,EAAUnqc,KAAKR,MAAQ2qc,EAAUnqc,KAAKP,OAC5F,IAAKn9B,IAAUgqE,EACX,OAAO,EAEFx8E,KAAKu6e,SAAS/ne,KAInBsoe,GADA15d,GAFA5kB,EAAQwD,KAAKm7e,eAAed,MAET79Z,IADnBp7D,EAAQ5kB,GAAUggF,EAAOhqE,EAAMgvG,QACGs5X,EAAaA,EAAY15d,EAAQ,IAAM5O,EAAMgvG,QAC3Ds5X,EAAcA,EAAY15d,EAAQ,GAG9D,OAAO05d,GAQX9ia,EAAK97E,UAAUk/e,iBAAmB,WAC9B,IAAI5+e,EAAQwD,KAAK85e,QACjB,GAAc,OAAVt9e,IAAmBwD,KAAKu6e,SAASv6e,KAAKo5e,YAAYvE,cAElD,OADA70e,KAAK+5e,YAAc/5e,KAAKkwC,KACjB,KAEX,IAAI19B,EAAQxS,KAAKo5e,YAAYvE,aACxB70e,KAAKs5e,gBAMFt5e,KAAK85e,QAAUtne,EAAMY,MACrB5W,EAAQgW,EAAMY,KANdpT,KAAK85e,QAAUtne,EAAMa,MACrB7W,EAAQgW,EAAMa,KAQtBrT,KAAK+5e,YAAcz7e,YAAO,GAAI0B,KAAKkwC,KAAM,MAAM,GACtB,eAArBlwC,KAAKojY,aACL5mY,EAAQwD,KAAKo5e,YAAYlpc,KAAKP,OAAU0rc,GAAmB7+e,EAAOwD,KAAKo5e,aAAep5e,KAAKo5e,YAAYlpc,KAAKP,OAC5G3vC,KAAK+5e,YAAYzje,EAAItW,KAAKo5e,YAAYlpc,KAAK55B,EAAI9Z,IAG/CA,EAAQ6+e,GAAmB7+e,EAAOwD,KAAKo5e,aAAep5e,KAAKo5e,YAAYlpc,KAAKR,MAC5E1vC,KAAK+5e,YAAYx4d,EAAIvhB,KAAKo5e,YAAYlpc,KAAK3uB,EAAI/kB,IAGvDw7E,EAAK97E,UAAUi/e,eAAiB,SAAUd,GACtC,IAAI79e,EAAQ,EAOZ,OALIA,EADAwD,KAAKs5e,gBACGe,EAAUiB,WAAajB,EAAUxF,aAAazhe,IAAMine,EAAUxF,aAAaxhe,IAG3Egne,EAAUiB,WAAajB,EAAUxF,aAAaxhe,IAAMgne,EAAUxF,aAAazhe,IAEhF7L,KAAKgH,IAAIvO,KAAK85e,QAAUt9e,IAQnCw7E,EAAK97E,UAAUq5e,+BAAiC,SAAU7C,GACtD,GAAI6I,GAAUv7e,MAAO,CACjB,IAAIswL,EAAYtwL,KAAKuze,YACjBr2e,OAAQ,EACRyb,OAAM,EAGNA,GAFC3Y,KAAKs7e,YAAc5I,EAAM8I,YAC1Bt+e,EAAQ8C,KAAKuze,YAAYnge,IAAMpT,KAAKs1e,aAAet1e,KAAKuze,YAAY/xX,OACtDxhH,KAAKq1e,WAAar1e,KAAKuze,YAAY/xX,OAGjDtkH,EAAQ8C,KAAKuze,YAAYlge,IAAOrT,KAAKs1e,aAAet1e,KAAKuze,YAAY/xX,OACtDxhH,KAAKq1e,WAAar1e,KAAKuze,YAAY/xX,MAElDtkH,EAAQozL,EAAUl9K,MAClBuF,GAAa23K,EAAUl9K,IAAMlW,EAC7BA,EAAQozL,EAAUl9K,KAElBuF,EAAM23K,EAAUj9K,MAChBnW,GAAiByb,EAAM23K,EAAUj9K,IACjCsF,EAAM23K,EAAUj9K,KAEpBrT,KAAKwze,YAAc,IAAIlB,GAAYp1e,EAAOyb,GAC1C3Y,KAAK60e,aAAe,CAAEzhe,IAAKpT,KAAKwze,YAAYt2e,MAAOmW,IAAKrT,KAAKwze,YAAY76d,IACrE6oG,MAAOxhH,KAAKwze,YAAYhyX,MAAOj/G,SAAUvC,KAAK60e,aAAatye,YASvEy1E,EAAK97E,UAAUs5e,mBAAqB,SAAUh5Z,EAAMk2Z,GAChD,GAAIA,EAAM+I,6BAA8B,CACpC,GAAyB,eAArBz7e,KAAKojY,aAA4D,MAA5BsvG,EAAMgJ,aAAav+d,KACxD,IAAK,IAAIvgB,EAAI,EAAGA,EAAIoD,KAAKike,OAAOpne,OAAQD,IAAK,CAEzC,IADA,IAAI47V,EAAS,GACJx6V,EAAK,EAAGuF,EAAKvD,KAAKike,OAAOrne,GAAG++e,cAAe39e,EAAKuF,EAAG1G,OAAQmB,IAAM,EAClE29E,EAASp4E,EAAGvF,IACJu6V,OAASv4V,KAAK60e,aAAazhe,KAASuoE,EAAO48Q,OAASv4V,KAAK60e,aAAaxhe,KAC9EmlV,EAAO52V,KAAK+5E,EAAO68Q,QAG3B,IAAK,IAAIzjU,EAAK,EAAGI,EAAKu9c,EAAMkJ,gBAAiB7md,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAEtC,cADrBgX,EAAO5W,EAAGJ,IACLquW,aAA+BhmY,YAAkB2uC,EAAKk4b,OAAOrne,MAClEmvC,EAAKk4b,OAAOrne,GAAGo+Y,KAAOzzY,KAAK6L,IAAIhX,MAAMmL,KAAMixV,GAC3CzsT,EAAKk4b,OAAOrne,GAAGs+Y,KAAO3zY,KAAK8L,IAAIjX,MAAMmL,KAAMixV,GAC3CzsT,EAAK8vc,WAAW/H,0BAA0Bt3Z,EAAMzwC,KAKhE,GAAyB,aAArB/rC,KAAKojY,aAA0D,MAA5BsvG,EAAMgJ,aAAav+d,KACtD,IAASvgB,EAAI,EAAGA,EAAIoD,KAAKike,OAAOpne,OAAQD,IAAK,CAEzC,IADA,IAAI27V,EAAS,GACJjjU,EAAK,EAAGk3F,EAAKxsH,KAAKike,OAAOrne,GAAG++e,cAAermd,EAAKk3F,EAAG3vH,OAAQy4B,IAAM,CACtE,IAAIqmD,KAAS6wC,EAAGl3F,IACJkjU,OAASx4V,KAAK60e,aAAazhe,KAASuoE,EAAO68Q,OAASx4V,KAAK60e,aAAaxhe,KAC9EklV,EAAO32V,KAAK+5E,EAAO48Q,QAG3B,IAAK,IAAItoM,EAAK,EAAGC,EAAKwiV,EAAMkJ,gBAAiB3rV,EAAKC,EAAGrzJ,OAAQozJ,IAAM,CAC/D,IAAIlkH,EACqB,gBADrBA,EAAOmkH,EAAGD,IACLmzO,aAAiChmY,YAAkB2uC,EAAKk4b,OAAOrne,MACpEmvC,EAAKk4b,OAAOrne,GAAGm+Y,KAAOxzY,KAAK6L,IAAIhX,MAAMmL,KAAMgxV,GAC3CxsT,EAAKk4b,OAAOrne,GAAGq+Y,KAAO1zY,KAAK8L,IAAIjX,MAAMmL,KAAMgxV,GAC3CxsT,EAAK8vc,WAAW/H,0BAA0Bt3Z,EAAMzwC,QAaxEisC,EAAK97E,UAAUw5e,mBAAqB,SAAUhD,EAAOe,EAASE,EAASpxe,GACnE,IAAIwqe,EAAW,CACXhqd,QAAQ,EAAO3I,KAAM68d,GAAqBlrc,KAAM/rC,KAChDyze,QAASA,EAASE,QAASA,EAASpxe,SAAUA,GAElDmwe,EAAM3od,QAAQktd,GAAqBlK,GAC9BA,EAAShqd,SACV/iB,KAAK60e,aAAe,CAAEzhe,IAAK25d,EAAS0G,QAASpge,IAAK05d,EAAS4G,QAASpxe,SAAUwqe,EAASxqe,SACnFi/G,MAAOurX,EAAS4G,QAAU5G,EAAS0G,WAS/Cz7Z,EAAK97E,UAAU44e,gBAAkB,SAAUpC,GACvC,IAAIloc,EAAUxqC,KAAKq0e,aACnB,GAAgB,SAAZ7pc,EACA,OAAOA,EAEX,OAAQxqC,KAAKojY,aACT,IAAK,aAEG54V,EADAkoc,EAAM6B,oBACKv0e,KAAKy2e,YAAcz2e,KAAK67e,WAAWnJ,MAAMoJ,WAAa,QAAU,SAGjE,OAEd,MACJ,IAAK,WAKGtxc,EAJCkoc,EAAM6B,oBAIG,OAHCv0e,KAAKy2e,YAAcz2e,KAAK67e,WAAWnJ,MAAMoJ,WAAa,QAAU,SAOvF,OAAOtxc,GAQXwtC,EAAK97E,UAAUs6e,iBAAmB,SAAU9D,GACxC,IAAIqJ,EAGAC,EAFAC,EAAc,EACdC,GAAc,EAElBl8e,KAAKwxY,MAAQxxY,KAAKwpe,cAClBxpe,KAAKi7e,aAAe,IAAIx+Z,GAAK,EAAG,GAGhC,IAFA,IACIhH,EADA3vC,EAAS9lC,KAAKm8e,qBAETv/e,EAAI,EAAG+E,EAAM3B,KAAK21e,cAAc94e,OAAQD,EAAI+E,EAAK/E,IAAK,EAE3Do/e,EAAmBI,IADnB3ma,EAAQz1E,KAAK21e,cAAc/4e,IACWy/e,gBAElC5ma,EAAM+G,KAAO8tZ,GAAY70Z,EAAM4ma,aAAa3/e,QAAQ,QAAS,KAAMsD,KAAK41e,YACxEnga,EAAM6ma,eAAiBhS,GAAYtqe,KAAKu8e,WAAa9ma,EAAMljE,KAAK5N,KAAK,QAAU8wE,EAAM4ma,aAAcr8e,KAAK41e,aAGxGnga,EAAM+G,KAAO8tZ,GAAY70Z,EAAMljE,KAAMvS,KAAK41e,YAE9C,IAAIlmc,EAAQssc,EAAmBvma,EAAM6ma,eAAe5sc,MAAQ+lC,EAAM+G,KAAK9sC,MACnEA,EAAQ1vC,KAAKi7e,aAAavrc,QAC1B1vC,KAAKi7e,aAAavrc,MAAQA,EAC1B1vC,KAAKw8e,aAAe/ma,EAAMljE,MAE9B,IAAIo9B,EAASqsc,EAAmBvma,EAAM6ma,eAAe3sc,OAAS8lC,EAAM+G,KAAK7sC,OAOzE,GANIA,EAAS3vC,KAAKi7e,aAAatrc,SAC3B3vC,KAAKi7e,aAAatrc,OAASA,GAE3Bqsc,IACAvma,EAAMljE,KAAOvS,KAAKu8e,WAAa9ma,EAAMljE,KAAOkjE,EAAM4ma,aAAa1/e,MAAM,SAE1D,SAAXmpC,GAAgC,SAAXA,GAAgC,SAAXA,IAG9B,SAAXA,GAAqB9lC,KAAKwxY,MAAQ,MAAQ,IAA2B,eAArBxxY,KAAKojY,aACtDpjY,KAAKkwC,KAAKR,MAAQ,IAAMwsc,EAAa,CACrC,IAAIO,EAAST,EAAmBvma,EAAM6ma,eAAe5sc,MAAQ+lC,EAAM+G,KAAK9sC,MAWxE,OAVAqsc,EAAUV,GAAmB5la,EAAMj5E,MAAOwD,MAAQA,KAAKkwC,KAAKR,MAAS1vC,KAAKkwC,KAAK3uB,EAC/Ew6d,GAAUU,EAAS,EACa,UAA5Bz8e,KAAK08e,qBACK,IAAN9/e,GAAWm/e,EAAS/7e,KAAKkwC,KAAK3uB,IAC9Bw6d,EAAS/7e,KAAKkwC,KAAK3uB,GAEnB3kB,IAAMoD,KAAK21e,cAAc94e,OAAS,GAAOk/e,EAASU,EAAWz8e,KAAKkwC,KAAK3uB,EAAIvhB,KAAKkwC,KAAKR,QACrFqsc,EAAS/7e,KAAKkwC,KAAK3uB,EAAIvhB,KAAKkwC,KAAKR,MAAQ+sc,IAGzC32c,GACJ,IAAK,eACGlpC,EAAI,GACJoD,KAAK28e,cAAc//e,EAAGm/e,EAAQtma,EAAOuma,GAEzC,MACJ,IAAK,WACL,IAAK,WACGp/e,EAAI,IAAOoD,KAAKs7e,WAAqCS,EAASU,GAAUR,EAA3CF,GAAUE,KACvCj8e,KAAKwxY,MAAoB,aAAX1rW,EAAyB,GAAK,GAC5Co2c,GAAc,GAElB,MACJ,QACI,GAAIF,EAAkB,CAIlB,IAHA,IAAIr9e,OAAS,EACT8nZ,EAAU,GACV/hZ,OAAM,EACD8V,EAAQ,EAAGA,EAAQi7D,EAAMljE,KAAK1V,OAAQ2d,IAE3C,IADA7b,EAASi+e,GAASnna,EAAMljE,KAAKiI,GAAQxa,KAAKkwC,KAAKR,MAAQ1vC,KAAK21e,cAAc94e,OAAQmD,KAAK41e,aAC5E/4e,OAAS,EAChB,IAAK,IAAIsL,EAAI,EAAGA,EAAIxJ,EAAO9B,OAAQsL,IAC/BzD,EAAM/F,EAAOwJ,GACbs+Y,EAAQ7kZ,KAAK8C,QAIjB+hZ,EAAQ7kZ,KAAKjD,EAAO,IAG5B82E,EAAMljE,KAAOk0Y,OAGbhxU,EAAMljE,KAAOqqe,GAASnna,EAAMljE,KAAMvS,KAAKkwC,KAAKR,MAAQ1vC,KAAK21e,cAAc94e,OAAQmD,KAAK41e,YAGxF,IAAIiH,EAAYpna,EAAM+G,KAAK7sC,OAAS8lC,EAAMljE,KAAK1V,OAC3Cggf,EAAW78e,KAAKi7e,aAAatrc,SAC7B3vC,KAAKi7e,aAAatrc,OAASktc,GAIvCZ,EAAcj8e,KAAKs7e,WAAaS,EAASA,EAASU,GAG1D,GAAmB,IAAfz8e,KAAKwxY,OAAoC,eAArBxxY,KAAKojY,YAA8B,CAEvDpjY,KAAKw8e,aAAep/e,YAAkB4C,KAAKw8e,cAAgB,GAAKx8e,KAAKw8e,aACrE,IAAIM,GAAoC,MAAhB98e,KAAKwxY,OAAiC,IAAfxxY,KAAKwxY,QAA+B,MAAhBxxY,KAAKwxY,OACrD,MAAfxxY,KAAKwxY,OAAgC,MAAfxxY,KAAKwxY,MAEJ,YAAvBxxY,KAAK66e,gBAAgCiC,GAAqBV,GAAap8e,KAAKw8e,cAC5Ex8e,KAAKi7e,aAAe,IAAIx+Z,GAAKz8E,KAAKi7e,aAAatrc,OAAQ3vC,KAAKi7e,aAAavrc,OAGzE1vC,KAAKi7e,aC5jBd,SAAwBp+Z,EAAMtqE,EAAMi/X,EAAOkhG,GAC9C,IACIqK,EAEAptc,EACAw5b,EACA1zZ,EACAw5Z,EANA7oM,EAAW,IAAIk+L,GAAYoO,EAAM1xe,QAAQyY,IAEzCy1d,EAAiB,GAKjB5ie,EAAU,CACVmN,GAAI,cACJ8H,EAAGmxd,EAAMsK,gBAAgBz7d,EACzBjL,EAAGo8d,EAAMsK,gBAAgB1me,EACzB,YAAaumE,EAAKL,KAClB,aAAcK,EAAK0+R,UACnB,cAAe1+R,EAAKjH,WACpB,cAAeiH,EAAKw7L,WACpB,UAAa,UAAYm5H,EAAQ,UACjC,cAAe,UAIfurG,EAFAX,GAAa7pe,IACb28d,EAAiB38d,EAAK5V,MAAM,SACD,GAGf4V,EAEhB,IAAIi4d,EAAapkM,EAASq/L,WAAWn5d,EAASywe,GACzCrK,EAAMuK,aAAgBvK,EAAMwK,QAC7BxK,EAAM1xe,QAAQgB,YAAY0we,EAAMlG,WAGpC,GAA8B,kBAAnB0C,GAA+BA,EAAerye,OAAS,EAC9D,IAAK,IAAID,EAAI,EAAG+E,EAAMute,EAAerye,OAAQD,EAAI+E,EAAK/E,IAClD+yC,EAAU26b,GAAY4E,EAAetye,GAAIigF,GAAMltC,OAC/Cw5b,EAAM78d,EAAQgK,EAAO1Z,EAAI+yC,EACzB8lC,EAAQy5Z,EAAetye,GACvBqye,EAAe7oM,EAASs/L,YAAY,CAChC,EAAKp5d,EAAQiV,EAAG,GAAMjV,EAAQmN,GAC9B,EAAK0vd,GACN1zZ,GACH+0Z,EAAWxoe,YAAYite,GAG/ByD,EAAMlG,UAAUxqe,YAAYwoe,GAC5B,IAAIxvE,EAAMwvE,EAAWnoc,wBACrB5Y,aAAO+gd,GACFkI,EAAMuK,aAAgBvK,EAAMwK,QAC7Bzzd,aAAOipd,EAAMlG,WAEjB,OAAO,IAAI/vZ,GAAMu+U,EAAIj4X,MAAQi4X,EAAIl4X,KAAQk4X,EAAI/3X,OAAS+3X,EAAIh4X,KD2gB1Bm6c,CAAen9e,KAAK41e,WAAY51e,KAAKw8e,aAAcx8e,KAAKwxY,MAAOkhG,GAGvFA,EAAM0K,uBAAyBp9e,KAAKq9e,iBAAiBxgf,OAAS,GAC9D61e,EAAM0K,sBAAsBE,0BAA0Bt9e,OAQ9Dg4E,EAAK97E,UAAUygf,cAAgB,SAAU9/e,EAAQ0gf,EAAUC,EAAcC,GAMrE,IALA,IAAIhoa,EACAsma,EACA2B,EACAC,EAAQ,GAEH/gf,EAAIC,EAAS,EAAGD,GAAK,EAAGA,IAC7B64E,EAAQz1E,KAAK21e,cAAc/4e,GAC3B8gf,EAASD,EAAgBhoa,EAAM6ma,eAAe5sc,MAAQ+lC,EAAM+G,KAAK9sC,MACjEqsc,EAAUV,GAAmB5la,EAAMj5E,MAAOwD,MAAQA,KAAKkwC,KAAKR,MAAS1vC,KAAKkwC,KAAK3uB,GAChEvhB,KAAKs7e,WAChBiC,EAAWC,EAAahha,KAAK9sC,MAASqsc,EAAkB,GAAT2B,EADlBH,EAAYxB,EAAkB,GAAT2B,IAGlDC,EAAM/7e,KAAK6zE,EAAMj7D,OACjBgje,EAAahje,MAASgje,EAAahje,MAAQi7D,EAAMj7D,MAASgje,EAAahje,MAAQi7D,EAAMj7D,MAAQ,GAG7Fgje,EAAahje,MAAQmje,EAAMx/e,QAAQs3E,EAAMj7D,QAAU,EAAIgje,EAAahje,MAAQi7D,EAAMj7D,MAG1F,IAAIm1B,GAAW8tc,EAAgBD,EAAalB,eAAe3sc,OAAS6tc,EAAahha,KAAK7sC,QAAU6tc,EAAahje,MACxG,GAAKgje,EAAahje,MAAQ,GAC3Bm1B,EAAS3vC,KAAKi7e,aAAatrc,SAC3B3vC,KAAKi7e,aAAatrc,OAASA,IASnCqoC,EAAK97E,UAAU0hf,UAAY,SAAUlL,GACV,WAAnB1ye,KAAK6ze,UACL7ze,KAAK67e,WAAa,IAAIpJ,GAAOC,GAG7B1ye,KAAK67e,WAAanJ,EAAMmL,GAAiB79e,KAAK6ze,WAAa,WAGnEl1c,GAAW,CACPvB,YAAQ6gD,GAAM6kZ,cAAehmZ,KAC9B9E,EAAK97E,UAAW,kBAAc,GACjCyiC,GAAW,CACPvB,YAAQ,GAAIw8c,KACb5ha,EAAK97E,UAAW,wBAAoB,GACvCyiC,GAAW,CACP3B,YAAS,KACVg7C,EAAK97E,UAAW,aAAS,GAC5ByiC,GAAW,CACPvB,YAAQ6gD,GAAM8kZ,cAAejmZ,KAC9B9E,EAAK97E,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,YAAS,KACVg7C,EAAK97E,UAAW,mBAAe,GAClCyiC,GAAW,CACP3B,YAAS,KACVg7C,EAAK97E,UAAW,gBAAY,GAC/ByiC,GAAW,CACP3B,YAAS,aACVg7C,EAAK97E,UAAW,oBAAgB,GACnCyiC,GAAW,CACP3B,YAAS,WACVg7C,EAAK97E,UAAW,0BAAsB,GACzCyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,sBAAkB,GACrCyiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,qBAAiB,GACpCyiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,uBAAmB,GACtCyiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,wBAAoB,GACvCyiC,GAAW,CACP3B,aAAS,IACVg7C,EAAK97E,UAAW,iBAAa,GAChCyiC,GAAW,CACP3B,YAAS,KACVg7C,EAAK97E,UAAW,eAAW,GAC9ByiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,mBAAe,GAClCyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,gBAAY,GAC/ByiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,YAAQ,GAC3ByiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,wBAAoB,GACvCyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,qBAAiB,GACpCyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,oBAAgB,GACnCyiC,GAAW,CACP3B,aAAS,IACVg7C,EAAK97E,UAAW,gCAA4B,GAC/CyiC,GAAW,CACP3B,aAAS,IACVg7C,EAAK97E,UAAW,uBAAmB,GACtCyiC,GAAW,CACP3B,aAAS,IACVg7C,EAAK97E,UAAW,mCAA+B,GAClDyiC,GAAW,CACP3B,YAAS,SACVg7C,EAAK97E,UAAW,oBAAgB,GACnCyiC,GAAW,CACP3B,YAAS,WACVg7C,EAAK97E,UAAW,iBAAa,GAChCyiC,GAAW,CACP3B,YAAS,SACVg7C,EAAK97E,UAAW,0BAAsB,GACzCyiC,GAAW,CACP3B,YAAS,SACVg7C,EAAK97E,UAAW,oBAAgB,GACnCyiC,GAAW,CACP3B,YAAS,iBACVg7C,EAAK97E,UAAW,sBAAkB,GACrCyiC,GAAW,CACP3B,YAAS,YACVg7C,EAAK97E,UAAW,oBAAgB,GACnCyiC,GAAW,CACP3B,YAAS,YACVg7C,EAAK97E,UAAW,qBAAiB,GACpCyiC,GAAW,CACP3B,YAAS,KACVg7C,EAAK97E,UAAW,YAAQ,GAC3ByiC,GAAW,CACP3B,aAAS,IACVg7C,EAAK97E,UAAW,eAAW,GAC9ByiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,6BAAyB,GAC5CyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,qBAAiB,GACpCyiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,iBAAa,GAChCyiC,GAAW,CACP3B,aAAS,IACVg7C,EAAK97E,UAAW,2BAAuB,GAC1CyiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,qBAAiB,GACpCyiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,eAAW,GAC9ByiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,eAAW,GAC9ByiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,gBAAY,GAC/ByiC,GAAW,CACP3B,YAAS,KACVg7C,EAAK97E,UAAW,yBAAqB,GACxCyiC,GAAW,CACP3B,aAAS,IACVg7C,EAAK97E,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,oBAAgB,GACnCyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,oBAAgB,GACnCyiC,GAAW,CACPvB,YAAQ,GAAIs8c,KACb1ha,EAAK97E,UAAW,sBAAkB,GACrCyiC,GAAW,CACPvB,YAAQ,GAAIu8c,KACb3ha,EAAK97E,UAAW,sBAAkB,GACrCyiC,GAAW,CACPvB,YAAQ,GAAIm8c,KACbvha,EAAK97E,UAAW,sBAAkB,GACrCyiC,GAAW,CACPvB,YAAQ,GAAIo8c,KACbxha,EAAK97E,UAAW,sBAAkB,GACrCyiC,GAAW,CACPvB,YAAQ,GAAIq8c,KACbzha,EAAK97E,UAAW,iBAAa,GAChCyiC,GAAW,CACP3B,YAAS,SACVg7C,EAAK97E,UAAW,4BAAwB,GAC3CyiC,GAAW,CACP3B,aAAS,IACVg7C,EAAK97E,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,YAAS,MACVg7C,EAAK97E,UAAW,mBAAe,GAClCyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,aAAS,IACVg7C,EAAK97E,UAAW,qBAAiB,GACpCyiC,GAAW,CACP3B,YAAS,OACVg7C,EAAK97E,UAAW,mBAAe,GAClCyiC,GAAW,CACP3B,YAAS,IACVg7C,EAAK97E,UAAW,gBAAY,GAC/ByiC,GAAW,CACPtB,YAAW,GAAIq7c,KAChB1ga,EAAK97E,UAAW,kBAAc,GACjCyiC,GAAW,CACPtB,YAAW,GAAIs7c,KAChB3ga,EAAK97E,UAAW,wBAAoB,GACvCyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,KAAMjmC,MAAO,EAAGvkC,KAAM,aAAeqte,KACvDxga,EAAK97E,UAAW,cAAU,GAC7ByiC,GAAW,CACPvB,YAAQ,GAAIy7c,KACb7ga,EAAK97E,UAAW,yBAAqB,GACjC87E,EA/mBe,CAgnBxB3yC,KAGEy4c,GACA,SAAuBvre,EAAM/V,EAAOo5e,EAAYyG,EAAc7/Z,EAAM8/Z,EAAgB9he,QACnE,IAATgiE,IAAmBA,EAAO,IAAIC,GAAK,EAAG,SACnB,IAAnB6/Z,IAA6BA,EAAiB,IAAI7/Z,GAAK,EAAG,SAChD,IAAVjiE,IAAoBA,EAAQ,GAChCxa,KAAKuS,KAAOA,EACZvS,KAAKq8e,aAAeA,EACpBr8e,KAAKxD,MAAQA,EACbwD,KAAK41e,WAAaA,EAClB51e,KAAKw8E,KAAOA,EACZx8E,KAAKs8e,eAAiBA,EACtBt8e,KAAKwa,MAAQA,GCp4BjB6jB,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAqDtC,SAAS29c,GAAa3ma,GACzB,OAAkC,IAA3BA,EAAMt3E,QAAQ,QAGlB,SAAS4/e,GAAiB9Z,GAK7B,IAJA,IAEI+Z,EAFAria,EAASr9E,YAAO,GAAI2le,EAAOtoZ,OAAQ,MAAM,GACzCsia,EAAa,GAEbja,EAAa,EACRpne,EAAI,EAAGA,EAAI++E,EAAO9+E,OAAQD,IAC/Bohf,EAAYria,EAAO/+E,GACfQ,YAAkB4gf,EAAUz8d,IAAsB,KAAhBy8d,EAAUz8d,IAI5Cy8d,EAAUxje,MAAQwpd,IAClBia,EAAWr8e,KAAKo8e,IAGxB,OAAOC,EAuDJ,SAASlic,GAActiC,GAC1B,IAAKA,EACD,OAAO,KAEX,IAAIzY,EAAwB,kBAAPyY,EAAkB5W,GAAW4W,GAAMA,EACpDzY,GACAyoB,aAAOzoB,GAIR,SAASiye,GAAQz2e,EAAO4N,GAC3B,OAAO7C,KAAKsnJ,IAAIryJ,GAAS+K,KAAKsnJ,IAAIzkJ,GAG/B,SAAS8ze,GAAY3re,EAAMgP,EAAGjL,EAAG6ne,EAAW1ke,EAAIzY,EAASimB,EAASm3d,GAErE,IAAIhsY,EAAU5xG,SAASuuB,eAAetV,GAClC+iE,EAAO8tZ,GAAY/3d,EAAM,CACzBqjE,WAAY,WAAY4G,KAAM,OAC9B++R,UAAW,SAAUljG,WAAY,YAEjC3oO,EAAQ8sC,EAAK9sC,MAAQ,GACzBnuB,EAAKA,EAAImuB,EAAQyuc,EAAa58d,GAAKmuB,EAAQ,IAAMnuB,EACjDjL,EAAI8ne,EAA0B9ne,EAAIkmE,EAAK7sC,OAAS,EAAKr5B,EAAI,GACpD87F,IAgBDA,EAAQhwG,UAAYmQ,EACpB6/F,EAAQp+E,MAAMgP,IAAO1sB,EAAGnJ,WAAa,KACrCilG,EAAQp+E,MAAM8O,MAAQvhB,EAAI,IAAIpU,WAAa,OAjB3CilG,EAAUjxG,YAAc,MAAO,CAC3BiB,UAAWmQ,EACXkH,GAAIA,EACJsa,OAAQ,OAAUzd,EAAGnJ,WAAa,YAAcoU,EAAI,IAAIpU,WAAhD,gQAKZnM,EAAQgB,YAAYowG,GACTj8F,SAASi8F,EAAQp+E,MAAM8O,KAAKpmC,QAAQ,KAAM,IAAK,IAC/C,IACP01G,EAAQp+E,MAAM8O,KAAO,QAQzB7b,GACA7mB,YAAW,WAAc27C,GAActiC,KAAQ,MAIhD,SAASghe,GAAOj+e,EAAOgW,GAC1B,OAAQhW,EAAQgW,EAAMa,KAAS7W,EAAQgW,EAAMY,IAG1C,SAASije,GAAO75e,EAAOgW,GAC1B,OAAQhW,GAASgW,EAAMa,KAAS7W,GAASgW,EAAMY,IAG5C,SAASire,GAAU7hf,EAAOuvC,GAC7B,MAA0B,gBAAnBA,EAAK8nc,UAA8BZ,GAAQz2e,EAAOuvC,EAAKknc,SAAWz2e,EAGtE,SAAS8hf,GAAYC,EAAeC,EAAcC,EAAWxa,GAChE,IAAIya,EAAML,GAAUG,EAAajmJ,OAAQ0rI,EAAOpkW,OAC5C8+W,EAAMJ,EAAgBF,GAAUE,EAAchmJ,OAAQ0rI,EAAOpkW,OAAS6+W,EACtEE,EAAMH,EAAYJ,GAAUI,EAAUlmJ,OAAQ0rI,EAAOpkW,OAAS6+W,EAC9DG,EAASt3e,KAAKC,MAAMy8d,EAAOpkW,MAAMg1W,aAAazhe,KAC9C0re,EAAOv3e,KAAKu3D,KAAKmla,EAAOpkW,MAAMg1W,aAAaxhe,KAC/C,OAASsre,GAAOE,GAAUF,GAAOG,GAAUJ,GAAOG,GAAUH,GAAOI,GAC9DF,GAAOC,GAAUD,GAAOE,GAAUD,GAAUF,GAAOE,GAAUD,EAG/D,SAASxzZ,GAAI7uB,GAEhB,IADA,IAAI6uB,EAAM,EACDptF,EAAK,EAAG+3N,EAAWx5J,EAAQv+D,EAAK+3N,EAASl5N,OAAQmB,IAAM,CAE5DotF,GADY2qI,EAAS/3N,GAGzB,OAAOotF,EAsBJ,SAAS2zZ,GAAkB7uc,EAAM8uc,GAKpC,OAJA9uc,EAAK3uB,GAAKy9d,EAAUl8c,KACpBoN,EAAK55B,GAAK0oe,EAAUh8c,IACpBkN,EAAKR,OAASsvc,EAAUl8c,KAAOk8c,EAAUj8c,MACzCmN,EAAKP,QAAUqvc,EAAUh8c,IAAMg8c,EAAU/7c,OAClCiN,EAWJ,SAAS+uc,GAAiBC,EAAQh8c,EAAQ2tK,GAC7C,IAAIsuS,EAAUD,EAAS33e,KAAK6pY,GAAM,IAClC,OAAO,IAAIguG,GAAc73e,KAAKkqY,IAAI0tG,GAAUj8c,EAAS2tK,EAAOtvL,EAAGha,KAAKmwH,IAAIynX,GAAUj8c,EAAS2tK,EAAOv6L,GAG/F,SAAS+oe,GAAeH,GAC3B,OAAOA,GAAU33e,KAAK6pY,GAAK,KAGxB,SAASkuG,GAA+BC,EAAcC,EAASC,EAASjuG,GAE3E,IADA,IAAIkuG,EAA2B,GACtB9if,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIw6C,EAAQmoc,EAAa3if,GAErB+if,EAAQvoc,EAAM71B,EAAIi+d,EAClBI,EAAQxoc,EAAM9gC,EAAImpe,EAElBI,EAAWF,EAAQp4e,KAAKkqY,IAAI4tG,GAAe7tG,IAAUouG,EAAQr4e,KAAKmwH,IAAI2nX,GAAe7tG,IACrFsuG,EAAWH,EAAQp4e,KAAKmwH,IAAI2nX,GAAe7tG,IAAUouG,EAAQr4e,KAAKkqY,IAAI4tG,GAAe7tG,IAEzFp6V,EAAM71B,EAAIs+d,EAAWL,EACrBpoc,EAAM9gC,EAAIwpe,EAAWL,EACrBC,EAAyB99e,KAAK,IAAIw9e,GAAchoc,EAAM71B,EAAG61B,EAAM9gC,IAEnE,OAAOope,EAUJ,SAASK,GAAuBh3e,EAAGpB,GACtC,IACIq4e,EACAC,EACAC,EACAtjf,EACA26Y,EACApvY,EACAg4e,EACAC,EARAC,EAAW,CAACt3e,EAAGpB,GASnB,IAAK/K,EAAI,EAAGA,EAAIyjf,EAASxjf,OAAQD,IAAK,CAGlC,IAAI0oe,EAAU+a,EAASzjf,GACvB,IAAK26Y,EAAK,EAAGA,EAAK+tF,EAAQzoe,OAAQ06Y,IAAM,CAEpC,IAAIC,GAAMD,EAAK,GAAK+tF,EAAQzoe,OACxB68Q,EAAK4rN,EAAQ/tF,GACb59H,EAAK2rN,EAAQ9tF,GAEb8oG,EAAS,IAAIlB,GAAczlO,EAAGrjQ,EAAIojQ,EAAGpjQ,EAAGojQ,EAAGn4P,EAAIo4P,EAAGp4P,GAItD,IAHAy+d,EAAOC,OAAOjkf,EAGTmM,EAAI,EAAGA,EAAIY,EAAElM,OAAQsL,IACtB+3e,EAAYI,EAAO/+d,EAAIxY,EAAEZ,GAAGoZ,EAAI++d,EAAOhqe,EAAIvN,EAAEZ,GAAGmO,GAC5ClZ,YAAkB4if,IAASE,EAAYF,KACvCA,EAAOE,IAEP9if,YAAkB6if,IAASC,EAAYD,KACvCA,EAAOC,GAMf,IADAC,EAAOC,OAAOpkf,EACTmM,EAAI,EAAGA,EAAIR,EAAE9K,OAAQsL,IACtB+3e,EAAYI,EAAO/+d,EAAI5Z,EAAEQ,GAAGoZ,EAAI++d,EAAOhqe,EAAI3O,EAAEQ,GAAGmO,GAC5ClZ,YAAkB+if,IAASD,EAAYC,KACvCA,EAAOD,IAEP9if,YAAkBgjf,IAASF,EAAYE,KACvCA,EAAOF,GAKf,GAAID,EAAOE,GAAQC,EAAOJ,EACtB,OAAO,GAInB,OAAO,EAkBJ,SAASn0I,GAAStvS,EAAQ/hD,GAE7B,IADA,IAAIqxV,EAAW,GACNjvW,EAAI,EAAGA,GAAK4d,EAAQ,EAAG5d,IAC5BivW,EAASjqW,KAAK26D,EAAO3/D,IAEzB,OAAOivW,EAGJ,SAASwvI,GAAmB7+e,EAAOuvC,GACtC,IAAIv5B,EAAQu5B,EAAK8oc,aACbl2e,GAAUnC,EAAQgW,EAAMY,KAAQZ,EAAMgvG,MAC1C,OAAOz1E,EAAKuvc,WAAc,EAAI38e,EAAUA,EAGrC,SAAS4hf,GAAmBh/d,EAAGjL,EAAGupH,EAAOF,EAAO6gX,EAAYvc,GAC/D1id,EAAyB,gBAApBs+G,EAAMg0W,UAA8BZ,GAAQ1xd,EAAI,EAAIA,EAAI,EAAGs+G,EAAMozW,SAAW1xd,EACjFjL,EAAyB,gBAApBqpH,EAAMk0W,UACPZ,GAAQ38d,EAAI,EAAIA,EAAI,EAAGqpH,EAAMszW,SAAW38d,EAC5CiL,GAAyB,aAApBs+G,EAAMg0W,WAAqD,iBAAzBh0W,EAAM4gX,gBAAqD,UAAhBxc,EAAO94d,KAAmB,GAAM,EAClH,IAAI+3B,EAAS+gc,EAAOyO,MAAMxvc,OAASm4c,GAAmB/ke,EAAGqpH,GACrDvoF,EAAQspc,GAAoBC,GAAwBp/d,EAAGs+G,GAAQokW,EAAOyO,MAAMkO,aAAaC,YAC7F,MAAO,CACHt/d,EAAI0id,EAAOj7D,SAASt5X,MAAQ,EAAIu0b,EAAOj7D,SAASznZ,EAAK2hB,EAASkU,EAAM71B,EACpEjL,EAAI2td,EAAOj7D,SAASr5X,OAAS,EAAIs0b,EAAOj7D,SAAS1yZ,EAAK4sB,EAASkU,EAAM9gC,GAQtE,SAASwqe,GAAYrne,EAAIsne,QACZ,IAAZA,IAAsBA,GAAU,GACpC,IAAIC,EAAM,CAAC,MAAO,OAYlB,OAXIvne,EAAGtb,QAAQ,YAAc,EACzB6if,EAAMvne,EAAG9c,MAAM,YAAY,GAAGA,MAAM,WAE/B8c,EAAGtb,QAAQ,YAAc,KAAO4if,GAAYA,IAAuC,IAA5Btne,EAAGtb,QAAQ,cACvE6if,EAAMvne,EAAG9c,MAAM,YACX,GAAK,IAEJ8c,EAAGtb,QAAQ,WAAa,KAAO4if,GAAYA,IAAuC,IAA5Btne,EAAGtb,QAAQ,gBACtE6if,EAAMvne,EAAG9c,MAAM,WACX,GAAK,KAEN,IAAI07E,GAAMliE,SAAS6qe,EAAI,GAAI,IAAK7qe,SAAS6qe,EAAI,GAAI,KAGrD,SAASN,GAAoBO,EAAaJ,GAC7CA,EAAaA,EAAa,EAAIA,EAAa,IAAMA,EACjD,IAAIrvG,EAAQjqY,KAAK6pY,IAAM,IAAM,EAAI6vG,GAEjC,OADAzvG,GAAiBqvG,EAAat5e,KAAK6pY,GAAM,IAClC,CAAE7vX,EAAGha,KAAKkqY,IAAID,GAAQl7X,EAAG/O,KAAKmwH,IAAI85Q,IAGtC,SAASmvG,GAAwBnkf,EAAOuvC,GAC3C,IACIy1E,EACA3kH,EAFA2V,EAAQu5B,EAAK8oc,aAcjB,MAXuB,aAAnB9oc,EAAK8nc,WACLryX,EAAShvG,EAAMa,KAA0B,aAAnB04B,EAAK8nc,UAA2B9nc,EAAKm1c,iBAAmB1ue,EAAMjQ,UAAaiQ,EAAMY,IACvGvW,EAASkvC,EAAK4pc,cAAc94e,OAAS,EACrC2kH,EAAkB,IAAVA,EAAc,EAAIA,IAI1BA,EAAsC,IAA9Bz1E,EAAK4pc,cAAc94e,OAAe,EACrCkvC,EAAK4pc,cAAc5pc,EAAK4pc,cAAc94e,OAAS,GAAGL,MAAQuvC,EAAK4pc,cAAc,GAAGn5e,MACrFK,EAASkvC,EAAK4pc,cAAc94e,QAEzBkvC,EAAKuvc,YAAe9+e,EAAQgW,EAAMY,KAAOouG,GAAU,EAAI,EAAK3kH,GAC/D,GAAML,EAAQgW,EAAMY,KAAOouG,GAAU,EAAI,EAAK3kH,GAGtD,IAaIskf,GACA,SAAkBN,EAAYO,EAAUC,EAAan+c,EAAQo+c,GACzDthf,KAAK6gf,WAAaA,EAClB7gf,KAAKohf,SAAWA,EAChBphf,KAAKqhf,YAAcA,EACnBrhf,KAAKkjC,OAASA,EACdljC,KAAKshf,iBAAmBA,GAgEzB,SAASC,GAAahge,EAAGjL,EAAGw/W,EAAQpmV,EAAOC,GAG9C,YAFc,IAAVD,IAAoBA,EAAQ,QACjB,IAAXC,IAAqBA,EAAS,GAC1BpuB,GAAKu0W,EAAOv0W,EAAImuB,GAASnuB,GAAKu0W,EAAOv0W,EAAIu0W,EAAOpmV,MAAQA,GAASp5B,GAAKw/W,EAAOx/W,EAAIq5B,GAClFr5B,GAAKw/W,EAAOx/W,EAAIw/W,EAAOnmV,OAASA,EAGpC,SAAS6xc,GAAiBhlf,EAAOggF,EAAMzwC,GAE1C,OADmBA,EAAKuvc,WAA6B,EAAK9+e,EAAQggF,EAA7BhgF,EAAQggF,GACvBzwC,EAAK8oc,aAAarzX,MAASz1E,EAAK8oc,aAAazhe,IAGhE,SAASque,GAAiBjlf,EAAOggF,EAAMzwC,GAE1C,OADkBA,EAAKuvc,WAAa9+e,EAAQggF,EAAQ,EAAKhgF,EAAQggF,GAC3CzwC,EAAK8oc,aAAarzX,MAASz1E,EAAK8oc,aAAazhe,IAGhE,SAASsue,GAAazd,GACzB,IAAI/zb,EAAO+zb,EAAOj7D,SACdi7D,EAAOyO,MAAM6B,qBACbrkc,EAAK3uB,EAAI0id,EAAOtkW,MAAMzvF,KAAK3uB,EAC3B2uB,EAAK55B,EAAI2td,EAAOpkW,MAAM3vF,KAAK55B,EAC3B45B,EAAKR,MAAQu0b,EAAOtkW,MAAMzvF,KAAKR,MAC/BQ,EAAKP,OAASs0b,EAAOpkW,MAAM3vF,KAAKP,SAGhCO,EAAK3uB,EAAI0id,EAAOpkW,MAAM3vF,KAAK3uB,EAC3B2uB,EAAK55B,EAAI2td,EAAOtkW,MAAMzvF,KAAK55B,EAC3B45B,EAAKR,MAAQu0b,EAAOpkW,MAAM3vF,KAAKR,MAC/BQ,EAAKP,OAASs0b,EAAOtkW,MAAMzvF,KAAKP,QAIjC,SAASkuc,GAAiBn5e,GAC7B,OAAOA,EAAI2I,OAAO,EAAG,GAAGoK,cAAgB/S,EAAI2I,OAAO,GAuBhD,SAASine,GAAkBvoc,EAAM41c,GAKpC,IAJA,IACIC,EACAC,EACAC,EAHAC,EAAW9rc,OAAO0jW,UAIbn/X,EAAQ,EAAGA,EAAQmne,EAAiB9kf,OAAQ2d,IAAS,CAC1D,IAAIypd,EAAS0d,EAAiBnne,GAE9B,GADAone,EAAU,GACN3d,EAAO/ma,UACNnxB,EAAK3xB,OAAS6pd,EAAO+d,WAA4B,iBAAdj2c,EAAK3xB,MAAgD,OAArB6pd,EAAO+d,WACnEj2c,EAAK3xB,OAAS6pd,EAAOyO,MAAMkO,aAAaxme,OAAS6pd,EAAO+d,WAKhE,IAJAJ,EAAU3d,EAAOtoZ,OAAOl3E,KAAI,SAAU2yC,GAClC,OAAOA,EAAMmhT,WAET12Q,MAAK,SAAUrjF,EAAOC,GAAU,OAAOD,EAAQC,KAChC,IAAnBmjf,EAAQ/kf,OACRilf,EAAgC,aAAnB/1c,EAAK8nc,WAA4B5P,EAAOlpF,OAASkpF,EAAOhpF,KAASgpF,EAAOlpF,KAAO,OAAckpF,EAAOlpF,KAGlG,KAFf8mG,EAASD,EAAQ,IAAOxkf,YAAkB0kf,GAC1B/1c,EAAK8oc,aAAazhe,IAA9B0ue,MAEAC,EAAWx6e,KAAK6L,IAAI2ue,EAAUF,SAIlC,IAAK,IAAInhW,EAAU,EAAGA,EAAUkhW,EAAQ/kf,OAAQ6jJ,IAAW,CACvD,IAAIlkJ,EAAQolf,EAAQlhW,GAChBA,EAAU,GAAKlkJ,GAEA,KADfqlf,EAASrlf,EAAQolf,EAAQlhW,EAAU,MAE/BqhW,EAAWx6e,KAAK6L,IAAI2ue,EAAUF,KAUtD,OAHIE,IAAa9rc,OAAO0jW,YACpBooG,EAAW,GAERA,EAGJ,SAASE,GAAqBr6V,GACjC,IAAI2jV,EACJ,OAAQ3jV,GACJ,IAAK,SACD2jV,EAAejsc,GAGvB,OAAOisc,EAWJ,SAASjsc,GAAOwsF,EAAaygG,EAAYC,EAAU1rL,GACtD,OAAQ0rL,EAAWjlN,KAAKkqY,IAAI3lR,EAAchrF,GAAYv5B,KAAK6pY,GAAK,IAAM5kL,EAAWD,EAO9E,SAAS21R,GAAclhf,EAASnB,EAAOihC,EAAUmjc,EAAQD,EAAY5sb,EAAO+qc,GAC/E,IAAI3C,EAAUpoc,EAAM71B,EAChBk+d,EAAUroc,EAAM9gC,EAChBq5B,EAAS,EACb3uC,EAAQgzB,MAAMwC,WAAa,SAC3B,IAAI0I,IAAU,IAAIY,QAAQ9+B,EAAS,CAC/B8/B,SAAUA,EACVjhC,MAAOA,EACPshC,SAAU,SAAUlhC,GACZA,EAAKygC,UAAYzgC,EAAKJ,QACtBI,EAAKe,QAAQgzB,MAAMwC,WAAa,UAChCmZ,GAAW1vC,EAAKygC,UAAYzgC,EAAKJ,OAASI,EAAK6gC,SAC/C9/B,EAAQ40B,aAAa,YAAa,aAAe4pd,EAC3C,IAAMC,EAAU,WAAa9vc,EAAS,gBAAmB6vc,EAAW,KAAQC,EAAW,OAGrG9me,IAAK,WACD3X,EAAQgzB,MAAMwC,WAAa,GACN,YAAhBytc,EAAO94d,MAAsC,WAAhB84d,EAAO94d,MAAuBg3e,GAAYne,IAAeC,EAAOtoZ,OAAO9+E,OAAS,GAC9Gone,EAAOyO,MAAM3od,QAAQ,oBAAqB,CAAEk6c,OAAQA,EAAOyO,MAAMpze,SAAW,GAAK2ke,OAoC1F,SAASme,GAAcphf,EAASu+F,EAAW29Y,EAAQmF,EAAmBC,GACzE,IAAKpF,IAAYmF,IAAsBrhf,EACnC,OAAO,KAEX,IAAI8/B,EAAW,IACXwhd,IACAxhd,EAAWwhd,GAEf,IAGIC,EAGA36e,EACA+Q,EAPA6pe,EAAkBH,GAAqBrhf,EAAQmuB,aAAa,KAC5Dszd,EAAkBD,EAAgB7lf,MAAM,gBACxC+lf,EAAgBnjZ,EAAU5iG,MAAM,gBAEhCgmf,EAAY,GACZv1H,EAAU,GAGdpsX,EAAQ40B,aAAa,IAAK4sd,GAC1B,IAAItjd,IAAU,IAAIY,QAAQ3+B,YAAc,OAAQ,CAC5C2/B,SAAUA,EACVK,SAAU,SAAUlhC,GAChBsif,EAAmB,GACnBE,EAAgBh+e,KAAI,SAAUm+e,EAAYpoe,GAWtC,GAVAmoe,EAAYC,EAAWjmf,MAAM,KAC7BywX,EAAUs1H,EAAcloe,GAASkoe,EAAcloe,GAAO7d,MAAM,KAAOgmf,EAC9C,MAAjBA,EAAU,GACVJ,GAAoB,KAGpBA,GAAoBI,EAAU,GAAK,IAC/Brjd,GAAOr/B,EAAKygC,WAAYiid,EAAU,IAAMv1H,EAAQ,IAAMu1H,EAAU,GAAK1if,EAAK6gC,UAAY,IACtFxB,GAAOr/B,EAAKygC,WAAYiid,EAAU,IAAMv1H,EAAQ,IAAMu1H,EAAU,GAAK1if,EAAK6gC,UAAY,IAEzE,MAAjB6hd,EAAU,IAA+B,MAAjBA,EAAU,GAGlC,IAFA/6e,EAAI,EACJ+Q,EAAuB,MAAjBgqe,EAAU,GAAa,EAAI,EAC1B/6e,EAAI+Q,GACP4pe,GAAoBjjd,GAAOr/B,EAAKygC,WAAYiid,EAAU/6e,IAAMwlX,EAAQxlX,IAAM+6e,EAAU/6e,GAAK3H,EAAK6gC,UAAY,IACtGxB,GAAOr/B,EAAKygC,WAAYiid,IAAY/6e,IAAMwlX,EAAQxlX,IAAM+6e,EAAU/6e,GAAK3H,EAAK6gC,UAAY,MAC1Fl5B,EAGW,MAAjB+6e,EAAU,KACVJ,GAAoB,SAChBjjd,GAAOr/B,EAAKygC,WAAYiid,EAAU,IAAMv1H,EAAQ,IAAMu1H,EAAU,GAAK1if,EAAK6gC,UAAY,IACtFxB,GAAOr/B,EAAKygC,WAAYiid,EAAU,IAAMv1H,EAAQ,IAAMu1H,EAAU,GAAK1if,EAAK6gC,UAAY,QAGlG9/B,EAAQ40B,aAAa,IAAK2sd,IAE9B5pe,IAAK,WACD3X,EAAQ40B,aAAa,IAAK2pE,MAY/B,SAASsjZ,GAAkB3F,EAAQ5we,EAAS85R,EAAU8mF,QACxC,IAAbA,IAAuBA,EAAW,gBACtC,IAAI41H,EAAcC,GAAc7F,EAAQ5we,EAAQmN,GAAInN,EAAS85R,GAC7D,GAAI08M,EAAa,CACb,IAAIz6a,EAAM+9N,EAASy/L,aAEnB,OADAx9Z,EAAIrmE,YAAY8gf,GACTz6a,EAGP,OAAO+9N,EAAS8mF,GAAU5gX,GAS3B,SAASgqe,GAAmB5D,EAAOmD,EAActje,EAAMqje,EAAY7pc,GACtE,IAAIghc,EAAW,CACXhqd,QAAQ,EAAO3I,KAAM48d,GAAiBjrc,KAAMA,EAC5Cx5B,KAAMA,EAAM/V,MAAOq5e,EAAcD,WAAYA,GAGjD,GADAlD,EAAM3od,QAAQitd,GAAiBjK,IAC1BA,EAAShqd,OAAQ,CAClB,IAAIige,GAAuD,IAAnCjW,EAASx6d,KAAKpU,QAAQ,QAC1C8kf,EAAUl3c,EAAKwwc,WAAeyG,EA8sBnC,SAA4BtoW,EAAUnoI,EAAMsqE,GAG/C,IAFA,IAAIqma,EAAkB,GAClBC,EAAc5we,EAAK5V,MAAM,QACpBC,EAAI,EAAGA,EAAIumf,EAAYtmf,OAAQD,IAAK,CAEzC,IAAI4/E,EAAO8tZ,GADX/3d,EAAO4we,EAAYvmf,GACUigF,GAAMntC,MACnC,GAAI8sC,EAAOk+D,GAEP,IADA,IACSh1E,EADQnzD,EAAK1V,OACM,EAAG6oE,GAAO,IAAKA,EAGvC,IADA8W,EAAO8tZ,GADP/3d,EAAOA,EAAKnF,UAAU,EAAGs4D,GAAO,MACPmX,GAAMntC,QACnBgrG,EAAU,CAClBwoW,EAAgBthf,KAAK2Q,GACrB,YAKR2we,EAAgBthf,KAAK2Q,GAG7B,OAAO2we,EAluBCE,CAAmBr3c,EAAKs3c,kBAAmBtW,EAASx6d,KAAMw5B,EAAK6pc,YAC/D0N,GAASv3c,EAAKs3c,kBAAmBtW,EAASx6d,KAAMw5B,EAAK6pc,YAAe7I,EAASx6d,KACjFw5B,EAAK4pc,cAAc/ze,KAAK,IAAIk8e,GAAcmF,EAAQlW,EAASvwe,MAAOuwe,EAAS6I,WAAY7I,EAASx6d,QASjG,SAAS2he,GAASnoc,GACrB,OAAwB,MAAhBA,EAAK0nc,SAAmC,MAAhB1nc,EAAK4nc,QAOlC,SAAS4H,GAAUxvc,GACtB,OAAQA,EAAKspc,WAAa,GAAKtpc,EAAKupc,cAAgB,EAQjD,SAASzC,GAA+B0Q,EAAex3c,GAC1D,IAAIywC,EAA4B,eAArBzwC,EAAKq3V,YAA+BmgH,EAAc7zc,MAAQ6zc,EAAc5zc,OACnF,GAAIvyC,YAAkB2uC,EAAKgnc,kBAAmB,CAC1C,IAAIyQ,GAA8C,eAArBz3c,EAAKq3V,YAA+B,KAAQ,GAAKr3V,EAAK03c,cAEnF,OADAD,EAAwBj8e,KAAK8L,IAAKmpE,GAAQgna,EAAwB,KAAO,GAIzE,OAAOz3c,EAAKgnc,iBAQb,SAAS2Q,GAAgB1if,EAASnB,EAAOihC,EAAU1mB,EAAMoxH,GAC5D,IAAItsG,IAAU,IAAIY,QAAQ9+B,EAAS,CAC/B8/B,SAAUA,EACVjhC,MAAOA,EACPua,KAAMA,EACN+mB,SAAU,SAAUlhC,GAChBA,EAAKe,QAAQgzB,MAAMwC,WAAa,WAEpC7d,IAAK,SAAU1Y,GACPurI,EACA/hH,aAAOxpB,EAAKe,SAGZf,EAAKe,QAAQgzB,MAAMwC,WAAa,aAMzC,SAAS80c,GAAWtic,EAAU6jX,EAAOrwU,EAAM55D,EAAKtW,EAASmpE,EAAO2wN,EAAU4iI,EAAU26E,EAAgB1za,GACvG,IAAI2za,EAAgBx9M,GAAsB,IAAIk+L,GAAY,IACtDmJ,EAMD,SAAyBzkc,EAAUwzC,EAAMqwU,EAAOvgZ,EAASsW,EAAKq3d,EAAShqa,GAC1E,IAAIy0H,EAWAm/S,EACAC,EAXAvY,EAAe,OACfwY,EAAgB9J,EAChBvqc,EAASq0c,GAA2B,WAAVl3F,EAAuBrwU,EAAK9sC,MAAQ,EAAK8sC,EAAK9sC,MACxEC,EAAUo0c,GAA2B,WAAVl3F,EAAuBrwU,EAAK7sC,OAAS,EAAK6sC,EAAK7sC,OAC1Eq0c,EAAcD,EAAiB9za,EAAQg0a,YAAc,EACrDC,EAAKl7c,EAASznB,EACd4ie,EAAKn7c,EAAS1yB,EACdA,EAAI0yB,EAAS1yB,GAAMq5B,EAAS,EAC5BpuB,EAAIynB,EAASznB,GAAMmuB,EAAQ,EAC3B6uI,EAAK,GAGT,OAAQsuO,GACJ,IAAK,SACL,IAAK,SACD0+E,EAAe,UACf5te,YAAM2O,EAAS,CAAE,GAAMojC,EAAQ,EAAG,GAAMC,EAAS,EAAG,GAAMu0c,EAAI,GAAMC,IACpE,MACJ,IAAK,QACDz/S,EAAM,KAAYnjL,EAAI,IAAM4ie,EAAtB,OAA8CD,EAAMx0c,EAAQ,GAAM,IAAMy0c,EAAxE,MACUD,EAAK,KAAOC,EAAMx0c,EAAS,GADrC,MAC6Du0c,EAAK,KACnEC,GAAOx0c,EAAS,GACrBhyC,YAAM2O,EAAS,CAAE,EAAKo4L,EAAKgmL,OAAQp+W,EAAQ8vL,OAC3C,MACJ,IAAK,WACDsI,EAAM,MAAQw/S,EAAKF,GAAc,KAAOG,EAAKH,GAAc,OACtDE,EAAKF,GAAc,KAAOG,EAAKH,GAAc,OAC7CE,EAAKF,GAAc,KAAOG,EAAKH,GAAc,OAASE,EAAKF,GAAc,KAAOG,EAAKH,GAC1Frmf,YAAM2O,EAAS,CAAE,EAAKo4L,EAAKgmL,OAAQp+W,EAAQ8vL,OAC3C,MACJ,IAAK,iBACDsI,EAAM,KAAYnjL,EAAI,IAAM4ie,EAAtB,OAA8CD,EAAMx0c,EAAQ,GAAM,IAAMy0c,EAC9Exmf,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,eACDA,EAAM,KAAYw/S,EAAK,KAAOC,EAAMx0c,EAAS,GAAvC,MAA+Du0c,EAAK,KAAOC,GAAOx0c,EAAS,GACjGhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,UACDA,EAAM,KAAYnjL,EAAI,IAAM4ie,EAAtB,MACUD,EAAK,KAAOC,GAAOx0c,EAAS,GADtC,OAEWu0c,EAAMx0c,EAAQ,GAAM,IAAMy0c,EAFrC,MAGUD,EAAK,KAAOC,EAAMx0c,EAAS,GAHrC,MAIUpuB,EAAI,IAAM4ie,EAAK,KAC/Bxmf,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,aACDA,EAAM,KAAYnjL,EAAI,KAAO4ie,GAAOx0c,EAAS,GAAvC,OACWu0c,EAAMF,GAAe,KAAOG,GAAOx0c,EAAS,GADvD,OAEWu0c,EAAMF,GAAe,KAAOG,EAAMx0c,EAAS,GAFtD,MAGUpuB,EAAI,KAAO4ie,EAAMx0c,EAAS,GAHpC,MAIUpuB,EAAI,KAAO4ie,GAAOx0c,EAAS,GAAM,KACjDhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,aACDA,EAAM,MAAanjL,EAAKyie,GAAe,KAAOG,GAAOx0c,EAAS,GAAxD,OACWu0c,EAAMF,EAAa,GAAM,KAAOG,GAAOx0c,EAAS,GAD3D,OAEWu0c,EAAMF,EAAa,GAAM,KAAOG,EAAMx0c,EAAS,GAF1D,OAGWpuB,EAAKyie,GAAe,KAAOG,EAAMx0c,EAAS,GAHrD,OAIWpuB,EAAKyie,GAAe,KAAOG,GAAOx0c,EAAS,GAAM,KAClEhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,YACL,IAAK,OACL,IAAK,gBACL,IAAK,SACL,IAAK,YACL,IAAK,gBACL,IAAK,WACL,IAAK,mBACL,IAAK,SACL,IAAK,OACDA,EAAM,KAAYnjL,EAAI,KAAO4ie,GAAOx0c,EAAS,GAAvC,OACWu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,GAAOx0c,EAAS,GADtD,OAEWu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAFrD,MAGUpuB,EAAI,KAAO4ie,EAAMx0c,EAAS,GAHpC,MAIUpuB,EAAI,KAAO4ie,GAAOx0c,EAAS,GAAM,KACjDhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,UACL,IAAK,WACDA,EAAM,KAAYnjL,EAAI,KAAO4ie,EAAMx0c,EAAS,GAAtC,MACUu0c,EAAK,KAAOC,GAAOx0c,EAAS,GADtC,OAEWu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAFrD,MAGUpuB,EAAI,KAAO4ie,EAAMx0c,EAAS,GAAM,KAChDhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,SACL,IAAK,mBACDA,EAAM,MAAaw/S,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAAvD,MACUu0c,EAAK,KAAOC,EAAMx0c,EAAS,GADrC,OAEWu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAFrD,OAGWu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAAM,KACjEhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,WACD,IAAK,IAAI9nM,EAAI,EAAGA,GAAK,EAAGA,IACpBinf,EAAQn0c,EAAQ,EAAKnoC,KAAKkqY,IAAKlqY,KAAK6pY,GAAK,KAAQx0Y,EAAI2hL,IACrDulU,EAAQn0c,EAAS,EAAKpoC,KAAKmwH,IAAKnwH,KAAK6pY,GAAK,KAAQx0Y,EAAI2hL,IAElDmmB,EADM,IAAN9nM,EACM,MAAasnf,EAAKL,GAAQ,KAAOM,EAAKL,GAAQ,IAG9Cp/S,EAAI5yK,OAAO,MAAaoyd,EAAKL,GAAQ,KAAOM,EAAKL,GAAQ,KAGvEp/S,EAAMA,EAAI5yK,OAAO,KACjBn0B,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,QACD6mS,EAAe,QACf5te,YAAM2O,EAAS,CAAE,KAAQsW,EAAK,OAAU+sB,EAAQ,MAASD,EAAOnuB,EAAGA,EAAGjL,EAAGA,IAIjF,MAAO,CAAEgqM,aADTh0M,EAgXG,SAA+B08B,EAAUwzC,EAAMqwU,EAAOvgZ,GACzD,IAAIk+B,EAAU,GACVk6J,EAAM,GACNxnC,EAAQ,EACRvtH,EAAS6sC,EAAK7sC,OACdD,EAAQ8sC,EAAK9sC,MACbw0c,EAAKl7c,EAASznB,EACd4ie,EAAKn7c,EAAS1yB,EAClB,OAAQu2Y,GACJ,IAAK,mBACL,IAAK,OACL,IAAK,eACL,IAAK,kBACDnoN,EAAM,MAAaw/S,GAAOx0c,EAAQ,GAAM,IAAOy0c,EAAzC,OACWD,EAAMx0c,EAAQ,GAAM,IAAOy0c,EAC5Cxmf,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,WACDp4L,EAAQ8vL,KAAO,cACfsI,EAAM,MAAaw/S,GAAOx0c,EAAQ,EAAMlF,EAAU,GAAM,KAAO25c,EAAMx0c,EAAS,GAAxE,OAAiGu0c,GACjGx0c,EAAQ,EAAMA,EAAQ,IAAO,KAAOy0c,EAAMx0c,EAAS,GADnD,OAC4Eu0c,GAAOx0c,EAAQ,EAAMA,EAAQ,IACzG,IAAOy0c,EAFP,OAEgCD,GAAOx0c,EAAQ,IAAO,IAAOy0c,EAF7D,OAEsFD,GAAOx0c,EAAQ,IACrG,KAAOy0c,EAAMx0c,EAAS,GAHtB,OAG+Cu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAHzF,OAIKu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,GAAOx0c,EAAS,GAJhD,OAIyEu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,GACpGx0c,EAAS,GALT,MAK4Bu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GALtE,MAK8Fu0c,EAAMx0c,EAAQ,EAC3GlF,EAAU,GAAM,KAAO25c,EAAMx0c,EAAS,GAC7ChyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,UACDp4L,EAAQ8vL,KAAO9vL,EAAQo+W,OACvBp+W,EAAQo+W,OAAS,cACjBhmL,EAAM,MAAaw/S,GAAOx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAAxD,MACWu0c,EAAM,KAAOC,EAAMx0c,EAAS,GADvC,OAEWu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAFrD,MAGWu0c,EAAMx0c,EAAQ,EAAKwtH,GAAS,KAAOinV,EAAMx0c,EAAS,GAH7D,MAIWu0c,EAAM,KAAOC,EAAMx0c,EAAS,EAAM,EAAIutH,GACnD,KAAOgnV,EAAMx0c,EAAQ,EAAKwtH,GAAS,KAAOinV,EAAMx0c,EAAS,GAAM,KACnEhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,YACDA,EAAM,MAAaw/S,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAAvD,MACWu0c,EAAM,KAAOC,EAAMx0c,EAAS,GADvC,OAEWu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAFrD,MAGWu0c,EAAMx0c,EAAQ,EAAKwtH,GAAS,KAAOinV,EAAMx0c,EAAS,GAH7D,MAIWu0c,EAAM,KAAOC,EAAMx0c,EAAS,EAAM,EAAIutH,GACnD,KAAOgnV,EAAMx0c,EAAQ,EAAKwtH,GAAS,KAAOinV,EAAMx0c,EAAS,GAAM,KACnEhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,aACDA,EAAM,MAAaw/S,GAAOx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAAxD,OACWu0c,EAAMx0c,EAAQ,GAAM,IAAOy0c,EADtC,OAEDD,GAAOx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAF1C,OAE8Du0c,GAAOx0c,EAAQ,GAAM,KACpFy0c,EAAMx0c,EAAS,EAAKutH,GAHnB,OAG+CgnV,EAAMx0c,EAAQ,EAAM,EAAIwtH,GAAU,IAAOinV,EAC1F,MAAQD,GAAOx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,EAAKutH,GAAS,KACrEv/J,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,YACDp4L,EAAQ8vL,KAAO9vL,EAAQo+W,OACvBp+W,EAAQo+W,OAAS,cACjBhmL,EAAM,MAAaw/S,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAAvD,OACWu0c,GAAOx0c,EAAQ,GAAM,IAAOy0c,EADvC,OAEDD,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAFzC,OAGDu0c,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,EAAKutH,GAH9C,OAGqEgnV,GAAOx0c,EAAQ,EAAM,EAAIwtH,GAC9F,IAAOinV,EAAM,MAAQD,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,EAAKutH,GAAS,KACnFv/J,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,SACL,IAAK,SACL,IAAK,iBACL,IAAK,oBACL,IAAK,cACL,IAAK,YACDA,EAAM,MAAaw/S,EAAUx0c,EAAQ,EAAb,GAAmB,KAAOy0c,EAAMx0c,EAAS,GAA3D,OACDu0c,GAAWx0c,EAAQ,GAAd,GAAqB,KAAOy0c,EAAMx0c,EAAS,GAD/C,OAEDu0c,GAAWx0c,EAAQ,GAAd,GAAqB,KAAOy0c,EAAMx0c,EAAS,GAF/C,OAEwEu0c,EACzEx0c,EAAQ,EADsE,GAChE,KAAOy0c,EAAMx0c,EAAS,GAHnC,SAIDu0c,GAAOx0c,EAAQ,GAAOA,EAAQ,IAAO,KAAOy0c,EAAMx0c,EAAS,EAAMnF,EAAU,GAJ1E,OAKmB05c,EAAMx0c,EAAQ,GAAOA,EAAQ,IAAO,KAAOy0c,EAAMx0c,EAAS,EAC9EnF,EAAU,GANT,OAMkC05c,EAAMx0c,EAAQ,GAAOA,EAAQ,IAAO,KAAOy0c,EAC5Ex0c,EAAS,GAPV,OAOmCu0c,GAAOx0c,EAAQ,GAAOA,EAAQ,IAAO,KAAOy0c,EAChFx0c,EAAS,GARR,SAQ6Cu0c,EAAUx0c,EAAQ,GAAb,GAAoB,IAAOy0c,EAR7E,OASWD,EAAUx0c,EAAQ,EAAb,GAAmB,IAAOy0c,EAT1C,OAUCD,EAAUx0c,EAAQ,EAAb,GAAmB,KAAOy0c,EAAMx0c,EAAS,GAV/C,OAWCu0c,EAAUx0c,EAAQ,GAAb,GAAoB,KAAOy0c,EAAMx0c,EAAS,GAXhD,KAYNhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,MACL,IAAK,cACL,IAAK,iBACDA,EAAM,MAAaw/S,GAAOx0c,EAAQ,GAAOlF,EAAU,GAAM,KAAO25c,EAAUx0c,EAAS,EAAd,GAA/D,OACau0c,EAAUx0c,EAAQ,GAAb,GAAoB,KAAOy0c,EAAUx0c,EAAS,EAAd,GADlD,OAEDu0c,EAAUx0c,EAAQ,GAAb,GAAoB,KAAOy0c,EAAUx0c,EAAS,GAAd,GAFpC,OAGDu0c,EAAMx0c,EAAQ,GAAOlF,EAAU,GAAM,KAAO25c,EAAUx0c,EAAS,GAAd,GAHhD,SAIau0c,GAAOx0c,EAAQ,GAAOlF,EAAU,GAAM,KAAO25c,EAAMx0c,EAAS,EACxEnF,EAAU,IALX,OAKqC05c,EAAMx0c,EAAQ,EAAMlF,EAAU,GAAM,KAAO25c,EAC/Ex0c,EAAS,EAAMnF,EAAU,IAN1B,OAMoD05c,EAAMx0c,EAAQ,EAAMlF,EAAU,GAClF,KAAO25c,EAAMx0c,EAAS,GAAOnF,EAAU,IAPvC,OAOiE05c,EAAMx0c,EAAQ,GAC7ElF,EAAU,GAAM,KAAO25c,EAAMx0c,EAAS,GAAOnF,EAAU,IARzD,SASO05c,EAAMx0c,EAAQ,GAAOlF,EAAU,GAAM,KAAO25c,EAAMx0c,EAAS,EACjEnF,EAAU,IAVX,OAUqC05c,GAAOx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,EAC/EnF,EAAU,IAXX,OAWqC05c,GAAOx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,EAC/EnF,EAAU,IAZX,OAYqC05c,EAAMx0c,EAAQ,GAAOlF,EAAU,GACpE,KAAO25c,EAAMx0c,EAAS,EAAMnF,EAAU,IAbtC,KAcN7sC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,SACDp4L,EAAQ8vL,KAAO,cACfsI,EAAM,MAAaw/S,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAAvD,MACAu0c,EAAK,KAAOC,EAAKx0c,GAAU,IAAMu0c,EAAK,KAAOC,EAAMx0c,EAAS,GAD5D,MAEkBu0c,EAAK,KAAOC,EAAMx0c,EAAS,GAF7C,OAEsEu0c,EACrEx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAAM,KAAOu0c,EAAMx0c,EAAQ,GAAM,KACrEy0c,EAAMx0c,EAAS,GACtBhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,OACL,IAAK,mBACL,IAAK,YACL,IAAK,eACL,IAAK,kBACDA,EAAM,MAAaw/S,EAAMx0c,EAAQ,EAAMlF,EAAU,GAAM,KAAO25c,EAAMx0c,EAAS,GAAvE,OACmBu0c,GAAOx0c,EAAQ,GAAOlF,EAAU,GAAM,KAAO25c,EAAMx0c,EAAS,GAD/E,MAEmBu0c,EAAM,KAAOC,EAAMx0c,EAAS,GAF/C,OAEwEu0c,EACvEx0c,EAAQ,EAAMlF,EAAU,GAAM,KAAO25c,GAAOx0c,EAAS,EAAMA,EAAS,GAHrE,OAIau0c,EAAMv0c,EAAS,EAAMnF,EAAU,GAAM,KAAO25c,EAAMx0c,EAAS,GAJxE,KAKNhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,aACDA,EAAM,MAAaw/S,EAAMx0c,EAAQ,GAAM,KAAOy0c,EAAMx0c,EAAS,GAAvD,MAA+Eu0c,EAC/E,KAAOC,EAAKx0c,GAAU,IAAMu0c,EAAK,KAAOC,EAAMx0c,EAAS,GADvD,QAEMu0c,EAAK,KAAOC,EAAMx0c,EAAS,GAFjC,OAE0Du0c,EAAMx0c,EAAQ,GAAM,KAC7Ey0c,EAAMx0c,EAAS,GAAM,KAAOu0c,EAAMx0c,EAAQ,GAAM,KAChDy0c,EAAMx0c,EAAS,GAJhB,MAKNhyC,YAAM2O,EAAS,CAAE,EAAKo4L,IACtB,MACJ,IAAK,MACL,IAAK,WACDp4L,EAAQo+W,OAAS,cAGjBhmL,EA/mCZ,SAA+B8mS,EAAMC,EAAM3sc,EAAG6Q,EAAQD,EAAOvyB,GACzD,IAAIine,EAAiBnF,GAAiB,IAAKngd,EAAG,IAAIsgd,GAAc5T,EAAMC,IAClE4Y,EAAiBpF,GAAiB,IAAKngd,EAAG,IAAIsgd,GAAc5T,EAAQ97b,EAAQ,GAAK+7b,IACrF,MAAO,KAAYD,EAAO,IAAMC,EAAzB,OAAmDD,EAAO1sc,GAAK,IAAO2sc,EAAtE,MAAiG3sc,EAAK,IAAOA,EAA7G,UACiCsld,EAAe7ie,EAAI,IAAM6ie,EAAe9te,EADzE,SAC4Gk1d,EAC9G97b,EAAQ,IAAO,KAAO+7b,EAAQ97b,EAAS,IAFrC,MAEyD67b,EAAQ1sc,GAAM,KAAO2sc,EAAO97b,EAAS,IAF9F,MAGA7Q,EAAK,IAAOA,EAHZ,UAGqDuld,EAAe9ie,EAAI,IAAM8ie,EAAe/te,EAH7F,KA4mCOgue,CAAsBJ,EAAIC,EADxB58e,KAAK6L,IAAIu8B,EAAQD,GAAS,EACKC,EAAQD,GAC/C/xC,YAAM2O,EAAS,CAAE,EAAKo4L,IAG9B,MAAO,CAAE4b,aAAch0M,GA/fbi4e,CAAsBv7c,EAAU,IAAIyzC,GAAK/sC,EAAOC,GAASk9W,EAAOvgZ,GAASg0M,aACnDirR,aAAcA,GA3H5BG,CAAgB1ic,EAAUwzC,EAAMqwU,EAAOvgZ,EAASsW,EAAK+ge,EAAgB1za,GAGvF,OAFkB2za,EAAc,OAASnW,EAAYlC,cAAckC,EAAYntR,aAAc0oN,EAAW,IAAIziE,WAAW,CAACyiE,EAASznZ,EAAGynZ,EAAS1yZ,IAAM,MAqIhJ,SAASkue,GAAOhof,EAAO4W,EAAKC,GAC/B,OAAO7W,EAAQ6W,EAAMA,EAAO7W,EAAQ4W,EAAMA,EAAM5W,EAG7C,SAASqG,GAAW4W,GACvB,OAAOjZ,SAASuuB,eAAetV,GAgB5B,SAASgre,GAAiBC,EAAchS,EAAOpuY,EAAY3oB,EAAQoxZ,EAAU31b,EAAOutc,EAAgBlre,EAAImre,EAAW1H,GACtH,IAAIn/N,EAAa2mO,EAAarid,wBAC9Bqwc,EAAMmS,4BAA4BC,mBAAmBxgZ,EAAYogZ,EAActtc,EAAOukC,EAAQoxZ,EAAU4X,EAAgBlre,EAAImre,EAAW1H,EAAQn/N,GAAY,GAGxJ,SAASgnO,GAAmBL,EAAchS,EAAOt7b,EAAO6sb,EAAQ+gB,EAAY9H,GAC/E,IAAItpc,EAAgBpzC,SAASuuB,eAAe2jd,EAAM1xe,QAAQyY,GAAK,iBAA+Bzd,IAAjBioe,EAAOzpd,MAAsBypd,EAAO5rX,SAAW4rX,EAAOzpd,OAAS,yBACxIo5B,IACoB,IAAhBwD,EAAM58B,QACNk4d,EAAMuS,qBAAuB,IAEjCvS,EAAMwS,gBAAgBC,2BAA2Bvxc,EAAe8wc,EAActtc,EAAO6sb,EAAQA,EAAOjtE,OAAO4tF,UAAWI,EAAY/gB,EAAOj7D,SAAUk0E,GAAQ,IAI5J,SAAStQ,GAAe8X,EAAc1gB,EAAYt5a,EAASgob,EAAOt7b,EAAO6sb,EAAQmhB,EAAaJ,EAAYjY,EAAUzoY,EAAY3oB,EAAQgpa,EAAgBlre,EAAImre,EAAW1H,GAC1K,IACIjrX,EADA/oB,EA7BD,SAA6B59E,GAChC,IAAI49E,EAAa,KACjB,IACQ1oG,SAASgB,iBAAiB8pB,GAAUzuB,SACpCqsG,EAAa4oY,YAAiBtxe,SAAS8C,cAAcgoB,GAAUlpB,UAAUiqB,SAGjF,MAAOxrB,GACHqoG,EAAa4oY,YAAiBxmd,GAElC,OAAO49E,EAmBUovV,CAAoB5tY,GAErC,IACI,IACI26b,EAAavjf,OAAa,OAAKsjf,EAAchuc,EAAQ,CAAEA,MAAOA,GAC9D,CAAEs7b,MAAOA,EAAOzO,OAAQA,EAAQ7sb,MAAOA,GAEvCkuc,EAAcp8Y,EAAaA,EAAWm8Y,EAAY3S,EADrC0S,EAAcA,EAAc,YAAc,WACcA,GACrEV,EAAajre,GAAG/c,QAAQ,gBAAiB,KAAO,GACpD,GAAI4of,EAAYzof,OAGZ,IADA,IAAI8E,GADJswH,EAAkB7zH,MAAMlC,UAAUmF,MAAMC,KAAKgkf,IACnBzof,OACjBD,EAAI,EAAGA,EAAI+E,EAAK/E,IACrB8nf,EAAa1if,YAAYiwH,EAAgBr1H,IAGjD,IAAI2of,OAAgB,EACU,sBAA1B7S,EAAM73c,iBACN0qd,EAAgBd,GAAiBtof,KAAK6D,KAAM0kf,EAAchS,EAAOpuY,EAAY3oB,EAAQoxZ,EAAUpxZ,EAAOqoZ,GAAa2gB,EAAgBlre,EAAImre,EAAW1H,GAE9IxK,EAAMnwY,SACNmwY,EAAM9pc,qBAAqB28c,IAGA,UAA1B7S,EAAM73c,kBACX0qd,EAAiBnuc,GAAS6sb,EAAU8gB,GAAmB5of,KAAK6D,KAAM0kf,EAAchS,EAAOt7b,EAAO6sb,EAAQ+gB,EAAY9H,GAAUqI,EAExH7S,EAAMnwY,SACNmwY,EAAM9pc,qBAAqB28c,IAIvC,MAAO1kf,GACH,OAAO6jf,EAEX,OAAOA,EAGJ,SAASpvD,GAAaz4W,GAMzB,MAJQ,aAAeA,EAAKL,KACxB,gBAAkBK,EAAK0+R,UAAY,iBAAmB1+R,EAAKw7L,WAC3D,iBAAmBx7L,EAAKjH,WAAa,YAAciH,EAAKl5C,QACxD,WAAak5C,EAAKlH,MAAQ,IAI3B,SAAS6va,GAAmBxkf,EAASk8e,EAAQuI,QACjC,IAAXvI,IAAqBA,GAAS,GAC7BuI,GACDjlf,SAASgiC,KAAKxgC,YAAYhB,GAE9B,IAAI80X,EAAS90X,EAAQqhC,wBAOrB,OANI66c,EACAzzd,aAAOzoB,GAEDykf,GACN1pc,GAAc/6C,EAAQyY,IAEnBq8W,EAcJ,SAAS4vH,GAASnke,EAAGjL,EAAGupH,EAAOF,EAAO6gX,GACzCj/d,EAA0B,gBAApBs+G,EAAMg0W,UACRZ,GAAU1xd,EAAI,EAAKA,EAAIha,KAAKi9N,IAAI3kG,EAAMozW,QAASpzW,EAAMg1W,aAAazhe,KAAOysH,EAAMozW,SAAW1xd,EAC9FjL,EAA0B,gBAApBqpH,EAAMk0W,UACRZ,GAAU38d,EAAI,EAAKA,EAAI/O,KAAKi9N,IAAI7kG,EAAMszW,QAAStzW,EAAMk1W,aAAazhe,KAAOusH,EAAMszW,SAAW38d,EAC9FiL,EAAI85d,GAAmB95d,EAAGs+G,GAC1BvpH,EAAI+ke,GAAmB/ke,EAAGqpH,GAC1B,IAAIgmX,EAAWnF,EAAa3gX,EAAM3vF,KAAKP,OAASkwF,EAAM3vF,KAAKR,MACvDk2c,EAAWpF,EAAa7gX,EAAMzvF,KAAKR,MAAQiwF,EAAMzvF,KAAKP,OAG1D,OAAO,IAAIyvc,GAFKoB,EAAalqe,EAAKsve,EAAWrke,EAAKoke,EAClCnF,GAAc,EAAIj/d,GAAMoke,GAAY,EAAIrve,GAAMsve,GAiC3D,SAASC,GAAmB3Z,EAAU3re,EAAQmkf,EAAcxH,EAAQ4I,EAAWvke,EAAGjL,EAAGpZ,EAAOqiG,EAAWwmZ,EAAcC,EAAQC,EAAc3D,GAO9I,QANkB,IAAdwD,IAAwBA,GAAY,QAC9B,IAANvke,IAAgBA,EAAI,UACd,IAANjL,IAAgBA,EAAI,UACH,IAAjByve,IAA2BA,GAAe,QAC/B,IAAXC,IAAqBA,GAAS,QACb,IAAjBC,IAA2BA,EAAe,MAC1C/Z,EACA,OAAO,KAEX,IAAIga,EAAa3lf,EAAO+C,cAAc,IAAMohf,EAAajre,IACrDzY,EAAWklf,GAAcrjf,GAAW6hf,EAAajre,IACjDnZ,EAAQokf,EACR5jd,EAAWwhd,GAAoC,IACnD,GAAIpF,GAAU4I,GAAa9kf,EAIvB,GAHA9D,EAAQA,IAA8B,QAApB8D,EAAQgvB,QACtB,IAAIovd,IAAgBp+e,EAAQgzB,MAAMzS,GAAG5kB,MAAM,MAAM,IAAOqE,EAAQgzB,MAAM1d,GAAG3Z,MAAM,MAAM,IACrF,IAAIyif,IAAep+e,EAAQmuB,aAAa5N,IAAKvgB,EAAQmuB,aAAa7Y,KAClEipF,GAA2B,cAAdA,EACb6iZ,GAAcsC,EAAcA,EAAav1d,aAAa,KAAM+td,EAAQ39Y,EAAWz+D,QAE9E,GAAIkld,GAAUC,GA1epB,SAA4Bjlf,EAASnB,EAAOihC,EAAUqld,EAAaF,GACtE,IAAIn5S,EAAW,SAAU58J,GACrBlvC,EAAQ40B,aAAa,IAAKsa,EAAK3uB,EAAI,IACnCvgB,EAAQ40B,aAAa,IAAKsa,EAAK55B,EAAI,IACnCtV,EAAQ40B,aAAa,QAASsa,EAAKR,MAAQ,IAC3C1uC,EAAQ40B,aAAa,SAAUsa,EAAKP,OAAS,KAEjD,IAAIzQ,IAAU,IAAIY,QAAQ3+B,YAAc,OAAQ,CAC5C2/B,SAAUA,EACVjhC,MAAOA,EAEPshC,SAAU,SAAUlhC,GAChB6sM,EAAS,IAAIm+R,GAAK3rc,GAAOr/B,EAAKygC,UAAWuld,EAAa1ke,EAAG4ke,EAAY5ke,EAAI0ke,EAAa1ke,EAAGthB,EAAK6gC,UAAWxB,GAAOr/B,EAAKygC,UAAWuld,EAAa3ve,EAAG6ve,EAAY7ve,EAAI2ve,EAAa3ve,EAAGrW,EAAK6gC,UAAWxB,GAAOr/B,EAAKygC,UAAWuld,EAAav2c,MAAOy2c,EAAYz2c,MAAQu2c,EAAav2c,MAAOzvC,EAAK6gC,UAAWxB,GAAOr/B,EAAKygC,UAAWuld,EAAat2c,OAAQw2c,EAAYx2c,OAASs2c,EAAat2c,OAAQ1vC,EAAK6gC,aAElYnoB,IAAK,WACDm0L,EAASq5S,MA4dTC,CAAmB9lf,EAAO,EAAGwgC,EAAU,IAAImqc,IAAMjqe,EAAQmuB,aAAa,MAAOnuB,EAAQmuB,aAAa,MAAOnuB,EAAQmuB,aAAa,UAAWnuB,EAAQmuB,aAAa,WAAY82d,OAEzK,CACD,IAAItte,EAAwB,QAAlBrY,EAAM0vB,QACZ,IAAIovd,IAAgB9+e,EAAM0zB,MAAMzS,GAAG5kB,MAAM,MAAM,IAAO2D,EAAM0zB,MAAM1d,GAAG3Z,MAAM,MAAM,IACjF,IAAIyif,IAAe9+e,EAAM6uB,aAAa5N,IAAKjhB,EAAM6uB,aAAa7Y,IAClE+ve,GAAqB/lf,EAAOwgC,EAAU5jC,EAAOyb,EAAK4I,EAAGjL,QAGpD4me,GAAU4I,IAAc9kf,GAAW+kf,GACxCrC,GAAgBpjf,EAAO,EAAG,IAAK,UAE/B4lf,EACA3lf,EAAOqzI,aAAatzI,EAAOU,GAG3BT,EAAOyB,YAAY1B,GAIpB,SAASgmf,GAAuBzqa,EAAIE,EAAIE,EAAIE,EAAIoqa,GACnD,IAAI72c,EAAQnoC,KAAKgH,IAAIstE,EAAKI,GACtBtsC,EAASpoC,KAAKgH,IAAIwtE,EAAKI,GACvB56D,EAAIha,KAAK8L,IAAImze,GAAYj/e,KAAK6L,IAAIyoE,EAAII,GAAKvsC,EAAO62c,EAAUhle,EAAGgle,EAAU72c,OAAQ62c,EAAUhle,GAC3FjL,EAAI/O,KAAK8L,IAAImze,GAAYj/e,KAAK6L,IAAI2oE,EAAII,GAAKxsC,EAAQ42c,EAAUjwe,EAAGiwe,EAAU52c,QAAS42c,EAAUjwe,GACjG,OAAO,IAAI20d,GAAK1pd,EAAGjL,EAAG/O,KAAK6L,IAAIs8B,EAAO62c,EAAU72c,OAAQnoC,KAAK6L,IAAIu8B,EAAQ42c,EAAU52c,SAGhF,SAAS62c,GAAYtpf,EAAOs/E,EAAMppE,EAAKC,GAO1C,OANInW,EAAQkW,EACRlW,EAAQkW,EAEFlW,EAAQs/E,EAASnpE,EAAMD,IAC7BlW,EAASmW,EAAMD,EAAOopE,GAEnBt/E,EAGJ,SAASupf,GAAajI,EAAcva,EAAQyO,GAC/C,IAAIuD,EAAchS,EAAOtkW,MAAMs2W,YAC3B1je,EAAO,GACPm0e,EAAqD,OAAjCzQ,EAAYrze,MAAM,WAC1C,OAAQqhe,EAAO0iB,YACX,IAAK,KAOkC,eAA/B1iB,EAAOyO,MAAMyC,eACgC,IAAzClR,EAAOyQ,SAASv2e,QAAQ,aACQ,gBAA3B8le,EAAOtkW,MAAMk0W,WACdwK,GAAUpa,EAAO2iB,cAAcC,UAAUrI,EAAahke,OAAQypd,EAAOtkW,QACrE02W,GAAOpS,EAAO2iB,cAAcC,UAAUrI,EAAahke,OAAQypd,EAAOtkW,MAAMk1W,gBACxEtie,EAAK3Q,KAAK48e,EAAajse,MAAQise,EAAahmJ,OAAOrrV,aAIvB,gBAA3B82d,EAAOtkW,MAAMk0W,WAA+BwK,GAAUG,EAAahmJ,OAAQyrI,EAAOtkW,QACnF02W,GAAOmI,EAAahmJ,OAAQyrI,EAAOtkW,MAAMk1W,gBACzCtie,EAAK3Q,KAAK48e,EAAajse,MAAQise,EAAahmJ,OAAOrrV,YAK3DoF,EAAK3Q,KAAK48e,EAAajse,MAAQise,EAAahmJ,OAAOrrV,YAEvD,MACJ,IAAK,UACDoF,EAAK3Q,KAAK48e,EAAajse,MAAQhL,KAAK8L,IAAImre,EAAav0T,KAAMu0T,EAAax0T,KAAK78K,YAC7EoF,EAAK3Q,KAAK48e,EAAajse,MAAQhL,KAAK6L,IAAIore,EAAav0T,KAAMu0T,EAAax0T,KAAK78K,YAC7E,MACJ,IAAK,mBACDoF,EAAK3Q,KAAK48e,EAAajse,MAAQhL,KAAK8L,IAAImre,EAAav0T,KAAMu0T,EAAax0T,KAAK78K,YAC7EoF,EAAK3Q,KAAK48e,EAAajse,MAAQhL,KAAK6L,IAAIore,EAAav0T,KAAMu0T,EAAax0T,KAAK78K,YAC7EoF,EAAK3Q,KAAK48e,EAAajse,MAAQhL,KAAK8L,IAAImre,EAAaz8e,KAAMy8e,EAAan8e,OAAO8K,YAC/EoF,EAAK3Q,KAAK48e,EAAajse,MAAQhL,KAAK6L,IAAIore,EAAaz8e,KAAMy8e,EAAan8e,OAAO8K,YAC/E,MACJ,IAAK,UACDoF,EAAK3Q,KAAK48e,EAAajse,MAAQise,EAAatwJ,OAAO/gV,YACnDoF,EAAK3Q,KAAK48e,EAAajse,MAAQise,EAAa7K,QAAQxme,YACpDoF,EAAK3Q,KAAK48e,EAAajse,MAAQise,EAAa/K,QAAQtme,YACpDoF,EAAK3Q,KAAK48e,EAAajse,MAAQise,EAAasI,cAAc35e,YAC1DoF,EAAK3Q,KAAK48e,EAAajse,MAAQise,EAAauI,cAAc55e,YAC1D,IAAK,IAAInP,EAAK,EAAGuF,EAAKi7e,EAAawI,SAAUhpf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC/D,IAAIipf,EAAQ1jf,EAAGvF,GACfuU,EAAK3Q,KAAK48e,EAAajse,MAAQ00e,EAAM95e,aAIjD,GAAI8oe,IAAgBuI,EAAajse,KAAM,CACnC0xd,EAAOtkW,MAAM30H,OAAS0ne,EAAMzua,KAAKpoD,gBAAgB,CAC7C7Q,OAAQ07e,EAAoB,GAAKzQ,EACjCzle,YAAakie,EAAMwD,uBAEvB,IAAK,IAAIt5e,EAAI,EAAGA,EAAI2V,EAAK1V,OAAQD,IAC7B2V,EAAK3V,GAAK8pf,EAAoBzQ,EAAYv5e,QAAQ,UAAWune,EAAOtkW,MAAM30H,OAAO+N,WAAWxG,EAAK3V,MAC7Fqne,EAAOtkW,MAAM30H,OAAO+N,WAAWxG,EAAK3V,KAGhD,OAAO2V,EAGJ,SAASqkM,GAAUtoI,GACtBxsE,OAAOY,cAAc4rE,GAGlB,SAAS6uD,GAAUjtF,EAAMg3c,EAAal+E,GACzC,IAAIm9E,EAAc,IAAIlb,GAAK/6b,EAAK3uB,EAAIynZ,EAASznZ,EAAG2uB,EAAK55B,EAAI0yZ,EAAS1yZ,EAAG45B,EAAKR,MAAOQ,EAAKP,QAKtF,OAJgBu3c,EAAYx9d,MAAK,SAAUwmB,GACvC,OAAQi2c,EAAY5ke,EAAI2uB,EAAK3uB,EAAI2uB,EAAKR,OAASy2c,EAAY5ke,EAAI4ke,EAAYz2c,MAAQQ,EAAK3uB,GACpF4ke,EAAY7ve,EAAI45B,EAAK55B,EAAI45B,EAAKP,QAAUw2c,EAAYx2c,OAASw2c,EAAY7ve,EAAI45B,EAAK55B,KAKvF,SAAS6we,GAAUhB,EAAaj2c,GACnC,OAAQi2c,EAAY5ke,EAAI2uB,EAAK3uB,EAAI2uB,EAAKR,OAASy2c,EAAY5ke,EAAI4ke,EAAYz2c,MAAQQ,EAAK3uB,GACpF4ke,EAAY7ve,EAAI45B,EAAK55B,EAAI45B,EAAKP,QAAUw2c,EAAYx2c,OAASw2c,EAAY7ve,EAAI45B,EAAK55B,EAQnF,SAAS8we,GAAcp+c,EAAU22X,EAAUtyX,GAC9C,OAAO,IAAI49b,GAAMjic,EAASznB,EAAKo+Y,EAASjwX,MAAQ,EAAKrC,EAAOvK,KAAQkG,EAAS1yB,EAAKqpZ,EAAShwX,OAAS,EAAKtC,EAAOrK,IAAM28X,EAASjwX,MAAQrC,EAAOvK,KAAOuK,EAAOtK,MAAO48X,EAAShwX,OAAStC,EAAOrK,IAAMqK,EAAOpK,QAGtM,SAASokd,GAAiB7qf,GAC7B,MAAO,IAAM8qf,GAAe9qf,EAAMsiC,GAAKwod,GAAe9qf,EAAMs9P,GAAKwtP,GAAe9qf,EAAMmL,GAGnF,SAAS2/e,GAAe9qf,GAC3B,IAAIq8b,EAAMr8b,EAAM2Q,SAAS,IACzB,OAAsB,IAAf0rb,EAAIh8b,OAAe,IAAMg8b,EAAMA,EAGnC,SAAS0uD,GAAkB1uD,GAC9B,IAAIl6b,EAAS,4CAA4CsmB,KAAK4za,GAC9D,OAAOl6b,EAAS,IAAI6of,GAAWrxe,SAASxX,EAAO,GAAI,IAAKwX,SAASxX,EAAO,GAAI,IAAKwX,SAASxX,EAAO,GAAI,KACjG,IAAI6of,GAAW,IAAK,IAAK,KAG1B,SAASC,GAAe9xa,GAC3BA,EAAkB,gBAAVA,EAA0B,QAAUA,EAC5Cn1E,SAASgiC,KAAKxgC,YAAYb,YAAc,OAAQ,CAAEsY,GAAI,sBACtD,IAAIzY,EAAUR,SAASuuB,eAAe,oBACtC/tB,EAAQgzB,MAAM2hD,MAAQA,EACtBA,EAAQ7zE,OAAOwhC,iBAAiBtiC,GAAS20E,MACzClsD,aAAOzoB,GACP,IACI0mf,EADM,uGACWzie,KAAK0wD,GAC1B,OAAO0xa,GAAiB,IAAIG,GAAWrxe,SAASuxe,EAAW,GAAI,IAAKvxe,SAASuxe,EAAW,GAAI,IAAKvxe,SAASuxe,EAAW,GAAI,MAGtH,SAASC,GAAmBhya,EAAOysU,IAEtCzsU,GADAA,EAAQ8xa,GAAe9xa,IACTj5E,QAAQ,cAAe,KAC3BG,OAAS,IACf84E,EAAQA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,IAEzEysU,EAASA,GAAU,EAInB,IAFA,IACIwlG,EADAC,EAAM,IAEDjrf,EAAI,EAAGA,EAAI,EAAGA,IACnBgrf,EAAYzxe,SAASw/D,EAAMtoE,OAAW,EAAJzQ,EAAO,GAAI,IAE7Cirf,IAAQ,MADRD,EAAYrgf,KAAKooI,MAAMpoI,KAAK6L,IAAI7L,KAAK8L,IAAI,EAAGu0e,EAAaA,EAAYxlG,GAAU,OACtDj1Y,SAAS,KAAKE,OAAOu6e,EAAUz6e,SAAS,IAAItQ,QAEzE,OAAOgrf,EA0JJ,SAASvE,GAAS5oW,EAAUnoI,EAAMsqE,GACrC,IAAIpH,EAAQljE,EACRiqE,EAAO8tZ,GAAY/3d,EAAMsqE,GAAMntC,MACnC,GAAI8sC,EAAOk+D,EAEP,IADA,IACS99I,EADQ2V,EAAK1V,OACI,EAAGD,GAAK,IAAKA,EAGnC,IADA4/E,EAAO8tZ,GADP70Z,EAAQljE,EAAKnF,UAAU,EAAGxQ,GAAK,MACLigF,GAAMntC,QACpBgrG,EACR,OAAOjlE,EAInB,OAAOA,EA2BJ,SAASqya,GAAetrf,EAAOurf,GAClC,OAAc,OAAVvrf,QAA4BR,IAAVQ,GACa,IAAxBA,EAAM2B,QAAQ,KAAe4pf,EAAgB,IAAO5xe,SAAS3Z,EAAO,IAAM2Z,SAAS3Z,EAAO,IAE9F,KAGJ,SAASumf,GAAc7F,EAAQzje,EAAInN,EAAS85R,GAC/C,IAAK82M,EACD,OAAO,KAEX,IAAIl8e,EAAU6B,GAAW4W,GAIzB,OAHIzY,GAAWsL,GACX85R,EAASy+L,qBAAqBv4d,EAA6B,aAApBtL,EAAQgvB,QAAyBhvB,EAAQstB,WAAW,GAAKttB,GAE7FA,EAGJ,SAASqlf,GAAqBrlf,EAAS8/B,EAAU5jC,EAAOyb,EAAK4I,EAAGjL,QACzD,IAANiL,IAAgBA,EAAI,UACd,IAANjL,IAAgBA,EAAI,KACxB,IAAI0xe,EAA4B,QAApBhnf,EAAQgvB,QAChB88K,EAAW,SAAUyrJ,EAAQC,GACzBwvJ,GACAhnf,EAAQgzB,MAAMzS,GAAKg3U,EAAS,KAC5Bv3V,EAAQgzB,MAAM1d,GAAKkiV,EAAS,OAG5Bx3V,EAAQ40B,aAAarU,EAAGg3U,EAAS,IACjCv3V,EAAQ40B,aAAatf,EAAGkiV,EAAS,MAGzC1rJ,EAAS5vM,EAAMqkB,EAAGrkB,EAAMoZ,GACxB,IAAI4oB,IAAU,IAAIY,QAAQ3+B,YAAc,OAAQ,CAC5C2/B,SAAUA,EACVK,SAAU,SAAUlhC,GAChB6sM,EAASxtK,GAAOr/B,EAAKygC,UAAWxjC,EAAMqkB,EAAG5I,EAAI4I,EAAIrkB,EAAMqkB,EAAGthB,EAAK6gC,UAAWxB,GAAOr/B,EAAKygC,UAAWxjC,EAAMoZ,EAAGqC,EAAIrC,EAAIpZ,EAAMoZ,EAAGrW,EAAK6gC,YAEpInoB,IAAK,WACDm0L,EAASn0L,EAAI4I,EAAG5I,EAAIrC,MAKzB,SAAS45d,GAAY9pM,EAAUn8R,EAAQ4yE,EAAMlH,EAAOp1E,EAAQ0nf,EAAS/K,EAAQ4I,EAAWC,EAAczD,EAAiB4F,EAAgBpN,EAAWqN,EAAyBjc,QAC9J,IAAZ+b,IAAsBA,GAAU,QACf,IAAjBlC,IAA2BA,GAAe,GAC9C,IAAI9V,EACAhB,EAEAt/b,EACAw5b,EACA1zZ,EACJw6Z,EAAgB,CACZ,GAAMhme,EAAOwP,GACb,EAAKxP,EAAOsX,EACZ,EAAKtX,EAAOqM,EACZ,KAAQq/D,GAAgB,QACxB,YAAakH,EAAKL,KAClB,aAAcK,EAAK0+R,UACnB,cAAe1+R,EAAKjH,WACpB,cAAeiH,EAAKw7L,WACpB,cAAepuQ,EAAO2gG,OACtB,cAAiB3gG,EAAOu/d,cACxB,UAAav/d,EAAOu5B,UACpB,QAAWq5C,EAAKl5C,QAChB,oBAAqB15B,EAAOohe,UAEhC,IAAI94d,EAA8B,kBAAhBtI,EAAOsI,KAAoBtI,EAAOsI,KAAO01e,EAAUh+e,EAAOsI,KAAKtI,EAAOsI,KAAK1V,OAAS,GAAKoN,EAAOsI,KAAK,GACnH02d,EAASif,EAAiBA,EAAe3me,EAAI,EAC7C2nd,EAASgf,EAAiBA,EAAe5xe,EAAI,EAC7Ck0d,EAAapkM,EAASq/L,WAAWwK,EAAe19d,EAAM02d,EAAQC,GAOlE,GANAsB,EAAWx2c,MAAM4hD,WAAaiH,EAAKjH,WACnC40Z,EAAWx2c,MAAMunV,UAAY1+R,EAAK0+R,UAClCivH,EAAWx2c,MAAM6hD,SAAWgH,EAAKL,KACjCguZ,EAAWx2c,MAAMqkP,WAAax7L,EAAKw7L,WACnCmyN,EAAWx2c,MAAM2hD,MAAQkH,EAAKlH,MAC9B60Z,EAAWx2c,MAAMo0d,WAAan+e,EAAO2gG,OACV,kBAAhB3gG,EAAOsI,MAAqBtI,EAAOsI,KAAK1V,OAAS,EACxD,IAAK,IAAID,EAAI,EAAG+E,EAAMsI,EAAOsI,KAAK1V,OAAQD,EAAI+E,EAAK/E,IAC/C+yC,EAAU26b,GAAYrge,EAAOsI,KAAK3V,GAAIigF,GAAMltC,OAC5Cw5b,EAAMl/d,EAAOqM,GAAO2xe,GAAarrf,EAAI+yC,EAAW/yC,EAAI+yC,GACpD8lC,EAAQwya,EAAUh+e,EAAOsI,KAAKtI,EAAOsI,KAAK1V,QAAUD,EAAI,IAAMqN,EAAOsI,KAAK3V,GACtEsve,EACA+C,EAAe7oM,EAASq/L,WAAWwK,EAAex6Z,EAAO,KAAM,KAAM0zZ,GAAI,IAGzE8F,EAAe7oM,EAASs/L,YAAY,CAChC,EAAKz7d,EAAOsX,EAAG,GAAMtX,EAAOwP,GAC5B,EAAK0vd,GACN1zZ,GACH+0Z,EAAWxoe,YAAYite,IAOnC,OAHKkZ,GACDtC,GAAmBz/M,aAAoB+gM,GAAgB5me,EAAQiqe,EAAY0S,EAAQ4I,EAAW,IAAK,IAAK,KAAM,KAAMC,GAAc,EAAO,KAAMzD,GAE5I9X,EAKJ,SAAS6d,GAAc3V,GAE1B,IAAIl0W,EAAiBk0W,EAAM1xe,QAAQ49D,aAAe8za,EAAM1xe,QAAQy1B,YAC5DwoG,EAAkByzW,EAAM1xe,QAAQmgJ,aAChCuxV,EAAMoJ,aACNt9W,EAAiBk0W,EAAMoJ,WAAW96e,QAAQ49D,aAE9C,IACI0pb,EADA34c,EAAS,IAEb,GAA8B,mBAA1B+ic,EAAM73c,gBAAsC,CAC5C,IAAIroB,EAAQkge,EACR6V,EAAe/1e,EAAM4/F,QAAQoiC,OAAS,GAAK,EAC3Cg0W,EAAeh2e,EAAMi2e,uBAAuBC,QAAQ7rf,OACpD2V,EAAMi2e,uBAAuB94c,OAAS,EAC1C24c,EAAe91e,EAAM66B,OAAOrK,IAAMxwB,EAAM66B,OAAOpK,OAASsld,EACxD,IAAIzN,EAAYxQ,GAAY,aAAc93d,EAAMoje,YAAYjmc,OAE5DA,GAAU+ic,EAAMzO,OAAOpne,OAAUwpB,IAAQa,SAAW,GAAK,KAAS1U,EAAMm2e,eAAkB,GAAoB7N,EAAa,IACrHwN,GAAiBE,EACnBh2e,EAAMo2e,uBACNj5c,EAAS64c,GAGjB9V,EAAM6Q,cAAgB,IAAI9ma,GAAKqra,GAAepV,EAAMhjc,MAAO8uF,IAAmBA,GAAkB,IAAKspX,GAAepV,EAAM/ic,OAAQsvF,GAAmBtvF,IAAWsvF,GAAmBtvF,GAOhL,SAASg1b,GAAU+N,GACtBA,EAAMmW,aAAe,IAAI1hB,GAAeuL,EAAM1xe,QAAQyY,IACtDi5d,EAAMtsM,SAAWssM,EAAMoW,aAAepW,EAAMmW,aAAe,IAAIvkB,GAAYoO,EAAM1xe,QAAQyY,IACzF4ue,GAAc3V,GACVA,EAAMoJ,YAAwC,UAA1BpJ,EAAM73c,gBAC1B63c,EAAMlG,UAAYkG,EAAMoJ,WAAWiN,YAE9BrW,EAAMoJ,YAAwC,mBAA1BpJ,EAAM73c,gBAC/B63c,EAAMlG,UAAYkG,EAAMoJ,WAAWkN,eAG/BtW,EAAMoW,aACNpW,EAAMlG,UAAYkG,EAAMtsM,SAAS8gM,aAAa,CAC1Cztd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,UACvBi2B,MAAOgjc,EAAM6Q,cAAc7zc,MAC3BC,OAAQ+ic,EAAM6Q,cAAc5zc,SAIhC+ic,EAAMlG,UAAYkG,EAAMtsM,SAASu+L,UAAU,CACvClrd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,OACvBi2B,MAAOgjc,EAAM6Q,cAAc7zc,MAC3BC,OAAQ+ic,EAAM6Q,cAAc5zc,SAYrC,SAAS06J,GAASjjD,EAAOpzH,EAAO0b,GACnC,IAAIyqc,EAAkB,GACtB,OAAQnmd,EAAM+/P,cACV,IAAK,OACDomN,EAAkByC,GAASx1V,EAAO13G,EAAO1b,GACzC,MACJ,IAAK,OACDmmd,EAAgBv4e,KAAK0hf,GAAS5zc,EAAO03G,EAAOpzH,IAC5C,MACJ,QACImmd,EAAgBv4e,KAAKwlJ,GAG7B,OAAO+yV,EAKJ,SAAS8O,GAAe/4c,EAAM0qc,GAWjC,MATiC,SAA7BA,EAAWzvG,cACCj7V,EAAK3uB,EAEiB,WAA7Bq5d,EAAWzvG,cACJj7V,EAAK3uB,EAAI2uB,EAAKR,MAAQ,EAGtBQ,EAAK3uB,EAAI2uB,EAAKR,MAO3B,SAASktc,GAASY,EAAcpgE,EAAcvgW,GAKjD,IAJA,IAGItqE,EAHA28d,EAAiBsO,EAAa7gf,MAAM,KACpC84E,EAAQ,GACRyta,EAAkB,GAEbtmf,EAAI,EAAG+E,EAAMute,EAAerye,OAAQD,EAAI+E,EAAK/E,IAClD2V,EAAO28d,EAAetye,GAClB0te,GAAY70Z,EAAM3jD,OAAOvf,GAAOsqE,GAAMntC,MAAQ0tY,EAC9C3nW,EAAQA,EAAM3jD,QAAkB,KAAV2jD,EAAe,GAAK,KAAOljE,GAGnC,KAAVkjE,GACAyta,EAAgBthf,KAAK0hf,GAASlmE,EAAc3nW,EAAOoH,IACnDpH,EAAQljE,IAGR2we,EAAgBthf,KAAK0hf,GAASlmE,EAAc7qa,EAAMsqE,IAClDtqE,EAAO,IAGXkjE,GAAS74E,IAAM+E,EAAM,GACrBuhf,EAAgBthf,KAAK0hf,GAASlmE,EAAc3nW,EAAOoH,IAG3D,OAAOqma,EAKJ,SAASgG,GAAe32e,EAAM0zF,GAcjC,IAbA,IAAImhD,EAAQ70I,EAAK7V,QAAQupG,EAAQ,KAC7BkjZ,EAAQ52e,EAAK3P,MAAMqjG,GACnBmjZ,EAAgB,IAChBC,EAAgB,IAChBx/a,EAAI,EACJy/a,EAAa,CACb,EAAK,SAAU,EAAK,SAAU,EAAK,SAAU,EAAK,SAAU,EAAK,SACjE,EAAK,SAAU,EAAK,SAAU,EAAK,SAAU,EAAK,SAAU,EAAK,UAEjEC,EAAa,CACb,EAAK,SAAU,EAAK,OAAU,EAAK,OAAU,EAAK,OAAU,EAAK,SACjE,EAAK,SAAU,EAAK,SAAU,EAAK,SAAU,EAAK,SAAU,EAAK,UAE5D3sf,EAAI,EAAGA,GAAKwqJ,EAAMvqJ,OAAS,EAAGD,IACnC,GAAiB,MAAbwqJ,EAAMxqJ,GAAY,CAClBwsf,EAAiBnjZ,IAAWkyY,GAAUgR,EAAMt/a,GAAGntE,QAAQ,KAAM,IAAMysf,EAAMt/a,GAAGntE,QAAQ,MAAO,IAC3F,IAAK,IAAIyL,EAAI,EAAGA,EAAIihf,EAAcvsf,OAAQsL,IACtCkhf,GAAkBpjZ,IAAWkyY,GAAUmR,EAAWF,EAAcjhf,IAAMohf,EAAWH,EAAcjhf,IAEnG0hE,SAGAw/a,GAAiBjiW,EAAMxqJ,GAG/B,OAAOysf,EAAch9d,OAKlB,SAASm9d,GAAqBv5a,GACjC,IAAK,IAAIrzE,EAAI,EAAGA,EAAIqzE,EAAQ+6V,YAAYnua,OAAQD,IAC5CiyB,cAAqBohD,EAAQjvE,QAAQyY,GAAK,eAAiB7c,GAAGF,QAAQ,gBAAiB,IAAK,mBAGhGmyB,aAAoBohD,EAAQjvE,QAAQyY,GAAhBw2D,yCAAoE,YAExFphD,aAAoBohD,EAAQjvE,QAAQyY,GAAK,cAG7C,IAQIgwe,GACA,SAAqBl9R,EAAYC,GAC7BxsN,KAAK0pf,YAAcn9R,EACnBvsN,KAAK6mf,UAAYr6R,GAMrBm9R,GAA4B,SAAUxqd,GAEtC,SAASwqd,EAAWlwe,EAAI2iL,EAAMzzB,EAAQhlI,EAASuM,EAAM22X,EAAIC,EAAItjY,EAAWgkc,GACpE,IAAIzne,EAAQo/B,EAAO79B,KAAKtB,KAAMyZ,EAAI2iL,EAAMzzB,EAAOj5H,MAAOi5H,EAAOhzF,MAAOhyC,EAAS6jc,IAAcxne,KAS3F,OARAD,EAAMuW,EAAI45B,EAAK55B,EACfvW,EAAMwhB,EAAI2uB,EAAK3uB,EACfxhB,EAAM4vC,OAASO,EAAKP,OACpB5vC,EAAM2vC,MAAQQ,EAAKR,MACnB3vC,EAAM8ma,GAAKA,GAAU,EACrB9ma,EAAM+ma,GAAKA,GAAU,EACrB/ma,EAAMyjC,UAAYA,GAAwB,GAC1CzjC,EAAM2qX,OAA2B,IAAjB/hN,EAAOj5H,OAAgC,KAAjB3vC,EAAM2qX,OAAiB/hN,EAAOhzF,MAAQ,cACrE51E,EAEX,OAbAs+B,GAAUsrd,EAAYxqd,GAafwqd,EAdqB,CAe9Bhe,IAGEie,GACA,SAAqBj6c,EAAQD,EAAOzG,EAAM1nB,EAAGjL,EAAGmD,EAAI+c,EAAYgvc,GAC5Dxle,KAAK2vC,OAASA,EACd3vC,KAAK0vC,MAAQA,EACb1vC,KAAKipC,KAAOA,EACZjpC,KAAKuhB,EAAIA,EACTvhB,KAAKsW,EAAIA,EACTtW,KAAKyZ,GAAKA,EACVzZ,KAAKw2B,WAAaA,EAClBx2B,KAAKwle,oBAAsBA,GAM/BqkB,GAA8B,SAAU1qd,GAExC,SAAS0qd,EAAapwe,EAAI2iL,EAAMzzB,EAAQhlI,EAAS27O,EAAIinN,EAAIznc,GACrD,IAAI/+B,EAAQo/B,EAAO79B,KAAKtB,KAAMyZ,EAAI2iL,EAAMzzB,EAAOj5H,MAAOi5H,EAAOhzF,MAAOhyC,IAAY3jC,KAIhF,OAHAD,EAAMwme,GAAKA,EACXxme,EAAMu/Q,GAAKA,EACXv/Q,EAAM++B,EAAIA,EACH/+B,EAEX,OARAs+B,GAAUwrd,EAAc1qd,GAQjB0qd,EATuB,CAUhCle,IAGEme,GACA,SAAuBrwe,EAAIkiE,EAAQygH,GAC/Bp8L,KAAKyZ,GAAKA,EACVzZ,KAAK27E,OAASA,EACd37E,KAAKo8L,KAAOA,GAMhBgjT,GACA,SAAuB79d,EAAGjL,GACtBtW,KAAKuhB,EAAIA,EACTvhB,KAAKsW,EAAIA,GAiBbyze,GACA,SAAmBjnd,EAAMC,EAAOC,EAAKC,GACjCjjC,KAAK8iC,KAAOA,EACZ9iC,KAAK+iC,MAAQA,EACb/iC,KAAKgjC,IAAMA,EACXhjC,KAAKijC,OAASA,GAMlBukd,GACA,SAAoB1od,EAAGg7N,EAAGnyP,GACtB3H,KAAK8+B,EAAIA,EACT9+B,KAAK85P,EAAIA,EACT95P,KAAK2H,EAAIA,GAMbqif,GACA,SAAmB5yc,EAAO6sb,EAAQzpd,QAChB,IAAVA,IAAoBA,EAAQ,GAChCxa,KAAKo3C,MAAQA,EACbp3C,KAAKike,OAASA,EACdjke,KAAKiqf,UAAYzve,GAMrB0ve,GACA,SAAsB9yc,EAAO6sb,EAAQzpd,QACnB,IAAVA,IAAoBA,EAAQ,GAChCxa,KAAKo3C,MAAQA,EACbp3C,KAAKike,OAASA,EACdjke,KAAKwa,MAAQA,GAMjB2ve,GACA,SAAuBC,EAAeC,GAClCrqf,KAAKoqf,cAAgBA,EACrBpqf,KAAKqqf,cAAgBA,GAMtB,SAASC,GAAgBC,EAAU/tf,GAatC,OAVIy5C,OAAOz5C,KAAW+tf,EAASrtf,MACnBqtf,EAASnmO,OAAO,GAEnBnuO,OAAOz5C,KAAW+tf,EAAS5xe,IACxB4xe,EAASnmO,OAAOmmO,EAASnmO,OAAOvnR,OAAS,GAIzCwqf,GAKT,SAA0B7qf,EAAO+tf,GACpC,IAMIC,EACAC,EAPAC,EAAiBH,EAASrtf,MAC1BisK,EAAaohV,EAAS5xe,IACtBgye,EAAU,EACVr8J,EAAOnlL,EAAauhV,EAKxB,GAHAC,GAAWnuf,EAAQkuf,GAAkBp8J,EAGjCi8J,EAASnmO,OAAOvnR,QAAU,EAC1B2tf,EAAiD,MAAjCD,EAASnmO,OAAO,GAAGz9K,OAAO,GAAa4jZ,EAASnmO,OAAO,GAAKqjO,GAAe8C,EAASnmO,OAAO,IAC3GqmO,EAAsE,MAA1DF,EAASnmO,OAAOmmO,EAASnmO,OAAOvnR,OAAS,GAAG8pG,OAAO,GAC3D4jZ,EAASnmO,OAAOmmO,EAASnmO,OAAOvnR,OAAS,GAAK4qf,GAAe8C,EAASnmO,OAAOmmO,EAASnmO,OAAOvnR,OAAS,QAEzG,CACD2tf,EAAiD,MAAjCD,EAASnmO,OAAO,GAAGz9K,OAAO,GAAa4jZ,EAASnmO,OAAO,GAAKqjO,GAAe8C,EAASnmO,OAAO,IAC3GqmO,EAAsE,MAA1DF,EAASnmO,OAAOmmO,EAASnmO,OAAOvnR,OAAS,GAAG8pG,OAAO,GAC3D4jZ,EAASnmO,OAAOmmO,EAASnmO,OAAOvnR,OAAS,GAAK4qf,GAAe8C,EAASnmO,OAAOmmO,EAASnmO,OAAOvnR,OAAS,IAO1G,IANA,IAAIkM,EAAIulV,GAAQi8J,EAASnmO,OAAOvnR,OAAS,GAGrC23B,EAAW+1d,EAASnmO,OAAOvnR,OAAS,EACpC+tf,EAAwB,GACxBC,EAAa,GACR1if,EAAI,EAAGA,EAAIqsB,EAAUrsB,IAG1B0if,EAAa,CAAEljf,EADX+if,EADAvif,EAAIY,EAEa4sE,MAAO40a,EAASnmO,OAAOj8Q,IAC5Cyif,EAAsBhpf,KAAKipf,GAE/B,IAAK,IAAIjuf,EAAI,EAAGA,EAAIguf,EAAsB/tf,OAAQD,IAC1C8tf,GAAkBluf,GAASA,GAASouf,EAAsBhuf,GAAM,GAAW,IAANA,GAGrE6tf,EAF2D,MAAhDG,EAAsBhuf,GAAU,MAAE+pG,OAAO,GAChDikZ,EAAsBhuf,GAAU,MAAI6qf,GAAemD,EAAsBhuf,GAAU,OAEvF+tf,EAAUnuf,GAASouf,EAAsBhuf,GAAM,EAAI,EAAI2K,KAAKgH,KAAK/R,EAAQouf,EAAsBhuf,GAAM,GAAKmM,IACnGvM,EAAQouf,EAAsBhuf,GAAM,GAAKmM,GAE3C6hf,EAAsBhuf,GAAM,GAAKJ,GAASA,GAAS2sK,GAAcvsK,IAAOguf,EAAsB/tf,OAAS,IAG5G2tf,EAF2D,MAAhDI,EAAsBhuf,GAAU,MAAE+pG,OAAO,GAChDikZ,EAAsBhuf,GAAU,MAAI6qf,GAAemD,EAAsBhuf,GAAU,OAEvF+tf,EAAUnuf,EAAQouf,EAAsBhuf,GAAM,EAC1C,EAAI2K,KAAKgH,KAAK/R,EAAQouf,EAAsBhuf,GAAM,GAAKmM,IAAMvM,EAAQouf,EAAsBhuf,GAAM,GAAKmM,GAE1GnM,IAAMguf,EAAsB/tf,OAAS,GAAKD,EAAIguf,EAAsB/tf,QAChE+tf,EAAsBhuf,GAAM,GAAKJ,GAASA,GAASouf,EAAsBhuf,EAAI,GAAM,IAGnF4tf,EAF2D,MAAhDI,EAAsBhuf,GAAU,MAAE+pG,OAAO,GAChDikZ,EAAsBhuf,GAAU,MAAI6qf,GAAemD,EAAsBhuf,GAAU,OAEvF6tf,EAAgE,MAApDG,EAAsBhuf,EAAI,GAAU,MAAE+pG,OAAO,GACrDikZ,EAAsBhuf,EAAI,GAAU,MAAI6qf,GAAemD,EAAsBhuf,EAAI,GAAU,OAC/F+tf,EAAUpjf,KAAKgH,IAAK/R,EAAQouf,EAAsBhuf,EAAI,GAAM,GAAMmM,GAKlF,OAGG,SAA4B4hf,EAASnnW,EAAU92B,GAClD,IAAI+9X,EAAY/9X,EAAK/vH,MAAM,KAAK,GAC5Bmuf,EAAYtnW,EAAS7mJ,MAAM,KAAK,GAChCmiC,EAAIisd,GAAcJ,EAASx0e,SAAS20e,EAAUz9e,OAAO,EAAG,GAAI,IAAK8I,SAASs0e,EAAUp9e,OAAO,EAAG,GAAI,KAClGysP,EAAIixP,GAAcJ,EAASx0e,SAAS20e,EAAUz9e,OAAO,EAAG,GAAI,IAAK8I,SAASs0e,EAAUp9e,OAAO,EAAG,GAAI,KAClG1F,EAAIojf,GAAcJ,EAASx0e,SAAS20e,EAAUz9e,OAAO,EAAG,GAAI,IAAK8I,SAASs0e,EAAUp9e,OAAO,EAAG,GAAI,KACtG,OAAO,IAAIm6e,GAAW1od,EAAGg7N,EAAGnyP,GATrBqjf,CAAmBL,EAASH,EAAeC,GA/D9BQ,CAAiBh1c,OAAOz5C,GAAQ+tf,IA2EjD,SAASQ,GAAcJ,EAASnnW,EAAU92B,GAC7C,IAAI4hO,EAAO5hO,EAAO82B,EAClB,OAAOj8I,KAAKooI,MAAO6T,EAAY8qM,EAAOq8J,GCt9D1C,IACIO,GAA0C,WAE1C,SAASA,EAAyBC,GAC9Bnrf,KAAK0ye,MAAQyY,EACbnrf,KAAKwqC,QAAU,EA+9CnB,OAv9CA0gd,EAAyBhvf,UAAU2+U,YAAc,SAAU3qS,GACvD,IAAIwic,EAAQ1ye,KAAK0ye,MACjB1ye,KAAK85e,QAAQpH,GACb1ye,KAAKkof,eAAiB,IAAIjd,GAAK/6b,EAAK3uB,EAAG2uB,EAAK55B,EAAG45B,EAAKR,MAAOQ,EAAKP,QAChE3vC,KAAKg9e,gBAAkB9sc,EACvBlwC,KAAKorf,SAAW,EAChBprf,KAAKqrf,UAAY,EACjBrrf,KAAKsrf,QAAU,EACftrf,KAAKurf,WAAa,EAElBvrf,KAAKwrf,eAAe9Y,EAAO1ye,KAAKg9e,iBAChCh9e,KAAKg9e,gBAAkB+B,GAAkB/+e,KAAKg9e,gBAAiB,IAAI+M,GAAU/pf,KAAKorf,SAAUprf,KAAKqrf,UAAW,EAAG,IAC/Grrf,KAAKyrf,kBAAkB/Y,EAAO1ye,KAAKg9e,iBACnCh9e,KAAKg9e,gBAAkB+B,GAAkB/+e,KAAKg9e,gBAAiB,IAAI+M,GAAU,EAAG,EAAG/pf,KAAKsrf,QAAStrf,KAAKurf,aACjGvrf,KAAK0ye,MAAMuK,aACZj9e,KAAK0rf,kBAAkB1rf,KAAKg9e,iBAEhCh9e,KAAKorf,SAAW,EAChBprf,KAAKqrf,UAAY,EACjBrrf,KAAKsrf,QAAU,EACftrf,KAAKurf,WAAa,EAElBvrf,KAAKwrf,eAAe9Y,EAAO1ye,KAAKg9e,iBAChCh9e,KAAKkof,eAAiBnJ,GAAkB/+e,KAAKkof,eAAgB,IAAI6B,GAAU/pf,KAAKorf,SAAUprf,KAAKqrf,UAAW,EAAG,IAC7Grrf,KAAKyrf,kBAAkB/Y,EAAO1ye,KAAKg9e,iBACnCh9e,KAAKkof,eAAiBnJ,GAAkB/+e,KAAKkof,eAAgB,IAAI6B,GAAU,EAAG,EAAG/pf,KAAKsrf,QAAStrf,KAAKurf,aAC/Fvrf,KAAK0ye,MAAMuK,cACZvK,EAAMiZ,cACN3rf,KAAK0rf,kBAAkB1rf,KAAKkof,kBAGpCgD,EAAyBhvf,UAAUsvf,eAAiB,SAAU9Y,EAAOxic,GACjE,IAAI0a,EACJ5qD,KAAK4rf,iBAAiB17c,GACtB,IAAK,IAAIlyC,EAAK,EAAGuF,EAAKmve,EAAM5pa,KAAM9qE,EAAKuF,EAAG1G,OAAQmB,IAAM,EAEpD4sD,EADWrnD,EAAGvF,IAEV86e,UAAY,GAChBlub,EAAImub,SAAW,GACf/4e,KAAK6rf,YAAYjhc,GACjB5qD,KAAK8rf,kBAAkBlhc,EAAK8nb,EAAO,IAAIj2Z,GAAKi2Z,EAAM6Q,cAAc7zc,MAAOkb,EAAImhc,iBACvE/rf,KAAKorf,SAAWhga,GAAIxgC,EAAIkub,aACxB94e,KAAKorf,SAAWhga,GAAIxgC,EAAIkub,YAExB94e,KAAKqrf,UAAYjga,GAAIxgC,EAAImub,YACzB/4e,KAAKqrf,UAAYjga,GAAIxgC,EAAImub,aAIrCmS,EAAyBhvf,UAAUuvf,kBAAoB,SAAU/Y,EAAOxic,GACpE,IAAIupB,EACJz5D,KAAKgsf,oBAAoB97c,GACzB,IAAK,IAAIlyC,EAAK,EAAGuF,EAAKmve,EAAM34a,QAAS/7D,EAAKuF,EAAG1G,OAAQmB,IAAM,EAEvDy7D,EADWl2D,EAAGvF,IAEP+6e,SAAW,GAClBt/a,EAAOq/a,UAAY,GACnB94e,KAAK6rf,YAAYpyb,GACjBz5D,KAAK8rf,kBAAkBryb,EAAQi5a,EAAO,IAAIj2Z,GAAKhjB,EAAOwyb,cAAevZ,EAAM6Q,cAAc5zc,SACrF3vC,KAAKurf,WAAanga,GAAI3xB,EAAOq/a,aAC7B94e,KAAKurf,WAAanga,GAAI3xB,EAAOq/a,YAE7B94e,KAAKsrf,QAAUlga,GAAI3xB,EAAOs/a,YAC1B/4e,KAAKsrf,QAAUlga,GAAI3xB,EAAOs/a,aAUtCmS,EAAyBhvf,UAAU4vf,kBAAoB,SAAUI,EAAYxZ,EAAOl2Z,GAEhF,IADA,IACSx+E,EAAK,EAAGuF,EAAK2of,EAAW30a,KAAMv5E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzD,IAAI+tC,EAAOxoC,EAAGvF,GACd+tC,EAAKktc,gBAAkBvG,EAAMyZ,iBAAmBzZ,EAAM8I,YAAc9I,EAAMgJ,aAAa0Q,iBACnFrgd,EAAKsgd,0BAA4B3Z,EAAM8I,WAAW8Q,WAAavgd,EAAKspc,WAAa,GAAKtpc,EAAKupc,aAAe,GAJxG,GAImH,EACzHvpc,EAAKktc,gBAAkBvG,EAAMyZ,kBAAoBzZ,EAAM8I,YAAc9I,EAAMgJ,aAAa0Q,iBACpFrgd,EAAKsgd,0BAA4B3Z,EAAM8I,WAAW8Q,WAAavgd,EAAKspc,WAAa,GAAKtpc,EAAKupc,aAAe,IACvGvpc,EAAKwgd,kBAAkB/3W,QAPxB,GAOwC,EAC9CzoG,EAAK6xc,UAAUlL,GACf3mc,EAAK8vc,WAAW/H,0BAA0Bt3Z,EAAMzwC,GAChDmgd,EAAWlT,YAAYjtc,EAAMA,EAAKktc,iBAElCiT,EAAWnT,SAASl8e,OAAS,IAC7Bqvf,EAAWnT,SAASmT,EAAWnT,SAASl8e,OAAS,IApG3C,IAsGNqvf,EAAWpT,UAAUj8e,OAAS,IAC9Bqvf,EAAWpT,UAAUoT,EAAWpT,UAAUj8e,OAAS,IAvG7C,KAgHdquf,EAAyBhvf,UAAUwvf,kBAAoB,SAAUx7c,GAC7D,IACI0a,EACA6O,EACAyyb,EACAngd,EAIAxqB,EACAjL,EACAk2e,EAVA9Z,EAAQ1ye,KAAK0ye,MAKb+Z,EAAY,EACZC,EAAW,EACXlwa,EAAO,EAIXx8E,KAAK4rf,iBAAiB17c,GACtB,IAAK,IAAItzC,EAAI,EAAG+E,EAAM+we,EAAM5pa,KAAKjsE,OAAQD,EAAI+E,EAAK/E,IAAK,CAEnD6vf,EAAY,EACZC,EAAW,EACX,IAAK,IAAIvkf,EAAI,EAAG0+H,GAHhBj8E,EAAM8nb,EAAM5pa,KAAKlsE,IAGW26E,KAAK16E,OAAQsL,EAAI0+H,EAAO1+H,IAAK,CAGrD,GADAqkf,GADAzgd,EAAO6e,EAAI2sB,KAAKpvE,IACEwkf,WACO,IAArB5gd,EAAKmE,KAAKP,OAAc,CACxB5D,EAAKmE,KAAKP,OAASib,EAAImhc,eACvBvva,EAAO,EACP,IAAK,IAAI3S,EAAIjtE,EAAI,EAAG6qI,EAAQ7qI,EAAImvC,EAAKg1B,KAAM8I,EAAI49D,EAAO59D,IAElD2S,IADA0va,EAAaxZ,EAAM5pa,KAAKe,IACLkib,eAEvBhgd,EAAKmE,KAAK55B,EAAKs0C,EAAIgic,YAAcpwa,GAASzwC,EAAK8gd,cAAgB9gd,EAAK8gd,cAAgBL,GACpFzgd,EAAKmE,KAAKP,OAAU5D,EAAKmE,KAAKP,OAAS6sC,EAClCx8E,KAAK8sf,mBAAmB/gd,EAAK8gd,cAAe9gd,EAAKghd,iBAAkBhhd,EAAK4gd,YAC7E5gd,EAAKmE,KAAKR,MAAQ,EAElB3D,EAAKutc,iBACL/3d,EAAI2uB,EAAK3uB,EAAI2uB,EAAKR,MAAQ07C,GAAIygR,GAASjhT,EAAImub,SAAU2T,IACrD3gd,EAAKmE,KAAK3uB,EAAIwqB,EAAKmE,KAAK3uB,GAAKA,EAAIwqB,EAAKmE,KAAK3uB,EAAIA,EAC/Cmre,MAGAnre,EAAI2uB,EAAK3uB,EAAI6pE,GAAIygR,GAASjhT,EAAIkub,UAAW2T,IACzC1gd,EAAKmE,KAAK3uB,EAAIwqB,EAAKmE,KAAK3uB,GAAKA,EAAIwqB,EAAKmE,KAAK3uB,EAAIA,EAC/Ckre,MAIZzsf,KAAKgsf,oBAAoB97c,GACzB,IAAStzC,EAAI,EAAG+E,EAAM+we,EAAM34a,QAAQl9D,OAAQD,EAAI+E,EAAK/E,IAAK,CAEtD6vf,EAAY,EACZC,EAAW,EACFvkf,EAAI,EAAb,IAAK,IAAWmkN,GAHhB7yJ,EAASi5a,EAAM34a,QAAQn9D,IAGQ26E,KAAK16E,OAAQsL,EAAImkN,EAAOnkN,IAAK,CAGxD,GADAqkf,GADAzgd,EAAO0tB,EAAO8d,KAAKpvE,IACDwkf,WACM,IAApB5gd,EAAKmE,KAAKR,MAAa,CACdm6B,EAAIjtE,EAAb,IAAK,IAAWkwN,EAASlwN,EAAImvC,EAAKg1B,KAAO8I,EAAIijJ,EAAOjjJ,IAChDqib,EAAaxZ,EAAM34a,QAAQ8P,GAC3B99B,EAAKmE,KAAKR,OAASw8c,EAAWD,cAElClgd,EAAKmE,KAAK3uB,EAAIk4C,EAAOuzb,cAAgBjhd,EAAKkhd,eAAiBlhd,EAAKkhd,eAAiBT,GACjFzgd,EAAKmE,KAAKR,OAAU1vC,KAAK8sf,mBAAmB/gd,EAAKkhd,eAAgBlhd,EAAKmhd,gBAAiBnhd,EAAK4gd,YAC5F5gd,EAAKmE,KAAKP,OAAS,EAEnB5D,EAAKutc,iBACLhje,EAAI45B,EAAK55B,EAAI80E,GAAIygR,GAASpyS,EAAOs/a,SAAU2T,IAC3C3gd,EAAKmE,KAAK55B,EAAIy1B,EAAKmE,KAAK55B,GAAKA,EAAIy1B,EAAKmE,KAAK55B,EAAIA,EAC/Co2e,MAGAp2e,EAAI45B,EAAK55B,EAAI45B,EAAKP,OAASy7C,GAAIygR,GAASpyS,EAAOq/a,UAAW2T,IAC1D1gd,EAAKmE,KAAK55B,EAAIy1B,EAAKmE,KAAK55B,GAAKA,EAAIy1B,EAAKmE,KAAK55B,EAAIA,EAC/Cm2e,QAWhBvB,EAAyBhvf,UAAU+3E,QAAU,WAOzC,IANA,IACIrpB,EACA6O,EACAyyb,EACAiB,EACApsb,EALA2xa,EAAQ1ye,KAAK0ye,MAMR10e,EAAK,EAAGuF,EAAKmve,EAAMkJ,gBAAiB59e,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC/D,IAAI+tC,EAAOxoC,EAAGvF,GAEd,GAAyB,aAArB+tC,EAAKq3V,YAA4B,CACjCsvG,EAAM0a,aAAaxrf,KAAKmqC,GACxBohd,EAAcntf,KAAKqtf,aAAathd,GAChC6e,EAAM8nb,EAAM5pa,KAAKqkb,GACjBntf,KAAKstf,SAAS1ic,EAAK7e,GACnBg1B,EAASosb,EAAcphd,EAAKg1B,KAAQ2xa,EAAM5pa,KAAKjsE,OAAS61e,EAAM5pa,KAAKjsE,OAAUswf,EAAcphd,EAAKg1B,KAChG,IAAK,IAAI54D,EAAIglf,EAAc,EAAGhlf,EAAI44D,EAAM54D,KACpC+jf,EAAaxZ,EAAM5pa,KAAK3gE,IACbovE,KAAK3sB,EAAI2sB,KAAK16E,OAAS,GAAKkvC,EACvC2mc,EAAM5pa,KAAK3gE,GAAK+jf,EAEpBxZ,EAAM5pa,KAAKqkb,GAAevic,MAEzB,CACD8nb,EAAM6a,eAAe3rf,KAAKmqC,GAC1Bohd,EAAcntf,KAAKwtf,gBAAgBzhd,GACnC0tB,EAASi5a,EAAM34a,QAAQozb,GACvBntf,KAAKstf,SAAS7zb,EAAQ1tB,GACtBg1B,EAASosb,EAAcphd,EAAKg1B,KAAQ2xa,EAAM34a,QAAQl9D,OAAS61e,EAAM34a,QAAQl9D,OAAUswf,EAAcphd,EAAKg1B,KACtG,IAAS54D,EAAIglf,EAAc,EAAGhlf,EAAI44D,EAAM54D,KACpC+jf,EAAaxZ,EAAM34a,QAAQ5xD,IAChBovE,KAAK9d,EAAO8d,KAAK16E,OAAS,GAAKkvC,EAC1C2mc,EAAM34a,QAAQ5xD,GAAK+jf,EAEvBxZ,EAAM34a,QAAQozb,GAAe1zb,KAIzCyxb,EAAyBhvf,UAAU4wf,mBAAqB,SAAU30H,EAAWs1H,EAAWd,GAGpF,OAFkBx0H,EAAaA,GAAas1H,GACxCd,GAAgBc,EAAYA,EAAYd,EAAa,EAAIA,GAGjEzB,EAAyBhvf,UAAU49e,QAAU,SAAUpH,GACnD,IAAK,IAAI10e,EAAK,EAAGuF,EAAKmve,EAAMkJ,gBAAiB59e,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC/D,IAAI+tC,EAAOxoC,EAAGvF,GACd,GAAuB,OAAnB+tC,EAAK2hd,UAGT,GAAK3hd,EAAK4hd,cAWN,IAAK,IAAI/wf,EAAI,EAAG+E,EAAM+we,EAAMkJ,gBAAgB/+e,OAAQD,EAAI+E,EAAK/E,IACrDmvC,EAAK4hd,gBAAkBjb,EAAMkJ,gBAAgBh/e,GAAGwd,OAChD2xB,EAAKqtc,YAAc1G,EAAMkJ,gBAAgBh/e,GACzCmvC,EAAK+tc,QAAU95e,KAAK4tf,cAAc7hd,EAAKqtc,YAAartc,EAAK2hd,iBAb7Dhb,EAAM6B,oBACNxoc,EAAKqtc,YAAqC,eAArBrtc,EAAKq3V,YAAiCsvG,EAAMkO,aAAelO,EAAMmb,aAGtF9hd,EAAKqtc,YAAqC,eAArBrtc,EAAKq3V,YAAiCsvG,EAAMmb,aAAenb,EAAMkO,aAE1F70c,EAAK+tc,QAAU95e,KAAK4tf,cAAc7hd,EAAKqtc,YAAartc,EAAK2hd,aAcrExC,EAAyBhvf,UAAU0xf,cAAgB,SAAU7hd,EAAM+tc,GAC/D,OAAQ/tc,EAAK8nc,WACT,IAAK,WACD,IAAI5pe,EAAS,CACTiB,SAAU,OACVC,KAAM,YAENiJ,EAAapU,KAAK0ye,MAAMzua,KAAKnoD,cAAc7R,GAC3C6jf,EAAgB9tf,KAAK0ye,MAAMzua,KAAKtoD,cAAc1R,GAClD,OAAOd,KAAK6R,MAAM5G,EAAW05e,EAAc,IAAI3kf,KAAKuwD,KAAS1+C,MAAM2xE,UAAU,CAAE1nF,IAAK60e,IAAW70e,QACnG,IAAK,WACD,OAAO8T,WAAW+ge,GAAW/ge,WAAW+ge,GAAW/tc,EAAK4/O,OAAOxtR,QAAQ27e,GAC3E,IAAK,cACD,OAAO7G,GAAQ6G,EAAS/tc,EAAKknc,SACjC,QACI,OAAO6G,IAGnBoR,EAAyBhvf,UAAUoxf,SAAW,SAAUpB,EAAYngd,GAChE,IAAK,IAAInvC,EAAI,EAAG+E,EAAMuqf,EAAW30a,KAAK16E,OAAQD,GAAK+E,EAAK/E,IACpD,IAAKsvf,EAAW30a,KAAK36E,GAAI,CACrBsvf,EAAW30a,KAAK36E,GAAKmvC,EACrB,QAIZm/c,EAAyBhvf,UAAU2vf,YAAc,SAAUK,GAEvD,IADA,IAAI6B,EAAiB,GACZnxf,EAAI,EAAG+E,EAAMuqf,EAAW30a,KAAK16E,OAAQD,GAAK+E,EAAK/E,IAChDsvf,EAAW30a,KAAK36E,IAChBmxf,EAAensf,KAAKsqf,EAAW30a,KAAK36E,IAG5Csvf,EAAW30a,KAAOw2a,GAEtB7C,EAAyBhvf,UAAUsxf,gBAAkB,SAAUzhd,GAC3D,IAAIiid,EAAehuf,KAAK0ye,MAAM34a,QAAQl9D,OAClC8Y,EAAMo2B,EAAK8oC,YAEf,OADal/D,GAAOq4e,EAAeA,EAAe,EAAKr4e,EAAM,EAAI,EAAIA,GAGzEu1e,EAAyBhvf,UAAUmxf,aAAe,SAAUthd,GACxD,IAAIiid,EAAehuf,KAAK0ye,MAAM5pa,KAAKjsE,OAC/B8Y,EAAMo2B,EAAK4/B,SAEf,OADah2D,GAAOq4e,EAAeA,EAAe,EAAKr4e,EAAM,EAAI,EAAIA,GAQzEu1e,EAAyBhvf,UAAU0vf,iBAAmB,SAAU17c,GAO5D,IALA,IACI0a,EADA8nb,EAAQ1ye,KAAK0ye,MAEbnra,EAASr3B,EAAK55B,EAAI45B,EAAKP,OACvBA,EAAS,EACTs+c,EAAkB1mf,KAAK8L,IAAI,EAAG68B,EAAKP,QAC9B/yC,EAAI,EAAG+E,EAAM+we,EAAM5pa,KAAKjsE,OAAQD,EAAI+E,EAAK/E,IAG1C+yC,GAD6B,KADjCib,EAAM8nb,EAAM5pa,KAAKlsE,IACT+yC,OAAOxxC,QAAQ,KACVoJ,KAAK6L,IAAI66e,EAAkB/9c,EAAKP,OAASx5B,SAASy0C,EAAIjb,OAAQ,IAAM,KAGpEpoC,KAAK6L,IAAI66e,EAAiB93e,SAASy0C,EAAIjb,OAAQ,KAE5DA,EAAU/yC,IAAO+E,EAAM,EAAMguC,EAASs+c,EACtCrjc,EAAImhc,eAAiBp8c,EACrB43B,GAAU53B,EACVib,EAAIgic,YAAcrlb,EAClB0mb,GAAmBt+c,GAS3Bu7c,EAAyBhvf,UAAU8vf,oBAAsB,SAAU97c,GAO/D,IALA,IACIupB,EADAi5a,EAAQ1ye,KAAK0ye,MAEbwb,EAAah+c,EAAK3uB,EAClBmuB,EAAQ,EACRy+c,EAAiB5mf,KAAK8L,IAAI,EAAG68B,EAAKR,OAC7B9yC,EAAI,EAAG+E,EAAM+we,EAAM34a,QAAQl9D,OAAQD,EAAI+E,EAAK/E,IAG7C8yC,GAD+B,KADnC+pB,EAASi5a,EAAM34a,QAAQn9D,IACZ8yC,MAAMvxC,QAAQ,KACboJ,KAAK6L,IAAI+6e,EAAiBj+c,EAAKR,MAAQv5B,SAASsjD,EAAO/pB,MAAO,IAAM,KAGpEnoC,KAAK6L,IAAI+6e,EAAgBh4e,SAASsjD,EAAO/pB,MAAO,KAE5DA,EAAS9yC,IAAO+E,EAAM,EAAM+tC,EAAQy+c,EACpC10b,EAAOwyb,cAAgBv8c,EACvB+pB,EAAOuzb,aAAekB,EACtBA,GAAcx+c,EACdy+c,GAAkBz+c,GAS1Bw7c,EAAyBhvf,UAAUkyf,WAAa,WAO5C,IANA,IACIrid,EAGAsid,EACA9T,EALA7H,EAAQ1ye,KAAK0ye,MAEb4b,EAAc5b,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,yBAClE80e,EAAkB7b,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,0BAGjE7c,EAAI,EAAG+E,EAAM+we,EAAMkJ,gBAAgB/+e,OAAQD,EAAI+E,EAAK/E,IACzDmvC,EAAO2mc,EAAMkJ,gBAAgBh/e,GAC7BoD,KAAKgB,QAAU0xe,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,YAAc7c,EAAI,WACrFyxf,EAAiB3b,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,YAAc7c,EAAI,YACvF29e,EAAWv6e,KAAKwuf,iBAAiBzid,GACR,eAArBA,EAAKq3V,aACLr3V,EAAKqvc,mBACDrvc,EAAKmxB,SAAWnxB,EAAKmtc,oBAAsBntc,EAAKwwT,UAAU7sT,MAAQ,GAClE1vC,KAAKyuf,aAAa1id,EAAMnvC,EAAGmvC,EAAK4gd,WAAY,EAAGpS,EAAW8T,EAAiBruf,KAAKgB,QAAS+qC,EAAKguc,cAE9Fhuc,EAAK2id,eAAeh/c,MAAQ,GAAK3D,EAAKyuc,eAAe9qc,MAAQ,IAC7D1vC,KAAK2uf,kBAAkB5id,EAAMnvC,EAAI29e,GAAkC,WAAtBxuc,EAAKuuc,aAA6B+T,EAAiBruf,KAAKgB,QAAS+qC,EAAKguc,aAEnHhuc,EAAKmxB,SAAWnxB,EAAKmtc,qBACrBl5e,KAAK4uf,gBAAgB7id,EAAMnvC,EAAI29e,GAAmC,WAAvBxuc,EAAK8uc,cAA8BwT,EAAiBruf,KAAKgB,QAAU+qC,EAAKmvc,oBAAsBnvc,EAAKguc,YAAchuc,EAAKmE,MACjKlwC,KAAK6uf,gBAAgB9id,EAAMnvC,EAAI29e,GAAmC,WAAvBxuc,EAAK8uc,cAA8BwT,EAAiBruf,KAAKgB,QAAU+qC,EAAKmvc,oBAAsBnvc,EAAKguc,YAAchuc,EAAKmE,MACjKlwC,KAAK8uf,eAAe/id,EAAMnvC,EAAG29e,EAAW8T,EAAiBruf,KAAKgB,QAAU+qC,EAAKmvc,oBAAsBnvc,EAAKguc,YAAchuc,EAAKmE,SAI/HnE,EAAKqvc,mBACDrvc,EAAKmxB,SAAWnxB,EAAKmtc,oBAAsBntc,EAAKwwT,UAAU7sT,MAAQ,GAClE1vC,KAAKyuf,aAAa1id,EAAMnvC,EAAG,EAAGmvC,EAAK4gd,WAAYpS,EAAW8T,EAAiBruf,KAAKgB,QAAS+qC,EAAKguc,cAE9Fhuc,EAAK2id,eAAeh/c,MAAQ,GAAK3D,EAAKyuc,eAAe9qc,MAAQ,IAC7D1vC,KAAK+uf,kBAAkBhjd,EAAMnvC,EAAI29e,GAAkC,WAAtBxuc,EAAKuuc,aAA6B+T,EAAiBruf,KAAKgB,QAAS+qC,EAAKguc,aAEnHhuc,EAAKmxB,SAAWnxB,EAAKmtc,qBACrBl5e,KAAKgvf,gBAAgBjjd,EAAMnvC,EAAI29e,GAAmC,WAAvBxuc,EAAK8uc,cAA8BwT,EAAiBruf,KAAKgB,QAAU+qC,EAAKmvc,oBAAsBnvc,EAAKguc,YAAchuc,EAAKmE,MACjKlwC,KAAKivf,gBAAgBljd,EAAMnvC,EAAI29e,GAAmC,WAAvBxuc,EAAK8uc,cAA8BwT,EAAiBruf,KAAKgB,QAAU+qC,EAAKmvc,oBAAsBnvc,EAAKguc,YAAchuc,EAAKmE,MACjKlwC,KAAKkvf,eAAenjd,EAAMnvC,EAAG29e,EAAW8T,EAAiBruf,KAAKgB,QAAU+qC,EAAKmvc,oBAAsBnvc,EAAKguc,YAAchuc,EAAKmE,QAG9HlwC,KAAK0ye,MAAMoW,eACZwF,EAAYtsf,YAAYhC,KAAKgB,SACzBqtf,GAAkBA,EAAe//d,WAAWzxB,OAAS,GACrD0xf,EAAgBvsf,YAAYqsf,IAGhC3b,EAAMyZ,kBAAqBzZ,EAAMgJ,aAAa0Q,iBAAmBrgd,EAAKsgd,0BACtEtgd,EAAKwgd,kBAAkB/3W,SACvBx0I,KAAKmvf,gBAAgBzc,EAAO3mc,GAGpC/rC,KAAKgB,QAAU0xe,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,mBAC9D,IAAItR,EAAI,EAAb,IAAgBxG,EAAM+we,EAAM5pa,KAAKjsE,OAAQsL,EAAIxG,EAAKwG,IAAK,CACnD,IAAIyiD,EAAM8nb,EAAM5pa,KAAK3gE,GACjByiD,EAAI+9G,OAAOhzF,OACX31E,KAAKovf,eAAexkc,EAAKziD,GAAG,GAGpC,IAASA,EAAI,EAAGxG,EAAM+we,EAAM34a,QAAQl9D,OAAQsL,EAAIxG,EAAKwG,IAAK,CACtD,IAAIsxD,EAASi5a,EAAM34a,QAAQ5xD,GACvBsxD,EAAOkvG,OAAOhzF,OACd31E,KAAKovf,eAAe31b,EAAQtxD,GAAG,GAOvC,OAJKnI,KAAK0ye,MAAMoW,cACZwF,EAAYtsf,YAAYhC,KAAKgB,SAEjC6kf,GAAmBnT,EAAMoW,aAAcpW,EAAMlG,UAAW8hB,EAAa5b,EAAMwK,QACpEqR,GASXrD,EAAyBhvf,UAAUizf,gBAAkB,SAAUzc,EAAO3mc,KACnD3uC,YAAkBs1e,EAAM8I,aAAsB9I,EAAM8I,WAAW8Q,WAC3Dvgd,EAAKspc,WAAa,GAAKtpc,EAAKupc,aAAe,IAAQvpc,EAAKwgd,kBAAkB/3W,SACxFzoG,EAAKspc,YAAc,GAAKtpc,EAAKupc,cAAgB,OAC5Cvpc,EAAKqpc,iBAAiBia,YAAc3c,EAAM4c,cAAc,GAAGnkf,KAAKhN,QAAQ,QAAU,IAC/Eu0e,EAAM/2W,gBACP+2W,EAAM/2W,cAAgBonX,GAAcrQ,EAAMwK,OAAQxK,EAAM1xe,QAAQyY,GAAK,mBAAqBtY,YAAc,MAAO,CAAEsY,GAAIi5d,EAAM1xe,QAAQyY,GAAK,oBAE5Iose,IAAmB,EAAOnT,EAAM/2W,cAAe5vF,EAAKqpc,iBAAiB1ld,QAAO,IAAO,IAE1D,IAApBqc,EAAKspc,YAA0C,IAAtBtpc,EAAKupc,cAAsBvpc,EAAKqpc,iBAAiB5I,YAAczgc,EAAKwgd,kBAAkB/3W,QACpHzoG,EAAKqpc,iBAAiBj6d,UAEtB4wB,EAAKqpc,iBAAiBia,aACtBtjd,EAAKqpc,iBAAiBia,YAAa,IAS3CnE,EAAyBhvf,UAAUsyf,iBAAmB,SAAUzid,GAC5D,OAAwB,OAAjBA,EAAK+tc,SAAoB/tc,EAAKwuc,SAASxuc,EAAKqtc,YAAYvE,eAUnEqW,EAAyBhvf,UAAUkzf,eAAiB,SAAUlD,EAAY1xe,EAAOq1d,GAC7E,IACI0f,EACA1za,EACAI,EACAF,EACAI,EACAqza,EANA9c,EAAQ1ye,KAAK0ye,MAOb7C,GAEA9zZ,EAAKI,GADL+va,EAAaA,GACQU,YAAcV,EAAWH,eAE9C9va,GADAJ,EAAK77E,KAAKkof,eAAe3me,GACfvhB,KAAKkof,eAAex4c,MAC9B8/c,EAAiB,QAIjB3za,EAAKI,GADLiwa,EAAaA,GACQc,aAErB7wa,GADAJ,EAAK/7E,KAAKkof,eAAe5xe,GACftW,KAAKkof,eAAev4c,OAC9B6/c,EAAiB,UAErBD,EAAc,CACV,GAAM7c,EAAM1xe,QAAQyY,GAAK,eAAiB+1e,EAAiBh1e,EAC3DqhE,GAAIA,EACJE,GAAIA,EACJE,GAAIA,EACJE,GAAIA,EACJ,eAAgB+va,EAAWvjV,OAAOj5H,MAClC,OAAUw8c,EAAWvjV,OAAOhzF,OAEhC31E,KAAKwqe,WAAakI,EAAMtsM,SAAS+3H,SAASoxF,GAC1Cvvf,KAAKgB,QAAQgB,YAAYhC,KAAKwqe,aAalC0gB,EAAyBhvf,UAAUuyf,aAAe,SAAU1id,EAAMvxB,EAAOi1e,EAAOC,EAAOnvf,EAAQ2vC,GAC3F,IACIq/c,EADA7c,EAAQ1ye,KAAK0ye,MAEb1xe,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK,YAAce,GACtD+kF,EAAYv+F,EAAUA,EAAQmuB,aAAa,KAAO,GACtDnuB,EAAU,KACVuuf,EAAc,CACV,GAAM7c,EAAM1xe,QAAQyY,GAAK,YAAce,EACvC,EAAK,MAAQ01B,EAAK3uB,EAAIkue,GAAS,KAAOv/c,EAAK55B,EAAIo5e,GAC3C,OAASx/c,EAAK3uB,EAAI2uB,EAAKR,MAAQ+/c,GAAS,KAAOv/c,EAAK55B,EAAI45B,EAAKP,OAAS+/c,GAC1E,mBAAoB3jd,EAAKwwT,UAAUirI,UACnC,eAAgBz7b,EAAKwwT,UAAU7sT,MAC/B,OAAU3D,EAAKwwT,UAAU5mR,OAAS+8Z,EAAMrG,WAAW3K,UAEvD1he,KAAKwqe,WAAakI,EAAMtsM,SAAS4+H,SAASuqF,GAC1C1J,GAAmBnT,EAAMoW,aAAcvof,EAAQP,KAAKwqe,WAAYkI,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM39Y,IAWxG2rZ,EAAyBhvf,UAAU6yf,kBAAoB,SAAUhjd,EAAMvxB,EAAOja,EAAQ2vC,GAClF,IAEI2lc,EAIA8Z,EANAC,EAA+B,gBAAnB7jd,EAAK8nc,UACjBgc,EAAiB9jd,EAAK8nc,UAAU11e,QAAQ,aAAe,EAEvD2xf,EAAS,EACTC,EAAY,GACZC,EAAY,GAEZC,EAAWlkd,EAAKutc,gBAAkBvtc,EAAKyuc,eAAe7qc,QAAU5D,EAAKyuc,eAAe7qc,OACpFugd,EAAgBnkd,EAAKutc,gBAA0C,GAAvBvtc,EAAKwwT,UAAU7sT,MAAsC,IAAvB3D,EAAKwwT,UAAU7sT,MACrFygd,EAAoC,aAAnBpkd,EAAK8nc,WAAoD,iBAAxB9nc,EAAK00c,eACvD,GAAM,EACNxH,EAAkB77e,YAAkB2uC,EAAK2hd,WAAa3hd,EAAKutc,gBAAkBvtc,EAAKktc,iBACjFltc,EAAKktc,gBAAkB,EACxBmX,EAAqC,WAAtBrkd,EAAKuuc,aACpBt9H,EAAQozI,EAAgBlgd,EAAK3uB,EAAI0ue,EAAWC,EAAiBhgd,EAAK3uB,EAAI0ue,EAAWC,EAAejX,EAChGp8e,EAASkvC,EAAK4pc,cAAc94e,OAC5Bwzf,EAAkBrwf,KAAK0ye,MAAMrG,WAC7Btgc,EAAK8nc,UAAU11e,QAAQ,aAAe,GAA6B,iBAAxB4tC,EAAK00c,gBAAqC5jf,EAAS,IAC9FA,GAAU,GAKd,IAHA,IAAIyzf,EAAiBvkd,EAAKukd,eACtBC,EAAiBxkd,EAAKwkd,eAEjB3zf,EAAI,EAAGA,EAAIC,EAAQD,KAIxBkzf,GAAoB,GADpBA,EAASzU,GAFTxF,EAAgB9pc,EAAK4pc,cAAc/4e,GAC7BmvC,EAAK4pc,cAAc/4e,GAAGJ,MAAQ2zf,EADKpkd,EAAK4pc,cAAc/4e,EAAI,GAAGJ,MAAQuvC,EAAK8oc,aAAatye,SAAY4tf,EAE/Dpkd,GAAQmE,EAAKP,SAC7BO,EAAK55B,EAAI45B,EAAKP,UAC1BO,EAAK55B,GAAM45B,EAAK55B,EAAI45B,EAAKP,QAAWmgd,KACzCrV,GAAO5E,EAAc9pc,EAAK8oc,eAAkB70e,KAAKwwf,SAASzkd,EAAMnvC,EAAGkzf,MACpEC,EAAY,KAAO/vf,KAAKkof,eAAe3me,EAAI,IAAOuue,EAC9C,OAAS9vf,KAAKkof,eAAe3me,EAAIvhB,KAAKkof,eAAex4c,OAAS,IAAMogd,EACxE9vf,KAAKywf,eAAe1kd,EAAMvxB,EAAOu1e,EAAWhkd,EAAK2id,eAAgB,kBAAmB9xf,EAAGoD,KAAKgB,QAASqvf,EAAgB1uB,cAAe51b,EAAK2id,eAAelnB,YAE5JwoB,EAAY,MAAQ9/c,EAAK3uB,EAAI2ue,GAAgBE,EAAenX,EAAkB,IAAM,IAAM6W,EACtF,MAAS9yI,EAAS,IAAM8yI,EAC5B9vf,KAAKywf,eAAe1kd,EAAMvxB,EAAOw1e,EAAWjkd,EAAKyuc,eAAgB,kBAAmB59e,EAAG2D,EAAQ8vf,EAAgBxuB,gBAC1GyuB,EAAe5gd,MAAQ,GAAK6gd,EAAe7gd,MAAQ,IAAM3D,EAAK2kd,sBAAwB,IAC7E,IAAN9zf,IAAW2+e,GAAUxvc,IAAU6jd,GAAcC,GAC7C7vf,KAAK2wf,yBAAyB5kd,EAAM8pc,EAAc3lc,EAAMtzC,EAAG4d,EAAO61e,EAAiB9vf,GAEvFovf,EAAqB3vf,KAAK4wf,kBAAkB7kd,EAAM8pc,EAAc3lc,EAAMtzC,GACtEoD,KAAKywf,eAAe1kd,EAAMvxB,EAAOm1e,EAAmB,GAAIW,EAAgB,kBAAmB1zf,EAAGoD,KAAKgB,QAASqvf,EAAgBzuB,cAAe0uB,EAAe9oB,WAC1Jxne,KAAKywf,eAAe1kd,EAAMvxB,EAAOm1e,EAAmB,GAAIY,EAAgB,kBAAmB3zf,EAAG2D,EAAQ8vf,EAAgBvuB,eAClHlle,IAAMC,EAAS,GAAK0+e,GAAUxvc,IAAS6jd,IAAcC,GACrD7vf,KAAK2wf,yBAAyB5kd,EAAO8pc,EAAe9pc,EAAK8oc,aAAatye,SAAW2tC,EAAMtzC,EAAG4d,EAAO61e,EAAiB9vf,MActI2qf,EAAyBhvf,UAAUs0f,SAAW,SAAUzkd,EAAMvxB,EAAOhe,GACjE,IAAImsK,EAAS3oK,KAAK0ye,MAAMme,UAAUloV,OAC9Bz4H,EAAOlwC,KAAKkof,eACZ9kH,EAAcr3V,EAAKq3V,YACnBlmY,EAAyB,eAAhBkmY,EAAgClzV,EAAK3uB,EAAI2uB,EAAK55B,EACvDkmE,EAAwB,eAAhB4mT,EAAgClzV,EAAKR,MAAQQ,EAAKP,OAC1Dq5B,EAA8B,eAAhBo6T,EAAgC,EAAIr3V,EAAK4pc,cAAc94e,OAAS,EAC9E+pT,EAA4B,eAAhBw8E,EAAgCr3V,EAAK4pc,cAAc94e,OAAS,EAAI,EAChF,OAAIkvC,EAAK4gd,WAAa,KAGZnwf,IAAUU,GAASV,IAAWU,EAAQs/E,KAAWmsF,EAAOj5H,OAAS,GAAsB,gBAAjBi5H,EAAOhzF,SAG7En5E,IAAUU,GAASsd,IAAUwuD,GAAgBxsE,IAAWU,EAAQs/E,GAAShiE,IAAUosS,KAejGskM,EAAyBhvf,UAAU8yf,gBAAkB,SAAUjjd,EAAMvxB,EAAOja,EAAQ2vC,GAChF,IAGI49b,EAEAxhe,EACAwkf,EANApe,EAAQ1ye,KAAK0ye,MACbqJ,EAAS,EACT+T,EAAS,EAETiB,EAAahld,EAAKivc,aAGlBgW,EAAuC,WAAvBjld,EAAK8uc,cACrBoW,EAAYlld,EAAKutc,gBAEjB9uc,GADYuB,EAAK8uc,gBAAkB9uc,EAAKuuc,aAAevuc,EAAKyuc,eAAe7qc,OAAS,GAC9Dohd,EAAoC,GAAvBhld,EAAKwwT,UAAU7sT,MACtDlF,EAAWuB,EAAKutc,gBAAmB9uc,GAAWA,EAC9C,IAAI0md,EAAkBD,GAAaD,IAAoBC,IAAcD,EAAkB,MAAQ,QAC/FE,EAAgBxe,EAAMye,aAAiBpld,EAAKutc,gBAAmB,MAAQ,QAAW4X,EAOlF,IANA,IAEInwF,EACAqwF,EACAC,EAJAC,EAAe5e,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,aAAee,IAClFy+d,EAAkB77e,YAAkB2uC,EAAK2hd,WAAa3hd,EAAKktc,iBAAmBgY,EAAY,GAAK,GAAK,EAK/Fr0f,EAAI,EAAG+E,EAAMoqC,EAAK4pc,cAAc94e,OAAQD,EAAI+E,EAAK/E,IAAK,CAC3Dk0f,EAAmB1U,GAAarwc,EAAK4pc,cAAc/4e,GAAGy/e,cACtDN,EAASiV,EAAiB9gd,EAAK3uB,EAAIipB,EAAY0F,EAAK3uB,EAAIipB,EAAUyuc,EAClEnL,EAAcgjB,EAAmB/kd,EAAK4pc,cAAc/4e,GAAG0/e,eAAiBvwc,EAAK4pc,cAAc/4e,GAAG4/E,KAC9Fsza,EAAUzU,GAAmBtvc,EAAK4pc,cAAc/4e,GAAGJ,MAAOuvC,GAAQmE,EAAKP,QAAW+ic,EAAMoJ,WAAa,EAAI,GACzGgU,EAASvof,KAAKC,OAAiB,EAAVsof,GAAgB5/c,EAAK55B,EAAI45B,EAAKP,SACnDoxX,EAAe+sE,EAAYn+b,OAAS,EAAK5D,EAAK4pc,cAAc/4e,GAAG2V,KAAK1V,OAAS,EAC7Eu0f,EAAgBtjB,EAAYn+b,OAAS,EAAK,EAAK,EAC/Cmgd,EAAUgB,EAA2C,WAAvB/kd,EAAK8uc,cAA8BiV,EAAUhiB,EAAYn+b,OAAS,EAAKoxX,EAAaqwF,EAC3GtB,EAAS/uF,EAAuC,WAAvBh1X,EAAK8uc,cAA8BiV,EAASsB,EAAetB,EAAUhiB,EAAYn+b,OAAS,EAEtH0hd,EADAtld,EAAK2id,eAAeh/c,MAAQ3D,EAAKyuc,eAAe9qc,MACjC3D,EAAK2id,eAAeh/c,MAGpB3D,EAAKyuc,eAAe9qc,MAED,QAAlC3D,EAAK6pc,WAAWzqG,cAChB2kH,EAASA,EAASuB,EAlBd,GAoBmC,SAAlCtld,EAAK6pc,WAAWzqG,cACrB2kH,EAASA,EAASuB,EArBd,GAuBmC,WAAlCtld,EAAK6pc,WAAWzqG,gBAErB2kH,EAASA,GAEb/T,EAAS+U,EAAmB9wf,KAAKuxf,mBAAmBxV,EAAQhwc,EAAM+hc,EAAYp+b,OAASqsc,EACvF,IAAInxY,EAASkmZ,EAAmB9wf,KAAKwxf,UAAUzld,GAAQmld,EAEvD,GADA5kf,EAAU,IAAI8+d,GAAWsH,EAAM1xe,QAAQyY,GAAKe,EAAQ,cAAgB5d,EAAGm/e,EAAQ+T,EAAQllZ,EAAQ7+D,EAAK4pc,cAAc/4e,GAAG2V,MACjHw5B,EAAK2wc,mBACL,OAAQ3wc,EAAK2wc,oBACT,IAAK,OACD,MACJ,IAAK,SACW,IAAN9/e,GAAYmvC,EAAKuvc,YAAc1+e,IAAM+E,EAAM,IAAO2K,EAAQgK,EAAI45B,EAAK55B,EAAI45B,EAAKP,SAC3E/yC,IAAM+E,EAAM,GAAOoqC,EAAKuvc,YAAoB,IAAN1+e,IAAa0P,EAAQgK,EAAyB,GAArBw3d,EAAYn+b,OAAeO,EAAK55B,KAClGhK,EAAQiG,KAAO,IAEnB,MACJ,IAAK,SACU,IAAN3V,GAAYmvC,EAAKuvc,YAAc1+e,IAAM+E,EAAM,IAAO2K,EAAQgK,EAAI45B,EAAK55B,EAAI45B,EAAKP,OAC7ErjC,EAAQgK,EAAIw5e,EAAS5/c,EAAK55B,EAAI45B,EAAKP,QAE5B/yC,IAAM+E,EAAM,GAAOoqC,EAAKuvc,YAAoB,IAAN1+e,IAAc0P,EAAQgK,EAAyB,GAArBw3d,EAAYn+b,OAAeO,EAAK55B,IACvGhK,EAAQgK,EAAIw5e,EAAS5/c,EAAK55B,EAAyB,GAArBw3d,EAAYn+b,QAK1Dugc,GAAYwC,EAAMtsM,SAAU95R,EAASy/B,EAAK6pc,WAAY7pc,EAAK6pc,WAAWjga,OAAS+8Z,EAAMrG,WAAW7K,UAAW8vB,GAAc,EAAO5e,EAAMwK,QAAQ,GAAM,EAAM,KAAM,KAAM,EAAM,KAAMxK,EAAMoW,cAEvL9of,KAAK0ye,MAAMoW,eACPpW,EAAMuK,YAGFlxc,EAAKmxB,SAAWnxB,EAAKmtc,oBAC1Bl5e,KAAKyxf,mBAAmBzxf,KAAK0ye,MAAO4e,EAAcvld,EAAMvxB,EAAO01B,GAH/D21c,GAAmBnT,EAAMoW,aAAcvof,EAAQ+wf,EAAc5e,EAAMwK,UAe/EgO,EAAyBhvf,UAAUq1f,mBAAqB,SAAUhwe,EAAGwqB,EAAM2ld,GACvE,IAAI9mZ,EAAS7+D,EAAK4ld,mBACdX,EAAuC,WAAvBjld,EAAK8uc,cACrBoW,EAAYlld,EAAKutc,gBACrB,OAAK2X,GAAaD,IAAoBC,IAAcD,EAC7B,UAAXpmZ,EAAqBrpF,EAAgB,WAAXqpF,EAAuBrpF,EAAImwe,EAAY,EAAMnwe,EAAImwe,EAGhE,SAAX9mZ,EAAoBrpF,EAAgB,WAAXqpF,EAAuBrpF,EAAImwe,EAAY,EAAMnwe,EAAImwe,GAY1FxG,EAAyBhvf,UAAU+yf,gBAAkB,SAAUljd,EAAMvxB,EAAOja,EAAQ2vC,GAChF,GAAInE,EAAK48H,OAAOj5H,MAAQ,EAAG,CACvB,IAAI+I,OAAS,EACTq3c,OAAS,EACT7W,EAAyC,YAAvBltc,EAAK8uc,cAA8B9uc,EAAKktc,gBAAkB,EAChFA,GAAmBltc,EAAKutc,gBAAkB,GAAK,GAAKL,EAUpD,IATA,IAAI2Y,EAAO1hd,EAAKP,OAAS5D,EAAK8oc,aAAarzX,OAA6B,aAAnBz1E,EAAK8nc,UAA2B9nc,EAAKm1c,iBACpFn1c,EAAK8oc,aAAatye,UACpBsvf,OAAO,EACPjlf,EAAWm/B,EAAKkvc,aAAavrc,MAAQ,IAAO3D,EAAKuuc,eAAiBvuc,EAAK8uc,cACvE9uc,EAAKyuc,eAAe7qc,OAAS,GAC7Bmid,EAAc,GACd3B,EAAoC,aAAnBpkd,EAAK8nc,WAAoD,iBAAxB9nc,EAAK00c,gBAAsC,GAAM,EACnGsR,EAAShmd,EAAKutc,iBAA0C,WAAvBvtc,EAAK8uc,gBAAiC9uc,EAAKutc,iBAClD,YAAvBvtc,EAAK8uc,cAAgC3qc,EAAK3uB,EAAI3U,EAAWqse,EAAkB/oc,EAAK3uB,EAAI3U,EAAWqse,EAC7Fr8e,EAAI,EAAG+E,EAAMoqC,EAAK4pc,cAAc94e,OAAQD,EAAI+E,EAAK/E,IAWtD,OAVAkzf,EAASzU,GAAmBtvc,EAAK4pc,cAAc/4e,GAAGJ,MAAQ2zf,EAAepkd,GACzE+jd,GAAU/jd,EAAKuvc,WAAc,EAAIwU,EAAUA,GAAU5/c,EAAKP,OACnC,aAAnB5D,EAAK8nc,WAAoD,iBAAxB9nc,EAAK00c,gBACtChoc,GAAoB,EAAVq3c,GAAgB5/c,EAAK55B,EAAI45B,EAAKP,QACxCkid,GAAkB,EAAV/B,EAAgB8B,GAAQ1hd,EAAK55B,EAAI45B,EAAKP,UAG9C8I,GAAoB,EAAVq3c,EAAe8B,EAAM,GAAK1hd,EAAK55B,EAAI45B,EAAKP,QAClDkid,GAAkB,EAAV/B,EAAe8B,EAAM,GAAK1hd,EAAK55B,EAAI45B,EAAKP,SAE5C5D,EAAK48H,OAAOx9J,MAChB,IAAK,YACL,IAAK,mBACGstC,EAAUvI,EAAK55B,EAAI45B,EAAKP,OACxBmid,GAAgB,KAAYC,EAAO,KAAO7hd,EAAK55B,EAAI45B,EAAKP,QAAxC,MAAoEoid,EAAO,IAAMF,EAAO,IAEnGtqf,KAAKC,MAAM0oC,EAAK55B,GAAMu7e,EAC3BC,GAAgB,MAAa5hd,EAAK3uB,EAAI03d,GAAmB,IAAMxgc,EAA/C,MAA0Es5c,EACpF,IAAMt5c,EADI,MACuBs5c,EAAO,IAAO7hd,EAAK55B,EAAK,KAG/Dw7e,GAAgB,MAAa5hd,EAAK3uB,EAAI03d,GAAmB,IAAMxgc,EAA/C,MAA0Es5c,EACtF,IAAMt5c,EADM,MACqBs5c,EAAO,IAAMF,EAAO,IACrDj1f,IAAMmvC,EAAK4pc,cAAc94e,OAAS,IAClCi1f,GAAgB,MAAa5hd,EAAK3uB,EAAI03d,GAAmB,IAAM4Y,EAA/C,MACZE,EAAO,IAAMF,EAAO,MAGhC,MACJ,IAAK,4BACKp5c,EAASvI,EAAK55B,EAAI45B,EAAKP,QAAckid,EAAQtqf,KAAKC,MAAM0oC,EAAK55B,KAC/Dw7e,GAAgB,MAAa5hd,EAAK3uB,EAAI03d,GAAmB,IAAMxgc,EAA/C,MAA0Es5c,EACtF,IAAMt5c,EADM,MACqBs5c,EAAO,IAAMF,EADlC,OAEC3hd,EAAK3uB,EAAI03d,GAAmB,IAAM4Y,GAO/C,MAFpBC,GAAqC,cAArB/ld,EAAK48H,OAAOx9J,KAAyB,MAAa+kC,EAAK3uB,EAAI03d,GAAmB,IAAM/oc,EAAK55B,EAApD,OAChD45B,EAAK3uB,EAAI03d,GAAmB,KAAO/oc,EAAK55B,EAAI45B,EAAKP,QAAU,IAAO,KAEnE3vC,KAAKgyf,wBAAwBjmd,EAAMvxB,EAAOs3e,EAAavxf,GAG3DwrC,EAAKsxc,iBAAiBxgf,OAAS,GAAKmD,KAAK0ye,MAAM0K,uBAC/Cp9e,KAAK0ye,MAAM0K,sBAAsB6U,4BAA4Blmd,EAAMvxB,EAAOja,EAAQ2vC,IAY1Fg7c,EAAyBhvf,UAAUgzf,eAAiB,SAAUnjd,EAAMvxB,EAAOja,EAAQ2vC,GAC/E,GAAInE,EAAKq7G,MAAO,CACZ,IAAIsrV,EAAQ1ye,KAAK0ye,MACblJ,EAAiBz9b,EAAKutc,gBAAmB,IAAM,GAC/C9uc,GAAiC,WAAtBuB,EAAKuuc,aAA4B,EAAIvuc,EAAKyuc,eAAe7qc,OAAS5D,EAAKgvc,eAC1D,WAAvBhvc,EAAK8uc,cAA6B,EAC9B9uc,EAAKkvc,aAAavrc,MAAQ3D,EAAKiuc,sBAAwBh6e,KAAKwqC,SACrEA,EAAUuB,EAAKutc,gBAAkB9uc,EAAUuB,EAAKktc,iBAAmBzuc,EAAUuB,EAAKktc,gBAClF,IAAI13d,EAAI2uB,EAAK3uB,EAAIipB,EACbl0B,EAAI45B,EAAK55B,EAAkB,GAAd45B,EAAKP,OAClByqc,EAAaruc,EAAKquc,UAAUzqc,QAAU5D,EAAKouc,gBAAgBt9e,OAAS,GACpEyP,EAAU,IAAI8+d,GAAWsH,EAAM1xe,QAAQyY,GAAK,cAAgBe,EAAO+G,EAAGjL,EAAIy1B,EAAKivc,aAAeZ,EAAW,SAAUruc,EAAKouc,gBAAiB,UAAY3Q,EAAgB,IAAOjod,EAAK,IAAOjL,EAAK,IAAK,KAAMkzd,GACxMxoe,EAAUkve,GAAYwC,EAAMtsM,SAAU95R,EAASy/B,EAAK6uc,WAAY7uc,EAAK6uc,WAAWjla,OAAS+8Z,EAAMrG,WAAW5K,UAAWlhe,EAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAM,KAAMmye,EAAMoW,cACvL9nf,EAAQ40B,aAAa,WAAYmW,EAAKsxG,SAASlwI,YAC/CnM,EAAQ40B,aAAa,aAAcmW,EAAKusR,aAAevsR,EAAKq7G,SAYpE8jW,EAAyBhvf,UAAUyyf,kBAAoB,SAAU5id,EAAMvxB,EAAOja,EAAQ2vC,GAClF,IAEI2lc,EAIAqc,EANAtC,EAA+B,gBAAnB7jd,EAAK8nc,UACjBgc,EAAiB9jd,EAAK8nc,UAAU11e,QAAQ,aAAe,EAEvD49e,EAAS,EACTgU,EAAY,GACZC,EAAY,GAEZC,EAAYlkd,EAAKutc,iBAAoBvtc,EAAKyuc,eAAe7qc,OAAS5D,EAAKyuc,eAAe7qc,OACtFugd,EAAgBnkd,EAAKutc,gBAA2C,IAAvBvtc,EAAKwwT,UAAU7sT,MAAqC,GAAvB3D,EAAKwwT,UAAU7sT,MACrFupc,EAAkB77e,YAAkB2uC,EAAK2hd,WAAa3hd,EAAKutc,iBAAmBvtc,EAAKktc,gBACnFltc,EAAKktc,gBAAkB,EACvBkX,EAAiBpkd,EAAK8nc,UAAU11e,QAAQ,aAAe,GAA6B,iBAAxB4tC,EAAK00c,eACjE,GAAM,EACN5jf,EAASkvC,EAAK4pc,cAAc94e,OAC5Buzf,EAAqC,WAAtBrkd,EAAKuuc,aACpBt9H,EAAQozI,EAAgBlgd,EAAK55B,EAAI25e,EAAWC,EAAiBhgd,EAAK55B,EAAI25e,EAAWC,EAAejX,EAChGoX,EAAkBrwf,KAAK0ye,MAAMrG,WAC7Btgc,EAAK8nc,UAAU11e,QAAQ,aAAe,GAAKtB,EAAS,GAA6B,iBAAxBkvC,EAAK00c,iBAC9D5jf,GAAU,GAGd,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,KASxBm/e,EAAUV,GAPNxF,EADmB,qBAAnB9pc,EAAK8nc,UACU9nc,EAAK4pc,cAAc/4e,GAAKmvC,EAAK4pc,cAAc/4e,GAAGJ,MAAQ2zf,EAC9Dpkd,EAAK4pc,cAAc/4e,EAAI,GAAGJ,MAAQuvC,EAAK8oc,aAAatye,SAAY4tf,EAGxDpkd,EAAK4pc,cAAc/4e,GAC9BmvC,EAAK4pc,cAAc/4e,GAAGJ,MAAQ2zf,EAAgBpkd,EAAK8oc,aAAaxhe,IAE7B04B,GAAQmE,EAAKR,MAASQ,EAAK3uB,IACxD2uB,EAAK3uB,GAAM2uB,EAAK3uB,EAAI2uB,EAAKR,OAAUqsc,KACzCtB,GAAO5E,EAAc9pc,EAAK8oc,eAAiB70e,KAAKwwf,SAASzkd,EAAMnvC,EAAGm/e,MAClEgU,EAAY,KAAOhU,EAAS,KAAO/7e,KAAKkof,eAAe5xe,EAAItW,KAAKkof,eAAev4c,QAC3E,MAAQosc,EAAS,IAAM/7e,KAAKkof,eAAe5xe,EAC/CtW,KAAKywf,eAAe1kd,EAAMvxB,EAAOu1e,EAAWhkd,EAAK2id,eAAgB,kBAAmB9xf,EAAGoD,KAAKgB,QAASqvf,EAAgB1uB,cAAe51b,EAAK2id,eAAelnB,YAE5JwoB,EAAY,KAAQjU,EAAU,KAAO7rc,EAAK55B,EAAI45e,GAAgBE,EAAenX,EAAkB,IACzF,MAAS8C,EAAU,IAAM/+H,EAC/Bh9W,KAAKywf,eAAe1kd,EAAMvxB,EAAOw1e,EAAWjkd,EAAKyuc,eAAgB,kBAAmB59e,EAAG2D,EAAQ8vf,EAAgBxuB,eAC3G91b,EAAK2kd,sBAAwB,IAAM3kd,EAAKukd,eAAe5gd,MAAQ,GAAK3D,EAAKwkd,eAAe7gd,MAAQ,KACtF,IAAN9yC,IAAW2+e,GAAUxvc,IAAU6jd,GAAcC,GAC7C7vf,KAAK2wf,yBAAyB5kd,EAAM8pc,EAAc3lc,EAAMtzC,EAAG4d,EAAO61e,EAAiB9vf,GAEvF2xf,EAAiBlyf,KAAK4wf,kBAAkB7kd,EAAM8pc,EAAc3lc,EAAMtzC,GAClEoD,KAAKywf,eAAe1kd,EAAMvxB,EAAO03e,EAAe,GAAInmd,EAAKukd,eAAgB,kBAAmB1zf,EAAGoD,KAAKgB,QAASqvf,EAAgBzuB,cAAe71b,EAAKukd,eAAe9oB,WAChKxne,KAAKywf,eAAe1kd,EAAMvxB,EAAO03e,EAAe,GAAInmd,EAAKwkd,eAAgB,kBAAmB3zf,EAAG2D,EAAQ8vf,EAAgBvuB,eACnHlle,IAAMC,EAAS,GAAK0+e,GAAUxvc,IAAS6jd,IAAcC,GACrD7vf,KAAK2wf,yBAAyB5kd,EAAO8pc,EAAe9pc,EAAK8oc,aAAatye,SAAW2tC,EAAMtzC,EAAG4d,EAAO61e,EAAiB9vf,MAkBtI2qf,EAAyBhvf,UAAUy0f,yBAA2B,SAAU5kd,EAAM8pc,EAAc3lc,EAAMtzC,EAAG4d,EAAO61e,EAAiB9vf,GACzH,IAAI2xf,EAAiBlyf,KAAK4wf,kBAAkB7kd,EAAM8pc,EAAc3lc,EAAMtzC,GAAG,GACzEoD,KAAKywf,eAAe1kd,EAAMvxB,EAAO03e,EAAe,GAAInmd,EAAKukd,eAAgB,mBAAoB,EAAGtwf,KAAKgB,QAASqvf,EAAgBzuB,cAAe71b,EAAKukd,eAAe9oB,WACjKxne,KAAKywf,eAAe1kd,EAAMvxB,EAAO03e,EAAe,GAAInmd,EAAKwkd,eAAgB,mBAAoB,EAAGhwf,EAAQ8vf,EAAgBvuB,gBAY5HopB,EAAyBhvf,UAAU00f,kBAAoB,SAAU7kd,EAAM8pc,EAAc3lc,EAAM80c,EAAYmN,GACnG,IAOIC,EAPA51f,EAAQq5e,EACRwc,EAAO,EACPtkd,EAAW,EACXv7B,EAAQu5B,EAAK8oc,aACbub,EAAqC,WAAtBrkd,EAAKuuc,aACpB/6Y,EAAY,GACZ0wZ,EAAWlkd,EAAKutc,iBAAmBvtc,EAAKwkd,eAAe5gd,OAAS5D,EAAKwkd,eAAe5gd,OAGpF2id,EAAc,EACdC,EAAc,EACdC,EAASpC,EAAgBlgd,EAAK55B,EAAI25e,EAAa//c,EAAK55B,EAAI25e,EACxDwC,EAASrC,EAAgBlgd,EAAK3uB,EAAI0ue,EAAa//c,EAAK3uB,EAAI0ue,EACxDyC,EAAY,GACZC,EAAY,GAOhB,GANuB,gBAAnB5md,EAAK8nc,YAIL0e,GAHAH,EAAW7qf,KAAKi9N,IAAIz4L,EAAKknc,QAASz2e,EAAQgW,EAAMjQ,YAEhD+vf,GADS/qf,KAAKi9N,IAAIz4L,EAAKknc,QAASz2e,GACR41f,IAAarmd,EAAK2kd,sBAAwB,KAG7C,eAArB3kd,EAAKq3V,YACL,IAAK,IAAIj7X,EAAI,EAAGA,EAAI4jC,EAAK2kd,sBAAuBvof,IAC5C3L,EAAQwD,KAAK4yf,eAAe7md,EAAMwmd,EAAa/1f,EAAOwof,EAAYmN,GAClEI,GAAeD,EACX7X,GAAOj+e,EAAOgW,KACdu7B,GAAavxC,EAAQgW,EAAMY,MAAQZ,EAAMa,IAAMb,EAAMY,KACrD26B,EAAWxmC,KAAKu3D,MAAM/yB,EAAKuvc,WAAc,EAAIvtc,EAAYA,GAAYmC,EAAKR,OAC1E2id,EAAQ9qf,KAAKC,MAAMumC,EAAWmC,EAAK3uB,GACnCmxe,EAAYA,EAAU5ge,OAAO,KAAYuge,EAAO,IAAOryf,KAAKkof,eAAe5xe,EACrE,KAAO+7e,EAAO,KAAOryf,KAAKkof,eAAe5xe,EAAItW,KAAKkof,eAAev4c,SACvE0id,EAAQ9qf,KAAKC,MAAMumC,EAAWmC,EAAK3uB,GACnCoxe,EAAYA,EAAU7ge,OAAO,KAAYuge,EAAO,IAAOnid,EAAK55B,EACtD,KAAO+7e,EAAO,KAAOG,EAASzmd,EAAKktc,wBAKjD,IAAS9we,EAAI,EAAGA,EAAI4jC,EAAK2kd,sBAAuBvof,IAExCsye,GADJj+e,EAAQwD,KAAK4yf,eAAe7md,EAAMwmd,EAAa/1f,EAAOwof,EAAYmN,GAChD3/e,KACdu7B,GAAavxC,EAAQgW,EAAMY,MAAQZ,EAAMa,IAAMb,EAAMY,KACrD26B,GAAuF,EAA5ExmC,KAAKu3D,MAAO/yB,EAAKuvc,WAAc,EAAIvtc,EAAYA,GAAamC,EAAKP,QAC5E0id,EAAQ9qf,KAAKC,MAAMumC,EAAWmC,EAAK55B,EAAI45B,EAAKP,QAC5C+id,EAAYA,EAAU5ge,OAAO,KAAa9xB,KAAKkof,eAAe3me,EAAK,IAAM8we,EACnE,MAAQryf,KAAKkof,eAAe3me,EAAIvhB,KAAKkof,eAAex4c,OAAS,IAAM2id,EAAO,KAChFA,EAAQ9qf,KAAKC,MAAMumC,EAAWmC,EAAK55B,EAAI45B,EAAKP,QAC5Cgjd,EAAYA,EAAU7ge,OAAO,KAAYoe,EAAK3uB,EAAI,IAAM8we,EAAO,MAAQI,EAAS1md,EAAKktc,iBACjF,IAAMoZ,EAAO,MAErBE,GAAeD,EAKvB,OAFA/yZ,EAAU39F,KAAK8wf,GACfnzZ,EAAU39F,KAAK+wf,GACRpzZ,GAYX2rZ,EAAyBhvf,UAAU02f,eAAiB,SAAU7md,EAAMwmd,EAAa/1f,EAAOwof,EAAYmN,GAChG,IACIz5e,EADAlG,EAAQu5B,EAAK8oc,aAEjB,GAAuB,gBAAnB9oc,EAAK8nc,UACLr3e,EAAQy2e,GAAQsf,EAAaxmd,EAAKknc,cAEjC,GAAuB,aAAnBlnc,EAAK8nc,UACVn7d,EAAYqzB,EAAKm1c,kBAAoBn1c,EAAK2kd,sBAAwB,GAClEl0f,EAAQ21f,EAAgB31f,EAAQkc,EAAclc,EAAQkc,OAErD,GAAuB,qBAAnBqzB,EAAK8nc,UAAkC,CAC5C,IAAIrpc,EAAkC,iBAAxBuB,EAAK00c,eAAoC,GAAM,EAC7Djkf,KAAWuvC,EAAK4pc,cAAcqP,EAAa,GACvCj5c,EAAK4pc,cAAcqP,EAAa,GAAGxof,MAAQguC,EAAUuB,EAAK8oc,aAAaxhe,MACtE04B,EAAK4pc,cAAcqP,GAChBj5c,EAAK4pc,cAAcqP,GAAYxof,MAAQguC,EAAUuB,EAAK8oc,aAAazhe,OACtE24B,EAAK2kd,sBAAwB,QAGlCh4e,EAAYlG,EAAMjQ,UAAYwpC,EAAK2kd,sBAAwB,GAC3Dl0f,EAAQ21f,EAAgB31f,EAAQkc,EAAclc,EAAQkc,EAE1D,OAAOlc,GAYX0uf,EAAyBhvf,UAAU0yf,gBAAkB,SAAU7id,EAAMvxB,EAAOja,EAAQ2vC,GAChF,IAII2id,EACA/kB,EACAkN,EACApwY,EASAt+F,EACAwmf,EAIAC,EACAt9a,EACAq7a,EAvBApe,EAAQ1ye,KAAK0ye,MACbqJ,EAAS,EACT+T,EAAS,EACTiB,EAAahld,EAAKivc,aAMlBsW,EAAe5e,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,aAAee,IAClFw4e,EAAuC,WAAvBjnd,EAAK8uc,cACrBoW,EAAYlld,EAAKutc,gBACjB2Z,EAAYlnd,EAAK8uc,gBAAkB9uc,EAAKuuc,aAAevuc,EAAKyuc,eAAe7qc,OAAS,EACpFnF,EAAUyod,EAAYlC,EAAoC,GAAvBhld,EAAKwwT,UAAU7sT,MAClD8hW,EAAQzlW,EAAKylW,MAAQ,IACrBsrG,EAA+B,IAAVtrG,IAA0B,MAAXA,GAA4B,MAAVA,EAGtDyqG,EAAclwc,EAAKuvc,WAAcprc,EAAK3uB,EAAI2uB,EAAKR,MAASQ,EAAK3uB,EAC7DmuB,EAAQ,EACR7yC,EAASkvC,EAAK4pc,cAAc94e,OAI5Bo8e,EAAkBltc,EAAKwgd,kBAAkB/3W,SAAYw+W,GAAiB51f,YAAkB2uC,EAAK2hd,aACzF3hd,EAAKspc,WAAa,GAAKtpc,EAAKupc,aAAe,GAAMvpc,EAAKktc,gBAAkB,EAC5Eia,EAAY,GACZ/K,GAA0B,EAC9B39c,GAAsB,KAAVgnW,GAA0B,MAAVA,IAA4B,KAAXA,IAA4B,MAAXA,EAAmBwhH,EAAgB,GAAK,EAAK,EAK3G,IAJA,IAAIG,GAA0BlC,IAAc+B,GAAmB/B,GAAa+B,EACxEI,EAAcD,EACZ,KAAO3hH,GAASA,GAAS,MAAU,GAAKA,GAASA,IAAU,IAC3D,GAAKA,GAASA,GAAS,MAAU,KAAOA,GAASA,IAAU,IACxD50Y,EAAI,EAAG+E,EAAM9E,EAAQD,EAAI+E,EAAK/E,IAAK,CAExCk0f,EAAmB1U,IADnB3ma,EAAQ1pC,EAAK4pc,cAAc/4e,IACWy/e,cACtCN,EAAUV,GAAmB5la,EAAMj5E,MAAOuvC,GAAQmE,EAAKR,MAASQ,EAAK3uB,EACrEusd,EAAcr4Z,EAAM+G,KACpBu2a,EAAiB7id,EAAKR,MAAQ7yC,EAC9Bi2f,EAAahC,EAAmBr7a,EAAM6ma,eAAe5sc,MAAQo+b,EAAYp+b,MACzEA,GAAwC,SAA9B3D,EAAKowc,sBAAiE,SAA9Bpwc,EAAKowc,uBAA8C,IAAV3qG,GACvFshH,EAAaC,EAAkBA,EAAiBD,EACpDD,EAAc/kB,EAAYn+b,OAAS,EACnCosc,GAAW+U,GAA8B,IAAVt/G,EAAe,EAAK9hW,EAAQ,EAE7C,IAAV8hW,IAEIuqG,GADA+U,EACsC,SAA5B/kd,EAAK4ld,mBAAiCl8a,EAAM6ma,eAAe5sc,MAAQ,EAAiC,UAA5B3D,EAAK4ld,oBACjFl8a,EAAM6ma,eAAe5sc,MAAQ,EAAK,GAGlB,KAAX8hW,GAA2B,MAAVA,GAAiBqhH,EAAyB,KAAVrhH,IAA2B,MAAXA,EAAkBqhH,EAAc,GAI9E,QAAlC9md,EAAK6pc,WAAWzqG,cAChB4wG,EAASA,EAASrsc,EAhDd,GAkDmC,SAAlC3D,EAAK6pc,WAAWzqG,cACrB4wG,EAASA,EAASrsc,EAnDd,GAqDmC,WAAlC3D,EAAK6pc,WAAWzqG,gBAErB4wG,EAASA,GAGT+U,GAAgD,WAA5B/kd,EAAK4ld,oBAA6C,IAAVngH,IAC5DuqG,GAAsC,SAA5Bhwc,EAAK4ld,oBAAkCjid,EAAQ,EAAMA,EAAQ,GAE3E,IAAI2jd,EAAuBvC,EACtBhU,EAAqBhP,EAAYn+b,OAAW8lC,EAAM6ma,eAAe5sc,MAAQ,EAAM,EA+BpF,GA9BAlF,EAAUsmd,EAAoBmC,EAAYlC,EAAoC,GAAvBhld,EAAKwwT,UAAU7sT,MAAelF,EAEjFwod,GAAiBxhH,EAEbs+G,EADAgB,EACSG,EAAa/gd,EAAK55B,EAAIk0B,EAAW6od,EAA0Bnjd,EAAK55B,EAAIk0B,EAAW6od,EAG/EpC,EAAa/gd,EAAK55B,EAAIk0B,EAAUqod,EAAgB3id,EAAK55B,EAAIk0B,EAAUqod,GAK5E7X,EADA8V,EACgBqC,EACZ3od,EAAUyuc,GAAmBznG,EAAQ6hH,EAAwB,EAAIR,KAD5Brod,EAAUyuc,EAAmBoa,GAItDF,EAEZ3od,EAAUyuc,GAAoBznG,EAAQ,EAAI,GAAKqhH,IAD7Crod,EAAUyuc,GAAmBznG,EAAQqhH,EAAep9a,EAAMj7D,MAAQ,EAAK,EAAIq4e,EAAe,IAGpG/C,EAAU5/c,EAAK55B,EAAK0ke,EAAevla,EAAMj7D,OAIzCowF,EADAkmZ,EACS9wf,KAAKwxf,UAAUzld,GAGd2mc,EAAMye,cAAgBiC,EAAe,MAAQ,GAE3D9mf,EAAU,IAAI8+d,GAAWsH,EAAM1xe,QAAQyY,GAAKe,EAAQ,cAAgB5d,EAAGm/e,EAAQ+T,EAAQllZ,GACnF7+D,EAAK2wc,oBAAiC,IAAVlrG,EAC5B,OAAQzlW,EAAK2wc,oBACT,IAAK,OACD,MACJ,IAAK,OACD,IAAY,IAAN9/e,GAAYmvC,EAAKuvc,YAAc1+e,IAAM+E,EAAM,IAAO2K,EAAQiV,EAAI2uB,EAAK3uB,IACnE3kB,IAAM+E,EAAM,GAAMoqC,EAAKuvc,YAAoB,IAAN1+e,IAAc0P,EAAQiV,EAAImuB,EAAQQ,EAAK3uB,EAAI2uB,EAAKR,MACvF,SAEJ,MACJ,IAAK,SACU,IAAN9yC,GAAYmvC,EAAKuvc,YAAc1+e,IAAM+E,EAAM,IAAO2K,EAAQiV,EAAI2uB,EAAK3uB,GACpEwxe,GAAmB7id,EAAK3uB,EAAIjV,EAAQiV,EACpCjV,EAAQiV,EAAIw6d,EAAS7rc,EAAK3uB,IAEpB3kB,IAAM+E,EAAM,GAAMoqC,EAAKuvc,YAAoB,IAAN1+e,IAAe0P,EAAQiV,EAAImuB,EAASQ,EAAK3uB,EAAI2uB,EAAKR,QACzFo+b,EAAYp+b,MAAQqjd,GAAgD,SAA9Bhnd,EAAKowc,qBAC3C4W,GAAmBzmf,EAAQiV,EAAImuB,GAASQ,EAAK3uB,EAAI2uB,EAAKR,OAGtDqjd,EAAiBrjd,EAErBpjC,EAAQiV,EAAIw6d,EAAS7rc,EAAK3uB,EAAI2uB,EAAKR,MAAQqjd,GAK3Dzmf,EAAQiG,KAAOvS,KAAKymf,aAAahxa,EAAO1pC,EAAMgnd,GAG9C,IAAIx6J,OAAS,EACT+6J,OAAU,EAoBd,GAnBIxC,GAA8B,IAAVt/G,EACY,UAA5BzlW,EAAK4ld,oBACLp5J,EAAUjsV,EAAQiV,EAAImuB,EACtB4jd,EAAUhnf,EAAQiV,GAEe,WAA5BwqB,EAAK4ld,oBACVp5J,EAAUjsV,EAAQiV,EAAKmuB,EAAQ,EAC/B4jd,EAAUhnf,EAAQiV,EAAKmuB,EAAQ,IAG/B6oT,EAASjsV,EAAQiV,EACjB+xe,EAAUhnf,EAAQiV,EAAImuB,IAI1B6oT,EAASjsV,EAAQiV,EACjB+xe,EAAUhnf,EAAQiV,EAAImuB,GAGZ,IAAV8hW,GAA6C,SAA9BzlW,EAAKowc,sBAAyC,IAANv/e,KACrDmvC,EAAKuvc,WAAqCgY,GAAWrX,EAAnC1jJ,GAAU0jJ,GADlC,CAsBA,GAfQA,EAFJ6U,EACgC,UAA5B/kd,EAAK4ld,mBACS5ld,EAAKuvc,WAAchve,EAAQiV,EAAImuB,EAASpjC,EAAQiV,EAE7B,WAA5BwqB,EAAK4ld,mBACI5ld,EAAKuvc,WAAchve,EAAQiV,EAAKmuB,EAAQ,EAAMpjC,EAAQiV,EAAKmuB,EAAQ,EAGnE3D,EAAKuvc,WAAahve,EAAQiV,EAAIjV,EAAQiV,EAAImuB,EAI9C3D,EAAKuvc,WAAahve,EAAQiV,EAAIjV,EAAQiV,EAAImuB,EAK9C,IAAV8hW,EAAa,CACb,IAAI7hW,OAAS,EACT4jd,OAAS,EACb,GAAIzC,EAAkB,CAClB,IAAI0C,EAAc,EACdC,EAAc,EAClB9jd,EAAU8lC,EAAM6ma,eAAe3sc,OAC/B8jd,EAAeh+a,EAAM6ma,eAAe3sc,OAAU,EAEd,WAA5B5D,EAAK4ld,mBACL6B,GAAgB/9a,EAAM6ma,eAAe5sc,MAAQ,EAEZ,UAA5B3D,EAAK4ld,qBACV6B,GAAe/9a,EAAM6ma,eAAe5sc,OAGpCyjd,IACAM,EAAeh+a,EAAM6ma,eAAe3sc,QAAWrjC,EAAQiG,KAAK1V,OAAS,IAEzE02f,EAAS,IAAItoB,GAAK3+d,EAAQiV,EAAIiye,EAAalnf,EAAQgK,EAAKm9e,EAAch+a,EAAM6ma,eAAe5sc,MAAOC,QAGlGA,EAAUmgd,GAAWxjf,EAAQgK,GAAMm/D,EAAM+G,KAAK7sC,OAAS,EAAK,KAC5D4jd,EAAS,IAAItoB,GAAK3+d,EAAQiV,EAAGjV,EAAQgK,GAAMm/D,EAAM+G,KAAK7sC,OAAS,EAAK,GAAI8lC,EAAM+G,KAAK9sC,MAAOC,GAE9F,IAAI+jd,EAAkB1zf,KAAK2zf,mBAAmBJ,GAC1CK,EAAc9C,EAAmByC,EAAOhye,EAAKgye,EAAO7jd,MAAQ,EAAKqsc,EACjE8X,EAAc/C,EAAmByC,EAAOj9e,EAAKi9e,EAAO5jd,OAAS,EAAMmgd,EAAUngd,EAAS,EAEtFrjC,EAAQk3B,UADRstd,EACoB,UAAYt/G,EAAQ,IAAMoiH,EAAc,IAAMC,EAAc,IAG5D,UAAYriH,EAAQ,IAAMuqG,EAAS,IAAM+T,EAAS,IAE1EoD,EAAUtxf,KAAK09e,GAA+BoU,EAAiBE,EAAaC,EAAariH,IACzF22G,GAA0B,EAC1B,IAAK,IAAIznW,EAAU9jJ,EAAG8jJ,EAAU,EAAGA,IAC/B,GAAIwyW,EAAUt2f,IAAMs2f,EAAUxyW,EAAU,IAAMq/V,GAAuBmT,EAAUt2f,GAAIs2f,EAAUxyW,EAAU,IAAK,CACxGynW,GAA0B,EAC1B+K,EAAUt2f,GAAK,KACf,OAKZsze,GAAYwC,EAAMtsM,SAAU95R,EAASmpE,EAAMmga,WAAYnga,EAAMmga,WAAWjga,OAAS+8Z,EAAMrG,WAAW7K,UAAW8vB,EAAevld,EAAKutc,mBAA4C,WAAvBvtc,EAAK8uc,eAA8BnI,EAAMwK,QAAQ,EAAM,KAAM,KAAM,KAAMzna,EAAM+G,KAAM2ra,EAAyBzV,EAAMoW,eAEzQ9of,KAAK0ye,MAAMoW,eACPpW,EAAMuK,YAGFlxc,EAAKmxB,SAAWnxB,EAAKmtc,oBAC1Bl5e,KAAKyxf,mBAAmBzxf,KAAK0ye,MAAO4e,EAAcvld,EAAMvxB,EAAO01B,GAH/D3vC,EAAOyB,YAAYsvf,KAa/BpG,EAAyBhvf,UAAUs1f,UAAY,SAAUzld,GACrD,MAAoC,WAA5BA,EAAK4ld,mBAAkC,SAAwC,SAA5B5ld,EAAK4ld,mBAAgC,QAAU,OAQ9GzG,EAAyBhvf,UAAUy3f,mBAAqB,SAAUzjd,GAK9D,MAAO,CAJM,IAAIkvc,GAAclvc,EAAK3uB,EAAG2uB,EAAK55B,GAC/B,IAAI8oe,GAAclvc,EAAK3uB,EAAI2uB,EAAKR,MAAOQ,EAAK55B,GAC5C,IAAI8oe,GAAclvc,EAAK3uB,EAAI2uB,EAAKR,MAAOQ,EAAK55B,EAAI45B,EAAKP,QACrD,IAAIyvc,GAAclvc,EAAK3uB,EAAG2uB,EAAK55B,EAAI45B,EAAKP,UAWzDu7c,EAAyBhvf,UAAUuqf,aAAe,SAAUhxa,EAAO1pC,EAAMgnd,GACrE,GAAI3W,GAAa3ma,EAAM4ma,cAAe,CAGlC,IAFA,IAAI19e,EAAS,GACT+F,OAAM,EACD8V,EAAQ,EAAGA,EAAQi7D,EAAMljE,KAAK1V,OAAQ2d,IAC3C9V,EAAM1E,KAAK8zf,cAAc/nd,EAAM0pC,EAAMljE,KAAKiI,GAAQu4e,GAClDp0f,EAAOiD,KAAK8C,GAEhB,OAAO/F,EAGP,OAAOqB,KAAK8zf,cAAc/nd,EAAM0pC,EAAMljE,KAAMwgf,IAYpD7H,EAAyBhvf,UAAU2yf,gBAAkB,SAAU9id,EAAMvxB,EAAOja,EAAQwzf,GAChF,GAAIhod,EAAK48H,OAAOj5H,MAAQ,EAAG,CAgBvB,IAfA,IAAIupc,EAAyC,YAAvBltc,EAAK8uc,cAA8B9uc,EAAKktc,gBAAkB,EAC5Ezgc,OAAS,EACTC,EAASs7c,EAASz9e,GAAMy1B,EAAKutc,iBAAmB,EAAI,GAAKL,EAEzD8C,OAAS,EACT6V,EAAOmC,EAASrkd,MAAQ3D,EAAK8oc,aAAarzX,OAA6B,aAAnBz1E,EAAK8nc,UAA2B9nc,EAAKm1c,iBACvFn1c,EAAK8oc,aAAatye,UACpBwvf,OAAO,EACPv9d,EAAWuX,EAAKkvc,aAAatrc,QAC3B5D,EAAKuuc,eAAiBvuc,EAAK8uc,cAAiB9uc,EAAKyuc,eAAe7qc,OAAS,GAC3Emid,EAAc,GACd3B,EAAoC,aAAnBpkd,EAAK8nc,WAAoD,iBAAxB9nc,EAAK00c,gBAAsC,GAAM,EACnGoR,EAAS9ld,EAAKutc,iBAA0C,WAAvBvtc,EAAK8uc,gBACpC9uc,EAAKutc,iBAA0C,YAAvBvtc,EAAK8uc,cAC9BkZ,EAASz9e,EAAIke,EAXJ,GAWyBykd,EAAoB8a,EAASz9e,EAAIke,EAX1D,GAW+Eykd,EACpFr8e,EAAI,EAAG+E,EAAMoqC,EAAK4pc,cAAc94e,OAAQD,EAAI+E,EAAK/E,IAWtD,OAVAm/e,EAASV,GAAmBtvc,EAAK4pc,cAAc/4e,GAAGJ,MAAQ2zf,EAAepkd,GACzEgwc,GAAUhwc,EAAKuvc,WAAc,EAAIS,EAAUA,GAAUgY,EAASrkd,MACvC,aAAnB3D,EAAK8nc,WAAoD,iBAAxB9nc,EAAK00c,gBACtCjoc,EAASujc,EAASgY,EAASxye,EAC3Bwwe,EAAOhW,EAAU6V,EAAOmC,EAASxye,IAGjCi3B,EAASujc,EAAe,GAAN6V,EAAYmC,EAASxye,EACvCwwe,EAAOhW,EAAe,GAAN6V,EAAYmC,EAASxye,GAEjCwqB,EAAK48H,OAAOx9J,MAChB,IAAK,YACL,IAAK,mBACGqtC,EAASu7c,EAASxye,EAClBuwe,GAAgB,KAAYiC,EAASxye,EAAI,IAAMswe,EAA/B,MAAwDE,EAAO,IAAMF,EAAO,IAEvFtqf,KAAKC,MAAMuqf,GAAQgC,EAASrkd,MAAQqkd,EAASxye,GAAqC,IAA9BwqB,EAAK4pc,cAAc94e,OAC5Ei1f,GAAgB,KAAYt5c,EAAS,IAAMC,EAA3B,MAAsDD,EAAS,IAAMq5c,EAArE,OACCkC,EAASrkd,MAAQqkd,EAASxye,GAAK,IAAMswe,EAAO,KAG7DC,GAAgB,KAAYt5c,EAAS,IAAMC,EAA3B,MAAsDD,EAAS,IAC3Eq5c,EADY,MACaE,EAAO,IAAMF,EAAO,IACvC,IAANj1f,IACAk1f,GAAgB,KAAYt5c,EAAS,IAAMC,EAA3B,MAAsDD,EAAS,IAAMq5c,EAArE,MACLr5c,EAAS,IAAMq5c,EAAO,MAASkC,EAASxye,EAAK,IAAMswe,GAE9Dj1f,IAAMmvC,EAAK4pc,cAAc94e,OAAS,IAClCi1f,GAAgB,KAAYC,EAAO,IAAMt5c,EAAzB,MAAoDs5c,EAAO,IAAMF,EAAjE,MACLE,EAAO,IAAMF,EAAO,OAASkC,EAASrkd,MAAQqkd,EAASxye,GAAK,IAAMswe,IAGrF,MACJ,IAAK,4BACKr5c,EAASu7c,EAASxye,GAAQha,KAAKC,MAAMuqf,GAAQgC,EAASrkd,MAAQqkd,EAASxye,IACzEuwe,GAAgB,KAAYt5c,EAAS,IAAMC,EAA3B,MAAsDD,EAAS,IAAMq5c,EAArE,MACLE,EAAO,IAAMt5c,EAAS,MAAQs5c,EAAO,IAAMF,GAOlD,MAFpBC,GAAqC,cAArB/ld,EAAK48H,OAAOx9J,KAAwB,MAAa4of,EAASxye,EAAI,IAAMk3B,EAAhC,MAC/Cs7c,EAASxye,EAAIwye,EAASrkd,OAAS,IAAM+I,EAAU,KAEhDz4C,KAAKgyf,wBAAwBjmd,EAAMvxB,EAAOs3e,EAAavxf,GAG3DP,KAAK0ye,MAAM0K,uBAAyBrxc,EAAKsxc,iBAAiBxgf,OAAS,GACnEmD,KAAK0ye,MAAM0K,sBAAsB4W,4BAA4Bjod,EAAMvxB,EAAOja,EAAQwzf,IAY1F7I,EAAyBhvf,UAAU81f,wBAA0B,SAAUjmd,EAAMvxB,EAAOs3e,EAAavxf,GAC7F,IAAIS,EAAU6B,GAAW7C,KAAK0ye,MAAM1xe,QAAQyY,GAAK,eAAiBe,GAC9D+kF,EAAYv+F,EAAUA,EAAQmuB,aAAa,KAAO,GAClD8ke,EAAgBj0f,KAAK0ye,MAAMtsM,SAAS4+H,SAAS,IAAI2mE,GAAW3re,KAAK0ye,MAAM1xe,QAAQyY,GAAK,eAAiBe,EAAO,cAAeuxB,EAAK48H,OAAOj5H,MAAO3D,EAAK48H,OAAOhzF,OAAS31E,KAAK0ye,MAAMrG,WAAW3K,SAAU,EAAG,GAAIowB,IAC9MmC,EAAcr+d,aAAa,QAAS,wBACpCiwd,GAAmB7lf,KAAK0ye,MAAMoW,aAAcvof,EAAQ0zf,EAAej0f,KAAK0ye,MAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM39Y,GAAW,IAU3H2rZ,EAAyBhvf,UAAU43f,cAAgB,SAAU/nd,EAAM0pC,EAAO/lC,GACtE,MAAsC,SAA9B3D,EAAKowc,qBACPpwc,EAAKylW,MAAQ,MAAQ,GAAMzlW,EAAKwwc,WAAwD9ma,EAA1C6ta,GAAS5zc,EAAO+lC,EAAO1pC,EAAK6pc,YAAuBnga,GAW3Gy1a,EAAyBhvf,UAAU4yf,eAAiB,SAAU/id,EAAMvxB,EAAOja,EAAQ2vC,GAC/E,GAAInE,EAAKq7G,MAAO,CACZ,IAAIsrV,EAAQ1ye,KAAK0ye,MACb5E,EAAcxD,GAAYv+b,EAAKq7G,MAAOr7G,EAAK6uc,YAC3C3B,EAAkB77e,YAAkB2uC,EAAK2hd,WAAa3hd,EAAKktc,gBAAkB,EAC7Ezuc,GAAiC,WAAtBuB,EAAKuuc,aAA4B,EAAIvuc,EAAKyuc,eAAe7qc,OAAS5D,EAAKgvc,eAC1D,WAAvBhvc,EAAK8uc,cAA6B,EAC/B9uc,EAAKkvc,aAAatrc,OAAS5D,EAAKiuc,sBAAwBjuc,EAAKivc,cACjEZ,EAAaruc,EAAKquc,UAAUzqc,QAAU5D,EAAKouc,gBAAgBt9e,OAAS,GACxE2tC,EAAUuB,EAAKutc,kBAAoB9uc,EAAUsjc,EAAYn+b,OAAS,EAAIspc,EAAkBmB,GAAc5vc,EAAW,EAC7Gsjc,EAAYn+b,OAAS,EAAKspc,EAC9B,IAAI3se,EAAU,IAAI8+d,GAAWsH,EAAM1xe,QAAQyY,GAAK,cAAgBe,EAAO01B,EAAK3uB,EAAiB,GAAb2uB,EAAKR,MAAaQ,EAAK55B,EAAIk0B,EAAS,SAAUuB,EAAKouc,iBAC/Hn5e,EAAUkve,GAAYwC,EAAMtsM,SAAU95R,EAASy/B,EAAK6uc,WAAY7uc,EAAK6uc,WAAWjla,OAAS+8Z,EAAMrG,WAAW5K,UAAWlhe,EAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAM,KAAMmye,EAAMoW,cACvL9nf,EAAQ40B,aAAa,aAAcmW,EAAKusR,aAAevsR,EAAKq7G,OAC5DpmJ,EAAQ40B,aAAa,WAAYmW,EAAKsxG,SAASlwI,cAiBvD+9e,EAAyBhvf,UAAUu0f,eAAiB,SAAU1kd,EAAMvxB,EAAO05e,EAAe7ub,EAAW8ub,EAAQ70B,EAAW/+d,EAAQ6zf,EAAY5sB,QACtH,IAAdA,IAAwBA,EAAY,MACxC,IACIjoY,EACAv+F,EAFA0xe,EAAQ1ye,KAAK0ye,MAGbrta,EAAU31B,MAAQ,GAAK3D,EAAKmxB,SAAWnxB,EAAKmtc,oBAAsBgb,IAElE30Z,GADAv+F,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK06e,EAAS35e,EAAQ,IAAM8kd,IACzCt+d,EAAQmuB,aAAa,KAAO,KAClDnuB,EAAU,KACVhB,KAAKwqe,WAAakI,EAAMtsM,SAAS4+H,SAAS,IAAI2mE,GAAW+G,EAAM1xe,QAAQyY,GAAK06e,EAAS35e,EAAQ,IAAM8kd,EAAW,cAAej6Z,EAAU31B,MAAO21B,EAAUsQ,OAASy+a,EAAY,KAAM5sB,EAAW0sB,IAC9LrO,GAAmBnT,EAAMoW,aAAcvof,EAAQP,KAAKwqe,WAAYkI,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM39Y,GAAW,KAWvH2rZ,EAAyBhvf,UAAUm4f,eAAiB,SAAUpzV,EAAWxrF,EAAOj7D,GAC5E,OAAIha,SAASuuB,eAAekyI,EAAY,YAAczmJ,EAAQ,UAAU+X,SAAS/xB,SAASuuB,eAAe0mD,EAAMh8D,KACpGjZ,SAASuuB,eAAekyI,EAAY,YAAczmJ,EAAQ,UAG1Dha,SAASuuB,eAAekyI,EAAY,YAAczmJ,EAAQ,YAazE0we,EAAyBhvf,UAAUu1f,mBAAqB,SAAU/e,EAAO4e,EAAcvld,EAAMvxB,EAAO01B,GAChG,IAAIzvC,EAAaT,KAAKq0f,eAAe3hB,EAAM1xe,QAAQyY,GAAI63e,EAAc92e,GACrE82e,EAAa17d,aAAa,UAAW,OACrC,IAAI0+d,EAAc5hB,EAAMtsM,SAAS6/L,YAAY,CACzCxsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,kBAAoBe,IAE/C85e,EDrhCD,SAA6B5hB,EAAO3mc,EAAMxrC,EAAQia,EAAO+5e,EAAYrkd,GAaxE,IAZA,IAGIssC,EAEAj7D,EACAjL,EAEAs0d,EACArrY,EARA+5Y,EAAkBvtc,EAAKutc,gBACvB1uY,EAAS2pZ,EAAa,QAAU,OAEhCC,EAAY9hB,EAAM6Q,cAAc7zc,MAMhCupc,EAAkBltc,EAAKwgd,kBAAkB/3W,QAAWzoG,EAAKqpc,kBAAoBrpc,EAAKqpc,iBAAiB5I,UACjGzgc,EAAKktc,gBAAkB,EACpBr8e,EAAI,EAAGA,EAAI,EAAGA,IACnB4/E,EAAO8tZ,GAAY1te,EAAImvC,EAAKqqc,SAAWrqc,EAAKoqc,WAAYpqc,EAAK6pc,YACzD2e,GACA3pB,EAAgBhue,EAAI,IAAIwif,GAAclvc,EAAK3uB,EAAI03d,EAAiB/oc,EAAK55B,EARpE,GASG,IAAI8oe,GAAcrzc,EAAKmE,KAAK3uB,EAAI03d,EAAkB/oc,EAAK55B,EAAI45B,EAAKP,OATnE,GAUDpuB,EAAK2uB,EAAK3uB,GAAK+3d,EAAmBppc,EAAKR,MAjBlC,EAiBmDupc,IAAqBz8Z,EAAK9sC,MAjB7E,IAiBuGupc,IAC5G3ie,EAAK45B,EAAK55B,GAAK1Z,EAAI,EAAIszC,EAAKP,OAAS6sC,EAAK7sC,OAlBrC,GAmBLpuB,GAAMA,EAAI,GAAOize,EAAcjze,EAAIi7D,EAAK9sC,MAnBnC,EAmBwD4pc,GAAoB98Z,EAAK9sC,MAAQ,EAAK8sC,EAAK9sC,MAAQ,EAAK,EACrH6vD,EAAYkrY,GAbX,IAaiC,IAAIQ,GAAK1pd,EAAGjL,EAAGkmE,EAAK9sC,MApBjD,EAoBiE8sC,EAAK7sC,OApBtE,GAoBwFi7b,EApBxF,GAoB+G,GAAO,GAAQ0O,EAAiB1O,EAAcrpd,EAAGqpd,EAAct0d,GAAK1Z,GAbvL,QAgBDgue,EAAoB,IAAIwU,GAARxif,EAAuBszC,EAAK3uB,EAAI2uB,EAAKR,MAhBpD,EAiBqBQ,EAAK3uB,EAjB1B,EAgBkE2uB,EAAK55B,EAAI45B,EAAKP,OAASspc,GAE1F13d,EAAK2uB,EAAK3uB,GAAK3kB,EAAKszC,EAAKR,MAAQ8sC,EAAK9sC,MAzBjC,EAyBmD,GACxDp5B,EAAKgje,EAAmBppc,EAAK55B,EAAIkmE,EAAK7sC,OAAS,GAAKspc,EAAoB/oc,EAAK55B,EAAI45B,EAAKP,OA1BjF,EA0BmGspc,EACxG15Y,EAAYkrY,GApBX,IAoBiC,IAAIQ,GAAK1pd,EAAGjL,EAAGkmE,EAAK9sC,MA3BjD,EA2BiE8sC,EAAK7sC,OA3BtE,GA2BwFi7b,EA3BxF,EA2B+G0O,GAAkBA,GAAiB,EAAO1O,EAAcrpd,GAAK3kB,EApBhL,MAoB+Lgue,EAAct0d,IAElNiL,GAAS8rB,IACT/2B,EAAIA,EAAUkmE,EAAK7sC,OAAS,EAAnB,EAA0BtC,IACnC9sC,EAAOyB,YAAY0we,EAAMtsM,SAAS4+H,SAAS,IAAI2mE,GAAW+G,EAAM1xe,QAAQyY,GAAK,SAAWe,EAAQ,oBAAsB5d,EAAG81e,EAAMrG,WAAWjK,cAAe,EAAGsQ,EAAMrG,WAAWjK,cAAe,EAAG,KAAM7iY,KACrM2wY,GAAYwC,EAAMtsM,SAAU,IAAIglM,GAAWsH,EAAM1xe,QAAQyY,GAAK,SAAWe,EAAQ,cAAgB5d,EAAG2kB,EAAGjL,EAAGs0F,EAAQhuG,EAAImvC,EAAKqqc,SAAWrqc,EAAKoqc,YAAa,CAAExga,MAAO+8Z,EAAMrG,WAAWhK,eAAgBzsZ,WAAY,WAAYyiM,WAAY,UAAW77L,KAAM,QAAUk2Z,EAAMrG,WAAWhK,eAAgB9he,GAEtS,OAAOA,ECk/BWk0f,CAAoB/hB,EAAO3mc,EAAMuod,EAAa95e,EAA4B,aAArBuxB,EAAKq3V,YAA4BlzV,GACpGzvC,EAAWmzI,aAAa09W,EAAc9wf,SAASuuB,eAAeuie,EAAa73e,KACvE5W,GAAW6ve,EAAM1xe,QAAQyY,GAAK,kBAAoBe,GAClD/Z,EAAWmzI,aAAa0gX,EAAa9zf,SAASuuB,eAAeule,EAAY76e,KAGzEhZ,EAAWuB,YAAYsyf,IAGxBpJ,EAn+CmC,GCJ1CwJ,GAA2B,WAM3B,SAASA,EAAUhiB,GAEf1ye,KAAK20f,cAAgB,GAErB30f,KAAK40f,eAAiB,GACtB50f,KAAK60f,cAAe,EACpB70f,KAAK0ye,MAAQA,EACb1ye,KAAKiqf,UAAY,EAuOrB,OAhOAyK,EAAUx4f,UAAU6gG,QAAU,WAQ1B,IAPA,IAGIrtD,EACAC,EACAmld,EACAC,EANAriB,EAAQ1ye,KAAK0ye,MACbt7b,EAAQ,KACR6sb,EAAS,KAK8Brne,EAA5B81e,EAAM4c,cAAczyf,OAAkB,EAAGD,GAAK,EAAGA,IAAK,CAQjE,GANA8yC,EAAyB,aADzBu0b,EAASyO,EAAM4c,cAAc1yf,IACbuO,MAA0C,YAApB84d,EAAOyQ,UAA2BzQ,EAAOjtE,OAAO95V,SAC/E+ma,EAAOjtE,OAAOrnX,OAAS,GAAK,EAAI,EACvCA,EAA0B,YAAhBs0b,EAAO94d,MAA0C,YAApB84d,EAAOyQ,UAA2BzQ,EAAOjtE,OAAO95V,SAChF+ma,EAAOjtE,OAAOtnX,MAAQ,GAAK,EAAI,EACtCold,EAASpiB,EAAMoiB,OACfC,EAASriB,EAAMqiB,OACX9wB,EAAO0Q,aAAangW,QAAUyvV,EAAO+wB,aACrC,GAAsB,QAAhB/wB,EAAO94d,MAAkBune,EAAMuiB,eAAkBviB,EAAMuiB,cAAgC,QAAhBhxB,EAAO94d,KAI/E,CACD,IAAIume,EAAezN,EAAOjtE,OAAOrnX,OAAS,EAC1Cold,EAAS9wB,EAAOtkW,MAAM27W,WAAayZ,EAASrjB,EAAeqjB,EAASrjB,MAN6B,CACjG,IAAIwjB,EAAcjxB,EAAOjtE,OAAOtnX,MAAQ,EACxCold,EAAS7wB,EAAOtkW,MAAM27W,WAAawZ,EAASI,EAAcJ,EAASI,EAU3E,GAHIjxB,EAAO/ma,SAAWqkb,GAAauT,EAAQC,EAAQ9wB,EAAOj7D,SAAUt5X,EAAOC,KACvEyH,EAAQp3C,KAAKm1f,aAAalxB,EAAQA,EAAOj7D,SAAU8rF,EAAQC,IAE3D39c,EACA,OAAO,IAAI4yc,GAAU5yc,EAAO6sb,GAGpC,OAAO,IAAI+lB,GAAU5yc,EAAO6sb,IAEhCywB,EAAUx4f,UAAUmmF,WAAa,SAAUqwZ,GACvC,OAASA,EAAM0iB,cAAcj3f,QAAQ,SAAW,GAAKu0e,EAAM0iB,cAAcj3f,QAAQ,UAAY,IAAMu0e,EAAMnjM,iBAChE,OAArCmjM,EAAMnjM,gBAAgB8lN,YAE9BX,EAAUx4f,UAAUi5f,aAAe,SAAUlxB,EAAQ/zb,EAAM3uB,EAAGjL,GAC1D,IACIg/e,EACAC,EACAC,EAEA3U,EACAO,EACAqU,EAHAC,EAAW,EAIf,GARY11f,KAAK0ye,MAQPxkC,YACN,OAAO,KAEX,IAAK,IAAIlwc,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIo5C,EAAQ7zC,EAAGvF,GACf,GAAKo5C,EAAMu+c,YACFv+c,EAAMw+c,SAAYx+c,EAAMw+c,QAAQ/4f,OADzC,CAKA,GAAIu6C,EAAMu+c,YAA2C,eAA7B31f,KAAK0ye,MAAMyC,eAAkClR,EAAOyQ,SAASv2e,QAAQ,WAAa,IACtGm3f,EAAc/ze,GAAK0id,EAAOj7D,SAASt5X,MAAQ,EAAIu0b,EAAOj7D,SAASznZ,GAC/Dg0e,EAAcj/e,GAAK2td,EAAOj7D,SAASr5X,OAAS,EAAIs0b,EAAOj7D,SAAS1yZ,GAChEo/e,EAAW,EAAInuf,KAAK6pY,IAAMh6V,EAAMu+c,WAAWrU,iBAAmB,EAAI,EAAIlqc,EAAMu+c,WAAWrU,iBACjFlqc,EAAMu+c,WAAWrU,kBAEvBkU,GADAA,GAAcjuf,KAAKsuf,MAAMN,EAAaD,GAAe,GAAM/tf,KAAK6pY,GAAKskH,IAAa,EAAInuf,KAAK6pY,KACjE,EAAI,EAAI7pY,KAAK6pY,GAAKokH,EAAaA,EACzDA,GAA0B,EAAIjuf,KAAK6pY,GAAK6yF,EAAOyO,MAAMkO,aAAaC,WAClEA,EAAazpc,EAAMu+c,WAAW9U,WAE9BA,GADAA,GAAc6U,GACY,EAAI,EAAInuf,KAAK6pY,GAAKyvG,EAAaA,EACzDO,EAAWhqc,EAAMu+c,WAAWvU,SAE5BA,GADAA,GAAYsU,GACU,EAAI,EAAInuf,KAAK6pY,GAAKgwG,EAAWA,EACnDqU,EAAqBluf,KAAK47B,KAAK57B,KAAKi9N,IAAIj9N,KAAKgH,IAAI+mf,GAAc,GAAK/tf,KAAKi9N,IAAIj9N,KAAKgH,IAAIgnf,GAAc,IAChGC,GAAc3U,GAAc2U,GAAcpU,IACvCqU,GAAsBr+c,EAAMu+c,WAAWtU,aAAeoU,GAAsBr+c,EAAMu+c,WAAWzyd,QAC3Fuyd,GAAsBr+c,EAAMu+c,WAAWtU,aAAeoU,GAAsBr+c,EAAMu+c,WAAWzyd,SAC3Fuyd,GAAsBxxB,EAAOyO,MAAMxvc,QAC1C,OAAOkU,EAGf,IAAK6sb,EAAO0Q,aAAangW,QAAUyvV,EAAO+wB,cAAkB/wB,EAAO+wB,cAAgB/wB,EAAOjtE,OAAO95V,UACzFl9D,KAAK81f,yBAAyBv0e,EAAGjL,EAAG8gC,EAAOlH,EAAM+zb,GAEjD,OADAjke,KAAK60f,cAAe,EACbz9c,EAGf,IAAKp3C,KAAK60f,cAAgB70f,KAAK+1f,yBAAyB3+c,EAAMw+c,QAAS1ld,EAAM3uB,EAAGjL,GAC5E,OAAO8gC,EAEN,GAAIp3C,KAAK60f,cAAgB70f,KAAK+1f,yBAAyB3+c,EAAMw+c,QAAS1ld,EAAM3uB,EAAGjL,GAChF,OAAO8gC,GAGf,OAAO,MAKXs9c,EAAUx4f,UAAU65f,yBAA2B,SAAUC,EAAY9ld,EAAM3uB,EAAGjL,GAC1E,IAAIvW,EAAQC,KACZ,OAAOg2f,EAAWtse,MAAK,SAAUuse,EAAQz7e,GAErC,OADAza,EAAMkqf,UAAYzve,EACX+me,GAAahge,EAAGjL,EAAG,IAAI20d,IAAoC,cAA9Blre,EAAM2ye,MAAMyC,cAAgCjlc,EAAK3uB,EAAI,GAAK00e,EAAO10e,GAAkC,cAA9BxhB,EAAM2ye,MAAMyC,cAAgCjlc,EAAK55B,EAAI,GAAK2/e,EAAO3/e,EAAG2/e,EAAOvmd,MAAOumd,EAAOtmd,aAY1M+kd,EAAUx4f,UAAU45f,yBAA2B,SAAUv0e,EAAGjL,EAAG8gC,EAAOlH,EAAM+zb,GACxE,IAOIv0b,EAPA3vC,EAAQC,KACRk2f,EAAwB,QAAhBjyB,EAAO94d,KACfmwe,EAAarX,EAAOtkW,MAAM27W,WAC1B2Z,EAAehxB,EAAOyO,MAAMuiB,aAC5BkB,EAAc,GACd39J,EAAS,EACTD,EAAS,EAET5oT,EAASD,EAAQ,GAyCrB,OAxCI4rc,GAAc2Z,EACViB,GACA19J,EAASphT,EAAMw+c,QAAQ,GAAGjmd,OAASwmd,EACnCzmd,EAAQ0H,EAAMw+c,QAAQ,GAAGlmd,QAGzB6oT,GAAS,GACT5oT,EAASyH,EAAMw+c,QAAQ,GAAGjmd,QAGzB2rc,GAAclkc,EAAMohT,OAAS,EAC9B09J,GACA39J,GAAS,GACT5oT,EAASyH,EAAMw+c,QAAQ,GAAGjmd,SAG1B6oT,EAASphT,EAAMw+c,QAAQ,GAAGjmd,OAASwmd,EACnCzmd,EAAQ0H,EAAMw+c,QAAQ,GAAGlmd,OAGxBuld,EACDiB,GACA19J,GAAS,GACT9oT,EAAQ0H,EAAMw+c,QAAQ,GAAGlmd,QAGzB6oT,EAASnhT,EAAMw+c,QAAQ,GAAGlmd,MAAQymd,EAClCxmd,EAASyH,EAAMw+c,QAAQ,GAAGjmd,QAI1Bumd,GACA39J,EAASnhT,EAAMw+c,QAAQ,GAAGlmd,MAAQymd,EAClCxmd,EAASyH,EAAMw+c,QAAQ,GAAGjmd,SAG1B6oT,GAAS,GACT9oT,EAAQ0H,EAAMw+c,QAAQ,GAAGlmd,OAG1B0H,EAAMw+c,QAAQlse,MAAK,SAAUuse,GAChC,OAAO1U,GAAahge,EAAGjL,EAAG,IAAI20d,IAAoC,cAA9Blre,EAAM2ye,MAAMyC,cAAgCjlc,EAAK3uB,EAAI,GAAK00e,EAAO10e,EAAIg3U,GAAuC,cAA9Bx4V,EAAM2ye,MAAMyC,cAAgCjlc,EAAK55B,EAAI,GAAK2/e,EAAO3/e,EAAIkiV,EAAQ9oT,EAAOC,QAM9M+kd,EAAUx4f,UAAUsoI,WAAa,SAAUy/V,EAAQzne,EAAO45f,GACtD,IAAIx+d,EACA/c,EACAw7e,EAAQD,GAAoBnyB,EAAOoyB,MACvC,GAAI75f,GAASyne,EAAOlpF,KAAO,IAAOv+Y,GAASyne,EAAOhpF,KAAO,GACrD,IAAK,IAAIr+Y,EAAI,EAAGA,EAAIy5f,EAAMx5f,OAAQD,IAC9Bie,EAAOw7e,EAAMz5f,IACE,MAAXg7B,GAAmBrwB,KAAKgH,IAAIsM,EAAOre,GAAS+K,KAAKgH,IAAIqpB,EAAUp7B,MAC/Do7B,EAAU/c,GAKtB,OADqD,IAAnCopd,EAAOoyB,MAAMl4f,QAAQy5B,GAE5BA,EAGA,MAGf88d,EAAUx4f,UAAUo6f,YAAc,SAAU5jB,EAAOzO,EAAQmyB,GACvD,IAAI55f,EACA0zC,EAAO+zb,EAAOj7D,SAKdxsa,EAJCk2e,EAAM6B,oBAICkN,GAAiB/O,EAAMqiB,OAAS7kd,EAAK55B,EAAG45B,EAAKP,OAAQs0b,EAAOpkW,OAH5D2hX,GAAiB9O,EAAMoiB,OAAS5kd,EAAK3uB,EAAG2uB,EAAKR,MAAOu0b,EAAOpkW,OAMvE,IADA,IAAIjoG,EAAU53B,KAAKwkI,WAAWy/V,EAAQzne,EAAO45f,GACpCp4f,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIo5C,EAAQ7zC,EAAGvF,GACf,GAAI45B,IAAYwf,EAAMmhT,QAAUnhT,EAAM8lB,QAClC,OAAO,IAAI8sb,GAAU5yc,EAAO6sb,GAGpC,OAAO,MAQXywB,EAAUx4f,UAAUq6f,aAAe,SAAUjH,GAEzC,IADA,IAAI5zb,EAAa,GACRlhD,EAAQ,EAAGA,EAAQ80e,EAAczyf,OAAQ2d,IAC9CkhD,EAAaA,EAAW5pC,OAAOw9d,EAAc90e,GAAO67e,OAExD,OAAO36b,EAAWxqC,QAAO,SAAUsqB,EAAMhhC,GACrC,OAAOA,IAAUkhD,EAAWv9D,QAAQq9C,OAGrCk5c,EApPoB,GCP3Br2d,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAqB5D03d,GAAmC,SAAUr3d,GAE7C,SAASq3d,IACL,OAAkB,OAAXr3d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAkD/D,OApDAq+B,GAAUm4d,EAAmBr3d,GAI7BR,GAAW,CACP3B,aAAS,IACVw5d,EAAkBt6f,UAAW,eAAW,GAC3CyiC,GAAW,CACP3B,aAAS,IACVw5d,EAAkBt6f,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,YAAS,OACVw5d,EAAkBt6f,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,gBACVw5d,EAAkBt6f,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,IACVw5d,EAAkBt6f,UAAW,eAAW,GAC3CyiC,GAAW,CACP3B,YAAS,IACVw5d,EAAkBt6f,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,aAAS,IACVw5d,EAAkBt6f,UAAW,sBAAkB,GAClDyiC,GAAW,CACP3B,YAAS,SACVw5d,EAAkBt6f,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,YAAS,IACVw5d,EAAkBt6f,UAAW,UAAM,GACtCyiC,GAAW,CACP3B,YAAS,IACVw5d,EAAkBt6f,UAAW,UAAM,GACtCyiC,GAAW,CACP3B,YAAS,WACVw5d,EAAkBt6f,UAAW,iBAAa,GAC7CyiC,GAAW,CACPvB,YAAQ,CAAEsS,MAAO,KAAMimC,MAAO,MAAQymR,KACvCo6J,EAAkBt6f,UAAW,cAAU,GAC1CyiC,GAAW,CACPvB,YAAQ,CAAE0F,KAAM,EAAGC,MAAO,EAAGC,IAAK,EAAGC,OAAQ,GAAK0gc,KACnD6yB,EAAkBt6f,UAAW,cAAU,GAC1CyiC,GAAW,CACPvB,YAAQ,CAAEo/C,KAAM,OAAQ7G,MAAO,GAAI4lS,UAAW,SAAUljG,WAAY,SAAUziM,WAAY,YAAckH,KACzG05a,EAAkBt6f,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,OACVw5d,EAAkBt6f,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,YAAS,SACVw5d,EAAkBt6f,UAAW,4BAAwB,GACjDs6f,EArD4B,CAsDrCnxd,KAKEoxd,GAAgC,SAAUt3d,GAE1C,SAASs3d,IACL,OAAkB,OAAXt3d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAgC/D,OAlCAq+B,GAAUo4d,EAAgBt3d,GAI1BR,GAAW,CACP3B,aAAS,IACVy5d,EAAev6f,UAAW,eAAW,GACxCyiC,GAAW,CACP3B,YAAS,WACVy5d,EAAev6f,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,KACVy5d,EAAev6f,UAAW,gBAAY,GACzCyiC,GAAW,CACP3B,YAAS,IACVy5d,EAAev6f,UAAW,cAAU,GACvCyiC,GAAW,CACP3B,YAAS,IACVy5d,EAAev6f,UAAW,aAAS,GACtCyiC,GAAW,CACPvB,YAAQ,CAAEsS,MAAO,EAAGimC,MAAO,MAAQymR,KACpCq6J,EAAev6f,UAAW,cAAU,GACvCyiC,GAAW,CACPvB,YAAQ,CAAE7b,EAAG,EAAGjL,EAAG,GAAKmtd,KACzBgzB,EAAev6f,UAAW,cAAU,GACvCyiC,GAAW,CACP3B,YAAS,OACVy5d,EAAev6f,UAAW,YAAQ,GACrCyiC,GAAW,CACP3B,YAAS,IACVy5d,EAAev6f,UAAW,eAAW,GACxCyiC,GAAW,CACPvB,YAAQ,GAAIo5d,KACbC,EAAev6f,UAAW,iBAAa,GACnCu6f,EAnCyB,CAoClCpxd,KAOEu2C,GACA,WAEI57E,KAAK02f,gBAAkB,KAEvB12f,KAAK41f,QAAU,KAEf51f,KAAK22f,WAAa,KAElB32f,KAAK21f,WAAa,KAElB31f,KAAKsuS,UAAW,EAEhBtuS,KAAKg3Z,OAAS,CACV95V,SAAS,GAObl9D,KAAK42f,gBAAiB,GAQ1BC,GAA2B,SAAU13d,GAErC,SAAS03d,IACL,IAAI92f,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAGhE,OADAD,EAAMipa,SAAW,IAAIiiE,GAAK,EAAG,EAAG,EAAG,GAC5Blre,EAuDX,OA5DAs+B,GAAUw4d,EAAW13d,GAQrB03d,EAAU36f,UAAU46f,cAAgB,SAAU7yB,EAAQyO,GAC9CzO,IACAjke,KAAK27E,OAASsoZ,EAAOtoZ,QAEzB+2Z,EAAMqkB,gBAAgBC,eAAeh3f,MACrC0ye,EAAMukB,sBAEVt4d,GAAW,CACP3B,YAAS,KACV65d,EAAU36f,UAAW,YAAQ,GAChCyiC,GAAW,CACP3B,YAAS,MACV65d,EAAU36f,UAAW,iBAAa,GACrCyiC,GAAW,CACP3B,aAAS,IACV65d,EAAU36f,UAAW,eAAW,GACnCyiC,GAAW,CACP3B,YAAS,WACV65d,EAAU36f,UAAW,YAAQ,GAChCyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,cAAU,GAClCyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,uBAAmB,GAC3CyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,wBAAoB,GAC5CyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,uBAAmB,GAC3CyiC,GAAW,CACPvB,YAAQ,GAAI8B,KACb23d,EAAU36f,UAAW,iBAAa,GACrCyiC,GAAW,CACPvB,YAAQ,GAAIq5d,KACbI,EAAU36f,UAAW,cAAU,GAClCyiC,GAAW,CACP3B,aAAS,IACV65d,EAAU36f,UAAW,qBAAiB,GACzCyiC,GAAW,CACP3B,YAAS,OACV65d,EAAU36f,UAAW,iBAAa,GACrCyiC,GAAW,CACP3B,YAAS,KACV65d,EAAU36f,UAAW,YAAQ,GAChCyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,aAAS,GACjCyiC,GAAW,CACP3B,YAAS,eACV65d,EAAU36f,UAAW,mBAAe,GAChC26f,EA7DoB,CA8D7Bxxd,KAKE6xd,GAAqC,SAAU/3d,GAE/C,SAAS+3d,IACL,OAAkB,OAAX/3d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAU64d,EAAqB/3d,GAI/BR,GAAW,CACP3B,YAAS,IACVk6d,EAAoBh7f,UAAW,aAAS,GAC3CyiC,GAAW,CACP3B,YAAS,KACVk6d,EAAoBh7f,UAAW,cAAU,GAC5CyiC,GAAW,CACP3B,YAAS,OACVk6d,EAAoBh7f,UAAW,aAAS,GAC3CyiC,GAAW,CACP3B,YAAS,IACVk6d,EAAoBh7f,UAAW,eAAW,GACtCg7f,EAjB8B,CAkBvC7xd,KAEE8xd,GAA8B,SAAUh4d,GAExC,SAASg4d,IACL,OAAkB,OAAXh4d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAU84d,EAAch4d,GAIxBR,GAAW,CACP3B,YAAS,OACVm6d,EAAaj7f,UAAW,aAAS,GACpCyiC,GAAW,CACP3B,YAAS,OACVm6d,EAAaj7f,UAAW,aAAS,GACpCyiC,GAAW,CACP3B,YAAS,MACVm6d,EAAaj7f,UAAW,iBAAa,GACjCi7f,EAduB,CAehC9xd,KAOE+xd,GAAkC,SAAUj4d,GAE5C,SAASi4d,IACL,OAAkB,OAAXj4d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAyC/D,OA3CAq+B,GAAU+4d,EAAkBj4d,GAI5BR,GAAW,CACP3B,aAAS,IACVo6d,EAAiBl7f,UAAW,eAAW,GAC1CyiC,GAAW,CACP3B,YAAS,UACVo6d,EAAiBl7f,UAAW,YAAQ,GACvCyiC,GAAW,CACP3B,YAAS,SACVo6d,EAAiBl7f,UAAW,iBAAa,GAC5CyiC,GAAW,CACP3B,YAAS,aACVo6d,EAAiBl7f,UAAW,YAAQ,GACvCyiC,GAAW,CACP3B,YAAS,OACVo6d,EAAiBl7f,UAAW,aAAS,GACxCyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,qBAAiB,GAChDyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,aAAS,GACxCyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,uBAAmB,GAClDyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,6BAAyB,GACxDyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,6BAAyB,GACxDyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,+BAA2B,GAC1DyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,+BAA2B,GAC1DyiC,GAAW,CACPvB,YAAQ,KAAM85d,KACfE,EAAiBl7f,UAAW,mBAAe,GACvCk7f,EA5C2B,CA6CpC/xd,KAKEgyd,GAA4B,SAAUl4d,GAEtC,SAASk4d,IAOL,IAAIt3f,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQhE,OANAD,EAAM4tI,gBAAkB,GAExB5tI,EAAMipa,SAAW,IAAIiiE,GAAK,EAAG,EAAG,EAAG,GAEnClre,EAAM4mf,WAAa,KACnB5mf,EAAMu3f,kBAAmB,EAClBv3f,EA8cX,OA9dAs+B,GAAUg5d,EAAYl4d,GAuBtBk4d,EAAWn7f,UAAUq7f,gBAAkB,WACnC,IAAI36f,EAAI,EACJw6C,EAAQ,IAAIwkC,GACZ47a,EAASx3f,gBAAgBy3f,IAAwB,cAAdz3f,KAAKmL,KAAwB,IAAMnL,KAAKw3f,MAC3EE,EAAkB13f,gBAAgBy3f,IAAUz3f,KAAKg3Z,OAAO4tF,UAAUxqe,KAClEpa,KAAKg3Z,OAAO4tF,UAAUxqe,KAAO,GAC7Bpa,gBAAgBy3f,KACG,cAAdz3f,KAAKmL,MAAsC,cAAdnL,KAAKmL,OACnCnL,KAAK2tI,gBAAkB3tI,KAAK0ye,MAAMmL,GAAiB79e,KAAKmL,MAAQ,gBAC5Dwsf,oBAAoBr5f,YAAO,GAAI0B,KAAK2tI,gBAAiB,MAAM,GAAO3tI,OAEpD,WAAlBA,KAAKq4G,WACLr4G,KAAK2tI,gBH3Ud,SAAc9yH,EAAMu0D,EAAQmkP,GAC/B,IAAIqkM,EAAWt5f,YAAO,GAAIuc,EAAM,MAgBhC,OAfA+8e,EAAS/1a,MAAK,SAAU94E,EAAGpB,GAGvB,IAFA,IAAInJ,EAAQ,EACRC,EAAS,EACJ7B,EAAI,EAAGA,EAAIwyE,EAAOvyE,OAAQD,IAC/B4B,GAASuK,EAAEqmE,EAAOxyE,IAClB6B,GAAUkJ,EAAEynE,EAAOxyE,IAEvB,OAAM22T,GAAgB/0T,EAAQC,GAAY80T,GAAgB/0T,EAAQC,GACtD,EAEHD,IAAUC,EACR,EAEJ,KAEJm5f,EG0T4B/1a,CAAKvjF,YAAO,GAAI0B,KAAK2tI,gBAAiB,MAAM,GAAO,CAAC3tI,KAAK63f,QAAQ,GACtE,SAAd73f,KAAKmL,OACLnL,KAAK2tI,gBAAkB3tI,KAAK0ye,MAAMolB,mBAAmBC,6BAA6B/3f,KAAK2tI,gBAAiB3tI,QAGhHA,KAAKs3f,iBAAmBt3f,KAAKmL,KAAKhN,QAAQ,WAAa,GAAK6B,KAAKmL,KAAKhN,QAAQ,QAAU,GACjF6B,KAAKmL,KAAKhN,QAAQ,cAAgB,GAE7C,IAAIwD,EAAMzD,OAAOjB,KAAK+C,KAAK2tI,iBAAiB9wI,OAQ5C,GAPAmD,KAAK27E,OAAS,GACd37E,KAAK+6Y,KAAOniY,IACZ5Y,KAAKi7Y,MAAQriY,IACb5Y,KAAKg7Y,KAAOpiY,IACZ5Y,KAAKk7Y,MAAQtiY,IACb5Y,KAAKg4f,SAAWp/e,IAChB5Y,KAAKi4f,gBACwB,aAAzBj4f,KAAK6/H,MAAMg0W,UACX,KAAOj3e,EAAI+E,GACPy1C,EAAQp3C,KAAKk4f,UAAUt7f,EAAG86f,EAAiBF,GAC3Cx3f,KAAKm4f,iBAAiB/gd,EAAOx6C,EAAGw6C,EAAM71B,GACtCvhB,KAAKo4f,SAAShhd,EAAOx6C,GACrBoD,KAAKq4f,cAAcjhd,EAAOx6C,GAC1BA,SAGH,GAAIoD,KAAK6/H,MAAMg0W,UAAU11e,QAAQ,aAAe,EAOjD,IANA,IAAI8L,EAAS,CACTiB,SAAU,OACVC,KAAM,YAENiJ,EAAapU,KAAK0ye,MAAMzua,KAAKnoD,cAAc7R,GAC3C6jf,EAAgB9tf,KAAK0ye,MAAMzua,KAAKtoD,cAAc1R,GAC3CrN,EAAI+E,GACPy1C,EAAQp3C,KAAKk4f,UAAUt7f,EAAG86f,EAAiBF,GACtCp6f,YAAkBg6C,EAAM71B,IAAkB,KAAZ61B,EAAM71B,EAcrC61B,EAAM8lB,SAAU,GAbhB9lB,EAAM71B,EAAI,IAAIpY,KAAKuwD,KAAS1+C,MAAM2xE,UAAU,CAAE1nF,IAAKmyC,EAAM71B,IAAKtc,KACjC,aAAzBjF,KAAK6/H,MAAMg0W,UACXz8b,EAAMmhT,OAASpvV,KAAK6R,MAAMo8B,EAAM71B,EAAEpU,YAIlCnN,KAAK0ye,MAAMpze,SAAWU,KAAKm4f,iBAAiB/gd,EAAOx6C,EAAGuM,KAAK6R,MAAMo8B,EAAM71B,EAAEpU,YAAYA,YACjFnN,KAAKm4f,iBAAiB/gd,EAAOx6C,EAAGuM,KAAK6R,MAAM5G,EAAW05e,EAAc12c,EAAM71B,KAAKpU,YAEvFnN,KAAKo4f,SAAShhd,EAAOx6C,GACrBoD,KAAKq4f,cAAcjhd,EAAOx6C,IAK9BA,SAIJ,KAAOA,EAAI+E,IACPy1C,EAAQp3C,KAAKk4f,UAAUt7f,EAAG86f,EAAiBF,IACrCj/J,OAASnhT,EAAM71B,EACrBvhB,KAAKo4f,SAAShhd,EAAOx6C,GACrBoD,KAAKq4f,cAAcjhd,EAAOx6C,GAC1BA,IAGR,GAAIoD,gBAAgBy3f,GAChB,GAAIz3f,KAAKmL,KAAKhN,QAAQ,WAAa,GAAM6B,KAAK00e,SAASv2e,QAAQ,WAAa,GAAkC,eAA7B6B,KAAK0ye,MAAMyC,cAAiC,CACzH,IAAImjB,EAAUt4f,KAAKmL,KAAKhN,QAAQ,SAAW,GAAK6B,KAAK00e,SAASv2e,QAAQ,SAAW,EACjF6B,KAAK0ye,MAAM,UAAY4lB,EAAS,OAAS,IAAM,gBAAgBC,gBAAgBv4f,WAE1EA,KAAKmL,KAAKhN,QAAQ,cAAgB,IAAM6B,KAAK6/H,MAAM8zW,SAAW3ze,KAAK6/H,MAAM4zW,UAC9Ezze,KAAK0ye,MAA6B,sBAAE8lB,mBAAmBx4f,OAInEq3f,EAAWn7f,UAAUk8f,SAAW,SAAUhhd,EAAOx6C,GAC7Cw6C,EAAM58B,MAAQ5d,EACdw6C,EAAMohT,OAASphT,EAAM9gC,EAErBtW,KAAK+6Y,KAAOxzY,KAAK6L,IAAIpT,KAAK+6Y,KAAM3jW,EAAMmhT,QACtCv4V,KAAKi7Y,KAAO1zY,KAAK8L,IAAIrT,KAAKi7Y,KAAM7jW,EAAMmhT,QACtCv4V,KAAKq2f,MAAMz0f,KAAKw1C,EAAMmhT,SAG1B8+J,EAAWn7f,UAAUg8f,UAAY,SAAUt7f,EAAG86f,EAAiBF,GAC3Dx3f,KAAK27E,OAAO/+E,GAAK,IAAIg/E,GACrB,IAAIxkC,EAAQp3C,KAAK27E,OAAO/+E,GACpB+wI,EAAkB3tI,KAAK2tI,gBACvB8qX,EAAgCz4f,KAAK04f,sBAAwBr8f,IAAW2D,KAAK24f,eAuBjF,OAtBAvhd,EAAM71B,EAAIk3e,EAA8BjB,EAAO7pX,EAAgB/wI,IAC/Dw6C,EAAM6yI,KAAOwuU,EAA8Bz4f,KAAKiqL,KAAMt8C,EAAgB/wI,IACtEw6C,EAAM4yI,IAAMyuU,EAA8Bz4f,KAAKgqL,IAAKr8C,EAAgB/wI,IACpEw6C,EAAMr1C,KAAO02f,EAA8Bz4f,KAAK+B,KAAM4rI,EAAgB/wI,IACtEw6C,EAAM/0C,MAAQo2f,EAA8Bz4f,KAAKqC,MAAOsrI,EAAgB/wI,IACxEw6C,EAAMwhd,OAASH,EAA8Bz4f,KAAK44f,OAAQjrX,EAAgB/wI,IAC1Ew6C,EAAMyhd,SAAWJ,EAA8Bz4f,KAAK84f,kBAAmBnrX,EAAgB/wI,IACnFoD,gBAAgBy3f,KAChBrgd,EAAM9gC,EAAImif,EAA8Bz4f,KAAK63f,MAAOlqX,EAAgB/wI,IACpEw6C,EAAMolC,KAAOi8a,EAA8Bz4f,KAAKw8E,KAAMmxD,EAAgB/wI,IACtEw6C,EAAM7kC,KAAOkmf,EAA8Bf,EAAiB/pX,EAAgB/wI,IAC5Ew6C,EAAMg7D,QAAUqmZ,EAA8Bz4f,KAAK+4f,mBAAoBprX,EAAgB/wI,IACnFoD,KAAK0ye,MAAMsmB,oBAAsBh5f,KAAK0ye,MAAMsmB,mBAAmBn8f,OAAS,GAAKmD,KAAKi5f,6BAC9Ej5f,KAAKome,WAAapme,KAAKome,UAAUvpe,OAAS,EAC1Cu6C,EAAM8hd,WAAaT,EAA8Bz4f,KAAKome,UAAWz4V,EAAgB/wI,IAGjFw6C,EAAM8hd,WAAaT,EAA8Bz4f,KAAK63f,MAAOlqX,EAAgB/wI,IAEjFw6C,EAAMyhd,SAAW74f,KAAKm5f,kBAAkB/hd,EAAMyhd,SAAUzhd,EAAM8hd,cAG/D9hd,GAEXigd,EAAWn7f,UAAU+8f,yBAA2B,WAC5C,OAAwC,IAApCj5f,KAAK0ye,MAAM4c,cAAczyf,SACM,WAA9BmD,KAAK0ye,MAAMzO,OAAO,GAAG94d,MAAmD,QAA9BnL,KAAK0ye,MAAMzO,OAAO,GAAG94d,MAC9B,YAA9BnL,KAAK0ye,MAAMzO,OAAO,GAAG94d,MAAoD,WAA9BnL,KAAK0ye,MAAMzO,OAAO,GAAG94d,OAK5Eksf,EAAWn7f,UAAUi9f,kBAAoB,SAAUC,EAAW58f,GAC1D,IAAIm5E,EAAQyjb,EACZ,GAAI58f,GAASwD,KAAK0ye,MAAMsmB,oBAAsBh5f,KAAK0ye,MAAMsmB,mBAAmBn8f,OAAS,EACjF,IAAK,IAAImB,EAAK,EAAGuF,EAAKvD,KAAK0ye,MAAMsmB,mBAAoBh7f,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvE,IAAIq7f,EAAW91f,EAAGvF,GACdxB,GAAS68f,EAASn8f,OAASV,GAAS68f,EAAS1gf,MAEzCg9D,EADA0jb,EAASj1O,OAAOvnR,OAAS,EACjBytf,GAAgB+O,EAAU78f,GAG1B68f,EAASj1O,OAAO,IAKxC,OAAOzuM,GAEX0hb,EAAWn7f,UAAUy8f,eAAiB,SAAUW,EAAaz+e,GACzD,OAAOA,EAAKy+e,IAOhBjC,EAAWn7f,UAAUm8f,cAAgB,SAAUjhd,EAAOx6C,GAClD,IAAKoD,KAAKu5f,eAAenid,GAErB,OADAA,EAAM8lB,SAAU,EACT,KAIX,OAFA9lB,EAAM1oB,SAAU,EACL1uB,gBAAgBy3f,IAAUrgd,EAAMw/c,eAAiB52f,KAAKw5f,mBAAmBr8e,KAAO,QAEvF,IAAK,OACDi6B,EAAM8lB,SAAU,EACZl9D,gBAAgBy3f,IAAUz3f,KAAK2mf,WAAWxof,QAAQ,YAAc,GAChEi5C,EAAM6yI,KAAO7yI,EAAM4yI,IAAM,EACrBhqL,KAAK2mf,WAAWxof,QAAQ,qBAAuB,IAC/Ci5C,EAAMr1C,KAAOq1C,EAAM/0C,MAAQ,IAI/B+0C,EAAM9gC,EAAI8gC,EAAMohT,OAASx4V,KAAKy5f,MAAM78f,GAAK,EAE7C,MACJ,IAAK,UACGoD,gBAAgBy3f,KACZz3f,KAAK2mf,WAAWxof,QAAQ,YAAc,GACtCi5C,EAAM6yI,KAAQ7sL,YAAkBg6C,EAAM6yI,OAAS79K,OAAOgrC,EAAM6yI,MAASjqL,KAAK05f,WAAW15f,KAAKiqL,KAAMrtL,GAAKw6C,EAAM6yI,KAC3G7yI,EAAM4yI,IAAO5sL,YAAkBg6C,EAAM4yI,MAAQ59K,OAAOgrC,EAAM4yI,KAAQhqL,KAAK05f,WAAW15f,KAAKgqL,IAAKptL,GAAKw6C,EAAM4yI,IACnGhqL,KAAK2mf,WAAWxof,QAAQ,qBAAuB,IAC/Ci5C,EAAMr1C,KAAQ3E,YAAkBg6C,EAAMr1C,OAASqK,OAAOgrC,EAAMr1C,MAAS/B,KAAK05f,WAAW15f,KAAK+B,KAAMnF,GAAKw6C,EAAMr1C,KAC3Gq1C,EAAM/0C,MAASjF,YAAkBg6C,EAAM/0C,QAAU+J,OAAOgrC,EAAM/0C,OAAUrC,KAAK05f,WAAW15f,KAAKqC,MAAOzF,GAChGw6C,EAAM/0C,QAId+0C,EAAM9gC,EAAI8gC,EAAMohT,OAASx4V,KAAKy5f,MAAM78f,GAAKoD,KAAK05f,WAAW15f,KAAK63f,MAAOj7f,IAG7Ew6C,EAAM8lB,SAAU,EAChB,MACJ,IAAK,OACL,IAAK,MACDl9D,KAAKy5f,MAAM78f,GAAK,KAChBw6C,EAAM8lB,SAAU,IAI5Bm6b,EAAWn7f,UAAUq9f,eAAiB,SAAUnid,GAC5C,IACIuid,EADAxuf,EAAOnL,gBAAgBy3f,GAASz3f,KAAK2mf,WAAa,mBAElDiT,EAAW55f,KAAK2/H,MAAM8zW,QACtBomB,EAAW75f,KAAK2/H,MAAMg0W,QAC1B,OAAQxoe,GACJ,IAAK,KACD,MAAiC,eAA7BnL,KAAK0ye,MAAMyC,iBAAqC/3e,YAAkBw8f,IAAaxid,EAAMohT,OAASohK,IAC5Fx8f,YAAkBy8f,IAAazid,EAAMohT,OAASqhK,IAChDzid,EAAMw/c,gBAAiB,GAChB,IAEX52f,KAAK85f,YAAY1id,EAAMohT,QACvBx4V,KAAKy5f,MAAM73f,KAAKw1C,EAAMohT,QAClBx4V,gBAAgBy3f,IAAwB,WAAdz3f,KAAKmL,OAC/BnL,KAAKg4f,QAAUzwf,KAAK8L,IAAIrT,KAAKg4f,QAAU56f,YAAkBg6C,EAAMolC,OAASpwE,OAAOgrC,EAAMolC,MAASx8E,KAAKg4f,QAC7F5gd,EAAMolC,OAETp/E,YAAkBg6C,EAAM71B,IAAOnkB,YAAkBg6C,EAAM9gC,IAAMlK,OAAOgrC,EAAM9gC,IACrF,IAAK,UAED,OADAtW,KAAK+5f,cAAc3id,EAAM6yI,KAAM7yI,EAAM4yI,KAC9B5sL,YAAkBg6C,EAAM71B,IAAOnkB,YAAkBg6C,EAAM4yI,MAAQ59K,OAAOgrC,EAAM4yI,MAC9E5sL,YAAkBg6C,EAAM6yI,OAAS79K,OAAOgrC,EAAM6yI,MACvD,IAAK,mBAED,OADAjqL,KAAK+5f,cAAc3id,EAAM6yI,KAAM7yI,EAAM4yI,KAC9B5sL,YAAkBg6C,EAAM71B,IAAOnkB,YAAkBg6C,EAAM4yI,MAAQ59K,OAAOgrC,EAAM4yI,MAC9E5sL,YAAkBg6C,EAAMr1C,OAASqK,OAAOgrC,EAAMr1C,OAAW3E,YAAkBg6C,EAAM/0C,QAAU+J,OAAOgrC,EAAM/0C,QACrGjF,YAAkBg6C,EAAM6yI,OAAS79K,OAAOgrC,EAAM6yI,MAC1D,IAAK,UASD,OARA0vU,GAAWvid,EAAM9gC,GAAK,CAAC,OAAO4a,QAAO,SAAU10B,GAC3C,OAAQY,YAAkBZ,KAAW4P,MAAM5P,MAC5CqlF,MAAK,SAAU94E,EAAGpB,GACjB,OAAOoB,EAAIpB,KAEfyvC,EAAM9gC,EAAIqjf,EACV35f,KAAKg7Y,KAAOzzY,KAAK6L,IAAIpT,KAAKg7Y,KAAMzzY,KAAK6L,IAAIhX,MAAMmL,KAAMoyf,IACrD35f,KAAKk7Y,KAAO3zY,KAAK8L,IAAIrT,KAAKk7Y,KAAM3zY,KAAK8L,IAAIjX,MAAMmL,KAAMoyf,KAC7CA,EAAQ98f,SAM5Bw6f,EAAWn7f,UAAU49f,YAAc,SAAUthK,GACzC,IAEIwhK,EAFApK,EAAsC,gBAAzB5vf,KAAK2/H,MAAMk0W,WAAwD,gBAAzB7ze,KAAK6/H,MAAMg0W,UAClEomB,EAAkBzhK,EAAS,EAG3BwhK,EADAh6f,KAAKs3f,mBAAqBpjB,GAASl0e,KAAK2/H,OACzBiwX,GAAuBqK,EAAVzhK,EAAqC,EAGpDA,EAEjBx4V,KAAKg7Y,KAAO40G,EACRrof,KAAK6L,IAAIpT,KAAKg7Y,KAAO59Y,YAAkB48f,IAAe5tf,MAAM4tf,IAA+B,IAAfA,EAAqBh6f,KAAKg7Y,KAAOg/G,GAC7Gzyf,KAAK6L,IAAIpT,KAAKg7Y,KAAO59Y,YAAkB48f,IAAe5tf,MAAM4tf,GAAeh6f,KAAKg7Y,KAAOg/G,GAC3Fh6f,KAAKk7Y,KAAO3zY,KAAK8L,IAAIrT,KAAKk7Y,KAAO99Y,YAAkBo7V,IAAWpsV,MAAMosV,GAAWx4V,KAAKk7Y,KAAO1iD,IAK/F6+J,EAAWn7f,UAAU69f,cAAgB,SAAU9vU,EAAMD,GACjDhqL,KAAKg7Y,KAAOzzY,KAAK6L,IAAIpT,KAAKg7Y,KAAMzzY,KAAK6L,IAAKhW,YAAkB4sL,IAAQ59K,MAAM49K,GAAQhqL,KAAKg7Y,KAAOhxN,EAAM5sL,YAAkB6sL,IAAS79K,MAAM69K,GAASjqL,KAAKg7Y,KAAO/wN,IAC1JjqL,KAAKk7Y,KAAO3zY,KAAK8L,IAAIrT,KAAKk7Y,KAAM3zY,KAAK8L,IAAKjW,YAAkB4sL,IAAQ59K,MAAM49K,GAAQhqL,KAAKk7Y,KAAOlxN,EAAM5sL,YAAkB6sL,IAAS79K,MAAM69K,GAASjqL,KAAKk7Y,KAAOjxN,KAO9JotU,EAAWn7f,UAAU+7f,cAAgB,WACjC,IAAI9sf,EACJ,GAAInL,gBAAgBy3f,GAAQ,CACxB,IAAI9Q,EAA0C,eAA7B3mf,KAAK0ye,MAAMyC,cAAiCn1e,KAAK00e,SAAW10e,KAAKmL,KAClF,GAAIw7e,EACA,OAAQA,GACJ,IAAK,cACL,IAAK,YACL,IAAK,OACDx7e,EAAO,UACP,MACJ,IAAK,gBACL,IAAK,SACDA,EAAO,mBACP,MACJ,IAAK,gBACDA,EAAO,UACP,MACJ,QACIA,EAAO,MAIvBnL,KAAK2mf,WAAax7e,GAGtBksf,EAAWn7f,UAAUi8f,iBAAmB,SAAU/gd,EAAO58B,EAAOuhe,GAC5D,IAAK/7e,KAAK0ye,MAAMtgY,QAAQi7X,SACfrte,KAAKk9D,QACN,OAAO,KAGVl9D,KAAK6/H,MAAMq6X,WAQZl6f,KAAK6/H,MAAM8rJ,OAAOnxQ,GAASxa,KAAK6/H,MAAM8rJ,OAAOnxQ,IAAU,KAAOuhe,EAC1D/7e,KAAK6/H,MAAM8rJ,OAAO/pR,KAAKm6e,GAC3B3kc,EAAMmhT,OAAS/9U,IATXxa,KAAK6/H,MAAM8rJ,OAAOxtR,QAAQ49e,GAAU,GACpC/7e,KAAK6/H,MAAM8rJ,OAAO/pR,KAAKm6e,GAE3B3kc,EAAMmhT,OAASv4V,KAAK6/H,MAAM8rJ,OAAOxtR,QAAQ49e,KAYjDsb,EAAWn7f,UAAUw9f,WAAa,SAAUl1d,EAAQ5nC,EAAGie,GAInD,YAHa,IAATA,IAAmBA,EAAO7a,KAAK2tI,mBACpB9yH,EAAKje,EAAI,IAAMie,EAAKje,EAAI,GAAG4nC,IAAgB,IAC/C3pB,EAAKje,EAAI,IAAMie,EAAKje,EAAI,GAAG4nC,IAAgB,IAC3B,GAQ/B6yd,EAAWn7f,UAAU0qS,mBAAqB,SAAU8rM,GAChD,IAEI5wa,EAFA/hE,EAAQC,KACZA,KAAK0ye,MAAQA,GAIT5wa,EADA4wa,EAAe,UACFx0e,OAAOjB,KAAK+C,KAAK8hE,YAAYjlE,OAASmD,KAAK8hE,WAAa4wa,EAAM5wa,WAG9D9hE,KAAK8hE,YAAc4wa,EAAM5wa,sBAEdC,MAAgB3kE,YAAkB4C,KAAK2hE,OAIjD3hE,KAAKm6f,WAAWp9Z,QAAQ/8F,KAAKm6f,WAAWhnc,gBAAgBgtC,iBAC9DvlF,MAAK,SAAU/Z,GAAK,OAAOd,EAAM2nS,mBAAmB7mS,MAJ5Db,KAAK0nS,mBAAmB,CAAE/oS,OAAQmjE,EAAYhH,MAAOgH,EAAWjlE,SAAU,IAMlFw6f,EAAWn7f,UAAUwrS,mBAAqB,SAAU7mS,EAAGu5f,GAInD,QAHqB,IAAjBA,IAA2BA,GAAe,GAC9Cp6f,KAAK2tI,gBAAkB9sI,EAAEi6D,MAAQj6D,EAAElC,OAAS,GAC5CqB,KAAK0ye,MAAMn6c,wBAAyB,EAChCv4B,gBAAgBy3f,GAAQ,CACpBz3f,KAAK0ye,MAAMoJ,aACX97e,KAAK0ye,MAAMoJ,WAAW7X,OAAOjke,KAAKwa,OAAO6/e,UAAYr6f,KAAK2tI,iBAE9D,IAAIo/V,EAAW,CACX3yd,KAAM28d,GAAc9S,OAAQjke,KAAM6a,KAAM7a,KAAK2tI,gBAAiByuD,KAAMp8L,KAAK64f,UAE7E74f,KAAK0ye,MAAM3od,QAAQgtd,GAAchK,GACjC/se,KAAK64f,SAAW9rB,EAAS3wS,KACzBp8L,KAAK2tI,gBAAkBo/V,EAASlyd,MAEhC7a,KAAK0ye,MAAMoJ,YAAgB97e,gBAAgBy3f,KAC3Cz3f,KAAK2tI,gBAAkB3tI,KAAK0ye,MAAMoJ,WAAWwe,gBAAgBt6f,KAAK0ye,MAAMoJ,WAAW7X,OAAO,GAAGo2B,UAAWr6f,KAAK0ye,MAAMoJ,WAAW7X,OAAO,GAAGuzB,QAE5Ix3f,KAAKu3f,kBACLv3f,KAAKg6Y,aAAen5Y,EAAEi6D,MACtB96D,KAAKu6f,aAAaH,GAClBp6f,KAAK2tI,gBAAkB,MAE3B0pX,EAAWn7f,UAAUq+f,aAAe,SAAUH,GAC1C,IAAI1nB,EAAQ1ye,KAAK0ye,MAKjB,GAJI1ye,gBAAgBy3f,KAChB/kB,EAAMukB,oBAAsBmD,EAAe,EAAI,GAEnD1nB,EAAM8nB,0BAA0Bx6f,MAC5BA,gBAAgBy3f,IAA4B,cAAlBz3f,KAAKq4G,SAC/B,IAAK,IAAIr6G,EAAK,EAAGuF,EAAKvD,KAAKy6f,WAAYz8f,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzCuF,EAAGvF,GACT84f,cAAc92f,KAAM0ye,GAIlCA,EAAM4c,cAAczyf,SAAY61e,EAAMukB,qBACtCvkB,EAAMgoB,eACNhoB,EAAM3od,QAAQ,SAAU,CAAE2od,MAAOA,EAAMpze,SAAW,GAAKoze,IACnD1ye,KAAK0ye,MAAMoJ,YAAc97e,KAAK0ye,MAAMoJ,WAAW6e,gBAC/C36f,KAAK0ye,MAAMoJ,WAAW6e,eAAgB,EACtC36f,KAAK0ye,MAAMoJ,WAAW8e,iCAG1B56f,gBAAgBy3f,KAChB/kB,EAAMukB,oBAAsBmD,EAAe,EAAI,IAGvDz7d,GAAW,CACP3B,YAAS,KACVq6d,EAAWn7f,UAAW,aAAS,GAClCyiC,GAAW,CACP3B,YAAS,KACVq6d,EAAWn7f,UAAW,iBAAa,GACtCyiC,GAAW,CACP3B,YAAS,KACVq6d,EAAWn7f,UAAW,YAAQ,GACjCyiC,GAAW,CACP3B,YAAS,KACVq6d,EAAWn7f,UAAW,WAAO,GAChCyiC,GAAW,CACP3B,YAAS,KACVq6d,EAAWn7f,UAAW,YAAQ,GACjCyiC,GAAW,CACP3B,YAAS,KACVq6d,EAAWn7f,UAAW,aAAS,GAClCyiC,GAAW,CACP3B,YAAS,KACVq6d,EAAWn7f,UAAW,cAAU,GACnCyiC,GAAW,CACP3B,YAAS,KACVq6d,EAAWn7f,UAAW,yBAAqB,GAC9CyiC,GAAW,CACP3B,aAAS,IACVq6d,EAAWn7f,UAAW,eAAW,GACpCyiC,GAAW,CACP3B,YAAS,OACVq6d,EAAWn7f,UAAW,iBAAa,GACtCyiC,GAAW,CACP3B,YAAS,OACVq6d,EAAWn7f,UAAW,iBAAa,GACtCyiC,GAAW,CACPvB,YAAQ,KAAM8B,KACfm4d,EAAWn7f,UAAW,iBAAa,GACtCyiC,GAAW,CACP3B,YAAS,OACVq6d,EAAWn7f,UAAW,YAAQ,GACjCyiC,GAAW,CACP3B,YAAS,IACVq6d,EAAWn7f,UAAW,aAAS,GAClCyiC,GAAW,CACP3B,YAAS,MACVq6d,EAAWn7f,UAAW,iBAAa,GACtCyiC,GAAW,CACP3B,YAAS,KACVq6d,EAAWn7f,UAAW,kBAAc,GACvCyiC,GAAW,CACP3B,eACDq6d,EAAWn7f,UAAW,aAAS,GAClCyiC,GAAW,CACPtB,YAAW,GAAI85d,KAChBE,EAAWn7f,UAAW,gBAAY,GACrCyiC,GAAW,CACP3B,YAAS,MACVq6d,EAAWn7f,UAAW,mBAAe,GACxCyiC,GAAW,CACP3B,aAAS,IACVq6d,EAAWn7f,UAAW,6BAAyB,GAC3Cm7f,EA/dqB,CAge9Bhyd,KAOEoyd,GAAwB,SAAUt4d,GAGlC,SAASs4d,EAAOl3f,EAAQytB,EAAUkN,EAAc78B,GAC5C,IAAI0B,EAAQo/B,EAAO79B,KAAKtB,KAAMO,EAAQytB,EAAUkN,EAAc78B,IAAY2B,KAU1E,OATAD,EAAMk3f,mBAAqB,EAE3Bl3f,EAAMs4G,SAAW,SAEjBt4G,EAAMi1f,cAAe,EAErBj1f,EAAM86f,WAAa,GAEnB96f,EAAM+6f,kBAAmB,EAClB/6f,EAieX,OA9eAs+B,GAAUo5d,EAAQt4d,GAqBlBs4d,EAAOv7f,UAAU6+f,iBAAmB,WAChC,GAA6B,aAAzB/6f,KAAK6/H,MAAMg0W,UACX,OAAO,KAEX7ze,KAAK6/H,MAAM8rJ,OAAS,GACpB,IAAK,IAAI3tR,EAAK,EAAGuF,EAAKvD,KAAK6/H,MAAMokW,OAAQjme,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC3D,IAAIw9C,EAAOj4C,EAAGvF,GACd,GAAIw9C,EAAK0hB,SAA6B,cAAlB1hB,EAAK68D,SAA0B,CAC/C78D,EAAKu/V,KAAOniY,IACZ4iC,EAAKy/V,MAAQriY,IACb,IAAK,IAAImc,EAAK,EAAGI,EAAKqmB,EAAKmgC,OAAQ5mD,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACrD,IAAIqiB,EAAQjiB,EAAGJ,GACfymB,EAAK28c,iBAAiB/gd,EAAOA,EAAM58B,MAAO48B,EAAM71B,GAChDi6B,EAAKu/V,KAAOxzY,KAAK6L,IAAIooC,EAAKu/V,KAAM3jW,EAAMmhT,QACtC/8S,EAAKy/V,KAAO1zY,KAAK8L,IAAImoC,EAAKy/V,KAAM7jW,EAAMmhT,YAWtDk/J,EAAOv7f,UAAU8+f,qBAAuB,SAAUvhc,EAAQ7O,EAAKqwc,GAE3D,IADA,IAAItZ,EAAmB,GACd3jf,EAAK,EAAGuF,EAAKqnD,EAAI2sB,KAAMv5E,EAAKuF,EAAG1G,OAAQmB,IAE5C,IADA,IACS+2B,EAAK,EAAGI,EADH5xB,EAAGvF,GACaime,OAAQlvc,EAAKI,EAAGt4B,OAAQk4B,IAElD,IADA,IAAImme,EAAY/le,EAAGJ,GACVO,EAAK,EAAGk3F,EAAK/yD,EAAO8d,KAAMjiD,EAAKk3F,EAAG3vH,OAAQy4B,IAE/C,IADA,IACS26H,EAAK,EAAGC,EADN1jC,EAAGl3F,GACa2uc,OAAQh0U,EAAKC,EAAGrzJ,OAAQozJ,IAAM,CACrD,IAAIg0U,EAAS/zU,EAAGD,GACZg0U,IAAWi3B,GAAaj3B,EAAO/ma,SAAWl9D,KAAKm7f,kBAAkBl3B,EAAQg3B,IACzEtZ,EAAiB//e,KAAKqie,GAM1C,OAAO0d,GAQX8V,EAAOv7f,UAAUi/f,kBAAoB,SAAUl3B,EAAQg3B,GACnD,IAAI9vf,EAAQ84d,EAAO94d,KAAMsM,cACzB,OAAoC,IAA5BtM,EAAKhN,QAAQ,YAA6C,IAAzBgN,EAAKhN,QAAQ,SAAgD,IAA/BgN,EAAKhN,QAAQ,eAC7C,IAAnCgN,EAAKhN,QAAQ,mBAAuD,IAA5BgN,EAAKhN,QAAQ,YAAgD,IAA5BgN,EAAKhN,QAAQ,YAC5D,IAA1BgN,EAAKhN,QAAQ,UAAyD,IAAvC8le,EAAOyQ,SAASv2e,QAAQ,YACxB,IAA/BgN,EAAKhN,QAAQ,eAA0D,IAAnCgN,EAAKhN,QAAQ,kBAA2B88f,GAQpFxD,EAAOv7f,UAAUk/f,sBAAwB,SAAUC,EAAe3oB,GAC9D,IAAK,IAAI10e,EAAK,EAAGuF,EAAKmve,EAAM34a,QAAS/7D,EAAKuF,EAAG1G,OAAQmB,IAEjD,IADA,IAAIs9f,EAAa/3f,EAAGvF,GACX+2B,EAAK,EAAGI,EAAKu9c,EAAM5pa,KAAM/zC,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACpD,IAAIymB,EAAOrmB,EAAGJ,GACd/0B,KAAKu7f,wBAAwBv7f,KAAKg7f,qBAAqBM,EAAY9/c,GAAM,GAAO6/c,KAI5F5D,EAAOv7f,UAAUq/f,wBAA0B,SAAU5Z,EAAkB0Z,GACnE,IAAI3R,EACA7C,EAIA2U,EACAC,EACAj/f,EALAm9f,EAAU,GACV+B,EAAe,GACfC,EAAe,GAIfC,EAAc,GACdP,IACAO,EAAc57f,KAAK67f,gBAAgBla,IAKvC,IAHA,IAAIma,EAAgB,GAChBlV,EAAgB,GAChBjL,EAAgB,GACX39e,EAAK,EAAG+9f,EAAqBpa,EAAkB3jf,EAAK+9f,EAAmBl/f,OAAQmB,IAAM,CAC1F,IAAIime,EAAS83B,EAAmB/9f,GAChC,IAAyC,IAArCime,EAAO94d,KAAKhN,QAAQ,cAAgE,IAAzC8le,EAAOyQ,SAASv2e,QAAQ,aACnC,eAA/B8le,EAAOyO,MAAMyC,cAAkC,CAG3CumB,EAFLF,GAA0D,IAAzCv3B,EAAO94d,KAAKhN,QAAQ,gBAA0B,mBACjB,IAAzC8le,EAAO94d,KAAKhN,QAAQ,gBAA0B,kBAAoB8le,EAAOu3B,iBAE1EE,EAAaF,GAAiB,GAC9BG,EAAaH,GAAiB,IAElC7B,EAAU11B,EAAOw1B,MACjB/P,EAAc,GACd7C,EAAY,GACZiV,EAAcl6f,KAAKqie,GAEnB,IAAK,IAAI97d,EAAI,EAAGioe,GADhBuL,EAAgBoC,GAAiB9Z,IACYpne,OAAQsL,EAAIioe,EAAcjoe,IACnEszf,EAAY,EACZj/f,GAASm9f,EAAQxxf,QAC4CnM,IAAzD0/f,EAAaF,GAAe7f,EAAcxze,GAAGowV,UAC7CmjK,EAAaF,GAAe7f,EAAcxze,GAAGowV,QAAU,QAEEv8V,IAAzD2/f,EAAaH,GAAe7f,EAAcxze,GAAGowV,UAC7CojK,EAAaH,GAAe7f,EAAcxze,GAAGowV,QAAU,GAEvD8iK,GACA7+f,EAAQA,EAAQo/f,EAAYJ,GAAe7f,EAAcxze,GAAGowV,QAAU,IACtE/7V,EAAS4P,MAAM5P,GAAiB,EAARA,EACxBm/e,EAAcxze,GAAGwuf,YAAen6f,EAAMqX,QAAQ,IAG9C+ye,EAAcz+e,GAAKy+e,EAAcz+e,GAAKy+e,EAAcz+e,GAAKZ,KAAKgH,IAAI/R,GAAS+K,KAAKgH,IAAI/R,GAEpFA,GAAS,GACTi/f,EAAYC,EAAaF,GAAe7f,EAAcxze,GAAGowV,QACzDmjK,EAAaF,GAAe7f,EAAcxze,GAAGowV,SAAW/7V,IAGxDi/f,EAAYE,EAAaH,GAAe7f,EAAcxze,GAAGowV,QACzDojK,EAAaH,GAAe7f,EAAcxze,GAAGowV,SAAW/7V,GAE5Dktf,EAAY9nf,KAAK65f,GACjB5U,EAAUjlf,KAAKpF,EAAQi/f,GACnBJ,GAAkBxU,EAAU1+e,GAAK,MACjC0+e,EAAU1+e,GAAK,KAGvB87d,EAAO2iB,cAAgB,IAAI6C,GAAYC,EAAa7C,GACpD,IAAI+I,EAAuC,gBAA3B3rB,EAAOtkW,MAAMk0W,UACzBmoB,GAAsD,IAAnC/3B,EAAO94d,KAAKhN,QAAQ,YAAoD,IAAhC8le,EAAO94d,KAAKhN,QAAQ,OACnF8le,EAAOjpF,KAAO40G,GAAaoM,GAAmB/3B,EAAOjpF,KAAO,EAAIipF,EAAOjpF,KAAOzzY,KAAK6L,IAAIhX,MAAM,EAAGstf,GAChGzlB,EAAO/oF,KAAO3zY,KAAK8L,IAAIjX,MAAM,EAAGyqf,GAC5B5iB,EAAOjpF,KAAOzzY,KAAK6L,IAAIhX,MAAM,EAAGyqf,KAChC5iB,EAAOjpF,KAAQqgH,GAAkB,IAC7BzL,GAAaoM,GAAmB/3B,EAAOjpF,KAAO,EAAIipF,EAAOjpF,KAAOzzY,KAAK6L,IAAIhX,MAAM,EAAGyqf,IAEtF5iB,EAAO/oF,KAAO3zY,KAAK8L,IAAIjX,MAAM,EAAGstf,KAChCzlB,EAAO/oF,KAAO,IAI1Bl7Y,KAAKi8f,yBAAyBH,EAAelV,EAAeyU,IAEhE5D,EAAOv7f,UAAU+/f,yBAA2B,SAAUH,EAAev/b,EAAQ8+b,GACzE,IAAK,IAAIr9f,EAAK,EAAGk+f,EAAkBJ,EAAe99f,EAAKk+f,EAAgBr/f,OAAQmB,IAAM,CACjF,IAAIw9C,EAAO0gd,EAAgBl+f,GAC3B,GAAIq9f,EACA,OAAO,KAEX,IAAK,IAAI93f,EAAK,EAAGwxB,EAAKgpd,GAAiBvic,GAAOj4C,EAAKwxB,EAAGl4B,OAAQ0G,IAAM,CAChE,IAAI6zC,EAAQriB,EAAGxxB,GACf6zC,EAAMu/c,WAAapvf,KAAKgH,MAAM6oC,EAAM9gC,EAAIimD,EAAOnlB,EAAM58B,OAAS,KAAK3G,QAAQ,OAIvF4jf,EAAOv7f,UAAU2/f,gBAAkB,SAAUla,GAIzC,IAHA,IACI6Z,EADAI,EAAc,GAEdjgB,EAAgB,GACX39e,EAAK,EAAGm+f,EAAqBxa,EAAkB3jf,EAAKm+f,EAAmBt/f,OAAQmB,IAAM,CAC1F,IAAIime,EAASk4B,EAAmBn+f,GAGhC,GAFAime,EAAOtkW,MAAM82W,YAA6C,IAAhCxS,EAAO94d,KAAKhN,QAAQ,OAC9Cw9e,EAAgBoC,GAAiB9Z,IACQ,IAArCA,EAAO94d,KAAKhN,QAAQ,YAAoB,CAGnCy9f,EAFLJ,GAA0D,IAAzCv3B,EAAO94d,KAAKhN,QAAQ,gBAA0B,mBACjB,IAAzC8le,EAAO94d,KAAKhN,QAAQ,gBAA0B,kBAAoB8le,EAAOu3B,iBAE1EI,EAAYJ,GAAiB,IAEjC,IAAK,IAAIrzf,EAAI,EAAGioe,EAAeuL,EAAc9+e,OAAQsL,EAAIioe,EAAcjoe,SACPnM,IAAxD4/f,EAAYJ,GAAe7f,EAAcxze,GAAGowV,UAC5CqjK,EAAYJ,GAAe7f,EAAcxze,GAAGowV,QAAU,GAEtD0rI,EAAOw1B,MAAMtxf,GAAK,EAClByzf,EAAYJ,GAAe7f,EAAcxze,GAAGowV,SAAW0rI,EAAOw1B,MAAMtxf,GAGpEyzf,EAAYJ,GAAe7f,EAAcxze,GAAGowV,SAAW0rI,EAAOw1B,MAAMtxf,IAKpF,OAAOyzf,GAOXnE,EAAOv7f,UAAUkggB,aAAe,SAAU1pB,GACtC,IAAIiU,EAAa9I,GAAiB79e,KAAKmL,MAEnCune,GADJiU,EAAaA,EAAWjqf,QAAQ,MAAO,KAChB,kBACG,cAAlBsD,KAAKq4G,UAA8C,cAAlBr4G,KAAKq4G,UACtCr4G,KAAKq8f,qBAAqB3pB,GAE9B1ye,KAAK27e,cAAgBoC,GAAiB/9e,MACtC0ye,EAAMiU,EAAa,gBAAgBj3d,OAAO1vB,KAAMA,KAAK6/H,MAAO7/H,KAAK2/H,MAAO+yW,EAAM6B,qBACxD,cAAlBv0e,KAAKq4G,WACDr4G,KAAKkie,SAAShla,SACdl9D,KAAK0ye,MAAM4pB,eAAe5se,OAAO1vB,MAEjCA,KAAKg3Z,OAAO4tF,UAAU1nb,SACtBw1a,EAAMwS,gBAAgBx1d,OAAO1vB,KAAMA,KAAK0ye,MAAO1ye,KAAKg3Z,OAAO4tF,WAE/D5kf,KAAKu8f,oBAAoB7pB,EAAM8pB,eAAgB9pB,IAE9C1ye,KAAK0ye,MAAMoW,cACZ9of,KAAKy8f,iBAAiB/pB,EAAOiU,EAAY3mf,KAAKkie,SAAUlie,KAAKg3Z,OAAQh3Z,KAAKg3Z,OAAO4tF,aAU7F6S,EAAOv7f,UAAUmggB,qBAAuB,SAAU3pB,GAC9C,GAAsB,cAAlB1ye,KAAKq4G,SAA0B,CAC/B,IAAI4oD,EAAYyxU,EAAM1xe,QAAQyY,GAE1Bijf,EAAe18f,KAAKg3Z,OAAOruP,OAAOj5H,MAAQ,EAAI,EAC9ChgB,EAAwB,YAAd1vB,KAAKmL,MAAoC,WAAdnL,KAAKmL,KAC1Cune,EAAMiqB,YAAcjqB,EAAMtsM,SAC1B5rR,OAAuBxe,IAAfgE,KAAKwa,MAAsBxa,KAAKq4G,SAAWr4G,KAAKwa,MACxDk3d,OAAe,EACfwjB,OAAc,EACd5of,OAAU,EASd,GARkB,YAAdtM,KAAKmL,MACLume,EAAgBgB,EAAMmb,aAAala,SAAWjB,EAAMkO,aAAajN,QAAW,GAAK3ze,KAAKg3Z,OAAOrnX,OAAS+sd,GAAgB,EACtHxH,EAAexiB,EAAMmb,aAAala,SAAWjB,EAAMkO,aAAajN,QAAW,GAAK3ze,KAAKg3Z,OAAOtnX,MAAQgtd,GAAgB,IAGpHhrB,EAAe,EACfwjB,EAAc,GAEU,eAAxBxiB,EAAMyC,cAAgC,CACtC,IAAIynB,EAAoC,YAAlB58f,KAAK00e,SAA0Bnte,KAAK8L,IAAIrT,KAAKg3Z,OAAOtnX,MAAO1vC,KAAKg3Z,OAAOrnX,QAAU,EACvGrjC,EAAU,IAAIu9e,GAAa5oV,EAAY,wBAA0BzmJ,EAAO,cAAe,CAAEk1B,MAAO,EAAGimC,MAAO,QAAU,EAAG31E,KAAKgpa,SAASt5X,MAAQ,EAAI1vC,KAAKgpa,SAASznZ,EAAGvhB,KAAKgpa,SAASr5X,OAAS,EAAI3vC,KAAKgpa,SAAS1yZ,EAAGo8d,EAAMxvc,OAAS05d,GAC7N58f,KAAK68f,gBAAkBha,GAAkBnQ,EAAMwK,OAAQ5we,EAASojB,EAAQ,6BAGxEpjB,EAAU,IAAIq9e,GAAW1oV,EAAY,wBAA0BzmJ,EAAO,cAAe,CAAEk1B,MAAO,EAAGimC,MAAO,QAAU,EAAG,CACjHp0D,GAAI2ze,EAAa5+e,GAAIo7d,EACrBhic,MAAO1vC,KAAKgpa,SAASt5X,MAAsB,EAAdwld,EAC7Bvld,OAAQ3vC,KAAKgpa,SAASr5X,OAAwB,EAAf+hc,IAEnC1xe,KAAK68f,gBAAkBha,GAAkBnQ,EAAMwK,OAAQ5we,EAASojB,GAEpE,IAAI8T,EAAoC,cAAxBkvc,EAAMyC,cAAgC,aAAen1e,KAAKgpa,SAASznZ,EAAI,IAAOvhB,KAAKgpa,SAAS1yZ,EAAK,IAAM,GACvHtW,KAAK88f,cAAgB,KACrB98f,KAAK+8f,cAAgBrte,EAAOu2c,YAAY,CACpC,GAAMhlU,EAAY,cAAgBzmJ,EAClC,UAAagpB,EACb,YAAa,QAAUy9H,EAAY,wBAA0BzmJ,EAAQ,MAEpExa,KAAK0ye,MAAMoW,cAA8B,YAAd9of,KAAKmL,MAAoC,WAAdnL,KAAKmL,MAC5DnL,KAAK+8f,cAAc/6f,YAAYhC,KAAK68f,mBAUhDpF,EAAOv7f,UAAUqggB,oBAAsB,SAAUv7f,EAAS0xe,GACtD,IAAI17E,EAASh3Z,KAAKg3Z,OACd4tF,EAAY5tF,EAAO4tF,UACnB1H,EAASxK,EAAMwK,OACG,cAAlBl9e,KAAKq4G,WACLwtY,GAAmBnT,EAAMoW,aAAcpW,EAAM8pB,eAAgBx8f,KAAK+8f,cAAe7f,GAClEl9e,KAAKkie,SACPhla,UACmB,eAAxBw1a,EAAMyC,cACN0Q,GAAmBnT,EAAMoW,aAAcpW,EAAM8pB,eAAgBx8f,KAAK+8f,cAAe7f,GAGjF2I,GAAmBnT,EAAMoW,aAAcpW,EAAM8pB,eAAgBx8f,KAAKg9f,gBAAiB9f,IAGzE,YAAdl9e,KAAKmL,MAAoC,WAAdnL,KAAKmL,MAChC06e,IAAmB,EAAOnT,EAAM8pB,eAAgBx8f,KAAK+8f,cAAe7f,IAGxElmF,EAAO95V,UAAoC,cAAxBw1a,EAAMyC,eACL,YAAlBn1e,KAAK00e,UAAmD,eAAxBhC,EAAMyC,gBAAkD,YAAdn1e,KAAKmL,MACnE,WAAdnL,KAAKmL,MAAmC,WAAdnL,KAAKmL,MAAmC,SAAdnL,KAAKmL,MAAiC,kBAAdnL,KAAKmL,MAA4BnL,KAAK88f,eAClHjX,GAAmBnT,EAAMoW,aAAcpW,EAAM8pB,eAAgBx8f,KAAK88f,cAAe5f,GAEjF0H,EAAU1nb,SAAWl9D,KAAKkwe,cAC1B2V,GAAmBnT,EAAMoW,aAAcpW,EAAMuqB,kBAAmBj9f,KAAKk9f,aAAchgB,GACnF2I,GAAmBnT,EAAMoW,aAAcpW,EAAMuqB,kBAAmBj9f,KAAKkwe,YAAagN,KAEjFxK,EAAMoW,cAAgBpW,EAAMuqB,kBAAkBnlZ,iBAC/C46X,EAAM8pB,eAAex6f,YAAY0we,EAAMuqB,oBAS/CxF,EAAOv7f,UAAUuggB,iBAAmB,SAAU/pB,EAAOvne,EAAM+2d,EAAUlrE,EAAQ4tF,GACrE5kf,KAAKogC,UAAUo0G,QAAUk+V,EAAMyqB,gBAC/BzqB,EAAMvne,EAAO,gBAAgBiyf,YAAYp9f,MACrCkie,EAAShla,SACTw1a,EAAM4pB,eAAee,oBAAoBr9f,MAEzCg3Z,EAAO95V,SACPw1a,EAAM4qB,aAAaC,kBAAkBv9f,MAGrC4kf,EAAU1nb,SAAiC,SAAtB72C,IAAQ2B,KAAK5N,OAAoBiM,IAAQiD,MAC9Dopd,EAAMwS,gBAAgBsY,qBAAqBx9f,QASvDy3f,EAAOv7f,UAAUuhgB,cAAgB,SAAUrmd,EAAOu+B,GAE9C,OADAA,EAAQv+B,EAAMyhd,UAAYljb,EACnBv+B,EAAM1oB,SAAW1uB,KAAKw5f,mBAAmBp9T,MAAiBzmH,GAOrE8hb,EAAOv7f,UAAUwhgB,eAAiB,SAAUtmd,EAAOuxH,GAG/C,OAFAA,EAAOj5H,MAAQ0H,EAAM1oB,SAAW1uB,KAAKw5f,mBAAmB7wV,OAAOj5H,OAAyBi5H,EAAOj5H,MAC/Fi5H,EAAOhzF,MAAQv+B,EAAM1oB,SAAW1uB,KAAKw5f,mBAAmB7wV,OAAOhzF,OAAyBgzF,EAAOhzF,MACxFgzF,GAEXhqI,GAAW,CACP3B,YAAS,KACVy6d,EAAOv7f,UAAW,YAAQ,GAC7ByiC,GAAW,CACP3B,YAAS,KACVy6d,EAAOv7f,UAAW,aAAS,GAC9ByiC,GAAW,CACP3B,YAAS,SACVy6d,EAAOv7f,UAAW,gBAAY,GACjCyiC,GAAW,CACP3B,aAAS,IACVy6d,EAAOv7f,UAAW,gBAAY,GACjCyiC,GAAW,CACP3B,YAAS,YACVy6d,EAAOv7f,UAAW,qBAAiB,GACtCyiC,GAAW,CACP3B,YAAS,YACVy6d,EAAOv7f,UAAW,qBAAiB,GACtCyiC,GAAW,CACP3B,aAAS,IACVy6d,EAAOv7f,UAAW,0BAAsB,GAC3CyiC,GAAW,CACP3B,YAAS,KACVy6d,EAAOv7f,UAAW,YAAQ,GAC7ByiC,GAAW,CACP3B,YAAS,OACVy6d,EAAOv7f,UAAW,mBAAe,GACpCyiC,GAAW,CACP3B,aAAS,IACVy6d,EAAOv7f,UAAW,8BAA0B,GAC/CyiC,GAAW,CACP3B,YAAS,KACVy6d,EAAOv7f,UAAW,qBAAiB,GACtCyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,cAAejmC,MAAO,GAAK0sT,KAC7Cq7J,EAAOv7f,UAAW,cAAU,GAC/ByiC,GAAW,CACP3B,YAAS,IACVy6d,EAAOv7f,UAAW,eAAW,GAChCyiC,GAAW,CACP3B,YAAS,IACVy6d,EAAOv7f,UAAW,cAAU,GAC/ByiC,GAAW,CACP3B,YAAS,SACVy6d,EAAOv7f,UAAW,YAAQ,GAC7ByiC,GAAW,CACPvB,YAAQ,KAAMg6d,KACfK,EAAOv7f,UAAW,gBAAY,GACjCyiC,GAAW,CACPvB,YAAQ,KAAMq5d,KACfgB,EAAOv7f,UAAW,cAAU,GAC/ByiC,GAAW,CACPvB,YAAQ,GAAI+mc,KACbszB,EAAOv7f,UAAW,oBAAgB,GACrCyiC,GAAW,CACPtB,YAAW,GAAIw5d,KAChBY,EAAOv7f,UAAW,kBAAc,GACnCyiC,GAAW,CACP3B,aAAS,IACVy6d,EAAOv7f,UAAW,qBAAiB,GACtCyiC,GAAW,CACP3B,YAAS,KACVy6d,EAAOv7f,UAAW,qBAAiB,GACtCyiC,GAAW,CACP3B,YAAS,KACVy6d,EAAOv7f,UAAW,0BAAsB,GAC3CyiC,GAAW,CACP3B,YAAS,eACVy6d,EAAOv7f,UAAW,mBAAe,GACpCyiC,GAAW,CACP3B,YAAS,KACVy6d,EAAOv7f,UAAW,sBAAkB,GACvCyiC,GAAW,CACP3B,YAAS,OACVy6d,EAAOv7f,UAAW,sBAAkB,GACvCyiC,GAAW,CACP3B,YAAS,OACVy6d,EAAOv7f,UAAW,uBAAmB,GACxCyiC,GAAW,CACP3B,YAAS,OACVy6d,EAAOv7f,UAAW,yBAAqB,GAC1CyiC,GAAW,CACP3B,YAAS,IACVy6d,EAAOv7f,UAAW,iBAAa,GAClCyiC,GAAW,CACP3B,YAAS,IACVy6d,EAAOv7f,UAAW,iBAAa,GAClCyiC,GAAW,CACP3B,YAAS,YACVy6d,EAAOv7f,UAAW,kBAAc,GACnCyiC,GAAW,CACP3B,YAAS,KACVy6d,EAAOv7f,UAAW,6BAAyB,GAC9CyiC,GAAW,CACPvB,YAAQ,KAAM8mc,KACfuzB,EAAOv7f,UAAW,0BAAsB,GAC3CyiC,GAAW,CACP3B,aAAS,IACVy6d,EAAOv7f,UAAW,gBAAY,GACjCyiC,GAAW,CACP3B,YAAS,WACVy6d,EAAOv7f,UAAW,mBAAe,GACpCyiC,GAAW,CACP3B,YAAS,OACVy6d,EAAOv7f,UAAW,mBAAe,GACpCyiC,GAAW,CACP3B,YAAS,IACVy6d,EAAOv7f,UAAW,qBAAiB,GACtCyiC,GAAW,CACP3B,YAAS,YACVy6d,EAAOv7f,UAAW,yBAAqB,GAC1CyiC,GAAW,CACP3B,YAAS,YACVy6d,EAAOv7f,UAAW,wBAAoB,GACzCyiC,GAAW,CACP3B,eACDy6d,EAAOv7f,UAAW,8BAA0B,GAC/CyiC,GAAW,CACP3B,eACDy6d,EAAOv7f,UAAW,kBAAc,GACnCyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,QAASjmC,MAAO,GAAK8zb,KACvCi0B,EAAOv7f,UAAW,iBAAa,GAClCyiC,GAAW,CACPvB,YAAQ,KAAM0mc,KACf2zB,EAAOv7f,UAAW,oBAAgB,GAC9Bu7f,EA/eiB,CAgf1BJ,IC1xCEppZ,GAAsB,WAUtB,SAASA,EAAKnsC,EAAYH,GACtB3hE,KAAK2tJ,gBAAgB7rF,EAAYH,GAiDrC,OArCAssC,EAAK/xG,UAAUyxJ,gBAAkB,SAAU7rF,EAAYH,GACnD3hE,KAAK2+F,YAAc78B,aAAsBC,IAAcD,EAAa,IAAIC,IAAYD,GACpF9hE,KAAK2hE,MAAQA,aAAiBC,KAAQD,EAAQ,IAAIC,MAQtDqsC,EAAK/xG,UAAUi3D,cAAgB,WAE3B,OADYnzD,KAAK2hE,MAAM1iE,SAU3BgvG,EAAK/xG,UAAU6gG,QAAU,SAAU4ga,GAC/B,IAAI59f,EAAQC,KACZ,GAAIA,KAAK2+F,YAAYl8F,MAAO,CACxB,IAAIm7f,EAAwB,IAAIt1b,IAOhC,OANYtoE,KAAK2+F,YAAYl8F,MACvBmY,MAAK,WACP7a,EAAM4+F,YAAY9D,aAAa8ia,GAAW/if,MAAK,SAAUjc,GACrDi/f,EAAsB16e,QAAQvkB,SAEnCuc,OAAM,SAAUra,GAAK+8f,EAAsBz6e,OAAOtiB,MAC9C+8f,EAAsBjjf,QAG7B,OAAO3a,KAAK2+F,YAAY9D,aAAa8ia,IAGtC1vZ,EA5De,GCLtB5vE,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzCo/d,GAA+B,SAAU1+d,GAOzC,SAAS0+d,EAAcnrB,GACnB,IAAI3ye,EAAQo/B,EAAO79B,KAAKtB,KAAM0ye,IAAU1ye,KAExC,OADAD,EAAMkhK,UAAYyxU,EAAM1xe,QAAQyY,GACzB1Z,EAkLX,OA3LAs+B,GAAUw/d,EAAe1+d,GAczB0+d,EAAc3hgB,UAAUqtB,iBAAmB,WACnCvpB,KAAK0ye,MAAMv5c,cAGfn5B,KAAK0ye,MAAMp5d,GAAG+M,IAAQoC,eAAgBzoB,KAAK6pT,iBAAkB7pT,MAC7DA,KAAK0ye,MAAMp5d,GAAG+M,IAAQqC,cAAe1oB,KAAK89f,eAAgB99f,QAK9D69f,EAAc3hgB,UAAUytB,oBAAsB,WACtC3pB,KAAK0ye,MAAMv5c,cAGfn5B,KAAK0ye,MAAM74d,IAAIwM,IAAQoC,eAAgBzoB,KAAK6pT,kBAC5C7pT,KAAK0ye,MAAM74d,IAAIwM,IAAQqC,cAAe1oB,KAAK89f,kBAK/CD,EAAc3hgB,UAAU4hgB,eAAiB,WACrC,IAAIprB,EAAQ1ye,KAAK0ye,OACbA,EAAMzrd,SAAYyrd,EAAMqrB,UAAUvpX,QAAWx0I,KAAKqiF,WAAWqwZ,IAC7D1ye,KAAKg+f,YAAW,IAMxBH,EAAc3hgB,UAAU2tT,iBAAmB,WACvC,IAAI6oL,EAAQ1ye,KAAK0ye,MACXA,EAAMqrB,UAAUvpX,SAAWk+V,EAAMtgY,QAAQoiC,QAAck+V,EAAMzrd,UAAWyrd,EAAMurB,WAAej+f,KAAKqiF,WAAWqwZ,IAC/G1ye,KAAKg+f,YAAW,IAGxBH,EAAc3hgB,UAAU8hgB,WAAa,SAAUv0e,GAC3C,IAGI5O,EACA2oI,EACA06W,EACAj6B,EANAlke,EAAQC,KACR0ye,EAAQ1ye,KAAK0ye,MAMjB,GALA1ye,KAAK20f,cAAgB,GAKhBjiB,EAAMtgY,QAAQi7X,QAAWqF,EAAMtgY,QAAQoiC,OAgBvC,CACD,IAAK+sW,GAAa7O,EAAMoiB,OAAQpiB,EAAMqiB,OAAQriB,EAAMyrB,qBAAqBjW,gBACrE,OAAO,KAEX,GAAIxV,EAAMtgY,QAAQoiC,OAGd,IAFA,IAAI4pX,EAAoC,eAAxB1rB,EAAMyC,cAAiCn1e,KAAK+8F,UAAY,KACpEsha,EAAgBr+f,KAAKu2f,aAAav2f,KAAK0ye,MAAM4c,eACxCtxf,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIsggB,EAAc/6f,EAAGvF,GAChBsggB,EAAYC,eAA0C,cAAzBD,EAAYjmZ,WAGlB,cAAxBq6X,EAAMyC,eAAiCmpB,EAAYphc,QACnDriD,EAAO7a,KAAKs2f,YAAY5jB,EAAO4rB,EAAaD,GAEf,eAAxB3rB,EAAMyC,eAAkCmpB,EAAYphc,SAA+B,OAApBkhc,EAAUhnd,QAC9Ev8B,EAAO,IAAImve,GAAUsU,EAAY3ib,OAAOyib,EAAUhnd,MAAM58B,OAAQ8jf,IAEhEzjf,IACA7a,KAAK20f,cAAc/yf,KAAKiZ,GACxBA,EAAO,aAnCnBA,EAAO7a,KAAK+8F,UACZknY,EAASppd,EAAKopd,OACdzgV,EAAWxjJ,KAAK40f,eAAe,GAC/BsJ,EAAgBj6B,IAA4B,WAAhBA,EAAO94d,MAAyC,YAApB84d,EAAOyQ,UAA0C,YAAhBzQ,EAAO94d,MACzE,WAAhB84d,EAAO94d,MAAuC,SAAhB84d,EAAO94d,MAAqC,kBAAhB84d,EAAO94d,MAC/D84d,EAAOjtE,OAAO95V,SAAmC,IAAxB+ma,EAAOjtE,OAAOtnX,OAAwC,IAAzBu0b,EAAOjtE,OAAOrnX,QAC7E90B,EAAKove,UAAYjqf,KAAKiqf,UAClBpve,EAAKu8B,OAAS8md,KAAoB16W,GAAaA,EAASpsG,QAAUv8B,EAAKu8B,OACtEosG,GAAYA,EAASymW,UAAY,GAAKzmW,EAASymW,YAAcjqf,KAAKiqf,YACnEjqf,KAAK20f,cAAc/yf,KAAKiZ,GAExBA,EAAKu8B,OAAS8md,GAAiBxrB,EAAM8rB,kBACrCx+f,KAAK20f,cAAc/yf,KAAKiZ,GA4BhC,IAAIhe,EAASmD,KAAK40f,eAAe/3f,OACjC,GAAImD,KAAK20f,cAAc93f,OAAS,IACb,IAAXA,GAAgB61e,EAAM8rB,kBAAqB3hgB,EAAS,GAAKmD,KAAK40f,eAAe,GAAGx9c,QAAUp3C,KAAK20f,cAAc,GAAGv9c,OAAQ,CACpHp3C,KAAK40f,eAAe/3f,OAAS,GAC7BmD,KAAKy+f,0BAeT,IAbA,IAAI5/f,EAAU,SAAUsrS,IACfA,GAAUA,EAAO/yP,OAA4B,WAAhB6sb,EAAO94d,MACpB,SAAhB84d,EAAO94d,MAAqC,kBAAhB84d,EAAO94d,QACpCyrM,GAAU9sK,EAAO40d,eACjB50d,EAAO0hG,UAAW,EAClB2+J,EAAO/yP,MAAMs/c,gBAAgBjyf,KAAI,SAAUukC,EAAUxuB,GAC5C2vR,EAAO85L,OAAO+wB,eAAgB7qN,EAAO/yP,MAAM4/W,OAAO95V,SACnDn9D,EAAM4+f,cAAcx0N,EAAO85L,OAAQ95L,EAAO/yP,MAAOpO,EAAUxuB,QAKvEsvB,EAAS9pC,KACJ+0B,EAAK,EAAGI,EAAKn1B,KAAK20f,cAAe5/d,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAE5Dl2B,EADas2B,EAAGJ,IAGpB/0B,KAAK40f,eAAiBt2f,YAAO,GAAI0B,KAAK20f,cAAe,MAAM,GAG9DjiB,EAAMtgY,QAAQoiC,UAA0C,IAA9Bx0I,KAAK20f,cAAc93f,QAAgBmD,KAAKwrI,UAAc/hH,GAAUzpB,KAAKwrI,WAC/F+1W,GAAa7O,EAAMoiB,OAAQpiB,EAAMqiB,OAAQriB,EAAMyrB,qBAAqBjW,kBACrElof,KAAKwrI,UAAW,EAChBxrI,KAAK0+f,eAAiBt+f,YAAW,WAC7BL,EAAM0+f,4BACP,MAEPz+f,KAAK20f,cAAgB,IAEzBkJ,EAAc3hgB,UAAUyigB,cAAgB,SAAU16B,EAAQ7sb,EAAOpO,EAAUxuB,GACvE,IAAIw8Y,EAAS5/W,EAAM4/W,OACf4nG,EAAe36B,EAAOjtE,OACtBnK,EAAQmK,EAAOnK,OAAS+xG,EAAa/xG,MACzC,GAAc,SAAVA,EACA,OAAO,KAEX,IACIx+X,EADArtB,EAAUije,EAAO64B,eAAiB74B,EAAO84B,cAEzC/8f,KAAK0ye,MAAMmsB,iBAAgD,SAA7B7+f,KAAK0ye,MAAMosB,gBACzCzwe,EAAYruB,KAAK0ye,MAAMmsB,gBAAgBE,cAAc96B,IAErDjke,KAAK0ye,MAAMnjM,iBAAgD,SAA7BvvS,KAAK0ye,MAAM0iB,gBACzC/me,EAAYruB,KAAK0ye,MAAMnjM,gBAAgBwvN,cAAc96B,IAazD,IAXA,IAAI+6B,EAAWh/f,KAAKihK,UAAY,WAAagjU,EAAOzpd,MAAQ,UAAY48B,EAAM58B,MAAQ,cACjFA,GAAgB,IACjBgiE,EAAO,IAAIC,IAAMu6U,EAAOtnX,OAASkvd,EAAalvd,OAAS,GAAIsnX,EAAOrnX,QAAUivd,EAAajvd,QAAU,GACnGg5H,EAAUquP,EAAOruP,QAAUs7T,EAAOt7T,OAClCu1V,EAAiC,kBAAhBj6B,EAAO94d,MAA4C,WAAhB84d,EAAO94d,MAAqC,YAAhB84d,EAAO94d,KACvFgpM,EAAexrC,EAAOhzF,OAA0B,gBAAjBgzF,EAAOhzF,MAA2BgzF,EAAOhzF,MACxEqhV,EAAO56N,MAAQhlJ,EAAMyhd,WAAaqF,EAAgB9md,EAAMu+B,MAAQsuZ,EAAO40B,UACvEK,EAAa3R,GAAkBE,GAAetzS,IAC9C5pK,EAAcysX,EAAOruP,OAASquP,EAAOruP,OAAOj5H,MAAQkvd,EAAaj2V,OAAOj5H,MACxEgzb,EAAeuB,EAAOyO,MAAMrG,WAAW3J,cACvC,QAAUw2B,EAAWp6d,EAAI,IAAMo6d,EAAWp/P,EAAI,IAAMo/P,EAAWvxf,EAAI,QAC9D/K,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI0P,EAAU,IAAIq/d,GAAWqzB,EAAW,IAAMpigB,EAAGA,EAAKo6Z,EAAO56N,MAAQhlJ,EAAMu+B,QAAUuob,EAAgBj6B,EAAO40B,SAAW,WAAc,cAAetud,GAAe3tC,EAAI,EAAI,GAAIA,EAAIu3M,EAAcuuR,EAAe1rE,EAAOrzX,SAAWi7d,EAAaj7d,QAAU,KAAM,MAC3P/jB,EAAS0rd,GAAWtic,EAAU6jX,EAAOrwU,EAAMw6U,EAAOxkT,SAAUlmG,EAAS,EAAItM,KAAK0ye,MAAMiqB,YAAa14B,EAAOj7D,UAG5GppZ,EAAOgW,aAAa,QAAS,iBAC7B,IAAIqpe,GAAgD,IAAlCj+f,EAAQyY,GAAGtb,QAAQ,UAAmB,UAAY,GAChE+ggB,EAAe1+f,SAASuuB,eAAe/uB,KAAKihK,UAAY,WAAagjU,EAAOzpd,MAAQ,UACpF48B,EAAM58B,MAAQykf,GACA,KAAd5we,GAAqBjxB,YAAkBixB,IAAejxB,YAAkB8hgB,KACxEA,EAAa/id,aAAa,UAAa9tB,IAAc6we,EAAa/ve,aAAa,UAC/EvP,EAAOoW,UAAUjN,IAAIsF,GAEzBzO,EAAOgW,aAAa,YAAa50B,EAAQmuB,aAAa,cACtDvP,EAAOgW,aAAa,YAAa50B,EAAQmuB,aAAa,cACtDnvB,KAAK0ye,MAAMlG,UAAUxqe,YAAY4d,KAMzCi+e,EAAc3hgB,UAAUuigB,wBAA0B,WAE9C,IADA,IAAI3oe,EAAWt1B,SAASyuB,uBAAuB,iBACtCryB,EAAI,EAAG+E,EAAMm0B,EAASj5B,OAAQD,EAAI+E,EAAK/E,IAC5C6sB,aAAOqM,EAAS,IAEpB91B,KAAK40f,eAAiB,IAEnBiJ,EA5LwB,CA6LjCnJ,ICrNEr2d,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA2BzC0ge,GAAwB,SAAUhge,GAOlC,SAASgge,EAAOzsB,GACZ,IAAI3ye,EAAQo/B,EAAO79B,KAAKtB,KAAM0ye,IAAU1ye,KAExC,OADAD,EAAMwpB,mBACCxpB,EAsMX,OA/MAs+B,GAAU8ge,EAAQhge,GAiBlBgge,EAAOjjgB,UAAUwzB,OAAS,SAAUu0c,GAChC,IAAIlke,EAAQC,KACRk9e,EAASjZ,EAAOyO,MAAMwK,OAC1Bl9e,KAAKmB,cAAc8ie,EAAQiZ,GAU3B,IATA,IAAIr+e,EAAU,SAAUu4C,GAChBA,EAAM8lB,SAAW9lB,EAAMs/c,iBAAmBt/c,EAAMs/c,gBAAgB75f,QAChEu6C,EAAMs/c,gBAAgBjyf,KAAI,SAAUukC,EAAUxuB,GACd,SAAxBypd,EAAOjtE,OAAOnK,OACd9sZ,EAAMq/f,aAAan7B,EAAQ7sb,EAAOpO,EAAUxuB,EAAO0ie,OAK1Dl/e,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAEvDa,EADY0E,EAAGvF,MAIvBmhgB,EAAOjjgB,UAAUkjgB,aAAe,SAAUn7B,EAAQ7sb,EAAOpO,EAAUxuB,EAAO0ie,GACtE,IAOImiB,EACAC,EACAC,EACA9xB,EAVA1J,OAA+B/ne,IAAjBioe,EAAOzpd,MAAsBypd,EAAO5rX,SAAW4rX,EAAOzpd,MACpEw8Y,EAASitE,EAAOjtE,OAChBruP,EAAS,CACThzF,MAAOqhV,EAAOruP,OAAOhzF,MACrBjmC,MAAOsnX,EAAOruP,OAAOj5H,OAErBykK,EAAc6iN,EAAOruP,OAAOhzF,MAKhC3sC,EAASznB,EAAIynB,EAASznB,EAAIy1Y,EAAOhrY,OAAOzK,EACxCynB,EAAS1yB,EAAI0yB,EAAS1yB,EAAI0gZ,EAAOhrY,OAAO1V,EACxC,IAEIkpf,EAFAC,EAA4B,kBAAhBx7B,EAAO94d,KACnBixL,EAAO46N,EAAO56N,OAASqjU,EAAYrod,EAAMyhd,UAAY50B,EAAO40B,SAAW,WAEvEjld,EAAgB6rd,EN89BrB,SAAsB3pe,EAAUrc,GAEnC,IADA,IAAIzY,EACKpE,EAAI,EAAGgQ,EAAWkpB,EAASj5B,OAAQD,EAAIgQ,EAAUhQ,IAClDk5B,EAASl5B,GAAG6c,GAAGtb,QAAQsb,IAAO,IAC9BzY,EAAU80B,EAASl5B,IAI3B,OAAOoE,EMr+BC0+f,CAAaz7B,EAAO84B,cAAczue,WAAY,UAAY21c,EAAOzpd,MAAQ,UAAY48B,EAAM58B,OACzFypd,EAAO64B,cACbn0V,EAAOhzF,MAAQw+H,GAAe8vR,EAAOw5B,cAAcrmd,EAAO6sb,EAAO40B,UACjE,IAAImG,EAAWh/f,KAAKihK,UAAY,WAAa8iU,EAAc,UAAY3sb,EAAM58B,MAAQ,WAChFA,GAAgB,IACjBuyd,EAAW,CACXhqd,QAAQ,EAAO3I,KAAMy8d,GAAa5S,OAAQA,EAAQ7sb,MAAOA,EACzDglJ,KAAMhlJ,EAAM1oB,SAAWu1c,EAAOu1B,mBAAmBp9T,MAAgBA,EACjEzzB,OAAQ,CACJhzF,MAAuB,kBAAhBsuZ,EAAO94d,KACR/N,YAAkB+2M,IAAgC,gBAAhBA,EAChCwzS,GAAmBvrT,GAAO,IADuC+X,EAEnExrC,EAAOhzF,MACbjmC,MAAOi5H,EAAOj5H,OAElBC,OAAQqnX,EAAOrnX,OAAQD,MAAOsnX,EAAOtnX,MAAOm9W,MAAOmK,EAAOnK,OAQ9D,GANAkgF,EAASpkU,OAASs7T,EAAOy5B,eAAetmd,EAAO,CAAE1H,MAAOq9b,EAASpkU,OAAOj5H,MAAOimC,MAAOo3Z,EAASpkU,OAAOhzF,QACjGsuZ,EAAO+wB,cAAgC,kBAAhB/wB,EAAO94d,OAC/BnL,KAAK0ye,MAAM3od,QAAQ8sd,GAAa9J,GAChC31b,EAAMu+B,MAAQo3Z,EAAS3wS,MAE3BhlJ,EAAMu+B,MAAQo3Z,EAAS3wS,KAClB2wS,EAAShqd,OA8CVimB,EAAW,KACXoO,EAAM4/W,OAAS,CACX95V,SAAS,OAhDK,CAClB,IAAI5mD,OAAI,EAEJA,EADgB,cAAhB2td,EAAO94d,MAAwC,gBAAhB84d,EAAO94d,MAA8C,gBAApB84d,EAAOyQ,SACnEl6d,EAAQ48B,EAAM4yI,IAAM5yI,EAAM6yI,KAEzBw1U,EACDrod,EAAM4vc,SAASxse,GAGf48B,EAAM9gC,EAEd,IAAIqpf,EAAa5yB,EAAS31b,MAAM4/W,OAAO56N,MAAQ2wS,EAAS3wS,KACpDwjU,OAAe,EAQfA,EAPCxigB,YAAkB2ve,EAAS31b,MAAM4/W,OAAOruP,QAO1B,CAAEhzF,MAAOo3Z,EAASpkU,OAAOhzF,MAAOjmC,MAAOq9b,EAASpkU,OAAOj5H,OANvD,CACXimC,MAAOo3Z,EAAS31b,MAAM4/W,OAAOruP,OAAOhzF,OAASo3Z,EAASpkU,OAAOhzF,MAC7DjmC,MAAOq9b,EAAS31b,MAAM4/W,OAAOruP,OAAOj5H,OAASq9b,EAASpkU,OAAOj5H,OAMrE,IAAIwld,EAAcnoB,EAAS31b,MAAM4/W,OAAOtnX,OAASq9b,EAASr9b,MACtDgic,EAAe3E,EAAS31b,MAAM4/W,OAAOrnX,QAAUo9b,EAASp9b,OACxDkwd,EAAgB9yB,EAAS31b,MAAM4/W,OAAOrzX,SAAWqzX,EAAOrzX,QACxDm8d,EAAc/yB,EAAS31b,MAAM4/W,OAAOnK,OAASkgF,EAASlgF,MACtDkzG,EAAWhzB,EAAS31b,MAAM4/W,OAAOxkT,UAAYwkT,EAAOxkT,SACxDi7X,EAAc,IAAI9B,GAAWqzB,EAAUW,EAAYC,EAAalwd,MAAOkwd,EAAajqb,MAAOkqb,EAAe,YACnF7jgB,IAAlB43C,GAAiD,OAAlBA,GAA2B5zC,KAAK0ye,MAAMoW,gBAClE5L,GAAUr6e,GAAW4qe,EAAYh0d,MAEjC8lf,EAA6B,WAAhBO,EAA2B,IAAM,GAC9CT,EAAmB,CACf99e,IAHJi+e,EAAgB38f,GAAW4qe,EAAYh0d,KAGjB0V,aAAaowe,EAAa,KAAMjpf,GAAIkpf,EAAcrwe,aAAaowe,EAAa,MAElGD,EAAeE,EAAcrwe,aAAa,MAE9Cqwe,EAAgBl0B,GAAWtic,EAAU82d,EAAa,IAAIrjb,GAAKy4a,EAAaxjB,GAAequB,EAAUtyB,GAAar2b,EAAM71B,EAAEpU,WAAmBmJ,EAAEnJ,YAAYnN,KAAK0ye,MAAMtsM,SAAU69L,EAAOj7D,UACnL68E,GAAmB7lf,KAAK0ye,MAAMoW,aAAcl1c,EAAe4rd,EAAetiB,GAAQ,EAAMqiB,EAAa,IAAKA,EAAa,IAAKF,EAAkBC,GAAc,GAAO,EAAO,KAAMr7B,EAAOyO,MAAM5xc,WAEjMsW,EAAM4/W,OAAS,CACXruP,OAAQi3V,EAAcxjU,KAAMujU,EAAYhwd,OAAQ+hc,EAChDx0a,SAAS,EAAM2vV,MAAOizG,EAAapwd,MAAOwld,EAAa1iZ,SAAUutZ,KAU7EZ,EAAOjjgB,UAAUiF,cAAgB,SAAU8ie,EAAQiZ,GAC/C,IAAI8iB,EAMA1zf,EALA0qZ,EAASitE,EAAOjtE,OAEhB0lG,EAAe1lG,EAAOruP,OAAOj5H,MAAQ,EAAI,EACzChgB,EAASu0c,EAAOyO,MAAMiqB,YACtBnif,OAAyBxe,IAAjBioe,EAAOzpd,MAAsBypd,EAAO5rX,SAAW4rX,EAAOzpd,MAE9DgpB,EAA2C,cAA/Bygc,EAAOyO,MAAMyC,cAAgC,aAAelR,EAAOj7D,SAASznZ,EAAI,IAAO0id,EAAOj7D,SAAS1yZ,EAAK,IAAM,GAClI,GAAI0gZ,EAAO95V,QAAS,CAChB,IAAIw0a,GAAgB16E,EAAOrnX,OAAS+sd,GAAgB,EAChDxH,GAAel+F,EAAOtnX,MAAQgtd,GAAgB,EAoBlD,GAbIsD,EAN+B,cAA/B/7B,EAAOyO,MAAMyC,cAMI0N,GAAkB3F,EALnC5we,EAAU,IAAIq9e,GAAW3pf,KAAKihK,UAAY,wBAA0BzmJ,EAAO,cAAe,CAAEk1B,MAAO,EAAGimC,MAAO,QAAU,EAAG,CACtHp0D,GAAI2ze,EAAa5+e,GAAIo7d,EACrBhic,MAAOu0b,EAAOj7D,SAASt5X,MAAsB,EAAdwld,EAC/Bvld,OAAQs0b,EAAOj7D,SAASr5X,OAAwB,EAAf+hc,IAEehid,GAInCmzd,GAAkB3F,EADnC5we,EAAU,IAAIu9e,GAAa7pf,KAAKihK,UAAY,wBAA0BzmJ,EAAO,cAAe,CAAEk1B,MAAO,EAAGimC,MAAO,QAAU,EAAGsuZ,EAAOj7D,SAASt5X,MAAQ,EAAIu0b,EAAOj7D,SAASznZ,EAAG0id,EAAOj7D,SAASr5X,OAAS,EAAIs0b,EAAOj7D,SAAS1yZ,EAAG2td,EAAOyO,MAAMxvc,OAAS37B,KAAK8L,IAAIq+d,EAAcwjB,IACpNxle,EAAQ,wBAEhEpjB,EAAU,CACN,GAAMtM,KAAKihK,UAAY,cAAgBzmJ,EACvC,UAAagpB,EACb,YAAa,QAAUxjC,KAAKihK,UAAY,wBAA0BzmJ,EAAQ,KAE9Eypd,EAAO64B,cAAgBpte,EAAOu2c,YAAY35d,GAC1C23d,EAAO64B,cAAc96f,YAAYg+f,GAC7BhggB,KAAK0ye,MAAMoW,aACGtof,SAASuuB,eAAe/uB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,gBACtDzX,YAAYiie,EAAO64B,iBAIvCqC,EAAOjjgB,UAAU+jgB,iBAAmB,SAAUhK,EAAQhyB,GAClD,IAAI1id,EAAI00e,EAAO10e,EACXjL,EAAI2/e,EAAO3/e,EASf,OARI2td,EAAOyO,MAAM6B,qBACbj+d,GAAK2/e,EAAOtmd,OAAS,EACrBpuB,GAAK0id,EAAOtkW,MAAM27W,WAAa2a,EAAOvmd,MAAQ,IAG9Cp5B,GAAK2td,EAAOtkW,MAAM27W,WAAa,EAAI2a,EAAOtmd,OAC1CpuB,GAAK00e,EAAOvmd,MAAQ,GAEjB,CAAEnuB,EAAGA,EAAGjL,EAAGA,IAQtB6of,EAAOjjgB,UAAUqhgB,kBAAoB,SAAUt5B,GAC3C,GAAsB,YAAhBA,EAAO94d,MAAsC,WAAhB84d,EAAO94d,MAAqC,WAAhB84d,EAAO94d,MAAqC,SAAhB84d,EAAO94d,MAC9E,kBAAhB84d,EAAO94d,OAA4D,eAA/B84d,EAAOyO,MAAMyC,eAAuD,YAApBlR,EAAOyQ,UAM3F,IALA,IAAIwrB,EAAiBj8B,EAAO64B,cAAcxue,WACtCzuB,EAAQoke,EAAO7jc,UAAUvgC,MAAQoke,EAAO7jc,UAAUU,SAClDA,EAAWmjc,EAAOyO,MAAMytB,SAAWl8B,EAAOyO,MAAM5xc,SAAW,IAC3D34B,EAAI,EACJi4f,EAA6B,cAAhBn8B,EAAO94d,MAAwC,gBAAhB84d,EAAO94d,KAA0B,EAAI,EAC5EvO,EAAI,EAAGA,EAAIqne,EAAOtoZ,OAAO9+E,OAAQD,IACtC,GAAIqne,EAAOtoZ,OAAO/+E,GAAG85f,gBAAiB,CAClC,IAAKzyB,EAAOtoZ,OAAO/+E,GAAG85f,gBAAgB75f,SAAWqjgB,EAAe/3f,GAC5D,SAGJ,GADA+5e,GAAcge,EAAe/3f,GAAItI,EAAOihC,EAAUmjc,EAAQrne,EAAGqne,EAAOtoZ,OAAO/+E,GAAG85f,gBAAgB,IAAI,GAChF,IAAd0J,EAAiB,CACjB,IAAIC,EAAWrggB,KAAKiggB,iBAAiBh8B,EAAOtoZ,OAAO/+E,GAAGg5f,QAAQ,GAAI3xB,GAClEie,GAAcge,EAAe/3f,EAAI,GAAItI,EAAOihC,EAAUmjc,EAAQrne,EAAGyjgB,GAAU,GAE/El4f,GAAKi4f,IAKdjB,EAhNiB,CAiN1BtB,IC5OEx/d,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAe5Dwhe,GAA0B,SAAUnhe,GAEpC,SAASmhe,IACL,OAAkB,OAAXnhe,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAUiie,EAAUnhe,GAIpBR,GAAW,CACP3B,YAAS,IACVsje,EAASpkgB,UAAW,SAAK,GAC5ByiC,GAAW,CACP3B,YAAS,IACVsje,EAASpkgB,UAAW,SAAK,GACrBokgB,EAXmB,CAY5Bj7d,KAKEk7d,GAAgC,SAAUphe,GAE1C,SAASohe,IACL,OAAkB,OAAXphe,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAgF/D,OAlFAq+B,GAAUkie,EAAgBphe,GAI1BR,GAAW,CACP3B,aAAS,IACVuje,EAAerkgB,UAAW,eAAW,GACxCyiC,GAAW,CACP3B,YAAS,OACVuje,EAAerkgB,UAAW,cAAU,GACvCyiC,GAAW,CACP3B,YAAS,OACVuje,EAAerkgB,UAAW,aAAS,GACtCyiC,GAAW,CACPvB,YAAQ,CAAE7b,EAAG,EAAGjL,EAAG,GAAKgqf,KACzBC,EAAerkgB,UAAW,gBAAY,GACzCyiC,GAAW,CACP3B,YAAS,SACVuje,EAAerkgB,UAAW,gBAAY,GACzCyiC,GAAW,CACP3B,YAAS,WACVuje,EAAerkgB,UAAW,YAAQ,GACrCyiC,GAAW,CACP3B,YAAS,IACVuje,EAAerkgB,UAAW,eAAW,GACxCyiC,GAAW,CACP3B,YAAS,WACVuje,EAAerkgB,UAAW,iBAAa,GAC1CyiC,GAAW,CACPvB,YAAQ6gD,GAAMmlZ,gBAAiBtmZ,KAChCyjb,EAAerkgB,UAAW,iBAAa,GAC1CyiC,GAAW,CACP3B,YAAS,KACVuje,EAAerkgB,UAAW,mBAAe,GAC5CyiC,GAAW,CACP3B,YAAS,KACVuje,EAAerkgB,UAAW,kBAAc,GAC3CyiC,GAAW,CACPvB,YAAQ,GAAIg/T,KACbmkK,EAAerkgB,UAAW,cAAU,GACvCyiC,GAAW,CACPvB,YAAQ,CAAE0F,KAAM,EAAGC,MAAO,EAAGC,IAAK,EAAGC,OAAQ,GAAK0gc,KACnD48B,EAAerkgB,UAAW,cAAU,GACvCyiC,GAAW,CACPvB,YAAQ,CAAE0F,KAAM,EAAGC,MAAO,EAAGC,IAAK,EAAGC,OAAQ,GAAK2gc,KACnD28B,EAAerkgB,UAAW,wBAAoB,GACjDyiC,GAAW,CACP3B,YAAS,IACVuje,EAAerkgB,UAAW,oBAAgB,GAC7CyiC,GAAW,CACP3B,YAAS,gBACVuje,EAAerkgB,UAAW,kBAAc,GAC3CyiC,GAAW,CACP3B,YAAS,IACVuje,EAAerkgB,UAAW,eAAW,GACxCyiC,GAAW,CACP3B,aAAS,IACVuje,EAAerkgB,UAAW,wBAAoB,GACjDyiC,GAAW,CACP3B,YAAS,OACVuje,EAAerkgB,UAAW,mBAAe,GAC5CyiC,GAAW,CACP3B,YAAS,IACVuje,EAAerkgB,UAAW,gBAAY,GACzCyiC,GAAW,CACP3B,YAAS,OACVuje,EAAerkgB,UAAW,aAAS,GACtCyiC,GAAW,CACPvB,YAAQ6gD,GAAMolZ,gBAAiBvmZ,KAChCyjb,EAAerkgB,UAAW,kBAAc,GAC3CyiC,GAAW,CACP3B,YAAS,QACVuje,EAAerkgB,UAAW,qBAAiB,GAC9CyiC,GAAW,CACP3B,YAAS,MACVuje,EAAerkgB,UAAW,yBAAqB,GAClDyiC,GAAW,CACP3B,aAAS,IACVuje,EAAerkgB,UAAW,mBAAe,GAC5CyiC,GAAW,CACP3B,aAAS,IACVuje,EAAerkgB,UAAW,kBAAc,GACpCqkgB,EAnFyB,CAoFlCl7d,KAOEm7d,GAA4B,WAM5B,SAASA,EAAW9tB,GAChB1ye,KAAKyggB,iBAAmB,GACxBzggB,KAAK0ggB,uBAAyB,GAC9B1ggB,KAAK2ggB,cAAgB,GACrB3ggB,KAAK4ggB,cAAgB,GACrB5ggB,KAAK0ye,MAAQA,EACb1ye,KAAK6ggB,OAASnuB,EAAMouB,eACpB9ggB,KAAK+ggB,SAAWruB,EAAM1xe,QAAQyY,GAAK,gBACnCzZ,KAAK2jf,eAA4C,UAA1BjR,EAAM73c,gBAC7B76B,KAAKghgB,qBAAkD,gBAA1BtuB,EAAM73c,gBACnC76B,KAAKihgB,YAAcjhgB,KAAK0ye,MACxB1ye,KAAKkhgB,UAAY,EACjBlhgB,KAAK4lN,SAAW,EAChB5lN,KAAKmhgB,eAAiB,EACtBnhgB,KAAKohgB,WAAa,EAClBphgB,KAAK06I,SAAW,EAChB16I,KAAKmlE,YAAc,EACnBnlE,KAAKqhgB,qBAAuB,EAC5BrhgB,KAAKshgB,oBAAsB,EAC3BthgB,KAAKuhgB,WAAc,GAAKvhgB,KAAKkhgB,UAAYlhgB,KAAKmhgB,eAAiBnhgB,KAAKkhgB,WACpElhgB,KAAKwhgB,YAAcxhgB,KAAKuhgB,WACxBvhgB,KAAKqwR,OAAQ,EACbrwR,KAAKyhgB,SAAU,EACfzhgB,KAAK0hgB,kBAAoB,EAi/B7B,OAz+BAlB,EAAWtkgB,UAAUylgB,sBAAwB,SAAUzxd,EAAMqzc,EAAetI,GACxE,IAAI4lB,EAAS7ggB,KAAK6ggB,OACd3le,EAAgBl7B,KAAKghgB,qBAAwB,MAAQ,MACzDhhgB,KAAKy9D,YAAYojc,EAAO9yd,SAAUw1c,GAClCvjf,KAAK4hgB,aAAe,IAAI32B,GAAK/6b,EAAK3uB,EAAG2uB,EAAK55B,EAAG,EAAG,GAChDtW,KAAKu0f,WAAgC,SAAlBv0f,KAAK+tC,UAAyC,UAAlB/tC,KAAK+tC,SAChD/tC,KAAKu0f,YACLv0f,KAAK4hgB,aAAajyd,OAASm4c,GAAe+Y,EAAOlxd,OAAQ4zc,EAAc5zc,QAAUO,EAAK55B,EAAItW,KAAK0ye,MAAMrlc,OAAOrK,OAASkN,EAAKP,OAC1H3vC,KAAK4hgB,aAAalyd,MAAQo4c,GAAe+Y,EAAOnxd,OAASxU,EAAcqod,EAAc7zc,SAGrF1vC,KAAK4hgB,aAAalyd,MAAQo4c,GAAe+Y,EAAOnxd,MAAO6zc,EAAc7zc,QAAUQ,EAAKR,MACpF1vC,KAAK4hgB,aAAajyd,OAASm4c,GAAe+Y,EAAOlxd,QAAUzU,EAAcqod,EAAc5zc,SAE3F3vC,KAAK6hgB,QAAQC,gBAAgBve,EAAevjf,KAAK4hgB,aAAcf,GAC1D7ggB,KAAKghgB,uBACNhhgB,KAAK4hgB,aAAalyd,OAAU1vC,KAAK6ggB,OAAOkB,iBAAiBj/d,KAAO9iC,KAAK6ggB,OAAOkB,iBAAiBh/d,MAC7F/iC,KAAK4hgB,aAAajyd,QAAW3vC,KAAK6ggB,OAAOkB,iBAAiB/+d,IAAMhjC,KAAK6ggB,OAAOkB,iBAAiB9+d,QAEjGjjC,KAAKgigB,YAAYhigB,KAAK+tC,SAAU8yd,EAAO97N,UAAW/kS,KAAK4hgB,aAAc1xd,EAAMqzc,EAAetI,IAW9FulB,EAAWtkgB,UAAUuhE,YAAc,SAAU1vB,EAAUw1c,GACnD,IAAI7Q,EAAQ1ye,KAAK0ye,MACbuvB,EAAejigB,KAAK0ye,MACpB1ye,KAAK2jf,gBAAkB3jf,KAAKghgB,qBAC5BhhgB,KAAK+tC,SAAyB,SAAbA,EAAuBA,EAAW,UAGlC,SAAbA,KAAyB2kc,GAASuvB,GAAc3S,eAAmE,YAAjD5c,GAASuvB,GAAc3S,cAAc,GAAGnkf,MAAuE,aAAjDune,GAASuvB,GAAc3S,cAAc,GAAGnkf,QACxK4iC,EAAW,OAEf/tC,KAAK+tC,SAAyB,SAAbA,EAAuBA,EACnCw1c,EAAc7zc,MAAQ6zc,EAAc5zc,OAAS,QAAU,WAwBpE6wd,EAAWtkgB,UAAUgmgB,UAAY,SAAUjW,EAAeF,EAAgB8U,EAAQe,GAC9E,IAAIO,EAActB,EAAOz5W,OAAkC,QAAzBy5W,EAAOuB,cAA0BpigB,KAAKqigB,gBAAgB1yd,OAAS3vC,KAAKkhgB,UAAY,EAC9GlhgB,KAAKu0f,YAAcv0f,KAAKmlU,WAAa07L,EAAOyB,cAAgBtigB,KAAKghgB,uBACjEmB,EAActB,EAAOz5W,OAAkC,QAAzBy5W,EAAOuB,cAA0BpigB,KAAKqigB,gBAAgB1yd,OAAS3vC,KAAKkhgB,UAAY,EAC9GiB,GAAgBnigB,KAAKmhgB,eAAiBnhgB,KAAKkhgB,WAE/CjV,EAAgB1kf,KAAK6L,IAAI64e,EAAe2V,EAAalyd,OACrDq8c,EAAiBxkf,KAAK6L,IAAI24e,EAAgB6V,EAAajyd,QACnC,aAAhBkxd,EAAO1jf,MACPykf,EAAalyd,MAAQmxd,EAAOnxd,MAAQkyd,EAAalyd,MAAQ1vC,KAAKu0f,WAAatI,EAAgB,IAAO2V,EAAalyd,MAC/Gkyd,EAAajyd,OAASkxd,EAAOlxd,OAASiyd,EAAajyd,OAAS3vC,KAAKu0f,WAAa,IAAOqN,EAAajyd,OAASo8c,IAG3G6V,EAAalyd,MAASmxd,EAAOnxd,MAAwBkyd,EAAalyd,MAA7Bu8c,EACrC2V,EAAajyd,OAAUkxd,EAAOlxd,OAA0Biyd,EAAajyd,OAA9Bo8c,GAEtC/rf,KAAKghgB,sBACFhhgB,KAAKqwR,OAA4C,SAAnCwwO,EAAOjmB,WAAW7mN,eAChC/zR,KAAKuigB,qBAAqB1B,EAAQe,GAClCA,EAAajyd,QAA6C,SAAnCkxd,EAAOjmB,WAAW7mN,cAA2B/zR,KAAK0ggB,uBAAuB7jgB,OAAS,EACpGmD,KAAKqigB,gBAAgB1yd,OAAU3vC,KAAKqigB,gBAAgB1yd,OAAS3vC,KAAK0ggB,uBAAuB7jgB,OAAW,GAGjHmD,KAAK4lN,SAAWr+M,KAAK8L,IAAI,EAAG9L,KAAKu3D,MAAM8ic,EAAajyd,OAASkxd,EAAOr2d,QAAU23d,IACzEnigB,KAAKwigB,cAAgB3B,EAAOr2d,YA0CrCg2d,EAAWtkgB,UAAU8lgB,YAAc,SAAUj0d,EAAUg3P,EAAW68N,EAAc1xd,EAAMqzc,EAAetI,GACjG,IAAIzwc,EAAUxqC,KAAK6ggB,OAAOl4V,OAAOj5H,MAC7Bq0c,EAAgB/jf,KAAKghgB,qBACrBC,EAAcjhgB,KAAKihgB,YACnBwB,EAAyC,WAA9BxB,EAAYpmB,cACvB6nB,EAAwC,WAA7BzB,EAAY3mB,aACvBia,EAAyC,aAA5B0M,EAAY79H,YACzBu/H,EAAsB5e,GAA+C,KAA9Bkd,EAAY2B,cACnD3nB,EAAavrc,MAAQ1vC,KAAK0ye,MAAM/pU,OAAOj5H,MAAkB,EAAVlF,EAAc,EAC7DiD,EAAeztC,KAAK0ye,MAAMrlc,OAAOpK,OACjC4/d,EAAejB,EAAajyd,OAASnF,EAAUxqC,KAAK6ggB,OAAOxzd,OAAOrK,IAAMhjC,KAAK6ggB,OAAOxzd,OAAOpK,OAC3F6/d,EAAclB,EAAalyd,MAAQlF,EAAUxqC,KAAK6ggB,OAAOxzd,OAAOvK,KAAO9iC,KAAK6ggB,OAAOxzd,OAAOtK,MAC7E,WAAbgL,GACA6zd,EAAargf,EAAIvhB,KAAK+igB,YAAYnB,EAAargf,EAAGgie,EAAc7zc,MAAOkyd,EAAalyd,MAAOq1P,GAC3F68N,EAAatrf,EAAI45B,EAAK55B,GAAK45B,EAAKP,OAASkzd,GAAgBr4d,EAAUxqC,KAAK6ggB,OAAOxzd,OAAOrK,IACtF4+d,EAAatrf,IAAMyte,GAAkBkd,EAAY3nB,iBAAoBmpB,GAAaC,GAC1EnO,EACHA,GAA4C,KAA9B0M,EAAY2B,cAAwB3nB,EAAatrc,OAAmB,EAAVnF,EAAc,EADrEy2d,EAAYzmB,eAAe7qc,OAASlC,EAAeztC,KAAK6ggB,OAAOl4V,OAAOj5H,MAAkB,EAAVlF,EAEpGu0c,GAAkB7uc,EAAM,IAAI65c,GAAU,EAAG,EAAG,EAAG8Y,KAE7B,QAAb90d,GACL6zd,EAAargf,EAAIvhB,KAAK+igB,YAAYnB,EAAargf,EAAGgie,EAAc7zc,MAAOkyd,EAAalyd,MAAOq1P,GAC3F68N,EAAatrf,EAAI45B,EAAK55B,EAAIk0B,EAAUxqC,KAAK6ggB,OAAOxzd,OAAOrK,IACvD4+d,EAAatrf,IAAMyte,IAAiBkd,EAAY3nB,iBAAoBmpB,GAAaC,GAC5EnO,EAA0E,EAA5D0M,EAAYzmB,eAAe7qc,OAAS3vC,KAAK0ye,MAAMrlc,OAAOrK,IAEzE+7c,GAAkB7uc,EAAM,IAAI65c,GAAU,EAAG,EADzC8Y,GAAiB9e,EAA4B,GAAVv5c,EAAc,EACS,KAExC,UAAbuD,GACL6zd,EAAargf,EAAI2uB,EAAK3uB,GAAK2uB,EAAKR,MAAQkyd,EAAalyd,OAAS1vC,KAAK6ggB,OAAOxzd,OAAOtK,MACjF6+d,EAAatrf,EAAI45B,EAAK55B,EAAItW,KAAK+igB,YAAY,EAAGxf,EAAc5zc,QAAUO,EAAK55B,EAAIm3B,GAAem0d,EAAajyd,OAAQo1P,GACnH+9N,GAAgB/e,GAAiBkd,EAAY3nB,kBAAoBmpB,IAAaC,GAC1EnO,EAAev0f,KAAK0ye,MAAMrlc,OAAOvK,KAAO9iC,KAAK0ye,MAAMrlc,OAAOtK,MAAQk+d,EAAYzmB,eAAe7qc,OAAU,EAC3Govc,GAAkB7uc,EAAM,IAAI65c,GAAU,EAAG+Y,EAAa,EAAG,KAEvC,SAAb/0d,GACL6zd,EAAargf,EAAIqgf,EAAargf,EAAIvhB,KAAK6ggB,OAAOxzd,OAAOvK,KACrD8+d,EAAatrf,EAAI45B,EAAK55B,EAAItW,KAAK+igB,YAAY,EAAGxf,EAAc5zc,QAAUO,EAAK55B,EAAIm3B,GAAem0d,EAAajyd,OAAQo1P,GACnH+9N,IAAgB/e,GAAkBkd,EAAY3nB,iBAAoBmpB,GAAaC,IAC3EnO,EAC6B,aAA5B0M,EAAY79H,aAA4D,KAA9B69H,EAAY2B,cAAwBD,EAAqB,EADrFf,EAAargf,EAAIvhB,KAAK0ye,MAAMrlc,OAAOvK,KAAO0H,EAAUy2d,EAAYzmB,eAAe7qc,OAElGovc,GAAkB7uc,EAAM,IAAI65c,GAAU+Y,EAAa,EAAG,EAAG,MAGzDlB,EAAargf,EAAIvhB,KAAK6ggB,OAAO73d,SAASznB,EACtCqgf,EAAatrf,EAAItW,KAAK6ggB,OAAO73d,SAAS1yB,EACtCyoe,GAAkB7uc,EAAM,IAAI65c,GAAU,EAAG,EAAG,EAAG,MAuBvDyW,EAAWtkgB,UAAU6mgB,YAAc,SAAU7lgB,EAAOs/E,EAAMwmb,EAAYj+N,GAClE,OAAQA,GACJ,IAAK,MACD7nS,EAASs/E,EAAOwmb,EAAc9lgB,EAC9B,MACJ,IAAK,SACDA,GAAUs/E,EAAOwmb,GAAc,EAGvC,OAAO9lgB,GAwBXsjgB,EAAWtkgB,UAAU+mgB,aAAe,SAAUvwB,EAAOmuB,EAAQe,EAAc1kB,GACvE,IAAIilB,EACAe,EAAsB,EAEtBC,GADqB,IAAIl4B,GAAK,EAAG,EAAG,EAAG,GACjB,IAAIA,GAAK,EAAG,EAAG,EAAG,IACxCm4B,EAAcpjgB,KAAKqjgB,wBAAwBrjgB,KAAKsjgB,mBAChD94d,EAAUq2d,EAAOr2d,QACjB26R,EAAW07L,EAAOyB,YAClBF,EAAgBvB,EAAOuB,cACvBmB,EAAgBvjgB,KAAKmlU,WAAa07L,EAAOyB,aAAetigB,KAAKu0f,WAAav0f,KAAKmhgB,eAAiB,EAChGqC,EAAc9wB,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIzZ,KAAK+ggB,SAAW,OAC/D0C,EAAuBzjgB,KAAK0jgB,qBAAqBhxB,EAAOkvB,EAAc4B,EAAa3C,EAAQ7ggB,KAAK+ggB,SAAU7jB,GAC9Gl9e,KAAK2ggB,cAAgB,GAErB,IADA,IAAIx4W,EAAY,EACPvrJ,EAAI,EAAGA,EAAIoD,KAAKsjgB,kBAAkBzmgB,OAAQD,IAC/C,GAAuC,KAAnCoD,KAAKsjgB,kBAAkB1mgB,GAAG2V,KAAa,CACvC41I,EAAY5gJ,KAAK8L,IAAIrT,KAAKsjgB,kBAAkB1mgB,GAAG+ia,SAAShwX,OAAQw4G,GAChE,MAgBR,GAVAnoJ,KAAKwigB,cAAgBj7f,KAAK8L,IAAI80I,EAAW04W,EAAO8C,aAE3Cx+L,IAAYnlU,KAAKmlU,UAAanlU,KAAKu0f,WAI9Bv0f,KAAKmlU,UAAanlU,KAAKu0f,aAC7B2O,EAAsBljgB,KAAKyhgB,SAA6B,SAAlBW,EAA4BpigB,KAAKkhgB,UAAYlhgB,KAAKqigB,gBAAgB3yd,MAAS,IAJjHwzd,EAAuBljgB,KAAKyhgB,SAAgC,SAAlBW,EAA2BpigB,KAAKqigB,gBAAgB3yd,MAApD,EACtCwzd,GAAwBljgB,KAAKmhgB,eAAkB,EAAInhgB,KAAKkhgB,WAK5DiB,EAAenigB,KAAKyhgB,UAAezhgB,KAAKqwR,OAASrwR,KAAKu0f,YAAav0f,KAAKqigB,gBAAgB1yd,OAA1D,EACI,aAA9B+ic,EAAMouB,eAAe3jf,MAAuBnd,KAAKsjgB,kBAAkBzmgB,OAAS,EAC5EmD,KAAK4jgB,gBAAgBhC,EAAclvB,EAAOmuB,EAAQ4C,GAClDzjgB,KAAKg+b,WAAa,OAEjB,GAAIolE,IAAgBpjgB,KAAKsjgB,kBAAkBzmgB,OAAQ,CACpD,IAAIgngB,OAAoB,EACpB/oc,EAAQ,EACRgpc,EAAiB9jgB,KAAKsjgB,kBAAkBF,GAExClmgB,EAAQ,IAAIkif,GAAcp/e,KAAKghgB,qBAAuBY,EAAargf,EAAI2hf,EAAsB14d,EAAWq2d,EAAOkD,WAAa,EAC5HnC,EAAargf,EAAI2hf,EAAsB14d,EAAWq2d,EAAOkD,WAAa,EAAKlD,EAAOkB,iBAAiBj/d,KAAM9iC,KAAKghgB,qBAAuBY,EAAatrf,EAAI6rf,EAAcoB,EAAgB/4d,EAAWxqC,KAAKwigB,cAAgB,EACpNZ,EAAatrf,EAAI6rf,EAAcoB,EAAgB/4d,EAAWxqC,KAAKwigB,cAAgB,EAAK3B,EAAOkB,iBAAiB/+d,KAC5G4nE,EAAS8nY,EAAMye,aAAe,MAAQ,QACtC6S,EAAc,IAAI54B,GAAW,GAAIlue,EAAMqkB,EAAGrkB,EAAMoZ,EAAGs0F,GACnDwmZ,EAAcyP,EAAOoD,aAAez5d,EAAUq2d,EAAOkD,WAKzD,GAHA/jgB,KAAKg+b,WAAah+b,KAAKg+b,WAAch+b,KAAK2jf,gBAAkB3jf,KAAKghgB,qBAAwBhhgB,KAAKg+b,WAAa,EAC3Gh+b,KAAKyggB,iBAAmB,GACxBzggB,KAAKsjgB,kBAAkBF,GAAap6d,SAAW9rC,GAC1C2jgB,EAAOyB,aAAetigB,KAAKmlU,SAAU,CACtC,IAAI5jT,EAAIrkB,EAAMqkB,EAAIvhB,KAAKkhgB,UACnB5qf,EAAIpZ,EAAMoZ,EAAItW,KAAKkhgB,UACnB5xB,EAAYtve,KAAKyhgB,UAAYzhgB,KAAKu0f,YAAgC,SAAlB6N,EAChDpigB,KAAKqigB,gBAAgB3yd,MAAQ1vC,KAAKkhgB,UAAY,EAC9CgD,EAAclkgB,KAAKu0f,WAAcv0f,KAAKmhgB,eAAkB55f,KAAKgH,IAAI+H,EAAIsrf,EAAatrf,GAAK,EACvFi5d,EAAavve,KAAKyhgB,UAAYzhgB,KAAKu0f,YAAgC,UAAlB6N,EACjDpigB,KAAKqigB,gBAAgB3yd,MAAQ1vC,KAAKkhgB,UAAY,EAClD3xB,GAAcvve,KAAKu0f,WAAa,EAAKv0f,KAAKkhgB,UAAYlhgB,KAAKmhgB,eAAiBnhgB,KAAKkhgB,UAEjFiC,EADqB,IAAIl4B,GAAK1pd,EAAGjL,EAAGsrf,EAAalyd,MAAQ6/b,EAAaD,EAAWsyB,EAAajyd,OAASu0d,QAIvGf,EAAsBvB,EAE1B,IAAK,IAAI5jgB,EAAK,EAAGuF,EAAKvD,KAAKsjgB,kBAAmBtlgB,EAAKuF,EAAG1G,OAAQmB,IAAM,CAChE,IAAImmgB,EAAe5ggB,EAAGvF,GACa,sBAA/BgC,KAAK0ye,MAAM73c,kBAEXspe,EAAa/nU,MAAQp8L,KAAK0ye,OAAS1ye,KAAK0ye,OAAO4c,cAAc,GAAG3za,OAAOwob,EAAangC,YAAYruZ,OAEpG31E,KAAKokgB,iBAAoBpkgB,KAAKghgB,qBAAwB,yBAAgCmD,EAAa5xf,KAC7F,6BAA+B4xf,EAAa5xf,KAAO,UACrD4xf,EAAaz0e,QAAgC,KAAtBy0e,EAAa5xf,QACpCsxf,EAAoBnxB,EAAMtsM,SAAS6/L,YAAY,CAC3Cxsd,GAAIzZ,KAAK+ggB,SAAW/ggB,KAAKs0G,WAAW6vZ,EAAc,MAAOrpc,QAGzD+oc,EAAkBjue,aAAa,WAAYire,EAAOxjX,SAASlwI,YAC3D02f,EAAkBjue,aAAa,aAAcire,EAAOvoM,aAChDt4T,KAAKokgB,mBAEbpkgB,KAAK6hgB,QAAQwC,eAAeF,EAAcjngB,EAAOk0f,EAAa0S,EAAgBX,EAAqBroc,EAAOsoc,GAC1GpjgB,KAAKskgB,aAAaH,EAAcN,EAAmB/oc,GACnD96D,KAAK8se,WAAW4F,EAAOyxB,EAAcN,EAAmBG,EAAalpc,GACjE+oc,GACAA,EAAkBjue,aAAa,QAAS,4BAA+Bire,EAAO0D,mBAA6C,SAAxB7xB,EAAM0iB,eAC7E,SAAxB1iB,EAAMosB,eACkB,SAAxBpsB,EAAM0iB,gBAA6Bp1f,KAAKghgB,qBAAwB,OAAS,YAE7EyC,GACAA,EAAqBzhgB,YAAY6hgB,GAErCC,EAAiBK,GAErBrpc,IAEA96D,KAAKmlU,SACLnlU,KAAKwkgB,qBAAqB9xB,EAAOkvB,EAAcoC,EAAaR,GAG5DxjgB,KAAKg+b,WAAa,EAG1B6nD,GAAmBnT,EAAMoW,aAAcpW,EAAMlG,UAAWg3B,EAAatmB,IAGzEsjB,EAAWtkgB,UAAU0ngB,gBAAkB,SAAUhC,EAAclvB,EAAOmuB,EAAQ4C,GAC1E,IAAIgB,EAAQ,6BACRX,EAAiB9jgB,KAAKsjgB,kBAAkB,GACxCoB,EAAa1kgB,KAAKsjgB,kBAAkB,GACpCx0B,EAAa9ue,KAAK0ye,MAAMtsM,SAASy/L,aAEjC8+B,EAAmBnkgB,SAASm1B,gBAAgB8ue,EAAO,kBAEnDG,EAAa,GACbC,EAAc,GACdhE,EAAOz5W,QACFpnJ,KAAKu0f,YAcNqN,EAAatrf,GAAKtW,KAAKqigB,gBAAgB1yd,OACvCiyd,EAAajyd,QAAU3vC,KAAKqigB,gBAAgB1yd,QAdf,SAAzBkxd,EAAOuB,eACPR,EAAargf,GAAKvhB,KAAKqigB,gBAAgB3yd,MACvCkyd,EAAalyd,OAAS1vC,KAAKqigB,gBAAgB3yd,OAEb,UAAzBmxd,EAAOuB,cACZR,EAAalyd,OAAS1vC,KAAKqigB,gBAAgB3yd,MAEb,QAAzBmxd,EAAOuB,gBACZR,EAAatrf,GAAKtW,KAAKqigB,gBAAgB1yd,OACvCiyd,EAAajyd,QAAU3vC,KAAKqigB,gBAAgB1yd,SAQxD,IAAK,IAAI3xC,EAAK,EAAGuF,EAAKvD,KAAK0ye,MAAMsmB,mBAAoBh7f,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvE,IAAIusf,EAAWhnf,EAAGvF,GAIlB,GAHI6mgB,EAAY1mgB,QAAQosf,EAASrtf,OAAS,GACtC2ngB,EAAYjjgB,KAAK2of,EAASrtf,OAE1Bqtf,EAASnmO,OAAOvnR,OAAS,EAAG,CAC5B,IAAIiogB,EAAava,EAAS5xe,IAAM4xe,EAASrtf,MACrC6ngB,EAAexa,EAASnmO,OAAOvnR,OAAS,EAC5C,GAAIiogB,EAAY,EAAG,CACfA,GAAwBC,EACxB,IAAK,IAAIvqf,EAAQ,EAAGA,EAAQuqf,EAAcvqf,IAAS,CAC/C,IAAIwqf,EAAkBza,EAASrtf,MAAS4ngB,EAAYtqf,EACpDqqf,EAAYjjgB,KAAKojgB,SAIrB,IAASxqf,EAAQ,EAAGA,EAAQuqf,EAAcvqf,IACtCqqf,EAAYjjgB,KAAK2of,EAASrtf,OAIlC2ngB,EAAY1mgB,QAAQosf,EAAS5xe,KAAO,GACpCksf,EAAYjjgB,KAAK2of,EAAS5xe,KAE9B,IAAK,IAAIoc,EAAK,EAAGI,EAAKo1d,EAASnmO,OAAQrvP,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACzD,IAAIkwe,EAAY9ve,EAAGJ,GACf6ve,EAAWzmgB,QAAQ8mgB,GAAa,GAChCL,EAAWhjgB,KAAKqjgB,GAGpB1a,EAASnmO,OAAOvnR,OAAS,GAAK0tf,EAASnmO,OAAOvnR,OAAS,GACvD+ngB,EAAWhjgB,KAAK2of,EAASnmO,OAAO,IAGxC,IAAInoM,EAAKj8E,KAAKu0f,WAAa,IAAM,MAC7Bp4a,EAAKn8E,KAAKu0f,WAAa,MAAQ,IACnCoQ,EAAiB/ue,aAAa,KAAM51B,KAAKs0G,WAAWwvZ,EAAgB,iBA5D1C,IA6D1Ba,EAAiB/ue,aAAa,KAAM,MACpC+ue,EAAiB/ue,aAAa,KAAM,MACpC+ue,EAAiB/ue,aAAa,KAAMqmD,EAAK,KACzC0ob,EAAiB/ue,aAAa,KAAMumD,EAAK,KAEzC,IADA,IAAImyQ,EAAOu2K,EAAYA,EAAYhogB,OAAS,GAAKgogB,EAAY,GACpDl9f,EAAI,EAAGA,EAAIi9f,EAAW/ngB,OAAQ8K,IAAK,CACxC,IAAIo/J,EAAc89V,EAAYl9f,GAAKk9f,EAAY,GAC/C99V,GAA4BunL,EAC5B,IAAI42K,EAAU1kgB,SAASm1B,gBAAgB8ue,EAAO,QAC9CS,EAAQtve,aAAa,SAAUmxI,EAAY55J,YAC3C+3f,EAAQtve,aAAa,aAAcgve,EAAWj9f,IAC9Cu9f,EAAQtve,aAAa,eAtEX,GAsEmCzoB,YAC7Cw3f,EAAiB3igB,YAAYkjgB,GAEjC,IAWIC,EACAC,EACAC,EACAC,EAdAnvB,EAAa2tB,EAAevxf,KAAKpF,WACjCipe,EAAWsuB,EAAWnyf,KAAKpF,WAC3Bo4f,EAAgBj7B,GAAY6L,EAAY0qB,EAAOzyB,WAC/Co3B,EAAcl7B,GAAY8L,EAAUyqB,EAAOzyB,WAC3CsjB,EAAY6T,EAAc71d,MAAQ81d,EAAY91d,MAAQ61d,EAAc71d,MAAQ81d,EAAY91d,MACxFqxX,EAAawkG,EAAc51d,OAAS61d,EAAY71d,OAAS41d,EAAc51d,OAAS61d,EAAY71d,OAC5F81d,EAAe,EAAI/T,EAAc,EAAImP,EAAOr2d,QAC5Ck7d,EAAiB9D,EAAalyd,MAC9Bi2d,EAAkB/D,EAAajyd,OAC/B4oT,EAASqpK,EAAargf,EAAImwe,EAAa,EAAImP,EAAOr2d,QAClDguT,EAASopK,EAAatrf,EAAIuqf,EAAOr2d,QAKrC,GAAIxqC,KAAKu0f,YAUL,GATAkR,EAAe,EAAI1kG,EAAe,EAAI8/F,EAAOr2d,QAC7Ck7d,EAAiB9D,EAAalyd,MAAS,EAAImxd,EAAOr2d,QAClDm7d,EAAkB/D,EAAajyd,OAAS81d,EACxCltK,EAASqpK,EAAargf,EAAIs/e,EAAOr2d,QACjCguT,EAASopK,EAAatrf,EAAIyqZ,EAAc,EAAI8/F,EAAOr2d,QACnD26d,EAAcvD,EAAatrf,EAAIuqf,EAAOr2d,QAAUu2X,EAChDqkG,EAAY5sK,EAASmtK,EAAkB5kG,EAEvCukG,EADAD,EAAezD,EAAargf,EAA0B,GAArBqgf,EAAalyd,MAA6B,GAAZgid,EAE3DgU,EAAiB,GAAI,CACrB,IAAIE,EAAYF,EAAiB,GACjCA,EAAiB,GACjBntK,GAAmBqtK,EAAY,QAUnC,GANAF,EAAiB9D,EAAalyd,MAAQ+1d,EACtCE,EAAkB/D,EAAajyd,OAAU,EAAIkxd,EAAOr2d,QACpD66d,EAAczD,EAAargf,EAAIs/e,EAAOr2d,SAAWknd,EAAY6T,EAAc71d,OAC3E41d,EAAY1D,EAAargf,EAAImkf,EAAkB,EAAI7E,EAAOr2d,QAAWknd,EAErE0T,EADAD,EAAcvD,EAAatrf,EAA2B,GAAtBsrf,EAAajyd,OAA8B,IAAboxX,EAE1D4kG,EAAkB,GAAI,CACtB,IAAIE,EAAaF,EAAkB,GACnCA,EAAkB,GAClBntK,GAAmBqtK,EAAa,EAGxC,IAAI7B,EAAc,IAAI54B,GAAW,GAAIi6B,EAAaF,EAAa,GAAIhvB,GAEnE6tB,EAAYvqf,GAAKzZ,KAAK+ggB,SAAW/ggB,KAAKs0G,WAAWwvZ,EAAgB,SAAU,GAC3E,IAAIgC,EAAYhC,EAAe5mc,QAAU2jc,EAAOzyB,UAAUz4Z,OAAS+8Z,EAAMrG,WAAWrK,YAFlE,UAGdkK,EAAWlse,KAAK0ye,MAAMoW,aAC1B5Y,GAAYwC,EAAMtsM,SAAU49N,EAAanD,EAAOzyB,UAAW03B,EAAWrC,GAAsB,GAAO,GAAO,GAAO,EAEjH,KAAMzjgB,KAAK0hgB,mBAAqBx1B,EAC5B,IAAIjB,GAAK,GAAIjre,KAAK+lgB,cAAc,KAAM/lgB,KAAK0hgB,kBAAoB,EAAG1hgB,KAAK0hgB,mBAAoB,EAAG,GAAK,OACvGsC,EAAc,IAAI54B,GAAW,GAAIk6B,EAAWF,EAAW,GAAIhvB,IAC/C38d,GAAKzZ,KAAK+ggB,SAAW/ggB,KAAKs0G,WAAWwvZ,EAAgB,SAAU,GAC3E5zB,GAAYwC,EAAMtsM,SAAU49N,EAAanD,EAAOzyB,UAAW03B,EAAWrC,GAAsB,GAAO,GAAO,GAAO,EAEjH,KAAMzjgB,KAAK0hgB,mBAAqBx1B,EAC5B,IAAIjB,GAAK,GAAIjre,KAAK+lgB,cAAc,KAAM/lgB,KAAK0hgB,kBAAoB,EAAG1hgB,KAAK0hgB,mBAAoB,EAAG,GAAK,MACvG,IAAIsE,EAAiBtzB,EAAMtsM,SAASi4H,cAAc,CAC9C3uX,MAAOg2d,EACP/1d,OAAQg2d,EACRpkf,EAAGg3U,EACHjiV,EAAGkiV,EACHp8J,KAAM,QAAUp8L,KAAKs0G,WAAWwvZ,EAAgB,iBA3I1B,GA2ImE,MAE7Fh1B,EAAW9se,YAAY2igB,GACvBlB,EAAqBzhgB,YAAY8se,GACjC20B,EAAqBzhgB,YAAYgkgB,IASrCxF,EAAWtkgB,UAAUmngB,wBAA0B,SAAU4C,GAErD,IADA,IAAInrc,EAAQ,EACH98D,EAAK,EAAGkogB,EAAqBD,EAAkBjogB,EAAKkogB,EAAmBrpgB,OAAQmB,IAAM,CAC1F,IAAI6igB,EAASqF,EAAmBlogB,GAChC,GAAI6igB,EAAOnxe,QAA0B,KAAhBmxe,EAAOtuf,KACxB,MAEJuoD,IAEJ,OAAOA,GAQX0lc,EAAWtkgB,UAAUqmgB,qBAAuB,SAAU1B,EAAQe,GAC1D,GAAIf,EAAOz5W,MAAO,CACdpnJ,KAAKqwR,MAAiC,QAAzBwwO,EAAOuB,cACpB,IAAI53d,EAA6C,SAAnCq2d,EAAOjmB,WAAW7mN,aAA0B,EAAI8sO,EAAOr2d,QAAU,EAC3ExqC,KAAKqwR,OAASrwR,KAAKu0f,WACnBv0f,KAAK0ggB,uBAAyBr2T,GAASw2T,EAAOz5W,MAAOy5W,EAAOjmB,WAAagnB,EAAalyd,MAAQlF,GAG9FxqC,KAAK0ggB,uBAAuB,GAAKpd,GAASud,EAAOsF,kBAAmBtF,EAAOz5W,MAAOy5W,EAAOjmB,YAE7F,IAAIroe,EAAOvS,KAAKqwR,MAAQwwO,EAAOz5W,MAAQpnJ,KAAK0ggB,uBAAuB,GACnE1ggB,KAAKqigB,gBAAkB/3B,GAAY/3d,EAAMsuf,EAAOjmB,YAChD56e,KAAKqigB,gBAAgB1yd,QAAU3vC,KAAK0ggB,uBAAuB7jgB,YAG3DmD,KAAKqigB,gBAAkB,IAAI5lb,GAAK,EAAG,IAW3C+jb,EAAWtkgB,UAAUkqgB,kBAAoB,SAAU1zB,EAAOmuB,EAAQe,EAAc4B,GAC5E,IAAIh5d,EAAUq2d,EAAOr2d,QACjBu6P,EAAY87N,EAAOjmB,WAAWzvG,cAClCnrY,KAAKqwR,MAAiC,QAAzBwwO,EAAOuB,cACpB,IAAIx3Z,EAAuB,SAAdm6L,EAAuB,QAAwB,QAAdA,EAAsB,MAAQ,SACxExjR,EAAI0ne,GAAe2Y,EAAcf,EAAOjmB,YAC5ChwY,EAAS5qG,KAAKqwR,OAASrwR,KAAKu0f,WAAa3pZ,EAAS,GAClDrpF,EAAkB,SAAdwjR,EAAwBxjR,EAAIipB,EAAyB,QAAdu6P,EAAuBxjR,EAAIipB,EAAWjpB,EACjFA,EAAKvhB,KAAKqwR,OAASrwR,KAAKu0f,WAAchze,EAAMqgf,EAAargf,GAA+B,SAAzBs/e,EAAOuB,cAA2B,EAC5FR,EAAalyd,MAAQ1vC,KAAKqigB,gBAAgB3yd,MAAQ,GACvD,IAAI22d,EAAczE,EAAajyd,OAAS,EAAM3vC,KAAKqigB,gBAAgB1yd,OAAS,EACxEr5B,EAAIsrf,EAAatrf,GAAMtW,KAAKqwR,OAAUrwR,KAAKu0f,WAC1Cv0f,KAAKqigB,gBAAgB1yd,OAAS3vC,KAAK0ggB,uBAAuB7jgB,OADHwpgB,GAExDC,EAAyB,IAAIl7B,GAAWpre,KAAK+ggB,SAAW,SAAUx/e,EAAGjL,EAAGs0F,EAAQ5qG,KAAK0ggB,wBACzFxwB,GAAYwC,EAAMtsM,SAAUkgO,EAAwBzF,EAAOjmB,WAAYimB,EAAOjmB,WAAWjla,MAAO6tb,IAYpGhD,EAAWtkgB,UAAUwngB,qBAAuB,SAAUhxB,EAAOkvB,EAAc4B,EAAa3C,EAAQpnf,EAAIyje,GAChG,IAAI1yc,EAAUq2d,EAAOr2d,QACjBl+B,EAAU,IAAIq9e,GAAWlwe,EAAK,WAAYonf,EAAOlwT,WAAYkwT,EAAOl4V,OAAQk4V,EAAOl9d,QAASi+d,GAC5F2E,EAAmB7zB,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIA,EAAK,iBACzDyyd,EAAWwG,EAAMoW,aACjB0d,EAAW9zB,EAAMtsM,SAAS0/L,eAAe,CAAErsd,GAAIA,EAAK,cAgCxD,OA/BI+pf,EACAA,EAAYxhgB,YAAY0we,EAAMtsM,SAASi4H,cAAc/xZ,IAGrDome,EAAMtsM,SAASi4H,cAAc/xZ,GAE7Bu0f,EAAOz5W,OACPpnJ,KAAKomgB,kBAAkB1zB,EAAOmuB,EAAQe,EAAc4B,GAEnDt3B,GACDs3B,EAAYxhgB,YAAYukgB,GAE5BvmgB,KAAKyjgB,qBAAuB/wB,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIA,EAAK,iBAC7Dyyd,GACDq6B,EAAiBvkgB,YAAYhC,KAAKyjgB,sBAEtCn3f,EAAQgK,GAAKk0B,GAAWxqC,KAAKqwR,MAAQrwR,KAAKqigB,gBAAgB1yd,OAAS,GACnErjC,EAAQmN,IAAM,iBACdnN,EAAQojC,OAAW1vC,KAAK2jf,gBAA4C,gBAA1BjR,EAAM73c,iBAAsC76B,KAAKu0f,WAAcv0f,KAAK06I,SAAWlwG,EAAUq2d,EAAOkB,iBAAiBj/d,KAAO+9d,EAAOkB,iBAAiBh/d,MACpL6+d,EAAalyd,MACdw8b,EAKDlse,KAAKymgB,eAAiBn6f,GAJtBtM,KAAKgpa,SAAW0pE,EAAMtsM,SAASi4H,cAAc/xZ,GAC7Ck6f,EAASxkgB,YAAYhC,KAAKgpa,WAK9B68E,GAAmB3Z,EAAUwG,EAAMlG,UAAWg6B,EAAUtpB,GACnDhR,GACDq6B,EAAiB3we,aAAa,QAAS,kBAAoB4we,EAAS/sf,GAAK,KAEtEzZ,KAAKyjgB,sBAehBjD,EAAWtkgB,UAAUoogB,aAAe,SAAUH,EAAcp8a,EAAOnrF,GAC/D,IAOIu3M,EAKAuyT,EAZAz2b,EAAUjwE,KAAKghgB,qBAAuBhhgB,KAAK0ye,MAAQ,KACnDi0B,EAAcxC,EAAajnc,QAAUinc,EAAa/nU,KAAO,UACzDwqU,EAAgD,UAA/B5mgB,KAAK0ye,MAAM73c,iBAAuD,eAAvBspe,EAAat3G,OACxEs3G,EAAah5f,KAAKsM,cAActZ,QAAQ,SAAW,IAA4D,IAArDgmgB,EAAah5f,KAAKsM,cAActZ,QAAQ,QACnG0ogB,EAAgD,UAA/B7mgB,KAAK0ye,MAAM73c,kBACL,YAAtBspe,EAAah5f,MAA4C,WAAtBg5f,EAAah5f,MACjD+ge,EAAWlse,KAAK0ye,MAAMoW,aAEtBj8F,EAAgC,eAAvBs3G,EAAat3G,MAA0Bs3G,EAAah5f,KAAOg5f,EAAat3G,MACjFi6G,EAAcF,EAAsC,WAArB5mgB,KAAK6ggB,OAAO1jf,KAC3Cnd,KAAK0ye,MAAM4c,cAAc1yf,GAAG8yC,MAAQ1vC,KAAK0ye,MAAM4c,cAAc,GAAG5/c,MAC/D1vC,KAAKghgB,sBAA+C,aAAvBmD,EAAat3G,MAAwB,EAAI,EAG3E,GADAA,EAAkB,YAAVA,EAAsBs3G,EAAarE,YAAcjzG,EACrDg6G,GAAkBjqgB,EAAIoD,KAAK0ye,MAAM4c,cAAczyf,OAAQ,CACvD,IAAIkqgB,EAAe/mgB,KAAK0ye,MAAM4c,cAAc1yf,GAAG+rK,OAC/CwrC,EAAc4yT,EAAapxb,MAAQoxb,EAAapxb,MAAQgxb,EACxDG,EAAcC,EAAar3d,MAAQq3d,EAAar3d,MAAQ,EAE5D,IAAIs3d,EAAe,IAAIr7B,GAAW3re,KAAK+ggB,SAAW/ggB,KAAKs0G,WAAW6vZ,EAAc,UAAWvngB,GAAI+pgB,EAAaG,EAAcD,EAAiB1yT,EAAcwyT,EAAc,EAAG,GAAI,IAC1KhnG,EAAW2qE,GAAY65B,EAAa5xf,KAAMvS,KAAK6ggB,OAAOzyB,WACtD7sd,EAAIvhB,KAAK6ggB,OAAOvlB,WAAa6oB,EAAan7d,SAASznB,EAAIo+Y,EAASjwX,MAAQ1vC,KAAK6ggB,OAAOoD,aAClFE,EAAan7d,SAASznB,EACxBjL,EAAI6tf,EAAan7d,SAAS1yB,EACzB41d,GAIDw6B,GAAiB1mgB,KAAK+lgB,cAAc,KAAM/lgB,KAAK0hgB,kBAAoB,EAAG1hgB,KAAK0hgB,mBAC3Ep2B,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAKu2Y,EAAO,IAAIpwU,GAAKz8E,KAAK6ggB,OAAOkD,WAAY/jgB,KAAK6ggB,OAAO8C,aAAc,GAAIqD,EAAchngB,KAAKokgB,iBAAkBpkgB,KAAK0ye,MAAMtsM,SAAUpmS,KAAK0hgB,kBAAoB,IAAIz2B,GAAK,EAAGy7B,EAAe,EAAG,GAAK,KAAM1mgB,KAAKghgB,qBAAsB/wb,GACxPjwE,KAAK2ggB,cAAc/+f,KAAK,CACpBsuC,KAAM,IAAI+6b,GAAKk5B,EAAan7d,SAASznB,EAAG4if,EAAan7d,SAAS1yB,EAAGtW,KAAK6ggB,OAAOkD,WAAY/jgB,KAAK6ggB,OAAO8C,YAAc+C,GAAgBlsf,MAAO5d,KAN9ImrF,EAAM/lF,YAAYspe,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAKu2Y,EAAO,IAAIpwU,GAAKz8E,KAAK6ggB,OAAOkD,WAAY/jgB,KAAK6ggB,OAAO8C,aAAcQ,EAAavhf,IAAKokf,EAAchngB,KAAKokgB,iBAAkBpkgB,KAAK0ye,MAAMtsM,SAAU,KAAMpmS,KAAKghgB,qBAAsB/wb,KASlN,SAAV48U,GAAoBs3G,EAAa8C,kBAAiD,UAA7B9C,EAAarE,aAC3C,aAAtBqE,EAAah5f,MAAiC,aAAV0hZ,KACrCm6G,EAAavtf,GAAKzZ,KAAK+ggB,SAAW/ggB,KAAKs0G,WAAW6vZ,EAAc,iBAAkBvngB,GAClFiwZ,EAA8B,aAAtBs3G,EAAah5f,KAAsB,SAAWg5f,EAAarE,YACnEkH,EAAa5qU,KAA6B,aAAtB+nU,EAAah5f,KAAsB,UAAY67f,EAAa5qU,KAC3E8vS,EAKDZ,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAKu2Y,EAAO,IAAIpwU,GAAKz8E,KAAK6ggB,OAAOkD,WAAa,EAAG/jgB,KAAK6ggB,OAAO8C,YAAc,GAAI,GAAIqD,EAAchngB,KAAKokgB,iBAAkBpkgB,KAAK0ye,MAAMtsM,SAAUpmS,KAAK0hgB,kBACpK,IAAIz2B,GAAK,GAAIjre,KAAK+lgB,cAAc,KAAM/lgB,KAAK0hgB,kBAAoB,EAAG1hgB,KAAK0hgB,mBAAoB,EAAG,GAAK,KAAM1hgB,KAAKghgB,qBAAsB/wb,GAJxI8X,EAAM/lF,YAAYspe,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAKu2Y,EAAO,IAAIpwU,GAAKz8E,KAAK6ggB,OAAOkD,WAAa,EAAG/jgB,KAAK6ggB,OAAO8C,YAAc,GAAI,GAAIqD,EAAchngB,KAAKokgB,iBAAkB,KAAM,KAAMpkgB,KAAKghgB,qBAAsB/wb,MAqCnNuwb,EAAWtkgB,UAAU4we,WAAa,SAAU4F,EAAOyxB,EAAcp8a,EAAOi8a,EAAapngB,GACjF,IAAIikgB,EAASnuB,EAAMouB,eAEfgF,EAAY3B,EAAajnc,QAAU2jc,EAAOzyB,UAAUz4Z,OAAS+8Z,EAAMrG,WAAWrK,YADhE,UAEdkK,EAAWlse,KAAK0ye,MAAMoW,aAC1Bkb,EAAYvqf,GAAKzZ,KAAK+ggB,SAAW/ggB,KAAKs0G,WAAW6vZ,EAAc,SAAUvngB,GACzEongB,EAAYzxf,KAAO4xf,EAAa5xf,KAChCyxf,EAAYzif,EAAIs/e,EAAOvlB,WAAa6oB,EAAan7d,SAASznB,EAAKs/e,EAAOkD,WAAa,EAC/EI,EAAan7d,SAASznB,EAAKs/e,EAAOkD,WAAa,EAAKlD,EAAOoD,aAC/DD,EAAY1tf,EAAI6tf,EAAan7d,SAAS1yB,EAAItW,KAAKwigB,cAAgB,EAC/D,IAAIxhgB,EAAUkve,GAAYwC,EAAMtsM,SAAU49N,EAAanD,EAAOzyB,UAAW03B,EAAW/9a,GAAO,GAAO,GAAO,GAAO,EAAO,KAAM/nF,KAAK0hgB,mBAAqBx1B,EACnJ,IAAIjB,GAAK,GAAIjre,KAAK+lgB,cAAc,KAAM/lgB,KAAK0hgB,kBAAoB,EAAG1hgB,KAAK0hgB,mBAAoB,EAAG,GAAK,MAIvG,GAHI1ggB,GACAA,EAAQ40B,aAAa,aAAcire,EAAOvoM,aAAet4T,KAAKokgB,kBAE9Dl4B,EAAU,CACV,IAAIvsE,EAAW2qE,GAAY05B,EAAYzxf,KAAMsuf,EAAOzyB,WACpDpue,KAAK2ggB,cAAc/jgB,GAAGszC,KAAK55B,EAAI0tf,EAAY1tf,EAAItW,KAAK2ggB,cAAc/jgB,GAAGszC,KAAK55B,EAAI0tf,EAAY1tf,EAAItW,KAAK2ggB,cAAc/jgB,GAAGszC,KAAK55B,EACzHtW,KAAK2ggB,cAAc/jgB,GAAGszC,KAAKR,OAASiwX,EAASjwX,MAC7C1vC,KAAK2ggB,cAAc/jgB,GAAGszC,KAAKP,OAASgwX,EAAShwX,OAC7C3vC,KAAK2ggB,cAAc/jgB,GAAGszC,KAAK55B,GAAuB,GAAlBqpZ,EAAShwX,SAuBjD6wd,EAAWtkgB,UAAUsogB,qBAAuB,SAAU9xB,EAAO58G,EAAQoxI,EAAY1D,GAC7E,IAwCI2D,EAxCAC,EAAc10B,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIzZ,KAAK+ggB,SAAW,gBAC/D70B,EAAWwG,EAAMoW,aACjBqZ,EAAcnigB,KAAKghgB,qBAAuB,EAAIhhgB,KAAKqigB,gBAAgB1yd,OAEnEkxd,EAASnuB,EAAMouB,eAEfkG,EAAe,IAAIr7B,GAAW3re,KAAK+ggB,SAAW,UAAW,cAAe,EAH5D,UAG0E,EAAG,GAAI,IAC7FsG,EAAWrngB,KAAKmhgB,eAEhBv7S,EAAYi7S,EAAOyB,cAAetigB,KAAKmlU,UAAanlU,KAAKu0f,YAAev0f,KAAKghgB,qBAC5EhhgB,KAAK4lN,SAAW,EADmF,EAEpG0hT,EAAatngB,KAAKyhgB,SAAoC,SAAzBZ,EAAOuB,cAA2BpigB,KAAKqigB,gBAAgB3yd,MAAQ,EAChG1vC,KAAK4ggB,cAAgB,GACrB5ggB,KAAKqhgB,qBAA4C,IAArBrhgB,KAAKmlE,YAAoB,EAAI,EACzDnlE,KAAKshgB,oBAAsBthgB,KAAKmlE,cAAgBnlE,KAAKg+b,WAAa,EAAI,EACjEkuC,GACDs3B,EAAYxhgB,YAAYolgB,GAExBpngB,KAAK2jf,gBAAkB3jf,KAAKghgB,uBAAyBhhgB,KAAKu0f,WAC1Dv0f,KAAKg+b,WAAaz2b,KAAKu3D,KAAK9+D,KAAKg+b,WAAaz2b,KAAK8L,IAAI,EAAGrT,KAAK4lN,SAAW,IAG1E5lN,KAAKg+b,WAAaz2b,KAAKu3D,KAAK9+D,KAAKg+b,WAAah+b,KAAKohgB,YAEnDgG,GACAA,EAAYxxe,aAAa,QAAS,mBAEtC51B,KAAKungB,eAAiB3hT,GAAY5lN,KAAKwigB,cAAgB3B,EAAOr2d,SACzD0hc,GAKDlse,KAAKymgB,eAAe92d,OAAS3vC,KAAK4hgB,aAAajyd,OAAS3vC,KAAKungB,gBACxDvngB,KAAKymgB,eAAenwf,EAAItW,KAAK4hgB,aAAatrf,GAAKuqf,EAAOl4V,OAAOj5H,MAClE1vC,KAAKymgB,eAAenwf,EAAItW,KAAKymgB,eAAenwf,EAAItW,KAAKungB,eACrDvngB,KAAKymgB,eAAellf,GAAKs/e,EAAOl4V,OAAOj5H,MACvC1vC,KAAKymgB,eAAe/2d,OAAUmxd,EAAOl4V,OAAOj5H,MAAQmxd,EAAOl4V,OAAOj5H,MAAQ,EAC1E1vC,KAAK0ye,MAAMtsM,SAAS+jM,UAAU,IAAIc,GAAKjre,KAAKymgB,eAAellf,EAAGvhB,KAAKymgB,eAAenwf,EAAGtW,KAAKymgB,eAAe/2d,MAAO1vC,KAAKymgB,eAAe92d,UATpI3vC,KAAKgpa,SAASpzY,aAAa,SAAU51B,KAAKungB,eAAep6f,YAY7D,IAAIoU,EAAKu0W,EAAOv0W,EAAI8lf,EAAW,EAC3B/wf,EAAIw/W,EAAOx/W,EAAItW,KAAKungB,gBAAmBpF,EAAcrsI,EAAOnmV,OAAS3vC,KAAKungB,gBAAkB,GAC5FvngB,KAAKmlU,UAAa07L,EAAOyB,aAAgBtigB,KAAKu0f,YAAev0f,KAAKghgB,uBAClEz/e,EAAKu0W,EAAOv0W,EAAIvhB,KAAKkhgB,UAAYlhgB,KAAKmhgB,eAAiBmG,EACvDhxf,EAAIuqf,EAAOz5W,OAASpnJ,KAAKqwR,MAASylG,EAAOx/W,EAxC/B,EAwC6C6rf,EAAekF,EAAW,EAAK,GACjFvxI,EAAOx/W,EAzCF,EAyCgB+wf,EAAW,IAEzC,IAAI7qb,EAAO8tZ,GAAYtqe,KAAKg+b,WAAa,IAAMh+b,KAAKg+b,WAAY6iE,EAAOzyB,WAClElC,EAcDZ,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAK,YAAa,IAAImmE,GAAK4qb,EAAUA,GAAW,GAAIL,EAAc,EAAahngB,KAAK0ye,MAAMtsM,SAAU,IAAI6kM,GAAKn1G,EAAOpmV,OAAS,GAAK23d,EA1D9I,KA0D8K7qb,EAAK9sC,OAAQ,EAAG,EAAG,KAbvM1vC,KAAKu0f,YAAesM,EAAOyB,aAAgBtigB,KAAKghgB,sBAOhDgG,EAAarje,QAAU3jC,KAAKghgB,qBAAuBgG,EAAarje,QAC3Dk9d,EAAOyB,YAAc,EAAItigB,KAAKqhgB,qBACnC+F,EAAYplgB,YAAYspe,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAK,YAAa,IAAImmE,GAAK4qb,EAAUA,GAAW,GAAIL,MARlGzlf,EAAIu0W,EAAOv0W,EAAKu0W,EAAOpmV,MAAQ,EAC/Bp5B,EAAIw/W,EAAOx/W,EAAK+wf,EAAW,EA/CrB,EA+CoClF,EAC1C6E,EAAarje,QAAU3jC,KAAKqhgB,qBAC5B+F,EAAYplgB,YAAYspe,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAK,UAAW,IAAImmE,GAAK4qb,EAAUA,GAAW,GAAIL,KAWxGhngB,KAAK4ggB,cAAch/f,KAAK,IAAIqpe,GAAK1pd,EAAIu0W,EAAOpmV,OAAS,GAAK23d,EA5D5C,KA4D4E7qb,EAAK9sC,OAAoB,GAAX23d,EAAgB/wf,EAAe,GAAX+wf,EAAgBA,EAAUA,IAEtJH,EAAW3lf,EAAIA,EAAK8lf,EAAW,EA9DjB,EA+DdH,EAAW5wf,EAAIA,EAAKkmE,EAAK7sC,OAAS,EAClCu3d,EAAWztf,GAAKzZ,KAAK+ggB,SAAW,cAChCmG,EAAW30f,KAAO,KAAOvS,KAAKg+b,WAC1BkuC,GAAYlse,KAAKwngB,iBACjBN,EAAW30f,KAAOvS,KAAK0hgB,kBAAoB,IAAM1hgB,KAAKwngB,iBAEtD3G,EAAOyB,aAAetigB,KAAKghgB,wBAC3BmG,EAAkBj3B,GAAYwC,EAAMtsM,SAAU8gO,EAAYrG,EAAOzyB,UAAWyyB,EAAOzyB,UAAUz4Z,MAAOyxb,GAAa,GAAO,GAAO,GAAO,EAAO,KAAM,IAAIn8B,GAAKn1G,EAAOpmV,OAAS,GAAK23d,EAtEvK,KAsEuM7qb,EAAK9sC,OAAQ,EAAG,EAAG,KAGxOnuB,EAAI2lf,EAAW3lf,EAzED,EAyEgB8lf,EAAW,EAAK7qb,EAAK9sC,OAC/C1vC,KAAKmlU,UAAa07L,EAAOyB,aAAgBtigB,KAAKu0f,aAC9Chze,EAAKu0W,EAAOv0W,EAAIu0W,EAAOpmV,MAAQ1vC,KAAKkhgB,UAAYlhgB,KAAKmhgB,gBAAkBN,EAAOz5W,OAAkC,UAAzBy5W,EAAOuB,cAC1FpigB,KAAKqigB,gBAAgB3yd,MAAQ1vC,KAAKkhgB,UAAY,IAEtD8F,EAAavtf,GAAKzZ,KAAK+ggB,SAAW,YAClCiG,EAAarje,QAAWk9d,EAAOyB,YAAyC,EAA3BtigB,KAAKshgB,oBAC7Cp1B,EAWDZ,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAK,aAAc,IAAImmE,GAAK4qb,EAAUA,GAAW,GAAIL,EAAc,EAAchngB,KAAK0ye,MAAMtsM,SAAU,IAAI6kM,GAAKn1G,EAAOpmV,OAAS,GAAK23d,EA3FhJ,KA2FgL7qb,EAAK9sC,OAAQ,EAAG,EAAG,KAVzM1vC,KAAKu0f,YAAesM,EAAOyB,aAAgBtigB,KAAKghgB,qBAMhDoG,EAAYplgB,YAAYspe,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAK,aAAc,IAAImmE,GAAK4qb,EAAUA,GAAW,GAAIL,KALnGzlf,EAAIu0W,EAAOv0W,EAAKu0W,EAAOpmV,MAAQ,EAC/Bp5B,EAAIw/W,EAAOx/W,EAAIw/W,EAAOnmV,OAAU03d,EAAW,EAnFrC,EAoFND,EAAYplgB,YAAYspe,GAAW,CAAE/pd,EAAGA,EAAGjL,EAAGA,GAAK,YAAa,IAAImmE,GAAK4qb,EAAUA,GAAW,GAAIL,KAS1GhngB,KAAK4ggB,cAAch/f,KAAK,IAAIqpe,GAAK1pd,GAAKu0W,EAAOpmV,OAAS,GAAK23d,EA7F7C,KA6F6E7qb,EAAK9sC,OAAoB,GAAX23d,GAAiB/wf,EAAe,GAAX+wf,EAAgBA,EAAUA,IACnJn7B,IAAa20B,EAAOyB,cAAetigB,KAAKghgB,sBAMV,IAA3BhhgB,KAAK0hgB,mBAA2B1hgB,KAAKyngB,eAAiB5G,EAAOyB,aAAetigB,KAAKghgB,wBACjFhhgB,KAAKwngB,eAAiBxngB,KAAKg+b,WAC3Bh+b,KAAKyngB,cAAe,GAEnB5G,EAAOyB,aAAgBtigB,KAAKghgB,sBAC7BhhgB,KAAK+lgB,cAAc,KAAM/lgB,KAAKmlE,YAAc,EAAGnlE,KAAKmlE,YAAa07b,IATrEuG,EAAYxxe,aAAa,YAAa,cAAgBkgW,EAAOpmV,OAAS,GAAK23d,EAhGjE,KAiGI7qb,EAAK9sC,QADmB,SAYtCmxd,EAAOyB,aAAetigB,KAAKghgB,uBAC3BhhgB,KAAK+lgB,cAAcoB,EAAiBnngB,KAAKmlE,YAAc,EAAGnlE,KAAKmlE,YAAa07b,IAuBpFL,EAAWtkgB,UAAU6pgB,cAAgB,SAAU2B,EAAY/na,EAAMk4V,EAAYgpE,GACzE,IAAIrkb,EAAQx8E,KAAKungB,eAAkB5na,EAC/BkzP,EAAY,gBAAkBr2Q,EAAO,IAazC,OAZKx8E,KAAK2jf,gBAAmB3jf,KAAKghgB,uBAAwBhhgB,KAAKu0f,aAG3D1hK,EAAY,eADZr2Q,GADAA,EAAOx8E,KAAKyggB,iBAAiB9ga,EAAO3/F,KAAKohgB,YAAcphgB,KAAK4hgB,aAAargf,GAC3D,EAAI,EAAIi7D,GACa,OAElCx8E,KAAK0ye,MAAMoW,cACZ9of,KAAKyjgB,qBAAqB7te,aAAa,YAAai9T,GAEnD7yV,KAAK0ye,MAAMoW,eAAiB+X,EAAOyB,cAAetigB,KAAKghgB,uBACxD0G,EAAWrxa,YAAewhW,EAAc,IAAM73b,KAAKg+b,YAEvDh+b,KAAKmlE,YAAc0yX,EACZr7W,GAUXgkb,EAAWtkgB,UAAUyrgB,WAAa,SAAU7gf,EAAOk2I,GAC/C,IAAI6jW,EAAS7ggB,KAAK0ye,MAAMouB,eACpB8G,EAAgBpngB,SAASuuB,eAAe/uB,KAAK+ggB,SAAW,WACxD8G,EAAerngB,SAASuuB,eAAe/uB,KAAK+ggB,SAAW,aACvD+G,EAAYjH,EAAOyB,aAAetigB,KAAKghgB,qBACvCxggB,SAASuuB,eAAe/uB,KAAK+ggB,SAAW,eAAiB,KACzDpha,EAAQkha,EAAOyB,aAAetigB,KAAKghgB,qBAAwB7qf,SAAS2xf,EAASzxa,YAAY15F,MAAM,KAAK,GAAI,IACxGqD,KAAKmlE,YACL63F,GAAUr9D,EAAO,EACjB3/F,KAAK+lgB,cAAc+B,EAAWnoa,EAAO,EAAKA,EAAO,EAAIkha,IAE/C7jW,GAAUr9D,EAAO3/F,KAAKg+b,YAC5Bh+b,KAAK+lgB,cAAc+B,EAAUnoa,EAAOA,EAAO,EAAIkha,IAE/C7ggB,KAAKmlU,UAAa07L,EAAOyB,aAAgBtigB,KAAKghgB,uBAE9ChhgB,KAAKmlE,cAAgBnlE,KAAKg+b,WAAah+b,KAAK+ngB,UAAUF,GAAgB7ngB,KAAKgogB,UAAUH,GAEhE,IAArB7ngB,KAAKmlE,YAAoBnlE,KAAK+ngB,UAAUH,GAAiB5ngB,KAAKgogB,UAAUJ,KAQhFpH,EAAWtkgB,UAAU6rgB,UAAY,SAAUE,GACvCA,EAAarye,aAAa,UAAW,MAOzC4qe,EAAWtkgB,UAAU8rgB,UAAY,SAAUC,GACvCA,EAAarye,aAAa,UAAW,MAgBzC4qe,EAAWtkgB,UAAUo4G,WAAa,SAAUrqG,EAAQ2J,EAAQknD,GACxD,OAAI96D,KAAK2jf,eACE/ve,EAASknD,EAGTlnD,EAAS3J,EAAO+5d,YAU/Bw8B,EAAWtkgB,UAAUirB,KAAO,SAAUL,GAClC,IAAI/mB,EAAQC,KACRuhB,EAAIvhB,KAAK0ye,MAAMoiB,OACfx+e,EAAItW,KAAK0ye,MAAMqiB,OACnB,GAAIjue,EAAMmW,OAAOo5D,YAAYl4F,QAAQ,QAAU,EAAG,CAC9C,IAAI+pgB,EAAWphf,EAAMmW,OAAOxjB,GAAG9c,MAAMqD,KAAK+ggB,SAAW,UACrD,GAAwB,IAApBmH,EAASrrgB,OAAc,CACvB,IAAI2d,EAAQrE,SAAS+xf,EAAS,GAAI,IAC9BlngB,EAAUhB,KAAK0ye,MAAM1xe,QACpBoL,MAAMoO,KACHxa,KAAK0ye,MAAMzrd,SACX80B,GAAc/7C,KAAK0ye,MAAM1xe,QAAQyY,GAAK,uBAEtCzZ,KAAK2jf,eACLzF,GAAYl+e,KAAK0ye,MAAMzO,OAAOzpd,GAAOJ,KAAMmH,EAAGjL,EAAGtV,EAAQy1B,YAAaz1B,EAAQyY,GAAK,sBAAuB5W,GAAW7C,KAAK0ye,MAAM1xe,QAAQyY,GAAK,uBAG7Iyke,GAAYl+e,KAAK0ye,MAAM4c,cAAc,GAAG3za,OAAOnhE,GAAO+G,EAAEpU,WAAYoU,EAAI,GAAIjL,EAAI,GAAItV,EAAQy1B,YAAaz1B,EAAQyY,GAAK,sBAAuB5W,GAAW7C,KAAK0ye,MAAM1xe,QAAQyY,GAAK,8BAM5LsiC,GAAc/7C,KAAK0ye,MAAM1xe,QAAQyY,GAAK,uBAEtCzZ,KAAK0ye,MAAMzrd,UACX9mB,aAAaH,KAAKmogB,cAClBnogB,KAAKmogB,cAAgB/ngB,YAAW,WAAc27C,GAAch8C,EAAM2ye,MAAM1xe,QAAQyY,GAAK,yBAA2B,OAGjH+mf,EA9gCqB,GAshC5B4H,GACA,SAAuB71f,EAAM6pL,EAAMywN,EAAO3vV,EAAS/xD,EAAMyX,EAAKk9e,EAAamH,EAAkBjjC,EAAYD,GACrG/je,KAAKgpC,SAAW,CAAEznB,EAAG,EAAGjL,EAAG,GAC3BtW,KAAKuS,KAAOA,EACZvS,KAAKo8L,KAAOA,EACZp8L,KAAK6sZ,MAAQA,EACb7sZ,KAAK4iB,IAAMA,EACX5iB,KAAKk9D,QAAUA,EACfl9D,KAAKmL,KAAOA,EACZnL,KAAKingB,iBAAmBA,EACxBjngB,KAAK8/f,YAAcA,EACnB9/f,KAAKgke,WAAaA,EAClBhke,KAAK+je,YAAcA,GC9qCvB1lc,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAc5Dupe,GAAoC,SAAUlpe,GAE9C,SAASkpe,IACL,IAAItogB,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAGhE,OADAD,EAAMipa,SAAW,IAAIiiE,GAAK,EAAG,EAAG,EAAG,GAC5Blre,EAyEX,OA9EAs+B,GAAUgqe,EAAoBlpe,GAQ9Bkpe,EAAmBnsgB,UAAU46f,cAAgB,SAAU7yB,EAAQyO,GACvDzO,IACAjke,KAAKq2f,MAAQpyB,EAAOoyB,MACpBr2f,KAAKy5f,MAAQx1B,EAAOw1B,MACpBz5f,KAAK27E,OAASsoZ,EAAOtoZ,QAGzB+2Z,EADWmL,GAAiB79e,KAAKmL,MACpB,mBAAmB6rf,eAAeh3f,KAAM0ye,GACrDA,EAAMukB,oBAAsBj3f,KAAKsogB,aAAazrgB,QAElD8hC,GAAW,CACP3B,YAAS,QACVqre,EAAmBnsgB,UAAW,YAAQ,GACzCyiC,GAAW,CACP3B,YAAS,KACVqre,EAAmBnsgB,UAAW,cAAU,GAC3CyiC,GAAW,CACP3B,YAAS,KACVqre,EAAmBnsgB,UAAW,eAAW,GAC5CyiC,GAAW,CACP3B,YAAS,IACVqre,EAAmBnsgB,UAAW,eAAW,GAC5CyiC,GAAW,CACP3B,YAAS,KACVqre,EAAmBnsgB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,YAAS,KACVqre,EAAmBnsgB,UAAW,gBAAY,GAC7CyiC,GAAW,CACP3B,YAAS,IACVqre,EAAmBnsgB,UAAW,yBAAqB,GACtDyiC,GAAW,CACP3B,YAAS,UACVqre,EAAmBnsgB,UAAW,aAAS,GAC1CyiC,GAAW,CACP3B,YAAS,KACVqre,EAAmBnsgB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,YAAS,KACVqre,EAAmBnsgB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,aAAS,IACVqre,EAAmBnsgB,UAAW,iBAAa,GAC9CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,GAAK8zb,KACzC6kC,EAAmBnsgB,UAAW,gBAAY,GAC7CyiC,GAAW,CACP3B,YAAS,SACVqre,EAAmBnsgB,UAAW,gBAAY,GAC7CyiC,GAAW,CACP3B,YAAS,YACVqre,EAAmBnsgB,UAAW,yBAAqB,GACtDyiC,GAAW,CACP3B,YAAS,YACVqre,EAAmBnsgB,UAAW,yBAAqB,GACtDyiC,GAAW,CACP3B,YAAS,2BACVqre,EAAmBnsgB,UAAW,iBAAa,GAC9CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,GAAK8zb,KACzC6kC,EAAmBnsgB,UAAW,iBAAa,GAC9CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,GAAK8zb,KACzC6kC,EAAmBnsgB,UAAW,iBAAa,GAC9CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,GAAK8zb,KACzC6kC,EAAmBnsgB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,YAAS,KACVqre,EAAmBnsgB,UAAW,kBAAc,GACxCmsgB,EA/E6B,CAgFtChR,ICzGEkR,GAA6B,WAM7B,SAASA,EAAYt4b,GACjBjwE,KAAKiwE,QAAUA,EAoTnB,OA7SAs4b,EAAYrsgB,UAAU6E,MAAQ,SAAU+0B,GACpC91B,KAAKiB,YAAca,OAAOC,KAAK,GAAI,QAAS,UAAYD,OAAOs6H,YAAc,UAAYt6H,OAAOq6H,WAAa,cAC7Gn8H,KAAKiB,YAAYihJ,OAAO,EAAG,GAC3BliJ,KAAKiB,YAAY4kO,SAASC,OAAOC,WAAYD,OAAOE,aACpD,IAAI+mQ,EAAW,CACXhqd,QAAQ,EAAOylf,YAAaxogB,KAAKyogB,eAAe3ye,GAAW1b,KAAM6yC,IAErEjtD,KAAKiwE,QAAQlmD,QAAQkjC,GAAa8/a,GAC7BA,EAAShqd,QACV9hB,aAAY8re,EAASy7B,YAAaxogB,KAAKiB,cAS/CsngB,EAAYrsgB,UAAUusgB,eAAiB,SAAU3ye,GAC7C,IAAI50B,EAAMC,YAAc,OACxB,GAAI20B,EACA,GAAIA,aAAoB13B,MACpB,IAAK,IAAI+J,EAAI,EAAGA,EAAI2tB,EAASj5B,OAAQsL,IAAK,CACtC,IAAI3L,EAAQs5B,EAAS3tB,GACrBjH,EAAIc,YAAYa,GAAWrG,GAAOyF,WAAU,SAG3C6zB,aAAoB4zK,QACzBxoM,EAAIc,YAAY8zB,EAAS7zB,WAAU,IAGnCf,EAAIc,YAAYa,GAAWizB,GAAU7zB,WAAU,SAInDf,EAAIc,YAAYhC,KAAKiwE,QAAQjvE,QAAQiB,WAAU,IAEnD,OAAOf,GAQXqngB,EAAYrsgB,UAAUwsgB,OAAS,SAAUv9f,EAAMkzE,EAAU+kT,EAAaulI,EAAUj5d,EAAOC,EAAQ4kd,EAAYxve,EAAQy4D,GAC/G,IAAIz9E,EAAQC,KACR4ogB,EAAe5ogB,KAAK6ogB,iBAAiBF,EAAUpU,GACnD7kd,EAAQA,GAAgBk5d,EAAal5d,MACrCC,EAASA,GAAkBi5d,EAAaj5d,OACxC,IAEI4hE,EAFAvwG,EAAUhB,KAAKiwE,QAAQu8Z,UACvBN,EAAWlse,KAAKiwE,QAAQ64a,aAEvB5c,IACDlre,EAAUG,YAAc,SAAU,CAC9BsY,GAAI,aACJsZ,MAAO,CACH,MAAS2c,EAAMviC,WACf,OAAUwiC,EAAOxiC,eAI7B,IAAI27f,IAAezif,IAAQI,UAAUtZ,WAAWhP,QAAQ,mBAAqB,GAC7EilY,EAAchmY,YAAkBgmY,GAAe1I,GAAmB4I,UAAYF,EAC9E,IAAI2lI,EAAU,sFACVH,EAAaI,IAAI9mgB,UACjB,SACA0gB,EAAM9gB,OAAO8nW,IAAIC,gBAAgB,IAAIT,KAAc,QAATj+V,EAAiB,CAAC49f,GAC5D,EAAE,IAAIE,eAAiBC,kBAAkBN,EAAaI,MAAO,CAAE79f,KAAM,mBACzE,GAAa,QAATA,EACA,GAA0B,SAAtBkb,IAAQ2B,KAAK5N,KAAiB,CAC9B,IAAI4uf,EAAM,IAAI5/J,KAAK,EAAE,IAAI6/J,eAAiBC,kBAAkBN,EAAaI,MAAO,CAAE79f,KAAM,6BACxFrJ,OAAO8kB,UAAUuif,iBAAiBH,EAAK3qb,EAAW,IAAMlzE,EAAKogc,0BAG7Dvrc,KAAKopgB,gBAAgB/qb,EAAUlzE,EAAMyX,EAAKkmf,QAG7C,GAA0B,SAAtBzif,IAAQ2B,KAAK5N,KAAiB,CACnC,IAAIivf,EAASrogB,EACRkre,IACDm9B,EAASrpgB,KAAKkne,gBAElB31X,EAAQ83Z,EAAOC,YACF,QAATn+f,EACAnL,KAAKupgB,UAAUF,EAAQjmI,EAAa1zV,EAAOC,EAAQm5d,EAAYzqb,EAAUt5D,EAAQy4D,GAGjFx9E,KAAKwpgB,SAASr+f,EAAMomG,EAAOlzB,OAG9B,CACD,IAAIorb,EAAU,IAAIjtK,MACdktK,EAAQ1ogB,EAAQsme,WAAW,MAC/BmiC,EAAQjmf,OAAU,WACdkmf,EAAM3qG,UAAU0qG,EAAS,EAAG,GAC5B3ngB,OAAO8nW,IAAIE,gBAAgBlnV,GACd,QAATzX,EACApL,EAAMwpgB,UAAUvogB,EAASoiY,EAAa1zV,EAAOC,EAAQm5d,EAAYzqb,EAAUt5D,EAAQy4D,GAG/E17E,OAAO8kB,UAAUuif,iBACjBrngB,OAAO8kB,UAAUuif,iBAAiBnogB,EAAQ2ogB,OAAO,MAAOtrb,EAAW,IAAMlzE,EAAKogc,qBAG9Exrc,EAAMqpgB,gBAAgB/qb,EAAUlzE,EAAMnK,EAAQsogB,UAAU,SAAWn+f,EAAKsM,eAAgBqxf,IAIpGW,EAAQvqgB,IAAM0jB,EAEbspd,GACDnwb,GAAcv7C,SAASuuB,eAAe/uB,KAAKiwE,QAAQjvE,QAAQyY,GAAK,aAQxE8uf,EAAYrsgB,UAAU0tgB,WAAa,SAAUl3B,GACzC,IAAIk2B,EAAe5ogB,KAAK6ogB,iBAAiB,CAACn2B,IACtC1xe,EAAUhB,KAAKiwE,QAAQu8Z,UACvBN,EAAWlse,KAAKiwE,QAAQ64a,aACvB5c,IACDlre,EAAUG,YAAc,SAAU,CAC9BsY,GAAI,aACJsZ,MAAO,CACH,MAAS61e,EAAal5d,MAAMviC,WAC5B,OAAUy7f,EAAaj5d,OAAOxiC,eAI1C,IAAIyV,EAAM9gB,OAAO8nW,IAAIC,gBAAgB,IAAIT,KAAK,EAAE,IAAI6/J,eAAiBC,kBAAkBN,EAAaI,MAAO,CAAE79f,KAAM,mBACnH,GAA0B,SAAtBkb,IAAQ2B,KAAK5N,KAAiB,CAC9B,IAAIivf,EAASrogB,EACRkre,IACDm9B,EAASrpgB,KAAKkne,gBAElB,IAAI6F,EAAW,CACX3yd,KAAMi+d,GAAat1d,QAAQ,EAAOkoG,QAASjqH,EAAQsogB,UAAU,cAGjE,OADA52B,EAAM3od,QAAQsud,GAAatL,GACpB,CAAE/re,QAASqogB,EAAQp+Y,QAASo+Y,EAAOC,aAG1C,IAAIO,EAAU,IAAIrtK,MACdstK,EAAQ9ogB,EAAQsme,WAAW,MAW/B,OAVAuiC,EAAQrmf,OAAU,WACdsmf,EAAM/qG,UAAU8qG,EAAS,EAAG,GAC5B/ngB,OAAO8nW,IAAIE,gBAAgBlnV,GAC3B,IAAImqd,EAAW,CACX3yd,KAAMi+d,GAAat1d,QAAQ,EAAOkoG,QAASjqH,EAAQsogB,UAAU,cAGjE,OADA52B,EAAM3od,QAAQsud,GAAatL,GACpBA,EAAS9hX,SAEpB4+Y,EAAQ3qgB,IAAM0jB,EACP,CAAE5hB,QAASA,EAAS+ogB,QAASnnf,IAU5C2lf,EAAYrsgB,UAAUktgB,gBAAkB,SAAU/qb,EAAUlzE,EAAMyX,EAAKkmf,GACnE3ngB,YAAc,IAAK,CACf4xB,MAAO,CACH,SAAYsrD,EAAW,IAAMlzE,EAAKogc,oBAClC,KAAQ3ob,KAEby2F,cAAc,IAAI23V,WAAW83D,EAAa,QAAU,OAAQ,CAC3DlkU,KAAM9iM,OACNmsQ,SAAS,EACTC,YAAY,MAUpBq6P,EAAYrsgB,UAAU2sgB,iBAAmB,SAAUF,EAAUpU,GACzD,IAAI7kd,EAAQ,EACRC,EAAS,EACTu8b,EAAWlse,KAAKiwE,QAAQ64a,aACxBtc,EAAY,IAAIlI,GAAY,IAAIK,UAAU,CAC1Clrd,GAAI,qBACJi2B,MAAO,IAAKC,OAAQ,MAuBxB,OArBAg5d,EAASlkgB,KAAI,SAAUwrE,GACnB,IAAI+4b,EAAM/4b,EAAQu8Z,UAAUvqe,WAAU,GAClC+ngB,EAAW/5b,EAAQm2N,SAAS6/L,YAAY,CACxCjyc,MAAQ52B,YAAkBm3f,IAAeA,EAAc,yBAA2B5kd,EAAS,MACvF,yBAA2BD,EAAQ,QAEtCw8b,GACD89B,EAAShogB,YAAYgngB,GAEzBt5d,EAAStyC,YAAkBm3f,IAAeA,EAAchtf,KAAK8L,IAAI48D,EAAQsza,cAAc7zc,MAAOA,GAC1FA,EAAQugC,EAAQsza,cAAc7zc,MAClCC,EAAUvyC,YAAkBm3f,IAAeA,EAAc5kd,EAASsgC,EAAQsza,cAAc5zc,OACpFpoC,KAAK8L,IAAI48D,EAAQsza,cAAc5zc,OAAQA,GACtCu8b,GACDM,EAAUxqe,YAAYgogB,MAGzB99B,IACDM,EAAU52c,aAAa,QAAS8Z,EAAQ,IACxC88b,EAAU52c,aAAa,SAAU+Z,EAAS,KAEvC,CACH,MAASD,EACT,OAAUC,EACV,IAAO68b,IAGf+7B,EAAYrsgB,UAAUgre,aAAe,WACjC,IAAIwL,EAAQ1ye,KAAKiwE,QACjBjwE,KAAK6of,cAAa,EAAMnW,GACxB,IAAI22B,EAAS32B,EAAMlG,UAEnB,OADAxse,KAAK6of,cAAa,EAAOnW,GAClB22B,GAWXd,EAAYrsgB,UAAU2sf,aAAe,SAAUC,EAAcpW,GACzDA,EAAMoW,aAAeA,EACrBpW,EAAiB,YACjBA,EAAc,UAGlB61B,EAAYrsgB,UAAUqtgB,UAAY,SAAUvogB,EAASoiY,EAAa1zV,EAAOC,EAAQm5d,EAAYzqb,EAAUt5D,EAAQy4D,GAC3G,IAAIh9E,EAAW,IAAI0nX,GACf76U,EAAS7sC,EAAS0kE,aAAa09T,QAC/BqnI,EAAkBzpgB,EAAS0kE,aAAax1B,MACxCw6d,EAAmB1pgB,EAAS0kE,aAAav1B,OACzCw6d,EAAcnpgB,EAAQsogB,UAAU,cAAc5sgB,QAAQ,aAAc,sBACxE8D,EAAS0kE,aAAak+T,YAAcA,EACpC,IAAIgnI,EAAcH,EAAkBv6d,EAAUA,EAAQrC,EAAOvK,KAAOuK,EAAOtK,MAASkne,EAChFI,EAAeH,EAAmBv6d,EAAWA,EAAStC,EAAOrK,IAAMqK,EAAOpK,OAAUine,EACxF,QAAelugB,IAAX+oB,EAAsB,CACtB,IAAI83D,EAAO,IAAI+4V,GAAgB,EAAG7wZ,EAAO8wD,UAAY,IACjDy0b,EAAY,IAAI57E,GAAuB07E,EAAY,IACvDE,EAAUt3H,SAASwqB,WAAWz4Y,EAAO2lC,QAAU,GAAImyB,EAAM,KAAM,IAAIisT,GAAc,IAAItC,GAAS,EAAG,EAAG,IAAKzhX,EAAOxD,EAAGwD,EAAOzO,EAAG,MAC7H9V,EAAS8qB,SAAS0X,IAAMsne,EAE5B,QAAetugB,IAAXwhF,EAAsB,CAClBX,EAAO,IAAI+4V,GAAgB,EAAGp4V,EAAO3H,UAAY,IAArD,IACI00b,EAAY,IAAI77E,GAAuB07E,EAAY,IACvDG,EAAUv3H,SAASwqB,WAAWhgV,EAAO9yB,QAAU,GAAImyB,EAAM,KAAM,IAAIisT,GAAc,IAAItC,GAAS,EAAG,EAAG,IAAKhpT,EAAOj8D,EAAGi8D,EAAOlnE,EAAG,MAC7H9V,EAAS8qB,SAAS2X,OAASsne,EAE/B/pgB,EAAS0kE,aAAasX,KAAO,IAAI0hT,GAAMksI,EAAYC,GACnDF,EAAcA,EAAY9ogB,MAAM8ogB,EAAYhsgB,QAAQ,KAAO,GAC3DqC,EAASotX,MAAM7kW,MAAMiqX,SAAS+rB,UAAU,IAAItG,GAAU0xG,GAAc,EAAG,EAAGz6d,EAAOC,GAC7Em5d,IACAtogB,EAASw9P,KAAK3/K,EAAW,QACzB79E,EAAS2a,YAGjBotf,EAAYrsgB,UAAUstgB,SAAW,SAAUr+f,EAAMomG,EAAOlzB,GACpD,IAAIwyR,EACA25J,EAAWr/f,GAAQ,MACvB0lW,EAAS,CAACt/P,GACVvxG,KAAKyqgB,YAAY55J,EAAQxyR,EAAUmsb,EAAUj5Z,IAEjDg3Z,EAAYrsgB,UAAUuugB,YAAc,SAAU55J,EAAQxyR,EAAUmsb,EAAUj5Z,GAGtE,IAFA,IAAIm5Z,EAAU,GACV7tgB,EAAYg0W,aAAkB9hK,YAAgC,EAAhB8hK,EAAOh0W,OAChDi9P,EAAI,EAAGA,EAAIj9P,EAAQi9P,IAAK,CAO7B,IAJA,IAAI6wQ,EAFI95J,EAAO/2G,GACDp9P,QAAQ,iBAAkB,IACrBC,MAAM,KACrBiugB,EAAajxJ,KAAKgxJ,EAAO,IACzB3wZ,EAAS,IAAIF,YAAY8wZ,EAAW/tgB,QACpCgugB,EAAW,IAAIlgb,WAAWqvB,GACrBp9G,EAAI,EAAGA,EAAIgugB,EAAW/tgB,OAAQD,IACnCiugB,EAASjugB,GAAKgugB,EAAWxhe,WAAWxsC,GAExC8tgB,EAAQ9ogB,KAAKo4G,GAEjB,IAAK,IAAI7xG,EAAI,EAAGA,EAAIuigB,EAAQ7tgB,OAAQsL,IAAK,CACrC,IAAIR,EAAI,IAAIyhW,KAAK,CAACshK,EAAQvigB,IAAK,CAAEgD,KAAM,6BACb,SAAtBkb,IAAQ2B,KAAK5N,MACbtY,OAAO8kB,UAAUuif,iBAAiBxhgB,EAAG02E,EAAW,IAAMmsb,EAASj/D,uBAIpEg9D,EA3TsB,GCN7Blqe,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAkC5Dgse,GAAmC,SAAU3re,GAE7C,SAAS2re,IACL,OAAkB,OAAX3re,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAUyse,EAAmB3re,GAI7BR,GAAW,CACP3B,eACD8te,EAAkB5ugB,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,eACD8te,EAAkB5ugB,UAAW,WAAO,GACvCyiC,GAAW,CACP3B,YAAS,KACV8te,EAAkB5ugB,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,KACV8te,EAAkB5ugB,UAAW,aAAS,GAClC4ugB,EAjB4B,CAkBrCzle,KAKE0le,GAAmC,SAAU5re,GAE7C,SAAS4re,IACL,OAAkB,OAAX5re,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAU0se,EAAmB5re,GAI7BR,GAAW,CACP3B,aAAS,IACV+te,EAAkB7ugB,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,KACV+te,EAAkB7ugB,UAAW,iBAAa,GAC7CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,KAAMjmC,MAAO,GAAK0sT,KACpC2uK,EAAkB7ugB,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,SACV+te,EAAkB7ugB,UAAW,gBAAY,GACrC6ugB,EAjB4B,CAkBrC1le,KAKE2le,GAA8B,SAAU7re,GAExC,SAAS6re,IACL,OAAkB,OAAX7re,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA0B/D,OA5BAq+B,GAAU2se,EAAc7re,GAIxBR,GAAW,CACP3B,aAAS,IACVgue,EAAa9ugB,UAAW,8BAA0B,GACrDyiC,GAAW,CACP3B,aAAS,IACVgue,EAAa9ugB,UAAW,0BAAsB,GACjDyiC,GAAW,CACP3B,aAAS,IACVgue,EAAa9ugB,UAAW,+BAA2B,GACtDyiC,GAAW,CACP3B,aAAS,IACVgue,EAAa9ugB,UAAW,6BAAyB,GACpDyiC,GAAW,CACP3B,YAAS,OACVgue,EAAa9ugB,UAAW,YAAQ,GACnCyiC,GAAW,CACP3B,YAAS,CAAC,OAAQ,SAAU,UAAW,MAAO,WAC/Cgue,EAAa9ugB,UAAW,oBAAgB,GAC3CyiC,GAAW,CACP3B,aAAS,IACVgue,EAAa9ugB,UAAW,iBAAa,GACxCyiC,GAAW,CACP3B,aAAS,IACVgue,EAAa9ugB,UAAW,uBAAmB,GACvC8ugB,EA7BuB,CA8BhC3le,KAcE4le,GAAuB,SAAU9re,GAOjC,SAAS8re,EAAM3+f,EAAStL,GACpB,IAAIjB,EAAQo/B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAuBnD,OArBAD,EAAMmrgB,4BAA8B,GAEpCnrgB,EAAMoggB,UAAW,EAEjBpggB,EAAMy+f,kBAAmB,EAEzBz+f,EAAMmuc,aAAc,EAEpBnuc,EAAMorgB,YAAc,EAEpBprgB,EAAMm9D,QAAU,EAEhBn9D,EAAMqrgB,WAAa,EAEnBrrgB,EAAMsrgB,iBAAmB,EAEzBtrgB,EAAMo1e,cAAgB,YAEtBp1e,EAAMoxf,cAAe,EACrBpxf,EAAMurgB,QAAU,MAChBvugB,aAAS,mBAAoBgD,EAAMwrgB,sBAAuBxrgB,GACnDA,EAiyEX,OA/zEAs+B,GAAU4se,EAAO9re,GAmCjB8re,EAAM/ugB,UAAUqvgB,sBAAwB,WACpC,IAAI1wf,EAAO/Y,OAAO6lC,aAAaC,QAAQ5nC,KAAK66B,gBAAkB76B,KAAKgB,QAAQyY,IAC3E,IAAMrc,YAAkByd,IAAmB,KAATA,EAAe,CAC7C,IAAIswS,EAAUpwS,KAAKC,MAAMH,GACrB5d,EAAOiB,OAAOjB,KAAKkuT,GACvBnrT,KAAKw4B,qBAAsB,EAC3B,IAAK,IAAIx6B,EAAK,EAAGC,EAAShB,EAAMe,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAIhB,EAAMiB,EAAOD,GACS,kBAAdgC,KAAKhD,IAAuBI,YAAkB4C,KAAKhD,IAI3DgD,KAAKhD,GAAOmuT,EAAQnuT,GAHpBsB,YAAO0B,KAAKhD,GAAMmuT,EAAQnuT,IAMlCgD,KAAKw4B,qBAAsB,IAQnCyye,EAAM/ugB,UAAUsvgB,wBAA0B,SAAUvqW,GAChD,IAAI97J,EAAQ,kBACRsmgB,EAAiB,GACrB,GAAKtmgB,EAAMyF,KAAKq2J,GAaZ,OAAOA,EAZP,IAAK,IAAIrkK,EAAI,EAAGA,EAAIqkK,EAAUpkK,OAAQD,IAC7BuI,EAAMyF,KAAKq2J,EAAUrkK,MAAmC,IAA5BqkK,EAAU9iK,QAAQ,OACnB,IAA5B8iK,EAAU9iK,QAAQ,OAA4C,IAA7B8iK,EAAU9iK,QAAQ,MAInDstgB,GAAkBxqW,EAAUrkK,GAH5B6ugB,GAAmB,KAAOxqW,EAAUrkK,GAM5C,OAAO6ugB,GASfR,EAAM/ugB,UAAUirC,UAAY,WACxBnnC,KAAKgB,QAAQyY,GAAKzZ,KAAKwrgB,wBAAwBxrgB,KAAKgB,QAAQyY,IAG5DzZ,KAAKV,SAAWwC,OAAa,OAC7B9B,KAAKu4B,wBAAyB,EAC9Bv4B,KAAKkiI,eACLliI,KAAKise,sBACLjse,KAAK6c,aACL7c,KAAKk0C,aACDl0C,KAAK87e,aACkC,OAAnC97e,KAAK87e,WAAW1pY,QAAQrtF,SACxB/kB,KAAKoyG,QAAQrtF,OAAS,qBAEa,OAAnC/kB,KAAK87e,WAAW1pY,QAAQpnG,SACxBhL,KAAKoyG,QAAQpnG,OAAS,8HAEmB,KAArChL,KAAK87e,WAAW7X,OAAO,GAAG20B,SAC1B54f,KAAKoyG,QAAQpnG,QAAU,yCAG/BhL,KAAKm9f,eAAgB,IAG7B8N,EAAM/ugB,UAAU+ve,oBAAsB,WAWlC,GAVAjse,KAAKm9f,eAAgB,EACrBn9f,KAAKi9e,aAAc,EACnBj9e,KAAKutf,eAAiB,GACtBvtf,KAAKotf,aAAe,GACpBptf,KAAK2rf,cACL3rf,KAAK0rgB,kBAAkB1rgB,KAAK8oE,MAC5B9oE,KAAK0rgB,kBAAkB1rgB,KAAK+5D,SACxB/5D,KAAK2rgB,gBACL3rgB,KAAK2rgB,cAAc/W,eAAiB,IAEhB,KAApB50f,KAAKgB,QAAQyY,GAAW,CACxB,IAAIiiD,EAAal7D,SAASyuB,uBAAuB,WAAWpyB,OAC5DmD,KAAKgB,QAAQyY,GAAK,SAAWzZ,KAAKsrgB,QAAU,IAAM5vc,EAGtD17D,KAAK4rgB,MAAQ5rgB,KAAK87e,WAAa97e,KAAK87e,WAAW96e,QAAQyY,GAAK,oBACxDzZ,KAAKgB,QAAQyY,IAAMzZ,KAAK8of,aAAe,UAAY,SAK3DmiB,EAAM/ugB,UAAUwzB,OAAS,WACrB,IAAI3vB,EAAQC,KACZA,KAAK28f,YAAc,IAAIr4B,GAAYtke,KAAKgB,QAAQyY,IAChD,IAAIoyf,EAAgB,CAChBn5B,MAAO1ye,KAAKV,SAAW,GAAKU,KAAMg+E,MAAOh+E,KAAKg+E,MAAO5jE,KAAMu8B,GAAM5zB,QAAQ,GAExE/iB,KAAK87e,YAYN97e,KAAKmxf,aAAsF,QAAtErvf,OAAOwhC,iBAAiB9iC,SAAS8C,cAAc,SAASi8F,UAC7Ev/F,KAAK8rgB,wBAAwBD,IAT7B7rgB,KAAK+pB,QAAQ4sB,GAAMk1d,GAAe,WACzBA,EAAc9of,QACfhjB,EAAM+rgB,wBAAwBD,OAU9CZ,EAAM/ugB,UAAU4vgB,wBAA0B,SAAUC,GAChD/rgB,KAAKg+E,MAAQh+E,KAAKV,SAAWysgB,EAAiB/tb,MAAQh+E,KAAKg+E,MAC3Dh+E,KAAKgsgB,iBACLhsgB,KAAKisgB,WACLjsgB,KAAKs9f,aAAe,IAAI6B,GAAOn/f,MAC/BA,KAAKksgB,oBACLlsgB,KAAKmsgB,yBACLnsgB,KAAKosgB,0BACLpsgB,KAAKqsgB,iBACLrsgB,KAAKssgB,uBACLtsgB,KAAKg8F,cACLh8F,KAAK+nC,iBACL/nC,KAAKu4B,wBAAyB,GAQlC0ye,EAAM/ugB,UAAUyqJ,kBAAoB,SAAU3pJ,GAC1C,OAAOgD,KAAK42C,aAAaC,YAAY75C,IAOzCiugB,EAAM/ugB,UAAU4jC,QAAU,SAAUgB,GAChC9gC,KAAKk9e,QAAS,EACdl9e,KAAKmggB,UAAW,EAChBnggB,KAAK8gC,SAAWA,GAAsB,KAO1Cmqe,EAAM/ugB,UAAUw+f,aAAe,WAiB3B,GAhBA16f,KAAKkrgB,4BAA8B,GAC/BlrgB,KAAKusgB,cAAgBvsgB,KAAK8ggB,eAAe5jc,SACzCl9D,KAAKusgB,aAAaC,iBAAiBxsgB,KAAKsvf,cAAetvf,MAQvDA,KAAKoyG,QAAQoiC,QAAUx0I,KAAK2rgB,gBAC5B3rgB,KAAK2rgB,cAAc/W,eAAiB,IAExC50f,KAAKysgB,uBACLzsgB,KAAK6+a,kBAED7+a,KAAK87e,aAAe97e,KAAK87e,WAAW4wB,aAChC1sgB,KAAK87e,WAAW6wB,sBAAwB3sgB,KAAK87e,WAAW8wB,gBACxD,OAAO,KAGf5sgB,KAAK6sgB,iBACL9wd,GAAc,oBACd/7C,KAAK89J,mBAKTmtW,EAAM/ugB,UAAUuwgB,qBAAuB,WAGnC,IAFA,IAAIxoC,EACA6oC,GAAsB,EACjBlwgB,EAAI,EAAG+E,EAAM3B,KAAKsvf,cAAczyf,OAAQD,EAAI+E,EAAK/E,KACtDqne,EAASjke,KAAKsvf,cAAc1yf,IACrBmxC,SAAWk2b,EAAO8oC,eAAY/wgB,GACM,IAArCioe,EAAO94d,KAAKhN,QAAQ,eAAiE,IAAzC8le,EAAOyQ,SAASv2e,QAAQ,aAC5C,eAAvB6B,KAAKm1e,gBAAqC23B,IAC7C7oC,EAAOm3B,sBAAsBn3B,EAAO94d,KAAKhN,QAAQ,QAAU,EAAG6B,MAC9D8sgB,GAAsB,IAIlC7B,EAAM/ugB,UAAU4hK,gBAAkB,WAC9B,IAAK,IAAI9/J,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIime,EAAS1ge,EAAGvF,GAChB,GAAIime,EAAO/ma,QACP,IAAK,IAAInoC,EAAK,EAAGI,EAAK8uc,EAAOtoZ,OAAQ5mD,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAC3CI,EAAGJ,GACTu5Q,UAAW,GAIzBzrS,GAAW7C,KAAKgB,QAAQyY,GAAK,0BACzBzZ,KAAKo1f,cAAcj3f,QAAQ,SAAW,IACtC6B,KAAKuvS,gBAAgBy9N,YAAc,IAEvCjxd,GAAc/7C,KAAKgB,QAAQyY,GAAK,yBAChCzZ,KAAKuvS,gBAAgB09N,8BAA8BjtgB,KAAM,IAAIire,GAAK,EAAG,EAAG,EAAG,IAAI,IAE1Epoe,GAAW7C,KAAKgB,QAAQyY,GAAK,qBACP,UAAvBzZ,KAAKo1f,gBACLp1f,KAAKuvS,gBAAgBy9N,YAAc,IAEvCjxd,GAAc/7C,KAAKgB,QAAQyY,GAAK,mBAChCzZ,KAAKuvS,gBAAgB09N,8BAA8BjtgB,KAAM,IAAIire,GAAK,EAAG,EAAG,EAAG,IAAI,KAGvFggC,EAAM/ugB,UAAU2wgB,eAAiB,WAC7B7sgB,KAAKktgB,eACLltgB,KAAKi1M,cACLj1M,KAAKmtgB,mBACLntgB,KAAKotgB,qBAAqBptgB,KAAKouf,cAC/Bpuf,KAAKijgB,eACLjjgB,KAAKqtgB,eACLrtgB,KAAKstgB,mBACLttgB,KAAKutgB,8BACL,IAAK,IAAIvvgB,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIxB,EAAQ+G,EAAGvF,GACfuwB,aAAqBvuB,KAAKgB,QAAQyY,GAAK,aAAc,WAAYjd,EAAMw6Z,OAAO4tF,WAElF5kf,KAAKwtgB,oBAOTvC,EAAM/ugB,UAAUkyf,WAAa,WAEzB,IAAIE,EAOJ,OARAtuf,KAAKytgB,cAAgBztgB,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIzZ,KAAKgB,QAAQyY,GAAK,oBAEnEzZ,KAAK8oE,KAAKjsE,OAAS,GAAKmD,KAAK+5D,QAAQl9D,OAAS,IAC9Cyxf,EAActuf,KAAKm+f,qBAAqB/P,cAExCpuf,KAAK0tgB,iBACL1tgB,KAAK0tgB,gBAAgBC,gBAAgB3tgB,KAAM,SAAUA,KAAK47e,iBAEvD0S,GAKX2c,EAAM/ugB,UAAU+mgB,aAAe,WAC3B,GAAIjjgB,KAAKusgB,cAAgBvsgB,KAAKusgB,aAAajJ,kBAAkBzmgB,QAAUmD,KAAK8ggB,eAAe5jc,QAAS,CAChGl9D,KAAKusgB,aAAa9E,cAAe,EACjC,IAAIl9d,EAAcvqC,KAAK8ggB,eAAen4V,OAAOj5H,MACzComV,EAAS91X,KAAKusgB,aAAa3K,aAC3B1xd,EAAO,IAAI+6b,GAAKn1G,EAAOv0W,EAAGu0W,EAAOx/W,EAAGw/W,EAAOpmV,MAAOomV,EAAOnmV,QACzD3vC,KAAK8of,eACL54c,EAAO,IAAI+6b,GAAK/6b,EAAK3uB,EAAIgpB,EAAc,EAAG2F,EAAK55B,EAAIi0B,EAAc,EAAG2F,EAAKR,MAAQnF,EAAa2F,EAAKP,OAASpF,GAC5GvqC,KAAKomS,SAASgkM,WAAWl6b,IAE7BlwC,KAAKusgB,aAAatJ,aAAajjgB,KAAMA,KAAK8ggB,eAAgBhrI,GACtD91X,KAAK8of,cACL9of,KAAKomS,SAASikM,gBAGjBrqe,KAAKk9e,SACDl9e,KAAK87e,WAIDj5e,GAAW7C,KAAK87e,WAAWiN,YAAYtve,KACxCzZ,KAAK87e,WAAW8xB,WAAW5rgB,YAAYhC,KAAKwse,WAJhDxse,KAAKgB,QAAQgB,YAAYhC,KAAKwse,aAY1Cy+B,EAAM/ugB,UAAUqxgB,4BAA8B,WAC1C,IAAIvsgB,EAAU6B,GAAW7C,KAAKgB,QAAQyY,GAAK,sBAC3C,GAAKzY,EAAL,CAGA,IAAIkvC,EAAOlwC,KAAKgB,QAAQqhC,wBACpBwre,EAAUhrgB,GAAW7C,KAAK4rgB,OAAOvpe,wBACrCrhC,EAAQgzB,MAAM8O,KAAOv7B,KAAK8L,IAAIw6f,EAAQ/qe,KAAOoN,EAAKpN,KAAM,GAAK,KAC7D9hC,EAAQgzB,MAAMgP,IAAMz7B,KAAK8L,IAAIw6f,EAAQ7qe,IAAMkN,EAAKlN,IAAK,GAAK,OAE9Dioe,EAAM/ugB,UAAU4xgB,yBAA2B,WACvC9tgB,KAAKilf,qBAAuB,GAC5B,IAAIhkV,EAAYjhK,KAAKgB,QAAQyY,GACzBzZ,KAAKike,OAAOpne,SACZmD,KAAKw8f,eAA0C,YAAxBx8f,KAAKike,OAAO,GAAG94d,MAA8C,WAAxBnL,KAAKike,OAAO,GAAG94d,KACvEnL,KAAK28f,YAAY12B,YAAY,CAAExsd,GAAIwnJ,EAAY,qBAC/CjhK,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIwnJ,EAAY,sBAEhDjhK,KAAK0nR,WAAW7qR,SAChBmD,KAAK+tgB,kBAAoB/tgB,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIwnJ,EAAY,yBAErEjhK,KAAKgugB,kBACLhugB,KAAKiugB,kBAAoBjugB,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIwnJ,EAAY,yBAEzEjhK,KAAKi9f,kBAAoBj9f,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIwnJ,EAAY,yBAEzEgqW,EAAM/ugB,UAAU8xgB,cAAgB,WAE5B,IADA,IAAIE,EACKlwgB,EAAK,EAAGuF,EAAKvD,KAAKike,OAAQjme,EAAKuF,EAAG1G,OAAQmB,IAAM,CAGrD,GADAkwgB,IADa3qgB,EAAGvF,GACKy8f,WAAW59f,OAE5B,MAGR,OAAOqxgB,GAEXjD,EAAM/ugB,UAAUkxgB,qBAAuB,SAAU9e,GAE7Ctuf,KAAK8tgB,2BACL,IAAI7sW,EAAYjhK,KAAKgB,QAAQyY,GAC7B,GAA6B,MAAzBzZ,KAAKgB,QAAQgvB,QAAiB,CAC9B,IAAI49c,EAAamV,GAAc/if,KAAKk9e,OAAQj8U,EAAY,uBACpDjhK,KAAKmB,cAAc,OACvByse,EAAWn0d,GAAKwnJ,EAAY,qBAC5B2sU,EAAWh4c,aAAa,QAAS,sBACjCiwd,IAAmB,EAAO7lf,KAAKgB,QAAS4se,EAAY5te,KAAKk9e,QAG7D,GAAIl9e,KAAK8of,aAAc,CACnB,IAAIqlB,EAAa3tgB,SAASuuB,eAAekyI,EAAY,sBACrDktW,EAAcA,GAAanugB,KAAKmB,cAAc,MAAO,CAAEsY,GAAIwnJ,EAAY,qBACnEluI,MAAO,CAAE,MAAS,2CACtB,IAAIi2e,EAAMhpgB,KAAK28f,YAAYh4B,UAAU,CACjClrd,GAAIwnJ,EAAY,eAChBvxH,MAAO1vC,KAAKujf,cAAc7zc,MAC1BC,OAAQ3vC,KAAKujf,cAAc5zc,SAE/Bq5d,EAAIpze,aAAa,QAAS,4CAC1Bu4e,EAAWnsgB,YAAYgngB,GAGvBhpgB,KAAKoyG,QAAQoiC,QACbqxW,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIwnJ,EAAY,mBAAoBjtI,MAAO,yBAA2Bh0B,KAAKk9e,QAE7Jl9e,KAAK8oE,KAAKjsE,OAAS,GAAKmD,KAAK+5D,QAAQl9D,OAAS,IAC9CmD,KAAKougB,sBACLpugB,KAAKqugB,sBACLrugB,KAAKo8f,eAEDp8f,KAAKiugB,mBACLpoB,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAKiugB,kBAAmBjugB,KAAKk9e,QAEvFl9e,KAAKsugB,0BAA0BhgB,KAMvC2c,EAAM/ugB,UAAUkggB,aAAe,WAE3B,IADA,IACSp+f,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIw9C,EAAOj4C,EAAGvF,IACQ,cAAlBw9C,EAAK68D,SACQr4G,KAAKike,OAAOzob,EAAK+yd,aAAa9T,WAAWj/c,EAAKhhC,OAAO0iD,QAGrD1hB,EAAK0hB,WAGlBl9D,KAAKk9D,UACLwkb,GAAalmc,GACTx7C,KAAK8of,eAEL9of,KAAKwugB,mBAAmBhzd,GAExBx7C,KAAKomS,SAASgkM,WAAWpqe,KAAKm+f,qBAAqBjW,iBAEvD1sc,EAAK4gd,aAAap8f,MACdA,KAAK8of,cACL9of,KAAKomS,SAASikM,iBAI1Brqe,KAAKk9D,QAAU,EACf,IAAI5wD,EAAU,CACV,GAAMtM,KAAKgB,QAAQyY,GAAK,sBACxB,EAAKzZ,KAAKm+f,qBAAqBjW,eAAe3me,EAC9C,EAAKvhB,KAAKm+f,qBAAqBjW,eAAe5xe,EAC9C,MAAStW,KAAKm+f,qBAAqBjW,eAAex4c,MAClD,OAAU1vC,KAAKm+f,qBAAqBjW,eAAev4c,OACnD,KAAQ,cACR,eAAgB,EAChB,OAAU,QAEd,GAAK3vC,KAAKw8f,eAAV,CAGKx8f,KAAK8of,cACN9of,KAAKw8f,eAAex6f,YAAY6gf,GAAkB7if,KAAKk9e,OAAQ5we,EAAStM,KAAKomS,WAEjF,IAAIqoO,EAAYjugB,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,eACtDg1f,EACA5oB,IAAmB,EAAO4oB,EAAWzugB,KAAKw8f,eAAgBx8f,KAAKk9e,QAG/D2I,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAKw8f,eAAgBx8f,KAAKk9e,UAGxF+tB,EAAM/ugB,UAAUsygB,mBAAqB,SAAUhzd,GAC3C,IAAIkzd,EACAC,EACJ,GAAmB,WAAdnzd,EAAKrwC,MAAmC,YAAdqwC,EAAKrwC,KAAqB,CACrDujgB,EAAcA,GAAa1ugB,KAAK28f,YAAYh4B,UAAU,CAAElrd,GAAIzZ,KAAKgB,QAAQyY,GAAK,cAC1Ei2B,MAAO1vC,KAAKujf,cAAc7zc,MAAOC,OAAQ3vC,KAAKujf,cAAc5zc,UAChEg/d,EAAcA,GAAa3ugB,KAAKmB,cAAc,MAAO,CAAEsY,GAAIzZ,KAAKgB,QAAQyY,GAAK,aAClEmc,aAAa,QAAS,sBACjC,IAAIg5e,EAAcpugB,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,sBAC5Dk1f,EAAW3sgB,YAAY0sgB,GACvBE,EAAY5sgB,YAAY2sgB,GAE5BD,GAAc1ugB,KAAK8of,cAA+B,WAAdttc,EAAKrwC,MAAmC,YAAdqwC,EAAKrwC,KAClDnL,KAAKwse,UAAlBkiC,IAEU1ugB,KAAK8of,cAA+B,WAAdttc,EAAKrwC,MAAmC,YAAdqwC,EAAKrwC,OACvDnL,KAAK8of,cAErBmiB,EAAM/ugB,UAAUkygB,oBAAsB,WAClC,IAAK,IAAIpwgB,EAAK,EAAGuF,EAAKvD,KAAK0nR,WAAY1pR,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzD,IAAIioR,EAAY1iR,EAAGvF,GACfgC,KAAK69e,GAAiB53N,EAAU96Q,MAAQ,oBACxCnL,KAAK69e,GAAiB53N,EAAU96Q,MAAQ,mBAAmB0jgB,wBAAwB7ugB,KAAMimR,EAAWA,EAAUzrQ,OAGlHxa,KAAK+tgB,mBACLloB,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAK+tgB,kBAAmB/tgB,KAAKk9e,SAG3F+tB,EAAM/ugB,UAAUmygB,oBAAsB,WAClC,IAAK,IAAIrwgB,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIime,EAAS1ge,EAAGvF,GACZime,EAAOw2B,WAAW59f,QAClBmD,KAAK+2f,gBAAgB+X,qBAAqB7qC,EAAQjke,QAI9DirgB,EAAM/ugB,UAAUoygB,0BAA4B,SAAUhgB,GACvB,eAAvBtuf,KAAKm1e,eACL0Q,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAKytgB,cAAeztgB,KAAKk9e,QAEnF2I,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAW8hB,EAAatuf,KAAKk9e,SACnEl9e,KAAKw7e,YAAcx7e,KAAK07e,aAAa0Q,iBAAmBpsf,KAAK27H,cAAcj4D,mBAC3E1jE,KAAK27H,eAAiB37H,KAAK27H,cAAcj4D,oBAC1Cmib,IAAmB,EAAOhjf,GAAW7C,KAAKgB,QAAQyY,GAAK,sBAAuBzZ,KAAK27H,cAAe37H,KAAKk9e,QAEvGl9e,KAAK0tgB,iBACL1tgB,KAAK0tgB,gBAAgBC,gBAAgB3tgB,KAAM,OAAQA,KAAK47e,iBAEvD57e,KAAKoyG,QAAQoiC,QACdqxW,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIzZ,KAAKgB,QAAQyY,GAAK,mBAAoBua,MAAO,yBAA2Bh0B,KAAKk9e,QAEnKl9e,KAAK87e,YACL97e,KAAK87e,WAAWizB,wBAGxB9D,EAAM/ugB,UAAUmxgB,aAAe,WAKA,eAAvBrtgB,KAAKm1e,gBAGJn1e,KAAKk9e,SAAUl9e,KAAKw7e,YAAgBx7e,KAAK07e,aAAaszB,YAAahvgB,KAAKw7e,WAAWyzB,aACpFjvgB,KAAKw7e,WAAW0zB,iBAAiBlvgB,KAAMA,KAAK47e,mBAQpDqvB,EAAM/ugB,UAAUsxgB,iBAAmB,WAC3BxtgB,KAAKmvgB,kBAELnvgB,KAAKmvgB,iBAAiBC,kBAAkBvsgB,IAAY7C,KAAK87e,WAAa97e,KAAK87e,WAAW96e,QAAQyY,GAAKzZ,KAAKgB,QAAQyY,IAAM,wBAG9Hwxf,EAAM/ugB,UAAUoxgB,iBAAmB,WAC/B,IAAI+B,EAAsB,GACtBrvgB,KAAKuvS,kBACL8/N,EAAsB/wgB,YAAO,GAAI0B,KAAKuvS,gBAAgB8/N,oBAAqB,MAAM,GACjFrvgB,KAAKuvS,gBAAgB+/N,gBAAgBtvgB,OAErCA,KAAK6+f,iBACL7+f,KAAK6+f,gBAAgB0Q,gBAAgBvvgB,MAErCqvgB,EAAoBxygB,OAAS,IAC7BmD,KAAKuvS,gBAAgB8/N,oBAAsBA,EAC3CrvgB,KAAKuvS,gBAAgBigO,gBAAgBxvgB,KAAMA,KAAKo1f,iBAGxD6V,EAAM/ugB,UAAU8/F,YAAc,SAAUtsE,QACrB,IAAXA,IAAqBA,GAAS,GAClC1vB,KAAKi3f,mBAAqB,EAE1B,IADA,IAAI9lZ,GAAQ,EACHnzG,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIime,EAAS1ge,EAAGvF,GACXime,EAAO/ma,SAAYl9D,KAAK8ggB,eAAe5jc,QAIpB,cAApB+ma,EAAO5rX,UAAgD,cAApB4rX,EAAO5rX,UAC1Cr4G,KAAKyvgB,qBAAqBxrC,GAJ1Bjke,KAAKi3f,qBAOb,IAAK,IAAIlie,EAAK,EAAGI,EAAKn1B,KAAK0nR,WAAY3yP,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACzD,IAAIkxP,EAAY9wP,EAAGJ,GACnB,GAAIkxP,EAAUnkN,WAAY,CACtB,IAAI4tc,EAAgBzpP,EACpBjmR,KAAKyvgB,qBAAqBC,GAC1Bv+Z,GAAQ,GAGZzhF,KAAY1vB,KAAKsvf,cAAczyf,QAAUmD,KAAKi3f,qBAAuBj3f,KAAKsvf,cAAczyf,QAAUs0G,KAClGnxG,KAAK06f,eACL16f,KAAK+pB,QAAQ,SAAU,CAAE2od,MAAO1ye,KAAKV,SAAW,GAAKU,SAG7DirgB,EAAM/ugB,UAAUuzgB,qBAAuB,SAAUxrC,GAG7C,IAAInia,EAFJmia,EAAOoyB,MAAQ,GACfpyB,EAAOw1B,MAAQ,GAIX33b,EADA9hE,KAAc,UACD9B,OAAOjB,KAAKgne,EAAOnia,YAAYjlE,OAASone,EAAOnia,WAAa9hE,KAAK8hE,WAGjEmia,EAAOnia,YAAc9hE,KAAK8hE,WAE3Cmia,EAAOk2B,WAAa,IAAIlsZ,GAAKnsC,EAAYmia,EAAOtia,OAChDsia,EAAOtoZ,OAAS,GAChBsoZ,EAAOr9L,mBAAmB5mS,OAE9BirgB,EAAM/ugB,UAAU2ib,gBAAkB,WAC9B,IAAIxxY,EAASrtC,KAAKqtC,OAEd80d,EAAc,EACdwN,EAAiB,EACjBrI,EAAa,EAEbxke,EAAOuK,EAAOvK,KACd4M,EAAQ1vC,KAAKujf,cAAc7zc,MAAQ5M,EAAOuK,EAAOtK,MAAQ/iC,KAAK2oK,OAAOj5H,MAGzE,GAFA1vC,KAAKm6e,gBAAkB,GACvBn6e,KAAK4vgB,mBAAqB,GACtB5vgB,KAAKonJ,QACLpnJ,KAAKm6e,gBAAkB9vS,GAASrqM,KAAKonJ,MAAOpnJ,KAAK46e,WAAYlrc,GAC7Dyyd,EAAe73B,GAAYtqe,KAAKonJ,MAAOpnJ,KAAK46e,YAAYjrc,OAAS3vC,KAAKm6e,gBAAgBt9e,OAP5E,GAQNmD,KAAK6vgB,UAAU,CAEf,IADA,IAAIn1X,EAAW,EACN18I,EAAK,EAAGuF,EAAKvD,KAAKm6e,gBAAiBn8e,EAAKuF,EAAG1G,OAAQmB,IAAM,CAG9D08I,GADA4sX,EAAah9B,GADG/me,EAAGvF,GACiBgC,KAAK46e,YAAYlrc,OAC7BgrG,EAAW4sX,EAAa5sX,EAEpD16I,KAAK4vgB,mBAAqBvlU,GAASrqM,KAAK6vgB,SAAU7vgB,KAAK8vgB,cAAep1X,GACtEi1X,EAAkBrlC,GAAYtqe,KAAK6vgB,SAAU7vgB,KAAK8vgB,eAAenge,OAAS3vC,KAAK4vgB,mBAAmB/ygB,OAhB5F,GAoBd,IAAImmC,EAAMqK,EAAOrK,IAAM2se,EAAiBxN,EAA4C,GAA9BnigB,KAAK6wf,UAAUloV,OAAOj5H,MACxEC,EAAS3vC,KAAKujf,cAAc5zc,OAAS3M,EAAMhjC,KAAK2oK,OAAOj5H,MAAQrC,EAAOpK,OAC1EjjC,KAAKg9e,gBAAkB,IAAI/R,GAAKnoc,EAAME,EAAK0M,EAAOC,GAC9C3vC,KAAKusgB,cAAgBvsgB,KAAK8ggB,eAAe5jc,SACzCl9D,KAAKusgB,aAAa5K,sBAAsB3hgB,KAAKg9e,gBAAiBh9e,KAAKujf,cAAe,MAEtFvjf,KAAKm+f,qBAAqBtjL,YAAY76U,KAAKg9e,kBAK/CiuB,EAAM/ugB,UAAU6E,MAAQ,SAAU0Y,GACZ,IAAI8uf,GAAYvogB,MACtBe,MAAM0Y,IAKtBwxf,EAAM/ugB,UAAUmwgB,eAAiB,WAC7BrsgB,KAAKw4B,qBAAsB,EAC3B,IAAK,IAAIx6B,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAGtD,IAFA,IAAIime,EAAS1ge,EAAGvF,GACZ+xgB,EAAa,EACRh7e,EAAK,EAAGI,EAAK8uc,EAAOw2B,WAAY1le,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAC3D,IACIi7e,EADY76e,EAAGJ,GAEf/0B,KAAK+2f,kBACLiZ,EAAUx1f,MAAQu1f,EAClBC,EAAUzB,YAActqC,EAAOzpd,MAC/Bxa,KAAK+2f,gBAAgBkZ,qBAAqBD,EAAWhwgB,MACjDgwgB,EAAU1H,eACV0H,EAAU1H,aAAatmB,UAAY/d,EAAO+d,UAC1CguB,EAAU1H,aAAa4H,UAAYjsC,EAAOisC,UAC1ClwgB,KAAKsvf,cAAc1tf,KAAKougB,EAAU1H,gBAG1CyH,IAGR/vgB,KAAKw4B,qBAAsB,GAE/Byye,EAAM/ugB,UAAUgwgB,kBAAoB,WAChC,IAAIjoC,EAASjke,KAAKike,OAAO,GACzBjke,KAAK6wf,UAAUloV,OAAOj5H,MAAQ1vC,KAAK87e,WAAa,EAAI97e,KAAK6wf,UAAUloV,OAAOj5H,MACtEu0b,IACAjke,KAAKu0e,qBAAwD,IAAhCtQ,EAAO94d,KAAKhN,QAAQ,SAAmB6B,KAAKi1f,eACnC,IAAhChxB,EAAO94d,KAAKhN,QAAQ,QAAkB6B,KAAKi1f,cAAuC,eAAvBj1f,KAAKm1e,eAE1En1e,KAAKm+f,qBAA8C,eAAvBn+f,KAAKm1e,cAAkCn1e,KAAKmwgB,mBAAqBnwgB,KAAKowgB,kBAC5F,IAAIllB,GAAyBlrf,OAOvCirgB,EAAM/ugB,UAAUowgB,qBAAuB,WACnC,IAAIvge,EACAwrC,EAAO,CAACv3E,KAAK4gf,aAAc5gf,KAAK6tf,cACpCt2a,EAA8B,cAAvBv3E,KAAKm1e,cAAgC59Z,EAAKzlD,OAAO9xB,KAAKu3E,MAAQA,EACjEv3E,KAAK83f,oBAA8C,WAAxB93f,KAAKike,OAAO,GAAG94d,OAC1CosE,EAAOA,EAAKzlD,OAAO9xB,KAAK83f,mBAAmBuY,aAE/CrwgB,KAAK47e,gBAAkB,GACnB57e,KAAKw7e,aACLx7e,KAAKw7e,WAAW80B,UAAYtwgB,KAAKw7e,WAAW+0B,aAAah5b,IAASv3E,KAAK07e,aAAaszB,UACpFhvgB,KAAKwse,UAAU52c,aAAa,SAAU51B,KAAKw7e,WAAW80B,UAAY,UAAY,QAC1EtwgB,KAAKmsf,kBACLnsf,KAAKmsf,gBAAgB50a,KAAOA,IAGhCv3E,KAAKwwgB,sBACDxwgB,KAAKmsf,kBACLnsf,KAAKmsf,gBAAgB50a,KAAOA,GAGpC,IAAK,IAAI36E,EAAI,EAAG+E,EAAM41E,EAAK16E,OAAQD,EAAI+E,EAAK/E,IAAK,EAC7CmvC,EAAOwrC,EAAK36E,IACPqne,OAAS,GACdl4b,EAAK4/O,OAAS,GACd,IAAK,IAAI3tR,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIime,EAAS1ge,EAAGvF,GAChBgC,KAAKywgB,SAASxsC,EAAQl4b,GAAM,GAEhC,IAAK,IAAIhX,EAAK,EAAGI,EAAKn1B,KAAK0nR,WAAY3yP,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACzD,IAAIkxP,EAAY9wP,EAAGJ,GACnB/0B,KAAKywgB,SAASxqP,EAAWl6O,GAAM,GAE/B/rC,KAAKmsf,kBAAoBpgd,EAAKqpc,kBAC9Bp1e,KAAKmsf,gBAAgBukB,SAAS3ke,EAAM/rC,MAEhB,MAApB+rC,EAAKq3V,aACLpjY,KAAK47e,gBAAgBh6e,KAAKmqC,GAG9B/rC,KAAK8oE,KAAKjsE,OAAS,GAAKmD,KAAK+5D,QAAQl9D,OAAS,GAC9CmD,KAAKm+f,qBAAqBlqb,WAGlCg3b,EAAM/ugB,UAAUu0gB,SAAW,SAAUxsC,EAAQl4b,EAAM4ke,GAC3C1sC,EAAO+d,YAAcj2c,EAAK3xB,MAA6B,MAApB6pd,EAAO+d,WAAmC,iBAAdj2c,EAAK3xB,MACpE2xB,EAAKq3V,YAAcpjY,KAAKu0e,oBAAsB,WAAa,aAC3DtQ,EAAOpkW,MAAQ9zF,EACX4ke,GACA5ke,EAAKk4b,OAAOrie,KAAKqie,KAGhBA,EAAOisC,YAAcnke,EAAK3xB,MAA6B,MAApB6pd,EAAOisC,WAAmC,iBAAdnke,EAAK3xB,QACzE2xB,EAAKq3V,YAAcpjY,KAAKu0e,oBAAsB,aAAe,WAC7DtQ,EAAOtkW,MAAQ5zF,EACX4ke,GACA5ke,EAAKk4b,OAAOrie,KAAKqie,KAI7BgnC,EAAM/ugB,UAAUkwgB,wBAA0B,WAEtC,IADA,IAAIxvgB,EAAI,EACCoB,EAAK,EAAGuF,EAAKvD,KAAK0nR,WAAY1pR,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzD,IAAIioR,EAAY1iR,EAAGvF,GACf0xgB,EAAgBzpP,EAChB96Q,EAAO0ye,GAAiB6xB,EAAcvkgB,MAC1C,GAAInL,KAAKmL,EAAO,mBAAoB,CAChCukgB,EAAcl1f,MAAQ5d,EACtBoD,KAAKmL,EAAO,mBAAmB8kgB,qBAAqBP,EAAe1vgB,MACnE,IAAK,IAAI+0B,EAAK,EAAGI,EAAKu6e,EAAcpH,aAAcvze,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACpE,IAAIuze,EAAenze,EAAGJ,IAClBkxP,EAAU2qP,YAAc3qP,EAAUnkN,aAClC9hE,KAAKsvf,cAAc1tf,KAAK0mgB,IAIpC1rgB,MAIRqugB,EAAM/ugB,UAAUs+f,0BAA4B,SAAUv2B,GAClD,GAAIjke,KAAK0nR,WAAW7qR,OAAQ,CAExB,GAAIone,aAAkBwzB,IAA8B,cAApBxzB,EAAO5rX,SACnC,IAAK,IAAIr6G,EAAK,EAAGuF,EAAKvD,KAAK0nR,WAAY1pR,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzD,IAAIioR,EAAY1iR,EAAGvF,GACfioR,EAAU2qP,aAAe3sC,EAAO7pd,MAAS6rQ,EAAUnkN,YACjCmkN,EACF6wO,cAAc7yB,EAAQjke,WAIzCike,aAAkBokC,IACLpkC,EACF6yB,cAAc7yB,aAAkBwzB,GAASxzB,EAAS,KAAMjke,QAIpFirgB,EAAM/ugB,UAAUiwgB,uBAAyB,WACrC,IAAIloC,EACJjke,KAAKsvf,cAAgB,GAIrB,IAHA,IAAIlrO,EAASpkR,KAAK6wgB,SAASh0gB,OAASmD,KAAK6wgB,SAAWzvC,GAAephe,KAAKg+E,OACpEljB,EAAQspN,EAAOvnR,OACf8kf,EAAmB3hf,KAAKike,OAAOpiZ,MAAK,SAAU94E,EAAGpB,GAAK,OAAOoB,EAAE+ngB,OAASnpgB,EAAEmpgB,UACrEl0gB,EAAI,EAAG+E,EAAMggf,EAAiB9kf,OAAQD,EAAI+E,EAAK/E,IAAK,CAMzD,QALAqne,EAAS0d,EAAiB/kf,IAEnBy7G,SAAwC,WAA7BspY,EAAiB,GAAGx2e,KAAoB,SAAW,SACrE84d,EAAOzpd,MAAQ5d,EACfqne,EAAO40B,SAAW50B,EAAO7nS,MAAQgoF,EAAOxnR,EAAIk+D,GACpCmpa,EAAO94d,MACX,IAAK,MACL,IAAK,cACL,IAAK,iBACD,IAAiD,IAA7Cw2e,EAAiB,GAAGx2e,KAAKhN,QAAQ,OACjC,SAEJ,MACJ,IAAK,QACL,IAAK,QACD,GAA2B,eAAvB6B,KAAKm1e,cACL,SAEJ,GAA2B,eAAvBn1e,KAAKm1e,gBAAyD,OAArBlR,EAAO+d,WAA2C,OAArB/d,EAAOisC,WACvD,OAArBjsC,EAAO+d,WAA2C,OAArB/d,EAAOisC,WACf,OAArBjsC,EAAO+d,WAA2C,OAArB/d,EAAOisC,WACrC,SAEJ,MACJ,IAAK,SACDlwgB,KAAKsvf,cAAc1tf,KAAKqie,GACxBjke,KAAK83f,mBAAmBiZ,WAAW9sC,EAAQjke,MAC3C,SACJ,QACI,GAA2B,eAAvBA,KAAKm1e,eAAkCwM,EAAiB,GAAGx2e,KAAKhN,QAAQ,QAAU,EAClF,SAIZ6B,KAAKsvf,cAAc1tf,KAAKqie,GACxB0d,EAAiB/kf,GAAKqne,IAG9BgnC,EAAM/ugB,UAAU+4M,YAAc,WAC1B,IAAI/kK,EACA7C,EAASrtC,KAAKqtC,OAClB,GAAIrtC,KAAKonJ,MAAO,CACZ,IAAI29I,EAAY/kS,KAAK46e,WAAWzvG,cAC5BqmH,EAA0B,SAAdzsN,EAAuB,QAAwB,QAAdA,EAAsB,MAAQ,SAC3E+oM,EAAcxD,GAAYtqe,KAAKonJ,MAAOpnJ,KAAK46e,YAC/C1qc,EAAO,IAAI+6b,GAAK59b,EAAOvK,KAAM,EAAG9iC,KAAKujf,cAAc7zc,MAAQrC,EAAOvK,KAAOuK,EAAOtK,MAAO,GACvF,IAAIz2B,EAAU,IAAI8+d,GAAWpre,KAAKgB,QAAQyY,GAAK,cAAewve,GAAe/4c,EAAMlwC,KAAK46e,YAAa56e,KAAKqtC,OAAOrK,IAA8B,EAAtB8qc,EAAYn+b,OAAc,EAAI6hd,EAAWxxf,KAAKm6e,gBAAiB,GAAI,QACxLn5e,EAAU+hf,GAAc/if,KAAKk9e,OAAQl9e,KAAKgB,QAAQyY,GAAK,cAAenN,EAAStM,KAAKomS,WACpF8pM,GAAYlwe,KAAKomS,SAAU95R,EAAStM,KAAK46e,WAAY56e,KAAK46e,WAAWjla,OAAS31E,KAAKqse,WAAWtK,WAAY/he,KAAKwse,UAAW,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAM,KAAMxse,KAAK8of,cAC/K9nf,IACAA,EAAQ40B,aAAa,aAAc51B,KAAKs4T,aAAet4T,KAAKonJ,OAC5DpmJ,EAAQ40B,aAAa,WAAY51B,KAAKq9I,SAASlwI,aAE/CnN,KAAK6vgB,UACL7vgB,KAAKgxgB,eAAe1kgB,KAIhC2+f,EAAM/ugB,UAAU80gB,eAAiB,SAAU1kgB,GAQvC,IAPA,IAAIouI,EAAW,EACX4sX,EAAa,EAKbviO,EAAY/kS,KAAK46e,WAAWzvG,cACvBntY,EAAK,EAAGuF,EAAKvD,KAAKm6e,gBAAiBn8e,EAAKuF,EAAG1G,OAAQmB,IAAM,CAG9D08I,GADA4sX,EAAah9B,GADG/me,EAAGvF,GACiBgC,KAAK46e,YAAYlrc,OAC7BgrG,EAAW4sX,EAAa5sX,EAEpD,IAAIu2X,EAAsB3mC,GAAYtqe,KAAK6vgB,SAAU7vgB,KAAK8vgB,eACtD5/d,EAAO,IAAI+6b,GAAmB,WAAdlmM,EAA0Bz4R,EAAQiV,EAAe,GAAXm5H,EAAgC,QAAdqqJ,EAAsBz4R,EAAQiV,EAAIm5H,EAAWpuI,EAAQiV,EAAG,EAAGm5H,EAAU,GAC7Iw2X,EAAkB,IAAI9lC,GAAWpre,KAAKgB,QAAQyY,GAAK,iBAAkBwve,GAAe/4c,EAAMlwC,KAAK8vgB,eAAgBxjgB,EAAQgK,EAAIhK,EAAQiG,KAAK1V,OAAyC,EAA9Bo0gB,EAAoBthe,OAAc,EAZ3K,GACD,SAAUo1P,GACnB,MAAqB,SAAdA,EAAuB,QAAwB,QAAdA,EAAsB,MAAQ,SAU6Hn6L,CAAO5qG,KAAK8vgB,cAAc3kI,eAAgBnrY,KAAK4vgB,mBAAoB,GAAI,QAC1Q5ugB,EAAU+hf,GAAc/if,KAAKk9e,OAAQl9e,KAAKgB,QAAQyY,GAAK,iBAAkBy3f,EAAiBlxgB,KAAKomS,WAC/F8pM,GAAYlwe,KAAKomS,SAAU8qO,EAAiBlxgB,KAAK8vgB,cAAe9vgB,KAAK8vgB,cAAcn6b,OAAS31E,KAAKqse,WAAWtK,WAAY/he,KAAKwse,UAAW,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAM,KAAMxse,KAAK8of,cAC7L9nf,IACAA,EAAQ40B,aAAa,aAAc51B,KAAKs4T,aAAet4T,KAAK6vgB,UAC5D7ugB,EAAQ40B,aAAa,WAAY51B,KAAKq9I,SAASlwI,cAGvD89f,EAAM/ugB,UAAUgxgB,aAAe,WAC3B,IAAIx9d,EAAQ1vC,KAAK2oK,OAAOj5H,MACpByhe,EAAkBnxgB,KAAKwpb,gBACvBy7E,EAAYkM,EAAkB,cAAiBnxgB,KAAK2wM,YAAc3wM,KAAKqse,WAAW17R,WAClFzgK,EAAO,IAAIy5c,GAAW3pf,KAAKgB,QAAQyY,GAAK,eAAgBwrf,EAAWjlgB,KAAK2oK,OAAQ,EAAG,IAAIsiU,GAAa,GAARv7b,EAAqB,GAARA,EAAa1vC,KAAKujf,cAAc7zc,MAAQA,EAAO1vC,KAAKujf,cAAc5zc,OAASD,IAKxL,GAJA1vC,KAAKwqe,WAAauY,GAAc/if,KAAKk9e,OAAQl9e,KAAKgB,QAAQyY,GAAK,eAAgBy2B,EAAMlwC,KAAKomS,WACnFpmS,KAAKomS,SAASi4H,cAAcnuX,GACnC21c,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAKwqe,WAAYxqe,KAAKk9e,QAExEi0B,EAAiB,CACjB,IAAI5/Z,EAAQ,IAAIq4Y,GAAY5pf,KAAKujf,cAAc5zc,OAASD,EAAO1vC,KAAKujf,cAAc7zc,MAAQA,EAAOyhe,EAAiB,EAAG,EAAGnxgB,KAAKgB,QAAQyY,GAAK,mBAAoB,UAAW,QACzKzZ,KAAKwqe,WAAauY,GAAc/if,KAAKk9e,OAAQl9e,KAAKgB,QAAQyY,GAAK,mBAAoB83F,EAAOvxG,KAAKomS,WACxFpmS,KAAKomS,SAAS24H,UAAUxtT,GAC/Bs0Y,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAKwqe,WAAYxqe,KAAKk9e,UAMpF+tB,EAAM/ugB,UAAUixgB,iBAAmB,WAC/B,GAA2B,eAAvBntgB,KAAKm1e,cACL,OAAO,KAGP,IAAIn0e,EAAU6B,GAAW7C,KAAKgB,QAAQyY,GAAK,oBACvCwse,EAAejlf,EACf,IAAIiqe,IAAMjqe,EAAQmuB,aAAa,MAAOnuB,EAAQmuB,aAAa,MAAOnuB,EAAQmuB,aAAa,UAAWnuB,EAAQmuB,aAAa,WAAa,KACpI+gB,EAAO,IAAIy5c,GAAW3pf,KAAKgB,QAAQyY,GAAK,mBAAoBzZ,KAAK6wf,UAAUlgT,WAAY,CAAEjhK,MAAO1vC,KAAK6wf,UAAUloV,OAAOj5H,MAAOimC,MAAO31E,KAAK6wf,UAAUloV,OAAOhzF,OAAS31E,KAAKqse,WAAWpK,YAAcjie,KAAK6wf,UAAUltd,QAAS3jC,KAAKm+f,qBAAqBjW,gBACvPlof,KAAKwqe,WAAaxqe,KAAKomS,SAASi4H,cAAcnuX,GAC9C21c,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAKwqe,WAAYxqe,KAAKk9e,QAAQ,EAAM,IAAK,IAAK,KAAM,MAAM,GAAM,EAAM+I,GAC5Hjmf,KAAKwqe,WAAa,KAGtB,IAAI2mC,EAAkBnxgB,KAAK6wf,UAAUrnE,gBACrC,GAAI2nF,EAAiB,CACjB,IAAIzhe,EAAQ1vC,KAAK6wf,UAAUloV,OAAOj5H,MAC9B6hE,EAAQ,IAAIq4Y,GAAY5pf,KAAKg9e,gBAAgBrtc,OAASD,EAAO1vC,KAAKg9e,gBAAgBttc,MAAQA,EAAOyhe,EAAiBnxgB,KAAKg9e,gBAAgBz7d,EAAGvhB,KAAKg9e,gBAAgB1me,EAAGtW,KAAKgB,QAAQyY,GAAK,uBAAwB,UAAW,QAC3NzZ,KAAKwqe,WAAaxqe,KAAKomS,SAAS24H,UAAUxtT,GAC1Cs0Y,GAAmB7lf,KAAK8of,aAAc9of,KAAKwse,UAAWxse,KAAKwqe,WAAYxqe,KAAKk9e,QAAQ,EAAM,IAAK,IAAK,KAAM,MAAM,GAAM,KAS9H+tB,EAAM/ugB,UAAUk1gB,UAAY,SAAUzvB,GAClC,IAAK,IAAI3jf,EAAK,EAAG+9f,EAAqBpa,EAAkB3jf,EAAK+9f,EAAmBl/f,OAAQmB,IAAM,CAC1F,IAAIime,EAAS83B,EAAmB/9f,GAChCime,EAAS,IAAIwzB,GAAOz3f,KAAM,SAAUike,GACpCjke,KAAKike,OAAOrie,KAAKqie,GAErBjke,KAAKknC,WAQT+je,EAAM/ugB,UAAUm1gB,aAAe,SAAU72f,GACrCxa,KAAKk9e,QAAS,EACdl9e,KAAKike,OAAOnqd,OAAOU,EAAO,GAC1Bxa,KAAKknC,WAOT+je,EAAM/ugB,UAAUo1gB,YAAc,WAC1BtxgB,KAAKike,OAAS,GACdjke,KAAKknC,WAQT+je,EAAM/ugB,UAAUq1gB,QAAU,SAAUxjB,GAChC,IAAK,IAAI/vf,EAAK,EAAGwzgB,EAAmBzjB,EAAgB/vf,EAAKwzgB,EAAiB30gB,OAAQmB,IAAM,CACpF,IAAI+tC,EAAOyle,EAAiBxzgB,GAC5B+tC,EAAO,IAAIisC,GAAKh4E,KAAM,OAAQ+rC,GAC1B/rC,KAAKV,WACLysC,EAAKxpC,SAAW6J,MAAM2/B,EAAKxpC,UAAY,KAAOwpC,EAAKxpC,SACnDwpC,EAAKgnc,iBAAmB3me,MAAM2/B,EAAKgnc,kBAAoB,KAAOhnc,EAAKgnc,kBAEvE/ye,KAAKu3E,KAAK31E,KAAKmqC,GAEnB/rC,KAAKknC,WAQT+je,EAAM/ugB,UAAUu1gB,WAAa,SAAUj3f,GACnCxa,KAAKk9e,QAAS,EACdl9e,KAAKu3E,KAAKz9D,OAAOU,EAAO,GACxBxa,KAAKknC,WAST+je,EAAM/ugB,UAAUif,QAAU,WAClBnb,KAAKmsf,iBACLnsf,KAAKmsf,gBAAgBhxe,UAErBnb,KAAKs9f,eACLt9f,KAAKs9f,aAAa3ze,sBAClB3pB,KAAKs9f,aAAe,MAExBt9f,KAAKutf,eAAiB,GACtBvtf,KAAKotf,aAAe,GACpBptf,KAAKsvf,cAAgB,GACrBtvf,KAAK47e,gBAAkB,GACvB57e,KAAKkrgB,4BAA8B,GACnClrgB,KAAKw8f,eAAiB,KACtBx8f,KAAKm+f,qBAAuB,KAC5Bn+f,KAAKilf,qBAAuB,KAC5Bjlf,KAAKi9f,kBAAoB,KACzBj9f,KAAKytgB,cAAgB,KAIjBztgB,KAAKgB,UACLhB,KAAKkiI,eAEDliI,KAAKuiG,SACLviG,KAAK6oC,gBAET1J,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,MACzBA,KAAK8of,eACN9of,KAAK0xgB,YACL1xgB,KAAKwse,UAAY,QAO7By+B,EAAM/ugB,UAAU2+B,cAAgB,WAC5B,MAAO,SAOXowe,EAAM/ugB,UAAUysC,eAAiB,WAE7B,OAAO3oC,KAAKqpC,aADI,CAAC,SAAU,oBAAqB,eAAgB,kBAMpE4he,EAAM/ugB,UAAU8vgB,eAAiB,WAC7BhsgB,KAAK0xgB,YACL/sC,GAAU3ke,OAKdirgB,EAAM/ugB,UAAUgmI,aAAe,WAC3B,IAAI/qF,EAAa9wB,IAAQmC,gBACrBwvB,EAAY3xB,IAAQoC,eACpBkpf,EAAYtrf,IAAQqC,cACpBwvB,EAAc7xB,IAAQW,UAAY,eAAiB,aAEvD4B,IAAaa,OAAOzpB,KAAKgB,QAASm2C,EAAYn3C,KAAK4xgB,kBACnDhpf,IAAaa,OAAOzpB,KAAKgB,QAASg3C,EAAWh4C,KAAK6xgB,WAClDjpf,IAAaa,OAAOzpB,KAAKgB,QAAS2wgB,EAAW3xgB,KAAK8xgB,UAClDlpf,IAAaa,OAAOzpB,KAAKgB,QAAS,QAAShB,KAAK+xgB,mBAChDnpf,IAAaa,OAAOzpB,KAAKgB,QAAS,cAAehB,KAAKgygB,iBACtDppf,IAAaa,OAAOzpB,KAAKgB,QAASk3C,EAAal4C,KAAKiygB,YACpDnwgB,OAAO6nB,oBAAqBtD,IAAQY,SAAY,gBAAiBnlB,QAAU,wBAAyBA,OAAW,oBAAsB,SAAU9B,KAAKkygB,aAIhJlygB,KAAKmygB,cACLnygB,KAAKmygB,YAAYh3f,UACjBnb,KAAKmygB,YAAc,OAG3BlH,EAAM/ugB,UAAUg4C,WAAa,WAIzB,GAAKl0C,KAAKgB,QAAV,CAIA,IAAIk3C,EAAc7xB,IAAQW,UAAY,eAAiB,aAEvD4B,IAAaG,IAAI/oB,KAAKgB,QAASqlB,IAAQmC,gBAAiBxoB,KAAK4xgB,iBAAkB5xgB,MAC/E4oB,IAAaG,IAAI/oB,KAAKgB,QAASqlB,IAAQoC,eAAgBzoB,KAAK6xgB,UAAW7xgB,MACvE4oB,IAAaG,IAAI/oB,KAAKgB,QAASqlB,IAAQqC,cAAe1oB,KAAK8xgB,SAAU9xgB,MACrE4oB,IAAaG,IAAI/oB,KAAKgB,QAAS,QAAShB,KAAK+xgB,kBAAmB/xgB,MAChE4oB,IAAaG,IAAI/oB,KAAKgB,QAAS,cAAehB,KAAKgygB,gBAAiBhygB,MACpE4oB,IAAaG,IAAI/oB,KAAKgB,QAASk3C,EAAal4C,KAAKiygB,WAAYjygB,MAC7DA,KAAKkygB,YAAclygB,KAAKoygB,YAAYj2gB,KAAK6D,MACzC8B,OAAOynB,iBAAkBlD,IAAQY,SAAY,gBAAiBnlB,QAAU,wBAAyBA,OAAW,oBAAsB,SAAU9B,KAAKkygB,aACjJlygB,KAAKqygB,eAAiBrygB,KAAKsygB,UAAUn2gB,KAAK6D,MAC1CA,KAAKmygB,YAAc,IAAIn7d,IAAMh3C,KAAKgB,QAAS,CAAE+1H,QAAS/2H,KAAKqygB,eAAgBxme,iBAAkB,MAE7F7rC,KAAK8sM,SAAS9sM,KAAKgB,WAEvBiqgB,EAAM/ugB,UAAU81gB,gBAAkB,SAAUlrf,GACxC,OAAI9mB,KAAK+9f,UAAUvpX,SAAUx0I,KAAKuygB,iBACX,IAAlBzrf,EAAM6wE,SAAiC,IAAhB7wE,EAAMuuB,OAAqC,UAAtBvuB,EAAM0mR,cACnD1mR,EAAMwlB,iBACNxlB,EAAMw0L,mBACC,IAIf2vT,EAAM/ugB,UAAU4wM,SAAW,SAAU9rM,GACjC,IAAIwxgB,EAAUxygB,KAAK07e,aACf+2B,EAAgBD,EAAQE,wBAA0BF,EAAQG,oBACnC,SAAvB3ygB,KAAKo1f,eAA4Bp1f,KAAK+9f,UAAUvpX,QAAiC,SAAvBx0I,KAAK8+f,cACnE99f,EAAQgzB,MAAMijB,YAAcw7d,EAAgB,OAAS,UACrDzxgB,EAAQgzB,MAAM4+e,cAAgBH,EAAgB,OAAS,UACvDzxgB,EAAQgzB,MAAM6+e,iBAAmB,OACjC7xgB,EAAQgzB,MAAM8+e,aAAe,OAC7B9xgB,EAAQgzB,MAAM++e,iBAAmB,OACjC/xgB,EAAQgzB,MAAM+Z,SAAW,WACzB/sC,EAAQgzB,MAAMygB,QAAU,QAExBzzC,EAAQgzB,MAAMqmB,SAAW,UAQ7B4wd,EAAM/ugB,UAAU82gB,cAAgB,WAC5B,MAAQ,gBAAiBlxgB,QAAU,wBAAyBA,QAQhEmpgB,EAAM/ugB,UAAUo2gB,UAAY,SAAUzxgB,GAMlC,OALAb,KAAK80f,OAAUj0f,GAAKA,EAAE03C,cAAchM,eAAmB1rC,EAAE03C,cAAchM,eAAe,GAAGI,QAAW,EACpG3sC,KAAK+0f,OAAUl0f,GAAKA,EAAE03C,cAAchM,eAAmB1rC,EAAE03C,cAAchM,eAAe,GAAGK,QAAW,EACpG5sC,KAAKi+f,WAAY,EACjBj+f,KAAKizgB,WAAWjzgB,KAAK80f,OAAQ90f,KAAK+0f,QAClC/0f,KAAKga,OAAO,UAAWnZ,IAChB,GAKXoqgB,EAAM/ugB,UAAU+2gB,WAAa,SAAU1we,EAAOI,GAC1C,GAAI9/B,GAAW7C,KAAK4rgB,OAAQ,CACxB,IAAIiC,EAAUhrgB,GAAW7C,KAAK4rgB,OAAOvpe,wBACjC6N,EAAOlwC,KAAKgB,QAAQqhC,wBACxBriC,KAAK+0f,OAAUpyd,EAAQuN,EAAKlN,IAAOz7B,KAAK8L,IAAIw6f,EAAQ7qe,IAAMkN,EAAKlN,IAAK,GACpEhjC,KAAK80f,OAAUvyd,EAAQ2N,EAAKpN,KAAQv7B,KAAK8L,IAAIw6f,EAAQ/qe,KAAOoN,EAAKpN,KAAM,KAM/Emoe,EAAM/ugB,UAAUwsgB,OAAS,SAAUv9f,EAAMkzE,GACjCr+E,KAAKkzgB,eACLlzgB,KAAKkzgB,aAAaxK,OAAOv9f,EAAMkzE,GAC3Br+E,KAAKq4e,aACLr4e,KAAKkzgB,aAAatJ,WAAW5pgB,QAUzCirgB,EAAM/ugB,UAAUk2gB,YAAc,WAC1B,IAAIrygB,EAAQC,KACZA,KAAKm9f,eAAgB,EACrB,IAAIj4d,EAAM,CACNwtc,MAAO1ye,KAAKV,SAAW,GAAKU,KAC5Boa,KAAM09d,GACNq7B,YAAa,IAAI12b,GAAK,EAAG,GACzB22b,aAAc,IAAI32b,GAAKz8E,KAAKujf,cAAc7zc,MAAO1vC,KAAKujf,cAAc5zc,SAEpE0je,EAAmB,CAAEj5f,KAAM,eAAgBk5f,oBAAoB,GAmBnE,OAlBItzgB,KAAK6lO,UACL1lO,aAAaH,KAAK6lO,UAEtB7lO,KAAK+pB,QAAQgud,GAAcs7B,GACtBA,EAAiBC,qBAClBtzgB,KAAK6lO,UAAYzlO,YAAW,WACpBL,EAAMo5B,aAAep5B,EAAM+7e,WAC3B37e,aAAaJ,EAAM8lO,WAGvB9lO,EAAMisgB,iBACN9me,EAAIiue,YAAcpzgB,EAAMwjf,cACxBxjf,EAAMgqB,QAAQ+td,GAAS5yc,GACvBnlC,EAAM4rf,cACN5rf,EAAM26f,eACN36f,EAAMgqB,QAAQ,SAAU,CAAE2od,MAAO3ye,EAAMT,SAAW,GAAKS,OACxD,OAEA,GAQXkrgB,EAAM/ugB,UAAU21gB,UAAY,SAAUhxgB,GAClC,IAAI0hC,EACAI,EACA4we,EAgBJ,MAfe,cAAX1ygB,EAAEsK,MACFnL,KAAKinB,SAAU,EAEfsb,GADAgxe,EAAW1ygB,GACM0rC,eAAe,GAAGI,QACnChK,EAAQ4we,EAAShne,eAAe,GAAGK,UAGnC5sC,KAAKinB,QAA4B,UAAlBpmB,EAAE2sS,aAA6C,MAAlB3sS,EAAE2sS,aAAuBxtS,KAAKinB,QAC1Esb,EAAQ1hC,EAAE8rC,QACVhK,EAAQ9hC,EAAE+rC,SAEV/pC,GAAW7C,KAAK4rgB,SAChB5rgB,KAAKizgB,WAAW1we,EAAOI,GACvB3iC,KAAKwzgB,iBAAiB3ygB,KAEnB,GAQXoqgB,EAAM/ugB,UAAU+1gB,WAAa,SAAUpxgB,GACnC,IAAI0hC,EACAI,EACA4we,EAcJ,MAbe,eAAX1ygB,EAAEsK,MACFnL,KAAKinB,SAAU,EAEfsb,GADAgxe,EAAW1ygB,GACM0rC,eAAe,GAAGI,QACnChK,EAAQ4we,EAAShne,eAAe,GAAGK,UAGnC5sC,KAAKinB,QAA4B,UAAlBpmB,EAAE2sS,aAA6C,MAAlB3sS,EAAE2sS,YAC9CjrQ,EAAQ1hC,EAAE8rC,QACVhK,EAAQ9hC,EAAE+rC,SAEd5sC,KAAKizgB,WAAW1we,EAAOI,GACvB3iC,KAAKyzgB,kBAAkB5ygB,IAChB,GAQXoqgB,EAAM/ugB,UAAUu3gB,kBAAoB,SAAU5ygB,GAC1C,IAAIG,EAAUH,EAAEo8B,OACZib,EAAc7xB,IAAQW,UAAY,eAAiB,aAKvD,OAJAhnB,KAAK+pB,QAAQytd,GAAiB,CAAEv6c,OAAQj8B,EAAQyY,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,SAC5Eh5c,GAAc/7C,KAAKgB,QAAQyY,GAAK,0BAChCzZ,KAAK0zgB,YAAc1zgB,KAAKw+f,kBAAmB,EAC3Cx+f,KAAKga,OAAOk+B,EAAar3C,IAClB,GAQXoqgB,EAAM/ugB,UAAU61gB,kBAAoB,SAAUlxgB,GAC1C,IAAId,EAAQC,KACRgB,EAAUH,EAAEo8B,OAChBj9B,KAAK+pB,QAAQstd,GAAiB,CAAEp6c,OAAQj8B,EAAQyY,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,SAC5E/0f,KAAKorgB,aACL,IAAIuI,EAAe,EAEnB,GAAI3zgB,KAAc,UAAG,CAEjB2zgB,EAAe3zgB,KAAK4zgB,iBAA0B,UAAE/2gB,OAAS,EAAI,IAAM,OAGnE82gB,EAAe3zgB,KAAK4zgB,iBAAmB,IAAM,EAiBjD,OAfwB,IAApB5zgB,KAAKorgB,YAAoBprgB,KAAKs3e,WAC9Bt3e,KAAKqrgB,kBAAoBjrgB,YAAW,WAChCL,EAAMqrgB,WAAa,EACnBrrgB,EAAM8zgB,kBAAkBv8B,GAAYz2e,KACrC8ygB,GAEsB,IAApB3zgB,KAAKorgB,YAAoBprgB,KAAK4zgB,mBACnCzzgB,aAAaH,KAAKqrgB,kBAClBrrgB,KAAKorgB,WAAa,EAClBprgB,KAAK6zgB,kBbp1Ca,mBao1CuBhzgB,IAEzCb,KAAK8zgB,gBACL9zgB,KAAK+zgB,2Bbr2CW,iBaq2CgClzgB,GAEpDb,KAAKga,OAAO,QAASnZ,IACd,GAEXoqgB,EAAM/ugB,UAAU23gB,kBAAoB,SAAU/sf,EAAOjmB,GACjD,IAAI6qC,EAAM7qC,EAENu9f,EADO,IAAI1J,GAAU10f,MACJ+8F,UACjBqha,EAAUn6B,QAAUm6B,EAAUhnd,OAC9Bp3C,KAAK+pB,QAAQjD,EAAO,CAChBm9c,OAAQjke,KAAKV,SAAW,GAAK8+f,EAAUn6B,OACvC7sb,MAAOgnd,EAAUhnd,MACjB2sb,YAAaq6B,EAAUn6B,OAAOzpd,MAAOwpd,WAAYo6B,EAAUhnd,MAAM58B,MACjE+G,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,OAAQxyd,MAAOmJ,EAAInJ,MAAOI,MAAO+I,EAAI/I,SAIzEsoe,EAAM/ugB,UAAU63gB,2BAA6B,SAAUjtf,EAAOjmB,GAC1D,IAAI89J,EAAgB99J,EAAEo8B,OAClB+2e,EAAWnzgB,EACf,IAAiD,IAA7C89J,EAAcllJ,GAAGtb,QAAQ,eAAuB,CAChD,IAAIqc,EAAQmkJ,EAAcllJ,GAAG9c,MAAM,eAC/Bs3gB,GAAaz5f,EAAM,GAAGnZ,OAAO,GAC7B2jf,GAAcxqe,EAAM,GACpB8vT,EAActqU,KAAK47e,gBAAgBq4B,IACnC3pM,EAAYptQ,SAA0B,IAAd+2c,GAAiC,IAAdA,GAC3Cj0gB,KAAK+pB,QAAQjD,EAAO,CAChB4rd,MAAO1ye,KACP+rC,KAAMu+R,EACN/3T,KAAM+3T,EAAYqrK,cAAcqP,GAAYzye,KAC5C2hgB,QAASv1W,EAAcllJ,GACvBe,MAAOwqe,EACPh8c,SAAU,IAAIo2c,GAAc40B,EAASzxe,MAAOyxe,EAASrxe,OACrDnmC,MAAO8tU,EAAYqrK,cAAcqP,GAAYxof,UAW7DyugB,EAAM/ugB,UAAUs3gB,iBAAmB,SAAU3ygB,GACzC,IAAIG,EAAUH,EAAEo8B,OAehB,OAdAj9B,KAAK+pB,QAAQqtd,GAAgB,CAAEn6c,OAAQj8B,EAAQyY,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,SACvE/0f,KAAKu3e,WACLv3e,KAAK6zgB,kBAAkBt8B,GAAW12e,GAGjCb,KAAKinB,UACNjnB,KAAKm0gB,aAAatzgB,EAAGb,KAAK80f,OAAQ90f,KAAK+0f,QACvC/0f,KAAKo0gB,YAAYvzgB,EAAGb,KAAK80f,OAAQ90f,KAAK+0f,SAEtC/0f,KAAKq0gB,mBACLr0gB,KAAKq0gB,kBAAkBC,eAAezzgB,GAE1Cb,KAAKga,OAAOqM,IAAQoC,eAAgB5nB,GACpCb,KAAKinB,SAAU,GACR,GAEXgkf,EAAM/ugB,UAAUi4gB,aAAe,SAAUrtf,EAAOvF,EAAGjL,EAAG2Q,GAClD,IAAIihf,EAAWphf,EAAMmW,OAAOxjB,GACxBA,EAAMyuf,IAAclogB,KAAKgB,QAAQyY,GAAK,eAAkByuf,IAAclogB,KAAKgB,QAAQyY,GAAK,kBACxFyuf,EAAS/pgB,QAAQ,eAAiB,GAAK+pgB,EAAS/pgB,QAAQ,kBAAoB,EAC5Eqc,EAAQ,GACR0tf,EAAS/pgB,QAAQ,eAAiB,IAClCqc,EAAQrE,SAAW+xf,EAASxrgB,QAAQsD,KAAKgB,QAAQyY,GAAI,IAAK/c,QAAQ,aAAc,IAAKC,MAAM,KAAK,GAAI,KAEpG8c,GAAOqN,EAAMmW,OAAOo5D,YAAYl4F,QAAQ,QAAU,GAIlD+/e,GAHagqB,IAAclogB,KAAKgB,QAAQyY,GAAK,cAAkBzZ,KAAKonJ,MAChE8gX,EAAS/pgB,QAAQ,eAAiB,EAAI6B,KAAK47e,gBAAgBphe,GAAO4sI,MAC9D8gX,EAAS/pgB,QAAQ,mBAAqB,EAAI6B,KAAK6vgB,SAAW7vgB,KAAK8ggB,eAAe15W,MACnE7lI,EAAGjL,EAAGtW,KAAKgB,QAAQy1B,YAAaz2B,KAAKgB,QAAQyY,GAAK,qBAAsB5W,GAAW7C,KAAKgB,QAAQyY,GAAK,sBAAuBwN,GAG/I80B,GAAc/7C,KAAKgB,QAAQyY,GAAK,uBAGxCwxf,EAAM/ugB,UAAUk4gB,YAAc,SAAUttf,EAAOvF,EAAGjL,EAAG2Q,GACjD,IAAIihf,EAAWphf,EAAMmW,OAAOxjB,GAC5B,IAAMyuf,EAAS/pgB,QAAQ,cAAgB,GAAM+pgB,EAAS/pgB,QAAQ,yBAA2B,IACpF2oB,EAAMmW,OAAOo5D,YAAYl4F,QAAQ,QAAU,EAAI,CAChD,IAAIigf,EAA0Bp+e,KAAK8ggB,eAAe5jc,SAAuC,KAA5Bl9D,KAAK4gf,aAAax5V,MAC/E82V,GAAYl+e,KAAK8zf,cAAcoU,GAAW3mf,EAAGjL,EAAGtW,KAAKgB,QAAQy1B,YAAaz2B,KAAKgB,QAAQyY,GAAK,yBAA0B5W,GAAW7C,KAAKgB,QAAQyY,GAAK,sBAAuBwN,EAASm3d,QAGnLric,GAAc/7C,KAAKgB,QAAQyY,GAAK,2BAGxCwxf,EAAM/ugB,UAAU43f,cAAgB,SAAUvhf,GACtC,IAAIi+d,EACJ,OAAIj+d,EAAKpU,QAAQ,cAAgB,GAC7Bqye,EAAUj+d,EAAK7V,QAAQsD,KAAKgB,QAAQyY,GAAI,IAAK/c,QAAQ,aAAc,IAAKC,MAAM,KACvEqD,KAAK47e,gBAAgBzle,SAASq6d,EAAM,GAAI,KAAKmF,cAAcx/d,SAASq6d,EAAM,GAAI,KAAK6L,eAG1F7L,EAAUj+d,EAAK7V,QAAQsD,KAAKgB,QAAQyY,GAAI,IAAK/c,QAAQ,8BAA+B,IAAIA,QAAQ,QAAS,IAAKC,MAAM,KAC5GqD,KAAK47e,gBAAgBzle,SAASq6d,EAAM,GAAI,KAAK6M,iBAAiBlne,SAASq6d,EAAM,GAAI,KACpF+jC,WAAWp+f,SAASq6d,EAAM,GAAI,KAAKj+d,OAShD04f,EAAM/ugB,UAAU01gB,iBAAmB,SAAU/wgB,GACzC,IAAI0hC,EACAI,EACA1F,EACAs2e,EACAvnf,EAAS3F,IAAQa,SAAW,GAAK,GACjCgpB,EAAOlwC,KAAKgB,QAAQqhC,wBACpBrhC,EAAUH,EAAEo8B,OAChBj9B,KAAK+pB,QAAQ0td,GAAgB,CAAEx6c,OAAQj8B,EAAQyY,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,SAC5D,eAAXl0f,EAAEsK,MACFnL,KAAKinB,SAAU,EAEfsb,GADAgxe,EAAW1ygB,GACM0rC,eAAe,GAAGI,QACnChK,EAAQ4we,EAAShne,eAAe,GAAGK,QACnC3P,EAASs2e,EAASt2e,SAGlBj9B,KAAKinB,QAA4B,UAAlBpmB,EAAE2sS,YACjBjrQ,EAAQ1hC,EAAE8rC,QACVhK,EAAQ9hC,EAAE+rC,QACV3P,EAASp8B,EAAEo8B,QAEf,IAAI4we,EAAUhrgB,GAAW7C,KAAK4rgB,OAAOvpe,wBAcrC,OAbAriC,KAAKw0gB,WAAax0gB,KAAKy0gB,mBAAsBlye,EAAQ2N,EAAKpN,KAAQv7B,KAAK8L,IAAIw6f,EAAQ/qe,KAAOoN,EAAKpN,KAAM,GACrG9iC,KAAK00gB,WAAa10gB,KAAK20gB,mBAAsBhye,EAAQuN,EAAKlN,IAAOz7B,KAAK8L,IAAIw6f,EAAQ7qe,IAAMkN,EAAKlN,IAAK,GAC9FhjC,KAAKinB,UACLjnB,KAAK40gB,aAAe,IAAIzrgB,MAAOkZ,UAAYriB,KAAK60gB,YAAmE,IAAtD53e,EAAOxjB,GAAGtb,QAAQ6B,KAAKgB,QAAQyY,GAAK,eAC5FzZ,KAAKw0gB,WAAaxof,GAAUhsB,KAAK80f,QAAU90f,KAAKw0gB,WAAaxof,GAAUhsB,KAAK80f,UAC5E90f,KAAK00gB,WAAa1of,GAAUhsB,KAAK+0f,QAAU/0f,KAAK00gB,WAAa1of,GAAUhsB,KAAK+0f,UAC5E/0f,KAAK80f,OAAS9oe,GAAUhsB,KAAKw0gB,YAAcx0gB,KAAK80f,OAAS9oe,GAAUhsB,KAAKw0gB,cACxEx0gB,KAAK+0f,OAAS/oe,GAAUhsB,KAAK00gB,YAAc10gB,KAAK+0f,OAAS/oe,GAAUhsB,KAAK00gB,aAE7E10gB,KAAKq0gB,mBACLr0gB,KAAKq0gB,kBAAkBS,iBAE3B90gB,KAAKga,OAAOqM,IAAQmC,gBAAiB3nB,IAC9B,GAQXoqgB,EAAM/ugB,UAAU41gB,SAAW,SAAUjxgB,GACjC,IAAI8hC,EACAJ,EACAgxe,EAcJ,MAbe,aAAX1ygB,EAAEsK,MAEFo3B,GADAgxe,EAAW1ygB,GACM0rC,eAAe,GAAGI,QACnC3sC,KAAKinB,SAAU,EACf0b,EAAQ4we,EAAShne,eAAe,GAAGK,UAGnCjK,EAAQ9hC,EAAE+rC,QACVrK,EAAQ1hC,EAAE8rC,QACV3sC,KAAKinB,QAA4B,UAAlBpmB,EAAE2sS,aAA6C,MAAlB3sS,EAAE2sS,aAElDxtS,KAAKizgB,WAAW1we,EAAOI,GACvB3iC,KAAK+0gB,eAAel0gB,IACb,GAQXoqgB,EAAM/ugB,UAAU64gB,eAAiB,SAAUl0gB,GACvC,IAAIG,EAAUH,EAAEo8B,OAehB,OAdAj9B,KAAK+pB,QAAQ2td,GAAc,CAAEz6c,OAAQj8B,EAAQyY,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,SACzE/0f,KAAK0zgB,aAAc,EACf1zgB,KAAKinB,UACLjnB,KAAKm0gB,aAAatzgB,EAAGb,KAAK80f,OAAQ90f,KAAK+0f,OAAQ/0f,KAAKinB,SACpDjnB,KAAKo0gB,YAAYvzgB,EAAGb,KAAK80f,OAAQ90f,KAAK+0f,OAAQ/0f,KAAKinB,SACnDjnB,KAAK60gB,WAAY,IAAI1rgB,MAAOkZ,UAAY,KAExCriB,KAAKq0gB,mBACLr0gB,KAAKq0gB,kBAAkBW,gBAEtBh1gB,KAAK8of,cAAgB9of,KAAKw8f,gBAC3Bx8f,KAAKw8f,eAAen8d,gBAAgB,aAExCrgC,KAAKga,OAAOqM,IAAQqC,cAAe7nB,IAC5B,GAKXoqgB,EAAM/ugB,UAAU2gB,WAAa,WACzB7c,KAAKikE,KAAO,IAAIxoD,IAChBzb,KAAKi1gB,qBACLj1gB,KAAK42C,aAAe,IAAIR,IAAKp2C,KAAK66B,gBAAiB76B,KAAKk1gB,sBAAuBl1gB,KAAK+c,SAKxFkuf,EAAM/ugB,UAAUi5gB,mBAAqB,SAAUC,EAAiB1qd,GAC5D,IAEI1pD,EAFAP,EAAaoC,GAAW7C,KAAKgB,QAAQyY,GAAK,2BAC1CkxZ,EAAa3qa,KAAKgra,YAAYoqG,GAElB,OAAZ1qd,IACAigX,EAAWjgX,QAAUA,EACjBjqD,GACAs7C,GAAc/7C,KAAKgB,QAAQyY,GAAK,eAAiB27f,GACjDp0gB,EAAUhB,KAAKmB,cAAc,OAC7BnB,KAAKmvgB,iBAAiBkG,kBAAkB1qG,EAAYyqG,EAAiBp0gB,GACrEP,EAAWuB,YAAYhB,EAAQ8vB,SAAS,KAGxC9wB,KAAKmvgB,iBAAiBC,kBAAkBvsgB,GAAW7C,KAAKgB,QAAQyY,GAAK,yBAOjFwxf,EAAM/ugB,UAAU+4gB,mBAAqB,WACjCj1gB,KAAKk1gB,sBAAwB,CACzBI,OAAQ,UACRC,KAAM,OACNC,QAAS,WACTC,IAAK,MACLC,MAAO,QACPC,UAAW,eAMnB1K,EAAM/ugB,UAAU+vgB,SAAW,WAEvBjsgB,KAAKqse,WAAa/K,GAActhe,KAAKg+E,QASzCitb,EAAM/ugB,UAAU8nC,gBAAkB,WAC9B,IAGI4xe,EACAjia,EAJA5zG,EAAQC,KACRglC,EAAU,GACVi/b,EAASjke,KAAKike,OAGd4xC,GAAkB,EAClBC,GAAc,EACdC,GAAkB,EAClBvD,EAAUxygB,KAAK07e,aAiHnB,OAhHA17e,KAAKm1e,cAAiBlR,EAAOpne,OAAS,IAAyB,UAAnBone,EAAO,GAAG94d,MAAuC,UAAnB84d,EAAO,GAAG94d,MAAqB,aAAe,YACpHnL,KAAKoyG,QAAQoiC,QACbxvG,EAAQpjC,KAAK,CACT4iC,OAAQ,UACRvkC,KAAM,CAACD,QAGfike,EAAOx/d,KAAI,SAAUjI,GACjBuD,EAAMi2gB,SAAYj2gB,EAAM+ggB,eAAe5jc,UAA4B,KAAf1gE,EAAM4d,QAAkBra,EAAMi2gB,UAClFria,GAA4C,IAA/Bn3G,EAAM2O,KAAKhN,QAAQ,OAAgB3B,EAAM2O,KAAKzO,QAAQ,MAAO,IAAM,SAAWF,EAAM2O,KAAO,SACxG0qgB,EAAkBr5gB,EAAM0le,SAAShla,SAAW24c,EAC5CE,EAAkBv5gB,EAAMw6Z,OAAO4tF,UAAU1nb,SAAW64c,EACpDD,EAAct5gB,EAAMm4e,aAAangW,QAAUshY,EACtC9we,EAAQtb,MAAK,SAAUusf,GACxB,OAAOA,EAAczxe,SAAWmvE,MAEhC3uE,EAAQpjC,KAAK,CACT4iC,OAAQmvE,EACR1zG,KAAM,CAACF,EAAOkke,KAGM,eAAxBlke,EAAMo1e,eACNnwc,EAAQpjC,KAAK,CACT4iC,OAAQhoC,EAAMk4e,SAAW,SACzBz0e,KAAM,CAACF,EAAOkke,KAGH,WAAfzne,EAAM2O,OACN65B,EAAQpjC,KAAK,CACT4iC,OAAQ,eACRvkC,KAAM,CAACF,EAAOkke,KAElBj/b,EAAQpjC,KAAK,CACT4iC,OAAQ,aACRvkC,KAAM,CAACF,EAAOkke,SAI1Bjke,KAAKk2gB,qBAAqBlxe,GAC1BhlC,KAAKm2gB,qBAAqBnxe,GAC1BA,EAAUhlC,KAAKo2gB,eAAepxe,GAC9B4we,EAAmB51gB,KAAKgra,YAAYthZ,MAAK,SAAUltB,GAC/C,OAA0B,OAAlBA,EAAMkuD,WAEdmrd,GACA7we,EAAQpjC,KAAK,CACT4iC,OAAQ,WACRvkC,KAAM,CAACD,KAAMike,KAGjBjke,KAAKg2gB,UACLhxe,EAAQpjC,KAAK,CACT4iC,OAAQ,SACRvkC,KAAM,CAACD,SAGXA,KAAKq2gB,cAAgBr2gB,KAAKs2gB,cAC1Btxe,EAAQpjC,KAAK,CACT4iC,OAAQ,SACRvkC,KAAM,CAACD,QAGY,eAAvBA,KAAKm1e,gBAAmCn1e,KAAKwwgB,uBAAyBgC,EAAQE,wBAC3EF,EAAQ+D,yBAA2B/D,EAAQG,oBAAsBH,EAAQxD,WAAawD,EAAQpmB,mBACjGpnd,EAAQpjC,KAAK,CACT4iC,OAAQ,OACRvkC,KAAM,CAACD,KAAMA,KAAK07e,gBAElB82B,EAAQpmB,iBACRpnd,EAAQpjC,KAAK,CACT4iC,OAAQ,YACRvkC,KAAM,CAACD,SAIQ,SAAvBA,KAAKo1f,eAAqD,eAAvBp1f,KAAKm1e,eACxCn1e,KAAKo1f,cAAcj3f,QAAQ,SAAW,GACtC6mC,EAAQpjC,KAAK,CACT4iC,OAAQ,YACRvkC,KAAM,CAACD,QAGY,SAAvBA,KAAK8+f,eACL95d,EAAQpjC,KAAK,CACT4iC,OAAQ,YACRvkC,KAAM,CAACD,QAGX+1gB,GACA/we,EAAQpjC,KAAK,CACT4iC,OAAQ,YACRvkC,KAAM,CAACD,KAAMike,KAGjB6xC,GACA9we,EAAQpjC,KAAK,CACT4iC,OAAQ,cACRvkC,KAAM,CAACD,QAGX41gB,GACA5we,EAAQpjC,KAAK,CACT4iC,OAAQ,aACRvkC,KAAM,CAACD,QAGY,eAAvBA,KAAKm1e,eAAkCn1e,KAAK+9f,UAAUvpX,QACtDxvG,EAAQpjC,KAAK,CACT4iC,OAAQ,YACRvkC,KAAM,CAACD,QAGRglC,GAEXime,EAAM/ugB,UAAUk6gB,eAAiB,SAAUpxe,GACvC,IAAI42c,EAAkB,GACtBA,EAAgBh6e,KAAK5B,KAAK4gf,cAC1BhF,EAAgBh6e,KAAK5B,KAAK6tf,cAQ1B,IANA,IAAI2oB,GAAkB,EAClBC,GAAkB,EAClBC,GAAqB,EACrBC,GAAmB,EACnBC,GAA0B,EAC1BC,GAAoB,EACf74gB,EAAK,EAAG84gB,EAPjBl7B,EAAkBA,EAAgB9pd,OAAO9xB,KAAKu3E,MAOQv5E,EAAK84gB,EAAkBj6gB,OAAQmB,IAAM,CACvF,IAAI+tC,EAAO+qe,EAAkB94gB,GAC7Bw4gB,EAAqC,aAAnBzqe,EAAK8nc,WAA4B2iC,EACnDC,EAAqC,aAAnB1qe,EAAK8nc,WAA4B4iC,EACnDC,EAAwC,gBAAnB3qe,EAAK8nc,WAA+B6iC,EACzDE,EAA6C,qBAAnB7qe,EAAK8nc,WAAoC+iC,EACnED,EAAmB32gB,KAAK+2gB,wBAAwBhre,EAAKire,aAAeL,EACpEE,EAAoB9qe,EAAKsxc,iBAAiBxgf,OAAS,GAAKg6gB,EACxD72gB,KAAKwwgB,uBAAuBzke,EAAKwgd,kBAAkB/3W,QAAgBx0I,KAAKwwgB,qBA4C5E,OA1CIgG,GACAxxe,EAAQpjC,KAAK,CACT4iC,OAAQ,WACRvkC,KAAM,CAACD,QAGXy2gB,GACAzxe,EAAQpjC,KAAK,CACT4iC,OAAQ,WACRvkC,KAAM,CAACD,QAGX02gB,GACA1xe,EAAQpjC,KAAK,CACT4iC,OAAQ,cACRvkC,KAAM,CAACD,QAGX22gB,GACA3xe,EAAQpjC,KAAK,CACT4iC,OAAQ,YACRvkC,KAAM,CAACD,QAGX62gB,GACA7xe,EAAQpjC,KAAK,CACT4iC,OAAQ,kBACRvkC,KAAM,CAACD,QAGX42gB,GACA5xe,EAAQpjC,KAAK,CACT4iC,OAAQ,mBACRvkC,KAAM,CAACD,QAGXA,KAAKwwgB,sBACLxre,EAAQpjC,KAAK,CACT4iC,OAAQ,YACRvkC,KAAM,CAACD,QAGRglC,GAEXime,EAAM/ugB,UAAUg6gB,qBAAuB,SAAUlxe,GAC7C,IAAIiye,EACAC,EACAxvP,EAAa1nR,KAAK0nR,WACtB,GAAI1nR,KAAK0nR,WAAW7qR,OAAQ,CACxBmoC,EAAQpjC,KAAK,CACT4iC,OAAQ,aACRvkC,KAAM,CAACD,QAEX0nR,EAAWjjR,KAAI,SAAUwhR,GACrBgxP,EAAaA,GAAiC,SAAnBhxP,EAAU96Q,KACrC+rgB,EAAaA,GAAiC,mBAAnBjxP,EAAU96Q,QAErC8rgB,GACAjye,EAAQpjC,KAAK,CACT4iC,OAAQ,eACRvkC,KAAM,CAACD,QAGXk3gB,GACAlye,EAAQpjC,KAAK,CACT4iC,OAAQ,kBACRvkC,KAAM,CAACD,QAGf,IAAK,IAAIhC,EAAK,EAAGuF,EAAKvD,KAAK0nR,WAAY1pR,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzD,IAAIioR,EAAY1iR,EAAGvF,GACnBgnC,EAAQpjC,KAAK,CACT4iC,OAAQyhP,EAAU96Q,KAAO,YACzBlL,KAAM,CAACD,WAKvBirgB,EAAM/ugB,UAAUi6gB,qBAAuB,SAAUnxe,GAkB7C,IAjBA,IAAImye,EACAC,EACAv4gB,EAAU,SAAUole,GACpB,IAAIozC,EACJpzC,EAAOw2B,WAAWh2f,KAAI,SAAU6ygB,GAC5BD,EAAeA,GAAgBC,EAAUtgH,OAAO95V,QAChDi6c,KAASA,GAA8B,WAAnBG,EAAUnsgB,MAAwC,kBAAnBmsgB,EAAUnsgB,MAC7DisgB,KAAWA,GAAaD,MAExBE,GACArye,EAAQpjC,KAAK,CACT4iC,OAAQ,SACRvkC,KAAM,CAAC6pC,EAAQm6b,MAIvBn6b,EAAS9pC,KACJhC,EAAK,EAAGuF,EAAKvD,KAAKike,OAAQjme,EAAKuF,EAAG1G,OAAQmB,IAAM,CAErDa,EADa0E,EAAGvF,KAGhBm5gB,GAAUC,IACVpye,EAAQpjC,KAAK,CACT4iC,OAAQ,YACRvkC,KAAM,CAACD,QAGXm3gB,GACAnye,EAAQpjC,KAAK,CACT4iC,OAAQ,aACRvkC,KAAM,CAACD,QAGXo3gB,GACApye,EAAQpjC,KAAK,CACT4iC,OAAQ,eACRvkC,KAAM,CAACD,SAInBirgB,EAAM/ugB,UAAU66gB,wBAA0B,SAAUQ,GAEhD,IADA,IAAIr6c,GAAU,EACLl/D,EAAK,EAAGw5gB,EAAeD,EAAYv5gB,EAAKw5gB,EAAa36gB,OAAQmB,IAAM,CAExE,GADgBw5gB,EAAax5gB,GACfk/D,QAAS,CACnBA,GAAU,EACV,OAGR,OAAOA,GAOX+tc,EAAM/ugB,UAAUw1gB,UAAY,WACxB,GAAI1xgB,KAAKk9e,OACL,OAAO,KAGX,GADAsM,GAAqBxpf,MACjBA,KAAK8of,cAAgB9of,KAAKwse,WAAwC,WAA3Bxse,KAAKwse,UAAUx8c,QAKtD,OAJAhwB,KAAKomS,SAAS+jM,UAAU,IAAIc,GAAK,EAAG,EAAGjre,KAAKujf,cAAc7zc,MAAO1vC,KAAKujf,cAAc5zc,SAChF3vC,KAAKwse,UAAU/re,YACfgpB,aAAOzpB,KAAKwse,WAET,KAEXzwb,GAAc/7C,KAAKgB,QAAQyY,GAAK,sBAC5BzZ,KAAKuiG,SACLviG,KAAK6oC,gBAET,IAAI4ue,EAAe,EAQnB,GAPIz3gB,KAAKw7e,YAAcx7e,KAAKw7e,WAAWk8B,cACnC13gB,KAAKw7e,WAAWk8B,YAAYj+f,GAAK,GACjCzZ,KAAKw7e,WAAWk8B,YAAY9hf,aAAa,UAAW,KACpD51B,KAAKwse,UAAUxqe,YAAYhC,KAAKw7e,WAAWk8B,aAC3CD,EAAe,IAGdr6gB,YAAkB4C,KAAK6lO,UAAW,CACnC,GAAI7lO,KAAK6lO,WAAa7lO,KAAKmrgB,aAAenrgB,KAAKV,UAAYU,KAAKgB,QAAQ0iE,kBAEpE,IADA,IAAIi0c,EAAsBn3gB,SAASgB,iBAAiB,YAC3CgZ,EAAQ,EAAGA,EAAQm9f,EAAoB96gB,OAAQ2d,IAEpD,IADA,IAAIs6E,EAAY6ib,EAAoBn9f,GAC7Bs6E,EAAUgP,YACbr6E,aAAOqrE,EAAUgP,YAI7B9jG,KAAKmrgB,YAAcnrgB,KAAK6lO,SAE5B,GAAI7lO,KAAKwse,UAAW,CAChB,KAAOxse,KAAKwse,UAAUl+c,WAAWzxB,OAAS46gB,GACtCz3gB,KAAKwse,UAAUt1c,YAAYl3B,KAAKwse,UAAU1oY,YAEzC9jG,KAAKwse,UAAU10X,kBAAmB93G,KAAKwse,UAAU/re,YAAgBT,KAAK87e,YACvEryd,aAAOzpB,KAAKwse,aAIxBy+B,EAAM/ugB,UAAUwvgB,kBAAoB,SAAUkM,GAC1C,IAAK,IAAI55gB,EAAK,EAAG65gB,EAAgBD,EAAa55gB,EAAK65gB,EAAch7gB,OAAQmB,IAAM,CAChE65gB,EAAc75gB,GACpBu5E,KAAO,KASpB0zb,EAAM/ugB,UAAUyvf,YAAc,WAC1B,IAAI5/c,EAAO/rC,KAAK4gf,aAChB70c,EAAKmE,KAAO,IAAI+6b,QAAKjve,OAAWA,EAAW,EAAG,IAC9C+vC,EAAO/rC,KAAK6tf,cACPpX,YAAa,EAClB1qc,EAAKmE,KAAO,IAAI+6b,QAAKjve,OAAWA,EAAW,EAAG,GAC9C,IAAK,IAAIgC,EAAK,EAAGuF,EAAKvD,KAAKu3E,KAAMv5E,EAAKuF,EAAG1G,OAAQmB,IAAM,EAEnD+tC,EADWxoC,EAAGvF,IAETkyC,KAAO,IAAI+6b,QAAKjve,OAAWA,EAAW,EAAG,GAC9C+vC,EAAK0qc,YAAa,EAEtB,GAAIz2e,KAAK83f,oBAA8C,WAAxB93f,KAAKike,OAAO,GAAG94d,KAC1C,IAAK,IAAI4pB,EAAK,EAAGI,EAAKn1B,KAAK83f,mBAAmBuY,WAAYt7e,EAAKI,EAAGt4B,OAAQk4B,IAAM,EAE5EgX,EADW5W,EAAGJ,IAETmb,KAAO,IAAI+6b,QAAKjve,OAAWA,EAAW,EAAG,GAC9C+vC,EAAK0qc,YAAa,IAI9Bw0B,EAAM/ugB,UAAU47gB,WAAa,SAAU/re,GACnC,SAAKA,EAAK3xB,OAAS2xB,EAAK8nc,aAGxB7ze,KAAK0rgB,kBAAkB1rgB,KAAK+5D,SAC5B/5D,KAAK0rgB,kBAAkB1rgB,KAAK8oE,MAC5B9oE,KAAKssgB,uBACLtsgB,KAAKg8F,eACE,IAKXiva,EAAM/ugB,UAAU67gB,iBAAmB,SAAUzoB,EAAe90e,GACxD,IAAK,IAAIxc,EAAK,EAAGg6gB,EAAkB1oB,EAAetxf,EAAKg6gB,EAAgBn7gB,OAAQmB,IAAM,CACjF,IAAIime,EAAS+zC,EAAgBh6gB,GAC7B,GAAIwc,IAAUypd,EAAOzpd,MACjB,OAAOypd,EAGf,OAAO,MAKXgnC,EAAM/ugB,UAAU+7gB,gBAAkB,WAC9Bj4gB,KAAKmsgB,yBACLnsgB,KAAKosgB,0BACLpsgB,KAAKqsgB,iBACLrsgB,KAAK0rgB,kBAAkB1rgB,KAAK+5D,SAC5B/5D,KAAK0rgB,kBAAkB1rgB,KAAK8oE,MAC5B9oE,KAAKssgB,uBACLtsgB,KAAKg8F,aAAY,GACZh8F,KAAKV,WACNU,KAAK8of,aAAe9of,KAAKgsgB,iBAAmBhsgB,KAAK0xgB,YACjD1xgB,KAAK2rf,cACL3rf,KAAK06f,eACL16f,KAAK+pB,QAAQ,SAAU,CAAE2od,MAAO1ye,KAAKV,SAAW,GAAKU,SAM7DirgB,EAAM/ugB,UAAUg8gB,aAAe,WAC3Bn8d,GAAc/7C,KAAKgB,QAAQyY,GAAK,wBAChCsiC,GAAc/7C,KAAKgB,QAAQyY,GAAK,yBAMpCwxf,EAAM/ugB,UAAU29B,kBAAoB,SAAU2H,EAASC,GACnD,IAAI2kQ,GAAW,EACX+xO,GAAgB,EAEpB,GADAn4gB,KAAKm9f,eAAgB,GAChBn9f,KAAKi9e,YAAa,CACnB,IAAK,IAAIj/e,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,eACDm6gB,EAAgBn4gB,KAAK83gB,WAAWt2e,EAAQo/c,cACpCp/c,EAAQo/c,aAAalE,qBACrBt2M,GAAW,GAEV5kQ,EAAQo/c,aAAaw3B,mBACtBD,GAAgB,GAEpB,MACJ,IAAK,eACDA,EAAgBn4gB,KAAK83gB,WAAWt2e,EAAQqsd,cACpCrsd,EAAQqsd,aAAanR,qBACrBt2M,GAAW,GAEV5kQ,EAAQqsd,aAAauqB,mBACtBD,GAAgB,GAEpB,MACJ,IAAK,OACD,IAAK,IAAIpjf,EAAK,EAAGI,EAAKj3B,OAAOjB,KAAKukC,EAAQ+1C,MAAOxiD,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACnE,IAAIva,EAAQ2a,EAAGJ,GACfojf,EAAgBA,GAAiBn4gB,KAAK83gB,WAAWt2e,EAAQ+1C,KAAK/8D,IACzDgnB,EAAQ+1C,KAAK/8D,GAAO49f,mBACrBD,GAAgB,GAGxB,MACJ,IAAK,SACL,IAAK,QACDn4gB,KAAKgsgB,iBACLmM,GAAgB,EAChB,MACJ,IAAK,WACL,IAAK,QACDA,GAAgB,EAChB,MACJ,IAAK,aACG32e,EAAQo5c,aAAep5c,EAAQo5c,WAAWp+Z,MAAQh7C,EAAQo5c,WAAW7mN,cACrEokP,GAAgB,EAGhB/xO,GAAW,EAEf,MACJ,IAAK,gBACG5kQ,EAAQsue,gBAAkBtue,EAAQsue,cAActzb,MAAQh7C,EAAQsue,cAAc/7O,cAC9EokP,GAAgB,EAGhB/xO,GAAW,EAEf,MACJ,IAAK,SACDA,GAAW,EACX,MACJ,IAAK,aACDpmS,KAAKg8F,aAAY,GACjBm8a,GAAgB,EAChB,MACJ,IAAK,eACDn4gB,KAAKknC,UACL,MACJ,IAAK,SAKD,IAJA,IAAIvlC,EAAM3B,KAAKike,OAAOpne,OAClBw7gB,GAAgB,EAChBp0C,OAAS,EACTq0C,OAAa,EACR17gB,EAAI,EAAGA,EAAI+E,EAAK/E,IACrBqne,EAASzic,EAAQyic,OAAOrne,GAEpBoD,KAAKV,UAAY2ke,IAAYA,EAAO/ma,UAAYz7B,EAAQwic,OAAOrne,GAAGsgE,SAAY+ma,EAAOs0C,UACrFt0C,EAAOjtE,QAAUitE,EAAOu1B,oBAAsBv1B,EAAO94d,MAAQ84d,EAAOu0C,aAAev0C,EAAOw0C,YAC1FH,GAAa,GAEbr0C,IAAWA,EAAOnia,YAAcmia,EAAOtia,OAASsia,EAAO/B,UAAY+B,EAAOuzB,OAC1EvzB,EAAO4zB,OAAS5zB,EAAOznZ,MAAQynZ,EAAOh6S,MAAQg6S,EAAOj6S,KAAOi6S,EAAOlie,MAAQkie,EAAO5he,OAClF4he,EAAO7nS,MAAQ6nS,EAAO7pd,MAAQ6pd,EAAOjtE,QAAUshH,KAC/Ch6gB,YAAO0B,KAAK+3gB,iBAAiB/3gB,KAAKsvf,cAAe1yf,GAAIqne,EAAQ,MAAM,GACnEo0C,GAAgB,GAGpBA,IACAr4gB,KAAKmsgB,yBACLnsgB,KAAKosgB,0BACLpsgB,KAAKqsgB,iBACLrsgB,KAAK0rgB,kBAAkB1rgB,KAAK+5D,SAC5B/5D,KAAK0rgB,kBAAkB1rgB,KAAK8oE,MAC5B9oE,KAAKssgB,uBACLtsgB,KAAKg8F,aAAY,GACjBm8a,GAAgB,GAEpB,MACJ,IAAK,aACDA,GAAgB,EAChB,MACJ,IAAK,gBACG32e,EAAQk6c,aAAa0Q,iBAAmB3qd,EAAQi6c,aAAa0Q,mBAC7D+rB,GAAgB,GAEpB/xO,GAAW,EACX,MACJ,IAAK,aACDA,GAAW,EACX,MACJ,IAAK,YACG5kQ,EAAQqvd,UAAUloV,QAAUnnI,EAAQqvd,UAAUloV,OAAOj5H,QACrDyoe,GAAgB,GAEpB/xO,GAAW,EACX,MACJ,IAAK,iBACI5kQ,EAAQs/d,eAAenwT,YAAenvK,EAAQs/d,eAAen9d,UAC9Dw0e,GAAgB,GAEpB/xO,GAAW,EACX,MACJ,IAAK,WACDpmS,KAAKmsgB,yBACL/lO,GAAW,EACX,MACJ,IAAK,sBACL,IAAK,gBACGpmS,KAAKuvS,iBAAmB/tQ,EAAQ4zd,gBAA4D,IAA3C5zd,EAAQ4zd,cAAcj3f,QAAQ,UAC/E6B,KAAKuvS,gBAAgBmpO,YAAc14gB,KAAKo1f,cACxCp1f,KAAKuvS,gBAAgBopO,QAAU34gB,KAAKgB,QAAQyY,GAAK,uBACjDzZ,KAAKuvS,gBAAgBigO,gBAAgBxvgB,KAAMyhC,EAAQ2zd,gBAEvD,MACJ,IAAK,gBACGp1f,KAAKuvS,kBAAoB/tQ,EAAQo3e,eAAiB54gB,KAAKuvS,gBAAgB8/N,oBAAoBxygB,OAAS,IACpGmD,KAAKuvS,gBAAgBmpO,YAAc14gB,KAAKo1f,cACxCp1f,KAAKuvS,gBAAgBopO,QAAU34gB,KAAKgB,QAAQyY,GAAK,uBACjDzZ,KAAKuvS,gBAAgBigO,gBAAgBxvgB,KAAMyhC,EAAQ2zd,gBAEvD,MACJ,IAAK,gBACL,IAAK,mBACL,IAAK,mBACDp1f,KAAKk4gB,eACL9xO,GAAW,EACX,MACJ,IAAK,QACDpmS,KAAKm9f,eAAgB,EACrB,MACJ,IAAK,SACL,IAAK,eACGn9f,KAAKV,UACLU,KAAK6c,aACLupR,GAAW,GAGXpmS,KAAKknC,UAET,MACJ,IAAK,UACGlnC,KAAK2rgB,gBACL3rgB,KAAK2rgB,cAAc/W,eAAiB,MAK/CujB,GAAiB/xO,IAClBpmS,KAAK0xgB,YACL1xgB,KAAK6sgB,iBACL7sgB,KAAK+pB,QAAQ,SAAU,CAAE2od,MAAO1ye,KAAKV,SAAW,GAAKU,QAErDm4gB,IACAn4gB,KAAK8of,aAAe9of,KAAKgsgB,iBAAmBhsgB,KAAK0xgB,YAC7C1xgB,KAAKuiG,SACLviG,KAAK6oC,gBAET7oC,KAAK2rf,cACL3rf,KAAK06f,eACL16f,KAAK+pB,QAAQ,SAAU,CAAE2od,MAAO1ye,KAAKV,SAAW,GAAKU,OACrDA,KAAKk9e,QAAS,EACdl9e,KAAKmggB,UAAW,KAI5Bxhe,GAAW,CACP3B,YAAS,OACViue,EAAM/ugB,UAAW,aAAS,GAC7ByiC,GAAW,CACP3B,YAAS,OACViue,EAAM/ugB,UAAW,cAAU,GAC9ByiC,GAAW,CACP3B,YAAS,KACViue,EAAM/ugB,UAAW,aAAS,GAC7ByiC,GAAW,CACP3B,YAAS,KACViue,EAAM/ugB,UAAW,kBAAc,GAClCyiC,GAAW,CACPvB,YAAQ6gD,GAAM+kZ,eAAgBlmZ,KAC/Bmub,EAAM/ugB,UAAW,kBAAc,GAClCyiC,GAAW,CACP3B,YAAS,KACViue,EAAM/ugB,UAAW,gBAAY,GAChCyiC,GAAW,CACPvB,YAAQ6gD,GAAMglZ,kBAAmBnmZ,KAClCmub,EAAM/ugB,UAAW,qBAAiB,GACrCyiC,GAAW,CACPvB,YAAQ,GAAIumc,KACbsnC,EAAM/ugB,UAAW,cAAU,GAC9ByiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,GAAK0sT,KACzC6uK,EAAM/ugB,UAAW,cAAU,GAC9ByiC,GAAW,CACP3B,YAAS,OACViue,EAAM/ugB,UAAW,kBAAc,GAClCyiC,GAAW,CACPvB,YAAQ,CAAEurI,OAAQ,CAAEhzF,MAAO,KAAMjmC,MAAO,IAAOihK,WAAY,eAAiB+yR,KAC7EunC,EAAM/ugB,UAAW,iBAAa,GACjCyiC,GAAW,CACPvB,YAAQ,CAAEhjB,KAAM,gBAAkB49D,KACnCizb,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACPvB,YAAQ,CAAEhjB,KAAM,gBAAkB49D,KACnCizb,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACPtB,YAAW,CAAC,IAAKowE,KAClBw9Z,EAAM/ugB,UAAW,YAAQ,GAC5ByiC,GAAW,CACPtB,YAAW,CAAC,IAAKw/B,KAClBouc,EAAM/ugB,UAAW,eAAW,GAC/ByiC,GAAW,CACPtB,YAAW,CAAC,IAAK26C,KAClBizb,EAAM/ugB,UAAW,YAAQ,GAC5ByiC,GAAW,CACPtB,YAAW,CAAC,IAAKo6d,KAClBwT,EAAM/ugB,UAAW,cAAU,GAC9ByiC,GAAW,CACPtB,YAAW,CAAC,IAAKk7c,KAClB0yB,EAAM/ugB,UAAW,mBAAe,GACnCyiC,GAAW,CACP3B,YAAS,KACViue,EAAM/ugB,UAAW,gBAAY,GAChCyiC,GAAW,CACP3B,YAAS,aACViue,EAAM/ugB,UAAW,aAAS,GAC7ByiC,GAAW,CACPvB,YAAQ,GAAIgnc,KACb6mC,EAAM/ugB,UAAW,eAAW,GAC/ByiC,GAAW,CACPvB,YAAQ,GAAI2te,KACbE,EAAM/ugB,UAAW,iBAAa,GACjCyiC,GAAW,CACPvB,YAAQ,GAAImje,KACb0K,EAAM/ugB,UAAW,sBAAkB,GACtCyiC,GAAW,CACPtB,YAAW,CAAC,IAAKyte,KAClBG,EAAM/ugB,UAAW,0BAAsB,GAC1CyiC,GAAW,CACPvB,YAAQ,GAAI4te,KACbC,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACP3B,YAAS,SACViue,EAAM/ugB,UAAW,qBAAiB,GACrCyiC,GAAW,CACP3B,YAAS,SACViue,EAAM/ugB,UAAW,qBAAiB,GACrCyiC,GAAW,CACP3B,YAAS,SACViue,EAAM/ugB,UAAW,wBAAoB,GACxCyiC,GAAW,CACP3B,YAAS,SACViue,EAAM/ugB,UAAW,wBAAoB,GACxCyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,qBAAiB,GACrCyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,2BAAuB,GAC3CyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,mBAAe,GACnCyiC,GAAW,CACPtB,YAAW,GAAIwmc,KAChBonC,EAAM/ugB,UAAW,2BAAuB,GAC3CyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,4BAAwB,GAC5CyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,oCAAgC,GACpDyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACP3B,YAAS,OACViue,EAAM/ugB,UAAW,uBAAmB,GACvCyiC,GAAW,CACPtB,YAAW,GAAIgre,KAChB4C,EAAM/ugB,UAAW,kBAAc,GAClCyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,uBAAmB,GACvCyiC,GAAW,CACP3B,YAAS,OACViue,EAAM/ugB,UAAW,mBAAe,GACnCyiC,GAAW,CACP3B,YAAS,IACViue,EAAM/ugB,UAAW,gBAAY,GAChCyiC,GAAW,CACP3B,aAAS,IACViue,EAAM/ugB,UAAW,iCAA6B,GACjDyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,eAAW,GAC/ByiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,wBAAoB,GACxCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,mBAAe,GACnCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,cAAU,GAC9ByiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,mBAAe,GACnCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,YAAQ,GAC5ByiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,yBAAqB,GACzCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,kBAAc,GAClCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,mBAAe,GACnCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,uBAAmB,GACvCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,sBAAkB,GACtCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,2BAAuB,GAC3CyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,4BAAwB,GAC5CyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,mBAAe,GACnCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,4BAAwB,GAC5CyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,qBAAiB,GACrCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,2BAAuB,GAC3CyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,sBAAkB,GACtCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,uBAAmB,GACvCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,kBAAc,GAClCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,wBAAoB,GACxCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,iBAAa,GACjCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,uBAAmB,GACvCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,sBAAkB,GACtCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,yBAAqB,GACzCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,oBAAgB,GACpCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,iBAAa,GACjCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,mBAAe,GACnCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,iBAAa,GACjCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,qBAAiB,GACrCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,iBAAa,GACjCyiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,YAAQ,GAC5ByiC,GAAW,CACPp/B,eACD0rgB,EAAM/ugB,UAAW,eAAW,GAC/ByiC,GAAW,CACP3B,YAAS,QACViue,EAAM/ugB,UAAW,oBAAgB,GACpC+ugB,EAAQtse,GAAW,CACflB,KACDwte,GA/zEoB,CAi0EzB3ke,KCh8EEuye,GAA4B,WAC5B,SAASA,KAmWT,OA3VAA,EAAW38gB,UAAU48gB,kBAAoB,SAAU70C,GAC3CA,EAAOyO,MAAMqmC,4BAA8B90C,EAAOl2b,UAClD/tC,KAAKg5gB,uBAAuB/0C,GAEhC,IAAIl2b,EAAYk2b,EAAOyO,MAAMqmC,0BAAgC90C,EAAOl2b,SAAX,EACrDg/d,EAAa9oC,EAAOyO,MAAMqmC,0BAAgC90C,EAAO8oC,UAAX,EAC1D9oC,EAAO+wB,cAAe,EACtB,IAMI9xd,EANAosd,EAAgBrrB,EAAOyO,MAAM4c,cAC7B2pB,EAAgBh1C,EAAOyO,MAAMqmC,0BAA4B90C,EAAOi1C,cAAgB,EAChFC,EAAuC,OAAvBl1C,EAAOpgD,aAAwBz3a,OAAO63d,EAAOpgD,aAAkC,cAAhBogD,EAAO94d,KAAwB,EAAI,GAClH84d,EAAOpgD,YAEPn0Y,EADoB4kc,GAAkBrQ,EAAOpkW,MAAOyvX,GACxB6pB,EAE5Bnwe,EAAY+E,EAAYg/d,EAAY,GACpCv5B,EAAc,IAAIlB,GAAYtpc,EAAUA,EAAY,EAAI+je,GAM5D,OALM3ggB,MAAMone,EAAYt2e,QAAUkP,MAAMone,EAAY76d,OAEhDuqB,EAAS+1e,GADTzlC,EAAc,IAAIlB,GAAYkB,EAAYt2e,MAAQwyC,EAAO8jc,EAAY76d,IAAM+2B,IACtC8xE,MACrCgyX,EAAc,IAAIlB,GAAYkB,EAAYt2e,MAAQgmC,EAAS,EAAGswc,EAAY76d,IAAMuqB,EAAS,IAEtFswc,GAQXqlC,EAAW38gB,UAAUk9gB,aAAe,SAAUv9b,EAAIE,EAAIE,EAAIE,EAAI8nZ,GAC1D,IAAIo1C,EAAS3zB,GAAS7pa,EAAIE,EAAIkoZ,EAAOpkW,MAAOokW,EAAOtkW,MAAOskW,EAAOyO,MAAM6B,qBACnE+kC,EAAS5zB,GAASzpa,EAAIE,EAAI8nZ,EAAOpkW,MAAOokW,EAAOtkW,MAAOskW,EAAOyO,MAAM6B,qBACvE,OAAO,IAAItJ,GAAK1je,KAAK6L,IAAIimgB,EAAO93f,EAAG+3f,EAAO/3f,GAAIha,KAAK6L,IAAIimgB,EAAO/igB,EAAGgjgB,EAAOhjgB,GAAI/O,KAAKgH,IAAI+qgB,EAAO/3f,EAAI83f,EAAO93f,GAAIha,KAAKgH,IAAI+qgB,EAAOhjgB,EAAI+igB,EAAO/igB,KAQ1IuigB,EAAW38gB,UAAU88gB,uBAAyB,SAAU/0C,GAEpD,IADA,IAAIyO,EAAQzO,EAAOyO,MACV10e,EAAK,EAAGuF,EAAKmve,EAAM34a,QAAS/7D,EAAKuF,EAAG1G,OAAQmB,IAEjD,IADA,IAAIs9f,EAAa/3f,EAAGvF,GACX+2B,EAAK,EAAGI,EAAKu9c,EAAM5pa,KAAM/zC,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACpD,IAAIymB,EAAOrmB,EAAGJ,GACd/0B,KAAKu5gB,iBAAiBt1C,EAAO+2B,qBAAqBM,EAAY9/c,GAAM,MAIhFq9d,EAAW38gB,UAAUq9gB,iBAAmB,SAAU53B,GAG9C,IAFA,IAAI6Z,EAAgB,GAChBge,EAAU,CAAEzM,UAAW,EAAGh/d,SAAU,MAC/BnxC,EAAI,EAAGA,EAAI+kf,EAAiB9kf,OAAQD,IAAK,EAEN,KADpCJ,EAAQmlf,EAAiB/kf,IACnBuO,KAAKhN,QAAQ,YACf3B,EAAMg/f,mBACqCx/f,IAAvCw/f,EAAch/f,EAAMg/f,gBACpBh/f,EAAMuxC,SAAWyre,EAAQzM,UACzBvR,EAAch/f,EAAMg/f,eAAiBge,EAAQzM,aAG7CvwgB,EAAMuxC,SAAWytd,EAAch/f,EAAMg/f,eAIhB,OAArBge,EAAQzre,UACRvxC,EAAMuxC,SAAWyre,EAAQzM,UACzByM,EAAQzre,SAAWyre,EAAQzM,aAG3BvwgB,EAAMuxC,SAAWyre,EAAQzre,SAKjCvxC,EAAMuxC,SAAWyre,EAAQzM,YAGjC,IAASnwgB,EAAI,EAAGA,EAAI+kf,EAAiB9kf,OAAQD,IAAK,CAC9C,IAAIJ,KAAQmlf,EAAiB/kf,IACvBmwgB,UAAYyM,EAAQzM,YASlC8L,EAAW38gB,UAAUu9gB,qBAAuB,SAAUrie,EAAOlH,EAAM+zb,GAC1DA,EAAOyO,MAAM6B,oBAIdv0e,KAAK05gB,cAActie,EAAOlH,EAAM+zb,GAHhCjke,KAAK25gB,cAAcvie,EAAOlH,EAAM+zb,GAKhB,cAAhBA,EAAO94d,OACPisC,EAAMq8b,SAAWr8b,EAAM71B,EAAI0id,EAAO21C,gBAAgBC,SAAW,EAC7Dzie,EAAMu8b,SAAWv8b,EAAM71B,EAAI0id,EAAO21C,gBAAgBC,SAAW,IASrEhB,EAAW38gB,UAAUy9gB,cAAgB,SAAUvie,EAAOlH,EAAM+zb,GACxD7sb,EAAMs/c,gBAAgB90f,KAAK,CACvB2f,EAAG2uB,EAAK3uB,EAAK2uB,EAAKR,MAAS,EAC3Bp5B,EAA0B,YAAtB2td,EAAO0iB,aAAsE,IAA1C1iB,EAAO0iB,WAAWxof,QAAQ,YAC5Di5C,EAAMohT,QAAU,KAAOyrI,EAAOtkW,MAAM27W,WAAeprc,EAAK55B,EAAK45B,EAAK55B,EAAI45B,EAAKP,SAEpF3vC,KAAK85gB,UAAU1ie,EAAOlH,EAAM+zb,GACR,gBAAhBA,EAAO94d,MACPisC,EAAMs/c,gBAAgB90f,KAAK,CACvB2f,EAAG2uB,EAAK3uB,EAAK2uB,EAAKR,MAAS,EAC3Bp5B,EAAG45B,EAAK55B,EAAI45B,EAAKP,UAU7Bkpe,EAAW38gB,UAAUw9gB,cAAgB,SAAUtie,EAAOlH,EAAM+zb,GACxD7sb,EAAMs/c,gBAAgB90f,KAAK,CACvB2f,EAA0B,YAAtB0id,EAAO0iB,aAAsE,IAA1C1iB,EAAO0iB,WAAWxof,QAAQ,YAC5Di5C,EAAMohT,QAAU,KAAOyrI,EAAOtkW,MAAM27W,WAAeprc,EAAK3uB,EAAI2uB,EAAKR,MAAQQ,EAAK3uB,EACnFjL,EAAG45B,EAAK55B,EAAI45B,EAAKP,OAAS,IAE9B3vC,KAAK85gB,UAAU1ie,EAAOlH,EAAM+zb,GACR,gBAAhBA,EAAO94d,MACPisC,EAAMs/c,gBAAgB90f,KAAK,CACvB2f,EAAG2uB,EAAK3uB,EACRjL,EAAG45B,EAAK55B,EAAI45B,EAAKP,OAAS,KAUtCkpe,EAAW38gB,UAAUkjgB,aAAe,SAAUn7B,GACtCA,EAAOjtE,QAAUitE,EAAOjtE,OAAO95V,SAC/B+ma,EAAOyO,MAAM4qB,aAAa5te,OAAOu0c,IAUzC40C,EAAW38gB,UAAU49gB,UAAY,SAAU1ie,EAAOlH,EAAM+zb,GACpD,GAAgB,IAAZ7sb,EAAM9gC,EAAS,CACf,IAAI4+e,EAAejxB,EAAOjtE,QAAUitE,EAAOjtE,OAAOtnX,MAASu0b,EAAOjtE,OAAOtnX,MAAQ,EAC7Egic,EAAgBzN,EAAOjtE,QAAUitE,EAAOjtE,OAAOrnX,OAAUs0b,EAAOjtE,OAAOrnX,OAAS,EACpFyH,EAAMw+c,QAAQh0f,KAAK,IAAIqpe,GAAK7zb,EAAMs/c,gBAAgB,GAAGn1e,EAAI2ze,EAAa99c,EAAMs/c,gBAAgB,GAAGpgf,EAAIo7d,EAAc,EAAIwjB,EAAa,EAAIxjB,SAGtIt6b,EAAMw+c,QAAQh0f,KAAKsuC,IAS3B2oe,EAAW38gB,UAAU69gB,aAAe,SAAU91C,EAAQ7sb,EAAOglJ,EAAMzzB,GAC/D,IAAIokU,EAAW,CACXhqd,QAAQ,EAAO3I,KAAMy8d,GAAa5S,OAAQA,EAAQ7sb,MAAOA,EACzDglJ,KAAM6nS,EAAOw5B,cAAcrmd,EAAOglJ,GAClCzzB,OAAQs7T,EAAOy5B,eAAetmd,EAAOuxH,IAIzC,OAFAs7T,EAAOyO,MAAM3od,QAAQ8sd,GAAa9J,GAClC31b,EAAMu+B,MAAQo3Z,EAAS3wS,KAChB2wS,GAQX8rC,EAAW38gB,UAAUmia,cAAgB,SAAU4lE,EAAQ7sb,EAAOlH,EAAM68b,GAChE,IAKIxtY,EALAmzY,EAAQzO,EAAOyO,MAEnB,IADYA,EAAM6B,oBAAsBrkc,EAAKP,OAASO,EAAKR,QAC9C,EACT,OAAO,KAKP6vD,EAFY,IAAZnoD,EAAM9gC,EAEMtW,KAAKg6gB,yBAAyB9pe,EAAM,EAAG,EAAG,EAAG,GAG7ClwC,KAAKg6gB,yBAAyB9pe,EAAM+zb,EAAO8D,aAAaxpG,QAAS0lG,EAAO8D,aAAakyC,SAAUh2C,EAAO8D,aAAamyC,WAAYj2C,EAAO8D,aAAaoyC,aAEnK,IAAI//f,EAA2B,cAApB6pd,EAAO5rX,SAA2Bq6X,EAAM1xe,QAAQyY,GAAK,cAAgBwqd,EAAOzpd,MAAQ,IAAMypd,EAAO7pd,KACxG,UAAYg9B,EAAM58B,MAAQk4d,EAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAQ,UAAY48B,EAAM58B,MAC3FirW,EAAkBs9H,GAAcrQ,EAAMwK,OAAQ9ie,GAC9Cioe,EAAoB58H,EAAkBA,EAAgBt2V,aAAa,KAAO,GAC1E7iB,EAAU,IAAIq/d,GAAWvxd,EAAM2yd,EAAS3wS,KAAM2wS,EAASpkU,OAAOj5H,MAAOq9b,EAASpkU,OAAOhzF,MAAOsuZ,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,GAC9Hv+F,EAAU0xe,EAAMtsM,SAAS4+H,SAAS14Z,EAAS,IAAIi6V,WAAW,CAAC09H,EAAOj7D,SAASznZ,EAAG0id,EAAOj7D,SAAS1yZ,KAClG,OAAQ2td,EAAO0iB,YACX,IAAK,KACD3lf,EAAQ40B,aAAa,aAAcwhB,EAAM71B,EAAEpU,WAAa,IAAMiqC,EAAMohT,OAAOrrV,YAC3E,MACJ,IAAK,UACDnM,EAAQ40B,aAAa,aAAcwhB,EAAM71B,EAAEpU,WAAa,IAAMiqC,EAAM6yI,KAAK98K,WAAa,IAAMiqC,EAAM4yI,IAAI78K,YAG9G04e,GAAmB5hB,EAAOyO,MAAMoW,aAAc7kB,EAAO84B,cAAe/7f,EAAS0xe,EAAMwK,QAC9EjZ,EAAOyO,MAAMoW,cACd1G,GAAcphf,EAASu+F,EAAWmzY,EAAMwK,OAAQmF,EAAmB3P,EAAM5xc,WASjF+3e,EAAW38gB,UAAU4jC,QAAU,SAAUmkc,GAIrC,IAHA,IAAIm2C,EAAen2C,EAAO84B,cAAczue,WACpCwsC,EAA4B,cAApBmpa,EAAO5rX,SAA2B,EAAI,EAEzCr6G,EAAK,EAAGq8gB,EADGt8B,GAAiB9Z,GACajme,EAAKq8gB,EAAgBx9gB,OAAQmB,IAAM,CACjF,IAAIo5C,EAAQije,EAAgBr8gB,IACvBo5C,EAAMs/c,gBAAgB75f,QAA4B,kBAAhBone,EAAO94d,MAA4BisC,EAAMw+c,QAAQ/4f,UAGxFmD,KAAKs6gB,YAAYF,EAAat/c,GAAQmpa,EAAQ7sb,GAC9C0jB,OASR+9c,EAAW38gB,UAAUo+gB,YAAc,SAAUt5gB,EAASije,EAAQ7sb,GAC1D,IAII71B,EACAjL,EAGAkpe,EACAC,EA6BAjjf,EAtCAyN,EAASg6d,EAAO7jc,UAChBU,EAAWmjc,EAAOyO,MAAMytB,SAAWl8B,EAAOyO,MAAM5xc,SAAW72B,EAAO62B,SAClE8mH,EAASq6V,GAAqB,UAC9Bs4B,EAASnje,EAAMohT,OAAS,EAGxBgiL,GAAiBpje,EAAMw+c,QAAQ,GAAGjmd,OAClC8qe,GAAgBrje,EAAMw+c,QAAQ,GAAGlmd,MAGhCu0b,EAAOyO,MAAM6B,qBAedj+d,GAAK8gC,EAAMw+c,QAAQ,GAAGt/e,EAClB2td,EAAO94d,KAAKhN,QAAQ,aAAe,GACnCojB,EAAK85d,GAAmB,EAAGpX,EAAOtkW,OAAUskW,EAAOtkW,MAAMzvF,KAAKR,MAC9D8vc,EAAUj+d,EACVk+d,EAAUnpe,IAGViL,GAAK61B,EAAMw+c,QAAQ,GAAGr0e,EACtBk+d,EAAU86B,EAASjkgB,EAAIA,EAAIkkgB,EAC3Bh7B,GAAqD,IAA1Cvb,EAAO0iB,WAAWxof,QAAQ,aAA2D,IAAtC8le,EAAO94d,KAAKhN,QAAQ,aAAuBojB,EAAIk5f,EAAe,EACnHF,IAAWt2C,EAAOtkW,MAAM27W,WAAc/5d,EAAIk5f,EAAel5f,KAxBlEA,GAAK61B,EAAMw+c,QAAQ,GAAGr0e,EAClB0id,EAAO94d,KAAKhN,QAAQ,aAAe,GACnCmY,GAAK,EAAI+ke,GAAmB,EAAGpX,EAAOtkW,QAAWskW,EAAOtkW,MAAMzvF,KAAKP,OACnE6vc,EAAUj+d,EACVk+d,EAAUnpe,IAGVA,GAAK8gC,EAAMw+c,QAAQ,GAAGt/e,EACtBmpe,GAAqD,IAA1Cxb,EAAO0iB,WAAWxof,QAAQ,aAA2D,IAAtC8le,EAAO94d,KAAKhN,QAAQ,aAAuBmY,EAAIkkgB,EAAgB,EACpHD,IAAWt2C,EAAOtkW,MAAM27W,WAAchle,EAAIA,EAAIkkgB,EACnDh7B,EAAU+6B,EAASh5f,EAAIA,EAAIk5f,IAkB9Br9gB,YAAkB4D,KACnBA,EAAQgzB,MAAMwC,WAAa,SAC3B,IAAI0I,IAAU,IAAIY,QAAQ9+B,EAAS,CAC/B8/B,SAAUA,EACVjhC,MAAOoK,EAAOpK,MACdshC,SAAU,SAAUlhC,GACZA,EAAKygC,WAAazgC,EAAKJ,QACvBmB,EAAQgzB,MAAMwC,WAAa,UACtBytc,EAAOyO,MAAM6B,qBAOdkmC,EAAeA,GAA8B,EAC7Cj+gB,EAAQorJ,EAAO3nJ,EAAKygC,UAAYzgC,EAAKJ,MAAO,EAAG46gB,EAAcx6gB,EAAK6gC,UAClE9/B,EAAQ40B,aAAa,YAAa,aAAe4pd,EAAU,IAAMC,EAC7D,WAAcjjf,EAAQi+gB,EAAgB,mBAAsBj7B,EAAW,KAAQC,EAAW,OAT9F+6B,EAAgBA,GAAgC,EAChDh+gB,EAAQorJ,EAAO3nJ,EAAKygC,UAAYzgC,EAAKJ,MAAO,EAAG26gB,EAAev6gB,EAAK6gC,UACnE9/B,EAAQ40B,aAAa,YAAa,aAAe4pd,EAAU,IAAMC,EAC7D,aAAgBjjf,EAAQg+gB,EAAiB,gBAAmBh7B,EAAW,KAAQC,EAAW,QAU1G9me,IAAK,WACD3X,EAAQ40B,aAAa,YAAa,kBAClC,IAAImne,EAAgB94B,EAAO84B,cAC3B,IAAI/7f,IAAY+7f,EAAcxsX,kBAAoBn5F,EAAM58B,QAAUypd,EAAOtoZ,OAAO9+E,OAAS,GACpE,cAAhBone,EAAO94d,MAAwBnK,IAAY+7f,EAAcjse,SAASise,EAAcr5b,kBAAoB,MACrGuga,EAAOyO,MAAM3od,QAAQ,oBAAqB,CAAEk6c,OAAQA,EAAOyO,MAAMpze,SAAW,GAAK2ke,IAC7D,cAAhBA,EAAO94d,MAEP,IADA,IAAIivgB,EAAerd,EAAczue,WACxB1xB,EAAI,EAAGA,EAAIw9gB,EAAav9gB,OAAQD,KACY,IAA7Cw9gB,EAAax9gB,GAAG6c,GAAGtb,QAAQ,eAC3Bi8gB,EAAax9gB,GAAGo3B,MAAMwC,WAAa,UACnC4jf,EAAax9gB,GAAGg5B,aAAa,YAAa,wBAY1Eijf,EAAW38gB,UAAU89gB,yBAA2B,SAAU9pe,EAAMquV,EAAS07I,EAAUC,EAAYC,GAC3F,MAAO,KAAYjqe,EAAK3uB,EAAI,KAAOg9W,EAAUruV,EAAK55B,GAC9C,MAAQ45B,EAAK3uB,EAAI,IAAM2uB,EAAK55B,EAAI,KAAO45B,EAAK3uB,EAAIg9W,GAAW,IAC3DruV,EAAK55B,EAFF,OAEyB45B,EAAK3uB,EAAI2uB,EAAKR,MAAQuqe,GAAY,IAAM/pe,EAAK55B,EACzE,OAAS45B,EAAK3uB,EAAI2uB,EAAKR,OAAS,IAAMQ,EAAK55B,EAAI,KAC9C45B,EAAK3uB,EAAI2uB,EAAKR,OAAS,KAAOQ,EAAK55B,EAAI2jgB,GAJrC,OAKF/pe,EAAK3uB,EAAI2uB,EAAKR,OAAS,KAAOQ,EAAK55B,EAAI45B,EAAKP,OAASwqe,GACpD,OAASjqe,EAAK3uB,EAAI2uB,EAAKR,OAAS,KAAOQ,EAAK55B,EAAI45B,EAAKP,QAAU,KAAOO,EAAK3uB,EAAI2uB,EAAKR,MAAQyqe,GAAe,KAC5Gjqe,EAAK55B,EAAI45B,EAAKP,QAPZ,OAOoCO,EAAK3uB,EAAI24f,GAAc,KAAOhqe,EAAK55B,EAAI45B,EAAKP,QAAU,MAAQO,EAAK3uB,EAAI,KAC7G2uB,EAAK55B,EAAI45B,EAAKP,QAAU,IAAMO,EAAK3uB,EAAI,KAAO2uB,EAAK55B,EAAI45B,EAAKP,OAASuqe,GARnE,MAQmGhqe,EAAK3uB,EAAI,KAC9Gg9W,EAAUruV,EAAK55B,GATb,MAWJuigB,EApWqB,GCd5Bx6e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAoBzCi8e,GAA8B,SAAUv7e,GAExC,SAASu7e,IACL,OAAkB,OAAXv7e,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA0D/D,OA5DAq+B,GAAUq8e,EAAcv7e,GAUxBu7e,EAAax+gB,UAAUwzB,OAAS,SAAUu0c,GAKtC,IAJA,IAAI/zb,EAGA68b,EAFA4tC,EAAiB36gB,KAAK84gB,kBAAkB70C,GACxCl7D,EAASxha,KAAK8L,IAAI4wd,EAAOtkW,MAAMk1W,aAAazhe,IAAK,GAE5CpV,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAI48gB,EAAcr3gB,EAAGvF,GAGrB,GAFA48gB,EAAYlkB,gBAAkB,GAC9BkkB,EAAYhlB,QAAU,GAClBglB,EAAY19c,SAAWohb,GAAYra,EAAOtoZ,OAAOi/b,EAAYpggB,MAAQ,GAAIoggB,EAAa32C,EAAOtoZ,OAAOi/b,EAAYpggB,MAAQ,GAAIypd,GAAS,CACrI/zb,EAAOlwC,KAAKo5gB,aAAawB,EAAYriL,OAASoiL,EAAez9gB,MAAO09gB,EAAYpiL,OAAQoiL,EAAYriL,OAASoiL,EAAehigB,IAAKowZ,EAAQk7D,GACzI,IAAItuZ,EAA4B,cAApBsuZ,EAAO5rX,SAA2Buia,EAAYjlc,MAAQsuZ,EAAO40B,UACzE9rB,EAAW/se,KAAK+5gB,aAAa91C,EAAQ22C,EAAajlc,EAAO,CAAEjmC,MAAOu0b,EAAOt7T,OAAOj5H,MAAOimC,MAAOsuZ,EAAOt7T,OAAOhzF,SAC9F5yD,SACV/iB,KAAKy5gB,qBAAqBmB,EAAa1qe,EAAM+zb,GAC7Cjke,KAAKq+Z,cAAc4lE,EAAQ22C,EAAa1qe,EAAM68b,KAI1D/se,KAAKo/f,aAAan7B,IAQtBy2C,EAAax+gB,UAAUkhgB,YAAc,SAAUn5B,GAC3Cjke,KAAK8/B,QAAQmkc,IAKjBy2C,EAAax+gB,UAAU2+B,cAAgB,WACnC,MAAO,gBAWX6/e,EAAax+gB,UAAUif,QAAU,aAK1Bu/f,EA7DuB,CA8DhC7B,ICtEEgC,GAA0B,WAE1B,SAASA,EAAS1vB,GACdnrf,KAAK0ye,MAAQyY,EA+MjB,OAvMA0vB,EAAS3+gB,UAAUw8f,sBAAwB,SAAUz0B,GAajD,IAZA,IAuBI+Z,EAvBAC,EAAa,GACb68B,EAAc,GACdC,EAAgB92C,EAAOpkW,MAAMg1W,aAC7BmmC,EAAgB/2C,EAAOtkW,MAAMk1W,aAC7BomC,EAAeh3C,EAAOtoZ,OACtBkxZ,EAAa5I,EAAOj7D,SACpBkyG,EAAa3zgB,KAAKgH,IAAIwsgB,EAAcv5Z,MAAQqrX,EAAWn9b,OACvDyre,EAAa5zgB,KAAKgH,IAAIysgB,EAAcx5Z,MAAQqrX,EAAWl9b,QACvDyre,EAAcH,EAAa,IAAMA,EAAa,GAAG15f,EAAI25f,EAAc,EAAIA,EACvEG,EAAcJ,EAAa,IAAMA,EAAa,GAAG3kgB,EAAI6kgB,EAAc,EAAIA,EACvEt3B,EAAO,EACPC,EAAO,EACF9lf,EAAK,EAAGs9gB,EAAiBL,EAAcj9gB,EAAKs9gB,EAAez+gB,OAAQmB,IAAM,CAC9E,IAAIwgf,EAAe88B,EAAet9gB,GAClCwgf,EAAakY,gBAAkB,GAC/B7S,EAAOrF,EAAajmJ,OAASimJ,EAAajmJ,OAASwiL,EAAc3ngB,IACjE0we,EAAOtF,EAAahmJ,OAASgmJ,EAAahmJ,OAASwiL,EAAc5ngB,KAC7D7L,KAAKgH,IAAI6sgB,EAAav3B,IAASq3B,GAAc3zgB,KAAKgH,IAAI8sgB,EAAav3B,IAASq3B,KAC5El9B,EAAWr8e,KAAK48e,GAChB48B,EAAav3B,EACbw3B,EAAav3B,GAIrB,IAAK,IAAIlnf,EAAI,EAAGA,EAAIqhf,EAAWphf,OAAQD,IACnCohf,EAAYC,EAAWrhf,GACnBQ,YAAkB4gf,EAAUz8d,IAAsB,KAAhBy8d,EAAUz8d,GAI5Cu5f,EAAYl5gB,KAAKo8e,GAGzB,OAAO88B,GAYXD,EAAS3+gB,UAAUq/gB,iBAAmB,SAAUC,EAAYC,EAAax3C,EAAQuc,EAAYk7B,EAAkBlke,GAC3G,IAAI+nD,EAAY,GAChB,GAAkB,MAAdi8a,EAAoB,CACpB,IAAInC,EAASqC,EAAiBF,EAAWjjL,OAAQijL,EAAWhjL,OAAQyrI,EAAOpkW,MAAOokW,EAAOtkW,MAAO6gX,EAAYvc,GACxGq1C,EAASoC,EAAiBD,EAAYljL,OAAQkjL,EAAYjjL,OAAQyrI,EAAOpkW,MAAOokW,EAAOtkW,MAAO6gX,EAAYvc,GAC9G1kY,EAAY/nD,EAAa,IAAO6he,EAAO93f,EAAK,IAAO83f,EAAO/igB,EAA9CkhC,MACK8he,EAAO/3f,EAAK,IAAO+3f,EAAOhjgB,EAAK,IAEpD,OAAOipF,GAQXs7a,EAAS3+gB,UAAUy/gB,eAAiB,SAAUrvgB,EAAS23d,EAAQj7D,GAC3D,IAAIhoa,EAAU6B,GAAWyJ,EAAQmN,IAC7Bi5d,EAAQzO,EAAOyO,MACf2P,EAAoBrhf,EAAUA,EAAQmuB,aAAa,KAAO,KAC1Dq7c,EAAavG,EAAOyO,MAAMtsM,SAAS4+H,SAAS14Z,EAAS,IAAIi6V,WAAW,CAAC09H,EAAOj7D,SAASznZ,EAAG0id,EAAOj7D,SAAS1yZ,KACxGk0d,GACAA,EAAW50c,aAAa,YAAaozY,GAEzCi7D,EAAOsJ,YAAc/C,EAChBvG,EAAOyO,MAAMoW,cACd7kB,EAAO84B,cAAc/6f,YAAYwoe,GAErCvG,EAAO+wB,cAAe,EACtB5S,GAAcphf,EAASsL,EAAQzE,EAAGo8d,EAAOyO,MAAMwK,OAAQmF,EAAmB3P,EAAM5xc,WAQpF+5e,EAAS3+gB,UAAUkjgB,aAAe,SAAUn7B,GACpCA,EAAOjtE,QAAUitE,EAAOjtE,OAAO95V,SAC/B+ma,EAAOyO,MAAM4qB,aAAa5te,OAAOu0c,IASzC42C,EAAS3+gB,UAAU0/gB,uBAAyB,SAAU33C,EAAQh6d,GAC1D,IAII6hH,EAJA1rF,EAAY,IAAIlB,IAAU,IAC1Bo0D,EAAO2wY,EAAOsJ,YACdsuC,EAAkBvob,EAAKnkE,aAAa,oBACpC2sf,EAAa73C,EAAOsJ,YAAYwuC,iBAEpCzob,EAAKt/D,MAAMwC,WAAa,SACxB4J,EAAUN,QAAQwzD,EAAM,CACpBxyD,SAAU72B,EAAO62B,SACjBjhC,MAAOoK,EAAOpK,MACdshC,SAAU,SAAUlhC,GACZA,EAAKygC,WAAazgC,EAAKJ,QACvByzF,EAAKt/D,MAAMwC,WAAa,UACxBs1F,EAAcvkH,KAAKgH,IAAIhH,KAAKooI,OAAQ1vI,EAAKygC,UAAYzgC,EAAKJ,OAASi8gB,EAAc77gB,EAAK6gC,WACtFwyD,EAAK19D,aAAa,mBAAoBk2F,EAAc,IAAMgwZ,KAGlEnjgB,IAAK,WACD26E,EAAK19D,aAAa,mBAAoBimf,GACtC53C,EAAOyO,MAAM3od,QAAQ,oBAAqB,CAAEk6c,OAAQA,EAAOyO,MAAMpze,SAAW,GAAK2ke,QAY7F42C,EAAS3+gB,UAAU8/gB,mBAAqB,SAAU5ke,EAAO6sb,EAAQuc,EAAYwhB,GACzE,IAAI9M,EAAejxB,EAAOjtE,QAAUitE,EAAOjtE,OAAOtnX,MAASu0b,EAAOjtE,OAAOtnX,MAAQ,EAC7Egic,EAAgBzN,EAAOjtE,QAAUitE,EAAOjtE,OAAOrnX,OAAUs0b,EAAOjtE,OAAOrnX,OAAS,EACpFyH,EAAMs/c,gBAAgB90f,KAAKoggB,EAAY5qd,EAAMmhT,OAAQnhT,EAAMohT,OAAQyrI,EAAOpkW,MAAOokW,EAAOtkW,MAAO6gX,EAAYvc,IAC3G7sb,EAAMw+c,QAAQh0f,KAAK,IAAIqpe,GAAK7zb,EAAMs/c,gBAAgB,GAAGn1e,EAAI2ze,EAAa99c,EAAMs/c,gBAAgB,GAAGpgf,EAAIo7d,EAAc,EAAIwjB,EAAa,EAAIxjB,KAS1ImpC,EAAS3+gB,UAAU+/gB,aAAe,SAAU7ke,EAAOuoF,GAC/C,OAAOvoF,EAAMohT,QAAU74N,EAAMk1W,aAAazhe,KAAOgkC,EAAMohT,QAAU74N,EAAMk1W,aAAaxhe,KAOxFwngB,EAAS3+gB,UAAUgghB,yBAA2B,SAAUvgc,GAGpD,IAFA,IAAIn9E,EAAQ,KACRs/G,EAAO,KACF9/G,EAAK,EAAGm+gB,EAAWxgc,EAAQ39E,EAAKm+gB,EAASt/gB,OAAQmB,IAAM,CAC5D,IAAIo5C,EAAQ+ke,EAASn+gB,GACP,OAAVQ,GAAkB44C,EAAM8lB,UACxB1+D,EAAQs/G,EAAO1mE,GAEnB0mE,EAAO1mE,EAAM8lB,QAAU9lB,EAAQ0mE,EAEnC,MAAO,CAAEt/G,MAAOA,GAAgBm9E,EAAO,GAAImiC,KAAMA,GAAcniC,EAAOA,EAAO9+E,OAAS,KAQ1Fg+gB,EAAS3+gB,UAAUkghB,kBAAoB,SAAUn4C,EAAQ7jc,GACrD,IAQI5jC,EARAwsa,EAAWi7D,EAAO44B,gBAAgBvue,WAAW,GAAGA,WAAW,GAC3DwS,EAAWmjc,EAAOyO,MAAMytB,SAAWl8B,EAAOyO,MAAM5xc,SAAWV,EAAUU,SACrE8mH,EAASq6V,GAAqB,UAC9Bu4B,GAAiBxxG,EAAS75Y,aAAa,UACvCsrf,GAAgBzxG,EAAS75Y,aAAa,SACtCktf,GAAWrzG,EAAS75Y,aAAa,KACjCmtf,EAAUr4C,EAAOyO,MAAM6B,qBAAuBvrE,EAAS75Y,aAAa,YAAa65Y,EAAS75Y,aAAa,MACtG65Y,EAAS75Y,aAAa,KAE3B65Y,EAASh1Y,MAAMwC,WAAa,SAC5B,IAAI0I,IAAU,IAAIY,QAAQkpY,EAAU,CAChCloY,SAAUA,EACVjhC,MAAOugC,EAAUvgC,MACjBshC,SAAU,SAAUlhC,GACZA,EAAKygC,WAAazgC,EAAKJ,QACvBmpa,EAASh1Y,MAAMwC,WAAa,UACxBytc,EAAOyO,MAAM6B,qBACb/3e,EAAQorJ,EAAO3nJ,EAAKygC,UAAYzgC,EAAKJ,MAAO,EAAG26gB,EAAev6gB,EAAK6gC,UACnEkoY,EAASpzY,aAAa,YAAa,aAAeymf,EAAU,IAAMC,EAC9D,aAAgB9/gB,EAAQg+gB,EAAiB,gBAAmB6B,EAAW,KAAQC,EAAW,OAG9F9/gB,EAAQorJ,EAAO3nJ,EAAKygC,UAAYzgC,EAAKJ,MAAO,EAAG46gB,EAAcx6gB,EAAK6gC,UAClEkoY,EAASpzY,aAAa,YAAa,aAAeymf,EAAU,IAAMC,EAC9D,WAAc9/gB,EAAQi+gB,EAAgB,mBAAsB4B,EAAW,KAAQC,EAAW,QAI1G3jgB,IAAK,WACDqwZ,EAASpzY,aAAa,YAAa,kBACnCquc,EAAOyO,MAAM3od,QAAQ,oBAAqB,CAAEk6c,OAAQA,EAAOyO,MAAMpze,SAAW,GAAK2ke,QAItF42C,EAlNmB,GCZ1Bx8e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzC89e,GAA4B,SAAUp9e,GAEtC,SAASo9e,IACL,OAAkB,OAAXp9e,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA8E/D,OAhFAq+B,GAAUk+e,EAAYp9e,GAUtBo9e,EAAWrghB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAU1D,IATA,IAAI64B,EACAC,EACA/5a,EAAY,GACZi9a,EAAY,KACZhle,EAAa,IACbile,EAAWx4C,EAAOyO,OAAwC,eAA/BzO,EAAOyO,MAAMyC,cACxC7pT,EAAU24S,EAAOu1B,oBAAyD,SAAnCv1B,EAAOu1B,mBAAmBr8e,KACjEu/f,EAAgBD,EAAUl8B,GAAqBmF,GAC/C/J,EAAoC,cAApB1X,EAAO5rX,SAA2B4rX,EAAOtoZ,OAAS37E,KAAK04f,sBAAsBz0B,GACxFjme,EAAK,EAAGq8gB,EAAkB1+B,EAAe39e,EAAKq8gB,EAAgBx9gB,OAAQmB,IAAM,CACjF,IAAIo5C,EAAQije,EAAgBr8gB,GAC5Bo5C,EAAMw+c,QAAU,GAChBx+c,EAAMs/c,gBAAkB,GACpBt/c,EAAM8lB,SAAWohb,GAAY3C,EAAcvkc,EAAM58B,MAAQ,GAAI48B,EAAOukc,EAAcvkc,EAAM58B,MAAQ,GAAIypd,IACpG1kY,GAAav/F,KAAKu7gB,iBAAiBiB,EAAWple,EAAO6sb,EAAQuc,EAAYk8B,EAAelle,GACxFA,EAAagle,EAAY,IAAMhle,EAC/Bgle,EAAYple,EACZp3C,KAAKg8gB,mBAAmB5ke,EAAO6sb,EAAQuc,EAAYk8B,KAGnDF,EAAYlxV,EAASkxV,EAAY,KACjChle,EAAa8zI,EAAS9zI,EAAa,KAG3C,GAAIile,GACIx4C,EAAOs0C,SAAU,CACjB,IAAI58b,EAAS37E,KAAKk8gB,yBAAyBvgC,GAC3C29B,EAASoD,EAAc/gc,EAAOmiC,KAAKy6O,OAAQ58Q,EAAOmiC,KAAK06O,OAAQ34N,EAAOF,EAAO6gX,EAAYvc,GACzFo1C,EAASqD,EAAc/gc,EAAOn9E,MAAM+5V,OAAQ58Q,EAAOn9E,MAAMg6V,OAAQ34N,EAAOF,EAAO6gX,EAAYvc,GAC3F1kY,EAAYA,EAAUztE,OAAO0lB,EAAa,IAAM8he,EAAO/3f,EAAI,IAAM+3f,EAAOhjgB,EAA3CkhC,MAAiE6he,EAAO93f,EAAI,IAAM83f,EAAO/igB,GAG9H,IAAI8D,EAA2B,cAApB6pd,EAAO5rX,SAA2B4rX,EAAOyO,MAAM1xe,QAAQyY,GAAK,cAAgBwqd,EAAOzpd,MAAQ,IAAMypd,EAAO7pd,KAC3F,cAApB6pd,EAAO5rX,SAA2B4rX,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOsqC,YAAc,cAAgBtqC,EAAOzpd,MACjHypd,EAAOyO,MAAM1xe,QAAQyY,GAAK,iBAA+Bzd,IAAjBioe,EAAOzpd,MAAsBypd,EAAO5rX,SAAW4rX,EAAOzpd,OAClGlO,EAAU,IAAIq/d,GAAWvxd,EAAM,OAAQ6pd,EAAOv0b,MAAOu0b,EAAO40B,SAAU50B,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,GAC5Gv/F,KAAK27gB,eAAervgB,EAAS23d,EAAQ,IACrCjke,KAAKo/f,aAAan7B,IAQtBs4C,EAAWrghB,UAAUkhgB,YAAc,SAAUn5B,GACzC,IAAIh6d,EAASg6d,EAAO7jc,UACpBpgC,KAAK47gB,uBAAuB33C,EAAQh6d,IAKxCsygB,EAAWrghB,UAAU2+B,cAAgB,WAIjC,MAAO,cAQX0hf,EAAWrghB,UAAUif,QAAU,aAKxBohgB,EAjFqB,CAkF9B1B,ICzGEx8e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAyBzCk+e,GAAoC,SAAUx9e,GAE9C,SAASw9e,IACL,OAAkB,OAAXx9e,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2L/D,OA7LAq+B,GAAUs+e,EAAoBx9e,GAe9Bw9e,EAAmBzghB,UAAU0ghB,qBAAuB,SAAUrkL,EAAQC,EAAQyrI,EAAQuc,EAAYk7B,EAAkBlke,EAAYmrc,GAC5H,IACI64B,EADAj8a,EAAY,GAMhB,OAJmB,OAAf/nD,IAEA+nD,GAAcojZ,EAAY,KAD1B64B,EAAaE,EAAiBnjL,EAAQC,EAAQyrI,EAAOpkW,MAAOokW,EAAOtkW,MAAO6gX,EAAYvc,IAC1C1id,EAAK,IAAOi6f,EAAWllgB,EAAK,KAErEipF,GAWXo9a,EAAmBzghB,UAAU2ghB,sBAAwB,SAAUrB,EAAYC,EAAax3C,EAAQuc,EAAYk7B,GACxG,IAAIn8a,EAAY,GAGhB,OAFAA,GAAav/F,KAAK48gB,qBAAqBpB,EAAWj6f,EAAGi6f,EAAWllgB,EAAG2td,EAAQuc,EAAYk7B,EAAkB,KAAM,KAC/Gn8a,GAAav/F,KAAK48gB,qBAAqBnB,EAAYl6f,EAAGk6f,EAAYnlgB,EAAG2td,EAAQuc,EAAYk7B,EAAkB,KAAM,MAMrHiB,EAAmBzghB,UAAUuhgB,cAAgB,SAAUjf,EAAch7V,EAAUygV,EAAQ64C,EAAY7nR,GAC/F,GAAiC,KAA7BgvO,EAAO60B,kBAA0B,CAGjC,IAFA,IAAI5jQ,OAAU,EAELt4P,EAAI,EAAGA,EAAIq4P,EAASp4P,OAAQD,IAGjC,GAFAs4P,EAAUD,EAASr4P,IACXkghB,EAAat+B,EAAajmJ,OAASimJ,EAAahmJ,SAC3Cx4V,KAAK+8gB,aAAa7nR,EAAQ14P,MAAOsghB,EAAa74C,EAAOpkW,MAAQokW,EAAOtkW,MAAOskW,EAAOyO,SAAWx9O,EAAQ14P,MAAO,CACrHgif,EAAaqa,SAAW3jQ,EAAQv/K,MAChC,MAMR,OAH6B,MAAzB6oa,EAAaqa,WACbra,EAAaqa,SAAW50B,EAAO40B,WAE5B,EAGP,QAAIr1W,GACOygV,EAAOw5B,cAAcjf,EAAcva,EAAO40B,YAAc50B,EAAOw5B,cAAcj6W,EAAUygV,EAAO40B,WAOjH8jB,EAAmBzghB,UAAU8ghB,aAAe,SAAU/4C,EAAQg5C,GAC1D,IAAIl9gB,EAAQC,KACR+rC,EAA8B,MAAvBk4b,EAAOi5C,YAAsBj5C,EAAOpkW,MAAQokW,EAAOtkW,MAE9D,MADe,GAAG7tG,OAAOmrf,GACTp7b,MAAK,SAAU94E,EAAGpB,GAC9B,OAAO5H,EAAMg9gB,aAAah0gB,EAAEvM,MAAOuvC,EAAMk4b,EAAOyO,OAAS3ye,EAAMg9gB,aAAap1gB,EAAEnL,MAAOuvC,EAAMk4b,EAAOyO,WAU1GiqC,EAAmBzghB,UAAUihhB,iBAAmB,SAAUl5C,EAAQ33d,EAAS2oP,GACvE,IAAIl1P,EAAQC,KACZ,GAAiC,KAA7Bike,EAAO60B,kBAIP,OAHAxsf,EAAQ7H,KAAI,SAAUwF,GAClBlK,EAAM47gB,eAAe1xgB,EAAQg6d,EAAQ,OAElC,KAEX,IAGI/uO,EAHA4nR,EAAoC,MAAvB74C,EAAOi5C,YACpBnxe,EAAO+we,EAAa74C,EAAOpkW,MAAQokW,EAAOtkW,MAC1C+yW,EAAQzO,EAAOyO,MAEnB1ye,KAAKo9gB,eAAenoR,EAAUlpN,EAAMk4b,EAAQhvO,EAASp4P,QA4BrD,IA3BA,IACIL,EACA0wX,EACAmwJ,EAHAxghB,EAASo4P,EAASp4P,OAIlBgC,EAAU,SAAU2b,GACpB06O,EAAUD,EAASz6O,GACnBhe,EAAQstC,EAAOize,aAAa7nR,EAAQ14P,MAAOuvC,EAAMk4b,EAAOyO,QACxDxlH,EAAWpjV,EAAOwze,eAAe9igB,EAAQsvB,EAAOize,aAAa9nR,EAASz6O,EAAQ,GAAGhe,MAAOuvC,EAAMk4b,EAAOyO,OAC/F3mc,EAAK8oc,aAAazhe,IAAK5W,EAAOyne,EAAQzpd,EAAOsigB,KAE/CxwgB,EAAQ7H,KAAI,SAAUwF,GAWlBm4e,GAAcv/e,IAVdw6gB,EAAmB,CACf,YAAanwJ,EACb,mBAAoBh4H,EAAQsyO,UAC5B,QAAWv9d,EAAO05B,QAClB,OAAUsgc,EAAO94d,KAAKhN,QAAQ,SAAW,EAAI+2P,EAAQv/K,OAASsuZ,EAAO40B,SAAW50B,EAAOt7T,OAAOhzF,MAC9F,eAAgB1rE,EAAO,gBACvB,KAAQg6d,EAAO94d,KAAKhN,QAAQ,SAAW,EAAI,OAAS+2P,EAAQv/K,OAASsuZ,EAAO40B,SAC5E,GAAM5uf,EAAOwP,GAAK,YAAce,EAChC,EAAKvQ,EAAOpC,IAE0B4R,IAAK4jgB,EAAiBx1gB,EAAG6qe,EAAMwK,QACzEjZ,EAAO84B,cAAc/6f,YAAY0we,EAAMtsM,SAAS4+H,SAASq4G,QAIjEvze,EAAS9pC,KACJwa,EAAQ,EAAGA,EAAQ3d,EAAQ2d,IAChC3b,EAAQ2b,IAGhBmigB,EAAmBzghB,UAAUkhhB,eAAiB,SAAUnoR,EAAUlpN,EAAMk4b,EAAQpne,GAC5E,GAAIA,GAAU,EAEV,OADAo4P,EAASrzP,KAAK,CAAEpF,MAAOuvC,EAAK8oc,aAAaxhe,IAAKsiE,MAAOsuZ,EAAO40B,WACrD,KAEP74f,KAAK+8gB,aAAa9nR,EAASp4P,EAAS,GAAGL,MAAOuvC,EAAMk4b,EAAOyO,OAAS3mc,EAAK8oc,aAAaxhe,KACtF4hP,EAASrzP,KAAK,CAAEpF,MAAOuvC,EAAK8oc,aAAaxhe,IAAKsiE,MAAOsuZ,EAAO40B,YAYpE8jB,EAAmBzghB,UAAUohhB,eAAiB,SAAU/wT,EAAYC,EAAUy3Q,EAAQzpd,EAAO+igB,GACzF,IAKIjxgB,EALAkxgB,EAAav5C,EAAOyO,MAAM6B,oBAC1BkpC,EAAqB/3B,GAAS63B,EAAMhxT,EAAa03Q,EAAOpkW,MAAMg1W,aAAazhe,IAAKmqgB,EAAMt5C,EAAOtkW,MAAMk1W,aAAaxhe,IAAMm5M,EAAUy3Q,EAAOpkW,MAAOokW,EAAOtkW,MAAO69Y,GAC5JE,EAAmBh4B,GAAS63B,EAAM/wT,EAAWy3Q,EAAOpkW,MAAMg1W,aAAaxhe,IAAKkqgB,EAAMt5C,EAAOtkW,MAAMk1W,aAAazhe,IAAMm5M,EAAY03Q,EAAOpkW,MAAOokW,EAAOtkW,MAAO69Y,GAI9J,OAHAE,EAAmBF,EACf,CAACC,EAAoBA,EAAqBC,GAAkB,GAAKA,GAE/Cn8f,EAAIk8f,EAAmBl8f,EAAI,GAAOm8f,EAAiBpngB,EAAImngB,EAAmBnngB,EAAI,GAChGhK,EAAU,IAAIq9e,GAAW1lB,EAAOyO,MAAM1xe,QAAQyY,GAAK,gBAAkBwqd,EAAOzpd,MAAQ,YAAcA,EAAO,cAAe,CAAEk1B,MAAO,EAAGimC,MAAO,QAAU,EAAG,CACpJp0D,EAAGk8f,EAAmBl8f,EACtBjL,EAAGmngB,EAAmBnngB,EACtBo5B,MAAOgue,EAAiBn8f,EAAIk8f,EAAmBl8f,EAC/CouB,OAAQ+te,EAAiBpngB,EAAImngB,EAAmBnngB,IAEpD2td,EAAO84B,cAAc/6f,YAAY6gf,GAAkB5e,EAAOyO,MAAMwK,OAAQ5we,EAAS23d,EAAOyO,MAAMtsM,WACvF,QAAU69L,EAAOyO,MAAM1xe,QAAQyY,GAAK,gBAAkBwqd,EAAOzpd,MAAQ,YAAcA,EAAQ,KAE/F,MASXmigB,EAAmBzghB,UAAU6ghB,aAAe,SAAUY,EAAc5xe,EAAM2mc,GAItE,GAHqB,OAAjBirC,IACAA,EAAe5xe,EAAK8oc,aAAaxhe,KAEd,aAAnB04B,EAAK8nc,UAA0B,CAC/B,IAAI5pe,EAAS,CAAEiB,SAAU,OAAQC,KAAM,YACvC,OAAOhC,KAAK6R,MAAM03d,EAAMzua,KAAKnoD,cAAc7R,EAAzByoe,CAAiCA,EAAMzua,KAAKtoD,cAAc1R,EAAzByoe,CAAiC,IAAIvpe,KAAKuwD,KAAS1+C,MAAM2xE,UAAU,CAAE1nF,IAAK04gB,IAAgB14gB,QAE5I,GAAI8mC,EAAK8nc,UAAU11e,QAAQ,aAAe,EAAG,CAC9C,IAAIo6V,EAA4B,qBAAnBxsT,EAAK8nc,UACb8pC,EAAat7f,UAAWlV,WACzBwwgB,EACJ,OAAQ5xe,EAAK4/O,OAAOxtR,QAAQo6V,GAAU,GAAMolL,EAAe5xe,EAAK4/O,OAAOxtR,QAAQo6V,GAG/E,OAAQolL,GAGThB,EA9L6B,CA+LtC9B,ICxNEx8e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzCm/e,GAA4B,SAAUz+e,GAEtC,SAASy+e,IACL,OAAkB,OAAXz+e,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAsF/D,OAxFAq+B,GAAUu/e,EAAYz+e,GAUtBy+e,EAAW1hhB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAC1D,IAQIq9B,EARArme,EAAa,KACb+nD,EAAY,GACZk9a,EAAWx4C,EAAOyO,OAAwC,eAA/BzO,EAAOyO,MAAMyC,cACxCpsE,EAASxha,KAAK8L,IAAI4wd,EAAOtkW,MAAMk1W,aAAazhe,IAAK,GACjDqpgB,IAEA1zG,EADoB/oa,KAAKk8gB,yBAAyBj4C,EAAOtoZ,QAClCn9E,MAAMg6V,QASjC,IANA,IAKIphT,EALA0me,EAAc75C,EAAOu1B,oBAAyD,SAAnCv1B,EAAOu1B,mBAAmBr8e,KACrEotB,EAAc05b,EAAOt7T,OAASs7T,EAAOt7T,OAAOj5H,MAAQ,EACpDykK,EAAc8vR,EAAOt7T,OAASs7T,EAAOt7T,OAAOhzF,MAAQ,cACpD+mc,EAA+C,eAA/Bz4C,EAAOyO,MAAMyC,cAAiCoL,GAAqBmF,GACnF/J,EAAgB37e,KAAK04f,sBAAsBz0B,GAEtCrne,EAAI,EAAGA,EAAI++e,EAAc9+e,OAAQD,IAEtCihhB,GADAzme,EAAQukc,EAAc/+e,IACA27V,OACtBnhT,EAAMs/c,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GACZx+c,EAAM8lB,SAAWohb,GAAY3C,EAAc/+e,EAAI,GAAIw6C,EAAOukc,EAAc/+e,EAAI,GAAIqne,KAChF1kY,GAAav/F,KAAK48gB,qBAAqBiB,EAAe90G,EAAQk7D,EAAQuc,EAAYk8B,EAAelle,EAAY,KAC7GA,EAAaA,GAAc,IAAI4nc,GAAcy+B,EAAe90G,GAE5DxpU,GAAav/F,KAAK48gB,qBAAqBiB,EAAezme,EAAMohT,OAAQyrI,EAAQuc,EAAYk8B,EAAe,KAAM,KACzG/gC,EAAc/+e,EAAI,KAAQ++e,EAAc/+e,EAAI,GAAGsgE,WAC7Cu/c,GAAYA,GAAWz8gB,KAAKi8gB,aAAatgC,EAAc/+e,EAAI,GAAI+iI,MAAcm+Y,IAC/Ev+a,GAAav/F,KAAK68gB,sBAAsB,CAAE,EAAKgB,EAAe,EAAK90G,GAAUvxX,EAAYysb,EAAQuc,EAAYk8B,GAC7Glle,EAAa,MAEjBx3C,KAAKg8gB,mBAAmB5ke,EAAO6sb,EAAQuc,EAAYk8B,IAG3D,GAAID,GAAyB,KAAdl9a,EAAkB,CAC7B,IAAInmD,EAAW,GACXs5b,EAAQ1ye,KAAK0ye,MACjBt5b,GAAYp5C,KAAK48gB,qBAAqB,EAAG7zG,EAAQk7D,EAAQuc,EAAYk8B,EAAe,KAAM,MACtF78Y,EAAMy7W,YAAc37W,EAAM27W,cAC1B/7Y,GAA8B,UAAhB0kY,EAAO94d,KAAmBune,EAAMy9B,kBAAkB4N,uBAAuBl+Y,EAAOzmF,GAC1Fs5b,EAAM09B,kBAAkB4N,uBAAuBn+Y,EAAOzmF,IAE9DmmD,EAAYA,EAAUztE,OAAOytE,QAEjCv/F,KAAK27gB,eAAe,IAAIhwC,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAOypd,EAAO40B,SAAUtud,EAAa4pK,EAAa8vR,EAAOtgc,QAASsgc,EAAOuD,UAAavD,EAAOtoZ,OAAO9+E,OAAS,GAAmB,KAAd0iG,EAAqBA,EAAYv/F,KAAK48gB,qBAAqB34C,EAAOtoZ,OAAOsoZ,EAAOtoZ,OAAO9+E,OAAS,GAAG07V,OAAuC,eAA/B0rI,EAAOyO,MAAMyC,cACvTlR,EAAOtoZ,OAAOsoZ,EAAOtoZ,OAAO9+E,OAAS,GAAG27V,OAASuwE,EAAQk7D,EAAQuc,EAAYk8B,EAAe,KAAM,KAAQ,IAAMz4C,EAAQ,IAC5Hjke,KAAKo/f,aAAan7B,IAQtB25C,EAAW1hhB,UAAUif,QAAU,aAQ/ByigB,EAAW1hhB,UAAU2+B,cAAgB,WAIjC,MAAO,cAQX+if,EAAW1hhB,UAAUkhgB,YAAc,SAAUn5B,GACzC,IAAIh6d,EAASg6d,EAAO7jc,UACpBpgC,KAAKo8gB,kBAAkBn4C,EAAQh6d,IAE5B2zgB,EAzFqB,CA0F9BjB,ICjHEt+e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA6BzCw/e,GAAwB,SAAU9+e,GAElC,SAAS8+e,EAAOvrC,GACZ,IAAI3ye,EAAQo/B,EAAO79B,KAAKtB,KAAM0ye,IAAU1ye,KAGxC,OAFAD,EAAM8hgB,QAAU9hgB,EAChBA,EAAMwpB,mBACCxpB,EA+cX,OApdAs+B,GAAU4/e,EAAQ9+e,GAUlB8+e,EAAO/hhB,UAAUqtB,iBAAmB,WAC5BvpB,KAAK0ye,MAAMv5c,cAGfn5B,KAAK0ye,MAAMp5d,GAAG+M,IAAQoC,eAAgBzoB,KAAK6xgB,UAAW7xgB,MACtDA,KAAK0ye,MAAMp5d,GAAG,QAAStZ,KAAKywD,MAAOzwD,MACnCA,KAAK0ye,MAAMp5d,GAAG+M,IAAQqC,cAAe1oB,KAAK8xgB,SAAU9xgB,QAKxDi+gB,EAAO/hhB,UAAUytB,oBAAsB,WAC/B3pB,KAAK0ye,MAAMv5c,cAGfn5B,KAAK0ye,MAAM74d,IAAIwM,IAAQoC,eAAgBzoB,KAAK6xgB,WAC5C7xgB,KAAK0ye,MAAM74d,IAAI,QAAS7Z,KAAKywD,OAC7BzwD,KAAK0ye,MAAM74d,IAAIwM,IAAQqC,cAAe1oB,KAAK8xgB,YAK/CmM,EAAO/hhB,UAAU21gB,UAAY,SAAUhxgB,GAC/Bb,KAAK0ye,MAAMouB,eAAe5jc,UAAYl9D,KAAK0ye,MAAMzrd,UACjDjnB,KAAKmnB,KAAKtmB,GACNb,KAAK0ye,MAAMmsB,iBAAgD,SAA7B7+f,KAAK0ye,MAAMosB,eACzC9+f,KAAKywD,MAAM5vD,KAOvBo9gB,EAAO/hhB,UAAU41gB,SAAW,SAAUjxgB,GAC9Bb,KAAK0ye,MAAMouB,eAAe5jc,SAAWl9D,KAAK0ye,MAAMzrd,SAChDjnB,KAAKmnB,KAAKtmB,IASlBo9gB,EAAO/hhB,UAAUswgB,iBAAmB,SAAU0R,EAAyBxrC,GAEnE,IAAIiU,EACAvqT,EAFJp8L,KAAKsjgB,kBAAoB,GAGzB,IAAIl/O,EAAS,GACT85P,EAAwBrhhB,OAAS,IACjCmD,KAAK6ggB,OAAO1jf,KAAO,UAEvB,IAAK,IAAInf,EAAK,EAAGmghB,EAA4BD,EAAyBlghB,EAAKmghB,EAA0BthhB,OAAQmB,IAAM,CAC/G,IAAIime,EAASk6C,EAA0BnghB,GACvC,GAAyB,WAArBgC,KAAK6ggB,OAAO1jf,KACY,cAApB8md,EAAO5rX,WACPsuY,EAAsC,eAAxBjU,EAAMyC,cAAkClR,EAAOyQ,SACzDzQ,EAAO94d,KAEXixL,EAAQ6nS,EAAO60B,mBAAqB70B,EAAOtoZ,OAAO9+E,OAAS,GACtDone,EAAOtoZ,OAAO,GAAGk9a,SAAW50B,EAAOtoZ,OAAO,GAAGk9a,SAA8B50B,EAAO40B,SACvF74f,KAAKsjgB,kBAAkB1hgB,KAAK,IAAIwmgB,GAAcnkC,EAAO7pd,KAAMgiL,EAAM6nS,EAAOm6C,YAAkC,cAApBn6C,EAAO5rX,SACzFr4G,KAAK0ye,MAAMzO,OAAOA,EAAOsqC,aAAa9T,WAAWx2B,EAAOzpd,OAAO0iD,QAAU+ma,EAAO/ma,QAAUypb,EAAY1iB,EAAOo6C,eAAgBp6C,EAAOjtE,OAAOnK,MAAOo3E,EAAOjtE,OAAO95V,gBAGvK,GAAyB,UAArBl9D,KAAK6ggB,OAAO1jf,KAWjB,IAVA,IAAIte,EAAU,SAAU88E,GACpBgra,EAAsC,eAAxBjU,EAAMyC,cAAkClR,EAAOyQ,SACzDzQ,EAAO94d,KACXixL,EAAOzgH,EAAOk9a,SAAWl9a,EAAOk9a,SAAW50B,EAAO40B,SACsD,IAApG/ud,EAAOw5d,kBAAkBpye,QAAO,SAAUt0B,GAAK,OAAOA,EAAE2V,OAASopE,EAAOp6D,EAAEpU,cAAetQ,QACzFitC,EAAOw5d,kBAAkB1hgB,KAAK,IAAIwmgB,GAAczsb,EAAOp6D,EAAEpU,WAAYivL,EAAM6nS,EAAOm6C,YAAkC,cAApBn6C,EAAO5rX,SACnGvuE,EAAO4oc,MAAMzO,OAAOA,EAAOsqC,aAAa9T,WAAWx2B,EAAOzpd,OAAO0iD,QAAUye,EAAOze,QAAUypb,EAAY,GAAI1iB,EAAOjtE,OAAOnK,MAAOo3E,EAAOjtE,OAAO95V,WAGvJpzB,EAAS9pC,KACJuD,EAAK,EAAGwxB,EAAKkvc,EAAOtoZ,OAAQp4E,EAAKwxB,EAAGl4B,OAAQ0G,IAAM,CAEvD1E,EADI88E,EAAS5mD,EAAGxxB,SAInB,GAAyB,UAArBvD,KAAK6ggB,OAAO1jf,KACjB,IAAK,IAAIgY,EAAK,EAAGG,EAAK2uc,EAAOtoZ,OAAQxmD,EAAKG,EAAGz4B,OAAQs4B,IAAM,CACvD,IAAIwmD,EAASrmD,EAAGH,GAChBwxd,EAAsC,eAAxBjU,EAAMyC,cAAkClR,EAAOyQ,SACzDzQ,EAAO94d,KACXixL,EAAOzgH,EAAOk9a,SAAWl9a,EAAOk9a,SAAW50B,EAAO40B,SAClD,IAAI72B,EAAc,SAClB,GAAI59M,EAAOjmR,QAAQi+L,GAAQ,IACvBgoF,EAAOxiR,KAAKw6L,GACRs2S,EAAMsmB,mBAAmBn8f,QAAU,GAAmD,IAA9C61e,EAAMsmB,mBAAmB,GAAG50O,OAAOvnR,QAAc,CACzF,IAAK,IAAI2vH,EAAK,EAAGyjC,EAAKyiV,EAAMsmB,mBAAoBxsY,EAAKyjC,EAAGpzJ,OAAQ2vH,IAAM,CAClE,IAAI6sY,EAAWppW,EAAGzjC,GACd6sY,EAASj1O,OAAO,KAAOhoF,IACvB4lS,EAAcq3B,EAAS5jb,OAG/Bz1E,KAAKsjgB,kBAAkB1hgB,KAAK,IAAIwmgB,GAAcpmC,EAAa5lS,EAAM6nS,EAAOm6C,YAAkC,cAApBn6C,EAAO5rX,SACzFr4G,KAAK0ye,MAAMzO,OAAOA,EAAOsqC,aAAa9T,WAAWx2B,EAAOzpd,OAAO0iD,QAAUye,EAAOze,QAAUypb,EAAY,GAAI1iB,EAAOjtE,OAAOnK,MAAOo3E,EAAOjtE,OAAO95V,gBAM7J,GAAsC,IAAlCl9D,KAAKsjgB,kBAAkBzmgB,QAAgB61e,EAAMsmB,mBAAmBn8f,OAAS,EAAG,CAC5E,IAAIs5e,EAAazD,EAAMsmB,mBAAmB,GAAG97f,MAAMiQ,WAC/Cipe,EAAW1D,EAAMsmB,mBAAmBtmB,EAAMsmB,mBAAmBn8f,OAAS,GAAG8b,IAAIxL,WACjFnN,KAAKsjgB,kBAAkB1hgB,KAAK,IAAIwmgB,GAAcjyB,EAAYlS,EAAO40B,SAAU,aAAa,EAAMlS,EAAY,GAAI1iB,EAAOjtE,OAAOnK,MAAOo3E,EAAOjtE,OAAO95V,UACjJl9D,KAAKsjgB,kBAAkB1hgB,KAAK,IAAIwmgB,GAAchyB,EAAUnS,EAAO40B,SAAU,aAAa,EAAMlS,EAAY,GAAI1iB,EAAOjtE,OAAOnK,MAAOo3E,EAAOjtE,OAAO95V,aAM/J+gd,EAAO/hhB,UAAU4lgB,gBAAkB,SAAUve,EAAeqe,EAAcf,GACtE7ggB,KAAKuigB,qBAAqB1B,EAAQe,GAClC5hgB,KAAKyhgB,UAAUZ,EAAOz5W,MACtB,IAAI58G,EAAUq2d,EAAOr2d,QACjB43d,EAAgBvB,EAAOuB,cACvBkc,EAAc,EACdC,EAAa,EACbhd,EAAavhgB,KAAKuhgB,WAClBC,EAAcxhgB,KAAKwhgB,YACnBgd,EAAqBx+gB,KAAKu0f,aAAesM,EAAOyB,YAAcd,EAAc,EAC5Eid,EAAaz+gB,KAAKyhgB,SAA6B,QAAlBW,EAA0BpigB,KAAKqigB,gBAAgB1yd,OAAS3vC,KAAKkhgB,UAAY,EAC1Gud,EAAaz+gB,KAAKyhgB,SAAWzhgB,KAAKu0f,YAAgC,QAAlB6N,EAA0BpigB,KAAKqigB,gBAAgB1yd,OAAS3vC,KAAKkhgB,UAAYud,EACpHz+gB,KAAKu0f,WAINgqB,EAAc1d,EAAOnxd,MAA4C,EAAlC6zc,EAAc7zc,MAAQ,IAAO,EAH5D4ue,EAAezd,EAAOlxd,OAA8C,EAAnC4zc,EAAc5zc,OAAS,IAAO,EAKnEiyd,EAAajyd,QAAW2ue,EACxB1c,EAAalyd,OAAS6ue,EACtB,IAQIG,EARA3a,EAAalD,EAAOkD,WACpBE,EAAepD,EAAOoD,aACtB7mF,EAAe,EACf4O,EAAW,EACX82E,EAAc,EACd6b,EAAe,EACf/4T,EAAW,EACXg5T,EAAsB,EAE1B5+gB,KAAKwigB,cAAgBj7f,KAAK8L,IAAIi3d,GAAY,cAAeu2B,EAAOzyB,WAAWz+b,OAAQkxd,EAAO8C,aAE1F,IADA,IAAIj0e,GAAS,EACJ1xB,EAAK,EAAGuF,EAAKvD,KAAKsjgB,kBAAmBtlgB,EAAKuF,EAAG1G,OAAQmB,IAAM,CAChE,IAAImmgB,EAAe5ggB,EAAGvF,GAClBm6e,GAAOvte,KAAKu5f,EAAa5xf,QACzB4xf,EAAa5xf,KAAO22e,GAAeib,EAAa5xf,KAAM4le,KAEtDC,GAAOxte,KAAKu5f,EAAa5xf,QACzB4xf,EAAa5xf,KAAO22e,GAAeib,EAAa5xf,KAAM6le,KAE1DsmC,EAAkB,CACdtiV,KAAM+nU,EAAa/nU,KAAM7pL,KAAM4xf,EAAa5xf,KAAMs6Y,MAAOs3G,EAAat3G,MACtEizG,YAAaqE,EAAarE,YAAa1lf,KAAMu8d,GAAc5zd,QAAQ,GAEvE/iB,KAAK0ye,MAAM3od,QAAQ4sd,GAAc+nC,GACjCva,EAAaz0e,QAAUgvf,EAAgB37f,OACvCohf,EAAa5xf,KAAOmsgB,EAAgBnsgB,KACpC4xf,EAAa/nU,KAAOsiV,EAAgBtiV,KACpC+nU,EAAat3G,MAAQ6xH,EAAgB7xH,MACrCs3G,EAAarE,YAAc4e,EAAgB5e,YAC3CqE,EAAaxkG,SAAW2qE,GAAY65B,EAAa5xf,KAAMsuf,EAAOzyB,WAC1D+1B,EAAaz0e,SACbA,GAAS,EAETs8Z,GADA82E,EAAciB,EAAaE,EAAeE,EAAaxkG,SAASjwX,MAAQlF,EAEnEq2d,EAAOyB,aAAgBtigB,KAAKu0f,aAC7BqqB,EAAsB5+gB,KAAKyhgB,SAA6B,QAAlBW,EAA0BpigB,KAAKqigB,gBAAgB3yd,MAAQ1vC,KAAKkhgB,UAAY,EAC9G0d,GAAuBrd,IAEvBK,EAAalyd,MAASlF,EAAUwhZ,EAAW4yF,GAAwB5+gB,KAAKu0f,cACxEn3E,EAAe71a,KAAK8L,IAAI+pa,EAAe4O,EAAWxhZ,EAAUo0e,GAAuB5+gB,KAAKu0f,WAAa,EAAIuO,IACxF,IAAbl9S,GAAmBk9S,IAAgB92E,IACnCpmO,EAAW,GAEfomO,EAAWhsb,KAAKu0f,WAAa,EAAIuO,EAEjC6b,IADA/4T,GAC4B5lN,KAAKwigB,cAAgBh4d,GAAYA,EAAUi0e,EAAaD,IAIhGG,EAAep3gB,KAAK8L,IAAIsrgB,EAAe3+gB,KAAKwigB,cAAgBh4d,EAAWA,EAAUi0e,GACjFz+gB,KAAKmlU,SAAWy8L,EAAajyd,OAASgve,EAClC3+gB,KAAKmlU,WAAa07L,EAAOyB,cAGrBqc,EAFA3+gB,KAAKu0f,WAEUoqB,EAGC3+gB,KAAKwigB,cAAgBh4d,EAAWA,GAA6B,QAAlB43d,EAA0Bqc,EAAa,IAG1Gz+gB,KAAKg+b,WAAap4O,EACb5lN,KAAKmlU,UAAanlU,KAAKu0f,aACxBvoE,GAAYhsb,KAAKyhgB,SAA6B,QAAlBW,EAA2BpigB,KAAKkhgB,UAAYlhgB,KAAKqigB,gBAAgB3yd,MAAQ1vC,KAAKkhgB,UAAa,GAEvHxxe,EACA1vB,KAAKkigB,UAAU36f,KAAK8L,IAAK24a,EAAWxhZ,EAAU4yY,GAAeuhG,EAAc9d,EAAQe,GAGnF5hgB,KAAKkigB,UAAU,EAAG,EAAGrB,EAAQe,IAIrCqc,EAAO/hhB,UAAUmogB,eAAiB,SAAUF,EAAcjngB,EAAOk0f,EAAaytB,EAAY3ue,EAAM4qB,EAAOsoc,GACnG,IAAI54d,EAAUxqC,KAAK6ggB,OAAOr2d,QACtBs0e,EAAiBD,EAAW71e,SAASznB,EAAI6ve,EAAcytB,EAAWl/G,SAASjwX,MAC1Eove,GAAiB3a,EAAaxkG,SAASjwX,MAAQ0hd,GAAiBlhd,EAAK3uB,EAAI2uB,EAAKR,MAAQ1vC,KAAK6ggB,OAAOkD,WAAa,GAChH/jgB,KAAKu0f,YACL4P,EAAan7d,SAASznB,EAAIrkB,EAAMqkB,EAChC4if,EAAan7d,SAAS1yB,EAAKwkD,IAAUsoc,EAAeyb,EAAW71e,SAAS1yB,EACpEuogB,EAAW71e,SAAS1yB,EAAItW,KAAKwigB,cAAgBh4d,IAGjD25d,EAAan7d,SAASznB,EAAKu5C,IAAUsoc,EAAeyb,EAAW71e,SAASznB,EAAIu9f,EAC5E3a,EAAan7d,SAAS1yB,EAAIuogB,EAAW71e,SAAS1yB,GAElD,IAAIyogB,EAAc/+gB,KAAK4hgB,aAAargf,EAAIvhB,KAAK4hgB,aAAalyd,OAAUy0d,EAAan7d,SAASznB,EACtF6ve,EAAcpxf,KAAK6ggB,OAAOkD,WAAa,GAC3CI,EAAa5xf,KAAO+we,IAAUy7B,EAAWlrgB,QAAQ,GAAIswf,EAAa5xf,KAAMvS,KAAK6ggB,OAAOzyB,YAGxF6vC,EAAO/hhB,UAAU8ihB,YAAc,SAAUxkgB,EAAOsM,GAC5C,IAAI4rd,EAAQ1ye,KAAK0ye,MACb3O,EAA4C,WAA9B2O,EAAMouB,eAAe3jf,KAAoB3C,EAAQ,EAC/Dypd,EAASyO,EAAM4c,cAAcvrB,GAC7B88B,EAAS7ggB,KAAKsjgB,kBAAkB9of,GAChCykgB,EAAkB,sBACtB,GAAkC,WAA9BvsC,EAAMouB,eAAe3jf,KAAmB,CACxC,IAAI+hgB,EAAkB,CAClBC,WAAYte,EAAOtuf,KAAM6rgB,YAAavd,EAAOh0G,MAC7C6lF,MAAOA,EAAMpze,SAAW,GAAKoze,EAAOzO,OAAQA,EAAQtoZ,OAAQsoZ,EAAOtoZ,OAAQvhE,KAAMs8d,GAAa3zd,QAAQ,GAE1G/iB,KAAK0ye,MAAM3od,QAAQ2sd,GAAawoC,GAChCj7C,EAAOm6C,YAAcc,EAAgBd,YACjB,OAAhBn6C,EAAO7nS,OACPs2S,EAAM4c,cAAc90e,GAAOq+e,SAAW50B,EAAO7nS,MAE7Cs2S,EAAMouB,eAAeyD,kBACG,cAApBtgC,EAAO5rX,SACFq6X,EAAMzO,OAAOA,EAAOsqC,aAAa9T,WAAWx2B,EAAOzpd,OAAO0iD,QAI3Dw1a,EAAMzO,OAAOA,EAAOsqC,aAAa9T,WAAWx2B,EAAOzpd,OAAO0iD,SAAU,EAHpEw1a,EAAMzO,OAAOA,EAAOsqC,aAAa9T,WAAWx2B,EAAOzpd,OAAO0iD,SAAU,GAOxE+ma,EAAOyO,MAAMusC,IAAmB,EAChCj/gB,KAAKo/gB,sBAAsBn7C,EAAQA,EAAO/ma,UAE9C2jc,EAAO3jc,QAA8B,cAApB+ma,EAAO5rX,SAA2Bq6X,EAAMzO,OAAOA,EAAOsqC,aAAa9T,WAAWx2B,EAAOzpd,OAAO0iD,QACxG+ma,EAAO/ma,QACZl9D,KAAKq/gB,oBAAoB3sC,EAAOzO,IAE3ByO,EAAMnjM,gBACXmjM,EAAMnjM,gBAAgB+vO,gBAAgB5sC,EAAOl4d,EAAOsM,GAE/C4rd,EAAMmsB,iBACXnsB,EAAMmsB,gBAAgBygB,gBAAgB5sC,EAAOl4d,EAAOsM,GAExDm9c,EAAOyO,MAAMusC,IAAmB,OAE/B,GAAkC,UAA9BvsC,EAAMouB,eAAe3jf,KAAkB,CAC5C,IAAIi6B,EAAQ6sb,EAAOtoZ,OAAOnhE,GACtB0kgB,EAAkB,CAClBC,WAAYte,EAAOtuf,KAAM6rgB,YAAavd,EAAOh0G,MAC7C6lF,MAAOA,EAAMpze,SAAW,GAAKoze,EAAOzO,OAAQA,EAAQtoZ,OAAQ,CAACvkC,GAAQh9B,KAAMs8d,GAAa3zd,QAAQ,GAGpG,GADA/iB,KAAK0ye,MAAM3od,QAAQ2sd,GAAawoC,GAC5BxsC,EAAMouB,eAAeyD,iBACrBntd,EAAM8lB,SAAW9lB,EAAM8lB,SACnBinc,EAAenkgB,KAAKsjgB,kBAAkB9of,IAC7B0iD,QAAU9lB,EAAM8lB,QAC7Bl9D,KAAKq/gB,oBAAoB3sC,EAAOzO,QAGnC,GAAkC,UAA9ByO,EAAMouB,eAAe3jf,KAAkB,CAG5C,IAFA,IAAIw+D,EAAS,GACTwob,EAAenkgB,KAAKsjgB,kBAAkB9of,GACjCxc,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACnDo5C,EAAQ7zC,EAAGvF,GACXmmgB,EAAa/nU,QAAUhlJ,EAAMyhd,UAAY50B,EAAO40B,WAChDl9a,EAAO/5E,KAAKw1C,GAGhB8ne,EAAkB,CAClBC,WAAYte,EAAOtuf,KAAM6rgB,YAAavd,EAAOh0G,MAC7C6lF,MAAOA,EAAMpze,SAAW,GAAKoze,EAAOzO,OAAQA,EAAQtoZ,OAAQA,EAAQvhE,KAAMs8d,GAAa3zd,QAAQ,GAGnG,GADA/iB,KAAK0ye,MAAM3od,QAAQ2sd,GAAawoC,GAC5BxsC,EAAMouB,eAAeyD,iBAAkB,CACvCJ,EAAajnc,SAAWinc,EAAajnc,QACrC,IAAK,IAAInoC,EAAK,EAAGonf,EAAWxgc,EAAQ5mD,EAAKonf,EAASt/gB,OAAQk4B,IAAM,EACxDqiB,EAAQ+ke,EAASpnf,IACfmoC,SAAW9lB,EAAM8lB,QAE3Bl9D,KAAKq/gB,oBAAoB3sC,EAAOzO,MAI5Cg6C,EAAO/hhB,UAAUmjhB,oBAAsB,SAAU3sC,EAAOzO,GACpD,IAAIorC,EAAsB,GAI1B,GAHI38B,EAAMnjM,kBACN8/N,EAAsB/wgB,YAAO,GAAIo0e,EAAMnjM,gBAAgB8/N,oBAAqB,MAAM,IAEjF38B,EAAMlG,UAAUl+c,WAAWzxB,OAAS,IAAO61e,EAAMnE,kBAAoBmE,EAAMoW,aAAc,CAC1F,KAAOpW,EAAMlG,UAAU5xB,WACnB83B,EAAMlG,UAAUt1c,YAAYw7c,EAAMlG,UAAU5xB,WAEhDnxb,aAAOipd,EAAMlG,WAEjBkG,EAAMyqB,eAAgB,EACtBzqB,EAAMwK,OAASxK,EAAMnE,gBACrBmE,EAAMw4B,4BAA8B,GACpCnvd,GAAcl5C,GAAW6ve,EAAM1xe,QAAQyY,GAAK,sBAAsBjY,iBAAiB,iBAAiB,IACpGgof,GAAqB9W,GACrB1ye,KAAKu/gB,qBAAqBt7C,EAAQyO,GAClCA,EAAMg/B,YACNh/B,EAAMiZ,cACN1nB,EAAO82B,mBACP/6f,KAAKw/gB,cAAc9sC,EAAM4c,eACzB5c,EAAM4qB,aAAamB,0BACnB/rB,EAAMgoB,eACNhoB,EAAM3od,QAAQ,SAAU,CAAE2od,MAAOA,IAC7B28B,EAAoBxygB,OAAS,IAC7B61e,EAAMnjM,gBAAgB8/N,oBAAsBA,EAC5C38B,EAAMnjM,gBAAgBigO,gBAAgB98B,EAAOA,EAAM0iB,gBAEnD1iB,EAAMmsB,iBAA2C,SAAxBnsB,EAAMosB,eAC/BpsB,EAAMmsB,gBAAgB2Q,gBAAgB98B,EAAOA,EAAMosB,eAEvDpsB,EAAMwK,QAAS,GAEnB+gC,EAAO/hhB,UAAUkjhB,sBAAwB,SAAUn7C,EAAQztc,GACvDytc,EAAO/ma,SAAW1mC,EACdx2B,KAAKy/gB,gBAAgBx7C,EAAOpkW,SAC5BokW,EAAOpkW,MAAMq5W,mBAAqBjV,EAAOpkW,MAAMokW,OAAOv6c,MAAK,SAAUltB,GAAS,OAAQA,EAAM0gE,YAE5Fl9D,KAAKy/gB,gBAAgBx7C,EAAOtkW,SAC5BskW,EAAOtkW,MAAMu5W,mBAAqBjV,EAAOtkW,MAAMskW,OAAOv6c,MAAK,SAAUltB,GAAS,OAAQA,EAAM0gE,aAGpG+gd,EAAO/hhB,UAAUujhB,gBAAkB,SAAU1ze,GACzC,OAAQ/rC,KAAK0ye,MAAMn7Z,KAAKp5E,QAAQ4tC,IAAS,GAE7Ckye,EAAO/hhB,UAAUqjhB,qBAAuB,SAAUt7C,EAAQyO,GACtD,IAAKA,EAAMwK,OACP,OAAO,KAEXnhc,GAAc22b,EAAM1xe,QAAQyY,GAAK,iBAA+Bzd,IAAjBioe,EAAOzpd,MAAsBypd,EAAO5rX,SAAW4rX,EAAOzpd,OACjG,0BAERyjgB,EAAO/hhB,UAAUsjhB,cAAgB,SAAU79B,GACvC,IAAK,IAAI3jf,EAAK,EAAG+9f,EAAqBpa,EAAkB3jf,EAAK+9f,EAAmBl/f,OAAQmB,IAAM,CAC7E+9f,EAAmB/9f,GACzB+vC,cAAW/xC,IAQ1BiihB,EAAO/hhB,UAAUu0D,MAAQ,SAAU3pC,GAC/B,IAAI/mB,EAAQC,KACZ,GAAKA,KAAK0ye,MAAMouB,eAAe5jc,QAA/B,CAUA,IAPA,IAEIwid,EAIA37C,EANAxhc,EAAQviC,KAAK0ye,MAAMoiB,OACnBnyd,EAAQ3iC,KAAK0ye,MAAMqiB,OAEnBmT,EAAWphf,EAAMmW,OAAOxjB,GAInBzb,EAAK,EAAG2hhB,EAHG,CAAC3/gB,KAAK+ggB,SAAW,SAAU/ggB,KAAK+ggB,SAAW,iBAC3D/ggB,KAAK+ggB,SAAW,WAE8B/igB,EAAK2hhB,EAAgB9ihB,OAAQmB,IAAM,CACjF,IAAIyb,EAAKkmgB,EAAgB3hhB,GACzB,GAAIkqgB,EAAS/pgB,QAAQsb,IAAO,EAAG,CAC3Bsqd,EAAc5td,SAAS+xf,EAASvrgB,MAAM8c,GAAI,GAAI,IAC9CzZ,KAAKg/gB,YAAYj7C,EAAaj9c,GAC9B,OAGJohf,EAAS/pgB,QAAQ6B,KAAK+ggB,SAAW,YAAc,EAC/C/ggB,KAAK2ngB,WAAW7gf,GAAO,GAElBohf,EAAS/pgB,QAAQ6B,KAAK+ggB,SAAW,cAAgB,GACtD/ggB,KAAK2ngB,WAAW7gf,GAAO,GAEvB9mB,KAAK0ye,MAAMoW,cAAgB9of,KAAK4ggB,cAAc/jgB,QAC9CmD,KAAK4/gB,kBAAkBr9e,EAAOI,IAElC+8e,EAAe1/gB,KAAK2ggB,cAAczve,QAAO,SAAU+ke,GAC/C,OAAQ1U,GAAah/c,EAAQI,GAAS5iC,EAAMolU,UAAYplU,EAAM2hgB,kBAAoB,GAAK3hgB,EAAMgmgB,cAAc,KAAM,EAAG,GAAK,GAAK9P,EAAO/ld,UAExHrzC,QAAUmD,KAAK0ye,MAAMoW,cAClC9of,KAAKg/gB,YAAYU,EAAa,GAAGllgB,MAAOsM,KAMhDm3f,EAAO/hhB,UAAU0jhB,kBAAoB,SAAUr9e,EAAOI,GAClD,IAAIk9e,EAAU7/gB,KAAK0ye,MAAMtsM,SACrB0vF,EAAS91X,KAAK4hgB,aACdr3d,EAAcvqC,KAAK0ye,MAAMouB,eAAen4V,OAAOj5H,MAC/Cowe,EAAa,IAAI70C,GAAKn1G,EAAOv0W,EAAGu0W,EAAOx/W,EAAGw/W,EAAOpmV,MAAOomV,EAAOnmV,QAKnE,OAJAmwe,EAAWv+f,EAAIu+f,EAAWv+f,EAAIgpB,EAAc,EAC5Cu1e,EAAWxpgB,EAAIwpgB,EAAWxpgB,EAAIi0B,EAAc,EAC5Cu1e,EAAWpwe,MAAQowe,EAAWpwe,MAAQnF,EACtCu1e,EAAWnwe,OAASmwe,EAAWnwe,OAASpF,EACpCg3c,GAAah/c,EAAOI,EAAO3iC,KAAK4ggB,cAAc,OAExC5ggB,KAAK0hgB,kBAAoB,GAC3B1hgB,KAAK2ggB,cAAgB,GACrBkf,EAAQ11C,UAAU21C,GAClBD,EAAQz1C,WAAW,IAAIuf,GAAW,iBAAkB,cAAe,CAAEj6c,MAAO,EAAGimC,MAAO,IAAM,KAAMmqc,IAClG9/gB,KAAKijgB,aAAajjgB,KAAK0ye,MAAO1ye,KAAK6ggB,OAAQ/qI,GAC3C+pJ,EAAQx1C,mBAGNrqe,KAAK0hgB,kBAEJ,MAEPngB,GAAah/c,EAAOI,EAAO3iC,KAAK4ggB,cAAc,OAExC5ggB,KAAK0hgB,kBAAoB,GAAK1hgB,KAAK0hgB,mBAAqB1hgB,KAAKwngB,gBAC/DxngB,KAAK2ggB,cAAgB,GACrBkf,EAAQ11C,UAAU21C,GAClBD,EAAQz1C,WAAW,IAAIuf,GAAW,iBAAkB,aAAc,CAAEj6c,MAAO,EAAGimC,MAAO,IAAM,KAAMmqc,IACjG9/gB,KAAKijgB,aAAajjgB,KAAK0ye,MAAO1ye,KAAK6ggB,OAAQ/qI,GAC3C+pJ,EAAQx1C,mBAGNrqe,KAAK0hgB,kBAEJ,WAZX,GAkBJuc,EAAO/hhB,UAAU2+B,cAAgB,WAC7B,MAAO,UAQXojf,EAAO/hhB,UAAUif,QAAU,WACvBnb,KAAK2pB,uBAEFs0f,EArdiB,CAsd1Bzd,ICnfEnie,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzCshf,GAA6B,SAAU5gf,GAOvC,SAAS4gf,EAAYrtC,GACjB,IAAI3ye,EAAQo/B,EAAO79B,KAAKtB,KAAM0ye,IAAU1ye,KAIxC,OAHAD,EAAMiB,QAAUjB,EAAM2ye,MAAM1xe,QAC5BjB,EAAMque,UAAYsE,EAAMtgY,QAAQg8X,UAChCrue,EAAMkwE,QAAUyia,EACT3ye,EAyWX,OApXAs+B,GAAU0hf,EAAa5gf,GAavB4gf,EAAY7jhB,UAAU2G,WAAa,SAAU4W,GACzC,OAAOjZ,SAASuuB,eAAetV,IAQnCsmgB,EAAY7jhB,UAAU8jhB,kBAAoB,SAAUC,GAChDjghB,KAAKkue,SAAWlue,KAAK0ye,MAAM6B,oBAC3Bv0e,KAAK+kB,OAA0C,OAAhC/kB,KAAKiwE,QAAQmiC,QAAQrtF,OAC9B/kB,KAAKiwE,QAAQmiC,QAAQi7X,OAAU,oBAAsB,wBACpDrte,KAAKiwE,QAAQmiC,QAAQrtF,OAC5B/kB,KAAK04E,cAAgB,GACrB,IAAIk1Z,EAAapte,SAASuuB,eAAe/uB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,YAC7D43d,EAAerxe,KAAK0ye,MAAM1xe,QAAQyY,GAAGtb,QAAQ,eAAiB,EAClE,OAAK8hhB,IAAcryC,GAAcyD,EACtBrxe,KAAKmB,gBAET,MAEX4+gB,EAAY7jhB,UAAUiF,cAAgB,WAClC,IAAIyse,EAAapte,SAASW,cAAc,OAIxC,OAHAyse,EAAWn0d,GAAKzZ,KAAKgB,QAAQyY,GAAK,WAClCm0d,EAAWv/c,UAAY,eACvBu/c,EAAWh4c,aAAa,QAAS,qDAC1Bg4c,GAEXmyC,EAAY7jhB,UAAUk8f,SAAW,SAAUv9e,EAAM4pN,EAASmpQ,EAAYqM,GAClE,QAAIp/d,EAAKopd,OAAOs6B,gBAERv+f,KAAK20f,cAAc/yf,KAAKiZ,GAK5B7a,KAAKkghB,gBACDtyC,IAAepte,SAASuuB,eAAe6+c,EAAWn0d,MAC7CzZ,KAAK0ye,MAAMoJ,WAIZt7e,SAASuuB,eAAe/uB,KAAK0ye,MAAMoJ,WAAW96e,QAAQyY,GAAK,sBAAsBzX,YAAY4re,GAH7Fpte,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,sBAAsBzX,YAAY4re,KAM7E,IAIfmyC,EAAY7jhB,UAAUikhB,gBAAkB,WAGpC,IAFA,IAAI3ke,EAEK5+C,EAAI,EAAG+E,EAAM3B,KAAK40f,eAAe/3f,OAAQD,EAAI+E,EAAK/E,KACvD4+C,EAAOx7C,KAAK40f,eAAeh4f,IAClBqne,OAAO+wB,aACRx5c,EAAKyob,OAAO/ma,SACZl9D,KAAKoghB,eAAe5ke,EAAKyob,OAAQzob,EAAKpE,MAAM58B,OAAO,GAIlDghC,EAAKyob,OACFjtE,OAAO95V,SAAgC,YAArB1hB,EAAKyob,OAAO94d,MAA2C,WAArBqwC,EAAKyob,OAAO94d,OACxEnL,KAAK40f,eAAe9qe,QACpBnoB,GAAO,IAInBo+gB,EAAY7jhB,UAAUkkhB,eAAiB,SAAUn8C,EAAQD,EAAYq8C,GACjE,IAAIr/gB,EAAUhB,KAAK6C,WAAW7C,KAAKgB,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAQ,UAAYwpd,GACpFz0L,EAAkBvvS,KAAKiwE,QAAQqwc,4BAC/BC,KAAoBhxO,GAAmBA,EAAgB8/N,oBAAoBxygB,OAAS,GACpFmE,KACMu/gB,GAAqBA,GAAqBv/gB,EAAQmuB,aAAa,WACa,IAA3EnuB,EAAQmuB,aAAa,SAAShxB,QAAQ,gCACzC6C,EAAQ40B,aAAa,WAAYyqf,EAAYp8C,EAAOtgc,QAAU,EAAIsgc,EAAOtgc,SAASx2B,YAGlFnM,EAAQ40B,aAAa,UAAWquc,EAAOtgc,QAAQx2B,cAI3D4ygB,EAAY7jhB,UAAUskhB,gBAAkB,WACpC,IAAK,IAAIxihB,EAAK,EAAGuF,EAAKvD,KAAK20f,cAAe32f,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIw9C,EAAOj4C,EAAGvF,GACVw9C,EAAKyob,OAAO+wB,cAAyC,WAAzBx5c,EAAKyob,OAAO5rX,UACxCr4G,KAAKoghB,eAAe5ke,EAAKyob,OAAQzob,EAAKpE,MAAM58B,OAAO,KAI/DulgB,EAAY7jhB,UAAUmtT,cAAgB,SAAUqpL,EAAOjuQ,EAASz7L,EAAUy3e,EAAcrpe,EAAOo2b,EAAQxhd,EAAQ8pW,EAAQ4qJ,EAAaC,EAAeC,QAC3H,IAAhBF,IAA0BA,EAAc,WACtB,IAAlBC,IAA4BA,EAAgB,MAChD,IAAI18C,EAASjke,KAAK20f,cAAc,GAAG1wB,OAC/B3/b,EAASouc,EAAMi5B,eAAiBj5B,EAAMmuC,0BAC1C,GAAKv8e,EAAL,CAGA,IAAI7rB,EAAcwrd,EAAO+wB,cAAgC,cAAhB/wB,EAAO94d,MAAwBisC,GAASA,EAAM9gC,EAAI,EACvF43d,EAAWlue,KAAK0ye,MAAM6B,qBAAuBtQ,EAAO+wB,aACpDjnd,EAAW,KACf,GAAI/tC,KAAKuS,KAAK1V,QAAU,EAAG,CACvB,IAAIikhB,EAAcx2C,GAAYtqe,KAAKuS,KAAK,GAAImge,EAAMtgY,QAAQg8X,WACtDx4C,EAAgC,KAAhB51b,KAAK+kB,QAAiC,YAAhB/kB,KAAK+kB,OAAyBuld,GAAYtqe,KAAK+kB,OAAQ/kB,KAAKoue,WAClG,IAAI3xZ,GAAK,EAAG,GAGhBqkc,EAAYpxe,MAAQnoC,KAAK8L,IAAIytgB,EAAYpxe,MAAOkmZ,EAAWlmZ,QAAW89b,EAAO3we,OAAS,EADrE,GACuF,GACxG,IAAIkkhB,EAAgB,IAAiBnrF,EAAWjmZ,OAAS,EAAK,GAAU,GACxEmxe,EAAYnxe,OAASmxe,EAAYnxe,OAASimZ,EAAWjmZ,OAASoxe,EAC9Dhze,EAAW/tC,KAAKsxe,mBAAmB74d,EAAYy1d,GAE/Cz1d,EAA2B,UAD3Bs1B,EAAW/tC,KAAKghhB,kBAAkBF,EAAa,IAAI71C,GAAK,EAAG,EAAGn1G,EAAOpmV,MAAOomV,EAAOnmV,QAAS3G,EAAU+E,KAClD,WAAbA,EACvCmgc,EAAyB,SAAbngc,GAAsC,UAAbA,EAOrC02L,EACAzkO,KAAKihhB,WAAa,IAAIC,GAAW,CAC7Bv9e,QAAS+uc,EAAMtgY,QAAQzuE,QACvB5e,OAAQ/kB,KAAK+8D,WACbrS,QAAS1qD,KAAKuS,KACd6pL,KAAMs2S,EAAMtgY,QAAQgqF,KACpBzzB,OAAQ+pU,EAAMtgY,QAAQu2D,OACtB4lU,gBAAiBmE,EAAMtgY,QAAQm8X,gBAC/Bvlc,SAAUA,EACVqkc,OAAQqF,EAAMtgY,QAAQi7X,OACtBG,OAAQA,EACR5wE,WAAyC,eAA7B58Z,KAAK0ye,MAAMyC,cAAiC,IAAIiK,GAAc,EAAG,GAAKqhC,EAClF5zC,WAAY/2G,EACZurG,QAASrhe,KAAKmhhB,cACd71f,SAAUs1f,GAAkBluC,EAAMtgY,QAAQ9mF,SAC1CzQ,KAAM8lgB,EACN3ic,MAAO00Z,EAAM10Z,MACbhyD,OAAQA,EACRoid,UAAWsE,EAAMtgY,QAAQg8X,UACzB31d,WAAYA,EACZy1d,SAAUA,EACVrD,aAAc7qe,KAAKuS,KAAK1V,OAAS,GAAKmD,KAAK0ye,MAAMoJ,WAAa,EAAI,GAClEyH,cAAe7Q,EAAM6Q,cACrBzid,SAAU9gC,KAAK0ye,MAAMtgY,QAAQtxE,SAC7Borc,SAAUlse,KAAK0ye,MAAMoW,aACrBzY,WAAYqC,EAAMtgY,QAAQgva,gBAA4C,UAA1B1uC,EAAM73c,gBAClDy0b,eAAgB,CAAEl1c,KAAM,WAAY7Z,OAAQP,KAAK0ye,MAAMtgY,SACvDw+X,gBAAiB5we,KAAK0ye,MACtBhE,iBAAkB3gc,EAClBopc,cAAe,WACX7yc,EAAO67e,kBACP77e,EAAOk8e,kBACPl8e,EAAO+8e,oBAAoBX,IAE/BY,kBAAmB,SAAUrhhB,GACrBA,EAAKmyG,QAAQs6X,WACbpoc,EAAOytc,QAAQztc,EAAOswd,kBAG/B,IAAM50f,KAAKgB,QAAQyY,GAAK,YAGvBzZ,KAAKihhB,aACLjhhB,KAAKihhB,WAAWj4e,SAAWA,EAC3BhpC,KAAKihhB,WAAWv2d,QAAU1qD,KAAKuS,KAC/BvS,KAAKihhB,WAAWl8f,OAAS/kB,KAAK+8D,WAC9B/8D,KAAKihhB,WAAWj1f,OAASA,EACzBhsB,KAAKihhB,WAAW5/C,QAAUrhe,KAAKmhhB,cAC/BnhhB,KAAKihhB,WAAWzzC,OAASA,EACzBxte,KAAKihhB,WAAWpmgB,KAAO8lgB,EACvB3ghB,KAAKihhB,WAAW31f,SAAWond,EAAMtgY,QAAQ9mF,SACzCtrB,KAAKihhB,WAAW7yC,UAAYsE,EAAMtgY,QAAQg8X,UAC1Cpue,KAAKihhB,WAAWxogB,WAAaA,EAC7BzY,KAAKihhB,WAAW/yC,SAAWA,EAC3Blue,KAAKihhB,WAAWrkH,WAA0C,eAA7B58Z,KAAK0ye,MAAMyC,cAAiC,IAAIiK,GAAc,EAAG,GAAKqhC,EACnGzghB,KAAKihhB,WAAWp2C,aAAe7qe,KAAKuS,KAAK1V,OAAS,GAAKmD,KAAK0ye,MAAMoJ,WAAa,EAAI,GACnF97e,KAAKihhB,WAAWvyC,iBAAmB3gc,EACnC/tC,KAAKihhB,WAAW3nf,YAIpBt5B,KAAK0ye,MAAMnwY,SACXviG,KAAK0ye,MAAM9pc,yBAGnBm3e,EAAY7jhB,UAAU8khB,kBAAoB,SAAUrhH,EAAU7pC,EAAQ80G,EAAe78b,GACjF,IAAIsiP,EAAQrwR,KAAKuhhB,qBAAqB,MAAO,IAAIt2C,GAAK,EAAG,EAAGn1G,EAAOpmV,MAAOomV,EAAOnmV,QAASi7b,EAAejrE,GACrGvvI,EAAWpwR,KAAKuhhB,qBAAqB,SAAU,IAAIt2C,GAAK,EAAG,EAAGn1G,EAAOpmV,MAAOomV,EAAOnmV,QAASi7b,EAAejrE,GAC3Gh7N,EAAU3kM,KAAKuhhB,qBAAqB,QAAS,IAAIt2C,GAAK,EAAG,EAAGn1G,EAAOpmV,MAAOomV,EAAOnmV,QAASi7b,EAAejrE,GACzGvyH,EAASptS,KAAKuhhB,qBAAqB,OAAQ,IAAIt2C,GAAK,EAAG,EAAGn1G,EAAOpmV,MAAOomV,EAAOnmV,QAASi7b,EAAejrE,GAE3G,KAAItvI,GAASD,GAAYzrF,GAAWyoG,GAc/B,CACD,IAAI5wN,EAAO,CAAEouZ,EAAcrpd,EAAIu0W,EAAOv0W,EAAMu0W,EAAOv0W,EAAIu0W,EAAOpmV,MAASk7b,EAAcrpd,EAChFqpd,EAAct0d,EAAIw/W,EAAOx/W,EAAMw/W,EAAOx/W,EAAIw/W,EAAOnmV,OAAUi7b,EAAct0d,GAC1EkE,EAAQgiE,EAAKr+E,QAAQoJ,KAAK8L,IAAIjX,MAAM4D,KAAMw8E,IAE9C,OADAzuC,EAAsB,IAAVvzB,EAAe,OAAoB,IAAVA,EAAe,QAAqB,IAAVA,EAAe,MAAQ,SAG1F,MApBqB,QAAbuzB,EACasiP,EAAQ,MAASD,EAAW,SAAYzrF,EAAU,QAAU,OAEvD,WAAb52J,EACQqiP,EAAW,SAAYC,EAAQ,MAAS1rF,EAAU,QAAU,OAEvD,UAAb52J,EACQ42J,EAAU,QAAWyoG,EAAS,OAAU/c,EAAQ,MAAQ,SAGxD+c,EAAS,OAAUzoG,EAAU,QAAW0rF,EAAQ,MAAQ,UAYjF0vP,EAAY7jhB,UAAUqlhB,qBAAuB,SAAUxze,EAAU+nV,EAAQ9sV,EAAUwzC,GAC/E,IAAIt/E,EAAQ,IAAIkif,GAAc,EAAG,GAC7Bzme,EAAM,IAAIyme,GAAc,EAAG,GAC/B,OAAQrxc,GACJ,IAAK,MACD7wC,EAAMqkB,EAAIynB,EAASznB,EAAKi7D,EAAK9sC,MAAQ,EACrCxyC,EAAMoZ,EAAI0yB,EAAS1yB,EAAIkmE,EAAK7sC,OAC5Bh3B,EAAI4I,EAAIynB,EAASznB,EAAKi7D,EAAK9sC,MAAQ,EACnC/2B,EAAIrC,EAAI0yB,EAAS1yB,EACjB,MACJ,IAAK,SACDpZ,EAAMqkB,EAAIynB,EAASznB,EAAKi7D,EAAK9sC,MAAQ,EACrCxyC,EAAMoZ,EAAI0yB,EAAS1yB,EACnBqC,EAAI4I,EAAIynB,EAASznB,EAAKi7D,EAAK9sC,MAAQ,EACnC/2B,EAAIrC,EAAI0yB,EAAS1yB,EAAIkmE,EAAK7sC,OAC1B,MACJ,IAAK,QACDzyC,EAAMqkB,EAAIynB,EAASznB,EACnBrkB,EAAMoZ,EAAI0yB,EAAS1yB,EAAKkmE,EAAK7sC,OAAS,EACtCh3B,EAAI4I,EAAIynB,EAASznB,EAAIi7D,EAAK9sC,MAC1B/2B,EAAIrC,EAAI0yB,EAAS1yB,EAAKkmE,EAAK7sC,OAAS,EACpC,MACJ,IAAK,OACDzyC,EAAMqkB,EAAIynB,EAASznB,EAAIi7D,EAAK9sC,MAC5BxyC,EAAMoZ,EAAI0yB,EAAS1yB,EAAKkmE,EAAK7sC,OAAS,EACtCh3B,EAAI4I,EAAIynB,EAASznB,EACjB5I,EAAIrC,EAAI0yB,EAAS1yB,EAAKkmE,EAAK7sC,OAAS,EAG5C,OAAQ4xc,GAAarkf,EAAMqkB,EAAGrkB,EAAMoZ,EAAGw/W,IAAWyrH,GAAa5oe,EAAI4I,EAAG5I,EAAIrC,EAAGw/W,IAEjFiqJ,EAAY7jhB,UAAUo1e,mBAAqB,SAAU74d,EAAYy1d,GAQ7D,OANIA,EACWz1d,EAAa,OAAS,QAGtBA,EAAa,SAAW,OAI3CsngB,EAAY7jhB,UAAUilhB,YAAc,WAEhC,IADA,IAAI/8P,EAAS,GACJpmR,EAAK,EAAGuF,EAAKvD,KAAK20f,cAAe32f,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAI6c,EAAOtX,EAAGvF,GACdomR,EAAOxiR,KAAK5B,KAAKwhhB,UAAU3mgB,EAAMA,EAAKopd,SAE1C,OAAO7/M,GAEX27P,EAAY7jhB,UAAUslhB,UAAY,SAAU3mgB,EAAMopd,GAC9C,OAAIA,EAAO+wB,cAAiC,WAAhB/wB,EAAO94d,MAAqC,SAAhB84d,EAAO94d,MAAmC,kBAAhB84d,EAAO94d,MAI7E0P,EAAKu8B,MAAMu+B,OAA8B,YAArB96D,EAAKu8B,MAAMu+B,MAAsB96D,EAAKu8B,MAAMu+B,MAClE96D,EAAKu8B,MAAMyhd,WACb50B,EAAOjtE,OAAO56N,MAAQ6nS,EAAO40B,SAL1Bh+e,EAAKu8B,MAAMu+B,OAQ1Boqc,EAAY7jhB,UAAUmlhB,oBAAsB,SAAUX,GAC9CA,IACA1ghB,KAAK20f,cAAgB30f,KAAK20f,cAAc7ie,OAAO4uf,IAEnD1ghB,KAAK40f,eAAiBt2f,YAAO,GAAI0B,KAAK20f,cAAe,MAAM,IAE/DorB,EAAY7jhB,UAAU61e,QAAU,SAAUl3d,GACtC,IAAI6zf,EAAa1ugB,KAAK0ye,MAAMoW,aAAe9of,KAAK6C,WAAW7C,KAAKgB,QAAQyY,GAAK,kBACzEzZ,KAAK6C,WAAW7C,KAAKgB,QAAQyY,GAAK,gBACrBi1f,GAAcv4f,SAASu4f,EAAWv/e,aAAa,WAAY,IAAM,IAE9EnvB,KAAKyhhB,OAAS,KACdzhhB,KAAK0hhB,OAAS,KACd1hhB,KAAK20f,cAAgB,GACrB30f,KAAKmghB,kBACLnghB,KAAKy+f,wBAAwB5jf,GAC7B7a,KAAKihhB,WAAa,KAClBjhhB,KAAKiwE,QAAQlmD,QAAQ,oBAAqB,MAMlDg2f,EAAY7jhB,UAAUuigB,wBAA0B,SAAU5jf,GACtD,GAAI7a,KAAK0ye,MAAM4qB,aAAc,CACzB,IAAK,IAAIt/f,EAAK,EAAGmsS,EAAStvR,EAAM7c,EAAKmsS,EAAOttS,OAAQmB,IAAM,CACtD,IAAIw9C,EAAO2uP,EAAOnsS,GAClB+9C,GAAc/7C,KAAKgB,QAAQyY,GAAK,WAAa+hC,EAAKyob,OAAOzpd,MACrD,UAAYghC,EAAKpE,MAAM58B,MAAQ,cAEvCxa,KAAK0ye,MAAM4qB,aAAamB,0BAE5Bz+f,KAAK40f,eAAiB,IAkB1BmrB,EAAY7jhB,UAAUylhB,WAAa,WAC/B3hhB,KAAKote,aAAe,GACpB,IAAIpse,EAAUhB,KAAK6C,WAAW7C,KAAKgB,QAAQyY,GAAK,kBAChD,GAAIzY,GAAWA,EAAQstB,WAAWzxB,OAAS,EACvC,KAAOmE,EAAQ45c,WAA2C,IAA9B55c,EAAQstB,WAAWzxB,QAC3CmE,EAAQk2B,YAAYl2B,EAAQ45c,YAIxCmlE,EAAY7jhB,UAAUgkhB,cAAgB,WAClCtpU,GAAU52M,KAAK4hhB,kBAQnB7B,EAAY7jhB,UAAU2lhB,cAAgB,SAAU/gf,GAC5C,IAAI/gC,EAAQC,KACRgye,EAAiBhye,KAAK6C,WAAW7C,KAAKgB,QAAQyY,GAAK,YACnDqogB,EAAkB9vC,EAAiBhye,KAAK6C,WAAWmve,EAAev4d,GAAK,mBAAqB,KAC5FsogB,EAAqBD,GAAiD,gBAA9BA,EAAgB1/gB,UAC5DpC,KAAKkghB,gBAEDlghB,KAAK0ye,MAAMnwY,SAAWw/a,GACtB/hhB,KAAK0ye,MAAM7pc,cAAc,CAACi5e,EAAgBrogB,IAAK,CAAC,IAEhDu4d,GAAkBhye,KAAK40f,eAAe/3f,OAAS,IAC/CmD,KAAK4hhB,iBAAmBxhhB,YAAW,WAC3BL,EAAMkhhB,YACNlhhB,EAAMkhhB,WAAWlvC,YAEtBjxc,KAGJi/e,EArXsB,CAsX/BrrB,IC7YEr2d,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzC8qR,GAAyB,SAAUpqR,GAOnC,SAASoqR,EAAQmpL,GACb,IAAI3ye,EAAQo/B,EAAO79B,KAAKtB,KAAM0ye,IAAU1ye,KAExC,OADAD,EAAMwpB,mBACCxpB,EAmiBX,OA5iBAs+B,GAAUkrR,EAASpqR,GAcnBoqR,EAAQrtT,UAAUqtB,iBAAmB,WACjC,IAAIvpB,KAAK0ye,MAAMv5c,YAAf,CAGA,IAAI+e,EAAc7xB,IAAQW,UAAY,eAAiB,aACvDhnB,KAAK0ye,MAAMp5d,GAAG4+B,EAAal4C,KAAKgihB,kBAAmBhihB,MACnDA,KAAK0ye,MAAMp5d,GAAG,UAAWtZ,KAAKsygB,UAAWtygB,MACzCA,KAAK0ye,MAAMp5d,GAAG+M,IAAQoC,eAAgBzoB,KAAK6pT,iBAAkB7pT,MAC7DA,KAAK0ye,MAAMp5d,GAAG+M,IAAQqC,cAAe1oB,KAAK89f,eAAgB99f,QAE9DupT,EAAQrtT,UAAU4hgB,eAAiB,WAC/B,IAAIprB,EAAQ1ye,KAAKiwE,QACbyia,EAAMzrd,UAAYjnB,KAAKqiF,WAAWqwZ,KAChC6O,GAAa7O,EAAMoiB,OAAQpiB,EAAMqiB,OAAQriB,EAAMyrB,qBAAqBjW,iBAAmBxV,EAAMtgY,QAAQi7X,SAC/FqF,EAAMtgY,QAAQi7X,UACjBqF,EAAMqrB,UAAUvpX,OAIZk+V,EAAMurB,WACXj+f,KAAK6hhB,cAAc,MAJnB7hhB,KAAKoyG,UACLpyG,KAAK6hhB,cAAc,QAO/Bt4N,EAAQrtT,UAAU8lhB,kBAAoB,WAClChihB,KAAK6hhB,cAAc7hhB,KAAK0ye,MAAMtgY,QAAQ6va,kBAE1C14N,EAAQrtT,UAAU2tT,iBAAmB,WACjC,IAAI6oL,EAAQ1ye,KAAK0ye,MAEZA,EAAMwvC,qBAAwBlihB,KAAKqiF,WAAWqwZ,KAC1CA,EAAMtgY,QAAQi7X,QAAYqF,EAAMzrd,UAAYyrd,EAAMurB,WACnDj+f,KAAKoyG,UAELmvY,GAAa7O,EAAMoiB,OAAQpiB,EAAMqiB,OAAQriB,EAAMyrB,qBAAqBjW,iBAChExV,EAAMtgY,QAAQi7X,QAAYqF,EAAMzrd,UAAYyrd,EAAMurB,WAClDj+f,KAAKoyG,UAILsgY,EAAMtgY,QAAQi7X,QACdrte,KAAK6hhB,cAAc7hhB,KAAK0ye,MAAMtgY,QAAQ6va,mBAWtD14N,EAAQrtT,UAAUo2gB,UAAY,WAC1B,IAAI5/B,EAAQ1ye,KAAK0ye,MAIjB,OAHIA,EAAMqrB,UAAUvpX,QAAU+sW,GAAa7O,EAAMoiB,OAAQpiB,EAAMqiB,OAAQriB,EAAMyrB,qBAAqBjW,iBAC9Flof,KAAKoyG,WAEF,GAOXm3M,EAAQrtT,UAAUk2G,QAAU,WACxB,GAAKpyG,KAAK0ye,MAAMoJ,YAAc97e,KAAK0ye,MAAMoJ,WAAWqmC,UAEhD,OADAnihB,KAAK6hhB,cAAc,KACZ,KAEX,IAAI5gX,EAAYjhK,KAAK0ye,MAAMoW,aAAe9of,KAAKgB,QAAQyY,GAAK,iBAAmBzZ,KAAKgB,QAAQyY,GAAK,eAC7Fi1f,EAAa1ugB,KAAK6C,WAAWo+J,GAE7BmhX,EAAapihB,KAAK0ye,MAAMoJ,YAAc4yB,GAAeA,EAAW5qa,WAAWx1E,WAAWzxB,OAAS,EAC/FojhB,EAAavR,GAAcv4f,SAASu4f,EAAWv/e,aAAa,WAAY,IAAM,IAAMizf,EACpFx0C,EAAa5te,KAAKgghB,kBAAkBC,GACpCjghB,KAAK0ye,MAAMoW,cAAgBlb,IAC3Bpte,SAASuuB,eAAe/uB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,sBAAsBzX,YAAY4re,GAClFA,EAAW5re,YAAYxB,SAASuuB,eAAe/uB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,kBAEtEzZ,KAAK0ye,MAAMtgY,QAAQi7X,OAIpBrte,KAAKqihB,qBAAqBrihB,KAAK0ye,OAAQutC,EAAWryC,GAHlD5te,KAAKsihB,oBAAoBtihB,KAAK0ye,OAAQutC,EAAWryC,IAMzDrkL,EAAQrtT,UAAUqmhB,WAAa,SAAU1ngB,GACrC,MAAoB,KAAhB7a,KAAK+kB,OACE,IAEX/kB,KAAK+kB,OAAS/kB,KAAKwihB,cAAc3ngB,EAAKu8B,MAAOv8B,EAAKopd,OAAQjke,KAAK+kB,OAAQlK,EAAKopd,OAAOpkW,MAAOhlH,EAAKopd,OAAOtkW,OACjC,KAAjE3/H,KAAK+kB,OAAOroB,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAI2vB,OAC/CrsB,KAAK+kB,OAET,KAEXwkS,EAAQrtT,UAAUumhB,WAAa,WAC3B,IAAKzihB,KAAK0ye,MAAMtgY,QAAQswa,aACpB,MAAO,GAGX,IADA,IAAI1rH,EAAS,GACJh5Z,EAAK,EAAGuF,EAAKvD,KAAK20f,cAAe32f,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAI6c,EAAOtX,EAAGvF,GACdg5Z,EAAOp1Z,KAAKiZ,EAAKu8B,MAAM4/W,OAAOnK,OAAShyY,EAAKopd,OAAOjtE,OAAOnK,OAE9D,OAAOmK,GAEXztG,EAAQrtT,UAAUomhB,oBAAsB,SAAU5vC,EAAOjuQ,EAASmpQ,GAC9D,IAAI/yd,EAAO7a,KAAK+8F,UAGhB,GAFAliF,EAAKove,UAAYjqf,KAAKiqf,UACtBjqf,KAAK20f,cAAgB,GACjB30f,KAAK2ihB,SAAS9ngB,EAAM7a,KAAK40f,eAAe,IAAK,CAC7C,KAAMliB,EAAM2hC,oBAAqB3hC,EAAM2hC,kBAAkBuO,kBAAqB5ihB,KAAK40f,eAAe,IAC9F/5e,EAAKu8B,MAAM58B,QAAUxa,KAAK40f,eAAe,GAAGx9c,MAAM58B,OAASK,EAAKopd,OAAOzpd,QAAUxa,KAAK40f,eAAe,GAAG3wB,OAAOzpd,MAC/G,OAAO,KAEPxa,KAAKo4f,SAASv9e,EAAM4pN,EAASmpQ,GAAY,IACzC5te,KAAK6ihB,qBAAqBhogB,EAAM4pN,EAASzkO,KAAK8ihB,eAAejogB,GAAO7a,KAAKuihB,WAAW1ngB,SAIxF,IAAKA,EAAKu8B,OAASp3C,KAAKwrI,SACpBxrI,KAAK6hhB,cAAc7hhB,KAAK0ye,MAAMtgY,QAAQ6va,iBACtCjihB,KAAKwrI,UAAW,OAIhB,IADA,IAAI6yX,EAAgBr+f,KAAKu2f,aAAav2f,KAAK0ye,MAAM4c,eACxCtxf,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIime,EAAS1ge,EAAGvF,GACZime,EAAO/ma,SAAiC,cAApB+ma,EAAO5rX,WAC3Bx9F,EAAO7a,KAAKs2f,YAAY5jB,EAAOzO,EAAQo6B,IAAkBxjf,GAKrEA,GAAQA,EAAKu8B,OACbp3C,KAAK+ihB,eAAelogB,EAAM63d,IAGlCnpL,EAAQrtT,UAAU2mhB,qBAAuB,SAAUzre,EAAOqtL,EAASyqQ,EAAgBnya,GAC/E,IAAIh9D,EAAQC,KAER+se,EAAW,CACXhqd,QAAQ,EAAO3I,KAAM+8d,GAAe5ke,KAAM28d,EAAgBnya,WAAYA,EAAYzxC,SAFlFA,UAGA24c,OAAQjke,KAAK0ye,MAAMpze,SAAW,GAAK83C,EAAM6sb,OAAQmK,UAAWpue,KAAKoue,UAAWh3b,MAAOA,EAAMA,MACzFv8B,KAAM,CAAEkhe,OAAQ3kc,EAAMA,MAAM71B,EAAGuue,OAAQ14c,EAAMA,MAAM9gC,EAAGytd,YAAa3sb,EAAM6sb,OAAOzpd,MAAOo2f,WAAYx5d,EAAM6sb,OAAO7pd,KAC5G4pd,WAAY5sb,EAAMA,MAAM58B,MAAOwogB,UAAW5re,EAAMA,MAAM7kC,OAE1D0wgB,EAAsB,SAAUl2C,GAC3BA,EAAShqd,QAWVhjB,EAAMoghB,kBACN12f,aAAO1pB,EAAM8C,WAAW9C,EAAMiB,QAAQyY,GAAK,eAXjB,kBAAtB29B,EAAM6sb,OAAO94d,OACbpL,EAAM4hhB,aACNl9S,GAAU,GAEd1kO,EAAMg9D,WAAagwa,EAAShwa,WAC5Bh9D,EAAM24E,cAAgB34E,EAAM24E,cAAc5mD,OAAOi7c,EAASx6d,MAC1DxS,EAAMwS,KAAOxS,EAAM24E,cACnB34E,EAAMspT,cAActpT,EAAM2ye,MAAOjuQ,EAAS1kO,EAAMmjhB,kBAAkB9re,GAAQA,EAAM6sb,OAAOj7D,SAAU5xX,EAAMA,MAAOr3C,EAAM0ihB,aAAc1ihB,EAAMojhB,iBAAiBpjhB,EAAM40f,cAAc,IAAK50f,EAAM2ye,MAAMyrB,qBAAqBjW,eAAgB,KAAMnof,EAAMqjhB,gBAAgBhse,GAAQr3C,EAAM2ye,MAAMtgY,QAAQ9mF,SAAWyhd,EAASzhd,SAAW,KAM9TvrB,EAAMyrI,UAAW,GAErBy3Y,EAAoB9mhB,KAAK6D,KAAMo3C,GAC/Bp3C,KAAK0ye,MAAM3od,QAAQotd,GAAepK,EAAUk2C,IAEhD15N,EAAQrtT,UAAUinhB,iBAAmB,SAAU/kB,GAC3C,IAAKp+f,KAAK0ye,MAAMtgY,QAAQswa,aACpB,OAAO,EAEX,IACIz+C,EAASm6B,EAAUn6B,OAKvB,OAJiBA,EAAOjtE,OAAO95V,SAAYl9D,KAAK0ye,MAAMtgY,QAAQi7X,UACxDpJ,EAAO+wB,cAAgB/wB,EAAOjtE,OAAO95V,UAA6B,YAAhB+ma,EAAO94d,MAA0C,YAApB84d,EAAOyQ,WACnE,WAAhBzQ,EAAO94d,MAAqC,SAAhB84d,EAAO94d,MAAmC,kBAAhB84d,EAAO94d,MAChE84d,EAAOjtE,OAAOrnX,OAAS,GAAK,EAAK,EAAIs0b,EAAOjtE,OAAOruP,OAAOj5H,MAAU,GAG9E65Q,EAAQrtT,UAAUymhB,SAAW,SAAU9ngB,EAAM2oI,GACzC,OAAO3oI,EAAKu8B,SAAYosG,GAAaA,EAASpsG,QAAUv8B,EAAKu8B,OACxDosG,GAAYA,EAASymW,UAAY,GAAKzmW,EAASymW,YAAcjqf,KAAKiqf,WAAezmW,EAASpsG,QAAUv8B,EAAKu8B,QAElHmyQ,EAAQrtT,UAAUgnhB,kBAAoB,SAAUrogB,GAC5C,IAAImuB,EACJ,GAAyB,kBAArBnuB,EAAKopd,OAAO94d,KAA0B,CACtC,IAAK0P,EAAKu8B,MAAMs/c,gBAAgB,GAC5B,OAAO,KAEX1td,EAAW,IAAIo2c,GAAcvke,EAAKu8B,MAAMs/c,gBAAgB,GAAGn1e,EAAG1G,EAAKu8B,MAAMs/c,gBAAgB,GAAGpgf,GAEhG,OAAQuE,EAAKopd,OAAO94d,MAChB,IAAK,gBACD,OAAOnL,KAAKqjhB,eAAexogB,GAC/B,IAAK,YACD,OAAO7a,KAAKsjhB,mBAAmBzogB,EAAMmuB,GACzC,IAAK,YACD,OAAOhpC,KAAKujhB,aAAa1ogB,EAAMmuB,GACnC,QACI,OAAOA,IAGnBugR,EAAQrtT,UAAUqnhB,aAAe,SAAU1ogB,EAAMmuB,GAS7C,OARInuB,EAAKu8B,MAAMw+c,QAAQ,KACd51f,KAAKkue,SAINllc,EAASznB,EAAI1G,EAAKu8B,MAAMw+c,QAAQ,GAAGr0e,EAAI1G,EAAKu8B,MAAMw+c,QAAQ,GAAGlmd,MAAQ,EAHrE1G,EAAS1yB,EAAIuE,EAAKu8B,MAAMw+c,QAAQ,GAAGt/e,EAAIuE,EAAKu8B,MAAMw+c,QAAQ,GAAGjmd,OAAS,GAMvE3G,GAEXugR,EAAQrtT,UAAUonhB,mBAAqB,SAAUzogB,EAAMmuB,GASnD,OARKhpC,KAAKkue,SAKNllc,EAASznB,EAAK1G,EAAKu8B,MAAM9gC,EAAI,EACzB0yB,EAASznB,EAAI1G,EAAKu8B,MAAMw+c,QAAQ,GAAGlmd,MAAQ1G,EAASznB,EALxDynB,EAAS1yB,EAAKuE,EAAKu8B,MAAM9gC,EAAI,EACzB0yB,EAAS1yB,EAAIuE,EAAKu8B,MAAMw+c,QAAQ,GAAGjmd,OAAS3G,EAAS1yB,EAMtD0yB,GAEXugR,EAAQrtT,UAAU4mhB,eAAiB,SAAU1kB,GACzC,IAAIn6B,EAASm6B,EAAUn6B,OACvB,OAAOjke,KAAKwihB,cAAcpkB,EAAUhnd,MAAO6sb,EAAQjke,KAAK4vT,UAAU5vT,KAAK0ye,MAAOzO,GAASA,EAAOpkW,MAAOokW,EAAOtkW,QAEhH4pL,EAAQrtT,UAAUknhB,gBAAkB,SAAUvogB,GAC1C,GAAI7a,KAAK0ye,MAAMtgY,QAAQ9mF,SAAU,CAC7B,IAAI8rB,EAAQ94C,YAAO,GAAIuc,EAAKu8B,OAS5B,OARAA,EAAM71B,EAAIvhB,KAAKwjhB,iBAAiB3ogB,EAAKu8B,MAAOv8B,EAAKopd,OAAOpkW,MAAO,KAAK,GAAM,GAC1C,OAA3BhlH,EAAKopd,OAAO0iB,WACbvvc,EAAM9gC,EAAItW,KAAKwjhB,iBAAiB3ogB,EAAKu8B,MAAOv8B,EAAKopd,OAAOtkW,MAAO,KAAK,GAAO,IAG3EvoF,EAAM4yI,IAAMhqL,KAAKwjhB,iBAAiB3ogB,EAAKu8B,MAAOv8B,EAAKopd,OAAOtkW,MAAO,OAAO,GAAO,GAC/EvoF,EAAM6yI,KAAOjqL,KAAKwjhB,iBAAiB3ogB,EAAKu8B,MAAOv8B,EAAKopd,OAAOtkW,MAAO,QAAQ,GAAO,IAE9EvoF,EAGP,OAAOv8B,EAAKu8B,OAGpBmyQ,EAAQrtT,UAAU6mhB,eAAiB,SAAUlogB,EAAM63d,GAC1CA,EAAM6B,qBAaPv0e,KAAK0hhB,QAAU,EAAIrmC,GAAmBxge,EAAKu8B,MAAMmhT,OAAQ19U,EAAKopd,OAAOpkW,QAAUhlH,EAAKopd,OAAOpkW,MAAM3vF,KAAKP,OAChG90B,EAAKopd,OAAOpkW,MAAM3vF,KAAK55B,EAC7BtW,KAAKyhhB,OAAS/uC,EAAMoiB,SAdQ,eAAxBpiB,EAAMyC,cACNn1e,KAAKyhhB,OAAS9gC,GAAwB9le,EAAKu8B,MAAMmhT,OAAQ19U,EAAKopd,OAAOpkW,OAAShlH,EAAKopd,OAAOpkW,MAAM3vF,KAAKR,MAC/F70B,EAAKopd,OAAOpkW,MAAM3vF,KAAK3uB,EAG7BvhB,KAAKyhhB,OAAmC,cAAzB5mgB,EAAKopd,OAAO5rX,UAA4Bq6X,EAAMtgY,QAAQi7X,OAAUrte,KAAKyhhB,OAChFpmC,GAAmBxge,EAAKu8B,MAAMmhT,OAAQ19U,EAAKopd,OAAOpkW,OAAShlH,EAAKopd,OAAOpkW,MAAM3vF,KAAKR,MAC5E70B,EAAKopd,OAAOpkW,MAAM3vF,KAAK3uB,EAErCvhB,KAAK0hhB,OAAShvC,EAAMqiB,SAQ5BxrM,EAAQrtT,UAAUmmhB,qBAAuB,SAAU3vC,EAAOjuQ,EAASmpQ,GAC/D,IAAI/yd,EACA4ogB,EACArlB,EAAoC,eAAxB1rB,EAAMyC,cAAiCn1e,KAAK+8F,UAAY,KACxE/8F,KAAKkghB,gBACLlghB,KAAKmghB,kBACLnghB,KAAK20f,cAAgB,GACrB,IAAI+rB,EAAc,GAEdj8S,IACKiuQ,EAAMoJ,WAMHlO,IAAe/qe,GAAW+qe,EAAWn0d,KACrCjZ,SAASuuB,eAAe2jd,EAAMoJ,WAAW96e,QAAQyY,GAAK,sBAAsBzX,YAAY4re,GANxFA,GACApte,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,sBAAsBzX,YAAY4re,IASxF5te,KAAK2hhB,aAKL,IAJA,IAAI1ngB,EAAW,CACX1H,KAAM,GAAIwQ,QAAQ,EAAO3I,KAAM08d,GAAqBj8d,KAAM,GAAIkiD,WAAY,GAAIqxa,UAAWpue,KAAKoue,WAE9FiwB,EAAgBr+f,KAAKu2f,aAAav2f,KAAK0ye,MAAM4c,eACxCtxf,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIime,EAAS1ge,EAAGvF,GACXime,EAAOs6B,eAAkBt6B,EAAO/ma,UAGT,cAAxBw1a,EAAMyC,eAAiClR,EAAO/ma,QAC9CriD,EAAO7a,KAAKs2f,YAAY5jB,EAAOzO,EAAQo6B,GAEV,eAAxB3rB,EAAMyC,eAAkClR,EAAO/ma,SAA+B,OAApBkhc,EAAUhnd,QACzEv8B,EAAO,IAAImve,GAAU/lB,EAAOtoZ,OAAOyib,EAAUhnd,MAAM58B,OAAQypd,IAK3Dppd,IACK63d,EAAMpze,UAIP2a,EAASY,KAAKjZ,KAAK,CAAEm6e,OAAQlhe,EAAKu8B,MAAM71B,EAAGuue,OAAQj1e,EAAKu8B,MAAM9gC,EAAGytd,YAAalpd,EAAKopd,OAAOzpd,MACtFo2f,WAAY/1f,EAAKopd,OAAO7pd,KAAM4pd,WAAYnpd,EAAKu8B,MAAM58B,MAAOwogB,UAAWnogB,EAAKu8B,MAAM7kC,OACtF0H,EAAS8iD,WAAa/8D,KAAKuihB,WAAW1ngB,GACtC7a,KAAK20f,cAAc/yf,KAAKiZ,GACxBZ,EAAS1H,KAAK3Q,KAAK5B,KAAK8ihB,eAAejogB,IACvC4ogB,EAAqC,cAAzB5ogB,EAAKopd,OAAO5rX,UAA4Bq6X,EAAMtgY,QAAQi7X,OAAUo2C,EAAW5ogB,GARvF7a,KAAK0jhB,qBAAqB7ogB,EAAM4pN,EAASzkO,KAAK8ihB,eAAejogB,GAAO7a,KAAKuihB,WAAW1ngB,GAAO6lgB,KAmBnGhuC,EAAMpze,UAAYub,GAClB7a,KAAK2jhB,2BAA2B1pgB,EAAUwpgB,EAAU/C,EAAahuC,EAAOjuQ,GAExEzkO,KAAK20f,cAAc93f,OAAS,EAC5BmD,KAAKqpT,cAAcqpL,EAAOjuQ,EAASzkO,KAAK4jhB,qBAAoD,IAA9B5jhB,KAAK20f,cAAc93f,OAAemD,KAAK20f,cAAc,GAAG1wB,OAAOj7D,SAAW,KAAM,KAAMhpa,KAAKyihB,aAAczihB,KAAKmjhB,iBAAiBnjhB,KAAK20f,cAAc,IAAKjiB,EAAMyrB,qBAAqBjW,eAAgBw4B,EAAa1ghB,KAAK0ye,MAAMtgY,QAAQ9mF,SAAWtrB,KAAKojhB,gBAAgBvogB,GAAQ,KAAM7a,KAAK0ye,MAAMtgY,QAAQ9mF,SAAWrR,EAASqR,SAAW,IAE3XtrB,KAAK6C,WAAW7C,KAAKgB,QAAQyY,GAAK,kBACvCzZ,KAAK6C,WAAW7C,KAAKgB,QAAQyY,GAAK,iBAAiBmc,aAAa,IAAK,KAG7E2zR,EAAQrtT,UAAUynhB,2BAA6B,SAAU1pgB,EAAUm9B,EAAOspe,EAAahuC,EAAOjuQ,GAC1F,IAAI1kO,EAAQC,KACR+se,EAAW,CACXhqd,QAAQ,EAAO3I,KAAM08d,GAAqBvke,KAAM0H,EAAS1H,KAAMwqD,WAAY9iD,EAAS8iD,WACpFqxa,UAAWn0d,EAASm0d,UACpBvzd,KAAMZ,EAASY,MAEfgpgB,EAAsB,SAAU92C,GAC3BA,EAAShqd,OAQV29f,EAAY9+gB,KAAKw1C,IAPjBr3C,EAAMwS,KAAOw6d,EAASx6d,KACtBxS,EAAMg9D,WAAagwa,EAAShwa,WAC5Bh9D,EAAMgjhB,eAAe3re,EAAOr3C,EAAM2ye,OAClCt7b,EAAQ,KACRr3C,EAAMspT,cAAcqpL,EAAOjuQ,EAAS1kO,EAAM6jhB,qBAAsB,KAAM,KAAM7jhB,EAAM0ihB,aAAc1ihB,EAAMojhB,iBAAiBpjhB,EAAM40f,cAAc,IAAKjiB,EAAMyrB,qBAAqBjW,eAAgBw4B,KAMnMmD,EAAoB1nhB,KAAK6D,KAAMo3C,EAAOspe,GACtC1ghB,KAAK0ye,MAAM3od,QAAQ+sd,GAAqB/J,EAAU82C,IAEtDt6N,EAAQrtT,UAAUwnhB,qBAAuB,SAAUtse,EAAOqtL,EAASyqQ,EAAgBnya,EAAY2jd,GAC3F,IAAI3ghB,EAAQC,KACR+se,EAAW,CACXhqd,QAAQ,EAAO3I,KAAM+8d,GAAe5ke,KAAM28d,EAAgBnya,WAAYA,EACtE3lB,MAAOA,EAAMA,MAAO6sb,OAAQjke,KAAK0ye,MAAMpze,SAAW,GAAK83C,EAAM6sb,OAAQmK,UAAWpue,KAAKoue,UACrFvzd,KAAM,CAAEkhe,OAAQ3kc,EAAMA,MAAM71B,EAAGuue,OAAQ14c,EAAMA,MAAM9gC,EAAGytd,YAAa3sb,EAAM6sb,OAAOzpd,MAAOo2f,WAAYx5d,EAAM6sb,OAAO7pd,KAC5G4pd,WAAY5sb,EAAMA,MAAM58B,MAAOwogB,UAAW5re,EAAMA,MAAM7kC,OAE1DuxgB,EAAuB,SAAU/2C,GAC5BA,EAAShqd,OAaV29f,EAAY9+gB,KAAKw1C,IAZS,kBAAtBA,EAAM6sb,OAAO94d,OACbpL,EAAM4hhB,cACI,GAEd5hhB,EAAM24E,cAAgB34E,EAAM24E,cAAc5mD,OAAOi7c,EAASx6d,MAC1DxS,EAAMwS,KAAOxS,EAAM24E,cACnB34E,EAAMg9D,WAAagwa,EAAShwa,WAC5Bh9D,EAAMgjhB,eAAe3re,EAAOr3C,EAAM2ye,OAClC3ye,EAAM40f,cAAc/yf,KAAKw1C,GACzBA,EAAQ,OAMhB0se,EAAqB3nhB,KAAK6D,KAAMo3C,EAAOspe,GACvC1ghB,KAAK0ye,MAAM3od,QAAQotd,GAAepK,EAAU+2C,GACxC/2C,EAASzhd,WACTtrB,KAAK0ye,MAAMtgY,QAAQ9mF,SAAWyhd,EAASzhd,WAG/Ci+R,EAAQrtT,UAAU0nhB,mBAAqB,WACnC,IAAI9nC,EAAa97e,KAAK0ye,MAAMoJ,WAC5B,GAAIA,EAAY,CACa,IAArB97e,KAAKuS,KAAK1V,QACVmD,KAAKuS,KAAK3Q,KAAK,IAEnB,IAAImihB,EAAgBjoC,EAAW6wB,qBAAuB7wB,EAAWioC,cAAgB,EAC7E/ihB,EAAUR,SAASuuB,eAAe+sd,EAAW96e,QAAQyY,GAAK,eAC1D0of,EAAmC,KAArBrmB,EAAW10V,MAAepmJ,EAAQqhC,wBAAwBsN,OAAS,GAAK,EAC1F,OAAO,IAAIyvc,GAAcp/e,KAAK0ye,MAAMyrB,qBAAqBjW,eAAe3me,EAAI,EAAGvhB,KAAK0ye,MAAMyrB,qBAAqBjW,eAAe5xe,EAAIytgB,EAAgB,EAAI5hB,GAGtJ,OAAInigB,KAAK20f,cAAc93f,OAAS,EACrB,IAAIuif,GAAcp/e,KAAKyhhB,OAAQzhhB,KAAK0hhB,QAGpC1hhB,KAAKkjhB,kBAAkBljhB,KAAK20f,cAAc,KAI7DprM,EAAQrtT,UAAUmnhB,eAAiB,SAAUxogB,GAMzC,OALe7a,KAAKiqf,UAAY,EAAIpve,EAAKu8B,MAAMs/c,gBAAgB12f,KAAKiqf,UAAY,GAC5E,CACI1oe,EAAG1G,EAAKu8B,MAAMw+c,QAAQ,GAAGr0e,EAAK1G,EAAKu8B,MAAMw+c,QAAQ,GAAGlmd,MAAQ,EAC5Dp5B,EAAGuE,EAAKu8B,MAAMw+c,QAAQ,GAAGt/e,EAAKuE,EAAKu8B,MAAMw+c,QAAQ,GAAGjmd,OAAS,IAIzE45Q,EAAQrtT,UAAUsmhB,cAAgB,SAAUpre,EAAO6sb,EAAQj5d,EAAQ60H,EAAOF,GAGtE,IAFA,IAAI16H,EACA+mY,EACKhuY,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKm6C,GAAQp5C,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIkmK,EAAY3gK,EAAGvF,GACnBiH,EAAM,IAAIL,OAAO,WAAkBs/J,EAAY,IAAK,MACpDl5J,EAASA,EAAOtO,QAAQuI,EAAIrH,OAAQoC,KAAKwjhB,iBAAiBpse,EAAsB,eAAfnyC,EAAIrH,OAA0BiiI,EAAQF,EAAOukC,EAA0B,eAAfj/J,EAAIrH,OAAyC,kBAAfqH,EAAIrH,QACxI,kBAAfqH,EAAIrH,QACW,mBAAfqH,EAAIrH,QACW,iBAAfqH,EAAIrH,QACW,eAAfqH,EAAIrH,QACW,qBAAfqH,EAAIrH,QACW,qBAAfqH,EAAIrH,QACW,sBAAfqH,EAAIrH,QACW,2BAAfqH,EAAIrH,QACW,2BAAfqH,EAAIrH,QACW,oBAAfqH,EAAIrH,SAEZ,IAAK,IAAIm3B,EAAK,EAAGI,EAAKj3B,OAAOjB,KAAKiB,OAAOsnE,eAAey+Z,IAAUlvc,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAChFmvI,EAAY/uI,EAAGJ,GACnB9vB,EAAM,IAAIL,OAAO,YAAmBs/J,EAAY,IAAK,MACrD8nO,EAAYi4F,EAAO//T,GACnBl5J,EAASA,EAAOtO,QAAQuI,EAAIrH,OAAQouY,GAExC,OAAOhhY,GAEXu+S,EAAQrtT,UAAUsnhB,iBAAmB,SAAUpse,EAAOrL,EAAMm4H,EAAW8/W,EAAUC,GAC7E,IAAIj4I,EACA06G,EACAlqf,EAeJ,MAduB,aAAnBuvC,EAAK8nc,WAA4BmwC,EAEjCh4I,GADA06G,EAAoB36c,EAAKkqc,aAAqD,OAAtClqc,EAAKkqc,YAAYrze,MAAM,YAC/BmpC,EAAKkqc,YAAYv5e,QAAQ,UAAWqvC,EAAK/gC,OAAOosC,EAAM8sH,KAClFn4H,EAAK/gC,OAAOosC,EAAM8sH,IAEjB+/W,IAAa7mhB,YAAkBg6C,EAAM8sH,KAC1CwiV,EAAoB36c,EAAKkqc,aAAqD,OAAtClqc,EAAKkqc,YAAYrze,MAAM,WAC/DpG,EAAsB,aAAd0nK,EAA2Bn4H,EAAK/gC,OAAOosC,EAAM8sH,GAAWlkK,KAAKiqf,UAAY,IAC7El+c,EAAK/gC,OAAOosC,EAAM8sH,IACtB8nO,EAAY06G,EAAoB36c,EAAKkqc,YAAYv5e,QAAQ,UAAWF,GAASA,GAG7EwvY,EAAY50V,EAAM8sH,GAEf8nO,GAEXziF,EAAQrtT,UAAU0zT,UAAY,SAAU8iL,EAAOzO,GAC3C,GAAIA,EAAOigD,cACP,MAA0B,OAAtBjgD,EAAO0iB,YAA2C,cAApB1iB,EAAO5rX,SAC9Br4G,KAAKmkhB,0BAA0BlgD,EAAQyO,EAAOA,EAAMtgY,QAAQpnG,QAEhEi5d,EAAOigD,cAElB,IAAKjgD,EAAOigD,eAAiBxxC,EAAMtgY,QAAQpnG,OACvC,MAA0B,OAAtBi5d,EAAO0iB,YAA2C,cAApB1iB,EAAO5rX,SAC9Br4G,KAAKmkhB,0BAA0BlgD,EAAQyO,EAAOA,EAAMtgY,QAAQpnG,QAEhE0ne,EAAMtgY,QAAQpnG,OAEzB,IAAIo5gB,EAAyB,cAAhBngD,EAAO94d,KAAwB,oCAAgD,aACxFH,EAAU0ne,EAAMtgY,QAAQi7X,OAAiB,iBAAR+2C,EACrC,OAAQngD,EAAO0iB,YACX,IAAK,KAID,MAHwB,cAApB1iB,EAAO5rX,UACPr4G,KAAKmkhB,0BAA0BlgD,EAAQyO,EAAOA,EAAMtgY,QAAQpnG,QAEzDA,EAAS,OAA0B,WAAhBi5d,EAAO94d,KAAqB,iDAClD,qBACR,IAAK,UACD,OAAOH,EAAU,iEACrB,IAAK,mBACD,OAAOA,EAAS,mIAEpB,IAAK,UACD,OAAOA,EAAS,SAAWhL,KAAKiqf,UAAY,EAAI,sCAC5C,6LAGR,QAAS,MAAO,KAGxB1gM,EAAQrtT,UAAUiohB,0BAA4B,SAAUlgD,EAAQyO,EAAO1ne,GAQnE,MAN0B,OAAtBi5d,EAAO0iB,WACG1iB,EAAO7pd,KAAO,uBAGdpP,GAOlBu+S,EAAQrtT,UAAUuigB,wBAA0B,SAAU5jf,GAClD,IAAK,IAAI7c,EAAK,EAAGmsS,EAAStvR,EAAM7c,EAAKmsS,EAAOttS,OAAQmB,IAAM,CACtD,IAAIw9C,EAAO2uP,EAAOnsS,GAClB+9C,GAAc/7C,KAAKgB,QAAQyY,GAAK,WAAa+hC,EAAKyob,OAAOzpd,MACrD,UAAYghC,EAAKpE,MAAM58B,MAAQ,cAEnCxa,KAAK0ye,MAAM4qB,cACXt9f,KAAK0ye,MAAM4qB,aAAamB,0BAE5Bz+f,KAAK40f,eAAiB,IAK1BrrM,EAAQrtT,UAAU2+B,cAAgB,WAI9B,MAAO,WAQX0uR,EAAQrtT,UAAUif,QAAU,aAKrBouS,EA7iBkB,CA8iB3Bw2N,ICrkBE1hf,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzC4lf,GAA8B,SAAUllf,GAExC,SAASklf,IACL,OAAkB,OAAXllf,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA4L/D,OA9LAq+B,GAAUgmf,EAAcllf,GAOxBklf,EAAanohB,UAAUoohB,8BAAgC,SAAUv4e,EAAMywC,EAAMt/E,EAAOyb,EAAKshe,QACrE,IAAZA,IAAsBA,GAAU,GACpC,IAKI13e,EAJAqrN,EAAY,IAAIzkN,KAAKjM,GACrB2wN,EAAU,IAAI1kN,KAAKwP,GAEnB4rgB,EAAah9gB,KAAKgH,KAAKq/M,EAAUvrM,UAAYwrM,EAAQxrM,WAJ5C,OAQb,OAFA0pB,EAAKy4e,mBAAqBz4e,EAAK04e,aACpB14e,EAAK04e,cAEZ,IAAK,QACDlihB,EAAWvC,KAAK2ye,6BAA6B5mc,EAAMw4e,EAAY,IAAK/nc,GACpE,MACJ,IAAK,UACDj6E,EAAWvC,KAAK2ye,6BAA6B5mc,EAAOw4e,EAAY,IAAO,EAAG/nc,GAC1E,MACJ,IAAK,SACDj6E,EAAWvC,KAAK2ye,6BAA6B5mc,EAAMw4e,EAAY,GAAI/nc,GACnE,MACJ,IAAK,QACDj6E,EAAWvC,KAAK2ye,6BAA6B5mc,EAAMw4e,EAAY,EAAG/nc,GAClE,MACJ,IAAK,OACDj6E,EAAWvC,KAAK2ye,6BAA6B5mc,EAAMw4e,EAAW/nc,GAC9D,MACJ,IAAK,QACDj6E,EAAWvC,KAAK2ye,6BAA6B5mc,EAAkB,GAAZw4e,EAAgB/nc,GACnE,MACJ,IAAK,UACDj6E,EAAWvC,KAAK2ye,6BAA6B5mc,EAAkB,GAAZw4e,EAAiB,GAAI/nc,GACxE,MACJ,IAAK,UACDj6E,EAAWvC,KAAK2ye,6BAA6B5mc,EAAkB,GAAZw4e,EAAiB,GAAK,GAAI/nc,GAC7E,MACJ,IAAK,OAED,OADAj6E,EAAWvC,KAAK2ye,6BAA6B5mc,EAAMw4e,EAAY,IAAK/nc,KACpD,GACZzwC,EAAKy4e,mBAAqB,QACnBjihB,IAEXA,EAAWvC,KAAK2ye,6BAA6B5mc,EAAOw4e,EAAY,IAAO,EAAG/nc,KAC1D,IAAMy9Z,GAClBluc,EAAKy4e,mBAAqB,UACnBjihB,IAEXA,EAAWvC,KAAK2ye,6BAA6B5mc,EAAMw4e,EAAY,GAAI/nc,KACnD,GACZzwC,EAAKy4e,mBAAqB,SACnBjihB,IAEXA,EAAWvC,KAAK2ye,6BAA6B5mc,EAAMw4e,EAAY,EAAG/nc,KAClD,IAAMy9Z,GAClBluc,EAAKy4e,mBAAqB,QACnBjihB,IAEXA,EAAWvC,KAAK2ye,6BAA6B5mc,EAAMw4e,EAAW/nc,KAC9C,GACZzwC,EAAKy4e,mBAAqB,OACnBjihB,IAEXA,EAAWvC,KAAK2ye,6BAA6B5mc,EAAkB,GAAZw4e,EAAgB/nc,KACnD,GACZzwC,EAAKy4e,mBAAqB,QACnBjihB,IAEXA,EAAWvC,KAAK2ye,6BAA6B5mc,EAAkB,GAAZw4e,EAAiB,GAAI/nc,KACxD,GACZzwC,EAAKy4e,mBAAqB,UACnBjihB,IAEXA,EAAWvC,KAAK2ye,6BAA6B5mc,EAAkB,GAAZw4e,EAAiB,GAAK,GAAI/nc,GAC7EzwC,EAAKy4e,mBAAqB,UACnBjihB,GAEf,OAAOA,GAQX8hhB,EAAanohB,UAAUwohB,YAAc,SAAU34e,EAAMm/Y,EAAcvwR,EAAer7J,GAC9E,IAAI4L,EACAu5gB,EAAe14e,EAAKy4e,mBACxB,OAAIz4e,EAAK7gC,SACE6gC,EAAK7gC,UAEK,UAAjBu5gB,EAEIv5gB,EADA5L,EACWysC,EAAKkuc,SAAWluc,EAAK8nc,UAA2B,KAAa,IAG7D9nc,EAAKkuc,QAA+B,aAAnBluc,EAAK8nc,WAA4B9nc,EAAKmuc,oBAAuB,IAAM,OAAU,IAGvF,YAAjBuqC,EACLv5gB,EAAW5L,EAAW,IAAM,OAEN,WAAjBmlhB,EACDnlhB,GACWysC,EAAKkuc,QAAhB/ue,EAA0B,KAG1BA,EAAW6gC,EAAKkuc,QAAU,OAAS,MAIvC/ue,EADsB,UAAjBu5gB,EACMnlhB,EAAW,IAAM,MAEN,SAAjBmlhB,EACDnlhB,EACW,IAGAysC,EAAKkuc,QAAUj6e,KAAK2khB,aAAa54e,EAAMm/Y,EAAcvwR,GAAiB,OAG/D,UAAjB8pX,EACDnlhB,EACW,IAGAysC,EAAKkuc,QAA8B,aAAnBluc,EAAK8nc,UAA2B,KAAO,MAAS,IAGzD,YAAjB4wC,EACDnlhB,EACW,IAGAysC,EAAKkuc,QAAU,MAAQ,KAIlC36e,EACW,IAGAysC,EAAKkuc,QAAU,MAAQ,MAGnC/ue,IASXm5gB,EAAanohB,UAAU0ohB,eAAiB,SAAU74e,EAAMm/Y,EAAcvwR,GAClE,OAAS,IAAIxxJ,KAAK+hb,GAAc/jb,gBAAkB,IAAIgC,KAAKwxJ,GAAexzJ,cACrE4kC,EAAKmuc,oBAAsB,MAAQ,QAAW,SASvDmqC,EAAanohB,UAAUyohB,aAAe,SAAU54e,EAAMm/Y,EAAcvwR,GAChE,MAA2B,aAAnB5uH,EAAK8nc,UACP,IAAI1qe,KAAK+hb,GAAcjkb,aAAe,IAAIkC,KAAKwxJ,GAAe1zJ,WAAc,OACzE8kC,EAAKmuc,oBAAsB,IAAM,MAAU,OAUxDmqC,EAAanohB,UAAU2ohB,kBAAoB,SAAU94e,EAAMm/Y,EAAcvwR,GACrE,IAAIs7U,EAAclqc,EAAKkqc,YAAclqc,EAAKkqc,YAAc,GAIxD,OAHIlqc,EAAKkuc,SAAYluc,EAAK7gC,UAAwC,WAA5B6gC,EAAKy4e,oBAAoCvuC,IAC3EA,EAAiC,aAAnBlqc,EAAK8nc,UAA2B7ze,KAAK4khB,eAAe74e,EAAMm/Y,EAAcvwR,GAAiB,QAEpGs7U,GAEJouC,EA/LuB,CAgMhC5xC,ICvNEp0c,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAqBzCqmf,GAA0B,SAAU3lf,GAOpC,SAAS2lf,EAASpyC,GACd,OAAOvzc,EAAO79B,KAAKtB,KAAM0ye,IAAU1ye,KAiGvC,OAxGAq+B,GAAUymf,EAAU3lf,GAcpB2lf,EAAS5ohB,UAAU43e,0BAA4B,SAAUt3Z,EAAMzwC,GAC3D/rC,KAAK+ze,eAAehoc,GACpB/rC,KAAKoze,eAAernc,EAAMywC,GAC1Bx8E,KAAKg0e,kBAAkBjoc,EAAMywC,GAC7Bx8E,KAAKi0e,uBAAuBloc,IAOhC+4e,EAAS5ohB,UAAUk3e,eAAiB,SAAUrnc,EAAMywC,GAChDx8E,KAAKqze,sBAAsBtnc,GAE3BA,EAAKwnc,YAAc,GACdxnc,EAAKxpC,SAINwpC,EAAKwnc,YAAYhxe,SAAWgF,KAAKu3D,KAAK/yB,EAAKxpC,UAH3CwpC,EAAKwnc,YAAYhxe,SAAWgF,KAAK8L,IAAI,EAAG9L,KAAKC,MAAMukC,EAAKync,YAAYhyX,MAAQqxX,GAA+Br2Z,EAAMzwC,KAKrHA,EAAKwnc,YAAYnge,IAAM24B,EAAKync,YAAYt2e,MACxC6uC,EAAKwnc,YAAYlge,IAAM04B,EAAKync,YAAY76d,IACxCozB,EAAKwnc,YAAY/xX,MAAQz1E,EAAKync,YAAYhyX,OAO9Csja,EAAS5ohB,UAAU83e,kBAAoB,SAAUjoc,EAAMywC,GACnD,IAAIwgS,EAAiC,iBAAxBjxU,EAAK00c,gBAAkE,eAA7Bzgf,KAAK0ye,MAAMyC,cAAkC,GAAM,EACtGn4H,EAAQ,GACRjxU,EAAKwnc,YAAYnge,KAAO4pW,EACxBjxU,EAAKwnc,YAAYlge,KAAO2pW,GAGxBjxU,EAAKwnc,YAAYlge,KAAO04B,EAAKwnc,YAAYlge,IAAM,EAAI,GAEvD04B,EAAKync,YAAc,IAAIlB,GAAYvmc,EAAKwnc,YAAYnge,IAAK24B,EAAKwnc,YAAYlge,KAC1E04B,EAAKwnc,YAAY/xX,MAAQz1E,EAAKync,YAAYhyX,MAC1CxhH,KAAKk1e,sBAAsB14Z,EAAMzwC,IAOrC+4e,EAAS5ohB,UAAU+3e,uBAAyB,SAAUloc,GAElDA,EAAK4pc,cAAgB,GACrB,IACIC,EAIA7nc,EALA8nc,EAAetue,KAAKu3D,KAAK/yB,EAAK8oc,aAAazhe,KAQ/C,KANI24B,EAAKspc,WAAa,GAAKtpc,EAAKupc,aAAe,KAC3CO,EAAe9pc,EAAK8oc,aAAazhe,IAAO24B,EAAK8oc,aAAazhe,IAAM24B,EAAK8oc,aAAatye,UAGtFwpC,EAAKoqc,WAAapqc,EAAK4/O,OAAOpkR,KAAKooI,MAAM5jG,EAAK8oc,aAAazhe,MAC3D24B,EAAKqqc,SAAWrqc,EAAK4/O,OAAOpkR,KAAKC,MAAMukC,EAAK8oc,aAAaxhe,MAClDwie,GAAgB9pc,EAAK8oc,aAAaxhe,IAAKwie,GAAgB9pc,EAAK8oc,aAAatye,SAC5Eqze,EAAct3e,YAAO,GAAIjC,YAAS,aAAc0vC,EAAK6pc,YAAa,MAAM,GACpES,GAAOR,EAAc9pc,EAAK8oc,eAAiB9oc,EAAK4/O,OAAO9uR,OAAS,IAChEkxC,EAAWxmC,KAAKooI,MAAMkmW,GACtBS,GAAmBt2e,KAAK0ye,MAAO3kc,EAAUhC,EAAK4/O,OAAO59O,GAAYhC,EAAK4/O,OAAO59O,GAAU5gC,WAAa4gC,EAAS5gC,WAAYyoe,EAAY7pc,IAGzIA,EAAKyqc,kBACLzqc,EAAKyqc,iBAAiBx2e,KAAK0ye,QAMnCoyC,EAAS5ohB,UAAU2+B,cAAgB,WAI/B,MAAO,YAQXiqf,EAAS5ohB,UAAUif,QAAU,aAKtB2pgB,EAzGmB,CA0G5BT,ICrHEU,GAA+B,WAC/B,SAASA,EAAc90c,GACnBjwE,KAAKiwE,QAAUA,EAgdnB,OAzcA80c,EAAc7ohB,UAAU8ohB,aAAe,WACnC,IAAIC,EAIAthf,EAHA3P,EAAQxzB,SAASuuB,eAAe/uB,KAAK24gB,SACrCptgB,EAAU,KAGV25gB,EAAmBllhB,KAAKiwE,QAAQi1c,iBAChCC,EAAmBnlhB,KAAKiwE,QAAQk1c,iBACpC,GAAI/nhB,YAAkB42B,IAA+B,SAArBkxf,GAAoD,SAArBC,EAA6B,EACxFnxf,EAAQxzB,SAASW,cAAc,UACzBy0B,aAAa,KAAM51B,KAAK24gB,SAC9B,IAAK,IAAI36gB,EAAK,EAAGuF,EAAKvD,KAAKiwE,QAAQq/a,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CACpE,IAAIime,EAAS1ge,EAAGvF,GACZsxf,EAAgBtvf,KAAKiwE,QAAQq/a,cAAcrrB,EAAOzpd,QAClDxa,KAAKiwE,QAAQq/a,cAAcrrB,EAAOzpd,OACtC,KAAMpd,YAAkB8nhB,KAAsB9nhB,YAAkB+nhB,MACtC,SAArBD,GAAoD,SAArBC,GAA8B,CAC9D,IAAI5+I,EAAcvmY,KAAK24gB,QAAQx6gB,QAAQ,aAAe,EAAIgnhB,EAAmBD,EAC7E,GAA2B,QAAvB51B,EAAcnkf,MAAyC,WAAvBmkf,EAAcnkf,MACvB,YAAvBmkf,EAAcnkf,KACd,IAAK,IAAIvO,EAAI,EAAGA,EAAI0yf,EAAc3za,OAAO9+E,OAAQD,IAC7C+mC,EAAU2rd,EAAc3rd,QAExBp4B,EAAU,UADHvL,KAAKuL,QAAQvL,KAAKiwE,QAAUq/a,EAAc3za,OAAO/+E,GAAI+4E,MAAOsuZ,EAAOzpd,MAAO+rX,EAAa5iW,GACjE,SAG5B2rd,EAAcnkf,OACnBw4B,EAAU2rd,EAAc3rd,QAExBp4B,EAAU,UADHvL,KAAKuL,QAAQvL,KAAKiwE,QAASq/a,EAAcuJ,SAAU50B,EAAOzpd,MAAO+rX,EAAa5iW,GACxD,KAGrCshf,EAAchhD,EAAOmhD,gBAAkBplhB,KAAK24gB,QAAU,WAAa10C,EAAOzpd,MAAnCxa,KACnCA,KAAK24gB,QAAU,WAAa10C,EAAOzpd,MAAQ,MAC/CjP,EAAWA,EAAQpN,QAAQ,SAAW,EAAK,KAAOoN,EAClDyoB,EAAM5xB,WAAa6he,EAAOmhD,eAAiB,GAAK,IAAMH,EAAc15gB,EAExEyoB,EAAM5xB,WAAa,IAAMpC,KAAKqlhB,WAAX,oBACnB7khB,SAASgiC,KAAKxgC,YAAYgyB,KAgClC+wf,EAAc7ohB,UAAUqP,QAAU,SAAUmne,EAAO/8Z,EAAOn7D,EAAO+rX,EAAa5iW,GAC1E,IAAI+xC,EAAkB,UAClBszb,EAAMt2B,EAAMlG,UACZ84C,EAAc,GACdC,EAAe,CACf,GAAM7yC,EAAM1xe,QAAQyY,GAAK,IAAM8sX,EAAzBmsG,cAA4Dl4d,EAAO,aAAgB,kBAIzFk1B,EAAQ,GACRC,EAAS,GASb,OAAQ42V,GACJ,IAAK,OACDg/I,EAAsB,OAAIA,EAAqB,MAVtC,EAWTA,EAAqB,MAXZ,EAYTD,EAAY,GAAK,CACb,EAAK,EAAG,EAAK,EAAG,MAAS,EAAG,OAAU,EAAG,UAAa,iBACtD,KAAQ5vc,EAAiB,QAAW/xC,EAAS,KAAQ,QAEzD2hf,EAAY,GAAK,CACb,GAAM,EACN,GAAM,EACN,EAAK,EACL,eAAgB,EAChB,KAAQ3vc,EACR,KAAQ,UAEZ,MACJ,IAAK,SACD4vc,EAAsB,OAAI,SAC1BA,EAAqB,MAAI,SACzBD,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAAS,OAAQ,OAAU,OAC3D,UAAa,iBAAkB,KAAQ5vc,EAAiB,QAAW/xC,GAEvE2hf,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,4LAA6L,eAAgB,EAAG,OAAU3vc,EAAO,KAAQA,GAElQ,MACJ,IAAK,aACD4vc,EAAsB,OAAIA,EAAqB,MAAI71e,EACnD41e,EAAY,GAAK,CACb,EAAK,EAAG,EAAK,EAAG,MAAS51e,EAAO,OAAUA,EAAO,KAAQgmC,EAAiB,QAAW/xC,EACrF,KAAQ,QAEZ2hf,EAAY,GAAK,CAAE,EAAK,EAAG,EAAK,EAAG,MAAS,EAAG,OAAU,EAAG,KAAQ3vc,EAAO,QAAWhyC,EAAS,KAAQ,QACvG2hf,EAAY,GAAK,CAAE,EAAK,EAAG,EAAK,EAAG,MAAS,EAAG,OAAU,EAAG,KAAQ3vc,EAAO,QAAWhyC,EAAS,KAAQ,QACvG,MACJ,IAAK,aACD4hf,EAAsB,OAAIA,EAAqB,MAAI,IACnDD,EAAY,GAAK,CACb,EAAK,EAAG,EAAK,EAAG,MAAS,EAAG,OAAU,EAAG,UAAa,iBACtD,KAAQ5vc,EAAiB,QAAW/xC,EAAS,KAAQ,QAEzD2hf,EAAY,GAAK,CACb,EAAK,qBACL,eAAgB,EAChB,OAAU3vc,EACV,KAAQ,QAEZ,MACJ,IAAK,kBACD4vc,EAAsB,OAAIA,EAAqB,MA3DtC,EA4DTD,EAAY,GAAK,CACb,EAAK,EAAG,EAAK,EAAG,MA7DX,EA6DgC,OA7DhC,EA6DsD,UAAa,iBACxE,KAAQ5vc,EAAiB,QAAW/xC,EAAS,KAAQ,QAEzD2hf,EAAY,GAAK,CACb,EAAK,wCACL,eAAgB,EAChB,OAAU3vc,EACV,KAAQ,QAEZ,MACJ,IAAK,mBACD4vc,EAAsB,OAAIA,EAAqB,MAxEtC,EAyETD,EAAY,GAAK,CACb,EAAK,EAAG,EAAK,EAAG,MA1EX,EA0EgC,OA1EhC,EA0EsD,UAAa,iBACxE,KAAQ5vc,EAAiB,QAAW/xC,EAAS,KAAQ,QAEzD2hf,EAAY,GAAK,CACb,EAAK,wCACL,eAAgB,EAChB,OAAU3vc,EACV,KAAQ,QAEZ,MACJ,IAAK,OACD4vc,EAAsB,OAAIA,EAAqB,MArFtC,EAsFTD,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAvF3B,EAuFgD,OAvFhD,EAuFsE,UAAa,iBACxF,KAAQ5vc,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CACb,KAAQ,OACR,EAAK,2FACL,eAAgB,EAChB,OAAU3vc,GAEd,MACJ,IAAK,YACD4vc,EAAsB,OAAIA,EAAqB,MAjGpC,GAkGXD,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAnGzB,GAmGgD,OAnGhD,GAmGwE,UAAa,iBAC5F,KAAQ5vc,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,iFACrB,eAvGS,EAuGuB,oBAAqB51e,EAAO,OAAUimC,EAAO,KAAQA,GAEzF2vc,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,qEACrB,eA3GS,EA2GuB,oBAAqB51e,EAAO,OAAUimC,EAAO,KAAQA,GAEzF2vc,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,mEACrB,eA/GS,EA+GuB,oBAAqB51e,EAAO,OAAUimC,EAAO,KAAQA,GAEzF2vc,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,qEACrB,eAnHS,EAmHuB,oBAAqB51e,EAAO,OAAUimC,EAAO,KAAQA,GAEzF2vc,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,mEACrB,eAvHS,EAuHuB,oBAAqB51e,EAAO,OAAUimC,EAAO,KAAQA,GAEzF2vc,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,sEACrB,eA3HS,EA2HuB,oBAAqB51e,EAAO,OAAUimC,EAAO,KAAQA,GAEzF2vc,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,oEACrB,eA/HS,EA+HuB,oBAAqB51e,EAAO,OAAUimC,EAAO,KAAQA,GAEzF,MACJ,IAAK,OACD4vc,EAAsB,OAAIA,EAAqB,MAlIzC,GAmIND,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MApI9B,GAoIgD,OApIhD,GAoImE,UAAa,iBAClF,KAAQ5vc,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CACb,KAAQ,OACR,EAAK,yJACL,eAAgB,EAChB,OAAU3vc,EACV,KAAQA,GAEZ,MACJ,IAAK,WACD4vc,EAAsB,OAAIA,EAAqB,MAAI71e,EACnD41e,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAAS51e,EAAO,OAAUA,EAAO,UAAa,iBAC9E,KAAQgmC,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CACb,KAAQ,OACR,EAAK,oEACL,eAAgB,EAChB,OAAU3vc,EACV,KAAQA,GAEZ,MACJ,IAAK,SACD4vc,EAAsB,OAAIA,EAAqB,MA7JvC,EA8JRD,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MA/J5B,EA+JgD,OA/JhD,EA+JqE,UAAa,iBACtF,KAAQ5vc,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CACb,KAAQ,SACR,GAAM,MACN,GAAM,MACN,EAAK,MACL,eAAgB,EAChB,KAAQ3vc,GAEZ,MACJ,IAAK,OACD4vc,EAAsB,OAAIA,EAAqB,MA3KzC,GA4KND,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MA7K9B,GA6KgD,OA7KhD,GA6KmE,UAAa,iBAClF,KAAQ5vc,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CAAE,KAAQ,OAAQ,EAAK,iBAAkB,eA/KhD,EA+K6E,OAAU3vc,EAAO,KAAQA,GAChH2vc,EAAY,GAAK,CAAE,KAAQ,OAAQ,EAAK,kBAAmB,eAhLjD,EAgL8E,OAAU3vc,EAAO,KAAQA,GACjH2vc,EAAY,GAAK,CAAE,KAAQ,OAAQ,EAAK,kBAAmB,eAjLjD,EAiL8E,OAAU3vc,EAAO,KAAQA,GACjH2vc,EAAY,GAAK,CAAE,KAAQ,OAAQ,EAAK,mBAAoB,eAlLlD,EAkL+E,OAAU3vc,EAAO,KAAQA,GAClH,MACJ,IAAK,iBACD4vc,EAAsB,OAAIA,EAAqB,MAAI51e,EACnD21e,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAAS31e,EAAQ,OAAUA,EAAQ,UAAa,iBAChF,KAAQ+lC,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,iDAAkD,eAAgB,EACvF,OAAU3vc,EAAO,KAAQA,GAE7B,MACJ,IAAK,eACD4vc,EAAsB,OAAIA,EAAqB,MAAI51e,EACnD21e,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAAS31e,EAAQ,OAAUA,EAAQ,UAAa,iBAChF,KAAQ+lC,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,iDAAkD,eAAgB,EACvF,OAAU3vc,EAAO,KAAQA,GAE7B,MACJ,IAAK,YACD4vc,EAAsB,OAAIA,EAAqB,MAAI51e,EACnD21e,EAAY,GAAK,CAAE,KAAQ,OAAQ,MAAS31e,EAAQ,OAAUA,EAAQ,KAAQ+lC,EAAiB,QAAW/xC,GAC1G2hf,EAAY,GAAK,CAAE,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAAS,EAAG,OAAU,EAAG,KAAQ3vc,EAAO,QAAWhyC,GACtG2hf,EAAY,GAAK,CAAE,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAAS,EAAG,OAAU,EAAG,KAAQ3vc,EAAO,QAAWhyC,GACtG,MACJ,IAAK,MACD4hf,EAAsB,OAAIA,EAAqB,MAAI71e,EACnD41e,EAAY,GAAK,CAAE,KAAQ,OAAQ,MAAS,GAAI,OAAU,GAAI,KAAQ5vc,EAAiB,QAAW/xC,GAClG2hf,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,IAAK,EAAK,IAAK,MAAS51e,EAAO,OAAU,EAAG,KAAQimC,EACzE,QAAWhyC,GAEf,MACJ,IAAK,mBACD4hf,EAAsB,OAAI51e,EAC1B41e,EAAqB,MAAI71e,EACzB41e,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAAS51e,EAAO,OAAUC,EAC1D,UAAa,iBAAkB,KAAQ+lC,EAAiB,QAAW/xC,GAEvE2hf,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,iDAAkD,eAAgB,EACvF,OAAU3vc,EAAO,KAAQA,GAE7B,MACJ,IAAK,iBACD4vc,EAAsB,OAAI71e,EAC1B61e,EAAqB,MAAI51e,EACzB21e,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAAS31e,EAAQ,OAAUD,EAAO,UAAa,iBAC/E,KAAQgmC,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,iDAAkD,eAAgB,EACvF,OAAU3vc,EAAO,KAAQA,GAE7B,MACJ,IAAK,SACD4vc,EAAsB,OAAIA,EAAqB,MAhP1C,GAiPLD,EAAY,GAAK,CACb,KAAQ,OAAQ,EAAK,EAAG,EAAK,EAAG,MAlP/B,GAkPgD,OAlPhD,GAkPkE,UAAa,iBAChF,KAAQ5vc,EAAiB,QAAW/xC,GAExC2hf,EAAY,GAAK,CAAE,KAAQ,SAAU,GAAM,MAAO,GAAM,OAAQ,EAAK,MAAO,eAAgB,EAAG,KAAQ,WACvGA,EAAY,GAAK,CAAE,KAAQ,SAAU,GAAM,OAAQ,GAAM,KAAM,EAAK,MAAO,eAAgB,EAAG,KAAQ3vc,GACtG2vc,EAAY,GAAK,CACb,KAAQ,SAAU,GAAM,OAAQ,GAAM,MAAO,EAAK,MAAO,eAAgB,EACzE,KAAQ,WAIpB,IAAI3oB,EAAejqB,EAAMiqB,aAAejqB,EAAMtsM,SAC1C76R,EAAUoxf,EAAYz2B,cAAcq/C,EAAc,WAGtD,OAFAvlhB,KAAKwlhB,YAAY9yC,EAAO4yC,EAAa/5gB,EAASoxf,GAC9CqM,EAAIhngB,YAAYuJ,GACT,QAAUmne,EAAM1xe,QAAQyY,GAAK,IAAM8sX,EAAnC,cAA2E/rX,EAAQ,KAsB9FuqgB,EAAc7ohB,UAAUsphB,YAAc,SAAU9yC,EAAOpme,EAASf,EAASoxf,GACrE,IAAI//f,EACJ,IAAKA,EAAI,EAAGA,EAAI0P,EAAQzP,OAAQD,IAAK,CAEjC,IAAI02F,EAAOqpa,EAAYz2B,cAAc55d,EAAQ1P,GAAI0P,EAAQ1P,GAAGwd,MAC5D7O,EAAQvJ,YAAYsxF,KAW5Byxb,EAAc7ohB,UAAUuphB,cAAgB,SAAUC,EAAaC,GAC3D,OAAOD,EAAY5zf,OAAO6zf,IAO9BZ,EAAc7ohB,UAAU0phB,gBAAkB,SAAU/1O,GAChD,IAAKA,EACD,OAAO,EAIX,IAFA,IAAI3yO,GAAU,EACV2od,EAAe,GACV7nhB,EAAK,EAAG8nhB,EAAoBj2O,EAAiB7xS,EAAK8nhB,EAAkBjphB,OAAQmB,IAAM,CACvF,IAAIwc,EAAQsrgB,EAAkB9nhB,IACc,IAAxC6nhB,EAAa1nhB,QAAQqc,EAAMypd,SAC3B4hD,EAAajkhB,KAAK4Y,EAAMypd,QAGhC,IAAK,IAAI1ge,EAAK,EAAGwihB,EAAiBF,EAActihB,EAAKwihB,EAAelphB,OAAQ0G,IAAM,CAC1EiX,EAAQurgB,EAAexihB,GAC3B,GAAIvD,KAAKiwE,QAAQg0Z,OAAOzpd,GAAO0iD,QAAS,CACpCA,GAAU,EACV,OAGR,OAAOA,GAWX6nd,EAAc7ohB,UAAU8phB,YAAc,SAAUhlhB,EAASqtB,GACrD,IAAI43f,EAAmBjlhB,EAAQmuB,aAAa,UAAY,IAEX,KAD7C82f,GAA2C,KAArBA,EAA2B,IAAM,IAClC9nhB,QAAQkwB,IACzBrtB,EAAQ40B,aAAa,QAASqwf,EAAmB53f,IAYzD02f,EAAc7ohB,UAAUgqhB,eAAiB,SAAUllhB,EAASqtB,GACxD,IAAI43f,EAAmBjlhB,EAAQmuB,aAAa,UAAY,GACpD82f,EAAiB9nhB,QAAQkwB,IAAc,GACvCrtB,EAAQ40B,aAAa,QAASqwf,EAAiBvphB,QAAQ2xB,EAAW,MAQ1E02f,EAAc7ohB,UAAUiqhB,YAAc,SAAU5lhB,GAE5C,IADA,IAAIuwB,EAAW,GACNl0B,EAAI,EAAGA,EAAI2D,EAAO+tB,WAAWzxB,OAAQD,IACL,SAAjC2D,EAAO+tB,WAAW1xB,GAAGozB,SACrBc,EAASlvB,KAAKrB,EAAO+tB,WAAW1xB,IAGxC,OAAOk0B,GAEJi0f,EAldwB,GCV/B1mf,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAkCzCg0Q,GAA2B,SAAUtzQ,GAOrC,SAASszQ,EAAUigM,GACf,IAAI3ye,EAAQo/B,EAAO79B,KAAKtB,KAAM0ye,IAAU1ye,KACxCD,EAAMqmhB,YAAa,EACnBrmhB,EAAMsmhB,iBAAmB,GACzBtmhB,EAAMumhB,UAAY,EAClBvmhB,EAAMgke,YAAc,EACpBhke,EAAM+6D,OAAS,EACf/6D,EAAMwmhB,cAAgB,GACtBxmhB,EAAMitgB,YAAc,GACpBjtgB,EAAMymhB,oBAAsB,GAC5BzmhB,EAAM2ye,MAAQA,EACd3ye,EAAMqmS,SAAWssM,EAAMtsM,SACvB,IAAIjpR,EAAOu1d,EAAM0iB,cAGjB,OAFAr1f,EAAM0mhB,YAAc/zC,EAAMkmC,eAAkBz7f,EAAKhf,QAAQ,SAAW,EACpE4B,EAAMwpB,mBACCxpB,EAi3CX,OAt4CAs+B,GAAUo0Q,EAAWtzQ,GA0BrBszQ,EAAUv2S,UAAUqtB,iBAAmB,WACnC,KAAIvpB,KAAK0ye,MAAMv5c,aAAgBn5B,KAAK0ye,MAAMoJ,YAAc97e,KAAK0ye,MAAMoJ,WAAWqmC,WAA9E,CAGA,IAAIjqe,EAAc7xB,IAAQW,UAAY,eAAiB,aACvDhnB,KAAK0ye,MAAMp5d,GAAG+M,IAAQoC,eAAgBzoB,KAAK6xgB,UAAW7xgB,MACtDA,KAAK0ye,MAAMp5d,GAAG4+B,EAAal4C,KAAK0mhB,kBAAmB1mhB,MACnDA,KAAK0ye,MAAMp5d,GAAG,QAAStZ,KAAK2mhB,0BAA2B3mhB,MACvDA,KAAK0ye,MAAMp5d,GAAG+M,IAAQmC,gBAAiBxoB,KAAK4mhB,UAAW5mhB,MACvDA,KAAK0ye,MAAMp5d,GAAG+M,IAAQqC,cAAe1oB,KAAK0mhB,kBAAmB1mhB,QAKjEyyS,EAAUv2S,UAAU0qhB,UAAY,SAAU/lhB,GACtC,IAAI6xe,EAAQ1ye,KAAK0ye,MACbA,EAAM8rB,kBAA4C,SAAxB9rB,EAAM0iB,eAA4B1iB,EAAMghC,cAGlEhhC,EAAMkiC,cAAgBliC,EAAMzrd,SAAWjnB,KAAKq1f,aAC5Cr1f,KAAKwuC,UAAUkkc,EAAOA,EAAMyrB,qBAAqBjW,eAAgBxV,EAAM8hC,WAAY9hC,EAAMgiC,WAAY7zgB,IAM7G4xS,EAAUv2S,UAAUytB,oBAAsB,WAClC3pB,KAAK0ye,MAAMv5c,cAGfn5B,KAAK0ye,MAAM74d,IAAIwM,IAAQoC,eAAgBzoB,KAAK6xgB,WAC5C7xgB,KAAK0ye,MAAM74d,IAAI,eAAgC7Z,KAAK0mhB,mBACpD1mhB,KAAK0ye,MAAM74d,IAAI,QAAS7Z,KAAK2mhB,2BAC7B3mhB,KAAK0ye,MAAM74d,IAAIwM,IAAQmC,gBAAiBxoB,KAAK4mhB,WAC7C5mhB,KAAK0ye,MAAM74d,IAAIwM,IAAQqC,cAAe1oB,KAAK0mhB,qBAK/Cj0O,EAAUv2S,UAAU2qhB,qBAAuB,SAAUn0C,GACjD1ye,KAAK24gB,QAAUjmC,EAAM1xe,QAAQyY,GAAK,uBAClCzZ,KAAKqlhB,WAAa3yC,EAAM1xe,QAAQyY,GAAK,kBACrCzZ,KAAK8mhB,YAAcp0C,EAAM1xe,QAAQyY,GAAK,kBACtCzZ,KAAK+mhB,iBAAmBr0C,EAAM1xe,QAAQyY,GAAK,kBAC3CzZ,KAAKgnhB,eAAiBt0C,EAAM1xe,QAAQyY,GAAK,wBACzCzZ,KAAKinhB,YAAcv0C,EAAM1xe,QAAQyY,GAAK,iBACtCzZ,KAAKknhB,UAAYx0C,EAAM1xe,QAAQyY,GAAK,iBACpCzZ,KAAKqvgB,oBAAsB,GAC3BrvgB,KAAKq1f,WAAa,KAClBr1f,KAAKmnhB,aAAuC,WAAxBz0C,EAAM0iB,eAO9B3iN,EAAUv2S,UAAUozgB,gBAAkB,SAAU58B,GAC5C1ye,KAAK6mhB,qBAAqBn0C,GAC1B1ye,KAAKike,OAAS3le,YAAO,GAAIo0e,EAAM4c,cAAe,MAAM,GACpDtvf,KAAKglhB,eACLhlhB,KAAK04gB,YAAchmC,EAAM0iB,cACnB1iB,EAAM0iB,cAAcj3f,QAAQ,SAAW,GACzC6B,KAAKonhB,gBAAgB10C,EAAO1ye,KAAKylhB,cAAc/yC,EAAM28B,oBAAqBrvgB,KAAKqvgB,uBAGvF58N,EAAUv2S,UAAU6igB,cAAgB,SAAU96B,GAC1C,OAAIA,GACIjke,KAAK24gB,QAAQx6gB,QAAQ,aAAe,GAAkC,SAA7B6B,KAAK0ye,MAAM0iB,gBACpDp1f,KAAKqlhB,WAAaphD,EAAOojD,iBAAmBrnhB,KAAKqlhB,YAEjDrlhB,KAAK24gB,QAAQx6gB,QAAQ,aAAe,GAAkC,SAA7B6B,KAAK0ye,MAAMosB,gBACpD9+f,KAAKqlhB,WAAaphD,EAAOqjD,mBAAqBtnhB,KAAKqlhB,YAE/CphD,EAAOmhD,gBAAkBplhB,KAAK24gB,QAAU,WAAa10C,EAAOzpd,OAEjE,aAOXi4R,EAAUv2S,UAAUkrhB,gBAAkB,SAAU10C,EAAOprW,GACnD,IAAK,IAAItpI,EAAK,EAAGuphB,EAAYjgZ,EAAStpI,EAAKuphB,EAAU1qhB,OAAQmB,IAAM,CAC/D,IAAIwc,EAAQ+sgB,EAAUvphB,GACtBgC,KAAKstgB,iBAAiB9yf,EAAOk4d,EAAO1ye,KAAKwnhB,kBAAkB90C,EAAOl4d,GAAO,MAQjFi4R,EAAUv2S,UAAUsrhB,kBAAoB,SAAU90C,EAAOl4d,EAAO03W,QAC7C,IAAXA,IAAqBA,EAAS,IAClC,IAAIjxN,EAAYyxU,EAAM1xe,QAAQyY,GAAK,WAAae,EAAMypd,OAAtCyO,UAAgEl4d,EAAM48B,MAClF6sb,EAASyO,EAAMzO,OAAOzpd,EAAMypd,QAGhC,MAAO,CAACphe,GAFRo+J,GAAcgjU,EAAO+wB,cAAgC,YAAhB/wB,EAAO94d,MAAsC,WAAhB84d,EAAO94d,MACrE84d,EAAOjtE,OAAO95V,QAAY+jG,EAAY,UAAYixN,EAAUjxN,GAChB,cAAhBgjU,EAAO94d,MAAwB84d,EAAOjtE,OAAO95V,QAAWr6D,GAAWo+J,EAAY,KAAO,OAO1HwxI,EAAUv2S,UAAUurhB,mBAAqB,SAAU/0C,EAAOl4d,GAItD,IAHA,IACIktgB,EACAxqM,EAFAyqM,EAAW,GAGN3phB,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIime,EAAS1ge,EAAGvF,GACZime,EAAO/ma,UACP1iD,EAAQ,IAAI69D,GAAM4rZ,EAAOzpd,MAAOA,EAAM48B,OACtCuwe,EAAS/lhB,KAAK5B,KAAKwnhB,kBAAkB90C,EAAOl4d,GAAO,IACnDktgB,EAAc1nhB,KAAK++f,cAAcrsB,EAAM4c,cAAc90e,EAAMypd,SAC3D/mJ,EAAmB18U,SAASgB,iBAAiB,IAAMkmhB,GACnD1nhB,KAAK4nhB,sBAAsB1qM,EAAkBwqM,IACxCh1C,EAAMkmC,eAAiB17L,EAAiBrgV,OAAS,GAAKqgV,EAAiB,GAAGzjU,KAAOkugB,EAASA,EAAS9qhB,OAAS,GAAG4c,IAChHzZ,KAAK89J,gBAAgB40U,EAAOl4d,EAAMypd,OAAQ/mJ,EAAkBwqM,GAAa,IAIrF,OAAOC,GAOXl1O,EAAUv2S,UAAU0rhB,sBAAwB,SAAU1qM,EAAkB7uT,GAGpE,IAFA,IAAIw5f,EACA/xf,EACKl5B,EAAI,EAAGA,EAAIsgV,EAAiBrgV,OAAQD,IACzC,IAAKQ,YAAkB8/U,EAAiBtgV,MACpCirhB,EAAqBzqhB,YAAkB8/U,EAAiBtgV,GAAG6D,YAC2B,GAAlF,GAAGY,MAAMC,KAAK47U,EAAiB,GAAGz8U,WAAWe,iBAAiB,IAAM6sB,KAClDxxB,OAAS,EAAG,CAC9Bi5B,EAAW,GACX,IAAK,IAAI4vC,EAAM,EAAGA,EAAMmid,EAAkBhrhB,OAAQ6oE,IAC1Cmid,EAAkBnid,GAAKjsD,GAAGtb,QAAQ,cAAgB,GAClD23B,EAASl0B,KAAKimhB,EAAkBnid,IAGxC1lE,KAAKk4gB,aAAapif,KAUlC28Q,EAAUv2S,UAAU4rhB,aAAe,SAAUp1C,EAAOzO,EAAQzpd,EAAO03W,GAE/D,YADe,IAAXA,IAAqBA,EAAS,IAC9BlyX,KAAKmnhB,aACEnnhB,KAAK+nhB,kBAAkB9jD,GAEJ,YAArBjke,KAAK04gB,YACH14gB,KAAKynhB,mBAAmB/0C,EAAOl4d,GAG/Bxa,KAAKwnhB,kBAAkB90C,EAAOl4d,EAAO03W,IASpDz/E,EAAUv2S,UAAU8rhB,kBAAoB,SAAUlhgB,GAC9C,IAAImhgB,EAAanhgB,EAAMmW,OAUvB,GATmB,UAAfnW,EAAM3b,MACNnL,KAAK04gB,YAAc14gB,KAAK0ye,MAAM0iB,cAC9Bp1f,KAAK24gB,QAAU34gB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,wBAEnB,cAAfqN,EAAM3b,OACXnL,KAAK04gB,YAAc14gB,KAAK0ye,MAAMosB,cAC9B9+f,KAAKkohB,qBAAuB,GAC5BlohB,KAAK24gB,QAAU34gB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,wBAEV,SAA7BzZ,KAAK0ye,MAAMosB,eAAyD,SAA7B9+f,KAAK0ye,MAAM0iB,eAC/B,UAAftue,EAAM3b,KACN,OAAO,EAGf,GAAkC,SAA7BnL,KAAK0ye,MAAMosB,eAA4B9+f,KAAKmohB,qBAAuBnohB,KAAKmohB,oBAAoB,GAAK,CAClG,IAAIC,EAAeH,EAAWxnhB,WAAWgZ,GACrCwmL,OAAY,EACZgoV,EAAWxnhB,aACXw/L,EAAamoV,EAAajqhB,QAAQ,eAAiB,GAAKiqhB,EAAajqhB,QAAQ,eAAiB,GAElG,IAAK,IAAIvB,EAAI,EAAGA,EAAIoD,KAAKmohB,oBAAoBtrhB,OAAQD,IAC7CoD,KAAKmohB,oBAAoBvrhB,GAAGu/C,aAAa,WACrCn8C,KAAKmohB,oBAAoBvrhB,GAAGuyB,aAAa,SAAShxB,QAAQ,cAAgB,IACzE8hM,GAA4B,UAAfn5K,EAAM3b,OACpBnL,KAAKmohB,oBAAoBvrhB,GAAGyjC,gBAAgB,SAC5CrgC,KAAKqohB,iBAAiBrohB,KAAKkohB,qBAAsBlohB,KAAK8gf,YAAY9gf,KAAKmohB,oBAAoBvrhB,GAAG6c,OAExFwmL,GAAajgM,KAAKmohB,oBAAoBvrhB,GAAGuyB,aAAa,SAAShxB,QAAQ,cAAgB,GAC7F6B,KAAKstgB,iBAAiBttgB,KAAK8gf,YAAY9gf,KAAKmohB,oBAAoBvrhB,GAAG6c,IAAKzZ,KAAK0ye,MAAO1ye,KAAKmohB,oBAAoBvrhB,KAK7H,OAAO,GAQX61S,EAAUv2S,UAAUyqhB,0BAA4B,SAAU7/f,GACtD,IAAI1pB,YAAkB0pB,EAAMmW,QAA5B,CAGA,IAAI0hI,EAAgB73I,EAAMmW,OAC1B,IAAkC,SAA7Bj9B,KAAK0ye,MAAM0iB,eAAyD,SAA7Bp1f,KAAK0ye,MAAMosB,iBACQ,IAA3DngW,EAAcllJ,GAAGtb,QAAQ6B,KAAK0ye,MAAM1xe,QAAQyY,GAAK,KADrD,CAIA,GAAmB,cAAfqN,EAAM3b,KAAsB,CAC5B,GAAIwzJ,EAAcxiH,aAAa,WAAawiH,EAAcxvI,aAAa,SAAShxB,QAAQ,cAAgB,GACpGwgK,EAAcxvI,aAAa,SAAShxB,QAAQ,cAAgB,GAC5D,OAEJ,IAAKf,YAAkBuhK,EAAcl+J,aAAek+J,EAAcl+J,WAAW07C,aAAa,WACrFwiH,EAAcl+J,WAAW0uB,aAAa,SAAShxB,QAAQ,aAAe,GACnEwgK,EAAcl+J,WAAW0uB,aAAa,SAAShxB,QAAQ,aAAe,GAC1E,OAIR,GADA6B,KAAKgohB,kBAAkBlhgB,GACnB63I,EAAcllJ,GAAGtb,QAAQ,aAAe,EAAG,CAC3C,IAAI6C,OAAU,EACd,GAAI29J,EAAcllJ,GAAGtb,QAAQ,iBAAmB,EAC5C6C,EAAU6B,GAAW87J,EAAcllJ,GAAG9c,MAAM,eAAe,GAAK,WAChEqE,EAAU5D,YAAkB4D,GAAW6B,GAAW87J,EAAcllJ,GAAG9c,MAAM,eAAe,IAAMqE,OAE7F,GAAI29J,EAAcllJ,GAAGtb,QAAQ,iBAAmB,EACjD,OAAO,KAEX6B,KAAKstgB,iBAAiBttgB,KAAK8gf,YAAYniV,EAAcllJ,IAAKzZ,KAAK0ye,MAAO1xe,GAAW29J,OAQzF8zI,EAAUv2S,UAAUoxgB,iBAAmB,SAAU9yf,EAAOk4d,EAAO1xe,GAM3D,GALAhB,KAAKmnhB,aAAoC,WAArBnnhB,KAAK04gB,YACe,kBAApChmC,EAAMzO,OAAOzpd,EAAMypd,QAAQ94d,MAA4BnK,GACvDA,EAAQyY,KAAOi5d,EAAM1xe,QAAQyY,GAAK,WAAae,EAAMypd,OAAS,UAAYzpd,EAAM48B,MAAQ,aACxFp2C,EAAUA,EAAQP,YAEkB,SAApCiye,EAAMzO,OAAOzpd,EAAMypd,QAAQ94d,OAAyC,UAArBnL,KAAK04gB,aAAgD,YAArB14gB,KAAK04gB,cAA8B13gB,GACjHA,EAAQyY,KAAOzZ,KAAK0ye,MAAM1xe,QAAQyY,GAAK,WAAae,EAAMypd,OAAS,CACpE,IAAI51c,EAAYruB,KAAK++f,cAAcrsB,EAAMzO,OAAOzpd,EAAMypd,SAClDqkD,EAAe9nhB,SAASgB,iBAAiB,IAAM6sB,GACnDruB,KAAK4nhB,sBAAsBU,EAAcj6f,GACzCruB,KAAKuohB,WAAW71C,EAAM1xe,QAAQyY,GAAIi5d,EAAM4c,eAE5C,OAAQtvf,KAAK04gB,aACT,IAAK,SACD14gB,KAAK6kK,UAAU6tU,EAAOl4d,EAAOxa,KAAK+nhB,kBAAkBr1C,EAAMzO,OAAOzpd,EAAMypd,UACvEjke,KAAK63e,kBAAkBnF,EAAOl4d,EAAOxa,KAAK04gB,aAC1C14gB,KAAKuohB,WAAW71C,EAAM1xe,QAAQyY,GAAIi5d,EAAM4c,eACxC,MACJ,IAAK,SACIljf,MAAMoO,EAAM48B,QAAUp2C,IACvBhB,KAAK6kK,UAAU6tU,EAAOl4d,EAAO,CAACxZ,IAC9BhB,KAAK63e,kBAAkBnF,EAAOl4d,EAAOxa,KAAK04gB,aAC1C14gB,KAAKuohB,WAAW71C,EAAM1xe,QAAQyY,GAAIi5d,EAAM4c,gBAE5C,MACJ,IAAK,UACIljf,MAAMoO,EAAM48B,SACbp3C,KAAKwohB,iBAAiB91C,EAAOl4d,GAC7Bxa,KAAK63e,kBAAkBnF,EAAOl4d,EAAOxa,KAAK04gB,aAC1C14gB,KAAKuohB,WAAW71C,EAAM1xe,QAAQyY,GAAIi5d,EAAM4c,kBAUxD78M,EAAUv2S,UAAU27e,kBAAoB,SAAUnF,EAAOl4d,EAAO46e,GAC5D,IAAIz5a,EACAqoZ,EACAD,EAEAvrI,EACAiwL,EAFAC,EAAsB,GAG1B,GAAsB,YAAlBtzB,EACA,IAAK,IAAIp3f,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE7D,IADIime,EAAS1ge,EAAGvF,IACLk/D,QACP,IAAK,IAAItgE,EAAI,EAAGA,EAAIoD,KAAKqvgB,oBAAoBxygB,OAAQD,IACjDone,EAAa0O,EAAMkmC,cAAgB54gB,KAAKqvgB,oBAAoBzygB,GAAGw6C,MAAQ58B,EAAM48B,MAC7E2sb,EAAcE,EAAOzpd,MACrBmhE,EAASsoZ,EAAOtoZ,OACXvvE,MAAM43d,KACPxrI,EAAyB,cAAhByrI,EAAO94d,KAAuBwwE,EAAOqoZ,GAAYxrI,OACtD78Q,EAAOqoZ,GAAY4xB,QAAQ,GAAGt/e,EAClCmygB,EAAiB9sc,EAAOqoZ,GAAYzrI,OACC,aAAjCm6I,EAAMkO,aAAa/M,UACnB40C,EAAiB9sc,EAAOqoZ,GAAYzid,EAAE4hN,iBAEA,aAAjCuvQ,EAAMkO,aAAa/M,YACxB40C,EAAiB,IAAIt/gB,KAAKwyE,EAAOqoZ,GAAYzrI,SAEzB,cAApB0rI,EAAO5rX,UACPqwa,EAAoB9mhB,KAAK,CACrB2f,EAAGkngB,EAAgBnygB,EAAGkiV,EAAQurI,YAAaA,EAC3CC,WAAYA,IAGA,cAAhBC,EAAO94d,MACPu9gB,EAAoB9mhB,KAAK,CACrB2f,EAAGkngB,EAAgBnygB,EAAGqlE,EAAOqoZ,GAAY4xB,QAAQ,GAAGt/e,EACpDytd,YAAaA,EAAaC,WAAYA,UAQ7D,GAAsB,WAAlBoxB,EACL,GAAI1iB,EAAMkmC,cACN,IAASh8gB,EAAI,EAAGA,EAAIoD,KAAKqvgB,oBAAoBxygB,OAAQD,IACjDmne,EAAc/je,KAAKqvgB,oBAAoBzygB,GAAGqne,OAC1CykD,EAAoB9mhB,KAAK,CACrBmie,YAAaA,SAKrBA,EAAe/je,KAAKqvgB,oBAAoBxygB,OAAS,EAAKmD,KAAKqvgB,oBAAoB,GAAGprC,OAAS,EAC3FykD,EAAoB9mhB,KAAK,CACrBmie,YAAaA,SAIpB,GAAsB,UAAlBqxB,EACL,IAASx4f,EAAI,EAAGA,EAAIoD,KAAKqvgB,oBAAoBxygB,OAAQD,IAAK,CAGtD,IAAIqne,EAFJD,EAAahke,KAAKqvgB,oBAAoBzygB,GAAGw6C,MACzC2sb,EAAc/je,KAAKqvgB,oBAAoBzygB,GAAGqne,OAE1CtoZ,GADIsoZ,EAASyO,EAAMzO,OAAOF,IACVpoZ,OACXvvE,MAAM43d,KACPykD,EAAiB9sc,EAAOqoZ,GAAYzrI,OACpCC,EAAyB,cAAhByrI,EAAO94d,KAAuBwwE,EAAOqoZ,GAAYxrI,OACtD78Q,EAAOqoZ,GAAY4xB,QAAQ,GAAGt/e,EACG,aAAjCo8d,EAAMkO,aAAa/M,UACnB40C,EAAiB9sc,EAAOqoZ,GAAYzid,EAAE4hN,iBAEA,aAAjCuvQ,EAAMkO,aAAa/M,YACxB40C,EAAiB,IAAIt/gB,KAAKwyE,EAAOqoZ,GAAYzrI,SAEjDmwL,EAAoB9mhB,KAAK,CACrB2f,EAAGkngB,EAAgBnygB,EAAGkiV,EAAQurI,YAAaA,EAC3CC,WAAYA,KAK5B,IAAI/je,EAAO,CACPma,KAAMy9d,GACN8wC,mBAAoBD,EACpB3lgB,QAAQ,GAEZ2vd,EAAM3od,QAAQ8td,GAAmB53e,IAOrCwyS,EAAUv2S,UAAU2oK,UAAY,SAAU6tU,EAAOl4d,EAAO0iU,GAOpD,GAN2B,UAArBl9U,KAAK04gB,cACFhmC,EAAMkmC,gBAAwD,IAAtC54gB,KAAK04gB,YAAYv6gB,QAAQ,UAAyD,IAAvC6B,KAAK24gB,QAAQx6gB,QAAQ,cACjE,SAAxBu0e,EAAM0iB,eACNp1f,KAAK4ohB,0BAA0Bl2C,EAAO1ye,KAAKqvgB,oBAAqB70f,EAAOk4d,EAAMzO,UAGhF7me,YAAkB8/U,EAAiB,IAAK,CACzC,IAAIt+L,OAAQ,EACRvwH,EAAY6uT,EAAiB,KAAOA,EAAiB,GAAG/tT,aAAa,UAAY,IACjF05f,EAAa3rM,EAAiB,GAAGz8U,aAChCy8U,EAAiB,GAAGz8U,WAAW0uB,aAAa,UAAY,IAC3C,KAAdd,GAAyC,YAArBruB,KAAK04gB,aACzB14gB,KAAK4nhB,sBAAsB1qM,EAAkB7uT,GAE7C6uT,EAAiB,IAAM7uT,EAAUlwB,QAAQ6B,KAAK8ohB,kBAAkB5rM,EAAiB,GAAGzjU,MAAQ,EAC5FzZ,KAAKk4gB,aAAah7L,GAEbA,EAAiB,GAAGz8U,YAAcoohB,EAAW1qhB,QAAQ6B,KAAK8ohB,kBAAkB5rM,EAAiB,GAAGzjU,MAAQ,EAC7GzZ,KAAKk4gB,aAAa,CAACh7L,EAAiB,GAAGz8U,cAGvCT,KAAKmohB,oBAA8C,SAAxBz1C,EAAMosB,cAA2B5hL,EAAmB,GAC/El9U,KAAKwzM,YAAY0pI,GACjBt+L,GAAQ,GAER5+I,KAAK24gB,QAAQx6gB,QAAQ,aAAe,GAA6B,SAAxBu0e,EAAMosB,cAC/C9+f,KAAKqohB,iBAAiBrohB,KAAKkohB,qBAAsB1tgB,EAAOokI,GAGxD5+I,KAAKqohB,iBAAiBrohB,KAAKqvgB,oBAAqB70f,EAAOokI,KASnE6zJ,EAAUv2S,UAAUsshB,iBAAmB,SAAU91C,EAAOl4d,GACpDxa,KAAK6kK,UAAU6tU,EAAOl4d,EAAOxa,KAAKynhB,mBAAmB/0C,EAAO,IAAIr6Z,GAAM79D,EAAMypd,OAAQzpd,EAAM48B,UAO9Fq7P,EAAUv2S,UAAU0shB,0BAA4B,SAAUl2C,EAAOl4d,EAAOoxV,EAAc+1I,GAElF,IADA,IAAI1d,EACKrne,EAAI,EAAGA,EAAI4d,EAAM3d,OAAQD,IAC9Bqne,EAAS0d,EAAiBnne,EAAM5d,GAAGqne,SAC9Bjke,KAAKmnhB,eAAiBnnhB,KAAK+ohB,SAASvugB,EAAM5d,GAAIgvW,EAAc5rW,KAAKmnhB,eAC5C,YAArBnnhB,KAAK04gB,cAA8B14gB,KAAK+ohB,SAASvugB,EAAM5d,GAAIgvW,GAAc,KACxE5rW,KAAKmnhB,cAAgBnnhB,KAAK+ohB,SAASvugB,EAAM5d,GAAIgvW,GAAc,KAAU5rW,KAAK+ohB,SAASvugB,EAAM5d,GAAIgvW,GAAc,MAC7G5rW,KAAKk4gB,aAAal4gB,KAAK8nhB,aAAap1C,EAAOzO,EAAQzpd,EAAM5d,KACzD4d,EAAMV,OAAOld,EAAG,GAChBA,MASZ61S,EAAUv2S,UAAUqshB,WAAa,SAAUS,EAAS15B,EAAe5Y,QAC3C,IAAhBA,IAA0BA,GAAc,GAG5C,IAFA,IAAIlgd,EAAcx2B,KAAK4lhB,gBAAgB5lhB,KAAKkohB,uBACxClohB,KAAK4lhB,gBAAgB5lhB,KAAKqvgB,qBACrBrxgB,EAAK,EAAGg6gB,EAAkB1oB,EAAetxf,EAAKg6gB,EAAgBn7gB,OAAQmB,IAAM,CACjF,IAAIime,EAAS+zC,EAAgBh6gB,GACzBime,EAAO/ma,UACPl9D,KAAKiphB,uBAAuBpmhB,GAAWmmhB,EAAU,cAAgB/kD,EAAOzpd,OAAQxa,KAAK++f,cAAc96B,GAASztc,EAAYkgd,EAAazS,EAAOzpd,OACvIpd,YAAkByF,GAAWmmhB,EAAU,cAAgB/kD,EAAOzpd,SAC/Dxa,KAAKiphB,uBAAuBpmhB,GAAWmmhB,EAAU,cAAgB/kD,EAAOzpd,OAAQxa,KAAK++f,cAAc96B,GAASztc,EAAYkgd,EAAazS,EAAOzpd,UAU5Ji4R,EAAUv2S,UAAU+shB,uBAAyB,SAAUjohB,EAASqtB,EAAWmI,EAAYkgd,EAAazS,GAChG,IAIIgiD,EACAiD,EACA9K,EANAttf,EAAY9wB,KAAKmnhB,aAAe,CAACnmhB,GAAWA,EAAQstB,WACvB,SAA7BtuB,KAAK0ye,MAAM0iB,eAAyD,SAA7Bp1f,KAAK0ye,MAAMosB,gBAClDhue,EAAY9vB,EAAQ8vB,UAMxB,IADA,IAAIg5I,EAAgB9oK,EACXpE,EAAI,EAAGA,EAAIk0B,EAASj0B,OAAQD,IACjCqphB,EAAmBn1f,EAASl0B,GAAGuyB,aAAa,UAAY,GACxD+5f,EAAkBp4f,EAASl0B,GAAG6D,WAAW0uB,aAAa,UAAY,GACjC,SAA7BnvB,KAAK0ye,MAAM0iB,eAAyD,SAA7Bp1f,KAAK0ye,MAAMosB,gBAClDzwe,EAAY43f,EAAiB9nhB,QAAQ,aAAe,GAChD8nhB,EAAiB9nhB,QAAQ,aAAe,EAAI8nhB,EAAmB53f,EACnEA,EAAa66f,EAAgB/qhB,QAAQ,aAAe,GAChD+qhB,EAAgB/qhB,QAAQ,aAAe,EAAK+qhB,EAAkB76f,IAEzB,IAAzC43f,EAAiB9nhB,QAAQkwB,KACe,IAAxC66f,EAAgB/qhB,QAAQkwB,IAAqBmI,EAC7Cx2B,KAAKgmhB,YAAYl1f,EAASl0B,GAAIoD,KAAKqlhB,aAGnCv7W,EAAgBh5I,EAASl0B,GACzBoD,KAAKkmhB,eAAep1f,EAASl0B,GAAIoD,KAAKqlhB,YACtCrlhB,KAAKkmhB,eAAep1f,EAASl0B,GAAG6D,WAAYT,KAAKqlhB,aAEjDv0f,EAASl0B,GAAG6c,GAAGtb,QAAQ,aAAe,GAAK2rK,EAAc9zI,UAAU,KAAO3H,IAC1EruB,KAAKkmhB,eAAep1f,EAASl0B,GAAIoD,KAAKqlhB,YACtCrlhB,KAAKkmhB,eAAep1f,EAASl0B,GAAG6D,WAAYT,KAAKqlhB,YACjDrlhB,KAAKgmhB,YAAYl1f,EAASl0B,GAAIyxB,IAGtC,GAAIrtB,EAAQyY,GAAGtb,QAAQ,WAAa,GAC3B6C,EAAQQ,iBAAiB,IAAM6sB,GAAW,IAAOrtB,EAAQQ,iBAAiB,IAAM6sB,GAAW,GAAGc,aAAa,WACxGd,EAAW,CACf,IAAI86f,EAAYtmhB,GAAW7C,KAAKiwE,QAAQjvE,QAAQyY,GAAK,WAAazY,EAAQyY,GAAGzY,EAAQyY,GAAG5c,OAAS,KAC3EsshB,GAAaA,EAAUhte,aAAa,SAAWgte,EAAUh6f,aAAa,SAAW,IACnFhxB,QAAQ6B,KAAKqlhB,aAAe,GAC5CrlhB,KAAKkmhB,eAAeiD,EAAWnphB,KAAKqlhB,YAI5CrlhB,KAAKiwE,QAAQs8b,cAAgBvsgB,KAAKiwE,QAAQ6wb,eAAe5jc,UACzDkhd,EAAcv7gB,GAAW7C,KAAKiwE,QAAQjvE,QAAQyY,GAAK,uBAAyBwqd,MAEpEm6C,EAAYjie,aAAa,UACzBn8C,KAAKkmhB,eAAe9H,EAAaA,EAAYjvf,aAAa,UAE9D82f,EAAmBn8W,EAAc36I,aAAa,UAAY,GAC1D+5f,EAAkBp/W,EAAcrpK,WAAW0uB,aAAa,UAAY,IACvB,IAAzC82f,EAAiB9nhB,QAAQkwB,KAA6D,IAAxC66f,EAAgB/qhB,QAAQkwB,IAAqBmI,GAC3Fx2B,KAAKgmhB,YAAY5H,EAAap+gB,KAAKqlhB,YACnCrlhB,KAAKkmhB,eAAe9H,EAAa/vf,KAGjCruB,KAAKkmhB,eAAe9H,EAAap+gB,KAAKqlhB,YACZ,KAArBY,GAA+C,KAApBiD,GAAuD,kBAA5BjD,EAAiB55f,OACxErsB,KAAKkmhB,eAAe9H,EAAa/vf,GAGjCruB,KAAKgmhB,YAAY5H,EAAa/vf,IAGlCqod,GAAewyC,EAAgB/qhB,QAAQkwB,IAAc,GACrDruB,KAAKgmhB,YAAY5H,EAAa/vf,KAU9CokR,EAAUv2S,UAAUs3M,YAAc,SAAU19K,GACxC,IAAK,IAAI93B,EAAK,EAAGgiC,EAAalK,EAAU93B,EAAKgiC,EAAWnjC,OAAQmB,IAAM,CAClE,IAAIgD,EAAUg/B,EAAWhiC,GACrBgD,IACAhB,KAAKkmhB,eAAellhB,EAAQP,WAAYT,KAAKqlhB,YAC7CrlhB,KAAKkmhB,eAAellhB,EAAShB,KAAKqlhB,YAClCrlhB,KAAKgmhB,YAAYhlhB,EAAShB,KAAK8ohB,kBAAkB9nhB,EAAQyY,QASrEg5R,EAAUv2S,UAAU4shB,kBAAoB,SAAUrvgB,GAC9C,OAAOzZ,KAAK++f,cAAc/+f,KAAKiwE,QAAQg0Z,OAAOjke,KAAK8gf,YAAYrne,GAAIwqd,UAOvExxL,EAAUv2S,UAAUg8gB,aAAe,SAAUpif,GACzC,IAAK,IAAI93B,EAAK,EAAG44d,EAAa9gc,EAAU93B,EAAK44d,EAAW/5d,OAAQmB,IAAM,CAClE,IAAIgD,EAAU41d,EAAW54d,GACrBgD,GACAhB,KAAKkmhB,eAAellhB,EAAShB,KAAK8ohB,kBAAkB9nhB,EAAQyY,OASxEg5R,EAAUv2S,UAAUmshB,iBAAmB,SAAU/gZ,EAAS9sH,EAAOokI,GAC7D,IAAK,IAAIhiJ,EAAI,EAAGA,EAAI0qI,EAAQzqI,OAAQD,IAC5BoD,KAAK+ohB,SAASzhZ,EAAQ1qI,GAAI4d,EAAOxa,KAAKmnhB,gBACtC7/Y,EAAQxtH,OAAOld,EAAG,GAClBA,KAGJgiJ,GACAtX,EAAQ1lI,KAAK4Y,IAQrBi4R,EAAUv2S,UAAU6shB,SAAW,SAAUvqhB,EAAOC,EAAQ2qhB,GACpD,OAAS5qhB,EAAMyle,SAAWxle,EAAOwle,QAAgC,YAArBjke,KAAK04gB,cAA8B0Q,KACvEA,GAAoB5qhB,EAAM44C,QAAU34C,EAAO24C,QAQvDq7P,EAAUv2S,UAAUszgB,gBAAkB,SAAU98B,EAAO22C,GACnDrphB,KAAKmnhB,aAA2B,WAAZkC,EACfjshB,YAAkBishB,MACc,IAA7BA,EAAQlrhB,QAAQ,SAA8B,UAAZkrhB,EAClC32C,EAAM42C,mBAAoB,EAG1B52C,EAAM42C,mBAAoB,GAGlC,IAAIja,EAAsB/wgB,YAAO,GAAI0B,KAAKqvgB,oBAAqB,MAAM,GACjE6Y,EAAuB5phB,YAAO,GAAI0B,KAAKkohB,qBAAsB,MAAM,GACnElohB,KAAK24gB,QAAQx6gB,QAAQ,aAAe,GAAK+phB,EAAqBrrhB,OAAS,GACvEmD,KAAKuphB,uBAAuB72C,EAAO1ye,KAAKkohB,qBAAsBx1C,EAAMzO,QACpEorC,EAAsB6Y,GAGtBlohB,KAAKuphB,uBAAuB72C,EAAO1ye,KAAKqvgB,oBAAqB38B,EAAMzO,QAEvEjke,KAAKuohB,WAAW71C,EAAM1xe,QAAQyY,GAAIi5d,EAAM4c,eACxCtvf,KAAKonhB,gBAAgB10C,EAAO28B,IAGhC58N,EAAUv2S,UAAUojhB,gBAAkB,SAAU5sC,EAAOzO,EAAQn9c,GAC3D,IAAI63I,EAAgB73I,EAAMmW,OAC1B,GAAmB,cAAfnW,EAAM3b,KAAsB,CAI5B,GAHI2b,EAAMmW,OAAOxjB,GAAGtb,QAAQ,QAAU,IAClCwgK,EAAgB97J,GAAWikB,EAAMmW,OAAOxjB,GAAG/c,QAAQ,OAAQ,WAE3DiiK,EAAcxiH,aAAa,WAAawiH,EAAcxvI,aAAa,SAAShxB,QAAQ,cAAgB,GACpGwgK,EAAcxvI,aAAa,SAAShxB,QAAQ,cAAgB,GAC5D,OAEJ6B,KAAK04gB,YAAc14gB,KAAK0ye,MAAMosB,cAGlC,GADoB9+f,KAAKgohB,kBAAkBlhgB,GACxB,CACf,IAAI4ggB,EAAc1nhB,KAAK++f,cAAcrsB,EAAM4c,cAAcrrB,IACrD/mJ,EAAoB18U,SAASgB,iBAAiB,IAAMkmhB,GACxD1nhB,KAAKmnhB,aAAoC,WAArBnnhB,KAAK04gB,YAEzB,GAAIx7L,EAAiBrgV,OAAS,EAC1BmD,KAAK89J,gBAAgB40U,EAAOzO,EAAQ/mJ,EAAkBwqM,EAFjC,UAIpB,CACD,IAAK,IAAI1phB,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIgD,EAAUuC,EAAGvF,GACbgD,EAAQwZ,QAAUypd,GAAWyO,EAAMkmC,gBACnC8O,EAAc1nhB,KAAK++f,cAAcrsB,EAAM4c,cAActuf,EAAQwZ,QAC7D0iU,EAAmB18U,SAASgB,iBAAiB,IAAMkmhB,GACnD1nhB,KAAK89J,gBAAgB40U,EAAOzO,EAAQ/mJ,EAAkBwqM,EAVzC,OAcrB,IADA,IAAIlrB,EAAiBx8f,KAAK+nhB,kBAAkBr1C,EAAM4c,cAAcrrB,IACvDlvc,EAAK,EAAGy0f,EAAmBhtB,EAAgBzne,EAAKy0f,EAAiB3shB,OAAQk4B,IAAM,CACpF,IAAIgoe,EAAgBysB,EAAiBz0f,GACrC,GAAI33B,YAAkB2/f,GAClB,OAEJ/8f,KAAKiphB,uBAAuBlsB,EAAe2qB,GAAa,GAAO,EAAMzjD,GAEzEjke,KAAKmnhB,cAAe,EACpBnnhB,KAAK6kK,UAAU6tU,EAAO,IAAIr6Z,GAAM4rZ,EAAQprd,KAAM2jf,GAC9Cx8f,KAAKmnhB,aAAuC,WAAxBz0C,EAAM0iB,cAC1Bp1f,KAAKuohB,WAAW71C,EAAM1xe,QAAQyY,GAAIi5d,EAAM4c,eAAe,MAInE78M,EAAUv2S,UAAU4hK,gBAAkB,SAAU40U,EAAOzO,EAAQ/mJ,EAAkBwqM,EAAa+B,GAC1F,GAAIvsM,EAAiBrgV,OAAS,EAAG,CAE7B,IADA,IAAIi5B,EAAW,GACNl5B,EAAI,EAAGA,EAAIsgV,EAAiBrgV,OAAQD,IACzCk5B,EAASl0B,KAAKs7U,EAAiBtgV,IAEnCoD,KAAKk4gB,aAAapif,GAClB91B,KAAKmnhB,cAAe,EACpBnnhB,KAAKqohB,iBAAiBrohB,KAAKqvgB,oBAAqB,IAAIh3b,GAAM4rZ,EAAQprd,MAClE,IAAK,IAAI7a,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIxB,EAAQ+G,EAAGvF,GAEf,GADA0phB,EAAc1nhB,KAAK++f,cAAcvigB,GAC7BgE,SAASgB,iBAAiB,IAAMkmhB,GAAa7qhB,OAAS,EAAG,CACzD,IAAK,IAAIk4B,EAAK,EAAG20f,EAAa5zf,EAAUf,EAAK20f,EAAW7shB,OAAQk4B,IAAM,CAClE,IAAI/zB,EAAU0ohB,EAAW30f,GACzB/0B,KAAKiphB,uBAAuBjohB,EAAS0mhB,GAAa,GAAM,EAAMzjD,GAElEwlD,GAAqB,EACrB,OAGJA,IACAzphB,KAAKmnhB,aAAuC,WAAxBz0C,EAAM0iB,cAC1Bp1f,KAAKuohB,WAAW71C,EAAM1xe,QAAQyY,GAAIi5d,EAAM4c,kBAKpD78M,EAAUv2S,UAAU6rhB,kBAAoB,SAAU9jD,GAC9C,IAAIu4B,EAAiB,CAACv4B,EAAO84B,eAI7B,OAHI94B,EAAOjtE,OAAO95V,SAA2B,YAAhB+ma,EAAO94d,MAAsC,WAAhB84d,EAAO94d,OAAsB84d,EAAO+wB,cAC1FwH,EAAe56f,KAAKqie,EAAO64B,eAExBN,GAGX/pN,EAAUv2S,UAAU4kf,YAAc,SAAUrne,GACxC,IAAIune,EAAM,CAAC,MAAO,OAmBlB,OAlBIvne,EAAGtb,QAAQ,gBAAkB,GAC7B6if,EAAMvne,EAAG9c,MAAM,gBACX,GAAKqkf,EAAI,GAERvne,EAAGtb,QAAQ,gBAAkB,GAClC6if,EAAMvne,EAAG9c,MAAM,gBACX,GAAKqkf,EAAI,GAERvne,EAAGtb,QAAQ,YAAc,EAC9B6if,EAAMvne,EAAG9c,MAAM,YAAY,GAAGA,MAAM,WAE/B8c,EAAGtb,QAAQ,aAAe,EAC/B6if,EAAI,GAAKvne,EAAG9c,MAAM,YAAY,GAEzB8c,EAAGtb,QAAQ,yBAA2B,KAC3C6if,EAAMvne,EAAG9c,MAAM,yBACX,GAAKqkf,EAAI,IAEV,IAAI3oa,GAAMliE,SAAS6qe,EAAI,GAAI,IAAK7qe,SAAS6qe,EAAI,GAAI,MAQ5DvuM,EAAUv2S,UAAU+wgB,8BAAgC,SAAUv6B,EAAOi3C,EAAU5jL,GAC3E/lW,KAAKuphB,uBAAuB72C,EAAO1ye,KAAKqvgB,oBAAqB38B,EAAMzO,QACnE,IAIItoZ,EACAnhE,EALAovgB,EAAkC,UAAxBl3C,EAAM0iB,cAChBlld,EAAO,IAAI+6b,GAAK0+C,EAASpogB,EAAGoogB,EAASrzgB,EAAGqzgB,EAASj6e,MAAOi6e,EAASh6e,QACjE68c,EAAa,IAAIpN,GAAc1M,EAAMyrB,qBAAqBjW,eAAe3me,EAAGmxd,EAAMyrB,qBAAqBjW,eAAe5xe,GAC1HtW,KAAK6phB,aAAa35e,EAAMs8c,GAGxB,IAAIk8B,EAAsB,GACtBoB,EAAuB,GAC3B9phB,KAAKmnhB,cAAe,EACpB,IAAI4C,EAAgBr3C,EAAMs3C,sBAAyBhqhB,KAAKiqhB,cAAgBjqhB,KAAKslF,UAG7E,GAFAtlF,KAAKq1f,WAAar1f,KAAKumhB,cAAcwD,EAAe/phB,KAAKkqhB,YAAclqhB,KAAK86D,OACxE,IAAImwa,GAAK0+C,EAASpogB,EAAGoogB,EAASrzgB,EAAGqzgB,EAASj6e,MAAOi6e,EAASh6e,QAC1Dg6e,EAASj6e,OAASi6e,EAASh6e,SAAWo2T,EAAS,CAC/C,IAAI2rD,EAAK,IAAIu5E,GAAK0+C,EAASpogB,EAAGoogB,EAASrzgB,EAAGqzgB,EAASj6e,MAAOi6e,EAASh6e,QACnE3vC,KAAK6phB,aAAan4H,EAAI86F,GACtBxsf,KAAKgtgB,YAAY+c,EAAe/phB,KAAKkqhB,YAAclqhB,KAAK86D,OAAS42V,EA0DrE,IAxDA,IAAI7yZ,EAAU,SAAUole,GACpB,GAAIA,EAAO/ma,QAAS,CAGhB,IAAIitd,EACAC,EAHJzuc,EAASsoZ,EAAOtoZ,OAChB+sc,EAAsB,IAGjBh2C,EAAMuiB,eAAgD,IAAhChxB,EAAO94d,KAAKhN,QAAQ,QACzCu0e,EAAMuiB,eAAgD,IAAhChxB,EAAO94d,KAAKhN,QAAQ,QAK5CgshB,EAAgBlmD,EAAOpkW,MAAM3vF,KAAK3uB,EAAIire,EAAWjre,EACjD6ogB,EAAgBnmD,EAAOtkW,MAAMzvF,KAAK55B,EAAIk2e,EAAWl2e,IALjD6zgB,EAAgBlmD,EAAOpkW,MAAM3vF,KAAK55B,EAAIk2e,EAAWl2e,EACjD8zgB,EAAgBnmD,EAAOtkW,MAAMzvF,KAAK3uB,EAAIire,EAAWjre,GAMrD,IAAK,IAAIpZ,EAAI,EAAGA,EAAIwzE,EAAO9+E,OAAQsL,IAAK,CACpC,IAAIqwV,EAAyB,cAAhByrI,EAAO94d,KAAuBwwE,EAAOxzE,GAAGqwV,OACjD78Q,EAAOxzE,GAAGytf,QAAQ,GAAGt/e,EACrB+zgB,OAAiB,EACjB5B,EAAiB9sc,EAAOxzE,GAAGowV,OACM,aAAjCm6I,EAAMkO,aAAa/M,UACnB40C,EAAiB9sc,EAAOxzE,GAAGoZ,EAAE4hN,iBAES,aAAjCuvQ,EAAMkO,aAAa/M,YACxB40C,EAAiB,IAAIt/gB,KAAKwyE,EAAOxzE,GAAGowV,UAGpC8xL,EADgB,kBAAhBpmD,EAAO94d,KACUwwE,EAAOxzE,GAAGytf,QAAQlse,MAAK,SAAUuse,GAC9C,OAAO1U,GAAa0U,EAAO10e,EAAI4ogB,EAAel0B,EAAO3/e,EAAI8zgB,EAAel6e,MAIhD,UAAxBwic,EAAM0iB,cACWz5a,EAAOxzE,GAAGmmS,SAGTokM,EAAMs3C,oBACpBlgf,EAAOwgf,cAAc3uc,EAAOxzE,GAAIgihB,EAAeC,EAAetgf,EAAOkje,aACrErxb,EAAOxzE,GAAGuuf,gBAAgBhte,MAAK,SAAUsf,GACrC,OAAOA,GAAYu4c,GAAav4c,EAASznB,EAAI4ogB,EAAenhf,EAAS1yB,EAAI8zgB,EAAel6e,QAI9D,cAApB+zb,EAAO5rX,WACzB79F,EAAQ,IAAI69D,GAAM4rZ,EAAOzpd,MAAOmhE,EAAOxzE,GAAGqS,OAC1CsvB,EAAO+6H,UAAU6tU,EAAOl4d,EAAOsvB,EAAOg+e,aAAap1C,EAAOzO,EAAQzpd,IAClEkugB,EAAoB9mhB,KAAK,CAAE2f,EAAGkngB,EAAgBnygB,EAAGkiV,KAEjD6xL,GAAkC,cAAhBpmD,EAAO94d,MACzBu9gB,EAAoB9mhB,KAAK,CAAE2f,EAAGkngB,EAAgBnygB,EAAGqlE,EAAOxzE,GAAGytf,QAAQ,GAAGt/e,IAG9EwzgB,EAAqBlohB,KAAK8mhB,KAG9B5+e,EAAS9pC,KACJhC,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE7Da,EADa0E,EAAGvF,IAGpBgC,KAAKuohB,WAAW71C,EAAM1xe,QAAQyY,GAAIi5d,EAAM4c,eACxC,IAAI/te,EAAIqogB,EAAUl3C,EAAM8hC,WAAcmV,EAASpogB,EAAIoogB,EAASj6e,MACxDp5B,EAAIszgB,EAAUl3C,EAAMgiC,WAAaiV,EAASrzgB,EACzCyvV,GACD/lW,KAAKuqhB,kBAAkBhpgB,EAAGjL,GAE9B,IAAIrW,EAAO,CACPma,KAAMw9d,GACN+wC,mBAAoBmB,EACpB/mgB,QAAQ,GAEZ2vd,EAAM3od,QAAQ6td,GAAc33e,IAEhCwyS,EAAUv2S,UAAU2thB,aAAe,SAAU35e,EAAMs7V,GAC/Ct7V,EAAK3uB,GAAKiqX,EAAKjqX,EACf2uB,EAAK55B,GAAKk1X,EAAKl1X,GAEnBm8R,EAAUv2S,UAAUouhB,cAAgB,SAAU3uc,EAAQ6uc,EAAaC,EAAaC,GAE5E,IADA,IAAI1hf,EAAW2yC,EAAO+6a,gBAAgB,GAC7B14f,EAAK,EAAG2shB,EAAmBD,EAAgB1shB,EAAK2shB,EAAiB9thB,OAAQmB,IAAM,CACpF,IAAIkyC,EAAOy6e,EAAiB3shB,GAC5B,GAAIkyC,GAAQlH,GAAYu4c,GAAav4c,EAASznB,EAAIipgB,EAAaxhf,EAAS1yB,EAAIm0gB,EAAav6e,GACrF,OAAO,EAGf,OAAO,GAQXuiQ,EAAUv2S,UAAU0uhB,iBAAmB,SAAUl4C,EAAOi3C,EAAU1sf,GAC9D,IAAI4tf,EAAkBn4C,EAAMyrB,qBAAqBjW,eAC7Cv/U,EAAS+pU,EAAMme,UAAUloV,OAAOj5H,MAChCo7e,EAAWp4C,EAAMrG,WAAW1J,kBAC5BooD,EAAar4C,EAAMrG,WAAWzJ,oBAC9BgnD,EAAkC,UAAxBl3C,EAAM0iB,cAQpB,OAPIp1f,KAAKomhB,aACLyE,EAAgBtpgB,EAAIspgB,EAAgBtpgB,EAAIonJ,EAAS,EACjDkiX,EAAgBv0gB,EAAIu0gB,EAAgBv0gB,EAAIqyJ,EAAS,EACjDkiX,EAAgBn7e,MAAQm7e,EAAgBn7e,MAAQi5H,EAChDkiX,EAAgBl7e,OAASk7e,EAAgBl7e,OAASg5H,EAClD3oK,KAAKomhB,YAAa,GAEd1zC,EAAM0iB,eACV,IAAK,QACDu0B,EAASrzgB,EAAIu0gB,EAAgBv0gB,EAC7BqzgB,EAASh6e,OAASk7e,EAAgBl7e,OAClC,MACJ,IAAK,QACDg6e,EAASpogB,EAAIspgB,EAAgBtpgB,EAC7BoogB,EAASj6e,MAAQm7e,EAAgBn7e,MAGzC,IAAKi6e,EAASj6e,MAAQ,GAAKi6e,EAASh6e,OAAS,KAAOi6e,EAChD,OAAO,KAEX,IAAIoB,EAAat4C,EAAM0iB,cAAcj3f,QAAQ,SAAW,GAA6B,UAAxBu0e,EAAM0iB,cACnE,GAAK1iB,EAAMs3C,qBAAwBgB,EAAY,CAC3C,IAAIhqhB,OAAU,EACViqhB,OAAY,EACZC,EAAarohB,GAAW7C,KAAKgnhB,gBAKjC,GAJKkE,IACDA,EAAax4C,EAAMiqB,YAAY12B,YAAY,CAAExsd,GAAIzZ,KAAKgnhB,iBACtDt0C,EAAMlG,UAAUxqe,YAAYkphB,IAE5BlrhB,KAAKiqhB,cAAgBjqhB,KAAKslF,SAAU,CACpC,IAAI6lc,GACJA,EAActohB,GAAW7C,KAAKinhB,YAAcjnhB,KAAKkqhB,cACjC37U,aACZ9kL,aAAO0hgB,EAAY58U,aAEvBvuM,KAAKgkG,cAAcmnb,EAAaxB,QAE/B,IAAK9mhB,GAAW7C,KAAK+mhB,iBAAmB/mhB,KAAK86D,OAAQ,CACtDmwd,EAAYv4C,EAAMiqB,YAAY12B,YAAY,CAAExsd,GAAIzZ,KAAK+mhB,iBAAmB/mhB,KAAK86D,QAC7E,IAAI4zc,EAAalugB,SAASuuB,eAAe2jd,EAAM1xe,QAAQyY,GAAK,eAE5Di5d,EAAMoW,aAAe4lB,EAAW1sgB,YAAYiphB,GAAaC,EAAWlphB,YAAYiphB,GAEtD,UAAxBv4C,EAAM0iB,eACRp0f,EAAU0xe,EAAMiqB,YAAYt+F,cAAc,IAAIsrF,GAAW3pf,KAAKinhB,YAAcjnhB,KAAK86D,MAAOgwd,EAAU,CAAEn1c,MAAOo1c,EAAYr7e,MAAO,GAAK,EAAGi6e,KAC9H/zf,aAAa,QAAS,gBAG9B50B,EAAU0xe,EAAMiqB,YAAY33F,SAAS,IAAI2mE,GAAW3re,KAAKknhB,UAAYlnhB,KAAK86D,MAAOgwd,EAAU,EAAGC,EAAY,EAAG,GAAI/qhB,KAAKszF,OAErH23b,GAAcjrhB,KAAKiqhB,cAAiBjqhB,KAAKslF,SAGpCtlF,KAAKiqhB,cAAiBjqhB,KAAKslF,UACjC2lc,EAAUjphB,YAAYhB,GAHtB6B,GAAW7C,KAAK+mhB,iBAAmB/mhB,KAAK86D,OAAO94D,YAAYhB,OAM9D,CACGA,EACA6B,GADU+mhB,EACC5phB,KAAKknhB,UAAwBlnhB,KAAKinhB,aAIjD,GAHIjnhB,KAAKorhB,WACLrve,GAAc/7C,KAAK8mhB,aAEnB9lhB,EACI4ohB,EACA5ohB,EAAQ40B,aAAa,IAAK51B,KAAKszF,MAG/BtzF,KAAKgkG,cAAchjG,EAAS2ohB,OAG/B,CACGsB,EAAYv4C,EAAMiqB,YAAY12B,YAAY,CAAExsd,GAAIzZ,KAAK+mhB,mBACrDrY,EAAalugB,SAASuuB,eAAe2jd,EAAM1xe,QAAQyY,GAAK,eAE5Di5d,EAAMoW,aAAe4lB,EAAW1sgB,YAAYiphB,GAAav4C,EAAMlG,UAAUxqe,YAAYiphB,GAEjFjqhB,EAD0B,UAAxB0xe,EAAM0iB,cACE1iB,EAAMiqB,YAAYt+F,cAAc,IAAIsrF,GAAW3pf,KAAKinhB,YAAa6D,EAAU,CAAEn1c,MAAOo1c,EAAYr7e,MAAO,GAAK,EAAGi6e,IAG/Gj3C,EAAMiqB,YAAY33F,SAAS,IAAI2mE,GAAW3re,KAAKknhB,UAAW4D,EAAU,EAAGC,EAAY,EAAG,GAAI/qhB,KAAKszF,OAG7G23b,EAAUjphB,YAAYhB,MASlCyxS,EAAUv2S,UAAUkoX,SAAW,SAAU3qW,GACrC,IAAI7c,EACJ,IAAKA,EAAI6c,EAAG5c,OAAS,EAAGD,EAAI,EAAGA,IAAK,CAChC,IAAI2kB,EAAI00B,OAAOx8B,EAAG7c,IAClB,GAAKwP,MAAMmV,GAIP,MAIR,OADa9H,EAAGpM,OAAOzQ,EAAI,EAAG6c,EAAG5c,OAAS,IAG9C41S,EAAUv2S,UAAUquhB,kBAAoB,SAAUhpgB,EAAGjL,GACjD,IAAImwgB,EAAczmhB,KAAK0ye,MAAMs3C,oBACzBqB,EAAerrhB,KAAK0ye,MAAMrG,WAAWxJ,sBACrCxub,EAASr0C,KAAKiqhB,cAAgBjqhB,KAAKslF,SACnC8lc,EAAYprhB,KAAK0ye,MAAMiqB,YAAY12B,YAAY,CAC/Cxsd,GAAIzZ,KAAK8mhB,aAAeL,EAAepye,EAASr0C,KAAKkqhB,YAAclqhB,KAAK86D,MAAS,IACjF9mC,MAAO,yCAEXo3f,EAAUpphB,YAAYhC,KAAK0ye,MAAMiqB,YAAY53B,WAAW,IAAI8kB,GAAa7pf,KAAK8mhB,YAAc,WAAaL,EAAepye,EAASr0C,KAAKkqhB,YAAclqhB,KAAK86D,MAAS,IAAK,UAAW,CAAE6a,MAAO01c,EAAc37e,MAAO,GAAK,EAAGnuB,EAAGjL,EAAG,MAC9N,IAAIipF,EAAY,MAAQh+E,EAAI,GAAK,KAAOjL,EAAI,GAAK,OAASiL,EAAI,GAAK,KAAOjL,EAAI,GAAK,OAASiL,EAAI,GAAK,KAAOjL,EAAI,GAC5G,OAASiL,EAAI,GAAK,KAAOjL,EAAI,GACjC80gB,EAAUpphB,YAAYhC,KAAK0ye,MAAMiqB,YAAY33F,SAAS,CAClDvrZ,GAAIzZ,KAAK8mhB,YAAc,UAClBL,EAAepye,EAASr0C,KAAKkqhB,YAAclqhB,KAAK86D,MAAS,IAAKjzD,EAAG03F,EACtEmrR,OAAQ2gK,EAAc,eAAgB,EAAGjvV,KAAMivV,KAEnDrrhB,KAAKorhB,UAAYA,EACjB,IAAI79C,EAAc1qe,GAAW7C,KAAK+mhB,kBAAoBN,EAAepye,EAASr0C,KAAKkqhB,YAAclqhB,KAAK86D,MAAS,KAC3Gyya,GACAA,EAAYvre,YAAYophB,IAShC34O,EAAUv2S,UAAUovhB,sBAAwB,SAAU54C,EAAO5rd,GACzD,GAAKA,EAAMmW,OAAOxjB,GAAGtb,QAAQ6B,KAAK8mhB,cAAgB,IAAuC,IAAhChggB,EAAM3b,KAAKhN,QAAQ,QAAiB,CACzF,IAAIothB,GAAmB,EACvB,GAAK74C,EAAMs3C,oBAAsB,CAC7B,IAAIxvgB,EAAQxa,KAAKokX,SAASt9V,EAAMmW,OAAOxjB,IACnC+xgB,EAAwB3ohB,GAAW7C,KAAKgnhB,gBAW5C,GAVAv9f,aAAO5mB,GAAW7C,KAAK+mhB,iBAAmBvsgB,IAC1Cxa,KAAKumhB,cAAc/rgB,GAAS,KAC5Bxa,KAAKgtgB,YAAYxyf,GAAS,KAC1Bxa,KAAKwmhB,oBAAoBhsgB,GAAS,KAC9BgxgB,GAAqE,IAA5CA,EAAsB9nd,oBAC/C3nB,GAAcyve,GACdxrhB,KAAKumhB,cAAgB,GACrBvmhB,KAAKgtgB,YAAc,GACnBhtgB,KAAKwmhB,oBAAsB,IAEN,UAArBxmhB,KAAK04gB,YAAyB,CAC9B,GAAoC,MAAhC14gB,KAAKqmhB,iBAAiB7rgB,GACtB,IAAK,IAAI5d,EAAI,EAAGA,EAAIoD,KAAKqmhB,iBAAiB7rgB,GAAO3d,OAAQD,IACrDoD,KAAKqmhB,iBAAiB7rgB,GAAO5d,GAAG0xS,UAAW,EAGnDtuS,KAAKqmhB,iBAAiB7rgB,GAAS,KAC/B,IAAK,IAAIrS,EAAI,EAAGA,EAAInI,KAAKqmhB,iBAAiBxphB,OAAQsL,IAC9C,GAAgC,MAA5BnI,KAAKqmhB,iBAAiBl+gB,GAAY,CAClCojhB,GAAmB,EACnB,IAAK,IAAI1hd,EAAI,EAAGA,EAAI7pE,KAAKqmhB,iBAAiBl+gB,GAAGtL,OAAQgtE,IACjD7pE,KAAKqmhB,iBAAiBl+gB,GAAG0hE,GAAGykO,UAAW,EAInDtuS,KAAKitgB,8BAA8Bv6B,EAAO1ye,KAAK2phB,UAAU,QAExD,GAAI3phB,KAAKgtgB,YAAYnwgB,OACtB,IAASD,EAAI,EAAGA,EAAIoD,KAAKgtgB,YAAYnwgB,OAAQD,IACrCoD,KAAKgtgB,YAAYpwgB,KACjB2uhB,GAAmB,EACnBvrhB,KAAKitgB,8BAA8Bv6B,EAAO1ye,KAAKgtgB,YAAYpwgB,IAAI,SAKvEoD,KAAKitgB,8BAA8Bv6B,EAAO,IAAIzH,GAAK,EAAG,EAAG,EAAG,IAAI,QAIpExhd,aAAO5mB,GAAW7C,KAAK+mhB,mBACvB/mhB,KAAKuphB,uBAAuB72C,EAAO1ye,KAAKqvgB,oBAAqB38B,EAAMzO,QAEvEjke,KAAKuohB,WAAW71C,EAAM1xe,QAAQyY,GAAIi5d,EAAM4c,eACxCtvf,KAAKyrhB,mBAAkB,EAAO/4C,EAAMlG,UAAW,QACzCkG,EAAMs3C,sBAAwBuB,IAChCvrhB,KAAKq1f,WAAa,QAU9B5iN,EAAUv2S,UAAUwvhB,sBAAwB,SAAUh5C,EAAO1pc,EAAUiwZ,EAAQh8Z,GAC3E,IAAIiT,EACJ,GAAMwic,EAAMs3C,qBAAyB/sf,EAAOxjB,GAAGtb,QAAQ,mBAAqB,GACxE6B,KAAKumhB,cAAcvmhB,KAAKkqhB,aAAc,CAClCjtf,EAAOxjB,GAAGtb,QAAQ,mBAAqB,IACvC6B,KAAKkqhB,YAAclqhB,KAAKokX,SAASnnV,EAAOxjB,KAE5C,IAAIqlB,EAAI9+B,KAAKumhB,cAAcvmhB,KAAKkqhB,aAChCh6e,EAAO,IAAI+6b,GAAKnsc,EAAEvd,EAAGud,EAAExoB,EAAGwoB,EAAE4Q,MAAO5Q,EAAE6Q,QAKzC,GAHM+ic,EAAMs3C,sBACR95e,EAAO,IAAI+6b,GAAKjre,KAAKq1f,WAAW9ze,EAAGvhB,KAAKq1f,WAAW/+e,EAAGtW,KAAKq1f,WAAW3ld,MAAO1vC,KAAKq1f,WAAW1ld,SAE7FO,EAAJ,CACI,IAAIy7e,EAAS3rhB,KAAK4rhB,eAAel5C,EAAMlG,UAAWt8b,EAAMlH,GACpDhpC,KAAKslF,WACLp1C,EAAOo2c,GAAuBp2c,EAAK3uB,EAAG2uB,EAAK55B,EAAI45B,EAAK3uB,EAAI2uB,EAAKR,MAASQ,EAAK55B,EAAI45B,EAAKP,OAAS+ic,EAAMyrB,qBAAqBjW,gBACxHlof,KAAK4qhB,iBAAiBl4C,EAAOxic,GAC7BlwC,KAAK2phB,SAAWz5e,GAEhB+oZ,IACAj5b,KAAKslF,SAAWqmc,KAO5Bl5O,EAAUv2S,UAAU0vhB,eAAiB,SAAUC,EAAgB37e,EAAMlH,GACjE,IAAI8if,EAAc,YACdH,GAAS,EACb,GAAK3rhB,KAAKslF,SAeL,CACD,IAAI/jE,EAAI2uB,EAAK3uB,EACTjL,EAAI45B,EAAK55B,EACTo5B,EAAS1G,EAASznB,EAAIA,EACtBouB,EAAU3G,EAAS1yB,EAAIA,EAC3B,OAAQtW,KAAK+rhB,YACT,KAAK,EACDp8e,EAASpoC,KAAKgH,IAAK2hC,EAAKP,OAASO,EAAK55B,EAAK0yB,EAAS1yB,GACpD45B,EAAK55B,EAAI/O,KAAK6L,IAAK88B,EAAKP,OAASO,EAAK55B,EAAI0yB,EAAS1yB,GACnD45B,EAAKP,OAASA,EACd,MACJ,KAAK,EACDD,EAAQnoC,KAAKgH,IAAK2hC,EAAKR,MAAQQ,EAAK3uB,EAAKynB,EAASznB,GAClD2uB,EAAK3uB,EAAIha,KAAK6L,IAAK88B,EAAKR,MAAQQ,EAAK3uB,EAAIynB,EAASznB,GAClD2uB,EAAKR,MAAQA,EACb,MACJ,KAAK,EACDQ,EAAKP,OAASpoC,KAAKgH,IAAIohC,GACvBO,EAAK55B,EAAI/O,KAAK6L,IAAI41B,EAAS1yB,EAAGA,GAC9B,MACJ,KAAK,EACD45B,EAAKR,MAAQnoC,KAAKgH,IAAImhC,GACtBQ,EAAK3uB,EAAIha,KAAK6L,IAAI41B,EAASznB,EAAGA,GAC9B,MACJ,KAAK,EACD2uB,EAAKR,MAAQnoC,KAAKgH,IAAImhC,GACtBQ,EAAKP,OAASpoC,KAAKgH,IAAIohC,GACvBO,EAAK3uB,EAAIha,KAAK6L,IAAI41B,EAASznB,EAAGA,GAC9B2uB,EAAK55B,EAAI/O,KAAK6L,IAAI41B,EAAS1yB,EAAGA,SArCtC,IALA,IAAI01gB,EAAc,CAAC,IAAI/gD,GAAK/6b,EAAK3uB,EAAI2uB,EAAK55B,EAAI45B,EAAKR,MAAQ,EAAG,GAC1D,IAAIu7b,GAAM/6b,EAAK3uB,EAAI2uB,EAAK55B,EAAG,EAAG45B,EAAKP,QACnC,IAAIs7b,GAAK/6b,EAAK3uB,EAAI2uB,EAAK55B,EAAI45B,EAAKP,OAAS,EAAIO,EAAKR,MAAQ,EAAG,GAC7D,IAAIu7b,GAAM/6b,EAAK3uB,EAAI2uB,EAAKR,MAAQ,EAAIQ,EAAK55B,EAAI,EAAG,EAAG45B,EAAKP,OAAS,IACjE,IAAIs7b,GAAM/6b,EAAK3uB,EAAI2uB,EAAKR,MAAQ,GAAMQ,EAAK55B,EAAI45B,EAAKP,OAAS,GAAK,GAAI,KACjE/yC,EAAI,EAAGA,EAAIovhB,EAAYnvhB,OAAQD,IACpC,GAAI2kf,GAAav4c,EAASznB,EAAGynB,EAAS1yB,EAAG01gB,EAAYpvhB,IAAK,CACtDkvhB,EAAqB,IAANlvhB,EAAWkvhB,EAAelvhB,EAAI,IAAM,EAAK,YAAc,YACtE+uhB,GAAS,EACT3rhB,KAAK+rhB,WAAanvhB,EAClB,MAyCZ,MALyB,UAArBoD,KAAK04gB,aACL14gB,KAAKyrhB,kBAAkBE,EAAQ9ohB,GAAY7C,KAAK0ye,MAAMs3C,oBAAuBhqhB,KAAKinhB,YAC9EjnhB,KAAKkqhB,YAAclqhB,KAAKinhB,aAAc6E,GAE9C9rhB,KAAKyrhB,kBAAkBE,EAAQE,EAAgBC,GACxCH,GAEXl5O,EAAUv2S,UAAUuvhB,kBAAoB,SAAUQ,EAAUC,EAAaJ,GACrEA,EAAcG,EAAWH,EAAe9rhB,KAAKiwE,QAAQu8Z,YAAc0/C,EAAe,OAAS,OACvFA,GACAA,EAAYt2f,aAAa,QAAS,UAAYk2f,EAAc,MAGpEr5O,EAAUv2S,UAAUqthB,uBAAyB,SAAU72C,EAAOl4d,EAAOmne,GAEjE,IAAI6a,EADJhif,EAAQk4d,EAAM42C,kBAAoB9ugB,EAAQA,EAAMV,OAAO,EAAGU,EAAM3d,QAEhE,IAAK,IAAImB,EAAK,EAAG+9f,EAAqBpa,EAAkB3jf,EAAK+9f,EAAmBl/f,OAAQmB,IAAM,CAC1F,IAAIime,EAAS83B,EAAmB/9f,GAChCw+f,EAAiBx8f,KAAK+nhB,kBAAkB9jD,GACxCjke,KAAKk4gB,aAAa1b,GAClB,IAAK,IAAIj5f,EAAK,EAAG4ohB,EAAmB3vB,EAAgBj5f,EAAK4ohB,EAAiBtvhB,OAAQ0G,IAAM,CACpF,IAAIw5f,EAAgBovB,EAAiB5ohB,GACrCvD,KAAKk4gB,aAAal4gB,KAAKmmhB,YAAYppB,OAI/CtqN,EAAUv2S,UAAU8nG,cAAgB,SAAU1yE,EAAKwyC,GAE/C,IADA,IACS9lE,EAAK,EAAGC,EADNC,OAAOjB,KAAK6mE,GACS9lE,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAIhB,EAAMiB,EAAOD,GACjBszB,EAAIsE,aAAa54B,EAAK8mE,EAAO9mE,MASrCy1S,EAAUv2S,UAAUkwhB,iBAAmB,SAAU15C,EAAO25C,EAAcC,EAAWrvf,GAC7E,IAAIiT,EACJ,IAAKlwC,KAAKslF,UAAYtlF,KAAKiqhB,eAAkBv3C,EAAMs3C,oBAAsB,CACrE,IAAIlrf,EAAI9+B,KAAKumhB,cAAcvmhB,KAAKkqhB,aAChCh6e,EAAO,IAAI+6b,GAAKnsc,EAAEvd,EAAGud,EAAExoB,EAAGwoB,EAAE4Q,MAAO5Q,EAAE6Q,aAGrCO,EAAO,IAAI+6b,GAAKjre,KAAKq1f,WAAW9ze,EAAGvhB,KAAKq1f,WAAW/+e,EAAGtW,KAAKq1f,WAAW3ld,MAAO1vC,KAAKq1f,WAAW1ld,QAEjGO,EAAK3uB,GAAM8qgB,EAAa9qgB,EAAImxd,EAAMoiB,OAClC5kd,EAAK55B,GAAM+1gB,EAAa/1gB,EAAIo8d,EAAMqiB,OAClC7kd,EAAOo2c,GAAuBp2c,EAAK3uB,EAAG2uB,EAAK55B,EAAG45B,EAAK3uB,EAAI2uB,EAAKR,MAAOQ,EAAKP,OAASO,EAAK55B,EAAGo8d,EAAMyrB,qBAAqBjW,gBAChHokC,EACAtshB,KAAK4qhB,iBAAiBl4C,EAAOxic,EAAMjT,GAGnCj9B,KAAKitgB,8BAA8Bv6B,EAAOxic,IASlDuiQ,EAAUv2S,UAAUwqhB,kBAAoB,SAAU7lhB,GAC9C,IAAI6xe,EAAQ1ye,KAAK0ye,MACW,SAAxBA,EAAM0iB,gBAGVp1f,KAAK04gB,YAAchmC,EAAM0iB,eACpBp1f,KAAKushB,UAAYvshB,KAAKslF,WAAatlF,KAAK2phB,SAASj6e,MAAQ,GAAK1vC,KAAK2phB,SAASh6e,OAAS,EACtF3vC,KAAKitgB,8BAA8Bv6B,EAAO1ye,KAAK2phB,YAExCj3C,EAAMs3C,qBAAwBhqhB,KAAKiqhB,cAC1CjqhB,KAAKq1f,WAAW3ld,OAAS1vC,KAAKq1f,WAAW1ld,QAGpC3vC,KAAKiqhB,cAAgBjqhB,KAAKumhB,cAAcvmhB,KAAKkqhB,aAAax6e,OAAS1vC,KAAKumhB,cAAcvmhB,KAAKkqhB,aAAav6e,SAF7G3vC,KAAKoshB,iBAAiB15C,EAAO1ye,KAAK2phB,UAKV,UAAxBj3C,EAAM0iB,eAA6Bp1f,KAAKushB,UAAYvshB,KAAKszF,OACzB,IAA5BtzF,KAAKszF,KAAKn1F,QAAQ,OACZu0e,EAAMs3C,oBAIHnnhB,GAAW7C,KAAKknhB,UAAYlnhB,KAAK86D,SACtCj4D,GAAW7C,KAAKknhB,UAAYlnhB,KAAK86D,OAAOllC,aAAa,IAAK51B,KAAKszF,KAAO,KACtEtzF,KAAKwshB,cAAc3phB,GAAW7C,KAAKknhB,UAAYlnhB,KAAK86D,UALpDj4D,GAAW7C,KAAKknhB,WAAWtxf,aAAa,IAAK51B,KAAKszF,KAAO,KACzDtzF,KAAKwshB,cAAc3phB,GAAW7C,KAAKknhB,cAMnClnhB,KAAKushB,UAAYvshB,KAAKslF,WACtBtlF,KAAKitgB,8BAA8Bv6B,EAAO1ye,KAAK2phB,WAI3D3phB,KAAKushB,UAAW,EAChBvshB,KAAKiqhB,cAAe,EACpBjqhB,KAAKslF,UAAW,EAChBtlF,KAAKsrhB,sBAAsB54C,EAAO7xe,KAEtC4xS,EAAUv2S,UAAUuwhB,YAAc,SAAU/5C,EAAOwV,GAC/C,OAAO5B,GAAuB5T,EAAM8hC,WAAY9hC,EAAMgiC,WAAYhiC,EAAMoiB,OAAQpiB,EAAMqiB,OAAQ7M,IAGlGz1M,EAAUv2S,UAAUsyC,UAAY,SAAUkkc,EAAOwV,EAAgBssB,EAAYE,EAAY5tf,GACrF,IAAI3J,EAAOu1d,EAAM0iB,cACjBp1f,KAAK04gB,YAAchmC,EAAM0iB,cACzBp1f,KAAKushB,UAAYpvgB,EAAKhf,QAAQ,SAAW,GAAc,UAATgf,KAAsBu1d,EAAMkiC,cAAgBliC,EAAMzrd,UACpE,eAAxByrd,EAAMyC,cACV,IAAIl4c,EAASnW,EAAMmW,OAUnB,GATAj9B,KAAKszF,UAAOt3F,EACRgE,KAAKushB,WACLvshB,KAAK86D,MAAQj4D,GAAW7C,KAAKgnhB,gBAAmBhnhB,KAAK86D,MAAQ,EAAK,EAClE96D,KAAK2phB,SAAW,IAAI1+C,GAAKyH,EAAM8hC,WAAY9hC,EAAMgiC,WAAY,EAAG,IAC5DhiC,EAAM8hC,WAAatsB,EAAe3me,GAAKmxd,EAAM8hC,WAActsB,EAAe3me,EAAI2me,EAAex4c,OAC7Fgjc,EAAMgiC,WAAaxsB,EAAe5xe,GAAKo8d,EAAMgiC,WAAcxsB,EAAe5xe,EAAI4xe,EAAev4c,UAC7F3vC,KAAKushB,UAAW,IAGX,UAATpvgB,EACA,IAAK,IAAInf,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIime,EAAS1ge,EAAGvF,GAChB,GAAIime,EAAO/ma,QACP,IAAK,IAAInoC,EAAK,EAAGI,EAAK8uc,EAAOtoZ,OAAQ5mD,EAAKI,EAAGt4B,OAAQk4B,IAAM,CACvD,IAAIqiB,EAAQjiB,EAAGJ,GACT29c,EAAMs3C,sBACR5ye,EAAMk3P,UAAW,IAMrC,GAAe,UAATnxR,IACEnd,KAAKq1f,aAAgB3iB,EAAMs3C,sBAC3BhqhB,KAAK2phB,SAAW,IAAI1+C,GAAKyH,EAAM8hC,WAAY9hC,EAAMgiC,WAAY,EAAG,GAChE10gB,KAAK0rhB,sBAAsBh5C,EAAO,IAAI0M,GAAco1B,EAAYE,IAAa,GAC7E10gB,KAAKiqhB,aAAe1oC,GAAaizB,EAAYE,EAAY10gB,KAAKq1f,aAE7D3iB,EAAMs3C,qBAAsB,CAC7B,IAAIxvgB,EAAQxa,KAAKokX,SAASnnV,EAAOxjB,IACjCzZ,KAAKkqhB,YAAclqhB,KAAK0shB,WAAWzvf,EAAOxjB,IAAMe,OAAQxe,EACpDgE,KAAKumhB,cAAc1phB,QAAUmD,KAAK0shB,WAAWzvf,EAAOxjB,MACpDzZ,KAAK0rhB,sBAAsBh5C,EAAO,IAAI0M,GAAco1B,EAAYE,IAAa,EAAMz3e,GACnFj9B,KAAKiqhB,aAAe1oC,GAAaizB,EAAYE,EAAY10gB,KAAKumhB,cAAc/rgB,OAK5Fi4R,EAAUv2S,UAAUwwhB,WAAa,SAAUjzgB,GACvC,OAAOA,EAAGtb,QAAQ,mBAAqB,GAG3Cs0S,EAAUv2S,UAAU21gB,UAAY,SAAU/qf,GACtC,IAAI4rd,EAAQ1ye,KAAK0ye,MACbz1c,EAASnW,EAAMmW,OACnB,GAA4B,SAAxBy1c,EAAMosB,eACD1hgB,YAAkB6/B,GAD3B,CAaA,GAA4B,SAAxBy1c,EAAM0iB,cAGS,cAAftue,EAAM3b,OAAyBkb,IAAQsmgB,OAAStmgB,IAAQumgB,SAAW5shB,KAAKushB,UAAYzlgB,EAAMwlB,gBAC1FxlB,EAAMwlB,iBAESi1c,GAAa7O,EAAMoiB,OAAQpiB,EAAMqiB,OAAQriB,EAAMyrB,qBAAqBjW,iBAE/Elof,KAAKiqhB,eAAiBjqhB,KAAKslF,SAC3BtlF,KAAKoshB,iBAAiB15C,EAAO1ye,KAAK2phB,UAAU,EAAM1sf,GAE7Cj9B,KAAKushB,WAAavshB,KAAKslF,WACA,UAAxBotZ,EAAM0iB,eACNp1f,KAAK6shB,QAAQn6C,EAAM8hC,WAAY9hC,EAAMgiC,WAAYhiC,EAAMoiB,OAAQpiB,EAAMqiB,QACrE/0f,KAAK4qhB,iBAAiBl4C,EAAO1ye,KAAK2phB,SAAU1sf,KAG5Cj9B,KAAK2phB,SAAW3phB,KAAKyshB,YAAY/5C,EAAOA,EAAMyrB,qBAAqBjW,gBACnElof,KAAK4qhB,iBAAiBl4C,EAAO1ye,KAAK2phB,SAAU1sf,MAGhDj9B,KAAKq1f,aAAgB3iB,EAAMs3C,qBAGpBt3C,EAAMs3C,sBAAyBhqhB,KAAKushB,UAAavshB,KAAKslF,WAF7DtlF,KAAK0rhB,sBAAsBh5C,EAAO,IAAI0M,GAAc1M,EAAMoiB,OAAQpiB,EAAMqiB,QAAS,KAAM93d,IAO3Fj9B,KAAK0mhB,kBAAkB5/f,OA1C3B,CAKQ,GAHIA,EAAMmW,OAAOxjB,GAAGtb,QAAQ,QAAU,IAClC8+B,EAASp6B,GAAWikB,EAAMmW,OAAOxjB,GAAG/c,QAAQ,OAAQ,WAEnDugC,EAAQkf,aAAa,WAAclf,EAAQ9N,aAAa,SAAShxB,QAAQ,cAAgB,GAC1F8+B,EAAO9N,aAAa,SAAShxB,QAAQ,cAAgB,GACrD,OAEJ6B,KAAK2mhB,0BAA0B7/f,KAoC3C2rR,EAAUv2S,UAAU2whB,QAAU,SAAUr0e,EAAQC,EAAQs5c,EAAMF,GACtD7xf,KAAKushB,WACDvshB,KAAKszF,KACLtzF,KAAKszF,KAAOtzF,KAAKszF,KAAO,KAAOy+Z,EAAO,IAAMF,EAG5C7xf,KAAKszF,KAAO,KAAO96C,EAAS,IAAMC,IAI9Cg6P,EAAUv2S,UAAUswhB,cAAgB,SAAUl5b,GAC1C,IAEItyF,EAFAjB,EAAQC,KACR0ye,EAAQ1ye,KAAK0ye,MAEbm7B,EAAUhrgB,GAAW6ve,EAAMk5B,OAAOvpe,wBAClCC,EAAUowc,EAAMyrB,qBAAqBjW,eAAe3me,EAAIha,KAAK8L,IAAIw6f,EAAQ/qe,KAAM,GAC/EJ,EAAUgwc,EAAMyrB,qBAAqBjW,eAAe5xe,EAAI/O,KAAK8L,IAAIw6f,EAAQ7qe,IAAK,GAClFhjC,KAAKqmhB,iBAAiBrmhB,KAAK86D,OAAS,GACpC,IAAK,IAAI98D,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAChDuF,EAAGvF,GACT29E,OAAOzqD,QAAO,SAAUkmB,GAEvBA,EAAMs/c,iBAAmBt/c,EAAMs/c,gBAAgB75f,SAC/CmE,EAAUR,SAASuyC,iBAAiBqE,EAAMs/c,gBAAgB,GAAGn1e,EAAI+gB,EAAS8U,EAAMs/c,gBAAgB,GAAGpgf,EAAIosB,IAEvG1hC,IAAYsyF,GACZl8C,EAAMk3P,UAAW,EACZvuS,EAAM2ye,MAAMs3C,qBAA8C,UAAtBjqhB,EAAM24gB,cAC3C34gB,EAAMsmhB,iBAAiBtmhB,EAAM+6D,OAAO/6D,EAAMgke,aAAe3sb,EACzDr3C,EAAMgke,gBAGH2O,EAAMs3C,sBACb5ye,EAAMk3P,UAAW,MAI7BtuS,KAAK+je,YAAc,GAOvBtxL,EAAUv2S,UAAU2+B,cAAgB,WAChC,MAAO,aAQX43Q,EAAUv2S,UAAUif,QAAU,WAC1Bnb,KAAK2pB,uBAGF8oR,EAv4CoB,CAw4C7BsyO,IC75CE+H,GAA2B,WAC3B,SAASA,KA4aT,OAhaAA,EAAU5whB,UAAU6whB,iBAAmB,SAAUhhf,EAAMihf,EAAW9kC,EAAgB37R,EAAY2wT,EAAaxqC,GACvG,IAAIu6C,EACAC,EACA9pJ,EAAcr3V,EAAKq3V,YACnB+pJ,EAAoC,aAAnBphf,EAAK8nc,UAC1B,GAAIm5C,EAAUI,UAA+B,OAAnBJ,EAAUxwc,KAChCywc,EAAc1gU,EACd2gU,EAAY,UAGZ,GAAuB,qBAAnBnhf,EAAK8nc,UAAkC,CACvC,IAAI32e,EAAQ8vhB,EAAU9vhB,MAClByb,EAAMq0gB,EAAUr0gB,IACpBs0gB,EAAwB,MAAT/vhB,GAAkC,kBAAVA,EACnC6uC,EAAK4/O,OAAOxtR,QAAQ6B,KAAKqthB,mBAAmBnwhB,EAAOw1e,GAAOvle,YAAcjQ,EAC5EgwhB,EAAoB,MAAPv0gB,GAA8B,kBAARA,EAC/BozB,EAAK4/O,OAAOxtR,QAAQ6B,KAAKqthB,mBAAmB10gB,EAAK+5d,GAAOvle,YAAcwL,OAG1Es0gB,EAAkC,OAApBD,EAAU9vhB,MAAiB,KAAOiwhB,GAAkBnthB,KAAKsthB,WAAWN,EAAU9vhB,OACxF8C,KAAKqthB,mBAAmBL,EAAU9vhB,MAAOw1e,IAAUs6C,EAAU9vhB,MACjEgwhB,EAA8B,OAAlBF,EAAUr0gB,IAAe,KAAOw0gB,GAAkBnthB,KAAKsthB,WAAWN,EAAU9vhB,OACpF8C,KAAKqthB,mBAAmBL,EAAUr0gB,IAAK+5d,IAAUs6C,EAAUr0gB,IAGvE,IAAIu3B,EAAOlwC,KAAKuthB,eAAeN,EAAaC,EAAWF,EAAUxwc,KAAMwwc,EAAUQ,cAAezhf,EAAMihf,GAClGr9e,EAA0B,aAAhByzV,GAA+BlzV,EAAK0gD,GAAK1gD,EAAK+4C,MAAQl9C,EAAKmE,KAAKP,OAASu4c,EAAev4c,OAClGD,EAAyB,eAAhB0zV,GAAiClzV,EAAK0gD,GAAK1gD,EAAK+4C,MAAQl9C,EAAKmE,KAAKR,MAAQw4c,EAAex4c,MAClGnuB,EAAqB,aAAhB6hX,EAA8B8kH,EAAe3me,EAAM2uB,EAAK+4C,KAAOl9C,EAAKmE,KAAKR,MAAS3D,EAAKmE,KAAK3uB,EACjGjL,EAAqB,eAAhB8sX,EAAgC8kH,EAAe5xe,EAAKy1B,EAAKmE,KAAK55B,EAAIy1B,EAAKmE,KAAKP,QACxD,UAAvBq9e,EAAUS,SAAuBv9e,EAAK+4C,KAAO/4C,EAAK0gD,IAAM7kD,EAAKmE,KAAKP,OACxE,GAAIq9e,EAAUU,aAAyC,MAA1BV,EAAUW,cAAgD,MAAxBX,EAAUY,YAA6C,UAAvBZ,EAAUS,SAAsB,CACvHvwhB,EAAQiwhB,GAAkBnthB,KAAKsthB,WAAWN,EAAUW,cACpD3thB,KAAKqthB,mBAAmBL,EAAUW,aAAcj7C,IAAUs6C,EAAUW,aACpEh1gB,EAAMw0gB,GAAkBnthB,KAAKsthB,WAAWN,EAAUY,YAClD5thB,KAAKqthB,mBAAmBL,EAAUY,WAAYl7C,IAAUs6C,EAAUY,WAHtE,IAIIC,EAAU7thB,KAAKuthB,eAAerwhB,EAAOyb,EAAK,KAAM,KAAMukgB,EAAa8P,GACvC,aAA5B9P,EAAY95I,aACZ9sX,EAAK4mgB,EAAYhte,KAAK55B,EAAI4mgB,EAAYhte,KAAKP,OACtCk+e,EAAQj9b,GAAKssb,EAAYhte,KAAKP,OACnCA,GAAUk+e,EAAQj9b,GAAKi9b,EAAQ5kc,MAAQi0b,EAAYhte,KAAKP,SAGxDpuB,EAAMssgB,EAAQ5kc,KAAOi0b,EAAYhte,KAAKR,MAASwte,EAAYhte,KAAK3uB,EAChEmuB,GAASm+e,EAAQj9b,GAAKi9b,EAAQ5kc,MAAQi0b,EAAYhte,KAAKR,OAG/D,OAAgB,IAAXC,GAA0B,IAAVD,GAAwC,UAAvBs9e,EAAUS,WAA6C,OAApBT,EAAU9vhB,OAAkB8vhB,EAAUQ,eACpG,IAAIviD,GAAK1pd,EAAGjL,EAAGo5B,EAAOC,GAE1B,IAAIs7b,GAAK,EAAG,EAAG,EAAG,IAY7B6hD,EAAU5whB,UAAUqxhB,eAAiB,SAAUrwhB,EAAOyb,EAAK6jE,EAAMgxc,EAAezhf,EAAMihf,GAClF,IAAI/jc,GAAS+jc,EAAUI,UAAYI,EAAiBzhf,EAAK8oc,aAAazhe,IAAMlW,EACxE0zF,EAAK5wF,KAAK8thB,WAAWvmhB,KAAK8L,IAAInW,EAAOE,YAAkBub,GAAOzb,EAAQyb,GAAMswE,EAAMzM,EAAMzwC,EAAMpzB,EAAKq0gB,GAGvG,OAFA/jc,EAAOjpF,KAAK+thB,UAAU9kc,EAAMl9C,GAC5B6kD,EAAK5wF,KAAK+thB,UAAUn9b,EAAI7kD,GACjB,CAAEk9C,KAAMoyZ,GAAmBtvc,EAAKuvc,WAAa1qZ,EAAK3H,EAAMl9C,GAAO6kD,GAAIyqZ,GAAmBtvc,EAAKuvc,WAAaryZ,EAAO2H,EAAI7kD,KAY9H+gf,EAAU5whB,UAAU4xhB,WAAa,SAAUl9b,EAAI3H,EAAMzM,EAAMzwC,EAAMpzB,EAAKq0gB,GAClE,IAAIS,EAAWT,EAAUS,SACrBO,EAAiB,OAARr1gB,EACb,GAAuB,aAAnBozB,EAAK8nc,UAwBL,MAA8B,UAAvBm5C,EAAUS,SAAuBxkc,EAAQ+kc,EAAS/kc,EAAOzM,EAAQoU,EAvBxE,IAAIq9b,EAAY,IAAI9khB,KAAK8/E,GAKzB,OAJiB,SAAbwkc,IACAA,EAAW1hf,EAAKy4e,mBAChBhoc,GAAQzwC,EAAK8oc,aAAatye,UAEtBkrhB,GACJ,IAAK,QACD,OAAQO,EAAQ,IAAI7khB,KAAK8khB,EAAU13gB,YAAY03gB,EAAU9mhB,cAAgBq1E,IAASoU,EACtF,IAAK,SACD,OAAQo9b,EAAQ,IAAI7khB,KAAK8khB,EAAU1iU,SAAS0iU,EAAUhnhB,WAAau1E,IAASoU,EAChF,IAAK,OACD,OAAQo9b,EAAQ,IAAI7khB,KAAK8khB,EAAUv3gB,QAAQu3gB,EAAUlnhB,UAAYy1E,IAASoU,EAC9E,IAAK,QACD,OAAQo9b,EAAQ,IAAI7khB,KAAK8khB,EAAUn3gB,SAASm3gB,EAAU1ghB,WAAaivE,IAASoU,EAChF,IAAK,UACD,OAAQo9b,EAAQ,IAAI7khB,KAAK8khB,EAAUj3gB,WAAWi3gB,EAAUh3gB,aAAeulE,IAASoU,EACpF,IAAK,UACD,OAAQo9b,EAAQ,IAAI7khB,KAAK8khB,EAAUlrd,WAAWkrd,EAAUjrd,aAAewZ,IAASoU,EACpF,QACI,OAAO3H,IAavB6jc,EAAU5whB,UAAU6xhB,UAAY,SAAUvxhB,EAAOuvC,GAO7C,OANIvvC,EAAQuvC,EAAK8oc,aAAazhe,IAC1B5W,EAAQuvC,EAAK8oc,aAAazhe,IAErB5W,EAAQuvC,EAAK8oc,aAAaxhe,MAC/B7W,EAAQuvC,EAAK8oc,aAAaxhe,KAEvB7W,GASXswhB,EAAU5whB,UAAUixF,UAAY,SAAU3wF,EAAOk2e,GAC7C,IAAIt+d,EAAas+d,EAAMzua,KAAKnoD,cAAc,CAAE5Q,SAAU,OAAQC,KAAM,aAChE2if,EAAgBpb,EAAMzua,KAAKtoD,cAAc,CAAEzQ,SAAU,OAAQC,KAAM,aACvE,OAAO,IAAIhC,KAAMA,KAAK6R,MAAM5G,EAAW05e,EAAc,IAAI3kf,KAAKuwD,KAAS1+C,MAAM2xE,UAAU,CAAE1nF,IAAKzI,IAASyI,UAU3G6nhB,EAAU5whB,UAAUyxgB,gBAAkB,SAAUj7B,EAAO3kc,EAAUwpC,GAC7D,IAMI/kE,EANAiH,EAAKi5d,EAAM1xe,QAAQyY,GAAK,cAAgBs0B,EAAW,IACnDm6c,EAAiBxV,EAAMyrB,qBAAqBjW,eAE5CpqT,EAAQ,EACRyuB,EAAa,EACb2wT,EAAc,KAEd5wgB,EAAU,IAAIq9e,GAAWlwe,EAAK,WAAY,cAAe,CAAEi2B,MAAO,EAAGimC,MAAO,QAAU,EAAG,CACzFp0D,EAAGmxd,EAAMsK,gBAAgBz7d,EAAGjL,EAAGo8d,EAAMsK,gBAAgB1me,EACrDo5B,MAAOgjc,EAAMsK,gBAAgBttc,MAC7BC,OAAQ+ic,EAAMsK,gBAAgBrtc,SAE9Bu+e,EAAiBx7C,EAAMtsM,SAAS6/L,YAAY,CAC5Cxsd,GAAIA,EAAK,cACT,YAAa,QAAUA,EAAV,cAEZi5d,EAAMoW,cACPolC,EAAelshB,YAAY6gf,GAAkBnQ,EAAMwK,OAAQ5we,EAASome,EAAMtsM,WAE9E,IAAK,IAAIpoS,EAAK,EAAGksU,EAAS3yP,EAAMv5E,EAAKksU,EAAOrtU,OAAQmB,IAGhD,IAFA,IAAI+tC,EAAOm+R,EAAOlsU,GACd88D,EAAQ,EACHv3D,EAAK,EAAGwxB,EAAKgX,EAAKire,WAAYzzgB,EAAKwxB,EAAGl4B,OAAQ0G,IAAM,CACzD,IAAIyphB,EAAYj4f,EAAGxxB,GACnB,GAAIyphB,EAAU9vd,SAAW8vd,EAAUtyZ,SAAW3sF,EAK1C,GAJIi/e,EAAUU,aAAyC,MAA1BV,EAAUW,cAAgD,MAAxBX,EAAUY,YAC9C,UAAvBZ,EAAUS,WACVvQ,EAAcl9gB,KAAKmuhB,eAAe52c,EAAMxrC,EAAMihf,IAE9CA,EAAUI,UAAqC,MAAzBJ,EAAUoB,aAA0C,OAAnBpB,EAAUxwc,MAAwC,UAAvBwwc,EAAUS,SAY5F,IAXA3vV,EAAkC,MAAzBkvV,EAAUqB,YAA4C,aAAnBtif,EAAK8nc,UAC7C7ze,KAAKqthB,mBAAmBL,EAAUqB,YAAa37C,IAAUs6C,EAAUqB,YAAetif,EAAKwnc,YAAYlge,IACvGk5M,EAAgC,aAAnBxgL,EAAK8nc,WAA4B7ze,KAAKsthB,WAAWN,EAAU9vhB,OACpE8C,KAAKqthB,mBAAmBL,EAAU9vhB,MAAOw1e,GAASs6C,EAAU9vhB,OAC3D8vhB,EAAUQ,eAAoC,aAAnBzhf,EAAK8nc,WAAmD,SAAvBm5C,EAAUS,UACtET,EAAU9vhB,MAAQ6uC,EAAK8oc,aAAazhe,OACrCm5M,EAAaxgL,EAAK4pc,cAAc,GAAGn5e,QAAUuvC,EAAK8oc,aAAazhe,IAAM24B,EAAK8oc,aAAazhe,IACnF24B,EAAK4pc,cAAc,GAAGn5e,OAA4B,aAAnBuvC,EAAK8nc,UAA2B9nc,EAAKm1c,iBAChEn1c,EAAK8oc,aAAatye,WAE9BgqN,EAAaygU,EAAUQ,eAAoC,aAAnBzhf,EAAK8nc,UAA2B9nc,EAAK8oc,aAAazhe,IAAMm5M,EACzFA,EAAazuB,GAEhBtrL,EAAQ6je,GADD9pR,GAAiC,aAAnBxgL,EAAK8nc,UAA2B9nc,EAAKm1c,kBAAoB8rC,EAAUxwc,KAAOwwc,EAAUxwc,MACrFzwC,EAAK8oc,eACpBtoR,GAAcxgL,EAAK8oc,aAAazhe,KAAOm5M,EAAaxgL,EAAK8oc,aAAaxhe,KAAQb,IAC/ExS,KAAKsuhB,uBAAuBvif,EAAMihf,EAAW9kC,EAAgBzue,EAAIy0gB,EAAgBx7C,EAAOnmR,EAAY2wT,EAAapid,GAErHA,IACAyxJ,EAAavsN,KAAKuuhB,cAAcxif,EAAMihf,EAAWzgU,EAAYmmR,QAIjE1ye,KAAKsuhB,uBAAuBvif,EAAMihf,EAAW9kC,EAAgBzue,EAAIy0gB,EAAgBx7C,EAAO,KAAMwqC,EAAapid,GAC3GA,IAKhB+qb,GAAmBnT,EAAMoW,aAAcpW,EAAMlG,UAAW0hD,EAAgBx7C,EAAMwK,SAQlF4vC,EAAU5whB,UAAUoxhB,WAAa,SAAU9whB,GACvC,MAAwB,kBAAVA,GASlBswhB,EAAU5whB,UAAUmxhB,mBAAqB,SAAU7whB,EAAOk2e,GACtD,OAAO1ye,KAAKmtF,UAAU3wF,EAAOk2e,GAAOrwd,WAYxCyqgB,EAAU5whB,UAAUsyhB,WAAa,SAAUxB,EAAW98e,EAAMz2B,EAAIlZ,EAAQmye,EAAO3mc,GAC3E,IAAI/qC,EAAU6B,GAAW4W,GACrB8lF,EAAYv+F,EAAUA,EAAQmuB,aAAa,KAAO,GAClDtnB,EAA0B,aAArBkkC,EAAKq3V,YAA+B,IAAMlzV,EAAK3uB,EAAI,IAAM2uB,EAAK55B,EAA1B,MAA2C45B,EAAK3uB,EAAI2uB,EAAKR,OAChG,IAAMQ,EAAK55B,EACZ,IAAM45B,EAAK3uB,EAAI,IAAM2uB,EAAK55B,EAA1B,KAA0C45B,EAAK3uB,EAAI,KAAO2uB,EAAK55B,EAAI45B,EAAKP,QAC7Ek2c,GAAmBnT,EAAMoW,aAAcvof,EAAQmye,EAAMtsM,SAAS4+H,SAAS,IAAI2mE,GAAWlyd,EAAI,OAAQuzgB,EAAUxwc,KAAMwwc,EAAUr3c,MAAOq3c,EAAUrpf,QAASqpf,EAAUxlD,UAAW3/d,IAAK6qe,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM39Y,GAAW,IAWnOutb,EAAU5whB,UAAUuyhB,gBAAkB,SAAUzB,EAAW98e,EAAMz2B,EAAIlZ,EAAQmye,GACzE,IAAI1xe,EAAU6B,GAAW4W,GACrBwse,EAAejlf,EAAU,IAAIiqe,IAAMjqe,EAAQmuB,aAAa,MAAOnuB,EAAQmuB,aAAa,MAAOnuB,EAAQmuB,aAAa,UAAWnuB,EAAQmuB,aAAa,WAAa,KACjK02d,GAAmBnT,EAAMoW,aAAcvof,EAAQmye,EAAMtsM,SAASi4H,cAAc,IAAIsrF,GAAWlwe,EAAIuzgB,EAAUr3c,MAAOq3c,EAAUrkX,OAAQqkX,EAAUrpf,QAASuM,EAAM,EAAG,EAAG,GAAI88e,EAAUxlD,YAAakL,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM,MAAM,GAAM,EAAM+I,IAYtP6mC,EAAU5whB,UAAU4we,WAAa,SAAUkgD,EAAW98e,EAAMz2B,EAAIlZ,EAAQmye,EAAO3mc,GAC3E,IAMI6+D,EANA+0T,EAAW2qE,GAAY0iD,EAAUz6gB,KAAMy6gB,EAAU5+C,WACjDsgD,EAAyC,OAAvB1B,EAAUvxL,SAC5BkzL,EAAUD,EAAsB/uH,EAAShwX,OAAS,EAAvB,EAA4B,EACvDi/e,EAAK1+e,EAAK55B,EAAK45B,EAAKP,OAAS,EAAKg/e,EAClClzL,EAAWizL,EAAwC,aAArB3if,EAAKq3V,YAA8B,GAAK,GAAM4pJ,EAAUvxL,SACtFozL,EAAK3+e,EAAK3uB,EAAK2uB,EAAKR,MAAQ,EAGP,eAArB3D,EAAKq3V,aACLyrJ,EAAK7uhB,KAAK8uhB,aAAaD,EAAMF,EAAU3uhB,KAAKoiZ,OAAO4qI,EAAU+B,qBAAuB7+e,EAAKR,MAAOs9e,EAAU+B,qBAC1GH,EAAK5uhB,KAAK8uhB,aAAaF,EAAKD,EAASz+e,EAAKP,OAAQq9e,EAAU5hJ,oBACvB,UAAhC4hJ,EAAU5hJ,mBAAkCsjJ,EAAyC,EAAvB/uH,EAAShwX,OAAS,GACrFi7D,EAAS8jb,EAAiB1uhB,KAAKgvhB,gBAAgBhC,EAAU5hJ,mBAAqB4hJ,EAAU+B,sBAGxFF,EAAK7uhB,KAAK8uhB,aAAaD,EAAI3+e,EAAKR,MAAOs9e,EAAU+B,qBACjDH,EAAK5uhB,KAAK8uhB,aAAaF,EAAMD,EAAU3uhB,KAAKoiZ,OAAO4qI,EAAU5hJ,mBATnD,EASkFl7V,EAAKP,OAAQq9e,EAAU5hJ,mBACnHxgS,EAASoib,EAAU+B,qBAEvB7+C,GAAYwC,EAAMtsM,SAAU,IAAIglM,GAAW3xd,EAAIo1gB,EAAID,EAAIhkb,EAAQoib,EAAUz6gB,KAAM,UAAYkpV,EAAW,IAAMozL,EAAK,IAAMD,EAAK,IAAK,UAAW5B,EAAU5+C,UAAW4+C,EAAU5+C,UAAUz4Z,MAAOp1E,EAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAM,KAAMmye,EAAMoW,eAE9PgkC,EAAU5whB,UAAU8yhB,gBAAkB,SAAUpkb,GAC5C,OAAQA,GACJ,IAAK,QACDA,EAAS,MACT,MACJ,IAAK,MACDA,EAAS,QAGjB,OAAOA,GAWXkib,EAAU5whB,UAAUqyhB,cAAgB,SAAUxif,EAAMihf,EAAWzgU,EAAYmmR,GACvE,MAAuB,aAAnB3mc,EAAK8nc,UACG7ze,KAAK8thB,WAAW,KAAMvhU,GAAaygU,EAAUoB,YAAarif,EAAM,KAAMihf,GAGvEzgU,IAAeygU,EAAUoB,aAUxCtB,EAAU5whB,UAAUiyhB,eAAiB,SAAU52c,EAAMxrC,EAAMihf,GACvD,IAAI93R,EACJ,GAAiC,MAA7B83R,EAAUiC,gBACV,MAA6B,eAArBljf,EAAKq3V,YAAgC7rT,EAAK,GAAKA,EAAK,GAG5D,IAAK,IAAI36E,EAAI,EAAGA,EAAI26E,EAAK16E,OAAQD,IACzBowhB,EAAUiC,kBAAoB13c,EAAK36E,GAAGwd,OACtC86O,EAAU39K,EAAK36E,IAGvB,OAAOs4P,GAgBf43R,EAAU5whB,UAAUoyhB,uBAAyB,SAAUvif,EAAMihf,EAAW9kC,EAAgBzue,EAAIy0gB,EAAgBx7C,EAAOnmR,EAAY2wT,EAAapid,GACxI,IAAI5qB,EAAOlwC,KAAK+shB,iBAAiBhhf,EAAMihf,EAAW9kC,EAAgB37R,EAAY2wT,EAAaxqC,GAChE,UAAvBs6C,EAAUS,SACVzthB,KAAKwuhB,WAAWxB,EAAW98e,EAAMz2B,EAAK,QAAUsyB,EAAK3xB,KAAO,IAAM0gD,EAAOozd,EAAgBx7C,EAAO3mc,GAG5E,IAAhBmE,EAAKP,QAA+B,IAAfO,EAAKR,OAC1B1vC,KAAKyuhB,gBAAgBzB,EAAW98e,EAAMz2B,EAAK,QAAUsyB,EAAK3xB,KAAO,IAAM0gD,EAAOozd,EAAgBx7C,GAG/E,KAAnBs6C,EAAUz6gB,MACVvS,KAAK8se,WAAWkgD,EAAW98e,EAAMz2B,EAAK,QAAUsyB,EAAK3xB,KAAO,IAAM0gD,EAAOozd,EAAgBx7C,EAAO3mc,IAQxG+gf,EAAU5whB,UAAUkmZ,OAAS,SAAUx3S,GACnC,IAAIw3S,EAAS,EACb,OAAQx3S,GACJ,IAAK,QACDw3S,EAAS,EACT,MACJ,IAAK,MACDA,GAAU,EAGlB,OAAOA,GASX0qI,EAAU5whB,UAAU4yhB,aAAe,SAAUI,EAAI1yc,EAAM2uT,GAEnD,OAAQA,GACJ,IAAK,QACD+jJ,EAAKA,EAAM1yc,EAAO,EAHZ,EAIN,MACJ,IAAK,MACD0yc,EAAKA,EAAM1yc,EAAO,EANZ,EASd,OAAO0yc,GAOXpC,EAAU5whB,UAAU2+B,cAAgB,WAChC,MAAO,aAOXiyf,EAAU5whB,UAAUif,QAAU,aAGvB2xgB,EA7aoB,GCE3BqC,GAA2B,WAM3B,SAASA,EAAUz8C,GACf1ye,KAAKovhB,YAAc,EACnBpvhB,KAAK0ye,MAAQA,EA6yBjB,OA3yBAy8C,EAAUjzhB,UAAU2qhB,qBAAuB,SAAU5iD,EAAQjtE,GACzD,IAAIxzX,EAAY,GACZ0pV,EAAW,GACXx9V,EAASu0c,EAAOyO,MAAMtsM,SACtB5rR,OAA0Bxe,IAAjBioe,EAAOzpd,MAAuBypd,EAAO5rX,SAAW4rX,EAAOzpd,MACjC,cAA/Bypd,EAAOyO,MAAMyC,gBACb3xc,EAAY,aAAeygc,EAAOj7D,SAASznZ,EAAI,IAAO0id,EAAOj7D,SAAS1yZ,EAAK,IAC3E42W,EAAW,QAAUltX,KAAK0ye,MAAM1xe,QAAQyY,GAAK,wBAA0Be,EAAQ,KAE/Ew8Y,EAAO4tF,UAAU1nb,UACjB+ma,EAAOi5B,aAAexte,EAAOu2c,YAAY,CACrC,GAAMjme,KAAK0ye,MAAM1xe,QAAQyY,GAAK,aAAee,EAC7C,UAAagpB,EACb,YAAa,QAAUxjC,KAAK0ye,MAAM1xe,QAAQyY,GAAK,wBAA0Be,EAAQ,MAErFypd,EAAOiM,YAAcxgd,EAAOu2c,YAAY,CACpC,GAAMjme,KAAK0ye,MAAM1xe,QAAQyY,GAAK,YAAce,EAC5C,UAAagpB,EACb,YAAa0pV,KAGrBltX,KAAK0xe,aAAiC,YAAhBzN,EAAO94d,MAAsB6rZ,EAAO95V,QAAa85V,EAAOrnX,OAAS,EAAK,EAC5F3vC,KAAKqvhB,SAAWrvhB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,WAAae,EAAQ,UAC7Dxa,KAAKsvhB,qBAAqBrrD,EAAQA,EAAOjtE,OAAO4tF,UAAU72c,UAC1D/tC,KAAKuvhB,gBAAsD,gBAApCvvhB,KAAK0ye,MAAMme,UAAUlgT,WACxC3wM,KAAK0ye,MAAM/hS,YAAc3wM,KAAK0ye,MAAMrG,WAAW17R,WAAa3wM,KAAK0ye,MAAMme,UAAUlgT,YAEzFw+U,EAAUjzhB,UAAUozhB,qBAAuB,SAAUrrD,EAAQl2b,GACzD,IAAKk2b,EAAO/B,SAAShla,QACjB,OAAO,KAEN,GAAI+ma,EAAO/B,SAAShla,SAAwC,eAA7Bl9D,KAAK0ye,MAAMyC,cAAgC,CAC3E,IAAI51Y,EAAY0kY,EAAO/B,SAAS3iY,UAC5Biwb,EAAiBxvhB,KAAK0ye,MAAM4pB,eAAekzB,eAC3CC,EAAiBzvhB,KAAK0ye,MAAM4pB,eAAemzB,eAC3CzvhB,KAAKg1f,aAAa/wB,IACD,QAAbl2b,GAAmC,SAAbA,IAElB/tC,KAAKovhB,YADS,SAAd7vb,GAAsC,UAAdA,EACLkwb,EAGA,GAGV,UAAb1hf,GAAqC,SAAbA,IAEpB/tC,KAAKovhB,YADS,SAAd7vb,GAAsC,SAAdA,EACLiwb,EAGA,KAKV,QAAbzhf,GAAmC,UAAbA,GAAqC,SAAbA,IAC3B,SAAdwxD,GAAsC,SAAdA,GAA2B0kY,EAAOyO,MAAMuiB,aAIjEj1f,KAAKovhB,YAAc,EAHnBpvhB,KAAKovhB,YAAcI,GAMV,WAAbzhf,GAAsC,SAAbA,IAErB/tC,KAAKovhB,YADS,SAAd7vb,GAAsC,UAAdA,EACLkwb,EAGA,SAM/BzvhB,KAAKovhB,YAAc,GAG3BD,EAAUjzhB,UAAU84f,aAAe,SAAU/wB,GACzC,OAAOA,EAAO+wB,cAAgC,cAAhB/wB,EAAO94d,MAOzCgkhB,EAAUjzhB,UAAUwzB,OAAS,SAAUu0c,EAAQyO,EAAOkS,GAGlD,IAAI10c,EADJlwC,KAAK6mhB,qBAAqB5iD,EAAQA,EAAOjtE,QAEzC,IACI04H,EACAC,EACA5iD,EACApkU,EACAg3P,EACAnuB,EACA0tG,EAPA0wC,EAAgB,CAAErugB,EAAG,EAAGjL,EAAG,GAQ/BtW,KAAKkue,SAAWwE,EAAM6B,oBACtBv0e,KAAK6vhB,cAAgB5rD,EAAOtkW,MAAM27W,WAclC,IAbA,IASIlkc,EACAw8c,EACAC,EAXA3W,EAASxK,EAAMwK,OACf4yC,GAAqB,EACrBpwC,EAA2B,GAC3Bzxd,EAAaykd,EAAM1xe,QAAQyY,GAAK,iBACdzd,IAAjBioe,EAAOzpd,MAAsBypd,EAAO5rX,SAAW4rX,EAAOzpd,OAAS,wBAChExZ,EAAUG,YAAc,MAAO,CAC/BsY,GAAIwU,IAEJ0td,EAAgBoC,GAAiB9Z,GAK5Brne,EAAI,EAAGA,EAAI++e,EAAc9+e,OAAQD,IAAK,CAE3C,GADAw6C,EAAQukc,EAAc/+e,IACjBgof,EAAUmrC,WAA0B,IAAZ34e,EAAM9gC,GAAyB,IAAZ8gC,EAAM9gC,GAA8C,SAAnC2td,EAAOu1B,mBAAmBr8e,MACvF,OAAO,KAEXnd,KAAKqtC,OAASu3c,EAAUv3c,OACxB,IAAI0vc,EAAY,GACZizC,OAAc,EACdC,OAAO,EACPC,OAAO,EACP33L,OAAS,EACTC,OAAS,EACTwnH,GAAW,EACXx0E,EAAOy4F,EAAOj7D,SACdmnH,OAAY,EAChBL,GAAqB,EACrBt+I,EAAQ0tG,EAAS0F,EAAUpzG,MAC3B7oO,EAAS,CAAEj5H,MAAOk1c,EAAUj8U,OAAOj5H,MAAOimC,MAAOiva,EAAUj8U,OAAOhzF,OAClE,IAAIy6c,EAAY9xhB,YAAO,GAAIjC,YAAS,aAAcuof,EAAU/na,MAAO,MAAM,GACzE,GAAKzlC,EAAMs/c,gBAAgB75f,QAAUu6C,EAAMs/c,gBAAgB,IACtC,kBAAhBzyB,EAAO94d,MAA4BisC,EAAMw+c,QAAQ/4f,OAAS,CAE3DmzhB,GADAjzC,EAAY0J,GAAarvc,EAAO6sb,EAAQyO,IAChB71e,OACxB,IAAK,IAAI6oE,EAAM,EAAGA,EAAMsqd,EAAatqd,IAQjC,GAPAqna,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMw8d,GAAY3S,OAAQA,EACzC7sb,MAAOA,EAAO7kC,KAAMwqe,EAAUr3a,GAAMijG,OAAQA,EAC5ChzF,MAAOiva,EAAUxoT,KAAM9wK,SAAUs5d,EAAUt5d,SAAUuxD,KAAMuzc,EAAUpnf,SAAU4mf,EAC/EjwH,SAAU2qE,GAAYyS,EAAUr3a,GAAMk/a,EAAU/na,OAEpD61Z,EAAM3od,QAAQ6sd,GAAY7J,IACrBA,EAAShqd,OAIV,GAHA/iB,KAAKqwhB,eAAiBtjD,EAASp3Z,MAC/B31E,KAAKswhB,iBAAiBvjD,GACtB/se,KAAK0xe,aAA+B,WAAhBzN,EAAO94d,KAAqBisC,EAAMw+c,QAAQ,GAAGjmd,OAAS,EAAK3vC,KAAK0xe,aAC1D,OAAtB3E,EAASzhd,SACTtrB,KAAKuwhB,wBAAwBvvhB,EAASije,EAAQ2gB,EAAWxtc,EAAO21b,EAAUrna,EAAKw3a,OAE9E,CAID,GAHAv9E,EAAW2qE,GAAYyC,EAASx6d,KAAMqye,EAAU/na,MAChD3sC,EAAOlwC,KAAKwwhB,sBAAsBp5e,EAAO6sb,EAAQtkE,EAAUilF,EAAWl/a,GAE1C,eAAxBgta,EAAMyC,cACN,IAAK,IAAIn3e,EAAK,EAAGuF,EAAKmve,EAAMyrB,qBAAqBsyB,qBAAsBzyhB,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzF,IAAI0yhB,EAAanthB,EAAGvF,GACpB,GAAImpf,GAAU,IAAIlc,GAAK/6b,EAAK3uB,EAAG2uB,EAAK55B,EAAG45B,EAAKR,MAAOQ,EAAKP,QAAS+gf,GAAa,CAC1E1wE,GAAW,EACX,OAIZ,IAAI2wE,EAAa,IAAI1lD,GAAK/6b,EAAK3uB,EAAIiqX,EAAKjqX,EAAG2uB,EAAK55B,EAAIk1X,EAAKl1X,EAAG45B,EAAKR,MAAOQ,EAAKP,QAE7E,GAAIi1c,EAAUgsC,gBAMV,GAFAlxC,EAA2BJ,GAHLt/e,KAAK2zf,mBAAmBzjd,GAC9C0jd,EAAc1jd,EAAK3uB,EAAK2uB,EAAKR,MAAQ,EACrCmkd,EAAe3jd,EAAK55B,EAAK45B,EAAKP,OAAS,EAC8D6hW,KACrGs+I,EAAqB9vhB,KAAK6whB,iCAAiCnxC,EAA0BhN,EAAOlnG,IACnE,CACrBxrY,KAAK0ye,MAAMw4B,4BAA4BtpgB,KAAK89e,GAE5C,IADA,IAAIoxC,EAAoB9whB,KAAK0ye,MAAMw4B,4BAA4BrugB,OAAS,EAC/D2d,EAAQs2gB,EAAmBt2gB,GAAS,EAAGA,IAC5C,GAAIxa,KAAK0ye,MAAMw4B,4BAA4B4lB,IACvC9whB,KAAK0ye,MAAMw4B,4BAA4B1wf,EAAQ,IAC/Cule,GAAuB//e,KAAK0ye,MAAMw4B,4BAA4B4lB,GAAoB9whB,KAAK0ye,MAAMw4B,4BAA4B1wf,EAAQ,IAAK,CACtIs1gB,GAAqB,EACrB9vhB,KAAK0ye,MAAMw4B,4BAA4B4lB,GAAqB,KAC5D,aAMZhB,EAAqB3yZ,GAAUjtF,EAAMwic,EAAMuS,qBAAsBz5G,GAE/DskJ,GAAyD,SAAnClrC,EAAUzI,uBAAoCn8B,IACtE0yB,EAAMuS,qBAAqBrjf,KAAK+uhB,GAC5B3whB,KAAK+whB,UACLZ,EAAYz9C,EAAMtsM,SAASi4H,cAAc,IAAIsrF,GAAW3pf,KAAKqvhB,SAAWj4e,EAAM58B,MAAQ,cAAgBkrD,EAAKqna,EAASp3Z,MAAOo3Z,EAASpkU,OAAQi8U,EAAUjhd,QAASuM,EAAM00c,EAAU/9E,GAAI+9E,EAAU99E,IAAK,IAAIvgE,WAAW,CAACilC,EAAKjqX,EAAGiqX,EAAKl1X,KAC3N2td,EAAOi5B,cACPj5B,EAAOi5B,aAAal7f,YAAYmuhB,IAIxCT,EAAWnoC,GAAkBE,GAAeznf,KAAKqwhB,iBACjDV,EAAWpohB,KAAKooI,OAAoB,IAAb+/Y,EAAS5wf,EAAuB,IAAb4wf,EAAS51R,EAAuB,IAAb41R,EAAS/nhB,GAAW,KACjFsohB,EAAQ//e,EAAK3uB,EAAIvhB,KAAKqtC,OAAOvK,KAAO68X,EAASjwX,MAAQ,EAAKkgf,EAAcrugB,EACxE2ugB,EAAQhgf,EAAK55B,EAAItW,KAAKqtC,OAAOrK,IAAwB,EAAlB28X,EAAShwX,OAAa,EAAKigf,EAAct5gB,EAC5Es5gB,EAAgB,CAAErugB,EAAG,EAAGjL,EAAG,GACb,IAAVk7X,GAAeozG,EAAUgsC,gBAEzBr4L,EAASq7J,EAGTp7J,EAASq7J,EACT3U,EAAU1tG,EAAQ,IAAOA,EAAQ,IAAOA,GAAS,IAAOA,EAAQ,IAAMA,IAGtE0tG,EAAS,EACT3mJ,EAASroT,EAAK3uB,EACdi3U,EAAStoT,EAAK55B,GAElB45d,GAAYwC,EAAMtsM,SAAU,IAAIglM,GAAWpre,KAAKqvhB,SAAWj4e,EAAM58B,MAAQ,SAAWkrD,EAAKuqd,EAAMC,EAAM,SAAUnjD,EAASx6d,KAAM,UAAY2se,EAAS,IAAO3mJ,EAAU,IAAOC,EAAU,IAAK,OAAQ0mJ,GAASnS,EAASlwZ,KAAMkwZ,EAASlwZ,KAAKlH,QAClOg6c,GAAY,KAAuB,SAAhB1rD,EAAO94d,KAAmB,QAAU,SAAU84d,EAAOiM,aAAa,EAAOgN,GAAQ,GAAM,EAAOjZ,EAAOyO,MAAM5xc,SAAUmjc,EAAOj7D,SAAU,EAAM,KAAM0pE,EAAMoW,iBAOrM9nf,EAAQ0iE,oBACHgva,EAAMoW,aAMPjmf,GAAW6ve,EAAM1xe,QAAQyY,GAAK,sBAAsBzX,YAAYhB,GALhE6kf,GAAmBnT,EAAMoW,aAAcjmf,GAAW6ve,EAAM1xe,QAAQyY,GAAK,sBAAuBzY,EAAS0xe,EAAMwK,QAE3G,EAAO,IAAK,IAAK,KAAM,IAAI,GAAO,EAAO,KAAMxK,EAAM5xc,YAUjEquf,EAAUjzhB,UAAUy3f,mBAAqB,SAAUzjd,GAK/C,MAAO,CAJI,IAAIkvc,GAAclvc,EAAK3uB,EAAG2uB,EAAK55B,GAC/B,IAAI8oe,GAAclvc,EAAK3uB,EAAI2uB,EAAKR,MAAOQ,EAAK55B,GAC5C,IAAI8oe,GAAclvc,EAAK3uB,EAAI2uB,EAAKR,MAAOQ,EAAK55B,EAAI45B,EAAKP,QACrD,IAAIyvc,GAAclvc,EAAK3uB,EAAG2uB,EAAK55B,EAAI45B,EAAKP,UAGvDw/e,EAAUjzhB,UAAU20hB,iCAAmC,SAAUn9B,EAAiBhhB,EAAOlnG,GACrF,IAAK,IAAIhxX,EAAQ,EAAGA,EAAQk5e,EAAgB72f,OAAQ2d,IAChD,IAAK+me,GAAamS,EAAgBl5e,GAAO+G,EAAIiqX,EAAKjqX,EAAGmye,EAAgBl5e,GAAOlE,EAAIk1X,EAAKl1X,EAAGo8d,EAAMsK,iBAC1F,OAAO,EAGf,OAAO,GAQXmyC,EAAUjzhB,UAAUq0hB,wBAA0B,SAAU38e,EAAeqwb,EAAQ2gB,EAAWxtc,EAAOv8B,EAAMmqe,EAAY9H,GAC/Gl9e,KAAKqtC,OAAS,CAAEvK,KAAM,EAAGC,MAAO,EAAGE,OAAQ,EAAGD,IAAK,GACnD,IAAIwoW,EAAOy4F,EAAOj7D,SACd07E,EAAe9X,GAAezre,YAAc,MAAO,CACnDsY,GAAIzZ,KAAK0ye,MAAM1xe,QAAQyY,GAAK,iBAA+Bzd,IAAjBioe,EAAOzpd,MAAsBypd,EAAO5rX,SAAW4rX,EAAOzpd,OAAS,cACnG48B,EAAM58B,OAASwqe,EAAc,IAAMA,EAAc,IACvDjxd,OAAQ,uCAAyClZ,EAAK86D,MAAQ,IAC1D2/W,GAAasvD,EAAU/na,MAAQ,WAAahiE,EAAK8tJ,OAAOj5H,MAAQ,YAAc70B,EAAK8tJ,OAAOhzF,MAAQ,MACtGv+B,EAAM58B,MAAOK,EAAKyQ,SAAUtrB,KAAK0ye,MAAOt7b,EAAO6sb,EAAQjke,KAAK0ye,MAAM1xe,QAAQyY,GAAK,aAAcure,GACjGhlf,KAAKmlf,2BAA2Bvxc,EAAe8wc,EAActtc,EAAO6sb,EAAQ2gB,EAAWI,EAAYx5G,EAAM0xG,IAE7GiyC,EAAUjzhB,UAAUipf,2BAA6B,SAAUvxc,EAAe8wc,EAActtc,EAAO6sb,EAAQ2gB,EAAWI,EAAYx5G,EAAM0xG,EAAQuI,GACxI,IAAIj7Y,EAAcg7Y,GAAmBd,EAAcxH,EAAQuI,GACvDv1c,EAAOlwC,KAAKwwhB,sBAAsBp5e,EAAO6sb,EAAQ,CAAEv0b,MAAO86D,EAAY96D,MAAOC,OAAQ66D,EAAY76D,QAAUi1c,EAAWI,GAGtHmC,GAAY,EACZ1B,IACA0B,EAAmC,IAAtB38Y,EAAY96D,OAAsC,IAAvB86D,EAAY76D,QAKxD+0c,EAAa1wd,MAAM8O,MAAsC,eAA7B9iC,KAAK0ye,MAAMyC,cAAiC,EAAIlR,EAAOj7D,SAASznZ,GAAK2uB,EAAK3uB,EATtF,EASuG,KACvHmje,EAAa1wd,MAAMgP,KAAqC,eAA7BhjC,KAAK0ye,MAAMyC,cAAiC,EAAIlR,EAAOj7D,SAAS1yZ,GAAK45B,EAAK55B,EATpF,EASsG,KACvH,IAAIo5gB,EAAWnoC,GAAkBE,GAAeznf,KAAKqwhB,iBACjDW,EAAQ/sD,EAAOyO,MAAM6B,oBAAsBtQ,EAAOpkW,MAAQokW,EAAOtkW,MACjEsxZ,EAAQhtD,EAAOyO,MAAM6B,oBAAsBtQ,EAAOtkW,MAAQskW,EAAOpkW,MACrE6kX,EAAa1wd,MAAM2hD,MAAQiva,EAAU/na,KAAKlH,QACpCpuE,KAAKooI,OAAoB,IAAb+/Y,EAAS5wf,EAAuB,IAAb4wf,EAAS51R,EAAuB,IAAb41R,EAAS/nhB,GAAW,MAAU,IAAM,QAAU,SAClG+8e,EAAahhb,oBAAsByjb,KAAehqX,GAAUjtF,EAAMlwC,KAAK0ye,MAAMuS,qBAAsBz5G,IAChE,SAAnCo5G,EAAUzI,wBAA2D,OAAtBlY,EAAO0iB,iBAAwC3qf,IAAjBo7C,EAAMohT,QACnF69I,GAAOj/b,EAAMohT,OAAQyrI,EAAOtkW,MAAMk1W,eAAkB5Q,EAAO94d,KAAKhN,QAAQ,aAAe,GACtF8le,EAAO94d,KAAKhN,QAAQ,QAAU,GAAKk4e,GAAOpS,EAAO2iB,cAAcC,UAAUzvc,EAAM58B,OAAQypd,EAAOtkW,MAAMk1W,gBACrGwB,GAAOj/b,EAAMmhT,OAAQ0rI,EAAOpkW,MAAMg1W,eAAiB97d,WAAW2re,EAAa1wd,MAAMgP,MAAQguf,EAAM9gf,KAAK55B,GACpGyC,WAAW2re,EAAa1wd,MAAM8O,OAASmuf,EAAM/gf,KAAK3uB,GAClDxI,WAAW2re,EAAa1wd,MAAMgP,MAAQguf,EAAM9gf,KAAK55B,EAAI06gB,EAAM9gf,KAAKP,QAChE52B,WAAW2re,EAAa1wd,MAAM8O,OAASmuf,EAAM/gf,KAAK3uB,EAAI0vgB,EAAM/gf,KAAKR,QACjE1vC,KAAK0ye,MAAMuS,qBAAqBrjf,KAAK,IAAIqpe,GAAK/6b,EAAK3uB,EAAIiqX,EAAKjqX,EAAG2uB,EAAK55B,EAAIk1X,EAAKl1X,EAAG45B,EAAKR,MAAOQ,EAAKP,SACjGk2c,GAAmB7lf,KAAK0ye,MAAMoW,aAAcl1c,EAAe8wc,EAAcxH,GAAQ,EAAM,OAAQ,OAC3FjZ,EAAO7jc,UAAUo0G,QAAUx0I,KAAK0ye,MAAMyqB,gBAAkBn9f,KAAK0ye,MAAMoW,aACnE9of,KAAKw9f,qBAAqBv5B,EAAQygB,GAE7B1kf,KAAK0ye,MAAMoW,cAChBl1c,EAAc5xC,YAAY0if,KAItCyqC,EAAUjzhB,UAAUs0hB,sBAAwB,SAAUp5e,EAAO6sb,EAAQtkE,EAAUilF,EAAWI,GACtF,IAIIh8c,EAJAkof,EAAclsC,EAAa,GAAqB,WAAhB/gB,EAAO94d,KAAqBisC,EAAMw+c,QAAQ,GAAwBx+c,EAAMw+c,QAAQ,GAChH5Q,EAAa,GAAqB,kBAAhB/gB,EAAO94d,OACzB+lhB,EAA8B,IAAflsC,EAAoB5tc,EAAMw+c,QAAQ,GAAKx+c,EAAMw+c,QAAQ,IAGxE5sd,EAAWhpC,KAAKmxhB,iBAAiB/5e,EAAO6sb,EAAQtkE,EAAUqlF,GAC1D,IACIh8E,EAAWi7D,EAAOj7D,SAEtB,GAAKhpa,KAAK0ye,MAAM6B,qBAAwBv0e,KAAKg1f,aAAa/wB,IAA2B,kBAAhBA,EAAO94d,KAcvE,CACDnL,KAAKoxhB,UAAYpof,EAAS1yB,EACtB+6gB,EAAiB1xH,EAASjwX,MAAQ1vC,KAAKuqC,YAAcvqC,KAAKqtC,OAAOvK,KAAO9iC,KAAKqtC,OAAOtK,MAnB9E,EAoBViG,EAASznB,EAA2B,SAAvBqje,EAAU72c,SAAsB/E,EAASznB,EAClDvhB,KAAKsxhB,mBAAmBD,EAAgBrof,EAASznB,EAAGqje,EAAU7/M,UAAW3tP,EAAMohT,OAAS,GAC5FxvT,EAASznB,EAAIvhB,KAAKuxhB,sBAAsBvof,EAASznB,EAAG2vgB,EAAa95e,EAAMohT,OAAS,IAAMx4V,KAAK6vhB,cAAejrC,EAAU72c,SAAUk2b,EAAQtkE,EAAUqlF,EAAY5tc,OAnB1D,CAClGp3C,KAAKwxhB,UAAYxof,EAASznB,EAC1B,IAAI8vgB,EAAiB1xH,EAAShwX,OAA6B,EAAnB3vC,KAAKuqC,YAAmBvqC,KAAK0xe,aACjE1xe,KAAKqtC,OAAOpK,OAASjjC,KAAKqtC,OAAOrK,IAN3B,EAOVgG,EAAS1yB,EAA4B,SAAvBsue,EAAU72c,SAAuB/E,EAAS1yB,EACpDtW,KAAKsxhB,mBAAmBD,EAAgBrof,EAAS1yB,EAAGsue,EAAU7/M,YAAW/kS,KAAKg1f,aAAa/wB,IAAU7sb,EAAMohT,OAAS,GAExHxvT,EAAS1yB,EAAMtW,KAAKg1f,aAAa/wB,IAA2B,kBAAhBA,EAAO94d,KAE/CnL,KAAKuxhB,sBAAsBvof,EAAS1yB,EAAG46gB,EAAa95e,EAAMohT,OAAS,IAAMx4V,KAAK6vhB,cAAejrC,EAAU72c,SAAUk2b,EAAQtkE,EAAUqlF,EAAY5tc,GAD/Ip3C,KAAKyxhB,sBAAsBzof,EAAS1yB,EAAGsue,EAAU72c,SAAUk2b,EAAQ7sb,EAAOuoX,EAAUqlF,GAEpFhlf,KAAKg1f,aAAa/wB,IAAwC,eAA7Bjke,KAAK0ye,MAAMyC,gBACxCnsc,EAAWhpC,KAAK0xhB,2BAA2B1of,EAAU47c,EAAU72c,SAAUk2b,EAAQ7sb,EAAOuoX,EAAUqlF,EAAYJ,EAAU7/M,UAAWssP,IAU3I,IAAInhf,EAAOk3c,GAAcp+c,EAAU22X,EAAU3/Z,KAAKqtC,QAalD,OAXmC,IAA7Bu3c,EAAUgsC,gBAA+C,IAApBhsC,EAAUpzG,OAC9CthW,EAAK55B,EAAK0yZ,EAAS1yZ,EAAI0yZ,EAASr5X,QAAaO,EAAK3uB,EAAKynZ,EAASznZ,EAAIynZ,EAASt5X,OAC3EQ,EAAK3uB,EAAI2uB,EAAKR,MAAQ,GAAOQ,EAAK55B,EAAI45B,EAAKP,OAAS,IACzDO,EAAK3uB,EAAI2uB,EAAK3uB,EAAI,EA7BR,EA6BsB2uB,EAAK3uB,EACrC2uB,EAAK55B,EAAK45B,EAAK55B,EAAI,GAA2C,SAAnCsue,EAAUzI,qBA9B3B,EA8BwEjsc,EAAK55B,EACvF45B,EAAK3uB,GAAM2uB,EAAK3uB,EAAI2uB,EAAKR,MAAUs5X,EAASznZ,EAAIynZ,EAASt5X,MAAUQ,EAAK3uB,EAAI2uB,EAAKR,OAC1Es5X,EAASznZ,EAAIynZ,EAASt5X,OAhCnB,EAgCsC,EAChDQ,EAAK55B,GAAM45B,EAAK55B,EAAI45B,EAAKP,OAAWq5X,EAAS1yZ,EAAI0yZ,EAASr5X,OAAWO,EAAK55B,EAAI45B,EAAKP,QAC5Eq5X,EAAS1yZ,EAAI0yZ,EAASr5X,QAlCnB,EAkCuC,EACjD3vC,KAAKqwhB,eAAyC,gBAAxBrwhB,KAAKqwhB,eAAmCrwhB,KAAKuvhB,gBAAkBvvhB,KAAKqwhB,gBAEvFngf,GAGXi/e,EAAUjzhB,UAAUw1hB,2BAA6B,SAAU1of,EAAU+E,EAAUk2b,EAAQ7sb,EAAOolC,EAAMwoa,EAAYjgN,EAAWssP,GACvH,IACIM,EACAC,EAAa5xhB,KAAK0ye,MAAM6Q,cAAc7zc,MACtCmif,EAA+B,WAAd9sP,EAA0B,EAAmB,QAAdA,EAAsB,GAAK,EAC3EysG,EAASp6V,EAAMu+c,WAAW9U,WAAa,GAAMt5e,KAAK6pY,IAAOh6V,EAAMu+c,WAAWvU,SAAWhqc,EAAMu+c,WAAW9U,YAAc,EAwDxH,OAtDI8wC,EADe,IAAf3sC,EACe5tc,EAAMu+c,WAAWzyd,OAASkU,EAAMu+c,WAAWtU,YAAcjqc,EAAMu+c,WAAWtU,YACnFjqc,EAAMu+c,WAAWzyd,OAGRkU,EAAMu+c,WAAWzyd,OAASkU,EAAMu+c,WAAWtU,YAAcjqc,EAAMu+c,WAAWtU,YACnFjqc,EAAMu+c,WAAWzyd,OAE3BljC,KAAKqwhB,eAAyC,gBAAxBrwhB,KAAKqwhB,eAAmCrwhB,KAAKuvhB,gBAAkBvvhB,KAAKqwhB,eACtFpsD,EAAOyQ,SAASv2e,QAAQ,aAAe,EACvC4vC,EAAwB,UAAbA,EAAuB,MAAQA,EAErCk2b,EAAOyQ,SAASv2e,QAAQ,UAAY,IACzC4vC,EAAyB,UAAbA,GAAqC,QAAbA,EAAsBA,EAAW,QAExD,UAAbA,EACA4jf,EAA8B,IAAf3sC,EAAmB2sC,EAAe,GAAc3xhB,KAAK0xe,aAChEigD,EAAe,GAAc3xhB,KAAK0xe,aAEpB,WAAb3jc,GACL4jf,EAAeA,EAAe,EAzBpB,EA0Bc,mBAApB1tD,EAAOyQ,WACPi9C,EAAev6e,EAAMu+c,WAAWtU,aAAgBjqc,EAAMu+c,WAAWzyd,OAASkU,EAAMu+c,WAAWtU,aAAe,EA3BpG,EA4BW7ka,EAAK7sC,OAAS,IAGjB,QAAb5B,EACL4jf,EAA8B,IAAf3sC,EAAmB2sC,EAAe,GAAc3xhB,KAAK0xe,aAChEigD,EAAe,GAAc3xhB,KAAK0xe,aAEpB,WAAb3jc,GACL4jf,EAAe,GACfA,GAAqC,mBAApB1tD,EAAOyQ,SAAkCt9b,EAAMu+c,WAAWtU,YAAcrhf,KAAK0xe,aAAgB,GAI1GigD,EADe,IAAf3sC,EACe2sC,GAAgB1tD,EAAOyO,MAAMxvc,OAASyuf,EAzC/C,EA0CkB,mBAApB1tD,EAAOyQ,SAAgCi9C,EAAe,GAAcA,EAAe,GAGxEA,GAAgB1tD,EAAOyO,MAAMxvc,OAASyuf,EA7C/C,EA6CwEA,EAAe,GAGrGA,GAAiBN,EAAiBQ,EAClC7of,EAASznB,EAAI0id,EAAOj7D,SAASt5X,MAAQ,EAAIu0b,EAAOj7D,SAASznZ,EAAIowgB,EAAepqhB,KAAKkqY,IAAID,GAE7D,mBAApByyF,EAAOyQ,SACP1rc,EAASznB,EAAIynB,EAASznB,EAAIqwgB,EAAa,EAAI5of,EAASznB,EAAIi7D,EAAK9sC,MAAQ,EAChE1G,EAASznB,EAAIqwgB,EAAa,EAAI5of,EAASznB,EAAIi7D,EAAK9sC,MAAQ,EAAI1G,EAASznB,EAEjD,WAApB0id,EAAOyQ,WACZ1rc,EAASznB,EAAIynB,EAASznB,EAAIqwgB,EAAa,EAAI5of,EAASznB,EAAIi7D,EAAK9sC,MAAQ,EAChE1G,EAASznB,EAAIqwgB,EAAa,EAAI5of,EAASznB,EAAIi7D,EAAK9sC,MAAQ,EAAI1G,EAASznB,GAE9EynB,EAAS1yB,EAAI2td,EAAOj7D,SAASr5X,OAAS,EAAIs0b,EAAOj7D,SAAS1yZ,EAAIq7gB,EAAepqhB,KAAKmwH,IAAI85Q,GAC/ExoW,GAKXmmf,EAAUjzhB,UAAUi1hB,iBAAmB,SAAU/5e,EAAO6sb,EAAQtkE,EAAUqlF,GACtE,IAAIh8c,EAAW,IAAIo2c,GAAc,EAAG,GAChC8xC,EAA+B,WAAhBjtD,EAAO94d,MAAqB65e,EAAa,EAAK5tc,EAAMw+c,QAAQ,GAAKx+c,EAAMw+c,QAAQ,GAC9E,kBAAhB3xB,EAAO94d,OACP+lhB,EAA8B,IAAflsC,EAAoB5tc,EAAMw+c,QAAQ,GAAKx+c,EAAMw+c,QAAQ,IAExE,IAAI/1X,EAAQokW,EAAOpkW,MACfF,EAAQskW,EAAOtkW,MACf6gX,EAAavc,EAAOyO,MAAM6B,oBAC9B,GAAoB,kBAAhBtQ,EAAO94d,KAA0B,CAEjC,OADAnL,KAAK0xe,aAAe,EACZsT,GACJ,KAAK,EACDh8c,EAAW08c,GAAStuc,EAAMmhT,OAAQnhT,EAAM82S,OAAQruN,EAAOF,EAAO6gX,GAC9D,MACJ,KAAK,EACDx3c,EAAW08c,GAAStuc,EAAMmhT,OAAQnhT,EAAMu8b,QAAS9zW,EAAOF,EAAO6gX,GAC/D,MACJ,KAAK,EACDx3c,EAAW08c,GAAStuc,EAAMmhT,OAAQnhT,EAAMq8b,QAAS5zW,EAAOF,EAAO6gX,GAC/D,MACJ,KAAK,EACDx3c,EAAW08c,GAAStuc,EAAMmhT,OAAQnhT,EAAM0vc,cAAejnX,EAAOF,EAAO6gX,GACrE,MACJ,KAAK,EACDx3c,EAAW08c,GAAStuc,EAAMmhT,OAAQnhT,EAAM2vc,cAAelnX,EAAOF,EAAO6gX,GACrE,MACJ,QACIx3c,EAAW08c,GAAStuc,EAAMmhT,OAAQnhT,EAAM4vc,SAAShC,EAAa,GAAInlX,EAAOF,EAAO6gX,GAChFxgf,KAAK0xe,aAAezN,EAAOjtE,OAAOrnX,OAAS,EAI/C6wc,EACAx3c,EAAS1yB,EAAI8gC,EAAMw+c,QAAQ,GAAGt/e,EAAK8gC,EAAMw+c,QAAQ,GAAGjmd,OAAS,EAG7D3G,EAASznB,EAAI61B,EAAMw+c,QAAQ,GAAGr0e,EAAK61B,EAAMw+c,QAAQ,GAAGlmd,MAAQ,OAIhE1G,EADoB,IAAfg8c,GAAmC,IAAfA,EACd,IAAI5F,GAAchoc,EAAMs/c,gBAAgB,GAAGn1e,EAAG61B,EAAMs/c,gBAAgB,GAAGpgf,GAE7D,IAAf0ue,GAAmC,IAAfA,GAAqC,WAAhB/gB,EAAO94d,KAGjDq1e,EACM,CAAEj/d,EAAG2vgB,EAAY3vgB,EAAK2vgB,EAAYxhf,MAAS,EAAGp5B,EAAG46gB,EAAY56gB,GAG7D,CAAEiL,EAAG2vgB,EAAY3vgB,EAAI2vgB,EAAYxhf,MAAOp5B,EAAG46gB,EAAY56gB,EAAK46gB,EAAYvhf,OAAU,GANlF,IAAIyvc,GAAchoc,EAAMs/c,gBAAgB,GAAGn1e,EAAG61B,EAAMs/c,gBAAgB,GAAGpgf,GAStF,GAAI0ue,EAAa,GAAqB,kBAAhB/gB,EAAO94d,KACzB,GAAI84d,EAAOyO,MAAM6B,oBAAqB,CAClC,IAAI5kc,EAASuhf,EAAYvhf,OACzB3G,EAAS1yB,EAAI46gB,EAAY56gB,EAAIq5B,EAAS,EAAI,GAAoB,IAAfq1c,EAAmB,GAAK,OAEtE,CACD,IAAIt1c,EAAQwhf,EAAYxhf,MACxB1G,EAASznB,EAAI2vgB,EAAY3vgB,EAAImuB,EAAQ,EAAI,GAAoB,IAAfs1c,EAAmB,GAAK,GAG9E,OAAOh8c,GAEXmmf,EAAUjzhB,UAAUq1hB,sBAAwB,SAAU3B,EAAe1/e,EAAM+3c,EAASl6c,EAAUk2b,EAAQtkE,EAAUqlF,EAAY5tc,GACxH,GAAmC,eAA/B6sb,EAAOyO,MAAMyC,cACb,OAAO,KAEX,IACI9nc,EAASrtC,KAAKqtC,OACdykf,EAAc9xhB,KAAKkue,SAA6BvuE,EAASjwX,MAA3BiwX,EAAShwX,OACvCoif,EAAa/xhB,KAAKuqC,YAAcunf,EAAa,EAHnC,EAad,OAToB,sBAAhB7tD,EAAO94d,MAAgD,mBAAhB84d,EAAO94d,KAC9C4iC,EAAyB,UAAbA,EAAwB,MAAQA,EAEvCk2b,EAAO94d,KAAKhN,QAAQ,UAAY,EACrC4vC,EAAyB,UAAbA,GAAqC,QAAbA,EAAsBA,EAAW,OAEhD,cAAhBk2b,EAAO94d,OACZ4iC,EAAwB,SAAbA,EAAsB,SAAWA,GAExCA,GACJ,IAAK,SACD6hf,EAAiB5vhB,KAAKkue,SAGlB+Z,EAAW2nC,EAAgB1/e,EAAKR,MAAQqif,EAAa1kf,EAAOvK,KACvD8sf,EAAgB1/e,EAAKR,MAAQqif,EAAa1kf,EAAOtK,MAHtDkld,EAAW2nC,EAAgB1/e,EAAKP,OAASoif,EAAa1kf,EAAOrK,IACxD4sf,EAAgB1/e,EAAKP,OAASoif,EAAa1kf,EAAOpK,OAG3D,MACJ,IAAK,SACD2sf,EAAgBA,EAAiB5vhB,KAAKkue,SAEjC+Z,EAAU2nC,EAAiB1/e,EAAKR,MAAQ,EAAKkgf,EAAiB1/e,EAAKR,MAAQ,EAD3Eu4c,EAAU2nC,EAAiB1/e,EAAKP,OAAS,EAAKigf,EAAiB1/e,EAAKP,OAAS,EAElF,MACJ,IAAK,OACDigf,EAAgB5vhB,KAAKgyhB,4BAA4BpC,EAAe1/e,EAAM+3c,EAAShkB,EAAQtkE,EAAUqlF,EAAY5tc,GAC7G,MACJ,QACI26e,GAAc/xhB,KAAKovhB,YACnBQ,EAAgB5vhB,KAAKiyhB,6BAA6BrC,EAAe1/e,EAAMnC,EAAUk2b,EAAQ+gB,EAAY+sC,EAAY9pC,GAGzH,IAAI92Y,EAASnxG,KAAKkue,SACb0hD,EAAgB1/e,EAAK3uB,GAAKqugB,EAAgB1/e,EAAK3uB,EAAI2uB,EAAKR,MAD/Bkgf,EAAgB1/e,EAAK55B,GAAKs5gB,EAAgB1/e,EAAK55B,EAAI45B,EAAKP,OAEtF3vC,KAAKqwhB,eAAiBl/a,EACO,gBAAxBnxG,KAAKqwhB,eAAmCrwhB,KAAKuvhB,gBAAkBvvhB,KAAKqwhB,eAC3C,gBAAxBrwhB,KAAKqwhB,eAAoCj5e,EAAMu+B,OAASsuZ,EAAO40B,SAAY74f,KAAKqwhB,eACtF,IAAI6B,EAAejuD,EAAOyO,MAAMzO,OAAOpne,OACvC,GAAiB,UAAbkxC,GAAyBk2b,EAAO94d,KAAKhN,QAAQ,aAAe,GAAQ+zhB,EAAe,EAAKjuD,EAAOzpd,MAG/F,IAFA,IAAI23gB,OAAa,EACbC,OAAkB,EACbx1hB,EAAIqne,EAAOzpd,MAAQ,EAAG5d,EAAIs1hB,EAAct1hB,IAG7C,GADAw1hB,GADAD,EAAaluD,EAAOyO,MAAMzO,OAAOrne,IACJ++E,OAAOvkC,EAAM58B,OACrC23gB,EAAWhnhB,KAAKhN,QAAQ,aAAe,IAA2C,IAApCg0hB,EAAWhnhB,KAAKhN,QAAQ,OAAgB,CACvF6B,KAAKqwhB,eAAkB+B,IAAqBA,EAAgB55L,OAAS,GAAKphT,EAAMohT,OAAS,GACpF45L,EAAgB55L,OAAS,GAAKphT,EAAMohT,OAAS,GAAQ45L,EAAkBA,EAAgBz8c,MACxFw8c,EAAWt5B,SAAY74f,KAAKqwhB,eAChC,MAIZ,OAAOT,GAEXT,EAAUjzhB,UAAUu1hB,sBAAwB,SAAU7B,EAAe7hf,EAAUk2b,EAAQ7sb,EAAOolC,EAAMwoa,GAOhG,OALK/gB,EAAO94d,KAAKhN,QAAQ,SAAW,GAAqB,cAAhB8le,EAAO94d,MACzCnL,KAAK6vhB,eAAsD,SAArC5rD,EAAOjtE,OAAO4tF,UAAU72c,WACjDA,EAAwB,QAAbA,EAAqB,SAAwB,WAAbA,EAAwB,MAAQA,GAE/E/tC,KAAKqwhB,eAAyC,gBAAxBrwhB,KAAKqwhB,eAAmCrwhB,KAAKuvhB,gBAAkBvvhB,KAAKqwhB,eAClFtif,GACJ,IAAK,MACL,IAAK,QACD6hf,EAAgBA,EAAgB5vhB,KAAK0xe,aAAe1xe,KAAKuqC,YAAciyC,EAAK7sC,OAAS,EAAI3vC,KAAKqtC,OAAOpK,OAT/F,EAUFjjC,KAAKovhB,YACT,MACJ,IAAK,SACDQ,EAAgBA,EAAgB5vhB,KAAK0xe,aAAe1xe,KAAKuqC,YAAciyC,EAAK7sC,OAAS,EAAI3vC,KAAKqtC,OAAOrK,IAb/F,EAcFhjC,KAAKovhB,YACT,MACJ,IAAK,OACDQ,EAAgB5vhB,KAAKqyhB,4BAA4BzC,EAAe5vhB,KAAK0xe,aAAczN,EAAQ7sb,EAAOolC,EAAMwoa,GAGhH,OAAO4qC,GAEXT,EAAUjzhB,UAAUo0hB,iBAAmB,SAAUt8f,GAC7Ch0B,KAAK+whB,QAA2B,gBAAhB/8f,EAAM2hD,OAA2B3hD,EAAM20I,OAAOj5H,MAAQ,EACtE1vC,KAAKuqC,YAAcvW,EAAM20I,OAAOj5H,MAC3B1vC,KAAK+whB,UACN/whB,KAAKqtC,OAAS,CAAEvK,KAAM,EAAGC,MAAO,EAAGE,OAAQ,EAAGD,IAAK,KAG3Dmsf,EAAUjzhB,UAAU81hB,4BAA8B,SAAUpC,EAAe1/e,EAAM+3c,EAAShkB,EAAQznZ,EAAMwoa,EAAY5tc,GAOhH,IANA,IAAIpO,EACAspf,EACAC,GAAY,EACZxkf,EAAW,EACX2tB,EAAa17D,KAAK0ye,MAAMuS,qBACxButC,GAAkD,IAAlCvuD,EAAO94d,KAAKhN,QAAQ,UAAmC,SAAhB8le,EAAO94d,KAAkB,EAAI,EACjFonhB,GAAaxkf,EAAWykf,GAAe,CAC1C,IAAIC,EAAiBzyhB,KAAKy9D,YAAY1vB,GAClCk2b,EAAO94d,KAAKhN,QAAQ,aAAe,GAAwB,UAAnBs0hB,IACxCA,EAAiB,MACjB1kf,KAEJ/E,EAAWhpC,KAAKuxhB,sBAAsB3B,EAAe1/e,EAAM+3c,EAASwqC,EAAgBxuD,EAAQznZ,EAAMwoa,EAAY5tc,GAO1Gm7e,EANCvyhB,KAAKkue,UAKNokD,EAAYlrC,GAAc,IAAIhI,GAAcp2c,EAAUhpC,KAAKoxhB,WAAY50c,EAAMx8E,KAAKqtC,SAC5D9rB,EAAI,GAAK47G,GAAUm1Z,EAAW52d,EAAYuoa,EAAOj7D,WACnEspH,EAAU/wgB,EAAI+wgB,EAAU5if,MAAQu0b,EAAOj7D,SAASt5X,OANpD4if,EAAYlrC,GAAc,IAAIhI,GAAcp/e,KAAKwxhB,UAAWxof,GAAWwzC,EAAMx8E,KAAKqtC,SAC5D/2B,EAAI,GAAK6mH,GAAUm1Z,EAAW52d,EAAYuoa,EAAOj7D,WAAaspH,EAAUh8gB,EAAI2td,EAAOj7D,SAASr5X,OAOtH5B,IAEJ,OAAO/E,GAGXmmf,EAAUjzhB,UAAUo1hB,mBAAqB,SAAU90hB,EAAOozhB,EAAe7qP,EAAWkjN,GAChF,OAAQljN,GACJ,IAAK,MACD6qP,EAAiB5vhB,KAAKkue,SACjB+Z,EAAU2nC,EAAgBpzhB,EAAQozhB,EAAgBpzhB,EADrByrf,EAAU2nC,EAAgBpzhB,EAAQozhB,EAAgBpzhB,EAEpF,MACJ,IAAK,OACDozhB,EAAiB5vhB,KAAKkue,SACjB+Z,EAAU2nC,EAAgBpzhB,EAAQozhB,EAAgBpzhB,EADrByrf,EAAU2nC,EAAgBpzhB,EAAQozhB,EAAgBpzhB,EAEpF,MAEJ,IAAK,SACDozhB,EAAgBA,EAGxB,OAAOA,GAGXT,EAAUjzhB,UAAU+1hB,6BAA+B,SAAUjpf,EAAUkH,EAAMnC,EAAUk2b,EAAQzpd,EAAOu3gB,EAAY9pC,GAC9G,IACIjld,EADAqK,EAASrtC,KAAKqtC,OAElB,OAAQ42b,EAAO94d,MACX,IAAK,cACL,IAAK,YACL,IAAK,OACD63B,EAAiB,IAAVxoB,IAAgBxa,KAAK6vhB,eAA6B,IAAVr1gB,GAAexa,KAAK6vhB,cACnE7mf,EAAWhpC,KAAK0yhB,oBAAoB3kf,EAAU/E,EAAU+of,EAAY1kf,EAAQ6C,EAAMlN,GAClF,MACJ,IAAK,SACDA,GAAiB,IAAVxoB,GAAyB,IAAVA,KAAiBxa,KAAK6vhB,gBAC1B,IAAVr1gB,GAAyB,IAAVA,IAAgBxa,KAAK6vhB,cAC5C7mf,EAAWhpC,KAAK0yhB,oBAAoB3kf,EAAU/E,EAAU+of,EAAY1kf,EAAQ6C,EAAMlN,EAAKxoB,EAAQ,GAC/F,MACJ,IAAK,gBACGA,GAAS,GACTwoB,EAAiB,IAAVxoB,IAAgBxa,KAAK6vhB,eAA6B,IAAVr1gB,GAAexa,KAAK6vhB,cACnE7mf,EAAWhpC,KAAK0yhB,oBAAoB3kf,EAAU/E,EAAU+of,EAAY1kf,EAAQ6C,EAAMlN,IAI9EgG,EADAhpC,KAAK6vhB,cACO7vhB,KAAKkue,SAAgDllc,EAAW+of,EAAa1kf,EAAOtK,MAApEiG,EAAW+of,EAAa1kf,EAAOrK,IAG/ChjC,KAAKkue,SAAmDllc,EAAW+of,EAAa1kf,EAAOvK,KAAvEkG,EAAW+of,EAAa1kf,EAAOpK,OAGnE,MACJ,QAEQ+F,EADCi/c,GAAwB,QAAbl6c,IAAyBk6c,GAAwB,UAAbl6c,EACpC/tC,KAAKkue,SACbllc,EAAW+of,EAAa1kf,EAAOvK,KAAO9iC,KAAK0xe,aADnB1oc,EAAW+of,EAAa1kf,EAAOpK,OAASjjC,KAAK0xe,aAI7D1xe,KAAKkue,SACbllc,EAAW+of,EAAa1kf,EAAOtK,MAAQ/iC,KAAK0xe,aADpB1oc,EAAW+of,EAAa1kf,EAAOrK,IAAMhjC,KAAK0xe,aAKlF,OAAO1oc,GAKXmmf,EAAUjzhB,UAAUw2hB,oBAAsB,SAAU3kf,EAAU/E,EAAU+of,EAAY1kf,EAAQ6C,EAAMlN,EAAKy3c,GAsBnG,YArBe,IAAXA,IAAqBA,GAAS,GAa1Bzxc,EAZHhpC,KAAKkue,SAWFlrc,EACyB,UAAb+K,GAAyB0sc,EACjCzxc,EAAW+of,EAAa1kf,EAAOtK,MAAQ/iC,KAAK0xe,aADD1oc,EAAW+of,EAAa1kf,EAAOvK,KAAO9iC,KAAK0xe,aAIjE,UAAb3jc,GAAyB0sc,EACjCzxc,EAAWkH,EAAKR,MAAQqif,EAAa1kf,EAAOvK,KAAO9iC,KAAK0xe,aADb1oc,EAAWkH,EAAKR,MAAQqif,EAAa1kf,EAAOtK,MAAQ/iC,KAAK0xe,aAfxG1uc,EACyB,UAAb+K,GAAyB0sc,EACjCzxc,EAAW+of,EAAa1kf,EAAOrK,IAAMhjC,KAAK0xe,aADC1oc,EAAW+of,EAAa1kf,EAAOpK,OAASjjC,KAAK0xe,aAInE,UAAb3jc,GAAyB0sc,EACjCzxc,EAAWkH,EAAKP,OAASoif,EAAa1kf,EAAOpK,OAASjjC,KAAK0xe,aADhB1oc,EAAWkH,EAAKP,OAASoif,EAAa1kf,EAAOrK,IAAMhjC,KAAK0xe,cAgBnHy9C,EAAUjzhB,UAAUm2hB,4BAA8B,SAAU/7gB,EAAG62d,EAAYlJ,EAAQ7sb,EAAOolC,EAAMwoa,GAC5F,IAGIj3c,EAGA4kf,EAEAL,EACAliQ,EACAwiQ,EAVAj3c,EAASsoZ,EAAOtoZ,OAChBnhE,EAAQ48B,EAAM58B,MACdg+U,EAAS78Q,EAAOnhE,GAAOg+U,OAEvBimJ,EAAY9ia,EAAO9+E,OAAS,EAAI2d,EAAQmhE,EAAOnhE,EAAQ,GAAK,KAC5D+je,EAAgB/je,EAAQ,EAAImhE,EAAOnhE,EAAQ,GAAK,KAEhD+3gB,GAAY,EAIZ72d,EAAa17D,KAAK0ye,MAAMuS,qBAC5B,GAAoB,WAAhBhhB,EAAO94d,KACP4iC,EAAW,WAEV,GAAIk2b,EAAO94d,KAAKhN,QAAQ,SAAW,EACpC4vC,EAAW,MACPvzB,IACAuzB,EAAawwc,GAAkBA,EAAcrhb,SAAYs7R,EAAS+lJ,EAAc/lJ,SAAWx4V,KAAK6vhB,eACzFr3L,IAAW+lJ,EAAc/lJ,OAAkB,SAAR,YAG7C,GAAoB,kBAAhByrI,EAAO94d,KACO,IAAf65e,GAAmC,IAAfA,GAAoBA,EAAa,EACrDj3c,EAAWk2b,EAAOtkW,MAAM27W,WAAa,SAAW,MAE5B,IAAf0J,GAAmC,IAAfA,EACzBj3c,EAAWk2b,EAAOtkW,MAAM27W,WAAa,MAAQ,UAG7Ci3C,GAAY,EACZxkf,EAAW,SACX4kf,EAAY3yhB,KAAKyxhB,sBAAsBn7gB,EAAGy3B,EAAUk2b,EAAQ7sb,EAAOolC,EAAMwoa,SAI7E,GAAc,IAAVxqe,EACAuzB,GAAa0wc,IAAcA,EAAUvhb,SAAWs7R,EAASimJ,EAAUjmJ,QAC9DA,EAASimJ,EAAUjmJ,QAAUx4V,KAAK6vhB,cAAkB,MAAQ,cAEhE,GAAIr1gB,IAAUmhE,EAAO9+E,OAAS,EAC/BkxC,GAAawwc,IAAkBA,EAAcrhb,SAAWs7R,EAAS+lJ,EAAc/lJ,QAC1EA,EAAS+lJ,EAAc/lJ,QAAUx4V,KAAK6vhB,cAAkB,MAAQ,cAGrE,GAAKpxC,EAAUvhb,SAAaqhb,GAAiBA,EAAcrhb,QAGtD,GAAKuhb,EAAUvhb,SAAYqhb,EAI3B,CACD,IAAIs0C,GAASp0C,EAAUjmJ,OAAS+lJ,EAAc/lJ,QAAU,EACpDs6L,EAAcD,EAAQr4gB,GAAUike,EAAUjmJ,OAAUq6L,GAASr4gB,EAAQ,IACzEuzB,EAAY/tC,KAAK6vhB,cACbiD,EAAat6L,EAAS,SAAW,MADJs6L,EAAat6L,EAAS,MAAQ,cAN/DzqT,EAAY0wc,EAAUjmJ,OAASA,GAAW+lJ,GAAiBA,EAAc/lJ,OAASA,EAC9E,SAAW,WAJfzqT,EAAW,MAgBvB,IAFAqiP,EAAwB,WAAbriP,EACX6kf,EAAgB,CAAC,QAAS,MAAO,SAAU,SAAU,QAAQz0hB,QAAQ4vC,GAC9Dwkf,GAAaK,EAAgB,GAChCD,EAAY3yhB,KAAKyxhB,sBAAsBn7gB,EAAGtW,KAAKy9D,YAAYm1d,GAAgB3uD,EAAQ7sb,EAAOolC,EAAMwoa,GAEhGutC,GADAD,EAAYlrC,GAAc,IAAIhI,GAAcp/e,KAAKwxhB,UAAWmB,GAAYn2c,EAAMx8E,KAAKqtC,SAC7D/2B,EAAI,GAAK6mH,GAAUm1Z,EAAW52d,EAAYuoa,EAAOj7D,WAC/DspH,EAAUh8gB,EAAIg8gB,EAAU3if,OAAUs0b,EAAOj7D,SAASr5X,OAC1Dijf,EAAgBxiQ,EAAWwiQ,EAAgB,EAAIA,EAAgB,EAC/DxiQ,GAAW,EAEf,OAAOuiQ,GAQXxD,EAAUjzhB,UAAUshgB,qBAAuB,SAAUv5B,EAAQjje,GAQzD,IAPA,IAIIgoC,EAEA5Z,EANA2jgB,EAAgB9uD,EAAOi5B,aAAa5ue,WACpC0kgB,EAAW/uD,EAAOiM,YAAY5hd,WAC9BzuB,EAAQoke,EAAO7jc,UAAUvgC,MAAQoke,EAAO7jc,UAAUU,SAClDA,EAAWmjc,EAAOyO,MAAMytB,SAAWl8B,EAAOyO,MAAM5xc,SAAW,IAE3DjkC,EAASmE,EAAU,EAAIgyhB,EAASn2hB,OAE3BD,EAAI,EAAGA,EAAIC,EAAQD,IACxBwyB,EAAc4jgB,EAASp2hB,GACnBoE,GACAA,EAAQgzB,MAAMwC,WAAa,SAC3Bktd,GAAgB1if,EAASnB,EAAOihC,EAAU,YAG1CkI,EAAW,IAAIo2c,IAAgBhwd,EAAYD,aAAa,OAAWC,EAAYD,aAAa,SAAY,GAAMC,EAAYD,aAAa,OAAWC,EAAYD,aAAa,UAAa,GACxL+yd,GAAc9yd,EAAavvB,EAAOihC,EAAUmjc,EAAQ,KAAMj7b,GAAU,GAChE+pf,EAAcn2hB,KACdwyB,EAAc2jgB,EAAcn2hB,GAC5BosC,EAAW,IAAIo2c,IAAgBhwd,EAAYD,aAAa,OAAWC,EAAYD,aAAa,SAAY,GAAMC,EAAYD,aAAa,OAAWC,EAAYD,aAAa,UAAa,GACxL+yd,GAAc9yd,EAAavvB,EAAOihC,EAAUmjc,EAAQ,KAAMj7b,GAAU,MAKpFmmf,EAAUjzhB,UAAUuhE,YAAc,SAAUjjD,GACxC,MAAQ,CAAC,QAAS,MAAO,SAAU,SAAU,QAAQA,IAKzD20gB,EAAUjzhB,UAAU2+B,cAAgB,WAEhC,MAAO,aAQXs0f,EAAUjzhB,UAAUif,QAAU,aAGvBg0gB,EArzBoB,GCf3B9wf,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAqB5Dm0f,GAAgD,SAAU9zf,GAE1D,SAAS8zf,IACL,OAAkB,OAAX9zf,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA0B/D,OA5BAq+B,GAAU40f,EAAgC9zf,GAI1CR,GAAW,CACP3B,YAAS,OACVi2f,EAA+B/2hB,UAAW,eAAW,GACxDyiC,GAAW,CACP3B,YAAS,MACVi2f,EAA+B/2hB,UAAW,SAAK,GAClDyiC,GAAW,CACP3B,YAAS,MACVi2f,EAA+B/2hB,UAAW,SAAK,GAClDyiC,GAAW,CACP3B,YAAS,UACVi2f,EAA+B/2hB,UAAW,uBAAmB,GAChEyiC,GAAW,CACP3B,YAAS,UACVi2f,EAA+B/2hB,UAAW,cAAU,GACvDyiC,GAAW,CACP3B,YAAS,WACVi2f,EAA+B/2hB,UAAW,yBAAqB,GAClEyiC,GAAW,CACP3B,YAAS,WACVi2f,EAA+B/2hB,UAAW,2BAAuB,GACpEyiC,GAAW,CACP3B,YAAS,OACVi2f,EAA+B/2hB,UAAW,mBAAe,GACrD+2hB,EA7ByC,CA8BlD5tf,KAKE6tf,GAA+C,SAAU/zf,GAEzD,SAAS+zf,IACL,OAAkB,OAAX/zf,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAyC/D,OA3CAq+B,GAAU60f,EAA+B/zf,GAIzCR,GAAW,CACP3B,aAAS,IACVk2f,EAA8Bh3hB,UAAW,eAAW,GACvDyiC,GAAW,CACP3B,aAAS,IACVk2f,EAA8Bh3hB,UAAW,gBAAY,GACxDyiC,GAAW,CACP3B,YAAS,OACVk2f,EAA8Bh3hB,UAAW,YAAQ,GACpDyiC,GAAW,CACP3B,YAAS,gBACVk2f,EAA8Bh3hB,UAAW,YAAQ,GACpDyiC,GAAW,CACP3B,YAAS,WACVk2f,EAA8Bh3hB,UAAW,gBAAY,GACxDyiC,GAAW,CACP3B,YAAS,IACVk2f,EAA8Bh3hB,UAAW,UAAM,GAClDyiC,GAAW,CACP3B,YAAS,IACVk2f,EAA8Bh3hB,UAAW,UAAM,GAClDyiC,GAAW,CACP3B,YAAS,IACVk2f,EAA8Bh3hB,UAAW,aAAS,GACrDyiC,GAAW,CACP3B,aAAS,IACVk2f,EAA8Bh3hB,UAAW,sBAAkB,GAC9DyiC,GAAW,CACPvB,YAAQ,CAAEsS,MAAO,KAAMimC,MAAO,MAAQymR,KACvC82L,EAA8Bh3hB,UAAW,cAAU,GACtDyiC,GAAW,CACPvB,YAAQ,CAAEo/C,KAAM,OAAQ7G,MAAO,GAAI4lS,UAAW,SAAUljG,WAAY,SAAUziM,WAAY,YAAckH,KACzGo2c,EAA8Bh3hB,UAAW,YAAQ,GACpDyiC,GAAW,CACPvB,YAAQ,GAAIomc,KACb0vD,EAA8Bh3hB,UAAW,sBAAkB,GAC9DyiC,GAAW,CACP3B,YAAS,OACVk2f,EAA8Bh3hB,UAAW,gBAAY,GACjDg3hB,EA5CwC,CA6CjD7tf,KAKE8tf,GAA2B,SAAUh0f,GAErC,SAASg0f,IACL,OAAkB,OAAXh0f,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAU80f,EAAWh0f,GAIrBR,GAAW,CACP3B,YAAS,QACVm2f,EAAUj3hB,UAAW,SAAK,GAC7ByiC,GAAW,CACP3B,YAAS,QACVm2f,EAAUj3hB,UAAW,SAAK,GACtBi3hB,EAXoB,CAY7B9tf,KAOE+tf,GACA,WAEIpzhB,KAAKk9D,SAAU,EAEfl9D,KAAKuxe,eAAiB,KAEtBvxe,KAAKi2f,OAAS,KAEdj2f,KAAKkxhB,YAAc,KAEnBlxhB,KAAKqzhB,cAAe,EACpBrzhB,KAAK41f,QAAU,KAEf51f,KAAKszhB,WAAY,EAEjBtzhB,KAAKuzhB,WAAY,EAEjBvzhB,KAAKwzhB,UAAW,EAEhBxzhB,KAAK+se,SAAW,KAEhB/se,KAAKyzhB,eAAiB,KAEtBzzhB,KAAK0zhB,mBAAqB,MAQ9BC,GAAoC,SAAUx0f,GAE9C,SAASw0f,IA0BL,IAAI5zhB,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAiBhE,OAfAD,EAAM47E,OAAS,GAEf57E,EAAM6zhB,cAAgB,GAEtB7zhB,EAAM8zhB,YAAc,EAEpB9zhB,EAAMi1f,cAAe,EAErBj1f,EAAMipa,SAAW,IAAIiiE,GAAK,EAAG,EAAG,EAAG,GAEnClre,EAAMs4G,SAAW,SAEjBt4G,EAAM+zhB,gBAAkB,GAExB/zhB,EAAMg0hB,eAAiB,GAChBh0hB,EAuYX,OAnbAs+B,GAAUs1f,EAAoBx0f,GAmD9Bw0f,EAAmBz3hB,UAAU0qS,mBAAqB,SAAUq7N,EAAcvye,GACtE,IAAI3vB,EAAQC,KACRg0hB,EAAah0hB,KAAK8hE,YAAcmgc,EAAangc,WAC3Ckyd,aAAsBjyd,MAAgB3kE,YAAkB4C,KAAK2hE,OAIjD3hE,KAAKm6f,WAAWp9Z,QAAQ/8F,KAAKm6f,WAAWhnc,gBAAgBgtC,iBAC9DvlF,MAAK,SAAU/Z,GAAK,OAAOd,EAAM2nS,mBAAmB7mS,EAAGohgB,MAJ/DjigB,KAAK0nS,mBAAmB,CAAE/oS,OAAQq1hB,EAAYl5d,MAAOk5d,EAAWn3hB,QAAUolgB,EAAcvye,IAWhGikgB,EAAmBz3hB,UAAUwrS,mBAAqB,SAAU7mS,EAAGohgB,EAAcvye,QAC1D,IAAXA,IAAqBA,GAAS,GAClC,IAAIq9c,EAAW,CACX3yd,KAAM28d,GAAc9S,OAAQjke,KAAM6a,KAAMha,EAAElC,QAE9CsjgB,EAAa1pe,wBAAyB,EACtC0pe,EAAal4e,QAAQgtd,GAAchK,GACnC/se,KAAKi0hB,WAA0B,KAAbpzhB,EAAElC,OAAgBkC,EAAElC,OAAS,GAC1CsjgB,EAAa3igB,UAAaowB,GAC3B1vB,KAAKk0hB,UAAUl0hB,KAAKi0hB,WAAYhyB,MAG7BA,EAAakyB,eAAiBlyB,EAAa3S,cAAczyf,QAAU6yB,GAElE5tB,OAAe,SAAM4tB,GAAwC,IAA9Buye,EAAakyB,gBAChDn0hB,KAAKk0hB,UAAUl0hB,KAAKi0hB,WAAYhyB,GAChCA,EAAa1H,iBAIrBo5B,EAAmBz3hB,UAAUg4hB,UAAY,SAAUv1hB,EAAQsjgB,GACvD,IASI7qd,EATAv6C,EAASqB,OAAOjB,KAAK0B,GAAQ9B,OAEjC,GADAmD,KAAK6zhB,YAAc,EACJ,IAAXh3hB,EACA,OAAO,KAEXmD,KAAKo0hB,gBAAgBz1hB,GACrBqB,KAAK27E,OAAS,GACd37E,KAAK4zhB,cAAgB,GACrB5zhB,KAAKq0hB,UAAY,EAIjB,IAFA,IAAIjwQ,EAASpkR,KAAK6wgB,SAASh0gB,OAASmD,KAAK6wgB,SAAWzvC,GAAe6gC,EAAajkb,OAC5Es2c,EAAYxsC,GAAe9nf,KAAKu0hB,QAASv0hB,KAAK6zhB,aACzCj3hB,EAAI,EAAGA,EAAIC,EAAQD,IAAK,EAC7Bw6C,EAAQp3C,KAAKw0hB,UAAU71hB,EAAQ/B,EAAGwnR,EAAQ69O,IACrB3rf,EAChBtW,KAAKy0hB,OAAOr9e,EAAOk9e,EAAW13hB,IAO/Bw6C,EAAM58B,MAAQxa,KAAK4zhB,cAAc/2hB,OACjCu6C,EAAMk8e,WAAY,EAClBtzhB,KAAK4zhB,cAAchyhB,KAAKw1C,GACxBA,EAAMo8e,UAAW,IATbp2hB,YAAkBg6C,EAAM9gC,KACxB8gC,EAAM8lB,SAAU,GAEpBl9D,KAAK00hB,WAAWt9e,EAAOgtO,IAU/B,GADApkR,KAAK20hB,YAAc30hB,KAAKu0hB,QACpBv0hB,KAAKq0hB,UAAY,EAAG,CACpB,IAAIO,EAAc50hB,KAAK60hB,oBACvB70hB,KAAK00hB,WAAWE,EAAaxwQ,GAC7B,IAAI0wQ,EAAiB90hB,KAAK27E,OAAO9+E,OAAS,EAC1CmD,KAAK4zhB,cAAcnvhB,KAAI,SAAU2yC,GAC7BA,EAAM58B,OAASs6gB,EACf19e,EAAMu+B,MAAQi/c,EAAYj/c,SAG9B31E,KAAK4zhB,cAAc/2hB,QAAUmD,KAAK+0hB,SAAyB,QAAd/0hB,KAAKmL,OAC9CnL,KAAKg1hB,YAAch1hB,KAAK27E,OAAO37E,KAAK27E,OAAO9+E,OAAS,GAAG2d,QAAUxa,KAAKi1hB,gBAC1Ej1hB,KAAK27E,OAAO7hE,OAAO9Z,KAAK27E,OAAO9+E,OAAS,EAAG,GAC3CmD,KAAK27E,OAAS37E,KAAK27E,OAAO7pD,OAAO9xB,KAAK4zhB,iBAG9CD,EAAmBz3hB,UAAU24hB,kBAAoB,WAC7C,IAAIK,EAAY,IAAI9B,GAMpB,OALA8B,EAAU3B,WAAY,EACtB2B,EAAU3zgB,EAAI,SACd2zgB,EAAU5+gB,EAAItW,KAAKq0hB,UACnBa,EAAU3ihB,KAAO2ihB,EAAU74C,aAAe64C,EAAU3zgB,EAAI,KAAOvhB,KAAKq0hB,UACpEa,EAAUC,YAAc,MACjBD,GAKXvB,EAAmBz3hB,UAAUw4hB,WAAa,SAAUt9e,EAAOgtO,GACvDhtO,EAAM58B,MAAQxa,KAAK27E,OAAO9+E,OAC1Bu6C,EAAMk8e,UAAYtzhB,KAAKg1hB,YAAe59e,EAAM58B,QAAUxa,KAAKi1hB,aAC3D79e,EAAMu+B,MAAQv+B,EAAMu+B,OAASyuM,EAAOhtO,EAAM58B,MAAQ4pQ,EAAOvnR,QACzDmD,KAAK27E,OAAO/5E,KAAKw1C,IAKrBu8e,EAAmBz3hB,UAAUu4hB,OAAS,SAAUr9e,EAAOk9e,EAAW95gB,GAC9D,IAAKpd,YAAkBk3hB,GAAY,CAC/B,GAAuB,UAAnBt0hB,KAAKo1hB,WAAyB7thB,KAAKgH,IAAI6oC,EAAM9gC,IAAMg+gB,EAEnD,OADAt0hB,KAAKq0hB,WAAa9shB,KAAKgH,IAAI6oC,EAAM9gC,IAC1B,EAEN,GAAuB,UAAnBtW,KAAKo1hB,WAAyB56gB,GAAS85gB,EAE5C,OADAt0hB,KAAKq0hB,WAAa9shB,KAAKgH,IAAI6oC,EAAM9gC,IAC1B,EAGf,OAAO,GAKXq9gB,EAAmBz3hB,UAAUk4hB,gBAAkB,SAAUz1hB,GAErD,IADA,IAAI9B,EAASqB,OAAOjB,KAAK0B,GAAQ9B,OACxBD,EAAI,EAAGA,EAAIC,EAAQD,IACnBQ,YAAkBuB,EAAO/B,KAAQQ,YAAkBuB,EAAO/B,GAAGoD,KAAK63f,SAAYzrf,MAAMzN,EAAO/B,GAAGoD,KAAK63f,UACpG73f,KAAK6zhB,aAAetshB,KAAKgH,IAAI5P,EAAO/B,GAAGoD,KAAK63f,UAOxD87B,EAAmBz3hB,UAAUs4hB,UAAY,SAAU35gB,EAAMje,EAAGwnR,EAAQ69O,GAChE,IAAI7qd,EAAQ,IAAIg8e,GAYhB,OAXAh8e,EAAM71B,EAAIllB,YAAS2D,KAAKw3f,MAAO38e,EAAKje,IACpCw6C,EAAM9gC,EAAIja,YAAS2D,KAAK63f,MAAOh9e,EAAKje,IACpCw6C,EAAMu/c,aAAgBv/c,EAAM9gC,EAAItW,KAAK6zhB,YAAc,KAAKhghB,QAAQ,GAChEujC,EAAMine,eAAiBhihB,YAAS2D,KAAKq+gB,eAAgBxjgB,EAAKje,IAC1Dw6C,EAAMu+B,MAAQt5E,YAAS2D,KAAK84f,kBAAmBj+e,EAAKje,IACpDw6C,EAAM7kC,KAAO6kC,EAAMilc,aAAehgf,YAAS2D,KAAK4kf,UAAUxqe,MAAQ,GAAIS,EAAKje,IAC3Ew6C,EAAMg7D,QAAU/1G,YAAS2D,KAAK+4f,oBAAsB,GAAIl+e,EAAKje,IAC7Dw6C,EAAM+9e,YAAc94hB,YAAS2D,KAAKkjC,OAAQroB,EAAKje,IAC/Cw6C,EAAM+9e,YAAc/3hB,YAAkBg6C,EAAM+9e,aAAe,MAAQ/9e,EAAM+9e,YACzE/9e,EAAMi+e,WAAapzB,EAAah+b,KAAKjoD,aAAao7B,EAAM9gC,EAAG,CAAE9F,YAAayxf,EAAa/rB,uBACvFl2e,KAAKs1hB,iBAAiBl+e,EAAOx6C,EAAGie,EAAMupQ,GAC/BhtO,GAMXu8e,EAAmBz3hB,UAAUkggB,aAAe,SAAU6F,EAAc/kB,GAChE,IAGIyH,EAHA4wC,EAAcr4C,EAASr6e,GAAWo/f,EAAajhgB,QAAQyY,GAAK,WAAazZ,KAAKwa,OAC9Eynf,EAAa77N,SAAS6/L,YAAY,CAAExsd,GAAIwof,EAAajhgB,QAAQyY,GAAK,WAAazZ,KAAKwa,QACxFxa,KAAKw1hB,aAAavzB,EAAcszB,EAAar4C,GAEzC+kB,EAAapd,6BAA+B7kf,KAAK4kf,UAAU1nb,WAC3Dynb,EAAiBsd,EAAa77N,SAAS6/L,YAAY,CAAExsd,GAAIwof,EAAajhgB,QAAQyY,GAAK,qBAAuBzZ,KAAKwa,SAChGwZ,MAAMwC,WAChBx2B,KAAKogC,UAAUo0G,QAAUytX,EAAa9E,eAA+B,QAAdn9f,KAAKmL,KAAkB,SAAW,UAC9FnL,KAAKy1hB,gBAAgBxzB,EAActd,EAAgBzH,IAErC,QAAdl9e,KAAKmL,OACLnL,KAAK01hB,cAAc11hB,KAAK21hB,WAAY31hB,KAAK41hB,mBACzC3zB,EAAa4zB,gBAAgB14B,cAAc8E,EAAcjigB,KAAKogC,UAAWpgC,KAAMu1hB,IAE/EtzB,EAAa6zB,2BACb91hB,KAAK21hB,WAAWp0gB,GAAK0gf,EAAa8zB,gBAClC/1hB,KAAK21hB,WAAWr/gB,GAAK2rf,EAAa8zB,gBAClC/1hB,KAAK21hB,WAAWhmf,QAAWsyd,EAAa8zB,gBAAkB/1hB,KAAK21hB,WAAWr/gB,EAC1EtW,KAAK21hB,WAAWjmf,OAAUuyd,EAAa8zB,gBAAkB/1hB,KAAK21hB,WAAWp0gB,IAMjFoygB,EAAmBz3hB,UAAUs5hB,aAAe,SAAUvzB,EAAcszB,EAAar4C,GAG7E,IAFA,IACIjze,EADA+rhB,EAAU/zB,EAAajhgB,QAAQyY,GAAK,WAAazZ,KAAKwa,MAAQ,UAEzDxc,EAAK,EAAGuF,EAAKvD,KAAK27E,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACrD,IAAIo5C,EAAQ7zC,EAAGvF,GACX+ue,EAAW,CACXhqd,QAAQ,EAAO3I,KAAMy8d,GAAa5S,OAAQjke,KAAMo3C,MAAOA,EAAOglJ,KAAMhlJ,EAAMu+B,MAC1EgzF,OAAQ3oK,KAAK0uB,QAAQ0oB,GAAS,CAAE1H,MAAO1vC,KAAKw5f,mBAAmB7wV,OAAOj5H,MAAOimC,MAAO31E,KAAKw5f,mBAAmB7wV,OAAOhzF,OAC/G,CAAEjmC,MAAO1vC,KAAK2oK,OAAOj5H,MAAOimC,MAAO31E,KAAK2oK,OAAOhzF,QAEvDssb,EAAal4e,QAAQ8sd,GAAa9J,GAClC31b,EAAMu+B,MAAQo3Z,EAAS3wS,KACvBnyL,EAAS,IAAI0he,GAAWqqD,EAAU5+e,EAAM58B,MAAO48B,EAAMu+B,MAAOo3Z,EAASpkU,OAAOj5H,OAAS,EAAGq9b,EAASpkU,OAAOhzF,OAASv+B,EAAMu+B,MAAO31E,KAAK2jC,QAAS,GAAI,IAChJs+d,EAAcpkB,GAAiB79e,KAAKmL,MAAQ,gBACxC8qhB,YAAY7+e,EAAOp3C,KAAMiigB,EAAch4f,EAAQsrhB,EAAar4C,GAEpE2I,IAAmB,EAAOoc,EAAai0B,mBAAoBX,EAAar4C,IAK5Ey2C,EAAmBz3hB,UAAUu5hB,gBAAkB,SAAUxzB,EAActd,EAAgBzH,GACnF+kB,EAAapd,4BAA4BsxC,eACzC,IAAIn1hB,EAAUG,YAAc,MAAO,CAC/BsY,GAAIwof,EAAajhgB,QAAQyY,GAArBwof,mCAERjigB,KAAK+zhB,eAAiB,GAAI/zhB,KAAK8zhB,gBAAkB,GAGjD,IAFA,IAAIsC,EAAe,GACfC,EAAgB,GACXr4hB,EAAK,EAAGuF,EAAKvD,KAAK27E,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACrD,IAAIo5C,EAAQ7zC,EAAGvF,GACXo5C,EAAM8lB,UACFl9D,KAAK4kf,UAAUmrC,WAAc/vhB,KAAK4kf,UAAUmrC,WAA0B,IAAZ34e,EAAM9gC,GAAyB,IAAZ8gC,EAAM9gC,GAClD,SAAjCtW,KAAKw5f,mBAAmBr8e,QACxB8kf,EAAapd,4BAA4B4wC,gBAAgBr+e,EAAOp3C,KAAK4kf,UAAWD,EAAgB3kf,KAAK27E,OAAQ37E,KAAKwa,MAAOxZ,EAASk8e,GAGtI9lc,EAAMk/e,UAAY,IAAMl/e,EAAMk/e,UAAY,IAC1Ct2hB,KAAK+zhB,eAAenyhB,KAAKw1C,GAGrBA,EAAMk/e,UAAY,GAAKl/e,EAAMk/e,UAAY,GACzCD,EAAcz0hB,KAAKw1C,GAGnBg/e,EAAax0hB,KAAKw1C,GAS9B,GALAg/e,EAAav0c,MAAK,SAAU94E,EAAGpB,GAAK,OAAOoB,EAAEuthB,SAAW3uhB,EAAE2uhB,YAC1DD,EAAcx0c,MAAK,SAAU94E,EAAGpB,GAAK,OAAOoB,EAAEuthB,SAAW3uhB,EAAE2uhB,YAC3Dt2hB,KAAK+zhB,eAAelyc,MAAK,SAAU94E,EAAGpB,GAAK,OAAOoB,EAAEuthB,SAAW3uhB,EAAE2uhB,YACjEt2hB,KAAK8zhB,gBAAkBsC,EAAatkgB,OAAOukgB,GAC3Cp0B,EAAapd,4BAA4B0xC,eAAev2hB,KAAMA,KAAK4kf,UAAWD,EAAgB3jf,EAASk8e,GACvE,OAA5Bl9e,KAAK4kf,UAAUt5d,UAAqBtqB,EAAQ0iE,kBAAmB,CAC/D,IAAI8yd,EAAoBv0B,EAAapd,4BAA4B0xC,eAAep6hB,KAAK8lgB,EAAapd,4BAA6B7kf,KAAMA,KAAK4kf,UAAWD,EAAgB3jf,EAASk8e,GAE1K+kB,EAAa1/Z,SACb0/Z,EAAar5d,qBAAqB4tf,GAEtC3wC,IAAmB,EAAOhjf,GAAWo/f,EAAajhgB,QAAQyY,GAAK,sBAAuBzY,EAASk8e,GAEnG2I,IAAmB,EAAOoc,EAAai0B,mBAAoBvxC,EAAgBzH,IAO/Ey2C,EAAmBz3hB,UAAUw5hB,cAAgB,SAAUe,EAAYC,GAC/DD,EAAWl1gB,EAAIm1gB,EAAMn1gB,EAAIk1gB,EAAWl1gB,EAAIm1gB,EAAMn1gB,EAAIk1gB,EAAWl1gB,EAC7Dk1gB,EAAWnghB,EAAIoghB,EAAMpghB,EAAImghB,EAAWnghB,EAAIoghB,EAAMpghB,EAAImghB,EAAWnghB,EAC7DmghB,EAAW9mf,OAAU+mf,EAAMpghB,EAAIoghB,EAAM/mf,OAAU8mf,EAAW9mf,OAAU+mf,EAAMpghB,EAAIoghB,EAAM/mf,OAAU8mf,EAAW9mf,OACzG8mf,EAAW/mf,MAASgnf,EAAMn1gB,EAAIm1gB,EAAMhnf,MAAS+mf,EAAW/mf,MAASgnf,EAAMn1gB,EAAIm1gB,EAAMhnf,MAAS+mf,EAAW/mf,OAMzGikf,EAAmBz3hB,UAAUo5hB,iBAAmB,SAAUl+e,EAAOx6C,EAAGie,EAAMupQ,GACtE,IAAMhnR,YAAkBg6C,EAAM9gC,KAAMlK,MAAMgrC,EAAM9gC,GAC5C,OAAO,KAGX,OADA8gC,EAAMu+B,MAAQ31E,KAAKw5f,mBAAmBp9T,MAAQhlJ,EAAMu+B,MAC5C31E,KAAKw5f,mBAAmBr8e,MAC5B,IAAK,OACDi6B,EAAM9gC,EAAI,EACV8gC,EAAM8lB,SAAU,EAChB,MACJ,IAAK,UACD,IAAIsmF,EAAW3oI,EAAKje,EAAI,IAAMie,EAAKje,EAAI,GAAGoD,KAAK63f,QAAe,EAC1DnrY,EAAO7xG,EAAKje,EAAI,IAAMie,EAAKje,EAAI,GAAGoD,KAAK63f,QAAe,EAC1Dzgd,EAAM9gC,GAAK/O,KAAKgH,IAAIi1I,GAAYj8I,KAAKgH,IAAIm+G,IAAS,EAClD1sH,KAAK6zhB,aAAez8e,EAAM9gC,EAC1B8gC,EAAM8lB,SAAU,EAChB,MACJ,QACI9lB,EAAM8lB,SAAU,IAO5By2d,EAAmBz3hB,UAAUwyB,QAAU,SAAU0oB,GAC7C,OAAOA,EAAMu+B,QAAU31E,KAAKw5f,mBAAmBp9T,MAEnDz9J,GAAW,CACP3B,YAAS,KACV22f,EAAmBz3hB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,eACD22f,EAAmBz3hB,UAAW,aAAS,GAC1CyiC,GAAW,CACP3B,YAAS,KACV22f,EAAmBz3hB,UAAW,aAAS,GAC1CyiC,GAAW,CACP3B,YAAS,KACV22f,EAAmBz3hB,UAAW,YAAQ,GACzCyiC,GAAW,CACP3B,YAAS,KACV22f,EAAmBz3hB,UAAW,0BAAsB,GACvDyiC,GAAW,CACP3B,YAAS,KACV22f,EAAmBz3hB,UAAW,aAAS,GAC1CyiC,GAAW,CACP3B,aAAS,IACV22f,EAAmBz3hB,UAAW,eAAW,GAC5CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,KAAMjmC,MAAO,GAAK0sT,KACpCu3L,EAAmBz3hB,UAAW,cAAU,GAC3CyiC,GAAW,CACPvB,YAAQ,KAAM8B,KACfy0f,EAAmBz3hB,UAAW,iBAAa,GAC9CyiC,GAAW,CACP3B,YAAS,eACV22f,EAAmBz3hB,UAAW,mBAAe,GAChDyiC,GAAW,CACP3B,YAAS,KACV22f,EAAmBz3hB,UAAW,sBAAkB,GACnDyiC,GAAW,CACP3B,YAAS,KACV22f,EAAmBz3hB,UAAW,yBAAqB,GACtDyiC,GAAW,CACP3B,YAAS,OACV22f,EAAmBz3hB,UAAW,sBAAkB,GACnDyiC,GAAW,CACP3B,YAAS,OACV22f,EAAmBz3hB,UAAW,eAAW,GAC5CyiC,GAAW,CACP3B,YAAS,UACV22f,EAAmBz3hB,UAAW,iBAAa,GAC9CyiC,GAAW,CACPvB,YAAQ,GAAI81f,KACbS,EAAmBz3hB,UAAW,iBAAa,GAC9CyiC,GAAW,CACP3B,YAAS,KACV22f,EAAmBz3hB,UAAW,gBAAY,GAC7CyiC,GAAW,CACP3B,YAAS,IACV22f,EAAmBz3hB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,YAAS,OACV22f,EAAmBz3hB,UAAW,gBAAY,GAC7CyiC,GAAW,CACP3B,YAAS,QACV22f,EAAmBz3hB,UAAW,cAAU,GAC3CyiC,GAAW,CACP3B,YAAS,MACV22f,EAAmBz3hB,UAAW,mBAAe,GAChDyiC,GAAW,CACP3B,YAAS,QACV22f,EAAmBz3hB,UAAW,YAAQ,GACzCyiC,GAAW,CACP3B,aAAS,IACV22f,EAAmBz3hB,UAAW,qBAAiB,GAClDyiC,GAAW,CACP3B,aAAS,IACV22f,EAAmBz3hB,UAAW,eAAW,GAC5CyiC,GAAW,CACP3B,YAAS,QACV22f,EAAmBz3hB,UAAW,qBAAiB,GAClDyiC,GAAW,CACP3B,aAAS,IACV22f,EAAmBz3hB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,YAAS,OACV22f,EAAmBz3hB,UAAW,oBAAgB,GACjDyiC,GAAW,CACPvB,YAAQ,CAAEjgB,KAAM,QAAU+md,KAC3ByvD,EAAmBz3hB,UAAW,0BAAsB,GACvDyiC,GAAW,CACP3B,YAAS,IACV22f,EAAmBz3hB,UAAW,gBAAY,GAC7CyiC,GAAW,CACP3B,YAAS,QACV22f,EAAmBz3hB,UAAW,aAAS,GAC1CyiC,GAAW,CACP3B,YAAS,QACV22f,EAAmBz3hB,UAAW,cAAU,GAC3CyiC,GAAW,CACP3B,YAAS,QACV22f,EAAmBz3hB,UAAW,iBAAa,GAC9CyiC,GAAW,CACP3B,YAAS,QACV22f,EAAmBz3hB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,YAAS,WACV22f,EAAmBz3hB,UAAW,mBAAe,GAChDyiC,GAAW,CACP3B,YAAS,IACV22f,EAAmBz3hB,UAAW,eAAW,GACrCy3hB,EApb6B,CAqbtCtuf,KAmBK,SAASsxf,GAAan8gB,EAAOmhE,GAChC,IAAK,IAAI39E,EAAK,EAAGm+gB,EAAWxgc,EAAQ39E,EAAKm+gB,EAASt/gB,OAAQmB,IAAM,CAC5D,IAAIo5C,EAAQ+ke,EAASn+gB,GACrB,GAAIo5C,EAAM58B,QAAUA,EAChB,OAAO48B,EAGf,OAAO,KChnBX,IAAIw/e,GAAkC,WAElC,SAASA,EAAiB30B,GACtBjigB,KAAKiigB,aAAeA,EAqUxB,OAnUA/jgB,OAAOwpB,eAAekvgB,EAAiB16hB,UAAW,SAAU,CAMxDyrB,IAAK,WACD,OAAO3nB,KAAK62hB,YAA0D,QAA5C72hB,KAAKiigB,aAAa3S,cAAc,GAAGnkf,KACzDnL,KAAKiigB,aAAa4zB,gBAAgBhlV,OAAS,OAOnDhpL,IAAK,SAAUrrB,GACXwD,KAAK62hB,UAAYr6hB,GAErBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAekvgB,EAAiB16hB,UAAW,SAAU,CAMxDyrB,IAAK,WACD,YAA0B3rB,IAAnBgE,KAAK82hB,UAA0B92hB,KAAK82hB,UACvC92hB,KAAKiigB,aAAa4zB,gBAAgB3yf,QAO1Crb,IAAK,SAAUrrB,GACXwD,KAAK82hB,UAAYt6hB,GAErBsrB,YAAY,EACZC,cAAc,IAElB7pB,OAAOwpB,eAAekvgB,EAAiB16hB,UAAW,cAAe,CAM7DyrB,IAAK,WACD,YAA+B3rB,IAAxBgE,KAAK+2hB,eAA+B/2hB,KAAK+2hB,eAC5C/2hB,KAAKiigB,aAAa4zB,gBAAgBmB,aAO1CnvgB,IAAK,SAAUrrB,GACXwD,KAAK+2hB,eAAiBv6hB,GAE1BsrB,YAAY,EACZC,cAAc,IAOlB6ugB,EAAiB16hB,UAAU+6hB,WAAa,WACpC,MAAkC,QAA3Bj3hB,KAAKiigB,aAAa92f,MAO7ByrhB,EAAiB16hB,UAAUg7hB,gBAAkB,WACzC,OAAOl3hB,KAAKiigB,aAAa4zB,gBAAgBsB,gBAO7CP,EAAiB16hB,UAAUk7hB,eAAiB,SAAUtwgB,GAClD,GAAIA,EAAMmW,OAAOxjB,GAAGtb,QAAQ,aAAe,GAAK2oB,EAAMmW,OAAOxjB,GAAGtb,QAAQ,gBAAkB,EAAG,CACzF,IAAI6le,EAAa8c,GAAYh6d,EAAMmW,OAAOxjB,IAAI29B,MAC9C,GAAIhrC,MAAM43d,IAAgBl9c,EAAMmW,OAAOxjB,GAAGtb,QAAQ,gBAAkB,GACQ,YAAxE6B,KAAKiigB,aAAa3S,cAAc,GAAG3za,OAAOqoZ,GAAY6W,cACtD,OAAO,KAEX76e,KAAKq3hB,cAAcrzD,EAAYhke,KAAKiigB,cACpCjigB,KAAKs3hB,aAAatzD,EAAYhke,KAAKiigB,aAAa1zB,gBAAkB,IAAM,KAQhFqoD,EAAiB16hB,UAAUq7hB,cAAgB,WAGvC,IAFA,IAAItzD,EAASjke,KAAKiigB,aAAa3S,cAAc,GACzCxud,EAAW9gC,KAAKiigB,aAAa1zB,gBAAkB,IAAM,EAChDvwe,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIo5C,EAAQ7zC,EAAGvF,GACXo5C,EAAMk8e,WACNtzhB,KAAKw3hB,aAAapgf,EAAM58B,MAAO48B,EAAOtW,GAG9C,GAAI9gC,KAAKiigB,aAAaqe,6BAAmE,SAApCtghB,KAAKiigB,aAAa7M,eACnEp1f,KAAKiigB,aAAaqe,4BAA4BjR,oBAAoBxygB,OAClE,IAAK,IAAIk4B,EAAK,EAAGI,EAAKn1B,KAAKiigB,aAAaqe,4BAA4BjR,oBAAqBt6e,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAC3G,IAAIva,EAAQ2a,EAAGJ,GACf/0B,KAAKq3hB,cAAc78gB,EAAM48B,MAAOp3C,KAAKiigB,cAAc,GACnDjigB,KAAKs3hB,aAAa98gB,EAAM48B,MAAOtW,KAS3C81f,EAAiB16hB,UAAUo7hB,aAAe,SAAU98gB,EAAOi9gB,GAGvD,IAFA,IAAIzB,EAAUh2hB,KAAKiigB,aAAajhgB,QAAQyY,GAAK,mBAEpCzb,EAAK,EAAGm+gB,EADJn8gB,KAAKiigB,aAAa3S,cAAc,GAAG3za,OACZ39E,EAAKm+gB,EAASt/gB,OAAQmB,IAAM,CAC5D,IAAIwgf,EAAe29B,EAASn+gB,IACvBwc,IAAUgke,EAAahke,QAAUgke,EAAag1C,UAAah1C,EAAa+0C,aACzE/0C,EAAa80C,WAAY,EACzBtzhB,KAAK03hB,eAAel5C,EAAahke,MAAOw7gB,EAASyB,MAS7Db,EAAiB16hB,UAAUm7hB,cAAgB,SAAU78gB,EAAOk4d,EAAOqiD,QAC/C,IAAZA,IAAsBA,GAAU,GACpC,IAAI9wD,EAASyO,EAAM4c,cAAc,GAC7B3za,EAASsoZ,EAAOtoZ,OAChBvkC,EAAQu/e,GAAan8gB,EAAOmhE,GAC5B07c,GAAgB,EAChBv2f,EAAW9gC,KAAKiigB,aAAa1zB,gBAAkB,IAAM,EACzD,GAAInxe,YAAkBg6C,GAClB,OAAO,KAEX,IAAIugf,GAAsB5C,IACrB39e,EAAMo8e,UAAavvD,EAAO2vD,cAAc/2hB,QACrC8+E,EAAOA,EAAO9+E,OAAS,GAAG2d,QAAUypd,EAAO2vD,cAAc3vD,EAAO2vD,cAAc/2hB,OAAS,GAAG2d,OAC9E,QAAhBypd,EAAO94d,OAAmBwshB,GAAsBvgf,EAAMm8e,aACtD8D,EAAgBr3hB,KAAK43hB,iBAAiBp9gB,EAAO48B,EAAO6sb,EAAQtoZ,EAAQ+2Z,EAAO5xc,EAAU62f,IAErFN,GACAr3hB,KAAKw3hB,aAAah9gB,EAAO48B,EAAOtW,EAAUi0f,IAGlD6B,EAAiB16hB,UAAU27hB,OAAS,SAAUl8c,GAC1C,IAAI2tQ,EAAQ,EAIZ,OAHA3tQ,EAAOl3E,KAAI,SAAU2yC,GACjBkyS,GAASlyS,EAAM8lB,QAAU9lB,EAAM9gC,EAAI,KAEhCgzU,GAEXstM,EAAiB16hB,UAAU07hB,iBAAmB,SAAUp9gB,EAAO48B,EAAO6sb,EAAQtoZ,EAAQ+2Z,EAAO5xc,EAAU62f,GAEnG,QAD2B,IAAvBA,IAAiCA,GAAqB,GACtDvgf,EAAMm8e,UAWN,OAVA7gD,EAAMyqB,eAAgB,EACtBxhb,EAAO7hE,OAAO6hE,EAAO9+E,OAAS,EAAG,GACjCone,EAAO2vD,cAAcnvhB,KAAI,SAAU2yC,GAC/BA,EAAM8lB,SAAU,EAChB9lB,EAAMk8e,WAAY,KAEtB5gD,EAAM4c,cAAc,GAAG3za,OAASA,EAAO7pD,OAAOmyc,EAAO2vD,eACrD5zhB,KAAKs3hB,aAAa98gB,EAAOsmB,GACzBmjc,EAAO4vD,YAAc7zhB,KAAK63hB,OAAOnlD,EAAM4c,cAAc,GAAG3za,QACxD+2Z,EAAM6nB,gBACC,EAEN,GAAIo9B,GAAsBvgf,EAAMo8e,SAAU,CAC3C9gD,EAAMyqB,eAAgB,EACtBxhb,EAAO7hE,OAAO6hE,EAAO9+E,OAASone,EAAO2vD,cAAc/2hB,OAAQone,EAAO2vD,cAAc/2hB,QAChF,IAAIq4hB,EAAYjxD,EAAO4wD,oBAYvB,GAXAK,EAAU16gB,MAAQmhE,EAAO9+E,OACzBq4hB,EAAUv/c,MAAQsuZ,EAAO2vD,cAAc,GAAGj+c,MAC1CgG,EAAO/5E,KAAKszhB,GACZjxD,EAAO4vD,YAAc7zhB,KAAK63hB,OAAOl8c,GACjC37E,KAAKs3hB,aAAa98gB,EAAOsmB,GACzBo0f,EAAU5B,WAAY,EACtB5gD,EAAM4c,cAAc,GAAG3za,OAASA,EAChC+2Z,EAAM6nB,eACNv6f,KAAKw3hB,aAAatC,EAAU16gB,MAAOmhE,EAAOu5c,EAAU16gB,OAAQ,GAAG,GAC/D06gB,EAAU5B,WAAY,EACtBtzhB,KAAK03hB,eAAexC,EAAU16gB,MAAOk4d,EAAM1xe,QAAQyY,GAAK,mBAAoBqnB,GACxEsW,EAAMo8e,SACN,OAAO,EAGf,OAAO,GAUXoD,EAAiB16hB,UAAUs7hB,aAAe,SAAUh9gB,EAAO48B,EAAOtW,EAAUi0f,GACxE,IAAIliM,EACAmjM,EAAUh2hB,KAAKiigB,aAAajhgB,QAAQyY,GAAK,mBACzCi5d,EAAQ1ye,KAAKiigB,aAQbpvK,EAPC7yV,KAAKi3hB,aAOMh4C,GAAiB7nc,EAAMk/e,SAAU5jD,EAAMqjD,gBAAiB/1hB,KAAK6wM,QAN7D,CACRtvL,EAAK61B,EAAM85e,aAAe95e,EAAM85e,YAAY3vgB,EAAI61B,EAAM6+c,OAAO10e,GAAMmxd,EAAMqjD,gBACrErjD,EAAMqjD,gBAAkBz/gB,EAAG,GAMnCtW,KAAKszhB,UAAU0C,EAAUx7gB,IAAUu6gB,GACnC39e,EAAMk8e,WAAY,EAClBtzhB,KAAK83hB,aAAat9gB,EAAOq4U,EAAWmjM,EAASh2hB,KAAK6wM,QAAU,CAAEtvL,EAAG,EAAGjL,EAAG,GAAKwqB,KAG5EsW,EAAMk8e,WAAY,EAClBtzhB,KAAK03hB,eAAel9gB,EAAOw7gB,EAASl1f,KAM5C81f,EAAiB16hB,UAAUo3hB,UAAY,SAAU75gB,GAC7C,IAAIzY,EAAU6B,GAAW4W,GACrB+pB,EAAYxiC,EAAUA,EAAQmuB,aAAa,aAAe,KAC9D,OAAQnuB,IAA0B,oBAAdwiC,GAAiD,OAAdA,GAAoC,iBAAdA,IAKjFozf,EAAiB16hB,UAAUw7hB,eAAiB,SAAUl9gB,EAAOu9gB,EAASN,GAClE,IAAIz2hB,EAAU6B,GAAWk1hB,EAAUv9gB,GAC/BxZ,IACoBA,EAAQP,WAAWm6c,UAAUz+Z,aAAa,cAE1Dn7C,EAAQP,WAAWm6c,UAAUv6a,gBAAgB,cAGrD,IAAImD,EAAYxiC,EAAUA,EAAQmuB,aAAa,aAAe,KAC9D,GAAInvB,KAAKiigB,aAAa1zB,iBAAmBvte,GAAWwiC,GAClC,oBAAdA,GAAiD,iBAAdA,EAA8B,CACjE,IAAI7kC,EAAS,iDAAiDsmB,KAAKue,GACnExjC,KAAKy8f,iBAAiBjif,EAAOu9gB,EAAS,EAAG,GAAIp5hB,EAAO,IAAKA,EAAO,IAAM,EAAG84hB,GAAmB,QAG5Fz3hB,KAAKy8f,iBAAiBjif,EAAOu9gB,EAAS,EAAG,EAAG,EAAG,EAAGN,GAAmB,IAM7Eb,EAAiB16hB,UAAU87hB,aAAe,SAAUx9gB,EAAOu9gB,EAAShqf,EAAUvK,GAC1ExjC,KAAKi4hB,oBAAoBF,EAAUv9gB,EAAOuzB,GACtC/tC,KAAKiigB,aAAa3S,cAAc,GAAG1K,UAAU1nb,UAC7C66d,EAAU/3hB,KAAKiigB,aAAajhgB,QAAQyY,GAAK,uBACzCzZ,KAAKi4hB,oBAAoBF,EAAU,SAAWv9gB,EAAOuzB,GACrD/tC,KAAKi4hB,oBAAoBF,EAAU,QAAUv9gB,EAAOuzB,EAAWvK,GAC/DxjC,KAAKi4hB,oBAAoBF,EAAU,aAAev9gB,EAAOuzB,KAMjE6of,EAAiB16hB,UAAU+7hB,oBAAsB,SAAUx+gB,EAAIs0B,GAC3D,IAAI/sC,EAAU6B,GAAW4W,GACrBzY,GACAA,EAAQ40B,aAAa,YAAamY,IAM1C6of,EAAiB16hB,UAAU47hB,aAAe,SAAUt9gB,EAAOq4U,EAAWklM,EAASlnV,EAAQ4mV,GACnFz3hB,KAAKy8f,iBAAiBjif,EAAOu9gB,EAAS,EAAG,EAAGllM,EAAUtxU,EAAIsvL,EAAOtvL,EAAGsxU,EAAUv8U,EAAIu6L,EAAOv6L,EAAGmhhB,IAahGb,EAAiB16hB,UAAUuggB,iBAAmB,SAAUjif,EAAOu9gB,EAASv/e,EAAQC,EAAQs5c,EAAMF,EAAM/wd,EAAUo3f,GAC1G,IASI3/L,EACAC,EAVAz4V,EAAQC,KACR0ye,EAAQ1ye,KAAKiigB,aACb1lc,EAASw7d,EAAQp7hB,MAAM,KACvBone,EAAc5td,SAAS4hhB,EAAQp7hB,MAAM,KAAK4/D,EAAO1/D,OAAS,GAAI,IAC9Du6C,EAAQs7b,EAAM4c,cAAcvrB,GAAapoZ,OAAOnhE,GACpD,GAAIsmB,GAAY,EAEZ,OADA9gC,KAAKg4hB,aAAax9gB,EAAOu9gB,EAAS,aAAgBhmC,EAAQ,KAAQF,EAAQ,IAAKz6c,EAAM5T,WAC9E,KAIX,IAAItE,IAAU,IAAIY,QAAQ3+B,YAAc,OAAQ,CAC5C2/B,SAAUA,EACVK,SAAU,SAAUlhC,GAChBs4V,EAASj5T,GAAOr/B,EAAKygC,UAAW8X,EAAQu5c,EAAM9xf,EAAK6gC,UACnD03T,EAASl5T,GAAOr/B,EAAKygC,UAAW+X,EAAQo5c,EAAM5xf,EAAK6gC,UACnD/gC,EAAMi4hB,aAAax9gB,EAAOu9gB,EAAS,cAAgBG,EAAYnmC,EAAOx5J,EAASA,GAAU,MAAQ2/L,EAAYrmC,EAAOr5J,EAASA,GAAU,IAAKphT,EAAM5T,YAEtJ7qB,IAAK,WACD5Y,EAAMi4hB,aAAax9gB,EAAOu9gB,EAAS,cAAgBG,EAAY1/e,EAASu5c,GAAQ,MAAQmmC,EAAY1/e,EAASq5c,GAAQ,IAAKz6c,EAAM5T,eAIrIozf,EAxU2B,GCblCv4f,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA4BzC05f,GAAyB,SAAUh5f,GAEnC,SAASg5f,IACL,OAAkB,OAAXh5f,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAoM/D,OAtMAq+B,GAAU85f,EAASh5f,GASnBg5f,EAAQj8hB,UAAU03S,eAAiB,SAAU8+L,EAAOzO,GAChDjke,KAAKiigB,aAAevvB,EACpB1ye,KAAKw8E,KAAOj1E,KAAK6L,IAAIs/d,EAAMsK,gBAAgBttc,MAAOgjc,EAAMsK,gBAAgBrtc,QACxE3vC,KAAKo4hB,WAAWn0D,GAChB,IAAInlc,EAAI3oB,SAAS8td,EAAO/gc,OAAQ,IAChC,IAAqC,IAAhC+gc,EAAO/gc,OAAO/kC,QAAQ,MAA4B,kBAAN2gC,GAAoB1yB,MAAM0yB,GAOtE,CACD,IAAIu5f,EAAmB,GACvBr4hB,KAAKm3hB,gBAAiB,EACtB,IAAK,IAAIv6hB,EAAI,EAAGA,EAAIsB,OAAOjB,KAAKgne,EAAOtoZ,QAAQ9+E,OAAQD,KACA,IAA/Cqne,EAAOtoZ,OAAO/+E,GAAGu4hB,YAAYh3hB,QAAQ,KACrCk6hB,EAAiBz7hB,GAAKkrf,GAAe7jB,EAAOtoZ,OAAO/+E,GAAGu4hB,YAAan1hB,KAAKw8E,KAAO,GAG/E67c,EAAiBz7hB,GAAKuZ,SAAS8td,EAAOtoZ,OAAO/+E,GAAGu4hB,YAAa,IAGrE,IAAImD,EAAY/whB,KAAK6L,IAAIhX,MAAM,KAAMi8hB,GACjCE,EAAYhxhB,KAAK8L,IAAIjX,MAAM,KAAMi8hB,GACrCr4hB,KAAKkjC,OAASljC,KAAKw4hB,aAAeD,EAClCv4hB,KAAKqhf,YAAcyG,GAAe7jB,EAAOod,YAAarhf,KAAKw4hB,cAC3Dx4hB,KAAKqhf,YAAcrhf,KAAKqhf,YAAci3C,EAAat4hB,KAAKqhf,YAAc,EAAKrhf,KAAKqhf,iBArBhFrhf,KAAKm3hB,gBAAiB,EACtBn3hB,KAAKkjC,OAAS4kd,GAAe7jB,EAAO/gc,OAAQljC,KAAKw8E,KAAO,GACxDx8E,KAAKqhf,YAAcyG,GAAe7jB,EAAOod,YAAarhf,KAAKkjC,QAC3DljC,KAAKg3hB,YAA4C,WAA9B/yD,EAAO2gB,UAAU72c,UAA2B/tC,KAAKkjC,OAASljC,KAAKqhf,aAAe,EAAKrhf,KAAKqhf,YACtGrhf,KAAKkjC,OAAS4kd,GAAe7jB,EAAO2gB,UAAU6zC,eAAe57hB,QAAU,KAAMmD,KAAKw8E,KAAO,GAuBlGk2Z,EAAMqjD,gBAAkB9xD,EAAO8wD,QAAUjtC,GAAe7jB,EAAOy0D,cAAe14hB,KAAKkjC,QAAU,EAC7FljC,KAAK24hB,WAAWjmD,EAAOzO,GACvBjke,KAAK44hB,kBAAkB30D,EAAQA,EAAO2gB,UAAU1nb,QAAS+ma,EAAO2gB,UAAU72c,UAC1E/tC,KAAK64hB,YAAc,MAMvBV,EAAQj8hB,UAAU48hB,eAAiB,SAAU70D,EAAQ7sb,GACjD,MAAqC,WAA9B6sb,EAAO2gB,UAAU72c,UAChB+5c,GAAe1wc,EAAM+9e,YAAan1hB,KAAKkjC,QAAUljC,KAAKqhf,aAAgB,EAAKrhf,KAAKqhf,YACnFyG,GAAe1wc,EAAM+9e,YAAan1hB,KAAKw4hB,cAAgB1wC,GAAe7jB,EAAO2gB,UAAU6zC,eAAe57hB,QAAU,KAAMmD,KAAKw8E,KAAO,IAO3I27c,EAAQj8hB,UAAUy8hB,WAAa,SAAU12B,EAAch+B,GACnDjke,KAAKiigB,aAAeA,EACpBjigB,KAAK6wM,OAAS,CACVtvL,EAAGume,GAAema,EAAapxT,OAAOtvL,EAAG0gf,EAAajlB,gBAAgBttc,OAAUuyd,EAAajlB,gBAAgBz7d,EAC7GjL,EAAGwxe,GAAema,EAAapxT,OAAOv6L,EAAG2rf,EAAajlB,gBAAgBrtc,QAAWsyd,EAAajlB,gBAAgB1me,GAElH,IAAIyihB,EAAmB/4hB,KAAKg5hB,eAAe/0D,GACvCg1D,EAAyB,IAAI75C,GAAc25C,EAAiBx3gB,EAAIw3gB,EAAiBrpf,MAAQ,EAAGqpf,EAAiBzihB,EAAIyihB,EAAiBppf,OAAS,GAC/I3vC,KAAK6wM,OAAOtvL,GAAMvhB,KAAK6wM,OAAOtvL,EAAI03gB,EAAuB13gB,EACzDvhB,KAAK6wM,OAAOv6L,GAAMtW,KAAK6wM,OAAOv6L,EAAI2ihB,EAAuB3ihB,EACzDtW,KAAKiigB,aAAal5F,OAAS/oa,KAAK6wM,QAKpCsnV,EAAQj8hB,UAAUk8hB,WAAa,SAAUn0D,GACrC,IAAImd,EAAWhkf,YAAkB6me,EAAOmd,UAAYnd,EAAO4c,WAAa5c,EAAOmd,SAC/Ephf,KAAK64hB,YAAcz3C,EAAWnd,EAAO4c,YAAc,IACnD7gf,KAAK6gf,WAAa5c,EAAO4c,WAAa,GACtC7gf,KAAK64hB,WAAa74hB,KAAK64hB,YAAc,EAAK,IAAM74hB,KAAK64hB,WAAc74hB,KAAK64hB,WACxE74hB,KAAK6gf,YAAc7gf,KAAK6gf,WAAa,EAAK7gf,KAAK6gf,WAAa,IAAO7gf,KAAK6gf,YAAc,KAO1Fs3C,EAAQj8hB,UAAU08hB,kBAAoB,SAAU30D,EAAQ/ma,EAASnvB,GAC7D,IAAI6nf,EAAoB51hB,KAAKg5hB,eAAe/0D,GAC5CA,EAAO2xD,kBAAoBA,EAC3B3xD,EAAO0xD,WAAa,IAAI1qD,GAAK2qD,EAAkBr0gB,EAAGq0gB,EAAkBt/gB,EAAGs/gB,EAAkBlmf,MAAQkmf,EAAkBr0gB,EAAGq0gB,EAAkBjmf,OAASimf,EAAkBt/gB,GAC/J4mD,GAAwB,YAAbnvB,IACXk2b,EAAO0xD,WAAa,IAAI1qD,GAAKryd,IAAUA,KAAWA,KAAWA,OAQrEu/gB,EAAQj8hB,UAAU88hB,eAAiB,SAAU/0D,GACzC,IAAI/zb,EAAO,IAAI+6b,GAAKryd,IAAUA,KAAWA,KAAWA,KACpD5Y,KAAKo4hB,WAAWn0D,GAChB,IAAI/me,EAAQ8C,KAAK6gf,WACbv3J,EAAQtpV,KAAK64hB,WACblghB,GAAO3Y,KAAK6gf,WAAav3J,GAAS,IACtC3wU,EAAe,IAARA,EAAa,IAAMA,EAC1Bsrd,EAAOyxD,cAAcxlf,EAAMlwC,KAAKk5hB,iBAAiBh8hB,IACjD+me,EAAOyxD,cAAcxlf,EAAMlwC,KAAKk5hB,iBAAiBvghB,IACjDsrd,EAAOyxD,cAAcxlf,EAAM,IAAI+6b,GAAKjre,KAAK6wM,OAAOtvL,EAAGvhB,KAAK6wM,OAAOv6L,EAAG,EAAG,IACrE,IAAI6ihB,GAA0C,GAAzB5xhB,KAAKC,MAAMtK,EAAQ,IAAW,IAAM,IACrDk8hB,EAAuC,GAAvB7xhB,KAAKC,MAAMmR,EAAM,IAAY,IACjDyghB,EAAiC,IAAjBA,EAAsB,IAAMA,GACxC9vM,GAAS,IAAM8vM,IAAiBD,KAChCl1D,EAAOyxD,cAAcxlf,EAAMlwC,KAAKk5hB,iBAAiBC,IACjDl1D,EAAOyxD,cAAcxlf,EAAMlwC,KAAKk5hB,iBAAiBE,MAEvC,IAAVl8hB,GAAgBA,EAAQosV,GAAS,MACjC26I,EAAOyxD,cAAcxlf,EAAMlwC,KAAKk5hB,iBAAiB,IAGrD,IADA,IAAIr8hB,EAASs8hB,IAAkBC,EAAe,EAAI7xhB,KAAKC,MAAM8hV,EAAQ,IAC5D1sV,EAAI,EAAGA,EAAIC,EAAQD,MACxBu8hB,GAAgC,IACXC,GAAgBzghB,EAAMzb,GAAoB,MAAVosV,IACjD26I,EAAOyxD,cAAcxlf,EAAMlwC,KAAKk5hB,iBAAiBC,IAKzD,OAFAjpf,EAAKR,OAASQ,EAAK3uB,EACnB2uB,EAAKP,QAAUO,EAAK55B,EACb45B,GAKXiof,EAAQj8hB,UAAUg9hB,iBAAmB,SAAU1nJ,GAC3C,IAAIxoW,EAAWi2c,GAAiBztG,EAAOxxY,KAAKkjC,OAAQljC,KAAK6wM,QACzD,OAAO,IAAIo6R,GAAKjic,EAASznB,EAAGynB,EAAS1yB,EAAG,EAAG,IAK/C6hhB,EAAQj8hB,UAAUm9hB,WAAa,SAAUxoV,EAAQ3zM,EAAOyb,EAAKuqB,EAAQm+c,GACjE,IAAInC,EAASvme,EAAMzb,EAEfyW,GADJure,EAASA,EAAS,EAAKA,EAAS,IAAOA,GAClB,IAAO,EAAI,EAChC,OAAKmC,GAA+B,IAAhBA,EAITrhf,KAAKs5hB,gBAAgBzoV,EAAQouS,GAAiB/hf,EAAOgmC,EAAQ2tK,GAASouS,GAAiBtme,EAAKuqB,EAAQ2tK,GAAS3tK,EAAQ+7c,GAAiB/hf,EAAOmkf,EAAaxwS,GAASouS,GAAiBtme,EAAK0oe,EAAaxwS,GAASwwS,EAAa1te,GAH5N3T,KAAKu5hB,WAAW1oV,EAAQouS,GAAiB/hf,EAAOgmC,EAAQ2tK,GAASouS,GAAiBtme,EAAKuqB,EAAQ2tK,GAAS3tK,EAAQvvB,IAS/HwkhB,EAAQj8hB,UAAUq9hB,WAAa,SAAU1oV,EAAQ3zM,EAAOyb,EAAKuqB,EAAQs2f,GACjE,MAAO,KAAO3oV,EAAOtvL,EAAI,IAAMsvL,EAAOv6L,EAAI,MAAQpZ,EAAMqkB,EAAI,IAAMrkB,EAAMoZ,EAAI,MAAQ4sB,EAAS,IACzFA,EAAS,MAAQs2f,EAAY,MAAQ7ghB,EAAI4I,EAAI,IAAM5I,EAAIrC,EAAI,MAKnE6hhB,EAAQj8hB,UAAUo9hB,gBAAkB,SAAUzoV,EAAQ3zM,EAAOyb,EAAKuqB,EAAQu2f,EAAYC,EAAUr4C,EAAam4C,GACzG,MAAO,KAAOt8hB,EAAMqkB,EAAI,IAAMrkB,EAAMoZ,EAAI,MAAQ4sB,EAAS,IAAMA,EAAS,MAAQs2f,EAC5E,MAAQ7ghB,EAAI4I,EAAI,IAAM5I,EAAIrC,EAAI,MAAQojhB,EAASn4gB,EAAI,IAAMm4gB,EAASpjhB,EAAI,MAAQ+qe,EAC9E,IAAMA,EAAc,MAAQm4C,EAAY,MAAQC,EAAWl4gB,EAAI,IAAMk4gB,EAAWnjhB,EAAI,MAK5F6hhB,EAAQj8hB,UAAUkhgB,YAAc,SAAU/7f,EAAO4ie,GAC7C,IAGIzne,EAHAuD,EAAQC,KACR6gf,EAAa5c,EAAO4c,WAAa,GACjC//c,EAAW9gC,KAAKiigB,aAAanhe,SAAW9gC,KAAKiigB,aAAanhe,SAAWmjc,EAAO7jc,UAAUU,SAE1F9gC,KAAK6wM,OAAOtvL,GAAK,EACjB,IAAI2hB,EAAmG,IAA1F37B,KAAK8L,IAAIrT,KAAKiigB,aAAa1e,cAAc5zc,OAAQ3vC,KAAKiigB,aAAa1e,cAAc7zc,OAC9FxM,GAAoB,KAAVA,EAEV,IAAI0kH,EAASq6V,GAAqB,UAClC,IAAI/id,IAAU,IAAIY,QAAQz+B,EAAO,CAC7By/B,SAAUA,EACVjhC,MAAOoke,EAAO7jc,UAAUvgC,MACxBshC,SAAU,SAAUlhC,GAChBzD,EAAQorJ,EAAO3nJ,EAAKygC,UAAWmgd,EAAY9gf,EAAM84hB,WAAY54hB,EAAK6gC,UAClEz/B,EAAMu0B,aAAa,IAAK71B,EAAMs5hB,WAAWt5hB,EAAM8wM,OAAQgwS,EAAYrkf,EAAO0mC,EAAQ,KAEtFvqB,IAAK,WACD5Y,EAAM8wM,OAAOtvL,GAAK,EAClBlgB,EAAMu0B,aAAa,IAAK71B,EAAMs5hB,WAAWt5hB,EAAM8wM,OAAQ,EAAG,UAAW3tK,EAAQ,IAC7EnjC,EAAMkigB,aAAal4e,Q/BjNJ,oB+BiN+BhqB,EAAMkigB,aAAa3igB,SAAW,GACxE,CAAE2ke,OAAQA,EAAQg+B,aAAcligB,EAAMkigB,aAAcvvB,MAAO3ye,EAAMkigB,eAChDp/f,GAAW9C,EAAMkigB,aAAajhgB,QAAQyY,GAAK,qBAAuBwqd,EAAOzpd,OAC/EwZ,MAAMwC,WAAaz2B,EAAMkigB,aAAa9oe,YAAc,SAAW,cAInFg/f,EAvMkB,CAwM3BvB,ICpOEv4f,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAoBzCk7f,GAA2B,SAAUx6f,GAErC,SAASw6f,IACL,OAAkB,OAAXx6f,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA8J/D,OAhKAq+B,GAAUs7f,EAAWx6f,GASrBw6f,EAAUz9hB,UAAU+5hB,YAAc,SAAU7+e,EAAO6sb,EAAQyO,EAAOzoe,EAAQsrhB,EAAar4C,GACnF,IAAI9xZ,EAAM64Y,EAAO4vD,YACjBz8e,EAAMypc,WAAa7gf,KAAK6gf,WACxB,IAAIroJ,EAASphT,EAAM8lB,QAAU9lB,EAAM9gC,EAAI,EACnC4oe,EAAU9zZ,EAAS7jF,KAAKgH,IAAIiqV,GAAUptQ,EAAQprF,KAAK64hB,WAAe,KAClE37hB,EAAQqK,KAAK6pY,GAAK,KAAQ,IAAM,IAAMpxY,KAAK6gf,YAAe,IAC9D7gf,KAAKkjC,OAASljC,KAAKm3hB,eAAiBrvC,GAAe1wc,EAAM+9e,YAAan1hB,KAAKw4hB,cAAgBx4hB,KAAKkjC,OAChGj5B,EAAOpC,EAAI7H,KAAK45hB,cAAcxif,EAAO8nc,EAAQl/e,KAAK6gf,WAAa,KAC/Dzpc,EAAMk/e,UAAYt2hB,KAAK6gf,WAAc3B,EAAS,GAAM,IACpD9nc,EAAMgqc,SAAWphf,KAAK6gf,WAAa,IACnCzpc,EAAMm6b,eAAiB0N,GAAiB7nc,EAAMk/e,UAAWt2hB,KAAKkjC,OAASljC,KAAKqhf,aAAe,EAAGrhf,KAAK6wM,QAC9FqsS,GAMDq4C,EAAYvzhB,YAAY0we,EAAMtsM,SAAS4+H,SAAS/6Z,IAChDjK,KAAKknC,QAAQkQ,EAAO8nc,EAAQhif,EAAOw1e,EAAOzoe,KAN1CsrhB,EAAYvzhB,YAAY0we,EAAMtsM,SAAS4+H,SAAS/6Z,IAChDmtC,EAAM8nc,OAASA,EACf9nc,EAAMl6C,MAAQA,IAOtBy8hB,EAAUz9hB,UAAU29hB,WAAa,SAAUh5hB,GACvC,IAEIqiC,EAA8B,IAArBljC,KAAKqhf,YAAoBrhf,KAAKkjC,OAF3B,EAEgDljC,KAAKqhf,YAFrD,EAGZA,EAAmC,IAArBrhf,KAAKqhf,YAAoBn+c,EAF/B,EAEgDA,EAFhD,EAGZljC,KAAK85hB,iBAAiBj5hB,EAAGqiC,EAAQm+c,IAErCs4C,EAAUz9hB,UAAU49hB,iBAAmB,SAAUhzgB,EAAOoc,EAAQm+c,GAC5D,IAII04C,EAHAtghB,EAAKqne,GADIh6d,EAAMmW,OACSxjB,IAAI,GAC5BughB,EAAiBlzgB,EAAMmW,OAAOxjB,GAAGrM,UAAU,EAAI0Z,EAAMmW,OAAOxjB,GAAGtb,QAAQ,UAAY,GACnF81f,EAAgBzzf,SAASuuB,eAAe/uB,KAAKiigB,aAAajhgB,QAAQyY,GAAK,qBAEvEsqd,EAActqd,EAAGwqd,OACjBD,EAAavqd,EAAG29B,MAChBwqS,EAAU/+U,GAAWm3hB,EAAiB,WAAaj2D,EAAc,UAAYC,GACjF,IAAK53d,MAAMqN,EAAGwqd,SAAWriJ,GACrB,IAAKxkV,YAAkB2me,KAAiB33d,MAAM23d,KAAiB3me,YAAkB4me,KAAgB53d,MAAM43d,GAAa,CAChH,IAAI5sb,EAAQp3C,KAAKiigB,aAAa3S,cAAc,GAAG3za,OAAOqoZ,GAClDrgc,EAAUi+S,EAAQzyT,aAAa,WAAa6qgB,EAAiB,kBAC7Dh6hB,KAAKiigB,aAAa7vZ,QAAQoiC,OAAS,GAAM,GAAMx0I,KAAKiigB,aAAa7vZ,QAAQoiC,OAAS,GAAM,EACxFylZ,EAAWj6hB,KAAKq5hB,WAAWr5hB,KAAKiigB,aAAa4zB,gBAAgBhlV,OAAQz5J,EAAMypc,WAAa,KAAMzpc,EAAMypc,WAAazpc,EAAM8nc,QAAU,IAAKh8c,EAAQm+c,GAE7I4S,GAAmB+lC,IAAmBh6hB,KAAKiigB,aAAajhgB,QAAQyY,KAChEw6e,EAAc9ke,aAAa,OAAS8qgB,GAAY7if,EAAMk8e,aACvDr/B,EAAcxzf,WAAWy2B,YAAY+8d,GACrCA,EAAgB,MAEpB,IAAIimC,EAAer3hB,GAAWm3hB,EAAiB,WAAaj2D,GAC5D,IAAKkwB,KAAoB78c,EAAMk8e,WAAel8e,EAAMk8e,WAA4B,UAAfxsgB,EAAM3b,MAAoB,CACvF,IAAImoF,EAAO,IAAIq4Y,GAAWquD,EAAiB,oBAAqB5if,EAAMu+B,MAAO,EAAGv+B,EAAMu+B,MAAOhyC,EAAS,GAAIs2f,GAO1G,IANAF,EAAkB/5hB,KAAKiigB,aAAa77N,SAAS4+H,SAAS1xU,IACtCjzD,gBAAgB,aACQ,SAApCrgC,KAAKiigB,aAAa7M,eAA4Btue,EAAMmW,OAAOkf,aAAa,UACxEn8C,KAAKiigB,aAAaqe,4BAA4B0F,YAAY+T,EAAiBjzgB,EAAMmW,OAAO9N,aAAa,UAEzG+qgB,EAAal4hB,YAAY+3hB,GACrB3if,EAAMk8e,WAAayG,EAAiB,CACpC,IAAII,EAAgBv4M,EAAQzyT,aAAa,aACzC4qgB,EAAgBnkgB,aAAa,YAAaukgB,WAKjDlmC,IACLj0f,KAAKo6hB,aAAanmC,EAAe,KACjCA,EAAgB,OAGxB0lC,EAAUz9hB,UAAUk+hB,aAAe,SAAUnmC,EAAenzd,GACpDmzd,GACA7zf,YAAW,WACH6zf,EAAcxzf,YACdwzf,EAAcxzf,WAAWy2B,YAAY+8d,KAE1Cnzd,IAGX64f,EAAUz9hB,UAAUgrC,QAAU,SAAUkQ,EAAO8nc,EAAQhif,EAAOw1e,EAAOzoe,GACjE,IAAIlK,EAAQC,KACR+8f,EAAgBl6f,GAAWoH,EAAOwP,IAClCqnB,EAAW4xc,EAAM5xc,SAAW4xc,EAAM5xc,SAAW,IACjD,IAAI5B,IAAU,IAAIY,QAAQ3+B,YAAc,OAAQ,CAC5C2/B,SAAUA,EACVjhC,MAAO,EACPshC,SAAU,SAAUlhC,GAChB,IAAIo6hB,EAAe/6f,GAAOr/B,EAAKygC,UAAW0W,EAAM8nc,OAASA,EAAS9nc,EAAM8nc,OAASj/e,EAAK6gC,UAClFw5f,EAAoBh7f,GAAOr/B,EAAKygC,UAAW0W,EAAMl6C,MAAOA,EAAQk6C,EAAMl6C,MAAO+C,EAAK6gC,UACtFw5f,GAAsBA,GAAqB/yhB,KAAK6pY,GAAK,KAAQ,KAAO,IACpE2rH,EAAcnne,aAAa,IAAK71B,EAAM65hB,cAAcxif,EAAOijf,EAAcC,IACrEljf,EAAMk8e,WACN5gD,EAAM6nD,cAAclD,cAAcjgf,EAAM58B,MAAOk4d,GAAO,GAE1DqqB,EAAc/oe,MAAMwC,WAAa,WAErC7d,IAAK,WACDokf,EAAc/oe,MAAMwC,WAAa4gB,EAAM8lB,QAAU,UAAY,SAC7D6/b,EAAcnne,aAAa,IAAK3rB,EAAOpC,GACvCuvC,EAAM8nc,OAASA,EACf9nc,EAAMl6C,MAAQA,MAO1By8hB,EAAUz9hB,UAAU09hB,cAAgB,SAAUxif,EAAO8nc,EAAQ2B,GACzD,IAAK3B,EACD,MAAO,GAEX,IAAI5rZ,EAAOtzF,KAAKq5hB,WAAWr5hB,KAAK6wM,OAAQgwS,EAAa,KAAMA,EAAa3B,GAAU,IAAKl/e,KAAKm3hB,eAAiBrvC,GAAe1wc,EAAM+9e,YAAan1hB,KAAKw4hB,cAAgBx4hB,KAAKkjC,OAAQljC,KAAKqhf,aAGtL,OADArhf,KAAK6gf,YAAc3B,EACZ5rZ,GAOXqmc,EAAUz9hB,UAAUihgB,cAAgB,SAAU8E,EAAch4f,EAAQg6d,EAAQ5ie,GACxE,IAAI06P,EAAUkmQ,EAAajhgB,QAAQyY,GAAK,cAAgBwqd,EAAOzpd,MAC/D,GAAIypd,EAAO7jc,UAAUo0G,QAAUytX,EAAa9E,cAAe,CACvD,IAAIqJ,EAAWvE,EAAa77N,SAAS0/L,eAAe,CAAErsd,GAAIsiP,EAAU,cAChEzoK,EAAO,IAAIq4Y,GAAW5vO,EAAU,SAAU,cAAe,EAAG,cAAe,EAAG,GAAI,IAClFy+R,EAAYv4B,EAAa77N,SAAS4+H,SAAS1xU,GAC/Ckza,EAASxkgB,YAAYw4hB,GACrBv4B,EAAaz1B,UAAUxqe,YAAYwkgB,GAEnCnlgB,EAAMu0B,aAAa,QAAS,kBAAoB4we,EAAS/sf,GAAK,6BAA+B+sf,EAAS/sf,GAAK,MAC3GzZ,KAAKo9f,YAAYo9B,EAAWv2D,KAMpC01D,EAAUz9hB,UAAU2+B,cAAgB,WAChC,MAAO,aAQX8+f,EAAUz9hB,UAAUif,QAAU,aAKvBw+gB,EAjKoB,CAkK7BxB,ICtLE95f,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GA2C5D27f,GAAmC,SAAUt7f,GAO7C,SAASs7f,EAAkBnuhB,EAAStL,GAChC,IAAIjB,EAAQo/B,EAAO79B,KAAKtB,KAAMsM,EAAStL,IAAYhB,KAMnD,OAJAD,EAAM26hB,iBAAkB,EAExB36hB,EAAMg2hB,gBAAkB,EACxBh2hB,EAAMurgB,QAAU,MACTvrgB,EA8mCX,OA3nCAs+B,GAAUo8f,EAAmBt7f,GAoB7Bs7f,EAAkBv+hB,UAAU4jC,QAAU,SAAUgB,GAC5C9gC,KAAK8gC,SAAWA,GAAsB,IACtC9gC,KAAK06hB,iBAAkB,EACvB16hB,KAAKm9f,eAAgB,EACrB,IAAIw9B,EAAW,EACXC,EAAY,GACZC,EAAY,GACZC,EAAa,GACbC,EAAgB/6hB,KAAKsvf,cAAc,GACnC0rC,EAAa,GAGjB,GAFAA,EAAaD,EAAcj5d,WAC3Bi5d,EAAclH,YAAc,EACxBkH,EAAcp/c,OAAO9+E,OAASqB,OAAOjB,KAAK89hB,EAAcj5d,YAAYjlE,OACpEmD,KAAKknC,eAEJ,GAAI6zf,EAAcp/c,OAAO9+E,OAASqB,OAAOjB,KAAK89hB,EAAcj5d,YAAYjlE,OAAQ,CACjF,IAAIo+hB,EAAkBj7hB,KAAKsvf,cAAc,GACzC2rC,EAAgBt/c,OAASs/c,EAAgBt/c,OAAOzqD,QAAO,SAAUgqgB,GAI7D,OAHAA,EAAOh+d,SAAU,EACjB29d,EAAUj5hB,KAAKs5hB,EAAO1ghB,OACtBoghB,EAAUh5hB,KAAKs5hB,EAAOvld,OACdqld,EAAYtxgB,MAAK,SAAUyxgB,GAC/B,IAAIC,EAAWD,EAOf,OANID,EAAO35gB,IAAM65gB,EAAS75gB,IACtB25gB,EAAOh+d,SAAU,EACjB49d,EAAWl5hB,KAAKs5hB,EAAO1ghB,OACvB0ghB,EAAO1ghB,MAAQmghB,EACfA,KAEGO,EAAO35gB,IAAM65gB,EAAS75gB,QAKrC,IAFA,IAAI85gB,EAAUR,EAAU3pgB,QAAO,SAAUsqB,GAAQ,OAAOs/e,EAAW38hB,QAAQq9C,GAAQ,KAC/Ej5C,EAAWs4hB,EAAUh+hB,OAASw+hB,EAAQx+hB,OACjCD,EAAKi+hB,EAAUh+hB,OAAS,EAAID,GAAK2F,EAAU3F,IAChDm/C,GAAc,4BAA8B8+e,EAAUj+hB,IAE1D,IAASA,EAAI,EAAGA,EAAIq+hB,EAAgBt/c,OAAO9+E,OAAQD,IAC/Cq+hB,EAAgBt/c,OAAO/+E,GAAG0Z,EAAI2khB,EAAgBn5d,WAAWllE,GAAG0Z,EAC5D2khB,EAAgBt/c,OAAO/+E,GAAG+4E,MAAQild,EAAUh+hB,GAC5Cq+hB,EAAgBpH,aAAeoH,EAAgBn5d,WAAWllE,GAAG0Z,EAEjEtW,KAAKk9e,OAASl9e,KAAKuue,gBACnBvue,KAAKm9f,eAAgB,EACrBn9f,KAAK6+a,kBACL7+a,KAAK6sgB,qBAEJ,CACD,IAASjwgB,EAAI,EAAGA,EAAIm+hB,EAAcp/c,OAAO9+E,OAAQD,IAC7Cm+hB,EAAcp/c,OAAO/+E,GAAG0Z,EAAIykhB,EAAcj5d,WAAWllE,GAAGm+hB,EAAcljC,OACtEkjC,EAAcp/c,OAAO/+E,GAAG+4E,MAAwE,MAAhEold,EAAcj5d,WAAWllE,GAAGm+hB,EAAcjiC,mBACpEiiC,EAAcj5d,WAAWllE,GAAGm+hB,EAAcjiC,mBAAqBiiC,EAAcp/c,OAAO/+E,GAAG+4E,MAC7Fold,EAAclH,aAAekH,EAAcj5d,WAAWllE,GAAGm+hB,EAAcljC,OAE3E73f,KAAKk9e,OAASl9e,KAAKuue,gBACnBvue,KAAKm9f,eAAgB,EACrBn9f,KAAK0xgB,YACL1xgB,KAAKs7hB,cAAcP,EAAcp/c,QACjC37E,KAAK6sgB,mBAGb3ugB,OAAOwpB,eAAe+ygB,EAAkBv+hB,UAAW,OAAQ,CAEvDyrB,IAAK,WACD,OAAI3nB,KAAKike,QAAUjke,KAAKike,OAAOpne,OACpBmD,KAAKike,OAAO,GAAG94d,KAEnB,OAEX2c,YAAY,EACZC,cAAc,IAMlB0ygB,EAAkBv+hB,UAAUirC,UAAY,WAOpC,GALAnnC,KAAKV,SAAWwC,OAAa,OAC7B9B,KAAKu4B,wBAAyB,EAC9Bv4B,KAAKkiI,eACLliI,KAAK6c,aACL7c,KAAKm9f,eAAgB,EACG,KAApBn9f,KAAKgB,QAAQyY,GAAW,CACxB,IAAIiiD,EAAal7D,SAASyuB,uBAAuB,uBAAuBpyB,OACxEmD,KAAKgB,QAAQyY,GAAK,aAAezZ,KAAKsrgB,QAAU,IAAM5vc,EAE1D2sb,GAAcrof,MACdA,KAAKk0C,cAKTumf,EAAkBv+hB,UAAU+vgB,SAAW,WAEnCjsgB,KAAKqse,WAAa/K,GAActhe,KAAKg+E,QAKzCy8c,EAAkBv+hB,UAAUwzB,OAAS,WACjC,IAAI3vB,EAAQC,MACmD,IAA3DA,KAAKgB,QAAQqtB,UAAUlwB,QAAQ,wBAC/B6B,KAAKgB,QAAQg1B,UAAUjN,IAAI,uBAE/B,IAAI8if,EAAgB,CAChBn5B,MAAO1ye,KAAKV,SAAW,GAAKU,KAC5BiigB,aAAcjigB,KAAKV,SAAW,GAAKU,KACnCg+E,MAAOh+E,KAAKg+E,MAAO5jE,KAAMu8B,GAAM5zB,QAAQ,GAE3C/iB,KAAK+pB,QAAQ4sB,GAAMk1d,GAAe,WAC9B9rgB,EAAMi+E,MAAQj+E,EAAMT,SAAWusgB,EAAc7tb,MAAQj+E,EAAMi+E,MAC3Dj+E,EAAMksgB,WACNlsgB,EAAMw6hB,cAAgB,IAAI3D,GAAiB72hB,GAC3CA,EAAM81hB,gBAAkB,IAAI8D,GAAU55hB,GACtCA,EAAMosgB,yBACNpsgB,EAAMi8F,cACNj8F,EAAMgoC,iBACNhoC,EAAMw4B,wBAAyB,MAMvCkigB,EAAkBv+hB,UAAUgmI,aAAe,WAEvC,IAAIq5Z,EAAgBl1gB,IAAQW,UACxB9pB,EAAQmpB,IAAQmC,gBAChBrB,EAAOd,IAAQoC,eACf0X,EAAO9Z,IAAQqC,cACf3F,EAASw4gB,EAAgB,eAAiB,aAE9C3ygB,IAAaa,OAAOzpB,KAAKgB,QAASmmB,EAAMnnB,KAAKw7hB,uBAC7C5ygB,IAAaa,OAAOzpB,KAAKgB,QAASm/B,EAAMngC,KAAKy7hB,sBAC7C7ygB,IAAaa,OAAOzpB,KAAKgB,QAAS9D,EAAO8C,KAAK07hB,wBAC9C9ygB,IAAaa,OAAOzpB,KAAKgB,QAAS,QAAShB,KAAK27hB,0BAChD/ygB,IAAaa,OAAOzpB,KAAKgB,QAAS,cAAehB,KAAK47hB,wBACtDhzgB,IAAaa,OAAOzpB,KAAKgB,QAAS+hB,EAAQ/iB,KAAK67hB,wBAC/C/5hB,OAAO6nB,oBAAqBtD,IAAQY,SAAY,gBAAiBnlB,QAAU,wBAAyBA,OAAW,oBAAsB,SAAU9B,KAAK87hB,qBAKxJrB,EAAkBv+hB,UAAUg4C,WAAa,WAIrC,GAAKl0C,KAAKgB,QAAV,CAIA,IAAIu6hB,EAAgBl1gB,IAAQW,UACxB9pB,EAAQmpB,IAAQmC,gBAChB2X,EAAO9Z,IAAQqC,cACfvB,EAAOd,IAAQoC,eACf1F,EAASw4gB,EAAgB,eAAiB,aAE9C3ygB,IAAaG,IAAI/oB,KAAKgB,QAASmmB,EAAMnnB,KAAKw7hB,sBAAuBx7hB,MACjE4oB,IAAaG,IAAI/oB,KAAKgB,QAASm/B,EAAMngC,KAAKy7hB,qBAAsBz7hB,MAChE4oB,IAAaG,IAAI/oB,KAAKgB,QAAS9D,EAAO8C,KAAK07hB,uBAAwB17hB,MACnE4oB,IAAaG,IAAI/oB,KAAKgB,QAAS,QAAShB,KAAK27hB,yBAA0B37hB,MACvE4oB,IAAaG,IAAI/oB,KAAKgB,QAAS,cAAehB,KAAK47hB,uBAAwB57hB,MAC3E4oB,IAAaG,IAAI/oB,KAAKgB,QAAS+hB,EAAQ/iB,KAAK67hB,uBAAwB77hB,MACpE8B,OAAOynB,iBAAkBlD,IAAQY,SAAY,gBAAiBnlB,QAAU,wBAAyBA,OAAW,oBAAsB,SAAU9B,KAAK87hB,mBAAmB3/hB,KAAK6D,OACzK,IAAIg3C,IAAMh3C,KAAKgB,SAEfhB,KAAK8sM,SAAS9sM,KAAKgB,WAKvBy5hB,EAAkBv+hB,UAAU+2gB,WAAa,SAAUpygB,GAC/C,IAAI0hC,EACAI,EACAo5f,EAAiBl5hB,GAAW7C,KAAKgB,QAAQyY,GAAK,QAClD,GAAIsihB,GAAkB/7hB,KAAKgB,QAAS,CAChC,IAAI6sgB,EAAUkuB,EAAe15f,wBACzB6N,EAAOlwC,KAAKgB,QAAQqhC,wBACxB,GAAIxhC,EAAEsK,KAAKhN,QAAQ,UAAY,EAAG,CAC9B6B,KAAKinB,SAAU,EACf,IAAIssf,EAAW1ygB,EACf8hC,EAAQ4we,EAAShne,eAAe,GAAGK,QACnCrK,EAAQgxe,EAAShne,eAAe,GAAGI,aAGnC3sC,KAAKinB,QAA4B,UAAlBpmB,EAAE2sS,aAA6C,MAAlB3sS,EAAE2sS,YAC9CjrQ,EAAQ1hC,EAAE8rC,QACVhK,EAAQ9hC,EAAE+rC,QAEd5sC,KAAK+0f,OAAUpyd,EAAQuN,EAAKlN,IAAOz7B,KAAK8L,IAAIw6f,EAAQ7qe,IAAMkN,EAAKlN,IAAK,GACpEhjC,KAAK80f,OAAUvyd,EAAQ2N,EAAKpN,KAAQv7B,KAAK8L,IAAIw6f,EAAQ/qe,KAAOoN,EAAKpN,KAAM,KAS/E23f,EAAkBv+hB,UAAUu/hB,qBAAuB,SAAU56hB,GAazD,OAZAb,KAAKizgB,WAAWpygB,GAChBb,KAAK+pB,QAAQ2td,GAAc,CAAEz6c,OAAQp8B,EAAEo8B,OAAOxjB,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,SACtE/0f,KAAKinB,UACLjnB,KAAKm0gB,aAAatzgB,EAAGb,KAAK80f,OAAQ90f,KAAK+0f,OAAQ/0f,KAAKinB,SAChDjnB,KAAK6kf,6BAA+B7kf,KAAKsvf,cAAc,GAAG1K,UAAU1nb,SACpEl9D,KAAK6kf,4BAA4B19d,KAAKtmB,EAAGb,KAAK80f,OAAQ90f,KAAK+0f,OAAQ/0f,KAAKinB,SAExEjnB,KAAK81hB,0BAA4B91hB,KAAK8ggB,eAAe5jc,SACrDl9D,KAAK81hB,yBAAyB3ugB,KAAKtmB,IAG3Cb,KAAKga,OAAOqM,IAAQqC,cAAe7nB,IAC5B,GAaX45hB,EAAkBv+hB,UAAUw/hB,uBAAyB,SAAU76hB,GAG3D,OAFAb,KAAKizgB,WAAWpygB,GAChBb,KAAK+pB,QAAQ0td,GAAgB,CAAEx6c,OAAQp8B,EAAEo8B,OAAOxjB,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,UACrE,GAQX0lC,EAAkBv+hB,UAAU4/hB,mBAAqB,WAC7C,IAAI/7hB,EAAQC,KACZA,KAAKm9f,eAAgB,EACrB,IAAIl9f,EAAO,CACPgigB,aAAcjigB,KAAKV,SAAW,GAAKU,KACnCozgB,aAAc,IAAI32b,GAAKz8E,KAAKujf,cAAc7zc,MAAO1vC,KAAKujf,cAAc5zc,QACpEv1B,KAAM09d,GACNq7B,YAAa,IAAI12b,GAAK,EAAG,GACzBi2Z,MAAO1ye,KAAKV,SAAW,GAAKU,MAE5BqzgB,EAAmB,CAAEj5f,KAAM,eAAgBk5f,oBAAoB,GAkBnE,OAjBItzgB,KAAK6lO,UACL1lO,aAAaH,KAAK6lO,UAEtB7lO,KAAK+pB,QAAQgud,GAAcs7B,GACtBA,EAAiBC,qBAClBtzgB,KAAK6lO,UAAYzlO,YAAW,WACpBL,EAAMo5B,YACNh5B,aAAaJ,EAAM8lO,WAGvBwiR,GAActof,GACdE,EAAKkzgB,YAAcpzgB,EAAMwjf,cACzBxjf,EAAMgqB,QAAQ+td,GAAS73e,GACvBF,EAAMy/gB,gBACNz/gB,EAAMw6f,kBACP,OAEA,GAKXkgC,EAAkBv+hB,UAAU6E,MAAQ,SAAU0Y,GAE1C,IAAI+sf,EAAWhmgB,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,aAAaua,MAAMk5V,SAC5E1sX,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,aAAaua,MAAMk5V,SAAW,GACtD,IAAIq7I,GAAYvogB,MACtBe,MAAM0Y,GAClBjZ,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,aAAaua,MAAMk5V,SAAWs5I,GAK5Ei0B,EAAkBv+hB,UAAUwsgB,OAAS,SAAUv9f,EAAMkzE,GAC7Cr+E,KAAKkzgB,eACLlzgB,KAAKkzgB,aAAaxK,OAAOv9f,EAAMkzE,GAC3Br+E,KAAKq4e,aACLr4e,KAAKkzgB,aAAatJ,WAAW5pgB,QAOzCy6hB,EAAkBv+hB,UAAU4wM,SAAW,SAAU9rM,GAC7CA,EAAQgzB,MAAMijB,YAAc,UAC5Bj2C,EAAQgzB,MAAM4+e,cAAgB,UAC9B5xgB,EAAQgzB,MAAM6+e,iBAAmB,OACjC7xgB,EAAQgzB,MAAM8+e,aAAe,OAC7B9xgB,EAAQgzB,MAAM++e,iBAAmB,OACjC/xgB,EAAQgzB,MAAM+Z,SAAW,WACzB/sC,EAAQgzB,MAAMygB,QAAU,SAK5Bgmf,EAAkBv+hB,UAAUi5gB,mBAAqB,SAAUC,EAAiB1qd,GACxE,IACI1pD,EADA2pa,EAAa3qa,KAAKgra,YAAYoqG,GAE9B30gB,EAAaoC,GAAW7C,KAAKgB,QAAQyY,GAAK,2BAC1CixC,IACAigX,EAAWjgX,QAAUA,EACjBjqD,GACAO,EAAUhB,KAAKmB,cAAc,OAC7B46C,GAAc/7C,KAAKgB,QAAQyY,GAAK,eAAiB27f,GACjDp1gB,KAAKmvgB,iBAAiBkG,kBAAkB1qG,EAAYyqG,EAAiBp0gB,GACrEP,EAAWuB,YAAYhB,EAAQ8vB,SAAS,KAGxC9wB,KAAKmvgB,iBAAiBC,kBAAkBvsgB,GAAW7C,KAAKgB,QAAQyY,GAAK,yBAUjFghhB,EAAkBv+hB,UAAUs/hB,sBAAwB,SAAU36hB,GAC1D,QAAKgC,GAAW7C,KAAKgB,QAAQyY,GAAK,UAGlCzZ,KAAKizgB,WAAWpygB,GAChBb,KAAK+pB,QAAQqtd,GAAgB,CAAEn6c,OAAQp8B,EAAEo8B,OAAOxjB,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,SACxE/0f,KAAKu3e,WACLv3e,KAAK6zgB,kBAAkBt8B,GAAW12e,EAAEo8B,OAAQp8B,GAE5Cb,KAAK81hB,0BAA4B91hB,KAAK8ggB,eAAe5jc,SACrDl9D,KAAK81hB,yBAAyB3ugB,KAAKtmB,GAEnCb,KAAK6kf,6BAA+B7kf,KAAKsvf,cAAc,IAAMtvf,KAAKsvf,cAAc,GAAG1K,UAAU1nb,SAC7Fl9D,KAAK6kf,4BAA4B19d,KAAKtmB,EAAGb,KAAK80f,OAAQ90f,KAAK+0f,QAE1D/0f,KAAKinB,SACNjnB,KAAKm0gB,aAAatzgB,EAAGb,KAAK80f,OAAQ90f,KAAK+0f,QAEvC/0f,KAAKg8hB,yBAAyC,QAAdh8hB,KAAKmL,MAAkBnL,KAAK61hB,iBAC5Dt0C,GAAavhf,KAAK80f,OAAQ90f,KAAK+0f,OAAQ/0f,KAAKg9e,kBAC5Ch9e,KAAK61hB,gBAAgBgE,WAAWh5hB,GAEpCb,KAAKga,OAAOqM,IAAQoC,eAAgB5nB,IAC7B,IAEX45hB,EAAkBv+hB,UAAUi4gB,aAAe,SAAUrtf,EAAOvF,EAAGjL,EAAG2Q,GAC9D,IAAIihf,EAAWphf,EAAMmW,OAAOxjB,GACxBA,EAAMyuf,IAAclogB,KAAKgB,QAAQyY,GAAK,UAAayuf,IAAclogB,KAAKgB,QAAQyY,GAAK,aACnFyuf,IAAclogB,KAAKgB,QAAQyY,GAAK,sBAC/BqN,EAAMmW,OAAOo5D,YAAYl4F,QAAQ,QAAU,GAAMsb,EAGlDyke,GAFagqB,IAAclogB,KAAKgB,QAAQyY,GAAK,SACzCzZ,KAAKonJ,MAAS8gX,IAAclogB,KAAKgB,QAAQyY,GAAK,YAAgBzZ,KAAK6vgB,SAAW7vgB,KAAK8ggB,eAAe15W,MACnF7lI,EAAGjL,EAAGtW,KAAKgB,QAAQy1B,YAAaz2B,KAAKgB,QAAQyY,GAAK,qBAAsB5W,GAAW7C,KAAKgB,QAAQyY,GAAK,sBAAuBwN,GAG/I80B,GAAc/7C,KAAKgB,QAAQyY,GAAK,uBASxCghhB,EAAkBv+hB,UAAUy/hB,yBAA2B,SAAU96hB,GAkB7D,OAjBAb,KAAKizgB,WAAWpygB,GACZb,KAAK81hB,0BAA4B91hB,KAAK8ggB,eAAe5jc,SACrDl9D,KAAK81hB,yBAAyBrle,MAAM5vD,GAEb,SAAvBb,KAAKo1f,eAA4Bp1f,KAAKsghB,6BACtCtghB,KAAKsghB,4BAA4BqG,0BAA0B3mhB,KAAMa,GAEjEb,KAAKsvf,cAAc,GAAGylC,SACtB/0hB,KAAKu6hB,cAAcnD,eAAev2hB,GAElCb,KAAKg8hB,yBAA2Bh8hB,KAAK61hB,iBAAiC,QAAd71hB,KAAKmL,MAC7DnL,KAAK61hB,gBAAgBgE,WAAWh5hB,GAEpCb,KAAK+pB,QAAQstd,GAAiB,CAAEp6c,OAAQp8B,EAAEo8B,OAAOxjB,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,SACzE/0f,KAAKs3e,YACLt3e,KAAK6zgB,kBAAkBv8B,GAAYz2e,EAAEo8B,OAAQp8B,IAE1C,GAEX45hB,EAAkBv+hB,UAAU23gB,kBAAoB,SAAU/sf,EAAO9lB,EAASH,GACtE,IAAI6qC,EAAM7qC,EACNymI,EAAUw5W,GAAY9/e,EAAQyY,IAAI,GAClC6tH,EAAQ28V,QAAU,GAAK38V,EAAQlwF,OAAS,GACxCp3C,KAAK+pB,QAAQjD,EAAO,CAChBm9c,OAAQjke,KAAKV,SAAW,GAAKU,KAAKike,OAAO38V,EAAQ28V,QACjD7sb,MAAOp3C,KAAKike,OAAO38V,EAAQ28V,QAAQtoZ,OAAO2rD,EAAQlwF,OAClD2sb,YAAaz8V,EAAQ28V,OAAQD,WAAY18V,EAAQlwF,MACjD71B,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,OAAQxyd,MAAOmJ,EAAInJ,MAAOI,MAAO+I,EAAI/I,SAUzE83f,EAAkBv+hB,UAAU0/hB,uBAAyB,SAAU90gB,GAC3D,OAAsB,IAAlBA,EAAM6wE,SAAuC,UAAtB7wE,EAAM0mR,cAC7B1mR,EAAMwlB,iBACNxlB,EAAMw0L,mBACC,IAUfm/U,EAAkBv+hB,UAAU2/hB,uBAAyB,SAAUh7hB,GAC3Db,KAAKizgB,WAAWpygB,GAChBb,KAAK+pB,QAAQytd,GAAiB,CAAEv6c,OAAQp8B,EAAEo8B,OAAOxjB,GAAI8H,EAAGvhB,KAAK80f,OAAQx+e,EAAGtW,KAAK+0f,SAC7E/0f,KAAKga,OAAOqM,IAAQW,UAAY,eAAiB,aAAcnmB,GAC/D,IAAIozf,EAAgBzzf,SAASuuB,eAAe/uB,KAAKgB,QAAQyY,GAAK,qBAK9D,OAJIw6e,IACAj0f,KAAK61hB,gBAAgBuE,aAAanmC,EAAe,KACjDA,EAAgB,OAEb,GAKXwmC,EAAkBv+hB,UAAU2gB,WAAa,WACrC7c,KAAKikE,KAAO,IAAIxoD,KAKpBg/gB,EAAkBv+hB,UAAU+/hB,aAAe,WACvCj8hB,KAAK0xgB,YACL/sC,GAAU3ke,OAQdy6hB,EAAkBv+hB,UAAUw1gB,UAAY,WACpC,GAAI1xgB,KAAKk9e,OACL,OAAO,KAIX,GAFAsM,GAAqBxpf,MACrB+7C,GAAc/7C,KAAKgB,QAAQyY,GAAK,sBAC5BzZ,KAAKwse,UAAW,CAChB,KAAOxse,KAAKwse,UAAUl+c,WAAWzxB,OAAS,GACtCmD,KAAKwse,UAAUt1c,YAAYl3B,KAAKwse,UAAU1oY,aAEzC9jG,KAAKwse,UAAU10X,iBAAmB93G,KAAKwse,UAAU/re,YAClDgpB,aAAOzpB,KAAKwse,WAGpBzwb,GAAc,sBACdA,GAAc,yBACdA,GAAc/7C,KAAKgB,QAAQyY,GAAK,sBAKpCghhB,EAAkBv+hB,UAAUggiB,uBAAyB,WACjD,IAAIl7hB,EAAU+hf,GAAc/if,KAAKk9e,OAAQl9e,KAAKgB,QAAQyY,GAAK,uBACvDzZ,KAAKmB,cAAc,MAAO,CACtBsY,GAAIzZ,KAAKgB,QAAQyY,GAAK,qBACtBsa,OAAQ,uBAEhB8xd,IAAmB,EAAO7lf,KAAKgB,QAASA,EAAShB,KAAKk9e,SAK1Du9C,EAAkBv+hB,UAAUiwgB,uBAAyB,WACjDnsgB,KAAKsvf,cAAgB,GACrB,IAAK,IAAI1yf,EAAI,EAAGgQ,EAAW5M,KAAKike,OAAOpne,OAAQD,EAAIgQ,EAAUhQ,IAEzD,GADAoD,KAAKike,OAAOrne,GAAG4d,MAAQ5d,EACnBoD,KAAKike,OAAOrne,GAAGuO,OAASnL,KAAKmL,MAAsC,IAA9BnL,KAAKsvf,cAAczyf,OAAc,CACtEmD,KAAKsvf,cAAc1tf,KAAK5B,KAAKike,OAAOrne,IACpC,QAOZ69hB,EAAkBv+hB,UAAU8/F,YAAc,SAAUtsE,QACjC,IAAXA,IAAqBA,GAAS,GAClC1vB,KAAKm0hB,aAAe,EACpB,IAAK,IAAIn2hB,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIime,EAAS1ge,EAAGvF,GAChBime,EAAOk2B,WAAa,IAAIlsZ,GAAKg2X,EAAOnia,YAAc9hE,KAAK8hE,WAAYmia,EAAOtia,OAC1Esia,EAAOr9L,mBAAmB5mS,KAAM0vB,KAQxC+qgB,EAAkBv+hB,UAAUq+f,aAAe,WACvCv6f,KAAKm8hB,qBACLn8hB,KAAKi8hB,eACLj8hB,KAAK6+a,kBACL7+a,KAAK6sgB,iBACL9wd,GAAc,qBAKlB0+e,EAAkBv+hB,UAAUigiB,mBAAqB,WAC7C,IAAIl4D,EAASjke,KAAKsvf,cAAc,GAC3Blyf,YAAkB6me,EAAOgwD,aAAkB72hB,YAAkB6me,EAAO0wD,cACrE1wD,EAAO0wD,cAAgB1wD,EAAOswD,SAC9BtwD,EAAOiwD,UAAUjwD,EAAOgwD,WAAYj0hB,OAM5Cy6hB,EAAkBv+hB,UAAU2ib,gBAAkB,WAC1C7+a,KAAKg9e,gBAAkB,IAAI/R,GAAKjre,KAAKqtC,OAAOvK,KAAM9iC,KAAKqtC,OAAOrK,IAAKhjC,KAAKujf,cAAc7zc,MAAO1vC,KAAKujf,cAAc5zc,QAChH3vC,KAAKm6e,gBAAkB,GACvBn6e,KAAK4vgB,mBAAqB,GAC1B,I9B9XqB1/d,EAAM8uc,E8B8XvBmjB,EAAc,EACdwN,EAAiB,EACjBj1X,EAAW,EACX4sX,EAAa,EAGjB,GAFAtngB,KAAKm6e,gBAAkB9vS,GAASrqM,KAAKonJ,MAAOpnJ,KAAK46e,WAAY56e,KAAKg9e,gBAAgBttc,OAClFyyd,EAAcnigB,KAAKonJ,MAAQkjV,GAAYtqe,KAAKonJ,MAAOpnJ,KAAK46e,YAAYjrc,OAAS3vC,KAAKm6e,gBAAgBt9e,OAASslgB,EACvGnigB,KAAK6vgB,SAAU,CACf,IAAK,IAAI7xgB,EAAK,EAAGuF,EAAKvD,KAAKm6e,gBAAiBn8e,EAAKuF,EAAG1G,OAAQmB,IAAM,CAG9D08I,GADA4sX,EAAah9B,GADG/me,EAAGvF,GACiBgC,KAAK46e,YAAYlrc,OAC7BgrG,EAAW4sX,EAAa5sX,EAEpD16I,KAAK4vgB,mBAAqBvlU,GAASrqM,KAAK6vgB,SAAU7vgB,KAAK8vgB,cAAep1X,GACtEi1X,EAAkBrlC,GAAYtqe,KAAK6vgB,SAAU7vgB,KAAK8vgB,eAAenge,OAAS3vC,KAAK4vgB,mBAAmB/ygB,O9B3YjFqzC,E8B6YRlwC,KAAKg9e,gB9B7YSgC,E8B6YQ,IAAI/T,GAAK,EAAI0kC,EAAiBxN,EAAcnigB,KAAKqtC,OAAOtK,MAAQ/iC,KAAKqtC,OAAOvK,KAAM9iC,KAAKqtC,OAAOpK,OAASjjC,KAAKqtC,OAAOrK,K9B5Y1JkN,EAAK3uB,GAAKy9d,EAAUz9d,EACpB2uB,EAAK55B,GAAK0oe,EAAU1oe,EACpB45B,EAAKR,OAASsvc,EAAUz9d,EAAIy9d,EAAUtvc,MACtCQ,EAAKP,QAAUqvc,EAAU1oe,EAAI0oe,EAAUrvc,O8B0YnC3vC,KAAK2hgB,yBAKT84B,EAAkBv+hB,UAAUylgB,sBAAwB,WAChD,IAAK3hgB,KAAK81hB,2BAA6B91hB,KAAK8ggB,eAAe5jc,QACvD,OAAO,KAEXl9D,KAAK81hB,yBAAyBtpB,iBAAiBxsgB,KAAMA,KAAKsvf,eAC1Dtvf,KAAK81hB,yBAAyBn0B,sBAAsB3hgB,KAAKg9e,gBAAiBh9e,KAAKujf,cAAe,OAOlGk3C,EAAkBv+hB,UAAU2wgB,eAAiB,WACzC7sgB,KAAKktgB,eACLltgB,KAAKk8hB,yBACLl8hB,KAAKo8f,eACLp8f,KAAKi1M,cACLj1M,KAAKijgB,eACLpd,IAAmB,EAAO7lf,KAAKgB,QAAShB,KAAKwse,UAAWxse,KAAKk9e,QAC7Dl9e,KAAK45c,mBACL55c,KAAKo3hB,iBACLp3hB,KAAKwtgB,mBACLxtgB,KAAKutgB,8BACLh/e,aAAqBvuB,KAAKgB,QAAQyY,GAAK,aAAc,WAAYzZ,KAAKike,OAAO,GAAG2gB,WAChF5kf,KAAK+pB,QAAQ,SAAU,CAAEk4e,aAAcjigB,KAAKV,SAAW,GAAKU,KAAM0ye,MAAO1ye,KAAKV,SAAW,GAAKU,OAC9FA,KAAKm9f,eAAgB,GAOzBs9B,EAAkBv+hB,UAAUqxgB,4BAA8B,WACtD,IAAI6uB,EAAgBv5hB,GAAW7C,KAAKgB,QAAQyY,GAAK,sBACjD,GAAK2ihB,EAAL,CAGA,IAAIlsf,EAAOlwC,KAAKgB,QAAQqhC,wBACpBwre,EAAUhrgB,GAAW7C,KAAKgB,QAAQyY,GAAK,QAAQ4oB,wBACnD+5f,EAAcpogB,MAAM8O,KAAOv7B,KAAK8L,IAAIw6f,EAAQ/qe,KAAOoN,EAAKpN,KAAM,GAAK,KACnEs5f,EAAcpogB,MAAMgP,IAAMz7B,KAAK8L,IAAIw6f,EAAQ7qe,IAAMkN,EAAKlN,IAAK,GAAK,OAOpEy3f,EAAkBv+hB,UAAUsxgB,iBAAmB,WACvCxtgB,KAAKmvgB,kBACLnvgB,KAAKmvgB,iBAAiBC,kBAAkBvsgB,GAAW7C,KAAKgB,QAAQyY,GAAK,wBAQ7EghhB,EAAkBv+hB,UAAUk7hB,eAAiB,WACzC,OAAIp3hB,KAAKk9e,OACE,KAENl9e,KAAKsvf,cAAc,GAAGylC,aAG3B/0hB,KAAKu6hB,cAAchD,gBAFR,MAOfkD,EAAkBv+hB,UAAUkggB,aAAe,WAClCp8f,KAAKk9e,QACNl9e,KAAKwse,UAAUxqe,YAAYhC,KAAKomS,SAAS6/L,YAAY,CAAExsd,GAAIzZ,KAAKgB,QAAQyY,GAAK,uBAEjF,IAAK,IAAIzb,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIime,EAAS1ge,EAAGvF,GACZime,EAAO/ma,SAAWl9D,KAAM69e,GAAiB5Z,EAAO94d,MAAQ,kBACxDnL,KAAM69e,GAAiB5Z,EAAO94d,MAAQ,gBAAiByoS,eAAe5zS,KAAMike,GAC5EA,EAAOm4B,aAAap8f,KAAMA,KAAKk9e,WAO3Cu9C,EAAkBv+hB,UAAUgxgB,aAAe,WACvC,IAAI1ie,EAAUxqC,KAAK2oK,OAAOj5H,MAC1Bm2c,IAAmB,EAAO7lf,KAAKwse,UAAWxse,KAAKomS,SAASi4H,cAAc,IAAIsrF,GAAW3pf,KAAKgB,QAAQyY,GAAK,UAAWzZ,KAAK2wM,YAAc3wM,KAAKqse,WAAW17R,WAAY3wM,KAAK2oK,OAAQ,EAAG,IAAIsiU,GAAKzgc,EAAU,EAAGA,EAAU,EAAGxqC,KAAKujf,cAAc7zc,MAAQlF,EAASxqC,KAAKujf,cAAc5zc,OAASnF,KAAYxqC,KAAKk9e,QAErS,IAAIi0B,EAAkBnxgB,KAAKwpb,gBAC3B,GAAI2nF,EAAiB,CACjB,IAAI5/Z,EAAQ,IAAIq4Y,GAAY5pf,KAAKujf,cAAc5zc,OAASnF,EAASxqC,KAAKujf,cAAc7zc,MAAQlF,EAAS2me,EAAiB,EAAG,EAAGnxgB,KAAKgB,QAAQyY,GAAK,cAAe,UAAW,QACxKose,IAAmB,EAAO7lf,KAAKwse,UAAWxse,KAAKomS,SAAS24H,UAAUxtT,GAAQvxG,KAAKk9e,UAMvFu9C,EAAkBv+hB,UAAU+mgB,aAAe,WACvC,IAAKjjgB,KAAK81hB,2BAA6B91hB,KAAK8ggB,eAAe5jc,QACvD,OAAO,KAEPl9D,KAAK81hB,yBAAyBxyB,kBAAkBzmgB,SACb,QAA/BmD,KAAKsvf,cAAc,GAAGnkf,MACtBnL,KAAK81hB,yBAAyBuG,uBAAuBr8hB,KAAKsvf,cAAc,GAAGqmC,WAAY31hB,KAAK81hB,yBAAyBl0B,aAAc5hgB,KAAKqtC,QAE5IrtC,KAAK81hB,yBAAyB7yB,aAAajjgB,KAAMA,KAAK8ggB,eAAgB9ggB,KAAK81hB,yBAAyBl0B,aAAc5hgB,KAAKk9e,UAQ/Hu9C,EAAkBv+hB,UAAU09c,iBAAmB,WAC3C,IAAK55c,KAAKsghB,6BAAsD,SAAvBtghB,KAAKo1f,cAC1C,OAAO,KAEX,IAAIia,EAAsB/wgB,YAAO,GAAI0B,KAAKsghB,4BAA4BjR,oBAAqB,MAAM,GACjGrvgB,KAAKsghB,4BAA4BhR,gBAAgBtvgB,MAC7CqvgB,EAAoBxygB,OAAS,IAC7BmD,KAAKsghB,4BAA4BjR,oBAAsBA,EACvDrvgB,KAAKsghB,4BAA4B9Q,gBAAgBxvgB,QAMzDy6hB,EAAkBv+hB,UAAU+4M,YAAc,WACtC,IAAI5nK,EAASrtC,KAAKqtC,OAClB,IAAKrtC,KAAKonJ,MACN,OAAO,KAEX,IAAI29I,EAAY/kS,KAAK46e,WAAWzvG,cAC5BqmH,EAA0B,SAAdzsN,EAAuB,QAAwB,QAAdA,EAAsB,MAAQ,SAC3Eq1M,EAAY9P,GAAYtqe,KAAKonJ,MAAOpnJ,KAAK46e,YACzC1qc,EAAO,IAAI+6b,GAAK59b,EAAOvK,KAAM,EAAG9iC,KAAKujf,cAAc7zc,MAAQrC,EAAOvK,KAAOuK,EAAOtK,MAAO,GACvFz2B,EAAU,IAAI8+d,GAAWpre,KAAKgB,QAAQyY,GAAK,SAAUwve,GAAe/4c,EAAMlwC,KAAK46e,YAAa56e,KAAKqtC,OAAOrK,IAA0B,EAAnBo3c,EAAUzqc,OAAa,EAAI6hd,EAAWxxf,KAAKm6e,gBAAiB,GAAI,QAC/Kn5e,EAAUkve,GAAYlwe,KAAKomS,SAAU95R,EAAStM,KAAK46e,WAAY56e,KAAK46e,WAAWjla,OAAS31E,KAAKqse,WAAWtK,WAAY/he,KAAKwse,WAAW,EAAOxse,KAAKk9e,QAChJl8e,GACAA,EAAQ40B,aAAa,aAAc51B,KAAKonJ,OAExCpnJ,KAAK6vgB,UACL7vgB,KAAKgxgB,eAAe1kgB,IAG5BmuhB,EAAkBv+hB,UAAU80gB,eAAiB,SAAU1kgB,GASnD,IARA,IAAIouI,EAAW,EACX4sX,EAAa,EAEbviO,EAAY/kS,KAAK46e,WAAWzvG,cAI5B8lI,EAAsB3mC,GAAYtqe,KAAK6vgB,SAAU7vgB,KAAK8vgB,eACjD9xgB,EAAK,EAAGuF,EAAKvD,KAAKm6e,gBAAiBn8e,EAAKuF,EAAG1G,OAAQmB,IAAM,CAG9D08I,GADA4sX,EAAah9B,GADG/me,EAAGvF,GACiBgC,KAAK46e,YAAYlrc,OAC7BgrG,EAAW4sX,EAAa5sX,EAEpD,IAAIxqG,EAAO,IAAI+6b,GAAmB,WAAdlmM,EAA0Bz4R,EAAQiV,EAAIm5H,EAAW,EAAmB,QAAdqqJ,EAAsBz4R,EAAQiV,EAAIm5H,EAAWpuI,EAAQiV,EAAG,EAAGm5H,EAAU,GAC3I4hZ,EAAiB,IAAIlxD,GAAWpre,KAAKgB,QAAQyY,GAAK,YAAawve,GAAe/4c,EAAMlwC,KAAK8vgB,eAAgBxjgB,EAAQgK,EAAIhK,EAAQiG,KAAK1V,OAAyC,EAA9Bo0gB,EAAoBthe,OAAc,EAZrK,GAEE,SAAUo1P,GACtB,MAAqB,SAAdA,EAAuB,QAAwB,QAAdA,EAAsB,MAAQ,SASuHysN,CAAUxxf,KAAK8vgB,cAAc3kI,eAAgBnrY,KAAK4vgB,mBAAoB,GAAI,QAC3Q1/B,GAAYlwe,KAAKomS,SAAUk2P,EAAgBt8hB,KAAK8vgB,cAAe9vgB,KAAK8vgB,cAAcn6b,OAAS31E,KAAKqse,WAAWtK,WAAY/he,KAAKwse,WAAW,EAAOxse,KAAKk9e,SAOvJu9C,EAAkBv+hB,UAAUg6hB,iBAAmB,WAC3C,OAAOl2hB,KAAKwse,UAAUjre,qBAAqB,KAAK,IAOpDk5hB,EAAkBv+hB,UAAUsjhB,cAAgB,WACxC,IAAK,IAAIxhhB,EAAK,EAAGuF,EAAKvD,KAAKsvf,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIime,EAAS1ge,EAAGvF,GAChBgC,KAAKs7hB,cAAcr3D,EAAOtoZ,UAQlC8+c,EAAkBv+hB,UAAUo/hB,cAAgB,SAAU3/c,GAClD,IAAK,IAAI39E,EAAK,EAAGm+gB,EAAWxgc,EAAQ39E,EAAKm+gB,EAASt/gB,OAAQmB,IAAM,CAC5D,IAAIo5C,EAAQ+ke,EAASn+gB,GACrBo5C,EAAMyjc,cAAgB,KACtBzjc,EAAM85e,YAAc,KACpB95e,EAAMi8e,cAAe,IAQ7BoH,EAAkBv+hB,UAAU2+B,cAAgB,WACxC,MAAO,qBAOX4/f,EAAkBv+hB,UAAUif,QAAU,WAI9Bnb,KAAKgB,UACLhB,KAAKkiI,eACL/iG,EAAOjjC,UAAUif,QAAQ7Z,KAAKtB,MAC9BA,KAAKgB,QAAQg1B,UAAUvM,OAAO,uBAC9BzpB,KAAK0xgB,YACL1xgB,KAAKwse,UAAY,OASzBiuD,EAAkBv+hB,UAAU8nC,gBAAkB,WAC1C,IAAIgB,EAAU,GA6Cd,OA3CAA,EAAQpjC,KAAK,CACT4iC,OAAQxkC,KAAKmL,KAAO,SACpBlL,KAAM,CAACD,QAEPA,KAAK8ggB,eAAe5jc,SACpBl4B,EAAQpjC,KAAK,CACT4iC,OAAQ,qBACRvkC,KAAM,CAACD,QAGXA,KAAKu8hB,2BACLv3f,EAAQpjC,KAAK,CACT4iC,OAAQ,wBACRvkC,KAAM,CAACD,QAGXA,KAAKoyG,QAAQoiC,QACbxvG,EAAQpjC,KAAK,CACT4iC,OAAQ,sBACRvkC,KAAM,CAACD,QAGY,SAAvBA,KAAKo1f,eACLpwd,EAAQpjC,KAAK,CACT4iC,OAAQ,wBACRvkC,KAAM,CAACD,SAGXA,KAAKq2gB,cAAgBr2gB,KAAKs2gB,cAC1Btxe,EAAQpjC,KAAK,CACT4iC,OAAQ,SACRvkC,KAAM,CAACD,QAGIA,KAAKgra,YAAYthZ,MAAK,SAAUltB,GAC/C,OAA0B,OAAlBA,EAAMkuD,YAGd1lB,EAAQpjC,KAAK,CACT4iC,OAAQ,aACRvkC,KAAM,CAACD,QAGRglC,GAKXy1f,EAAkBv+hB,UAAUqgiB,wBAA0B,WAClD,IAAK,IAAIv+hB,EAAK,EAAGuF,EAAKvD,KAAKike,OAAQjme,EAAKuF,EAAG1G,OAAQmB,IAAM,CAErD,GADauF,EAAGvF,GACL4mf,UAAU1nb,QACjB,OAAO,EAGf,OAAO,GAKXu9d,EAAkBv+hB,UAAUsgiB,oBAAsB,SAAUltC,EAAe90e,GACvE,IAAK,IAAIxc,EAAK,EAAGg6gB,EAAkB1oB,EAAetxf,EAAKg6gB,EAAgBn7gB,OAAQmB,IAAM,CACjF,IAAIime,EAAS+zC,EAAgBh6gB,GAC7B,GAAIwc,IAAUypd,EAAOzpd,MACjB,OAAOypd,EAGf,OAAO,MAOXw2D,EAAkBv+hB,UAAUysC,eAAiB,WACzC,MAAO,IAOX8xf,EAAkBv+hB,UAAU29B,kBAAoB,SAAU2H,EAASC,GAI/D,IAHA,IAAIo8D,EAAS,CACT4+b,iBAAiB,EAAOtkB,eAAe,GAElCn6gB,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKukC,GAAUxjC,EAAKuF,EAAG1G,OAAQmB,IAAM,CAE9D,OADWuF,EAAGvF,IAEV,IAAK,QACDgC,KAAKm9f,eAAgB,EACrB,MACJ,IAAK,QACL,IAAK,WACL,IAAK,SACL,IAAK,QACL,IAAK,SACDt/Z,EAAOs6a,eAAgB,EACvB,MACJ,IAAK,aACG32e,EAAQo5c,aAAep5c,EAAQo5c,WAAWp+Z,MAAQh7C,EAAQo5c,WAAW7mN,cACrEl2L,EAAOs6a,eAAgB,EAGvBt6a,EAAO4+b,iBAAkB,EAE7B,MACJ,IAAK,gBACGj7f,EAAQsue,gBAAkBtue,EAAQsue,cAActzb,MAAQh7C,EAAQsue,cAAc/7O,cAC9El2L,EAAOs6a,eAAgB,EAGvBt6a,EAAO4+b,iBAAkB,EAE7B,MACJ,IAAK,iBACD5+b,EAAOs6a,eAAgB,EACvBt6a,EAAO4+b,iBAAkB,EACzB,MACJ,IAAK,aACDz8hB,KAAKg8F,aAAY,GACjB6B,EAAOs6a,eAAgB,EACvB,MACJ,IAAK,SACD,IAAKn4gB,KAAK06hB,gBAAiB,CAKvB,IAJA,IAAI/4hB,EAAM3B,KAAKike,OAAOpne,OAClBw7gB,GAAgB,EAChBp0C,OAAS,EACTq0C,OAAa,EACR17gB,EAAI,EAAGA,EAAI+E,EAAK/E,IACrBqne,EAASzic,EAAQyic,OAAOrne,GACpBoD,KAAKV,WAAa2ke,EAAO4c,YAAc5c,EAAOmd,UAAYnd,EAAOy0D,eAAiBz0D,EAAOy4D,YACzFz4D,EAAO04D,WAAa14D,EAAO/gc,QAAU+gc,EAAOod,aAAepd,EAAOmxD,WAAanxD,EAAOu1B,sBACtF8e,GAAa,GAEb92e,EAAQyic,OAAOrne,KAAO4kC,EAAQyic,OAAOrne,GAAGklE,YAActgC,EAAQyic,OAAOrne,GAAGi7f,OAASr2d,EAAQyic,OAAOrne,GAAG46f,OACnGh2d,EAAQyic,OAAOrne,GAAGgof,WAAa0zB,KAC/Bh6gB,YAAO0B,KAAKw8hB,oBAAoBx8hB,KAAKsvf,cAAe1yf,GAAIqne,EAAQ,MAAM,GACtEo0C,GAAgB,GAEhB72e,EAAQyic,OAAOrne,IAAM4kC,EAAQyic,OAAOrne,GAAGq4hB,cACvCzzf,EAAQyic,OAAOrne,GAAGq4hB,eAAiBxzf,EAAQwic,OAAOrne,GAAGq4hB,eACrDj1hB,KAAKu6hB,cAAclD,cAAc71f,EAAQyic,OAAOrne,GAAGq4hB,aAAcj1hB,MACjEA,KAAKu6hB,cAAcjD,aAAa91f,EAAQyic,OAAOrne,GAAGq4hB,aAAcj1hB,KAAKuue,gBAAkB,IAAM,IAGjG8pC,IACAr4gB,KAAKg8F,aAAY,GACjB6B,EAAOs6a,eAAgB,GAG/Bn4gB,KAAK06hB,iBAAkB,EACvB16hB,KAAKk9e,QAAS,EACd,MACJ,IAAK,SACL,IAAK,eACD/9c,EAAOjjC,UAAUgrC,QAAQ5lC,KAAKtB,MAC9B,MACJ,IAAK,aACL,IAAK,SACL,IAAK,cACL,IAAK,oBACD69F,EAAO4+b,iBAAkB,EACzB,MACJ,IAAK,gBACL,IAAK,sBACL,IAAK,gBACGz8hB,KAAKsghB,8BACDljhB,YAAkB4C,KAAKsghB,4BAA4BjR,qBACnDrvgB,KAAKsghB,4BAA4BhR,gBAAgBtvgB,MAGjDA,KAAKsghB,4BAA4B9Q,gBAAgBxvgB,SAMhE69F,EAAOs6a,eAAiBt6a,EAAO4+b,iBAChCz8hB,KAAKi8hB,eACLj8hB,KAAK6sgB,kBAEAhva,EAAOs6a,gBACZn4gB,KAAKw/gB,gBACLx/gB,KAAKi8hB,eACLj8hB,KAAK6+a,kBACL7+a,KAAK6sgB,mBAGblue,GAAW,CACP3B,YAAS,OACVy9f,EAAkBv+hB,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,YAAS,OACVy9f,EAAkBv+hB,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,OACVy9f,EAAkBv+hB,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,YAAS,OACVy9f,EAAkBv+hB,UAAW,uBAAmB,GACnDyiC,GAAW,CACPvB,YAAQ,GAAI+1f,KACbsH,EAAkBv+hB,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,KACVy9f,EAAkBv+hB,UAAW,kBAAc,GAC9CyiC,GAAW,CACPvB,YAAQ6gD,GAAM+kZ,eAAgBlmZ,KAC/B29c,EAAkBv+hB,UAAW,kBAAc,GAC9CyiC,GAAW,CACP3B,YAAS,OACVy9f,EAAkBv+hB,UAAW,gBAAY,GAC5CyiC,GAAW,CACPvB,YAAQ6gD,GAAMglZ,kBAAmBnmZ,KAClC29c,EAAkBv+hB,UAAW,qBAAiB,GACjDyiC,GAAW,CACPvB,YAAQ,GAAImje,KACbk6B,EAAkBv+hB,UAAW,sBAAkB,GAClDyiC,GAAW,CACPvB,YAAQ,GAAIgnc,KACbq2D,EAAkBv+hB,UAAW,eAAW,GAC3CyiC,GAAW,CACP3B,YAAS,SACVy9f,EAAkBv+hB,UAAW,qBAAiB,GACjDyiC,GAAW,CACP3B,YAAS,SACVy9f,EAAkBv+hB,UAAW,qBAAiB,GACjDyiC,GAAW,CACP3B,YAAS,SACVy9f,EAAkBv+hB,UAAW,wBAAoB,GACpDyiC,GAAW,CACP3B,YAAS,SACVy9f,EAAkBv+hB,UAAW,wBAAoB,GACpDyiC,GAAW,CACP3B,aAAS,IACVy9f,EAAkBv+hB,UAAW,+BAA2B,GAC3DyiC,GAAW,CACP3B,aAAS,IACVy9f,EAAkBv+hB,UAAW,qBAAiB,GACjDyiC,GAAW,CACP3B,aAAS,IACVy9f,EAAkBv+hB,UAAW,uBAAmB,GACnDyiC,GAAW,CACPtB,YAAW,GAAIwmc,KAChB42D,EAAkBv+hB,UAAW,2BAAuB,GACvDyiC,GAAW,CACPvB,YAAQ,GAAIumc,KACb82D,EAAkBv+hB,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,aAAS,IACVy9f,EAAkBv+hB,UAAW,yBAAqB,GACrDyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,GAAK0sT,KACzCq+L,EAAkBv+hB,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,OACVy9f,EAAkBv+hB,UAAW,kBAAc,GAC9CyiC,GAAW,CACPtB,YAAW,CAAC,IAAKs2f,KAClB8G,EAAkBv+hB,UAAW,cAAU,GAC1CyiC,GAAW,CACPtB,YAAW,CAAC,IAAK41f,KAClBwH,EAAkBv+hB,UAAW,mBAAe,GAC/CyiC,GAAW,CACP3B,YAAS,aACVy9f,EAAkBv+hB,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,aAAS,IACVy9f,EAAkBv+hB,UAAW,4BAAwB,GACxDyiC,GAAW,CACP3B,aAAS,IACVy9f,EAAkBv+hB,UAAW,oBAAgB,GAChDyiC,GAAW,CACP3B,aAAS,IACVy9f,EAAkBv+hB,UAAW,mBAAe,GAC/CyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,cAAU,GAC1CyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,YAAQ,GACxCyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,oBAAgB,GAChDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,oBAAgB,GAChDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,kBAAc,GAC9CyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,qBAAiB,GACjDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,mBAAe,GAC/CyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,wBAAoB,GACpDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,mBAAe,GAC/CyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,sBAAkB,GAClDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,uBAAmB,GACnDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,kBAAc,GAC9CyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,iBAAa,GAC7CyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,yBAAqB,GACrDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,sBAAkB,GAClDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,uBAAmB,GACnDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,oBAAgB,GAChDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,oBAAgB,GAChDyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,eAAW,GAC3CyiC,GAAW,CACPp/B,eACDk7hB,EAAkBv+hB,UAAW,mBAAe,GAC/CyiC,GAAW,CACP3B,YAAS,QACVy9f,EAAkBv+hB,UAAW,oBAAgB,GAChDu+hB,EAAoB97f,GAAW,CAC3BlB,KACDg9f,GA3nCgC,CA6nCrCn0f,KClrCEjI,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAmBzCm+f,GAAgC,SAAUz9f,GAE1C,SAASy9f,IACL,OAAkB,OAAXz9f,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA8F/D,OAhGAq+B,GAAUu+f,EAAgBz9f,GAS1By9f,EAAe1giB,UAAU03S,eAAiB,SAAU8+L,EAAOzO,GACvD,IAAI44D,EAAkBnqD,EAAMsK,gBAC5B/Y,EAAO64D,aAAe,IAAIrgd,GAAKqra,GAAe7jB,EAAOv0b,MAAOmtf,EAAgBntf,OAAQo4c,GAAe7jB,EAAOt0b,OAAQktf,EAAgBltf,SAClIs0b,EAAO84D,SAAW,IAAItgd,GAAKqra,GAAe7jB,EAAO04D,UAAWE,EAAgBntf,OAAQo4c,GAAe7jB,EAAOy4D,WAAYG,EAAgBltf,SACtI3vC,KAAK44hB,kBAAkB30D,EAAQA,EAAO2gB,UAAU1nb,QAAS+ma,EAAO2gB,UAAU72c,SAAU2kc,GACvD,QAAzBzO,EAAOy0D,gBACPz0D,EAAOy0D,cAAgB,QAE3BhmD,EAAMqjD,gBAAkBjuC,GAAe7jB,EAAOy0D,cAAemE,EAAgBntf,OAC7E,IAAIisC,EAASsoZ,EAAOtoZ,OACpB37E,KAAKg9hB,oBAAoBrhd,EAAQsoZ,IAOrC24D,EAAe1giB,UAAU8giB,oBAAsB,SAAUrhd,EAAQsoZ,EAAQt7W,QACrD,IAAZA,IAAsBA,GAAU,GASpC,IARA,IAAIkra,EAAc5vD,EAAO4vD,YAErBoJ,EAAW11hB,KAAK6L,IAAI7L,KAAK8L,IAAI4wd,EAAOg5D,SAAU,GAAI,GAElDC,EAAQ,GAAKrJ,GAAe,EAAIoJ,GAAY,EAAIA,KAChDt5Q,EAAUs5Q,GAAYthd,EAAO9+E,OAAS,GACtCyZ,EAAI,EAEC1Z,EAAI++E,EAAO9+E,OAAS,EAAGD,GAAK,EAAGA,IAAK,CACzC,IAAI4d,EAAQmuG,EAAUhtC,EAAO9+E,OAAS,EAAID,EAAIA,EAC9C,GAAI++E,EAAOnhE,GAAO0iD,QAAS,CACvB,IAAIvtB,EAASutf,EAAQvhd,EAAOnhE,GAAOlE,EACnCqlE,EAAOnhE,GAAO2ihB,OAAS7mhB,EACvBqlE,EAAOnhE,GAAO4ihB,YAAcztf,EAC5Br5B,GAAKq5B,EAASg0O,KAS1Bi5Q,EAAe1giB,UAAUmhiB,iBAAmB,SAAUp5D,EAAQ7sb,EAAOukC,GACjE,IAAImiC,EAAOniC,EAAO9+E,OAAS,EACvBomC,EAAyB,WAAhBghc,EAAO94d,KAAoBwwE,EAAO9+E,OAAS,EAAI8+E,EAAO9+E,OAAS,EACxE0kB,GAAKo6D,EAAO,GAAGp6D,EAAIo6D,EAAO14C,GAAQ1hB,GAAK,EACvCwhB,GAAS44C,EAAO,GAAGp6D,EAAIo6D,EAAO14C,EAAS,GAAG1hB,GAAK,EACnD61B,EAAM6+c,OAAS,IAAIhrB,GAAK1pd,EAAGo6D,EAAO,GAAGrlE,EAAGysB,EAAQxhB,EAAGo6D,EAAO14C,GAAQ3sB,EAAIqlE,EAAO,GAAGrlE,GAChF8gC,EAAMm6b,eAAiB,CACnBhwd,EAAG61B,EAAM6+c,OAAO10e,EAAI61B,EAAM6+c,OAAOvmd,MAAQ,EACzCp5B,EAAG8gC,EAAM6+c,OAAO3/e,EAAI8gC,EAAM6+c,OAAOtmd,OAAS,GAE9CyH,EAAMkmf,YAAc,CAChB/7gB,EAAG61B,EAAMm6b,eAAehwd,GAAKo6D,EAAO,GAAGp6D,EAAIo6D,EAAOmiC,GAAMv8F,GAAK,EAC7DjL,EAAG8gC,EAAMm6b,eAAej7d,GAAKqlE,EAAO,GAAGrlE,EAAIqlE,EAAOmiC,GAAMxnG,GAAK,IAQrEsmhB,EAAe1giB,UAAUqhiB,SAAW,SAAUC,GAE1C,IADA,IAAIlqc,EAAO,IACF12F,EAAI,EAAGA,EAAI4giB,EAAU3giB,OAAQD,IAClC02F,GAAQkqc,EAAU5giB,GAAG2kB,EAAI,IAAMi8gB,EAAU5giB,GAAG0Z,EACxC1Z,IAAM4giB,EAAU3giB,OAAS,IACzBy2F,GAAQ,MAGhB,OAAOA,GAOXspc,EAAe1giB,UAAU08hB,kBAAoB,SAAU30D,EAAQ/ma,EAASnvB,EAAU2kc,GAC9E,IAAInxd,GAAKmxd,EAAMsK,gBAAgBttc,MAAQu0b,EAAO64D,aAAaptf,OAAS,EAChEp5B,GAAKo8d,EAAMsK,gBAAgBrtc,OAASs0b,EAAO64D,aAAantf,QAAU,EAClEimf,EAAoB,IAAI3qD,GAAK1pd,EAAGjL,EAAG2td,EAAO64D,aAAaptf,MAAOu0b,EAAO64D,aAAantf,QACtFs0b,EAAO0xD,WAAa,IAAI1qD,GAAK2qD,EAAkBr0gB,EAAGq0gB,EAAkBt/gB,EAAGs/gB,EAAkBlmf,MAAQkmf,EAAkBr0gB,EAAGq0gB,EAAkBjmf,OAASimf,EAAkBt/gB,GACnK2td,EAAO2xD,kBAAoBA,EACvB14d,GAAwB,YAAbnvB,IACXk2b,EAAO0xD,WAAa,IAAI1qD,GAAKryd,IAAUA,KAAWA,KAAWA,OAG9DgkhB,EAjGyB,CAkGlChG,ICtHEv4f,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAkBzCg/f,GAA8B,SAAUt+f,GAExC,SAASs+f,IACL,OAAkB,OAAXt+f,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAyG/D,OA3GAq+B,GAAUo/f,EAAct+f,GAUxBs+f,EAAavhiB,UAAUwhiB,eAAiB,SAAUtmf,EAAO6sb,EAAQyO,GAC7D,IAAIhoG,EACAizJ,EACAC,EACAC,EACAC,EACAxF,EACAyF,EACAC,EACA7pf,EAAO8vb,EAAO64D,aAGdmB,GADcvrD,EAAMsK,gBAAgBttc,MAAQu0b,EAAO64D,aAAaptf,OAAS,EACzCgjc,EAAMsK,gBAAgBz7d,EACtD28gB,EAAYxrD,EAAMsK,gBAAgB1me,GAAKo8d,EAAMsK,gBAAgBrtc,OAASwE,EAAKxE,QAAU,EAErF3M,EAAMoU,EAAM+lf,OAAShpf,EAAKxE,OAC1B1M,EAASD,EAAMoU,EAAMgmf,YAAcjpf,EAAKxE,OACxCotf,EAAW94D,EAAO84D,SACtBryJ,EAAYqyJ,EAASrtf,OAASyE,EAAKzE,MAAQqtf,EAASrtf,SAAWyE,EAAKxE,OAASotf,EAASptf,OAAS3M,IAC1FmR,EAAKxE,OAASotf,EAASptf,SAG5Bkuf,GAFAF,EAAaxpf,EAAKzE,MAAQ,EAAKg7V,EAAY,GAEtBA,EAEjBA,EADAznW,EAASkR,EAAKxE,OAASotf,EAASptf,QAAUwE,EAAKxE,SAAWotf,EAASptf,OACvDotf,EAASrtf,MAGTqtf,EAASrtf,OAASyE,EAAKzE,MAAQqtf,EAASrtf,SAC9CyE,EAAKxE,OAASotf,EAASptf,OAAS1M,IAAWkR,EAAKxE,OAASotf,EAASptf,SAG5Emuf,GADAF,EAAgBzpf,EAAKzE,MAAQ,EAAMg7V,EAAY,GACpBA,EACvB1nW,GAAOmR,EAAKxE,OAASotf,EAASptf,QAC9Bguf,EAAYC,EAAetF,EAAankf,EAAKzE,MAAQ,EAAKqtf,EAASrtf,MAAQ,EAC3Emuf,EAASC,EAAYC,EAAU5pf,EAAKzE,MAAQ,EAAKqtf,EAASrtf,MAAQ,GAE7DzM,EAAUkR,EAAKxE,OAASotf,EAASptf,SAEtCouf,EAASD,GADTxF,EAAYsF,EAAgBzpf,EAAKzE,MAAQ,EAAKg7V,EAAY,GACzBA,EACjCszJ,EAAU7pf,EAAKxE,OAASotf,EAASptf,QAKrC,IAIIwuf,EAAQ,CAAE58gB,EAAG08gB,EAtCJ,EAsCgCH,EAAWxnhB,EANxD2sB,GAAUi7f,GAONE,EAAQ,CAAE78gB,EAAG08gB,EAvCJ,EAuCgCL,EAActnhB,EAAG2sB,IAN9D+6f,GAAWE,KAQPC,EAAQ,CAAE58gB,EAAG08gB,EAzCJ,EAyCgCF,EAAQznhB,EAAG0nhB,GACpDI,EAAQ,CAAE78gB,EAAG08gB,EA1CJ,EA0CgC3F,EAAWhihB,EAAG0nhB,IAE3D,IAAI14D,EAAU,CAVF,CAAE/jd,EAAG08gB,EAlCJ,EAkCgCN,EAAWrnhB,EAHxD0sB,GAAOk7f,GAIK,CAAE38gB,EAAG08gB,EAnCJ,EAmCgCJ,EAAQvnhB,EAAG0sB,GAS3Bm7f,EARjB,CAAE58gB,EAAG08gB,EApCJ,EAoCgCH,EAAWxnhB,EAAG2sB,GAC/C,CAAE1hB,EAAG08gB,EArCJ,EAqCgCL,EAActnhB,EAAG2sB,GAOZm7f,GAGlD,OAFAp+hB,KAAKq9hB,iBAAiBp5D,EAAQ7sb,EAAOkub,GACrBtle,KAAKu9hB,SAASj4D,IASlCm4D,EAAavhiB,UAAU+5hB,YAAc,SAAU7+e,EAAO6sb,EAAQyO,EAAOpme,EAASiphB,EAAar4C,GACvF,IAAK9lc,EAAM8lB,QAEP,OADAnhB,GAAczvC,EAAQmN,IACf,KAEX,IAAI8lF,EAAYv/F,KAAK09hB,eAAetmf,EAAO6sb,EAAQyO,GACnDt7b,EAAMk/e,SAAW,EACjBhqhB,EAAQzE,EAAI03F,EACZsmZ,IAAmB,EAAO0vC,EAAa7iD,EAAMtsM,SAAS4+H,SAAS14Z,GAAU4we,GACrE9lc,EAAMk8e,WACN5gD,EAAM6nD,cAAclD,cAAcjgf,EAAM58B,MAAOk4d,GAAO,IAQ9D+qD,EAAavhiB,UAAU2+B,cAAgB,WACnC,MAAO,gBAQX4igB,EAAavhiB,UAAUif,QAAU,aAK1BsihB,EA5GuB,CA6GhCb,IC9HEv+f,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAmBzC4/f,GAA+B,SAAUl/f,GAEzC,SAASk/f,IACL,OAAkB,OAAXl/f,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAwI/D,OA1IAq+B,GAAUgggB,EAAel/f,GAOzBk/f,EAAcniiB,UAAUwhiB,eAAiB,SAAUtmf,EAAO6sb,EAAQyO,GAC9D,IAAIv+b,EAAO8vb,EAAO64D,aAEdoB,EAAYxrD,EAAMsK,gBAAgB1me,GAAKo8d,EAAMsK,gBAAgBrtc,OAASwE,EAAKxE,QAAU,EAIrFsuf,GADcvrD,EAAMsK,gBAAgBttc,MAAQu0b,EAAO64D,aAAaptf,OAAS,EACzCgjc,EAAMsK,gBAAgBz7d,EAEtDyhB,EAAMoU,EAAM+lf,OACZl6f,EAASmU,EAAM+lf,OAAS/lf,EAAMgmf,YAE9BO,EAAY,IAAO,EAAIvmf,EAAM+lf,QAC7BS,EAAe,IAAO,EAAI36f,GAC9BD,GAAOk7f,EAAY/pf,EAAKxE,OACxB1M,GAAUi7f,EAAY/pf,EAAKxE,OAC3B,IAgBI21b,EAAU,CAhBF,CACR/jd,EAAG08gB,EAZM,EAYsBN,EAAYxpf,EAAKzE,MAChDp5B,EAAG0sB,EAAMmR,EAAKxE,QAEN,CACRpuB,EAAG08gB,EAhBM,GAgBuB,EAAIN,GAAaxpf,EAAKzE,MACtDp5B,EAAG0sB,EAAMmR,EAAKxE,QAEN,CACRpuB,EAAG08gB,EApBM,GAoBuB,EAAIL,GAAgBzpf,EAAKzE,MACzDp5B,EAAG2sB,EAASkR,EAAKxE,QAET,CACRpuB,EAAG08gB,EAxBM,EAwBsBL,EAAezpf,EAAKzE,MACnDp5B,EAAG2sB,EAASkR,EAAKxE,SAKrB,OAFA3vC,KAAKq9hB,iBAAiBp5D,EAAQ7sb,EAAOkub,GACrBtle,KAAKu9hB,SAASj4D,IAQlC+4D,EAAcniiB,UAAU8giB,oBAAsB,SAAUrhd,EAAQsoZ,GACjC,WAAvBA,EAAOq6D,YACPn/f,EAAOjjC,UAAU8giB,oBAAoB17hB,KAAKtB,KAAM27E,EAAQsoZ,GAAQ,GAGhEjke,KAAKu+hB,yBAAyBt6D,IAMtCo6D,EAAcniiB,UAAUqiiB,yBAA2B,SAAUt6D,GASzD,IARA,IAAInpa,EAAQmpa,EAAOtoZ,OAAO9+E,OACtB2hiB,EAAcv6D,EAAO4vD,YACrBv9gB,EAAI,GACJq5B,EAAS,GAET8uf,EADWl3hB,KAAK6L,IAAI,EAAG7L,KAAK8L,IAAI4wd,EAAOg5D,SAAU,KACzBnie,EAAQ,GAChC4je,EAAS1+hB,KAAK2+hB,iBAAiB,EAAGH,GAClCI,EAAQ,EACHhiiB,EAAI,EAAGA,EAAIk+D,EAAOl+D,IACnBqne,EAAOtoZ,OAAO/+E,GAAGsgE,UACjB5mD,EAAE1Z,GAAKgiiB,EACPjvf,EAAO/yC,GAAKoD,KAAK2+hB,iBAAiBC,EAAOr3hB,KAAKgH,IAAI01d,EAAOtoZ,OAAO/+E,GAAG0Z,IACnEsohB,GAASjvf,EAAO/yC,GAAK6hiB,EAAYC,GAGzC,IAAIG,EAAO,GAAKD,EAAQH,EAAYC,GACpC,IAAS9hiB,EAAI,EAAGA,EAAIk+D,EAAOl+D,IACnBqne,EAAOtoZ,OAAO/+E,GAAGsgE,UACjB+ma,EAAOtoZ,OAAO/+E,GAAGugiB,OAAS0B,EAAOvohB,EAAE1Z,GACnCqne,EAAOtoZ,OAAO/+E,GAAGwgiB,YAAcyB,EAAOlvf,EAAO/yC,KAOzDyhiB,EAAcniiB,UAAUyiiB,iBAAmB,SAAUrohB,EAAGwohB,GAEpD,OADa9+hB,KAAK++hB,uBAAuB,EAAG,EAAIzohB,GAAIwohB,IAMxDT,EAAcniiB,UAAU6iiB,uBAAyB,SAAUh2hB,EAAGpB,EAAGC,GAC7D,IAAIo3hB,EACAC,EACAp3hB,EAAIF,EAAIA,EAAI,EAAIoB,EAAInB,EACxB,GAAIC,GAAK,EAAG,CACR,IAAIq3hB,EAAK33hB,KAAK47B,KAAKt7B,GAGnB,OAFAm3hB,IAAUr3hB,EAAIu3hB,IAAO,EAAIn2hB,GACzBk2hB,IAAUt3hB,EAAIu3hB,IAAO,EAAIn2hB,GAClBxB,KAAK8L,IAAI2rhB,EAAOC,GAE3B,OAAO,GAKXZ,EAAcniiB,UAAU+5hB,YAAc,SAAU7+e,EAAO6sb,EAAQyO,EAAOpme,EAASiphB,EAAar4C,GACxF,IAAK9lc,EAAM8lB,QAEP,OADAnhB,GAAczvC,EAAQmN,IACf,KAEXnN,EAAQzE,EAAI7H,KAAK09hB,eAAetmf,EAAO6sb,EAAQyO,GAC/Ct7b,EAAMk/e,SAAW,EACjBzwC,IAAmB,EAAO0vC,EAAa7iD,EAAMtsM,SAAS4+H,SAAS14Z,GAAU4we,GACrE9lc,EAAMk8e,WACN5gD,EAAM6nD,cAAclD,cAAcjgf,EAAM58B,MAAOk4d,GAAO,IAM9D2rD,EAAcniiB,UAAU2+B,cAAgB,WACpC,MAAO,iBAQXwjgB,EAAcniiB,UAAUif,QAAU,aAK3BkjhB,EA3IwB,CA4IjCzB,ICtKEv+f,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzC0ggB,GAA4B,SAAUhggB,GAGtC,SAASgggB,EAAWh0C,GAChB,IAAIprf,EAAQo/B,EAAO79B,KAAKtB,KAAMmrf,IAAgBnrf,KAE9C,OADAD,EAAMq/hB,aAAe,GACdr/hB,EAwRX,OA7RAs+B,GAAU8ggB,EAAYhggB,GAatBgggB,EAAWjjiB,UAAUq8f,gBAAkB,SAAUt0B,GAC7C,IAAIzne,EACA6iiB,EAEAjof,EADAukC,EAAS,GAETqoZ,EAAa,EACjBq7D,EAAar/hB,KAAKs/hB,kBAAkBr7D,GACpC,IAAK,IAAIrne,EAAI,EAAGA,EAAIyiiB,EAAWxiiB,OAAQD,IAEnB,QADhBw6C,EAAQiof,EAAWziiB,IACT2kB,GAA0B,KAAZ61B,EAAM71B,IAI1B61B,EAAM58B,MAAQwpd,EACdA,IACAroZ,EAAO/5E,KAAKw1C,IAIpB,GADAp3C,KAAKo/hB,aAAep/hB,KAAKu/hB,uBAAuB5jd,EAAQsoZ,GACpDtoZ,EAAO9+E,OAAS,EAAG,CACnBone,EAAO42B,WAAa,GACpB,IAAK,IAAI78f,EAAK,EAAGm+gB,EAAWxgc,EAAQ39E,EAAKm+gB,EAASt/gB,OAAQmB,IAAM,CAC5D,IAAIwhiB,EAAUrjB,EAASn+gB,GACvB,GAAsB,IAAlBwhiB,EAAQhlhB,MAAa,CACrB,IAAIgpI,EAAWxjJ,KAAKy/hB,iBAAiB9jd,EAAQ6jd,EAAQhlhB,MAAQ,EAAGypd,GAChEzne,EAAQwD,KAAK0/hB,iBAAiB/jd,EAAO6nE,GAAWg8Y,EAASx/hB,KAAKo/hB,aAAa57Y,GAAWxjJ,KAAKo/hB,aAAaI,EAAQhlhB,OAAQypd,GACxHA,EAAO42B,WAAWj5f,KAAKpF,GAEvB,IAAIglH,EAAQyiX,EAAO/oF,KAAO+oF,EAAOjpF,KAC7BwkJ,EAAQhnM,QAAUh8V,EAAM4tf,cAAc9ze,GAAK9Z,EAAM6tf,cAAc/ze,GAAKkrG,EAAQ,IAC5EyiX,EAAOjpF,KAAOzzY,KAAK6L,IAAI6wd,EAAOjpF,KAAMwkJ,EAAQhnM,OAAQh8V,EAAM4tf,cAAc9ze,EAAG9Z,EAAM6tf,cAAc/ze,GAC/F2td,EAAO/oF,KAAO3zY,KAAKu3D,KAAKv3D,KAAK8L,IAAI4wd,EAAO/oF,KAAMskJ,EAAQhnM,OAAQh8V,EAAM4tf,cAAc9ze,EAAG9Z,EAAM6tf,cAAc/ze,IACzG2td,EAAOjpF,KAAkC,gBAA3BipF,EAAOtkW,MAAMk0W,UAA8Btse,KAAKC,MAAMy8d,EAAOjpF,MAAQipF,EAAOjpF,OAInE,eAA/BipF,EAAOyO,MAAMyC,eAAkClR,EAAOs0C,WACtD/7gB,EAAQwD,KAAK0/hB,iBAAiB,CAAEnnM,OAAQ58Q,EAAOA,EAAO9+E,OAAS,GAAG07V,OAAQC,OAAQ78Q,EAAOA,EAAO9+E,OAAS,GAAG27V,QAAU,CAAED,OAAQ58Q,EAAOA,EAAO9+E,OAAS,GAAG07V,OAAS,EAAGC,OAAQ78Q,EAAO,GAAG68Q,QAAUx4V,KAAKo/hB,aAAa,GAAIp/hB,KAAKo/hB,aAAazjd,EAAOA,EAAO9+E,OAAS,GAAG2d,OAAQypd,GAC5QA,EAAO42B,WAAWj5f,KAAKpF,MAInC2iiB,EAAWjjiB,UAAUujiB,iBAAmB,SAAU9jd,EAAQ/+E,EAAGqne,GACzD,GAAuC,SAAnCA,EAAOu1B,mBAAmBr8e,KAC1B,OAAOvgB,EAEX,KAAOQ,YAAkBu+E,EAAO/+E,KAAOA,GAAK,GACxCA,GAAQ,EAEZ,OAAOA,GAEXuiiB,EAAWjjiB,UAAUyjiB,aAAe,SAAUhkd,EAAQ/+E,EAAGqne,GACrD,GAAuC,SAAnCA,EAAOu1B,mBAAmBr8e,KAC1B,OAAOvgB,EAEX,KAAOQ,YAAkBu+E,EAAO/+E,KAAOA,EAAI++E,EAAO9+E,QAC9CD,GAAQ,EAEZ,OAAOA,GAEXuiiB,EAAWjjiB,UAAUojiB,kBAAoB,SAAUr7D,EAAQg3C,GACvD,GAAuC,SAAnCh3C,EAAOu1B,mBAAmBr8e,MAAmBnd,KAAK42f,eAAe3yB,EAAOtoZ,QACxE,OAAOs/b,GAA8Bh3C,EAAOtoZ,OAGhD,IADA,IAAIA,EAASs/b,GAA8B38gB,YAAO,GAAI2le,EAAOtoZ,OAAQ,MAAM,GAClE/+E,EAAI,EAAGA,EAAI++E,EAAO9+E,OAAQD,IAC/B++E,EAAO/+E,GAAG4d,MAAQ5d,EACd++E,EAAO/+E,GAAG8xB,UACVitD,EAAO/+E,GAAG85f,gBAAkB,GAC5B/6a,EAAO/+E,GAAGg5f,QAAU,GACpBj6a,EAAO7hE,OAAOld,EAAG,GACjBA,KAGR,OAAO++E,GAOXwjd,EAAWjjiB,UAAU06f,eAAiB,SAAUj7a,GAC5C,IAAK,IAAI39E,EAAK,EAAG4hiB,EAAWjkd,EAAQ39E,EAAK4hiB,EAAS/iiB,OAAQmB,IAAM,CAE5D,IADY4hiB,EAAS5hiB,GACV44f,eACP,OAAO,EAGf,OAAO,GAQXuoC,EAAWjjiB,UAAUqjiB,uBAAyB,SAAU5jd,EAAQsoZ,GAC5D,IAGI47D,EACAC,EACAC,EACAC,EACAC,EAIAC,EACAC,EAZArle,EAAQ6gB,EAAO9+E,OACfujiB,EAAU,GACVC,EAAmB,GAMnBC,EAAK,GACLn3D,EAAK,GACL0pD,EAAQ,GAGR0N,EAAwBt8D,EAAOs8D,sBAAwBt8D,EAAOs8D,sBAAwB,GAE1F,OADAA,EAAwBA,EAAwB,EAAI,EAAIA,EAAwB,EAAI,EAAIA,EAChFt8D,EAAOu8D,YACX,IAAK,YACD,IAAK,IAAI5jiB,EAAI,EAAGA,EAAIk+D,EAAQ,EAAGl+D,IAC3B0jiB,EAAG1jiB,GAAK++E,EAAO/+E,EAAI,GAAG27V,OAAS58Q,EAAO/+E,GAAG27V,OACzC4wI,EAAGvse,GAAK++E,EAAO/+E,EAAI,GAAG47V,OAAS78Q,EAAO/+E,GAAG47V,OACzCq6L,EAAMj2hB,GAAKuse,EAAGvse,GAAK0jiB,EAAG1jiB,GAG1BujiB,EAActN,EAAMh2hB,OAEpBujiB,EAAQ,GAAKvN,EAAM,GACnBuN,EAAQtle,EAAQ,GAAK+3d,EAAMsN,EAAc,GAEzC,IAAK,IAAIh4hB,EAAI,EAAGA,EAAIm4hB,EAAGzjiB,OAAQsL,IACvBg4hB,EAAch4hB,EAAI,IACd0qhB,EAAM1qhB,GAAK0qhB,EAAM1qhB,EAAI,IAAM,EAC3Bi4hB,EAAQj4hB,EAAI,GAAK,GAGjB+3hB,EAAaI,EAAGn4hB,GAAKm4hB,EAAGn4hB,EAAI,GAC5Bi4hB,EAAQj4hB,EAAI,GAAK,EAAI+3hB,IAAeA,EAAaI,EAAGn4hB,EAAI,IAAM0qhB,EAAM1qhB,IAAM+3hB,EAAaI,EAAGn4hB,IAAM0qhB,EAAM1qhB,EAAI,MAItH,MACJ,IAAK,WACD,IAASvL,EAAI,EAAGA,EAAIk+D,EAAOl+D,IAEnBwjiB,EAAQxjiB,GADF,IAANA,EACck+D,EAAQ,EAAMyle,GAAyB5kd,EAAO/+E,EAAI,GAAG27V,OAAS58Q,EAAO/+E,GAAG27V,QAAW,EAE5F37V,IAAOk+D,EAAQ,EACNA,EAAQ,EAAMyle,GAAyB5kd,EAAO7gB,EAAQ,GAAGy9R,OAAS58Q,EAAO7gB,EAAQ,GAAGy9R,QAAW,EAG/FgoM,GAAyB5kd,EAAO/+E,EAAI,GAAG27V,OAAS58Q,EAAO/+E,EAAI,GAAG27V,QAGpF,MACJ,QAC8B,YAAtB0rI,EAAOu8D,YACPJ,EAAQ,GAAM,GAAKzkd,EAAO,GAAG68Q,OAAS78Q,EAAO,GAAG68Q,SAAY78Q,EAAO,GAAG48Q,OAAS58Q,EAAO,GAAG48Q,QAAU,EACnG8nM,EAAiB,GAAK,GACtBD,EAAQzkd,EAAO9+E,OAAS,GAAM,GAAK8+E,EAAOA,EAAO9+E,OAAS,GAAG27V,OAAS78Q,EAAOA,EAAO9+E,OAAS,GAAG27V,SAC3F78Q,EAAOA,EAAO9+E,OAAS,GAAG07V,OAAS58Q,EAAOA,EAAO9+E,OAAS,GAAG07V,QAClE6nM,EAAQ,GAAKC,EAAiB,GAAK94hB,KAAKgH,IAAI6xhB,EAAQ,MAAQxnhB,IAAW,EAAIwnhB,EAAQ,GACnFA,EAAQzkd,EAAO9+E,OAAS,GAAKwjiB,EAAiB1kd,EAAO9+E,OAAS,GAAK0K,KAAKgH,IAAI6xhB,EAAQzkd,EAAO9+E,OAAS,MAAQ+b,IACxG,EAAIwnhB,EAAQzkd,EAAO9+E,OAAS,KAIhCujiB,EAAQ,GAAKC,EAAiB,GAAK,EACnCD,EAAQzkd,EAAO9+E,OAAS,GAAK,GAEjC,IAASD,EAAI,EAAGA,EAAIk+D,EAAQ,EAAGl+D,IAM3B,GALAijiB,EAAelkd,EAAO/+E,GAAG27V,OAAS58Q,EAAO/+E,EAAI,GAAG27V,OAChDunM,EAAenkd,EAAO/+E,EAAI,GAAG27V,OAAS58Q,EAAO/+E,EAAI,GAAG27V,OACpDwnM,EAAepkd,EAAO/+E,EAAI,GAAG27V,OAAS58Q,EAAO/+E,GAAG27V,OAChDynM,EAAMrkd,EAAO/+E,EAAI,GAAG47V,OAAS78Q,EAAO/+E,GAAG47V,QAAU,KACjDynM,EAAMtkd,EAAO/+E,GAAG47V,OAAS78Q,EAAO/+E,EAAI,GAAG47V,QAAU,KAC5B,IAAjBqnM,GAAuC,IAAjBC,GAAuC,IAAjBC,EAC5CK,EAAQxjiB,GAAK,EACbyjiB,EAAiBzjiB,GAAK,MAErB,CACD,IAAI6U,EAAI,GAAKouhB,EAAeO,EAAQxjiB,EAAI,GAAK,EAAIkjiB,GACjDM,EAAQxjiB,IAAM6U,EAAIsuhB,EAClBM,EAAiBzjiB,GAAK6U,GAAK,GAAKuuhB,EAAMD,EAAeE,EAAMJ,GAAgBA,EAAeQ,EAAiBzjiB,EAAI,IAGvH,IAAK,IAAIitE,EAAI/O,EAAQ,EAAG+O,GAAK,EAAGA,IAC5Bu2d,EAAQv2d,GAAKu2d,EAAQv2d,GAAKu2d,EAAQv2d,EAAI,GAAKw2d,EAAiBx2d,GAIxE,OAAOu2d,GAQXjB,EAAWjjiB,UAAUwjiB,iBAAmB,SAAUrmB,EAAQC,EAAQmnB,EAAUC,EAAUz8D,GAClF,IAAImmB,EACAC,EACAjzc,EACAupf,EAAoBF,EACpBG,EAAoBF,EACpBG,EAAUxnB,EAAO9gL,OACjBuoM,EAAUznB,EAAO7gL,OACjB86J,EAAUgmB,EAAO/gL,OACjBwoM,EAAUznB,EAAO9gL,OACrB,OAAQyrI,EAAOu8D,YACX,IAAK,WAC8B,aAA3Bv8D,EAAOpkW,MAAMg0W,YACb8sD,EAAoBF,EAAWzgiB,KAAKkhf,iBAAiBjd,GACrD28D,EAAoBF,EAAW1giB,KAAKkhf,iBAAiBjd,IAEzDmmB,EAAgB,IAAIhL,GAAcyhD,EAAUJ,EAAW,EAAGK,EAAUH,EAAoB,GACxFt2C,EAAgB,IAAIjL,GAAckU,EAAUotC,EAAW,EAAGK,EAAUH,EAAoB,GACxFxpf,EAAQ,IAAI+yc,GAAcC,EAAeC,GACzC,MACJ,IAAK,YACD,IAAI7tf,GAAS82f,EAAUutC,GAAW,EAClCz2C,EAAgB,IAAIhL,GAAcyhD,EAAUrkiB,EAAOskiB,EAAUL,EAAWjkiB,GACxE6tf,EAAgB,IAAIjL,GAAckU,EAAU92f,EAAOukiB,EAAUL,EAAWlkiB,GACxE46C,EAAQ,IAAI+yc,GAAcC,EAAeC,GACzC,MACJ,QACI,IAAI22C,EAAO,EAAI,EACXC,EAAW3tC,EAAUutC,EAGrB1kd,EAAK6kd,GAASF,EAAW,EAAIC,EAAYC,GAF7CC,GAAoBA,IAE2C,GAAMR,EAAWC,IAChFt2C,EAAgB,IAAIhL,IAAe,EAAKyhD,EAAYvtC,GAAY0tC,EAFvDA,GAAU,EAAIF,EAAWC,EAAWC,EAAOC,GAAWR,EAAW,GAAMC,KAGhFr2C,EAAgB,IAAIjL,IAAgByhD,EAAW,EAAKvtC,GAAY0tC,EAAM7kd,GACtE/kC,EAAQ,IAAI+yc,GAAcC,EAAeC,GAGjD,OAAOjzc,GAKX+nf,EAAWjjiB,UAAUglf,iBAAmB,SAAUjd,GAC9C,IAAI1he,EAAW0he,EAAOpkW,MAAM2kZ,mBAuB5B,MArBiB,UAAbjihB,EACyB,QAEP,WAAbA,EACoB,OAEP,SAAbA,EACoB,MAEP,UAAbA,EACoB,KAEP,YAAbA,EACoB,IAEP,YAAbA,EACoB,IAGA,QAUjC48hB,EAAWjjiB,UAAUkhgB,YAAc,SAAUn5B,GACzC,IAAIh6d,EAASg6d,EAAO7jc,UACpBpgC,KAAKo8gB,kBAAkBn4C,EAAQh6d,IAE5Bk1hB,EA9RqB,CA+R9BtkB,ICvTEx8e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzCyigB,GAAkC,SAAU/hgB,GAE5C,SAAS+hgB,IACL,OAAkB,OAAX/hgB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmG/D,OArGAq+B,GAAU6igB,EAAkB/hgB,GAU5B+hgB,EAAiBhliB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAChE,IAII2gD,EACAC,EACAC,EACAC,EACAC,EACAlC,EAEAjof,EAXAoke,EAAa,KACbj8a,EAAY,GACZ/nD,EAAa,KACbgqf,EAAc,KAOd7ld,EAAS,GAETqoZ,EAAa,EACjBq7D,EAAar/hB,KAAKs/hB,kBAAkBr7D,GACpC,IAAK,IAAIrne,EAAI,EAAGA,EAAIyiiB,EAAWxiiB,OAAQD,IAEnB,QADhBw6C,EAAQiof,EAAWziiB,IACT2kB,GAA0B,KAAZ61B,EAAM71B,IAI1B61B,EAAM58B,MAAQwpd,EACdA,IACAroZ,EAAO/5E,KAAKw1C,IAGpB,IACIosG,EADA4sV,EAAez0Z,EAAO9+E,OAEtB6/gB,EAA+C,eAA/Bz4C,EAAOyO,MAAMyC,cAAiCoL,GAAqBmF,GACnF38E,EAAwC,eAA/Bk7D,EAAOyO,MAAMyC,cAAiClR,EAAOtoZ,OAAO,GAAG68Q,OACxEjxV,KAAK8L,IAAI4wd,EAAOtkW,MAAMk1W,aAAazhe,IAAK,GAC5C,IAASxW,EAAI,EAAGA,EAAIwze,EAAcxze,KAC9Bw6C,EAAQukC,EAAO/+E,IACT85f,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GAChBpyW,EAAWxjJ,KAAKy/hB,iBAAiB9jd,EAAQvkC,EAAM58B,MAAQ,EAAGypd,GACtD7sb,EAAM8lB,SACNohb,GAAY3ia,EAAO6nE,GAAWpsG,EAAOukC,EAAO37E,KAAK2/hB,aAAahkd,EAAQvkC,EAAM58B,MAAQ,EAAGypd,IAAUA,IAC7Fu3C,GACA8lB,EAAar9D,EAAO42B,WAAWr3W,GAAU4mW,cACzCm3C,EAAat9D,EAAO42B,WAAWr3W,GAAU6mW,cACzC82C,EAAMzkB,EAActle,EAAMmhT,OAAQnhT,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,EAAYvc,GAC1Em9D,EAAO1kB,EAAc4kB,EAAW//gB,EAAG+/gB,EAAWhrhB,EAAGupH,EAAOF,EAAO6gX,EAAYvc,GAC3Eo9D,EAAO3kB,EAAc6kB,EAAWhghB,EAAGgghB,EAAWjrhB,EAAGupH,EAAOF,EAAO6gX,EAAYvc,GAC3E1kY,EAAYA,EAAUztE,OAAO,KAAOsvgB,EAAK7/gB,EAAI,IACvC6/gB,EAAK9qhB,EAAI,IAAM+qhB,EAAK9/gB,EAAI,IAAM8/gB,EAAK/qhB,EAAI,IAAM6qhB,EAAI5/gB,EAAI,IAAM4/gB,EAAI7qhB,EAAI,OAKzEipF,GAAc,MADd/nD,EAAakle,EAActle,EAAMmhT,OAAQwwE,EAAQlpS,EAAOF,EAAO6gX,EAAYvc,IAC3C1id,EAAI,IAAMi2B,EAAWlhC,EAAI,IAGzDipF,GAAc,MADdiic,EAAc9kB,EAActle,EAAMmhT,OAAQnhT,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,EAAYvc,IACjD1id,EAAI,IAAMighB,EAAYlrhB,EAAI,KAE/DtW,KAAKg8gB,mBAAmB5ke,EAAO6sb,EAAQuc,EAAYk8B,GACnDlB,EAAapke,IAGboke,EAAa,KACbpke,EAAMs/c,gBAAkB,KAEtB95f,EAAI,EAAIwze,IAAiBz0Z,EAAO/+E,EAAI,GAAGsgE,SAAYtgE,IAAMwze,EAAe,IACvE+wD,GAAO3pf,IACVA,EAAakle,EAActle,EAAMmhT,OAAQwwE,EAAQlpS,EAAOF,EAAO6gX,EAAYvc,GAC3E1kY,EAAYA,EAAUztE,OAAO,KAAQ0lB,EAAWj2B,EAAK,IAAOi2B,EAAWlhC,IAG/EtW,KAAK27gB,eAAe,IAAIhwC,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAOypd,EAAO40B,SAAU50B,EAAOt7T,OAAOj5H,MAAOu0b,EAAOt7T,OAAOhzF,MAAOsuZ,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,GAAY0kY,EAAQ,IACzMjke,KAAKo/f,aAAan7B,IAKtBi9D,EAAiBhliB,UAAU2+B,cAAgB,WAIvC,MAAO,oBAQXqmgB,EAAiBhliB,UAAUif,QAAU,aAK9B+lhB,EAtG2B,CAuGpC/B,IC/HE9ggB,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAsBzCgjgB,GAAwC,SAAUtigB,GAElD,SAASsigB,IACL,OAAkB,OAAXtigB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA6E/D,OA/EAq+B,GAAUojgB,EAAwBtigB,GAUlCsigB,EAAuBvliB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAOtE,IANA,IAAIh9V,EAAW,KACXhsG,EAAa,IACbmkc,EAAgB37e,KAAK04f,sBAAsBz0B,GAC3C33d,EAAU,GACVizF,EAAY,GACZ01J,EAAWj1P,KAAKg9gB,aAAa/4C,EAAQA,EAAOhvO,UACvCj3P,EAAK,EAAGq8gB,EAAkB1+B,EAAe39e,EAAKq8gB,EAAgBx9gB,OAAQmB,IAAM,CACjF,IAAIo5C,EAAQije,EAAgBr8gB,GAC5Bo5C,EAAMw+c,QAAU,GACZx+c,EAAM8lB,SAAWohb,GAAY3C,EAAcvkc,EAAM58B,MAAQ,GAAI48B,EAAOukc,EAAcvkc,EAAM58B,MAAQ,GAAIypd,IACpG1kY,GAAav/F,KAAKu7gB,iBAAiB/3X,EAAUpsG,EAAO6sb,EAAQuc,EAAYkF,GAAUluc,GAClE,MAAZgsG,EACIxjJ,KAAKy9f,cAAcrmd,EAAOosG,EAAUygV,EAA+B,MAAvBA,EAAOi5C,YAAqBjoR,IACxE3oP,EAAQ1K,KAAK,IAAI+pe,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAQ,UAAYgpI,EAAShpI,MAAO,OAAQypd,EAAOv0b,MAAOu0b,EAAOw5B,cAAcj6W,EAAUygV,EAAO40B,UAAW50B,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,IACvN/nD,EAAa,IACb+nD,EAAY,IAGZ/nD,EAAa,IAIjBx3C,KAAKy9f,cAAcrmd,EAAO,KAAM6sb,EAA+B,MAAvBA,EAAOi5C,YAAqBjoR,GAExEzxG,EAAWpsG,EACXp3C,KAAKg8gB,mBAAmB5ke,EAAO6sb,EAAQuc,EAAYkF,MAGnDliW,EAA+C,SAAnCygV,EAAOu1B,mBAAmBr8e,KAAmBqmI,EAAW,KACpEhsG,EAAiD,SAAnCysb,EAAOu1B,mBAAmBr8e,KAAmBq6B,EAAa,IACxEJ,EAAMs/c,gBAAkB,IAGd,KAAdn3Z,GACAjzF,EAAQ1K,KAAK,IAAI+pe,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAO,OAAQypd,EAAOv0b,MAAOu0b,EAAOw5B,cAAc9hB,EAAcA,EAAc9+e,OAAS,GAAIone,EAAO40B,UAAW50B,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,IAE7Nv/F,KAAKm9gB,iBAAiBl5C,EAAQ33d,EAAS2oP,GACvCj1P,KAAKo/f,aAAan7B,IAQtBw9D,EAAuBvliB,UAAUkhgB,YAAc,SAAUn5B,GACrDjke,KAAKo8gB,kBAAkBn4C,EAAQA,EAAO7jc,YAK1CqhgB,EAAuBvliB,UAAU2+B,cAAgB,WAI7C,MAAO,0BAQX4mgB,EAAuBvliB,UAAUif,QAAU,aAKpCsmhB,EAhFiC,CAiF1C9kB,ICvGEt+e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAsBzCijgB,GAAiC,SAAUvigB,GAE3C,SAASuigB,IACL,OAAkB,OAAXvigB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAkH/D,OApHAq+B,GAAUqjgB,EAAiBvigB,GAU3BuigB,EAAgBxliB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAOuuW,GAM/D,IALA,IAAI92b,EACAmoD,EAAY,GACZsgK,EAAU,IACV8hS,OAAS3liB,EACT2/e,EAAgB37e,KAAK04f,sBAAsBz0B,GACtCrne,EAAI,EAAGgQ,EAAW+ue,EAAc9+e,OAAQD,EAAIgQ,EAAUhQ,IAAK,EAChEw6C,EAAQukc,EAAc/+e,IAChB85f,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GAChB,IAAI5rU,EAAMziL,KAAK6L,IAAIgkC,EAAM4yI,IAAK5yI,EAAM6yI,MAChCA,EAAO1iL,KAAK8L,IAAI+jC,EAAM4yI,IAAK5yI,EAAM6yI,MACrC,GAAItqD,EAAM27W,WAAY,CAClB,IAAI3pe,EAAOq4K,EACXA,EAAMC,EACNA,EAAOt4K,EAEX,IAAI0uf,EAAW3a,GAAStuc,EAAMmhT,OAAQvuK,EAAKnqD,EAAOF,EAAOuuW,GACrD0zD,EAAYl8C,GAAStuc,EAAMmhT,OAAQtuK,EAAMpqD,EAAOF,EAAOuuW,GAC3D92b,EAAMs/c,gBAAgB90f,KAAKggiB,GAC3Bxqf,EAAMs/c,gBAAgB90f,KAAKy+f,GAC3B,IAAInwd,EAAO,IAAI+6b,GAAK1je,KAAK6L,IAAIitf,EAAS9+e,EAAGqghB,EAAUrghB,GAAIha,KAAK6L,IAAIitf,EAAS/pf,EAAGsrhB,EAAUtrhB,GAAI/O,KAAK8L,IAAI9L,KAAKgH,IAAIqzhB,EAAUrghB,EAAI8+e,EAAS9+e,GAAI0id,EAAOjtE,OAAOtnX,OAAQnoC,KAAK8L,IAAI9L,KAAKgH,IAAIqzhB,EAAUtrhB,EAAI+pf,EAAS/pf,GAAI2td,EAAOjtE,OAAOtnX,QACnNw+b,EAIDh+b,EAAK55B,GAAK2td,EAAOjtE,OAAOtnX,MAAQ,EAHhCQ,EAAK3uB,GAAK0id,EAAOjtE,OAAOtnX,MAAQ,EAKpC0H,EAAMw+c,QAAQh0f,KAAKsuC,GAEfkH,EAAM8lB,SAAWohb,GAAY3C,EAAcvkc,EAAM58B,MAAQ,GAAI48B,EAAOukc,EAAcvkc,EAAM58B,MAAQ,GAAIypd,IACpG1kY,EAAYA,EAAUztE,OAAO+tO,EAAU,IAAOwgQ,EAAS9+e,EAAK,IAAO8+e,EAAS/pf,EAAK,KACjFqrhB,GAAS,GACJ/kiB,EAAI,EAAI++e,EAAc9+e,SAAW8+e,EAAc/+e,EAAI,GAAGsgE,SACpDtgE,IAAM++e,EAAc9+e,OAAS,KAGhCgjQ,EAAU,IACVtgK,GAFAA,EAAYv/F,KAAK6hiB,mBAAmBlmD,EAAevkc,EAAO6sb,EAAQ1kY,EAAW3iG,IAEvDk1B,OAAO,MAC7B6vgB,GAAS,GAEb9hS,EAAU,OAGK,IAAX8hS,GAA0B,IAAN/kiB,IACpB2iG,EAAYv/F,KAAK6hiB,mBAAmBlmD,EAAevkc,EAAO6sb,EAAQ1kY,EAAW3iG,GAC7E+kiB,GAAS,GAEb9hS,EAAU,IACVzoN,EAAMs/c,gBAAkB,IAGhC,IAAIt8e,EAA2B,cAApB6pd,EAAO5rX,SAA2B4rX,EAAOyO,MAAM1xe,QAAQyY,GAAK,cAAgBwqd,EAAOzpd,MAAQ,IAAMypd,EAAO7pd,KAC/G6pd,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAC9ClO,EAAU,IAAIq/d,GAAWvxd,EAAM6pd,EAAO40B,SAAU50B,EAAOt7T,OAAOj5H,MAAOu0b,EAAOt7T,OAAOhzF,MAAOsuZ,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,GAChIv/F,KAAK27gB,eAAervgB,EAAS23d,EAAQ,IACrCjke,KAAKo/f,aAAan7B,IAQtBy9D,EAAgBxliB,UAAU2liB,mBAAqB,SAAUlmD,EAAevkc,EAAO6sb,EAAQ1kY,EAAW3iG,GAC9F,IAAK,IAAIuL,EAAIvL,EAAGuL,GAAK,IACbwze,EAAcxze,GAAG+0D,SAAWy+a,EAAcxze,GAAGuuf,gBAAgB,IAD7Cvuf,IAGhBo3F,GAAa,MADbnoD,EAAQukc,EAAcxze,IACUuuf,gBAAgB,GAAGn1e,EAAK,IAAQ61B,EAAMs/c,gBAAgB,GAAGpgf,EAAM,IAMvG,OAAOipF,GAQXmic,EAAgBxliB,UAAUkhgB,YAAc,SAAUn5B,GAC9C,IAAIh6d,EAASg6d,EAAO7jc,UACpBpgC,KAAKo8gB,kBAAkBn4C,EAAQh6d,IAKnCy3hB,EAAgBxliB,UAAU2+B,cAAgB,WAItC,MAAO,mBAQX6mgB,EAAgBxliB,UAAUif,QAAU,aAK7BumhB,EArH0B,CAsHnC7mB,IC5IEx8e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzCqjgB,GAAoC,SAAU3igB,GAE9C,SAAS2igB,IACL,OAAkB,OAAX3igB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA0I/D,OA5IAq+B,GAAUyjgB,EAAoB3igB,GAU9B2igB,EAAmB5liB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAClE,IAUI64B,EACAC,EAXAyoB,EAA+C,eAA/B99D,EAAOyO,MAAMyC,cAC7BunC,EAAgBqlB,EAAgBxhD,GAAqBmF,GACrDs8C,EAAgB,GAChBrmD,EAAgB37e,KAAK04f,sBAAsBz0B,GAC3CmM,EAAeuL,EAAc9+e,OAC7BoliB,EAAeh+D,EAAO2iB,cACtB79E,EAASg5H,EACTx6hB,KAAK8L,IAAI4wd,EAAOtkW,MAAMk1W,aAAazhe,IAAK6uhB,EAAap7C,UAAU,IAC/Dt/e,KAAK8L,IAAI4wd,EAAOtkW,MAAMk1W,aAAazhe,IAAK6uhB,EAAav4C,YAAY,IACjElyc,EAAa,EAGb44b,EAAe,IACfipC,EAASqD,EAAc/gC,EAAc,GAAGpjJ,OAAQwwE,EAAQlpS,EAAOF,EAAO6gX,EAAYvc,GAClF+9D,EAAgBA,EAAclwgB,OAAO,KAAaunf,EAAO93f,EAAK,IAAO83f,EAAO/igB,EAAK,MAGrF,IADA,IAAImmgB,EAAWx4C,EAAOyO,OAAwC,eAA/BzO,EAAOyO,MAAMyC,cACnCv4e,EAAI,EAAGA,EAAIwze,EAAcxze,IAG9B,GAFA++e,EAAc/+e,GAAG85f,gBAAkB,GACnC/a,EAAc/+e,GAAGg5f,QAAU,GACvBja,EAAc/+e,GAAGsgE,SAAWohb,GAAY3C,EAAc/+e,EAAI,GAAI++e,EAAc/+e,GAAI++e,EAAc/+e,EAAI,GAAIqne,GACtGo1C,EAASqD,EAAc/gC,EAAc/+e,GAAG27V,OAAQ0pM,EAAap7C,UAAUjqf,GAAIijI,EAAOF,EAAO6gX,EAAYvc,GACrG+9D,EAAgBA,EAAclwgB,OAAO,KAAaunf,EAAO93f,EAAK,IAAO83f,EAAO/igB,EAAK,KACjFqle,EAAc/+e,GAAG85f,gBAAgB90f,KAAK86gB,EAAc/gC,EAAc/+e,GAAG27V,OAAQ0pM,EAAap7C,UAAUjqf,GAAIijI,EAAOF,EAAO6gX,EAAYvc,IAClI0X,EAAc/+e,GAAGg5f,QAAQh0f,KAAK,IAAIqpe,GAAK0Q,EAAc/+e,GAAG85f,gBAAgB,GAAGn1e,EAAI0id,EAAOjtE,OAAOtnX,MAAOisc,EAAc/+e,GAAG85f,gBAAgB,GAAGpgf,EAAI2td,EAAOjtE,OAAOrnX,OAAQ,EAAIs0b,EAAOjtE,OAAOtnX,MAAO,EAAIu0b,EAAOjtE,OAAOrnX,cAG7M,IAAK8se,GAA8C,SAAnCx4C,EAAOu1B,mBAAmBr8e,KAAiB,CACvD,IAAK,IAAIhV,EAAIvL,EAAI,EAAGuL,GAAKqvC,EAAYrvC,IACjCmxgB,EAASoD,EAAc/gC,EAAcxze,GAAGowV,OAAQ0pM,EAAav4C,YAAYvhf,GAAI03H,EAAOF,EAAO6gX,EAAYvc,GACvG+9D,EAAgBA,EAAclwgB,OAAO,KAAawnf,EAAO/3f,EAAK,IAAO+3f,EAAOhjgB,EAAK,KAEjFqle,EAAc/+e,EAAI,IAAO++e,EAAc/+e,EAAI,GAAGsgE,WAC5Cu/c,GAAYA,GAAWz8gB,KAAKi8gB,aAAatgC,EAAc/+e,EAAI,GAAI+iI,MACjE05Y,EAASqD,EAAc/gC,EAAc/+e,EAAI,GAAG27V,OAAQ0pM,EAAav4C,YAAY9sf,EAAI,GAAIijI,EAAOF,EAAO6gX,EAAYvc,GAC/G+9D,EAAgBA,EAAclwgB,OAAO,KAAaunf,EAAO93f,EAAK,IAAO83f,EAAO/igB,EAAK,MAErFkhC,EAAa56C,EAAI,EAI7B,GAAmC,eAA/Bqne,EAAOyO,MAAMyC,eAAkCwG,EAAc9+e,OAAS,EAAG,CACzE,IAAIqliB,EAAgBliiB,KAAKk8gB,yBAAyBj4C,EAAOtoZ,QACrD+2Z,EAAQ1ye,KAAK0ye,MAGjBsvD,GAAkB,MADlB1oB,EAASoD,GADTrD,EAAS,CAAE,EAAK6oB,EAAc1jiB,MAAM+5V,OAAQ,EAAK0pM,EAAap7C,UAAUq7C,EAAc1jiB,MAAMgc,SAC9D+G,EAAG83f,EAAO/igB,EAAGupH,EAAOF,EAAO6gX,EAAYvc,IAC/B1id,EAAK,IAAO+3f,EAAOhjgB,EAAK,IACnC,IAAvBtW,KAAK0ye,MAAMx1a,UAAkB2iE,EAAMy7W,YAAc37W,EAAM27W,cACvDt7e,KAAK0ye,MAAMnE,iBAAkB,EAC7ByzD,EAAiC,UAAhB/9D,EAAO94d,KAAmBune,EAAMy9B,kBAAkB4N,uBAAuBl+Y,EAAOmia,GAC7FtvD,EAAM09B,kBAAkB4N,uBAAuBn+Y,EAAOmia,IAGlE,IAAKvlB,GAAYA,GAAWx4C,EAAOzpd,QAAUxa,KAAKmiiB,oBAAoBl+D,EAAOyO,MAAM4c,eAC/E,IAASnnf,EAAIioe,EAAe,EAAGjoe,GAAKqvC,EAAYrvC,IAC5C,IAAIs0gB,GAAY9gC,EAAcxze,GAAG+0D,QAAjC,CAGA,IAAIkle,EAAiBpiiB,KAAKqiiB,kBAAkBp+D,GACG,SAA3Cm+D,EAAe5oC,mBAAmBr8e,MAAoBilhB,EAAezmd,OAAOxzE,GAAGumB,UAC/E4qf,EAASoD,EAAc/gC,EAAcxze,GAAGowV,OAAQ0pM,EAAav4C,YAAYvhf,GAAI03H,EAAOF,EAAO6gX,EAAYvc,GACnGg+D,EAAav4C,YAAYvhf,KAAO85hB,EAAap7C,UAAU1+e,KACvDmxgB,EAAOhjgB,EAAI/O,KAAKC,MAAM8xgB,EAAOhjgB,IAEjC0rhB,EAAgBA,EAAclwgB,QAAS3pB,IAAOioe,EAAe,GAAM2xD,EAAiB,IAAM,KACpF,IAAOzoB,EAAO/3f,EAAK,IAAO+3f,EAAOhjgB,EAAK,MAIxD,IAAIhK,EAAU,IAAIq/d,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAOypd,EAAO40B,SAAU50B,EAAOt7T,OAAOj5H,MAAOu0b,EAAOt7T,OAAOhzF,MAAOsuZ,EAAOtgc,QAASsgc,EAAOuD,UAAWw6D,GAC/KhiiB,KAAK27gB,eAAervgB,EAAS23d,EAAQ,IACrCjke,KAAKo/f,aAAan7B,IAQtB69D,EAAmB5liB,UAAUkhgB,YAAc,SAAUn5B,GACjD,IAAIh6d,EAASg6d,EAAO7jc,UACpBpgC,KAAKo8gB,kBAAkBn4C,EAAQh6d,IAQnC63hB,EAAmB5liB,UAAUif,QAAU,aAQvC2mhB,EAAmB5liB,UAAU2+B,cAAgB,WAIzC,MAAO,sBAKXingB,EAAmB5liB,UAAUmmiB,kBAAoB,SAAUp+D,GAEvD,IADA,IAAI0d,EAAmB1d,EAAOyO,MAAM4c,cAC3B1yf,EAAI,EAAGgQ,EAAW+0e,EAAiB9kf,OAAQD,EAAIgQ,EAAUhQ,IAC9D,GAAIqne,EAAOzpd,QAAUmne,EAAiB/kf,GAAG4d,OAAe,IAAN5d,EAC9C,OAAO+kf,EAAiB/kf,EAAI,GAGpC,OAAO+kf,EAAiB,IAO5BmgD,EAAmB5liB,UAAUimiB,oBAAsB,SAAUxgD,GACzD,IAAK,IAAI3jf,EAAK,EAAG+9f,EAAqBpa,EAAkB3jf,EAAK+9f,EAAmBl/f,OAAQmB,IAAM,CAC1F,IAAIime,EAAS83B,EAAmB/9f,GAChC,GAAIime,EAAO/ma,QACP,OAAO+ma,EAAOzpd,MAGtB,OAAO,GAEJsnhB,EA7I6B,CA8ItCjnB,ICtKEx8e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzC6jgB,GAAgC,SAAUnjgB,GAE1C,SAASmjgB,IACL,OAAkB,OAAXnjgB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2G/D,OA7GAq+B,GAAUikgB,EAAgBnjgB,GAU1BmjgB,EAAepmiB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAC9D,IAAIhC,EACAi9B,EAMArke,EACAmhT,EACAgqM,EAPArliB,EAAQ,KACRqiG,EAAY,GACZo8Y,EAAgB37e,KAAK04f,sBAAsBz0B,GAC3CmM,EAAeuL,EAAc9+e,OAC7Bksa,EAASxha,KAAK8L,IAAI4wd,EAAOtkW,MAAMk1W,aAAazhe,IAAK,GAIjDopgB,EAAY,KAEZ+lB,EADoB,aAApB1ia,EAAMg0W,WAAqD,iBAAzBh0W,EAAM4gX,eAC3B,GAGA,EAEjB,IAAK,IAAI7jf,EAAI,EAAGA,EAAIwze,EAAcxze,IAE9B27V,GADAnhT,EAAQukc,EAAc/+e,IACP27V,OACfnhT,EAAMs/c,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GACZx+c,EAAM8lB,SAAWohb,GAAY3C,EAAc/+e,EAAI,GAAIw6C,EAAOukc,EAAc/+e,EAAI,GAAIqne,KAClE,OAAV/me,IACAA,EAAQ,IAAIkif,GAAc7mJ,EAAQ,GAGlCh5P,GAAc,MADdi/Y,EAAekH,GAASntJ,EAASgqM,EAAYx5H,EAAQlpS,EAAOF,EAAO6gX,IAC3Bj/d,EAAK,IAAOi9d,EAAaloe,EAAK,IAEtEipF,GAAc,MADdi/Y,EAAekH,GAASntJ,EAASgqM,EAAYnrf,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,IACjCj/d,EAAK,IAAOi9d,EAAaloe,EAAK,KAGzD,MAAbkmgB,GACAh+B,EAAekH,GAAStuc,EAAMmhT,OAAQnhT,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,GAClEi7B,EAAc/1B,GAAS82B,EAAUjkL,OAAQikL,EAAUhkL,OAAQ34N,EAAOF,EAAO6gX,GACzEjhZ,GAAc,KACTi/Y,EAAaj9d,EAAK,IAAOk6f,EAAYnlgB,EAD5B,MAC+Ckoe,EAAaj9d,EAAK,IAAOi9d,EAAaloe,EAAK,KAEhE,QAAnC2td,EAAOu1B,mBAAmBr8e,OAE/BoiF,GAAa,MADbi/Y,EAAekH,GAAStuc,EAAMmhT,OAAQnhT,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,IAC3Bj/d,EAAK,IAAOi9d,EAAaloe,EAAK,KAEzEtW,KAAKg8gB,mBAAmB5ke,EAAO6sb,EAAQuc,EAAYkF,IACnD82B,EAAYple,GAEZukc,EAAc/+e,EAAI,KAAO++e,EAAc/+e,EAAI,GAAGsgE,SAA8C,SAAnC+ma,EAAOu1B,mBAAmBr8e,OAGnFoiF,GAAc,MADdi/Y,EAAekH,GAASntJ,EAASgqM,EAAYx5H,EAAQlpS,EAAOF,EAAO6gX,IAC3Bj/d,EAAK,IAAOi9d,EAAaloe,EACjEpZ,EAAQ,KACRs/gB,EAAY,MAGfpsC,EAAe,GAAoB,KAAd7wY,GAGtBA,GAAc,MADdk8a,EAAc/1B,IADdxof,EAAQ,CAAE,EAAKy+e,EAAcvL,EAAe,GAAG73I,OAASgqM,EAAY,EAAK5mD,EAAcvL,EAAe,GAAG53I,SAC5Ej3U,EAAGrkB,EAAMoZ,EAAGupH,EAAOF,EAAO6gX,IAChBj/d,EAAK,IAAOk6f,EAAYnlgB,EAAK,IAGpEipF,GAAc,MADdk8a,EAAc/1B,IADdxof,EAAQ,CAAE,EAAKy+e,EAAcvL,EAAe,GAAG73I,OAASgqM,EAAY,EAAKx5H,IAC5CxnZ,EAAGrkB,EAAMoZ,EAAGupH,EAAOF,EAAO6gX,IAChBj/d,EAAK,IAAOk6f,EAAYnlgB,EAAK,KAGpEipF,EAAY,GAEhB,IAAIjzF,EAAU,IAAIq/d,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAOypd,EAAO40B,SAAU50B,EAAOt7T,OAAOj5H,MAAOu0b,EAAOt7T,OAAOhzF,MAAOsuZ,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,GAC/Kv/F,KAAK27gB,eAAervgB,EAAS23d,EAAQ,IACrCjke,KAAKo/f,aAAan7B,IAQtBq+D,EAAepmiB,UAAUkhgB,YAAc,SAAUn5B,GAC7C,IAAIh6d,EAASg6d,EAAO7jc,UACpBpgC,KAAKo8gB,kBAAkBn4C,EAAQh6d,IAQnCq4hB,EAAepmiB,UAAUif,QAAU,aAQnCmnhB,EAAepmiB,UAAU2+B,cAAgB,WAIrC,MAAO,kBAEJyngB,EA9GyB,CA+GlCznB,ICtIEx8e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzC+jgB,GAAgC,SAAUrjgB,GAE1C,SAASqjgB,IACL,OAAkB,OAAXrjgB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAqF/D,OAvFAq+B,GAAUmkgB,EAAgBrjgB,GAU1BqjgB,EAAetmiB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAC9D,IAGI+hD,EACAlpB,EACAC,EALA/5a,EAAY,GACZ/nD,EAAa,IACbgle,EAAY,KAIZ7gC,EAAgB37e,KAAK04f,sBAAsBz0B,GAE3Cs+D,EADoB,aAApB1ia,EAAMg0W,WAAqD,iBAAzBh0W,EAAM4gX,eAC3B,GAGA,EAEjB,IAAK,IAAIzif,EAAK,EAAGq8gB,EAAkB1+B,EAAe39e,EAAKq8gB,EAAgBx9gB,OAAQmB,IAAM,CACjF,IAAIo5C,EAAQije,EAAgBr8gB,GAC5Bo5C,EAAMs/c,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GACZx+c,EAAM8lB,SAAWohb,GAAY3C,EAAcvkc,EAAM58B,MAAQ,GAAI48B,EAAOukc,EAAcvkc,EAAM58B,MAAQ,GAAIypd,IACnF,MAAbu4C,GACAlD,EAAS5zB,GAAStuc,EAAMmhT,OAAQnhT,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,GAC5D64B,EAAS3zB,GAAS82B,EAAUjkL,OAAQikL,EAAUhkL,OAAQ34N,EAAOF,EAAO6gX,GACpEjhZ,EAAYA,EAAUztE,OAAO0lB,EAAa,IAAO6he,EAAO93f,EAAK,IAAO83f,EAAO/igB,EAA9CkhC,MACxB8he,EAAO/3f,EAAK,IAAO83f,EAAO/igB,EADFkhC,MACqB8he,EAAO/3f,EAAK,IAAO+3f,EAAOhjgB,EAAK,KACjFkhC,EAAa,MAGb6he,EAAS3zB,GAAStuc,EAAMmhT,OAASgqM,EAAYnrf,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,GACzEjhZ,EAAYA,EAAUztE,OAAO0lB,EAAa,IAAO6he,EAAO93f,EAAK,IAAO83f,EAAO/igB,EAAK,KAChFkhC,EAAa,KAEjBx3C,KAAKg8gB,mBAAmB5ke,EAAO6sb,EAAQuc,EAAYkF,IACnD82B,EAAYple,IAGZole,EAA+C,SAAnCv4C,EAAOu1B,mBAAmBr8e,KAAkBq/f,EAAY,KACpEhle,EAAgD,SAAnCysb,EAAOu1B,mBAAmBr8e,KAAkBq6B,EAAa,KAG1Emkc,EAAc9+e,OAAS,IACvBw8gB,EAAS3zB,GAAS/J,EAAcA,EAAc9+e,OAAS,GAAG07V,OAASgqM,EAAY5mD,EAAcA,EAAc9+e,OAAS,GAAG27V,OAAQ34N,EAAOF,EAAO6gX,GAC7IjhZ,EAAYA,EAAUztE,OAAO0lB,EAAa,IAAO6he,EAAO93f,EAAK,IAAO83f,EAAO/igB,EAAK,MAEpF,IAAIgvgB,EAAc,IAAI35C,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAO,cAAeypd,EAAOv0b,MAAOu0b,EAAO40B,SAAU50B,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,GACtKv/F,KAAK27gB,eAAe2J,EAAarhD,EAAQ,IACzCjke,KAAKo/f,aAAan7B,IAQtBu+D,EAAetmiB,UAAUkhgB,YAAc,SAAUn5B,GAC7C,IAAIh6d,EAASg6d,EAAO7jc,UACpBpgC,KAAKo8gB,kBAAkBn4C,EAAQh6d,IAQnCu4hB,EAAetmiB,UAAUif,QAAU,aAQnCqnhB,EAAetmiB,UAAU2+B,cAAgB,WAIrC,MAAO,kBAEJ2ngB,EAxFyB,CAyFlC3nB,IChHEx8e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAwBzCgkgB,GAA8B,SAAUtjgB,GAExC,SAASsjgB,IACL,OAAkB,OAAXtjgB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2F/D,OA7FAq+B,GAAUokgB,EAActjgB,GAUxBsjgB,EAAavmiB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAC5D,IAGI7ka,EAGA6nE,EANAg4X,EAAa,KACbj8a,EAAY,GACZ/nD,EAAa,IAEbymc,EAAiC,cAApBha,EAAO5rX,SAA2B4rX,EAAOtoZ,OAAS37E,KAAK04f,sBAAsBz0B,GAC9FtoZ,EAAS37E,KAAKs/hB,kBAAkBr7D,EAAQga,GAGxC,IADA,IAAIy+B,EAA+C,eAA/Bz4C,EAAOyO,MAAMyC,cAAiCoL,GAAqBmF,GAC9E1nf,EAAK,EAAGm+gB,EAAWxgc,EAAQ39E,EAAKm+gB,EAASt/gB,OAAQmB,IAAM,CAC5D,IAAIo5C,EAAQ+ke,EAASn+gB,GACrBwlJ,EAAWxjJ,KAAKy/hB,iBAAiB9jd,EAAQvkC,EAAM58B,MAAQ,EAAGypd,GAC1D7sb,EAAMs/c,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GACZx+c,EAAM8lB,SAAWohb,GAAY3ia,EAAO6nE,GAAWpsG,EAAOukC,EAAO37E,KAAK2/hB,aAAahkd,EAAQvkC,EAAM58B,MAAQ,EAAGypd,IAAUA,IAC/F,OAAfu3C,IACAj8a,EAAYv/F,KAAK0iiB,mBAAmBz+D,EAAO42B,WAAWr3W,GAAWg4X,EAAYpke,EAAOyoF,EAAOF,EAAO6gX,EAAYvc,EAAQzsb,EAAYkle,EAAen9a,GACjJ/nD,EAAa,KAEjBgke,EAAapke,EACbp3C,KAAKg8gB,mBAAmB5ke,EAAO6sb,EAAQuc,EAAYk8B,KAGnDlle,EAAa,IACbgke,EAAa,KACbpke,EAAMs/c,gBAAkB,IAGhC,GAAK/6a,EAAO9+E,OAAS,GAAKone,EAAO42B,WAAWh+f,OAAS,GAAqC,eAA/Bone,EAAOyO,MAAMyC,eAAkClR,EAAOs0C,SAAU,CACvH,IAAI2pB,EAAgBliiB,KAAKk8gB,yBAAyBvgc,GAClD4jB,EAAYv/F,KAAK0iiB,mBAAmBz+D,EAAO42B,WAAW52B,EAAO42B,WAAWh+f,OAAS,GAAIqliB,EAAcpkb,KAAM,CAAEy6O,OAAQ2pM,EAAc1jiB,MAAM+5V,OAAQC,OAAQ0pM,EAAc1jiB,MAAMg6V,QAAU34N,EAAOF,EAAO6gX,EAAYvc,EAAQzsb,EAAYkle,EAAen9a,GAClP/nD,EAAa,IAEjB,IAAIp9B,EAA2B,cAApB6pd,EAAO5rX,SAA2B4rX,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOsqC,YAAc,cAAgBtqC,EAAOzpd,MAC5Hypd,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAC9ClO,EAAU,IAAIq/d,GAAWvxd,EAAM,cAAe6pd,EAAOv0b,MAAOu0b,EAAO40B,SAAU50B,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,GACnHv/F,KAAK27gB,eAAervgB,EAAS23d,EAAQ,IACrCjke,KAAKo/f,aAAan7B,IAgBtBw+D,EAAavmiB,UAAUwmiB,mBAAqB,SAAU7nhB,EAAM2ggB,EAAYpke,EAAOyoF,EAAOF,EAAO6gX,EAAYvc,EAAQzsb,EAAYkle,EAAen9a,GACxI,IAAI6qZ,EAAgBvve,EAAKuve,cACrBC,EAAgBxve,EAAKwve,cACrBs4C,EAAMjmB,EAAclB,EAAWjjL,OAAQijL,EAAWhjL,OAAQ34N,EAAOF,EAAO6gX,EAAYvc,GACpFk9D,EAAMzkB,EAActle,EAAMmhT,OAAQnhT,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,EAAYvc,GAC1Em9D,EAAO1kB,EAActyB,EAAc7oe,EAAG6oe,EAAc9ze,EAAGupH,EAAOF,EAAO6gX,EAAYvc,GACjFo9D,EAAO3kB,EAAcryB,EAAc9oe,EAAG8oe,EAAc/ze,EAAGupH,EAAOF,EAAO6gX,EAAYvc,GACrF,OAAO1kY,EAAUztE,OAAQ0lB,EAAa,IAAOmrf,EAAIphhB,EAAK,IAAOohhB,EAAIrshB,EAAxCkhC,MAAgE4pf,EAAK7/gB,EAAK,IAC5F6/gB,EAAK9qhB,EAAK,IAAO+qhB,EAAK9/gB,EAAK,IAAO8/gB,EAAK/qhB,EAAK,IAAO6qhB,EAAI5/gB,EAAK,IAAO4/gB,EAAI7qhB,EAAK,MAKvFmshB,EAAavmiB,UAAU2+B,cAAgB,WAInC,MAAO,gBAQX4ngB,EAAavmiB,UAAUif,QAAU,aAK1BsnhB,EA9FuB,CA+FhCtD,ICvHE9ggB,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAuBzCmkgB,GAAwC,SAAUzjgB,GAElD,SAASyjgB,IACL,OAAkB,OAAXzjgB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2F/D,OA7FAq+B,GAAUukgB,EAAwBzjgB,GAUlCyjgB,EAAuB1miB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GACtE,IACIg7B,EAKAqnB,EACAr/Y,EACAs/Y,EARA/iiB,EAAQC,KAERw3C,EAAa,KACb+nD,EAAY,GACZwpU,EAASxha,KAAK8L,IAAI4wd,EAAOtkW,MAAMk1W,aAAazhe,IAAK,GACjD9G,EAAU,GAIV2oP,EAAWj1P,KAAKg9gB,aAAa/4C,EAAQA,EAAOhvO,UAChDgvO,EAAO0X,cAAcl3e,KAAI,SAAU2yC,EAAOx6C,EAAGq+gB,GACzC7je,EAAMs/c,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GAChBktC,GAAW,EACP1rf,EAAM8lB,SAAWohb,GAAY28B,EAAar+gB,EAAI,GAAIw6C,EAAO6je,EAAar+gB,EAAI,GAAIqne,KAC9E1kY,GAAax/F,EAAM68gB,qBAAqBxle,EAAMmhT,OAAQwwE,EAAQk7D,EAAQuc,EAAYkF,GAAUluc,EAAY,KACxGA,EAAaA,GAAc,IAAI4nc,GAAchoc,EAAMmhT,OAAQwwE,GAC3DyyG,EAAa91B,GAAStuc,EAAMmhT,OAAQnhT,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,GAC5Dh9V,GAAYzjJ,EAAM09f,cAAcrmd,EAAOosG,EAAUygV,EAA+B,MAAvBA,EAAOi5C,YAAqBjoR,IACrF6tS,GAAW,EACXD,EAAcn9C,GAASluc,EAAWj2B,EAAGwnZ,EAAQlpS,EAAOF,EAAO6gX,GAC3DjhZ,GAAc,KAAai8a,EAAWj6f,EAAK,IAAOi6f,EAAWllgB,EAAK,IAClEipF,GAAc,KAAai8a,EAAWj6f,EAAK,IAAOshhB,EAAYvshB,EAAK,IACnEvW,EAAMgjiB,mBAAmBz2hB,EAAS23d,EAAQzgV,EAAUjkD,EAAW,UAAYikD,EAAShpI,OACpF+kF,EAAY,KAAai8a,EAAWj6f,EAAK,IAAOshhB,EAAYvshB,EAAhD,MACPklgB,EAAWj6f,EAAK,IAAOi6f,EAAWllgB,EAAK,MAG5CipF,GAAc,KAAai8a,EAAWj6f,EAAK,IAAOi6f,EAAWllgB,EAAK,IAClEvW,EAAM09f,cAAcrmd,EAAO,KAAM6sb,EAA+B,MAAvBA,EAAOi5C,YAAqBjoR,IAErEgmR,EAAar+gB,EAAI,KAAOq+gB,EAAar+gB,EAAI,GAAGsgE,SAA8C,SAAnC+ma,EAAOu1B,mBAAmBr8e,OACjFoiF,GAAax/F,EAAM88gB,sBAAsB,CAAE,EAAKzle,EAAMmhT,OAAQ,EAAKwwE,GAAUvxX,EAAYysb,EAAQuc,EAAYkF,IAC7Gluc,EAAa,MAEjBgsG,EAAWpsG,EACXr3C,EAAMi8gB,mBAAmB5ke,EAAO6sb,EAAQuc,EAAYkF,QAGvDtof,YAAkB0liB,IAAcA,IACjCvjc,EAAY0kY,EAAOtoZ,OAAO9+E,OAAS,EAC9B0iG,EAAYv/F,KAAK48gB,qBAAqBp5X,EAAS+0M,OAAQwwE,EAAQk7D,EAAQuc,EAAYkF,GAAU,KAAM,KAAQ,GAChH1lf,KAAK+iiB,mBAAmBz2hB,EAAS23d,EAAQzgV,EAAUjkD,EAAW,KAElEv/F,KAAKm9gB,iBAAiBl5C,EAAQ33d,EAAS2oP,GACvCj1P,KAAKo/f,aAAan7B,IAKtB2+D,EAAuB1miB,UAAU6miB,mBAAqB,SAAUz2hB,EAAS23d,EAAQ7sb,EAAOmoD,EAAW9lF,GAC/FnN,EAAQ1K,KAAK,IAAI+pe,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAQf,EAAIwqd,EAAOw5B,cAAcrmd,EAAO6sb,EAAO40B,UAAW50B,EAAOt7T,OAAOj5H,MAAOu0b,EAAOt7T,OAAOhzF,MAAOsuZ,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,KAQpNqjc,EAAuB1miB,UAAUif,QAAU,aAQ3CynhB,EAAuB1miB,UAAU2+B,cAAgB,WAI7C,MAAO,0BAQX+ngB,EAAuB1miB,UAAUkhgB,YAAc,SAAUn5B,GACrDjke,KAAKo8gB,kBAAkBn4C,EAAQA,EAAO7jc,YAEnCwigB,EA9FiC,CA+F1CjmB,ICtHEt+e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA4BzCukgB,GAAoC,SAAU7jgB,GAO9C,SAAS6jgB,EAAmBtwD,GACxB,IAAI3ye,EAAQo/B,EAAO79B,KAAKtB,KAAM0ye,IAAU1ye,KAGxC,OAFAD,EAAM8hgB,QAAU9hgB,EAChBA,EAAMkjiB,UAAY,IAAIh4D,GAAK,EAAGyH,EAAMrlc,OAAOrK,IAAK,EAAG,GAC5CjjC,EA8WX,OAxXAs+B,GAAU2kgB,EAAoB7jgB,GAkB9B6jgB,EAAmB9miB,UAAUswgB,iBAAmB,SAAU95B,EAAOzO,GAC7Djke,KAAKsjgB,kBAAoB,GACzB,IAAK,IAAI1mgB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI+pf,EAAa1iB,EAAOrne,GAAGuO,KACR,QAAfw7e,GAAuC,aAAfA,IACxBA,EAAwC,MAA1B1iB,EAAOrne,GAAGykf,aAAiD,OAA1Bpd,EAAOrne,GAAGykf,YACrD,WAAa,OAErB,IAAK,IAAIrjf,EAAK,EAAGuF,EAAK0ge,EAAOrne,GAAG++E,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC1D,IAAIo5C,EAAQ7zC,EAAGvF,GACVZ,YAAkBg6C,EAAM71B,IAAOnkB,YAAkBg6C,EAAM9gC,IACxDtW,KAAKsjgB,kBAAkB1hgB,KAAK,IAAIwmgB,GAAchxd,EAAM71B,EAAEpU,WAAYiqC,EAAMu+B,MAAOsuZ,EAAOrne,GAAGwhhB,YAAahne,EAAM8lB,QAASypb,EAAYvvc,EAAMine,eAAgB,KAAM,KAAMjne,EAAM58B,MAAOypd,EAAOrne,GAAG4d,WAU1MwohB,EAAmB9miB,UAAU4lgB,gBAAkB,SAAUve,EAAeqe,EAAcf,GAClF7ggB,KAAKuigB,qBAAqB1B,EAAQe,GAClC5hgB,KAAKyhgB,UAAUZ,EAAOz5W,MACtB,IAAIm3X,EAAa,EACbD,EAAc,EACd9ze,EAAUq2d,EAAOr2d,QACjB43d,EAAgBvB,EAAOuB,cACvBwc,EAAsB,EACtBrd,EAAavhgB,KAAKuhgB,WAClBC,EAAcX,EAAOyB,YAAc,EAAItigB,KAAKwhgB,YAC3CxhgB,KAAKu0f,WAINgqB,EAAc1d,EAAOnxd,MAA4C,EAAlC6zc,EAAc7zc,MAAQ,IAAO,EAH5D4ue,EAAezd,EAAOlxd,OAA8C,EAAnC4zc,EAAc5zc,OAAS,IAAO,EAKnEiyd,EAAalyd,OAAS6ue,EACtB3c,EAAajyd,QAAU2ue,EACvB,IAQInc,EAEAuc,EAVAza,EAAepD,EAAOoD,aACtB7mF,EAAe,EACf2mF,EAAalD,EAAOkD,WACpB/3E,EAAW,EACXpmO,EAAW,EACXi+N,EAAc,GACd86F,EAAe,EACf7b,EAAc,EAElB9igB,KAAKwigB,cAAgBj7f,KAAK8L,IAAIi3d,GAAY,cAAeu2B,EAAOzyB,WAAWz+b,OAAQkxd,EAAO8C,aAG1F,IADA,IAAIj0e,GAAS,EACJ1xB,EAAK,EAAGuF,EAAKvD,KAAKsjgB,kBAAmBtlgB,EAAKuF,EAAG1G,OAAQmB,IAAM,CAChE,IAAImmgB,EAAe5ggB,EAAGvF,GACtB0ghB,EAAkB,CAAEtiV,KAAM+nU,EAAa/nU,KAAM7pL,KAAM4xf,EAAa5xf,KAAMs6Y,MAAOs3G,EAAat3G,MACtFzyY,KAAM,eAAgB2I,QAAQ,GAClC/iB,KAAK0ye,MAAM3od,QAAQ,eAAgB20f,GACnCva,EAAaz0e,QAAUgvf,EAAgB37f,OACvCohf,EAAa5xf,KAASmsgB,EAAgBnsgB,KAAKpU,QAAQ,MAAQ,EAAK6B,KAAKkjiB,oBAAoBxkB,EAAgBnsgB,MAAQmsgB,EAAgBnsgB,KACjI4xf,EAAa/nU,KAAOsiV,EAAgBtiV,KACpC+nU,EAAat3G,MAAQ6xH,EAAgB7xH,MACrCs3G,EAAaxkG,SAAW2qE,GAAY65B,EAAa5xf,KAAMsuf,EAAOzyB,WAC1D+1B,EAAaz0e,QAAgC,KAAtBy0e,EAAa5xf,OACpCmd,GAAS,EACToze,EAAciB,EAAaE,EAAeE,EAAaxkG,SAASjwX,MAAQlF,EACpExqC,KAAKu0f,YAELoqB,IADE/4T,GAC0B5lN,KAAKwigB,cAAgBh4d,GAAYA,EAAUxqC,KAAKqigB,gBAAgB1yd,OAAS6xd,EAChG57S,GAAY5lN,KAAKwigB,cAAgBh4d,GAAYA,EAAUg3d,EAAcI,EAAajyd,SACnFgve,EAAep3gB,KAAK8L,IAAIsrgB,EAAe/4T,GAAY5lN,KAAKwigB,cAAgBh4d,GAAYA,EAAUg3d,GAC9Fx1E,GAAsB5O,EACtByG,EAAYjib,KAAKw7a,GACjBp9a,KAAKg+b,WAAaz2b,KAAK8L,IAAIuyM,EAAU5lN,KAAKg+b,YAAc,GACxD5gB,EAAe,EACfx3N,EAAW,GAEfw3N,EAAe71a,KAAK8L,IAAIyvf,EAAa1lF,KAGhCyjF,EAAOyB,cACRsc,EAAsB5+gB,KAAKyhgB,SAA6B,QAAlBW,EAA0BpigB,KAAKqigB,gBAAgB3yd,MAAQ1vC,KAAKkhgB,UAAY,EAC9G0d,GAAuBrd,GAE3Bv1E,GAAsB82E,EAClBlB,EAAalyd,MAASlF,EAAUwhZ,EAAW4yF,IAC3CxhG,EAAe71a,KAAK8L,IAAI+pa,EAAe4O,EAAWxhZ,EAAUo0e,EAAsB9b,GACjE,IAAbl9S,GAAmBk9S,IAAgB92E,IACnCpmO,EAAW,GAEfomO,EAAW82E,EAEX6b,IADA/4T,GAC4B5lN,KAAKwigB,cAAgBh4d,GAAYA,EAAUxqC,KAAKqigB,gBAAgB1yd,UAK5Gwyd,EAAgC,QAAlBC,EAA0BpigB,KAAKqigB,gBAAgB1yd,OAAS,EAClE3vC,KAAKu0f,YACLvoE,GAAsB5O,EACtBp9a,KAAKmlU,SAAWy8L,EAAalyd,MAASs8Y,EAAWxhZ,EACjDm0e,EAAep3gB,KAAK8L,IAAIsrgB,GAAgB3+gB,KAAKg+b,YAAc,IAAMh+b,KAAKwigB,cAAgBh4d,GAAYA,EAAUg3d,GAC5GxhgB,KAAKmlU,SAAWnlU,KAAKmlU,UAAanlU,KAAKg+b,WAAa,EAChDna,EAAYA,EAAYhnb,OAAS,KAAOugb,GACxCyG,EAAYjib,KAAKw7a,KAIrBp9a,KAAKmlU,SAAWy8L,EAAajyd,OAASgve,EACtCA,GAAgB9d,EAAOyB,aAAetigB,KAAKmlU,SAAYnlU,KAAKwigB,cAAgBh4d,EAAWA,EAAU23d,EAAcwc,EAC/G3+gB,KAAKg+b,WAAah+b,KAAKmjiB,cAAgBv9U,EACvC+4T,EAAep3gB,KAAK8L,IAAIsrgB,EAAe3+gB,KAAKwigB,cAAgBh4d,EAAWA,EAAU23d,GAC5EnigB,KAAKmlU,WACN6mH,GAAYhsb,KAAKyhgB,SAA6B,QAAlBW,EAA2BpigB,KAAKkhgB,UAAYlhgB,KAAKqigB,gBAAgB3yd,MAAQ1vC,KAAKkhgB,UAAa,IAG/HlhgB,KAAKohgB,WAAa,EAClB,IAAI1xd,EAAQ1vC,KAAKu0f,WAAav0f,KAAKojiB,aAAav/G,EAAa+9E,EAAalyd,MAAOlF,EAASwhZ,EAAWxhZ,GACjGjjC,KAAK8L,IAAI24a,EAAWxhZ,EAAS4yY,GAC7B1tZ,EACA1vB,KAAKkigB,UAAUxyd,EAAOive,EAAc9d,EAAQe,GAG5C5hgB,KAAKkigB,UAAU,EAAG,EAAGrB,EAAQe,IAQrCohC,EAAmB9miB,UAAUgniB,oBAAsB,SAAU/jB,GACzD,IAAI5sgB,EAAOysE,OAAOmgc,GAAYzihB,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,SAAU,KAAKA,QAAQ,SAAU,KAAKA,QAAQ,SAAU,QAAKA,QAAQ,UAAW,QAAKA,QAAQ,QAAS,QAAKA,QAAQ,SAAU,UAAKA,QAAQ,SAAU,QAAKA,QAAQ,QAAS,QAEhR,OADA6V,EAAOysE,OAAOzsE,GAAM7V,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,SAAU,KAAKA,QAAQ,SAAU,QAAKA,QAAQ,SAAU,QAAKA,QAAQ,SAAU,QAAKA,QAAQ,UAAW,UAAKA,QAAQ,SAAU,QAAKA,QAAQ,SAAU,SAQ7QsmiB,EAAmB9miB,UAAUkniB,aAAe,SAAUrpe,EAASrqB,EAAOlF,EAASwhZ,GAC3E,IAAIq3G,EAAgB74f,EACpBxqC,KAAKsjiB,eAAiB/7hB,KAAK8L,IAAIjX,MAAM,KAAM29D,GAC3C,IAAK,IAAI/7D,EAAK,EAAG28I,EAAY5gF,EAAS/7D,EAAK28I,EAAU99I,OAAQmB,IAAM,CAClD28I,EAAU38I,GAGvB,GAFAqliB,GAAiBrjiB,KAAKsjiB,eACtBtjiB,KAAKohgB,aACDiiC,EAAgB74f,EAAUkF,EAAO,CACjC2zf,GAAiBrjiB,KAAKsjiB,eACtBtjiB,KAAKohgB,aACL,OASR,OANAphgB,KAAKmlU,SAAYk+N,EAAgBr3G,GAAchsb,KAAKg+b,WAAa,EAC7DqlG,IAAkB74f,IAClB64f,EAAgB3zf,GAEpB1vC,KAAKohgB,WAAa75f,KAAK8L,IAAI,EAAGrT,KAAKohgB,YACnCphgB,KAAK06I,SAAW2oZ,EACTA,GAOXL,EAAmB9miB,UAAUqniB,cAAgB,SAAU1U,EAAIn/e,GAIvD,OAHI1vC,KAAKu0f,aACL7kd,EAAQ1vC,KAAK06I,UAEVhrG,GAAgC,EAAtB1vC,KAAK6ggB,OAAOr2d,QAAexqC,KAAK6ggB,OAAOkD,WAAa/jgB,KAAK6ggB,OAAOoD,eAOrF++B,EAAmB9miB,UAAUmogB,eAAiB,SAAUF,EAAcjngB,EAAOk0f,EAAaytB,EAAY3ue,EAAM4qB,EAAOsoc,GAC/G,IAAI54d,EAAUxqC,KAAK6ggB,OAAOr2d,QAC1B,GAAIxqC,KAAKu0f,WACDz5b,IAAUsoc,GAAgByb,EAAW71e,SAAS1yB,EAA0B,IAArBtW,KAAKwigB,cAAkC,EAAVh4d,EAAe0F,EAAK55B,EAAI45B,EAAKP,QAC7Gw0d,EAAan7d,SAASznB,EAAIs9f,EAAW71e,SAASznB,GAAMu5C,IAAUsoc,EAAe,EAAIpjgB,KAAKsjiB,gBACtFn/B,EAAan7d,SAAS1yB,EAAIpZ,EAAMoZ,EAChCtW,KAAKyggB,iBAAiB7+f,KAAKuigB,EAAan7d,SAASznB,EAAKvhB,KAAK6ggB,OAAOkD,WAAa,EAAKv5d,GACpFxqC,KAAKg+b,eAGLmmE,EAAan7d,SAASznB,EAAIs9f,EAAW71e,SAASznB,EAC9C4if,EAAan7d,SAAS1yB,EAAIuogB,EAAW71e,SAAS1yB,EAAItW,KAAKwigB,cAAgBh4d,OAG1E,CACD,IAAIs0e,EAAiBD,EAAW71e,SAASznB,EAAI6ve,EAAcytB,EAAWl/G,SAASjwX,MAC1Eove,GAAiB3a,EAAaxkG,SAASjwX,MAAQ0hd,GAAiBlhd,EAAK3uB,EAAI2uB,EAAKR,MAAQ1vC,KAAK6ggB,OAAOkD,WAAa,GAChHI,EAAan7d,SAAS1yB,EAAKwkD,IAAUsoc,EAAeyb,EAAW71e,SAAS1yB,EACpEuogB,EAAW71e,SAAS1yB,EAAItW,KAAKwigB,cAAgBh4d,EACjD25d,EAAan7d,SAASznB,EAAIrkB,EAAMqkB,IAGhC4if,EAAan7d,SAAS1yB,EAAIuogB,EAAW71e,SAAS1yB,EAC9C6tf,EAAan7d,SAASznB,EAAKu5C,IAAUsoc,EAAeyb,EAAW71e,SAASznB,EAAIu9f,GAEhF9+gB,KAAKg+b,WAAah+b,KAAKmjiB,cAE3B,IAAIK,EAAiBxjiB,KAAKujiB,cAAcp/B,EAAan7d,SAASznB,EAAGvhB,KAAK4hgB,aAAalyd,OACnFy0d,EAAa5xf,KAAO+we,IAAUkgD,EAAe3vhB,QAAQ,GAAIswf,EAAa5xf,KAAMvS,KAAK6ggB,OAAOzyB,YAQ5F40D,EAAmB9miB,UAAUmgiB,uBAAyB,SAAU1G,EAAY8N,EAAap2f,GACrF,IAAI6vH,EACJ,OAAQl9J,KAAK+tC,UACT,IAAK,OACDmvH,GAAUy4X,EAAWp0gB,EAAIkihB,EAAY/zf,MAASrC,EAAOvK,MAAQ,EAC7D2ggB,EAAYlihB,EAAKo0gB,EAAWp0gB,EAAIkihB,EAAY/zf,MAASrC,EAAOvK,KAAO2ggB,EAAYlihB,EAC1Eo0gB,EAAWp0gB,EAAIkihB,EAAY/zf,MAASwtH,EACzC,MACJ,IAAK,QACDA,GAAUl9J,KAAK0ye,MAAM6Q,cAAc7zc,MAAQrC,EAAOtK,OAAU4yf,EAAWp0gB,EAAIo0gB,EAAWjmf,MAAQ+zf,EAAY/zf,QAAU,EACpH+zf,EAAYlihB,EAAKo0gB,EAAWp0gB,EAAIo0gB,EAAWjmf,MAAQ+zf,EAAY/zf,MAAU1vC,KAAK0ye,MAAM6Q,cAAc7zc,MAAQrC,EAAOtK,MAC7G0ggB,EAAYlihB,EAAKo0gB,EAAWp0gB,EAAIo0gB,EAAWjmf,MAAQwtH,EACvD,MACJ,IAAK,MACDl9J,KAAK0jiB,aAAa1jiB,KAAK0ye,OACvBx1U,GAAUy4X,EAAWr/gB,EAAImthB,EAAY9zf,QAAW3vC,KAAKijiB,UAAU3shB,EAAItW,KAAKijiB,UAAUtzf,SAAW,EAC7F8zf,EAAYnthB,EAAKq/gB,EAAWr/gB,EAAImthB,EAAY9zf,OAAUtC,EAAOrK,IAAMyggB,EAAYnthB,EAC1Eq/gB,EAAWr/gB,EAAImthB,EAAY9zf,OAAUutH,EAC1C,MACJ,IAAK,SACDA,GAAUl9J,KAAK0ye,MAAM6Q,cAAc5zc,OAAStC,EAAOpK,QAAW0yf,EAAWr/gB,EAAIq/gB,EAAWhmf,OAAS8zf,EAAY9zf,SAAW,EACxH8zf,EAAYnthB,EAAIq/gB,EAAWr/gB,EAAIq/gB,EAAWhmf,OAAS8zf,EAAY9zf,OAAU3vC,KAAK0ye,MAAM6Q,cAAc5zc,OAAStC,EAAOpK,OAC9GwggB,EAAYnthB,EAAKq/gB,EAAWr/gB,EAAIq/gB,EAAWhmf,OAAUutH,IASrE8lY,EAAmB9miB,UAAUwniB,aAAe,SAAUzhC,GAClD,IAAKA,EAAa76W,MACd,OAAO,KAEX,IAAIgzV,EAAY9P,GAAY23B,EAAa76W,MAAO66W,EAAarnB,YAC7D56e,KAAKijiB,UAAY,IAAIh4D,GAAKg3B,EAAa1e,cAAc7zc,MAAQ,EAAI0qc,EAAU1qc,MAAQ,EAAGuyd,EAAa50d,OAAOrK,IAAKo3c,EAAU1qc,MAAO0qc,EAAUzqc,SAO9Iqzf,EAAmB9miB,UAAUyniB,cAAgB,SAAUnphB,EAAO8of,GAC1D,IAAK,IAAItlgB,EAAK,EAAG4liB,EAAsBtgC,EAAmBtlgB,EAAK4liB,EAAoB/miB,OAAQmB,IAAM,CAC7F,IAAI6igB,EAAS+iC,EAAoB5liB,GACjC,GAAI6igB,EAAO78B,aAAexpd,EACtB,OAAOqmf,EAGf,OAAO,MAOXmiC,EAAmB9miB,UAAUu0D,MAAQ,SAAU3pC,GAC3C,IAAIohf,EAAWphf,EAAMmW,OAAOxjB,GACxBi5d,EAAQ1ye,KAAK0ye,MACbmxD,EAAgB,CAAC7jiB,KAAK+ggB,SAAW,SAAU/ggB,KAAK+ggB,SAAW,UAAW/ggB,KAAK+ggB,SAAW,kBAC1F,GAAI/ggB,KAAK0ye,MAAM4tC,4BACehihB,YAAO,GAAI0B,KAAK0ye,MAAM4tC,4BAA4BjR,oBAAqB,MAAM,GAE3GrvgB,KAAK0ye,MAAMyqB,eAAgB,EAC3B,IAAK,IAAIn/f,EAAK,EAAG2hhB,EAAkBkkB,EAAe7liB,EAAK2hhB,EAAgB9ihB,OAAQmB,IAAM,CACjF,IAAIyb,EAAKkmgB,EAAgB3hhB,GACzB,GAAIkqgB,EAAS/pgB,QAAQsb,IAAO,EAAG,CAC3B,IAAIuqd,EAAa7td,SAAS+xf,EAASvrgB,MAAM8c,GAAI,GAAI,IACjD,GAAIzZ,KAAK0ye,MAAMouB,eAAeyD,mBAAqBn4f,MAAM43d,GAAa,CAClE,IAAI+2D,EAAgB/6hB,KAAK0ye,MAAM4c,cAAc,GACzCl4c,EAAQu/e,GAAa3yD,EAAY+2D,EAAcp/c,QAC/Cwob,EAAenkgB,KAAK2jiB,cAAc3/D,EAAYhke,KAAKsjgB,mBACvDlsd,EAAM8lB,SAAW9lB,EAAM8lB,QACvBinc,EAAajnc,QAAU9lB,EAAM8lB,QAC7B69d,EAAclH,aAAez8e,EAAM8lB,QAAU9lB,EAAM9gC,GAAK8gC,EAAM9gC,EAC9Do8d,EAAMwK,OAASxK,EAAMnE,gBACrBvue,KAAK8jiB,gBAAgB9/D,EAAY5sb,EAAM8lB,SACvCw1a,EAAMg/B,YAENloB,GAAqB9W,GACrB1ye,KAAK0ye,MAAM4oD,cAAcP,EAAcp/c,QACvC37E,KAAK0ye,MAAMm6B,sBAEN7sgB,KAAK0ye,MAAM4tC,8BAAgCl0gB,MAAM43d,IACtDhke,KAAK0ye,MAAM4tC,4BAA4BhB,gBAAgBt/gB,KAAK0ye,MAAO,EAAG1O,IAI9EkkC,EAAS/pgB,QAAQ6B,KAAK+ggB,SAAW,YAAc,EAC/C/ggB,KAAK2ngB,WAAW7gf,GAAO,GAElBohf,EAAS/pgB,QAAQ6B,KAAK+ggB,SAAW,cAAgB,GACtD/ggB,KAAK2ngB,WAAW7gf,GAAO,GAE3B4rd,EAAMwK,QAAS,GAKnB8lD,EAAmB9miB,UAAU4niB,gBAAkB,SAAUtphB,EAAO+b,GAC5D,IAAIwhgB,EAAU/3hB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,mBAClCzZ,KAAK0ye,MAAM4c,cAAc,GAAG1K,UAAU1nb,UACtC66d,EAAU/3hB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,uBAClCzZ,KAAK+jiB,aAAalhiB,GAAWk1hB,EAAU,KAAOv9gB,GAAQ+b,KAU9DysgB,EAAmB9miB,UAAU6niB,aAAe,SAAU/iiB,EAASu1B,GAC3D,IAAKv1B,EACD,OAAO,KAEX,IAAIk+B,IAAU,IAAIY,QAAQ9+B,EAAS,CAC/B8/B,SAAU,IACVjhC,MAAO,EACPua,KAAMmc,EAAY,SAAW,UAC7B5d,IAAK,SAAU1Y,GACXA,EAAKe,QAAQgzB,MAAMwC,WAAaD,EAAY,UAAY,aASpEysgB,EAAmB9miB,UAAU2+B,cAAgB,WACzC,MAAO,sBAQXmogB,EAAmB9miB,UAAUif,QAAU,aAKhC6nhB,EAzX6B,CA0XtCxiC,ICtZEnie,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA4BzCulgB,GAAqC,SAAU7kgB,GAE/C,SAAS6kgB,EAAoB/hC,GACzB,IAAIligB,EAAQo/B,EAAO79B,KAAKtB,KAAMiigB,IAAiBjigB,KAG/C,OAFAD,EAAMkigB,aAAeA,EACrBligB,EAAMwpB,mBACCxpB,EA6JX,OAlKAs+B,GAAU2lgB,EAAqB7kgB,GAU/B6kgB,EAAoB9niB,UAAUqtB,iBAAmB,WACzCvpB,KAAKiigB,aAAa9oe,cAGtBn5B,KAAKiigB,aAAa3of,GAAG+M,IAAQW,UAAY,eAAiB,aAAchnB,KAAKgihB,kBAAmBhihB,MAChGA,KAAKiigB,aAAa3of,GAAG+M,IAAQoC,eAAgBzoB,KAAK6pT,iBAAkB7pT,MACpEA,KAAKiigB,aAAa3of,GAAG+M,IAAQqC,cAAe1oB,KAAK89f,eAAgB99f,QAErEgkiB,EAAoB9niB,UAAU8lhB,kBAAoB,SAAUnhhB,GACxDb,KAAK6hhB,cAAc7hhB,KAAKiigB,aAAa7vZ,QAAQ6va,kBAEjD+hB,EAAoB9niB,UAAU4hgB,eAAiB,SAAUj9f,GACrD,IAAIovE,EAAUjwE,KAAKiigB,aACfhyb,EAAQmiC,QAAQoiC,QAAUvkE,EAAQhpD,SAAWs6d,GAAatxa,EAAQ6kb,OAAQ7kb,EAAQ8kb,OAAQ9kb,EAAQ+sa,mBAClGh9e,KAAKoyG,QAAQvxG,GACbb,KAAK6hhB,cAAc,OAG3BmiB,EAAoB9niB,UAAU2tT,iBAAmB,SAAUhpT,GACvD,IAAIovE,EAAUjwE,KAAKiigB,aAEfhyb,EAAQmiC,QAAQoiC,QAAU+sW,GAAatxa,EAAQ6kb,OAAQ7kb,EAAQ8kb,OAAQ9kb,EAAQ+sa,kBAC/Eh9e,KAAKoyG,QAAQvxG,IAQrBmjiB,EAAoB9niB,UAAUk2G,QAAU,SAAUtrF,GAC9C,IAAI4nf,EAAa1ugB,KAAK6C,WAAW7C,KAAKgB,QAAQyY,GAAK,gBAC/CwmgB,EAAYvR,GAAcv4f,SAASu4f,EAAWv/e,aAAa,WAAY,IAAM,EAC7Ey+c,EAAa5te,KAAKgghB,kBAAkBC,GACxCjghB,KAAKsihB,oBAAoBx7f,EAAO9mB,KAAKiigB,cAAege,EAAWryC,IAEnEo2D,EAAoB9niB,UAAUomhB,oBAAsB,SAAUzhhB,EAAG6xe,EAAOjuQ,EAASmpQ,GAC7E,IAAI/yd,EAAO7a,KAAKikiB,WAAWpjiB,EAAG6xe,EAAOA,EAAMoiB,OAAQpiB,EAAMqiB,QAC9CriB,EAAMsK,gBAEjB,GADAh9e,KAAK20f,cAAgB,IACjB95e,EAAKu8B,OAAWp3C,KAAK40f,eAAe,IAAO50f,KAAK40f,eAAe,GAAGx9c,QAAUv8B,EAAKu8B,OAU5Ev8B,EAAKu8B,OAASp3C,KAAKwrI,WACpBxrI,KAAK6hhB,cAAc7hhB,KAAKiigB,aAAa7vZ,QAAQ6va,iBAC7CjihB,KAAKwrI,UAAW,OAZsE,CAC1F,GAAIxrI,KAAK40f,eAAe,IAAM/5e,EAAKu8B,MAAM58B,QAAUxa,KAAK40f,eAAe,GAAGx9c,MAAM58B,OACzEK,EAAKopd,OAAOzpd,QAAUxa,KAAK40f,eAAe,GAAG3wB,OAAOzpd,MACvD,OAAO,KAEPxa,KAAKo4f,SAASv9e,EAAM4pN,EAASmpQ,GAAY,IACzC5te,KAAK6ihB,qBAAqBhogB,EAAM4pN,EAASzkO,KAAK8ihB,eAAejogB,EAAM63d,EAAMtgY,SAAUpyG,KAAKuihB,WAAW1ngB,MAU/GmphB,EAAoB9niB,UAAU2mhB,qBAAuB,SAAUzre,EAAOqtL,EAASyqQ,EAAgBnya,EAAYmne,GACvG,IAAInkiB,EAAQC,UACM,IAAdkkiB,IAAwBA,GAAY,GAExC,IAAIn3D,EAAW,CACXhqd,QAAQ,EAAO3I,KAAM+8d,GAAe5ke,KAAM28d,EAAgB93b,MAAOA,EAAMA,MAAOg3b,UAAWpue,KAAKoue,UAC9FnK,OAAQjke,KAAKiigB,aAAa3igB,SAAW,GAAK83C,EAAM6sb,OAAQlna,WAAYA,EACpEliD,KAAM,CAAEkhe,OAAQ3kc,EAAMA,MAAM71B,EAAGuue,OAAQ14c,EAAMA,MAAM9gC,EAAGytd,YAAa3sb,EAAM6sb,OAAOzpd,MAC5Ewpd,WAAY5sb,EAAMA,MAAM58B,MAAOwogB,UAAW5re,EAAMA,MAAM7kC,KAAMq+f,WAAYx5d,EAAM6sb,OAAO7pd,OAEzF+phB,EAAiB,SAAUp3D,GACtBA,EAAShqd,QAOVhjB,EAAMoghB,kBACN12f,aAAO1pB,EAAM8C,WAAW9C,EAAMiB,QAAQyY,GAAK,eAP3C1Z,EAAM24E,cAAgB34E,EAAM24E,cAAc5mD,OAAOi7c,EAASx6d,MAC1DxS,EAAMwS,KAAOxS,EAAM24E,cACnB34E,EAAMg9D,WAAagwa,EAAShwa,WAC5Bh9D,EAAMspT,cAActpT,EAAM2ye,MAAOjuQ,EAASrtL,EAAMA,MAAMm6b,eAAgBn6b,EAAM6sb,OAAOj7D,SAAU5xX,EAAMA,MAAO,CAAC,UAAW,EAAGr3C,EAAM2ye,MAAMsK,gBAAiB,KAAM5lc,EAAMA,MAAOr3C,EAAMkigB,aAAa7vZ,QAAQ9mF,SAAWyhd,EAASzhd,SAAW,KAMvOvrB,EAAMyrI,UAAW,GAErB24Z,EAAehoiB,KAAK6D,KAAMo3C,GAC1Bp3C,KAAK0ye,MAAM3od,QAAQotd,GAAepK,EAAUo3D,IAEhDH,EAAoB9niB,UAAU+niB,WAAa,SAAUpjiB,EAAG6xe,EAAOnxd,EAAGjL,GAC9D,IACImD,EAAKqne,GADIjgf,EAAEo8B,OACaxjB,IAAI,GAChC,IAAKrN,MAAMqN,EAAGwqd,QAAS,CACnB,IAAIF,EAActqd,EAAGwqd,OACjBD,EAAavqd,EAAG29B,MACpB,IAAKh6C,YAAkB2me,KAAiB33d,MAAM23d,KAAiB3me,YAAkB4me,KAAgB53d,MAAM43d,GAAa,CAChH,IAAIC,EAASjke,KAAKokiB,mBAAmBrgE,EAAa2O,EAAM4c,eACxD,GAAIrrB,EAAOs6B,cACP,OAAO,IAAIrU,GAAajmB,EAAOtoZ,OAAOqoZ,GAAaC,IAI/D,OAAO,IAAIimB,GAAa,KAAM,OAKlC85C,EAAoB9niB,UAAUkoiB,mBAAqB,SAAU5phB,EAAO80e,GAChE,OAAOA,EAAc,IAEzB00C,EAAoB9niB,UAAU4mhB,eAAiB,SAAUjogB,EAAMu3F,GAC3D,IAAI6xX,EAASppd,EAAKopd,OACdj5d,EAAShL,KAAKiigB,aAAa/rB,qBAAuB,0CAChD,iCAEN,OADAlre,EAASonG,EAAQpnG,OAASonG,EAAQpnG,OAASA,EACpChL,KAAKwihB,cAAc3ngB,EAAKu8B,MAAO6sb,EAAQj5d,IAElDg5hB,EAAoB9niB,UAAUqmhB,WAAa,SAAU1ngB,GACjD,MAAoB,KAAhB7a,KAAK+kB,OACE,IAEX/kB,KAAK+kB,OAAS/kB,KAAKwihB,cAAc3ngB,EAAKu8B,MAAOv8B,EAAKopd,OAAQjke,KAAK+kB,QACM,KAAjE/kB,KAAK+kB,OAAOroB,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAI2vB,OAC/CrsB,KAAK+kB,OAET,KAEXi/gB,EAAoB9niB,UAAUsmhB,cAAgB,SAAUpre,EAAO6sb,EAAQj5d,GAGnE,IAFA,IAAIxO,EACAwvY,EACKhuY,EAAK,EAAGuF,EAAKrF,OAAOjB,KAAKm6C,GAAQp5C,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC5D,IAAIkmK,EAAY3gK,EAAGvF,GACnBxB,EAAQ,IAAIoI,OAAO,WAAkBs/J,EAAY,IAAK,MACtDl5J,EAASA,EAAOtO,QAAQF,EAAMoB,OAAQw5C,EAAM8sH,IAEhD,IAAK,IAAInvI,EAAK,EAAGI,EAAKj3B,OAAOjB,KAAKiB,OAAOsnE,eAAey+Z,IAAUlvc,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAChFmvI,EAAY/uI,EAAGJ,GACnBv4B,EAAQ,IAAIoI,OAAO,YAAmBs/J,EAAY,IAAK,MACvD8nO,EAAYi4F,EAAO//T,GACnBl5J,EAASA,EAAOtO,QAAQF,EAAMoB,OAAQouY,GAE1C,OAAOhhY,GAKXg5hB,EAAoB9niB,UAAU2+B,cAAgB,WAC1C,MAAO,uBAOXmpgB,EAAoB9niB,UAAUif,QAAU,SAAUu3d,KAK3CsxD,EAnK8B,CAoKvCjkB,IChME1hf,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAqBzC4lgB,GAAsC,SAAUllgB,GAEhD,SAASklgB,IACL,OAAkB,OAAXllgB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAwD/D,OA1DAq+B,GAAUgmgB,EAAsBllgB,GAUhCklgB,EAAqBnoiB,UAAUwzB,OAAS,SAAUu0c,GAC9CA,EAAO+wB,cAAe,EAMtB,IALA,IACI9kd,EACA68b,EAFA4tC,EAAiB36gB,KAAK84gB,kBAAkB70C,GAGxCqgE,EAAergE,EAAO2iB,cACtBjL,EAAgBoC,GAAiB9Z,GAC5Bjme,EAAK,EAAGq8gB,EAAkB1+B,EAAe39e,EAAKq8gB,EAAgBx9gB,OAAQmB,IAAM,CACjF,IAAIo5C,EAAQije,EAAgBr8gB,GAC5Bo5C,EAAMs/c,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GACZx+c,EAAM8lB,SAAWohb,GAAY3C,EAAcvkc,EAAM58B,MAAQ,GAAI48B,EAAOukc,EAAcvkc,EAAM58B,MAAQ,GAAIypd,KACpG/zb,EAAOlwC,KAAKo5gB,aAAahie,EAAMmhT,OAASoiL,EAAez9gB,MAAOoniB,EAAaz9C,UAAUzvc,EAAM58B,OAAQ48B,EAAMmhT,OAASoiL,EAAehigB,IAAK2rhB,EAAa56C,YAAYtyc,EAAM58B,OAAQypd,IAC7K8I,EAAW/se,KAAK+5gB,aAAa91C,EAAQ7sb,EAAO6sb,EAAO40B,SAAU,CAAEnpd,MAAOu0b,EAAOt7T,OAAOj5H,MAAOimC,MAAOsuZ,EAAOt7T,OAAOhzF,SAClG5yD,SACV/iB,KAAKq+Z,cAAc4lE,EAAQ7sb,EAAOlH,EAAM68b,GACxC/se,KAAKy5gB,qBAAqBrie,EAAOlH,EAAM+zb,KAInDjke,KAAKo/f,aAAan7B,IAQtBogE,EAAqBnoiB,UAAUkhgB,YAAc,SAAUn5B,GACnDjke,KAAK8/B,QAAQmkc,IAQjBogE,EAAqBnoiB,UAAUif,QAAU,aAQzCkphB,EAAqBnoiB,UAAU2+B,cAAgB,WAC3C,MAAO,wBAEJwpgB,EA3D+B,CA4DxCxrB,ICjFEx6e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAoBzC8lgB,GAAmC,SAAUplgB,GAE7C,SAASolgB,IACL,OAAkB,OAAXplgB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAyD/D,OA3DAq+B,GAAUkmgB,EAAmBplgB,GAU7BolgB,EAAkBroiB,UAAUwzB,OAAS,SAAUu0c,GAK3C,IAJA,IAAI/zb,EAGA68b,EAFA4tC,EAAiB36gB,KAAK84gB,kBAAkB70C,GAGnCjme,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIwmiB,EAAajhiB,EAAGvF,GACpBwmiB,EAAW9tC,gBAAkB,GAC7B8tC,EAAW5uC,QAAU,GACjB4uC,EAAWtne,SAAWohb,GAAYra,EAAOtoZ,OAAO6od,EAAWhqhB,MAAQ,GAAIgqhB,EAAYvgE,EAAOtoZ,OAAO6od,EAAWhqhB,MAAQ,GAAIypd,KACxH/zb,EAAOlwC,KAAKo5gB,aAAaorB,EAAWjsM,OAASoiL,EAAez9gB,MAAOsniB,EAAWv6W,KAAMu6W,EAAWjsM,OAASoiL,EAAehigB,IAAK6rhB,EAAWx6W,IAAKi6S,IAC5I8I,EAAW/se,KAAK+5gB,aAAa91C,EAAQugE,EAAYvgE,EAAO40B,SAAU,CAAEnpd,MAAOu0b,EAAOt7T,OAAOj5H,MAAOimC,MAAOsuZ,EAAOt7T,OAAOhzF,SACvG5yD,SACV/iB,KAAKy5gB,qBAAqB+qB,EAAYt0f,EAAM+zb,GAC5Cjke,KAAKq+Z,cAAc4lE,EAAQugE,EAAYt0f,EAAM68b,KAIzD/se,KAAKo/f,aAAan7B,IAKtBsgE,EAAkBroiB,UAAU2+B,cAAgB,WACxC,MAAO,qBAWX0pgB,EAAkBroiB,UAAUkhgB,YAAc,SAAUn5B,GAChDjke,KAAK8/B,QAAQmkc,IAQjBsgE,EAAkBroiB,UAAUif,QAAU,aAK/BophB,EA5D4B,CA6DrC1rB,ICjFEx6e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAoBzCgmgB,GAA2B,SAAUtlgB,GAErC,SAASslgB,IACL,OAAkB,OAAXtlgB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAsD/D,OAxDAq+B,GAAUomgB,EAAWtlgB,GAUrBslgB,EAAUvoiB,UAAUwzB,OAAS,SAAUu0c,GAKnC,IAJA,IAEI/zb,EACA68b,EAHAhkE,EAASxha,KAAK8L,IAAI4wd,EAAOtkW,MAAMk1W,aAAazhe,IAAK,GACjDungB,EAAiB36gB,KAAK84gB,kBAAkB70C,GAGnCjme,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAI0miB,EAAWnhiB,EAAGvF,GAClB0miB,EAAShuC,gBAAkB,GAC3BguC,EAAS9uC,QAAU,GACf8uC,EAASxne,SAAWohb,GAAYra,EAAOtoZ,OAAO+od,EAASlqhB,MAAQ,GAAIkqhB,EAAUzgE,EAAOtoZ,OAAO+od,EAASlqhB,MAAQ,GAAIypd,KAChH/zb,EAAOlwC,KAAKo5gB,aAAasrB,EAASnsM,OAASoiL,EAAez9gB,MAAOwniB,EAASlsM,OAAQksM,EAASnsM,OAASoiL,EAAehigB,IAAKowZ,EAAQk7D,IAChI8I,EAAW/se,KAAK+5gB,aAAa91C,EAAQygE,EAAUzgE,EAAO40B,SAAU,CAAEnpd,MAAOu0b,EAAOt7T,OAAOj5H,MAAOimC,MAAOsuZ,EAAOt7T,OAAOhzF,SACrG5yD,SACV/iB,KAAKy5gB,qBAAqBirB,EAAUx0f,EAAM+zb,GAC1Cjke,KAAKq+Z,cAAc4lE,EAAQygE,EAAUx0f,EAAM68b,KAIvD/se,KAAKo/f,aAAan7B,IAQtBwgE,EAAUvoiB,UAAUkhgB,YAAc,SAAUn5B,GACxCjke,KAAK8/B,QAAQmkc,IAQjBwgE,EAAUvoiB,UAAUif,QAAU,aAQ9BsphB,EAAUvoiB,UAAU2+B,cAAgB,WAChC,MAAO,aAEJ4pgB,EAzDoB,CA0D7B5rB,IC9EEx6e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAsBzCkmgB,GAAmC,SAAUxlgB,GAE7C,SAASwlgB,IACL,OAAkB,OAAXxlgB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuD/D,OAzDAq+B,GAAUsmgB,EAAmBxlgB,GAU7BwlgB,EAAkBzoiB,UAAUwzB,OAAS,SAAUu0c,GAK3C,IAJA,IAEI/zb,EACA68b,EAHA4tC,EAAiB36gB,KAAK84gB,kBAAkB70C,GACxCqgE,EAAergE,EAAO2iB,cAGjB5of,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAI4miB,EAAarhiB,EAAGvF,GACpB4miB,EAAWluC,gBAAkB,GAC7BkuC,EAAWhvC,QAAU,GACjBgvC,EAAW1ne,SACXohb,GAAYra,EAAOtoZ,OAAOipd,EAAWpqhB,MAAQ,GAAIoqhB,EAAY3gE,EAAOtoZ,OAAOipd,EAAWpqhB,MAAQ,GAAIypd,KAClG/zb,EAAOlwC,KAAKo5gB,aAAawrB,EAAWrsM,OAASoiL,EAAez9gB,MAAOoniB,EAAaz9C,UAAU+9C,EAAWpqhB,OAAQoqhB,EAAWrsM,OAASoiL,EAAehigB,IAAK2rhB,EAAa56C,YAAYk7C,EAAWpqhB,OAAQypd,IACjM8I,EAAW/se,KAAK+5gB,aAAa91C,EAAQ2gE,EAAY3gE,EAAO40B,SAAU,CAAEnpd,MAAOu0b,EAAOt7T,OAAOj5H,MAAOimC,MAAOsuZ,EAAOt7T,OAAOhzF,SACvG5yD,SACV/iB,KAAKq+Z,cAAc4lE,EAAQ2gE,EAAY10f,EAAM68b,GAC7C/se,KAAKy5gB,qBAAqBmrB,EAAY10f,EAAM+zb,KAIxDjke,KAAKo/f,aAAan7B,IAQtB0gE,EAAkBzoiB,UAAUif,QAAU,aAQtCwphB,EAAkBzoiB,UAAU2+B,cAAgB,WACxC,MAAO,qBAQX8pgB,EAAkBzoiB,UAAUkhgB,YAAc,SAAUn5B,GAChDjke,KAAK8/B,QAAQmkc,IAEV0gE,EA1D4B,CA2DrC9rB,ICrEEgsB,GAA+B,WAC/B,SAASA,KAqJT,OA7IAA,EAAc3oiB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAE7Dvc,EAAO+wB,cAAe,EAOtB,IANA,IAEIjoB,EAEA9sD,EAJAjpB,EAASitE,EAAOjtE,OAChB2kF,EAAgB37e,KAAK04f,sBAAsBz0B,GAE3Cy4C,EAA+C,eAA/Bz4C,EAAOyO,MAAMyC,cAAiCoL,GAAqBmF,GAEnFxI,EAASjZ,EAAOyO,MAAMwK,OACjBl/e,EAAK,EAAGq8gB,EAAkB1+B,EAAe39e,EAAKq8gB,EAAgBx9gB,OAAQmB,IAAM,CACjF,IAAIo5C,EAAQije,EAAgBr8gB,GAC5Biib,EAAiBi9D,GAAU9lc,EAAMs/c,gBAAmBt/c,EAAMs/c,gBAAgB,GAAK,KAC/Et/c,EAAMs/c,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GACZx+c,EAAM8lB,SAAWohb,GAAY3C,EAAcvkc,EAAM58B,MAAQ,GAAI48B,EAAOukc,EAAcvkc,EAAM58B,MAAQ,GAAIypd,KACpG8I,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMy8d,GAAa5S,OAAQA,EAAQ7sb,MAAOA,EACzDglJ,KAAM6nS,EAAOw5B,cAAcrmd,EAAO6sb,EAAO40B,UACzClwV,OAAQs7T,EAAOy5B,eAAetmd,EAAO,CAAE1H,MAAOu0b,EAAOt7T,OAAOj5H,MAAOimC,MAAOsuZ,EAAOt7T,OAAOhzF,QACxFhmC,OAAQqnX,EAAOrnX,OAAQD,MAAOsnX,EAAOtnX,MAAOm9W,MAAOmK,EAAOnK,OAE9Do3E,EAAOyO,MAAM3od,QAAQ8sd,GAAa9J,GAC7BA,EAAShqd,OAMVq0B,EAAM4/W,OAAS,CAAE95V,SAAS,IAL1B9lB,EAAMs/c,gBAAgB90f,KAAK86gB,EAActle,EAAMmhT,OAAQnhT,EAAMohT,OAAQ34N,EAAOF,EAAO6gX,EAAYvc,IAC/F7sb,EAAMu+B,MAAQo3Z,EAAS3wS,KACvBp8L,KAAKknC,QAAQ+8b,EAAQ7sb,EAAO21b,EAAU9sD,OActD4kH,EAAc3oiB,UAAUw8f,sBAAwB,SAAUz0B,GAatD,IAZA,IAuBI6gE,EAvBAhqB,EAAc,GACd78B,EAAa,GACb+8B,EAAgB/2C,EAAOtkW,MAAMk1W,aAC7BkmC,EAAgB92C,EAAOpkW,MAAMg1W,aAC7BhI,EAAa5I,EAAOj7D,SACpBiyG,EAAeh3C,EAAOtoZ,OACtBw/b,EAAa5zgB,KAAKgH,IAAIysgB,EAAcx5Z,MAAQqrX,EAAWl9b,QACvDure,EAAa3zgB,KAAKgH,IAAIwsgB,EAAcv5Z,MAAQqrX,EAAWn9b,OACvD2re,EAAcJ,EAAa,IAAMA,EAAa,GAAG3kgB,EAAI6kgB,EAAc,EAAIA,EACvEC,EAAcH,EAAa,IAAMA,EAAa,GAAG15f,EAAI25f,EAAc,EAAIA,EACvEp3B,EAAO,EACPD,EAAO,EACF7lf,EAAK,EAAGs9gB,EAAiBL,EAAcj9gB,EAAKs9gB,EAAez+gB,OAAQmB,IAAM,CAC9E,IAAIwgf,EAAe88B,EAAet9gB,GAClCwgf,EAAakY,gBAAkB,GAC/B5S,EAAOtF,EAAahmJ,OAASgmJ,EAAahmJ,OAASwiL,EAAc5ngB,IACjEywe,EAAOrF,EAAajmJ,OAASimJ,EAAajmJ,OAASwiL,EAAc3ngB,KAC7D7L,KAAKgH,IAAI8sgB,EAAav3B,IAASq3B,GAAc5zgB,KAAKgH,IAAI6sgB,EAAav3B,IAASq3B,KAC5Ej9B,EAAWr8e,KAAK48e,GAChB68B,EAAav3B,EACbs3B,EAAav3B,GAIrB,IAAK,IAAIjnf,EAAI,EAAGA,EAAIqhf,EAAWphf,OAAQD,IACnCkoiB,EAAmB7mD,EAAWrhf,GAC1BQ,YAAkB0niB,EAAiBvjhB,IAA6B,KAAvBujhB,EAAiBvjhB,GAI1Du5f,EAAYl5gB,KAAKkjiB,GAGzB,OAAOhqB,GAWX+pB,EAAc3oiB,UAAUgrC,QAAU,SAAU+8b,EAAQ7sb,EAAO21b,EAAU9sD,GACjE,IACIs/E,EACAD,EAFA5sB,EAAQzO,EAAOyO,MAGf17E,EAASitE,EAAOjtE,OAChBy2E,EAAc,IAAI9B,GAAW+G,EAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAQ,UAAY48B,EAAM58B,MAAOuyd,EAAS3wS,KAAM2wS,EAASpkU,OAAOj5H,MAAOq9b,EAASpkU,OAAOhzF,MAAOsuZ,EAAOtgc,QAAS,MAClL+uc,EAAMwK,QAAUr6e,GAAW4qe,EAAYh0d,MACvC8lf,EAAgC,WAAnBxyB,EAASlgF,MAAqB,IAAM,GACjDyyG,EAAez8f,GAAW4qe,EAAYh0d,IAAI0V,aAAa,MAE3D02d,IAAmB,EAAO5hB,EAAO84B,cAAezxB,GAAWl0b,EAAMs/c,gBAAgB,GAAI3pB,EAASlgF,MAAO,IAAIpwU,GAAKswZ,EAASr9b,MAAOq9b,EAASp9b,QAASqnX,EAAOxkT,SAAUi7X,GAAar2b,EAAM71B,EAAEpU,WAAmBiqC,EAAMohT,OAAOrrV,YAAY82d,EAAOyO,MAAMiqB,YAAa14B,EAAOj7D,UAAW0pE,EAAMwK,QAAQ,EAAMqiB,EAAa,IAAKA,EAAa,IAAKt/E,EAAeq/E,GACrVlod,EAAMw+c,QAAQh0f,KAAK,IAAIqpe,GAAK7zb,EAAMs/c,gBAAgB,GAAGn1e,EAAIy1Y,EAAOtnX,MAAO0H,EAAMs/c,gBAAgB,GAAGpgf,EAAI0gZ,EAAOrnX,OAAQ,EAAIqnX,EAAOtnX,MAAO,EAAIsnX,EAAOrnX,SAChJyH,EAAM4/W,OAAS,CACXruP,OAAQokU,EAASpkU,OAAQyzB,KAAM2wS,EAAS3wS,KACxCzsJ,OAAQo9b,EAASp9b,OAAQutB,SAAS,EAClCxtB,MAAOq9b,EAASr9b,MAAOm9W,MAAOkgF,EAASlgF,QAS/Cg4I,EAAc3oiB,UAAUkhgB,YAAc,SAAUn5B,GAK5C,IAJA,IAAInjc,EAAWmjc,EAAO7jc,UAAUU,SAC5BjhC,EAAQoke,EAAO7jc,UAAUvgC,MACzBu6gB,EAAen2C,EAAO84B,cAAczue,WACpCwsC,EAAQ,EACH98D,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIo5C,EAAQ7zC,EAAGvF,GACVo5C,EAAMs/c,gBAAgB75f,QAAWu9gB,EAAat/c,KAGnDonb,GAAck4B,EAAat/c,GAAQj7D,EAAOihC,EAAUmjc,EAAQ7sb,EAAM58B,MAAO48B,EAAMs/c,gBAAgB,IAAI,GACnG57b,OAMR+pe,EAAc3oiB,UAAU2+B,cAAgB,WAIpC,MAAO,iBAOXgqgB,EAAc3oiB,UAAUif,QAAU,aAK3B0phB,EAtJwB,GCZ/BxmgB,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAsBzCsmgB,GAAiC,SAAU5lgB,GAE3C,SAAS4lgB,IACL,IAAIhliB,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAGhE,OADAD,EAAM0whB,qBAAuB,GACtB1whB,EAmlBX,OAxlBAs+B,GAAU0mgB,EAAiB5lgB,GAa3B4lgB,EAAgB7oiB,UAAU2+U,YAAc,SAAU3qS,GAC9C,IAAIwic,EAAQ1ye,KAAK0ye,MACjB1ye,KAAKg9e,gBAAkB9sc,EACvBlwC,KAAKkof,eAAiB,IAAIjd,GAAK/6b,EAAK3uB,EAAG2uB,EAAK55B,EAAG45B,EAAKR,MAAOQ,EAAKP,QAEhE3vC,KAAKwrf,eAAe9Y,EAAO1ye,KAAKg9e,iBAChCh9e,KAAKyrf,kBAAkB/Y,EAAO1ye,KAAKg9e,iBACnCh9e,KAAK0rf,qBAETq5C,EAAgB7oiB,UAAUsvf,eAAiB,SAAU9Y,EAAOxic,GACxDlwC,KAAK4rf,iBAAiB17c,GACtB,IAAI0a,EAAM8nb,EAAM5pa,KAAK,GACrB9oE,KAAK8rf,kBAAkBlhc,EAAK8nb,EAAO,IAAIj2Z,GAAKi2Z,EAAM6Q,cAAc7zc,MAAOkb,EAAImhc,kBAE/Eg5C,EAAgB7oiB,UAAUuvf,kBAAoB,SAAU/Y,EAAOxic,GAC3DlwC,KAAKgsf,oBAAoB97c,GACzB,IAAIupB,EAASi5a,EAAM34a,QAAQ,GAC3B/5D,KAAK8rf,kBAAkBryb,EAAQi5a,EAAO,IAAIj2Z,GAAKhjB,EAAOwyb,cAAevZ,EAAM6Q,cAAc5zc,UAQ7Fo1f,EAAgB7oiB,UAAU4vf,kBAAoB,SAAUI,EAAYxZ,EAAOl2Z,GACvE,IAAK,IAAIx+E,EAAK,EAAGuF,EAAK2of,EAAW30a,KAAMv5E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACzD,IAAI+tC,EAAOxoC,EAAGvF,GACd+tC,EAAK6xc,UAAUlL,GACf3mc,EAAK8vc,WAAW/H,0BAA0Bt3Z,EAAMzwC,KASxDg5f,EAAgB7oiB,UAAUwvf,kBAAoB,WAC1C,IAAIhZ,EAAQ1ye,KAAK0ye,MAGjB1ye,KAAKw/e,QAAuC,GAA7Bx/e,KAAKg9e,gBAAgBttc,MAAc1vC,KAAKg9e,gBAAgBz7d,EACvEvhB,KAAKy/e,QAAwC,GAA9Bz/e,KAAKg9e,gBAAgBrtc,OAAe3vC,KAAKg9e,gBAAgB1me,EACxEo8d,EAAMxvc,OAAS37B,KAAK6L,IAAIpT,KAAKg9e,gBAAgBttc,MAAO1vC,KAAKg9e,gBAAgBrtc,QAAU,EAHrE,EAIV+ic,EAAMkO,aAAapG,eAAe7qc,OAAS+ic,EAAMkO,aAAa3F,aAAatrc,OAC/E+ic,EAAMxvc,OAAUwvc,EAAMkO,aAAaK,YAAcvO,EAAMxvc,OAAU,IACjEljC,KAAKkof,eAAe5xe,EAAItW,KAAKy/e,QAAU/M,EAAMxvc,OAC7CljC,KAAKkof,eAAe3me,EAAIvhB,KAAKw/e,QAAU9M,EAAMxvc,OAC7CljC,KAAKkof,eAAev4c,OAAS,EAAI+ic,EAAMxvc,OACvCljC,KAAKkof,eAAex4c,MAAQ,EAAIgjc,EAAMxvc,OACtCljC,KAAK4rf,iBAAiB5rf,KAAKkof,gBACpBxV,EAAMmb,aACR39c,KAAOlwC,KAAKkof,eACjBlof,KAAKgsf,oBAAoBhsf,KAAKkof,gBACvBxV,EAAMkO,aACR1wc,KAAOlwC,KAAKkof,gBAQrB68C,EAAgB7oiB,UAAU+3E,QAAU,WAChC,IAAIy+Z,EAAQ1ye,KAAK0ye,MACjBA,EAAM0a,aAAaxrf,KAAK8we,EAAMmb,cAC9B,IAAIjjc,EAAM8nb,EAAM5pa,KAAK,GACrBle,EAAI2sB,KAAK,GAAKm7Z,EAAMmb,aACpBnb,EAAM5pa,KAAK,GAAKle,EAChB8nb,EAAM6a,eAAe3rf,KAAK8we,EAAMkO,cAChC,IAAInnb,EAASi5a,EAAM34a,QAAQ,GAC3BN,EAAO8d,KAAK,GAAKm7Z,EAAMkO,aACvBlO,EAAM34a,QAAQ,GAAKN,GAOvBsre,EAAgB7oiB,UAAU0vf,iBAAmB,SAAU17c,GAEnD,IAAIwic,EAAQ1ye,KAAK0ye,MACb9nb,EAAM8nb,EAAM5pa,KAAK,GACrBle,EAAImhc,eAAiB77c,EAAKP,OAAS,EACnCib,EAAIgic,YAAc18c,EAAK55B,EACvBo8d,EAAM5pa,KAAK,GAAKle,GAOpBm6e,EAAgB7oiB,UAAU8vf,oBAAsB,SAAU97c,GAEtD,IAAIwic,EAAQ1ye,KAAK0ye,MACbj5a,EAASi5a,EAAM34a,QAAQ,GAC3BN,EAAOuzb,aAAe98c,EAAK3uB,EAC3Bk4C,EAAOwyb,cAAgB/7c,EAAKR,MAC5Bgjc,EAAM34a,QAAQ,GAAKN,GAQvBsre,EAAgB7oiB,UAAUkyf,WAAa,WACnC,IAAIrid,EACA2mc,EAAQ1ye,KAAK0ye,MACjB1ye,KAAK6gf,WAAanO,EAAMkO,aAAaC,WAGrC,IAFA,IAAIyN,EAAc5b,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,mBAClE80e,EAAkB7b,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,0BACjE7c,EAAI,EAAG+E,EAAM+we,EAAMkJ,gBAAgB/+e,OAAQD,EAAI+E,EAAK/E,IACzDoD,KAAKgB,QAAU0xe,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,YAAc7c,IAExD,gBADzBmvC,EAAO2mc,EAAMkJ,gBAAgBh/e,IACpBwmY,cACDr3V,EAAK2id,eAAeh/c,MAAQ,GAAK3D,EAAKyuc,eAAe9qc,MAAQ,IAC7D1vC,KAAK2uf,kBAAkB5id,EAAMnvC,GAE7BmvC,EAAKmxB,SAAWnxB,EAAKmtc,oBACrBl5e,KAAK4uf,gBAAgB7id,EAAMnvC,KAI/BoD,KAAK+uf,kBAAkBhjd,EAAMnvC,GACzBmvC,EAAKwwT,UAAU7sT,MAAQ,GACvB1vC,KAAKgliB,cAAcj5f,EAAMnvC,GAEzBmvC,EAAKmxB,SAAWnxB,EAAKmtc,oBACrBl5e,KAAKgvf,gBAAgBjjd,EAAMnvC,IAGnC0xf,EAAYtsf,YAAYhC,KAAKgB,SAIjC,OAFAstf,EAAYtsf,YAAYhC,KAAKgB,SAC7B6kf,GAAmBnT,EAAMoW,aAAcpW,EAAMlG,UAAW8hB,EAAa5b,EAAMwK,QACpEqR,GAEXw2C,EAAgB7oiB,UAAU8oiB,cAAgB,SAAUj5f,EAAMvxB,GACtD,IACI+0e,EADA7c,EAAQ1ye,KAAK0ye,MAEbzwV,EAASy+V,GAAoBC,GAAwB50c,EAAK4pc,cAAc,GAAGn5e,MAAOuvC,GAAO/rC,KAAK6gf,YAC9Fnf,EAAW,KAAO1he,KAAKw/e,QAAU,IAAMx/e,KAAKy/e,QAAU,MACrDz/e,KAAKw/e,QAAU9M,EAAMxvc,OAAS++G,EAAO1gI,GAAK,KAAOvhB,KAAKy/e,QAAU/M,EAAMxvc,OAAS++G,EAAO3rI,GAC3Fi5e,EAAc,CACV,GAAM7c,EAAM1xe,QAAQyY,GAAK,YAAce,EACvC,EAAKknd,EACL,mBAAoB31b,EAAKwwT,UAAUirI,UACnC,eAAgBz7b,EAAKwwT,UAAU7sT,MAC/B,OAAU3D,EAAKwwT,UAAU5mR,OAAS+8Z,EAAMrG,WAAW3K,UAQvD,IAAI1ge,EAAU0xe,EAAMtsM,SAAS4+H,SAASuqF,GACtCvvf,KAAKiliB,oBAAoBjkiB,GACzB0xe,EAAM+6B,cAAczrgB,YAAYhB,IAEpC+jiB,EAAgB7oiB,UAAU8yf,gBAAkB,SAAUjjd,EAAMvxB,GACxD,IACIszd,EACAxhe,EAKA42B,EAEAg5c,EATAxJ,EAAQ1ye,KAAK0ye,MAGbqJ,EAAS,EACT+T,EAAS,EACTt+G,EAAQxxY,KAAK6gf,WAAa,EAAI7gf,KAAK6gf,WAAa,IAAM7gf,KAAK6gf,WAC3Dj2Y,EAAS,SAITs6b,EAAe,GACfC,EAAiB,GACrBA,EAAe,IAAK,EAIpB,IAHA,IAAIC,EAAgBr5f,EAAKowc,qBACrBmV,EAAe5e,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,aAAee,IAClFynI,EAASy+V,GAAoBC,GAAwB50c,EAAK4pc,cAAc,GAAGn5e,MAAOuvC,GAAO/rC,KAAK6gf,YACzFjkf,EAAI,EAAG+E,EAAMoqC,EAAK4pc,cAAc94e,OAAQD,EAAI+E,EAAK/E,IAAK,CAW3D,GAVAs/e,GAAc,EACLxJ,EAAMxvc,OAASm4c,GAAmBtvc,EAAK4pc,cAAc/4e,GAAGJ,MAAOuvC,GACxE+hc,EAAc/hc,EAAK4pc,cAAc/4e,GAAG4/E,KACpCt5C,EAASwvc,EAAMxvc,OAASm4c,GAAmBtvc,EAAK4pc,cAAc/4e,GAAGJ,MAAOuvC,GACxEgwc,EAAU/7e,KAAKw/e,QAAUt8c,EAAS++G,EAAO1gI,GAAOwqB,EAAKyuc,eAAe7qc,OAASm+b,EAAYp+b,MAAQ,EAAIlF,KAC9FjjC,KAAKkqY,IAAID,EAAQjqY,KAAK6pY,GAAK,MAAgC,WAAvBrlW,EAAK8uc,cAA6B,GAAK,GAClFiV,EAAU9vf,KAAKy/e,QAAUv8c,EAAS++G,EAAO3rI,GAAOy1B,EAAKyuc,eAAe7qc,OAASm+b,EAAYn+b,OAAS,GAC3FpoC,KAAKmwH,IAAI85Q,EAAQjqY,KAAK6pY,GAAK,MAAgC,WAAvBrlW,EAAK8uc,cAA6B,GAAK,GAClFiV,GAAWhiB,EAAYn+b,OAAS,EAChCu1f,EAAatoiB,GAAKoD,KAAKqliB,eAAetpD,EAAQ+T,EAAQ/jd,EAAK4pc,cAAc/4e,GAAIguG,GACnE,IAANhuG,GAA6B,SAAlBwoiB,EAA0B,CACrC,IAAK,IAAIj9hB,EAAIvL,EAAGuL,GAAK,EAAGA,IAAK,CAEzB,GAAIg9hB,EADJh9hB,EAAW,IAANA,EAAW,EAAKA,IAAMvL,EAAMuL,EAAI,EAAKA,IACjBg/e,GAAU+9C,EAAatoiB,GAAIsoiB,EAAa/8hB,IAAK,CAClE+ze,GAAc,EACdipD,EAAevoiB,IAAK,EACpB,MAGAuoiB,EAAevoiB,IAAK,EAG5B,GAAIs/e,EACA,SAGJ,IAAK,IAAIl+e,EAAK,EAAGuF,EAAKvD,KAAKywhB,qBAAsBzyhB,EAAKuF,EAAG1G,OAAQmB,IAAM,CACnE,IAAIkyC,EAAO3sC,EAAGvF,GACd,GAAImpf,GAAU+9C,EAAatoiB,GAAIszC,GAAO,CAClCgsc,GAAc,EACd,QAIRA,IAGJl8e,KAAKywhB,qBAAqB7uhB,KAAKsjiB,EAAatoiB,IAC5C0P,EAAU,IAAI8+d,GAAWsH,EAAM1xe,QAAQyY,GAAKe,EAAQ,cAAgB5d,EAAGm/e,EAAQ+T,EAAQllZ,EAAQ7+D,EAAK4pc,cAAc/4e,GAAG2V,MACrH29d,GAAYwC,EAAMtsM,SAAU95R,EAASy/B,EAAK6pc,WAAY7pc,EAAK6pc,WAAWjga,OAAS+8Z,EAAMrG,WAAW7K,UAAW8vB,GAAc,EAAO5e,EAAMwK,QAAQ,GAAM,EAAM,KAAM,KAAM,EAAM,KAAMxK,EAAMoW,eAE5LpW,EAAM+6B,cAAczrgB,YAAYsvf,IAEpCyzC,EAAgB7oiB,UAAU6yf,kBAAoB,SAAUhjd,EAAMvxB,GAC1D,IACIlO,EACA42B,EAGA++G,EAEApmE,EACAE,EAOA4+E,EACA35J,EAhBA0xe,EAAQ1ye,KAAK0ye,MAGbsd,EAAY,GACZD,EAAY,GAEZv+G,EAAQxxY,KAAK6gf,WAAa,EAAI7gf,KAAK6gf,WAAa,IAAM7gf,KAAK6gf,WAK3Dl4U,EAAS,CACThzF,MAAO5pC,EAAK2id,eAAe/4a,OAAS+8Z,EAAMrG,WAAW1K,cACrDjyb,MAAO3D,EAAK2id,eAAeh/c,OAI/B,GAAI3D,EAAK2id,eAAeh/c,MAAQ,EAC5B,GAAoC,UAAhCgjc,EAAM4c,cAAc,GAAGnkf,KAAkB,CACzC,IAAK,IAAIhD,EAAI,EAAGA,EAAI4jC,EAAK4pc,cAAc94e,OAAQsL,IAE3CwyJ,GADA35J,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAMrS,IAChDnH,EAAQmuB,aAAa,KAAO,KACtD+T,EAASwvc,EAAMxvc,OAASm4c,GAAmBtvc,EAAK4pc,cAAcxte,GAAG3L,MAAOuvC,GACxEz/B,EAAU,IAAIu9e,GAAanX,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAMrS,EAAG,cAAewgK,EAAQ58H,EAAK2id,eAAeh/c,MAAO1vC,KAAKw/e,QAASx/e,KAAKy/e,QAASv8c,GACjK2id,GAAmBnT,EAAMoW,aAAc9of,KAAKgB,QAAS0xe,EAAMtsM,SAAS2+L,WAAWz4d,GAAUome,EAAMwK,QAAQ,EAAM,IAAK,IAAK,IAAIkC,IAAezkV,GAAgBA,GAAgB,MAAM,GAEhLz3H,IAAWwvc,EAAMxvc,SACjB52B,EAAU,IAAIu9e,GAAanX,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAMuxB,EAAK4pc,cAAc94e,OAAS,EAAG,cAAe8rK,EAAQ58H,EAAK2id,eAAeh/c,MAAO1vC,KAAKw/e,QAASx/e,KAAKy/e,QAAS/M,EAAMxvc,QACnM2id,GAAmBnT,EAAMoW,aAAc9of,KAAKgB,QAAS0xe,EAAMtsM,SAAS2+L,WAAWz4d,GAAUome,EAAMwK,QAAQ,EAAM,IAAK,IAAK,IAAIkC,IAAezkV,GAAgBA,GAAgB,MAAM,QAGnL,CACD,IAASxyJ,EAAI,EAAGA,EAAI4jC,EAAK4pc,cAAc94e,OAAQsL,IAC3C+6B,EAASwvc,EAAMxvc,OAASm4c,GAAmBtvc,EAAK4pc,cAAcxte,GAAG3L,MAAOuvC,GACxEgkd,EAAY/vf,KAAKsliB,gBAAgBpigB,EAAQ,GAAIwvc,GAE7C/3U,GADA35J,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAMrS,IAChDnH,EAAQmuB,aAAa,KAAO,KACtD7iB,EAAU,IAAIq/d,GAAW+G,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAMrS,EAAG,cAAe4jC,EAAK2id,eAAeh/c,MAAO3D,EAAK2id,eAAe/4a,OAAS+8Z,EAAMrG,WAAW1K,cAAe,KAAM,KAAMouB,GACpMlK,GAAmBnT,EAAMoW,aAAc9of,KAAKgB,QAAS0xe,EAAMtsM,SAAS4+H,SAAS14Z,GAAUome,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAMviV,GAAe,GAE1Iz3H,IAAWwvc,EAAMxvc,SACjB6sd,EAAY/vf,KAAKsliB,gBAAgB5yD,EAAMxvc,OAAQ,GAAIwvc,GAEnD/3U,GADA35J,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAMuxB,EAAK4pc,cAAc94e,SACnEmE,EAAQmuB,aAAa,KAAO,KACtD7iB,EAAU,IAAIq/d,GAAW+G,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAMuxB,EAAK4pc,cAAc94e,OAAQ,cAAekvC,EAAK2id,eAAeh/c,MAAO3D,EAAK2id,eAAe/4a,OAAS+8Z,EAAMrG,WAAW1K,cAAe,KAAM,KAAMouB,GAC5NlK,GAAmBnT,EAAMoW,aAAc9of,KAAKgB,QAAS0xe,EAAMtsM,SAAS4+H,SAAS14Z,GAAUome,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAMviV,GAAe,IAItJ,GAAI5uH,EAAKyuc,eAAe9qc,MAAQ,EAAG,CAC/BuyG,EAASy+V,GAAoBC,GAAwB50c,EAAK4pc,cAAc,GAAGn5e,MAAOuvC,GAAO/rC,KAAK6gf,YAC9F,IAAK,IAAIjkf,EAAI,EAAGA,EAAImvC,EAAK4pc,cAAc94e,OAAQD,IAC3CsmC,EAASwvc,EAAMxvc,OAASm4c,GAAmBtvc,EAAK4pc,cAAc/4e,GAAGJ,MAAOuvC,GAKxEikd,EAAY,MAJZn0a,EAAK77E,KAAKw/e,QAAUt8c,EAAS++G,EAAO1gI,GAIZ,KAHxBw6D,EAAK/7E,KAAKy/e,QAAUv8c,EAAS++G,EAAO3rI,GAGD,OAF9BulE,EAAM9vC,EAAKyuc,eAAe7qc,OAAUpoC,KAAKkqY,IAAID,EAAQjqY,KAAK6pY,GAAK,MAA+B,WAAtBrlW,EAAKuuc,aAA4B,GAAK,IAEnE,KAD3Cv+Z,EAAMhwC,EAAKyuc,eAAe7qc,OAAUpoC,KAAKmwH,IAAI85Q,EAAQjqY,KAAK6pY,GAAK,MAA+B,WAAtBrlW,EAAKuuc,aAA4B,GAAK,IAEnHt6e,KAAKuliB,eAAex5f,EAAMvxB,EAAOw1e,EAAW,GAAIpzf,KAI5DmoiB,EAAgB7oiB,UAAUopiB,gBAAkB,SAAUpigB,EAAQ6sd,EAAWrd,GAOrE,IANA,IAAIzwV,EACAujZ,EACA3pd,EACAE,EACAE,EACAE,EACKv/E,EAAI,EAAG+E,EAAM+we,EAAMkO,aAAajL,cAAc94e,OAAQD,EAAI+E,EAAK/E,IACpEqlJ,EAASy+V,GAAoBC,GAAwBjO,EAAMkO,aAAajL,cAAc/4e,GAAGJ,MAAOk2e,EAAMkO,cAAe5gf,KAAK6gf,YAEtH2kD,EAAU9kD,GAAoBC,GAD9B/jf,EAAI,EAAI+E,EAC8C+we,EAAMkO,aAAajL,cAAc/4e,EAAI,GAAGJ,MAGxCk2e,EAAMkO,aAAajL,cAAc,GAAGn5e,MAHWk2e,EAAMkO,cAAe5gf,KAAK6gf,YAKnIhla,EAAK77E,KAAKw/e,QAAUt8c,EAAS++G,EAAO1gI,EACpCw6D,EAAK/7E,KAAKy/e,QAAUv8c,EAAS++G,EAAO3rI,EACpC2lE,EAAKj8E,KAAKw/e,QAAUt8c,EAASsigB,EAAQjkhB,EACrC46D,EAAKn8E,KAAKy/e,QAAUv8c,EAASsigB,EAAQlvhB,EACrCy5e,EAAYA,EAAUj+d,QAAQl1B,EAAI,KAAO,MAAQ,IAAMi/E,EAAK,IAAME,EAArC,OAA6DE,EAAK,IAAME,EAAK,KAE9G,OAAO4za,GAEXg1C,EAAgB7oiB,UAAUyyf,kBAAoB,SAAU5id,EAAMvxB,GAe1D,IAdA,IACIq7d,EACA5zV,EAMAhmE,EAEAE,EACA+1a,EAXAxf,EAAQ1ye,KAAK0ye,MAGbqd,EAAY,GACZC,EAAY,GACZy1C,EAAgB,GAChB3jE,EAAgB,GAChBjmZ,EAAK77E,KAAKw/e,QAEVzja,EAAK/7E,KAAKy/e,QAGV5if,EAASkvC,EAAK4pc,cAAc94e,OAEvBD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7Bi5e,EAAe9pc,EAAK4pc,cAAc/4e,GAAGJ,MACrCylJ,EAASy+V,GAAoBC,GAAwB50c,EAAK4pc,cAAc/4e,GAAGJ,MAAOuvC,GAAO/rC,KAAK6gf,YAK9FkP,EAAY,KAAOl0a,EAAK,IAAME,EAAlB,OAJZE,EAAKj8E,KAAKw/e,QAAU9M,EAAMxvc,OAAS++G,EAAO1gI,GAIW,KAHrD46D,EAAKn8E,KAAKy/e,QAAU/M,EAAMxvc,OAAS++G,EAAO3rI,GAI1C05e,EAAY,KAAO/za,EAAK,IAAME,EAAK,OAHxBF,EAAMlwC,EAAKyuc,eAAe7qc,OAASsyG,EAAO1gI,GAA2B,WAAtBwqB,EAAKuuc,cAA6B,EAAI,IAG9C,KAFvCn+Z,EAAMpwC,EAAKyuc,eAAe7qc,OAASsyG,EAAO3rI,GAA2B,WAAtBy1B,EAAKuuc,cAA6B,EAAI,IAG5Fvuc,EAAK2kd,sBAAwB,IAAM3kd,EAAKukd,eAAe5gd,MAAQ,GAAK3D,EAAKwkd,eAAe7gd,MAAQ,IAC1E,aAAnB3D,EAAK8nc,WAA4D,UAAhCnB,EAAM4c,cAAc,GAAGnkf,OAE3Ds6hB,GADAvzC,EAAiBlyf,KAAK4wf,kBAAkB7kd,EAAM8pc,EAAc4vD,EAAe3jE,IAC5C,GAC/BA,EAAgBowB,EAAe,IAEnClyf,KAAKuliB,eAAex5f,EAAMvxB,EAAOw1e,EAAWluB,EAAelle,GAC3DoD,KAAKywf,eAAe1kd,EAAMvxB,EAAOu1e,EAAW01C,EAAe7oiB,KAGnEmoiB,EAAgB7oiB,UAAU00f,kBAAoB,SAAU7kd,EAAM8pc,EAAc6c,EAAWC,GAOnF,IANA,IACIpxe,EACAjL,EACA2rI,EAHAzlJ,EAAQq5e,EAIRrje,EAAQu5B,EAAK8oc,aACbt1Y,EAAY,GACPp3F,EAAI,EAAGA,EAAI4jC,EAAK2kd,sBAAuBvof,IAG5C,GAAIsye,GAFJj+e,IAA6B,aAAnBuvC,EAAK8nc,UAA2B9nc,EAAKm1c,iBAAmBn1c,EAAK8oc,aAAatye,WAC/EwpC,EAAK2kd,sBAAwB,GAChBl+e,GAAQ,CACtByvI,EAASy+V,GAAoBC,GAAwBnkf,EAAOuvC,GAAO/rC,KAAK6gf,YACxEt/d,EAAIvhB,KAAKw/e,QAAUx/e,KAAK0ye,MAAMxvc,OAAS++G,EAAO1gI,EAC9CjL,EAAItW,KAAKy/e,QAAUz/e,KAAK0ye,MAAMxvc,OAAS++G,EAAO3rI,EAC9C,IAAIovhB,EAAYnkhB,EAAKwqB,EAAKwkd,eAAe5gd,OAASsyG,EAAO1gI,GAA2B,WAAtBwqB,EAAKuuc,cAA6B,EAAI,GAChGqrD,EAAYrvhB,EAAKy1B,EAAKwkd,eAAe5gd,OAASsyG,EAAO3rI,GAA2B,WAAtBy1B,EAAKuuc,cAA6B,EAAI,GACpGoY,EAAYA,EAAU5ge,OAAO,KAAY9xB,KAAKw/e,QAAU,IAAMx/e,KAAKy/e,QAC7D,KAAOl+d,EAAI,IAAMjL,GACvBq8e,EAAYA,EAAU7ge,OAAO,KAAYvQ,EAAI,IAAMjL,EAAtB,KAAuCovhB,EAAa,IAC5EC,GAKb,OAFApmc,EAAU39F,KAAK8wf,GACfnzZ,EAAU39F,KAAK+wf,GACRpzZ,GAUXwlc,EAAgB7oiB,UAAU0yf,gBAAkB,SAAU7id,EAAMvxB,GAExD,IAAIorhB,EADJ5liB,KAAKywhB,qBAAuB,GAExBzwhB,KAAK0ye,MAAM65B,eACXq5B,EAAa5liB,KAAK0ye,MAAM65B,aAAa3K,cAEzC,IAIIt1f,EACA21I,EACA86V,EACA8oD,EAGAC,EACArwd,EAEAyma,EAbAxJ,EAAQ1ye,KAAK0ye,MACbqJ,EAAS,EACT+T,EAAS,EACTwB,EAAe5e,EAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,aAAee,IAKlFw4e,EAAuC,WAAvBjnd,EAAK8uc,cAIrBuN,EAAa,GAEb88C,EAAe,GACfC,EAAiB,GACrBA,EAAe,IAAK,EACpB,IAAIC,EAAgBr5f,EAAKowc,qBACrBgU,EAAmC,aAAnBpkd,EAAK8nc,WAAoD,iBAAxB9nc,EAAK00c,eAAoC,GAAM,EAChGv9c,EAASwvc,EAAMxvc,OAAS6I,EAAKyuc,eAAe7qc,OAChDzM,EAAU8vd,GAAkB9vd,EAASA,EACrC,IAAK,IAAItmC,EAAI,EAAG+E,EAAMoqC,EAAK4pc,cAAc94e,OAAQD,EAAI+E,EAAK/E,IAAK,CAY3D,GAXAs/e,GAAc,EACdj6V,EAASy+V,GAAoBC,GAAwB50c,EAAK4pc,cAAc/4e,GAAGJ,MAAQ2zf,EAAepkd,GAAO/rC,KAAK6gf,YACzGz0e,MAAM61I,EAAO1gI,IAAOnV,MAAM61I,EAAO3rI,KAClCyle,EAAS/7e,KAAKw/e,SAAWt8c,EAAS6I,EAAKyuc,eAAe7qc,OAhBhD,GAgBoEsyG,EAAO1gI,EACjFuue,EAAS9vf,KAAKy/e,SAAWv8c,EAAS6I,EAAKyuc,eAAe7qc,OAjBhD,GAiBoEsyG,EAAO3rI,EACjF8xe,EAAarve,WAAWgje,EAAOloe,QAAQ,MAAQkF,WAAW/Y,KAAKw/e,QAAQ3re,QAAQ,IAAM,SAC/Ekoe,EAAS/7e,KAAKw/e,UAAYwT,GAAmBjX,EAAS/7e,KAAKw/e,SAAWwT,EAAkB,MAAQ,SAG1GjW,GADAtna,EAAQ1pC,EAAK4pc,cAAc/4e,IACT2V,KAEdw5B,EAAKwwc,YAAgC,SAAlB6oD,EAOnB,IANA,IAAI/oD,EAAetwc,EAAK4pc,cAAc/4e,GAAGy/e,aACrC0pD,OAAW,EACXvpd,OAAO,EACPq+Z,EAAgB9uc,EAAK8uc,cACrB+2C,EAAal/C,EAAM6Q,cAAc7zc,MACjCoif,EAAaz1C,EAAax/e,OACrB6oE,EAAMosd,EAAa,EAAGpsd,GAAO,IAAKA,EAGvC,GADA8W,EAAO8tZ,GADPy7D,EAAW1pD,EAAajve,UAAU,EAAGs4D,GAAO,MACf35B,EAAK6pc,YAAYlmc,MAC1Cqsc,IAAW61C,EAAa,EAAK71C,EAASv/Z,EAAO,GAAK,GAAKu/Z,EAASv/Z,EAAO,GAAKo1c,EACxD,YAAlB/2C,IAAiCkB,GAAU61C,EAAa,GAAK71C,EAASv/Z,GAAQo1c,GAC3E71C,GAAU61C,EAAa,GAAK71C,EAASv/Z,GAAQ,IAA2B,WAAlBq+Z,IACtDkB,EAASv/Z,GAAQo1c,EAAa,GAAK71C,EAASv/Z,GAAQo1c,EAAa,GAAM,CAC5E70C,EAAYr3a,IAAQosd,EAAa,EAAIz1C,EAAe0pD,EACpDtwd,EAAM+G,KAAK9sC,MAAQ46b,GAAYyS,EAAWhxc,EAAK6pc,YAAYlmc,MAC3D+lC,EAAMljE,KAAOwqe,EACb,MAeZ,GAVAmoD,EAAatoiB,GAAKoD,KAAKqliB,eAAetpD,EAAQ+T,EAAQr6a,EAAO2ya,GACnD,IAANxrf,EACAipiB,EAAc9pD,EAETn/e,IAAMmvC,EAAK4pc,cAAc94e,OAAS,GAAwB,aAAnBkvC,EAAK8nc,YACjDiyD,EAAax7D,GAAYyS,EAAWhxc,EAAK6pc,YAAYjmc,OAErDotc,GADA+oD,GAAc/pD,GACY8pD,EAAe,GAAK9oD,GAGxC,IAANngf,GAA6B,SAAlBwoiB,EACX,IAAK,IAAIj9hB,EAAIvL,EAAGuL,GAAK,EAAGA,IAAK,CAEzB,GAAIg9hB,EADJh9hB,EAAW,IAANA,EAAW,EAAMA,IAAMvL,EAAMuL,EAAI,EAAKA,IAClBg/e,GAAU+9C,EAAatoiB,GAAIsoiB,EAAa/8hB,IAAK,CAClE+ze,GAAc,EACdipD,EAAevoiB,IAAK,EACpB,MAGAuoiB,EAAevoiB,IAAK,EAIhC,IAAKs/e,GAAe0pD,IAChB1pD,EAAciL,GAAU+9C,EAAatoiB,GAAIgpiB,IACxB,CACb,IAAIl2f,EAAQ1vC,KAAKgmiB,wBAAwBJ,EAAYV,EAAatoiB,IAC9D8yC,EAAQ,IACRqtc,EAAYuG,GAAS5zc,EAAO3D,EAAK4pc,cAAc/4e,GAAGy/e,aAActwc,EAAK6pc,YACrEsG,GAAc,GAI1B5ve,EAAU,IAAI8+d,GAAWsH,EAAM1xe,QAAQyY,GAAKe,EAAQ,cAAgB5d,EAAGm/e,EAAQ+T,EAAQ1H,EAAYrL,EAAW,GAAI,WAC9Gb,IAGJl8e,KAAKywhB,qBAAqB7uhB,KAAKsjiB,EAAatoiB,IAC5Csze,GAAYwC,EAAMtsM,SAAU95R,EAASmpE,EAAMmga,WAAYnga,EAAMmga,WAAWjga,OAAS+8Z,EAAMrG,WAAW7K,UAAW8vB,GAAc,EAAO5e,EAAMwK,QAAQ,GAAM,EAAM,KAAM,KAAM,EAAM,KAAMxK,EAAMoW,eAE9L9of,KAAKgB,QAAQgB,YAAYsvf,IAS7ByzC,EAAgB7oiB,UAAU8piB,wBAA0B,SAAUJ,EAAYtT,GACtE,IAAI2T,EAAWL,EAAWrkhB,EACtB2khB,EAAWD,EAAWL,EAAWl2f,MACjCy2f,EAAU7T,EAAU/wgB,EACpB6khB,EAAUD,EAAU7T,EAAU5if,MAC9BA,EAAQ,EAaZ,OAZIy2f,EAAUF,GAAYE,EAAUD,GAAYE,EAAUF,EACtDx2f,EAAQ02f,EAAUF,EAEbC,EAAUF,GAAYE,EAAUD,GAAYE,EAAUF,EAC3Dx2f,EAAQ,GAEH02f,EAAUH,GAAYG,EAAUF,GAAYC,EAAUF,GAGtDG,EAAUH,GAAYG,EAAUF,GAAYC,EAAUF,KAF3Dv2f,EAAQu2f,EAAWE,GAKhBz2f,GAWXq1f,EAAgB7oiB,UAAUmpiB,eAAiB,SAAUtpD,EAAQ+T,EAAQr6a,EAAOm1B,GAYxE,MAXe,WAAXA,EACAmxY,GAAWtma,EAAM+G,KAAK9sC,MAAQ,EAEd,QAAXk7D,EACLmxY,GAAUtma,EAAM+G,KAAK9sC,MAIrBqsc,EAASA,EAEb+T,GAAWr6a,EAAM+G,KAAK7sC,OAAS,EACxB,IAAIs7b,GAAK8Q,EAAQ+T,EAAQr6a,EAAM+G,KAAK9sC,MAAO+lC,EAAM+G,KAAK7sC,SAEjEo1f,EAAgB7oiB,UAAUqpiB,eAAiB,SAAUx5f,EAAMvxB,EAAOqnd,EAAeC,EAAexC,GAC5F,IAAI+mE,EAEA9mc,EACAv+F,EAFA0xe,EAAQ1ye,KAAK0ye,MAGb3mc,EAAKyuc,eAAe9qc,MAAQ,IAE5B6vD,GADAv+F,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAM8kd,IACpDt+d,EAAQmuB,aAAa,KAAO,KAClDk3gB,EAAc,IAAI16D,GAAW+G,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAM8kd,EAAW,cAAevzb,EAAKyuc,eAAe9qc,MAAO3D,EAAKyuc,eAAe7ka,OAAS+8Z,EAAMrG,WAAWxK,cAAe,KAAM,KAAMA,GAOhN7ge,EAAU0xe,EAAMtsM,SAAS4+H,SAASqhI,GAClCrmiB,KAAKiliB,oBAAoBjkiB,GACzB6kf,GAAmBnT,EAAMoW,aAAcpW,EAAM+6B,cAAezsgB,EAAS0xe,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM39Y,IAEzGxzD,EAAKwkd,eAAe7gd,MAAQ,IAE5B6vD,GADAv+F,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAM8kd,IACpDt+d,EAAQmuB,aAAa,KAAO,KAClDk3gB,EAAc,IAAI16D,GAAW+G,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAM8kd,EAAW,cAAevzb,EAAKwkd,eAAe7gd,MAAO3D,EAAKwkd,eAAe56a,OAAS+8Z,EAAMrG,WAAWvK,cAAe,KAAM,KAAMA,GAOhN9ge,EAAU0xe,EAAMtsM,SAAS4+H,SAASqhI,GAClCrmiB,KAAKiliB,oBAAoBjkiB,GACzB6kf,GAAmBnT,EAAMoW,aAAcpW,EAAM+6B,cAAezsgB,EAAS0xe,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM39Y,KAGjHwlc,EAAgB7oiB,UAAUu0f,eAAiB,SAAU1kd,EAAMvxB,EAAOu1e,EAAW2C,EAAWpzB,GACpF,IACIgnE,EACA/mc,EACAv+F,EAHA0xe,EAAQ1ye,KAAK0ye,MAIb3mc,EAAK2id,eAAeh/c,MAAQ,IAE5B6vD,GADAv+F,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAM8kd,IACpDt+d,EAAQmuB,aAAa,KAAO,KAClDm3gB,EAAc,IAAI36D,GAAW+G,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAM8kd,EAAW,cAAevzb,EAAK2id,eAAeh/c,MAAO3D,EAAK2id,eAAe/4a,OAAS+8Z,EAAMrG,WAAW1K,cAAe,KAAM51b,EAAK2id,eAAelnB,UAAWuoB,GACzOlK,GAAmBnT,EAAMoW,aAAc9of,KAAKgB,QAAS0xe,EAAMtsM,SAAS4+H,SAASshI,GAAc5zD,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM39Y,IAE/HxzD,EAAKukd,eAAe5gd,MAAQ,IAE5B6vD,GADAv+F,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAM8kd,IACpDt+d,EAAQmuB,aAAa,KAAO,KAClDm3gB,EAAc,IAAI36D,GAAW+G,EAAM1xe,QAAQyY,GAAK,kBAAoBe,EAAQ,IAAM8kd,EAAW,cAAevzb,EAAKukd,eAAe5gd,MAAO3D,EAAKukd,eAAe36a,OAAS+8Z,EAAMrG,WAAWzK,cAAe,KAAM71b,EAAKukd,eAAe9oB,UAAWkrB,GACzO7M,GAAmBnT,EAAMoW,aAAc9of,KAAKgB,QAAS0xe,EAAMtsM,SAAS4+H,SAASshI,GAAc5zD,EAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM39Y,KAGvIwlc,EAAgB7oiB,UAAU+oiB,oBAAsB,SAAUjkiB,GAClDA,GACAA,EAAQ40B,aAAa,QAAS,wBAG/BmvgB,EAzlB0B,CA0lBnClqB,IChnBEx8e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GA0BzC8ngB,GAA6B,SAAUpngB,GAEvC,SAASongB,IACL,OAAkB,OAAXpngB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAqT/D,OAvTAq+B,GAAUkogB,EAAapngB,GAUvBongB,EAAYrqiB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAOuuW,GAI3D,IAHA,IAAIyY,EAAa9I,GAAiB5Z,EAAOyQ,UACrCklB,EAAWj6X,EAAM8zW,QACjBomB,EAAWl6X,EAAMg0W,QACZ31e,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIwoiB,EAAejjiB,EAAGvF,GACtBwoiB,EAAatpe,QAAUspe,EAAatpe,YAAe9/D,YAAkBw8f,IAAa4sC,EAAahuM,OAASohK,IAClGx8f,YAAkBy8f,IAAa2sC,EAAahuM,OAASqhK,GAE3D51B,EAAOtoZ,OAAO9+E,SACTone,EAAOyQ,SAASv2e,QAAQ,WAAa,EACtC6B,KAAKymiB,qBAAqBxiE,EAAQpkW,EAAOF,GAGzCskW,EAAOyO,MAAMiU,EAAa,gBAAgBj3d,OAAOu0c,EAAQpkW,EAAOF,EAAOuuW,KAUnFq4D,EAAYrqiB,UAAUuqiB,qBAAuB,SAAUxiE,EAAQpkW,EAAOF,GAClE,IAAIrzH,EACAyge,EACA8T,EACAO,EACAslD,EACAxjgB,EAEAyjgB,EACAC,EACA/qd,EACAI,EACAF,EACAI,EACAowI,EACAC,EACA60R,EAGAwlD,EACAC,EAEAC,EACAC,EAOAC,EAbA7zhB,EAAMysH,EAAM0zW,YAAYnge,IACxBose,EAAWvb,EAAOj7D,SAASt5X,MAAQ,EAAKu0b,EAAOj7D,SAASznZ,EAGxDk+d,EAAWxb,EAAOj7D,SAASr5X,OAAS,EAAKs0b,EAAOj7D,SAAS1yZ,EAGzD4whB,EAAoC,gBAApBjjE,EAAOyQ,SACvB+nC,EAA0B,UAAhBx4C,EAAO94d,KACjBykf,EAAgC,gBAApBjwX,EAAMk0W,UAClBszD,EAAiC,mBAApBljE,EAAOyQ,SACpBn1Y,EAAY,GACZ6nc,EAAe,EAEf7kiB,GAAY0he,EAAOtoZ,OAAO,GAAKsoZ,EAAOtoZ,OAAO,GAAG48Q,OAAS,EAAI0rI,EAAOtoZ,OAAO,GAAG48Q,QAAU0rI,EAAOtoZ,OAAO,GAAG48Q,OAEzGykB,EAA6B,aAApBn9O,EAAMg0W,WAAqD,iBAAzBh0W,EAAM4gX,eAAqC,EACtF5gX,EAAMy7W,YAAc/4e,EAAW,EAAIA,EAAW,EAC9C6zE,EAAoC,aAApBypD,EAAMg0W,UAA2Bh0W,EAAMqhX,iBAAmB,EAC9Elhf,KAAKqniB,kBAAkBpjE,GACvB,IAAIl2b,EAAW8xF,EAAMy7W,WAAcrX,EAAO8oC,UAAY,EAAI9oC,EAAOl2b,SAAYk2b,EAAOl2b,SACpF,GACIq5f,GAAgBhxd,EAChBhjE,GAAOgjE,QACFhjE,GAAOysH,EAAM0zW,YAAYlge,KAA2B,aAApBwsH,EAAMg0W,UAA2B,EAAI,IAC9E,IAAK,IAAI71e,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIo5C,EAAQ7zC,EAAGvF,GACfo5C,EAAMs/c,gBAAkB,GACxBt/c,EAAMw+c,QAAU,GACZx+c,EAAM8lB,SAAWohb,GAAYra,EAAOtoZ,OAAOvkC,EAAM58B,MAAQ,GAAI48B,EAAO6sb,EAAOtoZ,OAAOvkC,EAAM58B,MAAQ,GAAIypd,KAEpGyiE,GADgB7ma,EAAMy7W,WAAcz7W,EAAMg1W,aAAaxhe,IAAM+jC,EAAMmhT,OAAUnhT,EAAMmhT,OAAS14N,EAAMg1W,aAAazhe,MAEzG7Q,EAAW0he,EAAO8oC,UAAah/d,EAAWivU,GAAUoqL,EAAe,IAAMvna,EAAMghX,WACrF6lD,GAAyCU,EACzCvmD,EAAa,EAAIt5e,KAAK6pY,IAAMs1J,EAAkB7ma,EAAMghX,YACpDO,EAAW,EAAI75e,KAAK6pY,IAAOs1J,EAAkB7ma,EAAMghX,WAAet+e,EAAW0he,EAAO8oC,UAAcq6B,GAC/E,IAAfvmD,GAAiC,IAAbO,GACpBA,EAAW,EAAI75e,KAAK6pY,GACpB61J,EAAW,KAGXA,EAAW,IAEfN,EAAkB9lD,EAClB+lD,EAAgBxlD,EAChBP,EAAcA,EAAa,GAAMt5e,KAAK6pY,GAAO6yF,EAAOi1C,cAAgB,EACpE93B,EAAaA,EAAW,GAAM75e,KAAK6pY,GAAM,KAAa6yF,EAAOi1C,cAAgB,EACzEiuB,GAAcD,GACd36U,EAAa26U,EAAgB9vf,EAAM4yI,IAAMi6S,EAAO2iB,cAAc8C,YAAYtyc,EAAM58B,OAChFgyM,EAAW06U,EAAgB9vf,EAAM6yI,KAAOg6S,EAAO2iB,cAAcC,UAAUzvc,EAAM58B,OAE7EgyM,GADAA,EAAYojS,EAAY3c,GAAqB,IAAbzmR,EAAiB,EAAIA,EAAU7sF,EAAMszW,SAAWzmR,GAC1D7sF,EAAM4zW,YAAYlge,IAAMssH,EAAM4zW,YAAYlge,IAAMm5M,IAGtED,EAAa5sF,EAAMk1W,aAAazhe,IAChCo5M,EAAWp1K,EAAMohT,OAAS74N,EAAM4zW,YAAYlge,IAAMssH,EAAM4zW,YAAYlge,IAAM+jC,EAAMohT,QAGpF38Q,EAAK2ja,GADLt8c,EAASqpL,IAAeC,EAAW,EAAIy3Q,EAAOyO,MAAMxvc,OAASm4c,GAAmB7uR,EAAU7sF,IAClEp4H,KAAKkqY,IAAIovG,GACjC5ka,EAAKuja,EAAUt8c,EAAS37B,KAAKkqY,IAAI2vG,GACjCrla,EAAK0ja,EAAUv8c,EAAS37B,KAAKmwH,IAAImpX,GACjC1ka,EAAKsja,EAAUv8c,EAAS37B,KAAKmwH,IAAI0pX,GAEjCylD,EAAUrnD,GADV6B,EAAcpd,EAAOyO,MAAMxvc,OAASm4c,GAAmC,IAAf9uR,GAA+C,IAA3B5sF,EAAMk1W,aAAazhe,IAAausH,EAAMk1W,aAAazhe,IAAMm5M,EAAY5sF,IAC/Gp4H,KAAKkqY,IAAIovG,GAC3CimD,EAAUrnD,EAAU4B,EAAc95e,KAAKmwH,IAAImpX,GAC3CkmD,EAAQvnD,EAAU6B,EAAc95e,KAAKkqY,IAAI2vG,GACzC4lD,EAAQvnD,EAAU4B,EAAc95e,KAAKmwH,IAAI0pX,GAErC7hZ,EADAk9a,EACa,KAAY5gc,EAAK,IAAME,EAAvB,MAA8C74C,EAAS,IAAMA,EAA7D,MACP+jgB,EADO,MACoBhrd,EAAK,IAAME,EAD/B,MACsD4qd,EAAQ,IAAMC,EADpE,MAEG3lD,EAAc,IAAMA,EAFvB,UAGPwlD,EAAU,IAAMC,EAHT,KAMA,KAAYjrd,EAAK,IAAME,EAAvB,MAA8CE,EAAK,IAAME,EAAzD,MACP4qd,EAAQ,IAAMC,EADP,MACiCH,EAAU,IAAMC,EADjD,KAGjB1vf,EAAMu+c,WAAa,IAAIxU,GAASwlD,EAAiBC,EAAevlD,EAAan+c,EAAQwjgB,GACrF35D,EAAW/se,KAAK+5gB,aAAa91C,EAAOyO,MAAOzO,EAAQ7sb,GACnD9qC,EAAU,IAAIq/d,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAQ,UAAY48B,EAAM58B,MAAOuyd,EAAS3wS,KAAM2wS,EAASpkU,OAAOj5H,MAAOq9b,EAASpkU,OAAOhzF,MAAOsuZ,EAAOtgc,QAASsgc,EAAOuD,UAAWjoY,GAClMwtY,EAAShqd,SACV/iB,KAAK27gB,eAAervgB,EAAS23d,EAAQ,IACjCw4C,GACArle,EAAMs/c,gBAAgB90f,KAAK,CACvB2f,EAAGi+d,EAAUt8c,EAAS37B,KAAKkqY,IAAKovG,GAAcO,EAAWP,GAAc,GACvEvqe,EAAGmpe,EAAUv8c,EAAS37B,KAAKmwH,IAAKmpX,GAAcO,EAAWP,GAAc,KAEvEqmD,GACA9vf,EAAMs/c,gBAAgB90f,KAAK,CACvB2f,EAAGi+d,EAAU6B,EAAc95e,KAAKkqY,IAAKovG,GAAcO,EAAWP,GAAc,GAC5Evqe,EAAGmpe,EAAU4B,EAAc95e,KAAKmwH,IAAKmpX,GAAcO,EAAWP,GAAc,OAKpFzpc,EAAMs/c,gBAAgB90f,KAAK,CAAE2f,GAAIs6D,EAAKI,GAAM,EAAG3lE,GAAIylE,EAAKI,GAAM,IAC1D+qd,GACA9vf,EAAMs/c,gBAAgB90f,KAAK,CAAE2f,GAAIwlhB,EAAQF,GAAW,EAAGvwhB,GAAI0whB,EAAQF,GAAW,OAMlG9miB,KAAKo/f,aAAan7B,GAClBA,EAAO+wB,cAAe,GAQ1BuxC,EAAYrqiB,UAAU69gB,aAAe,SAAUrnC,EAAOzO,EAAQ7sb,GAC1D,IAAI21b,EAAW,CACXhqd,QAAQ,EAAO3I,KAAMy8d,GAAa5S,OAAQA,EAAQ7sb,MAAOA,EACzDglJ,KAAM6nS,EAAOw5B,cAAcrmd,EAAO6sb,EAAO40B,UACzClwV,OAAQs7T,EAAOy5B,eAAetmd,EAAO,CAAE1H,MAAOu0b,EAAOt7T,OAAOj5H,MAAOimC,MAAOsuZ,EAAOt7T,OAAOhzF,SAI5F,OAFA+8Z,EAAM3od,QAAQ8sd,GAAa9J,GAC3B31b,EAAMu+B,MAAQo3Z,EAAS3wS,KAChB2wS,GAOXw5D,EAAYrqiB,UAAUmriB,kBAAoB,SAAUpjE,GAKhD,IAJA,IACI0d,EAAmB,GACnB6Z,EAAgB,GAChBge,EAAU,CAAEzM,UAAW,EAAGh/d,SAAU,MAC/B/vC,EAAK,EAAGuF,EAJL0ge,EAAOyO,MAIS4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIspiB,EAAW/jiB,EAAGvF,IACdspiB,EAASpqe,SAA8B,UAAlBoqe,EAASn8hB,MAAsC,UAAlBm8hB,EAASn8hB,OAA8D,IAAzCm8hB,EAAS5yD,SAASv2e,QAAQ,WAC1Gwjf,EAAiB//e,KAAK0liB,GAG9B,IAAK,IAAI1qiB,EAAI,EAAGA,EAAI+kf,EAAiB9kf,OAAQD,IAAK,CAC9C,IAAI2qiB,EAAW5lD,EAAiB/kf,IACe,IAA3C2qiB,EAAS7yD,SAASv2e,QAAQ,YACtBopiB,EAAS/rC,mBACqCx/f,IAA1Cw/f,EAAc+rC,EAAS/rC,gBACvB+rC,EAASx5f,SAAWyre,EAAQzM,UAC5BvR,EAAc+rC,EAAS/rC,eAAiBge,EAAQzM,aAGhDw6B,EAASx5f,SAAWytd,EAAc+rC,EAAS/rC,eAItB,OAArBge,EAAQzre,UACRw5f,EAASx5f,SAAWyre,EAAQzM,UAC5ByM,EAAQzre,SAAWyre,EAAQzM,aAG3Bw6B,EAASx5f,SAAWyre,EAAQzre,SAKpCw5f,EAASx5f,SAAWyre,EAAQzM,YAGpC,IAASnwgB,EAAI,EAAGA,EAAI+kf,EAAiB9kf,OAAQD,IAAK,CAClC+kf,EAAiB/kf,GACvBmwgB,UAAYyM,EAAQzM,YASlCw5B,EAAYrqiB,UAAUkhgB,YAAc,SAAUn5B,GAC1C,IAAInjc,EAAWmjc,EAAO7jc,UAAUU,SAC5BjhC,EAAQoke,EAAO7jc,UAAUvgC,MACzBu6gB,EAAen2C,EAAO84B,cAAczue,WACpCwsC,EAAQ,EACZ,GAAwB,YAApBmpa,EAAOyQ,SACP,IAAK,IAAI12e,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIo5C,EAAQ7zC,EAAGvF,GACVo5C,EAAMs/c,gBAAgB75f,QAAWu9gB,EAAat/c,KAGnDonb,GAAck4B,EAAat/c,GAAQj7D,EAAOihC,EAAUmjc,EAAQ7sb,EAAM58B,MAAO48B,EAAMs/c,gBAAgB,IAAI,GACnG57b,UAIJ,IAAKA,EAAQ,EAAGA,EAAQs/c,EAAav9gB,OAAQi+D,IACzC96D,KAAKwniB,sBAAsBptB,EAAat/c,GAAQj7D,EAAOihC,EAAUmjc,IAU7EsiE,EAAYrqiB,UAAUsriB,sBAAwB,SAAUC,EAAgB5niB,EAAOihC,EAAUmjc,GACrF,IAAIyjE,EAAezjE,EAAOj7D,SAASt5X,MAAQ,EAAIu0b,EAAOj7D,SAASznZ,EAC3DomhB,EAAe1jE,EAAOj7D,SAASr5X,OAAS,EAAIs0b,EAAOj7D,SAAS1yZ,EAC5DkkgB,EAAgB,EACpBitB,EAAezzgB,MAAMwC,WAAa,SAClC,IAAI0I,IAAU,IAAIY,QAAQ2ngB,EAAgB,CACtC3mgB,SAAUA,EACVjhC,MAAOA,EACPshC,SAAU,SAAUlhC,GACZA,EAAKygC,UAAYzgC,EAAKJ,QACtBI,EAAKe,QAAQgzB,MAAMwC,WAAa,UAChCgkf,GAAkBv6gB,EAAKygC,UAAYzgC,EAAKJ,OAASI,EAAK6gC,SACtD2mgB,EAAe7xgB,aAAa,YAAa,aAAe8xgB,EAClD,IAAMC,EAAe,WAAantB,EAAgB,gBAAmBktB,EAAgB,KAAQC,EAAgB,OAG3HhvhB,IAAK,WACD8uhB,EAAezzgB,MAAMwC,WAAa,UAClCixgB,EAAepngB,gBAAgB,aAC/B4jc,EAAOyO,MAAM3od,QAAQ,oBAAqB,CAAEk6c,OAAQA,EAAOyO,MAAMpze,SAAW,GAAK2ke,QAK7FsiE,EAAYrqiB,UAAU6hhB,uBAAyB,SAAUl+Y,EAAOzmF,GAC5D,IAAI6oG,EACApmE,EACAE,EAEA74C,EADQljC,KAAK0ye,MACExvc,OACfq8D,EAAYnmD,EACZwuf,EAAe/na,EAAMy7W,WAAa,OAAS,OAI/C,OAHAr5V,EAASy+V,GAAoBC,GAAwB9gX,EAAM81W,cAAc,GAAGn5e,MAAOqjI,GAAQ7/H,KAAK6gf,YAGzFthZ,EAAa,MAFpB1jB,EAAK77E,KAAKw/e,QAAUt8c,EAAS++G,EAAO1gI,GAEJ,KADhCw6D,EAAK/7E,KAAKy/e,QAAUv8c,EAAS++G,EAAO3rI,GACO,MAAQ4sB,EAAS,IAAMA,EAAS,MAAQ0kgB,EAC/E/rd,EAAK,KAAO77E,KAAKy/e,QAAUv8c,GAAU,MAAQA,EAAS,IAAMA,EAAS,MAAQ0kgB,EAAe/rd,EAAK,IAAME,EAAK,KAKpHwqd,EAAYrqiB,UAAU2+B,cAAgB,WAIlC,MAAO,eAQX0rgB,EAAYrqiB,UAAUif,QAAU,aAKzBorhB,EAxTsB,CAyT/BxB,ICnVE1mgB,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAmBzCopgB,GAA6B,SAAU1ogB,GAEvC,SAAS0ogB,IACL,OAAkB,OAAX1ogB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmE/D,OArEAq+B,GAAUwpgB,EAAa1ogB,GAUvB0ogB,EAAY3riB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAOuuW,GAI3D,IAHA,IAAIyY,EAAa9I,GAAiB5Z,EAAOyQ,UACrCklB,EAAWj6X,EAAM8zW,QACjBomB,EAAWl6X,EAAMg0W,QACZ31e,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAIo5C,EAAQ7zC,EAAGvF,GACfo5C,EAAM8lB,QAAU9lB,EAAM8lB,YAAe9/D,YAAkBw8f,IAAaxid,EAAMohT,OAASohK,IAC7Ex8f,YAAkBy8f,IAAazid,EAAMohT,OAASqhK,GAEpD51B,EAAOtoZ,OAAO9+E,UAC6B,IAAvCone,EAAOyQ,SAASv2e,QAAQ,UACxB8le,EAAOyO,MAAMiU,EAAa,gBAAgBj3d,OAAOu0c,EAAQpkW,EAAOF,EAAOuuW,GAGvElue,KAAKymiB,qBAAqBxiE,EAAQpkW,EAAOF,KAKrDkoa,EAAY3riB,UAAU8hhB,uBAAyB,SAAUn+Y,EAAOzmF,GAC5D,IAEI2iC,EACAkmE,EACA/+G,EAJQljC,KAAK0ye,MAIExvc,OACfrmC,EAASgjI,EAAM81W,cAAc94e,OAC7B0iG,EAAYnmD,EAChB6oG,EAASy+V,GAAoBC,GAAwB9gX,EAAM81W,cAAc,GAAGn5e,MAAOqjI,GAAQ7/H,KAAK6gf,YAChG9ka,EAAK/7E,KAAKy/e,QAAUv8c,EAAS++G,EAAO3rI,EAEpCipF,GAAa,OADRv/F,KAAKw/e,QAAUt8c,EAAS++G,EAAO1gI,GACV,IAAMw6D,EAAK,IACrC,IAAK,IAAIn/E,EAAIC,EAAS,EAAGD,GAAK,EAAGA,IAC7BqlJ,EAASy+V,GAAoBC,GAAwB9gX,EAAM81W,cAAc/4e,GAAGJ,MAAOqjI,GAAQ7/H,KAAK6gf,YAChG9ka,EAAK/7E,KAAKy/e,QAAUv8c,EAAS++G,EAAO3rI,EAEpCipF,GAAa,MADRv/F,KAAKw/e,QAAUt8c,EAAS++G,EAAO1gI,GACX,IAAMw6D,EAAK,IAExC,OAAOwjB,GAKXsoc,EAAY3riB,UAAU2+B,cAAgB,WAIlC,MAAO,eAQXgtgB,EAAY3riB,UAAUif,QAAU,aAKzB0shB,EAtEsB,CAuE/BtB,IC5CF,IC3CWtod,GD2CP6pd,GAAgC,WAOhC,SAASA,EAAep1D,GACpB1ye,KAAKgphB,QAAUt2C,EAAM1xe,QAAQyY,GAAK,IA+JtC,OAvJAquhB,EAAe5riB,UAAU2wgB,eAAiB,SAAUl8c,EAAQy1O,GACxD,IAAI2hQ,EAAc3hQ,EAAS6/L,YAAY,CACnCxsd,GAAIzZ,KAAKgphB,QAAU,aAAer4d,EAAO5kB,KAAK3xB,KAC9CopB,UAAW,cAAiBmtB,EAAO4jc,YAAc5jc,EAAO5kB,KAAKuvc,WAAc3qb,EAAOhhB,OAASghB,EAAO5kB,KAAKuvc,WACnG3qb,EAAOjhB,MAAQ,KAAO,KAAOihB,EAAO4jc,YAAc5jc,EAAO5kB,KAAKuvc,WAAa,IAAM3qb,EAAO5kB,KAAKuvc,WAC7F3qb,EAAOhhB,OAASghB,EAAO4jc,WAAa5jc,EAAOjhB,MAAQ,KAAO,aAAeihB,EAAO4jc,YAAc5jc,EAAO5kB,KAAKuvc,WAC1G,KAAO3qb,EAAO4jc,WAAa,MAAQ5jc,EAAO5kB,KAAKuvc,WAAa,MAAQ,KAAO,MAE/E0sD,EAAgB5hQ,EAAS6/L,YAAY,CACrCxsd,GAAIzZ,KAAKgphB,QAAU,sBAAwBr4d,EAAO5kB,KAAK3xB,OAEvD6thB,EAAa7hQ,EAAS6/L,YAAY,CAClCxsd,GAAIzZ,KAAKgphB,QAAU,mBAAqBr4d,EAAO5kB,KAAK3xB,KACpDopB,UAAW,mBASf,OAPAxjC,KAAKkoiB,SAASv3e,EAAQy1O,EAAU4hQ,GAChChoiB,KAAKmoiB,MAAMx3e,EAAQy1O,EAAU6hQ,GAC7BjoiB,KAAKooiB,aAAaz3e,EAAQy1O,EAAU6hQ,GACpCjoiB,KAAKqoiB,OAAO13e,EAAQy1O,EAAU6hQ,GAC9BjoiB,KAAKsoiB,UAAU33e,EAAQy1O,EAAU6hQ,GACjCF,EAAY/liB,YAAYgmiB,GACxBD,EAAY/liB,YAAYimiB,GACjBF,GAWXD,EAAe5riB,UAAUgsiB,SAAW,SAAUv3e,EAAQy1O,EAAU7lS,GAC5D,IAAIyzB,EAAQ28B,EAAO43e,oBACfC,EAAcpiQ,EAASi4H,cAAc,IAAIsrF,GAAW3pf,KAAKgphB,QAAU,qBAAuBr4d,EAAO5kB,KAAK3xB,KAAM4Z,EAAMk0gB,SAAU,CAAEx4f,MAAO,EAAGimC,MAAO3hD,EAAMk0gB,UAAY,EAAG,IAAIj9D,GAAK,EAAG,EAAGt6a,EAAOjhB,MAAOihB,EAAOhhB,QAAS,EAAG,IACxNpvC,EAAOyB,YAAYwmiB,IAWvBV,EAAe5riB,UAAUmsiB,OAAS,SAAU13e,EAAQy1O,EAAU7lS,GAC1D,IAAIyzB,EAAQ28B,EAAO43e,oBACft+hB,EAAS,IAAI0he,GAAW3re,KAAKgphB,QAAU,uBAAyBr4d,EAAO5kB,KAAK3xB,KAAM4Z,EAAM8oc,MAAO,EAAG9oc,EAAM8oc,MAAO,EAAG,GAAI,IAC1H98d,KAAKyoiB,aAAeriQ,EAAS4+H,SAAS/6Z,GACtCA,EAAOwP,GAAKzZ,KAAKgphB,QAAU,wBAA0Br4d,EAAO5kB,KAAK3xB,KACjEpa,KAAK0oiB,cAAgBtiQ,EAAS4+H,SAAS/6Z,GACvCjK,KAAK2oiB,kBAAkB3oiB,KAAK4oiB,WAAY5oiB,KAAK6oiB,eAAgBl4e,EAAOhhB,QACpEpvC,EAAOyB,YAAYhC,KAAKyoiB,cACxBloiB,EAAOyB,YAAYhC,KAAK0oiB,gBAS5BZ,EAAe5riB,UAAUysiB,kBAAoB,SAAUC,EAAYC,EAAgBl5f,GAC/E,IACIm5f,EAAgB,MAASF,EAAaG,EAAoB,GAAK,IAAOp5f,EAAS,EAA/D,OACfi5f,EAAaG,EAAmB,GADjB,UAC+CH,EAAaG,EAAmB,GAD/E,OAEhBC,EAAiB,MAASJ,EAAaC,EAAiBE,EAAoB,IAAO,IAAOp5f,EAAS,EAAlF,OACDi5f,EAAaC,EAAiBE,EAAmB,GADhD,YACgFH,EACjGC,EAAiBE,EAAmB,GAFnB,SAGrB/oiB,KAAKyoiB,aAAa7ygB,aAAa,IAAKkzgB,GACpC9oiB,KAAK0oiB,cAAc9ygB,aAAa,IAAKozgB,IASzClB,EAAe5riB,UAAUisiB,MAAQ,SAAUx3e,EAAQy1O,EAAU7lS,GACzDowD,EAAOnY,OAASx4C,KAAK4oiB,WACrB,IAAI50gB,EAAQ28B,EAAO43e,oBACnBvoiB,KAAKipiB,OAAS7iQ,EAASi4H,cAAc,IAAIsrF,GAAW3pf,KAAKgphB,QAAU,kBAAoBr4d,EAAO5kB,KAAK3xB,KAAM4Z,EAAMm0gB,MAAO,CAAEz4f,MAAO,EAAGimC,MAAO,IAAM,EAAG,IAAIs1Z,GAAKjre,KAAK4oiB,WAAY,EAAG5oiB,KAAK6oiB,eAAgBl4e,EAAOhhB,UAC3MpvC,EAAOyB,YAAYhC,KAAKipiB,SAS5BnB,EAAe5riB,UAAUksiB,aAAe,SAAUz3e,EAAQy1O,EAAU7lS,GAChE,IAAIyzB,EAAQ28B,EAAO43e,oBACft+hB,EAAS,IAAI4/e,GAAa7pf,KAAKgphB,QAAU,wBAA0Br4d,EAAO5kB,KAAK3xB,KAAM4Z,EAAMgxc,OAAQ,CAAEt1b,MAAO,EAAGimC,MAAO3hD,EAAMgxc,QAAU,EAAGhle,KAAK4oiB,WAAYj4e,EAAOhhB,OAAS,EAAG,GAO7Km/b,EAAa1oM,EAASy/L,aACtBqjE,EAAc9iQ,EAAS6/L,YAAY,CACnCxsd,GAAIzZ,KAAKgphB,QAAUr4d,EAAO5kB,KAAK3xB,KAAO,kBAE1C00d,EAAW1se,UAVW,4hBAWtB8miB,EAAY9miB,UAAY,mFACpBpC,KAAKgphB,QAAU,wBACfr4d,EAAO5kB,KAAK3xB,KAAO,2FACnBpa,KAAKgphB,QAAU,yBAA2Br4d,EAAO5kB,KAAK3xB,KAAO,WACjEpa,KAAKmpiB,cAAgB/iQ,EAAS2+L,WAAW96d,GACzCA,EAAOwP,GAAKzZ,KAAKgphB,QAAU,yBAA2Br4d,EAAO5kB,KAAK3xB,KAClEnQ,EAAOq1Q,GAAKt/Q,KAAK4oiB,WAAa5oiB,KAAK6oiB,eACnC7oiB,KAAKopiB,eAAiBhjQ,EAAS2+L,WAAW96d,GAC1C1J,EAAOyB,YAAY8se,GACnBvue,EAAOyB,YAAYhC,KAAKmpiB,eACxB5oiB,EAAOyB,YAAYhC,KAAKopiB,gBACxB7oiB,EAAOyB,YAAYkniB,IASvBpB,EAAe5riB,UAAUosiB,UAAY,SAAU33e,EAAQy1O,EAAU7lS,GAC7D,IAAI8oiB,EAAc,EACdhjC,EAAa,EAIbrye,EAAQ28B,EAAO43e,oBACft+hB,EAAS,IAAI4/e,GAAa7pf,KAAKgphB,QAALhphB,yBAA+C2wD,EAAO5kB,KAAK3xB,KAAM4Z,EAAMs1gB,KAAM,CAAE55f,MAAO,EAAGimC,MAAO3hD,EAAMs1gB,MAAQ,EAAG,EAAG,EAAG,GACrJtpiB,KAAKupiB,WAAanjQ,EAAS6/L,YAAY,CACnCxsd,GAAIzZ,KAAKgphB,QAAU,wBAA0Br4d,EAAO5kB,KAAK3xB,KACzDopB,UAAW,cAAiBxjC,KAAK4oiB,WAAa5oiB,KAAK6oiB,eAAiB,EAL1DW,GAKiE74e,EAAO4jc,WAAa,GAAK,IAChG,KAAO5jc,EAAO4jc,WAAa,KAAO,KAAO,aAAe5jc,EAAO4jc,WAAa,MAAQ,KAAO,MAEnG,IAAK,IAAI33f,EAAI,EAAGA,GAAK,EAAGA,IACpBqN,EAAOwP,GAAKzZ,KAAKgphB,QAAU,uBAAyBpshB,EAAI,IAAM+zD,EAAO5kB,KAAK3xB,KAC1EnQ,EAAOq1Q,GAAK+pR,EACZp/hB,EAAOs8d,GAAK8/B,EACZrmgB,KAAKupiB,WAAWvniB,YAAYokS,EAAS2+L,WAAW96d,IAChDo/hB,EAAoB,IAANzsiB,EAAU,EAAKysiB,EAAc,EAC3ChjC,EAAazpgB,GAAK,EAAI,EAAI,EAE9B2D,EAAOyB,YAAYhC,KAAKupiB,aAErBzB,EAvKyB,GEpChC2B,GAA2B,WAO3B,SAASA,EAAUrmiB,EAAW2oC,GAE1B/rC,KAAK0piB,YAAc,CAAEr2hB,IAAK,KAAMD,IAAK,KAAM7Q,SAAU,KAAMi/G,MAAO,MAClExhH,KAAKoD,UAAYA,EACjBpD,KAAK81B,SAAW,GAChB91B,KAAK2piB,eAAiB,IAAI7B,GAAe1kiB,GACzCpD,KAAK+rC,KAAOA,EACZ/rC,KAAK4piB,kBAAoB5piB,KAAK6piB,gBAAgB1tiB,KAAK6D,MACnDA,KAAK8piB,gBAAkB9piB,KAAK+piB,cAAc5tiB,KAAK6D,MAC/CA,KAAKsif,gBAAkB,IACvBtif,KAAKgnB,UAAYX,IAAQW,UACzBhnB,KAAKgqiB,YAAc3jhB,IAAQ2B,KAAK5N,KA+rBpC,OAxrBAqvhB,EAAUvtiB,UAAU+tiB,WAAa,SAAUppiB,GACvC,IAAI0hC,EACAI,EACA4we,EACA1ygB,EAAEsK,KAAKhN,QAAQ,UAAY,GAE3BokC,GADAgxe,EAAW1ygB,GACM0rC,eAAe,GAAGI,QACnChK,EAAQ4we,EAAShne,eAAe,GAAGK,UAGnCrK,EAAQ1hC,EAAE8rC,QACVhK,EAAQ9hC,EAAE+rC,SAEd,IAAIihe,EAAUhrgB,GAAW7C,KAAKoD,UAAUpC,QAAQyY,GAAK,iBAAmBzZ,KAAK+rC,KAAK3xB,MAAMioB,wBACxFriC,KAAK80f,OAASvyd,EAAQh7B,KAAK8L,IAAIw6f,EAAQ/qe,KAAM,GAC7C9iC,KAAK+0f,OAASpyd,EAAQp7B,KAAK8L,IAAIw6f,EAAQ7qe,IAAK,IAQhDymgB,EAAUvtiB,UAAUg4C,WAAa,SAAUlzC,GACvC4nB,IAAaG,IAAI/nB,EAASqlB,IAAQmC,gBAAiBxoB,KAAKkqiB,gBAAiBlqiB,MACzE4oB,IAAaG,IAAI/nB,EAASqlB,IAAQoC,eAAgBzoB,KAAK6piB,gBAAiB7piB,MACxE4oB,IAAaG,IAAI/nB,EAASqlB,IAAQqC,cAAe1oB,KAAK+piB,cAAe/piB,MACrE4oB,IAAaG,IAAI/nB,EAAS,aAAchB,KAAKmqiB,iBAAkBnqiB,MAC/D8B,OAAOynB,iBAAiB,YAAavpB,KAAK4piB,mBAAmB,GAC7D9niB,OAAOynB,iBAAiB,UAAWvpB,KAAK8piB,iBAAiB,IAO7DL,EAAUvtiB,UAAUgmI,aAAe,SAAUlhI,GACzC4nB,IAAaa,OAAOzoB,EAASqlB,IAAQmC,gBAAiBxoB,KAAKkqiB,iBAC3DthhB,IAAaa,OAAOzoB,EAASqlB,IAAQoC,eAAgBzoB,KAAK6piB,iBAC1DjhhB,IAAaa,OAAOzoB,EAASqlB,IAAQqC,cAAe1oB,KAAK+piB,eACzDnhhB,IAAaa,OAAOzoB,EAAS,aAAchB,KAAKmqiB,kBAChDroiB,OAAO6nB,oBAAoB,YAAa3pB,KAAK4piB,mBAAmB,GAChE9niB,OAAO6nB,oBAAoB,UAAW3pB,KAAK8piB,iBAAiB,IAOhEL,EAAUvtiB,UAAUguiB,gBAAkB,SAAUrpiB,GAC5C,IAAI4Y,EAAK5Y,EAAEo8B,OAAOxjB,GACdpW,EAAOrD,KAAK2piB,eAchB,GAbA3piB,KAAKiqiB,WAAWppiB,GAChBb,KAAKoqiB,aAAepqiB,KAAKsoU,QAAQ7uT,EAAI,iBAAmBzZ,KAAKsoU,QAAQ7uT,EAAI,eACzEzZ,KAAKqqiB,cAAgBrqiB,KAAKsoU,QAAQ7uT,EAAI,kBAAoBzZ,KAAKsoU,QAAQ7uT,EAAI,gBAE3EzZ,KAAKsqiB,WAActqiB,KAAKu0f,YAAcv0f,KAAK+rC,KAAKuvc,WAAct7e,KAAK+0f,OAAS/0f,KAAKu0f,WAAav0f,KAAK0vC,MAC/F1vC,KAAK+0f,OAAS/0f,KAAK+rC,KAAKuvc,WAAat7e,KAAK0vC,MAAQ1vC,KAAK80f,OAAS90f,KAAK80f,OACzE90f,KAAKuqiB,cAAgBlniB,EAAKwliB,eAC1B7oiB,KAAKwqiB,cAAgBnniB,EAAKuliB,WAC1B5oiB,KAAKyqiB,kBAAoBzqiB,KAAK+rC,KAAKupc,aACnCt1e,KAAK0qiB,gBAAkB1qiB,KAAK+rC,KAAKspc,WACjCr1e,KAAK2qiB,WAAa3qiB,KAAK+rC,KAAK8oc,aAC5B70e,KAAK4qiB,eAAgB,EACrB5qiB,KAAKoD,UAAU2mB,QAAQiud,GAAah4e,KAAK6qiB,QAAQ7yD,KAC7Ch4e,KAAKsoU,QAAQ7uT,EAAI,oBAAsBzZ,KAAKsoU,QAAQ7uT,EAAI,cACxDzZ,KAAK8qiB,aAAc,EACnB9qiB,KAAKwse,UAAUx4c,MAAM4lP,OAAS,wBAE7B,GAAI55Q,KAAKsoU,QAAQ7uT,EAAI,sBAAuB,CAC7C,IAAI8je,EAAWv9e,KAAK+qiB,WAAW/qiB,KAAKsqiB,WAAYtqiB,KAAKwqiB,eAIrD,GAHAnniB,EAAKuliB,WAAa5oiB,KAAKgriB,SAASztD,GAAYA,EAAWl6e,EAAKuliB,WAC5D5oiB,KAAKiriB,cAAc5niB,EAAKuliB,WAAYvliB,EAAKwliB,gBACzC7oiB,KAAKkriB,sBAAsB7niB,EAAKuliB,WAAYvliB,EAAKwliB,gBAAgB,GAC7D7oiB,KAAKioF,WAAY,CACjB,IAAIkjd,EAAY9niB,EAAKuliB,WAAa5oiB,KAAKwqiB,cAAgB,YAAc,WACjEvqiB,EAAOD,KAAKoriB,mBAAmB/niB,EAAKuliB,WAAYvliB,EAAKwliB,eAAgBsC,GACrElriB,GACAD,KAAKoD,UAAU2mB,QAAQkud,GAAWh4e,IAWF,KAAxCD,KAAKoD,UAAUpC,QAAQgzB,MAAM2b,SAC7B3vC,KAAKqriB,gBAAiB,EACtBrriB,KAAKoD,UAAUpC,QAAQgzB,MAAM2b,OAAS3vC,KAAKoD,UAAUmgf,cAAc5zc,OAAS,OASpF85f,EAAUvtiB,UAAUosU,QAAU,SAAU7uT,EAAI7W,GACxC,OAAO6W,EAAGtb,QAAQyE,IAAU,GAOhC6miB,EAAUvtiB,UAAU8uiB,SAAW,SAAUztD,GAErC,OAAQA,EADW,GACgB,GAC/BA,EAAWv9e,KAAK2piB,eAAed,eAFhB,GAEiD7oiB,KAAK0vC,OAS7E+5f,EAAUvtiB,UAAU6uiB,WAAa,SAAUO,EAASC,EAAQxC,QACnC,IAAjBA,IAA2BA,EAAe,GAC9C,IAAIgC,EAAc,IAAa/qiB,KAAK0vC,MAAuB,EAAfq5f,GAQ5C,OANIgC,EADAO,EAAUC,EACGA,GAAUA,EAASR,EAAahC,EAAegC,EAAahC,GAG5DwC,GAAUA,EAASvriB,KAAK2piB,eAAed,eAAiBkC,EAAa/qiB,KAAK0vC,MAAQq5f,EAC3FgC,EAAahC,IAUzBU,EAAUvtiB,UAAUgviB,sBAAwB,SAAU3tD,EAAUiuD,EAAcC,QACxD,IAAdA,IAAwBA,GAAY,GACxCzriB,KAAKqvf,YAAa,EAClB,IAAItjd,EAAO/rC,KAAK+rC,KAGZ2/f,EAAqBnuD,EAAWiuD,EAFjB,EACD,EAGlBxriB,KAAKs1e,cAAgBiI,GAAYA,EADZwrD,KACyC,EADzCA,IAC8D,KAAO/oiB,KAAKu0f,WACzFxod,EAAKmE,KAAKP,OAAS3vC,KAAK0vC,OAC9B1vC,KAAKq1e,YAAcm2D,GAAgBE,GAAsB1riB,KAAK0vC,MAAQq5f,EAA6B,KAAO/oiB,KAAKu0f,WACzGxod,EAAKmE,KAAKP,OAAS3vC,KAAK0vC,OAC9B3D,EAAKupc,aAAet1e,KAAKs1e,aAAe,EAAI,EAAIt1e,KAAKs1e,aAAe,GAAM,EAAIt1e,KAAKs1e,aACnFvpc,EAAKspc,WAAao2D,EAAYzriB,KAAKq1e,WAAatpc,EAAKspc,YAOzDo0D,EAAUvtiB,UAAU2tiB,gBAAkB,SAAUhpiB,GAC5C,IAAIo8B,EAASp8B,EAAEo8B,OACX55B,EAAOrD,KAAK2piB,eAChB3piB,KAAKiqiB,WAAWppiB,GAChBb,KAAK2riB,UAAU1ugB,GACfj9B,KAAKisgB,SAAShve,GAEd,IAOIh9B,EAPAqriB,EAAWtriB,KAAKu0f,YAAcv0f,KAAK+rC,KAAKuvc,WAAct7e,KAAK0vC,MAAQ1vC,KAAK+0f,OAAS/0f,KAAKu0f,WACtFv0f,KAAK+0f,OAAS/0f,KAAK80f,OACnBtif,EAAQxS,KAAK+rC,KAAK8oc,aAClBS,EAAet1e,KAAKs1e,aACpBD,EAAar1e,KAAKq1e,WAElB81D,EADanriB,KAAKwqiB,cAAgBnniB,EAAKuliB,WACd,EAAI,YAAc,WAE3C5oiB,KAAKioF,aAAejoF,KAAK8qiB,aAAe9qiB,KAAKoqiB,cAAgBpqiB,KAAKqqiB,iBAClEpqiB,EAAOD,KAAKoriB,mBAAmB/niB,EAAKuliB,WAAYvliB,EAAKwliB,eAAgBsC,IAEzE,IAAIS,EAAe3riB,EAAOA,EAAK2riB,aAAe,KAC9C,GAAI5riB,KAAK8qiB,YAAa,CAClB9qiB,KAAKoD,UAAU8qc,YAAcluc,KAAK8qiB,YAClCQ,EAAWtriB,KAAKu0f,YAAcv0f,KAAK+rC,KAAKuvc,WAAct7e,KAAK0vC,MAAQ47f,EAAUA,EAC7E,IAAI/tD,EAAWl6e,EAAKuliB,YAAc0C,EAAUtriB,KAAKsqiB,YAC7CgB,GAAW/tD,EAAWl6e,EAAKwliB,eAC3B7oiB,KAAK2riB,UAAU1ugB,GAGfj9B,KAAKwse,UAAUx4c,MAAM4lP,OAAS,mBAE9B0xR,GAAW,GAAKA,GAAW/tD,EAAWl6e,EAAKwliB,iBAC3CxliB,EAAKuliB,WAAa5oiB,KAAKgriB,SAASztD,GAAYA,EAAWl6e,EAAKuliB,WAC5D5oiB,KAAKiriB,cAAc5niB,EAAKuliB,WAAYvliB,EAAKwliB,gBACzC7oiB,KAAKsqiB,WAAagB,EAClBtriB,KAAKkriB,sBAAsB3tD,EAAUl6e,EAAKwliB,gBAAgB,IAE9D7oiB,KAAKoD,UAAU2mB,QAAQmud,GAAel4e,KAAK6qiB,QAAQ3yD,GAAe1le,EAAO8ie,EAAcD,EAAYu2D,SAE9F5riB,KAAKoqiB,cAAgBpqiB,KAAKqqiB,iBAC/BrqiB,KAAK6riB,cACL7riB,KAAKoD,UAAU2mB,QAAQmud,GAAel4e,KAAK6qiB,QAAQ3yD,GAAe1le,EAAO8ie,EAAcD,EAAYu2D,MAQ3GnC,EAAUvtiB,UAAUiuiB,iBAAmB,SAAUtpiB,GAC7C,IAAIgtgB,EAAUhrgB,GAAW7C,KAAKoD,UAAUpC,QAAQyY,GAAK,iBAAmBzZ,KAAK+rC,KAAK3xB,MAAMioB,wBACxFriC,KAAK80f,OAASj0f,EAAE8rC,QAAUplC,KAAK8L,IAAIw6f,EAAQ/qe,KAAM,GACjD9iC,KAAK+0f,OAASl0f,EAAE+rC,QAAUrlC,KAAK8L,IAAIw6f,EAAQ7qe,IAAK,GAChD,IASI/iC,EATA8oa,EAAS,GACT1la,EAAOrD,KAAK2piB,eACZ59f,EAAO/rC,KAAK+rC,KACZwzD,EAAkC,YAArBv/F,KAAKgqiB,aAA8BhqiB,KAAKgnB,UACrBnmB,EAAc,WAAI,IAAO,EAAI,GAAK,GAAhEA,EAAEmtQ,OAAU,EAAI,EAAI,GAAK,EAC3B89R,EAAavkiB,KAAK8L,IAAI9L,KAAK8L,IAAI,EAAImxe,GAAOz4c,EAAKspc,WAAY,EAAG,GAAI,GAAM,IAAO91Y,EAAY,GAC3F/sF,EAAQxS,KAAK+rC,KAAK8oc,aAClBS,EAAet1e,KAAKs1e,aACpBD,EAAar1e,KAAKq1e,WAElBy2D,GAAc,IAEd/iI,GADAA,EAA8B,eAArBh9X,EAAKq3V,YAA+BpjY,KAAK80f,OAAS/od,EAAKmE,KAAKR,MAAQ,EAAK1vC,KAAK+0f,OAAShpd,EAAKmE,KAAKP,QACxF,EAAI,EAAIo5X,EAAS,EAAI,EAAIA,EAC3C/oa,KAAKq1e,WAA6B,IAAfy2D,EAAoB,EAAItnD,GAAO,EAAIsnD,EAAY,EAAG,GACrE9riB,KAAKs1e,aAA+B,IAAfw2D,EAAoB,EAAI//f,EAAKupc,cAAiBvpc,EAAKspc,WAAar1e,KAAKq1e,YAActsE,GAE5G1la,EAAKuliB,WAAa5oiB,KAAKgriB,SAAShriB,KAAKs1e,aAAet1e,KAAK0vC,OAAS1vC,KAAKs1e,aAAet1e,KAAK0vC,MAAQrsC,EAAKuliB,WACxG5oiB,KAAKqvf,YAAa,EAClBrvf,KAAKiriB,cAAc5niB,EAAKuliB,WAAYvliB,EAAKwliB,gBACrC7oiB,KAAKioF,YACLjoF,KAAKkriB,sBAAsB7niB,EAAKuliB,WAAYvliB,EAAKwliB,gBAErD98f,EAAKspc,WAAar1e,KAAKq1e,WACvBtpc,EAAKupc,aAAet1e,KAAKs1e,aACrBt1e,KAAKioF,aACLhoF,EAAOD,KAAK+riB,yBAAyB1oiB,EAAKuliB,WAAYvliB,EAAKwliB,kBAElD5oiB,EAAK2riB,aAAan4D,UAAYxze,EAAK+riB,kBAAkBv4D,SAAaxze,EAAK2riB,aAAaj4D,UACrF1ze,EAAK+riB,kBAAkBr4D,UACvB3ze,KAAKoD,UAAU2mB,QAAQkud,GAAWh4e,GAClCD,KAAKisiB,aAAc,GAI1BjsiB,KAAKioF,YACNjoF,KAAKoD,UAAU2mB,QAAQmud,GAAel4e,KAAK6qiB,QAAQ3yD,GAAe1le,EAAO8ie,EAAcD,KAQ/Fo0D,EAAUvtiB,UAAU6tiB,cAAgB,WAChC,IAAI9piB,EACJD,KAAKw4C,OAASx4C,KAAK2piB,eAAef,WAClC,IAEI8C,EAAqB1riB,KAAKw4C,OAASx4C,KAAK2piB,eAAed,eAFxC,EACD,EAMlB,IAHK7oiB,KAAKoqiB,eAAgBpqiB,KAAKqqiB,eAAmBrqiB,KAAKioF,aACnDjoF,KAAK+rC,KAAKspc,WAAcq2D,GAAsB1riB,KAAK0vC,MAAQ,GAAM1vC,KAAKw4C,OAFrDuwf,KAEiF,EAAK,EAAI/oiB,KAAKq1e,YAEhHr1e,KAAKioF,WAAY,CACjB,IAAI8id,EAAa/qiB,KAAKwqiB,cAAgBxqiB,KAAKw4C,OAC3C,IAAKuyf,EAAa,GAAKA,EAAa,IAAM/qiB,KAAK8qiB,YAAa,CACxD,IAAIK,EAAYJ,EAAa,EAAI,YAAc,WAE3C/qiB,KAAKw4C,OADS,cAAd2yf,EACenriB,KAAKw4C,OAASjxC,KAAKgH,IAAIw8hB,GAAe/qiB,KAAK0vC,MAZnD,EAY0E1vC,KAAKw4C,OAClFx4C,KAAK0vC,MAbF,EAayB1vC,KAAK2piB,eAAed,eAGrC7oiB,KAAKw4C,OAASx4C,KAAK2piB,eAAed,eAAiBthiB,KAAKgH,IAAIw8hB,GAhBpE,EAiBH/qiB,KAAKw4C,OAjBF,GAmBXv4C,EAAOD,KAAKoriB,mBAAmBpriB,KAAKw4C,OAAQx4C,KAAK2piB,eAAed,eAAgBsC,MAE5EnriB,KAAKoD,UAAU2mB,QAAQkud,GAAWh4e,GAClCD,KAAK4qiB,eAAgB,IAGzB5qiB,KAAKoqiB,cAAgBpqiB,KAAKqqiB,iBAC1BpqiB,EAAOD,KAAKoriB,mBAAmBpriB,KAAKw4C,OAAQx4C,KAAK2piB,eAAed,mBAE5D7oiB,KAAKoD,UAAU2mB,QAAQkud,GAAWh4e,GAClCD,KAAK4qiB,eAAgB,GAIjC5qiB,KAAK8qiB,aAAc,EACnB9qiB,KAAKoqiB,cAAe,EACpBpqiB,KAAKqqiB,eAAgB,EACrBrqiB,KAAKisiB,aAAc,EACnBjsiB,KAAKoD,UAAU8qc,aAAc,EACzBluc,KAAK4qiB,gBAAkB5qiB,KAAKioF,aAC5BjoF,KAAKoD,UAAU2mB,QAAQkud,GAAWj4e,KAAK6qiB,QAAQ3yD,GAAel4e,KAAK2qiB,WAAY3qiB,KAAKyqiB,kBAAmBzqiB,KAAK0qiB,kBAC5G1qiB,KAAK4qiB,eAAgB,GAOrB5qiB,KAAKqriB,iBACLrriB,KAAKoD,UAAUpC,QAAQgzB,MAAM2b,OAAS,OAG9C85f,EAAUvtiB,UAAU6viB,yBAA2B,SAAUG,EAAcC,GACnE,IAAI92D,EACAC,EACAr1e,EACAuS,EAAQxS,KAAK0piB,YACb0C,EAAgBpsiB,KAAKqsiB,YAAYrsiB,KAAKssiB,cAAetsiB,KAAKi8e,aAAa,GAEtEiwD,EAAeC,EADD,GACqCnsiB,KAAK0vC,QACzD4lc,GAAgB42D,EAFD,GAEgClsiB,KAAK0vC,MACpD2lc,EAAa82D,EAAoBnsiB,KAAK0vC,OAE1C,IAAI68f,EAAe/5hB,EAAMY,IAAMkie,EAAe9ie,EAAMgvG,MAChDgrb,EAAaD,EAAel3D,EAAa7ie,EAAMgvG,MAInD,OAHIgrb,IACAvsiB,EAAO,CAAE8rC,KAAM/rC,KAAK+rC,KAAM6/f,aAAc5riB,KAAKqsiB,YAAYE,EAAcC,GAAY,GAAOR,kBAAmBI,IAE1GnsiB,GAeXwpiB,EAAUvtiB,UAAUkviB,mBAAqB,SAAUc,EAAcC,EAAkBhB,GAC/E,IACI91D,EACAC,EACAi3D,EACAC,EACAvsiB,EALAyriB,EAAqBS,EAMrB35hB,EAAQxS,KAAK0piB,YACb0C,EAAgBpsiB,KAAKqsiB,YAAYrsiB,KAAKssiB,cAAetsiB,KAAKi8e,aAAa,GA4B3E,OAzBIj8e,KAAKqqiB,eAA+B,cAAdc,GAEtB91D,IADAq2D,EAAqB1riB,KAAKqqiB,cAAgBqB,EAF5B,GAE+DA,GAH9D,GAIoC1riB,KAAK0vC,MACxD4lc,EAA6B,cAAd61D,GAA6Be,EAL7B,GAK4DlsiB,KAAK0vC,MAAQ1vC,KAAK+rC,KAAKupc,aAElGk3D,GADAD,EAA6B,cAAdpB,EAA6B34hB,EAAMY,IAAMkie,EAAe9ie,EAAMgvG,MAASxhH,KAAKssiB,eAC/Dj3D,EAAa7ie,EAAMgvG,OAE1CxhH,KAAKoqiB,cAA8B,aAAde,GAC1B71D,GAAgB42D,EAVD,GAUgClsiB,KAAK0vC,MACpD2lc,EAAaq2D,EAAqB1riB,KAAK0vC,MAEvC68f,GADAA,EAAe/5hB,EAAMY,IAAMkie,EAAe9ie,EAAMgvG,QACjBhvG,EAAMY,IAAMm5hB,EAAe/5hB,EAAMY,IAChEo5hB,EAA2B,aAAdrB,EAA4BoB,EAAel3D,EAAa7ie,EAAMgvG,MAASxhH,KAAKi8e,aAEpFj8e,KAAK8qiB,cACVx1D,EAA6B,cAAd61D,GAA6Be,EAjB7B,GAiB4DlsiB,KAAK0vC,OAASw8f,EAjB1E,GAiByGlsiB,KAAK0vC,MAC7H2lc,EAAcr1e,KAAK2piB,eAAed,eAAkB7oiB,KAAK0vC,MAGzD88f,GADAD,GADAA,EAAe/5hB,EAAMY,IAAMkie,EAAe9ie,EAAMgvG,QACjBhvG,EAAMY,IAAMm5hB,EAAe/5hB,EAAMY,KACpCiie,EAAa7ie,EAAMgvG,OAE/Cgrb,IACAvsiB,EAAO,CAAE8rC,KAAO/rC,KAAKoD,UAAU9D,SAAW,GAAKU,KAAK+rC,KAAO6/f,aAAc5riB,KAAKqsiB,YAAYE,EAAcC,GAAY,GAChHR,kBAAmBI,IAEpBnsiB,GAeXwpiB,EAAUvtiB,UAAUmwiB,YAAc,SAAUnviB,EAAOyb,EAAK8zhB,GACpD,IAAI54D,EAAY7ze,KAAK6ze,UASrB,OARmB,aAAdA,GAA0C,qBAAdA,IAAqC44D,EAI7DA,IACLzsiB,KAAKssiB,cAAgB/kiB,KAAKooI,MAAMzyI,GAChC8C,KAAKi8e,YAAc10e,KAAKu3D,KAAKnmD,KAL7B3Y,KAAKssiB,cAAgBpviB,EACrB8C,KAAKi8e,YAActje,GAMfk7d,GACJ,IAAK,SACL,IAAK,WACL,IAAK,cACD32e,EAAQqK,KAAKooI,MAAMzyI,GACnByb,EAAMpR,KAAKu3D,KAAKnmD,GAChB,MACJ,IAAK,WACL,IAAK,mBACDzb,EAAQ,IAAIiM,KAAKjM,GACjByb,EAAM,IAAIxP,KAAKwP,GAGvB,MAAO,CAAE86d,QAASv2e,EAAOy2e,QAASh7d,IAQtC8whB,EAAUvtiB,UAAUwzB,OAAS,SAAUg9gB,GASnC,OARI1siB,KAAKoD,UAAUo4e,YAAekxD,GAAiB1siB,KAAK+rC,KAAKwgd,kBAAkB/3W,SAC3Ex0I,KAAK2siB,cAET3siB,KAAKwnQ,WACLxnQ,KAAK4siB,kBFncN,SAAyBrka,EAAW69J,GAMvC,IALA,IAII40G,EAJA9qW,EAAOq4F,EAAUx8F,KAAKmE,KACtB28f,EAAkD,eAA/Btka,EAAUx8F,KAAKq3V,YAClC0pK,GAAgB,EAChBp7D,EAAe,EAEV1ze,EAAK,EAAGuF,EAAKglI,EAAUx8F,KAAKk4b,OAAQjme,EAAKuF,EAAG1G,OAAQmB,KACrD+uiB,EAAaxpiB,EAAGvF,IACLg5Z,OAAOrnX,OAAS+hc,IAC3BA,EAAeq7D,EAAW/1I,OAAOrnX,QAGzC,IAAK,IAAI5a,EAAK,EAAGI,EAAKozG,EAAUx8F,KAAKk4b,OAAQlvc,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAC/D,IAAIg4gB,EAOJ,IAPIA,EAAa53gB,EAAGJ,IACLmoC,UACX89U,EAAO+xJ,EAAW/xJ,KAAK7tY,WACvB2/hB,EAAiBC,EAAWtzC,MAAO/ve,MAAK,SAAU+ve,GAC9C,OAAOA,IAAUz+G,MAGrB8xJ,EACA,MAGRvka,EAAUikW,UAAYpmM,EAASu+L,UAAU,CACrClrd,GAAI8uH,EAAUnlI,UAAUpC,QAAQyY,GAA5B8uH,iBAAyDA,EAAUx8F,KAAK3xB,KAC5Es1B,MAAO64F,EAAUgsX,WAAahsX,EAAU54F,OAAS44F,EAAU74F,MAC3DC,OAAQ44F,EAAUgsX,WAAahsX,EAAU74F,MAAQ64F,EAAU54F,OAC3D3b,MAAO,6BAA+Bu0G,EAAUx8F,KAAKutc,iBAAmBuzD,GAAoB,GACvFC,EAAgBp7D,EAAe,GAAMxhc,EAAK55B,GAAK,cAC7CiyH,EAAUx8F,KAAKutc,kBAAoBuzD,EAAmB,GAAK,GAAK38f,EAAK3uB,GAAMgnH,EAAUgsX,WAAahsX,EAAU54F,OAAS,IACtH,oBAEV44F,EAAUzyG,SAASl0B,KAAK2mI,EAAUikW,WEma9BwgE,CAAgBhtiB,KAAMA,KAAKoD,UAAUu5f,aACrC38f,KAAKk0C,WAAWl0C,KAAKwse,WACrBxse,KAAKwse,UAAUxqe,YAAYhC,KAAK2piB,eAAe98B,eAAe7sgB,KAAMA,KAAKoD,UAAUu5f,cAC5E38f,KAAKwse,WAOhBi9D,EAAUvtiB,UAAUsrQ,SAAW,WAC3BxnQ,KAAKuoiB,oBzE7ON,SAAgCvqd,GACnC,IAAIivd,EACJ,OAAQjvd,GACJ,IAAK,oBACDivd,EAAc,CACV/E,SAAU,OACVC,MAAO,UACPnjE,OAAQ,OACRkoE,YAAa,UACbpwE,MAAO,OACPwsE,KAAM,OACN6D,WAAY,OACZC,eAAgB,WAEpB,MACJ,IAAK,YACDH,EAAc,CACV/E,SAAU,UACVC,MAAO,UACPnjE,OAAQ,OACRkoE,YAAa,OACbpwE,MAAO,UACPwsE,KAAM,WAEV,MACJ,IAAK,SACD2D,EAAc,CACV/E,SAAU,UACVC,MAAO,UACPnjE,OAAQ,OACRkoE,YAAa,UACbpwE,MAAO,UACPwsE,KAAM,WAEV,MACJ,QACI2D,EAAc,CACV/E,SAAU,UACVC,MAAO,UACPnjE,OAAQ,OACRkoE,YAAa,OACbpwE,MAAO,UACPwsE,KAAM,WAIlB,OAAO2D,EyE+LwBI,CAAuBrtiB,KAAKoD,UAAU46E,QAOrEyrd,EAAUvtiB,UAAU0wiB,gBAAkB,WAC9BpsiB,SAASuuB,eAAe/uB,KAAKoD,UAAUpC,QAAQyY,GAAK,iBAAmBzZ,KAAK+rC,KAAK3xB,OACjFqP,aAAOjpB,SAASuuB,eAAe/uB,KAAKoD,UAAUpC,QAAQyY,GAAK,iBAAmBzZ,KAAK+rC,KAAK3xB,QAQhGqvhB,EAAUvtiB,UAAUyviB,UAAY,SAAU1ugB,GACtC,IAAIxjB,EAAKwjB,EAAOxjB,GAChBzZ,KAAKwse,UAAUx4c,MAAM4lP,OAASngQ,EAAGtb,QAAQ,oBAAsB,GAAKsb,EAAGtb,QAAQ,gBAAkB,EAC7F,eAAkBsb,EAAGtb,QAAQ,YAAc,GAAKsb,EAAGtb,QAAQ,WAAa,EAAK6B,KAAKu0f,WAAa,YAC/F,YAAc,QAOtBk1C,EAAUvtiB,UAAU+vgB,SAAW,SAAUhve,GACrC,IAAIxjB,EAAKwjB,EAAOxjB,GACZ6zhB,EAAc7zhB,EAAGtb,QAAQ,iBAAmB,GAAKsb,EAAGtb,QAAQ,gBAAkB,EAC9EoviB,EAAe9zhB,EAAGtb,QAAQ,kBAAoB,GAAKsb,EAAGtb,QAAQ,iBAAmB,EACjF61B,EAAQh0B,KAAKuoiB,oBACbE,EAAezoiB,KAAK2piB,eAAelB,aACnCC,EAAgB1oiB,KAAK2piB,eAAejB,cACpCS,EAAgBnpiB,KAAK2piB,eAAeR,cACpCC,EAAiBppiB,KAAK2piB,eAAeP,eACrCoE,EAASxtiB,KAAKytiB,cAAcxwgB,EAAQwrgB,GACxCU,EAAcn1gB,MAAMooK,KAAOkxW,GAAeE,EAASx5gB,EAAMk5gB,YAAcl5gB,EAAMgxc,OAC7EokE,EAAep1gB,MAAMooK,KAAOmxW,GAAgBC,EAASx5gB,EAAMk5gB,YAAcl5gB,EAAMgxc,OAC/EmkE,EAAcn1gB,MAAM02V,OAAS4iL,GAAeE,EAASx5gB,EAAMk5gB,YAAcl5gB,EAAMgxc,OAC/EokE,EAAep1gB,MAAM02V,OAAS6iL,GAAgBC,EAASx5gB,EAAMk5gB,YAAcl5gB,EAAMgxc,OACpD,sBAAzBhle,KAAKoD,UAAU46E,QACfyqd,EAAaz0gB,MAAMooK,KAAOkxW,GAAeE,EAASx5gB,EAAMm5gB,WAAan5gB,EAAM8oc,MAC3E2rE,EAAaz0gB,MAAM02V,OAAS4iL,GAAeE,EAASx5gB,EAAMm5gB,WAAan5gB,EAAM8oc,MAC7E4rE,EAAc10gB,MAAMooK,KAAOmxW,GAAgBC,EAASx5gB,EAAMm5gB,WAAan5gB,EAAM8oc,MAC7E4rE,EAAc10gB,MAAM02V,OAAS6iL,GAAgBC,EAASx5gB,EAAMm5gB,WAAan5gB,EAAM8oc,MAC/EqsE,EAAcn1gB,MAAM02V,OAAS4iL,GAAeE,EAASx5gB,EAAMk5gB,YAAcl5gB,EAAMgxc,OAC/EokE,EAAep1gB,MAAM02V,OAAS6iL,GAAgBC,EAASx5gB,EAAMk5gB,YAAcl5gB,EAAMgxc,SASzFykE,EAAUvtiB,UAAUuxiB,cAAgB,SAAUxwgB,EAAQ3L,GAClD,OAAQ2L,EAAOxjB,GAAG9c,MAAM,KAAK,KAAO20B,EAAI7X,GAAG9c,MAAM,KAAK,IAO1D8siB,EAAUvtiB,UAAU2viB,YAAc,WAC9B,IAAIL,EAKAD,EAASvriB,KAAKwqiB,cAEdc,EAAWtriB,KAAKu0f,YAAcv0f,KAAK+rC,KAAKuvc,WAAct7e,KAAK+0f,OAAS/0f,KAAKu0f,WAAav0f,KAAK0vC,MAC3F1vC,KAAK+0f,OAAS/0f,KAAK+rC,KAAKuvc,WAAat7e,KAAK0vC,MAAQ1vC,KAAK80f,OAAS90f,KAAK80f,OACrE1ze,EAAO7Z,KAAKgH,IAAIvO,KAAKsqiB,WAAagB,GACtC,GAAItriB,KAAKoqiB,cAAgBkB,GAAW,EAAG,CACnC,IAAI/tD,EAAWguD,GAAUD,EAAUtriB,KAAKsqiB,WAAalphB,GAAQA,GAC7DoqhB,EAAejuD,EAXA,GAW2B,EAAIv9e,KAAKuqiB,eAAiBe,EAAUtriB,KAAKsqiB,YAAclphB,EAAOA,GACpGphB,KAAKuqiB,cACThtD,EAAWA,EAbI,GAauB,EAAIA,EAAWguD,EACjDC,GAXYzC,IAWqBuC,EAAU/tD,EAAWiuD,IACtDxriB,KAAK2piB,eAAef,WAAa5oiB,KAAKwqiB,cAAgBjtD,EACtDv9e,KAAK2piB,eAAed,eAAiB7oiB,KAAKuqiB,cAAgBiB,EAC1DxriB,KAAKsqiB,WAAagB,EAClBtriB,KAAKiriB,cAAc1tD,EAAUiuD,GAC7BxriB,KAAKkriB,sBAAsB3tD,EAAUiuD,SAGpCxriB,KAAKqqiB,gBACVmB,EAAeF,GApBCvC,GAoB0B/oiB,KAAK2piB,eAAef,YAAc0C,GAAWtriB,KAAK0vC,MAvB7E,EAwBX47f,EAAUtriB,KAAK2piB,eAAef,WAAa5oiB,KAAKuqiB,cACpDvqiB,KAAK2piB,eAAed,eAAiB7oiB,KAAKuqiB,cAAgBiB,EAC1DxriB,KAAKsqiB,WAAagB,EAClBtriB,KAAKiriB,cAAcjriB,KAAKw4C,OAAQgzf,GAChCxriB,KAAKkriB,sBAAsBlriB,KAAKw4C,OAAQgzf,GACnCxriB,KAAKioF,YACNjoF,KAAKkriB,sBAAsBlriB,KAAKw4C,OAAQgzf,KAUpD/B,EAAUvtiB,UAAU+uiB,cAAgB,SAAU1tD,EAAUiuD,GACpD,IAAInoiB,EAAOrD,KAAK2piB,eAIhBtmiB,EAAK4liB,OAAOrzgB,aAAa,IAAK2nd,EAASpwe,YACvC9J,EAAK4liB,OAAOrzgB,aAAa,QAAS41gB,EAAar+hB,YAC/C9J,EAAK8liB,cAAcvzgB,aAAa,KAAM2nd,EAASpwe,YAC/C9J,EAAK+liB,eAAexzgB,aAAa,MAAO2nd,EAAWiuD,GAAcr+hB,YACjE9J,EAAKsliB,kBAAkBprD,EAAUiuD,EAAcxriB,KAAK2vC,QACpDtsC,EAAKkmiB,WAAW3zgB,aAAa,YAAa,cAAgB2nd,EAAWiuD,EAAe,EANtEhC,GAM4ExpiB,KAAKu0f,WAAa,GAAK,IAC7G,KAAOv0f,KAAKu0f,WAAa,KAAO,KAAO,aAAev0f,KAAKu0f,WAAa,MAAQ,KAAO,MAO/Fk1C,EAAUvtiB,UAAUywiB,YAAc,WAC9B,IAAI5ggB,EAAO/rC,KAAK+rC,KAKZ/rC,KAAK+rC,KAAKwgd,kBAAkB/3W,SAC5Bx0I,KAAKioF,YAAa,EAClBjoF,KAAK0tiB,gBAAgB3hgB,IAEzB/rC,KAAKu0f,WAAkC,aAArBxod,EAAKq3V,YACvBpjY,KAAKq1e,WAAar1e,KAAKioF,WAAajoF,KAAKq1e,WAAatpc,EAAKspc,WAC3Dr1e,KAAKs1e,aAAet1e,KAAKioF,WAAajoF,KAAKs1e,aAAevpc,EAAKupc,aAC/D,IAAIk2D,EAAexriB,KAAKq1e,YAAcr1e,KAAKu0f,WAAaxod,EAAKmE,KAAKP,OAAS5D,EAAKmE,KAAKR,OACrF87f,EAAeA,EATKzC,GAS0ByC,EAT1BzC,GAUpB/oiB,KAAKk8H,QAAUnwF,EAAKmE,KAAK3uB,EACzBvhB,KAAKi8H,QAAUlwF,EAAKmE,KAAK55B,EACzBtW,KAAK0vC,MAAQ1vC,KAAKu0f,WAAaxod,EAAKmE,KAAKP,OAAS5D,EAAKmE,KAAKR,MAC5D1vC,KAAK2vC,OAAS,GACd,IAAI4tc,EAAWv9e,KAAKs1e,cAAgBt1e,KAAKu0f,WAAaxod,EAAKmE,KAAKP,OAAS3vC,KAAK0vC,OAC1Ei+f,EAAa3tiB,KAAK0vC,MAfFq5f,GAHD,EAmBnB/oiB,KAAK2piB,eAAef,WAAarrD,EAAWowD,EAAYA,EAAYpwD,EAnBjD,IAmB0FA,EAC7Gv9e,KAAK2piB,eAAed,eAAmB2C,EAAexriB,KAAK2piB,eAAef,WAAc5oiB,KAAK0vC,MAASq5f,GAChGyC,EAAexriB,KAAK0vC,MAAQ1vC,KAAK2piB,eAAef,WArBnC,GA4BvBa,EAAUvtiB,UAAUwxiB,gBAAkB,SAAU3hgB,GAC5C,IAAI7uC,EACAyb,EACAk7d,EAAY9nc,EAAK8nc,UACjB0Y,EAAoBxgd,EAAKwgd,kBACzB/5e,EAAQu5B,EAAKwgd,kBAAkB/5e,MAC/Bqie,EAAe9oc,EAAK8oc,aACpBzE,EAAerkc,EAAKwgd,kBAAkBnc,aAC1Cpwe,KAAK6ze,UAAYA,EAAc0Y,EAAkB/5e,MAAMihe,SAAY8Y,EAAkB/5e,MAAMmhe,UACvF4Y,EAAkBnc,aAA0ByD,EAAX,SACrC,IAAI5pe,EAAS,CACTiB,SAAU,OACVC,KAAM,YAENiJ,EAAapU,KAAKoD,UAAU6gE,KAAKnoD,cAAc7R,GAC/C6jf,EAAgB9tf,KAAKoD,UAAU6gE,KAAKtoD,cAAc1R,GACtD,OAAQ4pe,GACJ,IAAK,SACL,IAAK,WACL,IAAK,cACD32e,EAAQsV,EAAMihe,QAAUjhe,EAAMihe,QAAUrD,EAAe,EAAIyE,EAAazhe,IACxEuF,EAAMnG,EAAMmhe,QAAUnhe,EAAMmhe,QAAUvD,EAAgBA,EAAe,EAAKyE,EAAaxhe,IACvF,MACJ,IAAK,WACL,IAAK,mBACDnW,EAAQsV,EAAMihe,QAAUtqe,KAAK6R,MAAM5G,EAAW05e,EAAct7e,EAAMihe,WAAaoB,EAAazhe,IAC5FuF,EAAMnG,EAAMmhe,QAAUxqe,KAAK6R,MAAM5G,EAAW05e,EAAct7e,EAAMmhe,WAAakB,EAAaxhe,IAGlGnW,EAAQqK,KAAK6L,IAAIlW,EAAO23e,EAAazhe,KACrCuF,EAAMpR,KAAK8L,IAAIsF,EAAKk8d,EAAaxhe,KACjC,IAAIgie,GAAcR,EAAaxhe,IAAMwhe,EAAazhe,MAAQuF,EAAMzb,GAC5Do4e,GAAgBT,EAAazhe,IAAMlW,IAAUyb,EAAMzb,GACvD8C,KAAKq1e,WAAa7ie,EAAMihe,SAAWjhe,EAAMmhe,QAAU0B,EAAcr1e,KAAK+rC,KAAKqoc,eAAiBroc,EAAKwgd,kBAAkBnc,aACnHpwe,KAAKs1e,aAAe9ie,EAAMihe,SAAWjhe,EAAMmhe,QAAU2B,EAAevpc,EAAKupc,aACzEt1e,KAAK0piB,YAAYt2hB,IAAMlW,EACvB8C,KAAK0piB,YAAYr2hB,IAAMsF,EACvB3Y,KAAK0piB,YAAYlob,MAAQ7oG,EAAMzb,EAC/B8C,KAAKssiB,cAAgBz3D,EAAazhe,IAClCpT,KAAKi8e,YAAcpH,EAAaxhe,KAOpCo2hB,EAAUvtiB,UAAU0xiB,YAAc,SAAU7hgB,GACxC,IAAIv5B,EAAQu5B,EAAKwgd,kBAAkB/5e,MAC/BtV,EAAQ+1e,GAAQzge,EAAMihe,QAAS1nc,EAAKknc,SACpCt6d,EAAMs6d,GAAQzge,EAAMmhe,QAAS5nc,EAAKknc,SAGtC,OAFA/1e,EAAQoU,SAASpU,GAASA,EAAQsV,EAAMihe,QACxC96d,EAAMrH,SAASpU,GAASyb,EAAMnG,EAAMmhe,QAC7B,CAAEF,QAASlse,KAAKC,MAAMtK,EAAQ,GAAIy2e,QAASpse,KAAKu3D,KAAKnmD,EAAM,KAQtE8whB,EAAUvtiB,UAAUw0gB,SAAW,SAAU3ke,EAAM3oC,GAC3C2oC,EAAKqpc,iBAAmB,IAAIq0D,EAAUrmiB,EAAW2oC,IAOrD09f,EAAUvtiB,UAAUif,QAAU,WAC1B,IAAIpb,EAAQC,KACRA,KAAKu3E,KACLv3E,KAAKu3E,KAAK9yE,KAAI,SAAUsnC,GACpBA,EAAKqpc,iBAAiBj6d,cAI1Bnb,KAAK81B,SAASrxB,KAAI,SAAUzD,GACxBjB,EAAMmiI,aAAalhI,GACnByoB,aAAOzoB,EAAQ8iG,eAEnB9jG,KAAK81B,SAAW,KAQxB2zgB,EAAUvtiB,UAAU2+B,cAAgB,WAChC,MAAO,aAEX4ugB,EAAUvtiB,UAAU2uiB,QAAU,SAAU7hhB,EAAWxW,EAAO8ie,EAAcD,EAAYw4D,GAYhF,MAXiB,CACb9hgB,KAAO/rC,KAAKoD,UAAU9D,SAAW,GAAKU,KAAK+rC,KAC3C3xB,KAAM4O,EACNxW,MAAOxS,KAAK+rC,KAAK8oc,aACjBQ,WAAYr1e,KAAK+rC,KAAKspc,WACtBC,aAAct1e,KAAK+rC,KAAKupc,aACxB82D,cAAe55hB,EACfs7hB,mBAAoBz4D,EACpB04D,qBAAsBz4D,EACtBs2D,aAAciC,IAIfpE,EAjtBoB,GCI3BuE,GAAyB,WAEzB,SAASA,EAAQt7D,GACb1ye,KAAKiuiB,iBAAmB,cACxBjuiB,KAAKkuiB,sBAAwB,cAE7BluiB,KAAKmuiB,0BAA4B,GACjCnuiB,KAAK0ye,MAAQA,EACb1ye,KAAKihK,UAAYyxU,EAAM1xe,QAAQyY,GAC/BzZ,KAAK0ye,MAAMiqB,YAAc,IAAIr4B,GAAYtke,KAAKihK,WAC9CjhK,KAAKouiB,eAAiC,eAAhB17D,EAAM10Z,MAAyB,UAAY,UACjEh+E,KAAKilgB,UAA4B,eAAhBvyB,EAAM10Z,MAAyB,UAAY,UAC5Dh+E,KAAKiuiB,iBAAmC,eAAhBv7D,EAAM10Z,MAAyB,UAAYh+E,KAAKiuiB,iBACxEjuiB,KAAKkuiB,sBAAwC,eAAhBx7D,EAAM10Z,MAAyB,UAAYh+E,KAAKkuiB,sBAC7EluiB,KAAKquiB,SAA2B,eAAhB37D,EAAM10Z,MAAyB,IAAIitZ,IAAM,GAAI,EAAG,GAAI,IAAM,IAAIA,GAAK,EAAG,EAAG,GAAI,IA0TjG,OAlTA+iE,EAAQ9xiB,UAAUoyiB,gBAAkB,SAAU5pD,EAAc9wc,GACxD,IAAIlkB,EAAS1vB,KAAK0ye,MAAMiqB,YACpBsI,EAAYjlgB,KAAK0ye,MAAM8I,WAAW80B,UAAYtwgB,KAAKouiB,eAAiBpuiB,KAAKilgB,UAG7EvgB,EAAajre,GAAKzZ,KAAKihK,UAAY,eACnCyjV,EAAa9ud,aAAa,aAAc51B,KAAK0ye,MAAM/rV,kBAAkB,QACrE3mJ,KAAKuuiB,YAAc7pD,EACnBA,EAAa1if,YAAY0tB,EAAO2uY,cAAc,IAAIsrF,GAAW3pf,KAAKihK,UAAY,iBAAkB,cAAe,GAAI,EAAGjhK,KAAKquiB,YAC3H3pD,EAAa1if,YAAY0tB,EAAOs1Y,SAAS,IAAI2mE,GAAW3re,KAAKihK,UAAY,iBAAkBgkW,EAAW,KAAM,KAAM,EAAG,KALrH1la,gMAMA3rD,EAAc5xC,YAAY0if,GAC1B1kf,KAAKk0C,WAAWwwc,EAAc1kf,KAAKwuiB,MAQvCR,EAAQ9xiB,UAAUuyiB,iBAAmB,SAAU/pD,EAAc9wc,GACzD,IAAIlkB,EAAS1vB,KAAK0ye,MAAMiqB,YACpBsI,EAAYjlgB,KAAK0ye,MAAM8I,WAAW80B,UAAYtwgB,KAAKilgB,UAAYjlgB,KAAKouiB,eACpEM,EAAY1uiB,KAAK0ye,MAAM8I,WAAW80B,UAAY,cAAgBtwgB,KAAKkuiB,sBACnE3uc,EAAY,qGAChBA,GAAa,qHACbA,GAAwB,8FACxBmlZ,EAAajre,GAAKzZ,KAAKihK,UAAY,gBACnCyjV,EAAa9ud,aAAa,aAAc51B,KAAK0ye,MAAM/rV,kBAAkB,SACrE3mJ,KAAK2uiB,aAAejqD,EACpB1kf,KAAK4uiB,WAAa5uiB,KAAK0ye,MAAM8I,WAAW80B,UAAYtwgB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,iBAAmBzZ,KAAKihK,UAAY,kBAChHyjV,EAAa1if,YAAY0tB,EAAO2uY,cAAc,IAAIsrF,GAAW3pf,KAAKihK,UAAY,kBAAmBytY,EAAW,GAAI,EAAG1uiB,KAAKquiB,YACxH3pD,EAAa1if,YAAY0tB,EAAOs1Y,SAAS,IAAI2mE,GAAW3re,KAAKihK,UAAY,kBAAmBgkW,EAAW,KAAM,KAAM,EAAG,KAAM1la,EAAY,6DACxI3rD,EAAc5xC,YAAY0if,GAC1B1kf,KAAKk0C,WAAWwwc,EAAc1kf,KAAKy4Q,OAQvCu1R,EAAQ9xiB,UAAU2yiB,mBAAqB,SAAUnqD,EAAc9wc,EAAe8+b,GAC1E,IAAIhjd,EAAS1vB,KAAK0ye,MAAMiqB,YACpBsI,EAAYjlgB,KAAKilgB,UAIrBvgB,EAAajre,GAAKzZ,KAAKihK,UAAY,kBACnCyjV,EAAa9ud,aAAa,aAAc51B,KAAK0ye,MAAM/rV,kBAAkB,WAErE+9V,EAAa1if,YAAY0tB,EAAO2uY,cAAc,IAAIsrF,GAAW3pf,KAAKihK,UAAY,oBAAqB,cAAe,GAAI,EAAGjhK,KAAKquiB,YAC9H3pD,EAAa1if,YAAY0tB,EAAOs1Y,SAAS,IAAI2mE,GAAW3re,KAAKihK,UAAY,oBAAqBgkW,EAAW,KAAM,KAAM,EAAG,KAAM1la,+YAC9HmlZ,EAAa1if,YAAY0tB,EAAO21c,YAAY,IAAIykB,GAAc9pf,KAAKihK,UAAY,oBAAqB6tY,wJAAsF7pC,KAC1LjlgB,KAAK+uiB,eAAiBrqD,EACtB1kf,KAAKgviB,eAAiBt8D,EAAM8I,WAAW80B,UAAY,MAAQ,IAC3D5rB,EAAa9ud,aAAa,UAAW51B,KAAKgviB,gBAC1Cp7f,EAAc5xC,YAAY0if,GAC1B1kf,KAAKk0C,WAAWwwc,EAAc1kf,KAAKiviB,SAQvCjB,EAAQ9xiB,UAAUgziB,oBAAsB,SAAUxqD,EAAc9wc,EAAe8+b,GAC3E,IAAIhjd,EAAS1vB,KAAK0ye,MAAMiqB,YACpBsI,EAAYjlgB,KAAKilgB,UAIrBvgB,EAAajre,GAAKzZ,KAAKihK,UAAY,mBACnCyjV,EAAa9ud,aAAa,aAAc51B,KAAK0ye,MAAM/rV,kBAAkB,YACrE+9V,EAAa1if,YAAY0tB,EAAO2uY,cAAc,IAAIsrF,GAAW3pf,KAAKihK,UAAY,qBAAsB,cAAe,GAAI,EAAGjhK,KAAKquiB,YAC/H3pD,EAAa1if,YAAY0tB,EAAOs1Y,SAAS,IAAI2mE,GAAW3re,KAAKihK,UAAY,qBAAsBgkW,EAAW,KAAM,KAAM,EAAG,KAAM1la,6XAC/Hv/F,KAAKmviB,gBAAkBzqD,EACvB1kf,KAAKgviB,eAAiBt8D,EAAM8I,WAAW80B,UAAY,MAAQ,IAC3D5rB,EAAa9ud,aAAa,UAAW51B,KAAKgviB,gBAC1Cp7f,EAAc5xC,YAAY0if,GAC1B1kf,KAAKk0C,WAAWwwc,EAAc1kf,KAAKoviB,UAQvCpB,EAAQ9xiB,UAAUmziB,kBAAoB,SAAU3qD,EAAc9wc,EAAe8+b,EAAOxrd,GAChF,IAEIs1D,EAFA9sD,EAAS1vB,KAAK0ye,MAAMiqB,YACpBsI,EAAYjlgB,KAAKilgB,UAKrBvgB,EAAajre,GAAKzZ,KAAKihK,UAAY,iBACnCyjV,EAAa9ud,aAAa,aAAc51B,KAAK0ye,MAAM/rV,kBAAkB,UAChEz/H,GAKDs1D,EAAO8tZ,GAAYtqe,KAAK0ye,MAAM/rV,kBAAkB,aAAc,CAAEnqE,KAAM,SACtEkoa,EAAa1if,YAAY0tB,EAAO2uY,cAAc,IAAIsrF,GAAW3pf,KAAKihK,UAAY,mBAAoB,cAAe,GAAI,EAAG,IAAIgqU,GAAK,EAAG,EAAGzuZ,EAAK9sC,MAAO8sC,EAAK7sC,WACxJugc,GAAYwC,EAAMtsM,SAAU,IAAIglM,GAAWpre,KAAKihK,UAAY,mBAAoB,EAAIzkF,EAAK9sC,MAAQ,EAAG,EAAkB,EAAd8sC,EAAK7sC,OAAa,EAAG,SAAU3vC,KAAK0ye,MAAM/rV,kBAAkB,aAAc,gBAAqC,QAAS,CAAEnqE,KAAM,QAAU,QAASkoa,EAAc,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAM,KAAMhS,EAAMoW,gBAN/TpE,EAAa1if,YAAY0tB,EAAO2uY,cAAc,IAAIsrF,GAAW3pf,KAAKihK,UAAY,mBAAoB,cAAe,GAAI,EAAGjhK,KAAKquiB,YAC7H3pD,EAAa1if,YAAY0tB,EAAOs1Y,SAAS,IAAI2mE,GAAW3re,KAAKihK,UAAY,mBAAoBgkW,EAAW,KAAM,KAAM,EAAG,KAAM1la,6YAOjI3rD,EAAc5xC,YAAY0if,GAC1B1kf,KAAKk0C,WAAWwwc,EAAc1kf,KAAKuzC,QAQvCy6f,EAAQ9xiB,UAAUg4C,WAAa,SAAUlzC,EAASm7F,GAC9CvzE,IAAaG,IAAI/nB,EAAS,uBAAwBm7F,EAASn8F,MAC3D4oB,IAAaG,IAAI/nB,EAAS,YAAahB,KAAKk+e,YAAal+e,MACzD4oB,IAAaG,IAAI/nB,EAAS,WAAYhB,KAAK6hhB,cAAe7hhB,OAQ9DguiB,EAAQ9xiB,UAAUgif,YAAc,SAAUp3d,GACtC,IAAIvU,EAAOuU,EAAM6kB,cAAclyB,GAAG9c,MAAM,aAAa,GACjDmmC,EAAQhc,EAAMyb,OAAS+nc,GAAY/3d,EAAM,CAAEiqE,KAAM,SAAU9sC,MAAQ,GACnEQ,EAAOrtC,GAAWikB,EAAM6kB,cAAclyB,GAAK,MAC3C61hB,EAAQzsiB,GAAWikB,EAAM6kB,cAAclyB,GAAK,MAC5C81hB,EAAQ1siB,GAAWikB,EAAM6kB,cAAclyB,GAAK,MAC5Cy2B,IACAlwC,KAAKwviB,UAAYt/f,EAAKz2B,GACtBy2B,EAAKta,aAAa,OAAQ51B,KAAKiuiB,mBAE/BqB,GACAA,EAAM15gB,aAAa,OAAQ51B,KAAKouiB,gBAEhCmB,GACAA,EAAM35gB,aAAa,OAAQ51B,KAAKouiB,gBAE/BpuiB,KAAK0ye,MAAMzrd,SxD4QjB,SAAuBxN,EAAIlH,EAAMywB,EAAKF,EAAM+yC,GAC/C,IAAIu8B,EAAUvvG,GAAW4W,GACrBua,EAAQ,OAASgP,EAAI71B,WAAb,WACE21B,EAAK31B,WADP,kHAIkD0oE,EAAW,gCACpEu8B,GAODA,EAAQx8E,aAAa,YAAa,SAAWrjB,EAAO,UACpD6/F,EAAQx8E,aAAa,SAAU5B,KAP/Bo+E,EAAUjxG,YAAc,MAAO,CAC3BsY,GAAIA,EAAIrX,UAAW,SAAWmQ,EAAO,SAAUwhB,OAAQC,IAE3DxzB,SAASgiC,KAAKxgC,YAAYowG,IwDtRtBi3M,CAAc,oBAAqBrpT,KAAK0ye,MAAM/rV,kBAAkBp0I,GAAQuU,EAAM6b,MAAQ,GAAKG,EAAM,SAKzGkrgB,EAAQ9xiB,UAAU2lhB,cAAgB,WAC9B,GAAIh/gB,GAAW7C,KAAKwviB,WAAY,CAC5B,IAAId,EAAY1uiB,KAAK0ye,MAAM8I,WAAW80B,UAAatwgB,KAAKwviB,UAAUrxiB,QAAQ,UAAY,EAAK6B,KAAKkuiB,sBAAwB,cAAiBluiB,KAAKwviB,UAAUrxiB,QAAQ,WAAa,EAAK6B,KAAKkuiB,sBAAwB,cAC/MrriB,GAAW7C,KAAKwviB,WAAW55gB,aAAa,OAAQ84gB,GAEpD,IAAIY,EAAQtviB,KAAKwviB,UAAY3siB,GAAW7C,KAAKwviB,UAAU9yiB,QAAQ,KAAM,OAAS,KAC1E6yiB,EAAQvviB,KAAKwviB,UAAY3siB,GAAW7C,KAAKwviB,UAAU9yiB,QAAQ,KAAM,OAAS,KAC9E,GAAI4yiB,EAAO,CACP,IAAIp7V,EAAYl0M,KAAK0ye,MAAM8I,WAAW80B,UAAatwgB,KAAKwviB,UAAUrxiB,QAAQ,UAAY,EAAK6B,KAAKouiB,eAAiBpuiB,KAAKilgB,UAAajlgB,KAAKwviB,UAAUrxiB,QAAQ,WAAa,EAAK6B,KAAKouiB,eAAiBpuiB,KAAKilgB,UACvMqqC,EAAM15gB,aAAa,OAAQs+K,GAE/B,GAAIq7V,EAAO,CACHr7V,EAAYl0M,KAAK0ye,MAAM8I,WAAW80B,UAAYtwgB,KAAKilgB,UAAajlgB,KAAKwviB,UAAUrxiB,QAAQ,WAAa,EAAK6B,KAAKouiB,eAAiBpuiB,KAAKilgB,UACxIsqC,EAAM35gB,aAAa,OAAQs+K,GAE/Bn4J,GAAc,sBAIlBiyf,EAAQ9xiB,UAAUq3C,MAAQ,WACtB,IAKIw5b,EAGA0iE,EARA1viB,EAAQC,KACR0ye,EAAQ1ye,KAAK0ye,MACZA,EAAM8I,WAAWt0d,UAClBuC,aAAOipd,EAAM8I,WAAWk0D,iBAG5B1viB,KAAK6hhB,gBACLnvC,EAAMlG,UAAU52c,aAAa,SAAU,QAEvC,IAAI+5gB,EAAuB,GAC3B3viB,KAAKmuiB,0BAA4B,GACjC,IAAK,IAAInwiB,EAAK,EAAGuF,EAAKmve,EAAMkJ,gBAAiB59e,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC/D,IAAI+tC,EAAOxoC,EAAGvF,GACd+ue,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMu9d,GAAc5rc,KAAMA,EAAM+hgB,mBAAoB/hgB,EAAKspc,WACxE04D,qBAAsBhigB,EAAKupc,aAAcs6D,kBAAmB,EAAGC,oBAAqB,EACpFC,qBAAsB/jgB,EAAK8oc,aAAck7D,oBAAqB,MAElEhkgB,EAAKspc,WAAa,EAClBtpc,EAAKupc,aAAe,EAChBvpc,EAAKqpc,mBACLrpc,EAAKqpc,iBAAiBia,YAAa,GAElCtiB,EAAShqd,SACVgpB,EAAKspc,WAAatI,EAAS6iE,kBAC3B7jgB,EAAKupc,aAAevI,EAAS8iE,oBAC7B7viB,KAAKmuiB,0BAA0BvsiB,KAAKmre,IAExC4iE,EAAqB/tiB,KAAK,CACtByze,WAAYtpc,EAAKspc,WAAYC,aAAcvpc,EAAKspc,WAAY26D,SAAUjkgB,EAAK3xB,KAC3E61hB,UAAWlkgB,EAAK8oc,eAIxB,QADA46D,EAAmB,CAAE1shB,QAAQ,EAAOgre,eAAgB4hD,EAAsBv1hB,KAAMk+d,KAC1Dv1d,QAAU/iB,KAAK0ye,MAAMpze,UACvCU,KAAK0ye,MAAM3od,QAAQuud,GAAWm3D,GAAkB,WAC5C1viB,EAAMmwiB,gBAAgBx9D,OAEnB,GAGC1ye,KAAKkwiB,gBAAgBx9D,IAGrCs7D,EAAQ9xiB,UAAUg0iB,gBAAkB,SAAUx9D,GAY1C,OAXAA,EAAMwvC,qBAAsB,EAC5BxvC,EAAM8I,WAAW8Q,SAAW5Z,EAAM8I,WAAW80B,UAAY59B,EAAMghC,YAAchhC,EAAMuK,aAAc,EACjGvK,EAAM8I,WAAW20D,cAAgBz9D,EAAM8I,WAAW40D,eAAiB,GACnE19D,EAAM8I,WAAWk8B,YAAc,KAC/BhlC,EAAMg/B,YACFh/B,EAAM+I,8BACN/I,EAAM12Y,aAAY,GAEtB02Y,EAAMiZ,cACNjZ,EAAMgoB,eACN16f,KAAKgviB,eAAiB,KACf,GAEXhB,EAAQ9xiB,UAAU+yiB,OAAS,SAAUpuiB,GAEjC,OADAb,KAAKqwiB,qBAAqB,EAAGrwiB,KAAK0ye,MAAO1ye,KAAK0ye,MAAMkJ,gBAAiB57e,KAAK0ye,MAAMgJ,aAAav+d,OACtF,GAEX6whB,EAAQ9xiB,UAAUkziB,QAAU,SAAUvuiB,GAElC,OADAb,KAAKqwiB,sBAAsB,EAAGrwiB,KAAK0ye,MAAO1ye,KAAK0ye,MAAMkJ,gBAAiB57e,KAAK0ye,MAAMgJ,aAAav+d,OACvF,GAEX6whB,EAAQ9xiB,UAAUu8Q,KAAO,SAAU53Q,GAC/Bb,KAAK0ye,MAAM8I,WAAW80B,WAAY,EACjBtwgB,KAAK0ye,MAAM8I,WAY5B,OAXAx7e,KAAKgviB,eAAiB,IACtBhviB,KAAK0ye,MAAMlG,UAAU52c,aAAa,SAAU,QAC5C51B,KAAK+uiB,eAAen5gB,aAAa,UAAW51B,KAAKgviB,gBACjDhviB,KAAKmviB,gBAAgBv5gB,aAAa,UAAW51B,KAAKgviB,gBAClDhviB,KAAKswiB,eAAetwiB,KAAK2uiB,aAAarghB,WAAYtuB,KAAKouiB,gBACvDpuiB,KAAKswiB,eAAetwiB,KAAKuuiB,YAAYjghB,WAAY,WAC7CzrB,GAAW7C,KAAK4uiB,aAChB/riB,GAAW7C,KAAK4uiB,YAAYh5gB,aAAa,OAAQ,eAErD51B,KAAK4uiB,WAAa5uiB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,kBAC1C5W,GAAW7C,KAAK4uiB,YAAYh5gB,aAAa,OAAQ51B,KAAKkuiB,wBAC/C,GAGXF,EAAQ9xiB,UAAUsyiB,IAAM,WAcpB,OAZAxuiB,KAAK0ye,MAAM8I,WAAW80B,WAAY,EAClCtwgB,KAAK0ye,MAAMlG,UAAU52c,aAAa,SAAU,WAC5C51B,KAAKgviB,eAAiB,MACZhviB,KAAK+uiB,eAAiB/uiB,KAAK+uiB,eAAen5gB,aAAa,UAAW51B,KAAKgviB,gBAAkB,KACzFhviB,KAAKmviB,gBAAkBnviB,KAAKmviB,gBAAgBv5gB,aAAa,UAAW51B,KAAKgviB,gBAAkB,KAC3FhviB,KAAKuuiB,YAAcvuiB,KAAKswiB,eAAetwiB,KAAKuuiB,YAAYjghB,WAAYtuB,KAAKouiB,gBAAkB,KAC3FpuiB,KAAK2uiB,aAAe3uiB,KAAKswiB,eAAetwiB,KAAK2uiB,aAAarghB,WAAY,WAAa,KACzFzrB,GAAW7C,KAAK4uiB,aAChB/riB,GAAW7C,KAAK4uiB,YAAYh5gB,aAAa,OAAQ,eAErD51B,KAAK4uiB,WAAa5uiB,KAAK0ye,MAAM1xe,QAAQyY,GAAK,iBAC1C5W,GAAW7C,KAAK4uiB,YAAYh5gB,aAAa,OAAQ51B,KAAKkuiB,wBAC/C,GAEXF,EAAQ9xiB,UAAUm0iB,qBAAuB,SAAUryR,EAAO00N,EAAOn7Z,EAAMp6D,GACnE,IAAKu1d,EAAM8I,WAAW80B,WAAqC,QAAxBtwgB,KAAKgviB,eAA0B,CAC9D,IAAI35D,OAAa,EACbC,OAAe,EACfw2D,OAAa,EACjBp5D,EAAMwvC,qBAAsB,EAC5BxvC,EAAMuK,aAAc,EACpB,IAAIlQ,OAAW,EACf/se,KAAKmuiB,0BAA4B,GACjC,IAAK,IAAInwiB,EAAK,EAAGuF,EAAKg0E,EAAMv5E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC9C,IAAI+tC,EAAOxoC,EAAGvF,GACd+ue,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMu9d,GAAc5rc,KAAMA,EAAM+hgB,mBAAoB/hgB,EAAKspc,WACxE04D,qBAAsBhigB,EAAKupc,aAAcs6D,kBAAmB7jgB,EAAKspc,WAAYw6D,oBAAqB9jgB,EAAKupc,aACvGw6D,qBAAsB/jgB,EAAK8oc,aAAck7D,oBAAqB,OAExC,eAArBhkgB,EAAKq3V,aAAyC,MAATjmX,GAChB,aAArB4uB,EAAKq3V,aAAuC,MAATjmX,KAEpCk4d,EAA6B,KAD7By2D,EAAavkiB,KAAK8L,IAAI9L,KAAK8L,IAAI,EAAImxe,GAAOz4c,EAAKspc,WAAY,EAAG,GAAI,GAAM,IAAOr3N,EAAQ,IACrD,EAAIwmO,GAAO,EAAIsnD,EAAY,EAAG,GAChEx2D,EAA+B,IAAfw2D,EAAoB,EAAI//f,EAAKupc,aAAiD,IAAhCvpc,EAAKspc,WAAaA,GAC5Etpc,EAAKupc,eAAiBA,GAAgBvpc,EAAKspc,aAAeA,IAC1DA,EAAcC,EAAeD,EAAc,EAAK,EAAIC,EAAgBD,GAExEtI,EAAS6iE,kBAAoBv6D,EAC7BtI,EAAS8iE,oBAAsBv6D,EAC1BvI,EAAShqd,SACVgpB,EAAKspc,WAAatI,EAAS6iE,kBAC3B7jgB,EAAKupc,aAAevI,EAAS8iE,oBAC7B7viB,KAAKmuiB,0BAA0BvsiB,KAAKmre,QAMxDihE,EAAQ9xiB,UAAUo0iB,eAAiB,SAAUx6gB,EAAU6/C,GACnD,IAAK,IAAI/4E,EAAI,EAAGgQ,EAAWkpB,EAASj5B,OAAQD,EAAIgQ,EAAUhQ,IACtDk5B,EAASl5B,GAAGg5B,aAAa,OAAQ+/C,IAGlCq4d,EAxUkB,GCLzBz4B,GAAsB,WAMtB,SAASA,EAAK7iC,GACV1ye,KAAKmuiB,0BAA4B,GACjCnuiB,KAAK0ye,MAAQA,EACb1ye,KAAKgnB,UAAYX,IAAQW,UACzBhnB,KAAKgqiB,YAAc3jhB,IAAQ2B,KAAK5N,KAChCpa,KAAKuwiB,WAAkC,YAArBvwiB,KAAKgqiB,YAA6BhqiB,KAAKgnB,UAAY,aAAe,iBAAoB,aACxGhnB,KAAKk4C,YAAcl4C,KAAKgnB,UAAY,eAAiB,aACrDhnB,KAAKupB,mBACLvpB,KAAKknB,SAAWb,IAAQa,SACxB,IAAIsrf,EAAU9/B,EAAMgJ,aACpB17e,KAAKwwiB,QAAU,IAAIxC,GAAQt7D,GAC3B1ye,KAAKwygB,QAAUA,EACfxygB,KAAKihK,UAAYyxU,EAAM1xe,QAAQyY,GAC/BzZ,KAAKywiB,YAAc,IAAIxlE,GAAK,EAAG,EAAG,EAAG,GACrCjre,KAAK0wiB,SAAW,GAChB1wiB,KAAK2wiB,eAAiB,GACtB3wiB,KAAK4wiB,MAAQvqhB,IAAQsmgB,OAAStmgB,IAAQumgB,OACtC5shB,KAAKssf,SAAWtsf,KAAKivgB,YAAcjvgB,KAAKwygB,QAAQxD,WAAahvgB,KAAKwygB,QAAQE,uBACtEF,EAAQpmB,kBACR1Z,EAAM/2W,cAAgBx6H,YAAc,MAAO,CAAEsY,GAAIi5d,EAAM1xe,QAAQyY,GAAK,oBA2xB5E,OAnxBA87f,EAAKr5gB,UAAU20iB,cAAgB,SAAUhwiB,EAAG6xe,EAAOzrd,GAC/CjnB,KAAK8wiB,uBAAuBp+D,IACxB1ye,KAAKwygB,QAAQE,wBAA4Bzrf,KACrCyrd,EAAMkiC,aAA8C,IAA/B50gB,KAAKowiB,eAAevziB,SAAoBmD,KAAKswgB,YAAa59B,EAAMkiC,YAKpF50gB,KAAKswgB,WAAa59B,EAAMghC,eACxBzsf,GAAYA,GAA0C,IAA/BjnB,KAAKowiB,eAAevziB,UAC5CmD,KAAK03gB,YAAczwf,EAAUpmB,EAAEo8B,OAAS,KACxCj9B,KAAK+wiB,MAAMr+D,EAAOA,EAAMkJ,mBAP5B57e,KAAKswgB,YAAYtwgB,KAAKknB,UAAkBlnB,KAAKswgB,UAC7CtwgB,KAAKivgB,aAAc,EACnBjvgB,KAAKgxiB,qBAAqBt+D,KAUlC6iC,EAAKr5gB,UAAU80iB,qBAAuB,SAAUt+D,GAC5C,IAAI7F,EAAa6F,EAAMyrB,qBAAqBjW,eACxCjoE,EAAgB,IAAIm/D,GAAc1M,EAAM+hC,mBAAoB/hC,EAAMiiC,oBAClEs8B,EAAc,IAAI7xD,GAAc1M,EAAMoiB,OAAQpiB,EAAMqiB,QACpD7kd,EAAOlwC,KAAKywiB,YzDq4BjB,SAAyBxwH,EAAegxH,EAAa1qD,GACxD,IAAIhle,EAAK0vhB,EAAY1vhB,EAAIgle,EAAUhle,EAAKgle,EAAUhle,EAC7C0vhB,EAAY1vhB,EAAKgle,EAAUhle,EAAIgle,EAAU72c,MAAU62c,EAAUhle,EAAIgle,EAAU72c,MAAQuhgB,EAAY1vhB,EAChGjL,EAAK26hB,EAAY36hB,EAAIiwe,EAAUjwe,EAAKiwe,EAAUjwe,EAC7C26hB,EAAY36hB,EAAKiwe,EAAUjwe,EAAIiwe,EAAU52c,OAAW42c,EAAUjwe,EAAIiwe,EAAU52c,OAASshgB,EAAY36hB,EACtG,OAAO,IAAI20d,GAAM1pd,EAAI0+Z,EAAc1+Z,EAAI0+Z,EAAc1+Z,EAAIA,EAAKjL,EAAI2pa,EAAc3pa,EAAI2pa,EAAc3pa,EAAIA,EAAI/O,KAAKgH,IAAIgT,EAAI0+Z,EAAc1+Z,GAAIha,KAAKgH,IAAI+H,EAAI2pa,EAAc3pa,IyD14BlI46hB,CAAgBjxH,EAAegxH,EAAapkE,GACtE38b,EAAKR,MAAQ,GAAKQ,EAAKP,OAAS,IAChC3vC,KAAKssf,UAAW,EAChB5Z,EAAMwvC,qBAAsB,EAC5BxvC,EAAMlG,UAAU52c,aAAa,SAAU,aACb,MAAtB51B,KAAKwygB,QAAQr1f,MACb+yB,EAAKP,OAASk9b,EAAWl9b,OACzBO,EAAK55B,EAAIu2d,EAAWv2d,GAEO,MAAtBtW,KAAKwygB,QAAQr1f,OAClB+yB,EAAKR,MAAQm9b,EAAWn9b,MACxBQ,EAAK3uB,EAAIsrd,EAAWtrd,IAEdmxd,EAAMoW,aAAetof,SAASuuB,eAAe/uB,KAAKihK,UAAY,gBAAkByxU,EAAMlG,WAC5Fxqe,YAAY0we,EAAMiqB,YAAYt+F,cAAc,IAAIsrF,GAAW3pf,KAAKihK,UAAY,YAAayxU,EAAMrG,WAAW1J,kBAAmB,CAAEhtZ,MAAO+8Z,EAAMrG,WAAWzJ,oBAAqBlzb,MAAO,GAAK,EAAGQ,EAAM,EAAG,EAAG,GAAI,SAIvNqle,EAAKr5gB,UAAU60iB,MAAQ,SAAUr+D,EAAOn7Z,GACpC,IAII45d,EACAnlhB,EAMA+gd,EAXAhte,EAAQC,KACZ,GAAI0ye,EAAMurB,WAAavrB,EAAMqrB,UAAUvpX,OACnC,OAAO,KAIXx0I,KAAKssf,UAAW,EAChBtsf,KAAKgsB,OAAU0md,EAAMuK,YAA0Dj9e,KAAKgsB,OAAjD0md,EAAMyrB,qBAAqBjW,eAC9DxV,EAAMuK,aAAc,EACpBj9e,KAAKmuiB,0BAA4B,GACjCz7D,EAAMwvC,qBAAsB,EAG5B,IADA,IAAIytB,EAAuB,GAClB3xiB,EAAK,EAAGuF,EAAKg0E,EAAMv5E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC9C,IAAI+tC,EAAOxoC,EAAGvF,GACd+ue,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMu9d,GAAc5rc,KAAMA,EAAM+hgB,mBAAoB/hgB,EAAKspc,WACxE04D,qBAAsBhigB,EAAKupc,aAAcs6D,kBAAmB7jgB,EAAKspc,WACjEw6D,oBAAqB9jgB,EAAKupc,aAAcw6D,qBAAsB/jgB,EAAK8oc,aACnEk7D,oBAAqB,MAEzBoB,EAAe5piB,KAAK8L,IAAI,EAAImxe,GAAOz4c,EAAKspc,WAAY,EAAG,GAAI,GAClC,eAArBtpc,EAAKq3V,aACLp3W,GAAU0md,EAAM+hC,mBAAqB/hC,EAAMoiB,QAAU/od,EAAKmE,KAAKR,MAAQyhgB,EACvEpkE,EAAS8iE,oBAAsBrrD,GAAOz4c,EAAKupc,aAAetpd,EAAQ,EAAI,EAAI+f,EAAKspc,cAG/Erpd,GAAU0md,EAAMiiC,mBAAqBjiC,EAAMqiB,QAAUhpd,EAAKmE,KAAKP,OAASwhgB,EACxEpkE,EAAS8iE,oBAAsBrrD,GAAOz4c,EAAKupc,aAAetpd,EAAQ,EAAI,EAAI+f,EAAKspc,aAE9EtI,EAAShqd,SACVgpB,EAAKspc,WAAatI,EAAS6iE,kBAC3B7jgB,EAAKupc,aAAevI,EAAS8iE,oBAC7B7viB,KAAKmuiB,0BAA0BvsiB,KAAKmre,IAExC4iE,EAAqB/tiB,KAAK,CACtByze,WAAYtpc,EAAKspc,WAAYC,aAAcvpc,EAAKspc,WAAY26D,SAAUjkgB,EAAK3xB,KAC3E61hB,UAAWlkgB,EAAK8oc,eAGxB,IAAI46D,EAAmB,CAAE1shB,QAAQ,EAAOgre,eAAgB4hD,EAAsBv1hB,KAAMk+d,KAC/Em3D,EAAiB1shB,QAAU/iB,KAAK0ye,MAAMpze,SACvCU,KAAK0ye,MAAM3od,QAAQuud,GAAWm3D,GAAkB,WAC5C1viB,EAAMqxiB,oBAAoB1+D,OAI9B1ye,KAAKoxiB,oBAAoB1+D,GACzB1ye,KAAKqxiB,gBAAgB3+D,GAAO,KAGpC6iC,EAAKr5gB,UAAUk1iB,oBAAsB,SAAU1+D,GAC3C,IAAI4+D,EACA/7M,EACJ,GAAIv1V,KAAKwygB,QAAQ++B,sBAAuB,CAGpC,OAFAD,EAAa5+D,EAAMoiB,OAASpiB,EAAM8hC,WAClCj/K,EAAam9I,EAAMqiB,OAASriB,EAAMgiC,WAC1B10gB,KAAKwygB,QAAQr1f,MACjB,IAAK,IACDo4U,EAAa,EACb,MACJ,IAAK,IACD+7M,EAAa,EAGrBtxiB,KAAKwxiB,aAAaF,EAAY/7M,EAAY,KAAM,KAAMm9I,GAAO,GAC7D1ye,KAAK2rf,YAAYjZ,EAAMyrB,qBAAsBzrB,EAAOA,EAAMkJ,iBACtDlJ,EAAMoW,cACN9of,KAAKyxiB,kBAAkB/+D,QAI3B1ye,KAAKyxiB,kBAAkB/+D,GAE3BA,EAAM+hC,mBAAqB/hC,EAAMoiB,OACjCpiB,EAAMiiC,mBAAqBjiC,EAAMqiB,QAQrCwgB,EAAKr5gB,UAAUu1iB,kBAAoB,SAAU/+D,GACzC,IAAIxic,EAAOlwC,KAAKywiB,YAChB/9D,EAAMyqB,eAAgB,EAClBn9f,KAAKssf,WACDp8c,EAAKR,MAAQ,GAAKQ,EAAKP,OAAS,GAChC3vC,KAAKivgB,aAAc,EACnBv8B,EAAMlG,UAAU52c,aAAa,SAAU,QACvC51B,KAAK0xiB,OAAOh/D,EAAOA,EAAMkJ,gBAAiBlJ,EAAMyrB,qBAAqBjW,gBACrExV,EAAMkiC,aAAc,GAEfliC,EAAMwvC,sBACXxvC,EAAMwvC,qBAAsB,EAC5BxvC,EAAMuK,aAAc,EACpBvK,EAAMoW,aAAepW,EAAMs5B,iBAAmBt5B,EAAMg/B,YACpDh/B,EAAMiZ,cACNjZ,EAAMgoB,kBAIlB6a,EAAKr5gB,UAAUyvf,YAAc,SAAUznP,EAAQwuO,EAAOn7Z,GAClD,IAAIp6D,EAAOu1d,EAAMgJ,aAAav+d,KAC9B+mP,EAAO22E,YAAY,IAAIowJ,GAAKyH,EAAMsK,gBAAgBz7d,EAAGmxd,EAAMsK,gBAAgB1me,EAAGo8d,EAAMsK,gBAAgBttc,MAAOgjc,EAAMsK,gBAAgBrtc,SACjI4nC,EAAK9yE,KAAI,SAAUsnC,EAAMvxB,GACI,eAArBuxB,EAAKq3V,aAAyC,MAATjmX,GACrC+mP,EAAO0qP,gBAAgB7id,EAAMvxB,EAAO,KAAOuxB,EAAKmvc,oBAAsBnvc,EAAKguc,YAAchuc,EAAKmE,MAEzE,aAArBnE,EAAKq3V,aAAuC,MAATjmX,GACnC+mP,EAAO8qP,gBAAgBjjd,EAAMvxB,EAAO,KAAOuxB,EAAKmvc,oBAAsBnvc,EAAKguc,YAAchuc,EAAKmE,UAK1Gqle,EAAKr5gB,UAAUw1iB,OAAS,SAAUh/D,EAAOn7Z,EAAMu+S,GAC3C,IAGIi3G,EAHAhte,EAAQC,KACR2xiB,EAAW3xiB,KAAKywiB,YAChBtzhB,EAAOnd,KAAKwygB,QAAQr1f,KAExBnd,KAAKswgB,UAAY59B,EAAMgJ,aAAaszB,WAAahvgB,KAAKswgB,UACtD,IAAIshC,EAAwB,GAC5B5xiB,KAAKmuiB,0BAA4B,GACjC,IAAK,IAAInwiB,EAAK,EAAGuF,EAAKg0E,EAAMv5E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC9C,IAAI+tC,EAAOxoC,EAAGvF,GACd+ue,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMu9d,GAAc5rc,KAAMA,EACzC+hgB,mBAAoB/hgB,EAAKspc,WACzB04D,qBAAsBhigB,EAAKupc,aAC3Bs6D,kBAAmB7jgB,EAAKspc,WACxBw6D,oBAAqB9jgB,EAAKupc,aAC1Bw6D,qBAAsB/jgB,EAAK8oc,aAAck7D,oBAAqB,MAEzC,eAArBhkgB,EAAKq3V,YACQ,MAATjmX,IACA4vd,EAAS8iE,qBAAuBtoiB,KAAKgH,KAAKojiB,EAASpwhB,EAAIu0W,EAAOv0W,GAAMu0W,EAAOpmV,OAAU3D,EAAKspc,WAC1FtI,EAAS6iE,mBAAsB+B,EAASjigB,MAAQomV,EAAOpmV,OAI9C,MAATvyB,IACA4vd,EAAS8iE,sBAAwB,EAAItoiB,KAAKgH,KAAKojiB,EAAShigB,QAAUgigB,EAASr7hB,EAAIw/W,EAAOx/W,IAAOw/W,EAAOnmV,SAC9F5D,EAAKspc,WACXtI,EAAS6iE,mBAAsB+B,EAAShigB,OAASmmV,EAAOnmV,QAG3Do9b,EAAShqd,SACVgpB,EAAKspc,WAAatI,EAAS6iE,kBAC3B7jgB,EAAKupc,aAAevI,EAAS8iE,oBAC7B7viB,KAAKmuiB,0BAA0BvsiB,KAAKmre,IAExC6kE,EAAsBhwiB,KAAK,CACvByze,WAAYtpc,EAAKspc,WAAYC,aAAcvpc,EAAKspc,WAAY26D,SAAUjkgB,EAAK3xB,KAC3E61hB,UAAWlkgB,EAAK8oc,eAGxB,IAAIg9D,EAAoB,CAAE9uhB,QAAQ,EAAOgre,eAAgB6jD,EAAuBx3hB,KAAMk+d,KACjFu5D,EAAkB9uhB,QAAU/iB,KAAK0ye,MAAMpze,SACxCU,KAAK0ye,MAAM3od,QAAQuud,GAAWu5D,GAAmB,WAC7C9xiB,EAAM0wiB,YAAc,IAAIxlE,GAAK,EAAG,EAAG,EAAG,GACtClre,EAAM0xiB,kBAAkB/+D,OAI5B1ye,KAAKywiB,YAAc,IAAIxlE,GAAK,EAAG,EAAG,EAAG,GACrCjre,KAAKqxiB,gBAAgB3+D,KAI7B6iC,EAAKr5gB,UAAUm1iB,gBAAkB,SAAU3+D,EAAOo/D,EAAUC,QACvC,IAAbD,IAAuBA,GAAW,QACpB,IAAdC,IAAwBA,GAAY,GACxC,IAKIhlE,EALAilE,EAAyBD,EAAY/xiB,KAAKwwiB,QAAQrC,0BAClDnuiB,KAAKmuiB,0BACL2D,GACA9xiB,KAAKyxiB,kBAAkB/+D,GAG3B,IAAK,IAAI91e,EAAI,EAAGA,EAAIo1iB,EAAuBn1iB,OAAQD,IAC1Co1iB,EAAuBp1iB,GAAGmmB,SAC3Bgqd,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMu9d,GACrB5rc,KAAM2mc,EAAMkJ,gBAAgBh/e,GAC5BkxiB,mBAAoBkE,EAAuBp1iB,GAAGkxiB,mBAC9CC,qBAAsBiE,EAAuBp1iB,GAAGmxiB,qBAChD6B,kBAAmBl9D,EAAMkJ,gBAAgBh/e,GAAGy4e,WAC5Cw6D,oBAAqBn9D,EAAMkJ,gBAAgBh/e,GAAG04e,aAC9Cy6D,oBAAqBr9D,EAAMkJ,gBAAgBh/e,GAAGi4e,aAC9Ci7D,qBAAsBkC,EAAuBp1iB,GAAGkziB,sBAEpDp9D,EAAM3od,QAAQ4td,GAAc5K,KAUxCwoC,EAAKr5gB,UAAU+1iB,yBAA2B,SAAUpxiB,EAAGi0f,EAAQC,EAAQriB,EAAOn7Z,GAC1E,IAKIu0d,EACAz2D,EACAC,EAOAvI,EAdAhte,EAAQC,KACRu/F,EAAkC,YAArBv/F,KAAKgqiB,aAA8BhqiB,KAAKgnB,UACrBnmB,EAAc,WAAI,EAAI,GAAK,GAAzDA,EAAEmtQ,OAAU,EAAI,EAAI,GAAK,EAC3B7wP,EAAOnd,KAAKwygB,QAAQr1f,KACpB4rZ,EAAS,GAIb/oa,KAAKssf,UAAW,EAChBtsf,KAAK8wiB,uBAAuBp+D,GAC5BA,EAAMwvC,qBAAsB,EAC5BlihB,KAAKivgB,aAAc,EACnBjvgB,KAAKswgB,UAAY59B,EAAMgJ,aAAaszB,WAAahvgB,KAAKswgB,UACtDtwgB,KAAKmuiB,0BAA4B,GAGjC,IADA,IAAIwB,EAAuB,GAClB3xiB,EAAK,EAAGuF,EAAKg0E,EAAMv5E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC9C,IAAI+tC,EAAOxoC,EAAGvF,GACd+ue,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMu9d,GAAc5rc,KAAMA,EAAM+hgB,mBAAoB/hgB,EAAKspc,WACxE04D,qBAAsBhigB,EAAKupc,aAC3Bs6D,kBAAmB7jgB,EAAKspc,WACxBw6D,oBAAqB9jgB,EAAKupc,aAAcy6D,oBAAqB,KAC7DD,qBAAsB/jgB,EAAK8oc,eAEL,aAArB9oc,EAAKq3V,aAAuC,MAATjmX,GACd,eAArB4uB,EAAKq3V,aAAyC,MAATjmX,MACtC2uhB,EAAavkiB,KAAK8L,IAAI9L,KAAK8L,IAAI,EAAImxe,GAAOz4c,EAAKspc,WAAY,EAAG,GAAI,GAAM,IAAO91Y,EAAY,KACzE,IAEdwpU,GADAA,EAA8B,eAArBh9X,EAAKq3V,YAA+B0xH,EAAS/od,EAAKmE,KAAKR,MAAQ,EAAKqld,EAAShpd,EAAKmE,KAAKP,QAC9E,EAAI,EAAIo5X,EAAS,EAAI,EAAIA,EAC3CssE,EAA6B,IAAfy2D,EAAoB,EAAItnD,IAAQjlZ,EAAY,EAAI,GAAM,KAAOusc,EAAY,EAAG,GAC1Fx2D,EAA+B,IAAfw2D,EAAoB,EAAI//f,EAAKupc,cAAiBvpc,EAAKspc,WAAaA,GAActsE,EAC1Fh9X,EAAKupc,eAAiBA,GAAgBvpc,EAAKspc,aAAeA,IAC1DA,EAAcC,EAAeD,EAAc,EAAK,EAAIC,EAAgBD,GAExEtI,EAAS6iE,kBAAoBv6D,EAC7BtI,EAAS8iE,oBAAsBv6D,GAE9BvI,EAAShqd,SACVgpB,EAAKspc,WAAatI,EAAS6iE,kBAC3B7jgB,EAAKupc,aAAevI,EAAS8iE,oBAC7B7viB,KAAKmuiB,0BAA0BvsiB,KAAKmre,KAG5C4iE,EAAqB/tiB,KAAK,CACtByze,WAAYtpc,EAAKspc,WAAYC,aAAcvpc,EAAKspc,WAAY26D,SAAUjkgB,EAAK3xB,KAC3E61hB,UAAWlkgB,EAAK8oc,eAGxB,IAAIq9D,EAAqB,CAAEnvhB,QAAQ,EAAOgre,eAAgB4hD,EAAsBv1hB,KAAMk+d,KACjF45D,EAAmBnvhB,QAAU/iB,KAAK0ye,MAAMpze,SACzCU,KAAK0ye,MAAM3od,QAAQuud,GAAW45D,GAAoB,WAAcnyiB,EAAM0xiB,kBAAkB/+D,MAGxF1ye,KAAKqxiB,gBAAgB3+D,IAS7B6iC,EAAKr5gB,UAAUi2iB,oBAAsB,SAAUtxiB,EAAG6xe,GAC9C,GAAK1ye,KAAKywiB,YAAY/ggB,MAAQ,GAAK1vC,KAAKywiB,YAAY9ggB,OAAS,GAAO+ic,EAAMurB,WAAavrB,EAAMqrB,UAAUvpX,OACnG,OAAO,EAEXx0I,KAAK8wiB,uBAAuBp+D,GAC5B1ye,KAAKssf,UAAW,EAChBtsf,KAAKswgB,WAAY,EACjBtwgB,KAAKivgB,aAAc,EACnBjvgB,KAAKgsB,OAAU0md,EAAMuK,YAA0Dj9e,KAAKgsB,OAAjD0md,EAAMyrB,qBAAqBjW,eAC9DxV,EAAMuK,aAAc,EACpBvK,EAAMwvC,qBAAsB,EAC5B,IAAIkwB,EAAgB1/D,EAAM1xe,QAAQqhC,wBAC9BgwgB,EAAYryiB,KAAKowiB,eACjB7jN,EAAYvsV,KAAKmwiB,cACjBmC,EAAeD,EAAU,GAAG9vgB,MAAQ6vgB,EAActvgB,KAClDyvgB,EAAeF,EAAU,GAAG1vgB,MAAQyvgB,EAAcpvgB,IAClDwvgB,EAAajmN,EAAU,GAAGhqT,MAAQ6vgB,EAActvgB,KAChD2vgB,EAAalmN,EAAU,GAAG5pT,MAAQyvgB,EAAcpvgB,IAChD0vgB,EAAeL,EAAU,GAAG9vgB,MAAQ6vgB,EAActvgB,KAClD6vgB,EAAeN,EAAU,GAAG1vgB,MAAQyvgB,EAAcpvgB,IAClD4vgB,EAAarmN,EAAU,GAAGhqT,MAAQ6vgB,EAActvgB,KAChD+vgB,EAAatmN,EAAU,GAAG5pT,MAAQyvgB,EAAcpvgB,IAChDsuW,EAAS/pY,KAAKgH,IAAIikiB,EAAaI,GAAcrriB,KAAKgH,IAAI+jiB,EAAeI,GACrEnhK,EAAShqY,KAAKgH,IAAIkkiB,EAAaI,GAActriB,KAAKgH,IAAIgkiB,EAAeI,GACrEnhE,GAAUxxe,KAAKgsB,OAAOzK,EAAIixhB,GAAclhK,EAAUghK,EAClD7gE,GAAUzxe,KAAKgsB,OAAO1V,EAAIm8hB,GAAclhK,EAAUghK,EAClDO,EAAY,IAAI7nE,GAAKuG,EAAOC,EAAOzxe,KAAKgsB,OAAO0jB,MAAQ4hW,EAAQtxY,KAAKgsB,OAAO2jB,OAAS4hW,GACpFwhK,EAAmBP,EAAclhK,EAASghK,EAC1CU,EAAmBP,EAAclhK,EAASghK,EAC9C,IAAKnmiB,MAAMklY,EAASA,KAAYllY,MAAMmlY,EAASA,GAC3C,OAAQvxY,KAAKwygB,QAAQr1f,MACjB,IAAK,KACDnd,KAAKwxiB,aAAauB,EAAiBC,EAAiB1hK,EAAQC,EAAQmhG,GAAO,GAC3E,MACJ,IAAK,IACD1ye,KAAKwxiB,aAAauB,EAAiB,EAAGzhK,EAAQ,EAAGohG,GAAO,GACxD,MACJ,IAAK,IACD1ye,KAAKwxiB,aAAa,EAAGwB,EAAiB,EAAGzhK,EAAQmhG,GAAO,GAOpE,OAHA1ye,KAAKiziB,yBAAyBvgE,EAAOogE,GACrC9yiB,KAAK2rf,YAAYjZ,EAAMyrB,qBAAsBzrB,EAAOA,EAAMkJ,iBAC1D57e,KAAKqxiB,gBAAgB3+D,GAAO,IACrB,GAEX6iC,EAAKr5gB,UAAU+2iB,yBAA2B,SAAUvgE,EAAOogE,GACvD,IACII,EACAC,EACAC,EACAC,EACA72iB,EACA82iB,EACAvmE,EACAwmE,EACAC,EATAr2hB,EAAOnd,KAAKwygB,QAAQr1f,KAUpBwyhB,EAAuB,GAC3B3viB,KAAKmuiB,0BAA4B,GACjC,IAAK,IAAI3zhB,EAAQ,EAAGA,EAAQk4d,EAAMkJ,gBAAgB/+e,OAAQ2d,IAAS,CAC/D,IAAIuxB,EAAO2mc,EAAMkJ,gBAAgBphe,IACP,eAArBuxB,EAAKq3V,aAAyC,MAATjmX,GAChB,aAArB4uB,EAAKq3V,aAAuC,MAATjmX,KACpCo2hB,EAAYxngB,EAAKspc,WACjBm+D,EAAYzngB,EAAKupc,aACjBvI,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMu9d,GAAc5rc,KAAMA,EAAM+hgB,mBAAoB/hgB,EAAKspc,WACxE04D,qBAAsBhigB,EAAKupc,aAAcs6D,kBAAmB2D,EAC5D1D,oBAAqB2D,EAAW1D,qBAAsB/jgB,EAAK8oc,aAC3Dk7D,oBAAqB,MAEA,eAArBhkgB,EAAKq3V,aAGLgwK,GAFA52iB,EAAQs2iB,EAAUvxhB,EAAIvhB,KAAKgsB,OAAOzK,IAClC+xhB,EAAYvngB,EAAKmE,KAAKR,MAAQ1vC,KAAK0wiB,SAASl2hB,GAAOgnG,OACpBxhH,KAAK0wiB,SAASl2hB,GAAOpH,IAEpDigiB,GADA72iB,EAAQs2iB,EAAUvxhB,EAAIuxhB,EAAUpjgB,MAAQ1vC,KAAKgsB,OAAOzK,GACjC+xhB,EAAYtziB,KAAK0wiB,SAASl2hB,GAAOpH,MAGpD5W,EAAQs2iB,EAAUx8hB,EAAItW,KAAKgsB,OAAO1V,EAClCg9hB,EAAYvngB,EAAKmE,KAAKP,OAAS3vC,KAAK0wiB,SAASl2hB,GAAOgnG,MACpD4xb,IAAqB,EAAT52iB,EAAauvC,EAAKmE,KAAKP,QAAU2jgB,EAAYtziB,KAAK0wiB,SAASl2hB,GAAOpH,IAE9EigiB,IAAqB,GADrB72iB,EAAQs2iB,EAAUx8hB,EAAIw8hB,EAAUnjgB,OAAS3vC,KAAKgsB,OAAO1V,GAC5By1B,EAAKmE,KAAKP,QAAU2jgB,EAAYtziB,KAAK0wiB,SAASl2hB,GAAOpH,KAElF8/hB,EAAe3riB,KAAK6L,IAAIggiB,EAAUC,GAClCF,EAAe5riB,KAAK8L,IAAI+/hB,EAAUC,GAClCG,GAAaN,EAAelziB,KAAK0wiB,SAASl2hB,GAAOi5hB,WAAazziB,KAAK0wiB,SAASl2hB,GAAOk5hB,YACnFH,GAAaJ,EAAeD,GAAgBlziB,KAAK0wiB,SAASl2hB,GAAOk5hB,YACjE3mE,EAAS8iE,oBAAsB2D,EAAY,EAAI,EAAIA,EACnDzmE,EAAS6iE,kBAAoB2D,EAAY,EAAI,EAAIA,EAC5CxmE,EAAShqd,SACVgpB,EAAKspc,WAAatI,EAAS6iE,kBAC3B7jgB,EAAKupc,aAAevI,EAAS8iE,oBAC7B7viB,KAAKmuiB,0BAA0BvsiB,KAAKmre,IAExC4iE,EAAqB/tiB,KAAK,CACtByze,WAAYtpc,EAAKspc,WAAYC,aAAcvpc,EAAKspc,WAAY26D,SAAUjkgB,EAAK3xB,KAC3E61hB,UAAWlkgB,EAAK8oc,gBAI5B,IAAIq9D,EAAqB,CAAEnvhB,QAAQ,EAAOgre,eAAgB4hD,EAAsBv1hB,KAAMk+d,KACjF45D,EAAmBnvhB,QAAU/iB,KAAK0ye,MAAMpze,UACzCU,KAAK0ye,MAAM3od,QAAQuud,GAAW45D,IAItC38B,EAAKr5gB,UAAUs1iB,aAAe,SAAUvoE,EAAQC,EAAQ53F,EAAQC,EAAQmhG,EAAOihE,GAO3E,IAAI9gN,EACA+gN,EACAC,EACA7yiB,EACJ,GAVK0xe,EAAMoW,cACPpW,EAAM8pB,eAAe5me,aAAa,YAAa,QAAU51B,KAAKihK,UAAY,wBAE1EyxU,EAAMq7B,mBACNr7B,EAAMq7B,kBAAkBn4e,aAAa,YAAa,QAAU51B,KAAKihK,UAAY,wBAMlE,OAAXgoU,GAA8B,OAAXC,EACnB,IAAK,IAAIlre,EAAK,EAAGuF,EAAKmve,EAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC7D,IAAIxB,EAAQ+G,EAAGvF,GACf41iB,EAAWlhE,EAAM6B,oBAAsB/3e,EAAMmjI,MAAMzvF,KAAK3uB,EAAI/kB,EAAMqjI,MAAM3vF,KAAK3uB,EAC7EsyhB,EAAWnhE,EAAM6B,oBAAsB/3e,EAAMqjI,MAAM3vF,KAAK55B,EAAI9Z,EAAMmjI,MAAMzvF,KAAK55B,EAC7Eu8U,EAAY,cAAgBo2I,GAAU0qE,EAAWriK,EAASsiK,EAAYA,IAClE,KAAO1qE,GAAUyqE,EAAWpiK,EAASsiK,EAAYA,IAAa,IAClEhhN,EAAay+C,GAAUC,EAAU1+C,EAAY,UAAYy+C,EAAS,IAAMC,EAAS,IAAM1+C,EACnFr2V,EAAM0gE,UACiB,cAAnB1gE,EAAM67G,SACN77G,EAAMuggB,cAAct8f,WAAWm1B,aAAa,YAAai9T,GAGpD6/I,EAAMoW,cACPtsf,EAAMuggB,cAAcnne,aAAa,YAAai9T,GAGtD7xV,EAAU6B,GAAW6ve,EAAM1xe,QAAQyY,GAAK,WAAajd,EAAMge,MAAQ,yBAC/Dhe,EAAMwggB,iBACNxggB,EAAMwggB,gBAAgBpne,aAAa,YAAai9T,GAEhDr2V,EAAMsggB,eACNtggB,EAAMsggB,cAAclne,aAAa,YAAai9T,GAE9Cr2V,EAAM0ze,cACN1ze,EAAM0ze,YAAYt6c,aAAa,aAAc,UAC7Cp5B,EAAM0ggB,aAAatne,aAAa,aAAc,WAE9C50B,IACAA,EAAQgzB,MAAMwC,WAAa,aAM/C++e,EAAKr5gB,UAAU40iB,uBAAyB,SAAUp+D,GAG9C,IAFA,IAAIlge,EACAy9hB,EACKz1hB,EAAQ,EAAGA,EAAQk4d,EAAMkJ,gBAAgB/+e,OAAQ2d,IAAS,CAC/D,IAAIuxB,EAAO2mc,EAAMkJ,gBAAgBphe,GACjCy1hB,EAAYlkgB,EAAK8oc,aACb70e,KAAK0wiB,SAASl2hB,GACTk4d,EAAMuK,cACPj9e,KAAK0wiB,SAASl2hB,GAAOpH,IAAM68hB,EAAU78hB,IACrCpT,KAAK0wiB,SAASl2hB,GAAOgnG,MAAQyub,EAAUzub,QAI3ChvG,EAAQ,CACJihiB,UAAW1ngB,EAAKwnc,YAAYnge,IAC5BsgiB,YAAa3ngB,EAAKwnc,YAAY/xX,MAC9BpuG,IAAK68hB,EAAU78hB,IACfouG,MAAOyub,EAAUzub,OAErBxhH,KAAK0wiB,SAASl2hB,GAAShI,KAKnC+igB,EAAKr5gB,UAAU43iB,mBAAqB,SAAUphE,GAC1C,IAYI1xe,EAZA+yiB,EAAe/ziB,KAAKwygB,QAAQ/nY,aAC5BoiW,EAAa6F,EAAMyrB,qBAAqBjW,eAExCx4d,EAASgjd,EAAMiqB,YACf9/f,EAASmD,KAAKknB,SAAW,EAAI6shB,EAAal3iB,OAC1CwqgB,EAAWrngB,KAAKknB,SAAWojd,GAAY,aAAc,CAAE9tZ,KAAM,SAAU9sC,MAAQ,GAC/EC,EAAS3vC,KAAKknB,SAAWojd,GAAY,aAAc,CAAE9tZ,KAAM,SAAU7sC,OAAS,GAC9ED,EAAS7yC,EAASwqgB,EALR,GAKsBxqgB,EAAS,GAL/B,GAKiDA,EAAS,GACpEose,EAAS4D,EAAWtrd,EAAIsrd,EAAWn9b,MAAQA,EANjC,EAOVw5b,EAAU2D,EAAWv2d,EAPX,EAQV09a,EARU,EASVw8G,EAAUxwiB,KAAKwwiB,QAKnB,GAFiB,wGACA,oGACF,IAAX3ziB,GAAgBgG,GAAW7C,KAAKihK,UAAY,0BAC5C,OAAO,EAEX,IAAI6tU,EAAap/c,EAAOm2c,aACxBkuE,EAAe/ziB,KAAKknB,SAAW,CAAC,SAAW6shB,EAC3CjlE,EAAW1se,UANX4xiB,oSAOAh0iB,KAAK0viB,gBAAkBhghB,EAAOu2c,YAAY,CACtCxsd,GAAIzZ,KAAKihK,UAAY,yBACrBz9H,UAAW,aAAeylc,EAAS,IAAMC,EAAS,MAEtDlpe,KAAK0viB,gBAAgB1tiB,YAAY8se,GACjC9ue,KAAK0viB,gBAAgB1tiB,YAAY0tB,EAAO2uY,cAAc,IAAIsrF,GAAW3pf,KAAKihK,UAAY,gBAAiB,UAAW,CAAEtrF,MAAO,cAAejmC,MAAO,GAAK,EAAG,IAAIu7b,GAAK,EAAG,EAAGv7b,EAAQC,EAAUg0O,IAAgB,EAAG,KAC7M,IAGIswR,EAHAC,EAAexkhB,EAAO2uY,cAAc,IAAIsrF,GAAW3pf,KAAKihK,UAAY,gBAAiB,UAAW,CAAEtrF,MAAO,cAAejmC,MAAO,GAAK,GAAK,IAAIu7b,GAAK,EAAG,EAAGv7b,EAAQC,EAAUg0O,IAAgB,EAAG,IACjMuwR,EAAat+gB,aAAa,SAAU,sBACpC51B,KAAK0viB,gBAAgB1tiB,YAAYkyiB,GAEjC,IAAK,IAAIt3iB,EAAI,EAAGA,GAAKC,EAAQD,IAAK,CAM9B,OALAq3iB,EAAcF,EAAan3iB,EAAI,GAC/BoE,EAAU0uB,EAAOu2c,YAAY,CACzBzic,UAAW,aAAewwZ,EAAY,KAAOh0b,KAAKknB,SAjC5C,EAiCkEy8P,GAAgB,MAGpFswR,GACJ,IAAK,MACDzD,EAAQlC,gBAAgBttiB,EAAShB,KAAK0viB,iBACtC,MACJ,IAAK,OACDc,EAAQ/B,iBAAiBztiB,EAAShB,KAAK0viB,iBACvC,MACJ,IAAK,SACDc,EAAQ3B,mBAAmB7tiB,EAAShB,KAAK0viB,gBAAiBh9D,GAC1D,MACJ,IAAK,UACD89D,EAAQtB,oBAAoBluiB,EAAShB,KAAK0viB,gBAAiBh9D,GAC3D,MACJ,IAAK,QACD89D,EAAQnB,kBAAkBruiB,EAAShB,KAAK0viB,gBAAiBh9D,EAAO1ye,KAAKknB,UAG7E8sa,GAAaqzE,EAAY1jP,GAI7B,GAFA3jR,KAAK0viB,gBAAgB95gB,aAAa,UAAW51B,KAAKknB,SAAW,IAAM,GAAKlnB,KAAK2wiB,gBAC7E3wiB,KAAK0viB,gBAAgB95gB,aAAa,SAAU,QACxC88c,EAAMoW,aAAc,CACpB,IAAIqrD,EAAU3ziB,SAASW,cAAc,OACrCgziB,EAAQ16hB,GAAKi5d,EAAM1xe,QAAQyY,GAAK,QAChC06hB,EAAQv+gB,aAAa,QAAS,gCAC9B,IAAIw+gB,EAAa1hE,EAAM6Q,cAAc5zc,OAAS,EAC1Cq5d,EAAMt2B,EAAMiqB,YAAYh4B,UAAU,CAClClrd,GAAIi5d,EAAM1xe,QAAQyY,GAAK,eACvBi2B,MAAOgjc,EAAM6Q,cAAc7zc,MAC3BC,OAAQykgB,IAEZprC,EAAIpze,aAAa,QAAS,qBAC1Boze,EAAIhngB,YAAYhC,KAAK0viB,iBACrByE,EAAQnyiB,YAAYgngB,GACpBxogB,SAASuuB,eAAe/uB,KAAKihK,UAAY,sBAAsBj/J,YAAYmyiB,QAG3EzhE,EAAMlG,UAAUxqe,YAAYhC,KAAK0viB,iBASrC,OAPK1viB,KAAKknB,WACN0B,IAAaG,IAAI/oB,KAAK0viB,gBAAiB,uBAAwB1viB,KAAKq0iB,gBAAiBr0iB,MACrF4oB,IAAaG,IAAI/oB,KAAK0viB,gBAAiB,sBAAuB1viB,KAAKs0iB,iBAAkBt0iB,MACjFA,KAAKswgB,WACLkgC,EAAQhC,QAGT,GAQXj5B,EAAKr5gB,UAAUgzgB,iBAAmB,SAAUx8B,EAAOn7Z,GAC7Bv3E,KAAKuwgB,aAAah5b,IAEhCv3E,KAAK8ziB,mBAAmBphE,GACxB1ye,KAAKssf,UAAW,IAGhBtsf,KAAKwwiB,QAAQ3uB,gBACb7hhB,KAAKswgB,WAAY,EACjBtwgB,KAAKssf,UAAW,EAChB5Z,EAAMlG,UAAU52c,aAAa,SAAU,UAS/C2/e,EAAKr5gB,UAAUq0gB,aAAe,SAAUh5b,GAEpC,IADA,IAAIg9d,GAAc,EACTv2iB,EAAK,EAAGuF,EAAKg0E,EAAMv5E,EAAKuF,EAAG1G,OAAQmB,IAAM,CAC9C,IAAI+tC,EAAOxoC,EAAGvF,GACdu2iB,EAAeA,GAAoC,IAApBxogB,EAAKspc,YAA0C,IAAtBtpc,EAAKupc,aAEjE,OAAOi/D,GAEXh/B,EAAKr5gB,UAAUm4iB,gBAAkB,WAC7B,IAAIrziB,EAAUhB,KAAK0viB,gBAGnB,OAFA1viB,KAAK2wiB,eAAiB,EACtB3viB,EAAQ40B,aAAa,UAAW,GAAK51B,KAAK2wiB,iBACnC,GAEXp7B,EAAKr5gB,UAAUo4iB,iBAAmB,WAC9B,IAAItziB,EAAUhB,KAAK0viB,gBAGnB,OAFA1viB,KAAK2wiB,eAAiB,GACtB3viB,EAAQ40B,aAAa,UAAW,GAAK51B,KAAK2wiB,iBACnC,GAKXp7B,EAAKr5gB,UAAUqtB,iBAAmB,WAC1BvpB,KAAK0ye,MAAMv5c,cAGfvQ,IAAaG,IAAI/oB,KAAK0ye,MAAM1xe,QAAShB,KAAKuwiB,WAAYvwiB,KAAKw0iB,gBAAiBx0iB,MAC5EA,KAAK0ye,MAAMp5d,GAAG+M,IAAQoC,eAAgBzoB,KAAK6pT,iBAAkB7pT,MAC7DA,KAAK0ye,MAAMp5d,GAAG+M,IAAQmC,gBAAiBxoB,KAAKy0iB,iBAAkBz0iB,MAC9DA,KAAK0ye,MAAMp5d,GAAG+M,IAAQqC,cAAe1oB,KAAK89f,eAAgB99f,MAC1DA,KAAK0ye,MAAMp5d,GAAGtZ,KAAKk4C,YAAal4C,KAAK00iB,mBAAoB10iB,QAK7Du1gB,EAAKr5gB,UAAUytB,oBAAsB,WAC7B3pB,KAAK0ye,MAAMv5c,cAGfvQ,IAAaa,OAAOzpB,KAAK0ye,MAAM1xe,QAAShB,KAAKuwiB,WAAYvwiB,KAAKw0iB,iBAC9Dx0iB,KAAK0ye,MAAM74d,IAAIwM,IAAQoC,eAAgBzoB,KAAK6pT,kBAC5C7pT,KAAK0ye,MAAM74d,IAAIwM,IAAQmC,gBAAiBxoB,KAAKy0iB,kBAC7Cz0iB,KAAK0ye,MAAM74d,IAAIwM,IAAQqC,cAAe1oB,KAAK89f,gBAC3C99f,KAAK0ye,MAAM74d,IAAI7Z,KAAKk4C,YAAal4C,KAAK00iB,sBAQ1Cn/B,EAAKr5gB,UAAUs4iB,gBAAkB,SAAU3ziB,GACvC,IAAI6xe,EAAQ1ye,KAAK0ye,MACb1md,EAAS0md,EAAM1xe,QAAQqhC,wBACvBwre,EAAUhrgB,GAAW6ve,EAAMk5B,OAAOvpe,wBAClCyyd,EAAUj0f,EAAE8rC,QAAU3gB,EAAO8W,KAAQv7B,KAAK8L,IAAIw6f,EAAQ/qe,KAAO9W,EAAO8W,KAAM,GAC1Eiyd,EAAUl0f,EAAE+rC,QAAU5gB,EAAOgX,IAAOz7B,KAAK8L,IAAIw6f,EAAQ7qe,IAAMhX,EAAOgX,IAAK,GAM3E,OALIhjC,KAAKwygB,QAAQ+D,yBACbh1B,GAAauT,EAAQC,EAAQriB,EAAMyrB,qBAAqBjW,kBACxDrnf,EAAEyrC,iBACFtsC,KAAKiyiB,yBAAyBpxiB,EAAGi0f,EAAQC,EAAQriB,EAAOA,EAAMkJ,mBAE3D,GAKX25B,EAAKr5gB,UAAU2tT,iBAAmB,SAAUhpT,GAExC,IAAI6xe,EAAQ1ye,KAAK0ye,MACbj3R,EAAU,KACC,cAAX56M,EAAEsK,OACEtK,EAAEyrC,gBAAkBtsC,KAAK4wiB,QACxB5wiB,KAAKswgB,WAAc59B,EAAMkiC,aAClB50gB,KAAKwygB,QAAQG,oBAAsB3ygB,KAAKowiB,eAAevziB,OAAS,IACxEgE,EAAEyrC,iBAENmvK,EAAU56M,EAAE46M,SAEZi3R,EAAMghC,cACFhhC,EAAMzrd,UACNjnB,KAAKmwiB,cAAgBnwiB,KAAK20iB,gBAAgB30iB,KAAKmwiB,cAAetviB,EAAG46M,GAC7Dz7M,KAAKwygB,QAAQG,oBAAsB3ygB,KAAKmwiB,cAActziB,OAAS,GAC5DmD,KAAKowiB,eAAevziB,OAAS,GAChCmD,KAAKmyiB,oBAAoBtxiB,EAAG6xe,IAGpC1ye,KAAK6wiB,cAAchwiB,EAAG6xe,EAAOA,EAAMzrd,WAM3Csuf,EAAKr5gB,UAAUu4iB,iBAAmB,SAAU5ziB,GAExC,IAEIo8B,EAFAy1c,EAAQ1ye,KAAK0ye,MACbj3R,EAAU,KAEC,eAAX56M,EAAEsK,MACFswM,EAAU56M,EAAE46M,QACZx+K,EAASp8B,EAAEo8B,QAGXA,EAASp8B,EAAEo8B,QAE4C,IAAvDA,EAAOxjB,GAAGtb,QAAQu0e,EAAM1xe,QAAQyY,GAAK,cACrC8ne,GAAa7O,EAAM+hC,mBAAoB/hC,EAAMiiC,mBAAoBjiC,EAAMyrB,qBAAqBjW,kBAC5FxV,EAAMghC,aAAc,GAEpBhhC,EAAMzrd,UACNjnB,KAAKowiB,eAAiBpwiB,KAAK20iB,gBAAgB30iB,KAAKowiB,eAAgBvviB,EAAG46M,KAM3E85T,EAAKr5gB,UAAU4hgB,eAAiB,SAAUj9f,GACtC,IAAI6xe,EAAQ1ye,KAAK0ye,MACb++D,GAA6E,IAAzD5wiB,EAAEo8B,OAAOxjB,GAAGtb,QAAQu0e,EAAM1xe,QAAQyY,GAAK,eACH,IAAxD5Y,EAAEo8B,OAAOxjB,GAAGtb,QAAQu0e,EAAM1xe,QAAQyY,GAAK,aACvCi5d,EAAMghC,aAAe+9B,IACrBzxiB,KAAKqxiB,gBAAgB3+D,GAAO,GAAM,GAElCA,EAAMzrd,UACFyrd,EAAMkiC,aAAerzB,GAAa7O,EAAMoiB,OAAQpiB,EAAMqiB,OAAQriB,EAAMyrB,qBAAqBjW,iBACvD,IAA/Blof,KAAKowiB,eAAevziB,QAAgBmD,KAAKssf,UAC5Ctsf,KAAKwwiB,QAAQj9f,QAEjBvzC,KAAKowiB,eAAiB,GACtB19D,EAAMkiC,aAAc,IAM5BW,EAAKr5gB,UAAUw4iB,mBAAqB,WAC5B10iB,KAAKssf,UACLtsf,KAAKyxiB,kBAAkBzxiB,KAAK0ye,OAEhC1ye,KAAK03gB,YAAc,KACnB13gB,KAAKowiB,eAAiB,GACtBpwiB,KAAKmwiB,cAAgB,IAQzB56B,EAAKr5gB,UAAUy4iB,gBAAkB,SAAUC,EAAW/ziB,EAAG46M,GACrD,GAAIA,EAAS,CACTm5V,EAAY,GACZ,IAAK,IAAIh4iB,EAAI,EAAGgQ,EAAW6uM,EAAQ5+M,OAAQD,EAAIgQ,EAAUhQ,IACrDg4iB,EAAUhziB,KAAK,CAAE2gC,MAAOk5K,EAAQ7+M,GAAG+vC,QAAShK,MAAO84K,EAAQ7+M,GAAGgwC,QAASiogB,UAAW,YAKtF,GAAyB,KADzBD,EAAYA,GAAwB,IACtB/3iB,OACV+3iB,EAAUhziB,KAAK,CAAE2gC,MAAO1hC,EAAE8rC,QAAShK,MAAO9hC,EAAE+rC,QAASiogB,UAAWh0iB,EAAEg0iB,gBAG7D,CAAIj4iB,EAAI,EAAb,IAAK,IAAW43B,EAAWoghB,EAAU/3iB,OAAQD,EAAI43B,EAAU53B,IACnDg4iB,EAAUh4iB,GAAGi4iB,YAAch0iB,EAAEg0iB,UAC7BD,EAAUh4iB,GAAK,CAAE2lC,MAAO1hC,EAAE8rC,QAAShK,MAAO9hC,EAAE+rC,QAASiogB,UAAWh0iB,EAAEg0iB,WAGlED,EAAUhziB,KAAK,CAAE2gC,MAAO1hC,EAAE8rC,QAAShK,MAAO9hC,EAAE+rC,QAASiogB,UAAWh0iB,EAAEg0iB,YAKlF,OAAOD,GAKXr/B,EAAKr5gB,UAAU2+B,cAAgB,WAE3B,MAAO,QAQX06e,EAAKr5gB,UAAUif,QAAU,WAErBnb,KAAK2pB,uBAEF4rf,EApzBe,GCTtBl3e,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAmBzCq2gB,GAA8B,SAAU31gB,GAExC,SAAS21gB,IACL,IAAI/0iB,EAAmB,OAAXo/B,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAEhE,OADAD,EAAMswgB,WAAa,GACZtwgB,EAkGX,OAtGAs+B,GAAUy2gB,EAAc31gB,GASxB21gB,EAAa54iB,UAAU60gB,WAAa,SAAUzI,EAAc51B,GACxD,IAAIzO,EAAS,IAAIwzB,GAAO/kB,EAAO,SAAU41B,EAAaz0e,YAAY,GAClEowc,EAAO7pd,KAAO,SACd6pd,EAAOisC,UAAY5H,EAAa4H,UAAY,kBAC5CjsC,EAAO5rX,SAAW,SAClBiwZ,EAAajwZ,SAAW,SACxB4rX,EAAO94d,KAAO,OACd84d,EAAO40B,SAAWnmB,EAAMrG,WAAWnK,SACnCwQ,EAAM4c,cAAc1tf,KAAKqie,GACzBjke,KAAKywgB,SAASnI,EAAcrkC,EAAQyO,IAKxCoiE,EAAa54iB,UAAUu0gB,SAAW,SAAUskC,EAAczsC,EAAc51B,GAIpE,IAHc1ye,KAAKqwgB,WAAW3mf,MAAK,SAAU4gT,GACzC,OAAOA,EAAYlwT,OAASkuf,EAAa4H,aAE/B,CACV,IAAI8kC,EAAiBD,EAAa7kC,UAAYx9B,EAAMn7Z,KAAKrmD,QAAO,SAAU6a,GACtE,OAAOA,EAAK3xB,OAAS26hB,EAAa7kC,aACnC,GAAKx9B,EAAMmb,aACVp2a,EAAU,IAAIO,GAAK06Z,EAAO,OAAQ,CAClCt4d,KAAMkuf,EAAa4H,UACnBxhB,eAAgB,CACZh/c,MAAO,GAEX8qc,eAAgBw6D,EAAcx6D,eAC9Bj+I,UAAWy4M,EAAcz4M,UACzBk3I,QAAS,EACTE,QAAS,IACThoa,SAAUqpe,EAAcrpe,SACxB2ta,iBAAiB,EACjBrD,YAAa,aAEjBj2e,KAAKqwgB,WAAWzugB,KAAK61E,KAS7Bq9d,EAAa54iB,UAAUwzB,OAAS,SAAUu0c,GACtCA,EAAOyO,MAAMuiE,mBAAmBvlhB,OAAOu0c,IAK3C6wE,EAAa54iB,UAAU67f,6BAA+B,SAAU/1b,EAAMiia,GAKlE,IAJA,IAAIppd,EAAOmnD,EACPopB,EAAM,EACNtwB,EAAQ,EACRj+D,EAASge,EAAKhe,OACTD,EAAI,EAAGA,EAAIC,EAAQD,IACxBwuF,GAAOvwE,EAAKje,GAAGqne,EAAO4zB,OAE1B,IAASj7f,EAAI,EAAGA,EAAIC,EAAQD,IACxBk+D,GAAgBjgD,EAAKje,GAAGqne,EAAO4zB,OAC/Bh9e,EAAKje,GAAGqne,EAAO4zB,OAAStwf,KAAKooI,MAAO70E,EAAQswB,EAAO,KAEvD,OAAOvwE,GAQXi6hB,EAAa54iB,UAAUkhgB,YAAc,SAAUn5B,GAC3Cjke,KAAK8/B,QAAQmkc,IAKjB6wE,EAAa54iB,UAAU2+B,cAAgB,WACnC,MAAO,gBAWXi6gB,EAAa54iB,UAAUif,QAAU,aAK1B25hB,EAvGuB,CAwGhCj8B,ICnHEq8B,GAAiC,WAMjC,SAASA,EAAgBxiE,GAErB1ye,KAAKm1iB,gBAAkB,GAEvBn1iB,KAAKo1iB,sBAAwB,GAE7Bp1iB,KAAKq1iB,gBAAkB,GAEvBr1iB,KAAKs1iB,sBAAwB,GAE7Bt1iB,KAAKu1iB,2BAA6B,GAElCv1iB,KAAKw1iB,iBAAmB,GACxBx1iB,KAAK0ye,MAAQA,EACb1ye,KAAKupB,mBAkgBT,OA7fA2rhB,EAAgBh5iB,UAAUqtB,iBAAmB,WACrCvpB,KAAK0ye,MAAMv5c,aAGfn5B,KAAK0ye,MAAMp5d,GAAG,QAAStZ,KAAKywD,MAAOzwD,OAOvCk1iB,EAAgBh5iB,UAAUohf,0BAA4B,SAAUvxc,GAC5D,IAKI+uc,EACAnrc,EAEAiid,EARAp1f,EAAQ,EACRi5iB,EAAyB,GACzBtmN,EAAa,GACbolK,EAAkC,aAArBxod,EAAKq3V,YAClBsyK,EAAYnhD,EAAaxod,EAAKmE,KAAKP,OAAS5D,EAAKmE,KAAKR,MAK1D3D,EAAKsxc,iBAAiB54e,KAAI,SAAUkxiB,EAAYn7hB,GAC5Cm7hB,EAAWphC,WAAW9vgB,KAAI,SAAUmxiB,GACL,KAAvBA,EAAcrjiB,MAAuC,OAAxBqjiB,EAAc14iB,OAAwC,OAAtB04iB,EAAcj9hB,MAC3Emie,EAAYxQ,GAAYsrE,EAAcrjiB,KAAMojiB,EAAWvnE,WACvDz+b,EAAS4kd,EAAazZ,EAAUprc,MAAQorc,EAAUnrc,OAClDA,GAAU,EAAIgmgB,EAAWhtY,OAAOj5H,OACA,eAA3BimgB,EAAWhtY,OAAOx9J,KARrB,GAQuD,GACzDymf,EAA0C,OAAnCgkD,EAAcC,iBAA6BD,EAAcC,iBAC3Dx6D,GAAgD,kBAAtBu6D,EAAcj9hB,IAAmBs9B,OAAO,IAAI9sC,KAAKysiB,EAAcj9hB,MACtFi9hB,EAAcj9hB,IAAKozB,GAAQ2pgB,EAC1Br6D,GAAkD,kBAAxBu6D,EAAc14iB,MAAqB+4C,OAAO,IAAI9sC,KAAKysiB,EAAc14iB,QACxF04iB,EAAc14iB,MAAO6uC,GAAQ2pgB,EACpC56D,EAAUprc,MAAQkid,EAdrB,IAcuCA,EAAM,GAA8B,SAAxB+jD,EAAWt7f,WAAyBk6c,IACrF5kd,GAAoBitc,GAASg5D,EAAcrjiB,KAAMq/e,EAfnD,GAekE+jD,EAAWvnE,WAAWvxe,QAE1F44iB,EAAuBj7hB,GAAUi7hB,EAAuBj7hB,GAClDi7hB,EAAuBj7hB,GAASm1B,EAAUA,EAAS8lgB,EAAuBj7hB,GADfm1B,MAIzEw/S,EAAW30U,GAAShe,EACpBA,GAASi5iB,EAAuBj7hB,GAAUi7hB,EAAuBj7hB,GAtBvD,GAsB2E,KAEzFuxB,EAAKiuc,sBAAwBx9e,GAAyB,KAAfuvC,EAAKq7G,OAAiBpnJ,KAAK0ye,MAAM65B,cAAgBvsgB,KAAK0ye,MAAMouB,eAAe5jc,QAC5G1yB,EAAc,GAChB+pd,GACAv0f,KAAKs1iB,sBAAwBG,EAC7Bz1iB,KAAKq1iB,gBAAkBlmN,IAGvBnvV,KAAKo1iB,sBAAwBK,EAC7Bz1iB,KAAKm1iB,gBAAkBhmN,IAS/B+lN,EAAgBh5iB,UAAU83f,4BAA8B,SAAUjod,EAAMvxB,EAAOja,EAAQwzf,GACnF,IACIxye,EACAjL,EAEAkiC,EACAwrb,EAGA+tB,EAEA70f,EACAyb,EACAmie,EAEA8W,EACAhnZ,EAEAmiY,EAjBAhte,EAAQC,KAGRwqC,EAAU,GAGViO,GAAU1M,EAAK8uc,gBAAkB9uc,EAAKuuc,aAAevuc,EAAKyuc,eAAe7qc,OAAS,GACjF5D,EAAKkvc,aAAatrc,OAAUnF,EAE7BsrgB,EAAW,GAIXC,EAAmC,YAAvBhqgB,EAAK8uc,cAGjBS,EAAavvc,EAAKuvc,WAElBhC,EAAkBvtc,EAAKutc,gBACvBL,EAAkBltc,EAAKwgd,kBAAkB/3W,QAAWuha,GAAa34iB,YAAkB2uC,EAAK2hd,WACxF3hd,EAAKktc,gBAAkB,EACvBxH,EAAU6H,IAAoBy8D,IAAgBz8D,GAAmBy8D,EAChEhiD,EAASz9e,EAAImiC,EAAS1M,EAAKyuc,eAAe9qc,MAAUqkd,EAASz9e,EAAImiC,EAAS1M,EAAKiuc,sBACpFh6e,KAAKs9gB,eAAevpB,EAASxye,EAAIwqB,EAAKyuc,eAAe9qc,MAAO+hc,EAAQwH,EAAiBltc,EAAKiuc,sBAAwBxvc,EAASupd,EAASrkd,MAAQ,EAAI3D,EAAKyuc,eAAe9qc,MAAO1vC,KAAK0ye,MAAM1xe,QAAQyY,GAAK,mBAAqBe,EAAOxa,KAAK0ye,MAAM1xe,QAAQyY,GAAK,uBAAyBe,GAChRuxB,EAAKsxc,iBAAiB54e,KAAI,SAAUkxiB,EAAYz8d,GAC5C8qZ,EAAa,EACbjke,EAAMuxf,aAAevxf,EAAM2ye,MAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAI1Z,EAAM2ye,MAAM1xe,QAAQyY,GAAKe,EAAQ,mBAAqB0+D,IAClHy8d,EAAWphC,WAAW9vgB,KAAI,SAAUmxiB,EAAeh5iB,GAK/C,GAJAk5iB,EAAW,GACX54iB,EAAuC,kBAAxB04iB,EAAc14iB,MAAqB+4C,OAAO,IAAI9sC,KAAKysiB,EAAc14iB,QAAU04iB,EAAc14iB,MACxGyb,EAAmC,kBAAtBi9hB,EAAcj9hB,IAAmBs9B,OAAO,IAAI9sC,KAAKysiB,EAAcj9hB,MAAQi9hB,EAAcj9hB,MAClGo0d,EAAWhte,EAAMi2iB,wBAAwBjqgB,EAAM6pgB,EAAcrjiB,KAAMw5B,EAAKsxc,iBAAiBnka,GAAOk1Z,UAAWric,EAAKsxc,iBAAiBnka,GAAO6rN,UAAW6wQ,EAAcz5e,mBACnJp5C,OAAQ,CAClBy1B,EAAS6ic,GAAmBn+e,EAAO6uC,GAAQgod,EAASrkd,MACpDqid,EAAO1W,GAAmB1ie,EAAKozB,GAAQgod,EAASrkd,MAChDqid,EAAOzW,EAAa,CAAC9ic,EAAQA,EAASu5c,GAAM,GAAKA,EACjDjX,EAAYxQ,GAAYyC,EAASx6d,KAAMw6d,EAASqB,WAChDwjB,GAA2C,OAAnCgkD,EAAcC,iBAA6B9jD,EAAOv5c,EAASo9f,EAAcC,kBAAoBrrgB,EACrGjpB,EAAIi3B,EAASu7c,EAASxye,EAAIipB,EAC1Bl0B,GAAOgje,IAAoBy8D,IAAgBz8D,GAAmBy8D,EAAet9f,EAASs7c,EAASz9e,EAC3Fwke,EAAUnrc,OAAS,EAAInF,EAAUzqC,EAAMo1iB,gBAAgBj8d,GAAW66a,EAASz9e,EAAImiC,EAASqic,EAAUnrc,OAAS,EAC3G5vC,EAAMq1iB,sBAAsBl8d,GAASn5E,EAAMo1iB,gBAAgBj8d,IAAW+/Z,EAC/C,WAAvBlM,EAAShoM,WACTxjR,IAAMwwe,EAAOv5c,EAAShO,GAAW,EACjCogE,EAAS,UAEmB,QAAvBmiY,EAAShoM,WACdxjR,EAAIA,GAAKwwe,EAAOv5c,EAAShO,GAAWmrgB,EAAWhtY,OAAOj5H,MAAQ,EAC9Dk7D,EAAS,QAGTA,EAAS,QACTrpF,GAAKo0hB,EAAWhtY,OAAOj5H,MAAQ,GAEnCp5B,EAA+B,eAA3Bq/hB,EAAWhtY,OAAOx9J,MACdmue,GAAmBy8D,GAAez8D,IAAoBy8D,EAAcz/hB,EAAIk0B,EAAUl0B,EAAIk0B,EAAel0B,EAC7G,IAAIhK,EAAU,IAAI8+d,GAAWrre,EAAM2ye,MAAM1xe,QAAQyY,GAAKe,EAAQ,+BAAiC0+D,EAAQ,SAAWt8E,EAAG2kB,EAAGjL,EAAGs0F,EAAQmiY,EAASx6d,MAO5I,GAN4B,SAAxBojiB,EAAWt7f,WACX/tC,EAAQiG,KAAgC,SAAxBojiB,EAAWt7f,SACvBuic,GAAS7P,EAASx6d,KAAMq/e,EAAK7kB,EAASqB,WAAakV,GAASsO,EAAK7kB,EAASx6d,KAAMw6d,EAASqB,WAC7F9he,EAAQiV,EAAIjV,EAAQiV,EAAIipB,GAE5B0lc,GAAYnwe,EAAM2ye,MAAMtsM,SAAU95R,EAASyge,EAASqB,UAAWrB,EAASqB,UAAUz4Z,OAAS51E,EAAM2ye,MAAMrG,WAAW7K,UAAWzhe,EAAMuxf,cAAc,EAAOvxf,EAAM2ye,MAAMwK,QAAQ,EAAM,KAAM,KAAM,KAAM,EAAM,KAAMn9e,EAAM2ye,MAAMoW,cACxN/of,EAAM2ye,MAAMoW,aAAc,CAC1B,IAAInpF,EAAW2qE,GAAYyC,EAASx6d,KAAMw6d,EAASqB,WACnDrue,EAAMw1iB,2BAA2B3ziB,KAAK,IAAIqpe,GAAK3+d,EAAQiV,EAAGjV,EAAQgK,EAAGqpZ,EAASjwX,MAAOiwX,EAAShwX,SAC9F5vC,EAAMy1iB,iBAAiB5ziB,KAAK0K,GAE5BqpiB,EAAWhtY,OAAOj5H,MAAQ,GAAgC,kBAA3BimgB,EAAWhtY,OAAOx9J,MAGhC,MAFjB2qiB,EAAW/1iB,EAAMk2iB,uBAAuB/8d,EAAO64a,EAAOv5c,EAAShO,EAASuB,EAAMyM,EAAQC,EAAQqic,EAAWxue,EAASynf,EAAUhnB,EAAShoM,UAAW+wQ,EAAUC,EAAWz8D,EAAiBtV,MAGlLjke,EAAMm2iB,oBAAoBh9d,EAAO1+D,EAAOuxB,EAAM+pgB,EAAU9xE,GACxDA,KAGHjke,EAAM2ye,MAAMoW,cACb/of,EAAMo2iB,cAAcn0iB,YAAYjC,EAAMuxf,qBAKjDtxf,KAAK0ye,MAAMoW,cACZvof,EAAOyB,YAAYhC,KAAKm2iB,gBAShCjB,EAAgBh5iB,UAAU+5iB,uBAAyB,SAAUjxD,EAAY4M,EAAK7ld,EAAMyM,EAAQC,EAAQqic,EAAWkpB,EAAajQ,EAAUhvN,EAAWzxM,EAAMyid,EAAWz8D,EAAiB88D,GAC/K,IACIC,EACAC,EACA95iB,EACA83E,EAJA9pC,EAAU,GAKV+rgB,EAAaxqgB,EAAKsxc,iBAAiB2H,GACnCwxD,EAAeD,EAAWhiC,WAAW6hC,GAAejriB,KACpDukC,EAAQkid,EAAMpnd,EACdmF,EAAS3vC,KAAKo1iB,sBAAsBpwD,GAAcx6c,EAClDyuc,EAAyC,YAAvBltc,EAAK8uc,cAA8B9uc,EAAKktc,gBAAkB,EAC5E13d,EAAIi3B,EAASu7c,EAASxye,EACtBjL,GAAOgje,GAAmBy8D,GAAez8D,IAAoBy8D,EAAet9f,EAASs7c,EAASz9e,EAC9FtW,KAAKm1iB,gBAAgBnwD,GAAc/L,EAAoB8a,EAASz9e,EAAImiC,EACpEz4C,KAAKm1iB,gBAAgBnwD,GAAc/L,EACnCw9D,EAAaD,GAA8BD,EAAW5tY,OAAOx9J,KACjE,OAAQsriB,GACJ,IAAK,4BACL,IAAK,YACL,IAAK,mBAEDnjd,GAAQ,KAAO/xE,EAAI,IAAMjL,EAAI,MAAQiL,EAAI,KAAOjL,GADhDq5B,GAAY2pc,GAAmBy8D,GAAez8D,IAAoBy8D,EAAcpmgB,GAAUA,IAC5B,OAASpuB,EAAImuB,GAAS,IAC9Ep5B,EAAI,OAASiL,EAAImuB,GAAS,KAAOp5B,EAAIq5B,GAC3C2jD,GAAwB,8BAAfmjd,EAA+C,MAAcl1hB,EAAK,KAAOjL,EAAIq5B,GAAU,IAAO,IACvG2jD,GAAwB,cAAfmjd,EAA+B,KAAOl1hB,EAAI,IAAMjL,EAAI,OAASiL,EAAImuB,GAAS,IAAMp5B,EAAK,IAC9F,MACJ,IAAK,QACiB,SAAdyuR,GACAvoS,EAAQwngB,EAAYzif,EACpB+yD,EAAS0vb,EAAYzif,EAAIu5d,EAAUprc,MAAQ,GAExB,WAAdq1P,GACLvoS,EAAQwngB,EAAYzif,EAAIu5d,EAAUprc,MAAQ,EAAI,EAC9C4kC,EAAS0vb,EAAYzif,EAAIu5d,EAAUprc,MAAQ,EAAI,IAG/ClzC,EAAQwngB,EAAYzif,EAAIu5d,EAAUprc,MAAQ,EAC1C4kC,EAAS0vb,EAAYzif,GAGzB+xE,GAAQ,KAAO/xE,EAAI,IAAMjL,EAAI,MAAQiL,EAAI,KAAOjL,GADhDq5B,GAAY2pc,GAAmBy8D,GAAez8D,IAAoBy8D,EAAcpmgB,GAAUA,GAC7B,GACzD,MAAQpuB,EAAI,KAAOjL,EAAIq5B,EAAS,GAAK,OAASnzC,EAAQ,GAAK,KAAO8Z,EAAIq5B,EAAS,GAC/E,MAAS2kC,EAAU,KAAOh+D,EAAIq5B,EAAS,GAAK,OAASpuB,EAAImuB,GAAS,KAAOp5B,EAAIq5B,EAAS,GACtF,OAASpuB,EAAImuB,GAAS,KAAOp5B,EAAIq5B,EAAS,GAAK,OAASpuB,EAAImuB,GAAS,IAAOp5B,EAChF,MACJ,IAAK,cACKgje,GAAmBy8D,GAAez8D,IAAoBy8D,GACxDvrgB,EAAU,GACV6rgB,EAAW,GACXC,EAAW,IAGX9rgB,GAAW,GACX6rgB,GAAY,GACZC,GAAY,GAGZhjd,GADc,WAAdyxM,EACQ,KAAOxjR,EAAI,IAAMjL,EAAI,MAAQiL,EAAI,IAAMjL,EAAI,KAAOiL,EAAI,GAAK,KAAOjL,EAAIk0B,GAAW,KAAOjpB,EAAI,IAAM,KACrGjL,EAAIk0B,GAAW,OAASjpB,EAAImuB,EAAQ,EAAI,GAAK,KAAOp5B,EAAIk0B,GAAW,OAASjpB,EAAImuB,EAAQ,GAAK,KAAOp5B,EAAI+/hB,GACzG,OAAS90hB,EAAImuB,EAAQ,EAAI,GAAK,KAAOp5B,EAAIk0B,GAAW,OAASjpB,EAAImuB,EAAQ,IAAM,KAAOp5B,EAAIk0B,GAAW,OACpGjpB,EAAImuB,EAAQ,IAAM,KAAOp5B,EAAIk0B,GAAW,KAAOjpB,EAAImuB,GAAS,KAAOp5B,EAAIggiB,GAAY,KAAO/0hB,EAAImuB,GAAS,IAAOp5B,EAEhG,SAAdyuR,EACG,KAAOxjR,EAAI,IAAMjL,EAAI,MAAQiL,EAAI,IAAMjL,EAAI,KAAOiL,EAAI,GAAK,KAAOjL,EAAIk0B,GAAW,KAAOjpB,EAAI,IAAM,KACrGjL,EAAIk0B,GAAW,OAASjpB,EAAI,IAAM,KAAOjL,EAAI+/hB,GAAY,OAAS90hB,EAAI,IAAM,KAAOjL,EAAIk0B,GAAW,OAClGjpB,EAAImuB,EAAQ,IAAM,KAAOp5B,EAAIk0B,GAAW,OAASjpB,EAAImuB,EAAQ,IAAM,KAAOp5B,EAAIk0B,GAAW,KAAOjpB,EAAImuB,GAAS,KAC3Gp5B,EAAIggiB,GAAY,KAAO/0hB,EAAImuB,GAAS,IAAOp5B,EAG1C,KAAOiL,EAAI,IAAMjL,EAAI,MAAQiL,EAAI,IAAMjL,EAAI,KAAOiL,EAAI,GAAK,KAAOjL,EAAIk0B,GAAW,KAAOjpB,EAAI,IAAM,KACrGjL,EAAIk0B,GAAW,OAASjpB,EAAImuB,EAAQ,IAAM,KAAOp5B,EAAIk0B,GAAW,OAASjpB,EAAImuB,EAAQ,IAAM,KAAOp5B,EAAI+/hB,GACvG,OAAS90hB,EAAImuB,EAAQ,IAAM,KAAOp5B,EAAIk0B,GAAW,OAASjpB,EAAImuB,EAAQ,IAAM,KAAOp5B,EAAIk0B,GAAW,OAC/FjpB,EAAImuB,EAAQ,IAAM,KAAOp5B,EAAIk0B,GAAW,KAAOjpB,EAAImuB,GAAS,KAAOp5B,EAAIggiB,GAAY,KAAO/0hB,EAAImuB,GAAS,IAAOp5B,EAIjI,OAAOg9E,GAQX4hd,EAAgBh5iB,UAAU+1f,4BAA8B,SAAUlmd,EAAMvxB,EAAOja,EAAQ2vC,GACnF,IACI4qc,EAEAv5d,EACAjL,EAIAmiC,EAEAo5c,EACA9kB,EACA/I,EAEA9me,EACAyb,EACAi5e,EAhBA7xf,EAAQC,KAER+1iB,EAAmC,YAAvBhqgB,EAAK8uc,cAGjBrwc,EAAU,GACVgO,GAAUzM,EAAKuuc,eAAiBvuc,EAAK8uc,cAAgB9uc,EAAKyuc,eAAe7qc,OAAS,GACjF5D,EAAKkvc,aAAavrc,MAASlF,EAE5B8oD,EAAO,GAIPgoZ,EAAavvc,EAAKuvc,WAKlBhC,EAAkBvtc,EAAKutc,gBACvBL,EAAkB88D,GAAa34iB,YAAkB2uC,EAAK2hd,WAAa3hd,EAAKktc,gBAAkB,EAC9FA,GAAqCK,EAAkB,GAAK,EAC5D,IAAI9H,EAAU8H,IAAoBy8D,IAAgBz8D,GAAmBy8D,EAChE7lgB,EAAK3uB,EAAIwqB,EAAKiuc,sBAAwBxhc,EAAShO,EAAY0F,EAAK3uB,EAAIi3B,EACzEx4C,KAAKs9gB,eAAe9rC,EAAQyH,EAAiB/oc,EAAK55B,EAAIy1B,EAAKyuc,eAAe9qc,MAAOQ,EAAKP,OAAS,EAAI5D,EAAKyuc,eAAe9qc,MAAO3D,EAAKiuc,sBAAwBxvc,EAASxqC,KAAK0ye,MAAM1xe,QAAQyY,GAAK,mBAAqBe,EAAOxa,KAAK0ye,MAAM1xe,QAAQyY,GACrO,uBAAyBe,GAC/BuxB,EAAKsxc,iBAAiB54e,KAAI,SAAUkxiB,EAAYz8d,GAC5Cn5E,EAAMuxf,aAAevxf,EAAM2ye,MAAMtsM,SAAS6/L,YAAY,CAAExsd,GAAI1Z,EAAM2ye,MAAM1xe,QAAQyY,GAAKe,EAAQ,mBAAqB0+D,IAClH8qZ,EAAa,EACb2xE,EAAWphC,WAAW9vgB,KAAI,SAAUmxiB,EAAeh5iB,GAQ/C,GAPA02F,EAAO,GACP36E,EAAmC,kBAAtBi9hB,EAAcj9hB,IAAmBs9B,OAAO,IAAI9sC,KAAKysiB,EAAcj9hB,MAAQi9hB,EAAcj9hB,IAClGzb,EAAuC,kBAAxB04iB,EAAc14iB,MAAqB+4C,OAAO,IAAI9sC,KAAKysiB,EAAc14iB,QAAU04iB,EAAc14iB,MACxGu7C,EAAS4ic,GAAoBn+e,EAAQ6uC,GAASmE,EAAKP,OACnDkid,EAAOxW,GAAoB1ie,EAAMozB,GAASmE,EAAKP,OAC/Ckid,EAAOvW,EAAa,CAAC7ic,EAAQA,EAASo5c,GAAM,GAAKA,IACjD9kB,EAAWhte,EAAMi2iB,wBAAwBjqgB,EAAM6pgB,EAAcrjiB,KAAMojiB,EAAWvnE,UAAWunE,EAAW5wQ,UAAW6wQ,EAAcz5e,mBAC/Gp5C,OAAQ,CAClB+3d,EAAYxQ,GAAYyC,EAASx6d,KAAMw6d,EAASqB,WAChDwjB,EAAMC,EAAOp5c,EACbl3B,EAAI2uB,EAAK3uB,EAAIi3B,EAASz4C,EAAMs1iB,gBAAgBn8d,GACvCn5E,EAAMu1iB,sBAAsBp8d,GAAS,EAAK1uC,EAC/Cl0B,EAAI45B,EAAKP,OAASO,EAAK55B,EAAImiC,EAAUm5c,EAAM,EAEvCrwe,EADA+3d,EACIy8D,EAAY7lgB,EAAK3uB,EAAIi3B,EAAShO,EAAezqC,EAAMu1iB,sBAAsBp8d,GAAS,EAClFn5E,EAAMs1iB,gBAAgBn8d,GAAS+/Z,EAAkB/oc,EAAK3uB,EAAIi3B,EAAUz4C,EAAMu1iB,sBAAsBp8d,GAAS,EACzGn5E,EAAMs1iB,gBAAgBn8d,GAAS1uC,EAG/BurgB,EAAYx0hB,EAAI03d,EAAkB/oc,EAAK3uB,EAAIi3B,EAAShO,EAAezqC,EAAMu1iB,sBAAsBp8d,GAAS,EACxGn5E,EAAMs1iB,gBAAgBn8d,GAEH,WAAvB6zZ,EAAShoM,UACTzuR,GAAKwke,EAAUnrc,OAAS,EAEI,QAAvBo9b,EAAShoM,UACdzuR,GAAKs7e,EAAM,EAAI9W,EAAUnrc,OAAS,EAGlCr5B,EAAIA,EAAIs7e,EAAM,EAAI9W,EAAUnrc,OAEhCpuB,EAA+B,eAA3Bo0hB,EAAWhtY,OAAOx9J,MAA4Bmue,GAAmBy8D,GAChEz8D,IAAoBy8D,EAAcx0hB,EAAIipB,EAAUjpB,EAAIipB,EAAWjpB,EACpE,IAAIjV,EAAU,IAAI8+d,GAAWrre,EAAM2ye,MAAM1xe,QAAQyY,GAAKe,EAAQ,+BAAiC0+D,EAAQ,SAAWt8E,EAAG2kB,EAAGjL,EA7CvH,SA6CkIy2d,EAASx6d,MAC5IjG,EAAQiG,KAAgC,SAAxBojiB,EAAWt7f,SACvBipc,GAA6C,OAAnCsyD,EAAcC,iBAA4B91iB,EAAMu1iB,sBAAsBp8d,GAC5E08d,EAAcC,iBAAmB9oE,EAASx6d,KAAMw6d,EAASqB,WAAa9he,EAAQiG,KACtF29d,GAAYnwe,EAAM2ye,MAAMtsM,SAAU95R,EAASyge,EAASqB,UAAWrB,EAASqB,UAAUz4Z,OAAS51E,EAAM2ye,MAAMrG,WAAW7K,UAAWzhe,EAAMuxf,aAAcvxf,EAAM2ye,MAAMwK,QAAQ,EAAM,KAAM,KAAM,KAAM,KAAM,EAAM,KAAMn9e,EAAM2ye,MAAMoW,cACvN6sD,EAAWhtY,OAAOj5H,MAAQ,GAAgC,kBAA3BimgB,EAAWhtY,OAAOx9J,MAEpC,MADbmoF,EAAOvzF,EAAM22iB,uBAAuBx9d,EAAO04a,EAAK7ld,EAAM8ld,EAAMr5c,EAAQC,EAAQqic,EAAWxue,EAAS4jC,EAAM68b,EAAShoM,UAAWzxM,EAAMyid,EAAWz8D,EAAiBtV,MAExJjke,EAAMm2iB,oBAAoBh9d,EAAO1+D,EAAOuxB,EAAMunD,EAAM0wY,GACpDA,KAGHjke,EAAM2ye,MAAMoW,cACb/of,EAAMo2iB,cAAcn0iB,YAAYjC,EAAMuxf,qBAKjDtxf,KAAK0ye,MAAMoW,cACZvof,EAAOyB,YAAYhC,KAAKm2iB,gBAShCjB,EAAgBh5iB,UAAUw6iB,uBAAyB,SAAU1xD,EAAY4M,EAAK7ld,EAAM8ld,EAAMr5c,EAAQC,EAAQqic,EAAWkpB,EAAa9zd,EAAM60P,EAAWzxM,EAAMyid,EAAWz8D,EAAiB88D,GACjL,IAEIC,EACAC,EAHA3mgB,EAASkid,EAAOp5c,EAChBjO,EAAU,GAGV+rgB,EAAaxqgB,EAAKsxc,iBAAiB2H,GACnCwxD,EAAeD,EAAWhiC,WAAW6hC,GAAejriB,KACpDmL,EAAI45B,EAAK55B,EAAI45B,EAAKP,OAASkid,EAC3B5Y,EAAkB88D,GAAa34iB,YAAkB2uC,EAAK2hd,WAAa3hd,EAAKktc,gBAAkB,EAC9FA,GAAqCK,EAAkB,GAAK,EAC5D,IAAI5pc,EAAQ1vC,KAAKs1iB,sBAAsBtwD,GAAcx6c,EACjDjpB,IAAQ+3d,GAAmBy8D,GAAez8D,IAAoBy8D,EAAc7lgB,EAAK3uB,EAAIi3B,EACrFx4C,KAAKq1iB,gBAAgBrwD,GAAc90c,EAAK3uB,EAAIi3B,EAASx4C,KAAKq1iB,gBAAgBrwD,IAAe/L,EACzFw9D,EAAaD,GAA8BD,EAAW5tY,OAAOx9J,KACjE,OAAQsriB,GACJ,IAAK,4BACL,IAAK,YACL,IAAK,mBAEDnjd,GAAQ,KAAO/xE,EAAI,IAAMjL,EAAI,OAASiL,GADtCmuB,GAAW4pc,GAAmBy8D,GAAez8D,IAAoBy8D,GAAermgB,EAAQA,IACrC,IAAMp5B,EACrD,MAAQiL,EAAI,KAAOjL,EAAIq5B,GAAU,OAASpuB,EAAImuB,GAAS,KAAOp5B,EAAIq5B,GACtE2jD,GAAwB,8BAAfmjd,EAA+C,OAAcl1hB,EAAImuB,GAAS,IAAMp5B,EAAI,IAAO,IACpGg9E,GAAwB,cAAfmjd,EAA+B,KAAQl1hB,EAAK,KAAOjL,EAAIq5B,GAAxB,KAA+CpuB,EAAK,IAAMjL,EAAI,IAAO,IAC7G,MACJ,IAAK,QAEDg9E,GAAQ,KAAQ/xE,EAAK,IAAMjL,EAAI,OAASiL,GADxCmuB,GAAW4pc,GAAmBy8D,GAAez8D,IAAoBy8D,EAAcrmgB,GAASA,GACpC,GAAK,IAAMp5B,EAAI,OAASiL,EAAImuB,EAAQ,GAAK,KACxFs0d,EAAY1tf,EAAIwke,EAAUnrc,OAAS,EAAI,GAAK,OAASpuB,EAAImuB,EAAQ,GAAK,KACtEs0d,EAAY1tf,EAAIwke,EAAUnrc,OAAS,EAAI,GACxC,OAASpuB,EAAImuB,EAAQ,GAAK,KAAOp5B,EAAIq5B,GAAU,MAASpuB,EAAK,KAAOjL,EAAIq5B,GAC5E,MACJ,IAAK,cACK2pc,GAAmBy8D,GAAez8D,IAAoBy8D,GACxDvrgB,GAAW,GACX6rgB,GAAY,GACZC,GAAY,IAGZ9rgB,EAAU,GACV6rgB,EAAW,GACXC,EAAW,GAGXhjd,GADc,WAAdyxM,EACQ,KAAOxjR,EAAI,IAAMjL,EAAI,MAAQiL,EAAI,IAAMjL,EAAI,KAAOiL,EAAIipB,GAAW,IAAMl0B,EAAI,KAAOiL,EAAIipB,GAAW,KAAOl0B,EAAI,IAC9G,OAASiL,EAAIipB,GAAW,KAAOl0B,GAAKq5B,EAAS,IAAM,GAAK,OAASpuB,EAAI80hB,GAAY,KAAO//hB,GAAKq5B,EAAS,IAAM,EAAI,GAChH,OAASpuB,EAAIipB,GAAW,KAAOl0B,GAAKq5B,EAAS,IAAM,EAAI,IAAM,OAASpuB,EAAIipB,GAAW,KAAOl0B,GAAKq5B,EAAS,KAC5G,OAASpuB,EAAIipB,GAAW,KAAOl0B,GAAKq5B,EAAS,KAAO,KAAOpuB,EAAI+0hB,GAAY,KAAOhgiB,EAAIq5B,GAAU,IAC9FpuB,EAAI,KAAOjL,EAAIq5B,GAEF,QAAdo1P,EACG,KAAOxjR,EAAI,IAAMjL,EAAI,MAAQiL,EAAI,IAAMjL,EAAI,KAAOiL,EAAIipB,GAAW,IAAMl0B,EAAI,KAAOiL,EAAIipB,GAAW,KAAOl0B,EAAI,IAC9G,OAASiL,EAAIipB,GAAW,KAAOl0B,EAAIq5B,EAAS,IAD1C,QAC+DpuB,EAAI80hB,GAAY,KAAO//hB,GAAKq5B,EAAS,KACxG,OAASpuB,EAAIipB,GAAW,KAAOl0B,GAAKq5B,EAAS,KAAO,OAASpuB,EAAIipB,GAAW,KAAOl0B,GAAKq5B,EAAS,KACjG,OAASpuB,EAAIipB,GAAW,KAAOl0B,GAAKq5B,EAAS,KAAO,KAAOpuB,EAAIipB,GAAW,KAAOl0B,EAAIq5B,GAAU,IAAMpuB,EAAI,KACtGjL,EAAIq5B,GAGH,KAAOpuB,EAAI,IAAMjL,EAAI,MAAQiL,EAAI,IAAMjL,EAAI,KAAOiL,EAAIipB,GAAW,IAAMl0B,EAAI,KAAOiL,EAAIipB,GAAW,KAAOl0B,EAAI,IAC9G,OAASiL,EAAI80hB,GAAY,KAAO//hB,EAAI,IACtC,OAASiL,EAAIipB,GAAW,KAAOl0B,EAAI,IAAM,OAASiL,EAAIipB,GAAW,KAAOl0B,GAAKq5B,EAAS,KACtF,OAASpuB,EAAIipB,GAAW,KAAOl0B,GAAKq5B,EAAS,KAAO,KAAOpuB,EAAI+0hB,GAAY,KAAOhgiB,EAAIq5B,GAAU,IAAMpuB,EACtG,KAAOjL,EAAIq5B,GAI3B,OAAO2jD,GAQX4hd,EAAgBh5iB,UAAUohhB,eAAiB,SAAU/7f,EAAGjL,EAAGq5B,EAAQD,EAAOingB,EAAQC,GAC9E52iB,KAAKm2iB,cAAgBn2iB,KAAK0ye,MAAMtsM,SAAS6/L,YAAY,CACjD,GAAM2wE,EACN,YAAa,QAAUD,EAAS,MAE/B32iB,KAAK0ye,MAAMoW,cACZ9of,KAAKm2iB,cAAcn0iB,YAAY6gf,GAAkB7if,KAAK0ye,MAAMwK,OAAQ,CAChE,GAAMy5D,EACN,EAAKp1hB,EACL,EAAKjL,EACL,MAASo5B,EACT,OAAUC,EACV,KAAQ,QACR,eAAgB,EAAG,OAAU,QAC9B3vC,KAAK0ye,MAAMtsM,YAStB8uQ,EAAgBh5iB,UAAUg6iB,oBAAsB,SAAUW,EAAa5iC,EAAWloe,EAAMunD,EAAM0wY,GAC1F,IAAIzkY,EAAYjM,EACZ2ga,EAAgBj0f,KAAK0ye,MAAMtsM,SAAS4+H,SAAS,IAAI2mE,GAAW3re,KAAK0ye,MAAM1xe,QAAQyY,GAAKw6f,EAAY,8BAAgC4iC,EAAc,IAAM7yE,EAAY,cAAej4b,EAAKsxc,iBAAiBw5D,GAAaluY,OAAOj5H,MAAO3D,EAAKsxc,iBAAiBw5D,GAAaluY,OAAOhzF,OAAS31E,KAAK0ye,MAAMrG,WAAW3K,SAAU,EAAG,GAAIpuY,IAC9T2ga,EAAcr+d,aAAa,QAAS,wBACpCiwd,GAAmB7lf,KAAK0ye,MAAMoW,aAAc9of,KAAKsxf,aAAc2C,EAAej0f,KAAK0ye,MAAMwK,QAAQ,EAAM,IAAK,IAAK,KAAM39Y,IAQ3H21c,EAAgBh5iB,UAAU85iB,wBAA0B,SAAUjqgB,EAAMx5B,EAAM67d,EAAWjjG,EAAehvU,GAChG,IAAI4wa,EAAW,CACXhqd,QAAQ,EAAO3I,KAAM88d,GAAsBnrc,KAAMA,EACjDx5B,KAAMA,EAAM67d,UAAWA,EAAWrpM,UAAWomG,EAAehvU,iBAAkBA,GAGlF,OADAn8D,KAAK0ye,MAAM3od,QAAQmtd,GAAsBnK,GAClCA,GAQXmoE,EAAgBh5iB,UAAU46iB,qBAAuB,SAAU9xD,EAAYivB,GACnE,IAAI/6b,EAAQ/iE,SAAS6ue,EAAW33e,OAAO,EAAG,GAAI,IAC1C6ie,EAAc/5d,SAAS6ue,EAAW33e,OAAO,GAAI,IAE7C0+B,EADQ/rC,KAAK0ye,MACAkJ,gBAAgBq4B,GAC7BM,EAAaxoe,EAAKsxc,iBAAiBnka,GAAOq7b,WAC1ChigB,EAAOgigB,EAAWrkC,GAAa39d,KAC/BrV,EAAQq3gB,EAAWrkC,GAAahze,MAChCyb,EAAM47f,EAAWrkC,GAAav3d,IAE9Bo+hB,EAAsB,CACtBhrgB,KAAMA,EAAMmtC,MAAOA,EAAO3mE,KAAMA,EAAM4pD,iBAFnBo4c,EAAWrkC,GAAa/za,iBAG3Cj/D,MAAOA,EAAOyb,IAAKA,EAAKyB,KAAM0rE,GAAsB/iE,QAAQ,GAGhE,OADA/iB,KAAK0ye,MAAM3od,QAAQ+7D,GAAsBixd,GAClCA,GAQX7B,EAAgBh5iB,UAAUu0D,MAAQ,SAAU3pC,GACxC,IAEIkwhB,EACA/1Y,EACAgzW,EAJA/L,EAAWphf,EAAMmW,OAAOxjB,GACxBw9hB,EAAe,+BAInB,GAAIj3iB,KAAK0ye,MAAMoW,aACX,IAAK,IAAIlsf,EAAI,EAAGA,EAAIoD,KAAKu1iB,2BAA2B14iB,OAAQD,IACpD2kf,GAAaz6d,EAAS,EAAGA,EAAS,EAAG9mB,KAAKu1iB,2BAA2B34iB,GAAIoD,KAAKu1iB,2BAA2B34iB,GAAG8yC,MAAO1vC,KAAKu1iB,2BAA2B34iB,GAAG+yC,UACtJu4d,EAAWlogB,KAAKw1iB,iBAAiB54iB,GAAG6c,IAI5Cyuf,EAAS/pgB,QAAQ84iB,IAAiB,IAClCD,EAAS9uC,EAASvrgB,MAAMs6iB,GAAc,GACtCh2Y,EAAYinW,EAASvrgB,MAAMs6iB,GAAc,GACzChjC,EAAY99f,SAAS8qJ,EAAUt6D,OAAOs6D,EAAUpkK,OAAS,GAAI,IAC7DmD,KAAK82iB,qBAAqBE,EAAQ/iC,KAQ1CihC,EAAgBh5iB,UAAU2+B,cAAgB,WACtC,MAAO,mBAOXq6gB,EAAgBh5iB,UAAUif,QAAU,aAG7B+5hB,EAthB0B,GCHjCt9P,GAAwB,WAMxB,SAASA,EAAO86L,GACZ1ye,KAAK0ye,MAAQA,EAuCjB,OAlCA96L,EAAO17S,UAAUwsgB,OAAS,SAAUv9f,EAAMkzE,EAAU+kT,EAAaulI,EAAUj5d,EAAOC,EAAQ4kd,EAAYxve,EAAQy4D,GAC1G,IAAI05d,EAAc,IAAI3uC,GAAYvogB,KAAK0ye,OACvCi2B,EAAWA,GAAsB,CAAC3ogB,KAAK0ye,OACvC,IAAI3F,EAAW,CACXhqd,QAAQ,EAAO3I,KAAM+qE,GAAcz1C,MAAOA,EAAOC,OAAQA,GAE7D3vC,KAAK0ye,MAAM3od,QAAQo7D,GAAc4nZ,GAC5BA,EAAShqd,QACVm0hB,EAAYxuC,OAAOv9f,EAAMkzE,EAAU+kT,EAAaulI,EAAUj5d,EAAQq9b,EAASr9b,MAAOC,EAASo9b,EAASp9b,OAAQ4kd,EAAYxve,EAAQy4D,IAMxIo6N,EAAO17S,UAAU0tgB,WAAa,SAAUl3B,GAEpC,OADiB,IAAI61B,GAAY71B,GACfk3B,WAAWl3B,IAKjC96L,EAAO17S,UAAU2+B,cAAgB,WAE7B,MAAO,UAQX+8Q,EAAO17S,UAAUif,QAAU,aAGpBy8R,EA9CiB,GCCxBu/P,GAA2B,WAM3B,SAASA,EAAUzkE,GACf1ye,KAAK4qe,cAAgB,IAAIwU,GAAc,EAAG,GAC1Cp/e,KAAK6ma,GAAK,EACV7ma,KAAK8ma,GAAK,EACV9ma,KAAK0ye,MAAQA,EACb1ye,KAAKg2G,UAAYh2G,KAAK0ye,MAAM1xe,QAAQyY,GACpCzZ,KAAK28f,YAAc,IAAIr4B,GAAYtke,KAAK0ye,MAAM1xe,QAAQyY,IACtDzZ,KAAKupB,mBAkZT,OA7YA4thB,EAAUj7iB,UAAUqtB,iBAAmB,WACnC,IAAIvpB,KAAK0ye,MAAMv5c,YAAf,CAGA,IAAI+e,EAAc7xB,IAAQW,UAAY,eAAiB,aACvDhnB,KAAK0ye,MAAMp5d,GAAG+M,IAAQoC,eAAgBzoB,KAAK6pT,iBAAkB7pT,MAC7DA,KAAK0ye,MAAMp5d,GAAG+M,IAAQqC,cAAe1oB,KAAK89f,eAAgB99f,MAC1DA,KAAK0ye,MAAMp5d,GAAG4+B,EAAal4C,KAAKgihB,kBAAmBhihB,MACnDA,KAAK0ye,MAAMp5d,GAAG,UAAWtZ,KAAKsygB,UAAWtygB,QAE7Cm3iB,EAAUj7iB,UAAU4hgB,eAAiB,WAC7B99f,KAAK0ye,MAAMurB,WACXj+f,KAAKo3iB,gBAAgB,MAG7BD,EAAUj7iB,UAAU8lhB,kBAAoB,WACpChihB,KAAKo3iB,gBAAgB,MAEzBD,EAAUj7iB,UAAU2tT,iBAAmB,SAAU/iS,GAC7C,IAAI4rd,EAAQ1ye,KAAK0ye,MACE,cAAf5rd,EAAM3b,OAAyBkb,IAAQsmgB,OAAStmgB,IAAQumgB,SAAWl6C,EAAMurB,WAAan3e,EAAMwlB,gBAC5FxlB,EAAMwlB,iBAGLomc,EAAMwvC,sBACH3gC,GAAa7O,EAAMoiB,OAAQpiB,EAAMqiB,OAAQriB,EAAMyrB,qBAAqBjW,iBAChExV,EAAMurB,WAAcvrB,EAAMzrd,SAC1BjnB,KAAK+9f,YAIT/9f,KAAKo3iB,gBAAgB,OAUjCD,EAAUj7iB,UAAUo2gB,UAAY,WAC5B,IAAI5/B,EAAQ1ye,KAAK0ye,MAIjB,OAHI6O,GAAa7O,EAAMoiB,OAAQpiB,EAAMqiB,OAAQriB,EAAMyrB,qBAAqBjW,iBACpElof,KAAK+9f,aAEF,GAOXo5C,EAAUj7iB,UAAU6hgB,UAAY,WAC5B,IAGIzxf,EAOA+qiB,EAVA3kE,EAAQ1ye,KAAK0ye,MACb4kE,EAAkB,GAClBC,EAAgB,GAEhBC,EAAmBh3iB,SAASuuB,eAAe/uB,KAAKg2G,UAAY,mBAC5D+nZ,EAAYrrB,EAAMqrB,UAClBoQ,EAAa3tgB,SAASuuB,eAAe/uB,KAAKg2G,UAAY,YACtDw+Y,EAAY9hB,EAAMyrB,qBAAqBjW,eACvCuvD,EAAa/kE,EAAMoW,aAAetof,SAASuuB,eAAe/uB,KAAKg2G,UAAY,sBAC3Ex1G,SAASuuB,eAAe/uB,KAAKg2G,UAAY,oBAEzC0hc,EAAQl3iB,SAASuuB,eAAe/uB,KAAKg2G,UAAY,cAUrD,GATI08X,EAAMoW,eACD4uD,IACDA,EAAQv2iB,YAAc,MAAO,CACzBsY,GAAIzZ,KAAKg2G,UAAY,aAAcjiF,OAAQ,6CAE/C0jhB,EAAWz1iB,YAAY01iB,KAG/B13iB,KAAKkghB,gBACDxtC,EAAMtgY,QAAQoiC,SAAW+sW,GAAa7O,EAAMi5B,cAAc8V,OAAQ/uC,EAAMi5B,cAAc+V,OAAQltB,GAC9F,OAAO,KAEX,GAAI9hB,EAAMoJ,YAAcpJ,EAAMoJ,WAAWqmC,UAErC,OADAnihB,KAAKo3iB,gBAAgB,KACd,KAeX,GAbAp3iB,KAAKyhhB,OAAS/uC,EAAMtgY,QAAQoiC,OAASk+V,EAAMi5B,cAAc8V,OAAS/uC,EAAMoiB,OACxE90f,KAAK0hhB,OAAShvC,EAAMtgY,QAAQoiC,OAASk+V,EAAMi5B,cAAc+V,OAAShvC,EAAMqiB,OACnEriB,EAAMoW,cACP2uD,EAAW7hhB,aAAa,UAAW,KAEZ,SAAvBmoe,EAAU1vH,UAA8C,eAAvB0vH,EAAU1vH,WAC3CipK,GAAmB,KAAO9iD,EAAUjze,EAAI,IAAMvhB,KAAK0hhB,OAC/C,OAASltB,EAAUjze,EAAIize,EAAU9kd,OAAS,IAAM1vC,KAAK0hhB,QAElC,SAAvB3jB,EAAU1vH,UAA8C,aAAvB0vH,EAAU1vH,WAC3CkpK,GAAiB,KAAOv3iB,KAAKyhhB,OAAS,IAAMjtB,EAAUl+e,EAClD,MAAQtW,KAAKyhhB,OAAS,KAAOjtB,EAAUl+e,EAAIk+e,EAAU7kd,SAEzD+ic,EAAMoW,aAAc,CACf0uD,IACDA,EAAmBx3iB,KAAK28f,YAAY12B,YAAY,CAAE,GAAMjme,KAAKg2G,UAAY,qBAE7E,IAAIA,EAAY08X,EAAMtgY,QAAQoiC,OAASk+V,EAAM1xe,QAAQyY,GAAK,eAAiBi5d,EAAM1xe,QAAQyY,GAAK,OAC9F49hB,EAAer3iB,KAAK28f,YAAYh4B,UAAU,CACtClrd,GAAIu8F,EACJtmE,MAAOgjc,EAAM6Q,cAAc7zc,MAC3BC,OAAQ+ic,EAAM6Q,cAAc5zc,SAE5B+ic,EAAMtgY,QAAQoiC,UACd25X,EAAcA,GAAaz7B,EAAMi5B,cAAcxqgB,iBACpCa,YAAYq1iB,GACvBI,EAAWz1iB,YAAYmsgB,IAE3B7hgB,EAAU,IAAIq/d,GAAW3re,KAAKg2G,UAAY,kBAAmB,OAAQ+nZ,EAAUxrP,KAAK7iO,MAAOqud,EAAUxrP,KAAK58L,OAAS+8Z,EAAMrG,WAAWlK,cAAe,EAAG47B,EAAUv2B,UAAW8vE,GAC3Kt3iB,KAAK23iB,kBAAkBrriB,EAASoriB,EAAOljD,EAAUjze,EAAGvhB,KAAK0hhB,OAAQltB,EAAU9kd,MAAO,EAAG4ngB,GACrFhriB,EAAQzE,EAAI0viB,EACZjriB,EAAQmN,GAAKzZ,KAAKg2G,UAAY,gBAC9Bh2G,KAAK23iB,kBAAkBrriB,EAASoriB,EAAO13iB,KAAKyhhB,OAAQjtB,EAAUl+e,EAAG,EAAGk+e,EAAU7kd,OAAQ4ngB,GACtFv3iB,KAAK43iB,kBAAkBllE,EAAO8hB,EAAWgjD,GACzCH,EAAar1iB,YAAYw1iB,GACpB9kE,EAAMtgY,QAAQoiC,QACfkja,EAAM11iB,YAAYq1iB,QAIe,IAAjCI,EAAWnphB,WAAWzxB,QACtB26iB,EAAmB9kE,EAAMtsM,SAAS6/L,YAAY,CAAE,GAAMjme,KAAKg2G,UAAY,oBACvE1pG,EAAU,IAAIq/d,GAAW3re,KAAKg2G,UAAY,kBAAmB,OAAQ+nZ,EAAUxrP,KAAK7iO,MAAOqud,EAAUxrP,KAAK58L,OAAS+8Z,EAAMrG,WAAWlK,cAAe,EAAG47B,EAAUv2B,UAAW8vE,GAC3Kt3iB,KAAK63iB,oBAAoBvriB,EAASmriB,GAClCnriB,EAAQzE,EAAI0viB,EACZjriB,EAAQmN,GAAKzZ,KAAKg2G,UAAY,gBAC9Bh2G,KAAK63iB,oBAAoBvriB,EAASmriB,GAClCA,EAAWz1iB,YAAYw1iB,GACvBx3iB,KAAK43iB,kBAAkBllE,EAAO8hB,EAAWijD,EAAW78F,aAGpDp6c,SAASuuB,eAAe/uB,KAAKg2G,UAAY,mBAAmBpgF,aAAa,IAAK0hhB,GAC9E92iB,SAASuuB,eAAe/uB,KAAKg2G,UAAY,iBAAiBpgF,aAAa,IAAK2hhB,GAC5Ev3iB,KAAK43iB,kBAAkBllE,EAAO8hB,EAAWijD,EAAW78F,aAIhEu8F,EAAUj7iB,UAAU27iB,oBAAsB,SAAUvriB,EAASmriB,GACzD,IAAIjtE,EAAaxqe,KAAK0ye,MAAMtsM,SAAS4+H,SAAS14Z,GAC9CmriB,EAAWz1iB,YAAYwoe,IAE3B2sE,EAAUj7iB,UAAUy7iB,kBAAoB,SAAUrriB,EAASmriB,EAAY30gB,EAAME,EAAK0M,EAAOC,EAAQ4vD,GAC7F,IAAK/+F,SAASuuB,eAAeziB,EAAQmN,KAAO8lF,EAAW,CACnD,IAAIgzK,EAAOpxQ,YAAc,MAAO,CAC5BsY,GAAInN,EAAQmN,KAEhBg+hB,EAAWz1iB,YAAYuwQ,GAE3B,GAAI/xQ,SAASuuB,eAAeziB,EAAQmN,IAAK,CACrC,IAAIua,EAAQ,OAASgP,EAAI71B,WAAb,WACE21B,EAAK31B,WADP,YAEGuiC,EAFH,aAGIC,EAHJ,WAIErjC,EAAQo+W,OAJV,gDAORotL,EAAgBt3iB,SAASuuB,eAAeziB,EAAQmN,IAChDs+hB,EAAmBv3iB,SAASuuB,eAAe/uB,KAAKg2G,UAAY,mBAChE8hc,EAAclihB,aAAa,QAAS5B,GACpCyjhB,EAAWzjhB,MAAM2P,QAAU,IACvBo0gB,IACAA,EAAiB/jhB,MAAM2P,QAAU,OAI7CwzgB,EAAUj7iB,UAAU07iB,kBAAoB,SAAUllE,EAAO8hB,EAAWwjD,GAUhE,IATA,IAAIjsgB,EACAx5B,EACA29B,EACAq9b,EACA0qE,EACA3riB,EAEAizF,EACAw0Z,EACKlqb,EAAI,EAAGj9D,EAAW8le,EAAMkJ,gBAAgB/+e,OAAQgtE,EAAIj9D,EAAUi9D,IAGnE,GADAkqb,GADAhod,EAAO2mc,EAAMkJ,gBAAgB/xa,IACZqxa,oBAAkCnvc,EAAKguc,YAAjBhuc,EAAKmE,KACxCnE,EAAKqse,iBAAiB5jY,OACtB,GAAKx0I,KAAKyhhB,QAAW1tB,EAASxye,EAAIwye,EAASrkd,OAAUqkd,EAASxye,GAAKvhB,KAAKyhhB,QACnEzhhB,KAAK0hhB,QAAW3tB,EAASz9e,EAAIy9e,EAASpkd,QAAWokd,EAASz9e,GAAKtW,KAAK0hhB,OAAS,CAI9E,GAHAn0C,EAAc/se,SAASuuB,eAAe/uB,KAAKg2G,UAAY,iBAAmBnsC,GAC1Eoue,EAAWz3iB,SAASuuB,eAAe/uB,KAAKg2G,UAAY,sBAAwBnsC,KAC5Et3D,EAAOvS,KAAKk4iB,YAAYnsgB,IAEpB,SAGJ,GADAmE,EAAOlwC,KAAKiue,gBAAgB17d,EAAMw5B,EAAMyod,EAAWT,GAC/B,OAAhBxmB,EAEIA,EADAmF,EAAMoW,aACQ9of,KAAK28f,YAAY33F,SAAS,CACpC,GAAMhla,KAAKg2G,UAAY,iBAAmBnsC,EAC1C,KAAQ99B,EAAKqse,iBAAiBh8U,MAAQs2S,EAAMrG,WAAWjK,gBAI7CsQ,EAAMtsM,SAAS4+H,SAAS,CAClC,GAAMhla,KAAKg2G,UAAY,iBAAmBnsC,EAC1C,KAAQ99B,EAAKqse,iBAAiBh8U,MAAQs2S,EAAMrG,WAAWjK,eACxD,MAEP41E,EAAUh2iB,YAAYure,GACtBjhe,EAAU,IAAI8+d,GAAWpre,KAAKg2G,UAAY,sBAAwBnsC,EAAG,EAAG,EAAG,QAASt3D,GAEpF0liB,EAAW/nE,GADEwC,EAAMoW,aAAe9of,KAAK28f,YAAcjqB,EAAMtsM,SAC5B95R,EAASy/B,EAAKqse,iBAAiBhqC,UAAWric,EAAKqse,iBAAiBhqC,UAAUz4Z,OAAS+8Z,EAAMrG,WAAWhK,eAAgB21E,EAAW,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAM,KAAMtlE,EAAMoW,cAExNvpZ,EAAYkrY,GAAczqe,KAAK6ma,GAAI7ma,KAAK8ma,GAAI52X,EAAMlwC,KAAK4qe,cAAe,GAAI5qe,KAAKqwR,MAAOrwR,KAAKowR,SAAUpwR,KAAKotS,OAAQptS,KAAKyhhB,OAAQzhhB,KAAK0hhB,QACpIn0C,EAAY33c,aAAa,IAAK2pE,GAC9B04c,EAAS5hd,YAAc9jF,EACvB0liB,EAASrihB,aAAa,KAAMsa,EAAK3uB,EArC/B,GAqC4CpU,YAC9C8qiB,EAASrihB,aAAa,KAAMsa,EAAK55B,EAtC/B,EAsC6C,EAAItW,KAAK8te,YAAYn+b,OAAS,GAAGxiC,iBAGhF4uC,GAAc/7C,KAAKg2G,UAAY,iBAAmBnsC,GAClD9tB,GAAc/7C,KAAKg2G,UAAY,sBAAwBnsC,IAKvEste,EAAUj7iB,UAAUg8iB,YAAc,SAAUnsgB,GACxC,IAAIvvC,EACJwD,KAAKowR,UAAW,EAChBpwR,KAAKqwR,OAAQ,EACbrwR,KAAKotS,QAAS,EACdptS,KAAK2kM,SAAU,EACf,IAAIwzW,EAAiC,aAAnBpsgB,EAAK8nc,WAAoD,iBAAxB9nc,EAAK00c,eAClD,GAAM,EAWZ,MAVyB,eAArB10c,EAAKq3V,aACL5mY,EAAQglf,GAAiBj6e,KAAKgH,IAAIvO,KAAKyhhB,OAAS11e,EAAKmE,KAAK3uB,GAAIwqB,EAAKmE,KAAKR,MAAO3D,GAAQosgB,EACvFn4iB,KAAKowR,UAAYrkP,EAAKutc,gBACtBt5e,KAAKqwR,MAAQtkP,EAAKutc,kBAGlB98e,EAAQilf,GAAiBl6e,KAAKgH,IAAIvO,KAAK0hhB,OAAS31e,EAAKmE,KAAK55B,GAAIy1B,EAAKmE,KAAKP,OAAQ5D,GAAQosgB,EACxFn4iB,KAAK2kM,QAAU54J,EAAKutc,gBACpBt5e,KAAKotS,QAAUrhQ,EAAKutc,iBAED,aAAnBvtc,EAAK8nc,UACE9nc,EAAK/gC,OAAO,IAAI7B,KAAK3M,IAEJ,aAAnBuvC,EAAK8nc,UACH9nc,EAAK4/O,OAAOpkR,KAAKC,MAAMhL,IAEN,qBAAnBuvC,EAAK8nc,UACH7ze,KAAK0ye,MAAM0lE,uBAAuBC,oBAAoBtsgB,EAAK4/O,OAAOpkR,KAAKC,MAAMhL,IAASuvC,EAAK/gC,QAE1E,gBAAnB+gC,EAAK8nc,UACK9nc,EAAK/gC,OAAOzD,KAAKi9N,IAAIz4L,EAAKknc,QAASz2e,IAG1BuvC,EAAKkqc,aAAqD,OAAtClqc,EAAKkqc,YAAYrze,MAAM,WACxCmpC,EAAKkqc,YAAYv5e,QAAQ,UAAWqvC,EAAK/gC,OAAOxO,IAAUuvC,EAAK/gC,OAAOxO,IAGzG26iB,EAAUj7iB,UAAU+xe,gBAAkB,SAAU17d,EAAMw5B,EAAM+pV,EAAQi+H,GAChE,IAEIljB,EADAhG,EAAe,GAEf8G,EAAU77G,EAAOv0W,EACjBqwd,EAAU97G,EAAOx/W,EACjB08e,EAAuC,WAAvBjnd,EAAK8uc,cACrB5B,EAAkBltc,EAAKwgd,kBAAkB/3W,QAAWzoG,EAAKqpc,kBAAoBrpc,EAAKqpc,iBAAiB5I,UACjGzgc,EAAKktc,gBAAkB,EAE7B,GADAj5e,KAAK8te,YAAcxD,GAAY/3d,EAAMw5B,EAAKqse,iBAAiBhqC,WAClC,eAArBric,EAAKq3V,YAA8B,CACnC,IAAIuvJ,EAAY3/B,EAAgBe,EAASz9e,EAAItW,KAAK8te,YAAYn+b,OAAS,GACnEokd,EAASz9e,EAAI2ie,EACbtpc,EAASqjd,EAAgBe,EAASz9e,EAAItW,KAAK8te,YAAYn+b,OAASk7b,EAAekpB,EAASz9e,EAAIu0d,EAChG7qe,KAAK4qe,cAAgB,IAAIwU,GAAcp/e,KAAKyhhB,OAAQkR,GACpD9hD,EAAc,IAAI5F,GAAMjre,KAAKyhhB,OAAUzhhB,KAAK8te,YAAYp+b,MAAQ,EAdtD,EAcqEC,GAAWqjd,EAAkC,EAAlB/Z,GAAsBj5e,KAAK8te,YAAYp+b,MAAQlF,GAAaxqC,KAAK8te,YAAYn+b,OAASnF,IAC5LuB,EAAKutc,kBACLzI,EAAYv6d,EAAI08e,EAAgBe,EAASz9e,EAAIy9e,EAASz9e,GACjDtW,KAAK8te,YAAYn+b,OAASnF,GAAcqgc,GAAgBoO,GAE7DpI,EAAYtvd,EAAIowd,IAChBd,EAAYtvd,EAAIowd,GAEhBd,EAAYtvd,EAAIsvd,EAAYnhc,MAAQiic,EAAU77G,EAAOpmV,QACrDmhc,EAAYtvd,GAAOsvd,EAAYtvd,EAAIsvd,EAAYnhc,OAAUiic,EAAU77G,EAAOpmV,QAE1E1vC,KAAK4qe,cAAcrpd,EAAIspd,EAAmBgG,EAAYtvd,EAAIsvd,EAAYnhc,MAAQ1vC,KAAK6ma,KACnF7ma,KAAK4qe,cAAcrpd,EAAIsvd,EAAYtvd,EAAIsvd,EAAYnhc,MAAQ1vC,KAAK6ma,GAAKgkE,GAErE7qe,KAAK4qe,cAAcrpd,EAAIspd,EAAmBgG,EAAYtvd,EAAIvhB,KAAK6ma,KAC/D7ma,KAAK4qe,cAAcrpd,EAAIsvd,EAAYtvd,EAAIvhB,KAAK6ma,GAAKgkE,OAGpD,CACDoO,GAAqCltc,EAAKutc,gBAAkB,GAAK,EACjEt5e,KAAK4qe,cAAgB,IAAIwU,GAAc2U,EAASxye,EAAGvhB,KAAK0hhB,QACxD,IAAIhye,EAAQsjd,EAAgBe,EAASxye,EAAI03d,EACrC8a,EAASxye,EAAKvhB,KAAK8te,YAAYp+b,MAAS,GAC5Cmhc,EAAc,IAAI5F,GAAKv7b,EAAQupc,EAAiBj5e,KAAK0hhB,OAAU1hhB,KAAK8te,YAAYn+b,OAAS,EArC/E,EAqC6F3vC,KAAK8te,YAAYp+b,MAASlF,GAAcxqC,KAAK8te,YAAYn+b,OAASnF,IACrKuB,EAAKutc,iBACLzI,EAAYtvd,EAAIyxe,EAAgBe,EAASxye,EAAIvhB,KAAK8te,YAAYp+b,MAAQm7b,EAClEkpB,EAASxye,EAAIspd,EAAeoO,EAC3BpI,EAAYtvd,EAAIsvd,EAAYnhc,MAAS1vC,KAAK0ye,MAAM6Q,cAAc7zc,QAC/D1vC,KAAK4qe,cAAcrpd,GAAOsvd,EAAYtvd,EAAIsvd,EAAYnhc,MAAS1vC,KAAK0ye,MAAM6Q,cAAc7zc,MACxFmhc,EAAYtvd,GAAOsvd,EAAYtvd,EAAIsvd,EAAYnhc,MAAS1vC,KAAK0ye,MAAM6Q,cAAc7zc,QAIjFmhc,EAAYtvd,EAAI,IAChBvhB,KAAK4qe,cAAcrpd,GAAKsvd,EAAYtvd,EACpCsvd,EAAYtvd,EAAI,GAGpBsvd,EAAYv6d,EAAIs7d,IAChBf,EAAYv6d,EAAIs7d,GAEhBf,EAAYv6d,EAAIu6d,EAAYlhc,QAAUiic,EAAU97G,EAAOnmV,SACvDkhc,EAAYv6d,GAAOu6d,EAAYv6d,EAAIu6d,EAAYlhc,QAAWiic,EAAU97G,EAAOnmV,SAE3E3vC,KAAK4qe,cAAct0d,EAAIu0d,EAAmBgG,EAAYv6d,EAAIu6d,EAAYlhc,OAAS3vC,KAAK8ma,KACpF9ma,KAAK4qe,cAAct0d,EAAIu6d,EAAYv6d,EAAIu6d,EAAYlhc,OAAS3vC,KAAK8ma,GAAK+jE,GAEtE7qe,KAAK4qe,cAAct0d,EAAIu0d,EAAmBgG,EAAYv6d,EAAItW,KAAK8ma,KAC/D9ma,KAAK4qe,cAAct0d,EAAIu6d,EAAYv6d,EAAItW,KAAK8ma,GAAK+jE,GAGzD,OAAOgG,GAEXsmE,EAAUj7iB,UAAUgkhB,cAAgB,WAChCtpU,GAAU52M,KAAKs4iB,oBAEnBnB,EAAUj7iB,UAAUi2e,kBAAoB,WACpCv7R,GAAU52M,KAAKs4iB,oBAQnBnB,EAAUj7iB,UAAUk7iB,gBAAkB,SAAUt2gB,GAC5C,IAAI4xc,EAAQ1ye,KAAK0ye,MACbqrB,EAAYrrB,EAAMoW,aAAetof,SAASuuB,eAAe/uB,KAAKg2G,UAAY,cAC1Ex1G,SAASuuB,eAAe/uB,KAAKg2G,UAAY,oBACzC+hc,EAAmBrlE,EAAMoW,aAAetof,SAASuuB,eAAe/uB,KAAKg2G,UAAY,mBAAqB,KAC1Gh2G,KAAKkghB,gBACDniB,GAAmD,MAAtCA,EAAU5ue,aAAa,aACpCnvB,KAAKs4iB,mBAAqBl4iB,YAAW,WACjC,IAAI8+B,IAAU,IAAIY,QAAQi+d,EAAW,CACjCj9d,SAAU,IACVK,SAAU,SAAUlhC,GAEhB89f,EAAU/pe,MAAMoM,UAAY,GACvBsyc,EAAMoW,cAIPiV,EAAU/pe,MAAM2P,SAAW,EAAK1jC,EAAKygC,UAAYzgC,EAAK6gC,UAAW3zB,WACjE4qiB,EAAiB/jhB,MAAM2P,SAAW,EAAK1jC,EAAKygC,UAAYzgC,EAAK6gC,UAAW3zB,YAJxE4wf,EAAUnoe,aAAa,WAAY,EAAK31B,EAAKygC,UAAYzgC,EAAK6gC,UAAW3zB,aAOjFwL,IAAK,WACG+5d,EAAMoW,cACNiV,EAAU/pe,MAAM2P,QAAU,IAC1Bo0gB,EAAiB/jhB,MAAM2P,QAAU,KAGjCo6d,EAAUnoe,aAAa,UAAW,KAEtC88c,EAAMurB,WAAY,EACdvrB,EAAMi5B,gBACNj5B,EAAMi5B,cAAc8V,OAAS,KAC7B/uC,EAAMi5B,cAAc+V,OAAS,WAI1C5gf,KAQXq2gB,EAAUj7iB,UAAU2+B,cAAgB,WAIhC,MAAO,aAQXs8gB,EAAUj7iB,UAAUif,QAAU,aAKvBg8hB,EA/ZoB,GCI3BoB,GAA8B,WAC9B,SAASA,KA2HT,OAnHAA,EAAar8iB,UAAUwzB,OAAS,SAAUu0c,EAAQpkW,EAAOF,EAAO6gX,GAC5D,IAEI/S,EACAV,EAEAyrE,EACAt1gB,EAOAliC,EACAi/a,EAdAjpB,EAASitE,EAAOjtE,OAChB2kF,EAAgB1X,EAAOtoZ,OAMvBn/E,EAAQ+K,KAAK8L,IAAI4wd,EAAOyO,MAAMsK,gBAAgBrtc,OAAQs0b,EAAOyO,MAAMsK,gBAAgBttc,OACnF+ogB,EAAgBj8iB,EAAQ,IACxB+7hB,EAAYt0D,EAAOs0D,UAAYkgB,EAC/BngB,EAAYr0D,EAAOq0D,UAAYmgB,EAC/BC,EAAc,KAIdx7D,EAASjZ,EAAOyO,MAAMwK,OAC1B,GAA0B,OAArBjZ,EAAOs0D,WAA2C,OAArBt0D,EAAOq0D,UAAqB,CAC1D,IAAK,IAAIt6hB,EAAK,EAAGuF,EAAK0ge,EAAOyO,MAAM4c,cAAetxf,EAAKuF,EAAG1G,OAAQmB,IAAM,CACpE,IAAImoK,EAAU5iK,EAAGvF,GACI,WAAjBmoK,EAAQh7J,OAAyC,IAApBg7J,EAAQjpG,SAA2C,OAAtBipG,EAAQoyX,WAA4C,OAAtBpyX,EAAQmyX,YAChGogB,EAAcvyY,EAAQ6xV,QAAU0gD,EAAcvyY,EAAQ6xV,QAAU0gD,GAIxEpgB,EAAYC,EAAY,EACxBr1f,EAFY1mC,EAAQ,EAAK,EAEL+7hB,OAGpBmgB,EAAcz0E,EAAO+zB,QACrB90d,EAASq1f,EAAYD,EAEzB,IAAK,IAAIvjgB,EAAK,EAAGslf,EAAkB1+B,EAAe5md,EAAKslf,EAAgBx9gB,OAAQk4B,IAAM,CACjF,IAAI4jhB,EAAct+B,EAAgBtlf,GAClC4jhB,EAAYjiD,gBAAkB,GAC9BiiD,EAAY/iD,QAAU,GAClB+iD,EAAYz7e,SACZohb,GAAY3C,EAAcg9D,EAAYn+hB,MAAQ,GAAIm+hB,EAAah9D,EAAcg9D,EAAYn+hB,MAAQ,GAAIypd,KAOrGu0E,GALIA,EADsB,OAArBv0E,EAAOs0D,WAA2C,OAArBt0D,EAAOq0D,UACrBp1f,EAAS37B,KAAKgH,KAAKoqiB,EAAYn8d,KAAOk8d,GAGtCpgB,EAAYp1f,EAAS37B,KAAKgH,KAAKoqiB,EAAYn8d,KAAOk8d,KAErCpgB,EACjCvrD,EAAW,CACPhqd,QAAQ,EAAO3I,KAAMy8d,GAAa5S,OAAQA,EAAQ7sb,MAAOuhgB,EACzDv8W,KAAM6nS,EAAOw5B,cAAck7C,EAAa10E,EAAO40B,UAC/ClwV,OAAQs7T,EAAOy5B,eAAei7C,EAAa,CAAEjpgB,MAAOu0b,EAAOt7T,OAAOj5H,MAAOimC,MAAOsuZ,EAAOt7T,OAAOhzF,QAC9FhmC,OAAQ,EAAI6ogB,EAAe9ogB,MAAO,EAAI8ogB,GAE1Cv0E,EAAOyO,MAAM3od,QAAQ8sd,GAAa9J,GAC7BA,EAAShqd,OAkBV41hB,EAAY3hJ,OAAS,CAAE95V,SAAS,IAjBhCy7e,EAAYjiD,gBAAgB90f,KAAK8jf,GAASizD,EAAYpgN,OAAQogN,EAAYngN,OAAQ34N,EAAOF,EAAO6gX,IAChGm4D,EAAYhje,MAAQo3Z,EAAS3wS,KAC7BqxS,EAAc,IAAI9B,GAAW1H,EAAOyO,MAAM1xe,QAAQyY,GAAK,WAAawqd,EAAOzpd,MAAQ,UAAYm+hB,EAAYn+hB,MAAOuyd,EAAS3wS,KAAM2wS,EAASpkU,OAAOj5H,MAAOq9b,EAASpkU,OAAOhzF,MAAOsuZ,EAAOtgc,QAAS,MAC/L3iC,EAAUsqe,GAAWqtE,EAAYjiD,gBAAgB,GAAI,SAAU,IAAIj6a,GAAKswZ,EAASr9b,MAAOq9b,EAASp9b,QAASqnX,EAAOxkT,SAAUi7X,GAAakrE,EAAYp3hB,EAAEpU,WAAmBwriB,EAAYngN,OAAOrrV,YAAY82d,EAAOyO,MAAMiqB,YAAa14B,EAAOj7D,UACzO68E,IAAmB,EAAO5hB,EAAO84B,cAAe/7f,EAASk8e,GACzDy7D,EAAY/iD,QAAQh0f,KAAK,IAAIqpe,GAAK0tE,EAAYjiD,gBAAgB,GAAGn1e,EAAIi3hB,EAAeG,EAAYjiD,gBAAgB,GAAGpgf,EAAIkiiB,EAAe,EAAIA,EAAe,EAAIA,IAC7JG,EAAY3hJ,OAAS,CACjBruP,OAAQokU,EAASpkU,OAAQyzB,KAAM2wS,EAAS3wS,KACxCzsJ,OAAQo9b,EAASp9b,OAAQutB,SAAS,EAClC2vV,MAAO,SAAUn9W,MAAOq9b,EAASr9b,OAErCuwY,EAAgBi9D,EAASy7D,EAAYjiD,gBAAgB,GAAK,KACtDxZ,GACAmJ,GAAqBrlf,EAAS,IAAKi/a,EAAe04H,EAAYjiD,gBAAgB,GAAI,KAAM,UAe5G6hD,EAAar8iB,UAAUif,QAAU,aAQjCo9hB,EAAar8iB,UAAU2+B,cAAgB,WAInC,MAAO,gBAQX09gB,EAAar8iB,UAAUkhgB,YAAc,SAAUn5B,GAK3C,IAJA,IAAInjc,EAAWmjc,EAAO7jc,UAAUU,SAC5BjhC,EAAQoke,EAAO7jc,UAAUvgC,MACzBu6gB,EAAen2C,EAAO84B,cAAczue,WACpCwsC,EAAQ,EACH98D,EAAK,EAAGuF,EAAK0ge,EAAOtoZ,OAAQ39E,EAAKuF,EAAG1G,OAAQmB,IAAM,CACvD,IAAI26iB,EAAcp1iB,EAAGvF,GAChB26iB,EAAYjiD,gBAAgB75f,SAGjCqlf,GAAck4B,EAAat/c,GAAQj7D,EAAOihC,EAAUmjc,EAAQ00E,EAAYn+hB,MAAOm+hB,EAAYjiD,gBAAgB,IAAI,GAC/G57b,OAGDy9e,EA5HuB,GCV9Bl6gB,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAgCzCm6gB,GAAuC,SAAUz5gB,GAEjD,SAASy5gB,EAAsB32C,GAC3B,IAAIligB,EAAQo/B,EAAO79B,KAAKtB,KAAMiigB,IAAiBjigB,KAI/C,GAHAD,EAAM84iB,yBAA2B,GACjC94iB,EAAM+4iB,wBAA0B,GAChC/4iB,EAAM0Z,GAAKwof,EAAajhgB,QAAQyY,GAAK,qBACjCwof,EAAa76W,MAAO,CACpB,IAAIgzV,EAAY9P,GAAY23B,EAAa76W,MAAO66W,EAAarnB,YAC7D76e,EAAMkjiB,UAAY,IAAIh4D,GAAKg3B,EAAa1e,cAAc7zc,MAAQ,EAAI0qc,EAAU1qc,MAAQ,EAAGuyd,EAAa50d,OAAOrK,IAAKo3c,EAAU1qc,MAAO0qc,EAAUzqc,QAE/I,OAAO5vC,EAujCX,OAjkCAs+B,GAAUu6gB,EAAuBz5gB,GAiBjCy5gB,EAAsB18iB,UAAU68iB,qBAAuB,SAAU3hgB,EAAOwtc,EAAWjlF,EAAUhkV,GACzF,IAAIz4C,EAASljC,KAAKi3hB,aAAiBj3hB,KAAKk3hB,kBACpCl3hB,KAAKiigB,aAAa4zB,gBAAgBiD,eAAe94hB,KAAKiigB,aAAa3S,cAAc,GAAIl4c,GAD7Bp3C,KAAKiigB,aAAa4zB,gBAAgBmB,YAE1Fh3hB,KAAKg5iB,iBAAiB5hgB,EAAOwtc,GAEjC5kf,KAAKqliB,eAAejuf,EAAOwtc,EAAU72c,SAAU4xX,EAAUz8X,EAAQljC,KAAKi5iB,aACtE7hgB,EAAM8hgB,WAAa9hgB,EAAMk/e,SACzBl/e,EAAMyjc,cAAgB+J,EAAU72c,SAC5B/tC,KAAKiigB,aAAak3C,mBAClBn5iB,KAAKo5iB,cAAchigB,EAAOwtc,EAAWjlF,EAAUhkV,IAMvDi9d,EAAsB18iB,UAAUmpiB,eAAiB,SAAUjuf,EAAOrJ,EAAU4xX,EAAUq3H,EAAa3pf,EAAQ+zc,QACtF,IAAbA,IAAuBA,EAAW,GACtC,IAAI83D,EAAa93D,GAAYhqc,EAAMk/e,SAE/Bttf,EAAWi2c,GAAiBi6D,EAAYliB,EAAah3hB,KAAKi3hB,aAAej3hB,KAAK6wM,OAC9E7wM,KAAKmxhB,iBAAiB/5e,EAAOrJ,IACjC/E,EAAS1yB,EAAkB,WAAby3B,EAA0B/E,EAAS1yB,EAAIqpZ,EAAShwX,OAAS,EAAK3G,EAAS1yB,EACrF0yB,EAASznB,EAAkB,WAAbwsB,EAA0B/E,EAASznB,EAAIo+Y,EAASjwX,MAAQ,EAAK1G,EAASznB,EACpF61B,EAAM85e,YAAc,IAAIjmD,GAAKjic,EAASznB,EAAGynB,EAAS1yB,EAAGqpZ,EAASjwX,MAAkB,EAATrC,EAAasyX,EAAShwX,OAAmB,EAATtC,GACtF,YAAbU,IACAqJ,EAAM85e,YAAY56gB,GAAK8gC,EAAM85e,YAAYvhf,OAAS,EAC9CupgB,GAAc,IAAMA,GAAc,IAClC9hgB,EAAM85e,YAAY3vgB,GAAM61B,EAAM85e,YAAYxhf,MATtC,GAYJ0H,EAAM85e,YAAY3vgB,GAZd,KAmBhBq3hB,EAAsB18iB,UAAUk9iB,cAAgB,SAAUhigB,EAAOwtc,EAAWjlF,EAAUhkV,GAClF,IAAI09d,EAAWr5iB,KAAKi3hB,aAChBD,EAAcqiB,EAAWr5iB,KAAKkjC,OAASljC,KAAKg5iB,iBAAiB5hgB,EAAOwtc,GAGxEoyC,GAAelvC,GAFOuxD,EAAYz0D,EAAU6zC,eAAe57hB,QAAU,KACjE,MAC2Cm6hB,GAC/C,I/DupCqB7wC,EAAaj2c,E+DvpC9Bquc,EAAgBv+e,KAAKs5iB,kBAAkB39d,EAAQvkC,EAAM58B,MAAO48B,EAAMyjc,eAsBtE,GArB2B,WAAvB+J,EAAU72c,UACNwwc,GAAiBA,EAAc2yC,cAAgB/pC,GAAU/vc,EAAM85e,YAAa3yC,EAAc2yC,cACvFlxhB,KAAKu5iB,cAAcnigB,EAAOukC,MAAa09d,I/DopC7BlzD,E+DppCuD/uc,EAAM6+c,O/DopChD/ld,E+DppCwDkH,EAAM85e,c/DqpC5F/qC,EAAY5ke,GAAK2uB,EAAK3uB,GAAK4ke,EAAY5ke,EAAI4ke,EAAYz2c,OAASQ,EAAK3uB,EAAI2uB,EAAKR,OAClFy2c,EAAY7ve,GAAK45B,EAAK55B,GAAK6ve,EAAYx2c,OAASw2c,EAAY7ve,GAAK45B,EAAK55B,EAAI45B,EAAKP,Y+DrpCvEyH,EAAMyjc,cAAgB,UACjBw+D,IACDriB,EAAch3hB,KAAKg5iB,iBAAiB5hgB,EAAOwtc,IAE/C5kf,KAAKqliB,eAAejuf,EAAOA,EAAMyjc,cAAel7E,EAAUq3H,EAAah3hB,KAAKi5iB,cAC5E16D,EAAgBv+e,KAAKs5iB,kBAAkB39d,EAAQvkC,EAAM58B,MAAO48B,EAAMyjc,kBAC5CsM,GAAU/vc,EAAM85e,YAAa3yC,EAAc2yC,cAC7DlxhB,KAAKw5iB,2BAA2BpigB,EAAOmnc,KACvCv+e,KAAKy5iB,mBAAmBl7D,EAAennc,EAAOwtc,EAAUj8U,OAAOj5H,MAAOsnf,EAAar3H,EAAU3/Z,KAAKi5iB,cAKtG16D,GAAiBA,EAAc2yC,cAAgB/pC,GAAU/vc,EAAM85e,YAAa3yC,EAAc2yC,cACvFlxhB,KAAKu5iB,cAAcnigB,EAAOukC,IAAW37E,KAAKw5iB,2BAA2BpigB,EAAOmnc,KAC/Ev+e,KAAKy5iB,mBAAmBl7D,EAAennc,EAAOwtc,EAAUj8U,OAAOj5H,MAAOsnf,EAAar3H,EAAU3/Z,KAAKi5iB,aAGtGj5iB,KAAKu5iB,cAAcnigB,EAAOukC,KAAuC,YAA3B37E,KAAKiigB,aAAa92f,MAAiD,WAA3BnL,KAAKiigB,aAAa92f,MAAoB,CACpH,IAEI+tiB,EAAa9hgB,EAAMk/e,UAAY,EAC/BojB,EAAgBL,EAAWr5iB,KAAKkjC,OAASljC,KAAKg5iB,iBAAiB5hgB,EAAOwtc,GACtEzwG,EAAa8qG,GAAiBi6D,GAAaQ,EAAe15iB,KAAKi3hB,aAAej3hB,KAAK6wM,OACnF7wM,KAAKmxhB,iBAAiB/5e,EALX,gBAMfA,EAAM85e,YAAc,IAAIjmD,GAAK92F,EAAW5yX,EAAG4yX,EAAW79X,EAAGqpZ,EAASjwX,MAA4B,EAAnB1vC,KAAKi5iB,YAAkBt5I,EAAShwX,OAA6B,EAAnB3vC,KAAKi5iB,aAC1H7hgB,EAAM85e,YAAY56gB,GAAK8gC,EAAM85e,YAAYvhf,OAAS,EAClDyH,EAAM85e,YAAY3vgB,EAAI61B,EAAM85e,YAAY3vgB,EAP5B,GAOwC61B,EAAM85e,YAAYxhf,MAClE6uc,GAAiBA,EAAc2yC,cAAgB/pC,GAAU/vc,EAAM85e,YAAa3yC,EAAc2yC,cACvFlxhB,KAAKu5iB,cAAcnigB,EAAOukC,IAAW37E,KAAKw5iB,2BAA2BpigB,EAAOmnc,KAC/Ev+e,KAAKy5iB,mBAAmBl7D,EAAennc,EAAOwtc,EAAUj8U,OAAOj5H,MAAOgqgB,EAAe/5I,EAAU3/Z,KAAKi5iB,eAUhHL,EAAsB18iB,UAAUirB,KAAO,SAAUtmB,EAAG0gB,EAAGjL,EAAG2Q,GACtD,IAAIlnB,EAAQC,KACZ,GAAIa,EAAEo8B,OAAOo5D,YAAYl4F,QAAQ,QAAU,EAAG,CAC1C,IAAI+pgB,EAAWrngB,EAAEo8B,OAAOxjB,GAAG9c,MAAMqD,KAAKyZ,IACtC,GAAwB,IAApByuf,EAASrrgB,OAAc,CACvB,IAAIkne,EAAc5td,SAAS+xf,EAAS,GAAGvrgB,MAAM,UAAU,GAAI,IACvDqne,EAAa7td,SAAS+xf,EAAS,GAAGvrgB,MAAM,UAAU,GAAI,IAC1D,IAAKyP,MAAM23d,KAAiB33d,MAAM43d,GAAa,CACvC/8c,GACA80B,GAAc/7C,KAAKiigB,aAAajhgB,QAAQyY,GAAK,0BAEjD,IAAI29B,ErCqdjB,SAA4B58B,EAAO80e,GACtC,IAAK,IAAItxf,EAAK,EAAGg6gB,EAAkB1oB,EAAetxf,EAAKg6gB,EAAgBn7gB,OAAQmB,IAAM,CACjF,IAAIime,EAAS+zC,EAAgBh6gB,GAC7B,GAAIwc,IAAUypd,EAAOzpd,MACjB,OAAOypd,EAGf,OAAOqrB,EAAc,GqC5dO80C,CAAmBrgE,EAAc/je,KAAKiigB,aAAc3S,eAAe3za,OAAOqoZ,GACtFka,GAAY9mc,EAAM7kC,MAAQ6kC,EAAM9gC,EAAEnJ,WAAYoU,EAAGjL,EAAGtW,KAAK25iB,SAASjqgB,MAAO1vC,KAAKiigB,aAAajhgB,QAAQyY,GAAK,yBAA0B5W,GAAW7C,KAAKiigB,aAAajhgB,QAAQyY,GAAK,8BAKpLsiC,GAAc/7C,KAAKiigB,aAAajhgB,QAAQyY,GAAK,0BAE7CwN,IACA9mB,aAAaH,KAAKmogB,cAClBnogB,KAAKmogB,cAAgB/ngB,YAAW,WAAc27C,GAAch8C,EAAMkigB,aAAajhgB,QAAQyY,GAAK,4BAA8B,OAQlIm/hB,EAAsB18iB,UAAUo9iB,kBAAoB,SAAU39d,EAAQnhE,EAAOuzB,GAEzE,IADA,IAAIqJ,EAAQukC,EAAO,GACV/+E,EAAI4d,EAAQ,EAAG5d,GAAK,EAAGA,IAE5B,IADAw6C,EAAQukC,EAAO/+E,IACLsgE,SAAW9lB,EAAMi8e,cAAgBj8e,EAAM85e,aAAe95e,EAAMyjc,gBAAkB9sc,EACpF,OAAOqJ,EAGf,OAAO,MAOXwhgB,EAAsB18iB,UAAUq9iB,cAAgB,SAAU/6D,EAAc7ia,GACpE,IAAK,IAAI/+E,EAAI4hf,EAAahke,MAAQ,EAAG5d,GAAK,EAAGA,IACzC,GAAI++E,EAAO/+E,GAAGsgE,SAAWye,EAAO/+E,GAAGy2hB,cAAgB13c,EAAO/+E,GAAGs0hB,aAAe1yC,EAAa0yC,aACrF1yC,EAAa60C,cAAgBlsC,GAAU3I,EAAa0yC,YAAav1c,EAAO/+E,GAAGs0hB,aAC3E,OAAO,EAGf,OAAO,GAKX0nB,EAAsB18iB,UAAU09iB,aAAe,SAAUxigB,EAAOlH,EAAM2sC,EAAM9uC,GACxE,GAAIo5c,GAAU/vc,EAAM85e,YAAahhf,GAAO,CACpC,IAAIssC,EAAOplC,EAAM85e,YAAYxhf,MACZ,UAAb3B,EACAyuC,EAAOtsC,EAAK3uB,EAAI61B,EAAM85e,YAAY3vgB,EAEhB,SAAbwsB,GACLyuC,EAAOplC,EAAM85e,YAAY3vgB,GAAK2uB,EAAK3uB,EAAI2uB,EAAKR,QACjC,IACP8sC,GAAQplC,EAAM85e,YAAYxhf,MAC1B0H,EAAM85e,YAAY3vgB,EAAI2uB,EAAK3uB,EAAI2uB,EAAKR,OAGtB,gBAAb3B,EACLyuC,EAAQtsC,EAAK3uB,EAAI2uB,EAAKR,MAAS0H,EAAM85e,YAAY3vgB,EAE/B,eAAbwsB,GACLyuC,EAAQplC,EAAM85e,YAAY3vgB,EAAI61B,EAAM85e,YAAYxhf,MAASQ,EAAK3uB,GACnD61B,EAAM85e,YAAYxhf,QACzB0H,EAAM85e,YAAY3vgB,EAAI2uB,EAAK3uB,GAI/BvhB,KAAK65iB,sBAAsBzigB,GAE3BA,EAAMi8e,cAAgBj8e,EAAM85e,cACxB10c,EAAOplC,EAAM85e,YAAYxhf,QACzB0H,EAAMq+B,MAAQ6ta,GAAS9ma,EAA2B,EAAnBx8E,KAAKi5iB,YAAkB7hgB,EAAMq+B,MAAOoH,GACnEzlC,EAAM85e,YAAYxhf,MAAQ8sC,GAEH,IAAvBplC,EAAMq+B,MAAM54E,QAAgBu6C,EAAMq+B,MAAMt3E,QAAQ,QAAU,GAC1D6B,KAAK65iB,sBAAsBzigB,MAQ3CwhgB,EAAsB18iB,UAAU29iB,sBAAwB,SAAUzigB,GAC9DA,EAAMi8e,cAAe,EACrBj8e,EAAM85e,YAAc,MAKxB0nB,EAAsB18iB,UAAU49iB,oBAAsB,SAAU1igB,GAC5DA,EAAMi8e,cAAe,GAKzBulB,EAAsB18iB,UAAUu9iB,mBAAqB,SAAUl7D,EAAennc,EAAOuxH,EAAQquX,EAAa+iB,EAAU1sgB,GAChH,GAAKrtC,KAAKi3hB,aAGL,CACD,IAAIiiB,EAAal5iB,KAAKg6iB,mBAAmBz7D,EAAc2yC,YAAa95e,EAAM85e,YAAa95e,EAAMk/e,SAAmB,EAAT3tX,GAOvG,IANA3oK,KAAKqliB,eAAejuf,EAAO,UAAW2igB,EAAU/iB,EAAa3pf,EAAQ6rgB,GACjEA,EAAa9hgB,EAAMgqc,WACnB83D,EAAa9hgB,EAAMk/e,UAGvBl/e,EAAM8hgB,WAAaA,EACZ9hgB,EAAMi8e,eAAiBlsC,GAAU5I,EAAc2yC,YAAa95e,EAAM85e,cAAgBgoB,GAAc36D,EAAc26D,YAC9Gl5iB,KAAKw5iB,2BAA2BpigB,EAAOmnc,OACtC26D,EAAa9hgB,EAAMgqc,WAIvBhqc,EAAM8hgB,WAAaA,EACnBl5iB,KAAKqliB,eAAejuf,EAAO,UAAW2igB,EAAU/iB,EAAa3pf,EAAQ6rgB,GACrEA,GAAc,QAlBlBl5iB,KAAKi6iB,yBAAyB7igB,EAAOmnc,IA2B7Cq6D,EAAsB18iB,UAAU+9iB,yBAA2B,SAAU7igB,EAAOole,GACxE,IAAI09B,EAAa9igB,EAAM85e,YAEnBipB,EAA2C,WAA3Bn6iB,KAAKiigB,aAAa92f,KAClCqxgB,EAAU0U,YAAY56gB,GAAK4jiB,EAAW5jiB,EAAI4jiB,EAAWvqgB,QACrDyH,EAAM85e,YAAY56gB,GAAKkmgB,EAAU0U,YAAY56gB,EAAIkmgB,EAAU0U,YAAYvhf,QACvEwqgB,EAAgB,IAChB/igB,EAAM85e,YAAY56gB,GAAgC,WAA3BtW,KAAKiigB,aAAa92f,KAAoBgviB,GAAiBA,IAQtFvB,EAAsB18iB,UAAUs9iB,2BAA6B,SAAUpigB,EAAOosG,GAC1E,IAAIz1G,GACC/tC,KAAKi3hB,cAAgB7/e,EAAM85e,YAAY3vgB,EAAI61B,EAAM6+c,OAAO10e,IACzDwsB,EAAW,eAEf,IAAI7wC,EAAQ8C,KAAKmxhB,iBAAiB/5e,EAAOrJ,GACrCp1B,EAAM,IAAIyme,GAAc,EAAG,GAC/Bp/e,KAAKo6iB,eAAehjgB,EAAM85e,YAAa95e,EAAM8hgB,WAAYvgiB,EAAK,EAAGy+B,GACjE,IAAIijgB,EAAgBr6iB,KAAKmxhB,iBAAiB3tY,GACtC82Z,EAAc,IAAIl7D,GAAc,EAAG,GAEvC,OADAp/e,KAAKo6iB,eAAe52Z,EAAS0tY,YAAa1tY,EAAS01Z,WAAYoB,EAAa,EAAGljgB,GACxEp3C,KAAKu6iB,yBAAyBr9iB,EAAOyb,EAAKy+B,EAAM85e,cACnDlxhB,KAAKu6iB,yBAAyBr9iB,EAAOyb,EAAK6qI,EAAS0tY,cACnDlxhB,KAAKu6iB,yBAAyBF,EAAeC,EAAaljgB,EAAM85e,cAOxE0nB,EAAsB18iB,UAAUq+iB,yBAA2B,SAAUC,EAAOC,EAAOvqgB,GAC/E,IAAImld,EAAa,CACb,IAAIjW,GAAc73e,KAAKooI,MAAMz/F,EAAK3uB,GAAIha,KAAKooI,MAAMz/F,EAAK55B,IACtD,IAAI8oe,GAAc73e,KAAKooI,MAAOz/F,EAAK3uB,EAAI2uB,EAAKR,OAASnoC,KAAKooI,MAAMz/F,EAAK55B,IACrE,IAAI8oe,GAAc73e,KAAKooI,MAAOz/F,EAAK3uB,EAAI2uB,EAAKR,OAASnoC,KAAKooI,MAAOz/F,EAAK55B,EAAI45B,EAAKP,SAC/E,IAAIyvc,GAAc73e,KAAKooI,MAAMz/F,EAAK3uB,GAAIha,KAAKooI,MAAOz/F,EAAK55B,EAAI45B,EAAKP,UAEpE6qgB,EAAMj5hB,EAAIha,KAAKooI,MAAM6qa,EAAMj5hB,GAC3Bi5hB,EAAMlkiB,EAAI/O,KAAKooI,MAAM6qa,EAAMlkiB,GAC3BmkiB,EAAMl5hB,EAAIha,KAAKooI,MAAM8qa,EAAMl5hB,GAC3Bk5hB,EAAMnkiB,EAAI/O,KAAKooI,MAAM8qa,EAAMnkiB,GAC3B,IAAK,IAAI1Z,EAAI,EAAGA,EAAIy4f,EAAWx4f,OAAQD,IACnC,GAAIoD,KAAK06iB,iBAAiBF,EAAOC,EAAOplD,EAAWz4f,GAAIy4f,GAAYz4f,EAAI,GAAKy4f,EAAWx4f,SACnF,OAAO,EAGf,OAAO,GAOX+7iB,EAAsB18iB,UAAUw+iB,iBAAmB,SAAUrhC,EAAQC,EAAQqhC,EAASC,GAClF,IAAI/7K,EAAKy6I,EAAOhjgB,EAAI+igB,EAAO/igB,EACvBkpX,EAAK65I,EAAO93f,EAAI+3f,EAAO/3f,EACvBmnd,EAAK7pG,EAAKw6I,EAAO93f,EAAIi+W,EAAK65I,EAAO/igB,EACjCwoX,EAAK87K,EAAQtkiB,EAAIqkiB,EAAQrkiB,EACzBmpX,EAAKk7K,EAAQp5hB,EAAIq5hB,EAAQr5hB,EACzBond,EAAK7pG,EAAK67K,EAAQp5hB,EAAIk+W,EAAKk7K,EAAQrkiB,EACnCkrG,EAAQq9Q,EAAKY,EAAKX,EAAKU,EAC3B,GAAc,IAAVh+Q,EAAa,CACb,IAAIjgG,GAAKk+W,EAAKipG,EAAKlpG,EAAKmpG,GAAMnnX,EAC1BlrG,GAAKuoX,EAAK8pG,EAAK7pG,EAAK4pG,GAAMlnX,EAC1Bq5b,EAAOtziB,KAAK6L,IAAIimgB,EAAO93f,EAAG+3f,EAAO/3f,IAAMA,GAAKA,GAAKha,KAAK8L,IAAIgmgB,EAAO93f,EAAG+3f,EAAO/3f,GAI/E,OADAs5hB,GADAA,GADAA,EAAOA,GAAQtziB,KAAK6L,IAAIimgB,EAAO/igB,EAAGgjgB,EAAOhjgB,IAAMA,GAAKA,GAAK/O,KAAK8L,IAAIgmgB,EAAO/igB,EAAGgjgB,EAAOhjgB,KACpE/O,KAAK6L,IAAIuniB,EAAQp5hB,EAAGq5hB,EAAQr5hB,IAAMA,GAAKA,GAAKha,KAAK8L,IAAIsniB,EAAQp5hB,EAAGq5hB,EAAQr5hB,KACxEha,KAAK6L,IAAIuniB,EAAQrkiB,EAAGskiB,EAAQtkiB,IAAMA,GAAKA,GAAK/O,KAAK8L,IAAIsniB,EAAQrkiB,EAAGskiB,EAAQtkiB,GAG3F,OAAO,GAOXsiiB,EAAsB18iB,UAAU89iB,mBAAqB,SAAUx7iB,EAAOC,EAAQ+yY,EAAOhnW,GACjF,IAAIjpB,EAAI/iB,EAAM+iB,EAQd,OAPIiwX,GAAS,IAAMA,GAAS,KACxB/yY,EAAO6X,EAAI9X,EAAM8X,GAAKk0B,EAAU/rC,EAAOkxC,OAAS,GAChDpuB,EAAI/iB,EAAM+iB,EAAI/iB,EAAMkxC,OAGpBjxC,EAAO6X,EAAI9X,EAAM8X,EAAI9X,EAAMmxC,OAASnF,E/DvBzC,SAAkBqmK,EAAQz5J,GAC7B,IAAIo6V,EAAQjqY,KAAKsuf,MAAOz+c,EAAM9gC,EAAIu6L,EAAOv6L,EAAK8gC,EAAM71B,EAAIsvL,EAAOtvL,GAE/D,OADAiwX,EAAQA,EAAQ,EAAK,MAAQA,EAASA,IACtB,IAAMjqY,KAAK6pY,I+DsBhB0pK,CAAS96iB,KAAK6wM,OAAQ,IAAIuuS,GAAc79d,EAAG9iB,EAAO6X,KAO7DsiiB,EAAsB18iB,UAAU6+iB,iBAAmB,SAAUtle,EAAOr+B,EAAOwtc,EAAWjse,QACtE,IAARA,IAAkBA,EAAM,GAC5B,IAAIqiiB,EAAYp2D,EAAU6zC,eACtBzB,EAAch3hB,KAAKi3hB,aAAiBj3hB,KAAKk3hB,kBACzCl3hB,KAAKiigB,aAAa4zB,gBAAgBiD,eAAe94hB,KAAKiigB,aAAa3S,cAAc,GAAIl4c,GADxBp3C,KAAKg3hB,YAElEh3hB,KAAKg5iB,iBAAiB5hgB,EAAOwtc,GAE7B1nf,EAAQ8C,KAAKi7iB,uBAAuB7jgB,EAAO4jgB,GAC3C9B,EAAal5iB,KAAKiigB,aAAak3C,kBAAoB/hgB,EAAMk/e,SAAW39gB,GAAOy+B,EAAMk/e,SACjF5sc,EAAS,IAAI01Z,GAAc,EAAG,GAC9Bhmc,EAAWp5C,KAAKo6iB,eAAe3ke,EAAOyje,EAAYxvd,EAAQsxd,EAAUtrgB,MAAO0H,GAC/E,GAAuB,UAAnB4jgB,EAAU7viB,KAAkB,CAC5B,GAAInL,KAAKi3hB,aAAc,CACnB,IAAIn4f,EAAIk4f,GAAeh3hB,KAAKk3hB,kBAAoBpvC,GAAe1wc,EAAM+9e,YAAan1hB,KAAKiigB,aAAa4zB,gBAAgB2C,cAChHx4hB,KAAKkjC,QAWT,OATIkU,EAAMq8e,eACN/pc,EAAS1pF,KAAKk7iB,yBAAyBh+iB,EAAOk6C,IAG9CsyC,EAASu1Z,GAAiBi6D,EAAYliB,EAAel4f,EAAI,EAAI9+B,KAAK6wM,QACtC,YAAxBz5J,EAAMyjc,eAAsD,WAAvB+J,EAAU72c,WAC/C27C,EAASu1Z,GAAiBi6D,EAAYliB,EAAkB,KAAJl4f,EAAU9+B,KAAK6wM,UAGpE,KAAO3zM,EAAMqkB,EAAI,IAAMrkB,EAAMoZ,EAAI,MAAQozE,EAAOnoE,EAAI,IAAMmoE,EAAOpzE,EAAI,IAAM8iC,EAAS73B,EAAI,IAAM63B,EAAS9iC,EAG9G,OAAOtW,KAAKm7iB,gBAAgBj+iB,EAAOk8C,GAIvC,MAAO,KAAOl8C,EAAMqkB,EAAI,IAAMrkB,EAAMoZ,EAAI,MAAQozE,EAAOnoE,EAAI,IAAMmoE,EAAOpzE,EAAI,MAAQ8iC,EAAS73B,EAAI,IAAM63B,EAAS9iC,GAQxHsiiB,EAAsB18iB,UAAUi/iB,gBAAkB,SAAUj+iB,EAAOyb,GAC/D,IAAIyiiB,EAAgB,CAACl+iB,EAAOyb,GAC5B,GAAIzb,EAAMoZ,IAAMqC,EAAIrC,EAChB,MAAO,KAAOpZ,EAAMqkB,EAAI,IAAMrkB,EAAMoZ,EAAI,MAAQqC,EAAI4I,EAAI,IAAM5I,EAAIrC,EAGtE,IADA,IAAIg9E,EAAO,IACF12F,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC1B,IAAIooN,EAAIpoN,EAAI,GACR++E,EAAS37E,KAAKq7iB,eAAer2V,EAAGo2V,EAAe,EAAG,GACtD9nd,GAAQ3X,EAAOp6D,EAAI,IAAMo6D,EAAOrlE,EACtB,KAAN1Z,IACA02F,GAAQ,MAGhB,OAAOA,GAOXsld,EAAsB18iB,UAAUm/iB,eAAiB,SAAUr2V,EAAGo2V,EAAe5giB,EAAOsgD,GAChF,GAAc,IAAVA,EACA,OAAOsgf,EAAc5giB,GAEzB,IAAI8giB,EAAKt7iB,KAAKq7iB,eAAer2V,EAAGo2V,EAAe5giB,EAAOsgD,EAAQ,GAC1D4+M,EAAK15Q,KAAKq7iB,eAAer2V,EAAGo2V,EAAe5giB,EAAQ,EAAGsgD,EAAQ,GAC9Dv5C,GAAK+5hB,EAAG/5hB,EAAK+5hB,EAAG/5hB,GAChBjL,GAAKgliB,EAAGhliB,EAAKgliB,EAAGhliB,GAGhB2lE,GAAM,EAAI+oI,GAAKzjM,EAAIyjM,GAFb00D,EAAGn4P,EAAKm4P,EAAGn4P,GAGjB46D,GAAM,EAAI6oI,GAAK1uM,EAAI0uM,GAFb00D,EAAGpjQ,EAAKojQ,EAAGpjQ,GAGrB,OAAIgliB,EAAG/5hB,EACI,CAAEA,EAAG06D,EAAI3lE,EAAG6lE,IAW3By8d,EAAsB18iB,UAAUk+iB,eAAiB,SAAUmB,EAAY/pK,EAAO9nT,EAAQi/E,EAAQvxH,QAC3E,IAAXuxH,IAAqBA,EAAS,GAClC,IAAIhoC,EAAO,IAAIy+W,GAAcm8D,EAAWh6hB,EAAGg6hB,EAAWjliB,GAmBtD,OAlBIk7X,GAAS,IAAMA,GAAS,KACxB7wQ,EAAKp/G,GAAKg6hB,EAAW7rgB,MAAQi5H,EAAS,EACtChoC,EAAKrqH,GAAKiliB,EAAW5rgB,OAAS,EAC9B+5C,EAAOnoE,EAAIo/G,EAAKp/G,EAAI,GACpBmoE,EAAOpzE,EAAIqqH,EAAKrqH,GAEX8gC,GAASA,EAAM6+c,QAAU7+c,EAAM6+c,OAAO10e,EAAI61B,EAAM85e,YAAY3vgB,GACjEo/G,EAAKp/G,GAAc,EAATonJ,EAAa4yY,EAAW7rgB,MAClCixF,EAAKrqH,GAAKiliB,EAAW5rgB,OAAS,EAC9B+5C,EAAOnoE,EAAIo/G,EAAKp/G,EAAI,GACpBmoE,EAAOpzE,EAAIqqH,EAAKrqH,IAGhBqqH,EAAKp/G,GAAKonJ,EAAS,EACnBhoC,EAAKrqH,GAAKiliB,EAAW5rgB,OAAS,EAC9B+5C,EAAOnoE,EAAIo/G,EAAKp/G,EAAI,GACpBmoE,EAAOpzE,EAAIqqH,EAAKrqH,GAEbqqH,GAOXi4a,EAAsB18iB,UAAU88iB,iBAAmB,SAAU5hgB,EAAOwtc,GAChE,GAAIxtc,EAAMyjc,eAAiB+J,EAAU72c,WAAaqJ,EAAMyjc,eAAiB+J,EAAU6zC,eAAe57hB,OAAQ,CACtG,IAAI+P,EAAWk7e,GAAelD,EAAU6zC,eAAe57hB,QAAU,OAAQmD,KAAKiigB,aAAajlB,gBAAgBttc,OAC3G,GAAI9iC,EAAW5M,KAAKiigB,aAAajlB,gBAAgBttc,MAC7C,OAAO9iC,EAGf,IAGIgjhB,EAHA7hf,EAAWqJ,EAAMyjc,eAAiB+J,EAAU72c,SAC5Ck2b,EAASjke,KAAKiigB,aAAa3S,cAAc,GACzCyiC,GAAc/xhB,KAAKiigB,aAAajlB,gBAAgBttc,MAAQu0b,EAAO64D,aAAaptf,OAAS,EAEzF,OAAQ3B,GACJ,IAAK,SACD,OAAO,EACX,IAAK,UAED,OADA6hf,EAAgBx4e,EAAMm6b,eAAehwd,EAAI61B,EAAMkmf,YAAY/7gB,EACpDvhB,KAAKiigB,aAAajlB,gBAAgBttc,MAAQkgf,EAAgBmC,IAQ7E6mB,EAAsB18iB,UAAUi1hB,iBAAmB,SAAU/5e,EAAOrJ,GAEhE,QADiB,IAAbA,IAAuBA,EAAW,WACP,QAA3B/tC,KAAKiigB,aAAa92f,KAAgB,CAClC4iC,EAAwB,gBAAbA,EAA6B,cAAgBqJ,EAAMyjc,eAAiB9sc,EAC/E,IAAI01Y,EAAa,CACblia,EAAG61B,EAAMm6b,eAAehwd,EACxBjL,EAAG8gC,EAAMm6b,eAAej7d,EAAI8gC,EAAMkmf,YAAYhnhB,GAElD,OAAQy3B,GACJ,IAAK,SACD01Y,EAAWnta,EAAI8gC,EAAM6+c,OAAO3/e,EAAI8gC,EAAM6+c,OAAOtmd,OAAS,EACtD,MACJ,IAAK,UACD8zY,EAAWlia,GAAK61B,EAAMkmf,YAAY/7gB,EAClC,MACJ,IAAK,cACDkia,EAAWlia,GAAK61B,EAAMkmf,YAAY/7gB,EAE1C,OAAOkia,EAIP,OAAOw7D,GAAiB7nc,EAAMk/e,SAAWt2hB,KAAKk3hB,kBAAoBpvC,GAAe1wc,EAAM+9e,YAAan1hB,KAAKiigB,aAAa4zB,gBAAgB2C,cAClIx4hB,KAAKkjC,OAASljC,KAAK6wM,SAQ/B+nW,EAAsB18iB,UAAU++iB,uBAAyB,SAAU7jgB,EAAO4jgB,GAGtE,IAAIjtgB,EAIJ,OAHK/tC,KAAKi3hB,cAAgB7/e,EAAM6+c,OAAO10e,EAAI61B,EAAM85e,YAAY3vgB,IACzDwsB,EAAW,eAER/tC,KAAKi3hB,aAAeh4C,GAAiB7nc,EAAMk/e,UAAWt2hB,KAAKk3hB,kBAAoBpvC,GAAe1wc,EAAM+9e,YAAan1hB,KAAKiigB,aAAa4zB,gBAAgB2C,cACtJx4hB,KAAKkjC,QAAU83gB,EAAUtrgB,MAAO1vC,KAAK6wM,QAAU7wM,KAAKmxhB,iBAAiB/5e,EAAOrJ,IAOpF6qgB,EAAsB18iB,UAAUi6hB,aAAe,WAC3Cn2hB,KAAK25iB,SAAW,IAAI1uE,GAAK,EAAG,EAAGjre,KAAKiigB,aAAa1e,cAAc7zc,MAAO1vC,KAAKiigB,aAAa1e,cAAc5zc,QACtG,IAAItC,EAASrtC,KAAKiigB,aAAa50d,OAC/B0xc,GAAkB/+e,KAAK25iB,SAAU,IAAI5vD,GAAU18c,EAAOvK,KAAMuK,EAAOtK,MAAOsK,EAAOrK,IAAKqK,EAAOpK,UAKjG21gB,EAAsB18iB,UAAUu5hB,gBAAkB,SAAUr+e,EAAOwtc,EAAWrkf,EAAQo7E,EAAQsoZ,EAAQhyW,EAAiBirX,GACnH,IAAIzje,EAAKzZ,KAAKiigB,aAAajhgB,QAAQyY,GAAK,qBAAuBwqd,EAAS,IACpE0gB,EAAiB3kf,KAAKiigB,aAAa77N,SAAS6/L,YAAY,CAAExsd,GAAIA,EAAK,KAAO29B,EAAM58B,QACpF48B,EAAMq+B,MAAQr+B,EAAMilc,cAAgBjlc,EAAM9gC,EAAEnJ,WAC5C,IAAIw7J,EAAS,CAAEj5H,MAAOk1c,EAAUj8U,OAAOj5H,MAAOimC,MAAOiva,EAAUj8U,OAAOhzF,OAClEy6c,EAAY9xhB,YAAO,GAAIjC,YAAS,aAAcuof,EAAU/na,MAAO,MAAM,GACrEkwZ,EAAW,CACXhqd,QAAQ,EAAO3I,KAAMw8d,GAAY3S,OAAQjke,KAAKiigB,aAAa3S,cAAc,GAAIl4c,MAAOA,EACpF7kC,KAAM6kC,EAAMq+B,MAAOkzF,OAAQA,EAAQhzF,MAAOiva,EAAUxoT,KAAM9wK,SAAUs5d,EAAUt5d,SAAUuxD,KAAMuzc,GAElGpwhB,KAAKiigB,aAAal4e,QAAQ6sd,GAAY7J,GACtC31b,EAAM21b,SAAWA,EACjB,IAAIzoY,EAAmC,OAAtByoY,EAASzhd,SAC1B8rB,EAAMi8e,cAAgBtmD,EAAShqd,OAC/Bq0B,EAAM7kC,KAAO6kC,EAAMq+B,MAAQs3Z,EAASx6d,KAChC0jC,OAAOmB,EAAMq+B,SACbr+B,EAAMq+B,MAAQz1E,KAAKiigB,aAAah+b,KAAKjoD,cAAco7B,EAAMq+B,MAAO,CAC5DjlE,YAAaxQ,KAAKiigB,aAAa/rB,wBAGvCl2e,KAAKi5iB,YAAclsE,EAASpkU,OAAOj5H,MAAS,EAAIq9b,EAASpkU,OAAOj5H,MAAS,EACzE,IAAIg1c,EAAevjf,YAAc,MAAO,CACpCsY,GAAIzZ,KAAKiigB,aAAajhgB,QAAQyY,GAA1BzZ,uBAAgEo3C,EAAM58B,MAC1EuZ,OAAQ,uCAAyCg5c,EAASp3Z,MAAQ,IAC9D2/W,GAAasvD,EAAU/na,MAAQ,WAAakwZ,EAASpkU,OAAOj5H,MAAQ,YAAcq9b,EAASpkU,OAAOhzF,MAAQ,MAElH31E,KAAK8kf,mBAAmBxgZ,EAAYogZ,EAActtc,EAAOukC,EAAQoxZ,EAAU4X,EAAgBlre,EAAImre,EAAW1H,IAK9G07D,EAAsB18iB,UAAU4of,mBAAqB,SAAUxgZ,EAAYogZ,EAActtc,EAAOukC,EAAQoxZ,EAAU4X,EAAgBlre,EAAImre,EAAW1H,EAAQn/N,EAAY0nO,GACjK,IAAI9lF,EAAWr7T,EAAcmhZ,EAAkB,CAAE/1c,MAAOquO,EAAWruO,MAAOC,OAAQouO,EAAWpuO,QAAW3vC,KAAKw7iB,gBAAgB92D,EAActtc,EAAO21b,EAAUmQ,EAAQ54Y,EAAY3oB,EAAQgpa,EAAgBlre,EAAImre,GAActa,GAAYlzb,EAAMq+B,MAAOmva,EAAU/na,MAC7P8iV,EAAShwX,QAAU,EACnBgwX,EAASjwX,OAAS,EAClB0H,EAAMuoX,SAAWA,EACjBvoX,EAAM66E,gBAAkByyX,EACxB1kf,KAAK+4iB,qBAAqB3hgB,EAAOwtc,EAAWjlF,EAAUhkV,GAClDvkC,EAAM85e,aACNlxhB,KAAKy7iB,mBAAmBrkgB,EAAM85e,YAAa95e,EAAMuoX,WAMzDi5I,EAAsB18iB,UAAUq6hB,eAAiB,SAAUtyD,EAAQ2gB,EAAWrkf,EAAQ0xH,EAAiBirX,GACnG,IAAI1rG,EACA0tG,EACAw8D,EAAiBz3E,EAAO8vD,eAAejigB,OAAOmyc,EAAO6vD,iBACzD4nB,EAAe75d,MAAK,SAAU94E,EAAGpB,GAAK,OAAOoB,EAAEyR,MAAQ7S,EAAE6S,SACrC,QAAhBypd,EAAO94d,MAAkBnL,KAAKiigB,aAAak3C,mBAC3Cn5iB,KAAK27iB,4BAET,IAAK,IAAI39iB,EAAK,EAAG49iB,EAAmBF,EAAgB19iB,EAAK49iB,EAAiB/+iB,OAAQmB,IAAM,CACpF,IAAIo5C,EAAQwkgB,EAAiB59iB,GAC7B,IAAKZ,YAAkBg6C,EAAM21b,YAAc3ve,YAAkBg6C,EAAM9gC,GAAI,CACnEtW,KAAK67iB,mBAAmBzkgB,EAAOskgB,EAAgB92D,GAC/C,IAAInre,EAAKzZ,KAAKiigB,aAAajhgB,QAAQyY,GAA1BzZ,uBACL2kf,EAAiB3kf,KAAKiigB,aAAa77N,SAAS6/L,YAAY,CAAExsd,GAAIA,EAAK,KAAO29B,EAAM58B,QAEhFshiB,OAAa,EACb96iB,OAAU,EACd,GAAIo2C,EAAM8lB,SAAW9lB,EAAMi8e,aAAc,CAErC,GADA7hJ,EAAQ0tG,EAAS0F,EAAUpzG,MACvBp6V,EAAM21b,SAASzhd,SACftrB,KAAK+7iB,iBAAiB3kgB,EAAM66E,gBAAiB76E,EAAO66E,EAAiB2yX,EAAU/na,KAAKlH,MAAOv+B,EAAMu+B,MAAOuna,OAEvG,CACD4+D,EAAa,IAAI18D,GAAchoc,EAAM85e,YAAY3vgB,EAAIvhB,KAAKi5iB,YAAa7hgB,EAAM85e,YAAY56gB,EAC1D,EAAxB8gC,EAAMuoX,SAAShwX,OAAa,EAAK3vC,KAAKi5iB,aAE7C,IAAIh5H,GADJj/a,EAAU6B,GAAW4W,EAAK,SAAW29B,EAAM58B,QACb,IAAI4ke,IAAep+e,EAAQmuB,aAAa,MAAOnuB,EAAQmuB,aAAa,MAAQ,KAE1G02d,IAAmB,EAAOlB,EADP3kf,KAAKiigB,aAAa77N,SAASi4H,cAAc,IAAIsrF,GAAWlwe,EAAK,SAAW29B,EAAM58B,MAAO48B,EAAM21b,SAASp3Z,MAAOv+B,EAAM21b,SAASpkU,OAAQ,EAAGvxH,EAAM85e,YAAatsC,EAAU/9E,GAAI+9E,EAAU99E,KACvIo2E,GAAQ,EAAM,IAAK,IAAKj9D,EAAe,MAAM,GAAO,EAAO,KAAMjgb,KAAKiigB,aAAanhe,UAC/I,IAAI4wd,EAAYt6c,EAAMuoX,SAASjwX,MAC3BqxX,EAAa3pX,EAAMuoX,SAAShwX,OAC5B4/U,OAAS,EAaTA,EAZU,IAAViiB,GAAeozG,EAAUgsC,eAYhB,WAVL1xC,EADwB,YAAxB9nc,EAAMyjc,cACG,EAGLzjc,EAAMk/e,UAAY,IAAMl/e,EAAMk/e,UAAY,IACjCl/e,EAAMk/e,SAAW,IAGjBl/e,EAAMk/e,UAGO,KAAOwlB,EAAWv6hB,EAAKmwe,EAAY,GAAM,KAChEoqD,EAAWxliB,EAAKyqZ,EAAa,GAAM,IASjC,WALLm+E,EADA1tG,EACUA,EAAQ,IAAOA,EAAQ,IAAOA,GAAS,IAAOA,EAAQ,IAAMA,EAG7D,GAEiB,KAAOsqK,EAAWv6hB,EAAKmwe,EAAY,GAAM,IAAOoqD,EAAWxliB,EAAK,IAElG8gC,EAAM5T,UAAY+rV,EAClB2gH,GAAYlwe,KAAKiigB,aAAa77N,SAAU,IAAIglM,GAAW3xd,EAAK,QAAU29B,EAAM58B,MAAOshiB,EAAWv6hB,EAAGu6hB,EAAWxliB,EAAG,QAAS8gC,EAAMq+B,MAAO85S,EAAQ,OAAQ2vH,GAAS9nc,EAAM21b,SAASlwZ,KAAMzlC,EAAM21b,SAASlwZ,KAAKlH,OAAS31E,KAAKg8iB,kBAAkB5kgB,EAAOA,EAAM21b,SAASp3Z,OAAQgva,GAAgB,EAAOzH,GAAQ,GAAM,EAAOl9e,KAAKiigB,aAAanhe,UACnU9/B,EAAU,KAMd,GAJIhB,KAAKiigB,aAAa6zB,2BAAoD,YAAvBlxC,EAAU72c,UACtD/tC,KAAKiigB,aAAak3C,oBACrBn5iB,KAAKiigB,aAAa3S,cAAc,GAAGomC,cAAc11hB,KAAKiigB,aAAa3S,cAAc,GAAGqmC,WAAYv+e,EAAM85e,aAE9E,YAAxB95e,EAAMyjc,cAA6B,CACnC,IAAI56c,EAAYp9B,GAAW4W,EAAK,aAAe29B,EAAM58B,OACjD6ne,EAAoBpid,EAAYA,EAAU9Q,aAAa,KAAO,GAElE02d,IAAmB,EAAOlB,EADR3kf,KAAKiigB,aAAa77N,SAAS4+H,SAAS,IAAI2mE,GAAWlyd,EAAK,aAAe29B,EAAM58B,MAAO,cAAeoqe,EAAU6zC,eAAe/of,MAAOk1c,EAAU6zC,eAAe9id,OAASv+B,EAAMu+B,MAAO,EAAGiva,EAAU6zC,eAAejxD,UAAWxne,KAAK+6iB,iBAAiBz8iB,YAAO,GAAI84C,EAAM85e,YAAa,MAAM,GAAO95e,EAAOwtc,EAAWxtc,EAAM8hgB,cAC7Qh8D,GAAQ,EAAM,KAAM,KAAM,KAAMmF,GAAmB,GAAO,EAAO,KAAMrif,KAAKiigB,aAAanhe,UAEpJ+kd,IAAmB,EAAOtlf,EAAQokf,EAAgBzH,OAalE07D,EAAsB18iB,UAAU2/iB,mBAAqB,SAAUzkgB,EAAOukC,EAAQipa,GAO1E,IANI5kf,KAAKu5iB,cAAcnigB,EAAOukC,IACzB37E,KAAKijiB,WAAa7rf,EAAM85e,aAAe/pC,GAAU/vc,EAAM85e,YAAalxhB,KAAKijiB,aACtEjjiB,KAAKi3hB,cAAwC,YAAxB7/e,EAAMyjc,eAC3B76e,KAAK65iB,sBAAsBzigB,GAG/Bp3C,KAAKiigB,aAAa6zB,0BAA4B1+e,EAAMi8e,cAAgBj8e,EAAM85e,YAAa,CACvF,IAAIhhf,EAAOlwC,KAAKiigB,aAAa6zB,yBAAyBl0B,aAClDp3d,EAAUxqC,KAAKiigB,aAAanB,eAAen4V,OAAOj5H,MAAQ,EAC9D1vC,KAAK45iB,aAAaxigB,EAAO,IAAI6zb,GAAK/6b,EAAK3uB,EAAIipB,EAAS0F,EAAK55B,EAAIk0B,EAAS0F,EAAKR,MAAS,EAAIlF,EAAU0F,EAAKP,OAAU,EAAInF,GAAWo6c,EAAU/na,KAAM78E,KAAKiigB,aAAa6zB,yBAAyB/nf,UAE/L,GAAIqJ,EAAMi8e,cAAgBj8e,EAAM85e,YAAa,CACzC,IAAInjf,EAAW/tC,KAAKi3hB,aAAgB7/e,EAAM85e,YAAY3vgB,GAAKvhB,KAAK6wM,OAAOtvL,EAAK,cAAgB,aACvF61B,EAAM85e,YAAY3vgB,GAAK61B,EAAM6+c,OAAO10e,EAAK,cAAgB,aAC9DvhB,KAAK45iB,aAAaxigB,EAAOp3C,KAAK25iB,SAAU/0D,EAAU/na,KAAM9uC,GAExDqJ,EAAMi8e,cAAgBj8e,EAAM85e,cAAiB95e,EAAM85e,YAAY56gB,EAAI8gC,EAAM85e,YAAYvhf,OACrF3vC,KAAK25iB,SAASrjiB,EAAItW,KAAK25iB,SAAShqgB,QAAUyH,EAAM85e,YAAY56gB,EAAItW,KAAK25iB,SAASrjiB,GAAO8gC,EAAM85e,YAAY3vgB,EAAIvhB,KAAK25iB,SAASp4hB,GACzH61B,EAAM85e,YAAY3vgB,EAAI61B,EAAM85e,YAAYxhf,MAAQ1vC,KAAK25iB,SAASp4hB,EAAIvhB,KAAK25iB,SAASjqgB,QAChF1vC,KAAK65iB,sBAAsBzigB,IAYnCwhgB,EAAsB18iB,UAAUs/iB,gBAAkB,SAAUx6iB,EAASo2C,EAAO21b,EAAUmQ,EAAQ54Y,EAAY3oB,EAAQgpa,EAAgBlre,EAAImre,GAElI,IAAI7mO,EAAaynO,GADjBxkf,EAAU4re,GAAe5re,EAASo2C,EAAM58B,MAAOuyd,EAASzhd,SAAUtrB,KAAKiigB,aAAc7qd,EAAOp3C,KAAKiigB,aAAa3S,cAAc,GAAItvf,KAAKiigB,aAAajhgB,QAAQyY,GAAK,aAAc,EAAGszd,EAAUzoY,EAAY3oB,EAAQgpa,EAAgBlre,EAAImre,EAAW1H,GAChMA,GAC7C,MAAO,CAAExtc,MAAOquO,EAAWruO,MAAOC,OAAQouO,EAAWpuO,SAWzDipgB,EAAsB18iB,UAAU6/iB,iBAAmB,SAAUr3D,EAActtc,EAAO72C,EAAQyve,EAAY5zS,EAAM8gT,GAKxG,GAJAwH,EAAa1wd,MAAM8O,KAAQsU,EAAM85e,YAAY3vgB,EAAK,KAClDmje,EAAa1wd,MAAMgP,IAAOoU,EAAM85e,YAAY56gB,EAAK,KACjDoue,EAAa1wd,MAAM2hD,MAAQq6Z,GACvBhwe,KAAKg8iB,kBAAkB5kgB,EAAOglJ,GAC9Bp8L,KAAKiigB,aAAa3igB,SAAU,CAC5B,IAAIyuC,EAAW/tC,KAAKi3hB,aAAgB7/e,EAAM85e,YAAY3vgB,GAAKvhB,KAAK6wM,OAAOtvL,EAAK,cAAgB,aACvF61B,EAAM85e,YAAY3vgB,GAAK61B,EAAM6+c,OAAO10e,EAAK,cAAgB,aAE1Dmje,EAAa1wd,MAAMwP,UADN,gBAAbuK,EAC+B,sBAGA,yBAGnC22c,EAAahhb,oBACbmib,IAAmB,EAAOtlf,EAAQmkf,EAAcxH,GAAQ,EAAM,OAAQ,OACtEl9e,KAAKi8iB,oBAAoBj8iB,KAAKiigB,aAAcvd,KAQpDk0D,EAAsB18iB,UAAU8/iB,kBAAoB,SAAU5kgB,EAAOu+B,GACjE,IAAIume,EAQAxsB,EAAWnoC,GAAkBE,GADjCy0D,EAAqC,iBALjCA,EADAl8iB,KAAKi5iB,aAAe,EACO,gBAAVtje,EAA0B31E,KAAKm8iB,mBAAmB/kgB,GAASu+B,EAG3D31E,KAAKm8iB,mBAAmB/kgB,IAESt1C,OAAOwhC,iBAAiB9iC,SAASgiC,KAAM,MAAMkzC,gBAAkBwme,IAGrH,OADe30iB,KAAKooI,OAAoB,IAAb+/Y,EAAS5wf,EAAuB,IAAb4wf,EAAS51R,EAAuB,IAAb41R,EAAS/nhB,GAAW,MAClE,IAAM,QAAU,SAQvCixiB,EAAsB18iB,UAAU+/iB,oBAAsB,SAAUh6C,EAAcjhgB,GAC1E,IAAIije,EAASg+B,EAAa3S,cAAc,GACpCzvf,EAAQoke,EAAO7jc,UAAUvgC,MAAQoke,EAAO7jc,UAAUU,SAClDmjc,EAAO7jc,UAAUo0G,QAAUytX,EAAa9E,gBACxCn8f,EAAQgzB,MAAMwC,WAAa,SAC3Bktd,GAAgB1if,EAASnB,EAAO,IAAK,YAQ7C+4iB,EAAsB18iB,UAAUigjB,mBAAqB,SAAU/kgB,GAC3D,MAA+B,YAAxBA,EAAMyjc,cACT76e,KAAKiigB,aAAatxT,YAAc3wM,KAAKiigB,aAAa51B,WAAW17R,WAAav5J,EAAMu+B,OAKxFije,EAAsB18iB,UAAUu/iB,mBAAqB,SAAUvqB,EAAavxH,EAAUn1X,QAClE,IAAZA,IAAsBA,EAAU,GACpC0mf,EAAYvhf,QAAUnF,EACtB0mf,EAAYxhf,OAASlF,EACrB0mf,EAAY3vgB,GAAKipB,EAAU,EAC3B0mf,EAAY56gB,GAAKk0B,EAAU,EAC3Bm1X,EAAShwX,QAAUnF,EACnBm1X,EAASjwX,OAASlF,GAOtBougB,EAAsB18iB,UAAU2+B,cAAgB,WAC5C,MAAO,yBAQX+9gB,EAAsB18iB,UAAUif,QAAU,aAM1Cy9hB,EAAsB18iB,UAAUy/iB,0BAA4B,WACxD,IAAI57iB,EAAQC,KACRike,EAASjke,KAAKiigB,aAAah+B,OAAO,GACtCA,EAAO6vD,gBAAgB90hB,SAAQ,SAAUo4C,EAAO58B,EAAO4hiB,GACnDhlgB,EAAMs8e,mBAAqBt8e,EAAM85e,YACjC95e,EAAMq8e,eAAiB,EACvB1zhB,EAAMs8iB,WAAWjlgB,EAAOglgB,EAAgB5hiB,MAE5Cypd,EAAO8vD,eAAe/0hB,SAAQ,SAAUo4C,EAAO58B,EAAO4hiB,GAClDhlgB,EAAMs8e,mBAAqBt8e,EAAM85e,YACjC95e,EAAMq8e,eAAiB,EACvB1zhB,EAAMs8iB,WAAWjlgB,EAAOglgB,EAAgB5hiB,MAE5Cxa,KAAKs8iB,sBAAsBr4E,GAC3Bjke,KAAKu8iB,iBAAkB,EACvBv8iB,KAAKw8iB,uBAAuBv4E,IAOhC20E,EAAsB18iB,UAAUsgjB,uBAAyB,SAAUv4E,GAC/D,IAAIw4E,EACAC,EAGAC,EACAn+D,EAHAo+D,EAAwB34E,EAAO6vD,gBAAgB5igB,QAAO,SAAUkmB,GAAS,OAAQA,EAAMi8e,cAAwC,YAAxBj8e,EAAMyjc,iBACjH76e,KAAK64iB,yBAA2B+D,EAGhC,IACIn+D,EADAo+D,EAAYD,EAAsBA,EAAsB//iB,OAAS,GAEjEggjB,GACIA,EAAU3D,WAAa,IAAM2D,EAAU3D,WAAa,MACpDl5iB,KAAKu8iB,iBAAkB,EACvBv8iB,KAAK88iB,iBAAiBD,EAAW,KAWzC,IAAK,IAAIjgjB,EAAIggjB,EAAsB//iB,OAAS,EAAGD,GAAK,EAAGA,IAInD,GAHA4hf,EAAeo+D,EAAsBhgjB,GACrC6hf,EAAYm+D,EAAsBhgjB,EAAI,GAElCoD,KAAK+8iB,kBAAkBv+D,EAAco+D,EAAuBhgjB,IAAM4hf,EAAa60C,gBAC1E70C,EAAa06D,YAAc,IAAM16D,EAAa06D,YAAc,KAUjE,GATAyD,EAAaE,EAAU3D,WAAa,GACpCwD,GAAe,EAEXD,EACAz8iB,KAAKu8iB,iBAAkB,EAElBI,EAAa,IAAMA,EAAa,KAAOl+D,EAAUg1C,iBACtDzzhB,KAAKu8iB,iBAAkB,GAEtBv8iB,KAAKu8iB,gBAMN,IAAS1ye,EAAIjtE,EAAI,EAAGitE,EAAI,EAAGA,IACvB7pE,KAAKg9iB,cAAcJ,EAAsB/ye,GAAI+ye,EAAsB/ye,EAAI,GAAIo6Z,GAAQ,QANvF,IAAK,IAAIp6Z,EAAIjtE,EAAI,EAAGitE,EAAI+ye,EAAsB//iB,OAAQgtE,IAClD7pE,KAAKi9iB,cAAcL,EAAsB/ye,EAAI,GAAI+ye,EAAsB/ye,GAAIo6Z,GAAQ,QAWvFy4E,GAAgBj+D,IAAcA,EAAUg1C,iBACxCgpB,GAAa,IAU7B7D,EAAsB18iB,UAAUogjB,sBAAwB,SAAUr4E,GAC9D,IAGIsa,EACAC,EACAk+D,EACAD,EANA18iB,EAAQC,KACRk9iB,EAAuBj5E,EAAO8vD,eAAe7igB,QAAO,SAAUkmB,GAAS,OAAQA,EAAMi8e,cAAwC,YAAxBj8e,EAAMyjc,iBAC/G76e,KAAK84iB,wBAA0BoE,EAa/B,IAAK,IAAItgjB,EAAI,EAAGA,EAAIsgjB,EAAqBrgjB,OAAQD,IAI7C,GAHA4hf,EAAe0+D,EAAqBtgjB,GACpC2hf,EAAgB2+D,EAAqBtgjB,EAAI,GAErCoD,KAAKm9iB,sBAAsB3+D,EAAc0+D,EAAsBtgjB,IAAM4hf,EAAa60C,gBAC7E70C,EAAa06D,WAAa,KAK/B,GAJAwD,GAAe,EACXD,IACAz8iB,KAAKu8iB,iBAAkB,GAEtBv8iB,KAAKu8iB,gBAWN,IAAS1ye,EAAIjtE,EAAGitE,EAAIqze,EAAqBrgjB,OAAQgtE,IAC7C7pE,KAAKi9iB,cAAcC,EAAqBrze,EAAI,GAAIqze,EAAqBrze,GAAIo6Z,GAAQ,QAXrF,IAAK,IAAIp6Z,EAAIjtE,EAAGitE,EAAI,EAAGA,IACnB7pE,KAAKg9iB,cAAcE,EAAqBrze,GAAIqze,EAAqBrze,EAAI,GAAIo6Z,GAAQ,GACjFi5E,EAAqBhshB,QAAO,SAAUkmB,EAAO58B,GACrC48B,EAAMq8e,gBAAkBypB,EAAqB1iiB,GAAO0+hB,WAAa,GAAK,MACtEn5iB,EAAMw8iB,iBAAkB,WAYpCG,GAAgBn+D,GAAiBA,EAAck1C,iBAC/CgpB,GAAa,IAK7B7D,EAAsB18iB,UAAU8gjB,cAAgB,SAAUx+D,EAAcD,EAAeta,EAAQm5E,GAC3F,GAAIhgjB,YAAkBohf,IAAiBphf,YAAkBmhf,GACrD,OAAO,KAEX,IAAIzjb,EAAQ,EACZ,GAAIsif,EACA,KAAOj2D,GAAU3I,EAAa0yC,YAAa3yC,EAAc2yC,eAAkBlxhB,KAAKk3hB,qBACzE34C,EAAc2yC,YAAYvhf,OAAS4uc,EAAc2yC,YAAY56gB,EAAKkoe,EAAa0yC,YAAY56gB,IAAK,CAKnG,IAJI+miB,EAAW9+D,EAAc+3C,SAAWx7d,GACzB,IACXuif,EAAW,IAAMA,GAEjBA,GAAY,KAAOA,GAAY,GAAI,CACnCA,EAAW,IACXr9iB,KAAKu8iB,iBAAkB,EACvB,MAEJv8iB,KAAK88iB,iBAAiBv+D,EAAe8+D,GACrCvif,SAQJ,IAJI0jb,EAAa06D,WAAa,MAC1Bl5iB,KAAK88iB,iBAAiBt+D,EAAc,KACpCD,EAAc26D,WAAa,KAExB/xD,GAAU3I,EAAa0yC,YAAa3yC,EAAc2yC,eAAkBlxhB,KAAKk3hB,mBAC1E14C,EAAa0yC,YAAY56gB,EAAIkoe,EAAa0yC,YAAYvhf,OAAU4uc,EAAc2yC,YAAY56gB,GAAK,CACjG,IAAI+miB,EACJ,MADIA,EAAW9+D,EAAc+3C,SAAWx7d,IACtB,KAAOuif,GAAY,IAAK,CACtCA,EAAW,GACXr9iB,KAAKu8iB,iBAAkB,EACvB,MAGJ,GADAv8iB,KAAK88iB,iBAAiBv+D,EAAe8+D,GACjCl2D,GAAU3I,EAAa0yC,YAAa3yC,EAAc2yC,eACjDjtD,EAAO8vD,eAAe51hB,QAAQogf,IAAmB8+D,EAAW,EAAI,IAAMA,EAAW,EAAI,IAAM,CAC5Fr9iB,KAAK88iB,iBAAiBt+D,EAAcA,EAAa06D,WAAa,GAC9Dl5iB,KAAKs8iB,sBAAsBr4E,GAC3B,MAEJnpa,MAIZ89e,EAAsB18iB,UAAU+gjB,cAAgB,SAAUz+D,EAAcC,EAAWxa,EAAQm5E,GACvF,GAAIhgjB,YAAkBohf,IAAiBphf,YAAkBqhf,GACrD,OAAO,KAEX,IAAI3jb,EAAQ,EACZ,GAAIsif,EACA,KAAOj2D,GAAU3I,EAAa0yC,YAAazyC,EAAUyyC,eAAkBlxhB,KAAKk3hB,qBACrE14C,EAAa0yC,YAAY56gB,EAAIkoe,EAAa0yC,YAAYvhf,OAAU8uc,EAAUyyC,YAAY56gB,IAAK,CAE9F,IADI+miB,EAAW5+D,EAAU63C,SAAWx7d,GACrB,KAAOuif,EAAW,GAAI,CACjCA,EAAW,GACXr9iB,KAAKu8iB,iBAAkB,EACvB,MAGJ,GADAv8iB,KAAK88iB,iBAAiBr+D,EAAW4+D,GAC7Bl2D,GAAU3I,EAAa0yC,YAAazyC,EAAUyyC,cAAiBmsB,EAAW,EAAI,IAAMA,EAAW,EAAI,KACnGr9iB,KAAK64iB,yBAAyB16iB,QAAQsgf,KAAez+e,KAAK64iB,yBAAyBh8iB,OAAS,EAAG,CAC/FmD,KAAK88iB,iBAAiBt+D,EAAcA,EAAa06D,WAAa,GAC9Dz6D,EAAUyyC,YAAczyC,EAAUi1C,mBAClC1zhB,KAAKw8iB,uBAAuBv4E,GAC5B,MAEJnpa,SAIJ,KAAOqsb,GAAU3I,EAAa0yC,YAAazyC,EAAUyyC,eAAkBlxhB,KAAKk3hB,mBACvE14C,EAAa0yC,YAAY56gB,EAAKmoe,EAAUyyC,YAAY56gB,EAAImoe,EAAUyyC,YAAYvhf,QAAW,CAC1F,IAAI0tgB,EACJ,MADIA,EAAW5+D,EAAU63C,SAAWx7d,GACnB,KAAOuif,EAAW,IAAK,CACpCA,EAAW,IACXr9iB,KAAKu8iB,iBAAkB,EACvB,MAEJv8iB,KAAK88iB,iBAAiBr+D,EAAW4+D,GACjCvif,MAIZ89e,EAAsB18iB,UAAU4gjB,iBAAmB,SAAUt+D,EAAc6+D,GACvE,IACIC,EADA14D,EAAY5kf,KAAKiigB,aAAah+B,OAAO,GAAG2gB,UAExC5kf,KAAKk3hB,oBACLomB,EAAYt9iB,KAAKiigB,aAAa4zB,gBAAgBiD,eAAe94hB,KAAKiigB,aAAa3S,cAAc,GAAI9Q,IAGrG,IAAIw4C,EAA8C,YAA/Bx4C,EAAa3D,eAA+B76e,KAAKiigB,aAAak3C,mBACtD,WAAvBv0D,EAAU72c,SACV/tC,KAAKkjC,OAAS4kd,GAAelD,EAAU6zC,eAAe57hB,QAAU,KAAMmD,KAAKiigB,aAAa4zB,gBAAgBr5c,KAAO,GAC7Gx8E,KAAKk3hB,kBAAyEomB,EAArDt9iB,KAAKiigB,aAAa4zB,gBAAgBmB,YAAc,GAC3E9zf,EAAWljC,KAAKk3hB,kBAAkComB,EAAdtmB,EACxCh3hB,KAAKqliB,eAAe7mD,EAAc,UAAWA,EAAa7+E,SAAUz8X,EAAQljC,KAAKi5iB,YAAaoE,GAC9F7+D,EAAai1C,eAAiB,EAC9Bj1C,EAAa06D,WAAamE,GAE9BzE,EAAsB18iB,UAAUihjB,sBAAwB,SAAU3+D,EAAc7ia,EAAQm1c,GACpF,IAAK,IAAIl0hB,EAAI,EAAGA,EAAIk0hB,EAAmBl0hB,IACnC,GAAIA,IAAM++E,EAAOx9E,QAAQqgf,IACrB7ia,EAAO/+E,GAAGsgE,SAAWye,EAAO/+E,GAAGy2hB,cAAgB13c,EAAO/+E,GAAGs0hB,aAAe1yC,EAAa0yC,aACrF1yC,EAAa60C,cAAgBlsC,GAAU3I,EAAa0yC,YAAav1c,EAAO/+E,GAAGs0hB,aAC3E,OAAO,EAGf,OAAO,GAEX0nB,EAAsB18iB,UAAU6gjB,kBAAoB,SAAU3lgB,EAAOukC,EAAQqoZ,GACzE,IAAK,IAAIpne,EAAIone,EAAYpne,EAAI++E,EAAO9+E,OAAQD,IACxC,GAAIA,IAAM++E,EAAOx9E,QAAQi5C,IAAUukC,EAAO/+E,GAAGsgE,SAAWye,EAAO/+E,GAAGy2hB,cAAgB13c,EAAO/+E,GAAGs0hB,aACxF95e,EAAM85e,aAAe95e,EAAMi8e,cAAgBlsC,GAAU/vc,EAAM85e,YAAav1c,EAAO/+E,GAAGs0hB,aAClF,OAAO,EAGf,OAAO,GAEX0nB,EAAsB18iB,UAAUmgjB,WAAa,SAAU79D,EAAc++D,EAAgBv5E,GACjF,GAAIA,EAAa,IAAOwa,EAAa83C,SAAW,KAAO93C,EAAa83C,SAAW,KAC1E93C,EAAa83C,SAAW,KAAO93C,EAAa83C,SAAW,IAAM,CAC9D,IAAI/3C,EAAgBg/D,EAAev5E,EAAa,GAC5Cw5E,EAAYh/D,EAAa4C,SAAW,IAAM5C,EAAaqC,WAAa,KACpE48D,EAAgBl/D,EAAc6C,SAAW,IAAM7C,EAAcsC,WAAa,MACzD28D,GAAaA,EAAY,GAAKj/D,EAAc80C,cAC7DrzhB,KAAK85iB,oBAAoBt7D,QAG5B,GAAIxa,EAAa,IAAOwa,EAAa83C,SAAW,KAAO93C,EAAa83C,SAAW,KAC/E93C,EAAa83C,SAAW,KAAO93C,EAAa83C,SAAW,IAAM,CAC9D,IAAI9Z,EAAY+gC,EAAev5E,EAAa,GACxC05E,EAAkBH,EAAev5E,EAAa,GAE9Cy5E,GADAD,EAAYh/D,EAAa4C,SAAW,IAAM5C,EAAaqC,WAAa,IACpD27B,EAAUp7B,SAAW,IAAMo7B,EAAU37B,WAAa,KAClE88D,EAAiBD,EAAgBt8D,SAAW,IAAMs8D,EAAgB78D,WAAa,IAC/E28D,EAAY,GAAKC,EAAgB,GAAKE,EAAiB,GAAKnhC,EAAU6W,cAAgB70C,EAAa60C,cACnGrzhB,KAAK85iB,oBAAoBt7D,KAIrCo6D,EAAsB18iB,UAAUg/iB,yBAA2B,SAAU1jgB,EAAYJ,GAC7E,IAEIzH,EADM,GACS,GAAKpoC,KAAKmwH,IAAItgF,EAAMk/e,SAAW/uhB,KAAK6pY,GAAK,KAa5D,OAZIh6V,EAAMk/e,SAAW,KAAOl/e,EAAMk/e,SAAW,IACrB,IAAIl3C,GAAc5nc,EAAWj2B,EAAIouB,EAAUpoC,KAAKkqY,KAAK,IAAMr6V,EAAMk/e,UAAY/uhB,KAAK6pY,GAAK,KAAO55V,EAAWlhC,EAAIq5B,EAAUpoC,KAAKmwH,KAAK,IAAMtgF,EAAMk/e,UAAY/uhB,KAAK6pY,GAAK,MAElLh6V,EAAMk/e,SAAW,GAAKl/e,EAAMk/e,SAAW,GACxB,IAAIl3C,GAAc5nc,EAAWj2B,EAAIouB,EAAUpoC,KAAKkqY,IAAKr6V,EAAMk/e,SAAY/uhB,KAAK6pY,GAAK,KAAO55V,EAAWlhC,EAAIq5B,EAAUpoC,KAAKmwH,IAAKtgF,EAAMk/e,SAAY/uhB,KAAK6pY,GAAK,MAEtKh6V,EAAMk/e,SAAW,GAAKl/e,EAAMk/e,SAAW,GACxB,IAAIl3C,GAAc5nc,EAAWj2B,EAAIouB,EAAUpoC,KAAKkqY,KAAKr6V,EAAMk/e,SAAW,IAAM/uhB,KAAK6pY,GAAK,KAAO55V,EAAWlhC,EAAIq5B,EAAUpoC,KAAKmwH,KAAKtgF,EAAMk/e,SAAW,IAAM/uhB,KAAK6pY,GAAK,MAGjK,IAAIguG,GAAc5nc,EAAWj2B,EAAIouB,EAAUpoC,KAAKkqY,KAAKr6V,EAAMk/e,SAAW,KAAO/uhB,KAAK6pY,GAAK,KAAO55V,EAAWlhC,EAAIq5B,EAAUpoC,KAAKmwH,KAAKtgF,EAAMk/e,SAAW,KAAO/uhB,KAAK6pY,GAAK,OAIxLwnK,EAlkCgC,CAmkCzChiB,ICnlCEgnB,GAA4B,WAC5B,SAASA,IACL59iB,KAAK69iB,WAAa,GAClB79iB,KAAK+uU,SAAW,EAChB/uU,KAAK89iB,kBAAoB,GACzB99iB,KAAKooU,cAAgB,GACrBpoU,KAAK+nU,YAAc,EACnB/nU,KAAK+9iB,cAAgB,GACrB/9iB,KAAKg+iB,iBAAmB,CAAC,MAAO,UAAW,WAAY,UA8hD3D,OAvhDAJ,EAAW1hjB,UAAU2+B,cAAgB,WACjC,MAAO,cAGX+ihB,EAAW1hjB,UAAU+hjB,UAAY,SAAU19iB,EAAQ29iB,GAU/C,GATAl+iB,KAAKO,OAASA,EACdP,KAAK+9iB,cAAgB,GACrB/9iB,KAAK+2E,aAAwC,SAAzB/2E,KAAKO,OAAOikB,SAAsBxkB,KAAKO,OAAOu2E,iBAAmB92E,KAAKO,OAAOw2E,aACjG/2E,KAAKowE,mBAAqBpwE,KAAKO,OAAO6vE,mBACtCpwE,KAAKk+iB,cAAgBA,EACiB,SAApB39iB,EAAOikB,SACpBjkB,EAAOu2E,iBAAiBi0P,cAAcluU,OAAS,GAAK0D,EAAOu2E,iBAAiBk0P,WAAWnuU,OAAS,KAC3FO,YAAkBmD,EAAOu2E,iBAAiB81P,iBAAmBxvU,YAAkBmD,EAAOu2E,iBAAiB+1P,gBAC3GtsU,EAAO6vE,mBAAmB7T,OAAO1/D,OAAS,EAChD,CACSmD,KAAKO,OAAOmye,QAAU1ye,KAAKO,OAAOS,QAAQsC,cAAc,cAAetD,KAAKO,OAAOS,QAAQsC,cAAc,yBAC1GmmB,aAAO2N,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,SAAUzZ,KAAKO,OAAOS,UAEnEhB,KAAKk+iB,cAAcC,oBAAsBn+iB,KAAKg+iB,iBAAiB7/iB,QAAQ+/iB,EAAc5/C,YAAYnzf,MAAQ,EACzGnL,KAAKo+iB,YAAcp+iB,KAAKowE,mBAAmB7T,OAAO93D,KAAI,SAAU+2C,GAAQ,OAAOA,EAAKphC,QAGpFpa,KAAKo+iB,YAAc,CAAyB,KAAxBF,EAAc1hjB,MAAewD,KAAKowE,mBAAmB7T,OAAO,GAAGniD,KAAO8jiB,EAAc1hjB,OAE5G,IAAK,IAAIwB,EAAK,EAAGuF,EAAKvD,KAAKowE,mBAAmB7T,OAAQv+D,EAAKuF,EAAG1G,OAAQmB,IAAM,CACxE,IAAIw7D,EAAQj2D,EAAGvF,GACXw4E,EAAYhd,EAAMp/C,KAAK1d,QAAQ,eAAgB,KACnDsD,KAAK+9iB,cAAcvkf,EAAMp/C,MAAQo8D,EACjCx2E,KAAK+9iB,cAAcvne,GAAahd,EAAMp/C,KACO,UAAxCpa,KAAKk+iB,cAAc5/C,YAAYnzf,MAA4D,UAAxCnL,KAAKk+iB,cAAc5/C,YAAYnzf,OACnFnL,KAAK+9iB,cAAcvkf,EAAMyZ,QAAUzZ,EAAMyZ,QAAUzZ,EAAMp/C,MAAQo/C,EAAMp/C,MAiEnFpa,KAAK89iB,kBAAoB,GACzB99iB,KAAKq+iB,eAAgB,EACrB,IAAI7ue,EAAcxvE,KAAK+2E,aAAavH,YACpCxvE,KAAKs+iB,eAAkBJ,EAAcC,oBAAsBn+iB,KAAKg+iB,iBAAiB7/iB,QAAQ+/iB,EAAc5/C,YAAYnzf,MAAQ,EAAKnL,KAAKo+iB,YAAY,IAClH,KAAxBF,EAAc1hjB,OAEH,IAFmBwD,KAAKowE,mBAAmB7T,OAAOrrC,QAAO,SAAUsqB,GAC7E,OAAOA,EAAKphC,OAAS8jiB,EAAc1hjB,SACpCK,SAAiBmD,KAAKowE,mBAAmB7T,OAAO1/D,OAAS,EAAKmD,KAAKowE,mBAAmB7T,OAAO,GAAGniD,KAAO8jiB,EAAc1hjB,MAC5H,IAEI+hjB,EACAC,EAEAjqG,EALAkqG,EAAcz+iB,KAAK0+iB,oBAAoBlve,GACvCmve,EAAQzgjB,OAAOjB,KAAKuyE,GAGpBsgQ,EAAkB,GAElB8uO,EAAkB,EAClBnub,GAAc,GAClBzwH,KAAK69iB,WAAa,GAClB79iB,KAAK+uU,SAAW,EAChB,IAGI8vO,EAHA5sO,EAAW,GACX6sO,EAAgB,GAChBC,EAAgB,GAEhBC,EAAiB,GACjBvlV,GAAU,EACe,SAAzBz5N,KAAKO,OAAOikB,WACZytT,EAAWjyU,KAAKi/iB,yBAAyBzve,GACzCsve,EAAgB9+iB,KAAKooU,cAAcpoU,KAAKooU,cAAcvrU,OAAS,GAG/DmijB,EAFAD,EAAiB/+iB,KAAK+nU,aAAgB/nU,KAAKooU,cAAcvrU,OAAS,GAAMmD,KAAKooU,cAAcvrU,OAAS,EAChGmD,KAAKooU,cAAcpoU,KAAKooU,cAAcvrU,OAAS,GAAKiijB,GAG5D,IAAK,IAAI/phB,EAAK,EAAGmqhB,EAAUP,EAAO5phB,EAAKmqhB,EAAQrijB,OAAQk4B,IAAM,CACzD,IAAIoqhB,EAAOD,EAAQnqhB,GACf42C,EAAW11B,OAAOkpgB,GACtB,IAAK/hjB,YAAkBoyE,EAAY7D,KAC3B6D,EAAY7D,GAAU,IAAwC,QAAlC6D,EAAY7D,GAAU,GAAG5/B,OACZ,IAAxC/rC,KAAKowE,mBAAmBtH,KAAKjsE,QAAwD,cAAlC2yE,EAAY7D,GAAU,GAAGxgE,MAAuB,CACpG,IAAIi0iB,EAAe5ve,EAAY7D,GAAU,GACrCulQ,EAAmC,SAAzBlxU,KAAKO,OAAOikB,SACtBxkB,KAAK+2E,aAAai0P,WAAWo0O,EAAaxle,cAAW59E,EACrD4/U,GAAY,EACZyjO,EAAgBD,EAAalme,MACJ,SAAzBl5E,KAAKO,OAAOikB,UACZi1M,EAAqC,eAA3B2lV,EAAap/c,UAA6By5H,EAAUz5N,KAAK6wU,iBAAiBuuO,EAAap/c,UAAWkxO,EAAQlM,WACpHg6O,EAAiBA,IAAmBD,GAA4D,eAA3BK,EAAap/c,WAA8Bo/c,EAAa/re,YAAerzE,KAAK+2E,aAAaF,UAAUuoe,EAAap/c,aAAehgG,KAAK+2E,aAAaF,UAAUuoe,EAAap/c,WAAW0oO,aAApMq2O,EAAqOC,EACzRpjO,EAAW1K,EAAQlM,UAAUnoU,OAAS,EACN,IAA5BuijB,EAAatwO,YAAqBoC,EAAQd,aAC1Cc,EAAQd,cAAgBpwU,KAAKowE,mBAAmB7T,OAAO,GAAGniD,OAG1D01T,EAAsC,KADtC8uO,GADAJ,OAAsCxijB,IAApBwijB,EAAgCY,EAAa5uO,gBAAkBguO,KAC3CY,EAAa5uO,gBAAkB,EAAIouO,GAC/B,GAAK9uO,EAC/C8uO,EAAmBrqG,GAAYiqG,IAAoBY,EAAa5uO,gBAC3D+jI,EAASv0W,YAAco/c,EAAap/c,UAChC4+c,GAAmBQ,EAAalme,MAAQq7X,EAASr7X,OACjD97E,YAAkB0yU,EAAgBsvO,EAAa5uO,kBAC3CyB,EAASmtO,EAAap/c,WAAW9iG,MAClC4yU,EAAgBsvO,EAAa5uO,iBAAqBouO,EAC9D9uO,EAAgBsvO,EAAa5uO,iBAAmBouO,EAChDS,EAAgBT,EAChBnub,IAAe8jV,GAAYyqG,IAAmBzqG,EAASv0W,WAAeu0W,EAASv6X,WAAau6X,EAASz6X,SAAiB,EAAJ,EAClHkle,EAAiBvlV,EAAU2lV,EAAap/c,UAAY++c,EACpDR,EAAYK,EACZrqG,EAAW6qG,IAGY,UAAtBA,EAAaj0iB,YACEnP,IAAduijB,GAA2BA,EAAYc,GACzC5ub,IAEJ8tb,EAAYc,GAEhBr/iB,KAAK+uU,SAAWswO,EAAgBr/iB,KAAK+uU,SAAWswO,EAAgBr/iB,KAAK+uU,SACrE,IAAIlxG,EAAkC,SAAzB79N,KAAKO,OAAOikB,SAAsB46hB,EAAa1me,cACvD0me,EAAanne,WAAamne,EAAanne,WAAW9qE,WAAaiyiB,EAAa1me,cAAcvrE,WAC3FoF,EAAO6siB,EAAa1me,cAAgB0me,EAAa1me,cAAcvrE,WAAa0wN,EAC5E5qJ,EAAWmse,EAAatle,WAAasle,EAAa/re,YAChD+re,EAAaple,UAAY,MAAQ,OAASznE,EAAQA,EACpD8hN,EAAY68G,EAAUA,EAAQE,gBAAkBguO,EAAa1le,UAAU26I,UAAUlnN,WACjFujc,EAAW,CACXt2b,KAAMyjN,EACNtrN,KAAM0gE,EACN6G,SAAUsle,EAAatle,SACvBE,UAAWole,EAAaple,UACxBq6I,UAAWA,EACXn7I,MAAOmme,EACP7oe,UAAW4oe,EAAa1le,UAAU3tC,KAAOqzgB,EAAa1le,UAAU3tC,KAAK5+B,WAAa,GAClFw+D,SAAUA,EACVmN,SAAU,EACViH,KAAMq/d,IAEmB,SAAzBp/iB,KAAKO,OAAOikB,SAAkD,IAA5B46hB,EAAatwO,WAAyC,UAAtBswO,EAAaj0iB,QAC3EnL,KAAK69iB,WAAWptb,KAIhBzwH,KAAK69iB,WAAWptb,GAAc,IAH9BzwH,KAAK69iB,WAAWptb,GAAY4ub,GAAiB3uG,GAOrD,IAAI5nY,EAAO0G,EAAY7D,GACnB2ze,EAAQphjB,OAAOjB,KAAK6rE,GACpBy2e,OAAiB,EAEjBV,EADyB,SAAzB7+iB,KAAKO,OAAOikB,SAC6B,IAA5B46hB,EAAatwO,WAAmBswO,EAAeP,EAGzB,UAAtBO,EAAaj0iB,KAAmBi0iB,EAAeP,EAEhE,IAAK,IAAI1phB,EAAK,EAAGqqhB,EAAUF,EAAOnqhB,EAAKqqhB,EAAQ3ijB,OAAQs4B,IAAM,CACzD,IAAIsqhB,EAAOD,EAAQrqhB,GACf6tE,EAAY/sD,OAAOwpgB,GACnB1/d,EAAOvQ,EAAY7D,GAAUq3B,GAC7B08c,EAAmC,KAApB3/d,EAAKzH,YAA4D,IAAxCt4E,KAAKowE,mBAAmBtH,KAAKjsE,OACrEo7E,EAAuC,SAAzBj4E,KAAKO,OAAOikB,UAAuB0sT,GAAWA,EAAQd,YACpEc,EAAQd,YAAcrwP,EAAK9H,WAC/B,IAA+B,SAAzBj4E,KAAKO,OAAOikB,WAAuBu7D,EAAKvG,cAAgBile,EAAY1+d,EAAKjH,WAA2B,UAAdiH,EAAKh0C,MAA0C,WAAtBqzgB,EAAaj0iB,MAC/G,KAAf8sE,IAAuBime,EAAcC,oBAAsBn+iB,KAAKg+iB,iBAAiB7/iB,QAAQ+/iB,EAAc5/C,YAAYnzf,MAAQ,GAAY8sE,IAAej4E,KAAKs+iB,gBAAiB,CAI5K,GAHIlhjB,YAAkBgijB,EAAahle,WAC/Bgle,EAAahle,QAAU,IAEE,SAAzBp6E,KAAKO,OAAOikB,SAAwBs6hB,IAAkBM,EAAap/c,YAAay5H,IAClD,IAA5B2lV,EAAatwO,YAAoBywO,EAC9B3jO,IAAa57U,KAAK+nU,YAAcw3O,EAAevle,WAAaule,EAAezle,SAAqBsle,EAAaple,WAAaole,EAAatle,WACjH,UAAtBsle,EAAaj0iB,MAAoBo0iB,EAClCA,EAAenle,QAAQv9E,OAAS,EAAIuijB,EAAahle,QAAQv9E,OAAS,KAAO6ijB,EAC7E,MAEJ,IAAIC,EAAsC,SAAzB3/iB,KAAKO,OAAOikB,SAAsBu7D,EAAKvH,cAAcrrE,WAAWxQ,MAAM,SAASgI,KAAK,OAC/Fo7E,EAAKvH,cAAcrrE,WAAWxQ,MAAMqD,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBuD,iBAAiBnwE,KAAK,OAC7G2zE,EAAsC,SAAzBt4E,KAAKO,OAAOikB,SAAsBu7D,EAAKzH,WAAWnrE,WAAWxQ,MAAM,SAASgI,KAAK,OAC5Fo7E,EAAKzH,WAAWnrE,WAAWxQ,MAAMqD,KAAKO,OAAO6vE,mBAAmBmB,kBAAkBuD,iBAAiBnwE,KAAK,OAC1Gi7iB,EAAeD,EAAa,MAAQ1ne,EACpCugR,EAAmC,UAAzBx4V,KAAKO,OAAOikB,UAAwBxkB,KAAK+2E,aAAaquI,sBAAsBz5I,KACrFvuE,YAAkB4C,KAAK+2E,aAAaquI,sBAAsBz5I,GAAUq3B,IACrE/sD,OAAOj2C,KAAK+2E,aAAaquI,sBAAsBz5I,GAAUq3B,IAAmC/sD,OAAO8pC,EAAKvjF,OAC7F,IAAXg8V,IACAx4V,KAAKq+iB,eAAgB,GAErBr+iB,KAAK89iB,kBAAkB8B,GACvB5/iB,KAAK89iB,kBAAkB8B,GAAch+iB,KAAK,CACtC2f,EAA2C,IAAxCvhB,KAAKowE,mBAAmBtH,KAAKjsE,OAAeuijB,EAAa1me,cAAgBJ,EAC5EhiE,EAAGkiV,EACH70M,OAAQh4E,EACRi4E,OAAQ5gD,IAIZhjG,KAAK89iB,kBAAkB8B,GAAgB,CAAC,CAChCr+hB,EAA2C,IAAxCvhB,KAAKowE,mBAAmBtH,KAAKjsE,OAAeuijB,EAAa1me,cAAgBJ,EAC5EhiE,EAAGkiV,EACH70M,OAAQh4E,EACRi4E,OAAQ5gD,IAIxBu8c,EAAiBV,IAKjC7+iB,KAAKu6f,mBAhPL,CAoBK,GAAIv6f,KAAKO,OAAOmye,MAkBjB,OAjBI1ye,KAAKO,OAAOS,QAAQsC,cAAc,aAClCtD,KAAKO,OAAOmye,MAAMzO,OAAS,GAC3Bjke,KAAKO,OAAOmye,MAAM5pa,KAAO,GACzB9oE,KAAKO,OAAOmye,MAAMkO,aAAax5V,MAAQ,GACvCpnJ,KAAKO,OAAOmye,MAAMmb,aAAazmW,MAAQ,GACvCpnJ,KAAKO,OAAOmye,MAAMkO,aAAavD,iBAAmB,GAClDr9e,KAAKO,OAAOmye,MAAMmb,aAAaxQ,iBAAmB,GAC9Cr9e,KAAKO,OAAOmye,MAAMn7Z,KAAK16E,OAAS,IAChCmD,KAAKO,OAAOmye,MAAMn7Z,KAAK,GAAG6vE,MAAQ,IAEtCpnJ,KAAKO,OAAOmye,MAAMkO,aAAavL,WAAaj4e,YAAkB4C,KAAKO,OAAO29iB,cAAct9D,aAAavL,YAAc,EAAIr1e,KAAKO,OAAO29iB,cAAct9D,aAAavL,YAEzJr1e,KAAKO,OAAOS,QAAQsC,cAAc,0BACvCtD,KAAKO,OAAOmye,MAAMzO,OAAO,GAAGnia,WAAa,CAAC,IAC1C9hE,KAAKO,OAAOmye,MAAMzO,OAAO,GAAG2gB,UAAY,SAE5C5kf,KAAKO,OAAOmye,MAAMxrc,UAIlB,IAAK9P,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,SAAUzZ,KAAKO,OAAOS,SAAU,CAChC,SAAnChB,KAAKO,OAAOiuQ,cAAc5pE,MACY,UAAtC5kM,KAAKO,OAAOiuQ,cAAc58P,QACrB5R,KAAKO,OAAOS,QAAQ61B,aAAc11B,YAAc,MAAO,CACpDktB,UAAW47C,KAAgBxwD,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,WACvDzZ,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,OAMjDjqE,KAAKO,OAAOS,QAAQgB,YAAYb,YAAc,MAAO,CACjDktB,UAAW47C,KAAgBxwD,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,YAGhE,IAAIi2B,EAAQ1vC,KAAKO,OAAOmvC,MAAMviC,WAC1BnN,KAAKO,OAAOs/iB,aAAe7/iB,KAAKO,OAAO85D,OACvC3qB,EAAQ1vC,KAAKO,OAAOu/iB,uBAAuB3yiB,YAE/C,IAAIwiC,EAAS3vC,KAAK+/iB,kBAEd//iB,KAAKk+iB,eAAiBl+iB,KAAKk+iB,cAAc5/C,aAAet+f,KAAKg+iB,iBAAiB7/iB,QAAQ6B,KAAKk+iB,cAAc5/C,YAAYnzf,OAAS,EACnH,IAAIsvhB,GAAkB,CAAE/qf,MAAOA,EAAOC,OAAQA,IAG9C,IAAIs7d,GAAM,CAAEv7d,MAAOA,EAAOC,OAAQA,KAExC5I,SAAS,IAAM/mC,KAAKO,OAAOS,QAAQyY,GAAK,UAC7CzZ,KAAKO,OAAOs/iB,cAC2B,SAAnC7/iB,KAAKO,OAAOiuQ,cAAc5pE,MAA+C,UAA5B5kM,KAAKO,OAAO80c,cACzDr1c,KAAKO,OAAO85D,KAAKr5D,QAAQgzB,MAAMygB,QAAU,QAEb,UAA5Bz0C,KAAKO,OAAO80c,cACZj+a,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,SAAUzZ,KAAKO,OAAOS,SAASgzB,MAAMygB,QAAU,SAIjGz0C,KAAKO,OAAOyZ,OAAO+M,IAAqB,MAwKhD62hB,EAAW1hjB,UAAUq+f,aAAe,WAChCv6f,KAAKs+f,YAAc,GACnB,IAAIp2S,EAAahqN,OAAOjB,KAAK+C,KAAK89iB,mBAClC99iB,KAAKggjB,gBAAkBjliB,KAAKC,MAAMhb,KAAKO,OAAOooC,kBAAkBu1gB,cAMhE,IALA,IAAIvpe,EAAY30E,KAAKO,OAAO29iB,cAAc+B,gBAAkBjgjB,KAAKO,OAAO29iB,cAAc+B,gBAAkB,IACpGC,EAAgBlgjB,KAAKO,OAAO29iB,cAAcgC,cAA2D,KAA3ClgjB,KAAKO,OAAO29iB,cAAcgC,aACpFlgjB,KAAKO,OAAO29iB,cAAcgC,aAAavjjB,MAAMg4E,GAAWhwE,KAAK,OAAS,GACtEw7iB,EAAYngjB,KAAKk+iB,cAAc5/C,YAAct+f,KAAKk+iB,cAAc5/C,YAAYnzf,UAAOnP,EACnFokjB,EAAmB,GACdxjjB,EAAI,EAAGA,EAAIoD,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAQD,IAC9DwjjB,EAAiBpgjB,KAAKO,OAAO6vE,mBAAmB7T,OAAO3/D,GAAGwd,MAAShd,YAAkB4C,KAAKO,OAAO6vE,mBAAmB7T,OAAO3/D,GAAGq2E,cAA8Dj3E,EAAnDgE,KAAKO,OAAO6vE,mBAAmB7T,OAAO3/D,GAAGq2E,QAEtL,GAAIjzE,KAAKg+iB,iBAAiB7/iB,QAAQgijB,IAAc,GAAKj4V,EAAWrrN,OAAS,EAAG,CACxEmD,KAAKqgjB,cAAiBn4V,EAAW/pN,QAAQ+hjB,EAAe,MAAQlgjB,KAAKs+iB,iBAAmB,QAAsBtijB,IAAjBkkjB,EAA8BA,EAAe,MAAQlgjB,KAAKs+iB,eAAiBp2V,EAAW,GACnL,IAAI6yU,EAAgB,GACpBA,EAAgB/6hB,KAAKggjB,gBAAgB1hD,YAAct+f,KAAKsgjB,iBAAiBtgjB,KAAKggjB,gBAAgB1hD,aAAey8B,GACxG39hB,YAAkB29hB,EAAclqB,WAA8C,GAAjCkqB,EAAclqB,SAASh0gB,UAAiBO,YAAkB4C,KAAKggjB,gBAAgBnvC,WAAa7wgB,KAAKggjB,gBAAgBnvC,SAASh0gB,OAAS,IACjLk+hB,EAAclqB,SAAW7wgB,KAAKggjB,gBAAgBnvC,UAElDkqB,EAAcj5d,WAAa9hE,KAAK89iB,kBAAkB99iB,KAAKqgjB,eACvDtlB,EAAcvjC,MAAQ,IACtBujC,EAAcljC,MAAQ,IAClBv4f,eACIlC,YAAkB4C,KAAKggjB,gBAAgB1hD,YAAY1Z,UAAU1nb,WAC7Dl9D,KAAKggjB,gBAAgB1hD,YAAY1Z,UAAU1nb,SAAU,EACrDl9D,KAAKggjB,gBAAgB1hD,YAAY1Z,UAAU72c,SAAW,WAG1D/tC,KAAKggjB,gBAAgB1hD,aAAet+f,KAAKggjB,gBAAgB1hD,YAAY1Z,WACrEm2C,EAAcn2C,UAAY5kf,KAAKggjB,gBAAgB1hD,YAAY1Z,UAC3Dm2C,EAAcn2C,UAAUxqe,KAAO,MAG/B2ghB,EAAcn2C,UAAY,CAAE1nb,SAAS,EAAMnvB,SAAU,UAAW3zB,KAAM,KACtEpa,KAAKO,OAAO24B,cAAc,CAAEglhB,cAAe,CAAE5/C,YAAa,CAAE1Z,UAAW,CAAE1nb,SAAS,EAAMnvB,SAAU,eAAmB,IAErH/tC,KAAKq+iB,eAAiBtjB,EAAcvhC,mBACpCuhC,EAAcvhC,mBAAmBr8e,KAAO,OAEnCnd,KAAKq+iB,gBACVtjB,EAAcvhC,mBAAqB,CAAEr8e,KAAM,SAE/C49gB,EAAc3ghB,KAAOpa,KAAKqgjB,cACR,aAAdF,GACAplB,EAAc5vhB,KAAO,MACrB4vhB,EAAc15C,YAAcrhf,KAAKk+iB,cAAc5/C,YAAYjd,YAAcrhf,KAAKk+iB,cAAc5/C,YAAYjd,YAAc,OAEnG,QAAd8+D,IACLplB,EAAc15C,YAAcrhf,KAAKk+iB,cAAc5/C,YAAYjd,YAAcrhf,KAAKk+iB,cAAc5/C,YAAYjd,YAAc,KAE1Hrhf,KAAKs+f,YAAct+f,KAAKs+f,YAAYxse,OAAOipgB,QAG3C,IAAK,IAAI/8hB,EAAK,EAAGuijB,EAAer4V,EAAYlqN,EAAKuijB,EAAa1jjB,OAAQmB,IAAM,CACxE,IAAIhB,EAAMujjB,EAAavijB,GACnB+8hB,EAAgB,GACpBA,EAAgB/6hB,KAAKggjB,gBAAgB1hD,YAAct+f,KAAKsgjB,iBAAiBtgjB,KAAKggjB,gBAAgB1hD,aAAey8B,GACxG39hB,YAAkB29hB,EAAclqB,WAAakqB,EAAclqB,SAASh0gB,OAAS,IAAMO,YAAkB4C,KAAKggjB,gBAAgBnvC,WAAqD,GAAxC7wgB,KAAKggjB,gBAAgBnvC,SAASh0gB,UACtKmD,KAAKk+iB,cAAcrtC,SAAWkqB,EAAclqB,UAEhDkqB,EAAcj5d,WAAa9hE,KAAK89iB,kBAAkB9gjB,GAClD+9hB,EAAcvjC,MAAQ,IACtBujC,EAAcljC,MAAQ,IACtB,IAAI2oD,OAAe,EACnB,GAAIxgjB,KAAKk+iB,cAAcC,mBAAoB,CACvC,IAAIsC,EAAmBzjjB,EAAIL,MAAM,OAAO,GACxC8jjB,EAAoBrjjB,YAAkBgjjB,EAAiBK,IAA0DA,EAArCL,EAAiBK,GAC7FD,EAAexjjB,EAAIL,MAAM,OAAO,GAAK,MAAQ8jjB,EAGjD,GADA1lB,EAAc3ghB,KAAOpa,KAAKk+iB,cAAcC,mBAAqBqC,EAAexjjB,EAAIL,MAAM,OAAO,GACzF,CAAC,QAAS,SAASwB,QAAQgijB,GAAa,EAAG,CAC3C,IAAIlse,EAAUj3E,EAAIL,MAAM,OAAO,GAC/Bo+hB,EAAc7qB,UAAYlwgB,KAAK+9iB,cAAc9pe,GAAWj0E,KAAK+9iB,cAAc9pe,GAAWA,EAEtFj0E,KAAKggjB,gBAAgB1hD,aAAet+f,KAAKggjB,gBAAgB1hD,YAAY9E,qBACrEuhC,EAAcvhC,mBAAqBx5f,KAAKggjB,gBAAgB1hD,YAAY9E,oBAExEx5f,KAAKs+f,YAAct+f,KAAKs+f,YAAYxse,OAAOipgB,GAGnD,IAAI2lB,EAAc,CAAEz8E,OAAQjke,KAAKs+f,YAAav7e,QAAQ,GAClD49hB,EAAa3gjB,KACjBA,KAAKO,OAAOwpB,QAAQhD,IAA2B25hB,GAAa,SAAUnzU,GAC7DA,EAAaxqN,QAIV49hB,EAAW3/iB,SACXyoB,aAAOk3hB,EAAW3/iB,SAEtB2/iB,EAAWpgjB,OAAOyZ,OAAO+M,IAAqB,KAN9C45hB,EAAWC,gBAUvBhD,EAAW1hjB,UAAU2kjB,oBAAsB,SAAU58E,GAIjD,IAHA,IAAIhne,EAAOiB,OAAOjB,KAAKgne,GACnB50Z,EAAS,EACTyxe,EAAe,GACZzxe,EAASpyE,EAAKJ,QACjBikjB,EAAa7jjB,EAAKoyE,IAAW40Z,EAAOhne,EAAKoyE,IACzCA,IAEJ,OAAOyxe,GAEXlD,EAAW1hjB,UAAUokjB,iBAAmB,SAAUr8E,GAI9C,IAHA,IAAIhne,EAAOiB,OAAOjB,KAAKgne,GACnB50Z,EAAS,EACTyxe,EAAe,GACZzxe,EAASpyE,EAAKJ,QACZmD,KAAKg+iB,iBAAiB7/iB,QAAQ6B,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,OAAS,GAAK,CAAC,OAAQ,YAAa,QAAS,cAClH,WAAY,WAAY,WAAY,gBAAiB,SAAU,WAAY,aAAc,YACzF,aAAc,YAAa,wBAAyB,cAAe,gBAAiB,gBAAgBhN,QAAQlB,EAAKoyE,KAAY,GAC5HrvE,KAAKg+iB,iBAAiB7/iB,QAAQ6B,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,MAAQ,GAAK,CAAC,WAAY,UAAW,aAAc,eACpH,gBAAiB,WAAY,YAAa,UAAW,aAAc,YAAa,cAAe,aAC/F,YAAa,eAAehN,QAAQlB,EAAKoyE,KAAY,IAI7Dyxe,EAAa7jjB,EAAKoyE,IAAW40Z,EAAOhne,EAAKoyE,KAHrCA,IAMR,OAAOyxe,GAEXlD,EAAW1hjB,UAAU0kjB,UAAY,WAC7B5gjB,KAAKO,OAAOs8c,mBACZ,IAAIkkG,EAAe/gjB,KAAKghjB,cACpBC,EAAyBjhjB,KAAKkhjB,wBAC9BC,EAAwBnhjB,KAAKohjB,uBAC7BC,EAAsBrhjB,KAAKshjB,qBAC3BC,EAAevhjB,KAAKwhjB,oBACpBr2iB,EAAOnL,KAAKk+iB,cAAc5/C,YAAYnzf,KACH,SAAnCnL,KAAKO,OAAOiuQ,cAAc5pE,KAC1B5kM,KAAKgB,QAAgD,UAAtChB,KAAKO,OAAOiuQ,cAAc58P,QACpC5R,KAAKO,OAAOS,QAAQ61B,aAAe72B,KAAKgB,QAInChB,KAAKgB,QAHNG,YAAc,MAAO,CAClBktB,UAAW47C,KAAgBxwD,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,WAE3CzZ,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,OAC5DjqE,KAAKO,OAAOS,QAAQgB,YAAahC,KAAKgB,QAEjChB,KAAKgB,QAFuCG,YAAc,MAAO,CACnEktB,UAAW47C,KAAgBxwD,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,YAG1DzZ,KAAKgB,UACXhB,KAAKgB,QAAUhB,KAAKO,OAAOS,QAAQgB,YAAYb,YAAc,MAAO,CAChEktB,UAAW47C,KAAgBxwD,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,cAG3DzZ,KAAKyhjB,cAAgBzhjB,KAAKO,OAAO29iB,cAAcwD,yBAA2B1hjB,KAAKO,OAAO29iB,cAAcC,qBACrGn+iB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAgB7nE,UAAY,GACpEpC,KAAKyhjB,aAAezhjB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAgBjoE,YAAYb,YAAc,MAAO,CACzGktB,UAAW47C,KAAsBxwD,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,kBAGlEzZ,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,QACxCjqE,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAsB7nE,UAAY,IAE1EpC,KAAKO,OAAOiyT,gBACZxyT,KAAKgB,QAAQgzB,MAAMukH,SAAW,mBAG9Bv4I,KAAKgB,QAAQgzB,MAAMukH,SAAW,mBAElC,IAAI7oG,EAAQ1vC,KAAKO,OAAOmvC,MAAMviC,WAC1BnN,KAAKO,OAAOs/iB,aAAe7/iB,KAAKO,OAAO85D,OACvC3qB,EAAQ1vC,KAAKO,OAAOu/iB,uBAAuB3yiB,YAE/C,IAAIwiC,EAAS3vC,KAAK+/iB,iBACd//iB,KAAKO,OAAO29iB,cAAcwD,yBAA2B1hjB,KAAKO,OAAO29iB,cAAcC,oBAC/En+iB,KAAKg+iB,iBAAiB7/iB,QAAQgN,GAAQ,IACtCnL,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAgBj2C,MAAM2b,QAC9C,SAAXA,EAAoB3vC,KAAK2hjB,qBAAuBhygB,GAAU,KAC/D3vC,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAgBj2C,MAAM0b,MAAQA,EAAQ,KAC3B,UAA/C1vC,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,MAAmE,UAA/CnL,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,OAChGnL,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAgBj2C,MAAMqmB,SAAW,OACzEr6C,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAgBj2C,MAAMsmB,UAAY,WAG9Et6C,KAAKO,OAAOmye,QAAiD,sBAAtC1ye,KAAKO,OAAOmye,MAAM73c,iBACzC76B,KAAKg+iB,iBAAiB7/iB,QAAQgN,GAAQ,GAA6C,UAAtCnL,KAAKO,OAAOmye,MAAM73c,iBAC/D76B,KAAKg+iB,iBAAiB7/iB,QAAQgN,IAAS,KACvCnL,KAAKO,OAAOmye,MAAMv3d,UACdic,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,SAAUzZ,KAAKO,OAAOS,WAC5Do2B,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,SAAUzZ,KAAKO,OAAOS,SAASoB,UAAY,GACjFg1B,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,SAAUzZ,KAAKO,OAAOS,SAASgB,YAAYb,YAAc,MAAO,CAClGktB,UAAW47C,KAAsBxwD,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,qBAIpEzZ,KAAKO,OAAOmye,OAAS1ye,KAAKO,OAAOmye,MAAM1xe,SAAWhB,KAAKO,OAAOS,QAAQsC,cAAc,aAAetD,KAAKO,OAAOS,QAAQsC,cAAc,0BACtItD,KAAKO,OAAO8rS,eAAiBrsS,KAAKO,OAAO8rS,cAAcu1Q,mBACpD5hjB,KAAKO,OAAO8rS,eAAiBrsS,KAAKO,OAAO8rS,cAAcu1Q,mBAAqB5hjB,KAAKO,OAAOmye,QACnF1ye,KAAKO,OAAOmye,MAAMv5c,aACnBn5B,KAAKO,OAAOmye,MAAMv3d,UAEtBnb,KAAKO,OAAOmye,WAAQ12e,EACpBo7B,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,SAAUzZ,KAAKO,OAAOS,SAASoB,UAAY,GACjFg1B,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,SAAUzZ,KAAKO,OAAOS,SAASgB,YAAYb,YAAc,MAAO,CAClGktB,UAAW47C,KAAsBxwD,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,iBAElEzZ,KAAKO,OAAO8rS,cAAcu1Q,mBAAoB,GAElD32C,GAAM7ie,OAAOsye,GAAc2pB,GAAsBE,GAAmBE,GAAWE,GAAmBE,GAAe0T,GAAch8B,GAAYimB,GAAgBC,GAAcvB,GAAkBO,GAAwB8E,GAAasB,GAAajqB,GAAY8jB,GAAiBI,GAAoBQ,GAAgBM,GAAwBkS,GAAc72B,GAAQ10N,GAASu7N,GAAUowB,GAAiBzL,GAAWl0B,GAAM39N,GAAQu/P,GAAW1kQ,GAAWq6O,GAAWqC,IAC1bsL,GAAkBryf,OAAOuxf,GAAW8D,GAAcY,GAAeua,GAAuB5V,GAAoBgB,GAAqBpsP,IAC7H53S,KAAKg+iB,iBAAiB7/iB,QAAQgN,IAAS,EACvCnL,KAAKO,OAAOmye,MAAQ,IAAI+nD,GAAkB,CACtCx2D,OAAQjke,KAAKs+f,YAAYzhgB,OAAS,EAAImD,KAAKs+f,YAAc,CAAC,IAC1DwC,eAAgBqgD,EAChB/uc,QAAS6uc,EACTvxgB,MAAOA,EACPC,OAAQA,EAAOxiC,WACfi6I,MAAOpnJ,KAAKk+iB,cAAc92Z,MAC1B+xZ,kBAAmBn5iB,KAAKk+iB,cAAc/E,kBACtCtoW,OAAQ7wM,KAAKk+iB,cAAcrnB,UAC3BmF,wBAAyBh8hB,KAAKk+iB,cAAcliB,wBAC5C6lB,cAAe7hjB,KAAKk+iB,cAAcp/C,cAClCqmB,iBAAkBnlhB,KAAKk+iB,cAAc/4B,iBACrCvqC,WAAY56e,KAAKk+iB,cAActjE,WAC/Bi1B,SAAU7vgB,KAAKk+iB,cAAcruC,SAC7BC,cAAe9vgB,KAAKk+iB,cAAcpuC,cAClCzie,OAAQrtC,KAAKk+iB,cAAc7wgB,OAC3Bs7H,OAAQ3oK,KAAKk+iB,cAAcv1Y,OAC3BgoC,WAAY3wM,KAAKk+iB,cAAcvtW,WAC/B3yH,MAAOh+E,KAAKk+iB,cAAclge,MAC1Bo3a,cAAep1f,KAAKk+iB,cAAc4D,0BAClClpC,cAAe54gB,KAAKk+iB,cAActlC,cAClCvC,aAAcr2gB,KAAKk+iB,cAAc7nC,aACjChH,oBAAqBrvgB,KAAKk+iB,cAAc7uC,oBACxC9gC,gBAAiBvue,KAAKk+iB,cAAc3vE,gBACpC2H,qBAAsBl2e,KAAKk+iB,cAAchoE,qBACzCn5d,OAAQ/c,KAAKO,OAAOwc,OACpB4pB,UAAW3mC,KAAKO,OAAOomC,UACvBsmB,YAAajtD,KAAKk+iB,cAAcjxf,YAAcjtD,KAAKk+iB,cAAcjxf,YAAY9wD,KAAK6D,WAAQhE,EAC1FslhB,kBAAmBthhB,KAAKk+iB,cAAc58B,kBAAoBthhB,KAAKk+iB,cAAc58B,kBAAkBnlhB,KAAK6D,WAAQhE,EAC5G26e,aAAc32e,KAAKk+iB,cAAcvnE,aAAe32e,KAAKk+iB,cAAcvnE,aAAax6e,KAAK6D,WAAQhE,EAC7F46e,WAAY52e,KAAKk+iB,cAActnE,WAAa52e,KAAKk+iB,cAActnE,WAAWz6e,KAAK6D,WAAQhE,EACvF66e,YAAa72e,KAAKk+iB,cAAcrnE,YAAc72e,KAAKk+iB,cAAcrnE,YAAY16e,KAAK6D,WAAQhE,EAC1F+6e,aAAc/2e,KAAKk+iB,cAAcnnE,aAAe/2e,KAAKk+iB,cAAcnnE,aAAa56e,KAAK6D,WAAQhE,EAC7Fo7e,eAAgBp3e,KAAKk+iB,cAAc9mE,eAAiBp3e,KAAKk+iB,cAAc9mE,eAAej7e,KAAK6D,WAAQhE,EACnGq7e,gBAAiBr3e,KAAKk+iB,cAAc7mE,gBAAkBr3e,KAAKk+iB,cAAc7mE,gBAAgBl7e,KAAK6D,WAAQhE,EACtGu7e,UAAWv3e,KAAKk+iB,cAAc3mE,UAAYv3e,KAAKk+iB,cAAc3mE,UAAUp7e,KAAK6D,WAAQhE,EACpFs7e,WAAYt3e,KAAKs3e,WAAWn7e,KAAK6D,MACjCw3e,gBAAiBx3e,KAAKk+iB,cAAc1mE,gBAAkBx3e,KAAKk+iB,cAAc1mE,gBAAgBr7e,KAAK6D,WAAQhE,EACtGy7e,eAAgBz3e,KAAKk+iB,cAAczmE,eAAiBz3e,KAAKk+iB,cAAczmE,eAAet7e,KAAK6D,WAAQhE,EACnG07e,aAAc13e,KAAKk+iB,cAAcxmE,aAAe13e,KAAKk+iB,cAAcxmE,aAAav7e,KAAK6D,WAAQhE,EAC7Fm7e,cAAen3e,KAAKm3e,cAAch7e,KAAK6D,MACvCuyO,OAAQvyO,KAAKuyO,OAAOp2O,KAAK6D,MACzB22C,KAAM32C,KAAK22C,KAAKx6C,KAAK6D,MACrB83e,QAAS93e,KAAK83e,QAAQ37e,KAAK6D,QAI/BA,KAAKO,OAAOmye,MAAQ,IAAIu4B,GAAM,CAC1BhnC,OAAQjke,KAAKs+f,YAAYzhgB,OAAS,EAAImD,KAAKs+f,YAAc,CAAC,IAC1DwC,eAAgBqgD,EAChB/uc,QAAS6uc,EACTvlE,aAAc2lE,EACd9pe,KAAgB,UAATpsE,GAA6B,UAATA,EAAoB,GAAKo2iB,EAAahqe,KACjEzO,KAAgB,UAAT39D,GAA6B,UAATA,EAAoB,CAAC,IAClC,QAATA,GAA2B,gBAATA,GAAmC,mBAATA,GACzCnL,KAAKk+iB,cAAcC,mBAAsB,CAAC,CAAExugB,OAAQ,SAAY4xgB,EAAaz4e,KACrF/O,QAAmB,UAAT5uD,GAA6B,UAATA,EAAoB,CAAC,IACrC,QAATA,GAA2B,gBAATA,GAAmC,mBAATA,GACzCnL,KAAKk+iB,cAAcC,mBAAsBoD,EAAaxnf,QAAU,CAAC,CAAErqB,MAAO,SAClFm+c,aAAwB,UAAT1if,GAA6B,UAATA,EAAoBo2iB,EAAahqe,KAAK,GAAK,CAAEra,SAAS,GACzF0jb,aAAcmgE,EACdrxgB,MAAOA,EACPC,OAAwD,UAA/C3vC,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,MACI,UAA/CnL,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,MAAoBnL,KAAKO,OAAO29iB,cAAcwD,yBACpF1hjB,KAAKO,OAAO29iB,cAAcC,oBAAsBn+iB,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAS,EAC/Fo5C,OAAOtG,GAA0D,IAA/C3vC,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAgB,IAAMuP,MAAM6pC,OAAOtG,IACvFA,EAAOxiC,YAAc8oC,OAAOtG,GAAU,GAAGxiC,YACvCf,MAAM6pC,OAAOtG,KAAY3vC,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAS,GACrB,IAA/CmD,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAgB,KAAKsQ,WAC7DwiC,EAAOxiC,WAAawiC,EAAOxiC,WACvCi6I,MAAOpnJ,KAAKk+iB,cAAc92Z,MAC1BwzV,WAAY56e,KAAKk+iB,cAActjE,WAC/Bi1B,SAAU7vgB,KAAKk+iB,cAAcruC,SAC7BC,cAAe9vgB,KAAKk+iB,cAAcpuC,cAClCzie,OAAQrtC,KAAKk+iB,cAAc7wgB,OAC3Bs7H,OAAQ3oK,KAAKk+iB,cAAcv1Y,OAC3BgoC,WAAY3wM,KAAKk+iB,cAAcvtW,WAC/BkgT,UAAW7wf,KAAKk+iB,cAAcrtD,UAC9BggB,SAAU7wgB,KAAKk+iB,cAAcrtC,SAC7B7yb,MAAOh+E,KAAKk+iB,cAAclge,MAC1B+/a,UAAW/9f,KAAKk+iB,cAAcngD,UAC9B3I,cAAep1f,KAAKk+iB,cAAc9oD,cAClCwjB,cAAe54gB,KAAKk+iB,cAActlC,cAClCvC,aAAcr2gB,KAAKk+iB,cAAc7nC,aACjChH,oBAAqBrvgB,KAAKk+iB,cAAc7uC,oBACxCpa,aAAcj1f,KAAKk+iB,cAAcjpD,aACjC1mB,gBAAiBvue,KAAKk+iB,cAAc3vE,gBACpCua,aAAc9of,KAAKk+iB,cAAcp1D,aACjC5S,qBAAsBl2e,KAAKk+iB,cAAchoE,qBACzC59K,YAAat4T,KAAKk+iB,cAAc5lP,YAChCj7K,SAAUr9I,KAAKk+iB,cAAc7ga,SAC7BtgI,OAAQ/c,KAAKO,OAAOwc,OACpB4pB,UAAW3mC,KAAKO,OAAOomC,UACvBoye,0BAA2B/4gB,KAAKk+iB,cAAcnlC,0BAC9C9rd,YAAajtD,KAAKk+iB,cAAcjxf,YAAcjtD,KAAKk+iB,cAAcjxf,YAAY9wD,KAAK6D,WAAQhE,EAC1FslhB,kBAAmBthhB,KAAKk+iB,cAAc58B,kBAAoBthhB,KAAKk+iB,cAAc58B,kBAAkBnlhB,KAAK6D,WAAQhE,EAC5G26e,aAAc32e,KAAKk+iB,cAAcvnE,aAAe32e,KAAKk+iB,cAAcvnE,aAAax6e,KAAK6D,WAAQhE,EAC7F46e,WAAY52e,KAAKk+iB,cAActnE,WAAa52e,KAAKk+iB,cAActnE,WAAWz6e,KAAK6D,WAAQhE,EACvF66e,YAAa72e,KAAKk+iB,cAAcrnE,YAAc72e,KAAKk+iB,cAAcrnE,YAAY16e,KAAK6D,WAAQhE,EAC1F+6e,aAAc/2e,KAAKk+iB,cAAcnnE,aAAe/2e,KAAKk+iB,cAAcnnE,aAAa56e,KAAK6D,WAAQhE,EAC7Fk7e,qBAAsBl3e,KAAKk+iB,cAAchnE,qBAAuBl3e,KAAKk+iB,cAAchnE,qBAAqB/6e,KAAK6D,WAAQhE,EACrHo7e,eAAgBp3e,KAAKk+iB,cAAc9mE,eAAiBp3e,KAAKk+iB,cAAc9mE,eAAej7e,KAAK6D,WAAQhE,EACnGq7e,gBAAiBr3e,KAAKk+iB,cAAc7mE,gBAAkBr3e,KAAKk+iB,cAAc7mE,gBAAgBl7e,KAAK6D,WAAQhE,EACtGu7e,UAAWv3e,KAAKk+iB,cAAc3mE,UAAYv3e,KAAKk+iB,cAAc3mE,UAAUp7e,KAAK6D,WAAQhE,EACpFs7e,WAAYt3e,KAAKs3e,WAAWn7e,KAAK6D,MACjCw3e,gBAAiBx3e,KAAKk+iB,cAAc1mE,gBAAkBx3e,KAAKk+iB,cAAc1mE,gBAAgBr7e,KAAK6D,WAAQhE,EACtGy7e,eAAgBz3e,KAAKk+iB,cAAczmE,eAAiBz3e,KAAKk+iB,cAAczmE,eAAet7e,KAAK6D,WAAQhE,EACnG07e,aAAc13e,KAAKk+iB,cAAcxmE,aAAe13e,KAAKk+iB,cAAcxmE,aAAav7e,KAAK6D,WAAQhE,EAC7F47e,aAAc53e,KAAKk+iB,cAActmE,aAAe53e,KAAKk+iB,cAActmE,aAAaz7e,KAAK6D,WAAQhE,EAC7F27e,aAAc33e,KAAKk+iB,cAAcvmE,aAAe33e,KAAKk+iB,cAAcvmE,aAAax7e,KAAK6D,WAAQhE,EAC7Fg8e,YAAah4e,KAAKk+iB,cAAclmE,YAAch4e,KAAKk+iB,cAAclmE,YAAY77e,KAAK6D,WAAQhE,EAC1Fi8e,UAAWj4e,KAAKk+iB,cAAcjmE,UAAYj4e,KAAKk+iB,cAAcjmE,UAAU97e,KAAK6D,WAAQhE,EACpFk8e,cAAel4e,KAAKk+iB,cAAchmE,cAAgBl4e,KAAKk+iB,cAAchmE,cAAc/7e,KAAK6D,WAAQhE,EAChGm7e,cAAen3e,KAAKm3e,cAAch7e,KAAK6D,MACvCuyO,OAAQvyO,KAAKuyO,OAAOp2O,KAAK6D,MACzB22C,KAAM32C,KAAK22C,KAAKx6C,KAAK6D,MACrB83e,QAAS93e,KAAK83e,QAAQ37e,KAAK6D,MAC3Bg3e,gBAAiBh3e,KAAKg3e,gBAAgB76e,KAAK6D,MAC3C8lF,qBAAsB9lF,KAAK8lF,qBAAqB3pF,KAAK6D,QAG7DA,KAAKO,OAAOmye,MAAMxkd,kBAAmB,IAGrCluB,KAAKO,OAAOmye,MAAMzO,OAASjke,KAAKs+f,YAChCt+f,KAAKO,OAAOmye,MAAMtrV,MAAQpnJ,KAAKO,OAAO29iB,cAAc92Z,MACpDpnJ,KAAKO,OAAOmye,MAAMm9B,SAAW7vgB,KAAKO,OAAO29iB,cAAcruC,SACvD7vgB,KAAKO,OAAOmye,MAAM/hS,WAAa3wM,KAAKO,OAAO29iB,cAAcvtW,WACzD3wM,KAAKO,OAAOmye,MAAM10Z,MAAQh+E,KAAKO,OAAO29iB,cAAclge,MACpDh+E,KAAKO,OAAOmye,MAAMouB,eAAiBqgD,EACnCnhjB,KAAKO,OAAOmye,MAAM0iB,cAAgBp1f,KAAKO,OAAO29iB,cAAc9oD,cAC5Dp1f,KAAKO,OAAOmye,MAAM2jC,aAAer2gB,KAAKO,OAAO29iB,cAAc7nC,aAC3Dr2gB,KAAKO,OAAOmye,MAAMkmC,cAAgB54gB,KAAKO,OAAO29iB,cAActlC,cAC5D54gB,KAAKO,OAAOmye,MAAMnE,gBAAkBvue,KAAKO,OAAO29iB,cAAc3vE,gBAC9Dvue,KAAKO,OAAOmye,MAAMwD,qBAAuBl2e,KAAKO,OAAO29iB,cAAchoE,qBACnEl2e,KAAKO,OAAOmye,MAAMyyC,iBAAmBnlhB,KAAKO,OAAO29iB,cAAc/4B,iBAC3DnlhB,KAAKg+iB,iBAAiB7/iB,QAAQgN,IAAS,GACvCnL,KAAKO,OAAOmye,MAAMspD,wBAA0Bh8hB,KAAKO,OAAO29iB,cAAcliB,wBACtEh8hB,KAAKO,OAAOmye,MAAMmvE,cAAgB7hjB,KAAKO,OAAO29iB,cAAcp/C,cAC5D9+f,KAAKO,OAAOmye,MAAMymE,kBAAoBn5iB,KAAKO,OAAO29iB,cAAc/E,oBAGhEn5iB,KAAKO,OAAOmye,MAAMm+B,SAAW7wgB,KAAKO,OAAO29iB,cAAcrtC,SACvD7wgB,KAAKO,OAAOmye,MAAMuiB,aAAej1f,KAAKO,OAAO29iB,cAAcjpD,aAC3Dj1f,KAAKO,OAAOmye,MAAMqmC,0BAA4B/4gB,KAAKO,OAAO29iB,cAAcnlC,0BACxE/4gB,KAAKO,OAAOmye,MAAMr1V,SAAWr9I,KAAKO,OAAO29iB,cAAc7ga,SACvDr9I,KAAKO,OAAOmye,MAAMp6K,YAAct4T,KAAKO,OAAO29iB,cAAc5lP,YAC1Dt4T,KAAKO,OAAOmye,MAAMoW,aAAe9of,KAAKO,OAAO29iB,cAAcp1D,cAElD,UAAT39e,GAA6B,UAATA,GACpBnL,KAAKO,OAAOmye,MAAMkO,aAAemgE,EACjC/gjB,KAAKO,OAAOmye,MAAMmb,aAAa3wb,SAAU,EACzCl9D,KAAKO,OAAOmye,MAAMmb,aAAe0zD,EAAahqe,KAAK,GACnDv3E,KAAKO,OAAOmye,MAAMn7Z,KAAO,GACzBv3E,KAAKO,OAAOmye,MAAM5pa,KAAO,CAAC,KAEpB9oE,KAAKg+iB,iBAAiB7/iB,QAAQgN,GAAQ,GAA4C,UAAtCnL,KAAKO,OAAOmye,MAAM73c,kBACpE76B,KAAKO,OAAOmye,MAAMmb,aAAa3wb,SAAU,EACzCl9D,KAAKO,OAAOmye,MAAMkO,aAAemgE,EACjC/gjB,KAAKO,OAAOmye,MAAMn7Z,KAAOgqe,EAAahqe,KACzB,QAATpsE,GAA2B,gBAATA,GAAmC,mBAATA,GAC5CnL,KAAKk+iB,cAAcC,oBACnBn+iB,KAAKO,OAAOmye,MAAM5pa,KAAO,CAAC,CAAEn5B,OAAQ,SACpC3vC,KAAKO,OAAOmye,MAAM34a,QAAUwnf,EAAaxnf,UAGzC/5D,KAAKO,OAAOmye,MAAM5pa,KAAOy4e,EAAaz4e,KACtC9oE,KAAKO,OAAOmye,MAAM34a,QAAU,CAAC,CAAErqB,MAAO,WAG9C1vC,KAAKO,OAAOmye,MAAMxrc,UACblnC,KAAKg+iB,iBAAiB7/iB,QAAQgN,IAAS,GAA4C,sBAAtCnL,KAAKO,OAAOmye,MAAM73c,kBAA2F,IAA/C76B,KAAKO,OAAO6vE,mBAAmBtH,KAAKjsE,QAAkE,IAAlDmD,KAAKO,OAAO6vE,mBAAmBrW,QAAQl9D,UACvMmD,KAAKO,OAAOwhjB,mBACR/hjB,KAAKO,OAAO+6c,sBACZ3uU,YAAY3sI,KAAKO,OAAO+6c,qBAAqB0mG,2BAIrDhijB,KAAKO,OAAO29iB,cAAcwD,yBAA2B1hjB,KAAKO,OAAO29iB,cAAcC,mBAC/En+iB,KAAKO,OAAOmye,MAAM3rc,SAAS,IAAM/mC,KAAKO,OAAOS,QAAQyY,GAAK,eAG1DzZ,KAAKO,OAAOmye,MAAM3rc,SAAS,IAAM/mC,KAAKO,OAAOS,QAAQyY,GAAK,WAGlEmkiB,EAAW1hjB,UAAUo7e,WAAa,SAAUr3e,GACxC,IAAI6hE,EAAa7hE,EAAKgke,OAAOnia,WAAa7hE,EAAKgke,OAAOnia,WAAa9hE,KAAKO,OAAOmye,MAAMzO,OAAOhke,EAAK8je,aAAajia,WAC9G,IAAM,CAAC,MAAO,SAAU,WAAY,UAAW,QAAS,SAAS3jE,QAAQ6B,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,OAAS,IAAOnL,KAAKO,OAAO29iB,cAAc+D,uBAAyBjijB,KAAKO,OAAO6vE,mBAAmBtH,KAAKjsE,OAAS,EAAG,CAC9NmD,KAAK8+N,WAAa,CACdn7E,OAAQ7hF,EAAaA,EAAW7hE,EAAK+je,YAAYrgV,YAAS3nJ,EAC1D4nJ,OAAQ9hF,EAAaA,EAAW7hE,EAAK+je,YAAYpgV,YAAS5nJ,GAE9DgE,KAAKkijB,YACL,IAAIvsiB,EAAM3V,KAAKO,OAAOS,QAAQqhC,wBAC1B/rB,GAAKtW,KAAKO,OAAOS,QAAQsC,cAAc,oBACvCtD,KAAKO,OAAOS,QAAQsC,cAAc,oBAAoB69I,aAAe,IACpEnhJ,KAAKO,OAAOS,QAAQsC,cAAc,yBAC/BtD,KAAKO,OAAOS,QAAQsC,cAAc,yBAAyB69I,aAAe,IAC7Er/I,OAAOm6H,SAAWz7H,SAASqiC,gBAAgBD,WAAajtB,EAAIqtB,IACjEhjC,KAAKmijB,iBAAiBpgjB,KAAKuU,EAAIrW,EAAKqW,EAAGrW,EAAKshB,EAAI5L,EAAImtB,MAAQhhC,OAAOo6H,SAAW17H,SAASqiC,gBAAgBJ,kBAEtG,IAAKziC,KAAKO,OAAOswc,mBAAqB7wc,KAAKO,OAAOm/D,aAAaH,eAAiBv/D,KAAKO,OAAO6hjB,mBAAoB,CACjH,IAAIz+Z,EAAS7hF,EAAW7hE,EAAK+je,YAAYrgV,OACrCC,EAAS9hF,EAAW7hE,EAAK+je,YAAYpgV,OACzC5jJ,KAAKO,OAAO6hjB,mBAAmB7hF,oBAAoBvge,KAAKO,OAAOivE,YAAYm0E,GAAQC,GAASD,EAAQC,GAExG5jJ,KAAKO,OAAOwpB,QAAQhD,IAAwB9mB,IAGhD29iB,EAAW1hjB,UAAUsljB,kBAAoB,WACrC,IAAIjqe,EAAO,GACPzO,EAAO,GACP/O,EAAU,GACVsof,EAAerijB,KAAKggjB,gBAAgB1hD,cAA0D,sBAA1Ct+f,KAAKggjB,gBAAgB1hD,YAAYnzf,MAC3C,mBAA1CnL,KAAKggjB,gBAAgB1hD,YAAYnzf,MACS,oBAA1CnL,KAAKggjB,gBAAgB1hD,YAAYnzf,MACjCm3iB,EAAwB,CAAC,yBAA0B,0BAA2B,uBAC9E,6BAA8B,6BAA8B,gCAAiC,2BACjG,GAAItijB,KAAKk+iB,cAAcC,mBAGnB,IAFA,IAAIoE,EAAS,EACTC,EAAW,IAAMxijB,KAAKowE,mBAAmB7T,OAAO1/D,OAAU,IACrDmB,EAAK,EAAGuF,EAAKvD,KAAKowE,mBAAmB7T,OAAQv+D,EAAKuF,EAAG1G,OAAQmB,IAAM,CASxE,IARA,IAAIw9C,EAAOj4C,EAAGvF,GACV47T,EAAe55T,KAAK+2E,aAAaF,UAAUr7B,EAAKphC,MAChDqoiB,GAAkD,SAAzBzijB,KAAKO,OAAOikB,SAAsB,GAAMxkB,KAAKO,OAAOwjF,UAAUltC,YAAY+iR,EAAa3iP,eAAiB,IACjIj3E,KAAKO,OAAOwjF,UAAUltC,YAAY,MAAQ,KAAQ+iR,EAAa3mP,QAI/DmhJ,OAAgB,EACXr/L,EAAK,EAAGI,EAAKn1B,KAAKowE,mBAAmBsB,eAAgB38C,EAAKI,EAAGt4B,OAAQk4B,IAAM,CAChF,IAAIykC,EAAQrkC,EAAGJ,GACf,GAAIykC,EAAMp/C,OAASohC,EAAKphC,KAAM,CAC1Bg6M,EAAgB56J,EAChB,OAGR,IAAIxuD,GAAmF,IAA1E4jE,KAAU7Q,QAAQ67P,EAAa3iP,cAAeqre,GAAgC,KAAQluV,EACxC,OAAtDA,EAAcppN,OAAOyM,cAAc7U,MAAM,SAAoB,IAAMwxN,EAAcppN,OACzD,SAAzBhL,KAAKO,OAAOikB,SAAsBxkB,KAAK4vT,UAAUgK,EAAazkP,cAAgB,IAC9Eute,EAAqD,UAAxC1ijB,KAAKk+iB,cAAc5/C,YAAYnzf,MAA4D,UAAxCnL,KAAKk+iB,cAAc5/C,YAAYnzf,KAC/Fw3iB,EAAe,IACnBA,EAAe3ijB,KAAKggjB,gBAAgBnyD,aAChC7tf,KAAK6gjB,oBAAoB7gjB,KAAKggjB,gBAAgBnyD,cAAgB80D,GACrD1sE,YAAc0sE,EAAa1sE,YACpC0sE,EAAa1sE,YAAeosE,EAAe,GAAOK,EAAqB,IAAT13iB,EAClE23iB,EAAav7Z,MAAQu7Z,EAAav7Z,MAAQu7Z,EAAav7Z,MAAQq7Z,EAC/DE,EAAa91D,cAAgB81D,EAAa91D,cAAgB81D,EAAa91D,cAC3B,QAAxC7sf,KAAKk+iB,cAAc5/C,YAAYnzf,MAA0D,gBAAxCnL,KAAKk+iB,cAAc5/C,YAAYnzf,MACpC,mBAAxCnL,KAAKk+iB,cAAc5/C,YAAYnzf,KAA4B,GAAK,GACnEu3iB,IACDC,EAAavoiB,KAAOpa,KAAK+9iB,cAAcvigB,EAAKphC,MAAQpa,KAAK+9iB,cAAcvigB,EAAKphC,MAAQohC,EAAKphC,MAE7Fm9D,EAAOA,EAAKzlD,OAAO6whB,GACyB,YAAxC3ijB,KAAKk+iB,cAAc0E,kBACnBD,EAAah3e,SAAW42e,EACxBI,EAAa9te,YAAc0te,EAC3Bz5e,EAAKlnE,KAAK,CAAE+tC,OAAQ6ygB,IACpBzof,EAAQn4D,KAAK,CAAE8tC,MAAO8ygB,MAGtBG,EAAah3e,SAAW,EACxBg3e,EAAa9te,YAAc,EAC3B/L,EAAO,CAAC,CAAEn5B,OAAQ,SAClBoqB,EAAU,CAAC,CAAErqB,MAAO,UAExB6ygB,QAGH,CACG3oP,EAAe55T,KAAK+2E,aAAaF,UAAU72E,KAAKs+iB,gBAChDmE,GAAkD,SAAzBzijB,KAAKO,OAAOikB,SAAsB,GAC1DxkB,KAAKO,OAAOwjF,UAAUltC,YAAY+iR,EAAa3iP,eAAiB,IAC7Dj3E,KAAKO,OAAOwjF,UAAUltC,YAAY,MAAQ,KAAQ+iR,EAAa3mP,QAInEmhJ,OAAgB,EACpB,IARA,IAQS9+L,EAAK,EAAGk3F,EAAKxsH,KAAKowE,mBAAmBsB,eAAgBp8C,EAAKk3F,EAAG3vH,OAAQy4B,IAAM,CAEhF,IADIkmB,EAAOgxE,EAAGl3F,IACLlb,OAASpa,KAAKs+iB,eAAgB,CACnClqV,EAAgB54K,EAChB,OAGR,IAAIqngB,OAAiB,EACjBzuV,IACAyuV,EAAiBzuV,EAAcppN,OAAOnO,QAEtC8ljB,EAAe,GACf33iB,GAAmF,IAA1E4jE,KAAU7Q,QAAQ67P,EAAa3iP,cAAeqre,GAAgC,KAAQluV,EACpB,OAAxEA,EAAcppN,OAAOyM,cAAc7U,MAAM,4BAAwCigjB,EAAiB,EAAK,IAAMzuV,EAAcppN,OACrG,SAAzBhL,KAAKO,OAAOikB,SAAsBxkB,KAAK4vT,UAAUgK,EAAazkP,cAAgB,KAClFwte,EAAe3ijB,KAAKggjB,gBAAgBnyD,aAAe7tf,KAAK6gjB,oBAAoB7gjB,KAAKggjB,gBAAgBnyD,cAAgB80D,GACpGh3e,SAAW,EACxBg3e,EAAa9te,YAAc,EACmB,UAAxC70E,KAAKk+iB,cAAc5/C,YAAYnzf,MAA4D,UAAxCnL,KAAKk+iB,cAAc5/C,YAAYnzf,OACpFw3iB,EAAavoiB,KAAOpa,KAAK+9iB,cAAc/9iB,KAAKs+iB,gBAAkBt+iB,KAAK+9iB,cAAc/9iB,KAAKs+iB,gBAAkBt+iB,KAAKs+iB,gBAEjHqE,EAAa1sE,YAAc0sE,EAAa1sE,YAAc0sE,EAAa1sE,YAAeosE,EAAe,GAAKr3iB,EACtG23iB,EAAav7Z,MAAQu7Z,EAAav7Z,MAAQu7Z,EAAav7Z,MAAQq7Z,EAC/Dlre,EAAOA,EAAKzlD,OAAO6whB,GACnB75e,EAAKlnE,KAAK,CAAE+tC,OAAQ,SACpBoqB,EAAQn4D,KAAK,CAAE8tC,MAAO,SAE1B,MAAO,CAAE6nC,KAAMA,EAAMzO,KAAMA,EAAM/O,QAASA,IAE9C6jf,EAAW1hjB,UAAU0zT,UAAY,SAAU5kT,GAUvC,OARIA,EADW,aAAXA,EACS,IAEO,YAAXA,EACI,IAGA,KAMjB4yiB,EAAW1hjB,UAAUwijB,oBAAsB,SAAUlve,GAGjD,IAFA,IAAIsze,EAAe,GAEV9kjB,EAAK,EAAG+kjB,EADL7kjB,OAAOjB,KAAKuyE,GACUxxE,EAAK+kjB,EAAQlmjB,OAAQmB,IAAM,CACzD,IAAI2tE,EAAWo3e,EAAQ/kjB,GACnB8qE,EAAO0G,EAAYv5B,OAAO01B,IAE9B,IAAKvuE,YAAkB0rE,GAEnB,IAAK,IAAIvlE,EAAK,EAAGy/iB,EADT9kjB,OAAOjB,KAAK6rE,GACcvlE,EAAKy/iB,EAAQnmjB,OAAQ0G,IAAM,CACzD,IAAIy/F,EAAYggd,EAAQz/iB,GACpBw8E,EAAOjX,EAAK7yB,OAAO+sD,IACvB,IAAK5lG,YAAkB2iF,GAAO,CAC1B,GAAkB,WAAdA,EAAKh0C,KACL,OAAO+2gB,GAEa,QAAd/ie,EAAK50E,MAA8D,IAA3CnL,KAAKowE,mBAAmBrW,QAAQl9D,QAAqC,cAAdkjF,EAAK50E,QACrE,IAAlB40E,EAAK3G,UACR0pe,EAAa/ie,EAAKjH,UAAYiH,EAAKjH,YAMvD,OAAOgqe,GAEXlF,EAAW1hjB,UAAU+ijB,yBAA2B,SAAUzve,GACtD,IAAIjsE,EAAIwxB,EACR/0B,KAAKooU,cAAgB,GACrB,IAAIrgP,EAAQ,GACRk7d,EAAa,EACbhxO,EAAW,GACfjyU,KAAK+nU,WAAa/nU,KAAK+2E,aAAai0P,WAAW,GAAGmF,gBAClD,IAAK,IAAIj1G,EAAS,EAAGA,EAAS1rJ,EAAY3yE,OAAQq+N,IAAU,CACxD,IAAIn7I,EAAOvQ,EAAY0rJ,GAAQ,GAC3Bn7I,GAAsB,QAAdA,EAAKh0C,MAAgC,cAAdg0C,EAAK50E,OAChC/N,YAAkB2qF,EAAMhI,EAAKigB,aACL,IAApBjgB,EAAK+uP,WACDm0O,IAAejjjB,KAAK+nU,YACpB/nU,KAAKooU,cAAcpoU,KAAK+nU,YAAchoP,EAAKigB,UAC3CjY,EAAMhI,EAAKigB,aAAcz8F,EAAK,IAAOw8E,EAAKywP,iBAAmBzwP,EAAKywP,gBAAiBjtU,IAGnF0/iB,KAIJjjjB,KAAKooU,cAAc66O,GAAclje,EAAKigB,UACtCjY,EAAMhI,EAAKigB,aAAcjrE,EAAK,IAAOgrD,EAAKywP,iBAAmBzwP,EAAKywP,gBAAiBz7S,IAEvFkuhB,KAGAl7d,EAAMhI,EAAKigB,WAAWjgB,EAAKywP,iBAAmBzwP,EAAKywP,iBAK/D,IADA,IAAI0yO,GAAW,EACNvtiB,EAAM,EAAGA,EAAM3V,KAAKooU,cAAcvrU,OAAQ8Y,IAC3C3V,KAAK+nU,aAAepyT,IACpBs8T,EAASjyU,KAAKooU,cAAczyT,IAAQ,CAChCzY,MAAQgmjB,EAAU,EAClBvqiB,IAAMuqiB,EAAUhljB,OAAOjB,KAAK8qF,EAAM/nF,KAAKooU,cAAczyT,KAAO9Y,QAEhEqmjB,EAAUjxO,EAASjyU,KAAKooU,cAAczyT,IAAMgD,KAGpD,OAAOs5T,GAGX2rO,EAAW1hjB,UAAUinjB,sBAAwB,WAGzC,IAFA,IAAIC,EAAYlljB,OAAOjB,KAAK+C,KAAK69iB,YAC7BwF,EAAgBrjjB,KAAK69iB,YAAY,IAC5B7/iB,EAAK,EAAGsljB,EAAcF,EAAWpljB,EAAKsljB,EAAYzmjB,OAAQmB,IAAM,CAMrE,IALA,IAAIuljB,EAAWD,EAAYtljB,GACvBwljB,EAAOvtgB,OAAOstgB,GACdv+hB,EAAUhlB,KAAK69iB,WAAW2F,GAC1BvxO,EAAW,EACXh8G,GAAU,EACPg8G,GAAYjyU,KAAK+uU,UACf94G,EAQKjxM,EAAQitT,KACdjtT,EAAQitT,GAAY,CAChB73T,KAAM4K,EAAQitT,EAAW,GAAG73T,KAE5B7H,KAAM,GACNunE,SAAU90D,EAAQitT,EAAW,GAAGn4P,SAChCE,UAAWh1D,EAAQitT,EAAW,GAAGj4P,UACjCq6I,UAAWrvM,EAAQitT,EAAW,GAAG59G,UACjCn7I,MAAOl0D,EAAQitT,EAAW,GAAG/4P,MAC7B1C,UAAWxxD,EAAQitT,EAAW,GAAGz7P,UACjC7K,SAAU3mD,EAAQitT,EAAW,GAAGtmQ,SAChCmN,SAAU9zD,EAAQitT,EAAW,GAAGn5P,SAChC/X,MAAO,IAnBN/7C,EAAQitT,GAITh8G,GAAU,EAHVjxM,EAAQitT,GAAYoxO,EAAcpxO,GAsB1CA,IAEJoxO,EAAgBrjjB,KAAK69iB,WAAW2F,GAGpC,IADA,IAAIC,EAAQ,GACHlgjB,EAAK,EAAGmgjB,EAAcN,EAAW7/iB,EAAKmgjB,EAAY7mjB,OAAQ0G,IAAM,CACjEggjB,EAAWG,EAAYngjB,GACvBigjB,EAAOvtgB,OAAOstgB,GACdv+hB,EAAUhlB,KAAK69iB,WAAW2F,GAE9B,IAJA,IAISzuhB,EAAK,EAAG4uhB,EADLzljB,OAAOjB,KAAK+nB,GACU+P,EAAK4uhB,EAAQ9mjB,OAAQk4B,IAAM,CACzD,IAAI6uhB,EAAWD,EAAQ5uhB,GACnB8uhB,EAAO5tgB,OAAO2tgB,GAClB,GAAIH,EAAMI,GAAO,CACb,IAAIlijB,EAAM8hjB,EAAMI,GAAMhnjB,OAClBmoB,EAAQ6+hB,GAAMxvV,YAAcgvV,EAAcQ,GAAMxvV,UAChDovV,EAAMI,GAAMlijB,EAAM,GAAGgX,IAAM8qiB,EAAMI,GAAMlijB,EAAM,GAAGgX,IAAM,EAGtD8qiB,EAAMI,GAAMjijB,KAAK,CACb1E,MAAOsmjB,EAAM7qiB,IAAK6qiB,EAAO,EAAGjxiB,KAAMyS,EAAQ6+hB,GAAMtxiB,KAChDpH,MAA+B,IAAxB6Z,EAAQ6+hB,GAAM9if,KAAc,4BAA8B,mBACjE5E,iBAAkBn3C,EAAQ6+hB,UAKlCJ,EAAMI,GAAQ,CAAC,CACP3mjB,MAAOsmjB,EAAM7qiB,IAAK6qiB,EAAO,EAAGjxiB,KAAMyS,EAAQ6+hB,GAAMtxiB,KAChDpH,MAA+B,IAAxB6Z,EAAQ6+hB,GAAM9if,KAAc,4BAA8B,mBACjE5E,iBAAkBn3C,EAAQ6+hB,KAI1CR,EAAgBr+hB,EAIpB,IAFA,IACIq4d,EAAmB,GACdnka,EAFSh7E,OAAOjB,KAAKwmjB,GAAO5mjB,OAEN,EAAGq8E,GAAS,EAAGA,IAC1Cmka,EAAiBz7e,KAAK,CAAE2ygB,WAAYkvC,EAAMvqe,GAAQyvF,OAAQ,CAAEj5H,MAAO,GAAK2K,SAAU,SAEtF,OAAOgjc,GAGXugE,EAAW1hjB,UAAU4njB,cAAgB,WAC5B13iB,MAAM6pC,OAAOj2C,KAAKO,OAAOmvC,QAGrB1vC,KAAKO,OAAOmvC,MAAMvxC,QAAQ,MAAQ,EACvC6B,KAAK+jjB,gBAAkB/jjB,KAAKO,OAAOS,QAAQ49D,aAAe7lD,WAAW/Y,KAAKO,OAAOmvC,OAAS,KAErF1vC,KAAKO,OAAOmvC,MAAMvxC,QAAQ,OAAS,EACxC6B,KAAK+jjB,gBAAkB9tgB,OAAOj2C,KAAKO,OAAOmvC,MAAMviC,WAAWxQ,MAAM,MAAM,IAGvEqD,KAAK+jjB,gBAAkB/jjB,KAAKO,OAAOS,QAAQ49D,YAT3C5+D,KAAK+jjB,gBAAkB9tgB,OAAOj2C,KAAKO,OAAOmvC,OAW9C,IAAIwif,EAA0C,GAA1BlyhB,KAAKs+f,YAAYzhgB,OAAe,IAAiC,GAA1BmD,KAAKs+f,YAAYzhgB,OAAe,IACvFw4e,EAAar1e,KAAKs+f,YAAYzhgB,OAAS,EACtCmD,KAAK+jjB,iBAAmB7ljB,OAAOjB,KAAK+C,KAAKs+f,YAAY,GAAGx8b,YAAYjlE,OAASq1hB,GAAiB,EAEnG,OADA78C,EAAcA,EAAa,GAAKA,EAAa,EAAKA,EAAa,GAGnEuoE,EAAW1hjB,UAAUgljB,sBAAwB,WACzC,IAAI9uc,EAAUpyG,KAAKggjB,gBAAgB5tc,QAAUpyG,KAAKggjB,gBAAgB5tc,QAAUpyG,KAAKk+iB,cAAc9rc,QAiB/F,OAhBAA,EAAQoiC,YAA4Bx4I,IAAnBo2G,EAAQoiC,QAA8BpiC,EAAQoiC,OAC3DpiC,EAAQoiC,QAAUpiC,EAAQ9mF,WAC1BtrB,KAAKkpG,WAAalpG,KAAKO,OAAOyjjB,eAAe5xc,EAAQ9mF,WAErDtrB,KAAKO,OAAOuhhB,kBACZ1va,EAAQ9mF,SAAW8mF,EAAQ9mF,SAAW8mF,EAAQ9mF,SAAWtrB,KAAKO,OAAOuhhB,iBAErExihB,eACAU,KAAKO,OAAOg4B,wBAAyB,EACrCv4B,KAAKO,OAAO24B,cAAc,CAAEglhB,cAAe,CAAE9rc,QAAS,CAAErtF,OAAQqtF,EAAQrtF,OAASqtF,EAAQrtF,OAAS,OAAU,GAC5G/kB,KAAKO,OAAOg4B,wBAAyB,GAGrC65E,EAAQrtF,OAASqtF,EAAQrtF,OAASqtF,EAAQrtF,OAAS,GAEvDqtF,EAAQswa,kBAAwC1mhB,IAAzBo2G,EAAQswa,cAAoCtwa,EAAQswa,aACpEtwa,GAGXwrc,EAAW1hjB,UAAUkljB,qBAAuB,WACxC,IAAItgD,EAAiB,GACrB,GAAI9ggB,KAAKk+iB,cAAcp9C,eAGnB,IAFA,IAAIzxb,EAAS,EACTpyE,EAAOiB,OAAOjB,KAAK+C,KAAKk+iB,cAAcp9C,gBACnCzxb,EAASpyE,EAAKJ,QACjBikgB,EAAe7jgB,EAAKoyE,IAAWrvE,KAAKk+iB,cAAcp9C,eAAe7jgB,EAAKoyE,IACtEA,IAQR,OALIrvE,KAAKg+iB,iBAAiB7/iB,QAAQ6B,KAAKk+iB,cAAc5/C,YAAYnzf,OAAS,QAAgCnP,IAA3B8kgB,EAAe5jc,UAC1F4jc,EAAe5jc,SAAU,GAE7B4jc,EAAet2d,QAAUs2d,EAAet2d,QAAUs2d,EAAet2d,QAAU,GAC3Es2d,EAAemD,aAAenD,EAAemD,aAAenD,EAAemD,aAAe,GACnFnD,GAGX88C,EAAW1hjB,UAAU8kjB,YAAc,WAC/B,IAAID,EAAe,GAsBnB,OArBAA,EAAe/gjB,KAAKggjB,gBAAgBp/D,aAAe5gf,KAAK6gjB,oBAAoB7gjB,KAAKggjB,gBAAgBp/D,cAAgBmgE,GACpGltE,UAAY,WACzBktE,EAAa5kE,qBAAuB4kE,EAAa5kE,qBAAuB4kE,EAAa5kE,qBAAuB,WAC5G4kE,EAAa35Z,MAAQ25Z,EAAa35Z,MAAQ25Z,EAAa35Z,MACnDpnJ,KAAKowE,mBAAmBtH,KAAKrkE,KAAI,SAAUxE,GACvC,OAAOA,EAAKgzE,SAAWhzE,EAAKma,QAC7BzV,KAAK,OACZo8iB,EAAa1rE,WAAaj4e,YAAkB4C,KAAKO,OAAO29iB,cAAct9D,aAAavL,YAAcr1e,KAAK8jjB,gBAAkB9jjB,KAAKO,OAAO29iB,cAAct9D,aAAavL,WAC1Jr1e,KAAKO,OAAO29iB,cAAcxiE,aAAa0Q,kBACxC20D,EAAa1rE,WAAa,GAE1Br1e,KAAKk+iB,cAAc+D,sBAAgE,WAAxCjijB,KAAKk+iB,cAAc5/C,YAAYnzf,MAC1E41iB,EAAa1jE,iBAAmBr9e,KAAKmjjB,wBACrCpC,EAAap4Y,OAAS,CAAEj5H,MAAO,EAAGvkC,KAAM,6BACxC41iB,EAAavmE,eAAiB,CAAE9qc,MAAO,EAAGC,QAAS,MAGnDoxgB,EAAa1jE,iBAAmB,GAChC0jE,EAAap4Y,OAAS,CAAEj5H,MAAO,EAAGvkC,KAAM,aACxC41iB,EAAavmE,eAAiB,CAAE9qc,MAAO,EAAGC,OAAQ,IAE/CoxgB,GAEXnD,EAAW1hjB,UAAUoljB,mBAAqB,WACtC,IAAI5lE,EAAe17e,KAAKk+iB,cAAcxiE,aAItC,OAHAA,EAAag3B,4BAAiE12gB,IAAxC0/e,EAAag3B,wBAC/Ch3B,EAAag3B,uBACjBh3B,EAAa0Q,qBAAmDpwf,IAAjC0/e,EAAa0Q,iBAAuC1Q,EAAa0Q,gBACzF1Q,GAEXkiE,EAAW1hjB,UAAUi7e,cAAgB,SAAUl3e,GAC3C,IAAIg0E,EAAUh0E,EAAKgke,OAAOisC,UAAajwgB,EAAKgke,OAAOisC,UAAUvzgB,MAAM,mBAAmB,GAChFqD,KAAKk+iB,cAAcC,oBAAsBn+iB,KAAKg+iB,iBAAiB7/iB,QAAQ6B,KAAKk+iB,cAAc5/C,YAAYnzf,MAAQ,EAC5GlL,EAAKgke,OAAO7pd,KAAOna,EAAKgke,OAAO7pd,KAAKzd,MAAM,OAAO,GAAKsD,EAAK4a,KAAK+1f,WAC5D3wgB,EAAK4a,KAAK+1f,WAAWj0gB,MAAM,OAAO,GAAKqD,KAAKs+iB,eAAiBt+iB,KAAK+9iB,cAAc/9iB,KAAKs+iB,gBACzFt+iB,KAAK+9iB,cAAc/9iB,KAAKs+iB,gBAAkBt+iB,KAAKs+iB,eAEnDx8e,EAAa7hE,EAAKgke,OAAOnia,WAAa7hE,EAAKgke,OAAOnia,WAAa9hE,KAAKO,OAAOmye,MAAMzO,OAAOhke,EAAK4a,KAAKkpd,aAAajia,WAC/G6J,EAAW7J,EAAaA,EAAW7hE,EAAK4a,KAAKmpd,YAAYrgV,YAAS3nJ,EAClE88E,EAAWhX,EAAaA,EAAW7hE,EAAK4a,KAAKmpd,YAAYpgV,YAAS5nJ,EAClE49T,EAAe55T,KAAK+2E,aAAaF,UAAU72E,KAAK+9iB,cAAc9pe,GAAWj0E,KAAK+9iB,cAAc9pe,GAAWA,GACvGgD,EAAyC,SAAzBj3E,KAAKO,OAAOikB,SAAsB,GAAKxkB,KAAKO,OAAOwjF,UAAUltC,YAAY+iR,EAAa3iP,eACtGwre,GAAkD,SAAzBzijB,KAAKO,OAAOikB,SAAsB,GAAKyyD,EAAgB,IAChFj3E,KAAKO,OAAOwjF,UAAUltC,YAAY,MAAQ,KAAO+iR,EAAa3mP,QAC9DyF,EAAgB14E,KAAKg+iB,iBAAiB7/iB,QAAQ6B,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,MAAQ,EAC5FlL,EAAKsS,KAAK5V,MAAM,OAAO,GAAGA,MAAM,QAAQ,GAAKqD,KAAK+2E,aAAavH,YAAY7D,GAAUmN,GAAUJ,cAC/Fq1I,EAAc/tN,KAAK+2E,aAAauuI,aAAas0G,EAAangT,IAC1D02M,EAAmBpC,GAAeA,EAAY/iN,QAA8D,OAApD+iN,EAAY/iN,OAAOyM,cAAc7U,MAAM,UAC/F5C,KAAKk+iB,cAAchoE,qBAAiD,SAAzBl2e,KAAKO,OAAOikB,SACvDxkB,KAAK+2E,aAAam8E,kBAAkBjzJ,EAAKm3C,MAAM9gC,EAAGsjT,EAAangT,GAAIi/D,GACnE14E,KAAKO,OAAOw2E,aAAam8E,kBAAkBjzJ,EAAKm3C,MAAM9gC,EAAGsjT,EAAangT,IAAIi/D,cAC1EA,EACAure,EAAchkjB,EAAKgke,OAAO7pd,KAAOna,EAAKgke,OAAO7pd,KAAKzd,MAAM,OAAO,GAAKsD,EAAK4a,KAAK+1f,WAAWj0gB,MAAM,OAAO,GACtGunjB,EAAUjkjB,EAAKm3C,MAAM71B,EACzB,GAAIvhB,KAAKO,OAAOuhhB,sBAAwD9lhB,IAArCgE,KAAKO,OAAO4jjB,sBAAsCnkjB,KAAKk+iB,cAAc9rc,QAAQ9mF,SAAU,CACtH,IAAI84hB,EAAYtif,EAAa9hE,KAAKO,OAAO8jjB,eAAe14e,EAAUmN,EAAU,OAAS,GACjFwre,EAAexif,EAAa9hE,KAAKO,OAAO8jjB,eAAe14e,EAAUmN,EAAU,UAAY,GACvFyre,EAAmB,CACnBjse,WAAY4re,EACZ1re,cAAeyre,EACfhte,cAAeA,EACfz6E,MAAO2zN,EACPq0V,WAAY5qP,EAAa3mP,QACzBmxe,UAAWA,EACXE,aAAcA,GAEdh5hB,OAAW,EAGXA,EAFAtrB,KAAKO,OAAO29iB,eAAiBl+iB,KAAKO,OAAO29iB,cAAc9rc,SACvDpyG,KAAKO,OAAO29iB,cAAc9rc,QAAQoiC,QAAUx0I,KAAKO,OAAO29iB,cAAc9rc,QAAQ9mF,SACnEtrB,KAAKykjB,mBAALzkjB,CAAyBukjB,EAAkBvkjB,KAAM,kBAAmBA,KAAKgB,QAAQyY,GAAK,oBAAoB,GAAGvX,UAI7GlC,KAAKO,OAAO4jjB,oBAAZnkjB,CAAiCukjB,EAAkBvkjB,KAAM,kBAAmBA,KAAKgB,QAAQyY,GAAK,mBAAmB,GAAGvX,UAEnIjC,EAAKqrB,SAAWA,OAGhBrrB,EAAKsS,KAAOkwiB,EAAwB,KAAOtyV,GACK,IAA3CnwN,KAAKowE,mBAAmBrW,QAAQl9D,OAAe,GAC3C,SAAWmD,KAAKO,OAAOwjF,UAAUltC,YAAY,UAAY,KAAOotgB,IAC5B,IAAxCjkjB,KAAKowE,mBAAmBtH,KAAKjsE,OAAe,GACxC,SAAWmD,KAAKO,OAAOwjF,UAAUltC,YAAY,OAAS,KAAOqtgB,GACtElkjB,KAAKO,OAAOwpB,QAAQhD,IAA2B9mB,IAGvD29iB,EAAW1hjB,UAAUuojB,kBAAoB,WACrC,OAAOzkjB,KAAKkpG,YAEhB00c,EAAW1hjB,UAAUq2O,OAAS,SAAUtyO,GAMpC,GALAD,KAAKO,OAAOmkjB,eAAgB,EACxB1kjB,KAAKO,OAAOmye,OAAS1ye,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOkyT,mBAChEzyT,KAAKO,OAAOo6c,eAA6C,UAA5B36c,KAAKO,OAAO80c,aACzCr1c,KAAKO,OAAOkyT,kBAAkBkyP,YAE9B3kjB,KAAKk+iB,cAAc+D,qBAAsB,CACzC,IAAI2C,EAAqBh2e,KAAU7Q,QAAQ/9D,KAAKk+iB,cAAc5/C,YAAYnzf,KAAM,CAAC,MAAO,cAAe,oBAAsB,EACzH,8BAAgC,8BAC/B/N,YAAkBg6B,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAKmriB,EAAoB5kjB,KAAKO,OAAOS,WACzFhB,KAAKO,OAAOS,QAAQsC,cAAc,IAAMtD,KAAKO,OAAOS,QAAQyY,GAAKmriB,GAAoBhvhB,aAAa,SAAU,WAG/G,CAAC,MAAO,SAAU,UAAW,WAAY,QAAS,SAASz3B,QAAQ6B,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,OAAS,GAChHnL,KAAKO,OAAO29iB,cAAcwD,yBAA2B1hjB,KAAKO,OAAO29iB,cAAcC,mBAClFn+iB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAgBj2C,MAAMqmB,SAAW,UAEpEr6C,KAAKO,OAAO29iB,cAAcwD,yBAA2B1hjB,KAAKO,OAAO29iB,cAAcC,qBACpFn+iB,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAgBj2C,MAAMqmB,SAAW,OACzEr6C,KAAKO,OAAOS,QAAQsC,cAAc,IAAM2mE,MAAgBj2C,MAAMsmB,UAAY,UAE9Et6C,KAAKO,OAAOmye,MAAM/ic,OAAS,CAAC,MAAO,SAAU,UAAW,WAAY,QAAS,SAASxxC,QAAQ6B,KAAKO,OAAO29iB,cAAc5/C,YAAYnzf,MAAQ,GACxInL,KAAKO,OAAO29iB,cAAcwD,yBAA2B1hjB,KAAKO,OAAO29iB,cAAcC,oBAC/En+iB,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAS,EAAIo5C,OAAOj2C,KAAKO,OAAOmye,MAAM/ic,QAA0D,IAA/C3vC,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAgB,IAC7IuP,MAAM6pC,OAAOj2C,KAAK+/iB,mBAAqB//iB,KAAK+/iB,iBAAiB5yiB,YAAc8oC,OAAOj2C,KAAK+/iB,kBAAoB,GAAG5yiB,YAC5Gf,MAAM6pC,OAAOj2C,KAAK+/iB,oBAAsB//iB,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAS,GACpC,IAA/CmD,KAAKO,OAAO6vE,mBAAmB7T,OAAO1/D,OAAgB,KAAKsQ,WAC7DnN,KAAK+/iB,iBAAiB5yiB,WAAanN,KAAK+/iB,iBAAiB5yiB,WACjEnN,KAAK6kjB,aACL7kjB,KAAKO,OAAOyZ,OAAO+M,IAAqB,IACxC/mB,KAAKO,OAAOwpB,QAAQhD,IAAoB9mB,IACK,WAAxCD,KAAKO,OAAO6vE,mBAAmBjzD,MAAqBnd,KAAKO,OAAOukjB,sBAAiE,UAAxC9kjB,KAAKO,OAAO6vE,mBAAmBjzD,OACzHnd,KAAKO,OAAOwhjB,oBAKpBnE,EAAW1hjB,UAAU2ojB,WAAa,WAC1B7kjB,KAAKO,OAAO85D,MAAQr6D,KAAKO,OAAOmye,OAAS1ye,KAAKO,OAAOs/iB,cACrB,UAA5B7/iB,KAAKO,OAAO80c,aACZr1c,KAAKO,OAAO85D,KAAKr5D,QAAQgzB,MAAMygB,QAAU,GACzCz0C,KAAKO,OAAOmye,MAAM1xe,QAAQgzB,MAAMygB,QAAU,OACtCz0C,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOkyT,mBAC3CzyT,KAAKO,OAAOS,QAAQsC,cAAc,0BAClCtD,KAAKO,OAAOS,QAAQsC,cAAc,2BAClCtD,KAAKO,OAAOS,QAAQsC,cAAc,yBAAyB0wB,MAAMygB,QAAU,GAC3Ez0C,KAAKO,OAAOS,QAAQsC,cAAc,yBAAyB0wB,MAAMygB,QAAU,QAE3Ez0C,KAAKO,OAAO29iB,cAAcC,oBAAsBn+iB,KAAKO,OAAO29iB,cAAcwD,0BAC1E1hjB,KAAKO,OAAOS,QAAQsC,cAAc,iBAAiB0wB,MAAMygB,QAAU,UAIvEz0C,KAAKO,OAAO85D,KAAKr5D,QAAQgzB,MAAMygB,QAAU,OACzCz0C,KAAKO,OAAOmye,MAAM1xe,QAAQgzB,MAAMygB,QAAU,GACtCz0C,KAAKO,OAAOiyT,iBAAmBxyT,KAAKO,OAAOkyT,mBAC3CzyT,KAAKO,OAAOS,QAAQsC,cAAc,0BAClCtD,KAAKO,OAAOS,QAAQsC,cAAc,2BAClCtD,KAAKO,OAAOS,QAAQsC,cAAc,yBAAyB0wB,MAAMygB,QAAU,OAC3Ez0C,KAAKO,OAAOS,QAAQsC,cAAc,yBAAyB0wB,MAAMygB,QAAU,IAE3Ez0C,KAAKO,OAAO29iB,cAAcC,oBAAsBn+iB,KAAKO,OAAO29iB,cAAcwD,0BAC1E1hjB,KAAKO,OAAOS,QAAQsC,cAAc,iBAAiB0wB,MAAMygB,QAAU,OAKnFmpgB,EAAW1hjB,UAAUgmjB,UAAY,WACzBlijB,KAAKmijB,mBAAqBnijB,KAAKmijB,iBAAiBhphB,aAChDn5B,KAAKmijB,iBAAiBhniB,UAM1B,IAJA,IAAI44D,GAAU/zE,KAAKO,OAAOswc,mBAAqB7wc,KAAKO,OAAOm/D,aAAaH,eACjEv/D,KAAKO,OAAO6hjB,mBAAsB,CAAC,SAAU,WAAY,eAAgB,QAC5E,CAAC,SAAU,WAAY,QACvBn4iB,EAAS,GACJrN,EAAI,EAAGA,EAAIm3E,EAAMl3E,OAAQD,IAC9BqN,EAAOrI,KAAK,CACR6X,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,mBAAqBs6D,EAAMn3E,GACxD2V,KAAMvS,KAAKO,OAAOwjF,UAAUltC,YAAYk9B,EAAMn3E,IAC9Cm3E,MAAO,KAGf,IAAIkqR,EAAYj+V,KAAKgrc,eACjBjsW,EAAS,GACT2sN,EAAW,GACf,IAAS9uT,EAAI,EAAGA,EAAIqhW,EAAUphW,OAAQD,IACR,WAAtBqhW,EAAUrhW,GAAGuO,KACb4zF,EAAOn9F,KAAK,CAAE6X,GAAIzZ,KAAKgB,QAAQyY,GAAK,eAAiBwkV,EAAUrhW,GAAGI,IAAKuV,KAAM0rV,EAAUrhW,GAAGJ,QAG1FkvT,EAAS9pT,KAAK,CAAE6X,GAAIzZ,KAAKgB,QAAQyY,GAAK,iBAAmBwkV,EAAUrhW,GAAGI,IAAKuV,KAAM0rV,EAAUrhW,GAAGJ,QAGlGuiG,EAAOliG,OAAS,IAChBoN,EAAO,GAAG8pE,MAAQgrB,GAElB2sN,EAAS7uT,OAAS,IAClBoN,EAAO,GAAG8pE,MAAQ23O,GAEtB,IASIx9E,EATAP,EAAc,CACdz3I,SAAUl2F,KAAKO,OAAOS,QAAQyY,GAAK,qBACnCs6D,MAAO9pE,EACP08B,UAAW3mC,KAAKO,OAAOomC,UACvBmnM,WAAY9tO,KAAK+kjB,cAAc5ojB,KAAK6D,MACpCo3B,OAAQp3B,KAAKgljB,gBAAgB7ojB,KAAK6D,MAClC+c,OAAQ/c,KAAKO,OAAOwc,QAExB/c,KAAKmijB,iBAAmB,IAAI33G,KAAY78N,GAEpCv2M,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,qBAAsBzZ,KAAKO,OAAOS,UACxEktO,EAAc92M,aAAO,IAAMp3B,KAAKO,OAAOS,QAAQyY,GAAK,qBAAsBzZ,KAAKO,OAAOS,UAC1EoB,UAAY,IAGxB8rO,EAAc/sO,YAAc,KAAM,CAC9BsY,GAAIzZ,KAAKO,OAAOS,QAAQyY,GAAK,uBAEjCzZ,KAAKO,OAAOS,QAAQgB,YAAYksO,IAEpCluO,KAAKmijB,iBAAiBj0hB,kBAAmB,EACzCluB,KAAKmijB,iBAAiBp7gB,SAASmnM,IAEnC0vU,EAAW1hjB,UAAU6ojB,cAAgB,SAAU9kjB,GACvCA,EAAK8zE,MAAM,IAAM9zE,EAAK8zE,MAAM,GAAGxhE,OAASvS,KAAKO,OAAOwjF,UAAUltC,YAAY,WAC1E52C,EAAK8zE,MAAM,GAAGA,OAAwC,IAA/B9zE,EAAK8zE,MAAM,GAAGA,MAAMl3E,QAC3CmD,KAAKmijB,iBAAiBh7P,YAAY,CAACnnT,KAAKO,OAAOwjF,UAAUltC,YAAY,YAAY,GAEjF52C,EAAK8zE,MAAM,IAAM9zE,EAAK8zE,MAAM,GAAGxhE,OAASvS,KAAKO,OAAOwjF,UAAUltC,YAAY,aAC1E52C,EAAK8zE,MAAM,GAAGA,OAAwC,IAA/B9zE,EAAK8zE,MAAM,GAAGA,MAAMl3E,QAC3CmD,KAAKmijB,iBAAiBh7P,YAAY,CAACnnT,KAAKO,OAAOwjF,UAAUltC,YAAY,cAAc,IAG3F+mgB,EAAW1hjB,UAAU8uc,aAAe,WAWhC,IAVA,IAAIr/X,EAAW3rE,KAAK8+N,WAAWn7E,OAC3BipT,EAAW,GACXp9X,EAAcxvE,KAAK+2E,aAAavH,YAChCy1e,EAAW,GACX1nO,EAAa/tQ,EAAY7D,GAAU3rE,KAAK8+N,WAAWl7E,QAEnD1qE,GAAU1J,EAAY7D,GAAU,GAAG0H,YAAc7D,EAAY7D,GAAU,GAAGmO,SAC1EtK,EAAY7D,GAAU,GAAGuN,WAAQl9E,EACjCs4T,EAAkC,SAAzBt0T,KAAKO,OAAOikB,SAAsB+4T,EAAWjlQ,WAAWnrE,WAAWxQ,MAAM,SAChF4gV,EAAWjlQ,WAAWnrE,WAAWxQ,MAAMqD,KAAK+2E,aAAaxF,kBAAkBuD,iBAC1EtF,EAAY7D,GAAU,IAAI,CAE7B,GADA4xQ,EAAa/tQ,EAAY7D,GAAU,GACZ,IAAlB2oP,EAAOz3T,QAAkBy3T,EAAOn2T,QAAQo/U,EAAW7kQ,cAAcvrE,cAAiBmnT,EAAOz3T,OAAS,EAAK,CACpG0gV,EAAWzjQ,WAAayjQ,EAAWlqQ,YAAc4xe,EAAS9mjB,QAAQo/U,EAAWrkQ,OAAS,IACrFA,EAAQA,GAASqkQ,EAAWrkQ,MAAmB,IAAVA,GAAoC,IAArBqkQ,EAAWrkQ,SAC1DqkQ,EAAWvjQ,WAAaujQ,EAAWzjQ,SAQrC8yX,EAAShrc,KAAK,CACV5E,IAAK2uE,EACLxgE,KAAM,WACN3O,MAAO+gV,EAAW7kQ,gBAVtBk0X,EAAShrc,KAAK,CACV5E,IAAK2uE,EACLxgE,KAAM,SACN3O,MAAO+gV,EAAW7kQ,gBAU1Buse,EAASrjjB,KAAK27U,EAAWrkQ,OACzBA,EAAQA,EAASA,EAAQ,EAAMqkQ,EAAWrkQ,MAAQ,GAEtD,IAAI1+D,EAAQ85S,EAAOn2T,QAAQo/U,EAAW7kQ,cAAcvrE,YACpDmnT,EAAOx6S,OAAOU,EAAO,GAEA,IAArB+iU,EAAWrkQ,OAAeqkQ,EAAWzjQ,WAAayjQ,EAAWlqQ,aAC7D6F,OAAQl9E,EACRipjB,EAAW,IAEft5e,IAEJ,OAAOihY,GAEXgxG,EAAW1hjB,UAAU8ojB,gBAAkB,SAAU/kjB,GAC7C,IAAIuvE,EAAwC,SAAzBxvE,KAAKO,OAAOikB,SAC3BxkB,KAAKO,OAAOu2E,iBAAiBtH,YAAcxvE,KAAKO,OAAOw2E,aAAavH,YACpEvlE,EAAUhK,EAAKe,QAAQyY,GAAI9c,MAAM,oBAAoB,GACzD,GAA2D,IAAvDsD,EAAKe,QAAQyY,GAAGtb,QAAQ6B,KAAKgB,QAAQyY,GAAK,SAAgB,CAC1D,IAAItO,EAAOlL,EAAKe,QAAQyY,GAAG9c,MAAMqD,KAAKgB,QAAQyY,GAAK,SAAS,GAAGtb,QAAQ,WAAa,EAAI,cAAgB,gBACpGwtE,EAAW11B,OAAOh2C,EAAKe,QAAQyY,GAAG9c,MAAMqD,KAAKgB,QAAQyY,GAAKtO,EAAO,KAAK,IACtEoyU,EAAa/tQ,EAAY7D,GAAU,GACnC0zJ,EAAkC,SAAzBr/N,KAAKO,OAAOikB,SAAsB+4T,EAAW7kQ,cACrD6kQ,EAAWtlQ,WAAaslQ,EAAWtlQ,WAAW9qE,WAAaowU,EAAW7kQ,cAAcvrE,WACrFoF,EAAOgrU,EAAW7kQ,cAAgB6kQ,EAAW7kQ,cAAcvrE,WAAakyN,EACxEpsJ,EAAWsqQ,EAAWzjQ,WAAayjQ,EAAWlqQ,YAC5CkqQ,EAAWvjQ,UAAY,MAAQ,OAASznE,EAAQA,EAClD2+T,EAAmC,SAAzBlxU,KAAKO,OAAOikB,SACtBxkB,KAAK+2E,aAAai0P,WAAWuS,EAAW3jQ,cAAW59E,EACnDq4N,EAAY68G,EAAUA,EAAQE,gBAAkBmM,EAAW7jQ,UAAU26I,UAAUlnN,WAC/EgvD,EAAmB,CACnBqa,UAAW+mQ,EAAW7jQ,UAAU3tC,KAChCmtC,MAAOqkQ,EAAWrkQ,MAClBY,SAAUyjQ,EAAWzjQ,SACrBu6I,UAAWA,EACXj6M,KAAMilN,EACN9sN,KAAM0gE,EACNtH,SAAUA,EACVmN,SAAU,EACVkB,UAAWujQ,EAAWvjQ,UACtB+F,KAAMw9P,GAEmB,SAAzBv9U,KAAKO,OAAOikB,SACZxkB,KAAKO,OAAOw2N,aAAQ/6N,EAAWmgE,GAG/Bn8D,KAAK+2N,QAAQ,CAAE56J,iBAAkBA,QAGrB,iBAAXlyD,EACLjK,KAAKO,OAAO6hjB,mBAAmB7hF,oBAAoB/wZ,EAAYxvE,KAAK8+N,WAAWn7E,QAAQ3jJ,KAAK8+N,WAAWl7E,QAAS5jJ,KAAK8+N,WAAWn7E,OAAQ3jJ,KAAK8+N,WAAWn7E,QAExI,SAAX15I,GACLjK,KAAKmijB,iBAAiB9/iB,SAG9Bu7iB,EAAW1hjB,UAAU6jjB,eAAiB,WAClC,IAAIpwgB,EACAu1gB,EACJ,GAAI9njB,YAAkB4C,KAAKO,OAAO60c,qBAC9Bzla,EAAS,WAER,CACD,IAAIw1gB,EAAYnljB,KAAKO,OAAOs/iB,YAAc,EAAI,EAC9ClwgB,GAAU3vC,KAAKO,OAAO60c,oBAAsB+vG,GAAWh4iB,WACvD+3iB,EAAelljB,KAAKO,OAAO60c,oBAAsB+vG,EAwBrD,OAtBK/njB,YAAkB4C,KAAKO,OAAO60c,qBAoB/Bzla,EAAS,OAnBL3vC,KAAKO,OAAOs/iB,aAAe7/iB,KAAKO,OAAOiyT,gBACvC7iR,GAAUu1gB,GAAgBlljB,KAAKO,OAAOS,QAAQsC,cAAc,oBACxDtD,KAAKO,OAAOS,QAAQsC,cAAc,oBAAoB69I,aAAe,KACpEnhJ,KAAKO,OAAOS,QAAQsC,cAAc,yBAC/BtD,KAAKO,OAAOS,QAAQsC,cAAc,yBAAyB69I,aAAe,KAAKh0I,WAElFnN,KAAKO,OAAOs/iB,YACjBlwgB,GAAUu1gB,GAAgBlljB,KAAKO,OAAOS,QAAQsC,cAAc,oBACxDtD,KAAKO,OAAOS,QAAQsC,cAAc,oBAAoB69I,aAAe,KAAKh0I,WAEzEnN,KAAKO,OAAOiyT,gBACjB7iR,GAAUu1gB,GAAgBlljB,KAAKO,OAAOS,QAAQsC,cAAc,yBACxDtD,KAAKO,OAAOS,QAAQsC,cAAc,yBAAyB69I,aAAe,KAAKh0I,YAE7EnN,KAAKO,OAAOmye,OAASv8d,SAASnW,KAAKO,OAAOmye,MAAM/ic,OAAQ,IAAM,KAAQu1gB,EAAe,OAC3Fv1gB,EAAS,OAMVA,GAEXiugB,EAAW1hjB,UAAUyljB,mBAAqB,WACtC,IAAIhygB,EAAS3vC,KAAKO,OAAOS,QAAQ4uC,aAejC,OAdI5vC,KAAKO,OAAOs/iB,aAAe7/iB,KAAKO,OAAOiyT,gBACvC7iR,EAAS3vC,KAAKO,OAAOS,QAAQ4uC,cAAgB5vC,KAAKO,OAAOS,QAAQsC,cAAc,oBAC3EtD,KAAKO,OAAOS,QAAQsC,cAAc,oBAAoB69I,aAAe,KACpEnhJ,KAAKO,OAAOS,QAAQsC,cAAc,yBAC/BtD,KAAKO,OAAOS,QAAQsC,cAAc,yBAAyB69I,aAAe,IAE7EnhJ,KAAKO,OAAOs/iB,YACjBlwgB,EAAS3vC,KAAKO,OAAOS,QAAQ4uC,cAAgB5vC,KAAKO,OAAOS,QAAQsC,cAAc,oBAC3EtD,KAAKO,OAAOS,QAAQsC,cAAc,oBAAoB69I,aAAe,IAEpEnhJ,KAAKO,OAAOiyT,kBACjB7iR,EAAS3vC,KAAKO,OAAOS,QAAQ4uC,cAAgB5vC,KAAKO,OAAOS,QAAQsC,cAAc,yBAC3EtD,KAAKO,OAAOS,QAAQsC,cAAc,yBAAyB69I,aAAe,KAE3ExxG,GAEXiugB,EAAW1hjB,UAAU86e,gBAAkB,SAAU/2e,GACzCD,KAAKk+iB,cAAc+D,sBAAgE,WAAxCjijB,KAAKk+iB,cAAc5/C,YAAYnzf,MACnD,iBAAnBlL,EAAK8rC,KAAK3xB,OACVna,EAAKsS,KAAO,IAGpBvS,KAAKO,OAAOwpB,QAAQhD,IAA6B9mB,IAErD29iB,EAAW1hjB,UAAU4pF,qBAAuB,SAAU7lF,GAClD,IAAI6iB,EAAY,CACZipB,KAAM9rC,EAAK8rC,KACXx5B,KAAMtS,EAAKsS,KACXwtE,KAAO3iF,YAAkB6C,EAAKk8D,uBAAiDngE,EAA7BiE,EAAKk8D,iBAAiB4jB,KACxEh9D,QAAQ,GAEZ/iB,KAAKO,OAAOwpB,QAAQhD,IAA6BjE,IAC5CA,EAAUC,QAAU9iB,EAAKk8D,kBAAoBl8D,EAAKk8D,iBAAiB2d,WAAa75E,EAAKk8D,iBAAiB4jB,KAAK1M,aAC/E,SAAzBrzE,KAAKO,OAAOikB,SACZxkB,KAAKO,OAAOw2N,aAAQ/6N,EAAWiE,EAAKk8D,kBAGpCn8D,KAAK+2N,QAAQ92N,KAMzB29iB,EAAW1hjB,UAAU66N,QAAU,SAAU92N,GACrC,IAAImljB,EAAYnljB,EAAKk8D,iBAEjBwY,EAAa30E,KAAKowE,mBAAmBiB,eAAe,IAAMrxE,KAAKowE,mBAAmBiB,eAAe,GAAGsD,UACpG30E,KAAKowE,mBAAmBiB,eAAe,GAAGsD,UAAY,KACtD6B,EAAY4ue,EAAU5ue,UACtBy3P,EAAcjuU,KAAK+2E,aAAavH,YAAY41e,EAAUz5e,UAAUy5e,EAAUtse,UAC1E0lQ,EAAevQ,EAAYv0P,UAAU26I,UACrC13N,MAAMqD,KAAK+2E,aAAaxF,kBAAkBuD,iBAAiBnwE,KAAKgwE,GAChE0we,GAAa,EACjB,GAAsD,IAAlDrljB,KAAKowE,mBAAmBiB,eAAex0E,OACvCmD,KAAKO,OAAO24B,cAAc,CACtBk3C,mBAAoB,CAAEiB,eAAgB,CAAC,CAAEj3D,KAAMo8D,EAAWzC,MAAO,CAACyqQ,GAAe7pQ,UAAWA,OAC7F,OAEF,CACD,IAAK,IAAIi3O,EAAO,EAAGA,EAAO5rT,KAAKowE,mBAAmBiB,eAAex0E,OAAQ+uT,IAAQ,CAC7E,IAAIpyP,EAAQx5D,KAAKowE,mBAAmBiB,eAAeu6O,GAGnD,GAFA4yB,EAAeA,EAAa7hV,MAAMg4E,GAAWhwE,KAAK60D,EAAMmb,UAAYnb,EAAMmb,UAAYA,GACtFA,EAAYnb,EAAMmb,UAAYnb,EAAMmb,UAAYnb,EAAMmb,UAAYA,EAC9Dnb,EAAMp/C,OAASo8D,EAAnB,CACI6ue,GAAa,EACb,IAAIC,EAAW9rf,EAAMua,MAAM51E,QAAQqgV,GAC/B8mO,GAAY,EACZ9rf,EAAMua,MAAMj6D,OAAOwriB,EAAU,GAG7B9rf,EAAMua,MAAMnyE,KAAK48U,IAOxB6mO,GACDrljB,KAAKowE,mBAAmBiB,eAAezvE,KAAK,CAAEwY,KAAMo8D,EAAWzC,MAAO,CAACyqQ,GAAe7pQ,UAAWA,IAGzG30E,KAAKO,OAAOs8c,mBACZ,IAAIt5X,EAAQvjF,KAERg3N,EAAc,CACdxgJ,UAAWA,EAAW7xC,WAAY65S,EAAc7pQ,UAAWA,EAC3D5oC,KAAM,MACNjG,OAAQs/gB,EAAUpre,UAAY,KAAO,OACrCi0P,YAAaA,GAEbs3O,EAAY,CACZvgP,UAAWhuG,EACXw8O,UAAWl0c,mBAAatD,EAAYunF,EAAMhjF,QAE9CgjF,EAAMhjF,OAAOwpB,QAAQhD,IAAcw+hB,GACnC,IAAIC,EAA4B,CAC5Bp1e,mBAAoBxB,KAAUuB,4BAA4BnwE,KAAKO,OAAO6vE,qBAI1E,GAFApwE,KAAKO,OAAOwpB,QAAQhD,IAAyBy+hB,GAC7CxljB,KAAKO,OAAO24B,cAAc,CAAEk3C,mBAAoBo1e,EAA0Bp1e,qBAAsB,GAC5FmT,EAAMhjF,OAAOqjE,qBACb,GAAItkE,cAAY,CAEZ,IACI8wE,EAAqBtuE,OAAe,SAAEm7c,8BAA8B,CAAC15X,EAAMnT,oBAAqBmT,EAAMnT,oBACtGq1e,EAAY3jjB,OAAe,SAAEm7c,8BAA8B,CAACjmP,GAAcA,GACjEl1N,OAAe,SAAEm7c,8BAA8B,CAACsoG,GAAYA,GACzEhie,EAAMhjF,OAAO68J,eAAeC,kBAAkB,qBAAsB,UAAW,CAAE,mBAAsBjtF,EAAoB,YAAeq1e,IAAa7qiB,MAAK,SAAUC,GAClK0oE,EAAMhjF,OAAO28c,iBAAiBric,EAAM0oE,EAAMhjF,QAC1CgjF,EAAMhjF,OAAOw2E,aAAa1F,eAAiBkS,EAAMnT,mBAAmBiB,eACpEkS,EAAMhjF,OAAOg4B,wBAAyB,EACtCgrD,EAAMhjF,OAAO24B,cAAc,CAAEs2C,YAAa+T,EAAMxM,aAAavH,cAAe,UACrE+T,EAAMhjF,OAAOo4B,YAAY62C,YAChC+T,EAAMhjF,OAAOg4B,wBAAyB,EACtCgrD,EAAMhjF,OAAOmljB,yBAI6B,WAAzCnie,EAAMhjF,OAAO6vE,mBAAmBjzD,KACrComE,EAAMhjF,OAAO88c,UAAU,UAAWrmP,EAAa,KAAM,KAAM,KAAM,KAAM,OAGvEzzI,EAAMxM,aAAa1F,eAAiBkS,EAAMnT,mBAAmBiB,eAC7DkS,EAAMxM,aAAaggJ,QAAQC,QAGe,WAAzCzzI,EAAMhjF,OAAO6vE,mBAAmBjzD,KACrComE,EAAMhjF,OAAO88c,UAAU,UAAWrmP,EAAa,KAAM,KAAM,KAAM,KAAM,MAGvEzzI,EAAMxM,aAAa+yI,iBAAiBvmI,EAAMnT,oBAE9CmT,EAAMhjF,OAAOg4B,wBAAyB,EACtCgrD,EAAMhjF,OAAO24B,cAAc,CAAEs2C,YAAa+T,EAAMxM,aAAavH,cAAe,UAErE+T,EAAMhjF,OAAOo4B,YAAY62C,YAChC+T,EAAMhjF,OAAOg4B,wBAAyB,EACtC,IAAIzV,EAAY,CACZstD,mBAAoBxB,KAAUuB,4BAA4BnwE,KAAKO,OAAO6vE,oBACtEZ,YAAaxvE,KAAKO,OAAOivE,aAE7BxvE,KAAKO,OAAOwpB,QAAQhD,IAAwBjE,GAC5CygE,EAAMxM,aAAavH,YAAc1sD,EAAU0sD,YAC3C+T,EAAMhjF,OAAOmljB,mBAGjB9H,EAAW1hjB,UAAU20U,iBAAmB,SAAU7wO,EAAWglO,GAEzD,IADA,IAAIvrG,GAAU,EACL78N,EAAI,EAAGA,EAAIoD,KAAKowE,mBAAmBiB,eAAex0E,OAAQD,IAC/D,GAAIoD,KAAKowE,mBAAmBiB,eAAez0E,GAAGwd,OAAS4lF,EACnD,IAAK,IAAI73F,EAAI,EAAGA,EAAInI,KAAKowE,mBAAmBiB,eAAez0E,GAAGm3E,MAAMl3E,OAAQsL,IAAK,CAG7E,IAFA,IAAI8tU,EAAaj2U,KAAKowE,mBAAmBiB,eAAez0E,GAAGm3E,MAAM5rE,GAAGxL,MAAMqD,KAAKowE,mBAAmBiB,eAAez0E,GAAG+3E,WAChH0/I,EAAY,GACPxqJ,EAAI,EAAGA,EAAIosQ,EAAWp5U,OAAQgtE,IAC/Bm7P,EAAUn7P,IAAMm7P,EAAUn7P,GAAG6oQ,QAC7Br+G,EAAYA,GAA2B,KAAdA,EAAmB,GAAKr0N,KAAKowE,mBAAmBiB,eAAez0E,GAAG+3E,YAAcqwP,EAAUn7P,GAAG6oQ,MAAMv0U,QAAQ,eAAiB,EAAI,aAAe6mU,EAAUn7P,GAAG6oQ,QAG7L,GAAIr+G,IAAcr0N,KAAKowE,mBAAmBiB,eAAez0E,GAAGm3E,MAAM5rE,GAAI,CAClEsxN,GAAU,EACV,OAKhB,OAAOA,GAEXmkV,EAAW1hjB,UAAUy6C,KAAO,SAAU12C,GAC9BA,EAAKyye,MAAM8I,aACXv7e,EAAKyye,MAAM8I,WAAW8Q,UAAW,GAErCtsf,KAAKO,OAAOwpB,QAAQhD,IAAkB9mB,IAE1C29iB,EAAW1hjB,UAAU47e,QAAU,SAAU73e,GACjCX,gBACAW,EAAKyye,MAAQ1ye,KAAKO,OAAOmye,OAEzB1ye,KAAKg+iB,iBAAiB7/iB,QAAQ6B,KAAKk+iB,cAAc5/C,YAAYnzf,MAAQ,IACrElL,EAAKyye,MAAMkO,aAAavL,WAAaj4e,YAAkB4C,KAAKO,OAAO29iB,cAAct9D,aAAavL,YAAcr1e,KAAK8jjB,gBAAkB9jjB,KAAKO,OAAO29iB,cAAct9D,aAAavL,WACrKr1e,KAAKO,OAAO29iB,cAAcxiE,aAAa0Q,kBACxCnsf,EAAKyye,MAAMkO,aAAavL,WAAaj4e,YAAkB4C,KAAKO,OAAO29iB,cAAct9D,aAAavL,YAAc,EAAIr1e,KAAKO,OAAO29iB,cAAct9D,aAAavL,aAG/Jr1e,KAAKO,OAAOwpB,QAAQhD,IAAqB9mB,IAO7C29iB,EAAW1hjB,UAAUif,QAAU,WACvBnb,KAAKO,QAAUP,KAAKO,OAAO44B,cAG3Bn5B,KAAK+2E,eACL/2E,KAAK+2E,aAAaF,UAAY,GAC9B72E,KAAK+2E,aAAe,IAEpB/2E,KAAKs+f,cACLt+f,KAAKs+f,YAAc,MAEnBt+f,KAAK89iB,oBACL99iB,KAAK89iB,kBAAoB,MAEzB99iB,KAAKk+iB,gBACLl+iB,KAAKk+iB,cAAgB,MAErBl+iB,KAAKowE,qBACLpwE,KAAKowE,mBAAqB,MAE1BpwE,KAAKmijB,mBAAqBnijB,KAAKmijB,iBAAiBhphB,cAChDn5B,KAAKmijB,iBAAiBhniB,UACtBnb,KAAKmijB,iBAAmB,MAExBnijB,KAAKO,QAAUP,KAAKO,OAAOmye,QAAU1ye,KAAKO,OAAOmye,MAAMv5c,cACvDn5B,KAAKO,OAAOmye,MAAMv3d,UAClBnb,KAAKO,OAAOmye,MAAQ,QAMrBkrE,EAtiDqB,IVZhC,SAAW3/d,GAEPA,EAAM6kZ,cAAgB,CAClBtmZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAM8kZ,cAAgB,CAClBvmZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAM+kZ,eAAiB,CACnBxmZ,KAAM,OACN67L,WAAY,MACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMglZ,kBAAoB,CACtBzmZ,KAAM,OACN67L,WAAY,MACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMilZ,mBAAqB,CACvB1mZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMklZ,iBAAmB,CACrB3mZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMmlZ,gBAAkB,CACpB5mZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMqlZ,mBAAqB,CACvB9mZ,KAAM,OACN67L,WAAY,UACZ1iM,MAAO,UACP4lS,UAAW,SACX3lS,WAAY,YAGhBqI,EAAMslZ,eAAiB,CACnB/mZ,KAAM,OACN67L,WAAY,SACZ1iM,MAAO,KACP4lS,UAAW,SACX3lS,WAAY,YAvEpB,CAyEGqI,KAAUA,GAAQ,KW7ErB,IAAI5/C,GAAyC,WACzC,IAAIC,EAAgB,SAAUz2B,EAAGF,GAI7B,OAHA22B,EAAgBpgC,OAAOqgC,gBAClB,CAAEC,UAAW,cAAgBpgC,OAAS,SAAUyJ,EAAGF,GAAKE,EAAE22B,UAAY72B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI8J,KAAK9J,EAAOA,EAAEnI,eAAeiS,KAAI5J,EAAE4J,GAAK9J,EAAE8J,MACpD5J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAAS82B,IAAOz+B,KAAKzC,YAAcsK,EADnCy2B,EAAcz2B,EAAGF,GAEjBE,EAAE3L,UAAkB,OAANyL,EAAazJ,OAAOwgC,OAAO/2B,IAAM82B,EAAGviC,UAAYyL,EAAEzL,UAAW,IAAIuiC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQjgC,EAAK6hC,GAC7E,IAA2Hh3B,EAAvHD,EAAIhJ,UAAU/B,OAAQiiC,EAAIl3B,EAAI,EAAIq1B,EAAkB,OAAT4B,EAAgBA,EAAO3gC,OAAO6gC,yBAAyB9B,EAAQjgC,GAAO6hC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQjgC,EAAK6hC,QACpH,IAAK,IAAIjiC,EAAIgiC,EAAW/hC,OAAS,EAAGD,GAAK,EAAGA,KAASiL,EAAI+2B,EAAWhiC,MAAIkiC,GAAKl3B,EAAI,EAAIC,EAAEi3B,GAAKl3B,EAAI,EAAIC,EAAEo1B,EAAQjgC,EAAK8hC,GAAKj3B,EAAEo1B,EAAQjgC,KAAS8hC,GAChJ,OAAOl3B,EAAI,GAAKk3B,GAAK5gC,OAAOwpB,eAAeuV,EAAQjgC,EAAK8hC,GAAIA,GAO5DI,GAA2B,SAAUC,GAErC,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUa,EAAWC,GAIrBR,GAAW,CACP3B,aAAS,IACVkC,EAAUhjC,UAAW,cAAU,GAClCyiC,GAAW,CACP3B,YAAS,MACVkC,EAAUhjC,UAAW,gBAAY,GACpCyiC,GAAW,CACP3B,YAAS,IACVkC,EAAUhjC,UAAW,aAAS,GAC1BgjC,EAdoB,CAe7BmG,KAKE8xd,GAA8B,SAAUh4d,GAExC,SAASg4d,IACL,OAAkB,OAAXh4d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAU84d,EAAch4d,GAIxBR,GAAW,CACP3B,YAAS,OACVm6d,EAAaj7f,UAAW,aAAS,GACpCyiC,GAAW,CACP3B,YAAS,OACVm6d,EAAaj7f,UAAW,aAAS,GACpCyiC,GAAW,CACP3B,YAAS,MACVm6d,EAAaj7f,UAAW,iBAAa,GACjCi7f,EAduB,CAehC9xd,KAKEy3C,GAAsB,SAAU39C,GAEhC,SAAS29C,IACL,OAAkB,OAAX39C,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA0B/D,OA5BAq+B,GAAUy+C,EAAM39C,GAIhBR,GAAW,CACP3B,YAAS,WACV8/C,EAAK5gF,UAAW,iBAAa,GAChCyiC,GAAW,CACP3B,YAAS,SACV8/C,EAAK5gF,UAAW,YAAQ,GAC3ByiC,GAAW,CACP3B,YAAS,WACV8/C,EAAK5gF,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,YAAS,KACV8/C,EAAK5gF,UAAW,aAAS,GAC5ByiC,GAAW,CACP3B,YAAS,WACV8/C,EAAK5gF,UAAW,qBAAiB,GACpCyiC,GAAW,CACP3B,YAAS,aACV8/C,EAAK5gF,UAAW,kBAAc,GACjCyiC,GAAW,CACP3B,YAAS,IACV8/C,EAAK5gF,UAAW,eAAW,GAC9ByiC,GAAW,CACP3B,YAAS,SACV8/C,EAAK5gF,UAAW,oBAAgB,GAC5B4gF,EA7Be,CA8BxBz3C,KAKEs+b,GAAwB,SAAUxkc,GAElC,SAASwkc,IACL,OAAkB,OAAXxkc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAUslc,EAAQxkc,GAIlBR,GAAW,CACP3B,YAAS,KACV2mc,EAAOzne,UAAW,YAAQ,GAC7ByiC,GAAW,CACP3B,YAAS,KACV2mc,EAAOzne,UAAW,aAAS,GAC9ByiC,GAAW,CACP3B,YAAS,KACV2mc,EAAOzne,UAAW,WAAO,GAC5ByiC,GAAW,CACP3B,YAAS,KACV2mc,EAAOzne,UAAW,cAAU,GACxByne,EAjBiB,CAkB1Bt+b,KAOE+2T,GAAwB,SAAUj9T,GAElC,SAASi9T,IACL,OAAkB,OAAXj9T,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAU+9T,EAAQj9T,GAIlBR,GAAW,CACP3B,YAAS,KACVo/T,EAAOlgW,UAAW,aAAS,GAC9ByiC,GAAW,CACP3B,YAAS,IACVo/T,EAAOlgW,UAAW,aAAS,GACvBkgW,EAXiB,CAY1B/2T,KAKEo+b,GAAwB,SAAUtkc,GAElC,SAASskc,IACL,OAAkB,OAAXtkc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAUolc,EAAQtkc,GAIlBR,GAAW,CACP3B,YAAS,IACVymc,EAAOvne,UAAW,SAAK,GAC1ByiC,GAAW,CACP3B,YAAS,IACVymc,EAAOvne,UAAW,SAAK,GACnBune,EAXiB,CAY1Bp+b,KAOEw+b,GAAyB,SAAU1kc,GAEnC,SAAS0kc,IACL,OAAkB,OAAX1kc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAUwlc,EAAS1kc,GAInBR,GAAW,CACP3B,YAAS,IACV6mc,EAAQ3ne,UAAW,cAAU,GAChCyiC,GAAW,CACP3B,YAAS,IACV6mc,EAAQ3ne,UAAW,aAAS,GACxB2ne,EAXkB,CAY3Bx+b,KAMEq+b,GAA2B,SAAUvkc,GAErC,SAASukc,IACL,OAAkB,OAAXvkc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAUqlc,EAAWvkc,GAIrBR,GAAW,CACPvB,YAAQ,GAAIg/T,KACbsnI,EAAUxne,UAAW,cAAU,GAClCyiC,GAAW,CACP3B,YAAS,gBACV0mc,EAAUxne,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,YAAS,IACV0mc,EAAUxne,UAAW,eAAW,GACnCyiC,GAAW,CACP3B,YAAS,OACV0mc,EAAUxne,UAAW,uBAAmB,GACpCwne,EAjBoB,CAkB7Br+b,KAME0le,GAAmC,SAAU5re,GAE7C,SAAS4re,IACL,OAAkB,OAAX5re,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAU0se,EAAmB5re,GAI7BR,GAAW,CACP3B,aAAS,IACV+te,EAAkB7ugB,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,KACV+te,EAAkB7ugB,UAAW,iBAAa,GAC7CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,KAAMjmC,MAAO,GAAK0sT,KACpC2uK,EAAkB7ugB,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,SACV+te,EAAkB7ugB,UAAW,gBAAY,GACrC6ugB,EAjB4B,CAkBrC1le,KAKEmxd,GAAmC,SAAUr3d,GAE7C,SAASq3d,IACL,OAAkB,OAAXr3d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA4C/D,OA9CAq+B,GAAUm4d,EAAmBr3d,GAI7BR,GAAW,CACP3B,aAAS,IACVw5d,EAAkBt6f,UAAW,eAAW,GAC3CyiC,GAAW,CACP3B,YAAS,OACVw5d,EAAkBt6f,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,gBACVw5d,EAAkBt6f,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,IACVw5d,EAAkBt6f,UAAW,eAAW,GAC3CyiC,GAAW,CACP3B,YAAS,IACVw5d,EAAkBt6f,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,aAAS,IACVw5d,EAAkBt6f,UAAW,sBAAkB,GAClDyiC,GAAW,CACP3B,YAAS,SACVw5d,EAAkBt6f,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,YAAS,IACVw5d,EAAkBt6f,UAAW,UAAM,GACtCyiC,GAAW,CACP3B,YAAS,IACVw5d,EAAkBt6f,UAAW,UAAM,GACtCyiC,GAAW,CACP3B,YAAS,WACVw5d,EAAkBt6f,UAAW,iBAAa,GAC7CyiC,GAAW,CACPvB,YAAQ,CAAEsS,MAAO,KAAMimC,MAAO,MAAQymR,KACvCo6J,EAAkBt6f,UAAW,cAAU,GAC1CyiC,GAAW,CACPvB,YAAQ,CAAE0F,KAAM,EAAGC,MAAO,EAAGC,IAAK,EAAGC,OAAQ,GAAK0gc,KACnD6yB,EAAkBt6f,UAAW,cAAU,GAC1CyiC,GAAW,CACPvB,YAAQ,CAAEo/C,KAAM,OAAQ7G,MAAO,GAAI4lS,UAAW,SAAUljG,WAAY,SAAUziM,WAAY,YAAckH,KACzG05a,EAAkBt6f,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,OACVw5d,EAAkBt6f,UAAW,gBAAY,GACrCs6f,EA/C4B,CAgDrCnxd,KAKEsghB,GAA0C,SAAUxmhB,GAEpD,SAASwmhB,IACL,OAAkB,OAAXxmhB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAiB/D,OAnBAq+B,GAAUsnhB,EAA0BxmhB,GAIpCR,GAAW,CACP3B,YAAS,SACV2ohB,EAAyBzpjB,UAAW,YAAQ,GAC/CyiC,GAAW,CACP3B,YAAS,OACV2ohB,EAAyBzpjB,UAAW,aAAS,GAChDyiC,GAAW,CACP3B,YAAS,IACV2ohB,EAAyBzpjB,UAAW,aAAS,GAChDyiC,GAAW,CACP3B,YAAS,OACV2ohB,EAAyBzpjB,UAAW,cAAU,GACjDyiC,GAAW,CACP3B,YAAS,KACV2ohB,EAAyBzpjB,UAAW,iBAAa,GAC7CypjB,EApBmC,CAqB5CtghB,KAKEughB,GAAqC,SAAUzmhB,GAE/C,SAASymhB,IACL,OAAkB,OAAXzmhB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmC/D,OArCAq+B,GAAUunhB,EAAqBzmhB,GAI/BR,GAAW,CACP3B,aAAS,IACV4ohB,EAAoB1pjB,UAAW,eAAW,GAC7CyiC,GAAW,CACPvB,YAAQ,CAAEsS,MAAO,KAAMimC,MAAO,MAAQymR,KACvCwpN,EAAoB1pjB,UAAW,cAAU,GAC5CyiC,GAAW,CACPvB,YAAQ,CAAEo/C,KAAM,OAAQ7G,MAAO,GAAI4lS,UAAW,SAAUljG,WAAY,SAAUziM,WAAY,YAAckH,KACzG8oe,EAAoB1pjB,UAAW,YAAQ,GAC1CyiC,GAAW,CACP3B,YAAS,gBACV4ohB,EAAoB1pjB,UAAW,YAAQ,GAC1CyiC,GAAW,CACP3B,YAAS,IACV4ohB,EAAoB1pjB,UAAW,aAAS,GAC3CyiC,GAAW,CACP3B,aAAS,IACV4ohB,EAAoB1pjB,UAAW,sBAAkB,GACpDyiC,GAAW,CACP3B,YAAS,YACV4ohB,EAAoB1pjB,UAAW,gBAAY,GAC9CyiC,GAAW,CACP3B,YAAS,IACV4ohB,EAAoB1pjB,UAAW,UAAM,GACxCyiC,GAAW,CACP3B,YAAS,IACV4ohB,EAAoB1pjB,UAAW,UAAM,GACxCyiC,GAAW,CACP3B,YAAS,OACV4ohB,EAAoB1pjB,UAAW,gBAAY,GAC9CyiC,GAAW,CACPvB,YAAQ,GAAIuohB,KACbC,EAAoB1pjB,UAAW,sBAAkB,GAC7C0pjB,EAtC8B,CAuCvCvghB,KAKEoxd,GAAgC,SAAUt3d,GAE1C,SAASs3d,IACL,OAAkB,OAAXt3d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAgC/D,OAlCAq+B,GAAUo4d,EAAgBt3d,GAI1BR,GAAW,CACP3B,aAAS,IACVy5d,EAAev6f,UAAW,eAAW,GACxCyiC,GAAW,CACP3B,YAAS,WACVy5d,EAAev6f,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,KACVy5d,EAAev6f,UAAW,gBAAY,GACzCyiC,GAAW,CACP3B,YAAS,IACVy5d,EAAev6f,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,IACVy5d,EAAev6f,UAAW,cAAU,GACvCyiC,GAAW,CACPvB,YAAQ,CAAEsS,MAAO,EAAGimC,MAAO,MAAQymR,KACpCq6J,EAAev6f,UAAW,cAAU,GACvCyiC,GAAW,CACPvB,YAAQ,CAAE7b,EAAG,EAAGjL,EAAG,GAAKmtd,KACzBgzB,EAAev6f,UAAW,cAAU,GACvCyiC,GAAW,CACP3B,YAAS,OACVy5d,EAAev6f,UAAW,YAAQ,GACrCyiC,GAAW,CACP3B,YAAS,IACVy5d,EAAev6f,UAAW,eAAW,GACxCyiC,GAAW,CACPvB,YAAQ,GAAIo5d,KACbC,EAAev6f,UAAW,iBAAa,GACnCu6f,EAnCyB,CAoClCpxd,KAKE6xd,GAAqC,SAAU/3d,GAE/C,SAAS+3d,IACL,OAAkB,OAAX/3d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAU64d,EAAqB/3d,GAI/BR,GAAW,CACP3B,YAAS,IACVk6d,EAAoBh7f,UAAW,aAAS,GAC3CyiC,GAAW,CACP3B,YAAS,KACVk6d,EAAoBh7f,UAAW,cAAU,GAC5CyiC,GAAW,CACP3B,YAAS,OACVk6d,EAAoBh7f,UAAW,aAAS,GAC3CyiC,GAAW,CACP3B,YAAS,IACVk6d,EAAoBh7f,UAAW,eAAW,GACtCg7f,EAjB8B,CAkBvC7xd,KAME+xd,GAAkC,SAAUj4d,GAE5C,SAASi4d,IACL,OAAkB,OAAXj4d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAyC/D,OA3CAq+B,GAAU+4d,EAAkBj4d,GAI5BR,GAAW,CACP3B,aAAS,IACVo6d,EAAiBl7f,UAAW,eAAW,GAC1CyiC,GAAW,CACP3B,YAAS,UACVo6d,EAAiBl7f,UAAW,YAAQ,GACvCyiC,GAAW,CACP3B,YAAS,SACVo6d,EAAiBl7f,UAAW,iBAAa,GAC5CyiC,GAAW,CACP3B,YAAS,aACVo6d,EAAiBl7f,UAAW,YAAQ,GACvCyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,qBAAiB,GAChDyiC,GAAW,CACP3B,YAAS,OACVo6d,EAAiBl7f,UAAW,aAAS,GACxCyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,aAAS,GACxCyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,uBAAmB,GAClDyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,6BAAyB,GACxDyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,6BAAyB,GACxDyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,+BAA2B,GAC1DyiC,GAAW,CACP3B,YAAS,IACVo6d,EAAiBl7f,UAAW,+BAA2B,GAC1DyiC,GAAW,CACPvB,YAAQ,KAAM85d,KACfE,EAAiBl7f,UAAW,mBAAe,GACvCk7f,EA5C2B,CA6CpC/xd,KAKEwxd,GAA2B,SAAU13d,GAErC,SAAS03d,IACL,OAAkB,OAAX13d,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA+C/D,OAjDAq+B,GAAUw4d,EAAW13d,GAIrBR,GAAW,CACP3B,YAAS,KACV65d,EAAU36f,UAAW,YAAQ,GAChCyiC,GAAW,CACP3B,YAAS,MACV65d,EAAU36f,UAAW,iBAAa,GACrCyiC,GAAW,CACP3B,aAAS,IACV65d,EAAU36f,UAAW,eAAW,GACnCyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,cAAU,GAClCyiC,GAAW,CACP3B,YAAS,WACV65d,EAAU36f,UAAW,YAAQ,GAChCyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,wBAAoB,GAC5CyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,uBAAmB,GAC3CyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,uBAAmB,GAC3CyiC,GAAW,CACPvB,YAAQ,GAAIq5d,KACbI,EAAU36f,UAAW,cAAU,GAClCyiC,GAAW,CACP3B,aAAS,IACV65d,EAAU36f,UAAW,qBAAiB,GACzCyiC,GAAW,CACPvB,YAAQ,GAAI8B,KACb23d,EAAU36f,UAAW,iBAAa,GACrCyiC,GAAW,CACP3B,YAAS,KACV65d,EAAU36f,UAAW,YAAQ,GAChCyiC,GAAW,CACP3B,YAAS,IACV65d,EAAU36f,UAAW,aAAS,GACjCyiC,GAAW,CACP3B,YAAS,OACV65d,EAAU36f,UAAW,iBAAa,GACrCyiC,GAAW,CACP3B,YAAS,eACV65d,EAAU36f,UAAW,mBAAe,GAChC26f,EAlDoB,CAmD7Bxxd,KAKE6+b,GAAoC,SAAU/kc,GAE9C,SAAS+kc,IACL,OAAkB,OAAX/kc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAU6lc,EAAoB/kc,GAI9BR,GAAW,CACP3B,YAAS,OACVknc,EAAmBhoe,UAAW,YAAQ,GACzCyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,cAAejmC,MAAO,GAAK0sT,KAC7C8nI,EAAmBhoe,UAAW,cAAU,GAC3CyiC,GAAW,CACP3B,YAAS,QACVknc,EAAmBhoe,UAAW,YAAQ,GAClCgoe,EAd6B,CAetC7+b,KAKEy+b,GAA8B,SAAU3kc,GAExC,SAAS2kc,IACL,OAAkB,OAAX3kc,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAq+B,GAAUylc,EAAc3kc,GAIxBR,GAAW,CACP3B,YAAS,IACV8mc,EAAa5ne,UAAW,eAAW,GACtCyiC,GAAW,CACP3B,YAAS,IACV8mc,EAAa5ne,UAAW,gBAAY,GACvCyiC,GAAW,CACP3B,YAAS,IACV8mc,EAAa5ne,UAAW,kBAAc,GACzCyiC,GAAW,CACP3B,YAAS,IACV8mc,EAAa5ne,UAAW,mBAAe,GACnC4ne,EAjBuB,CAkBhCz+b,KAKEu0c,GAAkC,SAAUz6c,GAE5C,SAASy6c,IACL,OAAkB,OAAXz6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUu7c,EAAkBz6c,GAI5BR,GAAW,CACP3B,aAAS,IACV48c,EAAiB19e,UAAW,cAAU,GACzCyiC,GAAW,CACP3B,YAAS,OACV48c,EAAiB19e,UAAW,YAAQ,GACvCyiC,GAAW,CACPvB,YAAQ6gD,GAAMilZ,mBAAoBpmZ,KACnC88Z,EAAiB19e,UAAW,iBAAa,GACrC09e,EAd2B,CAepCv0c,KAKEqzc,GAAmC,SAAUv5c,GAE7C,SAASu5c,IACL,OAAkB,OAAXv5c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAuE/D,OAzEAq+B,GAAUq6c,EAAmBv5c,GAI7BR,GAAW,CACP3B,aAAS,IACV07c,EAAkBx8e,UAAW,eAAW,GAC3CyiC,GAAW,CACP3B,aAAS,IACV07c,EAAkBx8e,UAAW,qBAAiB,GACjDyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,WAAO,GACvCyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,YACV07c,EAAkBx8e,UAAW,aAAS,GACzCyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,iBAAa,GAC7CyiC,GAAW,CACP3B,YAAS,SACV07c,EAAkBx8e,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,aAAS,IACV07c,EAAkBx8e,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,mBAAe,GAC/CyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,mBAAe,GAC/CyiC,GAAW,CACP3B,aAAS,IACV07c,EAAkBx8e,UAAW,mBAAe,GAC/CyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,oBAAgB,GAChDyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,kBAAc,GAC9CyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,uBAAmB,GACnDyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,cAAejmC,MAAO,GAAK0sT,KAC7Cs8I,EAAkBx8e,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,KACV07c,EAAkBx8e,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,OACV07c,EAAkBx8e,UAAW,gBAAY,GAC5CyiC,GAAW,CACP3B,YAAS,WACV07c,EAAkBx8e,UAAW,2BAAuB,GACvDyiC,GAAW,CACP3B,YAAS,WACV07c,EAAkBx8e,UAAW,yBAAqB,GACrDyiC,GAAW,CACPvB,YAAQ6gD,GAAMqlZ,mBAAoBxmZ,KACnC47Z,EAAkBx8e,UAAW,iBAAa,GAC7CyiC,GAAW,CACP3B,YAAS,WACV07c,EAAkBx8e,UAAW,cAAU,GAC1CyiC,GAAW,CACP3B,YAAS,IACV07c,EAAkBx8e,UAAW,eAAW,GACpCw8e,EA1E4B,CA2ErCrzc,KAKEmzc,GAA6B,SAAUr5c,GAEvC,SAASq5c,IACL,OAAkB,OAAXr5c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUm6c,EAAar5c,GAIvBR,GAAW,CACP3B,YAAS,KACVw7c,EAAYt8e,UAAW,aAAS,GACnCyiC,GAAW,CACP3B,YAAS,IACVw7c,EAAYt8e,UAAW,aAAS,GACnCyiC,GAAW,CACP3B,YAAS,cACVw7c,EAAYt8e,UAAW,YAAQ,GAC3Bs8e,EAdsB,CAe/Bnzc,KAKEk0c,GAAgC,SAAUp6c,GAE1C,SAASo6c,IACL,OAAkB,OAAXp6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUk7c,EAAgBp6c,GAI1BR,GAAW,CACP3B,YAAS,IACVu8c,EAAer9e,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,KACVu8c,EAAer9e,UAAW,iBAAa,GAC1CyiC,GAAW,CACP3B,YAAS,OACVu8c,EAAer9e,UAAW,aAAS,GAC/Bq9e,EAdyB,CAelCl0c,KAKEm0c,GAAgC,SAAUr6c,GAE1C,SAASq6c,IACL,OAAkB,OAAXr6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUm7c,EAAgBr6c,GAI1BR,GAAW,CACP3B,YAAS,KACVw8c,EAAet9e,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,KACVw8c,EAAet9e,UAAW,iBAAa,GAC1CyiC,GAAW,CACP3B,YAAS,OACVw8c,EAAet9e,UAAW,aAAS,GAC/Bs9e,EAdyB,CAelCn0c,KAKEo0c,GAA0B,SAAUt6c,GAEpC,SAASs6c,IACL,OAAkB,OAAXt6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUo7c,EAAUt6c,GAIpBR,GAAW,CACP3B,YAAS,IACVy8c,EAASv9e,UAAW,aAAS,GAChCyiC,GAAW,CACP3B,YAAS,KACVy8c,EAASv9e,UAAW,iBAAa,GACpCyiC,GAAW,CACP3B,YAAS,OACVy8c,EAASv9e,UAAW,aAAS,GACzBu9e,EAdmB,CAe5Bp0c,KAKEq0c,GAAgC,SAAUv6c,GAE1C,SAASu6c,IACL,OAAkB,OAAXv6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUq7c,EAAgBv6c,GAI1BR,GAAW,CACP3B,YAAS,IACV08c,EAAex9e,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,IACV08c,EAAex9e,UAAW,cAAU,GACvCyiC,GAAW,CACP3B,YAAS,OACV08c,EAAex9e,UAAW,aAAS,GAC/Bw9e,EAdyB,CAelCr0c,KAKEs0c,GAAgC,SAAUx6c,GAE1C,SAASw6c,IACL,OAAkB,OAAXx6c,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAW/D,OAbAq+B,GAAUs7c,EAAgBx6c,GAI1BR,GAAW,CACP3B,YAAS,KACV28c,EAAez9e,UAAW,aAAS,GACtCyiC,GAAW,CACP3B,YAAS,IACV28c,EAAez9e,UAAW,cAAU,GACvCyiC,GAAW,CACP3B,YAAS,OACV28c,EAAez9e,UAAW,aAAS,GAC/By9e,EAdyB,CAelCt0c,KAKE+5c,GAA+B,SAAUjgd,GAEzC,SAASigd,IACL,OAAkB,OAAXjgd,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAU+gd,EAAejgd,GAIzBR,GAAW,CACP3B,YAAS,IACVoid,EAAcljf,UAAW,SAAK,GACjCyiC,GAAW,CACP3B,YAAS,IACVoid,EAAcljf,UAAW,SAAK,GAC1Bkjf,EAXwB,CAYjC/5c,KAimBEwghB,IA3lBwC,WACxC,SAASC,KAETnnhB,GAAW,CACP3B,YAAS,KACV8ohB,EAAuB5pjB,UAAW,aAAS,GAC9CyiC,GAAW,CACP3B,YAAS,IACV8ohB,EAAuB5pjB,UAAW,aAAS,GARN,GAeG,WAC3C,SAAS6pjB,KAETpnhB,GAAW,CACP3B,aAAS,IACV+ohB,EAA0B7pjB,UAAW,cAAU,GAClDyiC,GAAW,CACP3B,YAAS,MACV+ohB,EAA0B7pjB,UAAW,gBAAY,GACpDyiC,GAAW,CACP3B,YAAS,IACV+ohB,EAA0B7pjB,UAAW,aAAS,GAXN,GAkBF,WACzC,SAAS8pjB,KAETrnhB,GAAW,CACP3B,YAAS,OACVgphB,EAAwB9pjB,UAAW,aAAS,GAC/CyiC,GAAW,CACP3B,YAAS,OACVgphB,EAAwB9pjB,UAAW,aAAS,GAC/CyiC,GAAW,CACP3B,YAAS,MACVgphB,EAAwB9pjB,UAAW,iBAAa,GAXV,GAkBO,WAChD,SAAS+pjB,KAETtnhB,GAAW,CACP3B,aAAS,IACViphB,EAA+B/pjB,UAAW,eAAW,GACxDyiC,GAAW,CACP3B,YAAS,WACViphB,EAA+B/pjB,UAAW,aAAS,GACtDyiC,GAAW,CACP3B,YAAS,KACViphB,EAA+B/pjB,UAAW,gBAAY,GACzDyiC,GAAW,CACP3B,YAAS,IACViphB,EAA+B/pjB,UAAW,cAAU,GACvDyiC,GAAW,CACP3B,YAAS,IACViphB,EAA+B/pjB,UAAW,aAAS,GACtDyiC,GAAW,CACPvB,YAAQ,CAAEsS,MAAO,EAAGimC,MAAO,MAAQymR,KACpC6pN,EAA+B/pjB,UAAW,cAAU,GACvDyiC,GAAW,CACP3B,YAAS,OACViphB,EAA+B/pjB,UAAW,YAAQ,GACrDyiC,GAAW,CACP3B,YAAS,IACViphB,EAA+B/pjB,UAAW,eAAW,GACxDyiC,GAAW,CACPvB,YAAQ,GAAIo5d,KACbyvD,EAA+B/pjB,UAAW,iBAAa,GA7BV,GAoCD,WAC/C,SAASgqjB,KAETvnhB,GAAW,CACP3B,aAAS,IACVkphB,EAA8BhqjB,UAAW,eAAW,GACvDyiC,GAAW,CACP3B,YAAS,UACVkphB,EAA8BhqjB,UAAW,YAAQ,GACpDyiC,GAAW,CACP3B,YAAS,SACVkphB,EAA8BhqjB,UAAW,iBAAa,GACzDyiC,GAAW,CACP3B,YAAS,aACVkphB,EAA8BhqjB,UAAW,YAAQ,GACpDyiC,GAAW,CACP3B,YAAS,OACVkphB,EAA8BhqjB,UAAW,aAAS,GACrDyiC,GAAW,CACP3B,YAAS,IACVkphB,EAA8BhqjB,UAAW,qBAAiB,GAC7DyiC,GAAW,CACP3B,YAAS,IACVkphB,EAA8BhqjB,UAAW,aAAS,GACrDyiC,GAAW,CACP3B,YAAS,IACVkphB,EAA8BhqjB,UAAW,uBAAmB,GAC/DyiC,GAAW,CACP3B,YAAS,IACVkphB,EAA8BhqjB,UAAW,6BAAyB,GACrEyiC,GAAW,CACP3B,YAAS,IACVkphB,EAA8BhqjB,UAAW,6BAAyB,GACrEyiC,GAAW,CACP3B,YAAS,IACVkphB,EAA8BhqjB,UAAW,+BAA2B,GACvEyiC,GAAW,CACP3B,YAAS,IACVkphB,EAA8BhqjB,UAAW,+BAA2B,GACvEyiC,GAAW,CACPvB,YAAQ,KAAM85d,KACfgvD,EAA8BhqjB,UAAW,mBAAe,GAzCZ,GAgDJ,WAC3C,SAASiqjB,KAETxnhB,GAAW,CACP3B,YAAS,KACVmphB,EAA0BjqjB,UAAW,YAAQ,GAChDyiC,GAAW,CACP3B,YAAS,WACVmphB,EAA0BjqjB,UAAW,YAAQ,GAChDyiC,GAAW,CACP3B,YAAS,IACVmphB,EAA0BjqjB,UAAW,cAAU,GAClDyiC,GAAW,CACP3B,YAAS,IACVmphB,EAA0BjqjB,UAAW,uBAAmB,GAC3DyiC,GAAW,CACP3B,YAAS,IACVmphB,EAA0BjqjB,UAAW,wBAAoB,GAC5DyiC,GAAW,CACP3B,YAAS,IACVmphB,EAA0BjqjB,UAAW,uBAAmB,GAC3DyiC,GAAW,CACPvB,YAAQ,GAAI8B,KACbinhB,EAA0BjqjB,UAAW,iBAAa,GACrDyiC,GAAW,CACPvB,YAAQ,GAAIq5d,KACb0vD,EAA0BjqjB,UAAW,cAAU,GAClDyiC,GAAW,CACP3B,aAAS,IACVmphB,EAA0BjqjB,UAAW,qBAAiB,GACzDyiC,GAAW,CACP3B,YAAS,OACVmphB,EAA0BjqjB,UAAW,iBAAa,GACrDyiC,GAAW,CACP3B,YAAS,KACVmphB,EAA0BjqjB,UAAW,YAAQ,GAChDyiC,GAAW,CACP3B,YAAS,IACVmphB,EAA0BjqjB,UAAW,aAAS,GACjDyiC,GAAW,CACP3B,YAAS,eACVmphB,EAA0BjqjB,UAAW,mBAAe,GAzCZ,GAgDS,WACpD,SAASkqjB,KAETznhB,GAAW,CACP3B,YAAS,OACVophB,EAAmClqjB,UAAW,YAAQ,GACzDyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,cAAejmC,MAAO,GAAK0sT,KAC7CgqN,EAAmClqjB,UAAW,cAAU,GAC3DyiC,GAAW,CACP3B,YAAS,QACVophB,EAAmClqjB,UAAW,YAAQ,GAXL,GAkBN,WAC9C,SAASmqjB,KAET1nhB,GAAW,CACP3B,YAAS,IACVqphB,EAA6BnqjB,UAAW,eAAW,GACtDyiC,GAAW,CACP3B,YAAS,IACVqphB,EAA6BnqjB,UAAW,gBAAY,GACvDyiC,GAAW,CACP3B,YAAS,IACVqphB,EAA6BnqjB,UAAW,kBAAc,GACzDyiC,GAAW,CACP3B,YAAS,IACVqphB,EAA6BnqjB,UAAW,mBAAe,GAdZ,GAqBV,WACpC,SAASoqjB,KAET3nhB,GAAW,CACP3B,YAAS,WACVsphB,EAAmBpqjB,UAAW,iBAAa,GAC9CyiC,GAAW,CACP3B,YAAS,SACVsphB,EAAmBpqjB,UAAW,YAAQ,GACzCyiC,GAAW,CACP3B,YAAS,WACVsphB,EAAmBpqjB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,YAAS,KACVsphB,EAAmBpqjB,UAAW,aAAS,GAC1CyiC,GAAW,CACP3B,YAAS,WACVsphB,EAAmBpqjB,UAAW,qBAAiB,GAClDyiC,GAAW,CACP3B,YAAS,aACVsphB,EAAmBpqjB,UAAW,kBAAc,GAC/CyiC,GAAW,CACP3B,YAAS,IACVsphB,EAAmBpqjB,UAAW,eAAW,GAC5CyiC,GAAW,CACP3B,YAAS,SACVsphB,EAAmBpqjB,UAAW,oBAAgB,GA1Bb,GAiCY,WAChD,SAASqqjB,KAET5nhB,GAAW,CACP3B,aAAS,IACVuphB,EAA+BrqjB,UAAW,cAAU,GACvDyiC,GAAW,CACP3B,YAAS,OACVuphB,EAA+BrqjB,UAAW,YAAQ,GACrDyiC,GAAW,CACPvB,YAAQ6gD,GAAMilZ,mBAAoBpmZ,KACnCype,EAA+BrqjB,UAAW,iBAAa,GAXV,GAkBF,WAC9C,SAASsqjB,KAET7nhB,GAAW,CACP3B,YAAS,IACVwphB,EAA6BtqjB,UAAW,aAAS,GACpDyiC,GAAW,CACP3B,YAAS,IACVwphB,EAA6BtqjB,UAAW,cAAU,GACrDyiC,GAAW,CACP3B,YAAS,OACVwphB,EAA6BtqjB,UAAW,aAAS,GAXN,GAkBA,WAC9C,SAASuqjB,KAET9nhB,GAAW,CACP3B,YAAS,IACVyphB,EAA6BvqjB,UAAW,aAAS,GACpDyiC,GAAW,CACP3B,YAAS,KACVyphB,EAA6BvqjB,UAAW,iBAAa,GACxDyiC,GAAW,CACP3B,YAAS,OACVyphB,EAA6BvqjB,UAAW,aAAS,GAXN,GAkBA,WAC9C,SAASwqjB,KAET/nhB,GAAW,CACP3B,YAAS,KACV0phB,EAA6BxqjB,UAAW,aAAS,GACpDyiC,GAAW,CACP3B,YAAS,IACV0phB,EAA6BxqjB,UAAW,cAAU,GACrDyiC,GAAW,CACP3B,YAAS,OACV0phB,EAA6BxqjB,UAAW,aAAS,GAXN,GAkBA,WAC9C,SAASyqjB,KAEThohB,GAAW,CACP3B,YAAS,KACV2phB,EAA6BzqjB,UAAW,aAAS,GACpDyiC,GAAW,CACP3B,YAAS,KACV2phB,EAA6BzqjB,UAAW,iBAAa,GACxDyiC,GAAW,CACP3B,YAAS,OACV2phB,EAA6BzqjB,UAAW,aAAS,GAXN,GAkBN,WACxC,SAAS0qjB,KAETjohB,GAAW,CACP3B,YAAS,IACV4phB,EAAuB1qjB,UAAW,aAAS,GAC9CyiC,GAAW,CACP3B,YAAS,KACV4phB,EAAuB1qjB,UAAW,iBAAa,GAClDyiC,GAAW,CACP3B,YAAS,OACV4phB,EAAuB1qjB,UAAW,aAAS,GAXN,GAkBS,WACjD,SAAS2qjB,KAETlohB,GAAW,CACP3B,aAAS,IACV6phB,EAAgC3qjB,UAAW,eAAW,GACzDyiC,GAAW,CACP3B,aAAS,IACV6phB,EAAgC3qjB,UAAW,qBAAiB,GAC/DyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,aAAS,GACvDyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,WAAO,GACrDyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,YAAQ,GACtDyiC,GAAW,CACP3B,YAAS,YACV6phB,EAAgC3qjB,UAAW,aAAS,GACvDyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,iBAAa,GAC3DyiC,GAAW,CACP3B,YAAS,SACV6phB,EAAgC3qjB,UAAW,gBAAY,GAC1DyiC,GAAW,CACP3B,aAAS,IACV6phB,EAAgC3qjB,UAAW,gBAAY,GAC1DyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,mBAAe,GAC7DyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,mBAAe,GAC7DyiC,GAAW,CACP3B,aAAS,IACV6phB,EAAgC3qjB,UAAW,mBAAe,GAC7DyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,oBAAgB,GAC9DyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,kBAAc,GAC5DyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,uBAAmB,GACjEyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,cAAejmC,MAAO,GAAK0sT,KAC7CyqN,EAAgC3qjB,UAAW,cAAU,GACxDyiC,GAAW,CACP3B,YAAS,KACV6phB,EAAgC3qjB,UAAW,YAAQ,GACtDyiC,GAAW,CACP3B,YAAS,OACV6phB,EAAgC3qjB,UAAW,gBAAY,GAC1DyiC,GAAW,CACP3B,YAAS,WACV6phB,EAAgC3qjB,UAAW,2BAAuB,GACrEyiC,GAAW,CACP3B,YAAS,WACV6phB,EAAgC3qjB,UAAW,yBAAqB,GACnEyiC,GAAW,CACPvB,YAAQ6gD,GAAMqlZ,mBAAoBxmZ,KACnC+pe,EAAgC3qjB,UAAW,iBAAa,GAC3DyiC,GAAW,CACP3B,YAAS,WACV6phB,EAAgC3qjB,UAAW,cAAU,GACxDyiC,GAAW,CACP3B,YAAS,IACV6phB,EAAgC3qjB,UAAW,eAAW,GAvER,GA8EN,WAC3C,SAAS4qjB,KAETnohB,GAAW,CACP3B,YAAS,KACV8phB,EAA0B5qjB,UAAW,aAAS,GACjDyiC,GAAW,CACP3B,YAAS,IACV8phB,EAA0B5qjB,UAAW,aAAS,GACjDyiC,GAAW,CACP3B,YAAS,cACV8phB,EAA0B5qjB,UAAW,YAAQ,GAXL,GAmBE,WAC7C,SAAS6qjB,KAETpohB,GAAW,CACPvB,YAAQ,GAAIg/T,KACb2qN,EAA4B7qjB,UAAW,cAAU,GACpDyiC,GAAW,CACP3B,YAAS,gBACV+phB,EAA4B7qjB,UAAW,kBAAc,GACxDyiC,GAAW,CACP3B,YAAS,IACV+phB,EAA4B7qjB,UAAW,eAAW,GAXR,GAmBQ,WACrD,SAAS8qjB,KAETrohB,GAAW,CACP3B,aAAS,IACVgqhB,EAAoC9qjB,UAAW,cAAU,GAC5DyiC,GAAW,CACP3B,YAAS,KACVgqhB,EAAoC9qjB,UAAW,iBAAa,GAC/DyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,KAAMjmC,MAAO,GAAK0sT,KACpC4qN,EAAoC9qjB,UAAW,YAAQ,GAC1DyiC,GAAW,CACP3B,YAAS,SACVgqhB,EAAoC9qjB,UAAW,gBAAY,GAdT,GAsBH,WAClD,SAAS+qjB,KAETtohB,GAAW,CACP3B,aAAS,IACViqhB,EAAiC/qjB,UAAW,eAAW,GAC1DyiC,GAAW,CACP3B,YAAS,OACViqhB,EAAiC/qjB,UAAW,cAAU,GACzDyiC,GAAW,CACP3B,YAAS,OACViqhB,EAAiC/qjB,UAAW,aAAS,GACxDyiC,GAAW,CACPvB,YAAQ,CAAE7b,EAAG,EAAGjL,EAAG,GAAK8oe,KACzB6nE,EAAiC/qjB,UAAW,gBAAY,GAC3DyiC,GAAW,CACP3B,YAAS,SACViqhB,EAAiC/qjB,UAAW,gBAAY,GAC3DyiC,GAAW,CACP3B,YAAS,IACViqhB,EAAiC/qjB,UAAW,eAAW,GAC1DyiC,GAAW,CACP3B,YAAS,WACViqhB,EAAiC/qjB,UAAW,iBAAa,GAC5DyiC,GAAW,CACPvB,YAAQ6gD,GAAMmlZ,gBAAiBtmZ,KAChCmqe,EAAiC/qjB,UAAW,iBAAa,GAC5DyiC,GAAW,CACP3B,YAAS,KACViqhB,EAAiC/qjB,UAAW,mBAAe,GAC9DyiC,GAAW,CACP3B,YAAS,KACViqhB,EAAiC/qjB,UAAW,kBAAc,GAC7DyiC,GAAW,CACPvB,YAAQ,GAAIg/T,KACb6qN,EAAiC/qjB,UAAW,cAAU,GACzDyiC,GAAW,CACPvB,YAAQ,CAAE0F,KAAM,EAAGC,MAAO,EAAGC,IAAK,EAAGC,OAAQ,GAAK0gc,KACnDsjF,EAAiC/qjB,UAAW,cAAU,GACzDyiC,GAAW,CACP3B,YAAS,IACViqhB,EAAiC/qjB,UAAW,oBAAgB,GAC/DyiC,GAAW,CACP3B,YAAS,gBACViqhB,EAAiC/qjB,UAAW,kBAAc,GAC7DyiC,GAAW,CACP3B,YAAS,IACViqhB,EAAiC/qjB,UAAW,eAAW,GAC1DyiC,GAAW,CACP3B,aAAS,IACViqhB,EAAiC/qjB,UAAW,wBAAoB,GACnEyiC,GAAW,CACP3B,YAAS,OACViqhB,EAAiC/qjB,UAAW,mBAAe,GAC9DyiC,GAAW,CACP3B,YAAS,IACViqhB,EAAiC/qjB,UAAW,gBAAY,GAxDT,GAgEP,WAC3C,SAASgrjB,KAETvohB,GAAW,CACP3B,YAAS,IACVkqhB,EAA0BhrjB,UAAW,cAAU,GAClDyiC,GAAW,CACP3B,YAAS,IACVkqhB,EAA0BhrjB,UAAW,aAAS,GARN,GAeD,WAC1C,SAASirjB,KAETxohB,GAAW,CACP3B,YAAS,KACVmqhB,EAAyBjrjB,UAAW,YAAQ,GAC/CyiC,GAAW,CACP3B,YAAS,KACVmqhB,EAAyBjrjB,UAAW,aAAS,GAChDyiC,GAAW,CACP3B,YAAS,KACVmqhB,EAAyBjrjB,UAAW,WAAO,GAC9CyiC,GAAW,CACP3B,YAAS,KACVmqhB,EAAyBjrjB,UAAW,cAAU,GAdP,GAuBb,SAAUijC,GAEvC,SAAS0mhB,IACL,OAAkB,OAAX1mhB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmI/D,OArIAq+B,GAAUwnhB,EAAa1mhB,GAIvBR,GAAW,CACP3B,YAAS,OACV6ohB,EAAY3pjB,UAAW,YAAQ,GAClCyiC,GAAW,CACP3B,YAAS,OACV6ohB,EAAY3pjB,UAAW,gBAAY,GACtCyiC,GAAW,CACP3B,aAAS,IACV6ohB,EAAY3pjB,UAAW,eAAW,GACrCyiC,GAAW,CACP3B,aAAS,IACV6ohB,EAAY3pjB,UAAW,kBAAc,GACxCyiC,GAAW,CACP3B,YAAS,OACV6ohB,EAAY3pjB,UAAW,oBAAgB,GAC1CyiC,GAAW,CACP3B,YAAS,OACV6ohB,EAAY3pjB,UAAW,mBAAe,GACzCyiC,GAAW,CACP3B,YAAS,QACV6ohB,EAAY3pjB,UAAW,qBAAiB,GAC3CyiC,GAAW,CACP3B,YAAS,IACV6ohB,EAAY3pjB,UAAW,gBAAY,GACtCyiC,GAAW,CACP3B,YAAS,UACV6ohB,EAAY3pjB,UAAW,iBAAa,GACvCyiC,GAAW,CACP3B,YAAS,OACV6ohB,EAAY3pjB,UAAW,eAAW,GACrCyiC,GAAW,CACP3B,YAAS,QACV6ohB,EAAY3pjB,UAAW,kBAAc,GACxCyiC,GAAW,CACP3B,YAAS,QACV6ohB,EAAY3pjB,UAAW,iBAAa,GACvCyiC,GAAW,CACP3B,YAAS,WACV6ohB,EAAY3pjB,UAAW,mBAAe,GACzCyiC,GAAW,CACP3B,YAAS,KACV6ohB,EAAY3pjB,UAAW,gBAAY,GACtCyiC,GAAW,CACP3B,YAAS,IACV6ohB,EAAY3pjB,UAAW,kBAAc,GACxCyiC,GAAW,CACPvB,YAAQ,KAAM8B,KACf2mhB,EAAY3pjB,UAAW,iBAAa,GACvCyiC,GAAW,CACPvB,YAAQ,KAAMwohB,KACfC,EAAY3pjB,UAAW,iBAAa,GACvCyiC,GAAW,CACP3B,YAAS,MACV6ohB,EAAY3pjB,UAAW,iBAAa,GACvCyiC,GAAW,CACP3B,YAAS,IACV6ohB,EAAY3pjB,UAAW,aAAS,GACnCyiC,GAAW,CACP3B,YAAS,MACV6ohB,EAAY3pjB,UAAW,mBAAe,GACzCyiC,GAAW,CACP3B,YAAS,SACV6ohB,EAAY3pjB,UAAW,gBAAY,GACtCyiC,GAAW,CACP3B,aAAS,IACV6ohB,EAAY3pjB,UAAW,gBAAY,GACtCyiC,GAAW,CACPtB,YAAW,GAAI85d,KAChB0uD,EAAY3pjB,UAAW,gBAAY,GACtCyiC,GAAW,CACP3B,YAAS,KACV6ohB,EAAY3pjB,UAAW,qBAAiB,GAC3CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,cAAejmC,MAAO,GAAK0sT,KAC7CypN,EAAY3pjB,UAAW,cAAU,GACpCyiC,GAAW,CACP3B,aAAS,IACV6ohB,EAAY3pjB,UAAW,eAAW,GACrCyiC,GAAW,CACP3B,YAAS,IACV6ohB,EAAY3pjB,UAAW,eAAW,GACrCyiC,GAAW,CACP3B,YAAS,SACV6ohB,EAAY3pjB,UAAW,YAAQ,GAClCyiC,GAAW,CACPvB,YAAQ,KAAMq5d,KACfovD,EAAY3pjB,UAAW,cAAU,GACpCyiC,GAAW,CACPvB,YAAQ,KAAMg6d,KACfyuD,EAAY3pjB,UAAW,gBAAY,GACtCyiC,GAAW,CACP3B,aAAS,IACV6ohB,EAAY3pjB,UAAW,qBAAiB,GAC3CyiC,GAAW,CACPtB,YAAW,GAAIw5d,KAChBgvD,EAAY3pjB,UAAW,kBAAc,GACxCyiC,GAAW,CACP3B,YAAS,KACV6ohB,EAAY3pjB,UAAW,0BAAsB,GAChDyiC,GAAW,CACP3B,YAAS,eACV6ohB,EAAY3pjB,UAAW,mBAAe,GACzCyiC,GAAW,CACP3B,YAAS,IACV6ohB,EAAY3pjB,UAAW,iBAAa,GACvCyiC,GAAW,CACP3B,YAAS,OACV6ohB,EAAY3pjB,UAAW,sBAAkB,GAC5CyiC,GAAW,CACP3B,YAAS,YACV6ohB,EAAY3pjB,UAAW,kBAAc,GACxCyiC,GAAW,CACP3B,YAAS,IACV6ohB,EAAY3pjB,UAAW,iBAAa,GACvCyiC,GAAW,CACP3B,YAAS,KACV6ohB,EAAY3pjB,UAAW,6BAAyB,GACnDyiC,GAAW,CACP3B,YAAS,OACV6ohB,EAAY3pjB,UAAW,mBAAe,GACzCyiC,GAAW,CACPvB,YAAQ,KAAM8mc,KACf2hF,EAAY3pjB,UAAW,0BAAsB,GAChDyiC,GAAW,CACPvB,YAAQ,KAAM0mc,KACf+hF,EAAY3pjB,UAAW,oBAAgB,GAC1CyiC,GAAW,CACP3B,YAAS,IACV6ohB,EAAY3pjB,UAAW,qBAAiB,GACpC2pjB,EAtIsB,CAuI/BxghB,MAOE+hhB,GAA2B,SAAUjohB,GAErC,SAASiohB,IACL,OAAkB,OAAXjohB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAwG/D,OA1GAq+B,GAAU+ohB,EAAWjohB,GAIrBR,GAAW,CACP3B,YAAS,aACVoqhB,EAAUlrjB,UAAW,4BAAwB,GAChDyiC,GAAW,CACPvB,YAAQ6gD,GAAM6kZ,cAAehmZ,KAC9Bsqe,EAAUlrjB,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,YAAS,KACVoqhB,EAAUlrjB,UAAW,aAAS,GACjCyiC,GAAW,CACP3B,YAAS,OACVoqhB,EAAUlrjB,UAAW,kBAAc,GACtCyiC,GAAW,CACPvB,YAAQ,GAAIw8c,KACbwtE,EAAUlrjB,UAAW,wBAAoB,GAC5CyiC,GAAW,CACP3B,YAAS,KACVoqhB,EAAUlrjB,UAAW,mBAAe,GACvCyiC,GAAW,CACPvB,YAAQ6gD,GAAM8kZ,cAAejmZ,KAC9Bsqe,EAAUlrjB,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,aAAS,IACVoqhB,EAAUlrjB,UAAW,iBAAa,GACrCyiC,GAAW,CACP3B,YAAS,IACVoqhB,EAAUlrjB,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,YAAS,SACVoqhB,EAAUlrjB,UAAW,0BAAsB,GAC9CyiC,GAAW,CACP3B,YAAS,iBACVoqhB,EAAUlrjB,UAAW,sBAAkB,GAC1CyiC,GAAW,CACP3B,YAAS,YACVoqhB,EAAUlrjB,UAAW,oBAAgB,GACxCyiC,GAAW,CACP3B,aAAS,IACVoqhB,EAAUlrjB,UAAW,uBAAmB,GAC3CyiC,GAAW,CACP3B,aAAS,IACVoqhB,EAAUlrjB,UAAW,eAAW,GACnCyiC,GAAW,CACP3B,YAAS,YACVoqhB,EAAUlrjB,UAAW,qBAAiB,GACzCyiC,GAAW,CACP3B,YAAS,IACVoqhB,EAAUlrjB,UAAW,qBAAiB,GACzCyiC,GAAW,CACP3B,YAAS,IACVoqhB,EAAUlrjB,UAAW,6BAAyB,GACjDyiC,GAAW,CACP3B,YAAS,OACVoqhB,EAAUlrjB,UAAW,eAAW,GACnCyiC,GAAW,CACP3B,YAAS,OACVoqhB,EAAUlrjB,UAAW,eAAW,GACnCyiC,GAAW,CACP3B,YAAS,KACVoqhB,EAAUlrjB,UAAW,yBAAqB,GAC7CyiC,GAAW,CACP3B,YAAS,OACVoqhB,EAAUlrjB,UAAW,gBAAY,GACpCyiC,GAAW,CACPvB,YAAQ,GAAIs8c,KACb0tE,EAAUlrjB,UAAW,sBAAkB,GAC1CyiC,GAAW,CACP3B,aAAS,IACVoqhB,EAAUlrjB,UAAW,kBAAc,GACtCyiC,GAAW,CACPvB,YAAQ,GAAIm8c,KACb6tE,EAAUlrjB,UAAW,sBAAkB,GAC1CyiC,GAAW,CACPvB,YAAQ,GAAIu8c,KACbytE,EAAUlrjB,UAAW,sBAAkB,GAC1CyiC,GAAW,CACPvB,YAAQ,GAAIq8c,KACb2tE,EAAUlrjB,UAAW,iBAAa,GACrCyiC,GAAW,CACPvB,YAAQ,GAAIo8c,KACb4tE,EAAUlrjB,UAAW,sBAAkB,GAC1CyiC,GAAW,CACP3B,aAAS,IACVoqhB,EAAUlrjB,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,YAAS,OACVoqhB,EAAUlrjB,UAAW,mBAAe,GACvCyiC,GAAW,CACP3B,YAAS,IACVoqhB,EAAUlrjB,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,YAAS,MACVoqhB,EAAUlrjB,UAAW,mBAAe,GACvCyiC,GAAW,CACPtB,YAAW,GAAIq7c,KAChB0uE,EAAUlrjB,UAAW,kBAAc,GACtCyiC,GAAW,CACP3B,YAAS,IACVoqhB,EAAUlrjB,UAAW,gBAAY,GACpCyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,KAAMjmC,MAAO,EAAGvkC,KAAM,aAAeqte,KACvD4uE,EAAUlrjB,UAAW,cAAU,GAC3BkrjB,EA3GoB,CA4G7B/hhB,KAMEgihB,GAAsC,SAAUlohB,GAEhD,SAASkohB,IACL,OAAkB,OAAXlohB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAmC/D,OArCAq+B,GAAUgphB,EAAsBlohB,GAIhCR,GAAW,CACP3B,aAAS,IACVqqhB,EAAqBnrjB,UAAW,oBAAgB,GACnDyiC,GAAW,CACP3B,aAAS,IACVqqhB,EAAqBnrjB,UAAW,cAAU,GAC7CyiC,GAAW,CACP3B,YAAS,OACVqqhB,EAAqBnrjB,UAAW,YAAQ,GAC3CyiC,GAAW,CACP3B,aAAS,IACVqqhB,EAAqBnrjB,UAAW,cAAU,GAC7CyiC,GAAW,CACP3B,YAAS,MACVqqhB,EAAqBnrjB,UAAW,eAAW,GAC9CyiC,GAAW,CACP3B,YAAS,OACVqqhB,EAAqBnrjB,UAAW,cAAU,GAC7CyiC,GAAW,CACP3B,YAAS,OACVqqhB,EAAqBnrjB,UAAW,cAAU,GAC7CyiC,GAAW,CACPvB,YAAQ6gD,GAAMklZ,iBAAkBrmZ,KACjCuqe,EAAqBnrjB,UAAW,iBAAa,GAChDyiC,GAAW,CACP3B,YAAS,OACVqqhB,EAAqBnrjB,UAAW,gBAAY,GAC/CyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,IAAO0sT,KAC3CirN,EAAqBnrjB,UAAW,cAAU,GAC7CyiC,GAAW,CACP3B,aAAS,IACVqqhB,EAAqBnrjB,UAAW,uBAAmB,GAC/CmrjB,EAtC+B,CAuCxChihB,KAKEiihB,GAAqC,SAAUnohB,GAE/C,SAASmohB,IACL,OAAkB,OAAXnohB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAq+B,GAAUiphB,EAAqBnohB,GAI/BR,GAAW,CACP3B,YAAS,QACVsqhB,EAAoBprjB,UAAW,SAAK,GACvCyiC,GAAW,CACP3B,YAAS,QACVsqhB,EAAoBprjB,UAAW,SAAK,GAChCorjB,EAX8B,CAYvCjihB,KAMEkihB,GAAmC,SAAUpohB,GAE7C,SAASoohB,IACL,OAAkB,OAAXpohB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA0B/D,OA5BAq+B,GAAUkphB,EAAmBpohB,GAI7BR,GAAW,CACP3B,aAAS,IACVuqhB,EAAkBrrjB,UAAW,0BAAsB,GACtDyiC,GAAW,CACP3B,aAAS,IACVuqhB,EAAkBrrjB,UAAW,8BAA0B,GAC1DyiC,GAAW,CACP3B,aAAS,IACVuqhB,EAAkBrrjB,UAAW,6BAAyB,GACzDyiC,GAAW,CACP3B,aAAS,IACVuqhB,EAAkBrrjB,UAAW,+BAA2B,GAC3DyiC,GAAW,CACP3B,YAAS,OACVuqhB,EAAkBrrjB,UAAW,YAAQ,GACxCyiC,GAAW,CACP3B,YAAS,CAAC,OAAQ,SAAU,UAAW,MAAO,WAC/CuqhB,EAAkBrrjB,UAAW,oBAAgB,GAChDyiC,GAAW,CACP3B,aAAS,IACVuqhB,EAAkBrrjB,UAAW,uBAAmB,GACnDyiC,GAAW,CACP3B,aAAS,IACVuqhB,EAAkBrrjB,UAAW,iBAAa,GACtCqrjB,EA7B4B,CA8BrClihB,KAoDEmihB,GAA+B,SAAUrohB,GAEzC,SAASqohB,IACL,OAAkB,OAAXrohB,GAAmBA,EAAO/iC,MAAM4D,KAAMpB,YAAcoB,KA2M/D,OA7MAq+B,GAAUmphB,EAAerohB,GAIzBR,GAAW,CACPvB,YAAQ,GAAIyohB,KACb2B,EAActrjB,UAAW,mBAAe,GAC3CyiC,GAAW,CACPvB,YAAQ,GAAIgqhB,KACbI,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACPvB,YAAQ,GAAIgqhB,KACbI,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACP3B,YAAS,KACVwqhB,EAActrjB,UAAW,aAAS,GACrCyiC,GAAW,CACP3B,YAAS,KACVwqhB,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACP3B,YAAS,MACVwqhB,EAActrjB,UAAW,uBAAmB,GAC/CyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,uBAAmB,GAC/CyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,0BAAsB,GAClDyiC,GAAW,CACP3B,YAAS,YACVwqhB,EAActrjB,UAAW,wBAAoB,GAChDyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,+BAA2B,GACvDyiC,GAAW,CACPvB,YAAQ6gD,GAAM+kZ,eAAgBlmZ,KAC/B0qe,EAActrjB,UAAW,kBAAc,GAC1CyiC,GAAW,CACP3B,YAAS,KACVwqhB,EAActrjB,UAAW,aAAS,GACrCyiC,GAAW,CACPvB,YAAQ6gD,GAAMglZ,kBAAmBnmZ,KAClC0qe,EAActrjB,UAAW,qBAAiB,GAC7CyiC,GAAW,CACP3B,YAAS,KACVwqhB,EAActrjB,UAAW,gBAAY,GACxCyiC,GAAW,CACPvB,YAAQ,CAAEu4C,MAAO,UAAWjmC,MAAO,GAAK0sT,KACzCorN,EAActrjB,UAAW,cAAU,GACtCyiC,GAAW,CACPvB,YAAQ,GAAIumc,KACb6jF,EAActrjB,UAAW,cAAU,GACtCyiC,GAAW,CACPvB,YAAQ,CAAEurI,OAAQ,CAAEhzF,MAAO,KAAMjmC,MAAO,IAAOihK,WAAY,eAAiB+yR,KAC7E8jF,EAActrjB,UAAW,iBAAa,GACzCyiC,GAAW,CACP3B,YAAS,OACVwqhB,EAActrjB,UAAW,kBAAc,GAC1CyiC,GAAW,CACP3B,YAAS,aACVwqhB,EAActrjB,UAAW,aAAS,GACrCyiC,GAAW,CACP3B,YAAS,KACVwqhB,EAActrjB,UAAW,gBAAY,GACxCyiC,GAAW,CACPvB,YAAQ,GAAI2te,KACby8C,EAActrjB,UAAW,iBAAa,GACzCyiC,GAAW,CACPvB,YAAQ,GAAIiqhB,KACbG,EAActrjB,UAAW,eAAW,GACvCyiC,GAAW,CACPvB,YAAQ,KAAMkqhB,KACfE,EAActrjB,UAAW,iBAAa,GACzCyiC,GAAW,CACPvB,YAAQ,GAAImqhB,KACbC,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACP3B,eACDwqhB,EAActrjB,UAAW,sBAAkB,GAC9CyiC,GAAW,CACP3B,YAAS,SACVwqhB,EAActrjB,UAAW,qBAAiB,GAC7CyiC,GAAW,CACP3B,YAAS,SACVwqhB,EAActrjB,UAAW,iCAA6B,GACzDyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,yBAAqB,GACjDyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,+BAA2B,GACvDyiC,GAAW,CACP3B,YAAS,SACVwqhB,EAActrjB,UAAW,qBAAiB,GAC7CyiC,GAAW,CACP3B,YAAS,SACVwqhB,EAActrjB,UAAW,wBAAoB,GAChDyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,qBAAiB,GAC7CyiC,GAAW,CACPtB,YAAW,GAAIwmc,KAChB2jF,EAActrjB,UAAW,2BAAuB,GACnDyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,uBAAmB,GAC/CyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,4BAAwB,GACpDyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACP3B,YAAS,IACVwqhB,EAActrjB,UAAW,gBAAY,GACxCyiC,GAAW,CACP3B,YAAS,OACVwqhB,EAActrjB,UAAW,mBAAe,GAC3CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,eAAW,GACvCyiC,GAAW,CACP3B,aAAS,IACVwqhB,EAActrjB,UAAW,iCAA6B,GACzDyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,cAAU,GACtCyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,mBAAe,GAC3CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,yBAAqB,GACjDyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,YAAQ,GACpCyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,kBAAc,GAC1CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,4BAAwB,GACpDyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,mBAAe,GAC3CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,qBAAiB,GAC7CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,uBAAmB,GAC/CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,4BAAwB,GACpDyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,uBAAmB,GAC/CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,sBAAkB,GAC9CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,iBAAa,GACzCyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,kBAAc,GAC1CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,sBAAkB,GAC9CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,uBAAmB,GAC/CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,mBAAe,GAC3CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,oBAAgB,GAC5CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,qBAAiB,GAC7CyiC,GAAW,CACPp/B,eACDiojB,EAActrjB,UAAW,iBAAa,GACzCyiC,GAAW,CACP3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","file":"static/js/2.eefe90e9.chunk.js","sourcesContent":["var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @return {any}\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n * @param {Function} handler - callback function to be triggered.\n * @return {Function}\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @return {any}\n * @private\n */\nexport function getValue(nameSpace, obj) {\n /* tslint:disable no-any */\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @return {void}\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} params - String value to the get the inner object\n * @return {void}\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[key];\n}\n/**\n * Check weather the given argument is only object.\n * @param {any} obj - Object which is need to check.\n * @return {boolean}\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @return {any}\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @return {void}\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[deepmerge]) && (temrObj[deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[key]) || Array.isArray(tempProp[key]))) {\n extend(temrObj[key], temrObj[key], tempProp[key], true);\n }\n else {\n temrObj[key] = tempProp[key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @return {Object}\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!arguments_1[i]) {\n return \"continue\";\n }\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[key];\n var copy = obj1[key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[key] = extend([], clone, copy, deep);\n }\n }\n else {\n result[key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n * @param {Object} value - To check the object is null or undefined\n * @return {boolean}\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n * @param {Object} value - To check the object is undefined\n * @return {boolean}\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n * @param {string} definedName - To concatenate the unique id to provided name\n * @return {string}\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @return {Function}\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n // tslint:disable-next-line\n return function () {\n var _this = this;\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n// Added since lint ignored after added '//tslint:disable-next-line' \n/* tslint:disable:no-any */\n/**\n * To convert the object to string for query url\n * @param {Object} data\n * @returns string\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n * @param {T[]} value- Specifies the T type array to be checked.\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n * @param{Element} - Specifies the child element to compare with parent.\n * @param{Element} - Specifies the parent element.\n * @return boolean\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n * @param{string} - Specifies the error message to be thrown.\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n * @param{Element} element - Specifies the print content element.\n * @param{Window} printWindow - Specifies the print window.\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[l]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[i].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // tslint:disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n * @param {number|string} value\n * @return {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|%|px|vh|vm|vmax|vmin|em/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n * @return {HTMLElement} result\n * @param {HTMLElement | object} element\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {\n return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n * @param {string | HTMLElement} element\n * @param {any} component\n * @return {Object} inst\n * @private\n */\n// tslint:disable-next-line\nexport function getInstance(element, component) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n for (var _i = 0, _a = elem[instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n * @param {string | HTMLElement} element\n * @param {Object} instance\n * @return {void}\n * @private\n */\nexport function addInstance(element, instance) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n elem[instances].push(instance);\n }\n else {\n elem[instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n * @return {any}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function uniqueID() {\n // tslint:disable-next-line:no-any\n if ((typeof window) === 'undefined') {\n return;\n }\n // tslint:disable-next-line:no-any\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[i];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar latnRegex = /^[0-9]*$/;\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object}\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object}\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object}\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n /* tslint:disable no-any */\n if (!res.hasOwnProperty(prop[key])) {\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp}\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }).join('|');\n return new RegExp(regexStr, 'g');\n };\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n * @param {string} val\n * @returns {string}\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[i] + '|';\n }\n else {\n ret += val[i];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string}\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n * @param {Object} obj\n * @returns {NumericObject}\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n ret.numberParseRegex = new RegExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n * @param {Object} curObj\n * @param {Object} numberSystem\n * @param {boolean} isNumber\n * @returns {NumberMapper}\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\nexport var HijriParser;\n(function (HijriParser) {\n /* tslint:disable */\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167,\n 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759,\n 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348,\n 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939,\n 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530,\n 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120,\n 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302,\n 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893,\n 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483,\n 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074,\n 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665,\n 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254,\n 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845,\n 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436,\n 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617,\n 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208,\n 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798,\n 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389,\n 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980,\n 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570,\n 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161,\n 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751,\n 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932,\n 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523,\n 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114,\n 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704,\n 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295,\n 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885,\n 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476,\n 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066,\n 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248,\n 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838,\n 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429,\n 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019,\n 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611,\n 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200,\n 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792,\n 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383,\n 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564,\n 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154,\n 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745,\n 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335,\n 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926,\n 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517,\n 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107,\n 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698,\n 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879,\n 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469,\n 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061,\n 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651,\n 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242,\n 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832,\n 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423,\n 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014,\n 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195,\n 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785,\n 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376,\n 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967,\n 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557,\n 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148,\n 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738,\n 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330,\n 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510,\n 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101,\n 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691,\n 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282,\n 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872,\n 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464,\n 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053,\n 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645,\n 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826,\n 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416,\n 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007,\n 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598,\n 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188,\n 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779,\n 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369,\n 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960,\n 79990];\n /* tslint:enable */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[i] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which date will format.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n /* tslint:disable no-any */\n var charKey = datePartMatcher[char];\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n * @param {Date} value\n * @param {FormatOptions} options\n */\n // tslint:disable-next-line:max-func-body-length\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[desig];\n break;\n case 'G':\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/\\'/g, '');\n break;\n case 'z':\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n ret += options.numMapper.numberSymbols[timeSeparator];\n /* tslint:enable no-any */\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n * @param {number} tVal\n * @param {string} pattern\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits',\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} object- Specifies the global cldr data collection.\n * @return Function.\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* tslint:disable no-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n * @param {string} pattern\n * @returns {GroupDetails}\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n * @param {number} val1\n * @param {number} val2\n * @param {boolean} checkbothExist\n * @param {boolean} isFraction\n * @returns {boolean}\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n * @param {number} val\n * @param {string} text\n * @param {boolean} isFraction\n * @returns {void}\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n * @param {number} value\n * @param {base.GenericFormatOptions} fOptions\n * @param {CommonOptions} dOptions\n * @returns {string}\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n * @param {string} val\n * @param {number} level1\n * @param {string} sep\n * @param {string} decimalSymbol\n * @param {number} level2\n * @returns {string}\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processFraction = function (value, min, max) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n return value + '';\n };\n /**\n * Returns integer processed numeric string\n * @param {string} value\n * @param {number} min\n * @returns {string}\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar number = 'numbers';\nvar defNoSystem = 'defaultNumberingSystem';\nvar noSystem = 'numberingSystem';\nvar standalone = 'stand-alone';\nvar curWeekDay = 'curWeekDay';\nvar latnRegex = /^[0-9]*$/;\nvar abbreviateRegex = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|ccc/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which string date will be parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n // tslint:disable-next-line:max-func-body-length\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n // tslint:disable-next-line\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // tslint:disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[i];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // tslint:disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // tslint:disable\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n /* tslint:disable no-any */\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n /* tslint:disable no-any */\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // tslint:disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n /* tslint:disable no-any */\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n var iString = str.replace(/\\'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n * @param {DateParts} options\n * @param {Date} value\n * @returns {Date}\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[key];\n if (isUndefined(tValue) && key === \"day\") {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n * @param {string} value\n * @param {ParseOptions} parseOptions\n * @param {NumericOptions} num\n * @returns {DateParts}\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n var nRegx = num.numericRegex;\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[prop] = val;\n }\n }\n else {\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n matchString = prop === 'designator' && /^(AM|PM)$/i.test(matchString) ? matchString.toUpperCase() : matchString;\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n * @param {string} value\n * @param {NumericOptions} option\n * @returns {number}\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n * @param {string} hourFormat\n * @param {base.TimeZoneOptions} tZone\n * @param {string} nRegex\n * @returns {string}\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var result;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n * @param {boolean} flag\n * @param {string} val1\n * @param {string} val2\n * @param {NumericOptions} num\n * @returns {number}\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n/* tslint:enable */\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar formatRegex = /(^[ncpa]{1})([0-1]?[0-9]|20)?$/i;\nvar parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nvar groupRegex = /,/g;\nvar latnDecimalRegex = /^[0-9]*(\\.[0-9]+)?$/;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} - Specific the format in which number will parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // tslint:disable-next-line:no-any\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n * @param {string} value\n * @param {NumericParts} options\n * @param {NumericOptions} numOptions\n * @returns {number}\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n ;\n /**\n * To attach handler for given property in current context.\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[property], handler)) {\n this.boundedEvents[property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n * @param {string} eventName - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[i].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[i].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} args - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @return {void}\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[index];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // tslint:disable-next-line:no-any\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n */\n Observer.prototype.notExist = function (prop) {\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date}\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number}\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n * @returns {number}\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void}\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n * @param {Object[]} obj Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void}\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void}\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n /* tslint:disable no-any */\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\nexport var IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n \"1-alt-variant\": \"Common Era\"\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': \"{1} 'at' {0}\",\n 'long': \"{1} 'at' {0}\",\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y',\n },\n }\n },\n \"islamic\": {\n \"months\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"1\": \"Muh.\",\n \"2\": \"Saf.\",\n \"3\": \"Rab. I\",\n \"4\": \"Rab. II\",\n \"5\": \"Jum. I\",\n \"6\": \"Jum. II\",\n \"7\": \"Raj.\",\n \"8\": \"Sha.\",\n \"9\": \"Ram.\",\n \"10\": \"Shaw.\",\n \"11\": \"Dhuʻl-Q.\",\n \"12\": \"Dhuʻl-H.\"\n },\n \"narrow\": {\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\",\n \"10\": \"10\",\n \"11\": \"11\",\n \"12\": \"12\"\n },\n \"wide\": {\n \"1\": \"Muharram\",\n \"2\": \"Safar\",\n \"3\": \"Rabiʻ I\",\n \"4\": \"Rabiʻ II\",\n \"5\": \"Jumada I\",\n \"6\": \"Jumada II\",\n \"7\": \"Rajab\",\n \"8\": \"Shaʻban\",\n \"9\": \"Ramadan\",\n \"10\": \"Shawwal\",\n \"11\": \"Dhuʻl-Qiʻdah\",\n \"12\": \"Dhuʻl-Hijjah\"\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n \"eras\": {\n \"eraNames\": {\n \"0\": \"AH\"\n },\n \"eraAbbr\": {\n \"0\": \"AH\"\n },\n \"eraNarrow\": {\n \"0\": \"AH\"\n }\n },\n \"dateFormats\": {\n \"full\": \"EEEE, MMMM d, y G\",\n \"long\": \"MMMM d, y G\",\n \"medium\": \"MMM d, y G\",\n \"short\": \"M/d/y GGGGG\"\n },\n \"timeFormats\": {\n \"full\": \"h:mm:ss a zzzz\",\n \"long\": \"h:mm:ss a z\",\n \"medium\": \"h:mm:ss a\",\n \"short\": \"h:mm a\"\n },\n \"dateTimeFormats\": {\n \"full\": \"{1} 'at' {0}\",\n \"long\": \"{1} 'at' {0}\",\n \"medium\": \"{1}, {0}\",\n \"short\": \"{1}, {0}\",\n \"availableFormats\": {\n \"d\": \"d\",\n \"E\": \"ccc\",\n \"Ed\": \"d E\",\n \"Ehm\": \"E h:mm a\",\n \"EHm\": \"E HH:mm\",\n \"Ehms\": \"E h:mm:ss a\",\n \"EHms\": \"E HH:mm:ss\",\n \"Gy\": \"y G\",\n \"GyMMM\": \"MMM y G\",\n \"GyMMMd\": \"MMM d, y G\",\n \"GyMMMEd\": \"E, MMM d, y G\",\n \"h\": \"h a\",\n \"H\": \"HH\",\n \"hm\": \"h:mm a\",\n \"Hm\": \"HH:mm\",\n \"hms\": \"h:mm:ss a\",\n \"Hms\": \"HH:mm:ss\",\n \"M\": \"L\",\n \"Md\": \"M/d\",\n \"MEd\": \"E, M/d\",\n \"MMM\": \"LLL\",\n \"MMMd\": \"MMM d\",\n \"MMMEd\": \"E, MMM d\",\n \"MMMMd\": \"MMMM d\",\n \"ms\": \"mm:ss\",\n \"y\": \"y G\",\n \"yyyy\": \"y G\",\n \"yyyyM\": \"M/y GGGGG\",\n \"yyyyMd\": \"M/d/y GGGGG\",\n \"yyyyMEd\": \"E, M/d/y GGGGG\",\n \"yyyyMMM\": \"MMM y G\",\n \"yyyyMMMd\": \"MMM d, y G\",\n \"yyyyMMMEd\": \"E, MMM d, y G\",\n \"yyyyMMMM\": \"MMMM y G\",\n \"yyyyQQQ\": \"QQQ y G\",\n \"yyyyQQQQ\": \"QQQQ y G\"\n }\n }\n }\n },\n 'timeZoneNames': {\n \"hourFormat\": \"+HH:mm;-HH:mm\",\n \"gmtFormat\": \"GMT{0}\",\n \"gmtZeroFormat\": \"GMT\",\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n },\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###',\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n \"numbers\": {\n \"mapper\": {\n \"0\": \"0\",\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\"\n },\n \"mapperDigits\": \"0123456789\",\n \"numberSymbols\": {\n \"decimal\": \".\",\n \"group\": \",\",\n \"plusSign\": \"+\",\n \"minusSign\": \"-\",\n \"percentSign\": \"%\",\n \"nan\": \"NaN\",\n \"timeSeparator\": \":\",\n \"infinity\": \"∞\"\n },\n \"timeSeparator\": \":\",\n \"currencySymbol\": \"$\",\n \"currencypData\": {\n \"nlead\": \"$\",\n \"nend\": \"\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentpData\": {\n \"nlead\": \"\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentnData\": {\n \"nlead\": \"-\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"currencynData\": {\n \"nlead\": \"($\",\n \"nend\": \")\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalnData\": {\n \"nlead\": \"-\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalpData\": {\n \"nlead\": \"\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n }\n },\n \"dates\": {\n \"dayPeriods\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n },\n \"dateSeperator\": \"/\",\n \"days\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n },\n \"months\": {\n \"abbreviated\": {\n \"1\": \"Jan\",\n \"2\": \"Feb\",\n \"3\": \"Mar\",\n \"4\": \"Apr\",\n \"5\": \"May\",\n \"6\": \"Jun\",\n \"7\": \"Jul\",\n \"8\": \"Aug\",\n \"9\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n },\n \"wide\": {\n \"1\": \"January\",\n \"2\": \"February\",\n \"3\": \"March\",\n \"4\": \"April\",\n \"5\": \"May\",\n \"6\": \"June\",\n \"7\": \"July\",\n \"8\": \"August\",\n \"9\": \"September\",\n \"10\": \"October\",\n \"11\": \"November\",\n \"12\": \"December\"\n }\n },\n \"eras\": {\n \"1\": \"AD\"\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n * @private\n * @param {string} skeleton\n * @param {Object} dateObject\n * @param {string} type\n * @returns {string}\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n * @private\n * @param {Object} cldr\n * @param {string} culture\n * @param {boolean} isNumber\n * @returns {Dependables}\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n * @private\n * @param {string} type\n * @param {string} numSystem\n * @param {Object} obj\n * @param {boolean} isAccount\n * @returns {string}\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n * @private\n * @param {string} skeleton\n * @returns {NumericSkeleton}\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n /* tslint:disable no-any */\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n * @private\n * @param {string} pattern\n * @param {boolean} needFraction\n * @param {string} cSymbol\n * @param {boolean} fractionOnly\n * @returns {NegativeData}\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n * @private\n * @param {string} val\n * @param {string} sym\n * @returns {string}\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n /**\n * Returns currency symbol based on currency code\n * @private\n * @param {Object} numericObject\n * @param {string} currencyCode\n * @returns {string}\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Dependables} obj\n * @returns {GenericFormatOptions}\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Object} numObject\n * @returns {NegativeData}\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n cOptions.useGrouping = integerPart.indexOf(',') !== -1;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/\\'/g, '');\n cOptions.nend = cOptions.nend.replace(/\\'/g, '');\n }\n return cOptions;\n }\n /**\n * Returns formatting options for currency or percent type\n * @private\n * @param {string[]} parts\n * @param {string} actual\n * @param {string} symbol\n * @returns {NegativeData}\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[i];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n * @private\n * @param {Object} dateObj\n * @returns {string}\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n * @private\n * @param {string} culture\n * @param {DateFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n // tslint:disable-next-line:no-any\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // tslint:disable-next-line:no-any\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n * @private\n * @param {string} culture\n * @param {NumberFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/\\'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[iCulture] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param pData\n * @param aCurrency\n * @param rCurrency\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n * @param {string|Object} options?\n * @param {string} type?\n * @param {boolean} async?\n * @returns defaultType\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n * Send the request to server.\n * @param {any} data - To send the user data\n * @return {Promise}\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n * @param {string} key Key to search in the response header\n * @returns {string}\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ \\/]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ \\/]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ \\/]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ \\/]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ \\/]([\\w.]+)/i,\n SAFARI: /(safari)[ \\/]([\\w.]+)/i,\n WEBKIT: /(webkit)[ \\/]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n * @param {string} event - type of event triggered.\n * @returns {Boolean}\n */\n Browser.getEvent = function (event) {\n // tslint:disable-next-line:no-any\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer && !Browser.isWindows ? events[event].isPointer :\n (Browser.isTouch ? events[event].isTouch + (!Browser.isDevice ? ' ' + events[event].isDevice : '')\n : events[event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * To get the value based on provided key and regX\n * @param {string} key\n * @param {RegExp} regX\n * @returns {Object}\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = window.browserDetails;\n if ('undefined' === typeof browserDetails[key]) {\n return browserDetails[key] = regX.test(Browser.userAgent);\n }\n return browserDetails[key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties \n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n * @returns BrowserInfo\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * @private\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} debounce - Specifies at what interval given event listener should be triggered.\n * @return {Function}\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[i],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[i], debounceListener);\n }\n else {\n element.addEventListener(event[i], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[j] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[j], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n * @param {any} element - Specifies the target html element to clear the events\n * @return {void}\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n eventData = EventHandler.addOrGetEventData(element);\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[i].name, copyData[i].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @return {void}\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n var fn = null;\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(\\/if|\\/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n * @param {RegExp} value - Value expression.\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper? - Helper functions as an object.\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var fnCode = \"var str=\\\"\" + evalExpResult + \"\\\"; return str;\";\n // tslint:disable-next-line:no-function-constructor-with-string-args\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n// function used to evaluate the function expression\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\\\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /\\@|\\#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /\\@|\\$|\\#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /\\@|\\$|\\#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition \n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = '\"+' + addNameSpace(cnt.replace(/\\,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"';\n }\n }\n return cnt;\n });\n}\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix) ? nameSpace + '.' + str : str);\n}\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// tslint:disable-next-line\nfunction SlashReplace(tempStr) {\n // tslint:disable-next-line\n var double = \"\\\\\\\\\";\n if (tempStr.match(DOUBLE_SLASH)) {\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /\\@|\\$|\\#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+\\\\s]+))?)*)\\s*(\\/?)>/;\nvar endRegex = /^<\\/([-A-Za-z0-9_]+)[^>]*>/;\nvar attributeRegex = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;\n/**\n * Namespace for VirtualDOM\n * @private\n */\nexport var VirtualDOM;\n(function (VirtualDOM) {\n //tslint:disable:no-any\n function createElement(tagName, properties) {\n var children = [];\n var extended = extend({}, {}, properties, true);\n if (!isNullOrUndefined(properties)) {\n var keys = Object.keys(properties);\n if (keys.length) {\n if (extended.innerHTML) {\n children = ConvertHTMLToJSon(extended.innerHTML);\n delete extended.innerHTML;\n }\n if (extended.attrs) {\n extend(extended, extended.attrs);\n delete extended.attrs;\n }\n if (extended.styles) {\n var valArr = extended.styles.split(';');\n var vObj = {};\n for (var i = 0, length_1 = valArr.length; i < length_1; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n delete extended.styles;\n extended.style = vObj;\n }\n }\n }\n return {\n tagName: tagName,\n attributes: extended || {},\n children: children\n };\n }\n VirtualDOM.createElement = createElement;\n function assignParent(childrens, parent) {\n if (parent && childrens) {\n childrens.forEach(function (child) {\n if (isObject(child)) {\n if (child.parent) {\n detach(child);\n }\n child.parent = parent;\n }\n return child;\n });\n }\n }\n VirtualDOM.assignParent = assignParent;\n function append(fromElements, toElement) {\n assignParent(fromElements, toElement);\n if (toElement.children) {\n toElement.children = toElement.children.concat(fromElements);\n }\n else {\n toElement.children = [].concat(fromElements);\n }\n }\n VirtualDOM.append = append;\n function prepend(child, toElement) {\n assignParent(child, toElement);\n if (!toElement.children || !toElement.children.length) {\n toElement.children = [];\n toElement.children.concat(child);\n }\n else {\n for (var i = child.length - 1; i >= 0; i--) {\n toElement.children.unshift(child[i]);\n }\n }\n }\n VirtualDOM.prepend = prepend;\n function detach(element) {\n var parent = element.parent;\n if (parent) {\n var index = parent.children.indexOf(element);\n if (index !== -1) {\n parent.children.splice(index);\n }\n }\n return parent;\n }\n VirtualDOM.detach = detach;\n //tslint:disable-next-line\n function vDomSelector(_a) {\n var ele = _a.ele, selector = _a.selector, selectAll = _a.selectAll, immediateParent = _a.immediateParent;\n var iSelector = selector.split(' ');\n var curColl = ele;\n for (var i = 0, length_2 = iSelector.length; i < length_2; i++) {\n var isDescendant = false;\n var parent_2 = curColl;\n var curSelector = iSelector[i];\n var simpleSelector = false;\n var mapper = [];\n if (simpleRegex.test(curSelector)) {\n simpleSelector = true;\n processSelector(curSelector, mapper);\n }\n else if (curSelector.indexOf('>') === -1) {\n var splitSelector = curSelector.match(multipleSplitRegex);\n for (var _i = 0, splitSelector_1 = splitSelector; _i < splitSelector_1.length; _i++) {\n var curMap = splitSelector_1[_i];\n processSelector(curMap, mapper);\n }\n }\n else if (curSelector.indexOf('>') !== -1) {\n isDescendant = true;\n var dSelector = curSelector.split('>');\n //tslint:disable-next-line\n var dParent = ele;\n var descendent = void 0;\n var flag = 0;\n for (var _b = 0, dSelector_1 = dSelector; _b < dSelector_1.length; _b++) {\n var sel = dSelector_1[_b];\n if (!dParent) {\n break;\n }\n if (dParent.length) {\n var descendentChild = [];\n for (var _c = 0, dParent_1 = dParent; _c < dParent_1.length; _c++) {\n var child = dParent_1[_c];\n descendentChild = descendentChild.concat(vDomSelector({\n ele: child, selector: sel,\n selectAll: selectAll, immediateParent: !!flag\n }));\n }\n descendent = descendentChild;\n }\n else {\n descendent = vDomSelector({ ele: dParent, selector: sel, selectAll: selectAll, immediateParent: !!flag });\n }\n flag++;\n dParent = descendent;\n }\n if (descendent) {\n curColl = descendent;\n }\n }\n if (!isDescendant) {\n if (parent_2.length) {\n var iCurSelector = [];\n for (var _d = 0, parent_1 = parent_2; _d < parent_1.length; _d++) {\n var curParent = parent_1[_d];\n iCurSelector = iCurSelector.concat(accessElement(curParent, mapper, selectAll, immediateParent));\n }\n curColl = iCurSelector;\n }\n else {\n curColl = accessElement(parent_2, mapper, selectAll, immediateParent);\n }\n }\n }\n if (selectAll) {\n return curColl;\n }\n else {\n return curColl[0] || null;\n }\n }\n VirtualDOM.vDomSelector = vDomSelector;\n function processSelector(selector, mapper) {\n var match = selector.match(idClassSelector);\n var obj = {};\n if (match) {\n var curMapper = selectMapper[match[0]];\n if (curMapper === 'className') {\n var curObj = mapper.filter(function (obj) { return obj.hasOwnProperty('className'); })[0];\n var canPush = false;\n if (!curObj) {\n canPush = true;\n curObj = {};\n }\n var existValue = curObj[curMapper] || '';\n curObj[curMapper] = existValue + classRegexString.replace('{value}', selector.replace('.', ''));\n if (canPush) {\n mapper.push(curObj);\n }\n }\n else {\n obj[curMapper] = selector.replace(match[0], '');\n mapper.push(obj);\n }\n }\n else {\n mapper.push({ tagName: selector });\n }\n }\n //tslint:disable-next-line\n function accessElement(ele, mapper, selectAll, immediateParent) {\n if (ele.children) {\n //tslint:disable-next-line\n var temp_1 = ele.children.filter(function (child) {\n if (typeof (child) !== 'string') {\n var matched = true;\n for (var _i = 0, mapper_1 = mapper; _i < mapper_1.length; _i++) {\n var map = mapper_1[_i];\n var key = Object.keys(map)[0];\n var expected = map[key];\n var actualValue = getValue(assigner[key], child);\n if (key === 'className') {\n if (!(new RegExp('^' + expected + '.*$').test(actualValue))) {\n matched = false;\n break;\n }\n }\n else if (actualValue !== expected) {\n matched = false;\n break;\n }\n }\n return matched;\n }\n else {\n return false;\n }\n });\n if (!immediateParent && (!temp_1.length || selectAll)) {\n ele.children.forEach(function (child) {\n if (isObject(child)) {\n temp_1 = temp_1.concat(accessElement(child, mapper, selectAll));\n }\n });\n }\n return temp_1;\n }\n else {\n return [];\n }\n }\n VirtualDOM.accessElement = accessElement;\n function ConvertHTMLToJSon(htmlString) {\n var results = [];\n var isText;\n var tagArray = [];\n var backup = htmlString;\n var nodeArray = [];\n while (htmlString) {\n isText = true;\n var lastVal = getLastValue(tagArray);\n if (!lastVal || !contains(cspElement, lastVal)) {\n if (htmlString.indexOf(']*>'), function (all, text) {\n text = text.replace(/|/g, '$1$2');\n iterateText(text);\n return '';\n });\n iterateEndTag('', getLastValue(tagArray));\n }\n backup = htmlString;\n }\n function iterateStartTag(start, tagName, rest) {\n tagName = tagName.toLowerCase();\n if (contains(blockElements, tagName)) {\n while (getLastValue(tagArray) && contains(inlineElement, getLastValue(tagArray))) {\n iterateEndTag('', getLastValue(tagArray));\n }\n }\n if (contains(selfClosingElements, tagName) && getLastValue(tagArray)) {\n iterateEndTag('', tagName);\n }\n var isSelfTag = contains(emptyElements, tagName);\n if (!isSelfTag) {\n tagArray.push(tagName);\n }\n var attrs = {};\n //tslint:disable-next-line\n rest.replace(attributeRegex, function (match, name) {\n var names = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n names[_i - 2] = arguments[_i];\n }\n //tslint:disable-next-line\n var val = names[2] ? names[2] :\n names[3] ? names[3] :\n names[4] ? names[4] :\n contains(fillAttrs, name) ? name : '';\n if (name === 'style') {\n var valArr = val.split(';');\n var vObj = {};\n for (var i = 0, length_3 = valArr.length; i < length_3; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n val = vObj;\n }\n name = nameMapper[name] || name;\n attrs[name] = val;\n //tslint:disable-next-line\n });\n attrs['data-id'] = getRandomId();\n var tagObject = {\n tagName: tagName,\n attributes: attrs\n };\n if (isSelfTag) {\n var parent_3 = (nodeArray[0] || results);\n if (parent_3.children === undefined) {\n parent_3.children = [];\n }\n tagObject.parent = parent_3;\n parent_3.children.push(tagObject);\n }\n else {\n nodeArray.unshift(tagObject);\n }\n }\n function iterateEndTag(start, tagName) {\n var pos;\n if (!tagName) {\n pos = 0;\n }\n else {\n for (pos = tagArray.length - 1; pos >= 0; pos--) {\n if (tagArray[pos] === tagName) {\n break;\n }\n }\n }\n if (pos >= 0) {\n for (var j = nodeArray.length - 1; j >= pos; j--) {\n //tslint:disable-next-line\n var node = nodeArray.shift();\n if (nodeArray.length === 0) {\n results.push(node);\n }\n else {\n var parent_4 = nodeArray[0];\n if (parent_4.children === undefined) {\n parent_4.children = [];\n }\n node.parent = parent_4;\n parent_4.children.push(node);\n }\n }\n tagArray.length = pos;\n }\n }\n function iterateText(text) {\n if (nodeArray.length === 0) {\n results.push(text);\n }\n else {\n var parent_5 = nodeArray[0];\n if (parent_5.children === undefined) {\n parent_5.children = [];\n }\n parent_5.children.push(text);\n }\n }\n return results;\n }\n VirtualDOM.ConvertHTMLToJSon = ConvertHTMLToJSon;\n //tslint:disable-next-line \n function getLastValue(arr) {\n return arr[arr.length - 1];\n }\n function contains(arr, key) {\n return arr.indexOf(key) !== -1;\n }\n //tslint:disable-next-line\n function cloneNode(ele, deep) {\n if (isObject(ele)) {\n if (deep) {\n return extend({}, {}, ele, true);\n }\n else {\n return { tagName: ele.tagName, attributes: ele.attributes };\n }\n }\n else {\n return ele.cloneNode(deep);\n }\n }\n VirtualDOM.cloneNode = cloneNode;\n function setStyleAttribute(element, attrs) {\n if (element.attributes.style) {\n (element.attributes).style = extend({}, attrs);\n }\n else {\n element.attributes.style = extend(element.attributes.style, attrs);\n }\n }\n VirtualDOM.setStyleAttribute = setStyleAttribute;\n //tslint:enable:no-any\n})(VirtualDOM || (VirtualDOM = {}));\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nimport { VirtualDOM } from './virtual-dom';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n * @param tagName - Name of the tag, id and class names.\n * @param properties - Object to set properties in the element.\n * @param properties.id - To set the id to the created element.\n * @param properties.className - To add classes to the element.\n * @param properties.innerHTML - To set the innerHTML to element.\n * @param properties.styles - To set the some custom styles to element.\n * @param properties.attrs - To set the attributes to element.\n * @private\n */\nexport function createElement(tagName, properties) {\n //tslint:disable-next-line\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n /* istanbul ignore next */\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n * @param {Element|Node} element - An element the need to check visibility\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n //tslint:disable:no-any\n if (isObject(toElement)) {\n VirtualDOM.prepend(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n if (isObject(toElement)) {\n VirtualDOM.append(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n * @param ele - An element is going to evaluate the script\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from the\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @private\n */\nexport function detach(element) {\n if (isObject(element)) {\n return VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n }\n}\n//tslint: enable:no-any\n/**\n * The function used to remove the element from Dom also clear the bounded events\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @private\n */\nexport function remove(element) {\n if (isObject(element)) {\n VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n }\n}\n/**\n * The function helps to set multiple attributes to an element\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {{[key:string]:string}} attributes - JSON Object that is going to as attributes.\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n /* istanbul ignore next */\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[iKey] = attributes[key];\n }\n else {\n ele.setAttribute(key, attributes[key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\n//tslint:disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: false });\n }\n else {\n selector = querySelectId(selector);\n return context.querySelector(selector);\n }\n}\n/**\n * The function selects an array of element from the given context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && !needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: true });\n }\n else {\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n }\n}\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[i].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[j].indexOf('#') > -1) {\n if (!list[j].match(/\\[.*\\]/)) {\n var splitId = list[j].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[j].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[j] = setId.join('.');\n }\n }\n }\n }\n idList[i] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n /* istanbul ignore next */\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n * @param {Element|Node} element - An element that need to get siblings.\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @private\n */\n/* istanbul ignore next */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @return {void}\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n if (isObject(element)) {\n // tslint:disable-next-line:no-any\n VirtualDOM.setStyleAttribute(element, attrs);\n }\n else {\n Object.keys(attrs).forEach(function (key) {\n // tslint:disable-next-line:no-any\n element.style[key] = attrs[key];\n });\n }\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @return {void}\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {void}\n * @private\n */\nexport function matches(element, selector) {\n //tslint:disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/* istanbul ignore next */\nexport function includeInnerHTML(ele, innerHTML) {\n if (isObject(ele)) {\n if (innerHTML === '') {\n ele.children = [];\n }\n else {\n var res = VirtualDOM.ConvertHTMLToJSon(innerHTML);\n if (res.length) {\n VirtualDOM.assignParent(res, ele);\n ele.children = res;\n }\n }\n }\n else {\n ele.innerHTML = innerHTML;\n }\n}\n/* istanbul ignore next */\n//tslint:disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // tslint:disable-next-line:no-any\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {Element | VirtualObject}\n * @private\n */\n/* istanbul ignore next */\n//tslint:disable:no-any\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n else {\n return { tagName: element.tagName, attributes: element.attributes };\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp('\\]');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange? - Specifies to true when we set properties.\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n ;\n /**\n * Calls for child element data bind\n * @param {Object} obj\n * @param {Object} parent\n * @returns {void}\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[key] instanceof Array) {\n for (var _a = 0, _b = parent[key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n ;\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[sfBlazor].updateModel) {\n window[sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n ;\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} listener - Specifies the call to run when the event occurs.\n * @return {void}\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @return {void}\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n */\n Base.prototype.destroy = function () {\n var _this = this;\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n * @param elem Specifies the HTMLElement or element id string.\n * @param comp Specifies the component module name or Component.\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[i];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[i], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[curKey];\n}\n/**\n * Returns object array\n * @param {ClassObject} instance\n * @param {string} curKey\n * @param {Object[]} defaultValue\n * @param type\n * @param {boolean} isSetter\n * @returns {Object[]}\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[i], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[curKey] = defaultValue;\n }\n return this.properties[curKey];\n };\n}\n/**\n * Set the properties for the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[curKey], extendFunc, descriptor);\n });\n }\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[curKey] = defCollection;\n }\n return this.properties[curKey];\n };\n}\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[dFunc].apply(prop, [newValue[i]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[i], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n /* tslint:enable no-function-expression */\n}\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[keyString][action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n * @param {T} defaultValue? - Specifies the default value of property.\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n * @param {T} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n * @param {Function} defaultType - Specifies the default value of property.\n * @param {Function} type - Specifies the class factory type of complex object.\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n * @param {T[]} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n * @param {T[]} defaultType - Specifies the default type of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n * @param {Function} defaultValue? - Specifies the default value of property.\n * @param {boolean} isComplex? - Specifies the whether it is complex object.\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n /* tslint:disable no-any */\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n /* tslint:enable no-any */\n}\n/**\n * Returns an object containing the builder properties\n * @param {Function} component\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n * @param {any} component -specifies the target component for which builder to be created.\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n * @param {Object} context\n * @param {string} prefix\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @return {void}\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n };\n /**\n * Triggers animation\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var startTime = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element \n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame \n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n * @param {AnimationModel} options\n * @returns {AnimationModel}\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n * @private\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n * @private\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n * @private\n * @param HTMLElement element - Target element\n * @param RippleOptions rippleOptions - Ripple options .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return Function;\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n * @param {MouseEvent} e\n * @param {rippleArgs} eventArgs\n * @returns {void}\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean}\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n ;\n /**\n * Inject required modules in component library\n * @return {void}\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[i];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n * @return {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n * @param {ModuleDeclaration[]} moduleList\n * @returns {void}\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n * @param {string} name\n * @returns {string}\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n * @param {string} modName\n * @returns {boolean}\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { VirtualDOM } from './virtual-dom';\nimport { getRandomId } from './template-engine';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\n/* istanbul ignore next */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n ;\n /**\n * Destroys the sub modules while destroying the widget\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n /* istanbul ignore next */\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n */\n /* istanbul ignore next */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // tslint:disable-next-line:no-any\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n ;\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @return {void}\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @return {void}\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @return {void}\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n ;\n /**\n * Dynamically injects the required modules to the component.\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n if (isVDOM && this.isReactHybrid) {\n if (prop) {\n prop = {};\n }\n prop['data-id'] = getRandomId();\n return VirtualDOM.createElement(tagName, prop);\n }\n else {\n return createElement(tagName, prop);\n }\n };\n /**\n *\n * @param handler - handler to be triggered after state Updated.\n * @param argument - Arguments to be passed to caller.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n //tslint:disable:no-any\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\n };\n //tslint:disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // tslint:disable-next-line:no-any\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n return new RegExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection \n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n * @param {boolean} val\n * @param {string} propName\n * @returns {void}\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n * @param {Object} prop\n * @param {boolean} muteOnChange\n * {void}\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n * @param {string} key\n * @param {Object} newValue\n * @param {Object} oldValue\n * @returns {void}\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n // tslint:disable-next-line:no-any\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[i]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[i]];\n }\n }\n else {\n newChanges[parentKey] = {};\n parent_1 = newChanges[parentKey];\n newChanges[parentKey][key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // tslint:disable-next-line:no-any\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n /* tslint:disable no-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[axis]] > element[client[axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10),\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n var marginTop = parseFloat(styles.marginTop);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += this.element.offsetTop;\n if (dTop < 0) {\n if ((this.element.offsetTop + dTop) >= 0) {\n draEleTop = this.element.offsetTop + dTop;\n }\n else {\n draEleTop -= this.element.offsetTop;\n }\n }\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll) {\n this.helperElement.scrollIntoView();\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n top = elementArea.top;\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n * @param {HTMLElement} element\n * @param {KeyboardEventsModel} options\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n * @return {void}\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n * @param newProp\n * @param oldProp\n * @returns {void}\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n ;\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n * @param {string} config - configuration data\n * returns {KeyData}\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[config] = keyData;\n return keyData;\n };\n // Return the keycode value as string \n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n * @param {string} locale\n * @returns {void}\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n * @param {string} propertyName - specifies the property for which localize text to be returned.\n * @return string\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[prop])) {\n return this.currentLocale[prop];\n }\n else {\n return this.localeStrings[prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n * @param {Object} curObject\n * @param {string} locale\n * @returns {Object}\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[locale]) {\n return (curObject)[locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n // tslint:disable-next-line:no-any\n var isFirefox = (/Mozilla|Firefox|Mac OS/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed \n /**\n * @private\n * @param newProp\n * @param oldProp\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n * @return {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n * @returns {string}\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean}\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // tslint:disable-next-line:no-any\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n // tslint:disable-next-line:max-line-length\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'onblur',\n 'oncanplay',\n 'oncanplaythrough',\n 'onchange',\n 'onclick',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onerror',\n 'onerror',\n 'onfocus',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onload',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseout',\n 'onmouseover',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsubmit',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onmousewheel',\n 'onstart',\n 'onpropertychange'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n ;\n SanitizeHtmlHelper.sanitize = function (value) {\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue;\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[j].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[j].removeAttribute(attribute[i].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * CSS Constants\n * @hidden\n */\n/** @hidden */\nexport var ROOT = 'e-pivotfieldlist';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var PIVOTCHART_LTR = 'e-ltr';\n/** @hidden */\nexport var DEVICE = 'e-device';\n/** @hidden */\nexport var ICON = 'e-icons';\n/** @hidden */\nexport var ICON_DISABLE = 'e-disable';\n/** @hidden */\nexport var ICON_HIDDEN = 'e-hide';\n/** @hidden */\nexport var AXISFIELD_ICON_CLASS = 'e-dropdown-icon';\n/** @hidden */\nexport var WRAPPER_CLASS = 'e-pivotfieldlist-wrapper';\n/** @hidden */\nexport var OLAP_WRAPPER_CLASS = 'e-olapfieldlist-wrapper';\n/** @hidden */\nexport var CONTAINER_CLASS = 'e-field-list-container';\n/** @hidden */\nexport var TOGGLE_FIELD_LIST_CLASS = 'e-toggle-field-list';\n/** @hidden */\nexport var STATIC_FIELD_LIST_CLASS = 'e-static';\n/** @hidden */\nexport var TOGGLE_SELECT_CLASS = 'e-select-table';\n/** @hidden */\nexport var FIELD_TABLE_CLASS = 'e-field-table';\n/** @hidden */\nexport var BUTTON_DRAGGABLE = 'e-draggable';\n/** @hidden */\nexport var OLAP_FIELD_TABLE_CLASS = 'e-olap-field-table';\n/** @hidden */\nexport var FIELD_LIST_CLASS = 'e-field-list';\n/** @hidden */\nexport var OLAP_FIELD_LIST_CLASS = 'e-olap-field-list-tree';\n/** @hidden */\nexport var FIELD_LIST_TREE_CLASS = 'e-field-list-tree';\n/** @hidden */\nexport var FIELD_HEADER_CLASS = 'e-field-header';\n/** @hidden */\nexport var FIELD_LIST_TITLE_CLASS = 'e-field-list-title';\n/** @hidden */\nexport var FIELD_LIST_TITLE_CONTENT_CLASS = 'e-title-content';\n/** @hidden */\nexport var FIELD_LIST_FOOTER_CLASS = 'e-field-list-footer';\n/** @hidden */\nexport var CALCULATED_FIELD_CLASS = 'e-calculated-field';\n/** @hidden */\nexport var FLAT_CLASS = 'e-flat e-primary';\n/** @hidden */\nexport var OUTLINE_CLASS = 'e-outline';\n/** @hidden */\nexport var AXIS_TABLE_CLASS = 'e-axis-table';\n/** @hidden */\nexport var OLAP_AXIS_TABLE_CLASS = 'e-olap-axis-table';\n/** @hidden */\nexport var LEFT_AXIS_PANEL_CLASS = 'e-left-axis-fields';\n/** @hidden */\nexport var RIGHT_AXIS_PANEL_CLASS = 'e-right-axis-fields';\n/** @hidden */\nexport var AXIS_HEADER_CLASS = 'e-axis-header';\n/** @hidden */\nexport var AXIS_CONTENT_CLASS = 'e-axis-content';\n/** @hidden */\nexport var AXIS_PROMPT_CLASS = 'e-draggable-prompt';\n/** @hidden */\nexport var PIVOT_BUTTON_WRAPPER_CLASS = 'e-pvt-btn-div';\n/** @hidden */\nexport var PIVOT_BUTTON_CLASS = 'e-pivot-button';\n/** @hidden */\nexport var PIVOT_BUTTON_CONTENT_CLASS = 'e-content';\n/** @hidden */\nexport var DRAG_CLONE_CLASS = 'e-button-drag-clone';\n/** @hidden */\nexport var SORT_CLASS = 'e-sort';\n/** @hidden */\nexport var MEMBER_SORT_CLASS = 'e-member-sort';\n/** @hidden */\nexport var SORT_DESCEND_CLASS = 'e-descend';\n/** @hidden */\nexport var FILTER_COMMON_CLASS = 'e-btn-filter';\n/** @hidden */\nexport var FILTER_CLASS = 'e-pv-filter';\n/** @hidden */\nexport var FILTERED_CLASS = 'e-pv-filtered';\n/** @hidden */\nexport var REMOVE_CLASS = 'e-remove';\n/** @hidden */\nexport var DRAG_CLASS = 'e-drag';\n/** @hidden */\nexport var DRAG_DISABLE_CLASS = 'e-disable-drag';\n/** @hidden */\nexport var DROP_INDICATOR_CLASS = 'e-drop-indicator';\n/** @hidden */\nexport var INDICATOR_HOVER_CLASS = 'e-drop-hover';\n/** @hidden */\nexport var MEMBER_EDITOR_DIALOG_CLASS = 'e-member-editor-dialog';\n/** @hidden */\nexport var EDITOR_TREE_WRAPPER_CLASS = 'e-member-editor-wrapper';\n/** @hidden */\nexport var EDITOR_TREE_CONTAINER_CLASS = 'e-member-editor-container';\n/** @hidden */\nexport var DRILLTHROUGH_GRID_CLASS = 'e-drillthrough-grid';\n/** @hidden */\nexport var DRILLTHROUGH_BODY_CLASS = 'e-drillthrough-body';\n/** @hidden */\nexport var DRILLTHROUGH_BODY_HEADER_CONTAINER_CLASS = 'e-drillthrough-body-header-container';\n/** @hidden */\nexport var DRILLTHROUGH_BODY_HEADER_CLASS = 'e-drillthrough-body-header';\n/** @hidden */\nexport var DRILLTHROUGH_BODY_HEADER_COMMON_CLASS = 'e-drillthrough-body-header-common';\n/** @hidden */\nexport var DRILLTHROUGH_BODY_HEADER_VALUE_CLASS = 'e-drillthrough-body-header-value';\n/** @hidden */\nexport var DRILLTHROUGH_DIALOG = 'e-drillthrough-dialog';\n/** @hidden */\nexport var EDITOR_LABEL_WRAPPER_CLASS = 'e-editor-label-wrapper';\n/** @hidden */\nexport var EDITOR_LABEL_CLASS = 'e-editor-label';\n/** @hidden */\nexport var CHECK_BOX_FRAME_CLASS = 'e-frame';\n/** @hidden */\nexport var NODE_CHECK_CLASS = 'e-check';\n/** @hidden */\nexport var NODE_STOP_CLASS = 'e-stop';\n/** @hidden */\nexport var OK_BUTTON_CLASS = 'e-ok-btn';\n/** @hidden */\nexport var CANCEL_BUTTON_CLASS = 'e-cancel-btn';\n/** @hidden */\nexport var ERROR_DIALOG_CLASS = 'e-pivot-error-dialog';\n/** @hidden */\nexport var DROPPABLE_CLASS = 'e-droppable';\n/** @hidden */\nexport var ROW_AXIS_CLASS = 'e-rows';\n/** @hidden */\nexport var COLUMN_AXIS_CLASS = 'e-columns';\n/** @hidden */\nexport var VALUE_AXIS_CLASS = 'e-values';\n/** @hidden */\nexport var FILTER_AXIS_CLASS = 'e-filters';\n/** @hidden */\nexport var GROUPING_BAR_CLASS = 'e-grouping-bar';\n/** @hidden */\nexport var VALUE_COLUMN_CLASS = 'e-value-column';\n/** @hidden */\nexport var GROUP_ROW_CLASS = 'e-group-rows';\n/** @hidden */\nexport var GROUP_COLUMN_CLASS = 'e-group-columns';\n/** @hidden */\nexport var GROUP_FLEX_CLASS = 'e-group-flex';\n/** @hidden */\nexport var GROUP_VALUE_CLASS = 'e-group-values';\n/** @hidden */\nexport var GROUP_FILTER_CLASS = 'e-group-filters';\n/** @hidden */\nexport var DIALOG_CLOSE_ICON_CLASS = 'e-icon-btn';\n/** @hidden */\nexport var NO_DRAG_CLASS = 'e-drag-restrict';\n/** @hidden */\nexport var SELECTED_NODE_CLASS = 'e-list-selected';\n/** @hidden */\nexport var TITLE_HEADER_CLASS = 'e-title-header';\n/** @hidden */\nexport var TITLE_CONTENT_CLASS = 'e-title-content';\n/** @hidden */\nexport var TEXT_CONTENT_CLASS = 'e-text-content';\n/** @hidden */\nexport var FOOTER_CONTENT_CLASS = 'e-footer-content';\n/** @hidden */\nexport var ADAPTIVE_CONTAINER_CLASS = 'e-adaptive-container';\n/** @hidden */\nexport var ADAPTIVE_FIELD_LIST_BUTTON_CLASS = 'e-field-list-btn';\n/** @hidden */\nexport var ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS = 'e-calculated-field-btn';\n/** @hidden */\nexport var BUTTON_SMALL_CLASS = 'e-small';\n/** @hidden */\nexport var BUTTON_ROUND_CLASS = 'e-round';\n/** @hidden */\nexport var ADD_ICON_CLASS = 'e-add-icon';\n/** @hidden */\nexport var BUTTON_FLAT_CLASS = 'e-flat';\n/** @hidden */\nexport var STATIC_CENTER_DIV_CLASS = 'e-center-div';\n/** @hidden */\nexport var STATIC_CENTER_HEADER_CLASS = 'e-center-title';\n/** @hidden */\nexport var ADAPTIVE_FIELD_LIST_DIALOG_CLASS = 'e-adaptive-field-list-dialog';\n/** @hidden */\nexport var LIST_TEXT_CLASS = 'e-list-text';\n/** @hidden */\nexport var LIST_SELECT_CLASS = 'e-selected-node';\n/** @hidden */\nexport var LIST_FRAME_CLASS = 'e-frame';\n/** @hidden */\nexport var EXCEL_FILTER_ICON_CLASS = 'e-excl-filter-icon';\n/** @hidden */\nexport var SELECTED_MENU_ICON_CLASS = 'e-selected-menu-icon';\n/** @hidden */\nexport var EMPTY_ICON_CLASS = 'e-emptyicon';\n/** @hidden */\nexport var SUB_MENU_CLASS = 'e-submenu';\n/** @hidden */\nexport var FOCUSED_CLASS = 'e-focused';\n/** @hidden */\nexport var SELECTED_CLASS = 'e-selected';\n/** @hidden */\nexport var MENU_ITEM_CLASS = 'e-menu-item';\n/** @hidden */\nexport var FILTER_MENU_OPTIONS_CLASS = 'e-filtermenu-options';\n/** @hidden */\nexport var SELECTED_OPTION_ICON_CLASS = 'e-selected-option-icon';\n/** @hidden */\nexport var SELECTED_LEVEL_ICON_CLASS = 'e-selected-level-icon';\n/** @hidden */\nexport var FILTER_DIV_CONTENT_CLASS = 'e-filter-div-content';\n/** @hidden */\nexport var FILTER_TEXT_DIV_CLASS = 'e-filter-text-div';\n/** @hidden */\nexport var BETWEEN_TEXT_DIV_CLASS = 'e-between-text-div';\n/** @hidden */\nexport var SEPARATOR_DIV_CLASS = 'e-separator-div';\n/** @hidden */\nexport var FILTER_OPTION_WRAPPER_1_CLASS = 'e-filter-option-wrapper-1';\n/** @hidden */\nexport var FILTER_OPTION_WRAPPER_2_CLASS = 'e-filter-option-wrapper-2';\n/** @hidden */\nexport var FILTER_INPUT_DIV_1_CLASS = 'e-filter-input-div-1';\n/** @hidden */\nexport var FILTER_INPUT_DIV_2_CLASS = 'e-filter-input-div-2';\n/** @hidden */\nexport var VALUE_OPTIONS_CLASS = 'e-value-options';\n/** @hidden */\nexport var LEVEL_OPTIONS_CLASS = 'e-level-options';\n/** @hidden */\nexport var FILTER_OPERATOR_CLASS = 'e-filter-operator';\n/** @hidden */\nexport var FILTER_SORT_CLASS = 'e-filter-sort';\n/** @hidden */\nexport var SORT_ASCEND_ICON_CLASS = 'e-sort-ascend-icon';\n/** @hidden */\nexport var SORT_DESCEND_ICON_CLASS = 'e-sort-descend-icon';\n/** @hidden */\nexport var SORT_SELECTED_CLASS = 'e-active';\n/** @hidden */\nexport var COLLAPSE = 'e-collapse';\n/** @hidden */\nexport var EXPAND = 'e-expand';\n/** @hidden */\nexport var TABLE = 'e-table';\n/** @hidden */\nexport var BODY = 'e-body';\n/** @hidden */\nexport var PIVOTBODY = 'e-pivotbody';\n/** @hidden */\nexport var COLUMNSHEADER = 'e-columnsheader';\n/** @hidden */\nexport var ROWSHEADER = 'e-rowsheader';\n/** @hidden */\nexport var VALUESCONTENT = 'e-valuescontent';\n/** @hidden */\nexport var VALUECELL = 'e-valuecell';\n/** @hidden */\nexport var PIVOTHEADER = 'e-pivotheader';\n/** @hidden */\nexport var PGHEADERS = 'e-pgheaders';\n/** @hidden */\nexport var TOPHEADER = 'e-topheader';\n/** @hidden */\nexport var HEADERCELL = 'e-headercell';\n/** @hidden */\nexport var SUMMARY = 'e-summary';\n/** @hidden */\nexport var CELLVALUE = 'e-cellvalue';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var PIVOTTOOLTIP = 'e-pivottooltip';\n/** @hidden */\nexport var TOOLTIP_HEADER = 'e-tooltipheader';\n/** @hidden */\nexport var TOOLTIP_CONTENT = 'e-tooltipcontent';\n/** @hidden */\nexport var NEXTSPAN = 'e-nextspan';\n/** @hidden */\nexport var LASTSPAN = 'e-lastspan';\n/** @hidden */\nexport var EDITOR_SEARCH_WRAPPER_CLASS = 'e-editor-search-wrapper';\n/** @hidden */\nexport var EDITOR_SEARCH_CLASS = 'e-editor-search';\n/* eslint-disable */\n/** @hidden */\nexport var EDITOR_SEARCH__INPUT_CLASS = 'e-editor-search-input';\n/* eslint-enable */\n/** @hidden */\nexport var SELECT_ALL_WRAPPER_CLASS = 'e-select-all-wrapper';\n/** @hidden */\nexport var SELECT_ALL_CLASS = 'e-select-all';\n/** @hidden */\nexport var PIVOTCALC = 'e-pivot-calc';\n/** @hidden */\nexport var CALCDIALOG = 'e-pivot-calc-dialog-div';\n/** @hidden */\nexport var OLAP_CALCDIALOG = 'e-olap-calc-dialog-div';\n/** @hidden */\nexport var CALCRADIO = 'e-pivot-calc-radio';\n/** @hidden */\nexport var CALCCHECK = 'e-pivot-calc-check';\n/** @hidden */\nexport var CALCINPUT = 'e-pivot-calc-input';\n/** @hidden */\nexport var CALC_FORMAT_INPUT = 'e-custom-format-input';\n/** @hidden */\nexport var CALCINPUTDIV = 'e-pivot-calc-input-div';\n/** @hidden */\nexport var CALC_CUSTOM_FORMAT_INPUTDIV = 'e-pivot-calc-custom-format-div';\n/** @hidden */\nexport var OLAP_CALC_CUSTOM_FORMAT_INPUTDIV = 'e-olap-calc-custom-format-div';\n/** @hidden */\nexport var CALC_HIERARCHY_LIST_DIV = 'e-olap-calc-hierarchy-list-div';\n/** @hidden */\nexport var CALC_FORMAT_TYPE_DIV = 'e-olap-calc-format-type-div';\n/** @hidden */\nexport var CALC_MEMBER_TYPE_DIV = 'e-olap-calc-member-type-div';\n/** @hidden */\nexport var MEMBER_OPTIONS_CLASS = 'e-member-options';\n/** @hidden */\nexport var HIERARCHY_OPTIONS_CLASS = 'e-hierarchy-options';\n/** @hidden */\nexport var FORMAT_OPTIONS_CLASS = 'e-format-options';\n/** @hidden */\nexport var FORMAT_INPUT_CLASS = 'e-format-input-options';\n/** @hidden */\nexport var CALCOUTERDIV = 'e-pivot-calc-outer-div';\n/** @hidden */\nexport var OLAP_CALCOUTERDIV = 'e-olap-calc-outer-div';\n/** @hidden */\nexport var FLAT = 'e-flat';\n/** @hidden */\nexport var FORMAT = 'e-format';\n/** @hidden */\nexport var FORMULA = 'e-pivot-formula';\n/** @hidden */\nexport var TREEVIEW = 'e-pivot-treeview';\n/** @hidden */\nexport var TREEVIEWOUTER = 'e-pivot-treeview-outer';\n/** @hidden */\nexport var CALCCANCELBTN = 'e-pivot-cancel-button';\n/** @hidden */\nexport var CALCADDBTN = 'e-pivot-add-button';\n/** @hidden */\nexport var CALCOKBTN = 'e-pivot-ok-button';\n/** @hidden */\nexport var CALCACCORD = 'e-pivot-accord';\n/** @hidden */\nexport var CALCBUTTONDIV = 'e-pivot-button-div';\n/** @hidden */\nexport var AXIS_ICON_CLASS = 'e-axis';\n/** @hidden */\nexport var AXIS_ROW_CLASS = 'e-axis-row';\n/** @hidden */\nexport var AXIS_COLUMN_CLASS = 'e-axis-column';\n/** @hidden */\nexport var AXIS_VALUE_CLASS = 'e-axis-value';\n/** @hidden */\nexport var AXIS_FILTER_CLASS = 'e-axis-filter';\n/** @hidden */\nexport var AXIS_NAVIGATE_WRAPPER_CLASS = 'e-axis-nav-div';\n/** @hidden */\nexport var LEFT_NAVIGATE_WRAPPER_CLASS = 'e-left-nav-wrapper';\n/** @hidden */\nexport var RIGHT_NAVIGATE_WRAPPER_CLASS = 'e-right-nav-wrapper';\n/** @hidden */\nexport var LEFT_NAVIGATE_CLASS = 'e-left-nav-icon';\n/** @hidden */\nexport var RIGHT_NAVIGATE_CLASS = 'e-right-nav-icon';\n/** @hidden */\nexport var GRID_CLASS = 'e-grid';\n/** @hidden */\nexport var PIVOT_VIEW_CLASS = 'e-pivotview';\n/** @hidden */\nexport var PIVOT_ALL_FIELD_TITLE_CLASS = 'e-pivot-all-field-title';\n/** @hidden */\nexport var PIVOT_FIELD_TITLE_CLASS = 'e-pivot-field-name-title';\n/** @hidden */\nexport var PIVOT_FORMULA_TITLE_CLASS = 'e-pivot-formula-title';\n/** @hidden */\nexport var OLAP_HIERARCHY_TITLE_CLASS = 'e-olap-hierarchy-title';\n/** @hidden */\nexport var OLAP_FORMAT_TITLE_CLASS = 'e-olap-format-title';\n/** @hidden */\nexport var OLAP_MEMBER_TITLE_CLASS = 'e-olap-member-title';\n/** @hidden */\nexport var PIVOT_CONTEXT_MENU_CLASS = 'e-pivot-context-menu';\n/** @hidden */\nexport var MENU_DISABLE = 'e-disabled';\n/** @hidden */\nexport var MENU_HIDE = 'e-menu-hide';\n/** @hidden */\nexport var EMPTY_MEMBER_CLASS = 'e-member-prompt';\n/** @hidden */\nexport var CALC_EDIT = 'e-edit';\n/** @hidden */\nexport var CALC_EDITED = 'e-edited';\n/** @hidden */\nexport var CALC_INFO = 'e-info';\n/** @hidden */\nexport var EMPTY_FIELD = 'e-empty-field';\n/** @hidden */\nexport var FORMAT_DIALOG = 'e-pivot-formatting-dialog';\n/** @hidden */\nexport var FORMAT_CONDITION_BUTTON = 'e-format-condition-button';\n/** @hidden */\nexport var FORMAT_NEW = 'e-new-format';\n/** @hidden */\nexport var FORMAT_OUTER = 'e-format-outer-div';\n/** @hidden */\nexport var FORMAT_INNER = 'e-format-inner-div';\n/** @hidden */\nexport var FORMAT_TABLE = 'e-format-table';\n/** @hidden */\nexport var FORMAT_VALUE_LABEL = 'e-format-value-label';\n/** @hidden */\nexport var FORMAT_LABEL = 'e-format-label';\n/** @hidden */\nexport var INPUT = 'e-input';\n/** @hidden */\nexport var FORMAT_VALUE1 = 'e-format-value1';\n/** @hidden */\nexport var FORMAT_VALUE2 = 'e-format-value2';\n/** @hidden */\nexport var FORMAT_VALUE_SPAN = 'e-format-value-span';\n/** @hidden */\nexport var FORMAT_FONT_COLOR = 'e-format-font-color';\n/** @hidden */\nexport var FORMAT_BACK_COLOR = 'e-format-back-color';\n/** @hidden */\nexport var FORMAT_VALUE_PREVIEW = 'e-format-value-preview';\n/** @hidden */\nexport var FORMAT_COLOR_PICKER = 'e-format-color-picker';\n/** @hidden */\nexport var FORMAT_DELETE_ICON = 'e-format-delete-icon';\n/** @hidden */\nexport var FORMAT_DELETE_BUTTON = 'e-format-delete-button';\n/** @hidden */\nexport var SELECTED_COLOR = 'e-selected-color';\n/** @hidden */\nexport var DIALOG_HEADER = 'e-dlg-header';\n/** @hidden */\nexport var FORMAT_APPLY_BUTTON = 'e-format-apply-button';\n/** @hidden */\nexport var FORMAT_CANCEL_BUTTON = 'e-format-cancel-button';\n/** @hidden */\nexport var FORMAT_ROUND_BUTTON = 'e-small e-round';\n/** @hidden */\nexport var VIRTUALTRACK_DIV = 'e-virtualtrack';\n/** @hidden */\nexport var MOVABLECONTENT_DIV = 'e-movablecontent';\n/** @hidden */\nexport var MOVABLESCROLL_DIV = 'e-movablescrollbar';\n/** @hidden */\nexport var MOVABLECHILD_DIV = 'e-movablechild';\n/** @hidden */\nexport var FROZENCONTENT_DIV = 'e-frozencontent';\n/** @hidden */\nexport var MOVABLEHEADER_DIV = 'e-movableheader';\n/** @hidden */\nexport var FROZENHEADER_DIV = 'e-frozenheader';\n/** @hidden */\nexport var DEFER_APPLY_BUTTON = 'e-defer-apply-button';\n/** @hidden */\nexport var DEFER_CANCEL_BUTTON = 'e-defer-cancel-button';\n/** @hidden */\nexport var LAYOUT_FOOTER = 'e-layout-footer';\n/** @hidden */\nexport var CELL_SELECTED_BGCOLOR = 'e-cellselectionbackground';\n/** @hidden */\nexport var SELECTED_BGCOLOR = 'e-selectionbackground';\n/** @hidden */\nexport var BUTTON_LAYOUT = 'e-button-layout';\n/** @hidden */\nexport var CHECKBOX_LAYOUT = 'e-checkbox-layout';\n/** @hidden */\nexport var DEFER_UPDATE_BUTTON = 'e-defer-update-btn';\n/** @hidden */\nexport var HEADERCONTENT = 'e-headercontent';\n/** @hidden */\nexport var BACK_ICON = 'e-field-list-back-icon';\n/** @hidden */\nexport var TITLE_MOBILE_HEADER = 'e-title-mobile-header';\n/** @hidden */\nexport var TITLE_MOBILE_CONTENT = 'e-title-mobile-content';\n/** @hidden */\nexport var ROW_CELL_CLASS = 'e-rowcell';\n/** @hidden */\nexport var CELL_ACTIVE_BGCOLOR = 'e-active';\n/** @hidden */\nexport var SPAN_CLICKED = 'e-spanclicked';\n/** @hidden */\nexport var ROW_SELECT = 'e-rowselect';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var GRID_EXPORT = 'e-export';\n/** @hidden */\nexport var PIVOTVIEW_EXPORT = 'e-pivotview-export';\n/** @hidden */\nexport var PIVOTVIEW_GRID = 'e-pivotview-grid';\n/** @hidden */\nexport var PIVOTVIEW_EXPAND = 'e-pivotview-expand';\n/** @hidden */\nexport var PIVOTVIEW_COLLAPSE = 'e-pivotview-collapse';\n/** @hidden */\nexport var PIVOTVIEW_GROUP = 'e-pivotview-group';\n/** @hidden */\nexport var PIVOTVIEW_UN_GROUP = 'e-pivotview-ungroup';\n/** @hidden */\nexport var GRID_PDF_EXPORT = 'e-pivotview-pdf-export';\n/** @hidden */\nexport var GRID_EXCEL_EXPORT = 'e-pivotview-excel-export';\n/** @hidden */\nexport var GRID_CSV_EXPORT = 'e-pivotview-csv-export';\n/** @hidden */\nexport var GRID_PNG_EXPORT = 'e-pivotview-png-export';\n/** @hidden */\nexport var GRID_JPEG_EXPORT = 'e-pivotview-jpeg-export';\n/** @hidden */\nexport var GRID_SVG_EXPORT = 'e-pivotview-svg-export';\n/** @hidden */\nexport var GRID_LOAD = 'e-load-report';\n/** @hidden */\nexport var GRID_NEW = 'e-new-report';\n/** @hidden */\nexport var GRID_RENAME = 'e-rename-report';\n/** @hidden */\nexport var GRID_REMOVE = 'e-remove-report';\n/** @hidden */\nexport var GRID_SAVEAS = 'e-saveas-report';\n/** @hidden */\nexport var GRID_SAVE = 'e-save-report';\n/** @hidden */\nexport var GRID_SUB_TOTAL = 'e-sub-total';\n/** @hidden */\nexport var GRID_GRAND_TOTAL = 'e-grand-total';\n/** @hidden */\nexport var GRID_FORMATTING = 'e-toolbar-formatting';\n/** @hidden */\nexport var GRID_TOOLBAR = 'e-pivot-toolbar';\n/** @hidden */\nexport var GRID_REPORT_LABEL = 'e-pivotview-report-label';\n/** @hidden */\nexport var GRID_REPORT_INPUT = 'e-pivotview-report-input';\n/** @hidden */\nexport var GRID_REPORT_OUTER = 'e-report-outer';\n/** @hidden */\nexport var GRID_REPORT_DIALOG = 'e-pivotview-report-dialog';\n/** @hidden */\nexport var TOOLBAR_FIELDLIST = 'e-toolbar-fieldlist';\n/** @hidden */\nexport var TOOLBAR_GRID = 'e-toolbar-grid';\n/** @hidden */\nexport var TOOLBAR_CHART = 'e-toolbar-chart';\n/** @hidden */\nexport var REPORT_LIST_DROP = 'e-reportlist-drop';\n/** @hidden */\nexport var PIVOTCHART = 'e-pivotchart';\n/** @hidden */\nexport var GROUP_CHART_ROW = 'e-group-chart-rows';\n/** @hidden */\nexport var GROUP_CHART_COLUMN = 'e-group-chart-columns';\n/** @hidden */\nexport var GROUP_CHART_VALUE = 'e-group-chart-values';\n/** @hidden */\nexport var GROUP_CHART_MULTI_VALUE = 'e-group-chart-multi-values';\n/** @hidden */\nexport var GROUP_CHART_ACCUMULATION_COLUMN = 'e-group-chart-accumulation-column';\n/** @hidden */\nexport var GROUP_CHART_FILTER = 'e-group-chart-filters';\n/** @hidden */\nexport var GROUP_CHART_VALUE_DROPDOWN_DIV = 'e-group-chart-values-drodown-div';\n/** @hidden */\nexport var GROUP_CHART_VALUE_DROPDOWN = 'e-group-chart-values-drodown';\n/** @hidden */\nexport var GROUP_CHART_COLUMN_DROPDOWN_DIV = 'e-group-chart-columns-dropdown-div';\n/** @hidden */\nexport var GROUP_CHART_COLUMN_DROPDOWN = 'e-group-chart-columns-dropdown';\n/** @hidden */\nexport var CHART_GROUPING_BAR_CLASS = 'e-chart-grouping-bar';\n/** @hidden */\nexport var PIVOT_DISABLE_ICON = 'e-pivotview-disable-icon';\n/** @hidden */\nexport var PIVOT_SELECT_ICON = 'e-pivotview-select-icon';\n/** @hidden */\nexport var VALUESHEADER = 'e-valuesheader';\n/** @hidden */\nexport var ICON_ASC = 'e-icon-ascending';\n/** @hidden */\nexport var ICON_DESC = 'e-icon-descending';\n/** @hidden */\nexport var GRID_GROUPING_BAR_CLASS = 'e-pivot-grouping-bar';\n/** @hidden */\nexport var MDX_QUERY = 'e-mdx-query';\n/** @hidden */\nexport var MDX_QUERY_CONTENT = 'e-mdx-query-content';\n/** @hidden */\nexport var GRID_MDX_DIALOG = 'e-pivotview-mdx-dialog';\n/** @hidden */\nexport var GRID_MDX = 'e-mdx';\n/** @hidden */\nexport var FORMATTING_DIALOG = 'e-pivot-format-dialog';\n/** @hidden */\nexport var FORMATTING_DIALOG_OUTER = 'e-pivot-format-dialog-outer';\n/** @hidden */\nexport var FORMATTING_VALUE_LABLE = 'e-pivot-format-value-lable';\n/** @hidden */\nexport var FORMATTING_VALUE_DROP = 'e-pivot-format-value-drop';\n/** @hidden */\nexport var FORMATTING_FORMAT_LABLE = 'e-pivot-format-lable';\n/** @hidden */\nexport var FORMATTING_FORMAT_DROP = 'e-pivot-format-drop';\n/** @hidden */\nexport var FORMATTING_CUSTOM_LABLE = 'e-pivot-format-custom-lable';\n/** @hidden */\nexport var FORMATTING_CUSTOM_TEXT = 'e-pivot-format-custom-text';\n/** @hidden */\nexport var FORMATTING_SYMBOL_LABLE = 'e-pivot-format-symbol-lable';\n/** @hidden */\nexport var FORMATTING_SYMBOL_DROP = 'e-pivot-format-symbol-drop';\n/** @hidden */\nexport var FORMATTING_GROUPING_LABLE = 'e-pivot-format-grouping-lable';\n/** @hidden */\nexport var FORMATTING_GROUPING_DROP = 'e-pivot-format-grouping-drop';\n/** @hidden */\nexport var FORMATTING_DECIMAL_LABLE = 'e-pivot-format-decimal-lable';\n/** @hidden */\nexport var FORMATTING_DECIMAL_DROP = 'e-pivot-format-decimal-drop';\n/** @hidden */\nexport var FORMATTING_TOOLBAR = 'e-pivot-format-toolbar';\n/** @hidden */\nexport var FORMATTING_TABLE = 'e-pivot-format-table';\n/** @hidden */\nexport var FORMATTING_MENU = 'e-pivot-format-menu';\n/** @hidden */\nexport var NUMBER_FORMATTING_MENU = 'e-pivot-number-format-menu';\n/** @hidden */\nexport var EMPTY_FORMAT = 'e-pivot-conditional-empty-format';\n/** @hidden */\nexport var CONDITIONAL_FORMATTING_MENU = 'e-pivot-conditional-format-menu';\n/** @hidden */\nexport var PIVOTCHART_INNER = 'e-pivotchart-inner';\n/** @hidden */\nexport var PIVOTCHART_TYPE_DIALOG = 'e-pivotchart-type-dialog';\n/** @hidden */\nexport var FORMAT_FONT_COLOR_PICKER = 'e-format-font-color-picker';\n/** @hidden */\nexport var GROUP_PIVOT_ROW = 'e-group-pivot-rows';\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportdetaildatabound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshVirtualCacheOnRowDD = 'refresh-Virtual-Cache-On-RowDD';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, isBlazor, Browser, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[i].columns) {\n for (var j = 0; j < gridColumns[i].columns.length; j++) {\n exportColumns[i].columns[j].type = gridColumns[i].columns[j].type;\n }\n }\n else {\n exportColumns[i].type = gridColumns[i].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n }\n else if (!actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n if (!actualRows[i].isExpand && actualRows[i].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[i], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[agrCnt]) && val[agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[agrCnt])) :\n (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[agrCnt])) + val[agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[gSummary] * (gLen - val.indent)) + val[agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[items].length; i < len; i++) {\n var gLevel = val.data[items][i];\n count += gLevel[items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[items][records]) ? gLevel[items][records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[items][records]) && !isNullOrUndefined(val[agrCnt])) ? gLevel[items][records].length :\n gLevel[items].length;\n if (gLevel[items].GroupGuid && gLevel[items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[items].length;\n if (!isNullOrUndefined(val[agrCnt])) {\n if (val[agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[agrCnt]) + val[agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[items].length; j < length_1; j++) {\n var nLevel = row[items][j];\n count += nLevel[rCount];\n if (nLevel[items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[i], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[i]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[i]) !== -1) {\n delete moved[values[i]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[i].columns) {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n ind = setColumnIndex(columnModel[i].columns, ind);\n }\n else {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[c] === 'string') {\n column = new Column({ field: columns[c] }, gObj);\n }\n else if (!(columns[c] instanceof Column)) {\n if (!columns[c].columns) {\n column = new Column(columns[c], gObj);\n }\n else {\n columns[c].columns = prepareColumns(columns[c].columns, null, gObj);\n column = new Column(columns[c], gObj);\n }\n }\n else {\n column = columns[c];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[c] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[i].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[i].hasOwnProperty('properties')) {\n coll.push(collection[i].properties);\n }\n else {\n coll.push(collection[i]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[i]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[i]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[i].classList.add(clName);\n }\n else {\n elem[i].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @param {boolean} isServerRendered - Defines is server rendered or not\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column, isServerRendered) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime') {\n args = { type: column.type, skeleton: column.format };\n if (isBlazor() && isServerRendered) {\n var isServer = 'isServerRendered';\n args[isServer] = isServerRendered;\n }\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[i], args.slice(), []);\n cells[i].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[i], [], args.slice());\n cells[i].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[i] in temp)) {\n res.push(result[i].toString());\n temp[result[i]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[i].field, getForeignData(columns[i], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[i].column.field, row.foreignKeyData), cells[i]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value)) {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {Element} ele - Defines the element\n * @param {number} frzCols - Defines the frozen columns\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'date', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'dateTime', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[index] = {};\n obj[index].isExpand = true;\n obj[index].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[index].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[key] = getActualProperties(gObj[key]);\n }\n }\n printGridModel['enableHover'] = false;\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[i]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[i];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[i_1]];\n var cpy = obj1[keys[i_1]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[i_1]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[i_1]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[i_1]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[i], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[i] = checkDepth(col.columns[i], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[j]) {\n max = indices[j];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n var uid_1 = gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[i].field).uid\n : gObj.getColumnByField(filteredCols[i].field).uid;\n filteredCols[i].uid = filteredCols[i].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[i].field, gObj.getForeignKeyColumns()).uid\n : uid_1;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {HTMLElement} mTD - Defines the movable TD\n * @param {HTMLElement} fTD - Defines the Frozen TD\n * @returns {void}\n * @hidden\n */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.' + literals.row).getBoundingClientRect().height;\n var fHeight = closest(fTD, '.' + literals.row).getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (e[keyField] === data[keyField]) {\n dataIndex = index;\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[i].width)) {\n undefinedWidthCol++;\n }\n else if (columns[i].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) && Browser.info.name !== 'chrome'\n && !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].isDataRow) {\n rows[i].index = startIndex;\n rows[i].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[i].setAttribute(literals.ariaRowIndex, startIndex.toString());\n if (rows[i].isAltRow) {\n rowElms[i].classList.add('e-altrow');\n }\n else {\n rowElms[i].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[i].cells.length; j++) {\n rowElms[i].cells[j].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {number} index - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function resetRowObjectIndex(gObj, rows, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n rows[i].index = startIndex;\n startIndex++;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[type].concat(changes[type]).reduce(function (r, o) {\n r[o[keyField]] = r[o[keyField]] === undefined ? o : Object.assign(r[o[keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[type] = Object.keys(newArray).map(function (k) { return newArray[k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === literals.leftRight ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Cell} cells - Defines the callback function\n * @param {freezeTable} tableName - Defines the row\n * @returns {Cell[]} Returns the cell\n * @hidden\n */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === literals.frozenLeft) {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === literals.frozenRight) {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n if (rowObj) {\n callBack(literals.frozenLeft, rows[0], rowObj[0]);\n }\n else {\n callBack(literals.frozenLeft, rows[0]);\n }\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n if (rowObj) {\n callBack('movable', rows[1], rowObj[1]);\n }\n else {\n callBack('movable', rows[1]);\n }\n }\n if ((gObj.getFrozenMode() === literals.leftRight || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n if (rowObj) {\n callBack(literals.frozenRight, rows[2], rowObj[2]);\n }\n else {\n callBack(literals.frozenRight, rows[2]);\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Row} Returns the row\n * @hidden\n */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[k]);\n k--;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[rowIndex].getElementsByClassName(literals.rowCell));\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n return [].slice.call(gObj.getFrozenRightDataRows()[rowIndex].getElementsByClassName(literals.rowCell));\n }\n else {\n return [].slice.call(gObj.getDataRows()[rowIndex].getElementsByClassName(literals.rowCell));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === literals.frozenRight\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[index];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === literals.leftRight) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\n/**\n * @param {Element} tbody - Table body\n * @param {Element} mTbody - Movanle table body\n * @param {Element} frTbody - Frozen right table body\n * @param {Element[]} tr - Table rows\n * @param {Element[]} mTr - Movable table rows\n * @param {Element[]} frTr - Frozen right table rows\n * @param {Function} callBack - Callback function\n * @returns {void}\n * @hidden\n */\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[i].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[i]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[i]].querySelectorAll('td.e-rowcell')[idx];\n if (tr[trs[i]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[i]].querySelectorAll('td.e-rowcell')[idx], { 'display': displayVal });\n if (tr[trs[i]].querySelectorAll('td.e-rowcell')[idx].classList.contains('e-hide')) {\n removeClass([tr[trs[i]].querySelectorAll('td.e-rowcell')[idx]], ['e-hide']);\n }\n if (isContent && parent.isRowDragable()) {\n var index = parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[i]].cells[index].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[i]].cells[idx].visible = displayVal === '' ? true : false;\n }\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\n/**\n * This is a file to perform common utility for OLAP and Relational datasource\n * @hidden\n */\nvar PivotUtil = /** @class */ (function () {\n function PivotUtil() {\n }\n PivotUtil.getType = function (value) {\n var val;\n var dateValue = new Date(value);\n if (typeof value === 'boolean') {\n val = 'boolean';\n }\n else if (!isNaN(Number(value))) {\n val = 'number';\n }\n else if (dateValue instanceof Date && !isNaN(dateValue.valueOf())) {\n val = (dateValue && dateValue.getDay() && (dateValue.getHours() > 0 || dateValue.getMinutes() > 0 ||\n dateValue.getSeconds() > 0 || dateValue.getMilliseconds() > 0) ? 'datetime' : 'date');\n }\n else {\n val = typeof (value);\n ;\n }\n return val;\n };\n PivotUtil.resetTime = function (date) {\n date.setHours(0, 0, 0, 0);\n return date;\n };\n /* eslint-disable */\n PivotUtil.getClonedData = function (data) {\n var clonedData = [];\n if (data) {\n for (var _i = 0, _a = data; _i < _a.length; _i++) {\n var item = _a[_i];\n var fields = Object.keys(item);\n /* eslint-enable */\n var keyPos = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n var framedSet = {};\n /* eslint-enable @typescript-eslint/no-explicit-any */\n while (keyPos < fields.length) {\n framedSet[fields[keyPos]] = item[fields[keyPos]];\n keyPos++;\n }\n clonedData.push(framedSet);\n }\n }\n return clonedData;\n };\n PivotUtil.getClonedPivotValues = function (pivotValues) {\n var clonedSets = [];\n for (var i = 0; i < pivotValues.length; i++) {\n if (pivotValues[i]) {\n clonedSets[i] = [];\n for (var j = 0; j < pivotValues[i].length; j++) {\n if (pivotValues[i][j]) {\n /* eslint-disable */\n clonedSets[i][j] = this.getClonedPivotValueObj(pivotValues[i][j]);\n /* eslint-enable */\n }\n }\n }\n }\n return clonedSets;\n };\n /* eslint-disable */\n PivotUtil.getClonedPivotValueObj = function (data) {\n /* eslint-enable */\n var keyPos = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n var framedSet = {};\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (!(data === null || data === undefined)) {\n var fields = Object.keys(data);\n while (keyPos < fields.length) {\n framedSet[fields[keyPos]] = data[fields[keyPos]];\n keyPos++;\n }\n }\n else {\n framedSet = data;\n }\n return framedSet;\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n PivotUtil.getDefinedObj = function (data) {\n var keyPos = 0;\n var framedSet = {};\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (!(data === null || data === undefined)) {\n var fields = Object.keys(data);\n while (keyPos < fields.length) {\n if (!(data[fields[keyPos]] === null || data[fields[keyPos]] === undefined)) {\n framedSet[fields[keyPos]] = data[fields[keyPos]];\n }\n keyPos++;\n }\n }\n else {\n framedSet = data;\n }\n return framedSet;\n };\n /* eslint-disable */\n PivotUtil.inArray = function (value, collection) {\n /* eslint-enable */\n if (collection) {\n for (var i = 0, cnt = collection.length; i < cnt; i++) {\n if (collection[i] === value) {\n return i;\n }\n }\n }\n return -1;\n };\n /* eslint-disable */\n PivotUtil.isContainCommonElements = function (collection1, collection2) {\n /* eslint-enable */\n for (var i = 0, cnt = collection1.length; i < cnt; i++) {\n for (var j = 0, lnt = collection2.length; j < lnt; j++) {\n if (collection2[j] === collection1[i]) {\n return true;\n }\n }\n }\n return false;\n };\n /* eslint-disable */\n PivotUtil.setPivotProperties = function (control, properties) {\n /* eslint-enable */\n control.allowServerDataBinding = false;\n if (control.pivotGridModule) {\n control.pivotGridModule.allowServerDataBinding = false;\n }\n control.setProperties(properties, true);\n control.allowServerDataBinding = true;\n if (control.pivotGridModule) {\n control.pivotGridModule.allowServerDataBinding = true;\n }\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n PivotUtil.getClonedDataSourceSettings = function (dataSourceSettings) {\n var clonesDataSource = this.getDefinedObj({\n type: dataSourceSettings.type,\n catalog: dataSourceSettings.catalog,\n cube: dataSourceSettings.cube,\n providerType: dataSourceSettings.providerType,\n url: dataSourceSettings.url,\n localeIdentifier: dataSourceSettings.localeIdentifier,\n excludeFields: isNullOrUndefined(dataSourceSettings.excludeFields) ? [] : dataSourceSettings.excludeFields.slice(),\n expandAll: dataSourceSettings.expandAll,\n allowLabelFilter: dataSourceSettings.allowLabelFilter,\n allowValueFilter: dataSourceSettings.allowValueFilter,\n allowMemberFilter: dataSourceSettings.allowMemberFilter,\n enableSorting: dataSourceSettings.enableSorting ? true : false,\n rows: this.cloneFieldSettings(dataSourceSettings.rows),\n columns: this.cloneFieldSettings(dataSourceSettings.columns),\n filters: this.cloneFieldSettings(dataSourceSettings.filters),\n values: this.cloneFieldSettings(dataSourceSettings.values),\n filterSettings: this.cloneFilterSettings(dataSourceSettings.filterSettings),\n sortSettings: this.cloneSortSettings(dataSourceSettings.sortSettings),\n drilledMembers: this.cloneDrillMemberSettings(dataSourceSettings.drilledMembers),\n valueSortSettings: this.CloneValueSortObject(dataSourceSettings.valueSortSettings),\n valueAxis: dataSourceSettings.valueAxis,\n formatSettings: this.cloneFormatSettings(dataSourceSettings.formatSettings),\n calculatedFieldSettings: this.cloneCalculatedFieldSettings(dataSourceSettings.calculatedFieldSettings),\n fieldMapping: this.cloneFieldSettings(dataSourceSettings.fieldMapping),\n showSubTotals: dataSourceSettings.showSubTotals,\n showRowSubTotals: dataSourceSettings.showRowSubTotals,\n showColumnSubTotals: dataSourceSettings.showColumnSubTotals,\n showGrandTotals: dataSourceSettings.showGrandTotals,\n showRowGrandTotals: dataSourceSettings.showRowGrandTotals,\n showColumnGrandTotals: dataSourceSettings.showColumnGrandTotals,\n showHeaderWhenEmpty: dataSourceSettings.showHeaderWhenEmpty,\n alwaysShowValueHeader: dataSourceSettings.alwaysShowValueHeader,\n conditionalFormatSettings: this.cloneConditionalFormattingSettings(dataSourceSettings.conditionalFormatSettings),\n emptyCellsTextContent: dataSourceSettings.emptyCellsTextContent,\n groupSettings: this.cloneGroupSettings(dataSourceSettings.groupSettings),\n showAggregationOnValueField: dataSourceSettings.showAggregationOnValueField,\n authentication: this.CloneAuthenticationObject(dataSourceSettings.authentication)\n /* eslint-disable @typescript-eslint/no-explicit-any */\n });\n /* eslint-enable @typescript-eslint/no-explicit-any */\n return clonesDataSource;\n };\n PivotUtil.updateDataSourceSettings = function (control, dataSourceSettings) {\n if (control) {\n this.setPivotProperties(control, {\n dataSourceSettings: this.getDefinedObj({\n type: dataSourceSettings.type,\n catalog: dataSourceSettings.catalog,\n cube: dataSourceSettings.cube,\n providerType: dataSourceSettings.providerType,\n url: dataSourceSettings.url,\n localeIdentifier: dataSourceSettings.localeIdentifier,\n excludeFields: isNullOrUndefined(dataSourceSettings.excludeFields) ? [] : dataSourceSettings.excludeFields,\n expandAll: dataSourceSettings.expandAll,\n allowLabelFilter: dataSourceSettings.allowLabelFilter,\n allowValueFilter: dataSourceSettings.allowValueFilter,\n allowMemberFilter: dataSourceSettings.allowMemberFilter,\n enableSorting: dataSourceSettings.enableSorting ? true : false,\n rows: dataSourceSettings.rows,\n columns: dataSourceSettings.columns,\n filters: dataSourceSettings.filters,\n values: dataSourceSettings.values,\n filterSettings: dataSourceSettings.filterSettings,\n sortSettings: dataSourceSettings.sortSettings,\n drilledMembers: dataSourceSettings.drilledMembers,\n valueSortSettings: dataSourceSettings.valueSortSettings,\n valueAxis: dataSourceSettings.valueAxis,\n formatSettings: dataSourceSettings.formatSettings,\n calculatedFieldSettings: dataSourceSettings.calculatedFieldSettings,\n fieldMapping: dataSourceSettings.fieldMapping,\n showSubTotals: dataSourceSettings.showSubTotals,\n showRowSubTotals: dataSourceSettings.showRowSubTotals,\n showColumnSubTotals: dataSourceSettings.showColumnSubTotals,\n showGrandTotals: dataSourceSettings.showGrandTotals,\n showRowGrandTotals: dataSourceSettings.showRowGrandTotals,\n showColumnGrandTotals: dataSourceSettings.showColumnGrandTotals,\n showHeaderWhenEmpty: dataSourceSettings.showHeaderWhenEmpty,\n alwaysShowValueHeader: dataSourceSettings.alwaysShowValueHeader,\n conditionalFormatSettings: dataSourceSettings.conditionalFormatSettings,\n emptyCellsTextContent: dataSourceSettings.emptyCellsTextContent,\n groupSettings: dataSourceSettings.groupSettings,\n showAggregationOnValueField: dataSourceSettings.showAggregationOnValueField,\n authentication: this.CloneAuthenticationObject(dataSourceSettings.authentication)\n /* eslint-disable @typescript-eslint/no-explicit-any */\n })\n /* eslint-enable @typescript-eslint/no-explicit-any */\n });\n }\n };\n PivotUtil.cloneFieldSettings = function (collection) {\n if (collection) {\n var clonedCollection = [];\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var set = collection_1[_i];\n clonedCollection.push(this.getDefinedObj({\n name: set.name,\n caption: set.caption,\n axis: set.axis,\n baseField: set.baseField,\n baseItem: set.baseItem,\n isCalculatedField: set.isCalculatedField,\n isNamedSet: set.isNamedSet,\n showNoDataItems: set.showNoDataItems,\n showSubTotals: set.showSubTotals,\n type: set.type,\n dataType: set.dataType,\n showFilterIcon: set.showFilterIcon,\n showSortIcon: set.showSortIcon,\n showRemoveIcon: set.showRemoveIcon,\n showValueTypeIcon: set.showValueTypeIcon,\n showEditIcon: set.showEditIcon,\n allowDragAndDrop: set.allowDragAndDrop\n /* eslint-disable @typescript-eslint/no-explicit-any */\n }));\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n PivotUtil.cloneFilterSettings = function (collection) {\n if (collection) {\n var clonedCollection = [];\n for (var _i = 0, collection_2 = collection; _i < collection_2.length; _i++) {\n var set = collection_2[_i];\n clonedCollection.push(this.getDefinedObj({\n name: set.name,\n type: set.type,\n condition: set.condition,\n items: set.items ? set.items.slice() : set.items,\n levelCount: set.levelCount,\n measure: set.measure,\n selectedField: set.selectedField,\n showDateFilter: set.showDateFilter,\n showLabelFilter: set.showLabelFilter,\n showNumberFilter: set.showNumberFilter,\n value1: set.value1,\n value2: set.value2\n /* eslint-disable @typescript-eslint/no-explicit-any */\n }));\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n PivotUtil.cloneSortSettings = function (collection) {\n if (collection) {\n var clonedCollection = [];\n for (var _i = 0, collection_3 = collection; _i < collection_3.length; _i++) {\n var set = collection_3[_i];\n clonedCollection.push(this.getDefinedObj({\n name: set.name,\n order: set.order\n /* eslint-disable @typescript-eslint/no-explicit-any */\n }));\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n PivotUtil.cloneDrillMemberSettings = function (collection) {\n if (collection) {\n var clonedCollection = [];\n for (var _i = 0, collection_4 = collection; _i < collection_4.length; _i++) {\n var set = collection_4[_i];\n clonedCollection.push(this.getDefinedObj({\n name: set.name,\n delimiter: set.delimiter,\n items: set.items ? set.items.slice() : set.items\n /* eslint-disable @typescript-eslint/no-explicit-any */\n }));\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n PivotUtil.cloneFormatSettings = function (collection) {\n if (collection) {\n var clonedCollection = [];\n for (var _i = 0, collection_5 = collection; _i < collection_5.length; _i++) {\n var set = collection_5[_i];\n clonedCollection.push(this.getDefinedObj({\n name: set.name,\n calendar: set.calendar,\n currency: set.currency,\n format: set.format,\n maximumFractionDigits: set.maximumFractionDigits,\n maximumSignificantDigits: set.maximumSignificantDigits,\n minimumFractionDigits: set.minimumFractionDigits,\n minimumIntegerDigits: set.minimumIntegerDigits,\n minimumSignificantDigits: set.minimumSignificantDigits,\n skeleton: set.skeleton,\n type: set.type,\n useGrouping: set.useGrouping\n /* eslint-disable @typescript-eslint/no-explicit-any */\n }));\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n /* eslint-disable */\n PivotUtil.CloneValueSortObject = function (collection) {\n /* eslint-enable */\n if (collection) {\n var clonedCollection = {\n columnIndex: collection.columnIndex,\n headerDelimiter: collection.headerDelimiter,\n headerText: collection.headerText,\n measure: collection.measure,\n sortOrder: collection.sortOrder\n };\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n /* eslint-disable */\n PivotUtil.CloneAuthenticationObject = function (collection) {\n /* eslint-enable */\n if (collection) {\n var clonedCollection = {\n userName: collection.userName,\n password: collection.password\n };\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n PivotUtil.cloneCalculatedFieldSettings = function (collection) {\n if (collection) {\n var clonedCollection = [];\n for (var _i = 0, collection_6 = collection; _i < collection_6.length; _i++) {\n var set = collection_6[_i];\n clonedCollection.push(this.getDefinedObj({\n name: set.name,\n formatString: set.formatString,\n formula: set.formula,\n hierarchyUniqueName: set.hierarchyUniqueName\n /* eslint-disable @typescript-eslint/no-explicit-any */\n }));\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n PivotUtil.cloneConditionalFormattingSettings = function (collection) {\n if (collection) {\n var clonedCollection = [];\n for (var _i = 0, collection_7 = collection; _i < collection_7.length; _i++) {\n var set = collection_7[_i];\n clonedCollection.push(this.getDefinedObj({\n applyGrandTotals: set.applyGrandTotals,\n conditions: set.conditions,\n label: set.label,\n measure: set.measure,\n style: set.style ? {\n backgroundColor: set.style.backgroundColor,\n color: set.style.color,\n fontFamily: set.style.fontFamily,\n fontSize: set.style.fontSize\n } : set.style,\n value1: set.value1,\n value2: set.value2\n /* eslint-disable @typescript-eslint/no-explicit-any */\n }));\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n PivotUtil.cloneGroupSettings = function (collection) {\n if (collection) {\n var clonedCollection = [];\n for (var _i = 0, collection_8 = collection; _i < collection_8.length; _i++) {\n var set = collection_8[_i];\n clonedCollection.push(this.getDefinedObj({\n name: set.name,\n caption: set.caption,\n customGroups: this.cloneCustomGroups(set.customGroups),\n endingAt: set.endingAt,\n startingAt: set.startingAt,\n groupInterval: set.groupInterval,\n rangeInterval: set.rangeInterval,\n type: set.type\n /* eslint-disable @typescript-eslint/no-explicit-any */\n }));\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n PivotUtil.cloneCustomGroups = function (collection) {\n if (collection) {\n var clonedCollection = [];\n for (var _i = 0, collection_9 = collection; _i < collection_9.length; _i++) {\n var set = collection_9[_i];\n clonedCollection.push(this.getDefinedObj({\n groupName: set.groupName,\n items: set.items ? set.items.slice() : set.items\n /* eslint-disable @typescript-eslint/no-explicit-any */\n }));\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n return clonedCollection;\n }\n else {\n return collection;\n }\n };\n PivotUtil.getFilterItemByName = function (fieldName, fields) {\n var filterItems = new DataManager({ json: fields }).executeLocal(new Query().where('name', 'equal', fieldName));\n if (filterItems && filterItems.length > 0) {\n return filterItems[filterItems.length - 1];\n }\n return undefined;\n };\n PivotUtil.getFieldByName = function (fieldName, fields) {\n return new DataManager({ json: fields }).executeLocal(new Query().where('name', 'equal', fieldName))[0];\n };\n PivotUtil.getFieldInfo = function (fieldName, control) {\n var rows = this.cloneFieldSettings(control.dataSourceSettings.rows);\n var columns = this.cloneFieldSettings(control.dataSourceSettings.columns);\n var values = this.cloneFieldSettings(control.dataSourceSettings.values);\n var filters = this.cloneFieldSettings(control.dataSourceSettings.filters);\n var fields = [rows, columns, values, filters];\n for (var i = 0, len = fields.length; i < len; i++) {\n for (var j = 0, cnt = (fields[i] ? fields[i].length : 0); j < cnt; j++) {\n if (fields[i][j] && fields[i][j].name === fieldName) {\n return { fieldName: fieldName, fieldItem: fields[i][j], axis: i === 0 ? 'rows' : i === 1 ? 'columns' : i === 2 ? 'values' : 'filters', position: j };\n }\n }\n }\n var fieldList = control.dataType === 'olap' ?\n control.olapEngineModule.fieldList[fieldName] : control.engineModule.fieldList[fieldName];\n var fieldItem = (fieldList ? {\n name: fieldName,\n caption: fieldList.caption,\n baseField: fieldList.baseField,\n baseItem: fieldList.baseItem,\n isCalculatedField: fieldList.isCalculatedField,\n isNamedSet: fieldList.isNamedSets,\n showNoDataItems: fieldList.showNoDataItems,\n showSubTotals: fieldList.showSubTotals,\n type: fieldList.aggregateType,\n showFilterIcon: fieldList.showFilterIcon,\n showSortIcon: fieldList.showSortIcon,\n showRemoveIcon: fieldList.showRemoveIcon,\n showValueTypeIcon: fieldList.showValueTypeIcon,\n showEditIcon: fieldList.showEditIcon,\n allowDragAndDrop: fieldList.allowDragAndDrop\n } : undefined);\n return { fieldName: fieldName, fieldItem: fieldItem, axis: 'fieldlist', position: -1 };\n };\n PivotUtil.isButtonIconRefesh = function (prop, oldProp, newProp) {\n var isButtonRefresh = false;\n try {\n if (prop === 'dataSourceSettings' && oldProp.dataSourceSettings && newProp.dataSourceSettings) {\n var propValidation = ['notAvail', 'notAvail', 'notAvail', 'notAvail'];\n var oldAxesProp = Object.keys(oldProp.dataSourceSettings);\n var newAxesProp = Object.keys(newProp.dataSourceSettings);\n if (oldAxesProp && newAxesProp && newAxesProp.length > 0 && oldAxesProp.length === newAxesProp.length) {\n var axes = ['rows', 'columns', 'values', 'filters'];\n /* eslint-disable @typescript-eslint/no-explicit-any */\n for (var i = 0; i < newAxesProp.length; i++) {\n var oldAxis = (newAxesProp[i] in oldProp.dataSourceSettings && !isNullOrUndefined(oldProp.dataSourceSettings[newAxesProp[i]])) ? Object.keys(oldProp.dataSourceSettings[newAxesProp[i]]) : []; /* eslint-disable-line */\n var newAxis = (newAxesProp[i] in newProp.dataSourceSettings && !isNullOrUndefined(newProp.dataSourceSettings[newAxesProp[i]])) ? /* eslint-disable-line */\n Object.keys(newProp.dataSourceSettings[newAxesProp[i]]) : [];\n if (axes.indexOf(newAxesProp[i]) !== -1 && axes.indexOf(oldAxesProp[i]) !== -1 &&\n oldAxis && newAxis && newAxis.length > 0 && oldAxis.length === newAxis.length) {\n var options = ['showFilterIcon', 'showSortIcon', 'showRemoveIcon', 'showValueTypeIcon', 'showEditIcon', 'allowDragAndDrop'];\n for (var j = 0; j < newAxis.length; j++) {\n var oldAxisProp = Object.keys(oldProp.dataSourceSettings[newAxesProp[i]][newAxis[j]]);\n var newAxisProp = Object.keys(newProp.dataSourceSettings[newAxesProp[i]][newAxis[j]]);\n for (var k = 0; k < newAxisProp.length; k++) {\n if (options.indexOf(newAxisProp[k]) !== -1 && options.indexOf(oldAxisProp[k]) !== -1) {\n propValidation[i] = 'update';\n }\n else {\n propValidation[i] = 'break';\n break;\n }\n }\n if (propValidation[i] === 'break') {\n break;\n }\n }\n }\n else {\n propValidation[i] = 'break';\n }\n if (propValidation[i] === 'break') {\n break;\n }\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n var a = 0;\n var b = 0;\n var c = 0;\n for (var _i = 0, propValidation_1 = propValidation; _i < propValidation_1.length; _i++) {\n var validation = propValidation_1[_i];\n if (validation === 'break') {\n a++;\n }\n if (validation === 'notAvail') {\n b++;\n }\n if (validation === 'update') {\n c++;\n }\n }\n isButtonRefresh = (a > 0 || b === 4) ? false : (a === 0 && b < 4 && c > 0);\n }\n }\n catch (exception) {\n isButtonRefresh = false;\n }\n return isButtonRefresh;\n };\n /* eslint-disable */\n PivotUtil.formatPivotValues = function (pivotValues) {\n var values = [];\n /* eslint-enable */\n for (var i = 0; i < pivotValues.length; i++) {\n if (pivotValues[i]) {\n values[i] = [];\n for (var j = 0; j < pivotValues[i].length; j++) {\n if (pivotValues[i][j]) {\n values[i][j] = {\n axis: pivotValues[i][j].Axis,\n actualText: pivotValues[i][j].ActualText,\n indexObject: pivotValues[i][j].IndexObject,\n index: pivotValues[i][j].Index,\n rowHeaders: pivotValues[i][j].RowHeaders,\n columnHeaders: pivotValues[i][j].ColumnHeaders,\n formattedText: pivotValues[i][j].FormattedText,\n actualValue: pivotValues[i][j].ActualValue,\n rowIndex: pivotValues[i][j].RowIndex,\n colIndex: pivotValues[i][j].ColIndex,\n colSpan: pivotValues[i][j].ColSpan,\n level: pivotValues[i][j].Level,\n rowSpan: pivotValues[i][j].RowSpan,\n isSum: pivotValues[i][j].IsSum,\n isGrandSum: pivotValues[i][j].IsGrandSum,\n valueSort: pivotValues[i][j].ValueSort,\n ordinal: pivotValues[i][j].Ordinal,\n hasChild: pivotValues[i][j].HasChild,\n isDrilled: pivotValues[i][j].IsDrilled,\n value: pivotValues[i][j].Value,\n type: pivotValues[i][j].Type,\n members: pivotValues[i][j].Members\n };\n }\n }\n }\n }\n return values;\n };\n /* eslint-disable */\n PivotUtil.formatPdfHeaderFooter = function (pdf) {\n var contents = [];\n if (!isNullOrUndefined(pdf)) {\n for (var i = 0; i < pdf.length; i++) {\n var a = pdf[i];\n var content = {\n /* eslint-enable */\n type: a.Type,\n pageNumberType: a.PageNumberType,\n style: a.Style ? {\n penColor: a.Style.PenColor,\n penSize: a.Style.PenSize,\n dashStyle: a.Style.DashStyle,\n textBrushColor: a.Style.TextBrushColor,\n textPenColor: a.Style.TextPenColor,\n fontSize: a.Style.FontSize,\n hAlign: a.Style.HAlign,\n vAlign: a.Style.VAlign\n } : a.Style,\n points: a.Points !== null ? {\n x1: a.Points.X1,\n y1: a.Points.Y1,\n x2: a.Points.X2,\n y2: a.Points.Y2\n } : null,\n format: a.Format,\n position: a.Position !== null ? {\n x: a.Position.X,\n y: a.Position.Y\n } : null,\n size: a.Size !== null ? {\n height: a.Size.Height,\n width: a.Size.Width\n } : null,\n src: a.Src,\n value: a.Value,\n font: a.Font\n };\n contents.push(content);\n }\n }\n return contents;\n };\n /* eslint-disable */\n PivotUtil.formatPdfExportProperties = function (pdf) {\n var values;\n /* eslint-enable */\n values = this.getDefinedObj({\n pageOrientation: typeof pdf.PageOrientation === 'string' ? pdf.PageOrientation : null,\n pageSize: typeof pdf.PageSize === 'string' ? pdf.PageSize : null,\n header: !isNullOrUndefined(pdf.Header) ? {\n fromTop: pdf.Header.FromTop,\n height: pdf.Header.Height,\n contents: this.formatPdfHeaderFooter(pdf.Header.Contents)\n } : null,\n columns: pdf.Columns,\n footer: !isNullOrUndefined(pdf.Footer) ? {\n fromTop: pdf.Footer.FromBottom,\n height: pdf.Footer.Height,\n contents: this.formatPdfHeaderFooter(pdf.Footer.Contents)\n } : null,\n includeHiddenColumn: pdf.IncludeHiddenColumn,\n dataSource: pdf.DataSource,\n exportType: typeof pdf.ExportType === 'string' ? pdf.ExportType : null,\n theme: !isNullOrUndefined(pdf.Theme) ? {\n header: pdf.Theme.Header,\n record: pdf.Theme.Record,\n caption: pdf.Theme.Caption\n } : null,\n fileName: pdf.FileName,\n hierarchyExportMode: typeof pdf.HierarchyExportMode === 'string' ? pdf.HierarchyExportMode : null,\n allowHorizontalOverflow: pdf.AllowHorizontalOverflow\n });\n return values;\n };\n /* eslint-disable */\n PivotUtil.formatExcelStyle = function (style) {\n var prop;\n /* eslint-enable */\n if (!isNullOrUndefined(style)) {\n prop = this.getDefinedObj({\n fontColor: style.FontColor,\n fontName: style.FontName,\n fontSize: style.FontSize,\n hAlign: style.HAlign === String ? style.HAlign : null,\n vAlign: style.VAlign === String ? style.VAlign : null,\n bold: style.Bold,\n indent: style.Indent,\n italic: style.Italic,\n underline: style.Underline,\n backColor: style.BackColor,\n wrapText: style.WrapText,\n borders: style.Borders,\n numberFormat: style.NumberFormat,\n type: style.Type\n });\n }\n return prop;\n };\n /* eslint-disable */\n PivotUtil.formatExcelCell = function (cell) {\n var cells = [];\n if (!isNullOrUndefined(cell)) {\n for (var i = 0; i < cell.length; i++) {\n this.getDefinedObj({\n index: !isNullOrUndefined(cell[i].Index) ? cell[i].Index : null,\n colSpan: !isNullOrUndefined(cell[i].ColSpan) ? cell[i].ColSpan : null,\n value: !isNullOrUndefined(cell[i].Value) ? cell[i].Value : null,\n hyperlink: {\n target: !isNullOrUndefined(cell[i].Hyperlink) ? cell[i].Hyperlink.Target : null,\n displayText: !isNullOrUndefined(cell[i].Hyperlink) ? cell[i].Hyperlink.DisplayText : null\n },\n styles: this.formatExcelStyle(cell[i].Style),\n rowSpan: !isNullOrUndefined(cell[i].RowSpan) ? cell[i].RowSpan : null\n });\n /* eslint-enable */\n }\n }\n return cells;\n };\n /* eslint-disable */\n PivotUtil.formatExcelHeaderFooter = function (excel) {\n var rows = [];\n if (!isNullOrUndefined(excel)) {\n for (var i = 0; i < excel.Rows.length; i++) {\n var row = excel.Rows[i];\n var prop = this.getDefinedObj({\n index: !isNullOrUndefined(row.Index) ? row.Index : null,\n cells: this.formatExcelCell(row.Cells),\n grouping: !isNullOrUndefined(row.Grouping) ? row.Grouping : null\n });\n rows.push(prop);\n }\n }\n return rows;\n };\n PivotUtil.formatExcelExportProperties = function (excel) {\n /* eslint-enable */\n var prop;\n prop = this.getDefinedObj({\n dataSource: excel.DataSource,\n query: excel.Query,\n multipleExport: this.getDefinedObj({\n type: !isNullOrUndefined(excel.MultipleExport) ? excel.MultipleExport.Type : null,\n blankRows: !isNullOrUndefined(excel.MultipleExport) ? excel.MultipleExport.BlankRows : null\n }),\n header: this.getDefinedObj({\n headerRows: !isNullOrUndefined(excel.Header) ? excel.Header.HeaderRows : null,\n rows: this.formatExcelHeaderFooter(excel.Header)\n }),\n footer: this.getDefinedObj({\n footerRows: !isNullOrUndefined(excel.Footer) ? excel.Footer.FooterRows : null,\n rows: this.formatExcelHeaderFooter(excel.Footer)\n }),\n columns: excel.Columns,\n exportType: typeof excel.ExportType === 'string' ? excel.ExportType : undefined,\n includeHiddenColumn: excel.IncludeHiddenColumn,\n theme: !isNullOrUndefined(excel.Theme) ? {\n header: this.formatExcelStyle(excel.Theme.Header),\n record: this.formatExcelStyle(excel.Theme.Record),\n caption: this.formatExcelStyle(excel.Theme.Caption)\n } : undefined,\n fileName: excel.FileName,\n hierarchyExportMode: typeof excel.HierarchyExportMode === 'string' ? excel.HierarchyExportMode : undefined\n });\n return prop;\n };\n /* eslint-disable */\n PivotUtil.formatFieldList = function (fieldList) {\n var keys = Object.keys(fieldList);\n var fList = {};\n for (var i = 0; i < keys.length; i++) {\n /* eslint-enable */\n if (fieldList[keys[i]]) {\n fList[keys[i]] = {\n id: fieldList[keys[i]].Id,\n caption: fieldList[keys[i]].Caption,\n type: fieldList[keys[i]].Type,\n formatString: fieldList[keys[i]].FormatString,\n index: fieldList[keys[i]].Index,\n members: fieldList[keys[i]].Members,\n formattedMembers: fieldList[keys[i]].FormattedMembers,\n dateMember: fieldList[keys[i]].DateMember,\n filter: fieldList[keys[i]].Filter,\n sort: fieldList[keys[i]].Sort,\n aggregateType: fieldList[keys[i]].AggregateType,\n baseField: fieldList[keys[i]].BaseField,\n baseItem: fieldList[keys[i]].BaseItem,\n filterType: fieldList[keys[i]].FilterType,\n format: fieldList[keys[i]].Format,\n formula: fieldList[keys[i]].Formula,\n isSelected: fieldList[keys[i]].IsSelected,\n isExcelFilter: fieldList[keys[i]].IsExcelFilter,\n showNoDataItems: fieldList[keys[i]].ShowNoDataItems,\n isCustomField: fieldList[keys[i]].IsCustomField,\n showFilterIcon: fieldList[keys[i]].ShowFilterIcon,\n showSortIcon: fieldList[keys[i]].ShowSortIcon,\n showRemoveIcon: fieldList[keys[i]].ShowRemoveIcon,\n showEditIcon: fieldList[keys[i]].ShowEditIcon,\n showValueTypeIcon: fieldList[keys[i]].ShowValueTypeIcon,\n allowDragAndDrop: fieldList[keys[i]].AllowDragAndDrop,\n isCalculatedField: fieldList[keys[i]].IsCalculatedField,\n showSubTotals: fieldList[keys[i]].ShowSubTotals\n };\n }\n }\n return fList;\n };\n /* eslint-disable */\n PivotUtil.frameContent = function (pivotValues, type, rowPosition, control) {\n var dataContent = [];\n var pivot = control;\n if (pivot.dataSourceSettings.values.length > 0 && !pivot.engineModule.isEmptyData) {\n if ((pivot.enableValueSorting) || !pivot.engineModule.isEngineUpdated) {\n var rowCnt = 0;\n var start = type === 'value' ? rowPosition : 0;\n var end = type === 'value' ? pivotValues.length : rowPosition;\n for (var rCnt = start; rCnt < end; rCnt++) {\n if (pivotValues[rCnt]) {\n rowCnt = type === 'header' ? rCnt : rowCnt;\n dataContent[rowCnt] = {};\n for (var cCnt = 0; cCnt < pivotValues[rCnt].length; cCnt++) {\n if (pivotValues[rCnt][cCnt]) {\n dataContent[rowCnt][cCnt] = pivotValues[rCnt][cCnt];\n }\n }\n rowCnt++;\n }\n }\n }\n }\n return dataContent;\n };\n PivotUtil.getLocalizedObject = function (control) {\n var locale = new Object();\n locale[\"Null\"] = control.localeObj.getConstant('null');\n locale[\"Years\"] = control.localeObj.getConstant('Years');\n locale[\"Quarters\"] = control.localeObj.getConstant('Quarters');\n locale[\"Months\"] = control.localeObj.getConstant('Months');\n locale[\"Days\"] = control.localeObj.getConstant('Days');\n locale[\"Hours\"] = control.localeObj.getConstant('Hours');\n locale[\"Minutes\"] = control.localeObj.getConstant('Minutes');\n locale[\"Seconds\"] = control.localeObj.getConstant('Seconds');\n locale[\"QuarterYear\"] = control.localeObj.getConstant('QuarterYear');\n locale[\"Of\"] = control.localeObj.getConstant('of');\n locale[\"Qtr\"] = control.localeObj.getConstant('qtr');\n locale[\"Undefined\"] = control.localeObj.getConstant('undefined');\n locale[\"GroupOutOfRange\"] = control.localeObj.getConstant('groupOutOfRange');\n locale[\"Group\"] = control.localeObj.getConstant('group');\n return locale;\n };\n PivotUtil.updateReport = function (control, report) {\n /* eslint-enable */\n control.setProperties({ dataSourceSettings: { rows: [] } }, true);\n control.setProperties({ dataSourceSettings: { columns: [] } }, true);\n control.setProperties({ dataSourceSettings: { formatSettings: [] } }, true);\n for (var i = 0; i < report.Rows.length; i++) {\n control.dataSourceSettings.rows.push({\n name: report.Rows[i].Name,\n caption: report.Rows[i].Caption,\n showNoDataItems: report.Rows[i].ShowNoDataItems,\n baseField: report.Rows[i].BaseField,\n baseItem: report.Rows[i].BaseItem,\n showFilterIcon: report.Rows[i].ShowFilterIcon,\n showSortIcon: report.Rows[i].ShowSortIcon,\n showEditIcon: report.Rows[i].ShowEditIcon,\n showRemoveIcon: report.Rows[i].ShowRemoveIcon,\n showSubTotals: report.Rows[i].ShowValueTypeIcon,\n allowDragAndDrop: report.Rows[i].AllowDragAndDrop,\n axis: report.Rows[i].Axis,\n dataType: report.Rows[i].DataType,\n isCalculatedField: report.Rows[i].IsCalculatedField,\n showValueTypeIcon: report.Rows[i].ShowValueTypeIcon,\n type: report.Rows[i].Type\n });\n }\n for (var i = 0; i < report.Columns.length; i++) {\n control.dataSourceSettings.columns.push({\n name: report.Columns[i].Name,\n caption: report.Columns[i].Caption,\n showNoDataItems: report.Columns[i].ShowNoDataItems,\n baseField: report.Columns[i].BaseField,\n baseItem: report.Columns[i].BaseItem,\n showFilterIcon: report.Columns[i].ShowFilterIcon,\n showSortIcon: report.Columns[i].ShowSortIcon,\n showEditIcon: report.Columns[i].ShowEditIcon,\n showRemoveIcon: report.Columns[i].ShowRemoveIcon,\n showSubTotals: report.Columns[i].ShowValueTypeIcon,\n allowDragAndDrop: report.Columns[i].AllowDragAndDrop,\n axis: report.Columns[i].Axis,\n dataType: report.Columns[i].DataType,\n isCalculatedField: report.Columns[i].IsCalculatedField,\n showValueTypeIcon: report.Columns[i].ShowValueTypeIcon,\n type: report.Columns[i].Type\n });\n }\n for (var i = 0; i < report.FormatSettings.length; i++) {\n control.dataSourceSettings.formatSettings.push({\n name: report.FormatSettings[i].Name,\n format: report.FormatSettings[i].Format,\n type: report.FormatSettings[i].Type,\n currency: report.FormatSettings[i].Currency,\n maximumFractionDigits: report.FormatSettings[i].MaximumFractionDigits,\n maximumSignificantDigits: report.FormatSettings[i].MaximumSignificantDigits,\n minimumFractionDigits: report.FormatSettings[i].MinimumFractionDigits,\n minimumIntegerDigits: report.FormatSettings[i].MinimumIntegerDigits,\n minimumSignificantDigits: report.FormatSettings[i].MinimumSignificantDigits,\n skeleton: report.FormatSettings[i].Skeleton,\n useGrouping: report.FormatSettings[i].UseGrouping\n });\n }\n };\n PivotUtil.generateUUID = function () {\n /* eslint-disable */\n var d = new Date().getTime();\n var d2 = (performance && performance.now && (performance.now() * 1000)) || 0;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16;\n if (d > 0) {\n r = (d + r) % 16 | 0;\n d = Math.floor(d / 16);\n }\n else {\n r = (d2 + r) % 16 | 0;\n d2 = Math.floor(d2 / 16);\n }\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n /* eslint-enable */\n };\n return PivotUtil;\n}());\nexport { PivotUtil };\n","/**\n * Specifies pivot external events\n * @hidden\n */\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var enginePopulating = 'enginePopulating';\n/** @hidden */\nexport var enginePopulated = 'enginePopulated';\n/** @hidden */\nexport var onFieldDropped = 'onFieldDropped';\n/** @hidden */\nexport var fieldDrop = 'fieldDrop';\n/** @hidden */\nexport var beforePivotTableRender = 'beforePivotTableRender';\n/** @hidden */\nexport var afterPivotTableRender = 'afterPivotTableRender';\n/** @hidden */\nexport var beforeExport = 'beforeExport';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var onPdfCellRender = 'onPdfCellRender';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var hyperlinkCellClick = 'hyperlinkCellClick';\n/** @hidden */\nexport var resizing = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var cellClick = 'cellClick';\n/** @hidden */\nexport var drillThrough = 'drillThrough';\n/** @hidden */\nexport var beforeColumnsRender = 'beforeColumnsRender';\n/** @hidden */\nexport var selected = 'selected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var drill = 'drill';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var beginDrillThrough = 'beginDrillThrough';\n/** @hidden */\nexport var editCompleted = 'editCompleted';\n/** @hidden */\nexport var multiLevelLabelClick = 'multiLevelLabelClick';\n/** @hidden */\nexport var saveReport = 'saveReport';\n/** @hidden */\nexport var fetchReport = 'fetchReport';\n/** @hidden */\nexport var loadReport = 'loadReport';\n/** @hidden */\nexport var renameReport = 'renameReport';\n/** @hidden */\nexport var removeReport = 'removeReport';\n/** @hidden */\nexport var newReport = 'newReport';\n/** @hidden */\nexport var toolbarRender = 'toolbarRender';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var chartTooltipRender = 'chartTooltipRender';\n/** @hidden */\nexport var chartLoaded = 'chartLoaded';\n/** @hidden */\nexport var chartLoad = 'chartLoad';\n/** @hidden */\nexport var chartResized = 'chartResized';\n/** @hidden */\nexport var chartAxisLabelRender = 'chartAxisLabelRender';\n/** @hidden */\nexport var chartSeriesCreated = 'chartSeriesCreated';\n/** @hidden */\nexport var aggregateCellInfo = 'aggregateCellInfo';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var fieldListRefreshed = 'fieldListRefreshed';\n/** @hidden */\nexport var conditionalFormatting = 'conditionalFormatting';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var memberFiltering = 'memberFiltering';\n/** @hidden */\nexport var calculatedFieldCreate = 'calculatedFieldCreate';\n/** @hidden */\nexport var memberEditorOpen = 'memberEditorOpen';\n/** @hidden */\nexport var fieldRemove = 'fieldRemove';\n/** @hidden */\nexport var numberFormatting = 'numberFormatting';\n/** @hidden */\nexport var aggregateMenuOpen = 'aggregateMenuOpen';\n/** @hidden */\nexport var fieldDragStart = 'fieldDragStart';\n/** @hidden */\nexport var chartPointClick = 'chartPointClick';\n/** @hidden */\nexport var beforeServiceInvoke = 'beforeServiceInvoke';\n/**\n * Specifies pivot internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var initSubComponent = 'init-groupingbar';\n/** @hidden */\nexport var treeViewUpdate = 'tree-view-update';\n/** @hidden */\nexport var pivotButtonUpdate = 'pivot-button-update';\n/** @hidden */\nexport var initCalculatedField = 'init-calculatedfield';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var initToolbar = 'init-toolbar';\n/** @hidden */\nexport var initFormatting = 'init-formatting';\n/** @hidden */\nexport var initGrouping = 'init-grouping';\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string starts with given string.\n * @param {string} str\n * @param {string} startstr\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * To return the sorting function based on the string.\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n return from[nameSpace];\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n * @param {Object[]} json\n * @param {string} field\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n * @param {string} er\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n * @param {Object[]} ds\n * @param {string} field?\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the given input value is not null.\n * @param {string|number} actual\n * @returns boolean\n */\n notnull: function (actual) {\n return actual !== null;\n },\n /**\n * Returns true when the given input value is null.\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null;\n },\n /**\n * Returns true when the actual input starts with the given string\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n * @param {string} value\n */\n isGuid: function (value) {\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n * @param {string} key\n * @param {Object} val\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","module.exports = require('./lib/axios');","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton && args.element.tagName !== 'TEXTAREA') {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons) && args.element.tagName !== 'TEXTAREA') {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n if (inputValue !== '' && !isNullOrUndefined(inputValue) && inputElement.parentElement) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button) {\n if (value) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function updateLabelState(value, label) {\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n if (!isNullOrUndefined(container) &&\n container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([container], CLASSNAMES.INPUTGROUP);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder, 'aria-placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n element.removeAttribute('aria-placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[key];\n }\n else {\n element.setAttribute(key, attrs[key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n if (isNullOrUndefined(iconEle)) {\n container.classList.remove(CLASSNAMES.INPUTGROUP);\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[i].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[index].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[index].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n innerWrapper.appendChild(result[i]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","import { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.requests = [];\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Overrides DataManager's default query with given query.\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n (window.setImmediate || window.setTimeout)(fn, 0);\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests. \n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests. \n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n ;\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n ;\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","import { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n * @param {string|string[]} from?\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var isAnd;\n var ret;\n if (!this.isComplex && this.comparer) {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n isAnd = this.condition === 'and';\n for (var i = 0; i < predicate.length; i++) {\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","module.exports = require(\"regenerator-runtime\");\n","import { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox' } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string';\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[str], null, node);\n this.parent.renderTemplates();\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str]);\n }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + ' is template cell' + ' column header ' +\n cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n td.innerHTML = '';\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[cellIndex]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[i];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + ' column header ' + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, innerHtml, column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n node.setAttribute('aria-label', 'checkbox');\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n checkWrap.classList.add('e-checkbox-disabled');\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + ' column header ' + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.ariaColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n \n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a `\n );\n return (\n \n );\n }}\n \n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { isBlazor } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = (isBlazor() && !isNullOrUndefined(this.template) && isNullOrUndefined(this.field)) ? 'none' : null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || options.format.format)) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', isBlazor() ? ' ' : 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'columns') {\n col[keys[i]] = [];\n for (var j = 0; j < _this[keys[i]].length; j++) {\n col[keys[i]].push(_this[keys[i]][j].toJSON());\n }\n }\n else if (skip.indexOf(keys[i]) < 0) {\n col[keys[i]] = _this[keys[i]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function comparer(x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact && keys[i] === 'template') {\n this.parent.refreshReactColumnTemplateByUid(this.uid);\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n //eslint-disable-next-line\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n return elementRect.right + getBodyScrollLeft() - (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[i] = this.generateRow(data[i], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[index]) {\n options.isExpand = this.parent.expandedRows[index].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[i].field, getForeignData(foreignKeyColumns[i], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[i], options.uid, isNullOrUndefined(dummies[i].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[i]);\n input[i].cells = this.generateCells(input[i]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? args.startIndex : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n node.innerHTML = '';\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_1 = function (i, len) {\n var cell = row.cells[i];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[i].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[i], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[i].cellType !== CellType.Filter) {\n if (row.cells[i].cellType === CellType.Data || row.cells[i].cellType === CellType.CommandColumn) {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[i].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !this_1.parent.getRowsObject()[row.index - 1].isDataRow ?\n this_1.parent.getRowsObject()[row.index].cells : this_1.parent.getRowsObject()[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[i].column[uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[i].cellSpan > 1 || cellArgs.rowSpan > 1 || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[i].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_1(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n this.parent.trigger(rowDataBound, extend(rowArgs, args));\n if (this.parent.childGrid || this.parent.isRowDragable() || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.element.scrollHeight > this.parent.height && this.parent.aggregates.length) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[i][property][column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.ariaRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n // eslint-disable-next-line\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n // eslint-disable-next-line\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n // eslint-disable-next-line\n var compiledString = compile(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compile(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[category] = header.textContent;\n header.innerHTML = '';\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n var blazId = 'BlazId';\n if (options && !!options.removeBlazorID\n && typeof item === 'object'\n // eslint-disable-next-line no-prototype-builtins\n && item.hasOwnProperty(blazId)) {\n delete item[blazId];\n }\n if (grpLI && options && options.groupTemplate) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compile(options.groupTemplate);\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compile(options.template);\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[dataField] = value;\n }\n }\n }\n return fieldData;\n}\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n // eslint-disable-next-line\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER, 'role': role, 'aria-checked': 'false' });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[i].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end && !start ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[i], data[i], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = !start ? this.parent.getIndentCount() : 0;\n if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[i], summaryRow, i >= indentLength ? this.getCellType() :\n i < this.parent.groupSettings.columns.length ? CellType.Indent : CellType.DetailFooterIntent, indents[i], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[i].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[j], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[i].toLowerCase();\n var disp = column.columnName;\n var val = types[i] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[key] :\n calculateAggregate(types[i], group.aggregates ? group : data, column, this.parent);\n single[disp] = single[disp] || {};\n single[disp][key] = val;\n single[disp][types[i]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[disp].field = group.field;\n single[disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n * @param {DataOptions} ds?\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors \n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n * @param {Object[]} ds\n * @param {{field:string} e\n * @param {string}} type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n * @param {Object[]} ds\n * @param {{comparer:(a:Object} e\n * @param {Object} b\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n * @param {Object[]} ds\n * @param {{pageSize:number} e\n * @param {number}} pageIndex\n * @param {Query} query\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n * @param {Object[]} ds\n * @param {{start:number} e\n * @param {number}} end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = \"(\" + res + \")\";\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n operator = DataUtil.odBiOperator[predicate.operator];\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n selected[splits[0]].push(splits[1]);\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + _this.options.select + \"=\" + selected[expand].join(',') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n /**\n * Returns the groupby query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaName]) {\n var dataUrl = data[metaName].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation \n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data;\n data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n * @param {string} url\n * @param {Query} query?\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems;\n cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar reactUid = 0;\nvar isColEName = new RegExp('\\]');\n// tslint:disable\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n // tslint:disable-next-line:no-any\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.renderReactTemplates();\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n // tslint:disable-next-line:no-any\n /**\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n /**\n * @private\n */\n ComponentBase.prototype.updateProperties = function (nextProps, silent) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[propkey]) &&\n this.htmlattributes[propkey] !== dProps[propkey]) {\n this.htmlattributes[propkey] = dProps[propkey];\n }\n if (this.compareValues(this.props[propkey], nextProps[propkey])) {\n delete dProps[propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.element.classList.remove(this.props[propkey]);\n this.element.classList.add(dProps[propkey]);\n }\n else if (propkey !== 'disabled') {\n delete dProps[propkey];\n }\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || this.props.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n if (Object.keys(dProps).length) {\n if (!silent) {\n // tslint:disable-next-line:no-any\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n this.refreshChild(silent, nextProps);\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n var PropVal = compTemplate[prop];\n if (curObject[prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n var stringValue = [\"autocomplete\", \"dropdownlist\", \"combobox\"];\n if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n this.value = this.props[\"value\"];\n }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1) {\n if (this.htmlattributes[prop] !== this.props[prop]) {\n this.htmlattributes[prop] = this.props[prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n }\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n });\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[i];\n var newProp = newProps[i];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[key];\n var newValue = newProp[key];\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[key] = newValue;\n }\n if (!oldProp.hasOwnProperty(key) || !this.compareValues(newValue, oldValue)) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[key] = newValue;\n }\n }\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n var key = dKeys[i];\n if (!directiveValue.hasOwnProperty(key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[key], directiveValue[key], key);\n if (compareOutput.status) {\n delete directiveValue[key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[key] = directiveValue[key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[_c1]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[_c1].key + '.' + changedProps[_c1].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[_c1].value);\n }\n else {\n extend(propInstance, changedProps[_c1].value);\n }\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance_1 = getValue(changes.key + '.' + changes.index, this);\n if (propInstance_1 && propInstance_1.setProperties) {\n propInstance_1.setProperties(changes.value);\n }\n else {\n extend(propInstance_1, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && (!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true && !this.isDestroyed) {\n this.destroy();\n }\n };\n // tslint:disable:no-any \n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n ;\n // tslint:disable:no-any \n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var indexCount = 0;\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (index && _this.portals[tempPortal[index[indexCount]]].propName == propName) {\n _this.portals.splice(index, 1);\n indexCount++;\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[i].propName == propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n ;\n /* tslint:disable:no-any */\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[ifield];\n if (ifield && mapper) {\n // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n /* tslint:disable:no-any */\n if (child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n/* tslint:enable:no-any */\n","// tslint:disable-next-line:no-any\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState') {\n derivedClass.prototype[name] = baseClass.prototype[name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // tslint:disable-next-line:no-any\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, detach, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n// tslint:disable:no-any\nvar stringCompiler = getTemplateEngine();\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string') {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n if (component && component.isLegacyTemplate) {\n ReactDOM.render(actTemplate(actData), cEle);\n if (!element) {\n detach(cEle);\n }\n }\n else {\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[i]], options[props[i]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflowY = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","import objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n this.element.appendChild(this.content);\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY) {\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n this.wireEvents();\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && !isNullOrUndefined(this.element) && this.element.offsetParent && this.element.offsetParent.tagName === 'BODY') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top) ? formatUnit(window.scrollY - parseInt(this.element.style.top))\n : formatUnit(parseInt(this.element.style.top) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // eslint-disable-next-line\n var topData = '', leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n // eslint-disable-next-line\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n element.style.top = (pos.position.top + pos.offsetY - (top)) + 'px';\n element.style.left = (pos.position.left + pos.offsetX - (left)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\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.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var nav = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var navEle = this.createElement('div', { id: id.concat('_left'), className: clsLeft + ' ' + CLS_DISABLE });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide' });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[i].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead');\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[i] = this.generateRow(i);\n rows[i].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[index]) {\n var colFreezeMode = rows[0].cells[index].column.getFreezeTableName();\n if (colFreezeMode === 'movable' || (frozenMode === literals.leftRight && colFreezeMode === literals.frozenRight)) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === literals.frozenLeft) {\n rows[0].cells[0].column.freeze = colFreezeMode === literals.frozenLeft ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === literals.frozenRight) {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[i], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[i].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[i].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[i].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[i].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (len - 1), thead, tableName);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName) {\n var lastCol = isLastCol ? 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen)\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n var isFirstCol_1 = this.isFirstCol = cols.columns[i].visible && !this.isFirstCol && len !== 1;\n var isLaststackedCol = i === (len - 1);\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, isFirstCol_1, isLaststackedCol && isLastCol, isMovable, tableName);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n isTrue = this.ensureStackedFrozen(columns[i].columns, tableName, isTrue);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[i], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n count = this.getFrozenColSpan(columns[i].columns, tableName, count);\n }\n else if (columns[i].getFreezeTableName() === tableName && columns[i].visible) {\n count++;\n }\n }\n return count;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable) {\n this.setTable(table);\n }\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n if (!frzCols) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n }\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[i], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drop = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({});\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (!gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n this.mutableData = false;\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && _this.parent.enableVirtualization) {\n var mContentRows = [].slice.call(_this.parent.getMovableVirtualContent().getElementsByClassName(literals.row));\n var fContentRows = [].slice.call(_this.parent.getFrozenVirtualContent().getElementsByClassName(literals.row));\n _this.isLoaded = !mContentRows ? false : mContentRows.length === fContentRows.length;\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().getElementsByClassName(literals.row));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().getElementsByClassName(literals.row));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.isLoaded) {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.mutableData = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody) : document.createDocumentFragment();\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n this.rowElements = [];\n this.rows = [];\n var fCont = this.getPanel().querySelector('.' + literals.frozenContent);\n var mCont = this.getPanel().querySelector('.' + literals.movableContent);\n var cont = this.getPanel().querySelector('.' + literals.content);\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === literals.leftRight && tableName === literals.frozenRight;\n /* eslint-disable */\n if (args.requestType !== 'infiniteScroll' && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if (this.parent.isReact && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n this.parent.destroyTemplate(['columnTemplate', 'rowTemplate', 'detailTemplate', 'captionTemplate', 'commandsTemplate']);\n this.parent.renderTemplates();\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector(literals.tbody);\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[m]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m * bSize);\n break;\n }\n else {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m) * bSize;\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[i].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n this.rows.push(modelData[i]);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.setRowsInLazyGroup(modelData[i], i);\n if (isNullOrUndefined(modelData[i].indent)) {\n continue;\n }\n }\n this.setInfiniteVisibleRows(args, modelData[i], tableName);\n if (isGroupAdaptive(gObj) && this.rows.length >= (gObj.pageSettings.pageSize) && blockLoad) {\n break;\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[i], columns);\n var isVFreorder = this.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[i].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[i]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n gObj.renderTemplates();\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[i]), gObj, 'rowTemplate', rowTemplateID);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[j].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[j].querySelectorAll && elements[j].querySelectorAll('tr').length)) {\n tr = isTR ? elements[j] : elements[j].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[i].data, row: trElement ? trElement : tr };\n this.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[i].isDataRow) {\n this.rowElements.push(tr);\n }\n this.ariaService.setOptions(this.getTable(), { colcount: gObj.getColumns().length.toString() });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n args.rows = this.rows.slice(0);\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(contentModule.getTbody(tableName));\n tbdy = _this.parent.createElement(literals.tbody);\n }\n else {\n remove(_this.tbody);\n _this.tbody = _this.parent.createElement(literals.tbody);\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector(literals.tbody), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector(literals.tbody), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== literals.leftRight\n && (tableName === literals.frozenLeft || tableName === literals.frozenRight))\n || (gObj.getFrozenMode() === literals.leftRight\n && (tableName === literals.frozenLeft || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.contentModule.maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings.currentPage][index].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][index];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length &&\n (args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && this.parent.contentModule.getGroupCache()[this.parent.pageSettings.currentPage]) {\n this.useGroupCache = true;\n return this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && tableName === literals.frozenRight)) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.ariaRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.ariaRowIndex), 10);\n var last = Math.ceil(index / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i][idx]\n : data.concat(this.infiniteCache[i][idx]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][idx].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i] : data.concat(this.infiniteCache[i]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[i]]) : rows.concat(this.infiniteCache[keys[i]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[i].cells.length;\n var rightLen = rightRows.length ? rightRows[i].cells.length : 0;\n row = fRows[i].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[i].cells[j]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[i].cells[k]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === literals.frozenRight) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.colGroup);\n setStyleAttribute(colG.childNodes[idx], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.colGroup);\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[idx], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader().querySelector(literals.colGroup).cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader).querySelector(literals.colGroup).cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[index].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[i].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[j].isSelected = set;\n var cells = row[j].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[k].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getDataRows()[index];\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[idx].getAttribute(literals.ariaRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getMovableDataRows()[index];\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody);\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[i][key]] = oldKeys[this.prevCurrentView[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldKeys[this.prevCurrentView[i][key]] = i;\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[i][key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.mutableData) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[oldIndex], dataSource[i]);\n }\n var tr = oldRowElements[oldRowObjs[oldIndex].uid];\n newRowObjs.push(oldRowObjs[oldIndex]);\n if (this.rowElements[oldIndex] && this.rowElements[oldIndex].getAttribute('data-uid') === newRowObjs[i].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!hasBatch && (isEqual || this.prevCurrentView[oldIndex] === dataSource[i])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!this.mutableData && dataSource[i] !== this.prevCurrentView[oldIndex])\n || (this.mutableData && !isEqual)) {\n oldRowObjs[oldIndex].setRowValue(dataSource[i]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var modelData = this.generator.generateRows([dataSource[i]]);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[i]] !== next[keys[i]]) {\n var isDate = old[keys[i]] instanceof Date && next[keys[i]] instanceof Date;\n if (!isDate || (old[keys[i]].getTime() !== next[keys[i]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[i][primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.ariaRowIndex, index.toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[i].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.getGroupedRecords(0, data[i], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var isRenderCaption = this.isInfiniteScroll && this.prevKey === data.key;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[j], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (!isRenderCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[i].isCaptionRow) {\n this.rows[i].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[i].isCaptionRow && !this.rows[i].isDataRow) {\n break;\n }\n }\n }\n }\n this.prevKey = data.key;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[records]) ? data.items[records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[i] = this.generateRow(data[i], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[i].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[i].isDataRow) {\n input[i].cells = this.generateCells(input[i]);\n for (var j = 0; j < input[i].indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(input[i].indent) === -1) {\n continue;\n }\n input[i].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[i].data, input[i].indent);\n input[i].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[i];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[j];\n if (row.uid === childRow.parentUid) {\n this.rows[j].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[j], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[i].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[i].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[k].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[k].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols) {\n if (!mHdr || !mHdr.querySelector(literals.colGroup)) {\n return;\n }\n headerCol = mHdr.querySelector(literals.colGroup).children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector(literals.colGroup);\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector(literals.colGroup).children[index];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup).children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup);\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector(literals.colGroup).children[index];\n }\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[i], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[i].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[i].querySelector('colgroup').children[j]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[index].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector(literals.colGroup)) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector(literals.colGroup).children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[index].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[index].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === literals.frozenLeft || column.getFreezeTableName() === literals.frozenRight)) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector('.' + literals.table);\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.' + literals.table);\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).firstElementChild) {\n this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).firstElementChild.style.width\n = movableWidth;\n }\n this.parent.getContent().querySelector('.' + literals.movableContent).firstElementChild.style.width =\n movableWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function () {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus) {\n this.focus();\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid')))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = false;\n this.currentInfo.skipAction = false;\n if (this.getContent().getFocusInfo().elementToFocus) {\n this.getContent().getFocusInfo().elementToFocus.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.' + literals.frozenContent)) ||\n !isNullOrUndefined(closest(e.target, '.' + literals.frozenHeader));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.skipOn(e)) {\n return;\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (returnVal === false) {\n this.clearIndicator();\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || (filterCell ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null)\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && !isNullOrUndefined(e);\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject();\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = _this.parent.getFrozenRightRowsObject();\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging') {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell') || e.parent.classList.contains('e-templatecell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[rowIndex] = this.matrix[rowIndex] || [];\n this.matrix[rowIndex][columnIndex] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[rowIndex])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[rowIndex].length - 1));\n if (tmp + navigator[1] > this.matrix[rowIndex].length - 1 && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[rowIndex], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[i].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current[0];\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[index])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[index]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[rowIndex].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[i].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n for (var j = 0; j < cells.length; j++) {\n this.set(i, j, rows[i].visible === false ? false : selector(rows[i], cells[j], isRowTemplate));\n }\n }\n return this.matrix;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if ((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString()) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[rowIndex].cells[cellIndex];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[rowIndex].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[rowIndex].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[rowIndex]) ? this.getTable().rows[rowIndex].cells[cellIndex] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1)\n || (cell.column && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i < len; i++) {\n if (this.matrix.matrix[index].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[index].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0);\n var right = ((action === 'rightArrow' || action === 'tab') && current[1] === this.matrix.columns);\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n if (action === 'tab' && !this.parent.isEdit &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (action === 'shiftTab' && !this.parent.isEdit &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: (action === 'upArrow' || enterFrozen) && current[0] === 0,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === literals.leftRight && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line max-len\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.ariaRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.ariaColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[rowIndex])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[rowIndex].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[rowIndex].cells[0].querySelectorAll('td')[cellIndex];\n }\n else {\n cell = table.rows[rowIndex].cells[cellIndex];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n && (!cell.classList.contains('e-templatecell') || cell.classList.contains('e-editedbatchcell'))\n && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[rowIndex].cells[cellIndex];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template))) ||\n cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && current[1] === 0;\n var right = (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && current[1] === this.matrix.columns;\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === literals.leftRight\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n for (var i = 0; i < cells.length; i++) {\n this.matrix.set(length, i, cells[i].visible && cells[i].column.allowFiltering !== false);\n }\n }\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0);\n return { swap: swap, toHeader: toHeader, toFrozen: toHeader };\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow') && current[1] === this.matrix.columns),\n toHeader: toHeader,\n toFrozen: toHeader\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frSwap, toFrozen: toFrozen };\n }\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns && isPresent),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns,\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n };\n SearchBox.prototype.searchBlur = function (args) {\n args.target.parentElement.classList.remove('e-input-focus');\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0),\n toHeader: toHeader,\n toFrozenRight: toHeader\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frozenSwap, toFrozenRight: toFrozen };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = 0;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked } from '../base/util';\nimport { remove, debounce } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[i].field,\n predicate: 'or',\n matchCase: fpred[i].ignoreCase,\n ignoreAccent: fpred[i].ignoreAccent,\n operator: fpred[i].operator,\n value: fpred[i].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = '';\n this.refreshCheckboxes();\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n this.refreshCheckboxes();\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[i];\n dataSource[i] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search')\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: document.body, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this)\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n createSpinner({ target: this.spinner }, this.parent.createElement);\n showSpinner(this.spinner);\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n this.parent.notify(events.filterDialogCreated, e);\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if (this.parent.isReact && this.parent.destroyTemplate !== undefined) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n this.parent.renderTemplates();\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if (e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) {\n var value = e.target.value;\n if (this.options.column.type === 'boolean') {\n if (value !== '' &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = true;\n }\n else if (value !== '' &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = false;\n }\n }\n var args = {\n action: 'filtering', filterCollection: {\n field: this.options.field,\n operator: this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') :\n (this.options.column.type === 'date' || this.options.column.type === 'datetime' ||\n this.options.column.type === 'boolean' ? 'equal' : 'contains'),\n value: value, matchCase: false, type: this.options.column.type, ignoreAccent: this.options.ignoreAccent\n },\n field: this.options.field\n };\n if (value !== undefined && value !== null && value !== '') {\n if (this.isForeignColumn(this.options.column)) {\n this.foreignFilter(args, value);\n }\n else {\n this.options.handler(args);\n }\n }\n else {\n this.closeDialog();\n }\n }\n else {\n if (e.keyCode === 13) {\n this.fltrBtnHandler();\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n this.fltrBtnHandler();\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[i], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n length = check.length - 1;\n val = this.values[parentsUntil(check[length], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n this.initiateFilter(coll);\n }\n else {\n this.clearFilter();\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[j].ejpredicate !== undefined ?\n predicate[fColl[j].predicate](fColl[j].ejpredicate) :\n predicate[fColl[j].predicate](fColl[j].field, fColl[j].operator, fColl[j].value, !fColl[j].matchCase, fColl[j].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n parsed = this.valueFormatter.fromView(val, this.options.parserFn, this.options.type);\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, parsed, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime') {\n operator = 'equal';\n if (isNullOrUndefined(parsed) && val.length) {\n return;\n }\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns) {\n var predicates = CheckBoxFilterBase.getPredicate(columns);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && this.parent.getColumnByField(prop).isForeignColumn()) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[filterModel] = this;\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[j].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[i];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols);\n if (predicate) {\n query.where(predicate);\n }\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput) {\n this.sInput.focus();\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.updateResult();\n this.createFilterItems(dataSource, isInitial, args);\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.getElementsByClassName('e-frame'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n label.innerHTML = !isNullOrUndefined(value) && value.toString().length ? value :\n this.getLocalizedLabel('Blanks');\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n if (isReactCompiler) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[i]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[uid] = getValue(key, data[i]);\n var value = getValue(this.options.field, data[i]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[i] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.result[value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[len];\n value = getObject(field, value); //local remote diff, check with mdu\n if (!(value in lookup)) {\n var obj = {};\n obj[ejValue] = value;\n lookup[value] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[len]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[len], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[i].field));\n if (collection.length !== 0) {\n pred[cols[i].field] = CheckBoxFilterBase.generatePredicate(collection);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime') {\n predicate = getDatePredicate(first, first.type);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[p] = CheckBoxFilterBase.updateDateFilter(cols[p]);\n if (len > 2 && p > 1 && cols[p].predicate === 'or') {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n predicate.predicates.push(getDatePredicate(cols[p], cols[p].type));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n if (cols[p].predicate === 'and' && cols[p].operator === 'equal') {\n predicate = predicate[operate](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[p].predicate)](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n }\n else {\n predicate = cols[p].ejpredicate ?\n predicate[cols[p].predicate](cols[p].ejpredicate) :\n predicate[(cols[p].predicate)](cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[i].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n this.groupQuery(query);\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[j];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[k].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[i]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[i] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[i], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[i], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[i].field);\n if (col) {\n col.setSortDirection(columns[i].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[i].field });\n return query;\n }\n var fn = columns[i].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[i].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[i].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[i].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[i].direction === 'string') {\n query.sortBy(sortGrp[i].field, sortGrp[i].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[i].field);\n query.sortByForeignKey(sortGrp[i].field, sortGrp[i].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[i]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[i], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime')) {\n col.type = gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n if (gObj.filterSettings.type === 'FilterBar' || gObj.filterSettings.type === 'Menu') {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[i].uid = defaultFltrCols[i].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[i].field).uid;\n }\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[pr] = promise ? promise : args[pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @param {boolean} isBlazor - Specifies the platform is Blazor or not.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, isBlazor) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n if (isBlazor) {\n text = ignoreCase ? item.textContent.trim().toLowerCase() : item.textContent.trim();\n }\n else {\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n }\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var item = itemsData[i];\n var text = (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr)) {\n itemData.item = item;\n itemData.index = i;\n return { item: item, index: i };\n }\n }\n return itemData;\n }\n return itemData;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, remove, select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === value.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n this.DropDownBaseresetBlazorTemplates(false, false, true, true);\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataCompTemp = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n if (noDataCompTemp && noDataCompTemp.length > 0) {\n for (var i = 0; i < noDataCompTemp.length; i++) {\n ele.appendChild(noDataCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n this.DropDownBaseupdateBlazorTemplates(false, false, !actionFailure, actionFailure, false, false, false, false);\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n }\n else {\n ele.innerHTML = content;\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = this.typeOfData(this.listData);\n if (isBlazor() && isNullOrUndefined(value) || value === 'null') {\n return null;\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function () {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n };\n DropDownBase.prototype.DropDownBaseupdateBlazorTemplates = function (item, group, noRecord, action, value, header, footer, isEmpty) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n updateBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.groupTemplate && group) {\n updateBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.noRecordsTemplate && noRecord) {\n updateBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.actionFailureTemplate && action) {\n updateBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (value) {\n updateBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (header) {\n updateBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY, this);\n }\n if (footer) {\n updateBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY, this);\n }\n }\n };\n DropDownBase.prototype.DropDownBaseresetBlazorTemplates = function (item, group, noRecord, action, value, header, footer) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n resetBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY);\n }\n if (this.groupTemplate && group) {\n resetBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY);\n }\n if (this.noRecordsTemplate && noRecord) {\n resetBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY);\n }\n if (this.actionFailureTemplate && action) {\n resetBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY);\n }\n if (value) {\n resetBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY);\n }\n if (header) {\n resetBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY);\n }\n if (footer) {\n resetBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY);\n }\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n }\n });\n }\n }\n });\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.list], dropDownBaseClasses.noData);\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (isBlazor() && this.isServerRendered && this.getModuleName() === 'listbox') {\n remove(this.list.querySelector('.e-list-parent'));\n remove(this.list.querySelector('.e-hidden-select'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.list.innerHTML = '';\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n }\n this.DropDownBaseupdateBlazorTemplates(false, true, false, false, false, false, false, false);\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n prepend([this.fixedHeaderElement], this.list);\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n var isTempEmpty = (this.getModuleName() === 'listbox') ? true : false;\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false, false, false, false, isTempEmpty);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n this.list.parentElement.style.display = 'block';\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n this.setListData(dataSource, fields, query);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n this.setEnabled();\n if (!isEmptyData) {\n this.initialize();\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var compiledString = compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.list.appendChild(this.ulElement);\n this.liCollections = liCollections;\n append(liCollections, this.ulElement);\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @blazorType object\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"enabled\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList, isBlazor } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n var checkBlazor = isBlazor() && this.isServerRendered;\n this.isServerBlazor = (checkBlazor) ? true : false;\n this.valueTempElement = null;\n if (this.isServerBlazor) {\n this.initializeData();\n }\n else {\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n }\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (isEmptyData) {\n if (!this.isServerBlazor) {\n _super.prototype.render.call(this, isEmptyData);\n this.unWireListEvents();\n this.wireListEvents();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n this.inputElement.value = '';\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return this.inputWrapper.container;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlur = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlur, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlur);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n if (!this.isServerBlazor) {\n this.renderList();\n }\n else {\n this.isServerIncrementalSearch = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = (this.isServerBlazor && this.popupObj && this.popupObj.element) ?\n this.popupObj.element.querySelectorAll('.' + dropDownBaseClasses.hover) :\n this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id, this.isServerBlazor);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavAction = e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (!(this.isServerBlazor && (e.action === 'open' || e.action === 'space')) && isNullOrUndefined(this.list) ||\n (!isNullOrUndefined(this.liCollections) && isNavigation && this.liCollections.length === 0) || this.isRequested) {\n if (!(this.isServerBlazor && isNavAction)) {\n return;\n }\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup();\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else {\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n }\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup();\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup();\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup();\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (isBlazor()) ? 1000 : (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (_this.isServerBlazor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.interopAdaptor.invokeMethodAsync('OnServerItemData', _this.itemData);\n }\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (this.isServerBlazor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerItemData', this.itemData);\n }\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n if (isBlazor() && dataItem.text !== null || dataItem.text !== '') {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.isServerBlazor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerValueTemplate', dataItem);\n }\n if (this.valueTemplate && this.itemData !== null && !this.isServerBlazor) {\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, true);\n this.setValueTemplate();\n }\n else if (this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if (this.isPopupOpen) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n if (this.isFilterLayout() && this.filterInput) {\n attributes(this.filterInput, { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n attributes(this.inputElement, { 'aria-label': this.inputElement.value });\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id });\n this.targetElement().removeAttribute('aria-live');\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n this.valueTempElement.innerHTML = '';\n var templateData = (isBlazor()) ? JSON.parse(JSON.stringify(this.itemData)) : this.itemData;\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(templateData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n this.valueTempElement.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, true, true, true);\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n if (this.isServerBlazor && this.enablePersistence) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('ServerChange');\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.isServerBlazor && this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n if (this.isServerBlazor) {\n this.beforePopupOpen = (this.getModuleName() === 'combobox' && this.isFiltering() && !this.beforePopupOpen)\n ? !this.beforePopupOpen : this.beforePopupOpen;\n if (this.filterInput.value === '' && this.getModuleName() !== 'dropdownlist') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerFilter', this.filterInput.value);\n }\n }\n else {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n if (this.isServerBlazor) {\n parentElement.innerHTML = '';\n }\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null,\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlur, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.updateValues();\n this.initRemoteRender = false;\n this.initial = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var checkVal = list.some(function (x) { return x[checkField_1] === _this.value; });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n });\n }\n }\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n }\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (isNullOrUndefined(this.actionData.ulElement) && isNullOrUndefined(this.actionData.list)) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index != null) {\n this.actionCompleteData.ulElement.insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function () {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = (_this.serverPopupEle) ? _this.serverPopupEle : _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate && !_this.isServerBlazor) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate && !_this.isServerBlazor) {\n _this.setFooterTemplate(popupEle);\n }\n if (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer')) {\n popupEle.appendChild(popupEle.querySelector('.e-ddl-footer'));\n }\n document.body.appendChild(popupEle);\n _this.updateServerPopup(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate || (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-header'))) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate || (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer'))) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (Browser.isDevice && _this.isFilterLayout()) {\n EventHandler.add(_this.list, 'scroll', _this.listScroll, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true' });\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = (isBlazor() && _this.isServerRendered) ? null : _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.serverBlazorUpdateSelection();\n _this.bindServerScrollEvent();\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n _this.renderReactTemplates();\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.serverBlazorUpdateSelection = function () {\n if (this.isServerBlazor && (this.value !== null || this.index !== null || this.text !== null) ||\n (this.getModuleName() !== 'dropdownlist' && !this.isTyped)) {\n if (this.getModuleName() === 'dropdownlist') {\n this.removeSelection();\n this.removeFocus();\n this.removeHover();\n this.updateValues();\n }\n if (this.getModuleName() === 'combobox' && this.ulElement &&\n this.findListElement(this.ulElement, 'li', 'data-value', this.value) && !this.isTyped) {\n this.updateValues();\n }\n if (this.isServerBlazor && this.getModuleName() !== 'dropdownlist' &&\n (this.text === '' || this.text === null) && this.ulElement) {\n if (!this.ulElement.querySelector('li').classList.contains(dropDownBaseClasses.hover)) {\n addClass([this.ulElement.querySelector('li')], dropDownBaseClasses.hover);\n }\n }\n }\n };\n DropDownList.prototype.bindServerScrollEvent = function () {\n if (this.isServerBlazor && this.list) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n }\n };\n DropDownList.prototype.updateServerPopup = function (popupEle) {\n if (this.isServerBlazor) {\n if (popupEle && popupEle.querySelector('li')) {\n removeClass([popupEle.querySelector('.e-content')], ['e-nodata']);\n }\n this.initial = false;\n popupEle.removeAttribute('style');\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n var isResetItem = (_this.getModuleName() === 'autocomplete') ? true : false;\n _this.DropDownBaseresetBlazorTemplates(isResetItem, isResetItem, true, true, false, true, true);\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n };\n DropDownList.prototype.listScroll = function () {\n this.filterInput.blur();\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay) {\n var _this = this;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n EventHandler.remove(this.list, 'scroll', this.listScroll);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlur);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false', 'aria-activedescendant': null });\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = (isBlazor() && this.isServerRendered) ? null : this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete' && !_this.isServerBlazor) {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n DropDownList.prototype.destroyPopup = function () {\n var popupHolderEle = select('#' + this.element.id + '_popup_holder', document);\n if (this.isServerBlazor && this.serverPopupEle && popupHolderEle) {\n popupHolderEle.appendChild(this.serverPopupEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerClosePopup');\n }\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.popupObj.destroy();\n detach(this.popupObj.element);\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n if (this.isServerBlazor) {\n this.inputElement = this.element;\n this.inputWrapper = { container: this.element.parentElement };\n this.hiddenElement = this.inputWrapper.container.querySelector('select');\n this.inputWrapper.buttons = [this.inputWrapper.container.querySelector('.e-input-group-icon.e-ddl-icon')];\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.inputWrapper.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n if (this.floatLabelType === 'Auto') {\n Input.wireFloatingEvents(this.element);\n }\n Input.bindInitialEvent({\n element: this.element,\n buttons: null, customTag: null,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n this.setFields();\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n this.initial = false;\n }\n else {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'textbox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n for (var i = 0; i < footerCompTemp.length; i++) {\n this.footer.appendChild(footerCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, false, true);\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n for (var i = 0; i < headerCompTemp.length; i++) {\n this.header.appendChild(headerCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, true, false);\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'value': dataItem.value, 'text': dataItem.text });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.isServerBlazor) {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource': break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'width':\n this.setEleWidth(newProp.width);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n break;\n case 'readonly':\n if (this.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this.inputElement);\n }\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n var li = this.getElementByText(newProp.text);\n if (!this.checkValidLi(li)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (!this.isServerBlazor) {\n this.setOldText(oldProp.text);\n }\n }\n this.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this.clearAll();\n break;\n }\n this.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n var item = this.getElementByValue(newProp.value);\n if (!this.checkValidLi(item)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (!this.isServerBlazor) {\n this.setOldValue(oldProp.value);\n }\n }\n this.updateInputFields();\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender && this.liCollections) {\n var element = this.liCollections[newProp.index];\n if (!this.checkValidLi(element)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else if (!this.isServerBlazor) {\n this.index = oldProp.index;\n }\n }\n this.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this.popupObj) {\n this.setFooterTemplate(this.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this.popupObj) {\n this.setHeaderTemplate(this.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this.itemData) && this.valueTemplate != null) {\n this.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.actionCompleteData = { ulElement: this.ulElement,\n list: this.listData, isUpdated: true };\n this.actionData = this.actionCompleteData;\n this.updateSelectElementData(this.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, newProp.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.inputElement, this.inputWrapper, null, this.createElement);\n this.bindClearEvent();\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function () {\n if (!this.enabled) {\n return;\n }\n if (isBlazor() && this.itemTemplate) {\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list != this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList();\n }\n else if (this.isFiltering() && this.isServerBlazor) {\n this.renderList();\n }\n if (!this.isServerBlazor) {\n this.invokeRenderPopup();\n }\n var popupHolderEle = !this.isFiltering() || select('#' + this.element.id + '_popup_holder', document);\n var isDropdownComp = this.getModuleName() === 'dropdownlist' || !this.isFiltering();\n if (this.isServerBlazor && popupHolderEle && !isNullOrUndefined(this.list) && isDropdownComp) {\n this.invokeRenderPopup();\n }\n };\n DropDownList.prototype.invokeRenderPopup = function () {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list.children[0]) || this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.renderPopup();\n }\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n };\n DropDownList.prototype.clientRenderPopup = function (data, popupEle) {\n if (popupEle) {\n this.serverPopupEle = popupEle;\n this.list = popupEle.querySelector('.e-dropdownbase.e-content') ?\n popupEle.querySelector('.e-dropdownbase.e-content') : this.list;\n this.ulElement = this.list.querySelector('ul');\n if (isNullOrUndefined(this.ulElement) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n addClass([this.list], [dropDownBaseClasses.noData]);\n }\n this.liCollections = this.ulElement ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li) : [];\n this.listData = data;\n if (this.getModuleName() === 'autocomplete' && this.liCollections.length > 0) {\n this.renderHightSearch();\n }\n this.initRemoteRender = false;\n if (!this.isPopupOpen) {\n this.serverBlazorUpdateSelection();\n }\n this.unWireListEvents();\n this.wireListEvents();\n if (this.isServerIncrementalSearch && this.searchKeyEvent) {\n this.isServerIncrementalSearch = false;\n this.initial = false;\n this.onServerIncrementalSearch(this.searchKeyEvent);\n }\n if (this.isServerNavigation && this.searchKeyEvent) {\n if (this.searchKeyEvent.action === 'down' || this.searchKeyEvent.action === 'up') {\n this.isServerNavigation = false;\n this.updateUpDownAction(this.searchKeyEvent);\n }\n else if (this.searchKeyEvent.action === 'home' || this.searchKeyEvent.action === 'end') {\n this.isServerNavigation = false;\n this.updateHomeEndAction(this.searchKeyEvent);\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup();\n }\n if (this.getModuleName() !== 'dropdownlist') {\n this.onActionComplete(this.ulElement, this.listData);\n }\n }\n else if (data != null && this.listData !== data) {\n this.listData = data;\n this.initRemoteRender = false;\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n DropDownList.prototype.updateclientItemData = function (data) {\n this.listData = data;\n };\n DropDownList.prototype.initValueItemData = function (selectData) {\n this.itemData = selectData;\n this.previousValue = this.value;\n this.initial = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.serverUpdateListElement = function (data, popupEle) {\n this.listData = data;\n if (this.ulElement) {\n this.liCollections = this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var isHeader = (this.headerTemplate) ? true : false;\n var isFooter = (this.headerTemplate) ? true : false;\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, false, isHeader, isFooter);\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup();\n var dataItem = this.getItemData();\n var isSelectVal = this.isServerBlazor ? !isNullOrUndefined(this.value) : !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isServerBlazor || (this.popupObj && document.body.contains(this.popupObj.element))) {\n this.hidePopup();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n if (this.isServerBlazor) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n }\n }\n if (!this.isServerBlazor) {\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'aria-placeholder',\n 'placeholder', 'aria-owns', 'aria-labelledby', 'aria-haspopup', 'aria-expanded',\n 'aria-activedescendant', 'autocomplete', 'aria-readonly', 'autocorrect',\n 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n _super.prototype.destroy.call(this);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @blazorType object\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /**\n * Gets the currently visible records of the Grid.\n */\n _this.currentViewData = [];\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n /** @hidden */\n _this.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[i]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n EndsWith: 'Ends With',\n Contains: 'Contains',\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 ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n createSpinner({ target: this.element }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n this.trigger(events.load);\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n this.showSpinner();\n this.notify(events.initialEnd, {});\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[index].hideAtMedia) && (isNullOrUndefined(gcol[index].visible) || gcol[index].visible)) {\n this.pushMediaColumn(gcol[index], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[index] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[index]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[i].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[columnIndex];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[i].uid].removeListener(this.mediaBindInstance[this.mediaCol[i].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n if (this.isAngular && !this.isFreezeRefresh) {\n this.element = null;\n }\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n if (!(isBlazor() && this.isServerRendered)) {\n this.freezeRefresh();\n }\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[i]]), this.dataSource[props[i]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[i], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[i];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[i].allowReordering || !cols[i].allowSorting || !cols[i].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[count].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[i].columns) {\n this.updateColumnModel(columns[i].columns);\n }\n else {\n this.columnModel.push(columns[i]);\n }\n }\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[i];\n if (col.freeze === 'Left') {\n col.freezeTable = literals.frozenLeft;\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = literals.frozenRight;\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[i];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].columns) {\n this.checkLockColumns(cols[i].columns);\n }\n else if (cols[i].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n * @blazorType List\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[i];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n * @blazorType List\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[index];\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row)) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.ariaColIndex), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.' + literals.row);\n var rowIndex = parseInt(row_1.getAttribute(literals.ariaRowIndex), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[cellIndex].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === literals.frozenLeft) {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === literals.frozenRight) {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[index].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody()\n : this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody)\n : this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[i]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].classList.contains(literals.row) && (!rows[i].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[i].getAttribute('aria-rowindex'), 10)] = rows[i];\n }\n else {\n dRows.push(rows[i]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.frozenContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var isRight = this.getFrozenMode() === 'Right';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = col.getFreezeTableName() === 'movable' ? this.contentModule.getMovableRows() :\n col.getFreezeTableName() === 'frozen-right' ? this.getFrozenRightRowsObject() : this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n setValue(field, value, selectedRow[rowData]);\n var left = this.getFrozenLeftColumnsCount() || this.getFrozenColumns();\n var movable = this.getMovableColumnsCount();\n if (this.isRowDragable() && !isRight) {\n left++;\n }\n var frIdx = left + movable;\n var td = this.getCellFromIndex(selectedRow[rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = col.getFreezeTableName() === 'movable' ? left : col.getFreezeTableName() === 'frozen-right' ? frIdx : 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable() && !isRight) {\n fieldIdx++;\n }\n var sRow = selectedRow[cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[rowData], { index: selectedRow[rowIdx] });\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[rowData]\n });\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.getRowsObject();\n var indent = _this.getIndentCount();\n var cellIndex = _this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this, _this.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n if (!isNullOrUndefined(selectedRow) && this.element.querySelectorAll('[data-uid=' + selectedRow[rowuID] + ']').length) {\n selectedRow.changes = rowData;\n refreshForeignData(selectedRow, this.getForeignKeyColumns(), selectedRow.changes);\n rowRenderer.refresh(selectedRow, this.getColumns(), true);\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[rowIndex] &&\n this.getMovableDataRows()[rowIndex].getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[rowIndex] && rows[rowIndex].getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[index];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().getElementsByClassName('e-headercell')[index];\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} Returns the column\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} Returns the column\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[i];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[k].isPrimaryKey) {\n keys.push(this.columnModel[k].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[i].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.splitFrozenCount(columns[i].columns);\n }\n else {\n if (columns[i].freeze === 'Right') {\n if (columns[i].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[i]);\n this.frozenRightCount++;\n }\n else if (columns[i].freeze === 'Left') {\n if (columns[i].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[i]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[i].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[i]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[i].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].visible && (columns[i].freeze === 'Left' || columns[i].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getVisibleFrozenCount(cols[i].columns, cnt);\n }\n else {\n if (cols[i].isFrozen && cols[i].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getFrozenCount(cols[i].columns, cnt, index);\n }\n else {\n if (cols[i].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[index].style.width = newWidth;\n contentCol[index].style.width = newWidth;\n }\n else {\n headerCol[index].style.width = width + 'px';\n contentCol[index].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[i].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[j];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[j].field === gCols[i]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[i], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[j].field);\n }\n else {\n sCols[j].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[i]; })[0] : this_1.getColumnByField(gCols[i]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[i] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[i].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({ opensOn: 'custom', content: '' }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('aria-describedby')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n if (element.getElementsByClassName('e-headertext').length) {\n this.toolTipObj.content = element.getElementsByClassName('e-headertext')[0].innerText;\n }\n else {\n this.toolTipObj.content = element.innerText;\n }\n this.prevElement = element;\n this.toolTipObj.open(element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /**\n * @param {MouseEvent} e - Defines the mouse event\n * @returns {void}\n * @hidden\n */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, literals.row);\n if ([].slice.call(this.element.getElementsByClassName('e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.getElementsByClassName('e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[aria-rowindex=\"' + row.getAttribute(literals.ariaRowIndex) + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') !== 'true' && rows[i]) {\n rows[i].classList.add('e-frozenhover');\n }\n else if (rows[i]) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell'))) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch') {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if (gridElement && gridElement.id !== this.element.id) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n if (Array.isArray(this[key]) && key === 'columns') {\n setColumnIndex(this[key]);\n this.mergeColumns(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n else {\n extend(this[key], dataObj[key]);\n }\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[i].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[i].columns, localCol.columns);\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n else {\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n this.focusModule.focusHeader();\n this.focusModule.addOutline();\n }\n }\n if (e.keyCode === 87) { //alt w\n this.focusModule.focusContent();\n this.focusModule.addOutline();\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n * @blazorType List\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.' + literals.table);\n remove(frTbl.querySelector(literals.colGroup));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup)).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector(literals.tbody));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n * @blazorType void\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n * @blazorType void\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns pdfexport\n * @blazorType void\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * @param {string} columnName - Defines the column name to ungroup.\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].isDetailRow || rows[i].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[i].data[pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[i].data);\n }\n if (pKvalue === value) {\n return rows[i].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[i].field) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[i].uid) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.movableContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.frozenContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.movableHeader);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.frozenHeader);\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector(literals.tbody).children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector(literals.tbody).children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector(literals.tbody).children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector(literals.tbody).children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector(literals.tbody).children)).concat(frozenRigtRows);\n }\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n * @blazorType List\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * calculatePageSizeByParentHeight\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[i].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n * @returns {number} returns the summary values\n\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[i].uid);\n columns[i].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[i].template = 'true';\n }\n if (columns[i].format) {\n columns[i].format = getNumberFormat(this.getFormat(columns[i].format), columns[i].type, this.isExcel);\n }\n if (columns[i].columns) {\n this.setHeaderText(columns[i].columns, include);\n }\n var keys = Object.keys(columns[i]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[j]) < 0) {\n delete columns[i][keys[j]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = document.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.renderTemplates = function () {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[portals]);\n this.renderReactTemplates();\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[i]]) {\n compareChanges(this, changes, loopstring[i], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute(literals.ariaRowIndex), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[index];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[keyField] === rowObj[i].data[keyField]; }).length) {\n this_3.deleteRowElement(rowObj[i]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[keyField] === result[i][keyField]) {\n if (e !== result[i]) {\n _this.setRowData(result[i][keyField], result[i]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[i], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n mTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector(literals.tbody);\n }\n return tbody;\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n var Grid_1;\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('19.1.69')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","import { KeyboardEvents, closest, addClass, removeClass } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\n/**\n * Keyboard interaction\n */\n/** @hidden */\nvar CommonKeyboardInteraction = /** @class */ (function () {\n /**\n * Constructor\n */\n function CommonKeyboardInteraction(parent) {\n this.keyConfigs = {\n shiftF: 'shift+F',\n shiftS: 'shift+S',\n shiftE: 'shift+E',\n delete: 'delete',\n enter: 'enter',\n escape: 'escape',\n upArrow: 'upArrow',\n downArrow: 'downArrow'\n };\n /* eslint-enable */\n this.parent = parent;\n this.parent.element.tabIndex = this.parent.element.tabIndex === -1 ? 0 : this.parent.element.tabIndex;\n this.keyboardModule = new KeyboardEvents(this.parent.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n CommonKeyboardInteraction.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'shiftF':\n this.processFilter(e);\n break;\n case 'shiftS':\n this.processSort(e);\n break;\n case 'shiftE':\n this.processEdit(e);\n break;\n case 'delete':\n this.processDelete(e);\n break;\n case 'enter':\n this.processEnter(e);\n break;\n case 'escape':\n this.processClose(e);\n break;\n case 'upArrow':\n case 'downArrow':\n this.processFilterNodeSelection(e);\n break;\n }\n };\n CommonKeyboardInteraction.prototype.getButtonElement = function (target) {\n var allPivotButtons = [].slice.call(this.parent.element.querySelectorAll('.' + cls.PIVOT_BUTTON_CLASS));\n for (var i = 0, len = allPivotButtons.length; i < len; i++) {\n if (allPivotButtons[i].getAttribute('data-uid') === target.getAttribute('data-uid')) {\n return allPivotButtons[i];\n }\n }\n return target;\n };\n CommonKeyboardInteraction.prototype.processEnter = function (e) {\n var target = e.target;\n if (target && closest(target, '.' + cls.PIVOT_BUTTON_CLASS)) {\n if (target.querySelector('.' + cls.AXISFIELD_ICON_CLASS) && closest(target, '.' + cls.VALUE_AXIS_CLASS)) {\n target.querySelector('.' + cls.AXISFIELD_ICON_CLASS).click();\n }\n else if (target.querySelector('.' + cls.CALC_EDIT)) {\n target.querySelector('.' + cls.CALC_EDIT).click();\n }\n else if (target.querySelector('.' + cls.SORT_CLASS) &&\n !closest(target, '.' + cls.VALUE_AXIS_CLASS) && !closest(target, '.' + cls.AXIS_FILTER_CLASS)) {\n target.querySelector('.' + cls.SORT_CLASS).click();\n this.getButtonElement(target).focus();\n }\n else if (target.querySelector('.' + cls.FILTER_COMMON_CLASS) && !closest(target, '.' + cls.VALUE_AXIS_CLASS)) {\n target.querySelector('.' + cls.FILTER_COMMON_CLASS).click();\n }\n e.preventDefault();\n return;\n }\n };\n CommonKeyboardInteraction.prototype.processSort = function (e) {\n var target = e.target;\n if (target && closest(target, '.' + cls.PIVOT_BUTTON_CLASS) && target.querySelector('.' + cls.SORT_CLASS) &&\n !closest(target, '.' + cls.VALUE_AXIS_CLASS) && !closest(target, '.' + cls.AXIS_FILTER_CLASS)) {\n target.querySelector('.' + cls.SORT_CLASS).click();\n this.getButtonElement(target).focus();\n e.preventDefault();\n return;\n }\n };\n CommonKeyboardInteraction.prototype.processEdit = function (e) {\n var target = e.target;\n if (target && closest(target, '.' + cls.PIVOT_BUTTON_CLASS) && target.querySelector('.' + cls.CALC_EDIT)) {\n target.querySelector('.' + cls.CALC_EDIT).click();\n e.preventDefault();\n return;\n }\n };\n CommonKeyboardInteraction.prototype.processFilter = function (e) {\n var target = e.target;\n if (target && closest(target, '.' + cls.PIVOT_BUTTON_CLASS) && target.querySelector('.' + cls.FILTER_COMMON_CLASS) &&\n !closest(target, '.' + cls.VALUE_AXIS_CLASS)) {\n target.querySelector('.' + cls.FILTER_COMMON_CLASS).click();\n if (this.parent && this.parent.control && this.parent.moduleName === 'pivotview' &&\n this.parent.control.grid && this.parent.control.showGroupingBar &&\n this.parent.control.groupingBarModule && closest(target, '.' + cls.GROUP_ROW_CLASS) &&\n this.parent.filterDialog && this.parent.filterDialog.dialogPopUp &&\n !this.parent.filterDialog.dialogPopUp.isDestroyed && this.parent.filterDialog.dialogPopUp.element) {\n var dialogElement_1 = this.parent.filterDialog.dialogPopUp.element;\n var isExcelFilter_1 = this.parent.filterDialog.allowExcelLikeFilter;\n clearTimeout(this.timeOutObj);\n this.timeOutObj = setTimeout(function () {\n if (dialogElement_1 && dialogElement_1.classList.contains('e-popup-open')) {\n if (isExcelFilter_1 && dialogElement_1.querySelector('.e-dlg-closeicon-btn')) {\n dialogElement_1.querySelector('.e-dlg-closeicon-btn').focus();\n }\n else if (dialogElement_1.querySelector('input')) {\n dialogElement_1.querySelector('input').focus();\n }\n }\n });\n }\n e.preventDefault();\n return;\n }\n };\n CommonKeyboardInteraction.prototype.processFilterNodeSelection = function (e) {\n var target = e.target;\n if (target && closest(target, '.' + cls.SELECT_ALL_CLASS) && e.keyCode === 40) {\n var memberEditorTree = closest(target, '.' + cls.EDITOR_TREE_WRAPPER_CLASS).querySelector('.' + cls.EDITOR_TREE_CONTAINER_CLASS);\n if (memberEditorTree && memberEditorTree.querySelector('li')) {\n var firstLi = memberEditorTree.querySelector('li');\n if (memberEditorTree.querySelector('li#_active')) {\n removeClass([memberEditorTree.querySelector('li#_active')], ['e-hover', 'e-node-focus']);\n memberEditorTree.querySelector('li#_active').removeAttribute('id');\n }\n firstLi.setAttribute('id', '_active');\n addClass([firstLi], ['e-hover', 'e-node-focus']);\n memberEditorTree.focus();\n e.preventDefault();\n return;\n }\n }\n else if (target && closest(target, '.' + cls.EDITOR_TREE_CONTAINER_CLASS) && e.keyCode === 38) {\n var memberEditorTree = closest(target, '.' + cls.EDITOR_TREE_CONTAINER_CLASS);\n if (memberEditorTree.querySelector('li#_active.e-hover.e-node-focus') && memberEditorTree.querySelector('li') &&\n memberEditorTree.querySelector('li').classList.contains('e-prev-active-node') &&\n memberEditorTree.querySelector('li') === memberEditorTree.querySelector('li#_active.e-hover.e-node-focus')) {\n removeClass(memberEditorTree.querySelectorAll('li.e-prev-active-node'), 'e-prev-active-node');\n var allMemberEditorTree = closest(target, '.' + cls.EDITOR_TREE_WRAPPER_CLASS).querySelector('.' + cls.SELECT_ALL_CLASS);\n if (allMemberEditorTree && allMemberEditorTree.querySelector('li')) {\n var firstLi = allMemberEditorTree.querySelector('li');\n firstLi.setAttribute('id', '_active');\n addClass([firstLi], ['e-hover', 'e-node-focus']);\n allMemberEditorTree.focus();\n e.preventDefault();\n return;\n }\n }\n }\n else if (target && target.id === this.parent.parentID + '_inputbox') {\n if (e.action === 'upArrow') {\n target.parentElement.querySelector('.e-spin-up').click();\n }\n else if (e.action === 'downArrow') {\n target.parentElement.querySelector('.e-spin-down').click();\n }\n }\n };\n CommonKeyboardInteraction.prototype.processDelete = function (e) {\n var target = e.target;\n if (target && closest(target, '.' + cls.PIVOT_BUTTON_CLASS) && target.querySelector('.' + cls.REMOVE_CLASS)) {\n target.querySelector('.' + cls.REMOVE_CLASS).click();\n e.preventDefault();\n return;\n }\n };\n CommonKeyboardInteraction.prototype.processClose = function (e) {\n var target = e.target;\n if (target && closest(target, '.e-popup.e-popup-open')) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var dialogInstance = closest(target, '.e-popup.e-popup-open').ej2_instances[0];\n if (dialogInstance && !dialogInstance.closeOnEscape) {\n var button = dialogInstance.element.getAttribute('data-fieldName');\n dialogInstance.hide();\n if (this.parent.element) {\n var pivotButtons = [].slice.call(this.parent.element.querySelectorAll('.e-pivot-button'));\n for (var _i = 0, pivotButtons_1 = pivotButtons; _i < pivotButtons_1.length; _i++) {\n var item = pivotButtons_1[_i];\n if (item.getAttribute('data-uid') === button) {\n item.focus();\n break;\n }\n }\n }\n e.preventDefault();\n return;\n }\n }\n };\n /**\n * To destroy the keyboard module.\n * @returns {void}\n * @private\n */\n CommonKeyboardInteraction.prototype.destroy = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n else {\n return;\n }\n };\n return CommonKeyboardInteraction;\n}());\nexport { CommonKeyboardInteraction };\n","import { isNullOrUndefined, removeClass, addClass } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport { PivotUtil } from '../../base/util';\n/**\n * `EventBase` for active fields action.\n */\n/** @hidden */\nvar EventBase = /** @class */ (function () {\n /**\n * Constructor for the dialog action.\n * @param {PivotCommon} parent - parent.\n * @hidden\n */\n function EventBase(parent) {\n this.parent = parent;\n }\n /**\n * Updates sorting order for the selected field.\n * @function updateSorting\n * @param {Event} args - Contains clicked element information to update dataSource.\n * @returns {void}\n * @hidden\n */\n EventBase.prototype.updateSorting = function (args) {\n if (!(args.target.classList.contains(cls.FILTER_COMMON_CLASS)) &&\n !(args.target.classList.contains(cls.REMOVE_CLASS))) {\n if (this.parent.filterDialog.dialogPopUp) {\n this.parent.filterDialog.dialogPopUp.close();\n }\n var target = args.target;\n var fieldName = void 0;\n var checkisDescending = void 0;\n var isDescending = void 0;\n if (target.id) {\n fieldName = target.id;\n checkisDescending = [].slice.call(target.querySelectorAll('.' + cls.SORT_DESCEND_CLASS));\n }\n else {\n fieldName = target.parentElement.id;\n checkisDescending = [].slice.call(target.parentElement.querySelectorAll('.' + cls.SORT_DESCEND_CLASS));\n }\n if (checkisDescending.length === 0) {\n isDescending = false;\n }\n else {\n isDescending = true;\n }\n //isDescending = (target.querySelectorAll(cls.SORT_DESCEND_CLASS));\n var sortObj = PivotUtil.getFieldByName(fieldName, this.parent.dataSourceSettings.sortSettings);\n if (!isNullOrUndefined(sortObj)) {\n for (var i = 0; i < this.parent.dataSourceSettings.sortSettings.length; i++) {\n if (this.parent.dataSourceSettings.sortSettings[i].name === fieldName) {\n this.parent.dataSourceSettings.sortSettings.splice(i, 1);\n break;\n }\n }\n var newSortObj = { name: fieldName, order: isDescending ? 'Ascending' : 'Descending' };\n // let newSortObj: ISort = { name: fieldName, order: isNone ? 'Ascending' : isDescending ? 'None' : 'Descending' };\n this.parent.dataSourceSettings.sortSettings.push(newSortObj);\n }\n else {\n var newSortObj = { name: fieldName, order: isDescending ? 'Ascending' : 'Descending' };\n //let newSortObj: ISort = { name: fieldName, order: isNone ? 'Ascending' : isDescending ? 'None' : 'Descending' };\n this.parent.dataSourceSettings.sortSettings.push(newSortObj);\n }\n /* eslint-disable */\n this.parent.control.lastSortInfo =\n this.parent.dataSourceSettings.sortSettings[this.parent.dataSourceSettings.sortSettings.length - 1];\n isDescending ? removeClass([target], cls.SORT_DESCEND_CLASS) : addClass([target], cls.SORT_DESCEND_CLASS);\n /* eslint-enable */\n // if (isDescending) {\n // removeClass([target], cls.SORT_DESCEND_CLASS);\n // addClass([target], cls.SORTING);\n // } else if (!isDescending && !isNone) {\n // addClass([target], cls.SORT_DESCEND_CLASS);\n // } else if (isNone) {\n // removeClass([target], cls.SORTING);\n // } else if (!isNone) {\n // removeClass([target], cls.SORT_DESCEND_CLASS);\n // removeClass([target], cls.SORTING);\n // //addClass([target], cls.SORT_CLASS);\n // }\n }\n };\n /**\n * Updates sorting order for the selected field.\n * @function updateFiltering\n * @param {Event} args - Contains clicked element information to update dataSource.\n * @returns {void}\n * @hidden\n */\n EventBase.prototype.updateFiltering = function (args) {\n var target = args.target;\n var fieldName = target.parentElement.id;\n var fieldCaption = target.parentElement.textContent;\n var isInclude = false;\n var filterItems = [];\n var treeData = []; /* eslint-disable-line */\n if (this.parent.dataSourceSettings.allowMemberFilter) {\n if (this.parent.dataType === 'olap') {\n treeData = this.getOlapData(fieldName, isInclude);\n }\n else {\n var members = PivotUtil.getClonedData(this.parent.engineModule.fieldList[fieldName].dateMember);\n /* eslint-disable */\n members =\n this.parent.engineModule.fieldList[fieldName].sort === 'Ascending' ?\n (members.sort(function (a, b) { return (a.actualText > b.actualText) ? 1 :\n ((b.actualText > a.actualText) ? -1 : 0); })) :\n this.parent.engineModule.fieldList[fieldName].sort === 'Descending' ?\n (members.sort(function (a, b) { return (a.actualText < b.actualText) ? 1 :\n ((b.actualText < a.actualText) ? -1 : 0); })) :\n members;\n /* eslint-enable */\n var filterObj = PivotUtil.getFilterItemByName(fieldName, this.parent.dataSourceSettings.filterSettings);\n if (!isNullOrUndefined(filterObj)) {\n isInclude = this.isValidFilterItemsAvail(fieldName, filterObj) && filterObj.type === 'Include' ? true : false;\n filterItems = filterObj.items ? filterObj.items : [];\n }\n treeData =\n this.getTreeData(isInclude, members, filterItems, fieldName);\n }\n }\n if (this.parent.filterDialog.dialogPopUp) {\n this.parent.filterDialog.dialogPopUp.close();\n }\n var popupTarget = this.parent.control.filterTargetID;\n if (isNullOrUndefined(popupTarget)) {\n popupTarget = this.parent.moduleName !== 'pivotfieldlist' ?\n this.parent.element : document.getElementById(this.parent.parentID + '_Wrapper');\n }\n this.parent.filterDialog.createFilterDialog(treeData, fieldName, fieldCaption, popupTarget);\n };\n /**\n * Returns boolean by checing the valid filter members from the selected filter settings.\n * @function isValidFilterItemsAvail\n * @param {string} fieldName - Gets filter members for the given field name.\n * @param {IFilter} filterObj - filterObj.\n * @returns {boolean} - boolean.\n * @hidden\n */\n EventBase.prototype.isValidFilterItemsAvail = function (fieldName, filterObj) {\n var isItemAvail = false;\n var filterTypes = ['Include', 'Exclude'];\n if (filterObj && filterTypes.indexOf(filterObj.type) >= 0) {\n var engineModule = this.parent.engineModule;\n var field = engineModule.fieldList[fieldName];\n var members = (engineModule.formatFields[fieldName] &&\n (['date', 'dateTime', 'time'].indexOf(engineModule.formatFields[fieldName].type) > -1)) ?\n field.formattedMembers : field.members;\n for (var _i = 0, _a = filterObj.items; _i < _a.length; _i++) {\n var item = _a[_i];\n if (members[item]) {\n isItemAvail = true;\n break;\n }\n }\n }\n return isItemAvail;\n };\n /* eslint-disable */\n EventBase.prototype.getOlapData = function (fieldName, isInclude) {\n var treeData = [];\n var filterItems = [];\n this.parent.filterDialog.isSearchEnabled = false;\n var updatedTreeData = [];\n /* eslint-enable */\n var engineModule = this.parent.engineModule;\n var filterObj = PivotUtil.getFilterItemByName(fieldName, this.parent.dataSourceSettings.filterSettings);\n if (engineModule.fieldList[fieldName].filterMembers.length === 0) {\n if (!this.parent.control.loadOnDemandInMemberEditor) {\n engineModule.getMembers(this.parent.dataSourceSettings, fieldName, true);\n }\n else if (filterObj && filterObj.levelCount > 1 && engineModule.fieldList[fieldName].levels.length > 1) {\n engineModule.getFilterMembers(this.parent.dataSourceSettings, fieldName, filterObj.levelCount);\n }\n else {\n engineModule.fieldList[fieldName].levelCount = 1;\n engineModule.getMembers(this.parent.dataSourceSettings, fieldName);\n }\n }\n else {\n engineModule.fieldList[fieldName].currrentMembers = {};\n engineModule.fieldList[fieldName].searchMembers = [];\n }\n var isHierarchy = engineModule.fieldList[fieldName].isHierarchy;\n /* eslint-disable */\n treeData = engineModule.fieldList[fieldName].filterMembers;\n /* eslint-enable */\n if (!isNullOrUndefined(filterObj)) {\n isInclude = filterObj.type ? filterObj.type === 'Include' ? true : false : true;\n filterItems = filterObj.items ? filterObj.items : [];\n }\n var filterItemObj = {};\n var dummyfilterItems = {};\n var memberObject = engineModule.fieldList[fieldName].members;\n for (var _i = 0, filterItems_1 = filterItems; _i < filterItems_1.length; _i++) {\n var item = filterItems_1[_i];\n filterItemObj[item] = item;\n dummyfilterItems[item] = item;\n if (memberObject[item]) {\n dummyfilterItems = this.getParentNode(fieldName, item, dummyfilterItems);\n }\n }\n treeData = this.getFilteredTreeNodes(fieldName, treeData, dummyfilterItems, updatedTreeData, isHierarchy);\n treeData = this.getOlapTreeData(isInclude, PivotUtil.getClonedData(treeData), filterItemObj, fieldName, isHierarchy);\n treeData = this.sortOlapFilterData(treeData, engineModule.fieldList[fieldName].sort);\n return treeData;\n };\n /* eslint-disable-next-line */\n /**\n * Gets sorted filter members for the selected field.\n * @function sortOlapFilterData\n * @param {{ [key: string]: Object }[]} treeData - Gets filter members for the given field name.\n * @param {string} order - order.\n * @returns {{ [key: string]: Object }[]} - return.\n * @hidden\n */\n EventBase.prototype.sortOlapFilterData = function (treeData, order) {\n if (treeData.length > 0) {\n treeData = order === 'Ascending' ?\n (treeData.sort(function (a, b) { return (a.caption > b.caption) ? 1 :\n ((b.caption > a.caption) ? -1 : 0); })) : order === 'Descending' ?\n (treeData.sort(function (a, b) { return (a.caption < b.caption) ? 1 :\n ((b.caption < a.caption) ? -1 : 0); })) : treeData;\n }\n return treeData;\n };\n EventBase.prototype.getParentIDs = function (treeObj, id, parent) {\n /* eslint-disable */\n var data = treeObj.fields.dataSource;\n /* eslint-enable */\n var pid;\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var li = data_1[_i];\n if (li.id === id) {\n pid = li.pid;\n break;\n }\n }\n if (pid) {\n parent.push(pid);\n this.getParentIDs(treeObj, pid, parent);\n }\n return parent;\n };\n EventBase.prototype.getChildIDs = function (treeObj, id, children) {\n /* eslint-disable */\n var data = treeObj.fields.dataSource;\n /* eslint-enable */\n var cID;\n for (var _i = 0, data_2 = data; _i < data_2.length; _i++) {\n var li = data_2[_i];\n if (li.pid === id) {\n cID = li.id;\n break;\n }\n }\n if (cID) {\n children.push(cID);\n this.getParentIDs(treeObj, cID, children);\n }\n return children;\n };\n /**\n * show tree nodes using search text.\n * @hidden\n */\n /* eslint-disable */\n EventBase.prototype.searchTreeNodes = function (args, treeObj, isFieldCollection, isHierarchy) {\n if (isFieldCollection) {\n var searchList = [];\n var nonSearchList = [];\n var list = [].slice.call(treeObj.element.querySelectorAll('li'));\n for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {\n var element = list_1[_i];\n if ((element.querySelector('.e-list-text').textContent.toLowerCase()).indexOf(args.value.toLowerCase()) > -1) {\n searchList.push(element);\n }\n else {\n nonSearchList.push(element);\n }\n }\n treeObj.enableNodes(searchList);\n removeClass(searchList, cls.ICON_DISABLE);\n treeObj.disableNodes(nonSearchList);\n addClass(nonSearchList, cls.ICON_DISABLE);\n if (searchList.length > 0 && nonSearchList.length > 0) {\n for (var _a = 0, searchList_1 = searchList; _a < searchList_1.length; _a++) {\n var currentNode = searchList_1[_a];\n var id = currentNode.getAttribute('data-uid');\n var parentIDs = this.getParentIDs(treeObj, id, []);\n var childIDs = this.getChildIDs(treeObj, id, []);\n var pNodes = [];\n if (parentIDs.length > 0) {\n for (var _b = 0, nonSearchList_1 = nonSearchList; _b < nonSearchList_1.length; _b++) {\n var li = nonSearchList_1[_b];\n if (PivotUtil.inArray(li.getAttribute('data-uid'), parentIDs) !== -1) {\n pNodes.push(li);\n }\n }\n }\n if (childIDs.length > 0) {\n for (var _c = 0, nonSearchList_2 = nonSearchList; _c < nonSearchList_2.length; _c++) {\n var li = nonSearchList_2[_c];\n if (PivotUtil.inArray(li.getAttribute('data-uid'), childIDs) !== -1) {\n pNodes.push(li);\n }\n }\n }\n treeObj.enableNodes(pNodes);\n removeClass(pNodes, cls.ICON_DISABLE);\n }\n }\n if ([].slice.call(treeObj.element.querySelectorAll('li.' + cls.ICON_DISABLE)).length === 0) {\n treeObj.collapseAll();\n }\n else {\n treeObj.expandAll(undefined, undefined, true);\n }\n }\n else {\n this.parent.searchTreeItems = [];\n if (this.parent.dataType === 'olap' && !isHierarchy) {\n this.updateOlapSearchTree(args, treeObj, isHierarchy);\n }\n else {\n var searchList = [];\n var memberCount = 0;\n memberCount = 1;\n for (var _d = 0, _e = this.parent.currentTreeItems; _d < _e.length; _d++) {\n var item = _e[_d];\n if (item.name.toLowerCase().indexOf(args.value.toLowerCase()) > -1) {\n this.parent.searchTreeItems.push(item);\n if (memberCount <= this.parent.control.maxNodeLimitInMemberEditor) {\n searchList.push(item);\n }\n memberCount++;\n }\n }\n memberCount--;\n if (memberCount > this.parent.control.maxNodeLimitInMemberEditor) {\n this.parent.editorLabelElement.innerText = (memberCount - this.parent.control.maxNodeLimitInMemberEditor) +\n this.parent.control.localeObj.getConstant('editorDataLimitMsg');\n this.parent.filterDialog.dialogPopUp.height = (this.parent.filterDialog.allowExcelLikeFilter ? '440px' : '400px');\n this.parent.isDataOverflow = true;\n }\n else {\n this.parent.editorLabelElement.innerText = '';\n this.parent.filterDialog.dialogPopUp.height = (this.parent.filterDialog.allowExcelLikeFilter ? '400px' : '350px');\n this.parent.isDataOverflow = false;\n }\n this.parent.isDataOverflow = (memberCount > this.parent.control.maxNodeLimitInMemberEditor);\n this.parent.editorLabelElement.parentElement.style.display = this.parent.isDataOverflow ? 'block' : 'none';\n treeObj.fields = { dataSource: searchList, id: 'id', text: 'name', isChecked: 'isSelected', parentID: 'pid' };\n treeObj.dataBind();\n }\n }\n };\n EventBase.prototype.updateOlapSearchTree = function (args, treeObj, isHierarchy) {\n var treeData = [];\n var filterDialog = this.parent.filterDialog.dialogPopUp.element;\n var fieldName = filterDialog.getAttribute('data-fieldname');\n if (args.value.toLowerCase() === '') {\n this.parent.filterDialog.isSearchEnabled = false;\n this.parent.engineModule.fieldList[fieldName].searchMembers = [];\n // (this.parent.engineModule.fieldList[fieldName] as IOlapField).currrentMembers = {};\n var updatedTreeData = [];\n var filterItemObj = {};\n var dummyfilterItems = {};\n var memberObject = this.parent.engineModule.fieldList[fieldName].members;\n var members = Object.keys(memberObject);\n var filterItems = [];\n for (var _i = 0, members_1 = members; _i < members_1.length; _i++) {\n var item = members_1[_i];\n if (memberObject[item].isSelected) {\n if (!(memberObject[item].parent && memberObject[memberObject[item].parent].isSelected)) {\n filterItems.push(item);\n }\n }\n }\n for (var _a = 0, filterItems_2 = filterItems; _a < filterItems_2.length; _a++) {\n var item = filterItems_2[_a];\n filterItemObj[item] = item;\n dummyfilterItems[item] = item;\n if (memberObject[item]) {\n dummyfilterItems = this.getParentNode(fieldName, item, dummyfilterItems);\n }\n }\n var searchData = this.parent.engineModule.fieldList[fieldName].filterMembers;\n treeData = this.getFilteredTreeNodes(fieldName, searchData, dummyfilterItems, updatedTreeData, isHierarchy);\n treeData = this.getOlapTreeData(true, PivotUtil.getClonedData(treeData), filterItemObj, fieldName, isHierarchy, true);\n }\n else {\n this.parent.filterDialog.isSearchEnabled = true;\n var searchData = this.parent.engineModule.fieldList[fieldName].searchMembers;\n treeData = PivotUtil.getClonedData(searchData);\n treeData = this.getOlapSearchTreeData(true, treeData, fieldName);\n }\n treeObj.fields = { dataSource: treeData, id: 'id', text: 'name', isChecked: 'isSelected', parentID: 'pid' };\n treeObj.dataBind();\n };\n EventBase.prototype.getTreeData = function (isInclude, members, filterItems, fieldName) {\n this.parent.currentTreeItems = [];\n this.parent.searchTreeItems = [];\n this.parent.currentTreeItemsPos = {};\n this.parent.savedTreeFilterPos = {};\n var engineModule = this.parent.engineModule;\n this.parent.isDateField = engineModule.formatFields[fieldName] &&\n ((['date', 'dateTime', 'time']).indexOf(engineModule.formatFields[fieldName].type) > -1);\n var list = [];\n var memberCount = 1;\n var filterObj = {};\n for (var _i = 0, filterItems_3 = filterItems; _i < filterItems_3.length; _i++) {\n var item = filterItems_3[_i];\n filterObj[item] = item;\n }\n var modifiedFieldName = fieldName.replace(/[^a-zA-Z0-9 ]/g, '_');\n for (var _a = 0, members_2 = members; _a < members_2.length; _a++) {\n var member = members_2[_a];\n var memberName = this.parent.isDateField ? member.formattedText : member.actualText.toString();\n /* eslint-disable */\n var nodeAttr = { 'data-fieldName': fieldName, 'data-memberId': member.actualText.toString() };\n var obj = {\n id: modifiedFieldName + '_' + memberCount,\n htmlAttributes: nodeAttr,\n actualText: member.actualText,\n name: memberName,\n isSelected: isInclude ? false : true\n };\n /* eslint-enable */\n if (filterObj[memberName] !== undefined) {\n obj.isSelected = isInclude ? true : false;\n }\n if (memberCount <= this.parent.control.maxNodeLimitInMemberEditor) {\n list.push(obj);\n }\n if (!obj.isSelected) {\n this.parent.savedTreeFilterPos[memberCount - 1] = memberName;\n }\n this.parent.currentTreeItems.push(obj);\n this.parent.searchTreeItems.push(obj);\n this.parent.currentTreeItemsPos[member.actualText] = { index: memberCount - 1, isSelected: obj.isSelected };\n memberCount++;\n }\n this.parent.isDataOverflow = ((memberCount - 1) > this.parent.control.maxNodeLimitInMemberEditor);\n return list;\n };\n /* eslint-disable */\n EventBase.prototype.getOlapTreeData = function (isInclude, members, filterObj, fieldName, isHierarchy, isSearchRender) {\n var engineModule = this.parent.engineModule;\n var fieldList = engineModule.fieldList[fieldName];\n this.parent.currentTreeItems = [];\n this.parent.searchTreeItems = [];\n this.parent.currentTreeItemsPos = {};\n var list = [];\n var memberCount = 1;\n for (var _i = 0, members_3 = members; _i < members_3.length; _i++) {\n var member = members_3[_i];\n var obj = member;\n /* eslint-enable */\n var memberName = member.id.toString();\n if (!isSearchRender) {\n obj.isSelected = isInclude ? false : true;\n }\n if (filterObj[memberName] !== undefined) {\n obj.isSelected = isInclude ? true : false;\n }\n if (!isSearchRender && member.hasChildren) {\n this.updateChildNodeStates(fieldList.filterMembers, fieldName, member.id, obj.isSelected);\n }\n fieldList.members[memberName].isSelected = obj.isSelected;\n if (fieldList.currrentMembers && fieldList.currrentMembers[memberName]) {\n fieldList.currrentMembers[memberName].isSelected = obj.isSelected;\n }\n if (memberCount <= this.parent.control.maxNodeLimitInMemberEditor && isHierarchy) {\n list.push(obj);\n }\n this.parent.currentTreeItems.push(obj);\n this.parent.searchTreeItems.push(obj);\n this.parent.currentTreeItemsPos[memberName] = { index: memberCount - 1, isSelected: obj.isSelected };\n memberCount++;\n }\n this.parent.isDataOverflow = isHierarchy ? ((memberCount - 1) > this.parent.control.maxNodeLimitInMemberEditor) : false;\n return isHierarchy ? list : members;\n };\n /* eslint-disable */\n EventBase.prototype.getOlapSearchTreeData = function (isInclude, members, fieldName) {\n /* eslint-enable */\n var cMembers = this.parent.engineModule.fieldList[fieldName].members;\n for (var _i = 0, members_4 = members; _i < members_4.length; _i++) {\n var member = members_4[_i];\n var memberName = member.id.toString();\n if (cMembers[memberName]) {\n member.isSelected = cMembers[memberName].isSelected;\n }\n this.parent.searchTreeItems.push(member);\n }\n return members;\n };\n EventBase.prototype.updateChildNodeStates = function (members, fieldName, node, state) {\n var cMembers = this.parent.engineModule.fieldList[fieldName].members;\n var sMembers = this.parent.engineModule.fieldList[fieldName].currrentMembers;\n for (var _i = 0, members_5 = members; _i < members_5.length; _i++) {\n var member = members_5[_i];\n if (member.pid && member.pid.toString() === node) {\n cMembers[member.id].isSelected = state;\n if (sMembers && sMembers[member.id]) {\n sMembers[member.id].isSelected = state;\n }\n if (member.hasChildren) {\n this.updateChildNodeStates(members, fieldName, member.id, state);\n }\n }\n }\n };\n /* eslint-disable-next-line */\n /**\n * get the parent node of particular filter members.\n * @hidden\n */\n EventBase.prototype.getParentNode = function (fieldName, item, filterObj) {\n var members = this.parent.engineModule.fieldList[fieldName].members;\n if (members[item].parent && item !== members[item].parent) {\n var parentItem = members[item].parent;\n filterObj[parentItem] = parentItem;\n this.getParentNode(fieldName, parentItem, filterObj);\n }\n return filterObj;\n };\n /* eslint-disable */\n EventBase.prototype.getFilteredTreeNodes = function (fieldName, members, filterObj, treeData, isHierarchy) {\n /* eslint-enable */\n var parentNodes = [];\n var memberObject = this.parent.engineModule.fieldList[fieldName].members;\n var selectedNodes = filterObj ? Object.keys(filterObj) : [];\n for (var _i = 0, selectedNodes_1 = selectedNodes; _i < selectedNodes_1.length; _i++) {\n var node = selectedNodes_1[_i];\n var parent_1 = memberObject[node].parent;\n if (parent_1 !== undefined && PivotUtil.inArray(parent_1, parentNodes) === -1) {\n parentNodes.push(parent_1);\n }\n }\n for (var _a = 0, members_6 = members; _a < members_6.length; _a++) {\n var member = members_6[_a];\n /* eslint-disable */\n if (isNullOrUndefined(member.pid) || PivotUtil.inArray(member.pid, parentNodes) !== -1) {\n treeData.push(member);\n /* eslint-enable */\n if (isNullOrUndefined(member.pid) && PivotUtil.inArray(member.id, parentNodes) !== -1) {\n memberObject[member.id].isNodeExpand = true;\n }\n else if (!isNullOrUndefined(member.pid) && PivotUtil.inArray(member.pid, parentNodes) !== -1) {\n memberObject[member.id].isNodeExpand = false;\n memberObject[member.pid].isNodeExpand = true;\n }\n else {\n memberObject[member.id].isNodeExpand = false;\n }\n }\n else {\n memberObject[member.id].isNodeExpand = false;\n }\n }\n return treeData;\n };\n return EventBase;\n}());\nexport { EventBase };\n","import { isNullOrUndefined, closest, isBlazor } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\n/**\n * `DialogAction` module is used to handle field list dialog related behaviour.\n */\n/** @hidden */\nvar NodeStateModified = /** @class */ (function () {\n /**\n * Constructor for the dialog action.\n * @param {PivotCommon} parent - parent.\n * @hidden\n */\n function NodeStateModified(parent) {\n this.parent = parent;\n }\n /* eslint-disable-next-line */\n /**\n * Updates the dataSource by drag and drop the selected field from either field list or axis table with dropped target position.\n * @function onStateModified\n * @param {DragEventArgs & DragAndDropEventArgs} args - Contains both pivot button and field list drag and drop information.\n * @param {string} fieldName - Defines dropped field name to update dataSource.\n * @returns {void}\n * @hidden\n */\n NodeStateModified.prototype.onStateModified = function (args, fieldName) {\n /* eslint-enable */\n var droppedClass = '';\n var nodeDropped = true;\n var target = closest(args.target, '.' + cls.DROPPABLE_CLASS);\n var droppedPosition = -1;\n this.parent.dataSourceUpdate.btnElement = args.element ? args.element.parentElement : undefined;\n if (target) {\n droppedClass = target.classList[1] === cls.ROW_AXIS_CLASS ?\n 'rows' : target.classList[1] === cls.COLUMN_AXIS_CLASS ? 'columns' : target.classList[1] === cls.VALUE_AXIS_CLASS ?\n 'values' : target.classList[1] === cls.FILTER_AXIS_CLASS ? 'filters' : '';\n }\n if (this.parent.dataType === 'olap') {\n var actualFieldName = (this.parent.engineModule.fieldList[fieldName] &&\n this.parent.engineModule.fieldList[fieldName].isCalculatedField ?\n this.parent.engineModule.fieldList[fieldName].tag : fieldName);\n if (args.cancel && droppedClass === '') {\n nodeDropped = false;\n return nodeDropped;\n }\n else if ((this.parent.dataSourceUpdate.btnElement &&\n (this.parent.dataSourceUpdate.btnElement.getAttribute('isValue') === 'true' &&\n (droppedClass === 'filters' || droppedClass === 'values'))) ||\n (this.parent.dataSourceUpdate.btnElement &&\n (this.parent.dataSourceUpdate.btnElement.getAttribute('isValue') === 'false' &&\n actualFieldName.toLowerCase().indexOf('[measures].') > -1 &&\n (droppedClass === 'filters' || droppedClass === 'rows' || droppedClass === 'columns'))) ||\n (this.parent.dataSourceUpdate.btnElement &&\n (this.parent.dataSourceUpdate.btnElement.getAttribute('isValue') === 'false' &&\n actualFieldName.toLowerCase().indexOf('[measures].') === -1 &&\n this.parent.engineModule.fieldList[fieldName] &&\n this.parent.engineModule.fieldList[fieldName].isNamedSets &&\n (droppedClass === 'filters' || droppedClass === 'values'))) ||\n (this.parent.dataSourceUpdate.btnElement &&\n (this.parent.dataSourceUpdate.btnElement.getAttribute('isValue') === 'false' &&\n actualFieldName.toLowerCase().indexOf('[measures].') === -1 && droppedClass === 'values'))) {\n var title = this.parent.localeObj.getConstant('warning');\n var description = this.parent.localeObj.getConstant('fieldDropErrorAction');\n this.parent.errorDialog.createErrorDialog(title, description);\n nodeDropped = false;\n return nodeDropped;\n }\n }\n else {\n if ((args.cancel && droppedClass === '') ||\n (this.parent.dataSourceUpdate.btnElement && this.parent.dataSourceUpdate.btnElement.getAttribute('isValue') === 'true' &&\n ((droppedClass === 'filters' || droppedClass === 'values') ||\n droppedClass.indexOf(this.parent.dataSourceSettings.valueAxis) > -1))) {\n nodeDropped = false;\n return nodeDropped;\n }\n }\n if (droppedClass !== '') {\n if (this.parent.dataType === 'olap') {\n var actualFieldName = (this.parent.engineModule.fieldList[fieldName] &&\n this.parent.engineModule.fieldList[fieldName].isCalculatedField ?\n this.parent.engineModule.fieldList[fieldName].tag : fieldName);\n if ((actualFieldName.toLowerCase().indexOf('[measures].') > -1 &&\n (droppedClass === 'filters' || droppedClass === 'rows' || droppedClass === 'columns')) ||\n (this.parent.engineModule.fieldList[fieldName] &&\n this.parent.engineModule.fieldList[fieldName].isNamedSets && droppedClass === 'filters') ||\n (actualFieldName.toLowerCase().indexOf('[measures].') === -1 && droppedClass === 'values')) {\n var title = this.parent.localeObj.getConstant('warning');\n var description = this.parent.localeObj.getConstant('fieldDropErrorAction');\n this.parent.errorDialog.createErrorDialog(title, description);\n nodeDropped = false;\n return nodeDropped;\n }\n }\n if (this.parent.dataType === 'pivot' && this.parent.engineModule.fieldList[fieldName] &&\n this.parent.engineModule.fieldList[fieldName].aggregateType === 'CalculatedField' && droppedClass !== 'values') {\n var title = this.parent.localeObj.getConstant('warning');\n var description = this.parent.localeObj.getConstant('dropAction');\n this.parent.errorDialog.createErrorDialog(title, description);\n nodeDropped = false;\n return nodeDropped;\n }\n droppedPosition = this.getButtonPosition(args.target, droppedClass);\n }\n else if (this.parent.engineModule.fieldList[fieldName]) {\n this.parent.engineModule.fieldList[fieldName].isSelected = false;\n if (this.parent.dataType === 'olap') {\n this.parent.engineModule.updateFieldlistData(fieldName);\n }\n }\n this.parent.dataSourceUpdate.updateDataSource(fieldName, droppedClass, droppedPosition);\n return isBlazor() ? false : nodeDropped;\n };\n NodeStateModified.prototype.getButtonPosition = function (target, droppedClass) {\n var droppedPosition = -1;\n var targetBtn = closest(target, '.' + cls.PIVOT_BUTTON_WRAPPER_CLASS);\n if (!isNullOrUndefined(targetBtn)) {\n targetBtn = targetBtn.querySelector('.' + cls.PIVOT_BUTTON_CLASS);\n var axisPanel = this.parent.element.querySelector('.e-' + droppedClass);\n var pivotButtons = [].slice.call(axisPanel.querySelectorAll('.' + cls.PIVOT_BUTTON_CLASS));\n for (var i = 0, n = pivotButtons.length; i < n; i++) {\n if (pivotButtons[i].id === targetBtn.id) {\n droppedPosition = i;\n break;\n }\n }\n }\n return droppedPosition;\n };\n return NodeStateModified;\n}());\nexport { NodeStateModified };\n","import * as events from '../../common/base/constant';\nimport { isBlazor } from '@syncfusion/ej2-base';\nimport { PivotUtil } from '../../base/util';\n/**\n * `DataSourceUpdate` module is used to update the dataSource.\n */\n/** @hidden */\nvar DataSourceUpdate = /** @class */ (function () {\n /**\n * Constructor for the dialog action.\n * @param {PivotCommon} parent - parent.\n * @hidden\n */\n function DataSourceUpdate(parent) {\n this.parent = parent;\n }\n /**\n * Updates the dataSource by adding the given field along with field dropped position to the dataSource.\n * @function updateDataSource\n * @param {string} fieldName - Defines dropped field name to update dataSource.\n * @param {string} droppedClass - Defines dropped field axis name to update dataSource.\n * @param {number} droppedPosition - Defines dropped position to the axis based on field position.\n * @returns {void}\n * @hidden\n */\n DataSourceUpdate.prototype.updateDataSource = function (fieldName, droppedClass, droppedPosition) {\n var _this = this;\n var dataSourceItem;\n var draggedClass;\n var row = this.parent.dataSourceSettings.rows;\n var column = this.parent.dataSourceSettings.columns;\n var value = this.parent.dataSourceSettings.values;\n var filter = this.parent.dataSourceSettings.filters;\n var field = [row, column, value, filter];\n for (var len = 0, lnt = field.length; len < lnt; len++) {\n if (field[len]) {\n for (var i = 0, n = field[len].length; i < n; i++) {\n if (field[len][i].name === fieldName || (this.parent.dataType === 'olap' &&\n field[len][i].name.toLowerCase() === '[measures]' && field[len][i].name.toLowerCase() === fieldName)) {\n draggedClass = len === 0 ? 'rows' : len === 1 ? 'columns' : len === 2 ? 'values' : 'filters';\n }\n if (!draggedClass) {\n draggedClass = 'fieldList';\n }\n }\n }\n }\n var eventdrop = {\n fieldName: fieldName, dropField: PivotUtil.getFieldInfo(fieldName, this.control).fieldItem,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings),\n dropAxis: droppedClass, dropPosition: droppedPosition, draggedAxis: draggedClass, cancel: false\n };\n var control = this.control.getModuleName() === 'pivotfieldlist' && this.control.isPopupView ?\n this.control.pivotGridModule : this.control;\n control.trigger(events.fieldDrop, eventdrop, function (observedArgs) {\n if (!observedArgs.cancel) {\n droppedClass = observedArgs.dropAxis;\n droppedPosition = observedArgs.dropPosition;\n fieldName = observedArgs.dropField ? observedArgs.dropField.name : observedArgs.fieldName;\n dataSourceItem = observedArgs.dropField;\n if (_this.control && _this.btnElement && _this.btnElement.getAttribute('isvalue') === 'true') {\n switch (droppedClass) {\n case '':\n _this.control.setProperties({ dataSourceSettings: { values: [] } }, true);\n break;\n case 'rows':\n _this.control.setProperties({ dataSourceSettings: { valueAxis: 'row' } }, true);\n break;\n case 'columns':\n _this.control.setProperties({ dataSourceSettings: { valueAxis: 'column' } }, true);\n break;\n }\n }\n else {\n // dataSourceItem = this.removeFieldFromReport(fieldName.toString());\n // dataSourceItem = dataSourceItem ? dataSourceItem : this.getNewField(fieldName.toString());\n _this.removeFieldFromReport(fieldName.toString());\n dataSourceItem = _this.getNewField(fieldName.toString(), observedArgs.dropField);\n if (dataSourceItem.type === 'CalculatedField' && droppedClass !== '') {\n droppedClass = 'values';\n }\n }\n if (_this.parent.dataType === 'olap') {\n // dataSourceItem = this.removeFieldFromReport(fieldName.toString());\n // dataSourceItem = dataSourceItem ? dataSourceItem : this.getNewField(fieldName.toString());\n _this.removeFieldFromReport(fieldName.toString());\n dataSourceItem = _this.getNewField(fieldName.toString(), observedArgs.dropField);\n if (_this.parent.dataSourceSettings.values.length === 0) {\n _this.removeFieldFromReport('[measures]');\n }\n if (dataSourceItem.type === 'CalculatedField' && droppedClass !== '') {\n droppedClass = 'values';\n }\n }\n if (_this.control) {\n var eventArgs = {\n fieldName: fieldName, droppedField: dataSourceItem,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(_this.parent.dataSourceSettings),\n droppedAxis: droppedClass, droppedPosition: droppedPosition\n };\n /* eslint-disable */\n var dataSourceUpdate_1 = _this;\n control.trigger(events.onFieldDropped, eventArgs, function (droppedArgs) {\n dataSourceItem = droppedArgs.droppedField;\n if (dataSourceItem) {\n droppedPosition = droppedArgs.droppedPosition;\n droppedClass = droppedArgs.droppedAxis;\n switch (droppedClass) {\n case 'filters':\n droppedPosition !== -1 ?\n (isBlazor() ? dataSourceUpdate_1.parent.dataSourceSettings.filters.splice(droppedPosition, 0, dataSourceItem) : _this.parent.dataSourceSettings.filters.splice(droppedPosition, 0, dataSourceItem)) :\n (isBlazor() ? dataSourceUpdate_1.parent.dataSourceSettings.filters.push(dataSourceItem) : _this.parent.dataSourceSettings.filters.push(dataSourceItem));\n break;\n case 'rows':\n droppedPosition !== -1 ?\n (isBlazor() ? dataSourceUpdate_1.parent.dataSourceSettings.rows.splice(droppedPosition, 0, dataSourceItem) : _this.parent.dataSourceSettings.rows.splice(droppedPosition, 0, dataSourceItem)) :\n (isBlazor() ? dataSourceUpdate_1.parent.dataSourceSettings.rows.push(dataSourceItem) : _this.parent.dataSourceSettings.rows.push(dataSourceItem));\n break;\n case 'columns':\n droppedPosition !== -1 ?\n (isBlazor() ? dataSourceUpdate_1.parent.dataSourceSettings.columns.splice(droppedPosition, 0, dataSourceItem) : _this.parent.dataSourceSettings.columns.splice(droppedPosition, 0, dataSourceItem)) :\n (isBlazor() ? dataSourceUpdate_1.parent.dataSourceSettings.columns.push(dataSourceItem) : _this.parent.dataSourceSettings.columns.push(dataSourceItem));\n break;\n case 'values':\n droppedPosition !== -1 ?\n (isBlazor() ? dataSourceUpdate_1.parent.dataSourceSettings.values.splice(droppedPosition, 0, dataSourceItem) : _this.parent.dataSourceSettings.values.splice(droppedPosition, 0, dataSourceItem)) :\n (isBlazor() ? dataSourceUpdate_1.parent.dataSourceSettings.values.push(dataSourceItem) : _this.parent.dataSourceSettings.values.push(dataSourceItem));\n if (isBlazor()) {\n if (dataSourceUpdate_1.parent.dataType === 'olap' && !dataSourceUpdate_1.parent.engineModule.isMeasureAvail) {\n var measureField = {\n name: '[Measures]', caption: 'Measures', showRemoveIcon: true, allowDragAndDrop: true\n };\n var fieldAxis = dataSourceUpdate_1.parent.dataSourceSettings.valueAxis === 'row' ?\n dataSourceUpdate_1.parent.dataSourceSettings.rows : dataSourceUpdate_1.parent.dataSourceSettings.columns;\n fieldAxis.push(measureField);\n }\n }\n else {\n if (_this.parent.dataType === 'olap' && !_this.parent.engineModule.isMeasureAvail) {\n var measureField = {\n name: '[Measures]', caption: 'Measures', showRemoveIcon: true, allowDragAndDrop: true\n };\n var fieldAxis = _this.parent.dataSourceSettings.valueAxis === 'row' ?\n _this.parent.dataSourceSettings.rows : _this.parent.dataSourceSettings.columns;\n fieldAxis.push(measureField);\n }\n }\n break;\n }\n if (isBlazor()) {\n dataSourceUpdate_1.parent.control.pivotButtonModule.updateDataSource();\n dataSourceUpdate_1.parent.control.axisFieldModule.render();\n }\n }\n });\n }\n }\n });\n };\n /**\n * Updates the dataSource by removing the given field from the dataSource.\n * @param {string} fieldName - Defines dropped field name to remove dataSource.\n * @function removeFieldFromReport\n * @returns {void}\n * @hidden\n */\n DataSourceUpdate.prototype.removeFieldFromReport = function (fieldName) {\n /* eslint-enable */\n var dataSourceItem;\n var isDataSource = false;\n var rows = this.parent.dataSourceSettings.rows;\n var columns = this.parent.dataSourceSettings.columns;\n var values = this.parent.dataSourceSettings.values;\n var filters = this.parent.dataSourceSettings.filters;\n var fields = [rows, columns, values, filters];\n var field = this.parent.engineModule.fieldList[fieldName];\n for (var len = 0, lnt = fields.length; len < lnt; len++) {\n if (!isDataSource && fields[len]) {\n for (var i = 0, n = fields[len].length; i < n; i++) {\n if (fields[len][i].name === fieldName || (this.parent.dataType === 'olap' &&\n fields[len][i].name.toLowerCase() === '[measures]' && fields[len][i].name.toLowerCase() === fieldName)) {\n dataSourceItem = fields[len][i].properties ?\n fields[len][i].properties : fields[len][i];\n dataSourceItem.type = (field && field.type === 'number') ? dataSourceItem.type :\n 'Count';\n fields[len].splice(i, 1);\n if (this.parent.dataType === 'olap') {\n var engineModule = this.parent.engineModule;\n if (engineModule && engineModule.fieldList[fieldName]) {\n engineModule.fieldList[fieldName].currrentMembers = {};\n engineModule.fieldList[fieldName].searchMembers = [];\n }\n }\n isDataSource = true;\n break;\n }\n }\n }\n }\n return dataSourceItem;\n };\n /**\n * Creates new field object given field name from the field list data.\n * @param {string} fieldName - Defines dropped field name to add dataSource.\n * @param {IFieldOptions} fieldItem - Defines dropped field.\n * @function getNewField\n * @returns {IFieldOptions} - IFieldOptions\n * @hidden\n */\n DataSourceUpdate.prototype.getNewField = function (fieldName, fieldItem) {\n var newField;\n if (this.parent.dataType === 'olap') {\n var field = this.parent.engineModule.fieldList[fieldName];\n newField = {\n name: fieldItem ? fieldItem.name : fieldName,\n caption: fieldItem ? fieldItem.caption : field.caption,\n isNamedSet: fieldItem ? fieldItem.isNamedSet : field.isNamedSets,\n isCalculatedField: fieldItem ? fieldItem.isCalculatedField : field.isCalculatedField,\n type: (fieldItem ? (fieldItem.type === undefined ? field.type === 'number' ? 'Sum' :\n 'Count' : fieldItem.type) :\n (field.aggregateType === undefined ? field.type === 'number' ? 'Sum' :\n 'Count' : field.aggregateType)),\n showFilterIcon: fieldItem ? fieldItem.showFilterIcon : field.showFilterIcon,\n showSortIcon: fieldItem ? fieldItem.showSortIcon : field.showSortIcon,\n showEditIcon: fieldItem ? fieldItem.showEditIcon : field.showEditIcon,\n showRemoveIcon: fieldItem ? fieldItem.showRemoveIcon : field.showRemoveIcon,\n showValueTypeIcon: fieldItem ? fieldItem.showValueTypeIcon : field.showValueTypeIcon,\n allowDragAndDrop: fieldItem ? fieldItem.allowDragAndDrop : field.allowDragAndDrop,\n showSubTotals: fieldItem ? fieldItem.showSubTotals : field.showSubTotals\n };\n }\n else {\n var field = this.parent.engineModule.fieldList[fieldName];\n newField = {\n name: fieldItem ? fieldItem.name : fieldName,\n caption: fieldItem ? fieldItem.caption : field.caption,\n type: (fieldItem ? ((fieldItem.type === undefined || fieldItem.type === null) ?\n field.type === 'number' ? 'Sum' : 'Count' : fieldItem.type) :\n ((field.aggregateType === undefined || field.aggregateType === null) ?\n field.type === 'number' ? 'Sum' :\n 'Count' : field.aggregateType)),\n showNoDataItems: fieldItem ? fieldItem.showNoDataItems : field.showNoDataItems,\n baseField: fieldItem ? fieldItem.baseField : field.baseField,\n baseItem: fieldItem ? fieldItem.baseItem : field.baseItem,\n allowDragAndDrop: fieldItem ? fieldItem.allowDragAndDrop : field.allowDragAndDrop,\n showSubTotals: fieldItem ? fieldItem.showSubTotals : field.showSubTotals,\n showFilterIcon: fieldItem ? fieldItem.showFilterIcon : field.showFilterIcon,\n showSortIcon: fieldItem ? fieldItem.showSortIcon : field.showSortIcon,\n showEditIcon: fieldItem ? fieldItem.showEditIcon : field.showEditIcon,\n showRemoveIcon: fieldItem ? fieldItem.showRemoveIcon : field.showRemoveIcon,\n showValueTypeIcon: fieldItem ? fieldItem.showValueTypeIcon : field.showValueTypeIcon\n };\n }\n return newField;\n };\n return DataSourceUpdate;\n}());\nexport { DataSourceUpdate };\n","import { createElement, remove } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport { Dialog } from '@syncfusion/ej2-popups';\n/**\n * `ErrorDialog` module to create error dialog.\n */\n/** @hidden */\nvar ErrorDialog = /** @class */ (function () {\n /* eslint-disable-next-line */\n /**\n * Constructor for the dialog action.\n * @hidden\n */\n function ErrorDialog(parent) {\n this.parent = parent;\n }\n /* eslint-disable-next-line */\n /**\n * Creates the error dialog for the unexpected action done.\n * @function createErrorDialog\n * @returns {void}\n * @hidden\n */\n ErrorDialog.prototype.createErrorDialog = function (title, description, target) {\n var errorDialog = createElement('div', {\n id: this.parent.parentID + '_ErrorDialog',\n className: cls.ERROR_DIALOG_CLASS\n });\n this.parent.element.appendChild(errorDialog);\n var zIndex = target ? Number(target.style.zIndex) + 1 : (this.parent.moduleName === 'pivotfieldlist' &&\n this.parent.renderMode === 'Popup' && this.parent.control ? this.parent.control.dialogRenderer.fieldListDialog.zIndex + 1 :\n (this.parent.moduleName === 'pivotfieldlist' && this.parent.renderMode === 'Fixed' && this.parent.control ? 1000002 :\n (this.parent.moduleName === 'pivotview' && this.parent.control ? 1000002 : 1000001)));\n this.errorPopUp = new Dialog({\n animationSettings: { effect: 'Fade' },\n allowDragging: false,\n header: title,\n content: description,\n isModal: true,\n visible: true,\n showCloseIcon: true,\n enableRtl: this.parent.enableRtl,\n width: 'auto',\n height: 'auto',\n zIndex: zIndex,\n position: { X: 'center', Y: 'center' },\n buttons: [\n {\n click: this.closeErrorDialog.bind(this),\n buttonModel: { cssClass: cls.OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true }\n }\n ],\n closeOnEscape: true,\n target: document.body,\n close: this.removeErrorDialog.bind(this)\n });\n this.errorPopUp.isStringTemplate = true;\n this.errorPopUp.appendTo(errorDialog);\n };\n ErrorDialog.prototype.closeErrorDialog = function () {\n this.errorPopUp.close();\n };\n ErrorDialog.prototype.removeErrorDialog = function () {\n if (this.errorPopUp && !this.errorPopUp.isDestroyed) {\n this.errorPopUp.destroy();\n }\n if (document.getElementById(this.parent.parentID + '_ErrorDialog')) {\n remove(document.getElementById(this.parent.parentID + '_ErrorDialog'));\n }\n };\n return ErrorDialog;\n}());\nexport { ErrorDialog };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/ban-types */\nimport { ChildProperty, extend, deleteObject, Property, addClass } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n","/* eslint-disable @typescript-eslint/ban-types */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Event, NotifyPropertyChanges, detach, Property, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, getUniqueID, rippleEffect } from '@syncfusion/ej2-base';\nimport { attributes, Component, closest, select, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { classList, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { upDownKeyHandler } from './../common/common';\nimport { getModel, Item, setBlankIconStyle } from './../common/common';\nvar classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['aria-owns'] = this.getPopUpElement().id,\n _a['type'] = 'button',\n _a['aria-label'] = this.element.textContent + ' dropdownbutton',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: { 'role': 'menuItem', 'tabindex': '-1' },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n if (this.target || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n }\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n };\n DropDownButton.prototype.popupWireEvents = function () {\n var popupElement = this.getPopUpElement();\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || this.target) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var eventArgs = void 0;\n var liIdx = void 0;\n var item = void 0;\n var li = this.getLI(trgt);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item };\n this.trigger('select', eventArgs);\n }\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n if (!this.target) {\n this.createItems(true);\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n ul_1.focus();\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_2 = _this.getULElement();\n var selectedLi = ul_2.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n if (_this.target) {\n _this.isPopupCreated = _this.createPopupOnClick ? false : true;\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n var arrowSpan = this.element.querySelector('span.e-caret');\n classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\n","import { createElement, removeClass, addClass, remove, isNullOrUndefined, setStyleAttribute, closest, EventHandler } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport { TreeView, Tab } from '@syncfusion/ej2-navigations';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { MaskedTextBox, NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { setStyleAndAttributes } from '@syncfusion/ej2-grids';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { PivotUtil } from '../../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\n/**\n * `FilterDialog` module to create filter dialog.\n */\n/** @hidden */\nvar FilterDialog = /** @class */ (function () {\n /* eslint-disable-next-line */\n /**\n * Constructor for the dialog action.\n * @hidden\n */\n function FilterDialog(parent) {\n this.parent = parent;\n }\n /* eslint-disable-next-line */\n /**\n * Creates the member filter dialog for the selected field.\n * @function createFilterDialog\n * @returns {void}\n * @hidden\n */\n FilterDialog.prototype.createFilterDialog = function (treeData, fieldName, fieldCaption, target) {\n var _this = this;\n var editorDialog = createElement('div', {\n id: this.parent.parentID + '_EditorTreeView',\n className: cls.MEMBER_EDITOR_DIALOG_CLASS + ' ' + (this.parent.dataType === 'olap' ? 'e-olap-editor-dialog' : ''),\n attrs: { 'data-fieldName': fieldName, 'aria-label': fieldCaption }\n });\n var filterCaption = this.parent.engineModule.fieldList[fieldName].caption;\n var headerTemplate = this.parent.localeObj.getConstant('filter') + ' ' +\n '\"' + fieldCaption + '\"' + ' ' + this.parent.localeObj.getConstant('by');\n this.filterObject = this.getFilterObject(fieldName);\n this.isSearchEnabled = false;\n this.allowExcelLikeFilter = this.isExcelFilter(fieldName);\n this.parent.element.appendChild(editorDialog);\n this.dialogPopUp = new Dialog({\n animationSettings: { effect: (this.allowExcelLikeFilter ? 'None' : 'Fade') },\n allowDragging: false,\n header: (this.allowExcelLikeFilter ? headerTemplate : filterCaption),\n // content: (this.allowExcelLikeFilter ? '' : this.createTreeView(treeData, fieldCaption, fieldName)),\n content: '',\n isModal: true,\n visible: true,\n showCloseIcon: this.allowExcelLikeFilter ? true : false,\n enableRtl: this.parent.enableRtl,\n width: 'auto',\n height: this.parent.isDataOverflow ? (this.allowExcelLikeFilter ? '440px' : '400px') :\n (this.allowExcelLikeFilter ? '400px' : '350px'),\n position: { X: 'center', Y: 'center' },\n buttons: [\n {\n buttonModel: {\n cssClass: 'e-clear-filter-button' + (this.allowExcelLikeFilter ? '' : ' ' + cls.ICON_DISABLE),\n iconCss: 'e-icons e-clear-filter-icon', enableRtl: this.parent.enableRtl,\n content: this.parent.localeObj.getConstant('clearFilter'), disabled: (this.filterObject ? false : true)\n }\n },\n {\n buttonModel: {\n cssClass: cls.OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true\n }\n },\n {\n click: this.closeFilterDialog.bind(this),\n buttonModel: { cssClass: cls.CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }\n }\n ],\n closeOnEscape: this.parent.renderMode === 'Popup' ? false : true,\n target: target,\n close: this.removeFilterDialog.bind(this)\n });\n this.dialogPopUp.isStringTemplate = true;\n this.dialogPopUp.appendTo(editorDialog);\n var filterArgs = {\n cancel: false,\n fieldName: fieldName,\n fieldMembers: this.parent.dataSourceSettings.allowMemberFilter ? treeData : [],\n filterSetting: this.filterObject\n };\n var control = this.parent.moduleName === 'pivotfieldlist' && this.parent.control.isPopupView ?\n this.parent.control.pivotGridModule : this.parent.control;\n control.trigger(events.memberEditorOpen, filterArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n treeData = observedArgs.fieldMembers;\n if (_this.allowExcelLikeFilter) {\n _this.createTabMenu(treeData, fieldCaption, fieldName);\n addClass([_this.dialogPopUp.element], 'e-excel-filter');\n _this.updateCheckedState(fieldCaption);\n }\n else {\n _this.dialogPopUp.content = _this.createTreeView(treeData, fieldCaption, fieldName);\n _this.updateCheckedState(fieldCaption);\n }\n setStyleAttribute(_this.dialogPopUp.element, { 'visibility': 'visible' });\n if (_this.allowExcelLikeFilter) {\n _this.dialogPopUp.element.querySelector('.e-dlg-closeicon-btn').focus();\n }\n _this.parent.control.pivotButtonModule.memberTreeView = _this.parent.filterDialog.memberTreeView;\n _this.memberTreeView.nodeChecked =\n _this.parent.control.pivotButtonModule.nodeStateModified.bind(_this.parent.control.pivotButtonModule);\n _this.allMemberSelect.nodeChecked =\n _this.parent.control.pivotButtonModule.nodeStateModified.bind(_this.parent.control.pivotButtonModule);\n }\n else {\n _this.dialogPopUp.close();\n _this.dialogPopUp = undefined;\n }\n });\n };\n /* eslint-disable */\n FilterDialog.prototype.createTreeView = function (treeData, fieldCaption, fieldName) {\n var _this = this;\n var editorTreeWrapper = createElement('div', {\n id: this.parent.parentID + 'EditorDiv',\n className: cls.EDITOR_TREE_WRAPPER_CLASS + (this.allowExcelLikeFilter ? ' e-excelfilter' : '')\n });\n var levelWrapper = createElement('button', {\n id: this.parent.parentID + '_LevelDiv',\n className: 'e-level-wrapper-class', attrs: { 'type': 'button' }\n });\n var searchWrapper = createElement('div', {\n id: this.parent.parentID + '_SearchDiv', attrs: { 'tabindex': '-1' },\n className: cls.EDITOR_SEARCH_WRAPPER_CLASS\n });\n var filterCaption = this.parent.engineModule.fieldList[fieldName].caption;\n var editorSearch = createElement('input', {\n attrs: { 'type': 'text', className: cls.EDITOR_SEARCH__INPUT_CLASS }\n });\n var nodeLimitText = this.parent.isDataOverflow ?\n ((this.parent.currentTreeItems.length - this.parent.control.maxNodeLimitInMemberEditor) +\n this.parent.control.localeObj.getConstant('editorDataLimitMsg')) : '';\n var labelWrapper = createElement('div', {\n id: this.parent.parentID + '_LabelDiv',\n attrs: { 'tabindex': '-1', 'title': nodeLimitText },\n className: cls.EDITOR_LABEL_WRAPPER_CLASS\n });\n this.parent.editorLabelElement = createElement('label', { className: cls.EDITOR_LABEL_CLASS });\n this.parent.editorLabelElement.innerText = nodeLimitText;\n labelWrapper.style.display = this.parent.isDataOverflow ? 'block' : 'none';\n labelWrapper.appendChild(this.parent.editorLabelElement);\n searchWrapper.appendChild(editorSearch);\n this.createSortOptions(fieldName, searchWrapper, treeData);\n var selectAllWrapper = createElement('div', {\n id: this.parent.parentID + '_AllDiv', attrs: { 'tabindex': '-1' },\n className: cls.SELECT_ALL_WRAPPER_CLASS\n });\n var selectAllContainer = createElement('div', { className: cls.SELECT_ALL_CLASS });\n var treeOuterDiv = createElement('div', { className: cls.EDITOR_TREE_CONTAINER_CLASS + '-outer-div' });\n var treeViewContainer = createElement('div', { className: cls.EDITOR_TREE_CONTAINER_CLASS });\n var promptDiv = createElement('div', {\n className: cls.EMPTY_MEMBER_CLASS + ' ' + cls.ICON_DISABLE,\n innerHTML: this.parent.localeObj.getConstant('noMatches')\n });\n if (this.parent.dataType === 'olap' && this.parent.control.loadOnDemandInMemberEditor &&\n !this.parent.engineModule.fieldList[fieldName].isHierarchy &&\n !this.parent.engineModule.fieldList[fieldName].isNamedSets) {\n searchWrapper.appendChild(levelWrapper);\n this.createLevelWrapper(levelWrapper, fieldName);\n }\n selectAllWrapper.appendChild(selectAllContainer);\n editorTreeWrapper.appendChild(searchWrapper);\n editorTreeWrapper.appendChild(selectAllWrapper);\n editorTreeWrapper.appendChild(promptDiv);\n this.editorSearch = new MaskedTextBox({\n placeholder: this.parent.localeObj.getConstant('search') + ' ' + '“' + filterCaption + '“',\n enableRtl: this.parent.enableRtl,\n cssClass: cls.EDITOR_SEARCH_CLASS,\n showClearButton: true,\n change: function (e) {\n if (_this.parent.dataType === 'olap') {\n _this.searchOlapTreeView(e, promptDiv, fieldCaption);\n }\n else {\n _this.parent.eventBase.searchTreeNodes(e, _this.memberTreeView, false);\n var filterDialog = _this.dialogPopUp.element;\n var liList = [].slice.call(_this.memberTreeView.element.querySelectorAll('li'));\n if (liList.length === 0) {\n _this.allMemberSelect.disableNodes([_this.allMemberSelect.element.querySelector('li')]);\n filterDialog.querySelector('.' + cls.OK_BUTTON_CLASS).setAttribute('disabled', 'disabled');\n removeClass([promptDiv], cls.ICON_DISABLE);\n }\n else {\n _this.allMemberSelect.enableNodes([_this.allMemberSelect.element.querySelector('li')]);\n filterDialog.querySelector('.' + cls.OK_BUTTON_CLASS).removeAttribute('disabled');\n addClass([promptDiv], cls.ICON_DISABLE);\n }\n _this.updateCheckedState(fieldCaption);\n }\n }\n });\n this.editorSearch.isStringTemplate = true;\n this.editorSearch.appendTo(editorSearch);\n var nodeAttr = { 'data-fieldName': fieldName, 'data-memberId': 'all' };\n var data = [{ id: 'all', name: this.parent.localeObj.getConstant('all'), isSelected: true, htmlAttributes: nodeAttr }];\n this.allMemberSelect = new TreeView({\n fields: { dataSource: data, id: 'id', text: 'name', isChecked: 'isSelected' },\n showCheckBox: true,\n expandOn: 'None',\n enableRtl: this.parent.enableRtl,\n nodeClicked: this.nodeCheck.bind(this, true),\n keyPress: this.nodeCheck.bind(this, true),\n nodeSelected: function (args) {\n removeClass([args.node], 'e-active');\n args.cancel = true;\n }\n });\n this.allMemberSelect.isStringTemplate = true;\n if (!isNullOrUndefined(this.parent.currentTreeItems)) {\n for (var i = 0; i < this.parent.currentTreeItems.length; i++) {\n if (this.parent.currentTreeItems[i].id.indexOf(\"\\n\") || this.parent.currentTreeItems[i].id.startsWith(\"\\n\")) {\n this.parent.currentTreeItems[i].id = this.parent.currentTreeItems[i].id.replace('\\n', ' ');\n }\n }\n }\n this.allMemberSelect.appendTo(selectAllContainer);\n treeOuterDiv.appendChild(treeViewContainer);\n editorTreeWrapper.appendChild(treeOuterDiv);\n this.memberTreeView = new TreeView({\n fields: { dataSource: treeData, id: 'id', text: 'name', isChecked: 'isSelected', parentID: 'pid' },\n showCheckBox: true,\n enableRtl: this.parent.enableRtl,\n nodeChecking: this.validateTreeNode.bind(this),\n nodeClicked: this.nodeCheck.bind(this, false),\n keyPress: this.nodeCheck.bind(this, false),\n nodeExpanding: this.updateChildNodes.bind(this),\n nodeSelected: function (args) {\n removeClass([args.node], 'e-active');\n args.cancel = true;\n },\n expandOn: 'None'\n });\n this.memberTreeView.isStringTemplate = true;\n this.memberTreeView.appendTo(treeViewContainer);\n editorTreeWrapper.appendChild(labelWrapper);\n return editorTreeWrapper;\n };\n FilterDialog.prototype.createSortOptions = function (fieldName, target, treeData) {\n if (this.parent.dataType === 'pivot' && treeData && treeData.length > 0) {\n var sortOrder = this.parent.engineModule.fieldList[fieldName].sort;\n var sortWrapper = createElement('div', {\n className: cls.FILTER_SORT_CLASS + ' e-btn-group' + (this.parent.enableRtl ? ' ' + cls.RTL : ''),\n id: this.parent.element.id + '_Member_Sort'\n });\n this.parent.element.appendChild(sortWrapper);\n var sortAscendElement = createElement('button', {\n className: (sortOrder === 'Ascending' ? cls.SORT_SELECTED_CLASS + ' ' : '') + cls.MEMBER_SORT_CLASS,\n id: this.parent.element.id + '_Sort_Ascend', attrs: { 'type': 'button' }\n });\n var sortDescendElement = createElement('button', {\n className: (sortOrder === 'Descending' ? cls.SORT_SELECTED_CLASS + ' ' : '') + cls.MEMBER_SORT_CLASS,\n id: this.parent.element.id + '_Sort_Descend', attrs: { 'type': 'button' }\n });\n var sortBtnElement = new Button({\n iconCss: cls.ICON + ' ' + cls.SORT_ASCEND_ICON_CLASS, enableRtl: this.parent.enableRtl\n });\n sortBtnElement.appendTo(sortAscendElement);\n sortBtnElement = new Button({\n iconCss: cls.ICON + ' ' + cls.SORT_DESCEND_ICON_CLASS, enableRtl: this.parent.enableRtl\n });\n sortBtnElement.appendTo(sortDescendElement);\n sortWrapper.appendChild(sortAscendElement);\n sortWrapper.appendChild(sortDescendElement);\n target.appendChild(sortWrapper);\n this.unWireEvent(sortAscendElement, fieldName);\n this.unWireEvent(sortDescendElement, fieldName);\n this.wireEvent(sortAscendElement, fieldName);\n this.wireEvent(sortDescendElement, fieldName);\n }\n };\n FilterDialog.prototype.createLevelWrapper = function (levelWrapper, fieldName) {\n var _this = this;\n var engineModule = this.parent.engineModule;\n var levels = engineModule.fieldList[fieldName].levels;\n var levelCount = engineModule.fieldList[fieldName].levelCount;\n var items = [];\n for (var i = 0, cnt = levels.length; i < cnt; i++) {\n items.push({ id: levels[i].id, text: levels[i].name });\n }\n this.dropMenu = new DropDownButton({\n cssClass: 'e-level-drop e-caret-hide',\n items: items, iconCss: 'e-icons e-dropdown-icon',\n disabled: (levelCount === levels.length),\n enableRtl: this.parent.enableRtl,\n beforeOpen: function (args) {\n var items = [].slice.call(args.element.querySelectorAll('li'));\n var engineModule = _this.parent.engineModule;\n var levelCount = engineModule.fieldList[fieldName].levelCount;\n removeClass(items, cls.MENU_DISABLE);\n for (var i = 0, cnt = items.length; i < cnt; i++) {\n if (i < levelCount) {\n addClass([items[i]], cls.MENU_DISABLE);\n }\n }\n },\n select: function (args) {\n var fieldName = _this.dialogPopUp.element.getAttribute('data-fieldname');\n var engineModule = _this.parent.engineModule;\n var selectedLevel;\n for (var i = 0, cnt = items.length; i < cnt; i++) {\n if (items[i].id === args.item.id) {\n selectedLevel = i;\n }\n }\n engineModule.getFilterMembers(_this.parent.dataSourceSettings, fieldName, selectedLevel + 1, false, true);\n },\n close: function () {\n var engineModule = _this.parent.engineModule;\n var levels = engineModule.fieldList[fieldName].levels;\n var levelCount = engineModule.fieldList[fieldName].levelCount;\n if (levelCount === levels.length) {\n _this.dropMenu.disabled = true;\n _this.dropMenu.dataBind();\n }\n else {\n _this.dropMenu.disabled = false;\n }\n }\n });\n this.dropMenu.appendTo(levelWrapper);\n };\n FilterDialog.prototype.searchOlapTreeView = function (e, promptDiv, fieldCaption) {\n var popupInstance = this;\n clearTimeout(this.timeOutObj);\n this.timeOutObj = setTimeout(function () {\n var engineModule = popupInstance.parent.engineModule;\n var filterDialog = popupInstance.dialogPopUp.element;\n var fieldName = filterDialog.getAttribute('data-fieldname');\n var nodeLimit = popupInstance.parent.control.maxNodeLimitInMemberEditor ?\n popupInstance.parent.control.maxNodeLimitInMemberEditor : 5000;\n if (!engineModule.fieldList[fieldName].isHierarchy) {\n if (popupInstance.dropMenu && e.value !== '') {\n popupInstance.dropMenu.disabled = true;\n }\n else {\n popupInstance.dropMenu.disabled = false;\n }\n if (!popupInstance.parent.control.loadOnDemandInMemberEditor) {\n engineModule.getSearchMembers(popupInstance.parent.dataSourceSettings, fieldName, e.value.toLowerCase(), nodeLimit, true);\n }\n else {\n var levelCount = engineModule.fieldList[fieldName].levelCount ? engineModule.fieldList[fieldName].levelCount : 1;\n engineModule.getSearchMembers(popupInstance.parent.dataSourceSettings, fieldName, e.value.toLowerCase(), nodeLimit, false, levelCount);\n }\n popupInstance.parent.eventBase.searchTreeNodes(e, popupInstance.memberTreeView, false, false);\n }\n else {\n popupInstance.parent.eventBase.searchTreeNodes(e, popupInstance.memberTreeView, false, true);\n }\n var liList = [].slice.call(popupInstance.memberTreeView.element.querySelectorAll('li'));\n // for (let element of liList) {\n // if (element.querySelector('.interaction')) {\n // setStyleAttribute(element.querySelector('.interaction'), { display: 'none' });\n // }\n // }\n if (liList.length === 0) {\n popupInstance.allMemberSelect.disableNodes([popupInstance.allMemberSelect.element.querySelector('li')]);\n filterDialog.querySelector('.' + cls.OK_BUTTON_CLASS).setAttribute('disabled', 'disabled');\n removeClass([promptDiv], cls.ICON_DISABLE);\n }\n else {\n popupInstance.allMemberSelect.enableNodes([popupInstance.allMemberSelect.element.querySelector('li')]);\n filterDialog.querySelector('.' + cls.OK_BUTTON_CLASS).removeAttribute('disabled');\n addClass([promptDiv], cls.ICON_DISABLE);\n }\n popupInstance.updateCheckedState(fieldCaption);\n }, 500);\n };\n /* eslint-enable */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n FilterDialog.prototype.nodeCheck = function (isAllMember, args) {\n var checkedNode = [args.node];\n var target = args.event.target;\n if (target.classList.contains('e-fullrow') || args.event.key === 'Enter') {\n var memberObj = isAllMember ? this.allMemberSelect : this.memberTreeView;\n var getNodeDetails = memberObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n memberObj.uncheckAll(checkedNode);\n }\n else {\n memberObj.checkAll(checkedNode);\n }\n }\n else if (args.event.keyCode === 38 && !isAllMember) {\n removeClass(this.memberTreeView.element.querySelectorAll('li.e-prev-active-node'), 'e-prev-active-node');\n addClass(checkedNode, 'e-prev-active-node');\n }\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n FilterDialog.prototype.applySorting = function (fieldName, args) {\n var target = closest(args.target, '.' + cls.MEMBER_SORT_CLASS);\n if (target) {\n var sortElements = [].slice.call(closest(target, '.' + cls.FILTER_SORT_CLASS).querySelectorAll('.' + cls.MEMBER_SORT_CLASS));\n if (target.querySelector('.' + cls.SORT_ASCEND_ICON_CLASS) && !target.classList.contains(cls.SORT_SELECTED_CLASS)) {\n this.updateFilterMembers('Ascending', fieldName);\n addClass([target], cls.SORT_SELECTED_CLASS);\n removeClass([sortElements[1]], cls.SORT_SELECTED_CLASS);\n }\n else if (target.querySelector('.' + cls.SORT_DESCEND_ICON_CLASS) && !target.classList.contains(cls.SORT_SELECTED_CLASS)) {\n this.updateFilterMembers('Descending', fieldName);\n addClass([target], cls.SORT_SELECTED_CLASS);\n removeClass([sortElements[0]], cls.SORT_SELECTED_CLASS);\n }\n else {\n this.updateFilterMembers('None', fieldName);\n removeClass(sortElements, cls.SORT_SELECTED_CLASS);\n }\n }\n };\n FilterDialog.prototype.updateFilterMembers = function (order, fieldName) {\n var members = order === 'None' ? /* eslint-disable-line */\n PivotUtil.getClonedData(this.parent.engineModule.fieldList[fieldName].dateMember) : this.parent.currentTreeItems.slice();\n this.parent.currentTreeItems = [];\n this.parent.searchTreeItems = [];\n /* eslint-disable */\n var treeData = [];\n members = order === 'Ascending' ? (members.sort(function (a, b) { return (a.actualText > b.actualText) ? 1 :\n ((b.actualText > a.actualText) ? -1 : 0); })) : order === 'Descending' ?\n (members.sort(function (a, b) { return (a.actualText < b.actualText) ? 1 :\n ((b.actualText < a.actualText) ? -1 : 0); })) : members;\n /* eslint-enable */\n var modifiedFieldName = fieldName.replace(/[^a-zA-Z0-9 ]/g, '_');\n for (var i = 0, lnt = members.length; i < lnt; i++) {\n if (order === 'None') {\n var memberName = (this.parent.isDateField ? members[i].formattedText : members[i].actualText).toString();\n var nodeAttr = { 'data-fieldName': fieldName, 'data-memberId': members[i].actualText.toString() };\n var obj = {\n id: modifiedFieldName + '_' + (i + 1),\n htmlAttributes: nodeAttr,\n actualText: members[i].actualText,\n name: memberName,\n isSelected: this.parent.currentTreeItemsPos[members[i].actualText].isSelected\n };\n this.parent.currentTreeItems.push(obj);\n if (this.editorSearch.value !== '') {\n if (obj.name.toLowerCase().indexOf(this.editorSearch.value.toLowerCase()) > -1) {\n this.parent.searchTreeItems.push(obj);\n treeData.push(obj);\n }\n }\n else {\n this.parent.searchTreeItems.push(obj);\n treeData.push(obj);\n }\n }\n else {\n this.parent.currentTreeItems.push(members[i]);\n if (this.editorSearch.value !== '') {\n if (members[i].name.toLowerCase().indexOf(this.editorSearch.value.toLowerCase()) > -1) {\n this.parent.searchTreeItems.push(members[i]);\n treeData.push(members[i]);\n }\n }\n else {\n this.parent.searchTreeItems.push(members[i]);\n treeData.push(members[i]);\n }\n }\n this.parent.currentTreeItemsPos[members[i].actualText].index = i;\n }\n var dataCount = this.memberTreeView.fields.dataSource.length;\n this.memberTreeView.fields = { dataSource: treeData.slice(0, dataCount), id: 'id', text: 'name', isChecked: 'isSelected', parentID: 'pid' };\n this.memberTreeView.dataBind();\n };\n FilterDialog.prototype.updateChildNodes = function (args) {\n if (this.parent.dataType === 'olap') {\n var engineModule = this.parent.engineModule;\n var fieldName = args.node.getAttribute('data-fieldname');\n var fieldList = engineModule.fieldList[fieldName];\n var filterItems = [];\n if (fieldList && fieldList.filterMembers.length > 0 && !this.isSearchEnabled &&\n !fieldList.members[args.nodeData.id].isNodeExpand) {\n var childNodes = [];\n for (var _i = 0, _a = fieldList.filterMembers; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.pid === args.nodeData.id.toString()) {\n childNodes.push(item);\n }\n }\n if (childNodes.length === 0) {\n fieldList.childMembers = [];\n engineModule.getChildMembers(this.parent.dataSourceSettings, args.nodeData.id.toString(), fieldName);\n childNodes = fieldList.childMembers;\n fieldList.childMembers = [];\n }\n /* eslint-disable */\n var treeData = PivotUtil.getClonedData(childNodes);\n var curTreeData = this.memberTreeView.fields.dataSource;\n /* eslint-enable */\n var isInclude = false;\n if (!isNullOrUndefined(this.filterObject)) {\n isInclude = this.filterObject.type === 'Include' ? true : false;\n filterItems = this.filterObject.items ? this.filterObject.items : [];\n }\n treeData = this.updateChildData(isInclude, treeData, filterItems, fieldName, args.nodeData);\n treeData = this.parent.eventBase.sortOlapFilterData(treeData, engineModule.fieldList[fieldName].sort);\n for (var _b = 0, treeData_1 = treeData; _b < treeData_1.length; _b++) {\n var node = treeData_1[_b];\n curTreeData.push(node);\n }\n fieldList.members[args.nodeData.id].isNodeExpand = true;\n this.memberTreeView.addNodes(treeData, args.node);\n }\n }\n };\n FilterDialog.prototype.updateChildData = function (isInclude, members, filterItems, fieldName, parentNode) {\n var memberCount = Object.keys(this.parent.currentTreeItemsPos).length;\n var fieldList = this.parent.engineModule.fieldList[fieldName];\n var list = []; /* eslint-disable-line */\n var childMemberCount = 1;\n for (var _i = 0, members_1 = members; _i < members_1.length; _i++) {\n var member = members_1[_i];\n var obj = member; /* eslint-disable-line */\n var memberName = member.id.toString();\n fieldList.members[memberName].isNodeExpand = false;\n member.isSelected = (parentNode.isChecked === 'true');\n if (childMemberCount <= this.parent.control.maxNodeLimitInMemberEditor) {\n list.push(obj);\n }\n this.parent.currentTreeItems.push(obj);\n this.parent.searchTreeItems.push(obj);\n this.parent.currentTreeItemsPos[memberName] = { index: memberCount, isSelected: obj.isSelected };\n memberCount++;\n childMemberCount++;\n }\n this.parent.isDataOverflow = false;\n return list;\n };\n FilterDialog.prototype.createTabMenu = function (treeData, fieldCaption, fieldName) {\n var wrapper = createElement('div', {\n className: 'e-filter-tab-wrapper'\n });\n this.dialogPopUp.content = wrapper;\n this.dialogPopUp.dataBind();\n var types = ['Label', 'Value', 'Include', 'Exclude'];\n var regx = '((-|\\\\+)?[0-9]+(\\\\.[0-9]+)?)+';\n var member = Object.keys(this.parent.engineModule.fieldList[fieldName].members)[0];\n var fieldType = this.parent.engineModule.fieldList[fieldName].type;\n var formatObj = PivotUtil.getFieldByName(fieldName, this.parent.dataSourceSettings.formatSettings);\n var items = [\n {\n header: {\n text: this.parent.localeObj.getConstant('member'),\n iconCss: (this.filterObject && types.indexOf(this.filterObject.type) > 1 ? cls.SELECTED_OPTION_ICON_CLASS : '')\n },\n content: this.createTreeView(treeData, fieldCaption, fieldName)\n }\n ];\n for (var _i = 0, types_1 = types; _i < types_1.length; _i++) {\n var type = types_1[_i];\n if (((type === 'Label') && this.parent.dataSourceSettings.allowLabelFilter) ||\n (type === 'Value' && this.parent.dataSourceSettings.allowValueFilter)) {\n var filterType = (type === 'Label' && member && ((member).match(regx) &&\n (member).match(regx)[0].length === (member).length) && fieldType === 'number') ? 'Number' :\n (type === 'Label' && member && (new Date(member).toString() !== 'Invalid Date') &&\n ((formatObj && formatObj.type) || (this.filterObject && this.filterObject.type === 'Date'))) ? 'Date' : type;\n var item = {\n header: {\n text: (filterType === 'Number' ? this.parent.localeObj.getConstant('label') :\n this.parent.localeObj.getConstant(filterType.toLowerCase())),\n iconCss: (this.filterObject && this.filterObject.type === filterType ? cls.SELECTED_OPTION_ICON_CLASS : '')\n },\n content: this.createCustomFilter(fieldName, (this.filterObject && this.filterObject.type === filterType ? this.filterObject : undefined), filterType.toLowerCase()) /* eslint-disable-line */\n };\n items.push(item);\n }\n }\n var selectedIndex = (this.filterObject ? (['Label', 'Date', 'Number'].indexOf(this.filterObject.type) >= 0) ?\n 1 : this.filterObject.type === 'Value' ?\n (this.parent.dataSourceSettings.allowLabelFilter && this.parent.dataSourceSettings.allowValueFilter) ? 2 : 1 : 0 : 0);\n selectedIndex = (!this.parent.dataSourceSettings.allowMemberFilter && selectedIndex === 0) ? 1 : selectedIndex;\n this.tabObj = new Tab({\n heightAdjustMode: 'Auto',\n items: items,\n height: '100%',\n selectedItem: selectedIndex,\n enableRtl: this.parent.enableRtl\n });\n this.tabObj.isStringTemplate = true;\n this.tabObj.appendTo(wrapper);\n if (!this.parent.dataSourceSettings.allowMemberFilter) {\n this.tabObj.hideTab(0);\n }\n if (selectedIndex > 0) {\n addClass([this.dialogPopUp.element.querySelector('.e-filter-div-content' + '.' + (selectedIndex === 1 && this.parent.dataSourceSettings.allowLabelFilter ? 'e-label-filter' : 'e-value-filter'))], 'e-selected-tab');\n }\n };\n /* eslint-disable */\n FilterDialog.prototype.createCustomFilter = function (fieldName, filterObject, type) {\n var dataSource = [];\n var valueOptions = [];\n var levelOptions = [];\n var measures = this.parent.dataSourceSettings.values;\n var selectedOption = 'DoesNotEquals';\n var selectedValueIndex = 0;\n var selectedLevelIndex = 0;\n var options = {\n label: ['Equals', 'DoesNotEquals', 'BeginWith', 'DoesNotBeginWith', 'EndsWith',\n 'DoesNotEndsWith', 'Contains', 'DoesNotContains', 'GreaterThan',\n 'GreaterThanOrEqualTo', 'LessThan', 'LessThanOrEqualTo', 'Between', 'NotBetween'],\n date: ['Equals', 'DoesNotEquals', 'Before', 'BeforeOrEqualTo', 'After', 'AfterOrEqualTo',\n 'Between', 'NotBetween'],\n value: ['Equals', 'DoesNotEquals', 'GreaterThan', 'GreaterThanOrEqualTo', 'LessThan',\n 'LessThanOrEqualTo', 'Between', 'NotBetween']\n };\n var betweenOperators = ['Between', 'NotBetween'];\n var operatorCollection = (type === 'label' ? options.label : type === 'date' ? options.date : options.value);\n for (var _i = 0, operatorCollection_1 = operatorCollection; _i < operatorCollection_1.length; _i++) {\n var operator = operatorCollection_1[_i];\n selectedOption = ((filterObject && operator === filterObject.condition) ?\n operatorCollection.indexOf(filterObject.condition) >= 0 ?\n filterObject.condition : operatorCollection[0] : selectedOption);\n dataSource.push({ value: operator, text: this.parent.localeObj.getConstant(operator) });\n }\n var len = measures.length;\n while (len--) {\n valueOptions.unshift({ value: measures[len].name, text: (measures[len].caption ? measures[len].caption : measures[len].name) });\n selectedValueIndex = filterObject && filterObject.type === 'Value' &&\n filterObject.measure === measures[len].name &&\n filterObject.condition === selectedOption ? len : selectedValueIndex;\n }\n if (this.parent.dataType === 'olap') {\n var engineModule = this.parent.engineModule;\n var levels = engineModule.fieldList[fieldName].levels;\n if (this.parent.engineModule.fieldList[fieldName].isHierarchy) {\n var levelObj = void 0;\n var fieldlistData = this.parent.engineModule.fieldListData;\n for (var _a = 0, fieldlistData_1 = fieldlistData; _a < fieldlistData_1.length; _a++) {\n var item = fieldlistData_1[_a];\n if (item && item.pid === fieldName) {\n levelObj = item;\n break;\n }\n }\n levelOptions.push({\n value: levelObj ? levelObj.id : fieldName,\n text: levelObj ? levelObj.caption : engineModule.fieldList[fieldName].name\n });\n selectedLevelIndex = 0;\n if (filterObject && filterObject.name === fieldName && filterObject.type.toLowerCase() === type) {\n levelOptions[levelOptions.length - 1]['iconClass'] = cls.ICON + ' ' + cls.SELECTED_LEVEL_ICON_CLASS;\n }\n }\n else {\n for (var i = 0, cnt = levels.length; i < cnt; i++) {\n selectedLevelIndex = (filterObject &&\n filterObject.selectedField === levels[i].id ? i : selectedLevelIndex);\n levelOptions.push({ value: levels[i].id, text: levels[i].name });\n for (var _b = 0, _c = this.parent.dataSourceSettings.filterSettings; _b < _c.length; _b++) {\n var field = _c[_b];\n if (field.name === fieldName && field.selectedField === levels[i].id && field.type.toLowerCase() === type) {\n levelOptions[levelOptions.length - 1]['iconClass'] = cls.ICON + ' ' + cls.SELECTED_LEVEL_ICON_CLASS;\n break;\n }\n }\n }\n }\n }\n var mainDiv = createElement('div', {\n className: cls.FILTER_DIV_CONTENT_CLASS + ' e-' + ((['date', 'number']).indexOf(type) >= 0 ? 'label' : type) + '-filter',\n id: this.parent.parentID + '_' + type + '_filter_div_content',\n attrs: {\n 'data-type': type, 'data-fieldName': fieldName, 'data-operator': selectedOption,\n 'data-selectedField': (this.parent.dataType === 'olap' &&\n levelOptions.length > 0 ? levelOptions[selectedLevelIndex].value.toString() : ''),\n 'data-measure': (this.parent.dataSourceSettings.values.length > 0 ?\n this.parent.dataSourceSettings.values[selectedValueIndex].name : ''),\n 'data-value1': (filterObject && selectedOption === filterObject.condition ?\n filterObject.value1 ? filterObject.value1.toString() : '' : ''),\n 'data-value2': (filterObject && selectedOption === filterObject.condition ?\n filterObject.value2 ? filterObject.value2.toString() : '' : '')\n }\n });\n var textContentdiv = createElement('div', {\n className: cls.FILTER_TEXT_DIV_CLASS,\n innerHTML: this.parent.localeObj.getConstant(type + 'TextContent')\n });\n var betweenTextContentdiv = createElement('div', {\n className: cls.BETWEEN_TEXT_DIV_CLASS + ' ' +\n (betweenOperators.indexOf(selectedOption) === -1 ? cls.ICON_DISABLE : ''),\n innerHTML: this.parent.localeObj.getConstant('And')\n });\n var separatordiv = createElement('div', { className: cls.SEPARATOR_DIV_CLASS });\n var filterWrapperDiv1 = createElement('div', { className: cls.FILTER_OPTION_WRAPPER_1_CLASS });\n var levelWrapperDiv = createElement('div', {\n className: 'e-level-option-wrapper' + ' ' +\n (this.parent.dataType === 'olap' ? '' : cls.ICON_DISABLE),\n });\n var optionWrapperDiv1 = createElement('div', {\n className: 'e-measure-option-wrapper' + ' ' + (((['label', 'date', 'number']).indexOf(type) >= 0) ? cls.ICON_DISABLE : ''),\n });\n var optionWrapperDiv2 = createElement('div', { className: 'e-condition-option-wrapper' });\n var filterWrapperDiv2 = createElement('div', { className: cls.FILTER_OPTION_WRAPPER_2_CLASS });\n var levelDropOption = createElement('div', { id: this.parent.parentID + '_' + type + '_level_option_wrapper' });\n var dropOptionDiv1 = createElement('div', { id: this.parent.parentID + '_' + type + '_measure_option_wrapper' });\n var dropOptionDiv2 = createElement('div', { id: this.parent.parentID + '_' + type + '_contition_option_wrapper' });\n var inputDiv1 = createElement('div', { className: cls.FILTER_INPUT_DIV_1_CLASS });\n var inputDiv2 = createElement('div', {\n className: cls.FILTER_INPUT_DIV_2_CLASS + ' ' +\n (betweenOperators.indexOf(selectedOption) === -1 ? cls.ICON_DISABLE : '')\n });\n var inputField1 = createElement('input', {\n id: this.parent.parentID + '_' + type + '_input_option_1', attrs: { 'type': 'text' }\n });\n var inputField2 = createElement('input', {\n id: this.parent.parentID + '_' + type + '_input_option_2', attrs: { 'type': 'text' }\n });\n inputDiv1.appendChild(inputField1);\n inputDiv2.appendChild(inputField2);\n levelWrapperDiv.appendChild(levelDropOption);\n levelWrapperDiv.appendChild(separatordiv.cloneNode(true));\n optionWrapperDiv1.appendChild(dropOptionDiv1);\n optionWrapperDiv1.appendChild(separatordiv);\n optionWrapperDiv2.appendChild(dropOptionDiv2);\n filterWrapperDiv1.appendChild(levelWrapperDiv);\n filterWrapperDiv1.appendChild(optionWrapperDiv1);\n filterWrapperDiv1.appendChild(optionWrapperDiv2);\n filterWrapperDiv2.appendChild(inputDiv1);\n filterWrapperDiv2.appendChild(betweenTextContentdiv);\n filterWrapperDiv2.appendChild(inputDiv2);\n this.createElements(filterObject, betweenOperators, dropOptionDiv1, dropOptionDiv2, inputField1, inputField2, valueOptions, dataSource, selectedValueIndex, selectedOption, type, levelDropOption, levelOptions, selectedLevelIndex);\n mainDiv.appendChild(textContentdiv);\n mainDiv.appendChild(filterWrapperDiv1);\n mainDiv.appendChild(filterWrapperDiv2);\n return mainDiv;\n };\n FilterDialog.prototype.createElements = function (filterObj, operators, optionDiv1, optionDiv2, inputDiv1, inputDiv2, vDataSource, oDataSource, valueIndex, option, type, levelDropOption, lDataSource, levelIndex) {\n var popupInstance = this;\n if (this.parent.dataType === 'olap') {\n var levelWrapper = new DropDownList({\n dataSource: lDataSource, enableRtl: this.parent.enableRtl,\n fields: { value: 'value', text: 'text', iconCss: 'iconClass' },\n index: levelIndex,\n cssClass: cls.LEVEL_OPTIONS_CLASS, width: '100%',\n change: function (args) {\n var element = popupInstance.dialogPopUp.element.querySelector('.e-selected-tab');\n var fieldName = element.getAttribute('data-fieldName');\n var type = element.getAttribute('data-type');\n if (!isNullOrUndefined(element)) {\n popupInstance.updateInputValues(element, type, inputDiv1, inputDiv2);\n setStyleAndAttributes(element, { 'data-selectedField': args.value });\n var filterObj_1;\n for (var _i = 0, _a = popupInstance.parent.dataSourceSettings.filterSettings; _i < _a.length; _i++) {\n var field = _a[_i];\n if (field.name === fieldName && field.selectedField === args.value) {\n filterObj_1 = field;\n break;\n }\n }\n if (filterObj_1) {\n if (type === 'value' && filterObj_1.measure && filterObj_1.measure !== '') {\n optionWrapper1.value = filterObj_1.measure ? filterObj_1.measure : vDataSource[0].value;\n }\n if (filterObj_1.condition) {\n optionWrapper.value = filterObj_1.condition ? filterObj_1.condition : 'DoesNotEquals';\n }\n else {\n optionWrapper.value = 'DoesNotEquals';\n }\n var inputObj1 = void 0;\n var inputObj2 = void 0;\n if (type === 'value') {\n inputObj1 = inputDiv1.ej2_instances[0];\n inputObj2 = inputDiv2.ej2_instances[0];\n if (inputObj1) {\n inputObj1.value = filterObj_1.value1 ? parseInt(filterObj_1.value1, 10) : undefined;\n }\n if (inputObj2) {\n inputObj2.value = filterObj_1.value2 ? parseInt(filterObj_1.value2, 10) : undefined;\n }\n }\n else {\n inputObj1 = inputDiv1.ej2_instances[0];\n inputObj2 = inputDiv2.ej2_instances[0];\n if (inputObj1) {\n inputObj1.value = filterObj_1.value1 ? filterObj_1.value1 : '';\n }\n if (inputObj2) {\n inputObj2.value = filterObj_1.value2 ? filterObj_1.value2 : '';\n }\n }\n }\n popupInstance.updateInputValues(element, type, inputDiv1, inputDiv2);\n }\n else {\n return;\n }\n }\n });\n levelWrapper.isStringTemplate = true;\n levelWrapper.appendTo(levelDropOption);\n }\n var optionWrapper1 = new DropDownList({\n dataSource: vDataSource, enableRtl: this.parent.enableRtl,\n fields: { value: 'value', text: 'text' }, index: valueIndex,\n cssClass: cls.VALUE_OPTIONS_CLASS, width: '100%',\n change: function (args) {\n var element = popupInstance.dialogPopUp.element.querySelector('.e-selected-tab');\n if (!isNullOrUndefined(element)) {\n popupInstance.updateInputValues(element, type, inputDiv1, inputDiv2);\n setStyleAndAttributes(element, { 'data-measure': args.value });\n }\n else {\n return;\n }\n }\n });\n optionWrapper1.isStringTemplate = true;\n optionWrapper1.appendTo(optionDiv1);\n var optionWrapper = new DropDownList({\n dataSource: oDataSource, enableRtl: this.parent.enableRtl,\n fields: { value: 'value', text: 'text' }, value: option,\n cssClass: cls.FILTER_OPERATOR_CLASS, width: '100%',\n change: function (args) {\n var element = popupInstance.dialogPopUp.element.querySelector('.e-selected-tab');\n if (!isNullOrUndefined(element)) {\n popupInstance.updateInputValues(element, type, inputDiv1, inputDiv2);\n var disabledClasses = [cls.BETWEEN_TEXT_DIV_CLASS, cls.FILTER_INPUT_DIV_2_CLASS];\n for (var _i = 0, disabledClasses_1 = disabledClasses; _i < disabledClasses_1.length; _i++) {\n var className = disabledClasses_1[_i];\n if (operators.indexOf(args.value) >= 0) {\n removeClass([element.querySelector('.' + className)], cls.ICON_DISABLE);\n }\n else {\n addClass([element.querySelector('.' + className)], cls.ICON_DISABLE);\n }\n }\n setStyleAndAttributes(element, { 'data-operator': args.value });\n }\n else {\n return;\n }\n }\n });\n optionWrapper.isStringTemplate = true;\n optionWrapper.appendTo(optionDiv2);\n if (type === 'date') {\n var inputObj1_1 = new DateTimePicker({\n placeholder: this.parent.localeObj.getConstant('chooseDate'),\n enableRtl: this.parent.enableRtl,\n format: 'dd/MM/yyyy hh:mm:ss a',\n showClearButton: true,\n value: (filterObj && option === filterObj.condition ?\n (typeof (filterObj.value1) === 'string' ? new Date(filterObj.value1) : filterObj.value1) : null),\n change: function (e) {\n var element = popupInstance.dialogPopUp.element.querySelector('.e-selected-tab');\n if (!isNullOrUndefined(element)) {\n setStyleAndAttributes(element, { 'data-value1': e.value, 'data-value2': inputObj2_1.value });\n }\n else {\n return;\n }\n },\n width: '100%',\n });\n var inputObj2_1 = new DateTimePicker({\n placeholder: this.parent.localeObj.getConstant('chooseDate'),\n enableRtl: this.parent.enableRtl,\n format: 'dd/MM/yyyy hh:mm:ss a',\n showClearButton: true,\n value: (filterObj && option === filterObj.condition ?\n (typeof (filterObj.value2) === 'string' ? new Date(filterObj.value2) : filterObj.value2) : null),\n change: function (e) {\n var element = popupInstance.dialogPopUp.element.querySelector('.e-selected-tab');\n if (!isNullOrUndefined(element)) {\n setStyleAndAttributes(element, { 'data-value1': inputObj1_1.value, 'data-value2': e.value });\n }\n else {\n return;\n }\n },\n width: '100%',\n });\n inputObj1_1.isStringTemplate = true;\n inputObj1_1.appendTo(inputDiv1);\n inputObj2_1.isStringTemplate = true;\n inputObj2_1.appendTo(inputDiv2);\n }\n else if (type === 'value') {\n var inputObj1_2 = new NumericTextBox({\n placeholder: this.parent.localeObj.getConstant('enterValue'),\n enableRtl: this.parent.enableRtl,\n showClearButton: true,\n format: '###.##',\n value: (filterObj && option === filterObj.condition ? parseInt(filterObj.value1, 10) : undefined),\n change: function (e) {\n var element = popupInstance.dialogPopUp.element.querySelector('.e-selected-tab');\n if (!isNullOrUndefined(element)) {\n setStyleAndAttributes(element, {\n 'data-value1': (e.value ? e.value.toString() : '0'),\n 'data-value2': (inputObj2_2.value ? inputObj2_2.value.toString() : '0')\n });\n }\n else {\n return;\n }\n }, width: '100%'\n });\n var inputObj2_2 = new NumericTextBox({\n placeholder: this.parent.localeObj.getConstant('enterValue'),\n enableRtl: this.parent.enableRtl,\n showClearButton: true,\n format: '###.##',\n value: (filterObj && option === filterObj.condition ? parseInt(filterObj.value2, 10) : undefined),\n change: function (e) {\n var element = popupInstance.dialogPopUp.element.querySelector('.e-selected-tab');\n if (!isNullOrUndefined(element)) {\n setStyleAndAttributes(element, {\n 'data-value1': (inputObj1_2.value ? inputObj1_2.value.toString() : '0'),\n 'data-value2': (e.value ? e.value.toString() : '0')\n });\n }\n else {\n return;\n }\n }, width: '100%'\n });\n inputObj1_2.isStringTemplate = true;\n inputObj1_2.appendTo(inputDiv1);\n inputObj2_2.isStringTemplate = true;\n inputObj2_2.appendTo(inputDiv2);\n }\n else {\n var inputObj1_3 = new MaskedTextBox({\n placeholder: this.parent.localeObj.getConstant('enterValue'),\n enableRtl: this.parent.enableRtl,\n showClearButton: true,\n value: (filterObj && option === filterObj.condition ? filterObj.value1 : ''),\n change: function (e) {\n var element = popupInstance.dialogPopUp.element.querySelector('.e-selected-tab');\n if (!isNullOrUndefined(element)) {\n setStyleAndAttributes(element, { 'data-value1': e.value, 'data-value2': inputObj2_3.value });\n }\n else {\n return;\n }\n }, width: '100%'\n });\n var inputObj2_3 = new MaskedTextBox({\n placeholder: this.parent.localeObj.getConstant('enterValue'),\n enableRtl: this.parent.enableRtl,\n showClearButton: true,\n value: (filterObj && option === filterObj.condition ? filterObj.value2 : ''),\n change: function (e) {\n var element = popupInstance.dialogPopUp.element.querySelector('.e-selected-tab');\n if (!isNullOrUndefined(element)) {\n setStyleAndAttributes(element, { 'data-value1': inputObj1_3.value, 'data-value2': e.value });\n }\n else {\n return;\n }\n }, width: '100%'\n });\n inputObj1_3.isStringTemplate = true;\n inputObj1_3.appendTo(inputDiv1);\n inputObj2_3.isStringTemplate = true;\n inputObj2_3.appendTo(inputDiv2);\n }\n };\n /* eslint-enable */\n FilterDialog.prototype.updateInputValues = function (element, type, inputDiv1, inputDiv2) {\n var value1;\n var value2;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if (type === 'date') {\n var inputObj1 = inputDiv1.ej2_instances[0];\n var inputObj2 = inputDiv2.ej2_instances[0];\n value1 = !isNullOrUndefined(inputObj1.value) ? inputObj1.value.toString() : '';\n value2 = !isNullOrUndefined(inputObj2.value) ? inputObj2.value.toString() : '';\n }\n else {\n var inputObj1 = inputDiv1.ej2_instances[0];\n var inputObj2 = inputDiv2.ej2_instances[0];\n value1 = inputObj1.value;\n value2 = inputObj2.value;\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n setStyleAndAttributes(element, { 'data-value1': value1, 'data-value2': value2 });\n };\n FilterDialog.prototype.validateTreeNode = function (e) {\n if (e.node.classList.contains(cls.ICON_DISABLE)) {\n e.cancel = true;\n }\n else {\n return;\n }\n };\n /* eslint-disable-next-line */\n /**\n * Update filter state while Member check/uncheck.\n * @hidden\n */\n FilterDialog.prototype.updateCheckedState = function (fieldCaption) {\n var filterDialog = this.dialogPopUp.element;\n setStyleAndAttributes(filterDialog, { 'role': 'menu', 'aria-haspopup': 'true' });\n var list = [].slice.call(this.memberTreeView.element.querySelectorAll('li'));\n var fieldName = filterDialog.getAttribute('data-fieldname');\n var uncheckedNodes = this.getUnCheckedNodes(fieldName);\n var checkedNodes = this.getCheckedNodes(fieldName);\n var firstNode = this.allMemberSelect.element.querySelector('li').querySelector('span.' + cls.CHECK_BOX_FRAME_CLASS);\n if (list.length > 0) {\n if (checkedNodes > 0) {\n if (uncheckedNodes > 0) {\n removeClass([firstNode], cls.NODE_CHECK_CLASS);\n addClass([firstNode], cls.NODE_STOP_CLASS);\n }\n else if (uncheckedNodes === 0) {\n removeClass([firstNode], cls.NODE_STOP_CLASS);\n addClass([firstNode], cls.NODE_CHECK_CLASS);\n }\n this.dialogPopUp.buttons[0].buttonModel.disabled = false;\n filterDialog.querySelector('.' + cls.OK_BUTTON_CLASS).removeAttribute('disabled');\n }\n else if (uncheckedNodes > 0 && checkedNodes === 0) {\n removeClass([firstNode], [cls.NODE_CHECK_CLASS, cls.NODE_STOP_CLASS]);\n if (this.getCheckedNodes(fieldName) === checkedNodes) {\n this.dialogPopUp.buttons[0].buttonModel.disabled = true;\n filterDialog.querySelector('.' + cls.OK_BUTTON_CLASS).setAttribute('disabled', 'disabled');\n }\n }\n }\n else {\n this.dialogPopUp.buttons[0].buttonModel.disabled = true;\n filterDialog.querySelector('.' + cls.OK_BUTTON_CLASS).setAttribute('disabled', 'disabled');\n }\n };\n FilterDialog.prototype.getCheckedNodes = function (fieldName) {\n var engineModule = this.parent.engineModule;\n var nodeList = [];\n var checkeNodes = []; /* eslint-disable-line */\n if (this.parent.dataType === 'olap' && engineModule &&\n !engineModule.fieldList[fieldName].isHierarchy) {\n nodeList = this.memberTreeView.getAllCheckedNodes();\n return nodeList.length;\n }\n else {\n for (var _i = 0, _a = this.parent.searchTreeItems; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.isSelected) {\n checkeNodes.push(item);\n }\n }\n return checkeNodes.length;\n }\n };\n FilterDialog.prototype.getUnCheckedNodes = function (fieldName) {\n var unCheckeNodes = []; /* eslint-disable-line */\n var nodeList = [];\n var engineModule = this.parent.engineModule;\n if (this.parent.dataType === 'olap' && engineModule && !engineModule.fieldList[fieldName].isHierarchy) {\n nodeList = this.memberTreeView.getAllCheckedNodes();\n return (this.memberTreeView.fields.dataSource.length - /* eslint-disable-line */\n nodeList.length);\n }\n else {\n // unCheckeNodes = this.parent.searchTreeItems.filter((item: { [key: string]: object }) => {\n // return !item.isSelected;\n // });\n for (var _i = 0, _a = this.parent.searchTreeItems; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!item.isSelected) {\n unCheckeNodes.push(item);\n }\n }\n return unCheckeNodes.length;\n }\n };\n FilterDialog.prototype.isExcelFilter = function (fieldName) {\n var isFilterField = false;\n for (var _i = 0, _a = this.parent.dataSourceSettings.filters; _i < _a.length; _i++) {\n var field = _a[_i];\n if (field.name === fieldName) {\n isFilterField = true;\n break;\n }\n }\n if (!isFilterField && (this.parent.dataSourceSettings.allowLabelFilter || this.parent.dataSourceSettings.allowValueFilter)) {\n return true;\n }\n else {\n return false;\n }\n };\n FilterDialog.prototype.getFilterObject = function (fieldName) {\n var filterObj = PivotUtil.getFilterItemByName(fieldName, PivotUtil.cloneFilterSettings(this.parent.dataSourceSettings.filterSettings));\n if (filterObj && (((['Label', 'Date', 'Number'].indexOf(filterObj.type) >= 0) &&\n this.parent.dataSourceSettings.allowLabelFilter) ||\n (filterObj.type === 'Value' && this.parent.dataSourceSettings.allowValueFilter) ||\n (['Include', 'Exclude'].indexOf(filterObj.type) >= 0 &&\n this.parent.eventBase.isValidFilterItemsAvail(fieldName, filterObj)))) {\n return filterObj;\n }\n return undefined;\n };\n FilterDialog.prototype.wireEvent = function (element, fieldName) {\n EventHandler.add(element, 'click', this.applySorting.bind(this, fieldName), this);\n };\n FilterDialog.prototype.unWireEvent = function (element, fieldName) {\n EventHandler.remove(element, 'click', this.applySorting);\n };\n /* eslint-disable-next-line */\n /**\n * To close filter dialog.\n * @hidden\n */\n FilterDialog.prototype.closeFilterDialog = function () {\n if (this.allowExcelLikeFilter) {\n if (this.tabObj && !this.tabObj.isDestroyed) {\n this.tabObj.destroy();\n }\n }\n if (this.dropMenu && !this.dropMenu.isDestroyed) {\n this.dropMenu.destroy();\n }\n if (document.getElementById(this.parent.parentID + '_LevelDiv-popup')) {\n remove(document.getElementById(this.parent.parentID + '_LevelDiv-popup'));\n }\n this.dialogPopUp.close();\n };\n FilterDialog.prototype.removeFilterDialog = function () {\n if (this.dialogPopUp && !this.dialogPopUp.isDestroyed) {\n this.dialogPopUp.destroy();\n }\n if (document.getElementById(this.parent.parentID + '_EditorTreeView')) {\n remove(document.getElementById(this.parent.parentID + '_EditorTreeView'));\n }\n };\n return FilterDialog;\n}());\nexport { FilterDialog };\n","import { CommonKeyboardInteraction } from '../actions/keyboard';\nimport { EventBase } from '../actions/event-base';\nimport { NodeStateModified } from '../actions/node-state-modified';\nimport { DataSourceUpdate } from '../actions/dataSource-update';\nimport { ErrorDialog } from '../popups/error-dialog';\nimport { FilterDialog } from '../popups/filter-dialog';\n/**\n * PivotCommon is used to manipulate the relational or Multi-Dimensional public methods by using their dataSource\n * @hidden\n */\n/** @hidden */\nvar PivotCommon = /** @class */ (function () {\n /**\n * Constructor for Pivot Common class.\n * @param {CommonArgs} control - control.\n * @hidden\n */\n function PivotCommon(control) {\n /** @hidden */\n this.currentTreeItems = []; /* eslint-disable-line */\n /** @hidden */\n this.savedTreeFilterPos = {};\n /** @hidden */\n this.currentTreeItemsPos = {};\n /** @hidden */\n this.searchTreeItems = []; /* eslint-disable-line */\n /** @hidden */\n this.isDataOverflow = false;\n /** @hidden */\n this.isDateField = false;\n this.element = control.element;\n this.moduleName = control.moduleName;\n this.dataSourceSettings = control.dataSourceSettings;\n this.engineModule = control.pivotEngine;\n this.enableRtl = control.enableRtl;\n this.isAdaptive = control.isAdaptive;\n this.renderMode = control.renderMode;\n this.parentID = control.id;\n this.localeObj = control.localeObj;\n this.dataType = control.dataType;\n this.nodeStateModified = new NodeStateModified(this);\n this.dataSourceUpdate = new DataSourceUpdate(this);\n this.eventBase = new EventBase(this);\n this.filterDialog = new FilterDialog(this);\n this.errorDialog = new ErrorDialog(this);\n this.keyboardModule = new CommonKeyboardInteraction(this);\n return this;\n }\n /**\n * To destroy the groupingbar.\n * @returns {void}\n * @hidden\n */\n PivotCommon.prototype.destroy = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n this.keyboardModule = null;\n }\n };\n return PivotCommon;\n}());\nexport { PivotCommon };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * This is a file to create MDX query for the provided OLAP datasource\n * @hidden\n */\n/** @hidden */\nvar MDXQuery = /** @class */ (function () {\n function MDXQuery() {\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n MDXQuery.getCellSets = function (dataSourceSettings, olapEngine, refPaging, drillInfo, isQueryUpdate) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n this.engine = olapEngine;\n this.isMondrian = olapEngine.isMondrian;\n this.isMeasureAvail = olapEngine.isMeasureAvail;\n this.isPaging = olapEngine.isPaging;\n this.pageSettings = olapEngine.pageSettings;\n this.rows = olapEngine.rows;\n this.columns = olapEngine.columns;\n this.values = olapEngine.values;\n this.filters = olapEngine.filters;\n this.allowLabelFilter = olapEngine.allowLabelFilter;\n this.allowValueFilter = olapEngine.allowValueFilter;\n this.valueSortSettings = dataSourceSettings.valueSortSettings ? dataSourceSettings.valueSortSettings : undefined;\n this.drilledMembers = olapEngine.updateDrilledItems(dataSourceSettings.drilledMembers);\n this.calculatedFieldSettings = olapEngine.calculatedFieldSettings;\n this.valueAxis = dataSourceSettings.valueAxis === 'row' ? 'rows' : 'columns';\n if (drillInfo) {\n drillInfo.axis = drillInfo.axis === 'row' ? 'rows' : 'columns';\n }\n this.filterMembers = extend({}, olapEngine.filterMembers, null, true);\n this.fieldDataObj = olapEngine.fieldListObj;\n this.fieldList = olapEngine.fieldList;\n this.cellSetInfo = '\\nDIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME, CHILDREN_CARDINALITY, MEMBER_TYPE, MEMBER_VALUE';\n var measureQuery = this.getMeasuresQuery(this.values);\n /* eslint-disable */\n var rowQuery = this.getDimensionsQuery(this.rows, measureQuery, 'rows', drillInfo).replace(/\\&/g, '&');\n var columnQuery = this.getDimensionsQuery(this.columns, measureQuery, 'columns', drillInfo).replace(/\\&/g, '&');\n /* eslint-enable */\n if (this.isPaging && refPaging && this.pageSettings !== undefined) {\n var pagingQuery = this.getPagingQuery(rowQuery, columnQuery);\n rowQuery = pagingQuery.rowQuery;\n columnQuery = pagingQuery.columnQuery;\n }\n else if (this.isPaging && !refPaging && this.pageSettings !== undefined) {\n var pagingQuery = this.getPagingCountQuery(rowQuery, columnQuery);\n rowQuery = pagingQuery.rowQuery;\n columnQuery = pagingQuery.columnQuery;\n }\n /* eslint-disable */\n rowQuery = (rowQuery.length > 0 ? rowQuery + (this.isPaging && !refPaging ? '' : this.cellSetInfo + ' ON ROWS') : '');\n columnQuery = (columnQuery.length > 0 ? columnQuery + (this.isPaging && !refPaging ? '' : this.cellSetInfo + ' ON COLUMNS') : '');\n var slicerQuery = this.getSlicersQuery(this.filters, 'filters').replace(/\\&/g, '&');\n var filterQuery = this.getfilterQuery(this.filterMembers, dataSourceSettings.cube).replace(/\\&/g, '&').replace(/\\>/g, '>').replace(/\\').replace(/\\</g, '<').replace(/%280/g, '\\\"');\n // console.log(olapEngine.mdxQuery);\n if (drillInfo) {\n drillInfo.axis = drillInfo.axis === 'rows' ? 'row' : 'column';\n }\n if (!isQueryUpdate) {\n this.getTableCellData(args, (this.isPaging && !refPaging ? this.engine.generatePagingData.bind(this.engine) : this.engine.generateEngine.bind(this.engine)), drillInfo ? { action: drillInfo.action, drillInfo: drillInfo } : { dataSourceSettings: dataSourceSettings, action: 'loadTableElements' });\n }\n };\n MDXQuery.getTableCellData = function (args, successMethod, customArgs) {\n var connectionString = this.engine.getConnectionInfo(args.url, args.LCID);\n var soapMessage = '
' +\n args.request + ' ' +\n args.catalog + ' ' + connectionString.LCID +\n '
';\n this.engine.doAjaxPost('POST', connectionString.url, soapMessage, successMethod, customArgs);\n };\n /* eslint-enable */\n MDXQuery.frameMDXQuery = function (rowQuery, columnQuery, slicerQuery, filterQuery, caclQuery, refPaging) {\n var query = ((this.isPaging && !refPaging) ? caclQuery !== '' ? '' : '\\nWITH' : '\\nSelect ');\n if (columnQuery.length > 0) {\n query = query + columnQuery;\n }\n if (rowQuery.length > 0) {\n query = query + (columnQuery.length > 0 ? this.isPaging && !refPaging ? '' : ', ' : '') + rowQuery;\n }\n query = caclQuery + query + (this.isPaging && !refPaging ? '\\nMEMBER [Measures].[3d268ce0-664d-4092-b9cb-fece97175006] AS Count([e16a30d0-2174-4874-8dae-a5085a75a3e2]) ' +\n 'MEMBER [Measures].[8d7fe8c1-f09f-410e-b9ba-eaab75a1fc3e] AS Count ([d1876d2b-e50e-4547-85fe-5b8ed9d629de])' +\n '\\nSELECT { [Measures].[3d268ce0-664d-4092-b9cb-fece97175006] , [Measures].[8d7fe8c1-f09f-410e-b9ba-eaab75a1fc3e] } ON AXIS(0)' : '') +\n filterQuery + slicerQuery + '\\nCELL PROPERTIES VALUE, FORMAT_STRING, FORMATTED_VALUE\\n';\n return query;\n };\n MDXQuery.getPagingQuery = function (rowQuery, columnQuery) {\n // let colCurrentPage: number = (Math.ceil(this.engine.columnCount / this.pageSettings.columnSize) < this.pageSettings.columnCurrentPage || this.pageSettings.columnCurrentPage === 0) ? ((Math.ceil(this.engine.columnCount / this.pageSettings.columnSize) < this.pageSettings.columnCurrentPage && this.engine.columnCount > 0) ? Math.ceil(this.engine.columnCount / this.pageSettings.columnSize) : this.pageSettings.columnCurrentPage) : this.pageSettings.columnCurrentPage;\n // let rowCurrentPage: number = (Math.ceil(this.engine.rowCount / this.pageSettings.rowSize) < this.pageSettings.rowCurrentPage || this.pageSettings.rowCurrentPage === 0) ? ((Math.ceil(this.engine.rowCount / this.pageSettings.rowSize) < this.pageSettings.rowCurrentPage && this.engine.rowCount > 0) ? Math.ceil(this.engine.rowCount / this.pageSettings.rowSize) : this.pageSettings.rowSize) : this.pageSettings.rowCurrentPage;\n rowQuery = rowQuery.replace('NON EMPTY ( ', '').slice(0, -1);\n columnQuery = columnQuery.replace('NON EMPTY ( ', '').slice(0, -1);\n var rowQueryCpy = rowQuery;\n // let axisQuery: pagingQuery = {\n // rowQuery: rowQuery !== '' ? ('\\nSUBSET ({ ' + (this.isMondrian ? '' : 'NONEMPTY') + ' (' + rowQuery + (!this.isMondrian && columnQuery !== '' ? ',' + columnQuery : '') + ')},' + (((rowCurrentPage === 0 ? 1 : rowCurrentPage) - 1) * (this.pageSettings.rowSize)) + ',' + this.pageSettings.rowSize + ')') : '',\n // columnQuery: columnQuery !== '' ? ('\\nSUBSET ({ ' + (this.isMondrian ? '' : 'NONEMPTY') + ' (' + columnQuery + (!this.isMondrian && rowQueryCpy !== '' ? ',' + rowQueryCpy : '') + ')},' + (((colCurrentPage === 0 ? 1 : colCurrentPage) - 1) * (this.pageSettings.columnSize)) + ',' + this.pageSettings.columnSize + ')') : ''\n // }\n var calRowPage = (this.pageSettings.rowCurrentPage - 1) * this.pageSettings.rowSize;\n var calColPage = (this.pageSettings.columnCurrentPage - 1) * this.pageSettings.columnSize;\n var calRowSize = this.pageSettings.rowSize * 3;\n var calColumnSize = this.pageSettings.columnSize * 3;\n calRowPage = (this.engine.rowCount < (calRowPage + calRowSize)) ?\n (this.engine.rowCount > calRowSize ? (this.engine.rowCount - calRowSize) : 0) : calRowPage;\n this.engine.pageRowStartPos = calRowPage;\n calColPage = (this.engine.columnCount < (calColPage + calColumnSize)) ?\n (this.engine.columnCount > calColumnSize ? (this.engine.columnCount - calColumnSize) : 0) : calColPage;\n this.engine.pageColStartPos = calColPage;\n var axisQuery = {\n rowQuery: rowQuery !== '' ? ('\\nSUBSET ({ ' + (this.isMondrian ? '' : 'NONEMPTY') + ' (' + rowQuery + (!this.isMondrian && columnQuery !== '' ? ',' + columnQuery : '') + ')},' + (calRowPage) + ',' + calRowSize + ')') : '',\n columnQuery: columnQuery !== '' ? ('\\nSUBSET ({ ' + (this.isMondrian ? '' : 'NONEMPTY') + ' (' + columnQuery + (!this.isMondrian && rowQueryCpy !== '' ? ',' + rowQueryCpy : '') + ')},' + (calColPage) + ',' + calColumnSize + ')') : ''\n };\n return axisQuery;\n };\n MDXQuery.getPagingCountQuery = function (rowQuery, columnQuery) {\n /* eslint-disable */\n rowQuery = rowQuery.replace('NON EMPTY ( ', '').slice(0, -1);\n columnQuery = columnQuery.replace('NON EMPTY ( ', '').slice(0, -1);\n var rowQueryCpy = rowQuery;\n 'WITH SET [e16a30d0-2174-4874-8dae-a5085a75a3e2] as';\n 'SET [d1876d2b-e50e-4547-85fe-5b8ed9d629de] as';\n var axisQuery = {\n rowQuery: rowQuery !== '' ? ('\\SET [d1876d2b-e50e-4547-85fe-5b8ed9d629de] as ' + (this.isMondrian ? '' : 'NONEMPTY') + ' (' + rowQuery + (!this.isMondrian && columnQuery !== '' ? ',' + columnQuery : '') + ')\\n') : '',\n columnQuery: columnQuery !== '' ? ('\\nSET [e16a30d0-2174-4874-8dae-a5085a75a3e2] as ' + (this.isMondrian ? '' : 'NONEMPTY') + ' (' + columnQuery + (!this.isMondrian && rowQueryCpy !== '' ? ',' + rowQueryCpy : '') + ')\\n') : ''\n };\n return axisQuery;\n /* eslint-enable */\n };\n /* eslint-enable max-len */\n MDXQuery.getDimensionsQuery = function (dimensions, measureQuery, axis, drillInfo) {\n var query = '';\n if (dimensions.length > 0) {\n query = '\\nNON EMPTY ( ' + (this.drilledMembers.length > 0 ? 'HIERARCHIZE ({' : '');\n var i = 0;\n while (i < dimensions.length) {\n var hierarchy = '';\n if (i === 0) {\n if (dimensions[i].name.toLowerCase() === '[measures]') {\n if (measureQuery !== '') {\n query = query + measureQuery;\n }\n }\n else {\n hierarchy = '({' + this.getDimensionQuery(dimensions[i], axis) + '})';\n query = query + hierarchy;\n }\n }\n else {\n if (dimensions[i].name.toLowerCase() === '[measures]') {\n if (measureQuery !== '') {\n query = query + ' * ' + measureQuery;\n }\n }\n else {\n hierarchy = '({' + this.getDimensionQuery(dimensions[i], axis) + '})';\n query = query + ' * ' + hierarchy;\n }\n }\n i++;\n }\n var drillQueryObj = this.getDrillQuery(dimensions, measureQuery, axis, drillInfo);\n query = (drillInfo && drillInfo.axis === axis ? '\\nNON EMPTY ( ' + (this.drilledMembers.length > 0 ? 'HIERARCHIZE ({' : '') + drillQueryObj.query : query + (drillQueryObj.query !== '' ? ',' : '') + drillQueryObj.query);\n var drillQuery = this.getAttributeDrillQuery(dimensions, measureQuery, axis, drillInfo);\n query = (this.valueAxis !== axis ? this.updateValueSortQuery(query, this.valueSortSettings) : query) +\n (this.isPaging ? ((drillQuery !== '' ? '-' : '') + drillQuery) : '') + (this.drilledMembers.length > 0 ? '})' : '') + (!this.isPaging ? ((drillQuery !== '' ? '-' : '') + drillQuery) : '') + ')';\n }\n return query;\n };\n MDXQuery.getAttributeDrillQuery = function (dimensions, measureQuery, axis, drillInfo) {\n var query = '';\n var drilledMembers = [];\n var isOnDemandDrill = false;\n /* eslint-disable */\n if (drillInfo && drillInfo.axis === axis && drillInfo.action.toLowerCase() === 'down') {\n isOnDemandDrill = true;\n drilledMembers = [{ name: drillInfo.fieldName, items: [drillInfo.memberName], delimiter: '~~' }];\n }\n else {\n drilledMembers = this.drilledMembers;\n }\n /* eslint-enable */\n var measurePos = axis === this.valueAxis ? this.getMeasurePos(axis) : 0;\n for (var _i = 0, drilledMembers_1 = drilledMembers; _i < drilledMembers_1.length; _i++) {\n var field = drilledMembers_1[_i];\n var isHierarchy = this.engine.fieldList[field.name] ? this.engine.fieldList[field.name].isHierarchy : false;\n if (isHierarchy) {\n for (var _a = 0, _b = field.items; _a < _b.length; _a++) {\n var item = _b[_a];\n var drillQuery = [];\n var drillInfo_1 = item.split(field.delimiter ? field.delimiter : '~~');\n var result = this.getDrillLevel(dimensions, drillInfo_1);\n var fieldPosition = this.getDimensionPos(axis, field.name);\n var index = dimensions.length - (measurePos > fieldPosition ? 1 : 0);\n var isExist = this.isPaging ? this.isAttributeMemberExist(field.name, item.split(field.delimiter ? field.delimiter : '~~'), field.delimiter, drillInfo_1, axis) : false;\n while (result.level > 0 && result.isDrill && (fieldPosition + 1) !== measurePos && !isExist) {\n var levelQuery = [];\n var i = 0;\n while (i < dimensions.length) {\n if (dimensions[i].name.toLowerCase() === '[measures]') {\n if (measureQuery !== '') {\n levelQuery.push('({{' + drillInfo_1[i] + '}})');\n }\n }\n else if (drillInfo_1[i] && (drillInfo_1[i].indexOf(dimensions[i].name) !== -1 ||\n (dimensions[i].isNamedSet && this.fieldList[dimensions[i].name] && drillInfo_1[i].indexOf(this.fieldList[dimensions[i].name].pid.split('Sets_')[1]) !== -1))) {\n levelQuery.push(this.getHierarchyQuery(drillInfo_1[i], false, false, false, result.level, true));\n }\n else if (!drillInfo_1[i] && dimensions[i]) {\n levelQuery.push(this.getHierarchyQuery(dimensions[i].name, ((this.isPaging && result.level === 2) || (!this.isPaging && index > i) ? true : false), dimensions[i].isNamedSet, dimensions[i].isCalculatedField, result.level, false)); /* eslint-disable-line */\n }\n else {\n levelQuery = [];\n break;\n }\n i++;\n }\n if (levelQuery.length > 0) {\n drillQuery.push('(' + levelQuery.join('*') + ')');\n }\n result.level--;\n index--;\n }\n if (drillQuery.length > 0) {\n query = query + (query !== '' ? '-' : '') + drillQuery.join(this.isPaging ? '+' : '-');\n }\n }\n }\n }\n return query;\n };\n MDXQuery.getDimensionPos = function (axis, field) {\n var position = 0;\n var dimensions = axis === 'rows' ? this.rows : this.columns;\n for (var i = 0; i < dimensions.length; i++) {\n if (dimensions[i].name === field) {\n position = i;\n break;\n }\n }\n return position;\n };\n MDXQuery.getMeasurePos = function (axis) {\n var position = 0;\n var dimensions = axis === 'rows' ? this.rows : this.columns;\n for (var i = 0; i < dimensions.length; i++) {\n if (dimensions[i].name.indexOf('[Measures]') === 0) {\n position = i;\n break;\n }\n }\n return position;\n };\n MDXQuery.getDrillLevel = function (dimensions, drillInfo) {\n var level = dimensions.length;\n var isDrill = false;\n var i = 0;\n while (i < dimensions.length) {\n if (drillInfo[i] && drillInfo[i].indexOf(dimensions[i].name) !== -1) {\n level -= 1;\n if (dimensions[i + 1] && !(dimensions[i + 1].isNamedSet || dimensions[i + 1].name.indexOf('[Measures]') === 0 || (this.fieldList[dimensions[i + 1].name] && !this.fieldList[dimensions[i + 1].name].hasAllMember))) {\n isDrill = true;\n }\n }\n else if (dimensions[i].isNamedSet || dimensions[i].name.indexOf('[Measures]') === 0 || (this.fieldList[dimensions[i].name] && !this.fieldList[dimensions[i].name].hasAllMember)) {\n level -= 1;\n }\n i++;\n }\n return { level: this.isPaging ? 2 : level, isDrill: isDrill };\n };\n MDXQuery.getHierarchyQuery = function (name, isChildren, isNamedSet, isCalculatedField, level, isDrill) {\n name = isCalculatedField ? this.fieldList[name].tag : name;\n return ((this.fieldList[name] && !this.fieldList[name].hasAllMember && !isNamedSet && !isCalculatedField) ? '((' + name + ').levels(0).AllMembers)' : (isNamedSet || isCalculatedField) ? ('({' + name + '})') : this.isPaging ? ('({' + name) + (isChildren ? '.CHILDREN})' : (!isDrill && level === 1) ? '.[All]})' : '})') : ('({DrilldownLevel({' + name + (isChildren ? '.CHILDREN' : '') + '},,,INCLUDE_CALC_MEMBERS' + ')})'));\n };\n MDXQuery.isAttributeMemberExist = function (hierarchy, item, delimiter, drillInfo, axis) {\n item.splice(drillInfo.length - 1, 1);\n var isAvailable = false;\n if (item.join(delimiter) !== '' && !(this.isPaging && item.length === 1 && item.join(delimiter) === '[Measures]') && this.engine.fieldList[hierarchy] && this.engine.fieldList[hierarchy].hasAllMember) {\n var hierarchyPosition = this.getDimensionPos(axis, hierarchy);\n for (var i = 0; i < this.drilledMembers.length; i++) {\n if (hierarchy !== this.drilledMembers[i].name) {\n var isHierarchy = this.engine.fieldList[this.drilledMembers[i].name] ?\n this.engine.fieldList[this.drilledMembers[i].name].isHierarchy : false;\n if (isHierarchy) {\n var fieldPosition = this.getDimensionPos(axis, this.drilledMembers[i].name);\n for (var j = 0; j < this.drilledMembers[i].items.length; j++) {\n var result = this.getDrillLevel(axis === 'rows' ? this.rows : this.columns, this.drilledMembers[i].items[j].split(this.drilledMembers[i].delimiter ? this.drilledMembers[i].delimiter : '~~'));\n if ((this.isPaging ? (fieldPosition < hierarchyPosition && result.isDrill) : true) && (this.drilledMembers[i].items[j].indexOf(item.join(delimiter)) === 0 || item.join(delimiter).indexOf(this.drilledMembers[i].items[j]) === 0)) { /* eslint-disable-line */\n isAvailable = true;\n break;\n }\n }\n }\n }\n }\n }\n return isAvailable;\n };\n MDXQuery.getDrillQuery = function (dimensions, measureQuery, axis, drillInfo) {\n var query = '';\n var rawDrillQuery = [];\n var drilledMembers = [];\n var isOnDemandDrill = false;\n var onDemandDrillQuery = '';\n if (drillInfo && drillInfo.axis === axis && drillInfo.action.toLowerCase() === 'down') {\n isOnDemandDrill = true;\n drilledMembers = [{ name: drillInfo.fieldName, items: [drillInfo.memberName], delimiter: '~~' }];\n }\n else {\n drilledMembers = this.drilledMembers;\n }\n for (var _i = 0, drilledMembers_2 = drilledMembers; _i < drilledMembers_2.length; _i++) {\n var field = drilledMembers_2[_i];\n var isHierarchy = this.engine.fieldList[field.name] ? this.engine.fieldList[field.name].isHierarchy : false;\n if (!isHierarchy) {\n for (var _a = 0, _b = field.items; _a < _b.length; _a++) {\n var item = _b[_a];\n var drillQuery = [];\n var rawQuery = [];\n var i = 0;\n var drillInfo_2 = item.split(field.delimiter ? field.delimiter : '~~');\n var isExist = this.isAttributeMemberExist(field.name, item.split(field.delimiter ? field.delimiter : '~~'), (field.delimiter ? field.delimiter : '~~'), drillInfo_2, axis);\n while (i < dimensions.length && !isExist) {\n if (drillInfo_2[i] && drillInfo_2[i].indexOf(dimensions[i].name) !== -1) {\n if (drillInfo_2[drillInfo_2.length - 1].indexOf(dimensions[i].name) !== -1) {\n if (isOnDemandDrill) {\n onDemandDrillQuery = onDemandDrillQuery + (onDemandDrillQuery !== '' ? ' * ' : '') + '({' + drillInfo_2[i] + '.CHILDREN})';\n }\n else {\n drillQuery.push('(' + drillInfo_2[i] + '.CHILDREN)');\n rawQuery.push('(' + drillInfo_2[i] + ')');\n }\n }\n else {\n if (drillInfo_2[i].toLowerCase() === '[measures]' && measureQuery !== '') {\n if (isOnDemandDrill) {\n onDemandDrillQuery = onDemandDrillQuery + (onDemandDrillQuery !== '' ? ' * ' : '') + '(' + measureQuery + ')';\n }\n else {\n drillQuery.push('(' + measureQuery + ')');\n rawQuery.push('(' + measureQuery + ')');\n }\n }\n else if (drillInfo_2[i].toLowerCase().indexOf('[measures]') !== -1) {\n if (isOnDemandDrill) {\n onDemandDrillQuery = onDemandDrillQuery + (onDemandDrillQuery !== '' ? ' * ' : '') + '({' + drillInfo_2[i] + '})';\n }\n else {\n drillQuery.push('({' + drillInfo_2[i] + '})');\n rawQuery.push('({' + drillInfo_2[i] + '})');\n }\n }\n else {\n if (isOnDemandDrill) {\n onDemandDrillQuery = onDemandDrillQuery + (onDemandDrillQuery !== '' ? ' * ' : '') + '({' + drillInfo_2[i] + '})';\n }\n else {\n drillQuery.push('(' + drillInfo_2[i] + ')');\n rawQuery.push('(' + drillInfo_2[i] + ')');\n }\n }\n }\n }\n else if (!drillInfo_2[i] && dimensions[i]) {\n if (dimensions[i].name.toLowerCase() === '[measures]' && measureQuery !== '') {\n if (isOnDemandDrill) {\n onDemandDrillQuery = onDemandDrillQuery + (onDemandDrillQuery !== '' ? ' * ' : '') + '(' + measureQuery + ')';\n }\n else {\n drillQuery.push('(' + measureQuery + ')');\n rawQuery.push('(' + measureQuery + ')');\n }\n }\n else {\n if (isOnDemandDrill) {\n onDemandDrillQuery = onDemandDrillQuery + (onDemandDrillQuery !== '' ? ' * ' : '') + '({' + this.getDimensionQuery(dimensions[i], axis) + '})';\n }\n else {\n drillQuery.push('(' + this.getDimensionQuery(dimensions[i], axis) + ')');\n rawQuery.push('(' + this.getDimensionQuery(dimensions[i], axis) + ')');\n }\n }\n }\n else {\n drillQuery = [];\n break;\n }\n i++;\n }\n if (drillQuery.length > 0 && drillQuery.length < drillInfo_2.length) {\n drillQuery = [];\n rawQuery = [];\n }\n // query = query + (query !== '' && drillQuery.length > 0 ? ',' : '') + (drillQuery.length > 0 ? '(' + drillQuery.toString().replace(/\\&/g, \"&\") + ')' : '');\n query = query + (query !== '' && drillQuery.length > 0 ? ',' : '') + (drillQuery.length > 0 ? '(' + drillQuery.toString() + ')' : '');\n /* eslint-enable max-len */\n if (rawQuery.length > 0) {\n rawDrillQuery.push(('(' + rawQuery.toString() + ')'));\n }\n }\n }\n }\n // return (isOnDemandDrill ? onDemandDrillQuery.replace(/\\&/g, \"&\") : query);\n var queryCollection = {\n query: (isOnDemandDrill ? onDemandDrillQuery : query),\n collection: (isOnDemandDrill ? [onDemandDrillQuery] : rawDrillQuery)\n };\n return queryCollection;\n };\n MDXQuery.updateValueSortQuery = function (query, valueSortSettings) {\n if (valueSortSettings && valueSortSettings.measure && valueSortSettings.measure !== '') {\n var heirarchize = (this.drilledMembers.length > 0 ? 'HIERARCHIZE ({' : '');\n var measure = (this.fieldList[valueSortSettings.measure].isCalculatedField ?\n this.fieldList[valueSortSettings.measure].tag : valueSortSettings.measure);\n switch (valueSortSettings.sortOrder) {\n case 'Ascending':\n query = query.replace('NON EMPTY ( ' + heirarchize, 'NON EMPTY ( ' + heirarchize + ' ORDER ({');\n query = query + '},(' + measure + '), ASC)';\n // query = query + '},(' + valueSortSettings.measure + '), ' +\n // (valueSortSettings.preserveHierarchy ? 'BASC' : 'ASC') + ')';\n break;\n case 'Descending':\n query = query.replace('NON EMPTY ( ' + heirarchize, 'NON EMPTY ( ' + heirarchize + ' ORDER ({');\n query = query + '},(' + measure + '), DESC)';\n // query = query + '},(' + valueSortSettings.measure + '), ' +\n // (valueSortSettings.preserveHierarchy ? 'BDESC' : 'DESC') + ')';\n break;\n }\n }\n return query;\n };\n /* eslint-disable */\n MDXQuery.getSlicersQuery = function (slicers, axis) {\n var _this = this;\n var query = '';\n var dataFields = extend([], this.rows, null, true);\n dataFields = dataFields.concat(this.columns);\n if (slicers.length > 0) {\n var i_1 = 0;\n while (i_1 < slicers.length) {\n var isCol = dataFields.filter(function (field) {\n var colUqName = _this.getDimensionUniqueName(field.name);\n var slicerUqName = _this.getDimensionUniqueName(slicers[i_1].name);\n var isMatch = false;\n isMatch = colUqName === slicerUqName &&\n !(_this.isMondrian && slicerUqName === '' && colUqName === '');\n return (isMatch);\n }).length > 0;\n if (!isCol) {\n if (slicers[i_1].name !== undefined && !this.filterMembers[slicers[i_1].name]) {\n query = query + (query !== '' ? ' * ' : '') + '{' + this.getDimensionQuery(slicers[i_1], axis) + '}';\n }\n else if (this.filterMembers[slicers[i_1].name]) {\n query = query + (query !== '' ? ' * ' : '') + '{' + (this.filterMembers[slicers[i_1].name].toString()) + '}';\n }\n }\n i_1++;\n }\n query = query === '' ? '' : '\\nWHERE (' + query.replace(/DrilldownLevel/g, '') + ')';\n }\n return query;\n };\n /* eslint-enable */\n MDXQuery.getDimensionQuery = function (dimension, axis) {\n var query = '';\n var name = dimension.isCalculatedField ? this.fieldList[dimension.name].tag : dimension.name;\n var hasAllMember = this.fieldList[dimension.name].hasAllMember;\n if (!hasAllMember && !dimension.isNamedSet && !dimension.isCalculatedField) {\n query = '((' + name + ').levels(0).AllMembers)';\n }\n else {\n query = (dimension.isNamedSet ? '{' + name + '}' : this.isPaging ? name + '.CHILDREN' :\n 'DrilldownLevel({' + name + '}' + ((axis === 'rows' || axis === 'columns') ? ',,,INCLUDE_CALC_MEMBERS' : '') + ')');\n }\n return query;\n };\n MDXQuery.getDimensionUniqueName = function (headerText) {\n var hierarchyNode = this.fieldDataObj.hierarchy;\n var curElement = [];\n if (hierarchyNode) {\n // let curElement: IOlapField[] = hierarchyNode.filter((item: IOlapField) => {\n // return (item.id.toLowerCase() === headerText.toLowerCase());\n // });\n for (var _i = 0, hierarchyNode_1 = hierarchyNode; _i < hierarchyNode_1.length; _i++) {\n var item = hierarchyNode_1[_i];\n if (item.id.toLowerCase() === headerText.toLowerCase()) {\n curElement.push(item);\n }\n }\n return (curElement.length > 0 ? curElement[0].pid : '');\n }\n else {\n return headerText.split('.')[0];\n }\n };\n MDXQuery.getMeasuresQuery = function (measures) {\n var query = '';\n if (measures.length > 0) {\n query = '{{';\n var values = '';\n for (var _i = 0, measures_1 = measures; _i < measures_1.length; _i++) {\n var measure = measures_1[_i];\n var name_1 = (measure.isCalculatedField ? this.fieldList[measure.name].tag : measure.name);\n if (values.length > 0) {\n values = values + ', ' + name_1;\n }\n else {\n values = name_1;\n }\n }\n query = query + values + '}}';\n }\n return query;\n };\n MDXQuery.getfilterQuery = function (filters, cube) {\n var query = '\\nFROM [' + cube + ']';\n var filterQuery = '\\nFROM( SELECT (';\n var advancedFilters = [];\n var advancedFilterQuery = [];\n var rowFilter = [];\n var columnFilter = [];\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var field = _a[_i];\n if (filters[field.name] && filters[field.name].length > 0) {\n if (typeof filters[field.name][0] === 'string') {\n rowFilter.push(filters[field.name]);\n }\n else {\n filters[field.name][1] = filters[field.name][0].type;\n advancedFilters.push(filters[field.name]);\n delete filters[field.name];\n }\n }\n }\n for (var _b = 0, _c = this.columns; _b < _c.length; _b++) {\n var field = _c[_b];\n if (filters[field.name] && filters[field.name].length > 0) {\n if (typeof filters[field.name][0] === 'string') {\n columnFilter.push(filters[field.name]);\n }\n else {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n var filter = filters[field.name];\n /* eslint-enable @typescript-eslint/no-explicit-any */\n filter[1] = filter[0].type;\n advancedFilters.push(filters[field.name]);\n delete filters[field.name];\n }\n }\n }\n for (var _d = 0, _e = this.filters; _d < _e.length; _d++) {\n var field = _e[_d];\n var isFound = false;\n for (var _f = 0, _g = this.columns; _f < _g.length; _f++) {\n var column = _g[_f];\n if (this.getDimensionUniqueName(column.name) === this.getDimensionUniqueName(field.name)) {\n if (filters[field.name]) {\n columnFilter.push(filters[field.name]);\n isFound = true;\n }\n }\n }\n if (!isFound) {\n for (var _h = 0, _j = this.rows; _h < _j.length; _h++) {\n var row = _j[_h];\n if (this.getDimensionUniqueName(row.name) === this.getDimensionUniqueName(field.name)) {\n if (filters[field.name]) {\n rowFilter.push(filters[field.name]);\n }\n }\n }\n }\n }\n if ((this.allowLabelFilter || this.allowValueFilter) && advancedFilters.length > 0) {\n var axes = ['Value', 'Label'];\n for (var _k = 0, axes_1 = axes; _k < axes_1.length; _k++) {\n var axis = axes_1[_k];\n for (var _l = 0, advancedFilters_1 = advancedFilters; _l < advancedFilters_1.length; _l++) {\n var filterItems = advancedFilters_1[_l];\n if (filterItems && filterItems.length === 2 &&\n typeof filterItems[1] === 'string' && filterItems[1] === axis) {\n advancedFilterQuery.push(this.getAdvancedFilterQuery(filterItems[0], filterQuery, 'COLUMNS'));\n }\n }\n }\n }\n for (var i = 0, cnt = columnFilter.length; i < cnt; i++) {\n filterQuery = i === 0 ? filterQuery + '{' + columnFilter[i].toString() + '}' : filterQuery + ',{' + columnFilter[i].toString() + '}';\n }\n if (columnFilter.length > 0) {\n filterQuery = (rowFilter.length > 0) ? filterQuery + ' ) ON COLUMNS ' + ',(' : filterQuery + ' ) ON COLUMNS';\n }\n for (var i = 0, cnt = rowFilter.length; i < cnt; i++) {\n filterQuery = (i > 0) ? filterQuery + ',{' + rowFilter[i].toString() + '}' : filterQuery + '{' + rowFilter[i].toString() + '}';\n }\n filterQuery = (columnFilter.length > 0 && rowFilter.length > 0) ?\n filterQuery = filterQuery + ') ON ROWS ' : (columnFilter.length === 0 && rowFilter.length > 0) ?\n filterQuery + ') ON COLUMNS ' : filterQuery;\n var updatedFilterQuery = '';\n if (advancedFilterQuery.length > 0) {\n updatedFilterQuery = advancedFilterQuery.join(' ') + ' ' +\n ((columnFilter.length > 0 || rowFilter.length > 0) ? filterQuery : '') + ' '\n + query + Array(advancedFilterQuery.length + 1 +\n ((columnFilter.length > 0 || rowFilter.length > 0) ? 1 : 0)).join(')');\n }\n query = (columnFilter.length === 0 && rowFilter.length === 0) ? query : filterQuery + query + ')';\n return (updatedFilterQuery.length > 0) ? updatedFilterQuery : query;\n };\n MDXQuery.getAdvancedFilterQuery = function (filterItem, query, currentAxis) {\n var filterQuery = '\\nFROM (SELECT Filter(' + filterItem.selectedField + '.AllMembers, ' +\n this.getAdvancedFilterCondtions(filterItem.name, filterItem.condition, filterItem.value1, filterItem.value2, filterItem.type, filterItem.measure) + /* eslint-disable-line */\n ')) on ' + currentAxis;\n return filterQuery;\n };\n /* eslint-disable */\n MDXQuery.getAdvancedFilterCondtions = function (fieldName, filterOperator, value1, value2, filterType, measures) {\n var advancedFilterQuery = '';\n switch (filterOperator) {\n case 'Equals':\n advancedFilterQuery = '(' + (filterType !== 'Value' ? (fieldName + '.CurrentMember.member_caption =\\\"' + value1 + '\\\"') : (measures + ' = ' + value1));\n break;\n case 'DoesNotEquals':\n advancedFilterQuery = '(' + (filterType !== 'Value' ? (fieldName + '.CurrentMember.member_caption <>\\\"' + value1 + '\\\"') : (measures + ' <>' + value1));\n break;\n case 'Contains':\n advancedFilterQuery = '( InStr (1,' + fieldName + '.CurrentMember.member_caption,\\\"' + value1 + '\\\") >0';\n break;\n case 'DoesNotContains':\n advancedFilterQuery = '( InStr (1,' + fieldName + '.CurrentMember.member_caption,\\\"' + value1 + '\\\")=0';\n break;\n case 'BeginWith':\n advancedFilterQuery = '( Left (' + fieldName + '.CurrentMember.member_caption,' + value1.length + ')=\\\"' + value1 + '\\\"';\n break;\n case 'DoesNotBeginWith':\n advancedFilterQuery = '( Left (' + fieldName + '.CurrentMember.member_caption,' + value1.length + ') <>\\\"' + value1 + '\\\"';\n break;\n case 'EndsWith':\n advancedFilterQuery = '( Right (' + fieldName + '.CurrentMember.member_caption,' + value1.length + ')=\\\"' + value1 + '\\\"';\n break;\n case 'DoesNotEndsWith':\n advancedFilterQuery = '( Right (' + fieldName + '.CurrentMember.member_caption,' + value1.length + ') <>\\\"' + value1 + '\\\"';\n break;\n case 'GreaterThan':\n advancedFilterQuery = '(' + (filterType !== 'Value' ? (fieldName + '.CurrentMember.member_caption >\\\"' + value1 + '\\\"') : (measures + ' >' + value1 + ''));\n break;\n case 'GreaterThanOrEqualTo':\n advancedFilterQuery = '(' + (filterType !== 'Value' ? (fieldName + '.CurrentMember.member_caption >=\\\"' + value1 + '\\\"') : (measures + ' >=' + value1 + ''));\n break;\n case 'LessThan':\n advancedFilterQuery = '(' + (filterType !== 'Value' ? (fieldName + '.CurrentMember.member_caption <\\\"' + value1 + '\\\"') : (measures + ' <' + value1 + ''));\n break;\n case 'LessThanOrEqualTo':\n advancedFilterQuery = '(' + (filterType !== 'Value' ? (fieldName + '.CurrentMember.member_caption <=\\\"' + value1 + '\\\"') : (measures + ' <=' + value1 + ''));\n break;\n case 'Between':\n advancedFilterQuery = '(' + (filterType !== 'Value' ? (fieldName + '.CurrentMember.member_caption >=\\\"' + value1 + '\\\"AND ' + fieldName + '.CurrentMember.member_caption <=\\\"' + value2 + '\\\"') : (measures + ' >=' + value1 + ' AND ' + measures + ' <=' + value2));\n break;\n case 'NotBetween':\n advancedFilterQuery = '(' + (filterType !== 'Value' ? (fieldName + '.CurrentMember.member_caption >=\\\"' + value1 + '\\\"OR ' + fieldName + '.CurrentMember.member_caption <=\\\"' + value2 + '\\\"') : (measures + ' >=' + value1 + ' OR ' + measures + ' <=' + value2));\n break;\n default:\n advancedFilterQuery = '( InStr (1,' + fieldName + '.CurrentMember.member_caption,\\\"' + value1 + '\\\") >0';\n break;\n }\n return advancedFilterQuery;\n };\n /* eslint-enable max-len */\n MDXQuery.getCalculatedFieldQuery = function (calcMembers) {\n var calcQuery = '';\n if (calcMembers.length > 0) {\n calcQuery = '\\nWITH';\n for (var _i = 0, calcMembers_1 = calcMembers; _i < calcMembers_1.length; _i++) {\n var member = calcMembers_1[_i];\n var prefixName = (member.formula.indexOf('Measure') > -1 ? '[Measures].' : member.hierarchyUniqueName + '.');\n var aliasName = prefixName + '[' + member.name + ']';\n var formatString = (!isNullOrUndefined(member.formatString) ? member.formatString : null);\n calcQuery += ('\\nMEMBER ' + aliasName + 'as (' + member.formula + ') ' + (!isNullOrUndefined(formatString) ? ', FORMAT_STRING =\\\"' + formatString.trim() + '\\\"' : ''));\n }\n }\n return calcQuery;\n };\n return MDXQuery;\n}());\nexport { MDXQuery };\n","import { extend, Internationalization, isNullOrUndefined, Ajax } from '@syncfusion/ej2-base';\nimport { PivotUtil } from '../util';\nimport { MDXQuery } from './mdx-query';\nimport * as cls from '../../common/base/css-constant';\n/**\n * OlapEngine is used to manipulate the olap or Multi-Dimensional data as pivoting values.\n */\n/** @hidden */\nvar OlapEngine = /** @class */ (function () {\n function OlapEngine() {\n /** @hidden */\n this.fieldList = {};\n /** @hidden */\n this.columnCount = 0;\n /** @hidden */\n this.rowCount = 0;\n /** @hidden */\n this.colFirstLvl = 0;\n /** @hidden */\n this.rowFirstLvl = 0;\n /** @hidden */\n this.pageColStartPos = 0;\n /** @hidden */\n this.enableSort = false;\n /** @hidden */\n this.enableValueSorting = false;\n /** @hidden */\n this.dataFields = {};\n /** @hidden */\n this.formatFields = {};\n /** @hidden */\n this.filterMembers = {};\n /** @hidden */\n this.drilledSets = {};\n /** @hidden */\n this.aggregatedValueMatrix = [];\n this.mappingFields = {};\n this.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n this.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n /** @hidden */\n this.pivotValues = [];\n /** @hidden */\n this.valueContent = [];\n /** @hidden */\n this.headerContent = [];\n /** @hidden */\n this.rowStartPos = 0;\n /** @hidden */\n this.pageRowStartPos = 0;\n /** @hidden */\n this.tupColumnInfo = [];\n /** @hidden */\n this.tupRowInfo = [];\n /** @hidden */\n this.gridJSON = '';\n /** @hidden */\n this.namedSetsPosition = {};\n this.colDepth = 0;\n this.totalCollection = [];\n this.parentObjCollection = {};\n this.curDrillEndPos = -1;\n /* eslint-disable */\n this.headerGrouping = {};\n /* eslint-enable */\n this.lastLevel = [];\n this.showRowSubTotals = true;\n this.showColumnSubTotals = true;\n this.hideRowTotalsObject = {};\n this.hideColumnTotalsObject = {};\n this.sortObject = {};\n this.isColDrill = false;\n }\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////\n OlapEngine.prototype.renderEngine = function (dataSourceSettings, customProperties) {\n this.isEmptyData = false;\n this.mdxQuery = '';\n this.isMeasureAvail = false;\n this.allowMemberFilter = false;\n this.allowLabelFilter = false;\n this.allowValueFilter = false;\n this.isMondrian = false;\n this.aggregatedValueMatrix = [];\n this.measureReportItems = [];\n this.calcChildMembers = [];\n this.selectedItems = [];\n this.savedFieldList = undefined;\n this.savedFieldListData = undefined;\n this.formatFields = {};\n this.filterMembers = {};\n this.dataFields = {};\n this.valueAxis = '';\n this.columnCount = 0;\n this.rowCount = 0;\n this.colFirstLvl = 0;\n this.rowFirstLvl = 0;\n this.pageColStartPos = 0;\n this.enableValueSorting = false;\n this.sortObject = {};\n this.globalize = new Internationalization();\n /* eslint-disable @typescript-eslint/no-explicit-any */\n this.locale = this.globalize.getCulture();\n /* eslint-enable @typescript-eslint/no-explicit-any */\n this.localeObj = customProperties ? customProperties.localeObj : undefined;\n this.enableValueSorting = customProperties ? customProperties.enableValueSorting : false;\n if (dataSourceSettings.url) {\n // this.isMondrian = (dataSourceSettings.providerType === 'mondrian');\n this.dataSourceSettings = dataSourceSettings;\n this.valueAxis = dataSourceSettings.valueAxis === 'row' ? 'row' : 'column';\n this.getAxisFields();\n this.formats = dataSourceSettings.formatSettings ? dataSourceSettings.formatSettings : [];\n this.enableSort = dataSourceSettings.enableSorting === undefined ? true : dataSourceSettings.enableSorting;\n this.valueSortSettings = dataSourceSettings.valueSortSettings ? dataSourceSettings.valueSortSettings : undefined;\n this.filterSettings = dataSourceSettings.filterSettings ? dataSourceSettings.filterSettings : [];\n this.sortSettings = dataSourceSettings.sortSettings ? dataSourceSettings.sortSettings : [];\n this.allowMemberFilter = dataSourceSettings.allowMemberFilter ? true : false;\n this.allowLabelFilter = dataSourceSettings.allowLabelFilter ? true : false;\n this.allowValueFilter = dataSourceSettings.allowValueFilter ? true : false;\n this.drilledMembers = dataSourceSettings.drilledMembers ? this.updateDrilledItems(dataSourceSettings.drilledMembers) : [];\n this.calculatedFieldSettings = dataSourceSettings.calculatedFieldSettings ? dataSourceSettings.calculatedFieldSettings : [];\n this.emptyCellTextContent = dataSourceSettings.emptyCellsTextContent ? dataSourceSettings.emptyCellsTextContent : '';\n this.pageSettings = customProperties ? (customProperties.pageSettings ? customProperties.pageSettings : this.pageSettings)\n : undefined;\n this.isPaging = this.pageSettings ? true : false;\n this.frameSortObject();\n this.getFormattedFields(this.formats);\n this.savedFieldList = customProperties ? customProperties.savedFieldList : undefined;\n this.savedFieldListData = customProperties ? customProperties.savedFieldListData : undefined;\n this.fieldListData = [];\n this.fieldListObj = {};\n this.setNamedSetsPosition();\n if (!(this.savedFieldList && this.savedFieldListData)) {\n this.getFieldList(dataSourceSettings);\n }\n else {\n this.updateFieldlist(true);\n }\n this.loadCalculatedMemberElements(this.calculatedFieldSettings);\n this.measureReportItems = [];\n // this.updateAllMembers(dataSourceSettings, this.filters);\n this.updateFilterItems(this.filterSettings);\n this.generateGridData(dataSourceSettings);\n }\n };\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////\n OlapEngine.prototype.generateGridData = function (dataSourceSettings, action) {\n var refPaging = (action && action === 'navPaging' &&\n this.isPaging && this.pageSettings !== undefined ? true : false);\n if (this.rows.length > 0 || this.columns.length > 0 || this.values.length > 0 || this.filters.length > 0) {\n MDXQuery.getCellSets(dataSourceSettings, this, refPaging);\n }\n else {\n MDXQuery.getCellSets(dataSourceSettings, this, true, undefined, true);\n this.generateEngine(undefined, undefined, { dataSourceSettings: dataSourceSettings, action: 'loadTableElements' });\n }\n };\n OlapEngine.prototype.generatePagingData = function (xmlDoc, request, customArgs) {\n var xmlaCellSet = [].slice.call(xmlDoc.querySelectorAll('Axes, CellData'));\n // this.rowCount =\n // (xmlaCellSet.length > 0 && [].slice.call(xmlaCellSet[0].querySelectorAll('Axis[name|=\"Axis1\"] Tuple')).length > 0 ?\n // [].slice.call(xmlaCellSet[0].querySelectorAll('Axis[name|=\"Axis1\"] Tuple')).length : 0);\n // this.columnCount =\n // (xmlaCellSet.length > 0 && [].slice.call(xmlaCellSet[0].querySelectorAll('Axis[name|=\"Axis0\"] Tuple')).length > 0 ?\n // [].slice.call(xmlaCellSet[0].querySelectorAll('Axis[name|=\"Axis0\"] Tuple')).length : 0);\n var countCells = xmlaCellSet[1] ? xmlaCellSet[1].querySelectorAll('FmtValue') : null;\n if (countCells && countCells.length > 0) {\n this.columnCount = Number(countCells[0].textContent);\n this.rowCount = Number(countCells[1].textContent);\n }\n var dataSourceSettings = customArgs.dataSourceSettings;\n MDXQuery.getCellSets(dataSourceSettings, this, true);\n };\n /* eslint-disable */\n OlapEngine.prototype.scrollPage = function (direction, newPage, prevPage) {\n MDXQuery.getCellSets(this.dataSourceSettings, this, true);\n };\n /* eslint-enable */\n OlapEngine.prototype.generateEngine = function (xmlDoc, request, customArgs) {\n if (customArgs.action !== 'down') {\n this.pivotValues = [];\n this.valueContent = [];\n this.headerContent = [];\n this.colDepth = 0;\n this.tupColumnInfo = [];\n this.tupRowInfo = [];\n this.colMeasures = {};\n this.colMeasurePos = undefined;\n this.rowMeasurePos = undefined;\n this.rowStartPos = -1;\n }\n this.xmlDoc = xmlDoc ? xmlDoc.cloneNode(true) : undefined;\n this.request = request;\n this.customArgs = customArgs;\n this.totalCollection = [];\n this.parentObjCollection = {};\n this.curDrillEndPos = -1;\n this.onDemandDrillEngine = [];\n this.getSubTotalsVisibility();\n this.xmlaCellSet = xmlDoc ? xmlDoc.querySelectorAll('Axes, CellData') : undefined;\n var columnTuples = this.xmlaCellSet && this.xmlaCellSet.length > 0 ?\n [].slice.call(this.xmlaCellSet[0].querySelectorAll('Axis[name|=\"Axis0\"] Tuple')) : [];\n var rowTuples = this.xmlaCellSet && this.xmlaCellSet.length > 0 ?\n [].slice.call(this.xmlaCellSet[0].querySelectorAll('Axis[name|=\"Axis1\"] Tuple')) : [];\n var valCollection = this.xmlaCellSet && this.xmlaCellSet.length > 1 ?\n [].slice.call(this.xmlaCellSet[1].querySelectorAll('Cell')) : [];\n if (this.drilledMembers.length > 0) {\n // let st1: number = new Date().getTime();\n var measureInfo = this.getMeasureInfo();\n var orderedInfo = void 0;\n orderedInfo = this.frameMeasureOrder(measureInfo, 'column', columnTuples, valCollection, columnTuples.length);\n columnTuples = orderedInfo.orderedHeaderTuples;\n valCollection = orderedInfo.orderedValueTuples;\n orderedInfo = this.frameMeasureOrder(measureInfo, 'row', rowTuples, valCollection, columnTuples.length);\n rowTuples = orderedInfo.orderedHeaderTuples;\n valCollection = orderedInfo.orderedValueTuples;\n // let st2: number = (new Date().getTime() - st1) / 1000;\n // console.log('over-all:' + st2);\n }\n if (customArgs.action === 'down') {\n this.updateTupCollection(customArgs.drillInfo.axis === 'row' ? rowTuples.length : columnTuples.length);\n }\n if (customArgs.action === 'down' ? customArgs.drillInfo.axis === 'column' : true) {\n this.frameColumnHeader(columnTuples);\n if (!this.isPaging) {\n this.performColumnSorting();\n }\n }\n if (customArgs.action === 'down' ? customArgs.drillInfo.axis === 'row' : true) {\n this.frameRowHeader(rowTuples);\n if (!this.isPaging) {\n this.performRowSorting();\n }\n }\n this.frameValues(valCollection, columnTuples.length);\n this.performColumnSpanning();\n if (!this.isPaging && this.enableSort) {\n for (var i = 0; i < this.headerContent.length; i++) {\n this.headerContent[i] = this.pivotValues[i];\n }\n }\n this.isEngineUpdated = true;\n this.isEmptyData = columnTuples.length === 0;\n //this.append(columnTuples.length);\n };\n OlapEngine.prototype.getSubTotalsVisibility = function () {\n this.showRowSubTotals = this.dataSourceSettings.showRowSubTotals && this.dataSourceSettings.showSubTotals;\n this.showColumnSubTotals = this.dataSourceSettings.showColumnSubTotals && this.dataSourceSettings.showSubTotals;\n this.hideRowTotalsObject = {};\n this.hideColumnTotalsObject = {};\n var axisCount = 1;\n do {\n if (axisCount === 1) {\n if (this.showColumnSubTotals) {\n for (var cCnt = 0; cCnt < this.dataSourceSettings.columns.length; cCnt++) {\n if (this.dataSourceSettings.columns[cCnt].showSubTotals === false) {\n this.hideColumnTotalsObject[this.dataSourceSettings.columns[cCnt].name] = cCnt;\n }\n }\n }\n }\n else {\n if (this.showRowSubTotals) {\n for (var rCnt = 0; rCnt < this.dataSourceSettings.rows.length; rCnt++) {\n if (this.dataSourceSettings.rows[rCnt].showSubTotals === false) {\n this.hideRowTotalsObject[this.dataSourceSettings.rows[rCnt].name] = rCnt;\n }\n }\n }\n }\n axisCount++;\n } while (axisCount < 3);\n };\n /* eslint-disable */\n OlapEngine.prototype.frameRowHeader = function (tuples) {\n this.headerGrouping = {};\n this.lastLevel = [];\n var position = this.pivotValues.length;\n var pivotValues = [];\n var valueContent = [];\n if (this.customArgs.action !== 'down') {\n pivotValues = this.pivotValues;\n valueContent = this.valueContent;\n }\n else {\n position = this.customArgs.drillInfo.currentCell.rowIndex + 1;\n }\n this.rowStartPos = this.rowStartPos > 0 ? this.rowStartPos : position;\n var tupPos = 0;\n var lastAllStartPos;\n var lastAllCount;\n var prevUNArray = [];\n var allType = {};\n var rowMembers = [];\n var availAllMember = false;\n var withoutAllStartPos = -1;\n var withoutAllEndPos = -1;\n var minLevel = [];\n var gTotals = [{\n axis: 'row',\n colIndex: 0,\n formattedText: 'Grand Total',\n hasChild: false,\n level: -1,\n rowIndex: 0,\n index: [],\n type: 'grand sum',\n ordinal: 0,\n colSpan: 1,\n rowSpan: 1,\n memberType: 2,\n isDrilled: false,\n valueSort: { 'Grand Total': 1, levelName: 'Grand Total' }\n }];\n var maxLevel = [];\n var measurePos;\n var newTupPosition = (this.customArgs.drillInfo && this.customArgs.drillInfo.axis === 'row') ?\n (this.customArgs.drillInfo.currentCell.ordinal + 1) : 0;\n while (tupPos < tuples.length) {\n var members = tuples[tupPos].querySelectorAll('Member');\n maxLevel = this.frameTupCollection(members, maxLevel, (tupPos + newTupPosition), this.tupRowInfo, this.showRowSubTotals, this.hideRowTotalsObject, 'row');\n tupPos++;\n }\n tupPos = 0;\n var prevTupInfo;\n var tuplesLength = tuples.length;\n if (this.customArgs.action === 'down') {\n var ordinal = this.customArgs.drillInfo.currentCell.ordinal + 1;\n tupPos = ordinal;\n tuplesLength += ordinal;\n lastAllCount = this.tupRowInfo[ordinal - 1].allCount;\n lastAllStartPos = this.tupRowInfo[ordinal - 1].allStartPos;\n prevTupInfo = this.tupRowInfo[ordinal - 1];\n }\n var startTupPos = tupPos;\n var pagingAllowFlag = true;\n var lastMesPos = 0;\n while (tupPos < tuplesLength && pagingAllowFlag) {\n var members = tuples[this.customArgs.action === 'down' ?\n (tupPos - (this.customArgs.drillInfo.currentCell.ordinal + 1)) : tupPos].querySelectorAll('Member');\n var memPos = 0;\n var prevParent = void 0;\n var allCount = this.tupRowInfo[tupPos].allCount;\n var allStartPos = this.tupRowInfo[tupPos].allStartPos;\n var measure = this.tupRowInfo[tupPos].measure;\n var typeColl = this.tupRowInfo[tupPos].typeCollection;\n var drillInfo = this.tupRowInfo[tupPos].drillInfo;\n var drillStartPos = this.tupRowInfo[tupPos].drillStartPos;\n var startDrillUniquename = this.tupRowInfo[tupPos].startDrillUniquename;\n var drillEndPos = this.tupRowInfo[tupPos].drillEndPos;\n var levelColl = this.tupRowInfo[tupPos].levelCollection;\n if (tupPos === 0 || tupPos === startTupPos) {\n var firstTupMembers = this.customArgs.action === 'down' ? this.tupRowInfo[0].members : members;\n while (memPos < firstTupMembers.length) {\n if (firstTupMembers[memPos].querySelector('MEMBER_TYPE').textContent === '1' &&\n Number(firstTupMembers[memPos].querySelector('LNum').textContent) === 0) {\n minLevel[memPos] = 0;\n }\n else {\n minLevel[memPos] = Number(firstTupMembers[memPos].querySelector('LNum').textContent);\n }\n // if (firstTupMembers[memPos].querySelector('MEMBER_TYPE').textContent === '1' &&\n // (this.isPaging || Number(firstTupMembers[memPos].querySelector('LNum').textContent) === 0)) {\n if (firstTupMembers[memPos].querySelector('MEMBER_TYPE').textContent === '1') {\n allType[memPos] = 0;\n withoutAllStartPos = withoutAllStartPos === -1 ? memPos : withoutAllStartPos;\n withoutAllEndPos = memPos;\n }\n else {\n allType[memPos] = 1;\n availAllMember = firstTupMembers[memPos].querySelector('MEMBER_TYPE').textContent === '3' ? availAllMember : true;\n }\n memPos++;\n }\n measurePos = typeColl.indexOf('3');\n }\n memPos = 0;\n if (tupPos === 0 && (members.length > (allCount + (measure ? 1 : 0)) || (members.length === 1 && measure))) {\n gTotals.pop();\n }\n if ((tupPos === 0 && this.isPaging) ? gTotals.length === 0 :\n (!availAllMember || allCount === lastAllCount || allStartPos !== lastAllStartPos || (members.length === 1 && measure))) {\n var attrDrill = this.checkAttributeDrill(this.tupRowInfo[tupPos].drillInfo, 'rows');\n var drillAllow = drillStartPos > -1 ? (allCount > 0 ? (attrDrill || allStartPos > drillStartPos) : true) : true;\n drillAllow = (prevTupInfo && drillAllow && drillStartPos > -1) ?\n (prevTupInfo.startDrillUniquename !== startDrillUniquename ? true :\n ((withoutAllEndPos > prevTupInfo.measurePosition ? false :\n prevTupInfo.measureName !== this.tupRowInfo[tupPos].measureName) &&\n (allStartPos === (drillStartPos + 1) || this.tupRowInfo[tupPos].measurePosition === (drillStartPos + 1))))\n : drillAllow;\n var withoutAllAllow = (withoutAllStartPos > -1 && allCount > 0) ? (attrDrill || allStartPos > withoutAllEndPos) : true;\n if (members.length === allCount + (measure ? 1 : 0) && measure) {\n var levelName = 'Grand Total.' + members[measurePos].querySelector('Caption').textContent;\n gTotals.push({\n axis: 'row',\n actualText: this.getUniqueName(members[measurePos].querySelector('UName').textContent),\n colIndex: 0,\n formattedText: (typeColl[measurePos] === '3' &&\n this.dataFields[this.getUniqueName(members[measurePos].querySelector('UName').textContent)] &&\n this.dataFields[this.getUniqueName(members[measurePos].querySelector('UName').textContent)].caption) ?\n this.dataFields[this.getUniqueName(members[measurePos].querySelector('UName').textContent)].caption :\n members[measurePos].querySelector('Caption').textContent,\n hasChild: false,\n level: -1,\n rowIndex: position,\n index: [],\n ordinal: tupPos,\n colSpan: 1,\n rowSpan: 1,\n memberType: Number(typeColl[measurePos]),\n isDrilled: false,\n parentUniqueName: members[measurePos].querySelector('PARENT_UNIQUE_NAME') ?\n members[measurePos].querySelector('PARENT_UNIQUE_NAME').textContent : undefined,\n levelUniqueName: members[measurePos].querySelector('LName').textContent,\n hierarchy: members[measurePos].getAttribute('Hierarchy'),\n valueSort: { levelName: levelName, axis: members[measurePos].getAttribute('Hierarchy') }\n });\n gTotals[gTotals.length - 1].valueSort['Grand Total.' + members[measurePos].querySelector('Caption').textContent] = 1;\n }\n else if (!(allStartPos === 0 || (measurePos === 0 && allStartPos === 1)) && drillAllow && withoutAllAllow) {\n prevTupInfo = this.tupRowInfo[tupPos];\n var lastPos = position;\n var lastMemPos = memPos;\n prevParent = {};\n var withoutAllDrilled = false;\n while (memPos < members.length && pagingAllowFlag) {\n var member = members[memPos];\n if (member.querySelector('UName').textContent !== prevUNArray[memPos] && typeColl[memPos] !== '2'\n && ((Object.keys(prevParent).length > 0 ? (prevParent.isDrilled && !this.fieldList[prevParent.hierarchy].isHierarchy) : withoutAllDrilled) ?\n (typeColl[memPos] === '3' && (allType[memPos - 1] && allType[memPos + 1] !== 0)) : true)) {\n var lvl = Number(member.querySelector('LNum').textContent) -\n ((allType[memPos] && typeColl[memPos] !== '3') ? 1 : minLevel[memPos]);\n var isNamedSet = this.namedSetsPosition['row'][memPos] ? true : false;\n var uniqueName = this.getUniqueName(member.querySelector('UName').textContent);\n var depth = this.getDepth(this.tupRowInfo[tupPos], uniqueName, Number(typeColl[memPos]));\n if (!(this.isPaging && pivotValues[lastMesPos][0] && this.fieldList[pivotValues[lastMesPos][0].hierarchy] && this.fieldList[pivotValues[lastMesPos][0].hierarchy].isHierarchy &&\n pivotValues[lastMesPos][0].hasChild && !pivotValues[lastMesPos][0].isDrilled && !this.rows[memPos].isNamedSet && (this.rows[memPos].name.indexOf('[Measures]') === 0 || (this.fieldList[member.getAttribute('Hierarchy')] && (this.fieldList[member.getAttribute('Hierarchy')].isHierarchy || this.fieldList[member.getAttribute('Hierarchy')].hasAllMember))) &&\n pivotValues[lastMesPos][0].depth < depth)) {\n pivotValues[position] = [{\n axis: 'row',\n actualText: uniqueName,\n colIndex: 0,\n formattedText: (typeColl[memPos] === '3' && this.dataFields[uniqueName] &&\n this.dataFields[uniqueName].caption) ? this.dataFields[uniqueName].caption :\n member.querySelector('Caption').textContent,\n hasChild: (this.fieldList[member.getAttribute('Hierarchy')] && this.fieldList[member.getAttribute('Hierarchy')].isHierarchy && memPos < this.rows.length - 1 && !this.rows[memPos + 1].isNamedSet && this.rows[memPos + 1].name.indexOf('[Measures]') < 0 && this.fieldList[this.rows[memPos + 1].name] && this.fieldList[this.rows[memPos + 1].name].hasAllMember) ? true : Number(member.querySelector('CHILDREN_CARDINALITY').textContent) > 0 ? true : false,\n level: lvl,\n depth: depth,\n rowIndex: position,\n index: [],\n ordinal: tupPos,\n type: 'header',\n colSpan: 1,\n rowSpan: 1,\n memberType: Number(typeColl[memPos]),\n isDrilled: (this.fieldList[member.getAttribute('Hierarchy')] && this.fieldList[member.getAttribute('Hierarchy')].isHierarchy && !this.isAttributeDrill(member.getAttribute('Hierarchy'), this.tupRowInfo[tupPos].drillInfo, 'rows')) ? true : this.tupRowInfo[tupPos].drillInfo[memPos].isDrilled,\n parentUniqueName: member.querySelector('PARENT_UNIQUE_NAME') ?\n member.querySelector('PARENT_UNIQUE_NAME').textContent : undefined,\n levelUniqueName: member.querySelector('LName').textContent,\n hierarchy: member.getAttribute('Hierarchy'),\n isNamedSet: isNamedSet,\n valueSort: { levelName: '', axis: member.getAttribute('Hierarchy') }\n }];\n prevParent = typeColl[memPos] !== '3' ? pivotValues[position][0] : prevParent;\n if (!prevParent) {\n rowMembers.push(member.querySelector('Caption').textContent);\n }\n var levelName = this.getCaptionCollectionWithMeasure(this.tupRowInfo[tupPos]);\n pivotValues[position][0].valueSort.levelName = levelName;\n pivotValues[position][0].valueSort[levelName] = 1;\n valueContent[position - this.rowStartPos] = {};\n valueContent[position - this.rowStartPos][0] = pivotValues[position][0];\n if (measure && measurePos > memPos) {\n prevUNArray[measurePos] = '';\n }\n for (var pos = memPos + 1; pos < members.length; pos++) {\n prevUNArray[pos] = '';\n }\n prevUNArray[memPos] = member.querySelector('UName').textContent;\n lastMesPos = Number(typeColl[memPos]) !== 3 ? position : lastMesPos;\n position++;\n lastMemPos = memPos;\n }\n }\n else if (typeColl[memPos] === '2') {\n lastMemPos = memPos;\n }\n else {\n if (this.tupRowInfo[tupPos].drillInfo[memPos].isDrilled && allType[memPos] === 0) {\n withoutAllDrilled = true;\n }\n }\n if (this.tupRowInfo[tupPos].drillInfo[memPos].isDrilled && this.tupRowInfo[tupPos].showTotals) {\n this.tupRowInfo[tupPos].showTotals = !this.showRowSubTotals ? false :\n this.hideRowTotalsObject[this.tupRowInfo[tupPos].drillInfo[memPos].hierarchy] === undefined;\n }\n memPos++;\n }\n if (lastPos < position && lastMemPos >= (members.length - 1)) {\n pivotValues[position - 1][0].ordinal = tupPos;\n if (pivotValues[position - 1][0].type === 'header') {\n delete pivotValues[position - 1][0].type;\n }\n }\n }\n lastAllCount = allCount;\n lastAllStartPos = allStartPos;\n }\n tupPos++;\n }\n if (gTotals.length > 1 && gTotals[0].memberType !== 3) {\n gTotals[0].ordinal = -1;\n }\n // if (!(this.dataSourceSettings.showGrandTotals && this.dataSourceSettings.showRowGrandTotals)) {\n // for (let totPos: number = 0; totPos < gTotals.length; totPos++) {\n // if (this.tupRowInfo[gTotals[totPos].ordinal]) {\n // this.tupRowInfo[gTotals[totPos].ordinal].showTotals = false;\n // }\n // }\n // }\n if (this.customArgs.action !== 'down') {\n if (this.dataSourceSettings.showGrandTotals && this.dataSourceSettings.showRowGrandTotals) {\n for (var totPos = 0; totPos < gTotals.length; totPos++) {\n gTotals[totPos].rowIndex = position;\n pivotValues[position] = [gTotals[totPos]];\n valueContent[position - this.rowStartPos] = {};\n valueContent[position - this.rowStartPos][0] = pivotValues[position][0];\n position++;\n }\n }\n }\n else {\n this.updateRowEngine(pivotValues, valueContent, tuples.length);\n this.onDemandDrillEngine = pivotValues;\n }\n };\n OlapEngine.prototype.getDepth = function (tupInfo, uniqueName, memberType) {\n var memberPosition = tupInfo.uNameCollection.indexOf(uniqueName);\n var cropUName = tupInfo.uNameCollection.substring(0, memberPosition) +\n (memberType === 3 ? '' : uniqueName);\n var fieldSep = cropUName.split('::[').map(function (item) {\n return item[0] === '[' ? item : ('[' + item);\n });\n if (memberType === 3 && this.rowMeasurePos === fieldSep.length) {\n fieldSep.push(uniqueName);\n }\n var nxtIndextCount = -1;\n for (var fPos = 0; fPos < fieldSep.length; fPos++) {\n var fieldMembers = fieldSep[fPos];\n var membersCount = fieldMembers.split('~~').length;\n nxtIndextCount += membersCount;\n }\n return nxtIndextCount;\n };\n OlapEngine.prototype.checkAttributeDrill = function (drillInfo, axis) {\n var isDrill = false;\n for (var i = 0; i < drillInfo.length; i++) {\n isDrill = this.isAttributeDrill(drillInfo[i].hierarchy, drillInfo, axis);\n if (isDrill) {\n break;\n }\n }\n return isDrill;\n };\n OlapEngine.prototype.frameTupCollection = function (members, maxLevel, tupPos, tupInfo, showSubTotals, hideTotalsObject, axis) {\n var _a, _b;\n var memPos = 0;\n var allCount = 0;\n var allStartPos;\n var measure;\n var measureName;\n var measurePosition;\n var typeColl = [];\n var levelColl = [];\n var drillState = [];\n var uNameCollection = '';\n var captionCollection = '';\n var showTotals = true;\n var hideFieldPos = -1;\n while (memPos < members.length) {\n var member = members[memPos];\n var memberlevel = Number(member.querySelector('LNum').textContent);\n var memberUName = member.querySelector('UName').textContent;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if (Number(member.querySelector('MEMBER_TYPE').textContent) > 3) {\n member.querySelector('MEMBER_TYPE').textContent = memberUName.indexOf('[Measures]') === 0 ? '3' : '1';\n }\n var memberType = memberUName.indexOf('[Measures]') === 0 ? '3' :\n (Number(member.querySelector('MEMBER_TYPE').textContent) > 3 ? '1' : member.querySelector('MEMBER_TYPE').textContent);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var memberCaption = member.querySelector('Caption').textContent;\n if (this.fieldList[memberCaption] && this.fieldList[memberCaption].type === 'CalculatedField') {\n memberCaption = this.fieldList[memberCaption].caption;\n member.querySelector('Caption').textContent = memberCaption;\n }\n var hierarchy = member.getAttribute('Hierarchy');\n var parentUName = member.querySelector('PARENT_UNIQUE_NAME') ? member.querySelector('PARENT_UNIQUE_NAME').textContent : '';\n if (memberType === '2') {\n if (!this.isPaging) {\n allCount++;\n }\n allStartPos = isNullOrUndefined(allStartPos) ? memPos : allStartPos;\n }\n else if (memberType === '3') {\n measure = member;\n measureName = memberUName;\n measurePosition = memPos;\n if (axis === 'column') {\n this.colMeasures[memberUName] = member;\n this.colMeasurePos = memPos;\n }\n else {\n this.rowMeasurePos = memPos;\n }\n }\n else {\n hideFieldPos = hideTotalsObject[hierarchy];\n }\n if (memberType !== '2') {\n if (this.headerGrouping[memPos]) {\n if (memberlevel > this.lastLevel[memPos]) {\n this.lastLevel[memPos] = memberlevel;\n }\n else if (memberlevel < this.lastLevel[memPos]) {\n var levelPos = this.lastLevel[memPos];\n while (levelPos >= memberlevel) {\n delete this.headerGrouping[memPos].UName[levelPos];\n delete this.headerGrouping[memPos].Caption[levelPos];\n levelPos--;\n }\n this.lastLevel[memPos] = memberlevel;\n }\n this.headerGrouping[memPos].UName[memberlevel] = memberUName;\n this.headerGrouping[memPos].Caption[memberlevel] = memberCaption;\n }\n else {\n this.lastLevel[memPos] = memberlevel;\n this.headerGrouping[memPos] = { UName: (_a = {}, _a[memberlevel] = memberUName, _a), Caption: (_b = {}, _b[memberlevel] = memberCaption, _b) };\n }\n if (this.isPaging) {\n var currUName = parentUName;\n while (this.drilledSets[currUName]) {\n var currCaption = this.drilledSets[currUName].querySelector('Caption').textContent;\n var currLevel = Number(this.drilledSets[currUName].querySelector('LNum').textContent);\n this.headerGrouping[memPos].UName[currLevel] = currUName;\n this.headerGrouping[memPos].Caption[currLevel] = currCaption;\n currUName = this.drilledSets[currUName].querySelector('PARENT_UNIQUE_NAME') === null ? '' :\n this.drilledSets[currUName].querySelector('PARENT_UNIQUE_NAME').textContent;\n }\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n var uNames = '';\n var uNamesKeys = Object.keys(this.headerGrouping[memPos].UName);\n for (var i = 0; i < uNamesKeys.length; i++) {\n var j = uNamesKeys[i];\n if (i === 0) {\n uNames = this.headerGrouping[memPos].UName[j];\n }\n else {\n uNames = uNames + '~~' + this.headerGrouping[memPos].UName[j];\n }\n }\n uNameCollection = uNameCollection === '' ? uNames :\n (uNameCollection + '::' + uNames);\n var captions = '';\n var captionsKeys = Object.keys(this.headerGrouping[memPos].Caption);\n for (var i = 0; i < captionsKeys.length; i++) {\n var j = captionsKeys[i];\n if (i === 0) {\n captions = this.headerGrouping[memPos].Caption[j];\n }\n else {\n captions = captions + '~~' + this.headerGrouping[memPos].Caption[j];\n }\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (memPos !== measurePosition) {\n captionCollection = captionCollection === '' ? captions :\n (captionCollection + '::' + captions);\n }\n }\n typeColl.push(memberType);\n levelColl.push(memberlevel);\n if (isNullOrUndefined(maxLevel[memPos]) || maxLevel[memPos] < memberlevel) {\n maxLevel[memPos] = memberlevel;\n }\n drillState.push({ level: memberlevel, uName: memberUName, hierarchy: hierarchy, isDrilled: false });\n if (tupInfo[tupPos - 1] && tupInfo[tupPos - 1].typeCollection[memPos] === '1' &&\n drillState[memPos].level > tupInfo[tupPos - 1].drillInfo[memPos].level) {\n var uCollection = uNameCollection.split(/~~|::\\[/).map(function (item) {\n return item[0] === '[' ? item : ('[' + item);\n });\n uCollection.pop();\n var parentLevel = uCollection.join('~~');\n this.setDrillInfo(parentUName, parentLevel, memPos, tupPos, tupInfo);\n }\n memPos++;\n }\n if (hideFieldPos > -1) {\n showTotals = typeColl[hideFieldPos + 1] !== '2';\n }\n tupInfo[tupPos] = {\n allCount: allCount,\n allStartPos: allStartPos,\n measure: measure,\n measureName: measureName,\n measurePosition: measurePosition,\n members: members,\n typeCollection: typeColl,\n uNameCollection: uNameCollection,\n captionCollection: captionCollection,\n levelCollection: levelColl,\n drillInfo: drillState,\n drillStartPos: -1,\n drillEndPos: -1,\n showTotals: (!showSubTotals && allCount > 0 && allStartPos > (measurePosition === 0 ? 1 : 0)) ? false : showTotals\n };\n return maxLevel;\n };\n OlapEngine.prototype.getCaptionCollectionWithMeasure = function (tuple) {\n var captionColection = tuple.captionCollection;\n if (tuple.measure) {\n var measureName = tuple.measure.querySelector('Caption').textContent;\n var measurePosition = tuple.uNameCollection.split(/[~~,::]+/g).indexOf(tuple.measureName);\n var captionCollectionArray = tuple.captionCollection.split(/[~~,::]+/g);\n captionCollectionArray.splice(measurePosition, 0, measureName);\n captionColection = captionCollectionArray.join('.');\n }\n else {\n var captionCollectionArray = tuple.captionCollection.split(/[~~,::]+/g);\n captionColection = captionCollectionArray.join('.');\n }\n return captionColection;\n };\n /** hidden */\n OlapEngine.prototype.setNamedSetsPosition = function () {\n this.namedSetsPosition = {};\n var axis = 0;\n do {\n var setsPositions = {};\n var axisFields = axis ? this.dataSourceSettings.rows : this.dataSourceSettings.columns;\n for (var fPos = 0; fPos < axisFields.length; fPos++) {\n if (axisFields[fPos].isNamedSet) {\n setsPositions[fPos] = axisFields[fPos].name;\n }\n }\n this.namedSetsPosition[axis ? 'row' : 'column'] = setsPositions;\n axis++;\n } while (axis < 2);\n };\n OlapEngine.prototype.updateRowEngine = function (pivotValues, valueContent, tuplesLength) {\n var currEngineCount = this.pivotValues.length - 1;\n var newEngineCount = Object.keys(pivotValues).length;\n while (currEngineCount > this.customArgs.drillInfo.currentCell.rowIndex) {\n this.pivotValues[currEngineCount + newEngineCount] = this.pivotValues[currEngineCount];\n this.pivotValues[currEngineCount + newEngineCount][0].ordinal += tuplesLength;\n this.pivotValues[currEngineCount + newEngineCount][0].rowIndex += newEngineCount;\n this.valueContent[(currEngineCount + newEngineCount) - this.rowStartPos] = this.valueContent[currEngineCount - this.rowStartPos];\n currEngineCount--;\n }\n // for (let key in pivotValues) {\n for (var key = 0; key < pivotValues.length; key++) {\n this.pivotValues[key] = pivotValues[key];\n this.valueContent[Number(key) - this.rowStartPos] = valueContent[Number(key) - this.rowStartPos];\n }\n this.pivotValues[this.customArgs.drillInfo.currentCell.rowIndex][0].isDrilled = true;\n };\n OlapEngine.prototype.updateTupCollection = function (newTuplesCount) {\n var tupCollection = this.customArgs.drillInfo.axis === 'row' ? this.tupRowInfo : this.tupColumnInfo;\n var currTupCount = tupCollection.length - 1;\n while (currTupCount > this.customArgs.drillInfo.currentCell.ordinal) {\n tupCollection[currTupCount + newTuplesCount] = tupCollection[currTupCount];\n currTupCount--;\n }\n };\n OlapEngine.prototype.frameColumnHeader = function (tuples) {\n var _this = this;\n this.headerGrouping = {};\n this.lastLevel = [];\n var tupPos = 0;\n var maxLevel = [];\n var allType = [];\n var minLevel = [];\n var withoutAllStartPos = -1;\n var withoutAllEndPos = -1;\n var newTupPosition = (this.customArgs.drillInfo && this.customArgs.drillInfo.axis === 'column') ?\n (this.customArgs.drillInfo.currentCell.ordinal + 1) : 0;\n while (tupPos < tuples.length) {\n var members = tuples[tupPos].querySelectorAll('Member');\n maxLevel = this.frameTupCollection(members, maxLevel, (tupPos + newTupPosition), this.tupColumnInfo, this.showColumnSubTotals, this.hideColumnTotalsObject, 'column');\n tupPos++;\n }\n if (tuples.length > 0) {\n var members = tuples[0].querySelectorAll('Member');\n var memPos = 0;\n while (memPos < members.length) {\n minLevel[memPos] = (members[memPos].querySelector('MEMBER_TYPE').textContent === '1' &&\n Number(members[memPos].querySelector('LNum').textContent) === 0) ? 0 :\n Number(members[memPos].querySelector('LNum').textContent);\n if (members[memPos].querySelector('MEMBER_TYPE').textContent === '1' &&\n (this.isPaging || Number(members[memPos].querySelector('LNum').textContent) === 0)) {\n allType[memPos] = 0;\n withoutAllStartPos = withoutAllStartPos === -1 ? memPos : withoutAllStartPos;\n withoutAllEndPos = memPos;\n }\n else {\n allType[memPos] = 1;\n }\n memPos++;\n }\n }\n tupPos = 0;\n var position = 1;\n var lastSavedInfo = {};\n var isSubTotIncluded = true;\n var withoutAllAvail = false;\n var lastRealTup;\n var _loop_1 = function () {\n var members = tuples[tupPos].querySelectorAll('Member');\n var allCount = this_1.tupColumnInfo[tupPos].allCount;\n var allStartPos = this_1.tupColumnInfo[tupPos].allStartPos;\n var measure = this_1.tupColumnInfo[tupPos].measure;\n var typeColl = this_1.tupColumnInfo[tupPos].typeCollection;\n var drillInfo = this_1.tupColumnInfo[tupPos].drillInfo;\n var drillStartPos = this_1.tupColumnInfo[tupPos].drillStartPos;\n var startDrillUniquename = this_1.tupColumnInfo[tupPos].startDrillUniquename;\n var endDrillUniquename = this_1.tupColumnInfo[tupPos].endDrillUniquename;\n var drillEndPos = this_1.tupColumnInfo[tupPos].drillEndPos;\n var levelColl = this_1.tupColumnInfo[tupPos].levelCollection;\n var isStartCol = typeColl[0] === '2' ? false : (typeColl[0] === '3' ? typeColl[1] !== '2' : true);\n var depth = 0;\n /* eslint-disable */\n maxLevel.map(function (item, pos) { depth = depth + (allType[pos] === 0 ? (item + (1 - (minLevel[pos] > 1 ? 1 : minLevel[pos]))) : (item === 0 ? ((_this.isPaging && typeColl[pos] === '2') ? 0 : 1) : item)); });\n /* eslint-enable */\n this_1.colDepth = this_1.colDepth > depth ? this_1.colDepth : depth;\n if (tupPos === 0 && members.length > (allCount + (measure ? 1 : 0))) {\n withoutAllAvail = true;\n isStartCol = (allCount > 0 && isStartCol) ? (allStartPos > withoutAllStartPos) : isStartCol;\n }\n if (isStartCol) {\n if (allCount === 0) {\n var levelComp = [-1, -1, -1];\n if (this_1.tupColumnInfo[tupPos - 1] && this_1.tupColumnInfo[tupPos - 1].allCount === 0) {\n levelComp = this_1.levelCompare(levelColl, this_1.tupColumnInfo[tupPos - 1].levelCollection);\n }\n else if (withoutAllAvail && lastRealTup) {\n levelComp = this_1.levelCompare(levelColl, lastRealTup.levelCollection);\n }\n if (this_1.tupColumnInfo[tupPos].drillStartPos < 0) {\n if (!isSubTotIncluded && levelComp[0] > -1 && levelComp[2] > -1) {\n position = this_1.mergeTotCollection(position, allCount, maxLevel, minLevel, allType, allStartPos, drillInfo, levelComp);\n }\n this_1.setParentCollection(members);\n this_1.frameCommonColumnLoop(members, tupPos, position, maxLevel, allType, minLevel);\n if (!this_1.tupColumnInfo[tupPos].showTotals) {\n position--;\n }\n if (!isSubTotIncluded && levelComp[0] > -1 && levelComp[2] > -1) {\n position = this_1.mergeTotCollection(position, allCount, maxLevel, minLevel, allType, allStartPos, drillInfo, levelComp);\n }\n isSubTotIncluded = false;\n if (!this_1.isColDrill) {\n position++;\n }\n else {\n this_1.isColDrill = false;\n }\n }\n else if (lastSavedInfo.drillStartPos === drillStartPos ?\n (lastSavedInfo.startDrillUniquename !== startDrillUniquename ||\n lastSavedInfo.allCount === allCount) : true) {\n if (!isSubTotIncluded && levelComp[0] > -1 && levelComp[2] > -1) {\n position = this_1.mergeTotCollection(position, allCount, maxLevel, minLevel, allType, allStartPos, drillInfo, levelComp);\n isSubTotIncluded = true;\n }\n this_1.setParentCollection(members);\n if (withoutAllAvail ? (withoutAllEndPos <= drillStartPos) : true) {\n this_1.totalCollection[this_1.totalCollection.length] =\n ({ allCount: allCount, ordinal: tupPos, members: members, drillInfo: drillInfo });\n lastSavedInfo.allCount = allCount;\n lastSavedInfo.allStartPos = allStartPos;\n lastSavedInfo.drillStartPos = drillStartPos;\n lastSavedInfo.startDrillUniquename = startDrillUniquename;\n lastSavedInfo.endDrillUniquename = endDrillUniquename;\n }\n }\n lastRealTup = this_1.tupColumnInfo[tupPos];\n }\n }\n var attrDrill = this_1.checkAttributeDrill(this_1.tupColumnInfo[tupPos].drillInfo, 'columns');\n if (allCount > 0 && (withoutAllAvail ? (isStartCol && (attrDrill || withoutAllEndPos < allStartPos)) : true)) {\n if (allCount === lastSavedInfo.allCount || allStartPos !== lastSavedInfo.allStartPos) {\n var endAllow = drillEndPos !== drillStartPos ?\n (lastSavedInfo.endDrillUniquename === endDrillUniquename) : true;\n var allow = allStartPos !== lastSavedInfo.allStartPos ?\n (lastSavedInfo.startDrillUniquename !== startDrillUniquename) : endAllow;\n if (drillStartPos > -1 ? (allow) : true) {\n if (!isSubTotIncluded) {\n position = this_1.mergeTotCollection(position, allCount, maxLevel, minLevel, allType, allStartPos, drillInfo);\n isSubTotIncluded = true;\n }\n this_1.setParentCollection(members);\n if ((withoutAllAvail && drillStartPos > -1) ? (withoutAllEndPos <= drillStartPos) : true) {\n this_1.totalCollection[this_1.totalCollection.length] =\n ({\n allCount: allCount, ordinal: tupPos, members: members, allStartPos: allStartPos, drillInfo: drillInfo\n });\n lastSavedInfo.allCount = allCount;\n lastSavedInfo.allStartPos = allStartPos;\n lastSavedInfo.drillStartPos = drillStartPos;\n lastSavedInfo.startDrillUniquename = startDrillUniquename;\n lastSavedInfo.endDrillUniquename = endDrillUniquename;\n }\n }\n }\n }\n tupPos++;\n };\n var this_1 = this;\n while (tupPos < tuples.length) {\n _loop_1();\n }\n if (this.totalCollection.length > 0) {\n if (Object.keys(this.colMeasures).length > 1) {\n this.orderTotals(position, maxLevel, allType, minLevel);\n }\n else {\n this.totalCollection = this.totalCollection.reverse();\n for (var _i = 0, _a = this.totalCollection; _i < _a.length; _i++) {\n var coll = _a[_i];\n var isGrandTotal = this.tupColumnInfo[coll.ordinal].measurePosition === 0 ?\n this.tupColumnInfo[coll.ordinal].allStartPos === 1 : this.tupColumnInfo[coll.ordinal].allStartPos === 0;\n if (isGrandTotal ? (this.dataSourceSettings.showGrandTotals && this.dataSourceSettings.showColumnGrandTotals) : true) {\n this.frameCommonColumnLoop(coll.members, coll.ordinal, position, maxLevel, minLevel, allType);\n var attrDrill = this.checkAttributeDrill(this.tupColumnInfo[coll.ordinal].drillInfo, 'columns');\n if (this.tupColumnInfo[coll.ordinal].showTotals || attrDrill) {\n position++;\n }\n }\n }\n }\n }\n };\n OlapEngine.prototype.orderTotals = function (position, maxLevel, allType, minLevel) {\n var groupColl = {};\n var maxCnt = 1;\n for (var _i = 0, _a = this.totalCollection; _i < _a.length; _i++) {\n var coll = _a[_i];\n var isGrandTotal = this.tupColumnInfo[coll.ordinal].measurePosition === 0 ?\n this.tupColumnInfo[coll.ordinal].allStartPos === 1 : this.tupColumnInfo[coll.ordinal].allStartPos === 0;\n if (isGrandTotal ? (this.dataSourceSettings.showGrandTotals && this.dataSourceSettings.showColumnGrandTotals) : true) {\n var measureName = this.tupColumnInfo[coll.ordinal].measure.querySelector('UName').textContent;\n if (groupColl[measureName]) {\n groupColl[measureName].coll.push(coll);\n groupColl[measureName].count++;\n maxCnt = maxCnt < groupColl[measureName].count ? groupColl[measureName].count : maxCnt;\n }\n else {\n groupColl[measureName] = { coll: [coll], count: 1 };\n }\n }\n }\n var keys = Object.keys(groupColl);\n var collLength = maxCnt - 1;\n while (collLength > -1) {\n for (var _b = 0, keys_1 = keys; _b < keys_1.length; _b++) {\n var key = keys_1[_b];\n var coll = groupColl[key].coll[collLength];\n if (coll) {\n this.frameCommonColumnLoop(coll.members, coll.ordinal, position, maxLevel, allType, minLevel);\n if (this.tupColumnInfo[coll.ordinal].showTotals) {\n position++;\n }\n }\n }\n collLength--;\n }\n };\n OlapEngine.prototype.setParentCollection = function (members) {\n var memPos = 0;\n while (members.length > memPos) {\n var member = members[memPos];\n var memberType = Number(member.querySelector('MEMBER_TYPE').textContent) > 2 ? '3' :\n member.querySelector('MEMBER_TYPE').textContent;\n var memberlevel = Number(member.querySelector('LNum').textContent);\n var memberUName = member.querySelector('UName').textContent;\n var parentUName = member.querySelector('PARENT_UNIQUE_NAME') ?\n member.querySelector('PARENT_UNIQUE_NAME').textContent : '';\n var isSameParent = true;\n var isWithoutAllMember = false;\n if (this.parentObjCollection[memPos]) {\n var levelCollection = Object.keys(this.parentObjCollection[memPos]);\n var parentMember = this.parentObjCollection[memPos][memberlevel - 1];\n isSameParent = parentMember ? parentUName === parentMember.querySelector('UName').textContent :\n levelCollection.length === 0;\n isWithoutAllMember = this.tupColumnInfo[0].typeCollection[memPos] === '1';\n }\n if (memberType === '2') {\n delete this.parentObjCollection[memPos];\n }\n else {\n if ((this.isPaging || isWithoutAllMember) ? !isSameParent : false) {\n delete this.parentObjCollection[memPos];\n }\n if (!this.parentObjCollection[memPos]) {\n this.parentObjCollection[memPos] = {};\n this.parentObjCollection[memPos][memberlevel] = member;\n }\n else if (!this.parentObjCollection[memPos][memberlevel] ||\n this.parentObjCollection[memPos][memberlevel].querySelector('UName').textContent !== memberUName) {\n this.parentObjCollection[memPos][memberlevel] = member;\n }\n }\n memPos++;\n }\n };\n OlapEngine.prototype.setDrillInfo = function (pUName, parentLvlCollection, memPos, tupPos, tupInfo) {\n tupPos--;\n while (tupInfo[tupPos] && tupInfo[tupPos].drillInfo[memPos].uName === pUName) {\n var prevUcollection = tupInfo[tupPos].uNameCollection.split(/~~|::\\[/).map(function (item) {\n return item[0] === '[' ? item : ('[' + item);\n });\n if (prevUcollection.join('~~').indexOf(parentLvlCollection) < 0) {\n break;\n }\n tupInfo[tupPos].drillInfo[memPos].isDrilled = true;\n if (this.curDrillEndPos <= memPos) {\n tupInfo[tupPos].drillEndPos = this.curDrillEndPos = memPos;\n tupInfo[tupPos].endDrillUniquename = pUName;\n }\n if (tupInfo[tupPos].drillStartPos > memPos || tupInfo[tupPos].drillStartPos === -1) {\n tupInfo[tupPos].drillStartPos = memPos;\n }\n tupInfo[tupPos].startDrillUniquename = pUName;\n tupPos--;\n }\n };\n OlapEngine.prototype.levelCompare = function (newLevels, oldLevels) {\n var changePos = [-1, 0];\n for (var lPos = 0; lPos < oldLevels.length; lPos++) {\n if (newLevels[lPos] !== oldLevels[lPos]) {\n changePos = [lPos, newLevels[lPos], (oldLevels[lPos] - newLevels[lPos])];\n break;\n }\n }\n return changePos;\n };\n OlapEngine.prototype.mergeTotCollection = function (position, allCount, maxLevel, allType, minLevel, allStartPos, drillInfo, levelComp) {\n var prevHdrPos = isNullOrUndefined(allStartPos) ? levelComp[0] : (allStartPos - ((this.colMeasurePos === (allStartPos - 1)) ? 2 : 1));\n var flagLevel = drillInfo[prevHdrPos] && drillInfo[prevHdrPos].level;\n var flagLevelString = this.getLevelsAsString(prevHdrPos - 1, drillInfo);\n var groupColl = {};\n var maxCnt = 1;\n var enterFlag = false;\n for (var _i = 0, _a = this.totalCollection; _i < _a.length; _i++) {\n var coll = _a[_i];\n if (enterFlag || (coll.allCount <= allCount &&\n ((flagLevel > -1 && coll.drillInfo[prevHdrPos]) ? ((coll.drillInfo[prevHdrPos].level >= flagLevel) &&\n (this.getLevelsAsString(prevHdrPos - 1, coll.drillInfo)) === flagLevelString) : true))) {\n var measureName = this.tupColumnInfo[coll.ordinal].measure ? this.tupColumnInfo[coll.ordinal].measure.querySelector('UName').textContent : 'measure';\n if (groupColl[measureName]) {\n groupColl[measureName].coll.push(coll);\n groupColl[measureName].count++;\n maxCnt = maxCnt < groupColl[measureName].count ? groupColl[measureName].count : maxCnt;\n }\n else {\n groupColl[measureName] = { coll: [coll], count: 1 };\n }\n enterFlag = false;\n }\n }\n var keys = Object.keys(groupColl);\n var collLength = maxCnt - 1;\n while (collLength > -1) {\n for (var _b = 0, keys_2 = keys; _b < keys_2.length; _b++) {\n var key = keys_2[_b];\n var coll1 = groupColl[key].coll[collLength];\n if (coll1) {\n var isGrandTotal = this.tupColumnInfo[coll1.ordinal].measurePosition === 0 ?\n this.tupColumnInfo[coll1.ordinal].allStartPos === 1 : this.tupColumnInfo[coll1.ordinal].allStartPos === 0;\n if (isGrandTotal ? (this.dataSourceSettings.showGrandTotals && this.dataSourceSettings.showColumnGrandTotals) : true) {\n this.frameCommonColumnLoop(coll1.members, coll1.ordinal, position, maxLevel, minLevel, allType);\n if (this.tupColumnInfo[coll1.ordinal].showTotals) {\n position++;\n }\n }\n this.totalCollection.pop();\n }\n }\n collLength--;\n }\n return position;\n };\n OlapEngine.prototype.getLevelsAsString = function (prevHdrPos, drillInfo) {\n var lvlCollection = [];\n for (var pos = 0; pos < prevHdrPos; pos++) {\n lvlCollection[pos] = drillInfo[pos].level;\n }\n return lvlCollection.length > 0 ? lvlCollection.toString() : '';\n };\n OlapEngine.prototype.frameCommonColumnLoop = function (members, tupPos, position, maxLevel, minLevel, allType) {\n var _a;\n var drillMemberPosition = -1;\n if (this.tupColumnInfo[tupPos].showTotals) {\n var memberPos = 0;\n var memberDepth = 0;\n while (memberPos < members.length) {\n memberDepth += (allType[memberPos] > 0 && this.getMeasurePosition(this.tupColumnInfo[tupPos].uNameCollection, this.tupColumnInfo[tupPos].measurePosition) !== memberPos) ? /* eslint-disable-line */\n maxLevel[memberPos] :\n (maxLevel[memberPos] + (1 - minLevel[memberPos]));\n if (this.tupColumnInfo[tupPos].drillInfo[memberPos].isDrilled && this.tupColumnInfo[tupPos].showTotals) {\n this.tupColumnInfo[tupPos].showTotals = !this.showColumnSubTotals ? false :\n this.hideColumnTotalsObject[this.tupColumnInfo[tupPos].drillInfo[memberPos].hierarchy] === undefined;\n memberDepth -= maxLevel[memberPos] -\n this.tupColumnInfo[tupPos].levelCollection[memberPos];\n drillMemberPosition = this.tupColumnInfo[tupPos].showTotals ? -1 : (memberDepth - 1);\n }\n memberPos++;\n }\n }\n var attrDrill = this.checkAttributeDrill(this.tupColumnInfo[tupPos].drillInfo, 'columns');\n if (this.tupColumnInfo[tupPos].showTotals || attrDrill) {\n var memPos = 0;\n var spanMemPos = 0;\n var colMembers = {};\n while (memPos < members.length) {\n var member = members[memPos];\n var memberType = Number(member.querySelector('MEMBER_TYPE').textContent) > 2 ? '3' :\n member.querySelector('MEMBER_TYPE').textContent;\n var memDup = 0;\n for (var rowDepthPos = memberType !== '2' ? (allType[memPos] ? 1 : minLevel[memPos]) : 1; rowDepthPos <= (memberType === '3' ? 1 : maxLevel[memPos]); rowDepthPos++) {\n var isDrilled = false;\n if (!this.pivotValues[spanMemPos]) {\n this.pivotValues[spanMemPos] = [];\n }\n if (Number(members[memPos].querySelector('LNum').textContent) > rowDepthPos && memberType !== '2') {\n if (!this.parentObjCollection[memPos][rowDepthPos]) {\n this.getDrilledParent(members[memPos], rowDepthPos, this.parentObjCollection[memPos]);\n }\n if (this.parentObjCollection[memPos][rowDepthPos]) {\n member = this.parentObjCollection[memPos][rowDepthPos];\n }\n isDrilled = true;\n }\n else {\n member = members[memPos];\n memDup++;\n }\n if (memberType !== '2') {\n colMembers[member.querySelector('UName').textContent] = member.querySelector('Caption').textContent;\n }\n /* eslint-disable */\n var levelName = '';\n var levelNameKeys = Object.keys(colMembers);\n for (var i = 0; i < levelNameKeys.length; i++) {\n var j = levelNameKeys[i];\n if (i === 0) {\n levelName = colMembers[j];\n }\n else {\n levelName = levelName + '.' + colMembers[j];\n }\n }\n var isNamedSet = this.namedSetsPosition['column'][memPos] ? true : false;\n var uName = this.getUniqueName(member.querySelector('UName').textContent);\n var depth = this.getDepth(this.tupColumnInfo[tupPos], uName, Number(memberType));\n if (!(this.isPaging && this.pivotValues[spanMemPos - 1] && this.pivotValues[spanMemPos - 1][position] && this.fieldList[this.pivotValues[spanMemPos - 1][position].hierarchy] && this.fieldList[this.pivotValues[spanMemPos - 1][position].hierarchy].isHierarchy &&\n this.pivotValues[spanMemPos - 1][position].hasChild && !this.pivotValues[spanMemPos - 1][position].isDrilled && !this.columns[memPos].isNamedSet && this.fieldList[member.getAttribute('Hierarchy')] && (this.fieldList[member.getAttribute('Hierarchy')].isHierarchy || this.fieldList[member.getAttribute('Hierarchy')].hasAllMember) &&\n this.pivotValues[spanMemPos - 1][position].depth < depth)) {\n this.pivotValues[spanMemPos][position] = {\n axis: 'column',\n actualText: uName,\n colIndex: position,\n formattedText: (memberType === '3' && this.dataFields[uName] &&\n this.dataFields[uName].caption) ? this.dataFields[uName].caption :\n member.querySelector('Caption').textContent,\n hasChild: (this.fieldList[member.getAttribute('Hierarchy')] && this.fieldList[member.getAttribute('Hierarchy')].isHierarchy && memPos < this.columns.length - 1 && !this.columns[memPos + 1].isNamedSet && this.columns[memPos + 1].name.indexOf('[Measures]') < 0 && this.fieldList[this.columns[memPos + 1].name] && this.fieldList[this.columns[memPos + 1].name].hasAllMember) ? true : Number(member.querySelector('CHILDREN_CARDINALITY').textContent) > 0 ? true : false,\n level: memDup > 1 ? -1 : (Number(member.querySelector('LNum').textContent) - ((allType[memPos] && memberType !== '3') ? 1 : 0)),\n rowIndex: spanMemPos,\n ordinal: tupPos,\n memberType: Number(memberType),\n depth: depth,\n isDrilled: (this.fieldList[member.getAttribute('Hierarchy')] && this.fieldList[member.getAttribute('Hierarchy')].isHierarchy && !this.isAttributeDrill(member.getAttribute('Hierarchy'), this.tupColumnInfo[tupPos].drillInfo, 'columns')) ? true : (isDrilled || this.tupColumnInfo[tupPos].drillInfo[memPos].isDrilled),\n parentUniqueName: member.querySelector('PARENT_UNIQUE_NAME') ? member.querySelector('PARENT_UNIQUE_NAME').textContent : undefined,\n levelUniqueName: member.querySelector('LName').textContent,\n hierarchy: member.getAttribute('Hierarchy'),\n isNamedSet: isNamedSet,\n valueSort: (_a = { levelName: levelName }, _a[levelName] = 1, _a.axis = member.getAttribute('Hierarchy'), _a)\n /* eslint-enable */\n };\n if (!this.headerContent[spanMemPos]) {\n this.headerContent[spanMemPos] = {};\n }\n this.headerContent[spanMemPos][position] = this.pivotValues[spanMemPos][position];\n spanMemPos++;\n }\n else {\n this.isColDrill = true;\n break;\n }\n }\n memPos++;\n }\n }\n else {\n if (drillMemberPosition > -1) {\n this.pivotValues[drillMemberPosition][position - 1].ordinal = tupPos;\n }\n else if (this.tupColumnInfo[tupPos].allCount > 0) {\n var memberPos = 0;\n var memberDepth = 0;\n while (memberPos < this.tupColumnInfo[tupPos].allStartPos) {\n memberDepth += (allType[memberPos] > 0 && this.getMeasurePosition(this.tupColumnInfo[tupPos].uNameCollection, this.tupColumnInfo[tupPos].measurePosition) !== memberPos) ? /* eslint-disable-line */\n maxLevel[memberPos] :\n (maxLevel[memberPos] + (1 - minLevel[memberPos]));\n memberPos++;\n }\n if (this.tupColumnInfo[tupPos].allStartPos === (this.tupColumnInfo[tupPos].measurePosition + 1)) {\n memberDepth -= maxLevel[this.tupColumnInfo[tupPos].allStartPos - 2] -\n this.tupColumnInfo[tupPos].levelCollection[this.tupColumnInfo[tupPos].allStartPos - 2] + 1;\n }\n else {\n memberDepth -= maxLevel[this.tupColumnInfo[tupPos].allStartPos - 1] -\n this.tupColumnInfo[tupPos].levelCollection[this.tupColumnInfo[tupPos].allStartPos - 1];\n }\n this.pivotValues[memberDepth - 1][position - 1].ordinal = tupPos;\n }\n }\n };\n OlapEngine.prototype.isAttributeDrill = function (hierarchy, drillInfo, axis) {\n var isDrill = false;\n var isAdjacent = this.isAdjacentToMeasure(hierarchy, axis);\n if (!isAdjacent) {\n for (var i = 0; i < this.drilledMembers.length; i++) {\n if (this.drilledMembers[i].name === hierarchy) {\n for (var j = 0; j < this.drilledMembers[i].items.length; j++) {\n var drillItems = this.drilledMembers[i].items[j].split(this.drilledMembers[i].delimiter);\n var levelName = '';\n for (var k = 0; k < drillItems.length; k++) {\n if (drillInfo[k] && drillInfo[k].uName) {\n levelName = levelName + (levelName === '' ? '' : this.drilledMembers[i].delimiter) + drillInfo[k].uName;\n }\n }\n if (levelName === this.drilledMembers[i].items[j]) {\n isDrill = true;\n break;\n }\n }\n }\n }\n }\n return isDrill;\n };\n OlapEngine.prototype.isAdjacentToMeasure = function (hierarchy, axis) {\n var isAdjacent = false;\n var fields = axis === 'rows' ? this.rows : this.columns;\n for (var i = 0; i < fields.length; i++) {\n if (fields[i].name === hierarchy && fields[i + 1] && (fields[i + 1].name === '[Measures]' || fields[i + 1].isNamedSet || (this.fieldList[fields[i + 1].name] && !this.fieldList[fields[i + 1].name].hasAllMember))) {\n isAdjacent = true;\n break;\n }\n }\n return isAdjacent;\n };\n OlapEngine.prototype.getDrilledParent = function (childMember, parentLevel, savedCollection) {\n var childlevel = Number(childMember.querySelector('LNum').textContent);\n var currentChild = childMember;\n for (var lvl = childlevel - 1; lvl >= parentLevel; lvl--) {\n var currentParent = this.drilledSets[currentChild.querySelector('PARENT_UNIQUE_NAME').textContent];\n if (currentParent) {\n savedCollection[lvl] = currentParent;\n currentChild = currentParent;\n }\n else {\n break;\n }\n }\n };\n OlapEngine.prototype.performRowSorting = function () {\n var _a;\n if (this.enableSort && this.tupRowInfo.length > 0) {\n var rowCount = this.pivotValues.length;\n var lvlGrouping = {};\n var measureObjects = {};\n var gSumGrouping = [];\n var gSumFlag = false;\n var withoutAllLastPos = this.tupRowInfo[0].typeCollection.lastIndexOf('1');\n for (var rPos = this.colDepth; rPos < rowCount; rPos++) {\n var currentCell = this.pivotValues[rPos][0];\n var currentTuple = this.tupRowInfo[currentCell.ordinal];\n var uniqueName = currentTuple ? (currentTuple.measurePosition === 0 && currentCell.memberType === 3 ?\n currentTuple.measureName : currentTuple.uNameCollection) : '';\n if (uniqueName !== '') {\n if (withoutAllLastPos > -1) {\n uniqueName = this.frameUniqueName(uniqueName, currentCell, currentTuple);\n }\n var level = uniqueName.split(/~~|::\\[/).length;\n if (currentCell.memberType === 3 && this.tupRowInfo[0].measurePosition > 0) {\n var parentUName = this.getParentUname(uniqueName, currentCell, true, true);\n if (measureObjects[parentUName]) {\n measureObjects[parentUName].push(currentCell);\n }\n else {\n measureObjects[parentUName] = [currentCell];\n }\n }\n else if (lvlGrouping[level]) {\n lvlGrouping[level][uniqueName] = [currentCell];\n }\n else {\n lvlGrouping[level] = (_a = {}, _a[uniqueName] = [currentCell], _a);\n }\n }\n if (gSumFlag) {\n gSumGrouping.push(currentCell);\n }\n if (currentCell.type === 'grand sum') {\n gSumFlag = true;\n }\n }\n var isMeasureAvail = Object.keys(measureObjects).length > 0 && this.tupRowInfo[0].measurePosition > 0;\n var levels = Object.keys(lvlGrouping).map(function (item) {\n return Number(item);\n }).sort(function (a, b) { return (a > b) ? 1 : ((b > a) ? -1 : 0); }); /* eslint-disable-line */\n var sortLvlGrouping = {};\n for (var lPos = levels.length - 1; lPos >= 0; lPos--) {\n var parentGrouping = {};\n var objCollection = lvlGrouping[levels[lPos]];\n var objKeys = Object.keys(objCollection);\n for (var oPos = 0; oPos < objKeys.length; oPos++) {\n var parentUName = lPos === 0 ? 'parent' :\n this.getParentUname(objKeys[oPos], objCollection[objKeys[oPos]][0], isMeasureAvail, false);\n if (parentGrouping[parentUName]) {\n parentGrouping[parentUName].push(objCollection[objKeys[oPos]][0]);\n }\n else {\n parentGrouping[parentUName] = [objCollection[objKeys[oPos]]][0];\n }\n }\n var pKeys = Object.keys(parentGrouping);\n for (var kPos = 0; kPos < pKeys.length; kPos++) {\n parentGrouping[pKeys[kPos]] = this.sortRowHeaders(parentGrouping[pKeys[kPos]]);\n }\n if (sortLvlGrouping[levels[lPos + 1]]) {\n for (var kPos = 0; kPos < pKeys.length; kPos++) {\n var groupSets = [];\n var axisSets = parentGrouping[pKeys[kPos]];\n for (var aPos = 0; aPos < axisSets.length; aPos++) {\n var tupInfo = this.tupRowInfo[axisSets[aPos].ordinal];\n var uName = (tupInfo.measurePosition === 0 && axisSets[aPos].memberType === 3) ?\n tupInfo.measureName : tupInfo.uNameCollection;\n groupSets.push(axisSets[aPos]);\n if (withoutAllLastPos > -1) {\n uName = this.frameUniqueName(uName, axisSets[aPos], tupInfo);\n }\n var isMembersIncluded = false;\n if (isMeasureAvail) {\n var parentUName = this.getParentUname(uName, axisSets[aPos], isMeasureAvail, true);\n if (measureObjects[parentUName]) {\n measureObjects[parentUName] = this.sortRowHeaders(measureObjects[parentUName]);\n var isLastMeasure = uName.lastIndexOf('::[') === uName.indexOf('::[Measures]');\n var isFullLength = uName.split('::[').length - 1 === tupInfo.measurePosition;\n var isLastNotDrilledMember = !tupInfo.drillInfo[tupInfo.measurePosition - 1].isDrilled;\n var isActualLastMember = tupInfo.members.length > (tupInfo.measurePosition + 1);\n if (isLastMeasure && isFullLength && isLastNotDrilledMember && isActualLastMember) {\n isMembersIncluded = true;\n for (var mPos = 0; mPos < measureObjects[parentUName].length; mPos++) {\n groupSets.push(measureObjects[parentUName][mPos]);\n var matchParent = (uName.substring(0, uName.indexOf('::[Measures]')) + '::' + measureObjects[parentUName][mPos].actualText);\n if (sortLvlGrouping[levels[lPos + 1]][matchParent]) {\n groupSets = groupSets.concat(sortLvlGrouping[levels[lPos + 1]][matchParent]);\n }\n }\n }\n else {\n groupSets = groupSets.concat(measureObjects[parentUName]);\n }\n }\n }\n if (!isMembersIncluded &&\n sortLvlGrouping[levels[lPos + 1]][uName]) {\n groupSets = groupSets.concat(sortLvlGrouping[levels[lPos + 1]][uName]);\n }\n }\n parentGrouping[pKeys[kPos]] = groupSets;\n }\n }\n else if (isMeasureAvail) {\n for (var kPos = 0; kPos < pKeys.length; kPos++) {\n var axisSets = parentGrouping[pKeys[kPos]];\n var groupSets = [];\n for (var aPos = 0; aPos < axisSets.length; aPos++) {\n groupSets.push(axisSets[aPos]);\n var uName = this.tupRowInfo[axisSets[aPos].ordinal].uNameCollection;\n if (withoutAllLastPos > -1) {\n uName = this.frameUniqueName(uName, axisSets[aPos], this.tupRowInfo[axisSets[aPos].ordinal]);\n }\n var parentUName = this.getParentUname(uName, axisSets[aPos], true, true);\n if (measureObjects[parentUName]) {\n measureObjects[parentUName] = this.sortRowHeaders(measureObjects[parentUName]);\n groupSets = groupSets.concat(measureObjects[parentUName]);\n }\n }\n parentGrouping[pKeys[kPos]] = groupSets;\n }\n }\n sortLvlGrouping[levels[lPos]] = parentGrouping;\n }\n var newPos = 0;\n var totPos = 0;\n gSumFlag = false;\n gSumGrouping = this.sortRowHeaders(gSumGrouping);\n for (var rPos = this.colDepth; rPos < rowCount; rPos++) {\n /* eslint-disable @typescript-eslint/dot-notation */\n var cell = gSumFlag ? gSumGrouping : sortLvlGrouping[levels[0]]['parent'];\n /* eslint-enable @typescript-eslint/dot-notation */\n var currPos = gSumFlag ? (newPos - totPos) : newPos;\n if (cell[currPos]) {\n this.pivotValues[rPos] = [cell[currPos]];\n this.pivotValues[rPos][0].rowIndex = rPos;\n this.valueContent[newPos][0] = this.pivotValues[rPos][0];\n }\n newPos++;\n if (this.pivotValues[rPos][0].type === 'grand sum') {\n gSumFlag = true;\n totPos = newPos;\n }\n }\n }\n };\n /* eslint-disable */\n OlapEngine.prototype.performColumnSorting = function () {\n if (this.enableSort) {\n for (var i = 0; i < this.dataSourceSettings.columns.length; i++) {\n var temporary = [];\n var index = 0;\n var grandTotal = [];\n for (var j = 0; j < this.pivotValues.length; j++) {\n var header = this.pivotValues[j];\n var key = void 0;\n var keys = void 0;\n var arrange = {};\n var value = 1;\n grandTotal[index] = [];\n temporary[index] = [];\n var k = 1;\n for (k = k; k < header.length; k++) {\n if (!header[k].isNamedSet) {\n if (header[k].memberType != 2 && header[k].hierarchy\n != '[Measures]' && header[k].level != -1) {\n if (isNullOrUndefined(arrange[header[k].formattedText]) || isNullOrUndefined(this.pivotValues[j - 1])) {\n arrange[header[k].formattedText] = arrange[header[k].formattedText] ? arrange[header[k].formattedText] : [];\n arrange[header[k].formattedText][header[k].colIndex] = header[k];\n }\n else if (arrange[header[k].formattedText] && this.pivotValues[j - 1]) {\n var prevRowCell = this.pivotValues[j - 1][header[k].colIndex];\n var prevColValue = Number(Object.keys(arrange[header[k].formattedText])[0]);\n var prevColIndex = ((arrange[header[k].formattedText])[prevColValue]).colIndex;\n var prevColRowCell = this.pivotValues[j - 1][prevColIndex];\n if (prevRowCell.formattedText !== prevColRowCell.formattedText) {\n var key_1 = Object.keys(arrange);\n key_1 = this.sortColumnHeaders(key_1, this.sortObject[header[k - 1].levelUniqueName] ||\n this.sortObject[header[k].hierarchy]);\n isNullOrUndefined(temporary[index]) ? temporary[index] = [] : temporary[index];\n for (var keyPos = 0; keyPos < key_1.length; keyPos++) {\n var length_1 = Object.keys(arrange[key_1[keyPos]]).length;\n for (var cellPos = 0; cellPos < length_1; cellPos++) {\n value = temporary[index].length === 0 ? 1 : 0;\n temporary[index][temporary[index].length + value] =\n arrange[key_1[keyPos]][Number(Object.keys(arrange[key_1[keyPos]])[cellPos])];\n }\n }\n arrange = {};\n arrange[header[k].formattedText] = [];\n arrange[header[k].formattedText][header[k].colIndex] = header[k];\n }\n else {\n arrange[header[k].formattedText][header[k].colIndex] = header[k];\n }\n }\n }\n else if (Object.keys(arrange).length > 0) {\n grandTotal[index][grandTotal[index].length + value] = header[k];\n key = Object.keys(arrange);\n key = this.sortColumnHeaders(key, this.sortObject[header[k - 1].levelUniqueName] ||\n this.sortObject[header[k].hierarchy]);\n isNullOrUndefined(temporary[index]) ? temporary[index] = [] : temporary[index];\n for (var l = 0; l < key.length; l++) {\n var length_2 = Object.keys(arrange[key[l]]).length;\n for (var q = 0; q < length_2; q++) {\n value = temporary[index].length === 0 ? 1 : 0;\n temporary[index][temporary[index].length + value] =\n arrange[key[l]][Number(Object.keys(arrange[key[l]])[q])];\n }\n }\n }\n else if ((header[k].level === -1 || header[k].level === 0) &&\n Object.keys(arrange).length >= 0 && header[k].hierarchy != '[Measures]') {\n grandTotal[index][grandTotal[index].length + value] = header[k];\n }\n if (header[k].level != -1 && Object.keys(arrange).length === 1 &&\n header[k].hierarchy != '[Measures]' && !isNullOrUndefined(header[k + 1]) &&\n header[k + 1].level === -1) {\n var height = Object.keys(arrange[header[k].formattedText]).length;\n var weight = Object.keys(arrange[header[k].formattedText]);\n if (height > 1) {\n for (var hgt = 0; hgt < height; hgt++) {\n value = grandTotal[index].length === 0 ? 1 : 0;\n grandTotal[index][grandTotal[index].length + value] =\n arrange[header[k].formattedText][Number(weight[hgt])];\n }\n }\n else {\n grandTotal[index][grandTotal[index].length + value] = header[k];\n }\n }\n if (Object.keys(grandTotal[index]).length > 0) {\n value = temporary[index].length === 0 ? 1 : 0;\n var height1 = grandTotal[index].length;\n if (height1 > 2) {\n for (var hgt1 = 1; hgt1 < height1; hgt1++) {\n value = temporary[index].length === 0 ? 1 : 0;\n temporary[index][temporary[index].length + value] =\n grandTotal[index][hgt1];\n }\n }\n else {\n temporary[index][temporary[index].length + value] =\n grandTotal[index][1] || grandTotal[index][0];\n }\n arrange = {};\n grandTotal[index] = [];\n }\n }\n }\n if (Object.keys(arrange).length > 0) {\n grandTotal[index][grandTotal[index].length + value] = header[k];\n keys = Object.keys(arrange);\n var order = this.sortObject[header[k - 1].levelUniqueName] || this.sortObject[header[k - 1].hierarchy];\n key = this.sortColumnHeaders(keys, order);\n isNullOrUndefined(temporary[index]) ? temporary[index] = [] : temporary[index];\n for (var len = 0; len < keys.length; len++) {\n var leng = Object.keys(arrange[keys[len]]).length;\n for (var q = 0; q < leng; q++) {\n value = temporary[index].length === 0 ? 1 : 0;\n temporary[index][temporary[index].length + value] =\n arrange[key[len]][Number(Object.keys(arrange[keys[len]])[q])];\n }\n }\n }\n for (var m = 1; m < temporary[index].length; m++) {\n this.pivotValues[index][m] = temporary[index][m];\n }\n for (var n = j; n < this.pivotValues.length; n++) {\n var pElement = extend({}, this.pivotValues[n + 1], null, true);\n var cElement = extend({}, this.pivotValues[n], null, true);\n if (Object.keys(pElement).length === Object.keys(cElement).length && Object.keys(pElement).length > 2) {\n for (var o = 1; o < this.pivotValues[j].length; o++) {\n if (Object.keys(pElement).length > 0 && cElement[o].colIndex\n != pElement[o].colIndex) {\n this.pivotValues[n + 1][o] = pElement[cElement[o].colIndex];\n }\n }\n break;\n }\n }\n index++;\n arrange = {};\n }\n for (var i_1 = 0; i_1 < this.pivotValues.length; i_1++) {\n var header = this.pivotValues[i_1];\n for (var j = 1; j < header.length; j++) {\n header[j].colIndex = j;\n }\n }\n }\n }\n };\n OlapEngine.prototype.frameUniqueName = function (uniqueName, currentCell, currentTuple) {\n var hasLastMeasure = uniqueName.indexOf(currentCell.actualText.toString() + '::[Measures]') > -1;\n uniqueName = uniqueName.substring(0, uniqueName.indexOf(currentCell.actualText.toString())) +\n currentCell.actualText.toString();\n var measureAvail = uniqueName.split('::[').length <= this.getMeasurePosition(uniqueName, currentTuple.measurePosition);\n uniqueName = uniqueName + ((hasLastMeasure || measureAvail) ? ('::' + currentTuple.measureName) : '');\n return uniqueName;\n };\n OlapEngine.prototype.getMeasurePosition = function (uniqueName, measurePosition) {\n var position = measurePosition;\n var collection = uniqueName.split('::[');\n for (var i = 0; i < collection.length; i++) {\n if (collection[i] && collection[i].indexOf('Measures') > -1) {\n position = i;\n break;\n }\n }\n return position;\n };\n OlapEngine.prototype.sortRowHeaders = function (headers) {\n if (headers.length > 0 && headers[0].memberType !== 3 && !headers[0].isNamedSet) {\n var order = (this.sortObject[headers[0].hierarchy] || this.sortObject[headers[0].levelUniqueName]);\n if (order === 'Ascending' || order === undefined) {\n headers === headers.sort(function (a, b) { return (a.formattedText > b.formattedText) ? 1 :\n ((b.formattedText > a.formattedText) ? -1 : 0); });\n }\n else if (order === 'Descending') {\n headers === headers.sort(function (a, b) { return (a.formattedText < b.formattedText) ? 1 :\n ((b.formattedText < a.formattedText) ? -1 : 0); });\n }\n else {\n headers;\n }\n }\n return headers;\n };\n OlapEngine.prototype.sortColumnHeaders = function (keys, order) {\n if (order === 'Ascending' || order === undefined) {\n keys.sort(function (a, b) { return (a > b) ? 1 : ((b > a) ? -1 : 0); });\n }\n else if (order === 'Descending') {\n keys.sort(function (a, b) { return (a < b) ? 1 : ((b < a) ? -1 : 0); });\n }\n return keys;\n };\n /* eslint-enable */\n OlapEngine.prototype.frameSortObject = function () {\n if (this.enableSort) {\n for (var fPos = 0; fPos < this.sortSettings.length; fPos++) {\n this.sortObject[this.sortSettings[fPos].name] = this.sortSettings[fPos].order;\n }\n }\n };\n OlapEngine.prototype.getParentUname = function (uniqueNameColl, cell, isMeasureAvail, isLastMeasure) {\n var parentString = '';\n if (isMeasureAvail && !isLastMeasure) {\n var tuple = this.tupRowInfo[cell.ordinal];\n var sepPos = [];\n var sepObjects = {};\n for (var i = 0; i < uniqueNameColl.length; i++) {\n if (uniqueNameColl[i] === '~' || uniqueNameColl[i] === ':') {\n sepPos.push(i);\n sepObjects[i] = uniqueNameColl[i] + uniqueNameColl[i];\n i++;\n }\n }\n if (this.getMeasurePosition(uniqueNameColl, tuple.measurePosition) >= (uniqueNameColl.split('::[').length - 1)) {\n if (sepPos[sepPos.length - 2] > -1) {\n parentString = uniqueNameColl.substring(0, sepPos[sepPos.length - 2]) + sepObjects[sepPos[sepPos.length - 1]] +\n tuple.measureName;\n }\n else {\n parentString = 'parent';\n }\n }\n else {\n var lastPosition = uniqueNameColl.lastIndexOf('~~') > uniqueNameColl.lastIndexOf('::[') ?\n uniqueNameColl.lastIndexOf('~~') : uniqueNameColl.lastIndexOf('::[');\n parentString = lastPosition > -1 ? uniqueNameColl.substring(0, lastPosition) : 'parent';\n }\n }\n else {\n var lastPosition = uniqueNameColl.lastIndexOf('~~') > uniqueNameColl.lastIndexOf('::[') ?\n uniqueNameColl.lastIndexOf('~~') : uniqueNameColl.lastIndexOf('::[');\n parentString = lastPosition > -1 ? uniqueNameColl.substring(0, lastPosition) : 'parent';\n }\n return parentString;\n };\n OlapEngine.prototype.performColumnSpanning = function () {\n var spanCollection = {};\n var rowPos = this.rowStartPos - 1;\n var colMeasureCount = Object.keys(this.colMeasures).length;\n while (rowPos > -1) {\n spanCollection[rowPos] = {};\n var colPos = this.pivotValues[rowPos].length - 1;\n while (colPos > 0) {\n spanCollection[rowPos][colPos] = 1;\n var nextColCell = this.pivotValues[rowPos][colPos + 1];\n var nextRowCell = (this.pivotValues[rowPos + 1] && this.rowStartPos - rowPos > 1) ? this.pivotValues[rowPos + 1][colPos] : undefined; /* eslint-disable-line */\n var currCell = this.pivotValues[rowPos][colPos];\n var colflag = false;\n var rowflag = false;\n var tupColInfo = this.tupColumnInfo[currCell.ordinal];\n var isSubTot = tupColInfo.allStartPos > (tupColInfo.typeCollection[0] === '3' ? 1 : 0);\n var attrDrill = this.checkAttributeDrill(tupColInfo.drillInfo, 'columns');\n if (nextRowCell && nextColCell && ((currCell.memberType === 2 || currCell.level === -1) ?\n (nextColCell.actualText === currCell.actualText) :\n ((currCell.memberType === 3 && currCell.actualText === nextColCell.actualText) ||\n nextColCell.valueSort.levelName === currCell.valueSort.levelName))) {\n if (currCell.memberType === 2) {\n if (isSubTot ? nextColCell.type === 'sum' : true) {\n currCell.colSpan = (nextColCell.colSpan + 1) >\n (tupColInfo.measurePosition > rowPos ? colMeasureCount : 0) ? 1 : (nextColCell.colSpan + 1);\n }\n else {\n currCell.colSpan = 1;\n }\n }\n else {\n currCell.colSpan = nextColCell.colSpan + 1;\n currCell.ordinal = nextColCell.ordinal;\n }\n colflag = true;\n }\n if (currCell.memberType === 2) {\n if (isSubTot) {\n if (!attrDrill) {\n currCell.type = 'sum';\n }\n //currCell.formattedText = (this.pivotValues[tupColInfo.allStartPos - 1] as IAxisSet[])[colPos].formattedText + ' Total';\n currCell.formattedText = 'Total';\n currCell.valueSort[currCell.valueSort.levelName.toString()] = 1;\n }\n else {\n var levelName = 'Grand Total';\n if (nextRowCell && colMeasureCount > 0) {\n levelName = nextRowCell.memberType === 3 ? ('Grand Total.' + nextRowCell.formattedText) :\n nextRowCell.valueSort.levelName;\n }\n currCell.type = 'grand sum';\n currCell.formattedText = 'Grand Total';\n currCell.valueSort.levelName = levelName;\n currCell.valueSort[levelName.toString()] = 1;\n }\n currCell.hasChild = false;\n }\n else if (currCell.level === -1) {\n currCell.type = 'sum';\n //currCell.formattedText = currCell.formattedText + ' Total';\n currCell.formattedText = 'Total';\n currCell.hasChild = false;\n currCell.valueSort[currCell.valueSort.levelName.toString()] = 1;\n }\n if (nextRowCell) {\n if ((currCell.memberType === 2 && nextRowCell.memberType === 2) || nextRowCell.actualText === currCell.actualText) {\n spanCollection[rowPos][colPos] = spanCollection[rowPos + 1] ? (spanCollection[rowPos + 1][colPos] + 1) : 1;\n if (rowPos === 0 || (currCell.memberType === 1 && currCell.level > -1 && nextRowCell.memberType === 1 && nextRowCell.level === -1)) { /* eslint-disable-line */\n currCell.rowSpan = (currCell.isDrilled && ((this.fieldList[currCell.hierarchy] && this.fieldList[currCell.hierarchy].isHierarchy) ? currCell.hasChild : true)) ? 1 : (spanCollection[rowPos + 1][colPos] + 1); /* eslint-disable-line */\n nextRowCell.rowSpan = (nextRowCell.isDrilled && ((this.fieldList[nextRowCell.hierarchy] && this.fieldList[nextRowCell.hierarchy].isHierarchy) ? nextRowCell.hasChild : true) && nextRowCell.level === -1) ? spanCollection[rowPos + 1][colPos] : nextRowCell.rowSpan; /* eslint-disable-line */\n }\n else {\n if (currCell.memberType === 3) {\n currCell.rowSpan = 1;\n }\n else {\n currCell.rowSpan = -1;\n }\n }\n rowflag = true;\n }\n else if (currCell.isDrilled && ((this.fieldList[currCell.hierarchy] && this.fieldList[currCell.hierarchy].isHierarchy) ? currCell.hasChild : true) && currCell.level === -1 && nextRowCell.memberType === 2) { /* eslint-disable-line */\n spanCollection[rowPos][colPos] = spanCollection[rowPos + 1] ? (spanCollection[rowPos + 1][colPos] + 1) : 1;\n currCell.rowSpan = -1;\n rowflag = true;\n }\n else {\n /* eslint-disable */\n currCell.rowSpan = rowPos === 0 ? spanCollection[rowPos][colPos] : -1;\n nextRowCell.rowSpan = ((nextRowCell.level > -1 && !(nextRowCell.isDrilled && ((this.fieldList[nextRowCell.hierarchy] && this.fieldList[nextRowCell.hierarchy].isHierarchy) ? nextRowCell.hasChild : true))) || (currCell.memberType !== 2 && nextRowCell.memberType === 2)) ? spanCollection[rowPos + 1][colPos] : 1;\n /* eslint-enable */\n }\n }\n else {\n currCell.rowSpan = (currCell.level > -1 || this.rowStartPos === 1) ? spanCollection[rowPos][colPos] : -1;\n }\n if (!colflag) {\n currCell.colSpan = 1;\n }\n if (!rowflag) {\n spanCollection[rowPos][colPos] = 1;\n }\n colPos--;\n }\n rowPos--;\n }\n };\n OlapEngine.prototype.frameValues = function (tuples, colLength) {\n var rowStartPos = this.colDepth;\n var rowEndPos = this.pivotValues.length;\n var startRowOrdinal = 0;\n if (this.customArgs.action === 'down') {\n var keys = Object.keys(this.onDemandDrillEngine);\n rowStartPos = Number(keys[0]);\n rowEndPos = Number(keys[keys.length - 1]) + 1;\n startRowOrdinal = this.onDemandDrillEngine[rowStartPos][0].ordinal;\n }\n var valCollection = {};\n for (var colPos = 0; colPos < tuples.length; colPos++) {\n valCollection[Number(tuples[colPos].getAttribute('CellOrdinal'))] = tuples[colPos];\n }\n for (var rowPos = rowStartPos; rowPos < rowEndPos; rowPos++) {\n var columns = this.pivotValues[rowPos];\n var rowOrdinal = columns[0].ordinal;\n for (var colPos = 1; colPos < this.pivotValues[0].length; colPos++) {\n if (this.pivotValues[this.colDepth - 1][colPos]) {\n var colOrdinal = this.pivotValues[this.colDepth - 1][colPos].ordinal;\n var lastColCell = this.pivotValues[this.colDepth - 1][colPos];\n var measure = columns[0].memberType === 3 ? columns[0].actualText.toString() :\n ((this.tupColumnInfo[lastColCell.ordinal] && this.tupColumnInfo[lastColCell.ordinal].measure) ?\n this.tupColumnInfo[lastColCell.ordinal].measure.querySelector('UName').textContent :\n columns[0].actualText);\n if (columns[0].type === 'header') {\n columns[colPos] = {\n axis: 'value',\n actualText: this.getUniqueName(measure),\n formattedText: '',\n value: 0,\n colIndex: colPos,\n rowIndex: rowPos\n };\n }\n else {\n var valElement = void 0;\n var formattedText = void 0;\n var value = '0';\n var measureName = this.getUniqueName(measure);\n var showTotals = true;\n var attrDrill = (this.fieldList[columns[0].hierarchy] && this.fieldList[columns[0].hierarchy].isHierarchy && columns[0].isDrilled); /* eslint-disable-line */\n if (this.tupRowInfo[rowOrdinal]) {\n showTotals = this.tupRowInfo[rowOrdinal].showTotals;\n }\n else {\n showTotals = this.dataSourceSettings.showGrandTotals && this.dataSourceSettings.showRowGrandTotals;\n }\n valElement = valCollection[(rowOrdinal - startRowOrdinal) * colLength + colOrdinal];\n formattedText = (!showTotals && attrDrill) ? '' :\n ((!isNullOrUndefined(valElement) && !isNullOrUndefined(valElement.querySelector('FmtValue'))) ?\n valElement.querySelector('FmtValue').textContent : this.emptyCellTextContent);\n value = (!showTotals && attrDrill) ? '0' :\n ((!isNullOrUndefined(valElement) && !isNullOrUndefined(valElement.querySelector('Value'))) ?\n valElement.querySelector('Value').textContent : null);\n formattedText = showTotals && !isNullOrUndefined(value) ?\n this.getFormattedValue(Number(value), measureName, (formattedText !== '' ? formattedText : value)) :\n formattedText;\n var isSum = (this.tupColumnInfo[colOrdinal] ? (this.tupColumnInfo[colOrdinal].allCount > 0 ||\n this.tupColumnInfo[colOrdinal].drillStartPos > -1) : true) ||\n (this.tupRowInfo[rowOrdinal] ? (this.tupRowInfo[rowOrdinal].allCount > 0 ||\n this.tupRowInfo[rowOrdinal].drillStartPos > -1) : true);\n var isGrand = (this.tupRowInfo[rowOrdinal] ? (this.tupRowInfo[rowOrdinal].measurePosition === 0 ? this.tupRowInfo[rowOrdinal].allStartPos === 1 : this.tupRowInfo[rowOrdinal].allStartPos === 0) : false) || /* eslint-disable-line */\n (this.tupColumnInfo[colOrdinal] ? (this.tupColumnInfo[colOrdinal].measurePosition === 0 ? this.tupColumnInfo[colOrdinal].allStartPos === 1 : this.tupColumnInfo[colOrdinal].allStartPos === 0) : false); /* eslint-disable-line */\n columns[colPos] = {\n axis: 'value',\n actualText: measureName,\n formattedText: formattedText,\n colOrdinal: colOrdinal,\n rowOrdinal: rowOrdinal,\n columnHeaders: this.tupColumnInfo[colOrdinal] ? this.tupColumnInfo[colOrdinal].captionCollection : '',\n rowHeaders: this.tupRowInfo[rowOrdinal] ? this.tupRowInfo[rowOrdinal].captionCollection : '',\n value: !isNullOrUndefined(value) ? Number(value) : null,\n colIndex: colPos,\n rowIndex: rowPos,\n isSum: isSum,\n isGrandSum: isGrand\n };\n }\n this.valueContent[rowPos - this.rowStartPos][colPos] = columns[colPos];\n }\n }\n }\n };\n /* eslint-disable */\n /** hidden */\n OlapEngine.prototype.getFormattedValue = function (value, fieldName, formattedText) {\n var formattedValue = formattedText;\n if (this.formatFields[fieldName] && !isNullOrUndefined(value)) {\n var formatField = (this.formatFields[fieldName].properties ?\n this.formatFields[fieldName].properties : this.formatFields[fieldName]);\n var formatObj = extend({}, formatField, null, true);\n /* eslint-enable */\n delete formatObj.name;\n if (!formatObj.minimumSignificantDigits && formatObj.minimumSignificantDigits < 1) {\n delete formatObj.minimumSignificantDigits;\n }\n if (!formatObj.maximumSignificantDigits && formatObj.maximumSignificantDigits < 1) {\n delete formatObj.maximumSignificantDigits;\n }\n if (formatObj.type) {\n formattedValue = this.globalize.formatDate(new Date(value.toString()), formatObj);\n }\n else {\n delete formatObj.type;\n if ((formatObj.format) && !(this.formatRegex.test(formatObj.format))) {\n var pattern = formatObj.format.match(this.customRegex);\n var integerPart = pattern[6];\n formatObj.useGrouping = integerPart.indexOf(',') !== -1;\n }\n formattedValue = this.globalize.formatNumber(value, formatObj);\n }\n }\n return formattedValue;\n };\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////\n OlapEngine.prototype.getMeasureInfo = function () {\n var mAxis = 'column';\n var mIndex;\n var values = [];\n for (var _i = 0, _a = this.values; _i < _a.length; _i++) {\n var field = _a[_i];\n values[values.length] = (field.isCalculatedField ? this.fieldList[field.name].tag : field.name);\n }\n if (values.length > 1) {\n if (this.isMeasureAvail) {\n var isAvail = false;\n for (var i = 0, cnt = this.rows.length; i < cnt; i++) {\n if (this.rows[i].name.toLowerCase() === '[measures]') {\n mAxis = 'row';\n mIndex = i;\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n for (var i = 0, cnt = this.columns.length; i < cnt; i++) {\n if (this.columns[i].name.toLowerCase() === '[measures]') {\n mAxis = 'column';\n mIndex = i;\n isAvail = true;\n break;\n }\n }\n }\n }\n else {\n mAxis = this.valueAxis;\n mIndex = mAxis === 'row' ? this.rows.length - 1 : this.columns.length - 1;\n }\n return { measureAxis: mAxis, measureIndex: mIndex, valueInfo: values };\n }\n else {\n return { measureAxis: mAxis, measureIndex: -1, valueInfo: [] };\n }\n };\n /* eslint-disable */\n OlapEngine.prototype.frameMeasureOrder = function (measureInfo, axis, tuples, vTuples, cLen) {\n var orderedTuples = [];\n var orderedVTuples = [];\n var orderedIndex = [];\n var levels = {};\n var cLevels = [];\n var measureAxis = measureInfo.measureAxis;\n var measureIndex = measureInfo.measureIndex;\n var values = measureInfo.valueInfo;\n if (measureAxis === axis && values.length > 0) {\n var levelCollection = {};\n var uniqueLevels = [];\n for (var j = 0, lnt = tuples.length; j < lnt; j++) {\n var node = tuples[j];\n var members = [].slice.call(node.querySelectorAll('Member'));\n var level = '';\n var cLevel = '';\n var i = 0;\n while (i < members.length) {\n level = level + (level !== '' ? '~~' : '') + members[i].querySelector('UName').textContent;\n if (i === measureIndex && measureIndex === 0) {\n cLevel = level;\n }\n else if (i === (measureIndex - 1)) {\n cLevel = level;\n }\n i++;\n }\n if (levelCollection[cLevel]) {\n levelCollection[cLevel][levelCollection[cLevel].length] = level;\n }\n else {\n levelCollection[cLevel] = [level];\n uniqueLevels[uniqueLevels.length] = cLevel;\n }\n levels[level] = { index: j, node: node };\n cLevels[cLevels.length] = level;\n }\n if (cLevels.length > 0) {\n if (uniqueLevels.length > 0) {\n if (measureIndex === 0) {\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var name_1 = values_1[_i];\n for (var _a = 0, uniqueLevels_1 = uniqueLevels; _a < uniqueLevels_1.length; _a++) {\n var key = uniqueLevels_1[_a];\n if (key === name_1) {\n for (var _b = 0, _c = levelCollection[key]; _b < _c.length; _b++) {\n var level = _c[_b];\n orderedIndex[orderedIndex.length] = levels[level].index;\n orderedTuples[orderedTuples.length] = levels[level].node;\n }\n }\n }\n }\n }\n else {\n for (var _d = 0, uniqueLevels_2 = uniqueLevels; _d < uniqueLevels_2.length; _d++) {\n var key = uniqueLevels_2[_d];\n for (var _e = 0, values_2 = values; _e < values_2.length; _e++) {\n var name_2 = values_2[_e];\n for (var _f = 0, _g = levelCollection[key]; _f < _g.length; _f++) {\n var level = _g[_f];\n var levelInfo = level.split('~~');\n if (levelInfo[measureIndex] === name_2) {\n orderedIndex[orderedIndex.length] = levels[level].index;\n orderedTuples[orderedTuples.length] = levels[level].node;\n }\n }\n }\n }\n }\n }\n }\n if (vTuples.length > 0) {\n var valueIndex = [];\n var vOrdinalIndex = [];\n var len = 0;\n var cRow = 0;\n for (var j = 0, cnt = vTuples.length; j < cnt; j++) {\n if (len > (cLen - 1)) {\n cRow++;\n len = 0;\n if (!valueIndex[cRow]) {\n valueIndex[cRow] = [];\n }\n valueIndex[cRow][len] = j;\n len++;\n }\n else {\n if (!valueIndex[cRow]) {\n valueIndex[cRow] = [];\n }\n valueIndex[cRow][len] = j;\n len++;\n }\n vOrdinalIndex[vOrdinalIndex.length] = Number(vTuples[j].getAttribute('CellOrdinal'));\n }\n if (measureAxis === 'column') {\n if (valueIndex.length > 0 && valueIndex[0].length === orderedIndex.length) {\n for (var i = 0, cnt = orderedIndex.length; i < cnt; i++) {\n var j = 0;\n while (j < valueIndex.length) {\n var index = (j * cLen) + i;\n var ordinalValue = vOrdinalIndex[index].toString();\n var tuple = vTuples[Number(valueIndex[j][orderedIndex[i]])];\n tuple.setAttribute('CellOrdinal', ordinalValue.toString());\n orderedVTuples[index] = tuple;\n j++;\n }\n }\n }\n }\n else {\n if (valueIndex.length === orderedIndex.length) {\n for (var i = 0, cnt = orderedIndex.length; i < cnt; i++) {\n var j = 0;\n while (j < valueIndex[orderedIndex[i]].length) {\n var index = (i * cLen) + j;\n var ordinalValue = vOrdinalIndex[index].toString();\n var tuple = vTuples[Number(valueIndex[orderedIndex[i]][j])];\n tuple.setAttribute('CellOrdinal', ordinalValue.toString());\n orderedVTuples[orderedVTuples.length] = tuple;\n j++;\n }\n }\n }\n }\n }\n return { orderedHeaderTuples: orderedTuples, orderedValueTuples: orderedVTuples };\n }\n else {\n return { orderedHeaderTuples: tuples, orderedValueTuples: vTuples };\n }\n };\n /* eslint-disable */\n OlapEngine.prototype.getDrilledSets = function (uNameCollection, currentCell, fieldPos, axis) {\n var levels = [];\n var memberName = currentCell.actualText.toString();\n var tupCollection = axis === 'row' ? this.tupRowInfo : this.tupColumnInfo;\n var currTuple = tupCollection[currentCell.ordinal];\n var measurePos = tupCollection[0].typeCollection.indexOf('3');\n var allStartPos = measurePos === 0 ? 1 : 0;\n var tupPos = 0;\n var isWithoutAllMember = tupCollection[0].typeCollection[fieldPos] === '1';\n while (tupPos < tupCollection.length) {\n if (isNullOrUndefined(tupCollection[tupPos].allStartPos) || tupCollection[tupPos].allStartPos > allStartPos) {\n levels[levels.length] = tupCollection[tupPos].uNameCollection;\n }\n tupPos++;\n }\n var memberArray = uNameCollection.split('::[').map(function (item) {\n return item[0] === '[' ? item : ('[' + item);\n });\n var joinArray = [];\n for (var memPos = 0; memPos <= fieldPos; memPos++) {\n if (memberArray[memPos]) {\n if ((isWithoutAllMember || this.isPaging) && memPos === fieldPos) {\n var splitLevels = memberArray[memPos].split('~~');\n var drillLevel = splitLevels.indexOf(memberName);\n var cropLevels = [];\n for (var lPos = 0; lPos <= drillLevel; lPos++) {\n cropLevels.push(splitLevels[lPos]);\n }\n joinArray[joinArray.length] = cropLevels.length > 0 ? cropLevels.join('~~') : memberArray[memPos];\n }\n else {\n joinArray[joinArray.length] = memberArray[memPos];\n }\n }\n }\n uNameCollection = joinArray.join('::');\n var childSets = [];\n var memberObj = {};\n for (var _i = 0, levels_1 = levels; _i < levels_1.length; _i++) {\n var item = levels_1[_i];\n if (item.indexOf(uNameCollection) === 0) {\n childSets.push(item);\n if (this.isPaging) {\n var drillField = item.split('::[')[fieldPos];\n drillField = drillField[0] === '[' ? drillField : ('[' + drillField);\n var drillFieldSep = drillField.split('~~');\n for (var fPos = drillFieldSep.indexOf(memberName); fPos < drillFieldSep.length; fPos++) {\n memberObj[drillFieldSep[fPos]] = drillFieldSep[fPos];\n }\n }\n }\n }\n if (this.isPaging) {\n var fieldSep = currTuple.uNameCollection.split('::[').map(function (item) {\n return item[0] === '[' ? item : ('[' + item);\n });\n var cropArray = [];\n for (var fPos = 0; fPos < fieldSep.length; fPos++) {\n if (fPos !== fieldPos) {\n cropArray[fPos] = fieldSep[fPos];\n }\n }\n var drillFieldSep = Object.keys(memberObj);\n for (var fPos = 0; fPos < drillFieldSep.length; fPos++) {\n cropArray[fieldPos] = drillFieldSep[fPos];\n childSets.push(cropArray.join('::'));\n }\n }\n var drillSets = {};\n for (var _a = 0, childSets_1 = childSets; _a < childSets_1.length; _a++) {\n var level = childSets_1[_a];\n var fields = level.split('::[').map(function (item) {\n return item[0] === '[' ? item : ('[' + item);\n });\n var set = '';\n for (var pos = 0; pos <= fieldPos; pos++) {\n var field = fields[pos];\n if (field) {\n var members = field.split('~~');\n set = set + (set !== '' ? '~~' : '') + members[members.length - 1];\n }\n }\n drillSets[set] = set;\n }\n return drillSets;\n };\n OlapEngine.prototype.updateDrilledInfo = function (dataSourceSettings) {\n this.dataSourceSettings = dataSourceSettings;\n this.drilledMembers = dataSourceSettings.drilledMembers ? this.updateDrilledItems(dataSourceSettings.drilledMembers) : [];\n // MDXQuery.getCellSets(this.dataSourceSettings as IDataOptions, this);\n this.generateGridData(dataSourceSettings);\n };\n OlapEngine.prototype.updateCalcFields = function (dataSourceSettings, lastcalcInfo) {\n this.dataSourceSettings = dataSourceSettings;\n this.calculatedFieldSettings = dataSourceSettings.calculatedFieldSettings ? dataSourceSettings.calculatedFieldSettings : [];\n this.getAxisFields();\n this.updateFieldlist();\n this.loadCalculatedMemberElements(this.calculatedFieldSettings);\n if (this.dataFields[lastcalcInfo.name]) {\n this.generateGridData(dataSourceSettings);\n }\n else {\n MDXQuery.getCellSets(dataSourceSettings, this, true, undefined, true);\n }\n };\n OlapEngine.prototype.onSort = function (dataSourceSettings) {\n this.dataSourceSettings = dataSourceSettings;\n this.sortSettings = dataSourceSettings.sortSettings ? dataSourceSettings.sortSettings : [];\n this.getAxisFields();\n this.frameSortObject();\n this.updateFieldlist();\n if (this.xmlaCellSet.length > 0 && this.xmlDoc) {\n this.generateEngine(this.xmlDoc, this.request, this.customArgs);\n }\n else {\n this.generateGridData(dataSourceSettings);\n }\n };\n OlapEngine.prototype.updateFieldlist = function (isInit) {\n var i = 0;\n while (i < this.savedFieldListData.length) {\n var fieldName = this.savedFieldListData[i].id;\n var parentID = this.savedFieldListData[i].pid;\n // let aggregateType: string = this.getAggregateType(fieldName);\n // this.savedFieldListData[i].aggregateType = aggregateType;\n if (this.savedFieldList[fieldName]) {\n var sortOrder = (this.enableSort ? this.sortObject[fieldName] ? this.sortObject[fieldName] : 'Ascending' : 'None');\n this.savedFieldList[fieldName].isSelected = false;\n this.savedFieldList[fieldName].isExcelFilter = false;\n // this.savedFieldList[fieldName].aggregateType = aggregateType;\n this.savedFieldList[fieldName].sort = sortOrder;\n this.savedFieldList[fieldName].allowDragAndDrop = true;\n this.savedFieldList[fieldName].showFilterIcon = true;\n this.savedFieldList[fieldName].showSortIcon = true;\n this.savedFieldList[fieldName].showEditIcon = true;\n this.savedFieldList[fieldName].showRemoveIcon = true;\n this.savedFieldList[fieldName].showValueTypeIcon = true;\n this.savedFieldList[fieldName].showSubTotals = true;\n this.savedFieldListData[i].sort = sortOrder;\n this.savedFieldListData[i].allowDragAndDrop = true;\n this.savedFieldListData[i].showFilterIcon = true;\n this.savedFieldListData[i].showSortIcon = true;\n this.savedFieldListData[i].showEditIcon = true;\n this.savedFieldListData[i].showRemoveIcon = true;\n this.savedFieldListData[i].showValueTypeIcon = true;\n this.savedFieldListData[i].showSubTotals = true;\n if (isInit) {\n this.savedFieldList[fieldName].filter = [];\n this.savedFieldList[fieldName].actualFilter = [];\n }\n }\n if (this.dataFields[fieldName] && this.savedFieldList[fieldName] && this.selectedItems.indexOf(fieldName) > -1) {\n this.savedFieldList[fieldName].isSelected = true;\n this.savedFieldList[fieldName].allowDragAndDrop = (this.dataFields[fieldName] ? this.dataFields[fieldName].allowDragAndDrop : true);\n this.savedFieldList[fieldName].showFilterIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showFilterIcon : true);\n this.savedFieldList[fieldName].showSortIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showSortIcon : true);\n this.savedFieldList[fieldName].showEditIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showEditIcon : true);\n this.savedFieldList[fieldName].showRemoveIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showRemoveIcon : true);\n this.savedFieldList[fieldName].showValueTypeIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showValueTypeIcon : true);\n this.savedFieldList[fieldName].showSubTotals = (this.dataFields[fieldName] ? this.dataFields[fieldName].showSubTotals : true);\n this.savedFieldListData[i].isSelected = true;\n this.savedFieldListData[i].allowDragAndDrop = (this.dataFields[fieldName] ? this.dataFields[fieldName].allowDragAndDrop : true);\n this.savedFieldListData[i].showFilterIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showFilterIcon : true);\n this.savedFieldListData[i].showSortIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showSortIcon : true);\n this.savedFieldListData[i].showEditIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showEditIcon : true);\n this.savedFieldListData[i].showRemoveIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showRemoveIcon : true);\n this.savedFieldListData[i].showValueTypeIcon = (this.dataFields[fieldName] ? this.dataFields[fieldName].showValueTypeIcon : true);\n this.savedFieldListData[i].showSubTotals = (this.dataFields[fieldName] ? this.dataFields[fieldName].showSubTotals : true);\n }\n else {\n if (this.dataFields[parentID] && this.savedFieldList[parentID] && this.selectedItems.indexOf(parentID) > -1) {\n this.savedFieldListData[i].isSelected = true;\n }\n else {\n this.savedFieldListData[i].isSelected = false;\n }\n }\n /* eslint-enable max-len */\n if ((this.savedFieldList[fieldName] && this.savedFieldList[fieldName].isCalculatedField) ||\n fieldName.toLowerCase() === '[calculated members].[_0]') {\n var isAvail = false;\n for (var _i = 0, _a = this.calculatedFieldSettings; _i < _a.length; _i++) {\n var field = _a[_i];\n if (fieldName === field.name) {\n var expression = field.formula;\n var formatString = field.formatString;\n this.savedFieldListData[i].formula = expression;\n this.savedFieldListData[i].formatString = formatString;\n this.savedFieldListData[i].parentHierarchy = (expression.toLowerCase().indexOf('measure') > -1 ?\n undefined : field.hierarchyUniqueName);\n this.savedFieldList[fieldName].formula = expression;\n this.savedFieldList[fieldName].formatString = formatString;\n this.savedFieldList[fieldName].parentHierarchy = this.savedFieldListData[i].parentHierarchy;\n isAvail = true;\n }\n }\n if (!isAvail || (fieldName.toLowerCase() === '[calculated members].[_0]' &&\n this.calculatedFieldSettings.length === 0)) {\n this.savedFieldListData.splice(i, 1);\n i--;\n if (this.savedFieldList[fieldName]) {\n delete this.savedFieldList[fieldName];\n }\n }\n }\n i++;\n }\n this.fieldList = this.savedFieldList;\n this.fieldListData = this.savedFieldListData;\n };\n OlapEngine.prototype.updateFieldlistData = function (name, isSelect) {\n for (var _i = 0, _a = this.fieldListData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.id === name) {\n item.isSelected = isSelect ? true : false;\n break;\n }\n }\n };\n OlapEngine.prototype.getFormattedFields = function (formats) {\n this.formatFields = {};\n var cnt = formats.length;\n while (cnt--) {\n this.formatFields[formats[cnt].name] = formats[cnt];\n }\n };\n OlapEngine.prototype.getFieldList = function (dataSourceSettings) {\n var args = {\n catalog: dataSourceSettings.catalog,\n cube: dataSourceSettings.cube,\n url: dataSourceSettings.url,\n LCID: dataSourceSettings.localeIdentifier.toString(),\n request: 'MDSCHEMA_HIERARCHIES'\n };\n this.getTreeData(args, this.getFieldListItems.bind(this), { dataSourceSettings: dataSourceSettings, action: 'loadFieldElements' });\n };\n OlapEngine.prototype.getTreeData = function (args, successMethod, customArgs) {\n var connectionString = this.getConnectionInfo(args.url, args.LCID);\n var soapMessage = '
' +\n args.request + '' + args.catalog +\n '' + args.cube + '' + args.catalog +\n ' ' + connectionString.LCID + '';\n this.doAjaxPost('POST', connectionString.url, soapMessage, successMethod, customArgs);\n };\n /* eslint-enable max-len */\n OlapEngine.prototype.getAxisFields = function () {\n this.rows = this.dataSourceSettings.rows ? this.dataSourceSettings.rows : [];\n this.columns = this.dataSourceSettings.columns ? this.dataSourceSettings.columns : [];\n this.filters = this.dataSourceSettings.filters ? this.dataSourceSettings.filters : [];\n this.values = this.dataSourceSettings.values ? this.dataSourceSettings.values : [];\n var dataFields = extend([], this.rows, null, true);\n dataFields = dataFields.concat(this.columns, this.values, this.filters);\n var len = dataFields.length;\n while (len--) {\n this.dataFields[dataFields[len].name] = dataFields[len];\n if (dataFields[len].name.toLowerCase() === '[measures]') {\n this.isMeasureAvail = true;\n }\n else {\n this.selectedItems.push(dataFields[len].name);\n }\n }\n this.mappingFields = {};\n if (this.dataSourceSettings.fieldMapping) {\n for (var _i = 0, _a = this.dataSourceSettings.fieldMapping; _i < _a.length; _i++) {\n var field = _a[_i];\n this.mappingFields[field.name] = field;\n }\n }\n if (!this.isMeasureAvail && this.values.length > 0) {\n var measureField = {\n name: '[Measures]', caption: 'Measures', showRemoveIcon: true, allowDragAndDrop: true\n };\n if (this.valueAxis === 'row') {\n this.rows.push(measureField);\n }\n else {\n this.columns.push(measureField);\n }\n this.isMeasureAvail = true;\n }\n };\n OlapEngine.prototype.getAggregateType = function (fieldName, aggregateType) {\n var type;\n switch (aggregateType) {\n case '1':\n type = 'Sum';\n break;\n case '2':\n type = 'Count';\n break;\n case '3':\n type = 'Min';\n break;\n case '4':\n type = 'Max';\n break;\n case '5':\n type = 'Avg';\n break;\n case '8':\n type = 'DistinctCount';\n break;\n case '127':\n type = 'CalculatedField';\n break;\n default:\n type = undefined;\n break;\n }\n // if (this.dataFields[fieldName]) {\n // return this.dataFields[fieldName].type;\n // } else {\n // return undefined;\n // }\n if (type) {\n return type;\n }\n else {\n return undefined;\n }\n };\n OlapEngine.prototype.getUniqueName = function (name) {\n var uName = name;\n for (var _i = 0, _a = this.calculatedFieldSettings; _i < _a.length; _i++) {\n var item = _a[_i];\n var expression = item.formula;\n var prefixName = (expression.toLowerCase().indexOf('measure') > -1 ? '[Measures].' : item.hierarchyUniqueName + '.');\n var uniqueName = prefixName + '[' + item.name + ']';\n if (name === uniqueName) {\n uName = item.name;\n break;\n }\n }\n return uName;\n };\n OlapEngine.prototype.updateFilterItems = function (filterItems) {\n var dataFields = extend([], this.rows, null, true);\n dataFields = dataFields.concat(this.columns);\n for (var _i = 0, filterItems_1 = filterItems; _i < filterItems_1.length; _i++) {\n var filter = filterItems_1[_i];\n if (filter.type === 'Include' && this.allowMemberFilter) {\n var members = this.fieldList[filter.name].members;\n var isMembersAvail = (members && Object.keys(members).length > 0);\n this.fieldList[filter.name].actualFilter = filter.items.slice();\n var selectedElements = extend([], filter.items, null, true);\n if (isMembersAvail) {\n var i = 0;\n while (i < selectedElements.length) {\n var parentNodes = [];\n parentNodes = this.getParentNode(selectedElements[i], members, parentNodes);\n for (var _a = 0, parentNodes_1 = parentNodes; _a < parentNodes_1.length; _a++) {\n var node = parentNodes_1[_a];\n var index = PivotUtil.inArray(node, filter.items);\n if (index !== -1) {\n filter.items.splice(index, 1);\n }\n }\n i++;\n }\n }\n var currentItems = [];\n for (var _b = 0, _c = filter.items; _b < _c.length; _b++) {\n var selectedElement = _c[_b];\n // currentItems.push(selectedElement.replace(/\\&/g, '&'));\n currentItems.push(selectedElement);\n if (isMembersAvail) {\n this.fieldList[filter.name].filter.push(members[selectedElement].caption);\n }\n else {\n this.fieldList[filter.name].filter.push(selectedElement);\n }\n }\n this.filterMembers[filter.name] = currentItems;\n this.fieldList[filter.name].isExcelFilter = false;\n }\n else if ((this.allowValueFilter || this.allowLabelFilter) &&\n ['Date', 'Label', 'Number', 'Value'].indexOf(filter.type) !== -1) {\n for (var _d = 0, dataFields_1 = dataFields; _d < dataFields_1.length; _d++) {\n var item = dataFields_1[_d];\n if (item.name === filter.name) {\n var filterMembers = this.filterMembers[filter.name];\n if (filterMembers && (typeof filterMembers[0] === 'object' && filterMembers[0].type === filter.type)) {\n filterMembers[filterMembers.length] = filter;\n }\n else {\n this.filterMembers[filter.name] = [filter];\n }\n this.fieldList[filter.name].isExcelFilter = true;\n break;\n }\n }\n }\n }\n };\n OlapEngine.prototype.getParentNode = function (name, members, items) {\n if (members[name].parent && name !== members[name].parent) {\n var parentItem = members[name].parent;\n items.push(parentItem);\n this.getParentNode(parentItem, members, items);\n }\n return items;\n };\n OlapEngine.prototype.updateDrilledItems = function (drilledMembers) {\n var drilledItems = [];\n var dataFields = extend([], this.rows, null, true);\n dataFields = dataFields.concat(this.columns);\n for (var _i = 0, drilledMembers_1 = drilledMembers; _i < drilledMembers_1.length; _i++) {\n var item = drilledMembers_1[_i];\n for (var _a = 0, dataFields_2 = dataFields; _a < dataFields_2.length; _a++) {\n var field = dataFields_2[_a];\n if (item.name === field.name) {\n drilledItems.push(item);\n break;\n }\n }\n }\n return drilledItems;\n };\n // private updateAllMembers(dataSourceSettings: IDataOptions, slicers: IFieldOptions[]): void {\n // let query: string = '';\n // for (let field of slicers) {\n // let fieldList: IOlapField = this.fieldList[field.name];\n // if (!(fieldList && fieldList.hasAllMember && fieldList.allMember)) {\n // query = query + (query !== '' ? ' * ' : '') + '{' + field.name + '}';\n // } else {\n // continue;\n // }\n // }\n // if (query !== '') {\n // this.getAllMember(dataSourceSettings, query);\n // } else {\n // return;\n // }\n // }\n // private getAllMember(dataSourceSettings: IDataOptions, query: string): void {\n // let dimProp: string = 'DIMENSION PROPERTIES HIERARCHY_UNIQUE_NAME, CHILDREN_CARDINALITY';\n // let mdxQuery: string = 'SELECT (' + query + ')' + dimProp + ' ON 0 FROM [' + dataSourceSettings.cube + ']';\n // let xmla: string = this.getSoapMsg(dataSourceSettings, mdxQuery);\n // let connectionString: ConnectionInfo = this.getConnectionInfo(dataSourceSettings.url, dataSourceSettings.localeIdentifier);\n // this.doAjaxPost('POST', connectionString.url, xmla, this.generateAllMembers.bind(this), \n // { dataSourceSettings: dataSourceSettings, action: 'fetchAllMembers' });\n // }\n /**\n * @hidden\n */\n OlapEngine.prototype.getDrillThroughData = function (pivotValue, maxRows) {\n var column = this.tupColumnInfo[pivotValue.colOrdinal] &&\n this.tupColumnInfo[pivotValue.colOrdinal].uNameCollection &&\n this.tupColumnInfo[pivotValue.colOrdinal].uNameCollection !== '' ?\n this.tupColumnInfo[pivotValue.colOrdinal].uNameCollection.split('::[').map(function (item) {\n return item[0] === '[' ? item : ('[' + item);\n }) : [];\n var row = this.tupRowInfo[pivotValue.rowOrdinal] &&\n this.tupRowInfo[pivotValue.rowOrdinal].uNameCollection &&\n this.tupRowInfo[pivotValue.rowOrdinal].uNameCollection !== '' ?\n this.tupRowInfo[pivotValue.rowOrdinal].uNameCollection.split('::[').map(function (item) {\n return item[0] === '[' ? item : ('[' + item);\n }) : [];\n var filters;\n var filteritems = [];\n var filterQuery = '';\n for (var i = 0; i < this.filters.length; i++) {\n filters = this.filterMembers[this.filters[i].name];\n if (filters) {\n for (var j = 0; j < filters.length; j++) {\n filterQuery = filterQuery + filters[j];\n filterQuery = j < filters.length - 1 ? filterQuery + ',' : filterQuery + '';\n }\n filteritems[i] = filterQuery;\n filterQuery = '';\n }\n }\n for (var i = 0; i < filteritems.length; i++) {\n filterQuery = filterQuery === '' ? '{' + filteritems[i] + '}' : (filterQuery + ',' + '{' + filteritems[i] + '}');\n }\n var columnQuery = '';\n var rowQuery = '';\n for (var i = 0; i < column.length; i++) {\n columnQuery = (columnQuery.length > 0 ? (columnQuery + ',') : '') + (column[i].split('~~').length > 1 ?\n column[i].split('~~')[column[i].split('~~').length - 1] : column[i]);\n }\n for (var i = 0; i < row.length; i++) {\n rowQuery = (rowQuery.length > 0 ? (rowQuery + ',') : '') + (row[i].split('~~').length > 1 ?\n row[i].split('~~')[row[i].split('~~').length - 1] : row[i]);\n }\n var drillQuery = 'DRILLTHROUGH MAXROWS ' + maxRows + ' Select(' + (columnQuery.length > 0 ? columnQuery : '') +\n (columnQuery.length > 0 && rowQuery.length > 0 ? ',' : '') + (rowQuery.length > 0 ? rowQuery : '') + ') on 0 from ' +\n (filterQuery === '' ? '[' + this.dataSourceSettings.cube + ']' : '(SELECT (' + filterQuery + ') ON COLUMNS FROM [' +\n this.dataSourceSettings.cube + '])');\n drillQuery = drillQuery.replace(/&/g, '&');\n var xmla = this.getSoapMsg(this.dataSourceSettings, drillQuery);\n var connectionString = this.getConnectionInfo(this.dataSourceSettings.url, this.dataSourceSettings.localeIdentifier);\n this.doAjaxPost('POST', connectionString.url, xmla, this.drillThroughSuccess.bind(this), { dataSourceSettings: this.dataSourceSettings, action: 'drillThrough' });\n };\n OlapEngine.prototype.drillThroughSuccess = function (xmlDoc) {\n var tag = [].slice.call(xmlDoc.querySelectorAll('row'));\n var gridJSON = '';\n if (tag.length > 0) {\n var json = [];\n var i = 0;\n while (i < tag.length) {\n var child = [].slice.call(tag[i].children);\n var j = 0;\n while (j < child.length) {\n json.push('\"' + child[j].tagName + '\"' + ':' + '\"' + child[j].textContent + '\"');\n j++;\n }\n i++;\n }\n var value = json[0];\n var k = 0;\n while (k < json.length) {\n if (Object.keys(JSON.parse('[{' + json[k] + '}]')[0])[0] === Object.keys(JSON.parse('[{' + value + '}]')[0])[0]) {\n gridJSON += gridJSON === '' ? '[{' + json[k] : '}, {' + json[k];\n k++;\n continue;\n }\n gridJSON += ',' + json[k];\n k++;\n }\n gridJSON += '}]';\n }\n else {\n var tag_1 = [].slice.call(xmlDoc.querySelectorAll('faultstring'));\n var i = 0;\n while (i < tag_1.length) {\n gridJSON += tag_1[i].textContent;\n i++;\n }\n }\n this.gridJSON = gridJSON;\n };\n OlapEngine.prototype.getFilterMembers = function (dataSourceSettings, fieldName, levelCount, isSearchFilter, loadLevelMember) {\n // let dimProp: string = 'DIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME, CHILDREN_CARDINALITY, MEMBER_TYPE';\n var levels = this.fieldList[fieldName].levels;\n var cLevel = this.fieldList[fieldName].levelCount;\n var filterQuery;\n if (loadLevelMember) {\n filterQuery = 'Descendants({' + levels[cLevel].id + '}, ' +\n levels[levelCount - 1].id + ', ' + ((levelCount - cLevel) === 1 ? 'SELF)' : 'SELF_AND_BEFORE)');\n }\n else {\n filterQuery = fieldName + ', Descendants({' + levels[0].id + '}, ' + levels[levelCount - 1].id + ', SELF_AND_BEFORE)';\n }\n this.fieldList[fieldName].levelCount = levelCount;\n if (!isSearchFilter) {\n this.getMembers(dataSourceSettings, fieldName, false, filterQuery, loadLevelMember);\n }\n return filterQuery;\n };\n OlapEngine.prototype.getMembers = function (dataSourceSettings, fieldName, isAllFilterData, filterParentQuery, loadLevelMember) {\n // dimProp = \"dimension properties CHILDREN_CARDINALITY, MEMBER_TYPE\";\n var dimProp = 'DIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME, CHILDREN_CARDINALITY, MEMBER_TYPE, MEMBER_VALUE';\n var mdxQuery;\n var hasAllMember = this.fieldList[fieldName].hasAllMember;\n var hierarchy = (hasAllMember ? fieldName : fieldName + '.LEVELS(0)').replace(/\\&/g, '&');\n if (!isAllFilterData) {\n mdxQuery = 'SELECT ({' + (filterParentQuery ?\n filterParentQuery : (hasAllMember ? hierarchy + ', ' + hierarchy + '.CHILDREN' : hierarchy + '.ALLMEMBERS')) + '})' +\n dimProp + ' ON 0 FROM [' + dataSourceSettings.cube + ']';\n }\n else {\n mdxQuery = 'SELECT ({' + hierarchy + '.ALLMEMBERS})' + dimProp + ' ON 0 FROM [' + dataSourceSettings.cube + ']';\n }\n var xmla = this.getSoapMsg(dataSourceSettings, mdxQuery);\n var connectionString = this.getConnectionInfo(dataSourceSettings.url, dataSourceSettings.localeIdentifier);\n if (!loadLevelMember) {\n this.fieldList[fieldName].filterMembers = [];\n this.fieldList[fieldName].childMembers = [];\n this.fieldList[fieldName].searchMembers = [];\n // this.fieldList[fieldName].isHierarchy = true;\n this.fieldList[fieldName].members = {};\n this.fieldList[fieldName].currrentMembers = {};\n }\n this.doAjaxPost('POST', connectionString.url, xmla, this.generateMembers.bind(this), { dataSourceSettings: dataSourceSettings, fieldName: fieldName, loadLevelMembers: loadLevelMember, action: 'fetchMembers' });\n };\n OlapEngine.prototype.getChildMembers = function (dataSourceSettings, memberUQName, fieldName) {\n // dimProp = \"dimension properties CHILDREN_CARDINALITY, MEMBER_TYPE\";\n var dimProp = 'DIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME, CHILDREN_CARDINALITY, MEMBER_TYPE, MEMBER_VALUE';\n // var mdxQuery = 'SELECT SUBSET({' + memberUQName + '.CHILDREN}, 0, 5000)' + dimProp + ' ON 0 FROM [' + dataSourceSettings.cube + ']';\n var mdxQuery = 'SELECT ({' + memberUQName.replace(/\\&/g, '&') + '.CHILDREN})' + dimProp + ' ON 0 FROM [' + dataSourceSettings.cube + ']';\n var xmla = this.getSoapMsg(dataSourceSettings, mdxQuery);\n var connectionString = this.getConnectionInfo(dataSourceSettings.url, dataSourceSettings.localeIdentifier);\n this.doAjaxPost('POST', connectionString.url, xmla, this.generateMembers.bind(this), { dataSourceSettings: dataSourceSettings, fieldName: fieldName, action: 'fetchChildMembers' });\n };\n OlapEngine.prototype.getCalcChildMembers = function (dataSourceSettings, memberUQName) {\n this.calcChildMembers = [];\n var dimProp = 'DIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME, CHILDREN_CARDINALITY, MEMBER_TYPE, MEMBER_VALUE';\n var mdxQuery = 'SELECT ({' + memberUQName.replace(/\\&/g, '&') + '.MEMBERS})' +\n dimProp + ' ON 0 FROM [' + dataSourceSettings.cube + ']';\n var connectionString = this.getConnectionInfo(dataSourceSettings.url, dataSourceSettings.localeIdentifier);\n var xmla = this.getSoapMsg(dataSourceSettings, mdxQuery);\n this.doAjaxPost('POST', connectionString.url, xmla, this.generateMembers.bind(this), { dataSourceSettings: dataSourceSettings, action: 'fetchCalcChildMembers' });\n };\n OlapEngine.prototype.getSearchMembers = function (dataSourceSettings, fieldName, searchString, maxNodeLimit, isAllFilterData, levelCount) {\n this.fieldList[fieldName].searchMembers = [];\n this.fieldList[fieldName].currrentMembers = {};\n if (searchString !== '') {\n // dimProp = \"dimension properties CHILDREN_CARDINALITY, MEMBER_TYPE\";\n var dimProp = 'DIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME, CHILDREN_CARDINALITY, MEMBER_TYPE, MEMBER_VALUE';\n var hierarchy = fieldName.replace(/\\&/g, '&');\n var mdxQuery = 'WITH SET [SearchMembersSet] AS 'FILTER(' + (isAllFilterData ? hierarchy + '.ALLMEMBERS, ' :\n '{' + (levelCount > 1 ? this.getFilterMembers(dataSourceSettings, fieldName, levelCount, true) :\n hierarchy + ', ' + hierarchy + '.CHILDREN') + '},') +\n '(INSTR(1, ' + hierarchy + '.CurrentMember.member_caption, \"' + searchString + '\") > 0))'' +\n 'SET [SearchParentsSet] AS 'GENERATE([SearchMembersSet], ASCENDANTS([SearchMembersSet].Current))'' +\n 'SET [SearchSet] AS 'HIERARCHIZE(DISTINCT({[SearchMembersSet], [SearchParentsSet]}))'' +\n 'SELECT SUBSET([SearchSet], 0, ' + maxNodeLimit + ')' + dimProp + ' ON 0 FROM [' + dataSourceSettings.cube + ']';\n var xmla = this.getSoapMsg(dataSourceSettings, mdxQuery);\n var connectionString = this.getConnectionInfo(dataSourceSettings.url, dataSourceSettings.localeIdentifier);\n this.doAjaxPost('POST', connectionString.url, xmla, this.generateMembers.bind(this), { dataSourceSettings: dataSourceSettings, fieldName: fieldName, action: 'fetchSearchMembers' });\n }\n else {\n return;\n }\n };\n OlapEngine.prototype.generateMembers = function (xmlDoc, request, customArgs) {\n var fields = [].slice.call(xmlDoc.querySelectorAll('Axis[name=\"Axis0\"] Tuple'));\n var fieldName = customArgs.fieldName;\n var allMember;\n var filterMembers = {};\n for (var _i = 0, fields_1 = fields; _i < fields_1.length; _i++) {\n var field = fields_1[_i];\n // let hierarchyUqName: string = fields[0].querySelector('Member HIERARCHY_UNIQUE_NAME').textContent;\n var member = field.querySelector('Member');\n var memberType = member.querySelector('MEMBER_TYPE').textContent;\n var memberUqName = member.querySelector('UName').textContent;\n var caption = member.querySelector('Caption').textContent;\n var parentUqName = member.querySelector('PARENT_UNIQUE_NAME') ? member.querySelector('PARENT_UNIQUE_NAME').textContent : '';\n var nodeAttr = { 'data-fieldName': fieldName, 'data-memberId': memberUqName };\n if (parentUqName === '' && memberType === '1') {\n filterMembers = {\n hasChildren: (field.querySelector('CHILDREN_CARDINALITY') ? (field.querySelector('CHILDREN_CARDINALITY').textContent !== '0') ? true : false : false),\n isSelected: false,\n id: memberUqName,\n tag: memberUqName,\n name: caption,\n caption: caption,\n htmlAttributes: nodeAttr\n };\n if (customArgs.action === 'fetchMembers' || customArgs.action === 'fetchChildMembers') {\n this.fieldList[fieldName].members[memberUqName] =\n { name: memberUqName, caption: caption, parent: undefined, isNodeExpand: false, isSelected: false };\n this.fieldList[fieldName].filterMembers.push(filterMembers);\n this.fieldList[fieldName].childMembers.push(filterMembers);\n }\n else if (customArgs.action === 'fetchSearchMembers') {\n this.fieldList[fieldName].currrentMembers[memberUqName] =\n { name: memberUqName, caption: caption, parent: undefined, isNodeExpand: false, isSelected: false };\n this.fieldList[fieldName].searchMembers.push(filterMembers);\n filterMembers.expanded = true;\n }\n else {\n this.calcChildMembers.push(filterMembers);\n }\n }\n else if (parentUqName !== '' && memberType === '1') {\n if (parentUqName === allMember && memberType === '1') {\n filterMembers = {\n hasChildren: (field.querySelector('CHILDREN_CARDINALITY') ? (field.querySelector('CHILDREN_CARDINALITY').textContent !== '0') ? true : false : false),\n id: memberUqName,\n name: caption,\n isSelected: false,\n caption: caption,\n htmlAttributes: nodeAttr,\n tag: memberUqName\n };\n if (customArgs.action === 'fetchMembers' || customArgs.action === 'fetchChildMembers') {\n this.fieldList[fieldName].filterMembers.push(filterMembers);\n this.fieldList[fieldName].childMembers.push(filterMembers);\n this.fieldList[fieldName].members[memberUqName] =\n { name: memberUqName, caption: caption, parent: undefined, isNodeExpand: false, isSelected: false };\n }\n else if (customArgs.action === 'fetchSearchMembers') {\n filterMembers.expanded = true;\n this.fieldList[fieldName].searchMembers.push(filterMembers);\n this.fieldList[fieldName].currrentMembers[memberUqName] =\n { name: memberUqName, caption: caption, parent: undefined, isNodeExpand: false, isSelected: false };\n }\n else {\n this.calcChildMembers.push(filterMembers);\n }\n }\n else {\n if (customArgs.action === 'fetchMembers' && this.fieldList[fieldName].members[memberUqName]) {\n continue;\n }\n var nodeSelect = (customArgs.loadLevelMembers ? this.fieldList[fieldName].members[parentUqName].isSelected : false);\n filterMembers = {\n hasChildren: (field.querySelector('CHILDREN_CARDINALITY') ? (field.querySelector('CHILDREN_CARDINALITY').textContent !== '0') ? true : false : false),\n htmlAttributes: nodeAttr,\n isSelected: false,\n id: memberUqName,\n pid: parentUqName,\n name: caption,\n caption: caption,\n tag: memberUqName\n };\n if (customArgs.action === 'fetchMembers' || customArgs.action === 'fetchChildMembers') {\n this.fieldList[fieldName].isHierarchy = false;\n this.fieldList[fieldName].filterMembers.push(filterMembers);\n this.fieldList[fieldName].childMembers.push(filterMembers);\n this.fieldList[fieldName].members[memberUqName] =\n { name: memberUqName, caption: caption, parent: parentUqName, isNodeExpand: false, isSelected: nodeSelect };\n }\n else if (customArgs.action === 'fetchSearchMembers') {\n this.fieldList[fieldName].searchMembers.push(filterMembers);\n filterMembers.expanded = true;\n this.fieldList[fieldName].currrentMembers[memberUqName] =\n { name: memberUqName, caption: caption, parent: parentUqName, isNodeExpand: false, isSelected: false };\n }\n else {\n this.calcChildMembers.push(filterMembers);\n }\n }\n }\n else if (memberType === '2') {\n allMember = memberUqName;\n }\n }\n };\n /* eslint-enable max-len */\n // private generateAllMembers(xmlDoc: Document, request: Ajax, customArgs: FieldData): void {\n // let members: HTMLElement[] = [].slice.call(xmlDoc.querySelectorAll('Axis[name=\"Axis0\"] Member'));\n // for (let member of members) {\n // let caption: string = member.querySelector('Caption').textContent;\n // let fieldName: string = member.querySelector('HIERARCHY_UNIQUE_NAME').textContent;\n // this.fieldList[fieldName].allMember = caption;\n // }\n // }\n OlapEngine.prototype.getFieldListItems = function (xmlDoc, request, customArgs) {\n var fieldDate = {};\n var hierarchyElements = [];\n var fields = [].slice.call(xmlDoc.querySelectorAll('row'));\n for (var _i = 0, fields_2 = fields; _i < fields_2.length; _i++) {\n var field = fields_2[_i];\n var isAllMemberAvail = [].slice.call(field.querySelectorAll('ALL_MEMBER')).length > 0;\n var dimensionName = field.querySelector('DIMENSION_UNIQUE_NAME').textContent;\n var hierarchyName = field.querySelector('HIERARCHY_UNIQUE_NAME').textContent;\n var isSameDim = dimensionName === hierarchyName && dimensionName.toLowerCase() !== '[measures]' && hierarchyName.toLowerCase() !== '[measures]';\n hierarchyElements.push({\n pid: ((this.isMondrian || isSameDim) ? dimensionName + '~#^Dim' : dimensionName),\n id: hierarchyName,\n name: field.querySelector('HIERARCHY_CAPTION').textContent,\n caption: field.querySelector('HIERARCHY_CAPTION').textContent,\n tag: hierarchyName,\n hasAllMember: isAllMemberAvail,\n allMember: (isAllMemberAvail ? field.querySelectorAll('ALL_MEMBER')[0].textContent : undefined),\n // aggregateType: this.getAggregateType(field.querySelector('HIERARCHY_UNIQUE_NAME').textContent),\n type: 'string'\n });\n }\n fieldDate = {\n hierarchy: hierarchyElements,\n hierarchySuccess: xmlDoc,\n measures: []\n };\n this.fieldListObj = fieldDate;\n var args = {\n catalog: customArgs.dataSourceSettings.catalog,\n cube: customArgs.dataSourceSettings.cube,\n url: customArgs.dataSourceSettings.url,\n LCID: customArgs.dataSourceSettings.localeIdentifier.toString(),\n request: 'MDSCHEMA_DIMENSIONS'\n };\n this.getTreeData(args, this.loadDimensionElements.bind(this), customArgs);\n };\n OlapEngine.prototype.loadCalculatedMemberElements = function (calcMembers) {\n if (calcMembers.length > 0) {\n var fieldListElements = this.fieldListData;\n // let calcElements: IOlapField[] = [];\n var calcObj = {\n hasChildren: true,\n isSelected: false,\n id: '[Calculated Members].[_0]',\n name: '[Calculated Members].[_0]',\n caption: 'Calculated Members',\n spriteCssClass: 'e-calcMemberGroupCDB' + ' ' + cls.ICON,\n tag: '[Calculated Members].[_0]',\n //aggregateType: this.getAggregateType(dimensionName),\n type: 'string'\n };\n if (fieldListElements.length > 0 && fieldListElements[0].id.toLowerCase() === '[measures]') {\n fieldListElements.splice(0, 0, calcObj);\n }\n for (var _i = 0, calcMembers_1 = calcMembers; _i < calcMembers_1.length; _i++) {\n var field = calcMembers_1[_i];\n if (!this.fieldList[field.name]) {\n var expression = field.formula;\n var prefixName = (expression.toLowerCase().indexOf('measure') > -1 ? '[Measures].' :\n field.hierarchyUniqueName + '.');\n var uniqueName = prefixName + '[' + field.name + ']';\n var caption = (this.dataFields[field.name] && this.dataFields[field.name].caption ?\n this.dataFields[field.name].caption :\n this.mappingFields[field.name] && this.mappingFields[field.name].caption ?\n this.mappingFields[field.name].caption : field.name);\n var formatString = field.formatString;\n var calcField = {\n hasChildren: false,\n isSelected: false,\n id: field.name,\n pid: '[Calculated Members].[_0]',\n name: field.name,\n caption: caption,\n spriteCssClass: 'e-calc-member' + ' ' + (expression.toLowerCase().indexOf('measure') > -1 ?\n 'e-calc-measure-icon' : 'e-calc-dimension-icon') + ' ' + cls.ICON,\n tag: uniqueName,\n formula: expression,\n formatString: formatString,\n aggregateType: undefined,\n type: 'CalculatedField',\n filter: [],\n dateMember: [],\n sort: 'Ascending',\n actualFilter: [],\n filterMembers: [],\n childMembers: [],\n searchMembers: [],\n members: {},\n currrentMembers: {},\n isHierarchy: true,\n isExcelFilter: false,\n isCalculatedField: true,\n /* eslint-disable */\n allowDragAndDrop: (this.dataFields[field.name] ? this.dataFields[field.name].allowDragAndDrop : this.mappingFields[field.name] ? this.mappingFields[field.name].allowDragAndDrop : true),\n showFilterIcon: (this.dataFields[field.name] ? this.dataFields[field.name].showFilterIcon : this.mappingFields[field.name] ? this.mappingFields[field.name].showFilterIcon : true),\n showSortIcon: (this.dataFields[field.name] ? this.dataFields[field.name].showSortIcon : this.mappingFields[field.name] ? this.mappingFields[field.name].showSortIcon : true),\n showEditIcon: (this.dataFields[field.name] ? this.dataFields[field.name].showEditIcon : this.mappingFields[field.name] ? this.mappingFields[field.name].showEditIcon : true),\n showRemoveIcon: (this.dataFields[field.name] ? this.dataFields[field.name].showRemoveIcon : this.mappingFields[field.name] ? this.mappingFields[field.name].showRemoveIcon : true),\n showValueTypeIcon: (this.dataFields[field.name] ? this.dataFields[field.name].showValueTypeIcon : this.mappingFields[field.name] ? this.mappingFields[field.name].showValueTypeIcon : true),\n showSubTotals: (this.dataFields[field.name] ? this.dataFields[field.name].showSubTotals : this.mappingFields[field.name] ? this.mappingFields[field.name].showSubTotals : true),\n fieldType: (expression.toLowerCase().indexOf('measure') > -1 ? 'Measure' : 'Dimension'),\n parentHierarchy: (expression.toLowerCase().indexOf('measure') > -1 ? undefined : field.hierarchyUniqueName)\n /* eslint-enable */\n };\n fieldListElements.push(calcField);\n this.fieldList[calcField.id] = calcField;\n }\n }\n }\n else {\n return;\n }\n };\n OlapEngine.prototype.loadDimensionElements = function (xmlDoc, request, customArgs) {\n var hierarchyElements = [];\n var fields = [].slice.call(xmlDoc.querySelectorAll('row'));\n var measure = {};\n for (var _i = 0, fields_3 = fields; _i < fields_3.length; _i++) {\n var field = fields_3[_i];\n var dimensionName = field.querySelector('DIMENSION_UNIQUE_NAME').textContent;\n var defaultHierarchy = field.querySelector('DEFAULT_HIERARCHY').textContent;\n var dimensionCaption = field.querySelector('DIMENSION_CAPTION').textContent;\n var isSameDim = dimensionName === defaultHierarchy;\n if (dimensionName.toLowerCase().indexOf('[measure') >= 0) {\n measure = {\n hasChildren: true,\n isSelected: false,\n id: dimensionName,\n name: dimensionName,\n caption: dimensionCaption,\n spriteCssClass: dimensionName.toLowerCase() === '[measures]' ? 'e-measureGroupCDB-icon' + ' ' + cls.ICON : 'e-dimensionCDB-icon' + ' ' + cls.ICON,\n tag: dimensionName,\n // aggregateType: this.getAggregateType(dimensionName),\n type: 'string'\n };\n }\n else if (isNullOrUndefined(fields[0].querySelector('HIERARCHY_CAPTION'))) {\n hierarchyElements.push({\n hasChildren: true,\n isSelected: false,\n id: ((this.isMondrian || isSameDim) ? dimensionName + '~#^Dim' : dimensionName),\n name: dimensionName,\n caption: dimensionCaption,\n spriteCssClass: 'e-dimensionCDB-icon' + ' ' + cls.ICON,\n tag: dimensionName,\n defaultHierarchy: field.querySelector('DEFAULT_HIERARCHY').textContent,\n // aggregateType: this.getAggregateType(dimensionName),\n type: 'string'\n });\n }\n }\n hierarchyElements.splice(0, 0, measure);\n this.fieldListData = hierarchyElements;\n // customArgs.hierarchy = this.fieldListData;\n // customArgs.hierarchySuccess = this.fieldListObj.hierarchySuccess;\n // this.loadHierarchyElements(customArgs);\n var args = {\n catalog: customArgs.dataSourceSettings.catalog,\n cube: customArgs.dataSourceSettings.cube,\n url: customArgs.dataSourceSettings.url,\n LCID: customArgs.dataSourceSettings.localeIdentifier.toString(),\n request: 'MDSCHEMA_SETS'\n };\n this.getTreeData(args, this.loadNamedSetElements.bind(this), customArgs);\n };\n OlapEngine.prototype.loadNamedSetElements = function (xmlDoc, request, customArgs) {\n var dataFields = extend([], this.rows, null, true);\n dataFields = dataFields.concat(this.columns, this.filters);\n var dimensionElements = this.fieldListData;\n var reportElement = [];\n for (var _i = 0, dataFields_3 = dataFields; _i < dataFields_3.length; _i++) {\n var field = dataFields_3[_i];\n reportElement.push(field.name);\n }\n var measureGroupItems = [];\n var fields = [].slice.call(xmlDoc.querySelectorAll('row'));\n for (var _a = 0, fields_4 = fields; _a < fields_4.length; _a++) {\n var field = fields_4[_a];\n if (!(measureGroupItems.indexOf(field.querySelector('DIMENSIONS').textContent.split('.')[0]) >= 0)) {\n dimensionElements.push({\n hasChildren: true,\n isSelected: false,\n pid: field.querySelector('DIMENSIONS').textContent.split('.')[0],\n id: field.querySelector('SET_DISPLAY_FOLDER').textContent + '_' + field.querySelector('DIMENSIONS').textContent.split('.')[0],\n name: field.querySelector('SET_DISPLAY_FOLDER').textContent,\n spriteCssClass: 'e-folderCDB-icon' + ' ' + cls.ICON + ' ' + 'namedSets',\n caption: field.querySelector('SET_DISPLAY_FOLDER').textContent,\n // aggregateType: this.getAggregateType(field.querySelector('SET_DISPLAY_FOLDER').textContent + '_' + field.querySelector('DIMENSIONS').textContent.split('.')[0]),\n type: 'string'\n });\n measureGroupItems.push(field.querySelector('DIMENSIONS').textContent.split('.')[0]);\n }\n var id = '[' + field.querySelector('SET_NAME').textContent.trim() + ']';\n var fieldObj = {\n hasChildren: true,\n isNamedSets: true,\n isSelected: (reportElement.indexOf('[' + field.querySelector('SET_NAME').textContent + ']') >= 0),\n pid: field.querySelector('SET_DISPLAY_FOLDER').textContent + '_' + field.querySelector('DIMENSIONS').textContent.split('.')[0],\n id: id,\n name: field.querySelector('SET_CAPTION').textContent,\n caption: this.dataFields[id] && this.dataFields[id].caption ? this.dataFields[id].caption : this.mappingFields[id] && this.mappingFields[id].caption ? this.mappingFields[id].caption : field.querySelector('SET_CAPTION').textContent,\n spriteCssClass: 'e-namedSetCDB-icon' + ' ' + cls.ICON,\n tag: field.querySelector('EXPRESSION').textContent,\n // aggregateType: this.getAggregateType(id),\n type: 'string',\n filter: [],\n dateMember: [],\n // sort: 'Ascending',\n actualFilter: [],\n filterMembers: [],\n childMembers: [],\n searchMembers: [],\n members: {},\n currrentMembers: {},\n isHierarchy: true,\n isExcelFilter: false,\n /* eslint-disable */\n allowDragAndDrop: (this.dataFields[id] ? this.dataFields[id].allowDragAndDrop : this.mappingFields[id] ? this.mappingFields[id].allowDragAndDrop : true),\n showFilterIcon: (this.dataFields[id] ? this.dataFields[id].showFilterIcon : this.mappingFields[id] ? this.mappingFields[id].showFilterIcon : true),\n showSortIcon: (this.dataFields[id] ? this.dataFields[id].showSortIcon : this.mappingFields[id] ? this.mappingFields[id].showSortIcon : true),\n showEditIcon: (this.dataFields[id] ? this.dataFields[id].showEditIcon : this.mappingFields[id] ? this.mappingFields[id].showEditIcon : true),\n showRemoveIcon: (this.dataFields[id] ? this.dataFields[id].showRemoveIcon : this.mappingFields[id] ? this.mappingFields[id].showRemoveIcon : true),\n showValueTypeIcon: (this.dataFields[id] ? this.dataFields[id].showValueTypeIcon : this.mappingFields[id] ? this.mappingFields[id].showValueTypeIcon : true),\n showSubTotals: (this.dataFields[id] ? this.dataFields[id].showSubTotals : this.mappingFields[id] ? this.mappingFields[id].showSubTotals : true)\n /* eslint-enable */\n };\n dimensionElements.push(fieldObj);\n this.fieldList[id] = fieldObj;\n }\n // let args: ConnectionInfo = {\n // catalog: customArgs.dataSourceSettings.catalog,\n // cube: customArgs.dataSourceSettings.cube,\n // url: customArgs.dataSourceSettings.url,\n // LCID: customArgs.dataSourceSettings.localeIdentifier.toString(),\n // request: 'MDSCHEMA_SETS'\n // };\n // this.getTreeData(args, this.loadHierarchyElements.bind(this), customArgs);\n customArgs.hierarchy = this.fieldListData;\n customArgs.hierarchySuccess = this.fieldListObj.hierarchySuccess;\n this.loadHierarchyElements(customArgs);\n };\n OlapEngine.prototype.loadHierarchyElements = function (customArgs) {\n var data = customArgs.hierarchySuccess;\n var dimensionElements = customArgs.hierarchy;\n var dataFields = extend([], this.rows, null, true);\n dataFields = dataFields.concat(this.columns, this.filters);\n var reportElement = [];\n for (var _i = 0, dataFields_4 = dataFields; _i < dataFields_4.length; _i++) {\n var field = dataFields_4[_i];\n reportElement.push(field.name);\n }\n var fields = [].slice.call(data.querySelectorAll('row'));\n for (var _a = 0, fields_5 = fields; _a < fields_5.length; _a++) {\n var field = fields_5[_a];\n var dimensionName = field.querySelector('DIMENSION_UNIQUE_NAME').textContent;\n var hierarchyName = field.querySelector('HIERARCHY_UNIQUE_NAME').textContent;\n var isAllMemberAvail = [].slice.call(field.querySelectorAll('ALL_MEMBER')).length > 0;\n var allMember = void 0;\n if (isAllMemberAvail) {\n var stringCollection = field.querySelectorAll('ALL_MEMBER')[0].textContent.replace(/[\\[\\]\\&']+/g, '').split('.');\n allMember = stringCollection[stringCollection.length - 1].trim();\n }\n else {\n allMember = undefined;\n }\n var hierarchyFolderName = ((field.querySelector('HIERARCHY_DISPLAY_FOLDER')) ? (field.querySelector('HIERARCHY_DISPLAY_FOLDER').textContent) : '');\n var curElement = [];\n for (var _b = 0, dimensionElements_1 = dimensionElements; _b < dimensionElements_1.length; _b++) {\n var item = dimensionElements_1[_b];\n if (item.tag === dimensionName) {\n curElement.push(item);\n }\n }\n if (curElement.length > 0) {\n var isSameDim = dimensionName === hierarchyName && dimensionName.toLowerCase() !== '[measures]' && hierarchyName.toLowerCase() !== '[measures]';\n if (dimensionName.toLowerCase() !== '[measures]' && hierarchyName.toLowerCase() !== '[measures]') {\n var parentID = dimensionName + ((this.isMondrian || isSameDim) ? '~#^Dim' : '');\n if (hierarchyFolderName !== '') {\n var folderName = dimensionName + ((this.isMondrian || isSameDim) ? '~#^Dim' : '') + '_' + hierarchyFolderName;\n var curParentElement = [];\n for (var _c = 0, dimensionElements_2 = dimensionElements; _c < dimensionElements_2.length; _c++) {\n var item = dimensionElements_2[_c];\n if (item.tag === folderName && item.pid === parentID) {\n curParentElement.push(item);\n }\n }\n if (curParentElement.length === 0) {\n var fieldObj_1 = {\n hasChildren: true,\n isSelected: false,\n pid: dimensionName + ((this.isMondrian || isSameDim) ? '~#^Dim' : ''),\n id: folderName,\n name: hierarchyFolderName,\n spriteCssClass: 'e-folderCDB-icon' + ' ' + cls.ICON,\n tag: folderName,\n caption: hierarchyFolderName,\n // aggregateType: this.getAggregateType(hierarchyFolderName),\n type: 'string'\n };\n dimensionElements.push(fieldObj_1);\n }\n parentID = folderName;\n }\n var fieldObj = {\n hasChildren: (field.querySelector('HIERARCHY_ORIGIN') ? ((field.querySelector('HIERARCHY_ORIGIN').textContent !== '2') && field.querySelector('HIERARCHY_ORIGIN').textContent !== '6') ? true : false : true),\n // hasChildren: true,\n isSelected: (reportElement.indexOf(hierarchyName) >= 0),\n pid: parentID,\n id: hierarchyName,\n name: field.querySelector('HIERARCHY_CAPTION').textContent,\n spriteCssClass: (field.querySelector('HIERARCHY_ORIGIN') ? ((field.querySelector('HIERARCHY_ORIGIN').textContent !== '2') && field.querySelector('HIERARCHY_ORIGIN').textContent !== '6') ? 'e-hierarchyCDB-icon' : 'e-attributeCDB-icon' : 'e-hierarchyCDB-icon') + ' ' + cls.ICON,\n hasAllMember: isAllMemberAvail,\n allMember: allMember,\n tag: hierarchyName,\n caption: this.dataFields[hierarchyName] && this.dataFields[hierarchyName].caption ? this.dataFields[hierarchyName].caption : this.mappingFields[hierarchyName] && this.mappingFields[hierarchyName].caption ? this.mappingFields[hierarchyName].caption : field.querySelector('HIERARCHY_CAPTION').textContent,\n // aggregateType: this.getAggregateType(hierarchyName),\n type: 'string',\n filter: [],\n dateMember: [],\n sort: (this.enableSort ? this.sortObject[hierarchyName] ? this.sortObject[hierarchyName] : 'Ascending' : 'None'),\n actualFilter: [],\n filterMembers: [],\n childMembers: [],\n searchMembers: [],\n members: {},\n currrentMembers: {},\n levels: [],\n levelCount: 1,\n isHierarchy: (field.querySelector('HIERARCHY_ORIGIN') ? ((field.querySelector('HIERARCHY_ORIGIN').textContent !== '2') && field.querySelector('HIERARCHY_ORIGIN').textContent !== '6') ? false : true : false),\n isExcelFilter: false,\n /* eslint-disable */\n allowDragAndDrop: (this.dataFields[hierarchyName] ? this.dataFields[hierarchyName].allowDragAndDrop : this.mappingFields[hierarchyName] ? this.mappingFields[hierarchyName].allowDragAndDrop : true),\n showFilterIcon: (this.dataFields[hierarchyName] ? this.dataFields[hierarchyName].showFilterIcon : this.mappingFields[hierarchyName] ? this.mappingFields[hierarchyName].showFilterIcon : true),\n showSortIcon: (this.dataFields[hierarchyName] ? this.dataFields[hierarchyName].showSortIcon : this.mappingFields[hierarchyName] ? this.mappingFields[hierarchyName].showSortIcon : true),\n showEditIcon: (this.dataFields[hierarchyName] ? this.dataFields[hierarchyName].showEditIcon : this.mappingFields[hierarchyName] ? this.mappingFields[hierarchyName].showEditIcon : true),\n showRemoveIcon: (this.dataFields[hierarchyName] ? this.dataFields[hierarchyName].showRemoveIcon : this.mappingFields[hierarchyName] ? this.mappingFields[hierarchyName].showRemoveIcon : true),\n showValueTypeIcon: (this.dataFields[hierarchyName] ? this.dataFields[hierarchyName].showValueTypeIcon : this.mappingFields[hierarchyName] ? this.mappingFields[hierarchyName].showValueTypeIcon : true),\n showSubTotals: (this.dataFields[hierarchyName] ? this.dataFields[hierarchyName].showSubTotals : this.mappingFields[hierarchyName] ? this.mappingFields[hierarchyName].showSubTotals : true)\n /* eslint-enable */\n };\n dimensionElements.push(fieldObj);\n this.fieldList[hierarchyName] = fieldObj;\n }\n }\n }\n var args = {\n catalog: customArgs.dataSourceSettings.catalog,\n cube: customArgs.dataSourceSettings.cube,\n url: customArgs.dataSourceSettings.url,\n LCID: customArgs.dataSourceSettings.localeIdentifier.toString(),\n request: 'MDSCHEMA_LEVELS'\n };\n this.getTreeData(args, this.loadLevelElements.bind(this), customArgs);\n };\n OlapEngine.prototype.loadLevelElements = function (xmlDoc, request, customArgs) {\n var newDataSource = [];\n var dimensionElements = this.fieldListData;\n newDataSource = [];\n var fields = [].slice.call(xmlDoc.querySelectorAll('row'));\n for (var _i = 0, fields_6 = fields; _i < fields_6.length; _i++) {\n var field = fields_6[_i];\n if (parseInt(field.querySelector('LEVEL_TYPE').textContent, 10) !== 1 && field.querySelector('HIERARCHY_UNIQUE_NAME').textContent.toLowerCase() !== '[measures]') {\n var dimensionName = field.querySelector('HIERARCHY_UNIQUE_NAME').textContent;\n var levelName = field.querySelector('LEVEL_UNIQUE_NAME').textContent;\n var levelCaption = field.querySelector('LEVEL_CAPTION').textContent;\n var levelObj = {\n hasChildren: false,\n isChecked: false,\n isSelected: this.fieldList[dimensionName].isSelected,\n pid: dimensionName,\n id: levelName,\n name: levelCaption,\n tag: levelName,\n spriteCssClass: 'e-level-members e-hierarchy-level-' + parseInt(field.querySelector('LEVEL_NUMBER').textContent, 10) + '-icon' + ' ' + cls.ICON,\n caption: levelCaption,\n // aggregateType: this.getAggregateType(levelName),\n type: 'string'\n };\n newDataSource.push(levelObj);\n if (this.fieldList[dimensionName] && this.fieldList[dimensionName].spriteCssClass &&\n this.fieldList[dimensionName].spriteCssClass.indexOf('e-attributeCDB-icon') === -1) {\n this.fieldList[dimensionName].levels.push(levelObj);\n this.fieldList[dimensionName].isHierarchy = false;\n }\n else {\n this.fieldList[dimensionName].isHierarchy = true;\n }\n }\n }\n this.fieldListData = dimensionElements = dimensionElements.concat(newDataSource);\n var args = {\n catalog: customArgs.dataSourceSettings.catalog,\n cube: customArgs.dataSourceSettings.cube,\n url: customArgs.dataSourceSettings.url,\n LCID: customArgs.dataSourceSettings.localeIdentifier.toString(),\n request: 'MDSCHEMA_MEASURES'\n };\n this.getTreeData(args, this.loadMeasureElements.bind(this), customArgs);\n };\n OlapEngine.prototype.loadMeasureElements = function (xmlDoc, request, customArgs) {\n var dimensionElements = this.fieldListData;\n var measureGroupItems = [];\n var caption;\n var dataFields = extend([], this.values, null, true);\n var reportElement = [];\n for (var _i = 0, dataFields_5 = dataFields; _i < dataFields_5.length; _i++) {\n var field = dataFields_5[_i];\n reportElement.push(field.name);\n }\n if (this.locale !== 'en-US') {\n var args = {\n catalog: customArgs.dataSourceSettings.catalog,\n cube: customArgs.dataSourceSettings.cube,\n url: customArgs.dataSourceSettings.url,\n LCID: customArgs.dataSourceSettings.localeIdentifier.toString(),\n request: 'MDSCHEMA_MEASUREGROUPS'\n };\n this.getTreeData(args, this.loadMeasureGroups.bind(this), customArgs);\n }\n var fields = [].slice.call(xmlDoc.querySelectorAll('row'));\n for (var _a = 0, fields_7 = fields; _a < fields_7.length; _a++) {\n var field = fields_7[_a];\n var measureGRPName = isNullOrUndefined(field.querySelector('MEASUREGROUP_NAME')) ? '' : field.querySelector('MEASUREGROUP_NAME').textContent;\n var measureName = field.querySelector('MEASURE_UNIQUE_NAME').textContent;\n var formatString = field.querySelector('DEFAULT_FORMAT_STRING') ?\n field.querySelector('DEFAULT_FORMAT_STRING').textContent : '#,#';\n var aggregateType = field.querySelector('MEASURE_AGGREGATOR') ?\n field.querySelector('MEASURE_AGGREGATOR').textContent : '1';\n if (!(measureGroupItems.indexOf(measureGRPName) >= 0)) {\n if (this.locale !== 'en-US') {\n var measureInfo = [];\n for (var _b = 0, _c = this.fieldListObj.measuresGroups; _b < _c.length; _b++) {\n var item = _c[_b];\n if (item.querySelector('MEASUREGROUP_NAME').textContent === measureGRPName) {\n measureInfo.push(item);\n }\n }\n caption = measureInfo.length > 0 ? measureInfo[0].querySelector('MEASUREGROUP_CAPTION').textContent : measureGRPName;\n }\n else {\n caption = measureGRPName;\n }\n if (measureGRPName !== '') {\n dimensionElements.push({\n hasChildren: true,\n isChecked: false,\n isSelected: false,\n pid: '[Measures]',\n id: measureGRPName,\n name: caption,\n spriteCssClass: 'e-measureCDB e-folderCDB-icon' + ' ' + cls.ICON,\n tag: measureGRPName,\n caption: caption,\n aggregateType: this.getAggregateType(measureGRPName, aggregateType),\n type: 'string'\n });\n measureGroupItems.push(measureGRPName);\n }\n }\n var fieldObj = {\n hasChildren: false,\n isSelected: (reportElement.indexOf(measureName) >= 0),\n pid: measureGRPName === '' ? '[Measures]' : measureGRPName,\n id: measureName,\n name: field.querySelector('MEASURE_CAPTION').textContent,\n spriteCssClass: 'e-measure-icon' + ' ' + cls.ICON,\n tag: measureName,\n caption: this.dataFields[measureName] && this.dataFields[measureName].caption ? this.dataFields[measureName].caption : this.mappingFields[measureName] && this.mappingFields[measureName].caption ? this.mappingFields[measureName].caption : field.querySelector('MEASURE_CAPTION').textContent,\n aggregateType: this.getAggregateType(measureName, aggregateType),\n type: 'number',\n filter: [],\n // sort: 'Ascending',\n actualFilter: [],\n filterMembers: [],\n childMembers: [],\n searchMembers: [],\n members: {},\n currrentMembers: {},\n /* eslint-disable */\n formatString: formatString,\n allowDragAndDrop: (this.dataFields[measureName] ? this.dataFields[measureName].allowDragAndDrop : this.mappingFields[measureName] ? this.mappingFields[measureName].allowDragAndDrop : true),\n showFilterIcon: (this.dataFields[measureName] ? this.dataFields[measureName].showFilterIcon : this.mappingFields[measureName] ? this.mappingFields[measureName].showFilterIcon : true),\n showSortIcon: (this.dataFields[measureName] ? this.dataFields[measureName].showSortIcon : this.mappingFields[measureName] ? this.mappingFields[measureName].showSortIcon : true),\n showEditIcon: (this.dataFields[measureName] ? this.dataFields[measureName].showEditIcon : this.mappingFields[measureName] ? this.mappingFields[measureName].showEditIcon : true),\n showRemoveIcon: (this.dataFields[measureName] ? this.dataFields[measureName].showRemoveIcon : this.mappingFields[measureName] ? this.mappingFields[measureName].showRemoveIcon : true),\n showValueTypeIcon: (this.dataFields[measureName] ? this.dataFields[measureName].showValueTypeIcon : this.mappingFields[measureName] ? this.mappingFields[measureName].showValueTypeIcon : true),\n showSubTotals: (this.dataFields[measureName] ? this.dataFields[measureName].showSubTotals : this.mappingFields[measureName] ? this.mappingFields[measureName].showSubTotals : true)\n /* eslint-enable */\n };\n dimensionElements.push(fieldObj);\n this.fieldList[measureName] = fieldObj;\n if ((reportElement.indexOf(measureName) >= 0)) {\n reportElement.splice(reportElement.indexOf(measureName), 1);\n }\n }\n this.measureReportItems = reportElement;\n // let args: ConnectionInfo = {\n // catalog: customArgs.dataSourceSettings.catalog,\n // cube: customArgs.dataSourceSettings.cube,\n // url: customArgs.dataSourceSettings.url,\n // LCID: customArgs.dataSourceSettings.localeIdentifier.toString(),\n // request: 'MDSCHEMA_KPIS'\n // };\n // customArgs.reportElement = this.measureReportItems;\n // this.getTreeData(args, this.loadKPIElements.bind(this), customArgs);\n };\n OlapEngine.prototype.loadMeasureGroups = function (xmlDoc, request, customArgs) {\n if (isNullOrUndefined(this.fieldListObj)) {\n this.fieldListObj = {};\n }\n this.fieldListObj.measuresGroups = [].slice.call(xmlDoc.querySelectorAll('row'));\n };\n // private loadKPIElements(xmlDoc: Document, request: Ajax, customArgs: FieldData): void {\n // let dimensionElements: IOlapField[] = this.fieldListData;\n // let parser = new DOMParser();\n // let measureGroupItems: string[] = [];\n // let fields: HTMLElement[] = [].slice.call(xmlDoc.querySelectorAll('row'));\n // dimensionElements.splice(1, 0, {\n // hasChildren: true,\n // isChecked: false,\n // id: 'folderStruct',\n // name: 'KPI',\n // spriteCssClass: 'kpiCDB e-kpiCDB-icon' + ' ' + cls.ICON,\n // tag: '',\n // caption: 'KPI',\n // aggregateType: this.getAggregateType('folderStruct'),\n // type: 'string'\n // });\n // for (let field of fields) {\n // let kpiName: string = field.querySelector('KPI_CAPTION').textContent;\n // let kpiGoal: string = field.querySelector('KPI_GOAL').textContent;\n // let kpiStatus: string = field.querySelector('KPI_STATUS').textContent;\n // let kpiTrend: string = field.querySelector('KPI_TREND').textContent;\n // let kpiValue: string = field.querySelector('KPI_VALUE').textContent;\n // if (!(measureGroupItems.indexOf(field.querySelector('KPI_NAME').textContent) >= 0)) {\n // dimensionElements.push({\n // hasChildren: true,\n // isChecked: false,\n // pid: 'folderStruct',\n // id: kpiName,\n // name: kpiName,\n // spriteCssClass: 'e-folderCDB-icon' + ' ' + cls.ICON,\n // tag: kpiName,\n // caption: kpiName,\n // aggregateType: this.getAggregateType(kpiName),\n // type: 'string'\n // });\n // measureGroupItems.push(kpiName);\n // }\n // let kpiCollection: { [key: string]: string } = {\n // 'kpiGoal': kpiGoal,\n // 'kpiStatus': kpiStatus,\n // 'kpiTrend': kpiTrend,\n // 'kpiValue': kpiValue\n // };\n // let i: number = 0;\n // for (let kpi of Object.keys(kpiCollection)) {\n // let id: string = kpiCollection[kpi];\n // let name: string = (kpi).split('kpi')[1];\n // let cssClass: string = 'e-' + kpi + '-icon';\n // let fieldObj: IOlapField = {\n // hasChildren: true,\n // isSelected: (customArgs.reportElement.indexOf(id) >= 0),\n // id: id,\n // pid: kpiName,\n // name: name,\n // spriteCssClass: cssClass + ' ' + cls.ICON,\n // tag: id,\n // caption: name,\n // aggregateType: this.getAggregateType(id),\n // type: 'number',\n // filter: [],\n // sort: 'Ascending',\n // filterMembers: [],\n // searchMembers: [],\n // members: {},\n // currrentMembers: {}\n // };\n // dimensionElements.push(fieldObj);\n // this.fieldList[id] = fieldObj;\n // }\n // }\n // }\n OlapEngine.prototype.doAjaxPost = function (type, url, data, success, customArgs) {\n var ajax = new Ajax({\n mode: false,\n contentType: 'text/xml',\n url: url,\n data: data,\n dataType: 'xml',\n type: type,\n beforeSend: this.beforeSend.bind(this),\n onSuccess: function (args, request) {\n var parser = new DOMParser();\n // parsing string type result as XML\n var xmlDoc = parser.parseFromString(args, 'text/xml');\n success(xmlDoc, request, customArgs);\n },\n onFailure: function (e) {\n return e;\n }\n });\n ajax.send();\n };\n OlapEngine.prototype.beforeSend = function (args) {\n if (this.dataSourceSettings.authentication.userName && this.dataSourceSettings.authentication.password) {\n /* eslint-disable */\n args.httpRequest.setRequestHeader(\"Authorization\", \"Basic \" + btoa(this.dataSourceSettings.authentication.userName + \":\" +\n this.dataSourceSettings.authentication.password));\n }\n };\n OlapEngine.prototype.getSoapMsg = function (dataSourceSettings, query) {\n var xmlMsg = '';\n var sourceInfo = '';\n var connectionString = this.getConnectionInfo(dataSourceSettings.url, dataSourceSettings.localeIdentifier);\n if (this.isMondrian) {\n sourceInfo = '';\n xmlMsg = '' + sourceInfo +\n '' + dataSourceSettings.catalog + 'TupleFormatDataMultidimensional';\n }\n else {\n xmlMsg = '
' +\n query + ' ' + dataSourceSettings.catalog +\n ' ' + connectionString.LCID + '
';\n }\n return xmlMsg;\n };\n OlapEngine.prototype.getConnectionInfo = function (connectionString, locale) {\n var connectionInfo = { url: '', LCID: !isNullOrUndefined(locale) ? locale.toString() : '1033' };\n if (connectionString !== '') {\n /* eslint-enable */\n for (var _i = 0, _a = connectionString.split(';'); _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj.toLowerCase().indexOf('locale') < 0 && connectionInfo.url.length === 0) {\n connectionInfo.url = obj;\n }\n else if (obj.toLowerCase().indexOf('locale') >= 0) {\n connectionInfo.LCID = obj.replace(/ /g, '').split('=')[1];\n }\n }\n }\n return connectionInfo;\n };\n OlapEngine.prototype.getMDXQuery = function (dataSourceSettings) {\n MDXQuery.getCellSets(dataSourceSettings, this, true, undefined, true);\n return this.mdxQuery;\n };\n return OlapEngine;\n}());\nexport { OlapEngine };\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest as closestElement, removeClass, classList, remove } from '@syncfusion/ej2-base';\nimport { getElementIndex, inArray, parentsUntil, getPosition, isActionPrevent } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for the Grid reorder module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Reorder(parent) {\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.reorderComplete, this.onActionComplete, this);\n this.parent.on(events.columnDrag, this.drag, this);\n this.parent.on(events.columnDragStart, this.dragStart, this);\n this.parent.on(events.columnDragStop, this.dragStop, this);\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.headerRefreshed, this.createReorderElement, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n }\n Reorder.prototype.chkDropPosition = function (srcElem, destElem) {\n var col = this.parent.getColumnByUid(destElem.firstElementChild.getAttribute('e-mappinguid'));\n var bool = col ? !col.lockColumn : true;\n return ((srcElem.parentElement.isEqualNode(destElem.parentElement) || this.parent.enableColumnVirtualization)\n || (this.parent.isFrozenGrid()\n && Array.prototype.indexOf.call(closestElement(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closestElement(destElem, 'thead').children, destElem.parentElement)))\n && this.targetParentContainerIndex(srcElem, destElem) > -1 && bool;\n };\n Reorder.prototype.chkDropAllCols = function (srcElem, destElem) {\n var isFound;\n var headers = this.getHeaderCells();\n var header;\n while (!isFound && headers.length > 0) {\n header = headers.pop();\n isFound = srcElem !== header && this.targetParentContainerIndex(srcElem, destElem) > -1;\n }\n return isFound;\n };\n Reorder.prototype.findColParent = function (col, cols, parent) {\n // eslint-disable-next-line no-self-assign\n parent = parent;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (col === cols[i]) {\n return true;\n }\n else if (cols[i].columns) {\n var cnt = parent.length;\n parent.push(cols[i]);\n if (!this.findColParent(col, cols[i].columns, parent)) {\n parent.splice(cnt, parent.length - cnt);\n }\n else {\n return true;\n }\n }\n }\n return false;\n };\n Reorder.prototype.getColumnsModel = function (cols) {\n var columnModel = [];\n var subCols = [];\n if (!this.parent.getFrozenColumns() && this.parent.isFrozenGrid()) {\n return this.parent.getColumns();\n }\n else {\n for (var i = 0, len = cols.length; i < len; i++) {\n columnModel.push(cols[i]);\n if (cols[i].columns) {\n subCols = subCols.concat(cols[i].columns);\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\n }\n return columnModel;\n };\n Reorder.prototype.headerDrop = function (e) {\n var gObj = this.parent;\n var dropElement = this.element.querySelector('.e-headercelldiv') || this.element.querySelector('.e-stackedheadercelldiv');\n var uId = dropElement.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uId);\n if (!closestElement(e.target, 'th') || (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column });\n return;\n }\n var destElem = closestElement(e.target, '.e-headercell');\n var destElemDiv = destElem.querySelector('.e-headercelldiv') || destElem.querySelector('.e-stackedheadercelldiv');\n var destElemUid = destElemDiv.getAttribute('e-mappinguid');\n if (!isNullOrUndefined(destElemUid)) {\n var destColumn = gObj.getColumnByUid(destElemUid);\n if (isNullOrUndefined(destColumn) || !destColumn.allowReordering || destColumn.lockColumn) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column, destColumn: destColumn });\n return;\n }\n }\n if (destElem && !(!this.chkDropPosition(this.element, destElem) || !this.chkDropAllCols(this.element, destElem))) {\n if (this.parent.enableColumnVirtualization) {\n var columns = this.parent.columns;\n var sourceUid_1 = this.element.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n var col = this.parent.columns.filter(function (col) { return col.uid === sourceUid_1; });\n var colMatchIndex_1 = null;\n var column_1 = col[0];\n var destUid_1 = destElem.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n columns.some(function (col, index) {\n if (col.uid === destUid_1) {\n colMatchIndex_1 = index;\n return col.uid === destUid_1;\n }\n return false;\n });\n if (!isNullOrUndefined(colMatchIndex_1)) {\n this.moveColumns(colMatchIndex_1, column_1);\n }\n }\n else {\n var newIndex = this.targetParentContainerIndex(this.element, destElem);\n var uid = this.element.firstElementChild.getAttribute('e-mappinguid');\n this.destElement = destElem;\n this.parent.notify(events.setReorderDestinationElement, { ele: destElem });\n if (uid) {\n this.moveColumns(newIndex, this.parent.getColumnByUid(uid));\n }\n else {\n var headers = this.getHeaderCells();\n var oldIdx = getElementIndex(this.element, headers);\n var columns = this.getColumnsModel(this.parent.columns);\n this.moveColumns(newIndex, columns[oldIdx]);\n }\n }\n }\n };\n Reorder.prototype.isActionPrevent = function (gObj) {\n return isActionPrevent(gObj);\n };\n Reorder.prototype.moveColumns = function (destIndex, column, reorderByColumn, preventRefresh) {\n var gObj = this.parent;\n if (this.isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.moveColumns, arg1: destIndex, arg2: column });\n return;\n }\n var isFrozen = !gObj.getFrozenColumns() && gObj.isFrozenGrid();\n var parent = this.getColParent(column, this.parent.columns);\n var cols = parent ? parent.columns : isFrozen ? this.parent.getColumns() : this.parent.columns;\n var srcIdx = inArray(column, cols);\n if (((this.parent.isFrozenGrid() && parent) || this.parent.lockcolPositionCount) && !reorderByColumn) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === column.field) {\n srcIdx = i;\n break;\n }\n }\n var col = this.parent.getColumnByUid(this.destElement.firstElementChild.getAttribute('e-mappinguid'));\n if (col) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === col.field) {\n destIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].headerText === this.destElement.innerText.trim()) {\n destIndex = i;\n }\n }\n }\n }\n if (!gObj.allowReordering || srcIdx === destIndex || srcIdx === -1 || destIndex === -1) {\n return;\n }\n cols.splice(destIndex, 0, cols.splice(srcIdx, 1)[0]);\n var args = { column: column, destIndex: destIndex, columns: cols, parent: parent, cancel: false };\n gObj.notify(events.refreshFrozenColumns, args);\n if (args.cancel) {\n return;\n }\n gObj.getColumns(true);\n gObj.notify(events.columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'reorder', fromIndex: destIndex, toIndex: srcIdx, toColumnUid: column.uid\n });\n }\n };\n Reorder.prototype.targetParentContainerIndex = function (srcElem, destElem) {\n var cols = !this.parent.getFrozenColumns() && this.parent.isFrozenGrid() ? this.parent.getColumns() :\n this.parent.columns;\n var headers = this.getHeaderCells();\n var flatColumns = this.getColumnsModel(cols);\n var parent = this.getColParent(flatColumns[getElementIndex(srcElem, headers)], cols);\n cols = parent ? parent.columns : cols;\n return inArray(flatColumns[getElementIndex(destElem, headers)], cols);\n };\n Reorder.prototype.getHeaderCells = function () {\n var frozenColumns = this.parent.getFrozenColumns();\n if (frozenColumns || this.parent.lockcolPositionCount) {\n var fTh = void 0;\n var mTh = void 0;\n var fHeaders = [];\n var fRows = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-columnheader'));\n if (frozenColumns) {\n var mRows = [].slice.call(this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).getElementsByClassName('e-columnheader'));\n for (var i = 0; i < fRows.length; i++) {\n fTh = [].slice.call(fRows[i].getElementsByClassName('e-headercell'));\n mTh = [].slice.call(mRows[i].getElementsByClassName('e-headercell'));\n var isAvail = void 0;\n for (var k = 0; k < fTh.length; k++) {\n for (var j = 0; j < mTh.length; j++) {\n if (mTh[j].innerText === fTh[k].innerText) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([fTh[k]]);\n }\n }\n for (var j = 0; j < mTh.length; j++) {\n fHeaders.push(mTh[j]);\n }\n }\n }\n else {\n for (var i = 0; i < fRows.length; i++) {\n mTh = [].slice.call(fRows[i].getElementsByClassName('e-headercell'));\n for (var k = 0; k < mTh.length; k++) {\n var isAvail = void 0;\n for (var j = k + 1; j < mTh.length; j++) {\n if (mTh[j].innerText === mTh[k].innerText) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([mTh[k]]);\n }\n }\n }\n }\n return fHeaders;\n }\n else {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n }\n };\n Reorder.prototype.getColParent = function (column, columns) {\n var parents = [];\n this.findColParent(column, columns, parents);\n return parents[parents.length - 1];\n };\n Reorder.prototype.reorderSingleColumn = function (fromFName, toFName) {\n var fColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === fromFName; })[0]\n : this.parent.getColumnByField(fromFName);\n var toColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === toFName; })[0]\n : this.parent.getColumnByField(toFName);\n if ((!isNullOrUndefined(fColumn) && (!fColumn.allowReordering || fColumn.lockColumn)) ||\n (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || fColumn.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: fColumn, destColumn: toColumn });\n return;\n }\n var column = toColumn;\n var parent = this.getColParent(column, this.parent.columns);\n var columns = parent ? parent.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, fColumn, true);\n }\n };\n Reorder.prototype.reorderMultipleColumns = function (fromFNames, toFName) {\n var toIndex = this.parent.getColumnIndexByField(toFName);\n var toColumn = this.parent.getColumnByField(toFName);\n if (toIndex < 0 || (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n return;\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByField(fromFNames[i]);\n if (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn)) {\n return;\n }\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByIndex(toIndex);\n var parent_1 = this.getColParent(column, this.parent.columns);\n var columns = parent_1 ? parent_1.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, this.parent.getColumnByField(fromFNames[i]), true, true);\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n };\n Reorder.prototype.moveTargetColumn = function (column, toIndex) {\n if (toIndex > -1) {\n this.moveColumns(toIndex, column, true);\n }\n };\n Reorder.prototype.reorderSingleColumnByTarget = function (fieldName, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByField(fieldName), toIndex);\n };\n Reorder.prototype.reorderMultipleColumnByTarget = function (fieldName, toIndex) {\n for (var i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[i], toIndex);\n }\n };\n /**\n * Changes the position of the Grid columns by field names.\n *\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Reorder.prototype.reorderColumns = function (fromFName, toFName) {\n if (typeof fromFName === 'string') {\n this.reorderSingleColumn(fromFName, toFName);\n this.fromCol = fromFName;\n }\n else {\n this.reorderMultipleColumns(fromFName, toFName);\n this.fromCol = fromFName[0];\n }\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByIndex(fromIndex), toIndex);\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (typeof fieldName === 'string') {\n this.reorderSingleColumnByTarget(fieldName, toIndex);\n }\n else {\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\n }\n };\n Reorder.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.createReorderElement();\n }\n };\n Reorder.prototype.createReorderElement = function (e) {\n if (e && e.args.isXaxis) {\n this.setDisplay('none');\n }\n var header = this.parent.element.querySelector('.' + literals.headerContent);\n this.upArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderuparrow e-reorderuparrow', attrs: { style: 'display:none' } }));\n this.downArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderdownarrow e-reorderdownarrow', attrs: { style: 'display:none' } }));\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specified the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, { type: events.actionComplete }));\n var target = this.fromCol && this.parent.getColumnHeaderByField(this.fromCol);\n if (target) {\n this.parent.focusModule.onClick({ target: target }, true);\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n remove(this.upArrow);\n remove(this.downArrow);\n this.parent.off(events.headerDrop, this.headerDrop);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.reorderComplete, this.onActionComplete);\n this.parent.off(events.columnDrag, this.drag);\n this.parent.off(events.columnDragStart, this.dragStart);\n this.parent.off(events.columnDragStop, this.dragStop);\n this.parent.off(events.headerRefreshed, this.createReorderElement);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n //call ejdrag and drop destroy\n };\n Reorder.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\n // eslint-disable-next-line no-case-declarations\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n var visibleCols = gObj.getVisibleColumns();\n var index = visibleCols.indexOf(column);\n var toCol = e.action === 'ctrlLeftArrow' ? visibleCols[index - 1] : visibleCols[index + 1];\n if (toCol && toCol.field && column.field) {\n this.reorderColumns(column.field, toCol.field);\n }\n }\n break;\n }\n };\n Reorder.prototype.drag = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var closest = closestElement(target, '.e-headercell:not(.e-stackedHeaderCell)');\n var cloneElement = gObj.element.querySelector('.e-cloneproperties');\n var content = gObj.isFrozenGrid() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n var isLeft = this.x > getPosition(e.event).x + content.scrollLeft;\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n this.setDisplay('none');\n this.stopTimer();\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n this.updateScrollPostion(e.event);\n if (closest && !closest.isEqualNode(this.element)) {\n target = closest;\n //consider stacked, detail header cell\n if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target))) {\n this.updateArrowPosition(target, isLeft);\n classList(target, ['e-allowDrop', 'e-reorderindicate'], []);\n }\n else if (!(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n gObj.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: e.column });\n };\n Reorder.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var x = getPosition(e).x;\n var cliRect = this.parent.element.getBoundingClientRect();\n var cliRectBaseRight = cliRect.right;\n if (this.parent.isFrozenGrid()) {\n this.updateFrozenScrollPosition(x, cliRect);\n }\n else {\n var cliRectBaseLeft = cliRect.left;\n var scrollElem_1 = this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, false); }, 50);\n }\n }\n };\n Reorder.prototype.updateFrozenScrollPosition = function (x, cliRect) {\n var _this = this;\n var scrollElem = this.parent.getContent().querySelector('.' + literals.movableContent);\n var mhdrCliRect = this.parent.element.querySelector('.' + literals.movableHeader).getBoundingClientRect();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var cliRectBaseRight = right ? mhdrCliRect.right : cliRect.right;\n var cliRectBaseLeft = left ? mhdrCliRect.left : cliRect.left;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, false); }, 50);\n }\n };\n Reorder.prototype.setScrollLeft = function (scrollElem, isLeft) {\n var scrollLeft = scrollElem.scrollLeft;\n scrollElem.scrollLeft = scrollElem.scrollLeft + (isLeft ? -5 : 5);\n if (scrollLeft !== scrollElem.scrollLeft) {\n this.setDisplay('none');\n }\n };\n Reorder.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Reorder.prototype.updateArrowPosition = function (target, isLeft) {\n var cliRect = target.getBoundingClientRect();\n var cliRectBase = this.parent.element.getBoundingClientRect();\n if ((isLeft && cliRect.left < cliRectBase.left) || (!isLeft && cliRect.right > cliRectBase.right)) {\n return;\n }\n if (this.parent.isFrozenGrid() && target.classList.contains('e-headercell')) {\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var dropEle = this.element.querySelector('.e-headercelldiv');\n var dropCol = dropEle ? this.parent.getColumnByUid(dropEle.getAttribute('data-uid')) : null;\n var col = this.parent.getColumnByUid(target.firstElementChild.getAttribute('e-mappinguid'));\n var fhdrWidth = Math.round(this.parent.getFrozenVirtualHeader().getBoundingClientRect().right);\n var mhdrRight = Math.round(this.parent.getMovableVirtualHeader().getBoundingClientRect().right);\n if (col) {\n if (left && !right && this.parent.getNormalizedColumnIndex(col.uid) >= left\n && ((isLeft && Math.round(cliRect.left) < fhdrWidth) || (!isLeft && mhdrRight < cliRect.right))) {\n return;\n }\n if (!left && right && dropCol && dropCol.getFreezeTableName() !== col.getFreezeTableName()\n && (!isLeft && Math.round(cliRect.right) < fhdrWidth)) {\n return;\n }\n }\n }\n this.upArrow.style.top = cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = cliRect.top - cliRectBase.top - 7 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = (isLeft ? cliRect.left : cliRect.right) - cliRectBase.left - 4 + 'px';\n this.setDisplay('');\n };\n Reorder.prototype.dragStart = function (e) {\n var gObj = this.parent;\n var target = e.target;\n this.element = target.classList.contains('e-headercell') ? target :\n parentsUntil(target, 'e-headercell');\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var content = gObj.isFrozenGrid() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n this.x = getPosition(e.event).x + content.scrollLeft;\n gObj.trigger(events.columnDragStart, {\n target: target, draggableType: 'headercell', column: e.column\n });\n };\n Reorder.prototype.dragStop = function (e) {\n var gObj = this.parent;\n this.setDisplay('none');\n this.stopTimer();\n if (!e.cancel) {\n gObj.trigger(events.columnDrop, { target: e.target, draggableType: 'headercell', column: e.column });\n }\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n };\n Reorder.prototype.setDisplay = function (display) {\n this.upArrow.style.display = display;\n this.downArrow.style.display = display;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} return the module name\n * @private\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { RowModelGenerator } from '../services/row-model-generator';\nimport { splitFrozenRowObjectCells } from '../base/util';\n/**\n * FreezeRowModelGenerator is used to generate grid data rows with freeze row and column.\n *\n * @hidden\n */\nvar FreezeRowModelGenerator = /** @class */ (function () {\n function FreezeRowModelGenerator(parent) {\n this.parent = parent;\n this.rowModelGenerator = new RowModelGenerator(this.parent);\n }\n FreezeRowModelGenerator.prototype.generateRows = function (data, notifyArgs, virtualRows) {\n var tableName;\n if (notifyArgs.renderFrozenRightContent || (notifyArgs.renderMovableContent && !this.parent.enableVirtualization)) {\n tableName = 'frozen-right';\n }\n else if (notifyArgs.renderMovableContent || notifyArgs.isFrozen) {\n tableName = 'movable';\n }\n else {\n tableName = this.parent.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n }\n if (notifyArgs.requestType === 'virtualscroll' && notifyArgs.virtualInfo.sentinelInfo.axis === 'X') {\n if (tableName !== 'movable') {\n return null;\n }\n }\n var row = this.parent.enableVirtualization && !notifyArgs.isFrozenRowsRender ? virtualRows\n : this.rowModelGenerator.generateRows(data, notifyArgs);\n for (var i = 0, len = row.length; i < len; i++) {\n row[i].cells = splitFrozenRowObjectCells(this.parent, row[i].cells, tableName);\n }\n return row;\n };\n return FreezeRowModelGenerator;\n}());\nexport { FreezeRowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, addClass, isNullOrUndefined, extend, isUndefined, Browser } from '@syncfusion/ej2-base';\nimport { HeaderRender } from './header-renderer';\nimport { ContentRender } from './content-renderer';\nimport { FreezeRowModelGenerator } from '../services/freeze-row-model-generator';\nimport * as events from '../base/constant';\nimport { renderMovable, getScrollBarWidth, wrap, addRemoveEventListener } from '../base/util';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport * as literals from '../base/string-literals';\n/**\n * Freeze module is used to render grid content with frozen rows and columns\n *\n * @hidden\n */\nvar FreezeContentRender = /** @class */ (function (_super) {\n __extends(FreezeContentRender, _super);\n function FreezeContentRender(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isInitialRender = true;\n _this.widthService = locator.getService('widthService');\n _this.addEventListener();\n return _this;\n }\n FreezeContentRender.prototype.addEventListener = function () {\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n this.parent.addEventListener(events.batchAdd, this.batchAdd.bind(this));\n this.parent.on(events.batchCancel, this.batchAdd.bind(this));\n this.parent.addEventListener(events.batchDelete, this.batchAdd.bind(this));\n this.parent.on(events.setHeightToFrozenElement, this.refreshScrollOffset);\n this.parent.on(events.columnVisibilityChanged, this.widthService.refreshFrozenScrollbar, this);\n };\n FreezeContentRender.prototype.batchAdd = function (args) {\n var isAdd = args.name !== 'batchCancel'\n && !(this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top');\n if (this.parent.height !== 'auto' && (isAdd || args.name === 'batchCancel' || args.name === 'batchDelete')) {\n this.refreshScrollOffset();\n var height = this.getTable().offsetHeight;\n if (args.name === 'add' && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.parent.getContent().firstChild.scroll(0, height);\n }\n }\n };\n FreezeContentRender.prototype.setHeightToContent = function (height) {\n this.getFrozenContent().style.height = height.toString() + 'px';\n this.getMovableContent().style.height = height.toString() + 'px';\n };\n FreezeContentRender.prototype.actionComplete = function (args) {\n if (this.parent.editSettings.mode !== 'Dialog' && (args.requestType === 'add' || (args.requestType === 'cancel'\n && args.row.classList.contains(literals.addedRow)))\n && (!this.parent.frozenRows || this.parent.editSettings.newRowPosition === 'Bottom') && this.parent.height !== 'auto') {\n this.refreshScrollOffset();\n var height = this.getTable().offsetHeight;\n if (args.requestType === 'add' && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.parent.getContent().firstChild.scroll(0, height);\n }\n }\n };\n FreezeContentRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.removeEventListener(events.actionComplete, this.actionComplete);\n this.parent.removeEventListener(events.batchAdd, this.batchAdd);\n this.parent.off(events.columnVisibilityChanged, this.widthService.refreshFrozenScrollbar);\n };\n FreezeContentRender.prototype.renderPanel = function () {\n _super.prototype.renderPanel.call(this);\n var fDiv = this.parent.element.querySelector('.' + literals.frozenContent);\n var mDiv = this.parent.element.querySelector('.' + literals.movableContent);\n if (isNullOrUndefined(fDiv)) {\n fDiv = this.parent.createElement('div', { className: 'e-frozencontent e-frozen-left-content' });\n mDiv = this.parent.createElement('div', { className: literals.movableContent });\n this.getPanel().querySelector('.' + literals.content).appendChild(fDiv);\n this.getPanel().querySelector('.' + literals.content).appendChild(mDiv);\n mDiv.style.scrollbarWidth = 'none';\n }\n this.setFrozenContent(fDiv);\n this.setMovableContent(mDiv);\n if (Browser.userAgent.indexOf('Mac OS') > -1 && Browser.info.name === 'safari' && !this.parent.enableVirtualization) {\n this.getPanel().firstElementChild.classList.add('e-mac-safari');\n }\n };\n FreezeContentRender.prototype.renderFrozenRigthPanel = function () {\n _super.prototype.renderPanel.call(this);\n };\n FreezeContentRender.prototype.renderEmpty = function (tbody) {\n _super.prototype.renderEmpty.call(this, tbody);\n this.getMovableContent().querySelector(literals.tbody).innerHTML = '';\n addClass([this.getMovableContent().querySelector(literals.tbody).querySelector('tr')], ['e-emptyrow']);\n this.getFrozenContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getVisibleFrozenColumns();\n this.getFrozenContent().style.borderRightWidth = '0px';\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).innerHTML = '';\n this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).innerHTML = '';\n }\n };\n FreezeContentRender.prototype.renderFrozenRightEmpty = function (tbody) {\n _super.prototype.renderEmpty.call(this, tbody);\n };\n FreezeContentRender.prototype.setFrozenContent = function (ele) {\n this.frozenContent = ele;\n };\n /**\n * @param {Element} ele - specifies the element\n * @returns {void}\n * @hidden\n */\n FreezeContentRender.prototype.setMovableContent = function (ele) {\n this.movableContent = ele;\n };\n FreezeContentRender.prototype.getFrozenContent = function () {\n return this.frozenContent;\n };\n FreezeContentRender.prototype.getMovableContent = function () {\n return this.movableContent;\n };\n FreezeContentRender.prototype.getModelGenerator = function () {\n return new FreezeRowModelGenerator(this.parent);\n };\n FreezeContentRender.prototype.renderFrozenRightTable = function () {\n _super.prototype.renderTable.call(this);\n };\n FreezeContentRender.prototype.renderTable = function () {\n var mTbl;\n if (this.getFrozenContent().querySelector('.' + literals.table) == null) {\n _super.prototype.renderTable.call(this);\n this.getFrozenContent().appendChild(this.getTable());\n mTbl = this.getTable().cloneNode(true);\n this.getMovableContent().appendChild(mTbl);\n }\n else {\n this.setTable(this.getFrozenContent().querySelector('.' + literals.table));\n this.setColGroup(this.parent.element.querySelector('.' + literals.gridHeader).querySelector(literals.colGroup).cloneNode(true));\n this.getFrozenContent().querySelector('.' + literals.table).appendChild(this.getColGroup());\n mTbl = this.getMovableContent().querySelector('.' + literals.table);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n }\n if (this.getMovableContent().querySelector(literals.colGroup)) {\n remove(this.getMovableContent().querySelector(literals.colGroup));\n }\n var colGroup = ((this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n var style = this.parent.enableVirtualization ? '' : 'flex';\n this.getPanel().firstChild.style.display = style;\n this.renderHorizontalScrollbar('e-frozenscrollbar e-frozen-left-scrollbar', this.getScrollbarDisplay());\n };\n FreezeContentRender.prototype.getScrollbarDisplay = function () {\n var frozenDisplay = '';\n if ((this.parent.getFrozenColumns() && !this.parent.getVisibleFrozenColumns())\n || (this.parent.getFrozenLeftColumnsCount() && !this.parent.getVisibleFrozenLeftCount())) {\n frozenDisplay = 'none';\n }\n return frozenDisplay;\n };\n FreezeContentRender.prototype.renderHorizontalScrollbar = function (className, display, isRight) {\n var left = this.parent.createElement('div', { className: className, styles: 'display:' + display });\n var movable = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(movable, scrollbarHeight);\n this.setScrollbarHeight(child, scrollbarHeight);\n movable.appendChild(child);\n this.appendScrollbar(left, movable, isRight);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FreezeContentRender.prototype.appendScrollbar = function (frozen, movable, isRight) {\n var parent = this.parent.createElement('div', { className: 'e-scrollbar', styles: 'display: flex' });\n parent.appendChild(frozen);\n parent.appendChild(movable);\n this.parent.getContent().appendChild(parent);\n };\n FreezeContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * @param {NotifyArgs} args - specifies the NotifyArgs\n * @param {freezeTable} tableName - specifies the Freeze Table\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FreezeContentRender.prototype.setIsFrozen = function (args, tableName) {\n args.isFrozen = !args.isFrozen;\n };\n /**\n * @param {Row[]} modelData - specifies the modeldata\n * @param {NotifyArgs} args - specifies the args\n * @returns {freezeTable} returns the freeze table\n * @hidden\n */\n FreezeContentRender.prototype.setTbody = function (modelData, args) {\n var tableName;\n if (isNullOrUndefined(modelData[0].cells[0])) {\n this.getMovableContent().querySelector(literals.tbody).innerHTML = '';\n }\n var cell = modelData[0].cells[0];\n var idx = cell.index;\n if (isUndefined(idx) && this.parent.isRowDragable()) {\n cell = modelData[0].cells[1];\n idx = cell.index;\n }\n if (idx === 0) {\n this.getPanel().firstChild.style.overflowX = 'hidden';\n if (this.parent.enableColumnVirtualization) {\n this.getMovableContent().style.overflowX = 'hidden';\n }\n }\n if (this.parent.enableColumnVirtualization && args.renderMovableContent\n && args.requestType === 'virtualscroll' && this.getMovableContent().scrollLeft > 0 && args.virtualInfo.columnIndexes[0] !== 0) {\n idx = this.parent.getFrozenColumns();\n }\n if (cell && cell.column) {\n tableName = cell.column.getFreezeTableName();\n }\n this.setIdx(idx);\n return tableName;\n };\n /**\n * @param {string} tableName - specifies the table name\n * @returns {void}\n * @hidden\n */\n FreezeContentRender.prototype.splitRows = function (tableName) {\n if (tableName === literals.frozenLeft) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else {\n this.movableRows = this.rows;\n }\n };\n /**\n * @param {NotifyArgs} args - specifies the notifyargs\n * @param {string} tableName - specifies the tableName\n * @returns {void}\n * @hidden\n */\n FreezeContentRender.prototype.renderNextFrozentPart = function (args, tableName) {\n var isVFTable = this.parent.enableVirtualization;\n if (tableName === literals.frozenLeft) {\n if (isVFTable) {\n args.renderMovableContent = true;\n }\n this.refreshContentRows(extend({}, args));\n }\n };\n FreezeContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n if (this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate)) {\n tbody = frag;\n }\n else {\n tbody.appendChild(frag);\n }\n if (tableName === literals.frozenLeft) {\n this.isLoaded = false;\n this.getFrozenContent().querySelector('table').appendChild(tbody);\n }\n else {\n this.refreshTbody(tbody);\n this.isLoaded = true;\n this.getMovableContent().querySelector('table').appendChild(tbody);\n this.refreshHeight();\n this.refreshScrollOffset();\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.isInitialRender) {\n this.parent.scrollModule.setHeight();\n this.isInitialRender = false;\n }\n };\n FreezeContentRender.prototype.refreshScrollOffset = function () {\n if (this.parent.height !== 'auto') {\n var height = this.getTable().offsetHeight + 1;\n this.setHeightToContent(height);\n }\n this.parent.notify(events.refreshFrozenHeight, {});\n };\n /**\n * @param {string} tableName - specifies the table name\n * @returns {HTMLElement} returns the Html element\n * @hidden\n */\n FreezeContentRender.prototype.getFrozenHeader = function (tableName) {\n if (tableName === literals.frozenLeft) {\n return this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody);\n }\n else {\n return this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n };\n FreezeContentRender.prototype.refreshTbody = function (tbody) {\n if (tbody.childElementCount < 1) {\n tbody.appendChild(this.parent.createElement('tr').appendChild(this.parent.createElement('td')));\n }\n };\n FreezeContentRender.prototype.refreshHeight = function () {\n if (!this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n }\n this.getFrozenContent().style.borderRightWidth = '1px';\n };\n FreezeContentRender.prototype.setIdx = function (idx) {\n this.idx = idx;\n };\n FreezeContentRender.prototype.getIdx = function () {\n return this.idx;\n };\n /**\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n FreezeContentRender.prototype.getTbody = function (tableName) {\n if (tableName === literals.frozenLeft) {\n return this.getTable().querySelector(literals.tbody);\n }\n else {\n return this.getMovableContent().querySelector(literals.tbody);\n }\n };\n return FreezeContentRender;\n}(ContentRender));\nexport { FreezeContentRender };\nvar FreezeRender = /** @class */ (function (_super) {\n __extends(FreezeRender, _super);\n function FreezeRender(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.addEventListener();\n return _this;\n }\n FreezeRender.prototype.addEventListener = function () {\n this.eventHandler = [{ event: events.freezeRender, handler: this.refreshFreeze },\n { event: events.frozenHeight, handler: this.setFrozenHeight },\n { event: events.uiUpdate, handler: this.enableAfterRender }];\n addRemoveEventListener(this.parent, this.eventHandler, true, this);\n };\n FreezeRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventHandler, false);\n };\n FreezeRender.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n this.rfshMovable();\n this.updateColgroup();\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n FreezeRender.prototype.renderPanel = function () {\n var fDiv = this.parent.element.querySelector('.' + literals.frozenHeader);\n var mDiv = this.parent.element.querySelector('.' + literals.movableHeader);\n _super.prototype.renderPanel.call(this);\n if (isNullOrUndefined(fDiv)) {\n fDiv = this.parent.createElement('div', { className: 'e-frozenheader e-frozen-left-header' });\n mDiv = this.parent.createElement('div', { className: literals.movableHeader });\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(fDiv);\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(mDiv);\n }\n this.setFrozenHeader(fDiv);\n this.setMovableHeader(mDiv);\n };\n FreezeRender.prototype.renderFrozenRightPanel = function () {\n _super.prototype.renderPanel.call(this);\n };\n FreezeRender.prototype.renderFrozenRightTable = function () {\n _super.prototype.renderTable.call(this);\n };\n FreezeRender.prototype.refreshUI = function () {\n var tbody = this.getMovableHeader().querySelector(literals.tbody);\n remove(this.getMovableHeader().querySelector('table'));\n _super.prototype.refreshUI.call(this);\n this.rfshMovable();\n this.getMovableHeader().querySelector(literals.tbody).innerHTML = tbody.innerHTML;\n this.updateColgroup();\n this.widthService.setWidthToColumns();\n if (!this.parent.enableVirtualization) {\n this.widthService.setWidthToTable();\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap([].slice.call(this.movableHeader.querySelectorAll('tr.e-columnheader')), true);\n }\n this.parent.updateDefaultCursor();\n renderMovable(this.parent.getContentTable().querySelector(literals.colGroup), this.parent.getFrozenColumns(), this.parent);\n this.widthService.refreshFrozenScrollbar();\n this.initializeHeaderDrag();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n FreezeRender.prototype.refreshFrozenLeftUI = function () {\n _super.prototype.refreshUI.call(this);\n };\n FreezeRender.prototype.rfshMovable = function () {\n this.getFrozenHeader().appendChild(this.getTable());\n this.getMovableHeader().appendChild(this.createHeader(undefined, 'movable'));\n this.refreshStackedHdrHgt();\n this.addMovableFirstCls();\n };\n FreezeRender.prototype.addMovableFirstCls = function () {\n if (this.parent.getVisibleFrozenColumns()) {\n var movablefirstcell = [].slice.call(this.parent.element.querySelector('.' + literals.movableHeader).querySelector('thead').getElementsByClassName('e-columnheader'));\n var len = movablefirstcell.length;\n for (var i = 0; i < len; i++) {\n var cells = 'cells';\n var element = movablefirstcell[i][cells][0];\n if (element) {\n addClass([element], ['e-movablefirst']);\n if (movablefirstcell[i][cells][0].rowSpan > 1) {\n i = i + (movablefirstcell[i][cells][0].rowSpan - 1);\n }\n }\n }\n }\n };\n FreezeRender.prototype.refreshFreeze = function (obj) {\n if (obj.case === 'filter') {\n var filterRow = this.getTable().querySelector('.e-filterbar');\n if (this.parent.allowFiltering && filterRow && this.getMovableHeader().querySelector('thead')) {\n this.getMovableHeader().querySelector('thead')\n .appendChild(this.filterRenderer(filterRow, this.parent.getFrozenColumns()));\n var elements = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n var args = {\n element: elem, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.bindInitialEvent(args);\n }\n }\n }\n else if (obj.case === 'textwrap' || obj.case === 'refreshHeight') {\n this.refreshHeight(obj);\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n FreezeRender.prototype.refreshHeight = function (obj) {\n var fRows;\n var mRows;\n var fHdr = this.getFrozenHeader();\n var mHdr = this.getMovableHeader();\n var cont = this.parent.getContent();\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n var hdrClassList = this.parent.getHeaderContent().querySelector('.' + literals.headerContent).classList;\n if (obj.case === 'textwrap') {\n if (wrapMode !== 'Header' || obj.isModeChg) {\n fRows = cont.querySelector('.' + literals.frozenContent).querySelectorAll('tr');\n mRows = cont.querySelector('.' + literals.movableContent).querySelectorAll('tr');\n this.setWrapHeight(fRows, mRows, obj.isModeChg, true);\n }\n if (wrapMode === 'Content' && this.parent.allowTextWrap) {\n hdrClassList.add('e-wrap');\n }\n else {\n hdrClassList.remove('e-wrap');\n }\n if (wrapMode === 'Both' || obj.isModeChg) {\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n }\n else {\n mRows = mHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n fRows = fHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n }\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, this.colDepth > 1);\n }\n this.refreshStackedHdrHgt();\n }\n else if (obj.case === 'refreshHeight') {\n this.setWrapHeight(cont.querySelector('.' + literals.frozenContent).querySelectorAll('tr'), cont.querySelector('.' + literals.movableContent).querySelectorAll('tr'), obj.isModeChg);\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.setWrapHeight(fHdr.querySelectorAll('tr'), mHdr.querySelectorAll('tr'), obj.isModeChg);\n }\n }\n };\n FreezeRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'scroll') {\n this.setFrozenHeight();\n }\n };\n FreezeRender.prototype.updateResizeHandler = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[i].style.height = elements[i].parentElement.offsetHeight + 'px';\n }\n };\n FreezeRender.prototype.setWrapHeight = function (fRows, mRows, isModeChg, isContReset, isStackedHdr) {\n var fRowHgt;\n var mRowHgt;\n var isWrap = this.parent.allowTextWrap;\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n var tHead = this.parent.getHeaderContent().querySelector('thead');\n var tBody = this.parent.getHeaderContent().querySelector(literals.tbody);\n var height = [];\n var width = [];\n for (var i = 0, len = fRows.length; i < len; i++) { //separate loop for performance issue\n if (!isNullOrUndefined(fRows[i]) && !isNullOrUndefined(mRows[i])) {\n height[i] = fRows[i].getBoundingClientRect().height; //https://pagebuildersandwich.com/increased-plugins-performance-200/\n width[i] = mRows[i].getBoundingClientRect().height;\n }\n }\n for (var i = 0, len = fRows.length; i < len; i++) {\n if (isModeChg && ((wrapMode === 'Header' && isContReset) || ((wrapMode === 'Content' && tHead.contains(fRows[i]))\n || (wrapMode === 'Header' && tBody.contains(fRows[i])))) || isStackedHdr) {\n fRows[i].style.height = null;\n mRows[i].style.height = null;\n }\n fRowHgt = height[i];\n mRowHgt = width[i];\n if (!isNullOrUndefined(fRows[i]) && fRows[i].childElementCount && ((isWrap && fRowHgt < mRowHgt) ||\n (!isWrap && fRowHgt < mRowHgt) || (this.parent.allowResizing && this.parent.resizeModule &&\n this.parent.resizeModule.isFrozenColResized === false))) {\n fRows[i].style.height = mRowHgt + 'px';\n }\n if (mRows && !isNullOrUndefined(mRows[i]) && mRows[i].childElementCount && ((isWrap && fRowHgt > mRowHgt) ||\n (!isWrap && fRowHgt > mRowHgt) || (this.parent.allowResizing && this.parent.resizeModule &&\n this.parent.resizeModule.isFrozenColResized === true))) {\n mRows[i].style.height = fRowHgt + 'px';\n }\n }\n if (isWrap && this.parent.height !== 'auto') {\n this.setFrozenHeight();\n }\n };\n FreezeRender.prototype.setFrozenHeight = function (height) {\n if (height === void 0) { height = getScrollBarWidth(); }\n var movableContentHeight = this.parent.element.querySelector('.' + literals.movableContent).getBoundingClientRect().height;\n var movableContent = this.parent.element.querySelector('.' + literals.movableContent);\n var frozenContent = this.parent.element.querySelector('.' + literals.frozenContent);\n var contentScrollWidth = this.parent.getContent().scrollWidth;\n var contentTableScrollWidth = this.parent.element.querySelector('.e-movablecontent table').scrollWidth +\n this.parent.getContentTable().scrollWidth;\n if (movableContent.scrollWidth - movableContent.clientWidth) {\n frozenContent.style.height = movableContentHeight -\n height + 'px';\n frozenContent.style.borderBottom = '';\n }\n else {\n frozenContent.style.height = movableContentHeight + 'px';\n if (((frozenContent.scrollHeight <= frozenContent.clientHeight) ||\n (movableContent.scrollHeight <= movableContent.clientHeight))\n && contentScrollWidth === contentTableScrollWidth) {\n this.parent.scrollModule.removePadding();\n }\n frozenContent.style.borderBottom = '0px';\n }\n };\n FreezeRender.prototype.refreshStackedHdrHgt = function () {\n var fRowSpan;\n var mRowSpan;\n var fTr = [].slice.call(this.getFrozenHeader().getElementsByClassName('e-columnheader'));\n var mTr = [].slice.call(this.getMovableHeader().getElementsByClassName('e-columnheader'));\n for (var i = 0, len = fTr.length; i < len; i++) {\n fRowSpan = this.getRowSpan(fTr[i]);\n mRowSpan = this.getRowSpan(mTr[i]);\n if (fRowSpan.min > 1) {\n this.updateStackedHdrRowHgt(i, fRowSpan.max, fTr[i], mTr);\n }\n else if (mRowSpan.min > 1) {\n this.updateStackedHdrRowHgt(i, mRowSpan.max, mTr[i], fTr);\n }\n }\n if (this.parent.allowResizing) {\n this.updateResizeHandler();\n }\n };\n FreezeRender.prototype.getRowSpan = function (row) {\n var rSpan;\n var minRowSpan;\n var maxRowSpan;\n for (var i = 0, len = row.childElementCount; i < len; i++) {\n if (i === 0) {\n minRowSpan = row.children[0].rowSpan;\n }\n rSpan = row.children[i].rowSpan;\n minRowSpan = Math.min(rSpan, minRowSpan);\n maxRowSpan = Math.max(rSpan, minRowSpan);\n }\n return { min: minRowSpan, max: maxRowSpan };\n };\n FreezeRender.prototype.updateStackedHdrRowHgt = function (idx, maxRowSpan, row, rows) {\n var height = 0;\n for (var i = 0; i < maxRowSpan; i++) {\n height += rows[idx + i].style.height ?\n parseInt(rows[idx + i].style.height, 10) : rows[idx + i].offsetHeight;\n }\n row.style.height = height + 'px';\n };\n FreezeRender.prototype.setFrozenHeader = function (ele) {\n this.frozenHeader = ele;\n };\n /**\n * @param {Element} ele - specifies the element\n * @returns {void}\n * @hidden\n */\n FreezeRender.prototype.setMovableHeader = function (ele) {\n this.movableHeader = ele;\n };\n FreezeRender.prototype.getFrozenHeader = function () {\n return this.frozenHeader;\n };\n FreezeRender.prototype.getMovableHeader = function () {\n return this.movableHeader;\n };\n /**\n * @returns {void}\n * @hidden\n */\n FreezeRender.prototype.updateColgroup = function () {\n var mTable = this.getMovableHeader().querySelector('table');\n remove(this.getMovableHeader().querySelector(literals.colGroup));\n mTable.insertBefore(renderMovable(this.getFrozenHeader().querySelector(literals.colGroup), this.parent.getFrozenColumns(), this.parent), mTable.querySelector('thead'));\n };\n FreezeRender.prototype.filterRenderer = function (ele, frozenColumn, total) {\n var clone = ele.cloneNode(true);\n clone.innerHTML = '';\n var end = total ? total : this.parent.getColumns().length;\n for (var i = frozenColumn; i < end; i++) {\n clone.appendChild(ele.removeChild(ele.children[frozenColumn]));\n }\n return clone;\n };\n return FreezeRender;\n}(HeaderRender));\nexport { FreezeRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, addClass, isNullOrUndefined, extend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { FreezeContentRender, FreezeRender } from './freeze-renderer';\nimport * as events from '../base/constant';\nimport { wrap, parentsUntil, addRemoveEventListener } from '../base/util';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnFreezeHeaderRenderer is used to freeze the columns header at right and left\n *\n * @hidden\n */\nvar ColumnFreezeHeaderRenderer = /** @class */ (function (_super) {\n __extends(ColumnFreezeHeaderRenderer, _super);\n function ColumnFreezeHeaderRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.addEventListener();\n return _this;\n }\n ColumnFreezeHeaderRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.freezeRender, handler: this.refreshFreeze },\n { event: events.refreshFrozenColumns, handler: this.refreshFrozenColumns },\n { event: events.setReorderDestinationElement, handler: this.setReorderElement },\n { event: events.columnVisibilityChanged, handler: this.setVisible }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n ColumnFreezeHeaderRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ColumnFreezeHeaderRenderer.prototype.setReorderElement = function (args) {\n this.destEle = args.ele;\n };\n ColumnFreezeHeaderRenderer.prototype.refreshFrozenColumns = function (args) {\n if (!args.parent) {\n this.parent.setProperties({ columns: args.columns }, true);\n }\n var isFrozenLeft = parentsUntil(this.destEle, 'e-frozen-left-header');\n var isFrozenRight = parentsUntil(this.destEle, 'e-frozen-right-header');\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n args.column.freeze = null;\n if (isFrozenLeft) {\n args.column.freeze = 'Left';\n }\n else if (isFrozenRight) {\n args.column.freeze = 'Right';\n }\n this.parent.setFrozenCount();\n args.cancel = left !== this.parent.getFrozenLeftColumnsCount() || right !== this.parent.getFrozenRightColumnsCount();\n if (args.cancel) {\n this.parent.refreshColumns();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.setWrapHeight = function (fRows, mRows, isModeChg, isContReset, isStackedHdr, frRows) {\n var fRowHgt;\n var mRowHgt;\n var frRowHgt;\n var isWrap = this.parent.allowTextWrap;\n var tBody = this.parent.getHeaderContent().querySelector(literals.tbody);\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n var tHead = this.parent.getHeaderContent().querySelector('thead');\n var height = [];\n var width = [];\n var rightHeight = [];\n for (var i = 0, len = fRows.length; i < len; i++) { //separate loop for performance issue\n if (!isNullOrUndefined(fRows[i]) && !isNullOrUndefined(mRows[i])) {\n if (frRows) {\n rightHeight[i] = frRows[i].getBoundingClientRect().height;\n }\n width[i] = mRows[i].getBoundingClientRect().height;\n height[i] = fRows[i].getBoundingClientRect().height; //https://pagebuildersandwich.com/increased-plugins-performance-200/\n }\n }\n for (var i = 0, len = fRows.length; i < len; i++) {\n if (isModeChg && (((wrapMode === 'Content' && tHead.contains(fRows[i]))\n || (wrapMode === 'Header' && tBody.contains(fRows[i]))) || (wrapMode === 'Header' && isContReset)) || isStackedHdr) {\n if (frRows[i]) {\n frRows[i].style.height = null;\n }\n fRows[i].style.height = null;\n mRows[i].style.height = null;\n }\n fRowHgt = height[i];\n mRowHgt = width[i];\n frRowHgt = rightHeight[i] ? rightHeight[i] : 0;\n var maxHeight = Math.max(fRowHgt, mRowHgt, frRowHgt);\n if (!isNullOrUndefined(fRows[i]) && fRows[i].childElementCount && ((isWrap && fRowHgt < maxHeight) ||\n (!isWrap && fRowHgt < maxHeight) || (this.parent.allowResizing && this.parent.resizeModule &&\n this.parent.resizeModule.isFrozenColResized === false))) {\n fRows[i].style.height = maxHeight + 'px';\n }\n if (mRows && !isNullOrUndefined(mRows[i]) && mRows[i].childElementCount && ((isWrap && maxHeight > mRowHgt) ||\n (!isWrap && maxHeight > mRowHgt) || (this.parent.allowResizing && this.parent.resizeModule &&\n this.parent.resizeModule.isFrozenColResized === true))) {\n mRows[i].style.height = maxHeight + 'px';\n }\n if (frRows && !isNullOrUndefined(frRows[i]) && frRows[i].childElementCount && ((isWrap && maxHeight > frRowHgt) ||\n (!isWrap && maxHeight > frRowHgt) || (this.parent.allowResizing && this.parent.resizeModule &&\n this.parent.resizeModule.isFrozenColResized === true))) {\n frRows[i].style.height = maxHeight + 'px';\n }\n }\n if (isWrap) {\n this.setFrozenHeight();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.refreshHeight = function (obj) {\n var isLeftRight = this.parent.getFrozenMode() === literals.leftRight;\n var fRows;\n var frRows;\n var mRows;\n var frHdr = this.getFrozenRightHeader();\n var fHdr = this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader);\n var cont = this.parent.getContent();\n var mHdr = this.getMovableHeader();\n var hdrClassList = this.parent.getHeaderContent().querySelector('.' + literals.headerContent).classList;\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n if (obj.case === 'textwrap') {\n if (wrapMode !== 'Header' || obj.isModeChg) {\n if (isLeftRight) {\n frRows = cont.querySelector('.e-frozen-right-content').querySelectorAll('tr');\n }\n mRows = cont.querySelector('.' + literals.movableContent).querySelectorAll('tr');\n fRows = cont.querySelector('.' + literals.frozenContent).querySelectorAll('tr');\n this.setWrapHeight(fRows, mRows, obj.isModeChg, true, false, frRows);\n }\n if (wrapMode === 'Content' && this.parent.allowTextWrap) {\n hdrClassList.add('e-wrap');\n }\n else {\n hdrClassList.remove('e-wrap');\n }\n if (wrapMode === 'Both' || obj.isModeChg) {\n if (isLeftRight) {\n frRows = frHdr.querySelectorAll('tr');\n }\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n }\n else {\n if (isLeftRight) {\n frRows = frHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n }\n fRows = fHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n mRows = mHdr.querySelector(wrapMode === 'Content' ?\n literals.tbody : 'thead').querySelectorAll('tr');\n }\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, this.colDepth > 1, frRows);\n }\n this.refreshStackedHdrHgt();\n }\n else if (obj.case === 'refreshHeight') {\n mRows = cont.querySelector('.' + literals.movableContent).querySelectorAll('tr');\n fRows = cont.querySelector('.' + literals.frozenContent).querySelectorAll('tr');\n if (isLeftRight) {\n frRows = cont.querySelector('.e-frozen-right-content').querySelectorAll('tr');\n }\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, false, frRows);\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n if (isLeftRight) {\n frRows = frHdr.querySelectorAll('tr');\n }\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, false, frRows);\n }\n }\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column[]\n * @returns {void}\n */\n ColumnFreezeHeaderRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (column.freeze === 'Left' || column.freeze === 'Right') {\n if (left && !right) {\n var leftColGrp = gObj.getHeaderContent().querySelector('.e-frozen-left-header').querySelector(literals.colGroup);\n setStyleAttribute(leftColGrp.children[idx], { 'display': displayVal });\n }\n else if (!left && right) {\n var rightColGrp = gObj.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.colGroup);\n setStyleAttribute(rightColGrp.children[idx - movable], { 'display': displayVal });\n }\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - left], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n ColumnFreezeHeaderRenderer.prototype.filterRenderer = function (ele, frozenColumn, total) {\n return _super.prototype.filterRenderer.call(this, ele, frozenColumn, total);\n };\n ColumnFreezeHeaderRenderer.prototype.refreshUI = function () {\n var frTbody;\n var tbody = this.getMovableHeader().querySelector(literals.tbody);\n remove(this.getMovableHeader().querySelector('table'));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frTbody = this.getFrozenRightHeader().querySelector(literals.tbody);\n remove(this.getFrozenRightHeader().querySelector('table'));\n }\n _super.prototype.refreshFrozenLeftUI.call(this);\n this.rfshMovable();\n this.getMovableHeader().querySelector(literals.tbody).innerHTML = tbody.innerHTML;\n if (frTbody) {\n this.getFrozenRightHeader().querySelector(literals.tbody).innerHTML = frTbody.innerHTML;\n }\n this.updateColgroup();\n this.widthService.setWidthToColumns();\n this.parent.notify(events.colGroupRefresh, {});\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap([].slice.call(this.getMovableHeader().querySelectorAll('tr.e-columnheader')), true);\n }\n this.parent.updateDefaultCursor();\n var mTbl = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var mColGroup = (this.getMovableHeader().querySelector(literals.colGroup).cloneNode(true));\n mTbl.insertBefore(mColGroup, mTbl.querySelector(literals.tbody));\n if (frTbody) {\n var frtbl = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.' + literals.table);\n remove(frtbl.querySelector(literals.colGroup));\n var frtblColGroup = (this.getFrozenRightHeader().querySelector(literals.colGroup).cloneNode(true));\n frtbl.insertBefore(frtblColGroup, frtbl.querySelector(literals.tbody));\n }\n this.widthService.refreshFrozenScrollbar();\n this.initializeHeaderDrag();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n ColumnFreezeHeaderRenderer.prototype.refreshFreeze = function (obj) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n if (obj.case === 'filter') {\n var filterRow = this.getTable().querySelector('.e-filterbar');\n if (this.parent.allowFiltering && filterRow && this.getMovableHeader().querySelector('thead')) {\n var isDraggable = this.parent.isRowDragable();\n var index = left ? isDraggable ? left + 1 : left : 0;\n var total = left + movable + (left && isDraggable ? 1 : 0);\n this.getMovableHeader().querySelector('thead')\n .appendChild(this.filterRenderer(filterRow, index, total));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var ele = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n this.getFrozenRightHeader().querySelector('thead').appendChild(this.filterRenderer(filterRow, index, index + right));\n this.adjudtFilterBarCell(ele);\n }\n var elements = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n this.adjudtFilterBarCell(elements);\n }\n }\n else if (obj.case === 'textwrap' || obj.case === 'refreshHeight') {\n this.refreshHeight(obj);\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.updateFrozenColGroup = function (cols, colGroup) {\n if (cols && cols.visible === false) {\n setStyleAttribute(colGroup, { 'display': 'none' });\n }\n };\n ColumnFreezeHeaderRenderer.prototype.adjudtFilterBarCell = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n var args = {\n element: elem, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.bindInitialEvent(args);\n }\n };\n ColumnFreezeHeaderRenderer.prototype.renderPanel = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderPanel.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderLeftWithRightFrozenPanel();\n }\n }\n else {\n this.renderRightFrozenPanelAlone();\n }\n this.getPanel().firstChild.style.display = 'flex';\n this.getMovableHeader().style.flex = '1';\n };\n ColumnFreezeHeaderRenderer.prototype.renderTable = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderTable.call(this);\n }\n else {\n this.renderFrozenRightTableAlone();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.rfshMovable = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.rfshMovable.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n var rows = this.rows;\n this.getFrozenRightHeader().appendChild(this.createHeader(undefined, 'frozen-right'));\n this.refreshStackedHdrHgt();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { renderFrozenRightContent: true } });\n this.rows = rows;\n }\n }\n else {\n this.getFrozenRightHeader().appendChild(this.getTable());\n this.getMovableHeader().appendChild(this.createHeader(undefined, 'movable'));\n this.refreshStackedHdrHgt();\n this.addMovableFirstCls();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.refreshStackedHdrHgt = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.refreshStackedHdrHgt.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.refreshFrozenRightStackedHdrHgt();\n }\n }\n else {\n this.refreshFrozenRightStackedHdrHgt();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.refreshFrozenRightStackedHdrHgt = function () {\n var fRowSpan;\n var frTr = [].slice.call(this.getFrozenRightHeader().getElementsByClassName('e-columnheader'));\n var mTr = [].slice.call(this.getMovableHeader().getElementsByClassName('e-columnheader'));\n for (var i = 0, len = frTr.length; i < len; i++) {\n fRowSpan = this.getRowSpan(frTr[i]);\n if (fRowSpan.min > 1) {\n this.updateStackedHdrRowHgt(i, fRowSpan.max, frTr[i], mTr);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnFreezeHeaderRenderer.prototype.updateColgroup = function () {\n this.updateMovableColGroup();\n if (this.parent.getFrozenLeftColumnsCount()) {\n this.updateFrozenLeftColGroup();\n }\n if (this.parent.getFrozenRightColumnsCount()) {\n this.updateFrozenRightColGroup();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.renderRightFrozenPanelAlone = function () {\n var mDiv = this.parent.element.querySelector('.' + literals.movableHeader);\n var fRightDiv = this.parent.element.querySelector('.e-frozen-right-header');\n _super.prototype.renderFrozenRightPanel.call(this);\n if (isNullOrUndefined(fRightDiv)) {\n mDiv = this.parent.createElement('div', { className: literals.movableHeader });\n fRightDiv = this.parent.createElement('div', { className: 'e-frozenheader e-frozen-right-header' });\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(mDiv);\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(fRightDiv);\n }\n _super.prototype.setMovableHeader.call(this, mDiv);\n this.setFrozenRightHeader(fRightDiv);\n };\n ColumnFreezeHeaderRenderer.prototype.renderLeftWithRightFrozenPanel = function () {\n var fRightDiv = this.parent.element.querySelector('.e-frozen-right-header');\n _super.prototype.renderFrozenRightPanel.call(this);\n if (isNullOrUndefined(fRightDiv)) {\n fRightDiv = this.parent.createElement('div', { className: 'e-frozenheader e-frozen-right-header' });\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(fRightDiv);\n }\n this.setFrozenRightHeader(fRightDiv);\n };\n ColumnFreezeHeaderRenderer.prototype.renderFrozenRightTableAlone = function () {\n _super.prototype.renderFrozenRightTable.call(this);\n this.rfshMovable();\n this.updateColgroup();\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n ColumnFreezeHeaderRenderer.prototype.updateFrozenLeftColGroup = function () {\n var leftColGroup = this.getFrozenHeader().querySelector(literals.colGroup).children;\n var start = this.parent.isRowDragable() ? 1 : 0;\n var count = this.parent.isRowDragable() ? this.parent.getFrozenLeftColumnsCount() + 1\n : this.parent.getFrozenLeftColumnsCount();\n for (var i = start; i < leftColGroup.length; i++) {\n if (i >= count) {\n remove(leftColGroup[i]);\n i--;\n }\n }\n };\n ColumnFreezeHeaderRenderer.prototype.updateMovableColGroup = function () {\n var movableColGroup = this.getMovableHeader().querySelector(literals.colGroup).children;\n if (this.parent.isRowDragable()) {\n remove(movableColGroup[0]);\n }\n var length = movableColGroup.length;\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var k = 0;\n for (var i = 0; i < length; i++, k++) {\n if (i < left || i >= left + movable) {\n remove(movableColGroup[k]);\n k--;\n }\n }\n };\n ColumnFreezeHeaderRenderer.prototype.updateFrozenRightColGroup = function () {\n var isDraggable = this.parent.isRowDragable();\n var rightColumns = this.parent.getFrozenRightColumns();\n var rightColGroup = this.getFrozenRightHeader().querySelector(literals.colGroup).children;\n if (this.parent.getFrozenMode() === literals.leftRight && isDraggable) {\n remove(rightColGroup[0]);\n }\n var length = rightColGroup.length;\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var k = 0;\n for (var i = 0; i < length; i++) {\n if (i < left + movable) {\n remove(rightColGroup[0]);\n }\n else {\n this.updateFrozenColGroup(rightColumns[k], rightColGroup[k]);\n k++;\n }\n }\n };\n ColumnFreezeHeaderRenderer.prototype.setFrozenRightHeader = function (ele) {\n this.frozenRightHeader = ele;\n };\n ColumnFreezeHeaderRenderer.prototype.getFrozenRightHeader = function () {\n return this.frozenRightHeader;\n };\n return ColumnFreezeHeaderRenderer;\n}(FreezeRender));\nexport { ColumnFreezeHeaderRenderer };\n/**\n * ColumnFreezeContentRenderer is used to freeze the columns content at right and left\n *\n * @hidden\n */\nvar ColumnFreezeContentRenderer = /** @class */ (function (_super) {\n __extends(ColumnFreezeContentRenderer, _super);\n function ColumnFreezeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.frzCount = 0;\n _this.isColGroupRefresh = false;\n _this.widthService = locator.getService('widthService');\n return _this;\n }\n ColumnFreezeContentRenderer.prototype.renderPanel = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderPanel.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderFrozenLeftWithRightPanel();\n }\n }\n else {\n this.renderFrozenRightPanelAlone();\n }\n var display = this.parent.enableVirtualization ? '' : 'flex';\n this.getPanel().firstChild.style.display = display;\n };\n ColumnFreezeContentRenderer.prototype.renderTable = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderTable.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderFrozenLeftWithRightTable();\n var display = !this.parent.getVisibleFrozenRightCount() ? 'none' : '';\n this.renderHorizontalScrollbar('e-frozenscrollbar e-frozen-right-scrollbar', display, true);\n }\n }\n else {\n this.renderFrozenRightTableAlone();\n var display = !this.parent.getVisibleFrozenRightCount() ? 'none' : '';\n this.renderHorizontalScrollbar('e-frozenscrollbar e-frozen-right-scrollbar', display);\n }\n this.getMovableContent().style.flex = '1';\n };\n ColumnFreezeContentRenderer.prototype.appendScrollbar = function (frozen, movable, isRight) {\n var parent = this.parent.createElement('div', { className: 'e-scrollbar', styles: 'display: flex' });\n if (this.parent.getFrozenLeftColumnsCount()) {\n if (!isRight) {\n parent.appendChild(frozen);\n parent.appendChild(movable);\n }\n else {\n this.parent.getContent().querySelector('.e-scrollbar').appendChild(frozen);\n return;\n }\n }\n else {\n parent.appendChild(movable);\n parent.appendChild(frozen);\n }\n this.parent.getContent().appendChild(parent);\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenRightPanelAlone = function () {\n this.renderFrozenRigthPanel();\n var mDiv = this.parent.element.querySelector('.' + literals.movableContent);\n var fRightContent = this.parent.element.querySelector('.e-frozen-right-content');\n if (isNullOrUndefined(fRightContent)) {\n mDiv = this.parent.createElement('div', { className: literals.movableContent });\n fRightContent = this.parent.createElement('div', { className: 'e-frozencontent e-frozen-right-content' });\n this.getPanel().querySelector('.' + literals.content).appendChild(mDiv);\n this.getPanel().querySelector('.' + literals.content).appendChild(fRightContent);\n }\n _super.prototype.setMovableContent.call(this, mDiv);\n this.setFrozenRightContent(fRightContent);\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenLeftWithRightPanel = function () {\n this.renderFrozenRigthPanel();\n var fRightContent = this.parent.element.querySelector('.e-frozen-right-content');\n if (isNullOrUndefined(fRightContent)) {\n fRightContent = this.parent.createElement('div', { className: 'e-frozencontent e-frozen-right-content' });\n this.getPanel().querySelector('.' + literals.content).appendChild(fRightContent);\n }\n this.setFrozenRightContent(fRightContent);\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenRightTableAlone = function () {\n var mTbl;\n if (this.getFrozenRightContent().querySelector('.' + literals.table) == null) {\n _super.prototype.renderFrozenRightTable.call(this);\n this.getFrozenRightContent().appendChild(this.getTable());\n mTbl = this.getTable().cloneNode(true);\n this.getMovableContent().appendChild(mTbl);\n }\n else {\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n this.setTable(this.getFrozenRightContent().querySelector('.' + literals.table));\n this.setColGroup(this.getFrozenRightHeaderColGroup());\n mTbl = this.getMovableContent().querySelector('.' + literals.table);\n this.getFrozenRightContent().querySelector('.' + literals.table).appendChild(this.getColGroup());\n }\n if (this.getMovableContent().querySelector(literals.colGroup)) {\n remove(this.getMovableContent().querySelector(literals.colGroup));\n }\n var colgroup = ((this.parent.getHeaderContent().querySelector('.' + literals.movableHeader)\n .querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colgroup, mTbl.querySelector(literals.tbody));\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenLeftWithRightTable = function () {\n var frozenRight = this.getTable().cloneNode(true);\n this.getFrozenRightContent().appendChild(frozenRight);\n var oldColGroup = this.getFrozenRightContent().querySelector(literals.colGroup);\n if (oldColGroup) {\n remove(oldColGroup);\n }\n var rightTable = this.getFrozenRightContent().querySelector('.' + literals.table);\n rightTable.insertBefore(this.getFrozenRightHeaderColGroup(), rightTable.querySelector(literals.tbody));\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenRightEmptyRowAlone = function (tbody) {\n _super.prototype.renderFrozenRightEmpty.call(this, tbody);\n this.getMovableContent().querySelector(literals.tbody).innerHTML = '';\n addClass([this.parent.getMovableContentTbody().querySelector('tr')], ['e-emptyrow']);\n this.getFrozenRightContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getVisibleFrozenRightCount();\n if (this.parent.frozenRows) {\n this.parent.getFrozenRightHeaderTbody().innerHTML = '';\n this.parent.getMovableHeaderTbody().innerHTML = '';\n }\n };\n /**\n * @param {string} tableName - specfies the table name\n * @returns {HTMLElement} returns the element\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.getFrozenHeader = function (tableName) {\n if (tableName === literals.frozenLeft) {\n return this.parent.getHeaderContent().querySelector('.e-frozen-left-header').querySelector(literals.tbody);\n }\n else if (tableName === 'movable') {\n return this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n return this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody);\n }\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenLeftWithRightEmptyRow = function () {\n this.getFrozenRightContent().querySelector(literals.tbody).innerHTML = '';\n addClass([this.getFrozenRightContent().querySelector(literals.tbody).querySelector('tr')], ['e-emptyrow']);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).innerHTML = '';\n }\n };\n ColumnFreezeContentRenderer.prototype.setFrozenRightContent = function (ele) {\n this.frozenRigthContent = ele;\n };\n ColumnFreezeContentRenderer.prototype.getFrozenRightContent = function () {\n return this.frozenRigthContent;\n };\n ColumnFreezeContentRenderer.prototype.getHeaderColGroup = function () {\n var colGroup = this.parent.element.querySelector('.' + literals.gridHeader).querySelector(literals.colGroup).cloneNode(true);\n if (!this.parent.getFrozenLeftColumnsCount()) {\n var right = this.getFrozenRightHeaderColGroup();\n colGroup = right && this.frzCount ? right.cloneNode(true) : colGroup;\n this.frzCount++;\n this.isColGroupRefresh = true;\n }\n return colGroup;\n };\n ColumnFreezeContentRenderer.prototype.getFrozenRightHeaderColGroup = function () {\n var col = this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.colGroup);\n if (!col) {\n col = this.parent.getHeaderContent().querySelector(literals.colGroup);\n }\n return col.cloneNode(true);\n };\n ColumnFreezeContentRenderer.prototype.setColGroup = function (colGroup) {\n if (this.parent.getFrozenLeftColumnsCount()) {\n return _super.prototype.setColGroup.call(this, colGroup);\n }\n else {\n colGroup = !this.isColGroupRefresh ? this.getFrozenRightHeaderColGroup() : colGroup;\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n this.isColGroupRefresh = false;\n if (this.frzCount === 2) {\n this.frzCount = 0;\n }\n return this.colgroup = colGroup;\n }\n };\n ColumnFreezeContentRenderer.prototype.renderEmpty = function (tbody) {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderEmpty.call(this, tbody);\n this.getFrozenContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getVisibleFrozenLeftCount();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderFrozenLeftWithRightEmptyRow();\n }\n }\n else {\n this.renderFrozenRightEmptyRowAlone(tbody);\n }\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n };\n ColumnFreezeContentRenderer.prototype.setHeightToContent = function (height) {\n if (this.parent.getFrozenRightColumnsCount()) {\n this.getFrozenRightContent().style.height = height.toString() + 'px';\n }\n if (this.parent.getFrozenLeftColumnsCount()) {\n this.getFrozenContent().style.height = height.toString() + 'px';\n }\n this.getMovableContent().style.height = height.toString() + 'px';\n };\n ColumnFreezeContentRenderer.prototype.actionComplete = function (args) {\n _super.prototype.actionComplete.call(this, args);\n };\n ColumnFreezeContentRenderer.prototype.batchAdd = function (args) {\n _super.prototype.batchAdd.call(this, args);\n };\n /**\n * @param {freezeTable} tableName - specfies the table name\n * @returns {Element} - returns the element\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.getTbody = function (tableName) {\n var tbody;\n if (tableName === literals.frozenLeft) {\n tbody = this.parent.getFrozenLeftContentTbody();\n }\n else if (tableName === 'movable') {\n tbody = this.parent.getMovableContentTbody();\n }\n else if (tableName === literals.frozenRight) {\n tbody = this.parent.getFrozenRightContentTbody();\n }\n return tbody;\n };\n /**\n * @param {NotifyArgs} args - specfies the args\n * @param {freezeTable} tableName - specfies the freeze table\n * @returns {void}\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.setIsFrozen = function (args, tableName) {\n args.isFrozen = (tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right'\n && tableName === literals.frozenRight));\n args.renderFrozenRightContent = this.parent.getFrozenMode() === literals.leftRight && tableName === literals.frozenRight;\n args.renderMovableContent = tableName === 'movable';\n };\n /**\n * @param {Element} tbody - specfies the element\n * @param {DocumentFragment | HTMLElement} frag - specfies the frag\n * @param {NotifyArgs} args - specfies the args\n * @param {freezeTable} tableName - specfies the tableName\n * @returns {void}\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.appendContent = function (tbody, frag, args, tableName) {\n if (!isNullOrUndefined(this.parent.rowTemplate) && this.parent.isReact) {\n tbody = frag;\n }\n else {\n tbody.appendChild(frag);\n }\n if (this.parent.getFrozenMode() === 'Left') {\n if (tableName === literals.frozenLeft) {\n this.isLoaded = false;\n this.getFrozenContent().querySelector('table').appendChild(tbody);\n this.refreshContentRows(extend({}, args));\n }\n else {\n this.refreshTbody(tbody);\n this.isLoaded = true;\n this.getMovableContent().querySelector('table').appendChild(tbody);\n this.refreshHeight();\n this.refreshScrollOffset();\n }\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n if (tableName === 'movable') {\n this.refreshTbody(tbody);\n this.isLoaded = true;\n this.getMovableContent().querySelector('table').appendChild(tbody);\n this.refreshHeight();\n this.refreshScrollOffset();\n }\n else {\n this.isLoaded = false;\n this.getFrozenRightContent().querySelector('table').appendChild(tbody);\n this.refreshContentRows(extend({}, args));\n }\n }\n else if (this.parent.getFrozenMode() === literals.leftRight) {\n if (tableName === literals.frozenLeft) {\n this.isLoaded = false;\n this.getFrozenContent().querySelector('table').appendChild(tbody);\n this.refreshContentRows(extend({}, args));\n }\n else if (tableName === 'movable') {\n this.refreshTbody(tbody);\n this.isLoaded = false;\n this.getMovableContent().querySelector('table').appendChild(tbody);\n this.refreshContentRows(extend({}, args));\n }\n else {\n this.isLoaded = true;\n this.getFrozenRightContent().querySelector('table').appendChild(tbody);\n this.refreshHeight();\n this.refreshScrollOffset();\n }\n }\n if (this.isInitialRender) {\n this.parent.scrollModule.setHeight();\n this.isInitialRender = false;\n }\n this.widthService.refreshFrozenScrollbar();\n };\n ColumnFreezeContentRenderer.prototype.refreshHeight = function () {\n if (!this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n }\n };\n /**\n * @param {freezeTable} tableName - specifies the table\n * @returns {void}\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.splitRows = function (tableName) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (left && !right) {\n if (tableName === literals.frozenLeft) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else {\n this.movableRows = this.rows;\n }\n }\n else if (!left && right) {\n if (tableName === 'movable') {\n this.movableRows = this.rows;\n }\n else {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n }\n else if (left && right) {\n if (tableName === literals.frozenLeft) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else if (tableName === 'movable') {\n this.movableRows = this.rows;\n this.movableRowElements = this.rowElements;\n }\n else {\n this.frozenRightRows = this.rows;\n this.frozenRightRowElements = this.rowElements;\n }\n }\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ColumnFreezeContentRenderer.prototype.getMovableRowElements = function () {\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n return this.rowElements;\n }\n else {\n return this.movableRowElements;\n }\n };\n /**\n * Get the Freeze pane frozen right content table data row elements\n *\n * @returns {Element} returns the Element\n */\n ColumnFreezeContentRenderer.prototype.getFrozenRightRowElements = function () {\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n return this.freezeRowElements;\n }\n else {\n return this.frozenRightRowElements;\n }\n };\n /**\n * Get the frozen right row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row object\n */\n ColumnFreezeContentRenderer.prototype.getFrozenRightRows = function () {\n if (this.parent.getFrozenMode() === literals.leftRight) {\n if (this.parent.enableInfiniteScrolling) {\n return this.rightFreezeRows;\n }\n return this.frozenRightRows;\n }\n else {\n return this.getRows();\n }\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.getFrozenRightRowByIndex = function (index) {\n return this.parent.getFrozenRightDataRows()[index];\n };\n /**\n * Get the Row collection in the Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row object\n */\n ColumnFreezeContentRenderer.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.freezeRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ColumnFreezeContentRenderer.prototype.getRowElements = function () {\n return this.freezeRowElements;\n };\n return ColumnFreezeContentRenderer;\n}(FreezeContentRender));\nexport { ColumnFreezeContentRenderer };\n","import { EventHandler, Browser } from '@syncfusion/ej2-base';\nimport { debounce } from '@syncfusion/ej2-base';\n/**\n * InterSectionObserver - class watch whether it enters the viewport.\n *\n * @hidden\n */\nvar InterSectionObserver = /** @class */ (function () {\n function InterSectionObserver(element, options, movableEle) {\n var _this = this;\n this.fromWheel = false;\n this.touchMove = false;\n this.options = {};\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerRect.top;\n info.entered = top >= 0;\n return top + (_this.options.pageHeight / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var top = rect.bottom;\n info.entered = rect.bottom <= _this.containerRect.bottom;\n return top - (_this.options.pageHeight / 2) <= _this.options.pageHeight / 2;\n }, axis: 'Y'\n },\n 'right': {\n check: function (rect, info) {\n var right = rect.right;\n if (_this.movableEle) {\n info.entered = right < _this.movableContainerRect.right;\n return right - _this.movableContainerRect.width <= _this.movableContainerRect.right;\n }\n info.entered = right < _this.containerRect.right;\n return right - _this.containerRect.width <= _this.containerRect.right;\n }, axis: 'X'\n },\n 'left': {\n check: function (rect, info) {\n var left = rect.left;\n info.entered = left > 0;\n if (_this.movableEle) {\n return left + _this.movableContainerRect.width >= _this.movableContainerRect.left;\n }\n return left + _this.containerRect.width >= _this.containerRect.left;\n }, axis: 'X'\n }\n };\n this.element = element;\n this.options = options;\n this.movableEle = movableEle;\n }\n InterSectionObserver.prototype.observe = function (callback, onEnterCallback) {\n var _this = this;\n this.containerRect = this.options.container.getBoundingClientRect();\n EventHandler.add(this.options.container, 'wheel', function () { return _this.fromWheel = true; }, this);\n EventHandler.add(this.options.container, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n if (this.options.movableContainer) {\n this.movableContainerRect = this.options.movableContainer.getBoundingClientRect();\n EventHandler.add(this.options.scrollbar, 'wheel', function () { return _this.fromWheel = true; }, this);\n EventHandler.add(this.options.scrollbar, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n }\n };\n InterSectionObserver.prototype.check = function (direction) {\n var info = this.sentinelInfo[direction];\n if (this.movableContainerRect && (direction === 'left' || direction === 'right')) {\n return info.check(this.movableEle.getBoundingClientRect(), info);\n }\n return info.check(this.element.getBoundingClientRect(), info);\n };\n InterSectionObserver.prototype.virtualScrollHandler = function (callback, onEnterCallback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this.options.prevTop = this.options.prevLeft = 0;\n return function (e) {\n var top = _this.options.movableContainer ? _this.options.container.scrollTop : e.target.scrollTop;\n var left = _this.options.movableContainer ? _this.options.scrollbar.scrollLeft : e.target.scrollLeft;\n var direction = _this.options.prevTop < top ? 'down' : 'up';\n direction = _this.options.prevLeft === left ? direction : _this.options.prevLeft < left ? 'right' : 'left';\n _this.options.prevTop = top;\n _this.options.prevLeft = left;\n var current = _this.sentinelInfo[direction];\n if (_this.options.axes.indexOf(current.axis) === -1) {\n return;\n }\n var check = _this.check(direction);\n if (current.entered) {\n if (_this.movableEle && (direction === 'right' || direction === 'left')) {\n onEnterCallback(_this.movableEle, current, direction, { top: top, left: left }, _this.fromWheel, check);\n }\n else {\n onEnterCallback(_this.element, current, direction, { top: top, left: left }, _this.fromWheel, check);\n }\n }\n if (check) {\n var fn = debounced100;\n //this.fromWheel ? this.options.debounceEvent ? debounced100 : callback : debounced100;\n if (current.axis === 'X') {\n fn = debounced50;\n }\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n _this.fromWheel = false;\n };\n };\n InterSectionObserver.prototype.setPageHeight = function (value) {\n this.options.pageHeight = value;\n };\n return InterSectionObserver;\n}());\nexport { InterSectionObserver };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { isGroupAdaptive } from '../base/util';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n */\nvar VirtualRowModelGenerator = /** @class */ (function () {\n function VirtualRowModelGenerator(parent) {\n this.cOffsets = {};\n this.cache = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n this.rowCache = {};\n this.data = {};\n this.groups = {};\n this.parent = parent;\n this.model = this.parent.pageSettings;\n this.rowModelGenerator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n }\n VirtualRowModelGenerator.prototype.generateRows = function (data, e) {\n var isFrozen = this.parent.isFrozenGrid();\n var info = e.virtualInfo = e.virtualInfo || this.getData();\n var xAxis = info.sentinelInfo && info.sentinelInfo.axis === 'X';\n var page = !xAxis && info.loadNext && !info.loadSelf ? info.nextInfo.page : info.page;\n var result = [];\n var indexes = this.getBlockIndexes(page);\n var loadedBlocks = [];\n if ((isFrozen && (this.parent.getFrozenMode() !== literals.leftRight && !e.renderMovableContent)\n || this.parent.getFrozenMode() === literals.leftRight && !e.renderMovableContent && !e.renderFrozenRightContent) || !isFrozen) {\n this.checkAndResetCache(e.requestType);\n }\n if (isGroupAdaptive(this.parent) && this.parent.vcRows.length) {\n return result = this.parent.vcRows;\n }\n if (this.parent.enableColumnVirtualization) {\n for (var i = 0; i < info.blockIndexes.length; i++) {\n if (this.isBlockAvailable(info.blockIndexes[i])) {\n this.cache[info.blockIndexes[i]] = this.rowModelGenerator.refreshRows(this.cache[info.blockIndexes[i]]);\n }\n if ((e.renderMovableContent && this.isMovableBlockAvailable(info.blockIndexes[i]))\n || (e.renderFrozenRightContent && this.isFrozenRightBlockAvailable(info.blockIndexes[i]))) {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n cache[info.blockIndexes[i]] = this.rowModelGenerator.refreshRows(cache[info.blockIndexes[i]]);\n }\n }\n }\n var values = info.blockIndexes;\n for (var i = 0; i < values.length; i++) {\n if (!this.isBlockAvailable(values[i])) {\n var rows = this.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: this.getStartIndex(values[i], data)\n });\n if (isGroupAdaptive(this.parent) && !this.parent.vcRows.length) {\n this.parent.vRows = rows;\n this.parent.vcRows = rows;\n this.parent.notify(events.refreshVirtualMaxPage, {});\n }\n var median = void 0;\n if (isGroupAdaptive(this.parent)) {\n median = this.model.pageSize / 2;\n if (!this.isBlockAvailable(indexes[0])) {\n this.cache[indexes[0]] = rows.slice(0, median);\n }\n if (!this.isBlockAvailable(indexes[1])) {\n this.cache[indexes[1]] = rows.slice(median, this.model.pageSize);\n }\n }\n else {\n median = ~~Math.max(rows.length, this.model.pageSize) / 2;\n if (!this.isBlockAvailable(indexes[0])) {\n this.cache[indexes[0]] = rows.slice(0, median);\n }\n if (!this.isBlockAvailable(indexes[1])) {\n this.cache[indexes[1]] = rows.slice(median);\n }\n }\n }\n if (this.parent.groupSettings.columns.length && !xAxis && this.cache[values[i]]) {\n this.cache[values[i]] = this.updateGroupRow(this.cache[values[i]], values[i]);\n }\n if ((e.renderMovableContent && !this.isMovableBlockAvailable(values[i]))\n || (e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(values[i]))) {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n var rows = this.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: this.getStartIndex(values[i], data)\n });\n var median = ~~Math.max(rows.length, this.model.pageSize) / 2;\n if ((e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(indexes[0]))\n || (e.renderMovableContent && !this.isMovableBlockAvailable(indexes[0]))) {\n cache[indexes[0]] = rows.slice(0, median);\n }\n if ((e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(indexes[1]))\n || (e.renderMovableContent && !this.isMovableBlockAvailable(indexes[1]))) {\n cache[indexes[1]] = rows.slice(median);\n }\n }\n if (!e.renderMovableContent && !e.renderFrozenRightContent && this.cache[values[i]]) {\n result.push.apply(result, this.cache[values[i]]);\n }\n else {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n if (cache[values[i]]) {\n result.push.apply(result, cache[values[i]]);\n }\n }\n if (this.isBlockAvailable(values[i])) {\n loadedBlocks.push(values[i]);\n }\n }\n info.blockIndexes = loadedBlocks;\n var grouping = 'records';\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n this.parent.currentViewData[grouping] = result.map(function (m) { return m.data; });\n }\n else if (isFrozen) {\n if ((e.renderMovableContent && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenColumns())) || e.renderFrozenRightContent) {\n this.parent.currentViewData = result.map(function (m) { return m.data; });\n }\n }\n else {\n this.parent.currentViewData = result.map(function (m) { return m.data; });\n }\n return result;\n };\n VirtualRowModelGenerator.prototype.getBlockIndexes = function (page) {\n return [page + (page - 1), page * 2];\n };\n VirtualRowModelGenerator.prototype.getPage = function (block) {\n return block % 2 === 0 ? block / 2 : (block + 1) / 2;\n };\n VirtualRowModelGenerator.prototype.isBlockAvailable = function (value) {\n return value in this.cache;\n };\n VirtualRowModelGenerator.prototype.isMovableBlockAvailable = function (value) {\n return value in this.movableCache;\n };\n VirtualRowModelGenerator.prototype.isFrozenRightBlockAvailable = function (value) {\n return value in this.frozenRightCache;\n };\n VirtualRowModelGenerator.prototype.getData = function () {\n return {\n page: this.model.currentPage,\n blockIndexes: this.getBlockIndexes(this.model.currentPage),\n direction: 'down',\n columnIndexes: this.parent.getColumnIndexesInView()\n };\n };\n VirtualRowModelGenerator.prototype.getStartIndex = function (blk, data, full) {\n if (full === void 0) { full = true; }\n var page = this.getPage(blk);\n var even = blk % 2 === 0;\n var index = (page - 1) * this.model.pageSize;\n return full || !even ? index : index + ~~(this.model.pageSize / 2);\n };\n VirtualRowModelGenerator.prototype.getColumnIndexes = function (content) {\n var _this = this;\n if (content === void 0) { content = this.parent.getHeaderContent().querySelector('.' + literals.headerContent); }\n if (this.parent.isFrozenGrid()) {\n content = content.querySelector('.' + literals.movableHeader);\n }\n var indexes = [];\n var sLeft = content.scrollLeft | 0;\n var keys = Object.keys(this.cOffsets);\n var cWidth = content.getBoundingClientRect().width;\n sLeft = Math.min(this.cOffsets[keys.length - 1] - cWidth, sLeft);\n var calWidth = Browser.isDevice ? 2 * cWidth : cWidth / 2;\n var left = sLeft + cWidth + (sLeft === 0 ? calWidth : 0);\n keys.some(function (offset) {\n var iOffset = Number(offset);\n var offsetVal = _this.cOffsets[offset];\n var border = sLeft - calWidth <= offsetVal && left + calWidth >= offsetVal;\n if (border) {\n indexes.push(iOffset);\n }\n return left + calWidth < offsetVal;\n });\n this.addFrozenIndex(indexes);\n return indexes;\n };\n VirtualRowModelGenerator.prototype.addFrozenIndex = function (indexes) {\n if (this.parent.getFrozenColumns() && this.parent.enableColumnVirtualization && indexes[0] === 0) {\n for (var i = 0; i < this.parent.getFrozenColumns(); i++) {\n indexes.push(indexes[indexes.length - 1] + 1);\n }\n }\n };\n VirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var actions = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder',\n 'save', 'delete'];\n if (this.parent.getFrozenColumns() && this.parent.frozenRows && this.parent.enableColumnVirtualization && action === 'reorder') {\n actions.splice(actions.indexOf(action), 1);\n }\n var clear = actions.some(function (value) { return action === value; });\n if (clear) {\n this.cache = {};\n this.data = {};\n this.groups = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n }\n return clear;\n };\n VirtualRowModelGenerator.prototype.refreshColOffsets = function () {\n var _this = this;\n var col = 0;\n this.cOffsets = {};\n var gLen = this.parent.groupSettings.columns.length;\n var cols = this.parent.columns;\n var cLen = cols.length;\n var isVisible = function (column) { return column.visible &&\n (!_this.parent.groupSettings.showGroupedColumn ? _this.parent.groupSettings.columns.indexOf(column.field) < 0 : column.visible); };\n var c = this.parent.groupSettings.columns;\n for (var i = 0; i < c.length; i++) {\n this.cOffsets[i] = (this.cOffsets[i - 1] | 0) + 30;\n }\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(cLen)).map(function () { return col++; });\n for (var j = 0; j < blocks.length; j++) {\n blocks[j] = blocks[j] + gLen;\n this.cOffsets[blocks[j]] = (this.cOffsets[blocks[j] - 1] | 0) + (isVisible(cols[j]) ? parseInt(cols[j].width, 10) : 0);\n }\n };\n VirtualRowModelGenerator.prototype.updateGroupRow = function (current, block) {\n var currentFirst = current[0];\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n if (Number(keys[i]) < block) {\n rows = rows.concat(this.cache[keys[i]]);\n }\n }\n if ((currentFirst && currentFirst.isDataRow) || block % 2 === 0) {\n return current;\n }\n return this.iterateGroup(current, rows);\n };\n VirtualRowModelGenerator.prototype.iterateGroup = function (current, rows) {\n var currentFirst = current[0];\n var offset = 0;\n if (currentFirst && currentFirst.isDataRow) {\n return current;\n }\n var isPresent = current.some(function (row) {\n return rows.some(function (oRow, index) {\n var res = oRow && oRow.data.field !== undefined\n && oRow.data.field === row.data.field &&\n oRow.data.key === row.data.key;\n if (res) {\n offset = index;\n }\n return res;\n });\n });\n if (isPresent) {\n current.shift();\n current = this.iterateGroup(current, rows.slice(offset));\n }\n return current;\n };\n VirtualRowModelGenerator.prototype.getRows = function () {\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.cache[keys[i]]);\n }\n return rows;\n };\n VirtualRowModelGenerator.prototype.generateCells = function () {\n var cells = [];\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n cells.push(this.rowModelGenerator.generateCell(cols[i]));\n }\n return cells;\n };\n return VirtualRowModelGenerator;\n}());\nexport { VirtualRowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, createElement, closest, formatUnit, Browser, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { dataReady, modelChanged, refreshVirtualBlock, contentReady } from '../base/constant';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { ContentRender } from './content-renderer';\nimport { HeaderRender } from './header-renderer';\nimport { InterSectionObserver } from '../services/intersection-observer';\nimport { VirtualRowModelGenerator } from '../services/virtual-row-model-generator';\nimport { isGroupAdaptive, ensureLastRow, ensureFirstRow, getEditedDataIndex, getTransformValues, resetRowObjectIndex } from '../base/util';\nimport { setStyleAttribute } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * VirtualContentRenderer\n *\n * @hidden\n */\nvar VirtualContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualContentRenderer, _super);\n function VirtualContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.prevHeight = 0;\n /** @hidden */\n _this.startIndex = 0;\n _this.preStartIndex = 0;\n _this.preventEvent = false;\n _this.actions = ['filtering', 'searching', 'grouping', 'ungrouping'];\n /** @hidden */\n _this.offsets = {};\n _this.tmpOffsets = {};\n /** @hidden */\n _this.virtualEle = new VirtualElementHandler();\n _this.offsetKeys = [];\n _this.isFocused = false;\n _this.isSelection = false;\n _this.isBottom = false;\n _this.rndrCount = 0;\n _this.empty = undefined;\n _this.isCancel = false;\n _this.requestTypes = ['beginEdit', 'cancel', 'delete', 'add', 'save'];\n _this.isNormaledit = _this.parent.editSettings.mode === 'Normal';\n /** @hidden */\n _this.virtualData = {};\n _this.emptyRowData = {};\n _this.vfColIndex = [];\n _this.frzIdx = 1;\n _this.orderRowObj = [];\n _this.mvbOrderRowObj = [];\n _this.frOrderRowObj = [];\n _this.isContextMenuOpen = false;\n _this.isSelectionScroll = false;\n _this.validationCheck = false;\n _this.locator = locator;\n _this.eventListener('on');\n _this.parent.on(events.columnVisibilityChanged, _this.setVisible, _this);\n _this.vgenerator = _this.generator;\n return _this;\n }\n VirtualContentRenderer.prototype.renderTable = function () {\n this.header = this.locator.getService('rendererFactory').getRenderer(RenderType.Header);\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualEle.renderWrapper(this.parent.height);\n this.virtualEle.renderPlaceHolder();\n this.virtualEle.wrapper.style.position = 'absolute';\n var debounceEvent = (this.parent.dataSource instanceof DataManager && !this.parent.dataSource.dataSource.offline);\n var opt = {\n container: this.content, pageHeight: this.getBlockHeight() * 2, debounceEvent: debounceEvent,\n axes: this.parent.enableColumnVirtualization ? ['X', 'Y'] : ['Y']\n };\n this.observer = new InterSectionObserver(this.virtualEle.wrapper, opt);\n };\n VirtualContentRenderer.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n this.virtualEle.adjustTable(0, 0);\n };\n VirtualContentRenderer.prototype.getReorderedFrozenRows = function (args) {\n var blockIndex = args.virtualInfo.blockIndexes;\n var colsIndex = args.virtualInfo.columnIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n args.virtualInfo.page = 1;\n if (!args.renderMovableContent) {\n args.virtualInfo.columnIndexes = [];\n }\n var recordslength = this.parent.getCurrentViewRecords().length;\n var firstRecords = this.parent.renderModule.data.dataManager.dataSource.json.slice(0, recordslength);\n var virtualRows = this.vgenerator.generateRows(firstRecords, args);\n args.virtualInfo.blockIndexes = blockIndex;\n args.virtualInfo.columnIndexes = colsIndex;\n args.virtualInfo.page = page;\n return virtualRows.splice(0, this.parent.frozenRows);\n };\n VirtualContentRenderer.prototype.scrollListener = function (scrollArgs) {\n this.scrollAfterEdit();\n if (this.parent.enablePersistence) {\n this.parent.scrollPosition = scrollArgs.offset;\n }\n if (this.preventEvent || this.parent.isDestroyed) {\n this.preventEvent = false;\n return;\n }\n if (isNullOrUndefined(document.activeElement)) {\n this.isFocused = false;\n }\n else {\n this.isFocused = this.content === closest(document.activeElement, '.' + literals.content) || this.content === document.activeElement;\n }\n var info = scrollArgs.sentinel;\n var viewInfo = this.currentInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset);\n if (isGroupAdaptive(this.parent)) {\n if ((info.axis === 'Y' && viewInfo.blockIndexes && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString())\n && scrollArgs.direction === 'up' && viewInfo.blockIndexes[viewInfo.blockIndexes.length - 1] !== 2) {\n return;\n }\n else {\n viewInfo.event = 'refresh-virtual-block';\n if (!isNullOrUndefined(viewInfo.offsets)) {\n viewInfo.offsets.top = this.content.scrollTop;\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n return;\n }\n }\n if (this.prevInfo && ((info.axis === 'Y' && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString())\n || (info.axis === 'X' && this.prevInfo.columnIndexes.toString() === viewInfo.columnIndexes.toString()))) {\n if (Browser.isIE) {\n this.parent.hideSpinner();\n }\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n if (info.axis === 'Y') {\n this.restoreEdit();\n }\n return;\n }\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n this.parent.pageSettings.currentPage = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.requestType = 'virtualscroll';\n this.parent.notify(viewInfo.event, {\n requestType: 'virtualscroll', virtualInfo: viewInfo,\n focusElement: scrollArgs.focusElement\n });\n };\n VirtualContentRenderer.prototype.block = function (blk) {\n return this.vgenerator.isBlockAvailable(blk);\n };\n VirtualContentRenderer.prototype.getInfoFromView = function (direction, info, e) {\n var isBlockAdded = false;\n var tempBlocks = [];\n var infoType = { direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.preStartIndex, endIndex: this.preEndIndex };\n infoType.page = this.getPageFromTop(e.top, infoType);\n infoType.blockIndexes = tempBlocks = this.vgenerator.getBlockIndexes(infoType.page);\n infoType.loadSelf = !this.vgenerator.isBlockAvailable(tempBlocks[infoType.block]);\n var blocks = this.ensureBlocks(infoType);\n if (this.activeKey === 'upArrow' && infoType.blockIndexes.toString() !== blocks.toString()) {\n // To avoid dupilcate row index problem in key focus support\n var newBlock = blocks[blocks.length - 1];\n if (infoType.blockIndexes.indexOf(newBlock) === -1) {\n isBlockAdded = true;\n }\n }\n infoType.blockIndexes = blocks;\n infoType.loadNext = !blocks.filter(function (val) { return tempBlocks.indexOf(val) === -1; })\n .every(this.block.bind(this));\n infoType.event = (infoType.loadNext || infoType.loadSelf) ? modelChanged : refreshVirtualBlock;\n infoType.nextInfo = infoType.loadNext ? { page: Math.max(1, infoType.page + (direction === 'down' ? 1 : -1)) } : {};\n if (isBlockAdded) {\n infoType.blockIndexes = [infoType.blockIndexes[0] - 1, infoType.blockIndexes[0], infoType.blockIndexes[0] + 1];\n }\n if (this.activeKey === 'downArrow') {\n var firstBlock = Math.ceil(this.rowIndex / this.getBlockSize());\n if (firstBlock !== 1 && (infoType.blockIndexes[1] !== firstBlock || infoType.blockIndexes.length < 3)) {\n infoType.blockIndexes = [firstBlock - 1, firstBlock, firstBlock + 1];\n }\n }\n infoType.columnIndexes = info.axis === 'X' ? this.vgenerator.getColumnIndexes() : this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && info.axis === 'X') {\n infoType.event = refreshVirtualBlock;\n }\n return infoType;\n };\n VirtualContentRenderer.prototype.setKeyboardNavIndex = function () {\n this.blazorDataLoad = true;\n if (this.activeKey === 'downArrow' || this.activeKey === 'upArrow') {\n this.blzRowIndex = this.activeKey === 'downArrow' ? this.rowIndex + 1 : this.rowIndex - 1;\n document.activeElement.blur();\n }\n };\n VirtualContentRenderer.prototype.ensureBlocks = function (info) {\n var _this = this;\n var index = info.blockIndexes[info.block];\n var mIdx;\n var old = index;\n var max = Math.max;\n var indexes = info.direction === 'down' ? [max(index, 1), ++index, ++index] : [max(index - 1, 1), index, index + 1];\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n // To avoid frozen content white space issue\n if (info.sentinelInfo.axis === 'X' || (info.sentinelInfo.axis === 'Y' && (info.page === this.prevInfo.page))) {\n indexes = this.prevInfo.blockIndexes;\n }\n }\n indexes = indexes.filter(function (val, ind) { return indexes.indexOf(val) === ind; });\n if (this.prevInfo.blockIndexes.toString() === indexes.toString()) {\n return indexes;\n }\n if (info.loadSelf || (info.direction === 'down' && this.isEndBlock(old))) {\n indexes = this.vgenerator.getBlockIndexes(info.page);\n }\n indexes.some(function (val, ind) {\n var result = val === (isGroupAdaptive(_this.parent) ? _this.getGroupedTotalBlocks() : _this.getTotalBlocks());\n if (result) {\n mIdx = ind;\n }\n return result;\n });\n if (mIdx !== undefined) {\n indexes = indexes.slice(0, mIdx + 1);\n if (info.block === 0 && indexes.length === 1 && this.vgenerator.isBlockAvailable(indexes[0] - 1)) {\n indexes = [indexes[0] - 1, indexes[0]];\n }\n }\n return indexes;\n };\n // tslint:disable-next-line:max-func-body-length\n VirtualContentRenderer.prototype.appendContent = function (target, newChild, e) {\n var _this = this;\n // currentInfo value will be used if there are multiple dom updates happened due to mousewheel\n var isFrozen = this.parent.isFrozenGrid();\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var colVFtable = this.parent.enableColumnVirtualization && isFrozen;\n this.checkFirstBlockColIndexes(e);\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== e.virtualInfo.page ? this.currentInfo : e.virtualInfo;\n this.prevInfo = this.prevInfo || e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n if (colVFtable && info.columnIndexes[0] === frzCols) {\n cBlock = (info.columnIndexes[0] - frzCols) - 1;\n }\n var cOffset = this.getColumnOffset(cBlock);\n var width;\n var blocks = info.blockIndexes;\n if (this.parent.groupSettings.columns.length) {\n this.refreshOffsets();\n }\n if (this.parent.height === '100%') {\n this.parent.element.style.height = '100%';\n }\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.content.getBoundingClientRect().height :\n this.parent.element.getBoundingClientRect().height;\n if (!this.requestTypes.some(function (value) { return value === _this.requestType; })) {\n var translate = this.getTranslateY(this.content.scrollTop, vHeight, info);\n this.virtualEle.adjustTable(colVFtable ? 0 : cOffset, translate);\n if (colVFtable) {\n this.virtualEle.adjustMovableTable(cOffset, 0);\n }\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(colVFtable ? 0 : cOffset, 0);\n if (colVFtable) {\n this.header.virtualEle.adjustMovableTable(cOffset, 0);\n }\n }\n if (this.parent.enableColumnVirtualization) {\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n if (colVFtable) {\n this.header.virtualEle.setMovableWrapperWidth(width);\n }\n else {\n this.header.virtualEle.setWrapperWidth(width);\n }\n }\n if (colVFtable) {\n this.virtualEle.setMovableWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n }\n else {\n this.virtualEle.setWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n }\n if (!isNullOrUndefined(target.parentNode)) {\n remove(target);\n }\n var tbody;\n if (isFrozen) {\n if (e.renderFrozenRightContent) {\n tbody = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n }\n else if (!e.renderMovableContent) {\n tbody = this.parent.getFrozenVirtualContent().querySelector(literals.tbody);\n }\n else if (e.renderMovableContent) {\n tbody = this.parent.getMovableVirtualContent().querySelector(literals.tbody);\n }\n }\n else {\n tbody = this.parent.element.querySelector('.' + literals.content).querySelector(literals.tbody);\n }\n if (tbody) {\n remove(tbody);\n target = null;\n }\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (!isReact) {\n target = this.parent.createElement(literals.tbody);\n target.appendChild(newChild);\n }\n else {\n target = newChild;\n }\n if (this.parent.frozenRows && e.requestType === 'virtualscroll' && this.parent.pageSettings.currentPage === 1) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n target.children[0].remove();\n }\n }\n if (isFrozen) {\n if (e.renderFrozenRightContent) {\n this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.' + literals.table).appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n else if (!e.renderMovableContent) {\n this.parent.getFrozenVirtualContent().querySelector('.' + literals.table).appendChild(target);\n }\n else if (e.renderMovableContent) {\n this.parent.getMovableVirtualContent().querySelector('.' + literals.table).appendChild(target);\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n }\n if (this.vfColIndex.length) {\n e.virtualInfo.columnIndexes = info.columnIndexes = extend([], this.vfColIndex);\n this.vfColIndex = e.renderMovableContent ? [] : this.vfColIndex;\n }\n }\n else {\n this.getTable().appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n if (this.parent.groupSettings.columns.length) {\n if (!isGroupAdaptive(this.parent) && info.direction === 'up') {\n var blk = this.offsets[this.getTotalBlocks()] - this.prevHeight;\n this.preventEvent = true;\n var sTop = this.content.scrollTop;\n this.content.scrollTop = sTop + blk;\n }\n this.setVirtualHeight();\n this.observer.setPageHeight(this.getOffset(blocks[blocks.length - 1]) - this.getOffset(blocks[0] - 1));\n }\n this.prevInfo = info;\n if (this.isFocused && this.activeKey !== 'downArrow' && this.activeKey !== 'upArrow') {\n this.content.focus();\n }\n var lastPage = Math.ceil(this.getTotalBlocks() / 2);\n if (this.isBottom) {\n this.isBottom = false;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 1];\n }\n if ((this.parent.pageSettings.currentPage === lastPage) && blocks.length === 1) {\n this.isBottom = true;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 2];\n }\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n this.focusCell(e);\n this.restoreEdit(e);\n this.restoreAdd(e);\n this.ensureSelectedRowPosition();\n this.validationScrollLeft(e, isFrozen);\n if (!this.initialRowTop) {\n var gridTop = this.parent.element.getBoundingClientRect().top;\n this.initialRowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n };\n VirtualContentRenderer.prototype.validationScrollLeft = function (e, isFrozen) {\n var left = this.parent.getFrozenColumns();\n var table = this.parent.getFrozenMode();\n var trigger = !isFrozen || e && (left || table === 'Left' || table === 'Right' ? e.renderMovableContent\n : e.renderFrozenRightContent);\n if (this.validationCheck && trigger) {\n if (this.validationCol) {\n var offset = this.vgenerator.cOffsets[(this.validationCol.index - this.parent.getVisibleFrozenColumns()) - 1];\n this.validationCol = null;\n if (this.parent.isFrozenGrid()) {\n this.movableContent.scrollLeft = offset;\n }\n else {\n this.content.scrollLeft = offset;\n }\n }\n else {\n this.validationCheck = false;\n this.parent.editModule.editFormValidate();\n }\n }\n };\n VirtualContentRenderer.prototype.ensureSelectedRowPosition = function () {\n if (!this.isSelection && this.isSelectionScroll && !isNullOrUndefined(this.selectRowIndex)) {\n this.isSelectionScroll = false;\n var row = this.parent.getRowByIndex(this.selectRowIndex);\n if (row && !this.isRowInView(row)) {\n this.rowSelected({ rowIndex: this.selectRowIndex, row: row }, true);\n }\n }\n };\n VirtualContentRenderer.prototype.checkFirstBlockColIndexes = function (e) {\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && e.virtualInfo.columnIndexes[0] === 0) {\n var indexes = [];\n var frozenCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n if (!e.renderMovableContent && e.virtualInfo.columnIndexes.length > frozenCols) {\n this.vfColIndex = e.virtualInfo.columnIndexes;\n for (var i = 0; i < frozenCols; i++) {\n indexes.push(i);\n }\n e.virtualInfo.columnIndexes = indexes;\n }\n else if (e.renderMovableContent) {\n if (!this.vfColIndex.length) {\n this.vfColIndex = extend([], e.virtualInfo.columnIndexes);\n }\n e.virtualInfo.columnIndexes = extend([], this.vfColIndex);\n e.virtualInfo.columnIndexes.splice(0, frozenCols);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.focusCell = function (e) {\n if (this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n return;\n }\n var row = this.parent.getRowByIndex(this.rowIndex);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = row.cells[this.cellIndex];\n cell.focus({ preventScroll: true });\n this.parent.selectRow(parseInt(row.getAttribute(literals.ariaRowIndex), 10));\n this.activeKey = this.empty;\n };\n VirtualContentRenderer.prototype.restoreEdit = function (e) {\n if (this.isNormaledit) {\n var left = this.parent.getFrozenColumns();\n var isFrozen = e && this.parent.isFrozenGrid();\n var table = this.parent.getFrozenMode();\n var trigger = e && (left || table === 'Left' || table === 'Right' ? e.renderMovableContent\n : e.renderFrozenRightContent);\n if ((!isFrozen || (isFrozen && trigger)) && this.parent.editSettings.allowEditing\n && this.parent.editModule && !isNullOrUndefined(this.editedRowIndex)) {\n var row = this.getRowByIndex(this.editedRowIndex);\n var content = this.content;\n var keys = Object.keys(this.virtualData);\n var isXaxis = e && e.virtualInfo && e.virtualInfo.sentinelInfo.axis === 'X';\n if (isFrozen && isXaxis) {\n row = this.parent.getMovableRowByIndex(this.editedRowIndex);\n content = this.movableContent;\n }\n if (keys.length && row && !content.querySelector('.' + literals.editedRow)) {\n var top_1 = row.getBoundingClientRect().top;\n if (isXaxis || (top_1 < this.content.offsetHeight && top_1 > this.parent.getRowHeight())) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row);\n }\n }\n if (row && this.content.querySelector('.' + literals.editedRow) && !keys.length) {\n var rowData = extend({}, this.getRowObjectByIndex(this.editedRowIndex));\n this.virtualData = this.getVirtualEditedData(rowData);\n }\n }\n this.restoreAdd(e);\n }\n };\n VirtualContentRenderer.prototype.getVirtualEditedData = function (rowData) {\n var editForms = [].slice.call(this.parent.element.getElementsByClassName('e-gridform'));\n var isFormDestroyed = this.parent.editModule && this.parent.editModule.formObj\n && this.parent.editModule.formObj.isDestroyed;\n if (!isFormDestroyed) {\n for (var i = 0; i < editForms.length; i++) {\n rowData = this.parent.editModule.getCurrentEditedData(editForms[i], rowData);\n }\n }\n return rowData;\n };\n VirtualContentRenderer.prototype.restoreAdd = function (e) {\n var left = this.parent.getFrozenColumns();\n var isFrozen = e && this.parent.isFrozenGrid();\n var table = this.parent.getFrozenMode();\n var isXaxis = e && e.virtualInfo && e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'X';\n var startAdd = isXaxis && isFrozen ? !(this.parent.getMovableVirtualHeader().querySelector('.' + literals.addedRow)\n || this.parent.getMovableVirtualContent().querySelector('.' + literals.addedRow)) : !this.parent.element.querySelector('.' + literals.addedRow);\n var trigger = e && (left || table === 'Left' || table === 'Right' ? e.renderMovableContent : e.renderFrozenRightContent);\n if ((!isFrozen || (isFrozen && trigger)) && this.isNormaledit && this.isAdd && startAdd) {\n var isTop = this.parent.editSettings.newRowPosition === 'Top' && this.content.scrollTop < this.parent.getRowHeight();\n var isBottom = this.parent.editSettings.newRowPosition === 'Bottom'\n && this.parent.pageSettings.currentPage === this.maxPage;\n if (isTop || isBottom) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n };\n VirtualContentRenderer.prototype.onDataReady = function (e) {\n if (!isNullOrUndefined(e.count)) {\n this.count = e.count;\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n this.vgenerator.checkAndResetCache(e.requestType);\n if (['refresh', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', undefined]\n .some(function (value) { return e.requestType === value; })) {\n this.refreshOffsets();\n }\n this.setVirtualHeight();\n this.resetScrollPosition(e.requestType);\n };\n /**\n * @param {number} height - specifies the height\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.setVirtualHeight = function (height) {\n var width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length + this.parent.groupSettings.columns.length - 1) + 'px' : '100%';\n if (this.parent.isFrozenGrid()) {\n var virtualHeightTemp = (this.parent.pageSettings.currentPage === 1 && Object.keys(this.offsets).length <= 2) ?\n this.offsets[1] : this.offsets[this.getTotalBlocks() - 2];\n var scrollableElementHeight = this.content.clientHeight;\n virtualHeightTemp = virtualHeightTemp > scrollableElementHeight ? virtualHeightTemp : 0;\n // To overcome the white space issue in last page (instead of position absolute)\n this.virtualEle.setVirtualHeight(virtualHeightTemp, width);\n }\n else {\n var virtualHeight = (this.offsets[isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() :\n this.getTotalBlocks()]);\n this.virtualEle.setVirtualHeight(virtualHeight, width);\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.setVirtualHeight(1, width);\n if (this.parent.isFrozenGrid()) {\n this.virtualEle.setMovableVirtualHeight(1, width);\n this.header.virtualEle.setMovableVirtualHeight(1, width);\n }\n }\n };\n VirtualContentRenderer.prototype.getPageFromTop = function (sTop, info) {\n var _this = this;\n var total = (isGroupAdaptive(this.parent)) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n var page = 0;\n this.offsetKeys.some(function (offset) {\n var iOffset = Number(offset);\n var border = sTop <= _this.offsets[offset] || (iOffset === total && sTop > _this.offsets[offset]);\n if (border) {\n if (_this.offsetKeys.length % 2 !== 0 && iOffset.toString() === _this.offsetKeys[_this.offsetKeys.length - 2]\n && sTop <= _this.offsets[_this.offsetKeys.length - 1]) {\n iOffset = iOffset + 1;\n }\n info.block = iOffset % 2 === 0 ? 1 : 0;\n page = Math.max(1, Math.min(_this.vgenerator.getPage(iOffset), _this.maxPage));\n }\n return border;\n });\n return page;\n };\n VirtualContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if (info === undefined) {\n info = { page: this.getPageFromTop(sTop, {}) };\n info.blockIndexes = this.vgenerator.getBlockIndexes(info.page);\n }\n var block = (info.blockIndexes[0] || 1) - 1;\n var translate = this.getOffset(block);\n var endTranslate = this.getOffset(info.blockIndexes[info.blockIndexes.length - 1]);\n if (isOnenter) {\n info = this.prevInfo;\n }\n var result = translate > sTop ?\n this.getOffset(block - 1) : endTranslate < (sTop + cHeight) ? this.getOffset(block + 1) : translate;\n var blockHeight = this.offsets[info.blockIndexes[info.blockIndexes.length - 1]] -\n this.tmpOffsets[info.blockIndexes[0]];\n var totalBlocks = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n if (result + blockHeight > this.offsets[totalBlocks]) {\n result -= (result + blockHeight) - this.offsets[totalBlocks];\n }\n return result;\n };\n VirtualContentRenderer.prototype.getOffset = function (block) {\n return Math.min(this.offsets[block] | 0, this.offsets[this.maxBlock] | 0);\n };\n VirtualContentRenderer.prototype.onEntered = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n if (Browser.isIE && !isWheel && check && !_this.preventEvent) {\n _this.parent.showSpinner();\n }\n var colVFtable = _this.parent.enableColumnVirtualization && _this.parent.isFrozenGrid();\n var xAxis = current.axis === 'X';\n var top = _this.prevInfo.offsets ? _this.prevInfo.offsets.top : null;\n var height = _this.content.getBoundingClientRect().height;\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0] - 1);\n if (xAxis && !colVFtable) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n var y = _this.getTranslateY(e.top, height, xAxis && top === e.top ? _this.prevInfo : undefined, true);\n _this.virtualEle.adjustTable(colVFtable ? 0 : x, Math.min(y, _this.offsets[_this.maxBlock]));\n if (colVFtable) {\n _this.virtualEle.adjustMovableTable(x, 0);\n }\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(colVFtable ? 0 : x, 0);\n if (colVFtable) {\n _this.header.virtualEle.adjustMovableTable(x, 0);\n }\n }\n };\n };\n VirtualContentRenderer.prototype.dataBound = function () {\n this.parent.notify(events.refreshVirtualFrozenHeight, {});\n if (this.isSelection && this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n this.parent.selectRow(this.selectedRowIndex);\n }\n else {\n this.activeKey = this.empty;\n }\n };\n VirtualContentRenderer.prototype.rowSelected = function (args, isSelection) {\n if ((this.isSelection || isSelection) && !this.isLastBlockRow(args.rowIndex)) {\n var transform = getTransformValues(this.content.firstElementChild);\n var gridTop = this.parent.element.getBoundingClientRect().top;\n var rowTop = args.row.getBoundingClientRect().top - gridTop;\n var height = this.content.getBoundingClientRect().height;\n var isBottom = height < rowTop;\n var remainHeight = isBottom ? rowTop - height : this.initialRowTop - rowTop;\n var translateY = isBottom ? transform.height - remainHeight : transform.height + remainHeight;\n this.virtualEle.adjustTable(transform.width, translateY);\n var lastRowTop = this.content.querySelector('tbody').lastElementChild.getBoundingClientRect().top - gridTop;\n if (lastRowTop < height) {\n translateY = translateY + (height - (args.row.getBoundingClientRect().top - gridTop));\n this.virtualEle.adjustTable(transform.width, translateY - (this.parent.getRowHeight() / 2));\n }\n }\n this.isSelection = false;\n };\n VirtualContentRenderer.prototype.isLastBlockRow = function (index) {\n var scrollEle = this.parent.getContent().firstElementChild;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var startIdx = (this.maxPage * this.parent.pageSettings.pageSize) - visibleRowCount;\n return index >= startIdx;\n };\n VirtualContentRenderer.prototype.refreshVirtualCacheOnRowDD = function (args) {\n var blockSize = this.getBlockSize();\n var currentblk = Math.ceil((args.objIndex + 1) / blockSize);\n var secondBlock = args.objIndex - args.startIndex >= blockSize ? blockSize : 0;\n var thirdBlock = args.objIndex - args.startIndex >= (blockSize + blockSize) ? blockSize : 0;\n this.orderRowObj.push(this.vgenerator.cache[currentblk][args.objIndex - args.startIndex - secondBlock - thirdBlock]);\n if (this.parent.isFrozenGrid()) {\n this.mvbOrderRowObj.push(this.vgenerator.movableCache[currentblk][args.objIndex - args.startIndex - secondBlock - thirdBlock]);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n // eslint-disable-next-line\n this.frOrderRowObj.push(this.vgenerator.frozenRightCache[currentblk][args.objIndex - args.startIndex - secondBlock - thirdBlock]);\n }\n }\n if (args.end === true) {\n var currentBlocks = this.currentInfo.blockIndexes;\n if (!currentBlocks) {\n currentBlocks = [1, 2];\n }\n resetRowObjectIndex(this.parent, this.orderRowObj, args.startIndex);\n if (this.parent.isFrozenGrid()) {\n resetRowObjectIndex(this.parent, this.mvbOrderRowObj, args.startIndex);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n resetRowObjectIndex(this.parent, this.frOrderRowObj, args.startIndex);\n }\n }\n for (var i = 0; i < currentBlocks.length; i++) {\n this.vgenerator.cache[currentBlocks[i]] = this.orderRowObj.splice(0, blockSize);\n if (this.parent.isFrozenGrid()) {\n this.vgenerator.movableCache[currentBlocks[i]] = this.mvbOrderRowObj.splice(0, blockSize);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.vgenerator.frozenRightCache[currentBlocks[i]] = this.frOrderRowObj.splice(0, blockSize);\n }\n }\n }\n this.orderRowObj = [];\n this.orderRowObj = [];\n this.mvbOrderRowObj = [];\n }\n };\n VirtualContentRenderer.prototype.refreshMaxPage = function () {\n if (this.parent.groupSettings.columns.length && this.parent.vcRows.length) {\n this.maxPage = Math.ceil(this.parent.vcRows.length / this.parent.pageSettings.pageSize);\n }\n };\n VirtualContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n this.parent[action](dataReady, this.onDataReady, this);\n this.parent.addEventListener(events.dataBound, this.dataBound.bind(this));\n this.parent.addEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n this.parent.addEventListener(events.rowSelected, this.rowSelected.bind(this));\n this.parent[action](refreshVirtualBlock, this.refreshContentRows, this);\n this.parent[action](events.selectVirtualRow, this.selectVirtualRow, this);\n this.parent[action](events.virtaulCellFocus, this.virtualCellFocus, this);\n this.parent[action](events.virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent[action](events.virtualScrollAddActionBegin, this.addActionBegin, this);\n this.parent[action](events.virtualScrollEdit, this.restoreEdit, this);\n this.parent[action](events.virtualScrollEditSuccess, this.editSuccess, this);\n this.parent[action](events.refreshVirtualCache, this.refreshCache, this);\n this.parent[action](events.editReset, this.resetIsedit, this);\n this.parent[action](events.getVirtualData, this.getVirtualData, this);\n this.parent[action](events.virtualScrollEditCancel, this.editCancel, this);\n this.parent[action](events.refreshVirtualCacheOnRowDD, this.refreshVirtualCacheOnRowDD, this);\n this.parent[action](events.refreshVirtualMaxPage, this.refreshMaxPage, this);\n this.parent[action](events.selectRowOnContextOpen, this.selectRowOnContextOpen, this);\n this.parent[action](events.resetVirtualFocus, this.resetVirtualFocus, this);\n this.parent[action](events.refreshVirtualEditFormCells, this.refreshCells, this);\n this.parent[action](events.scrollToEdit, this.scrollToEdit, this);\n var event = this.actions;\n for (var i = 0; i < event.length; i++) {\n this.parent[action](event[i] + \"-begin\", this.onActionBegin, this);\n }\n var fn = function () {\n _this.observer.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); }, _this.onEntered());\n var gObj = _this.parent;\n if (gObj.enablePersistence && gObj.scrollPosition) {\n _this.content.scrollTop = gObj.scrollPosition.top;\n var scrollValues = { direction: 'down', sentinel: _this.observer.sentinelInfo.down,\n offset: gObj.scrollPosition, focusElement: gObj.element };\n _this.scrollListener(scrollValues);\n if (gObj.enableColumnVirtualization) {\n _this.content.scrollLeft = gObj.scrollPosition.left;\n }\n }\n _this.parent.off(contentReady, fn);\n };\n this.parent.on(contentReady, fn, this);\n };\n VirtualContentRenderer.prototype.scrollToEdit = function (col) {\n var isFrozen = this.parent.isFrozenGrid();\n var allowScroll = true;\n this.validationCheck = true;\n if (this.isAdd && this.content.scrollTop > 0) {\n allowScroll = false;\n var keys = Object.keys(this.offsets);\n this.content.scrollTop = this.parent.editSettings.newRowPosition === 'Top' ? 0 : this.offsets[keys.length - 1];\n }\n var row = this.parent.getRowByIndex(this.editedRowIndex);\n if (!row && !isNullOrUndefined(this.editedRowIndex)) {\n if (!row || !this.isRowInView(row)) {\n var rowIndex = this.parent.getRowHeight();\n var scrollTop = this.editedRowIndex * rowIndex;\n if (!isNullOrUndefined(scrollTop)) {\n allowScroll = false;\n this.content.scrollTop = scrollTop;\n }\n }\n }\n if (col && allowScroll) {\n var offset = this.vgenerator.cOffsets[(col.index - this.parent.getVisibleFrozenColumns()) - 1];\n if (!this.parent.enableColumnVirtualization) {\n var header = this.parent.getHeaderContent().querySelector('.e-headercelldiv[e-mappinguid=\"' + col.uid + '\"]');\n offset = isFrozen ? header.parentElement.offsetLeft\n - this.parent.getFrozenVirtualHeader().offsetWidth\n : header.parentElement.offsetLeft;\n }\n if (isFrozen) {\n this.parent.getMovableVirtualContent().scrollLeft = this.parent.enableRtl ? -Math.abs(offset) : offset;\n }\n else {\n this.content.scrollLeft = this.parent.enableRtl ? -Math.abs(offset) : offset;\n }\n }\n if (col && !allowScroll) {\n this.validationCol = col;\n }\n };\n VirtualContentRenderer.prototype.refreshCells = function (rowObj) {\n rowObj.cells = this.vgenerator.generateCells();\n };\n VirtualContentRenderer.prototype.resetVirtualFocus = function (e) {\n this.isCancel = e.isCancel;\n };\n /**\n * @param {Object} data - specifies the data\n * @param {Object} data.virtualData -specifies the data\n * @param {boolean} data.isAdd - specifies isAdd\n * @param {boolean} data.isCancel - specifies boolean in cancel\n * @param {boolean} data.isScroll - specifies boolean for scroll\n * @returns {void}\n * @hidden\n */\n VirtualContentRenderer.prototype.getVirtualData = function (data) {\n if (this.isNormaledit) {\n var error = this.parent.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n var keys = Object.keys(this.virtualData);\n data.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n if (error) {\n return;\n }\n this.virtualData = keys.length ? this.virtualData : data.virtualData;\n this.getVirtualEditedData(this.virtualData);\n data.virtualData = this.virtualData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n }\n };\n VirtualContentRenderer.prototype.selectRowOnContextOpen = function (args) {\n this.isContextMenuOpen = args.isOpen;\n };\n VirtualContentRenderer.prototype.editCancel = function (args) {\n var dataIndex = getEditedDataIndex(this.parent, args.data);\n if (!isNullOrUndefined(dataIndex)) {\n args.data = this.parent.getCurrentViewRecords()[dataIndex];\n }\n };\n VirtualContentRenderer.prototype.editSuccess = function (args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewData(args.data);\n }\n this.isAdd = false;\n }\n };\n VirtualContentRenderer.prototype.updateCurrentViewData = function (data) {\n var dataIndex = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(dataIndex)) {\n this.parent.getCurrentViewRecords()[dataIndex] = data;\n }\n };\n VirtualContentRenderer.prototype.actionBegin = function (args) {\n if (args.requestType !== 'virtualscroll') {\n this.requestType = args.requestType;\n }\n if (!args.cancel) {\n this.parent.notify(events.refreshVirtualFrozenRows, args);\n }\n };\n VirtualContentRenderer.prototype.virtualCellFocus = function (e) {\n // To decide the action (select or scroll), when using arrow keys for cell focus\n var ele = document.activeElement;\n if (ele.classList.contains(literals.rowCell)\n && e && (e.action === 'upArrow' || e.action === 'downArrow')) {\n var rowIndex = parseInt(ele.parentElement.getAttribute(literals.ariaRowIndex), 10);\n if (e && (e.action === 'downArrow' || e.action === 'upArrow')) {\n var scrollEle = this.parent.getContent().firstElementChild;\n if (e.action === 'downArrow') {\n rowIndex += 1;\n }\n else {\n rowIndex -= 1;\n }\n this.rowIndex = rowIndex;\n this.cellIndex = parseInt(ele.getAttribute(literals.ariaColIndex), 10);\n var row = this.parent.getRowByIndex(rowIndex);\n var page = this.parent.pageSettings.currentPage;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var emptyRow = false;\n if (isNullOrUndefined(row)) {\n emptyRow = true;\n if ((e.action === 'downArrow' && page === this.maxPage - 1) || (e.action === 'upArrow' && page === 1)) {\n emptyRow = false;\n }\n }\n if (emptyRow || (ensureLastRow(row, this.parent) && e.action === 'downArrow')\n || (ensureFirstRow(row, this.parent.getRowHeight() * 2) && e.action === 'upArrow')) {\n this.activeKey = e.action;\n scrollEle.scrollTop = e.action === 'downArrow' ?\n (rowIndex - visibleRowCount) * this.parent.getRowHeight() : rowIndex * this.parent.getRowHeight();\n }\n else {\n this.activeKey = this.empty;\n }\n this.parent.selectRow(rowIndex);\n }\n }\n };\n VirtualContentRenderer.prototype.editActionBegin = function (e) {\n this.editedRowIndex = e.index;\n var rowData = extend({}, this.getRowObjectByIndex(e.index));\n var keys = Object.keys(this.virtualData);\n e.data = keys.length ? this.virtualData : rowData;\n e.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n };\n VirtualContentRenderer.prototype.refreshCache = function (data) {\n var block = Math.ceil((this.editedRowIndex + 1) / this.getBlockSize());\n var index = this.editedRowIndex - ((block - 1) * this.getBlockSize());\n this.vgenerator.cache[block][index].data = data;\n if (this.vgenerator.movableCache[block]) {\n this.vgenerator.movableCache[block][index].data = data;\n }\n if (this.vgenerator.frozenRightCache[block]) {\n this.vgenerator.frozenRightCache[block][index].data = data;\n }\n };\n VirtualContentRenderer.prototype.actionComplete = function (args) {\n var editRequestTypes = ['delete', 'save', 'cancel'];\n var dataActionRequestTypes = ['sorting', 'filtering', 'grouping', 'refresh', 'searching', 'ungrouping', 'reorder'];\n if (editRequestTypes.some(function (value) { return value === args.requestType; })) {\n this.refreshOffsets();\n if (this.parent.isFrozenGrid()) {\n this.vgenerator.refreshColOffsets();\n this.parent.contentModule.virtualRenderer.virtualEle.setVirtualHeight();\n }\n else {\n this.refreshVirtualElement();\n }\n }\n if (this.isNormaledit && (dataActionRequestTypes.some(function (value) { return value === args.requestType; })\n || editRequestTypes.some(function (value) { return value === args.requestType; }))) {\n this.isCancel = true;\n this.isAdd = false;\n this.editedRowIndex = this.empty;\n this.virtualData = {};\n if (this.parent.editModule) {\n this.parent.editModule.editModule.previousData = undefined;\n }\n }\n if (this.parent.enableColumnVirtualization && args.requestType === 'filterafteropen'\n && this.currentInfo.columnIndexes && this.currentInfo.columnIndexes[0] > 0) {\n this.parent.resetFilterDlgPosition(args.columnName);\n }\n };\n VirtualContentRenderer.prototype.resetIsedit = function () {\n if (this.parent.enableVirtualization && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && Object.keys(this.virtualData).length)\n || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n };\n VirtualContentRenderer.prototype.scrollAfterEdit = function () {\n if (this.parent.editModule && this.parent.editSettings.allowEditing && this.isNormaledit) {\n if (this.parent.element.querySelector('.e-gridform')) {\n var editForm = this.parent.element.querySelector('.' + literals.editedRow);\n var addForm = this.parent.element.querySelector('.' + literals.addedRow);\n if (editForm || addForm) {\n var rowData = editForm ? extend({}, this.getRowObjectByIndex(this.editedRowIndex))\n : extend({}, this.emptyRowData);\n var keys = Object.keys(this.virtualData);\n this.virtualData = keys.length ? this.getVirtualEditedData(this.virtualData) : this.getVirtualEditedData(rowData);\n }\n }\n }\n };\n VirtualContentRenderer.prototype.createEmptyRowdata = function () {\n var _this = this;\n this.parent.columnModel.filter(function (e) {\n _this.emptyRowData[e.field] = _this.empty;\n });\n };\n VirtualContentRenderer.prototype.addActionBegin = function (args) {\n if (this.isNormaledit) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n this.isAdd = true;\n var page = this.parent.pageSettings.currentPage;\n if (!this.parent.frozenRows && this.content.scrollTop > 0 && this.parent.editSettings.newRowPosition === 'Top') {\n this.isAdd = true;\n this.onActionBegin();\n args.startEdit = false;\n this.content.scrollTop = 0;\n }\n if (page < this.maxPage - 1 && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.isAdd = true;\n this.parent.setProperties({ pageSettings: { currentPage: this.maxPage - 1 } }, true);\n args.startEdit = false;\n this.content.scrollTop = this.offsets[this.offsetKeys.length];\n }\n }\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Object} returns the object\n * @hidden\n */\n VirtualContentRenderer.prototype.getRowObjectByIndex = function (index) {\n var data = this.getRowCollection(index, false, true);\n return data;\n };\n VirtualContentRenderer.prototype.getBlockSize = function () {\n return this.parent.pageSettings.pageSize >> 1;\n };\n VirtualContentRenderer.prototype.getBlockHeight = function () {\n return this.getBlockSize() * this.parent.getRowHeight();\n };\n VirtualContentRenderer.prototype.isEndBlock = function (index) {\n var totalBlocks = this.getTotalBlocks();\n return index >= totalBlocks || index === totalBlocks - 1;\n };\n VirtualContentRenderer.prototype.getGroupedTotalBlocks = function () {\n var rows = this.parent.vcRows;\n return Math.floor((rows.length / this.getBlockSize()) < 1 ? 1 : rows.length / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getTotalBlocks = function () {\n return Math.ceil(this.count / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getColumnOffset = function (block) {\n return this.vgenerator.cOffsets[block] | 0;\n };\n VirtualContentRenderer.prototype.getModelGenerator = function () {\n return new VirtualRowModelGenerator(this.parent);\n };\n VirtualContentRenderer.prototype.resetScrollPosition = function (action) {\n if (this.actions.some(function (value) { return value === action; })) {\n this.preventEvent = this.content.scrollTop !== 0;\n this.content.scrollTop = 0;\n }\n if (action !== 'virtualscroll') {\n this.isAdd = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.onActionBegin = function (e) {\n //Update property silently..\n this.parent.setProperties({ pageSettings: { currentPage: 1 } }, true);\n };\n VirtualContentRenderer.prototype.getRows = function () {\n return this.vgenerator.getRows();\n };\n VirtualContentRenderer.prototype.getRowByIndex = function (index) {\n var row;\n if (isGroupAdaptive(this.parent)) {\n row = this.parent.getDataRows()[index];\n }\n if (this.prevInfo) {\n row = this.getRowCollection(index, false);\n }\n return row;\n };\n VirtualContentRenderer.prototype.getMovableVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, true);\n };\n VirtualContentRenderer.prototype.getFrozenRightVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false, false, true);\n };\n VirtualContentRenderer.prototype.getRowCollection = function (index, isMovable, isRowObject, isFrozenRight) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n var rowCollection = isMovable ? this.parent.getMovableDataRows() : this.parent.getDataRows();\n rowCollection = isFrozenRight ? this.parent.getFrozenRightDataRows() : rowCollection;\n var collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n var selectedRow = collection[index - startIdx];\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n if (!isRowObject) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[index]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n else {\n selectedRow = index <= this.parent.frozenRows ? this.parent.getRowsObject()[index].data : selectedRow;\n }\n }\n return selectedRow;\n };\n VirtualContentRenderer.prototype.getVirtualRowIndex = function (index) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n return startIdx + index;\n };\n /**\n * @returns {void}\n * @hidden */\n VirtualContentRenderer.prototype.refreshOffsets = function () {\n var gObj = this.parent;\n var row = 0;\n var bSize = this.getBlockSize();\n var total = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n this.prevHeight = this.offsets[total];\n this.maxBlock = total % 2 === 0 ? total - 2 : total - 1;\n this.offsets = {};\n //Row offset update\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(total)).map(function () { return ++row; });\n for (var i = 0; i < blocks.length; i++) {\n var tmp = (this.vgenerator.cache[blocks[i]] || []).length;\n var rem = !isGroupAdaptive(this.parent) ? this.count % bSize : (gObj.vcRows.length % bSize);\n var size = !isGroupAdaptive(this.parent) && blocks[i] in this.vgenerator.cache ?\n tmp * this.parent.getRowHeight() : rem && blocks[i] === total ? rem * this.parent.getRowHeight() :\n this.getBlockHeight();\n // let size: number = this.parent.groupSettings.columns.length && block in this.vgenerator.cache ?\n // tmp * getRowHeight() : this.getBlockHeight();\n this.offsets[blocks[i]] = (this.offsets[blocks[i] - 1] | 0) + size;\n this.tmpOffsets[blocks[i]] = this.offsets[blocks[i] - 1] | 0;\n }\n this.offsetKeys = Object.keys(this.offsets);\n if (isGroupAdaptive(this.parent)) {\n this.parent.vGroupOffsets = this.offsets;\n }\n //Column offset update\n if (this.parent.enableColumnVirtualization) {\n this.vgenerator.refreshColOffsets();\n }\n };\n VirtualContentRenderer.prototype.refreshVirtualElement = function () {\n this.vgenerator.refreshColOffsets();\n this.setVirtualHeight();\n };\n VirtualContentRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var frozenCols = this.parent.getFrozenColumns();\n var fcntColGrp;\n var mcntColGrp;\n if (frozenCols) {\n fcntColGrp = [].slice.call(this.parent.getFrozenVirtualContent().querySelectorAll('col'));\n mcntColGrp = [].slice.call(this.parent.getMovableVirtualContent().querySelectorAll('col'));\n }\n var rows = [];\n rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var isRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n isRefresh = false;\n }\n var tr = gObj.getDataRows();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n var idx = gObj.getNormalizedColumnIndex(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n var colGrp = void 0;\n if (fcntColGrp && mcntColGrp) {\n if (idx >= frozenCols) {\n colGrp = mcntColGrp;\n tr = this.parent.getMovableRows();\n idx = idx - frozenCols;\n }\n else {\n colGrp = fcntColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(colGrp[idx], { 'display': displayVal });\n }\n if (!isRefresh) {\n var width = void 0;\n if (column.visible) {\n width = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n width = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n if (width > gObj.width) {\n this.setDisplayNone(tr, idx, displayVal, rows);\n if (this.parent.enableColumnVirtualization) {\n this.virtualEle.setWrapperWidth(width + '');\n }\n this.refreshVirtualElement();\n }\n else {\n isRefresh = true;\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (isRefresh || frozenCols) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: rows, args: { isFrozen: false, rows: rows } });\n }\n };\n VirtualContentRenderer.prototype.selectVirtualRow = function (args) {\n var _this = this;\n args.isAvailable = args.selectedIndex < this.count;\n if (args.isAvailable && !this.isContextMenuOpen && this.activeKey !== 'upArrow'\n && this.activeKey !== 'downArrow' && !this.isSelection && !this.requestTypes.some(function (value) { return value === _this.requestType; })\n && !this.parent.selectionModule.isInteracted) {\n var selectedRow = this.parent.getRowByIndex(args.selectedIndex);\n var rowHeight = this.parent.getRowHeight();\n if (!selectedRow || !this.isRowInView(selectedRow)) {\n this.isSelection = true;\n this.selectedRowIndex = args.selectedIndex;\n var scrollTop = (args.selectedIndex + 1) * rowHeight;\n if (!isNullOrUndefined(scrollTop)) {\n var direction = this.content.scrollTop < scrollTop ? 'down' : 'up';\n this.selectRowIndex = args.selectedIndex;\n this.content.scrollTop = scrollTop;\n this.isSelectionScroll = this.observer.check(direction);\n }\n }\n }\n if (this.parent.isFrozenGrid() && this.requestType) {\n if (this.parent.getTablesCount() === this.frzIdx) {\n this.requestType = this.empty;\n this.frzIdx = 1;\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.requestType = this.empty;\n }\n };\n VirtualContentRenderer.prototype.isRowInView = function (row) {\n var top = row.getBoundingClientRect().top - this.parent.element.getBoundingClientRect().top;\n return (top >= this.initialRowTop && top <= this.content.offsetHeight);\n };\n return VirtualContentRenderer;\n}(ContentRender));\nexport { VirtualContentRenderer };\n/**\n * @hidden\n */\nvar VirtualHeaderRenderer = /** @class */ (function (_super) {\n __extends(VirtualHeaderRenderer, _super);\n function VirtualHeaderRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.virtualEle = new VirtualElementHandler();\n _this.isMovable = false;\n _this.gen = new VirtualRowModelGenerator(_this.parent);\n _this.parent.on(events.columnVisibilityChanged, _this.setVisible, _this);\n _this.parent.on(refreshVirtualBlock, function (e) { return e.virtualInfo.sentinelInfo.axis === 'X' ? _this.refreshUI() : null; }, _this);\n return _this;\n }\n VirtualHeaderRenderer.prototype.renderTable = function () {\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + literals.headerContent)));\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.getPanel().querySelector('.' + literals.headerContent);\n this.virtualEle.content.style.position = 'relative';\n this.virtualEle.renderWrapper();\n this.virtualEle.renderPlaceHolder('absolute');\n };\n VirtualHeaderRenderer.prototype.appendContent = function (table) {\n if (!this.isMovable) {\n this.virtualEle.wrapper.appendChild(table);\n }\n else {\n this.virtualEle.movableWrapper.appendChild(table);\n this.isMovable = false;\n }\n };\n VirtualHeaderRenderer.prototype.refreshUI = function () {\n this.isMovable = this.parent.isFrozenGrid();\n this.setFrozenTable(this.parent.getMovableVirtualContent());\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + literals.headerContent)));\n _super.prototype.refreshUI.call(this);\n this.setFrozenTable(this.parent.getFrozenVirtualContent());\n };\n VirtualHeaderRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var needFullRefresh;\n var frozenCols = this.parent.getFrozenColumns();\n var fhdrColGrp;\n var mhdrColGrp;\n if (frozenCols) {\n fhdrColGrp = [].slice.call(this.parent.getFrozenVirtualHeader().querySelectorAll('col'));\n mhdrColGrp = [].slice.call(this.parent.getMovableVirtualHeader().querySelectorAll('col'));\n }\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n var colGrp = void 0;\n if (fhdrColGrp && mhdrColGrp) {\n if (idx >= frozenCols) {\n colGrp = mhdrColGrp;\n idx = idx - frozenCols;\n }\n else {\n colGrp = fhdrColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n setStyleAttribute(colGrp[idx], { 'display': displayVal });\n if (gObj.enableColumnVirtualization && !gObj.groupSettings.columns.length) {\n var tablewidth = void 0;\n if (column.visible) {\n tablewidth = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n tablewidth = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n if (tablewidth > gObj.width) {\n this.setDisplayNone(column, displayVal);\n this.virtualEle.setWrapperWidth(tablewidth + '');\n this.gen.refreshColOffsets();\n }\n else {\n needFullRefresh = true;\n }\n }\n else {\n needFullRefresh = true;\n }\n if (needFullRefresh && !frozenCols) {\n this.refreshUI();\n }\n }\n if (frozenCols) {\n this.parent.notify(events.columnPositionChanged, {});\n }\n };\n VirtualHeaderRenderer.prototype.setFrozenTable = function (content) {\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization\n && this.parent.contentModule.isXaxis()) {\n this.parent.contentModule\n .setTable(content.querySelector('.' + literals.table));\n }\n };\n VirtualHeaderRenderer.prototype.setDisplayNone = function (col, displayVal) {\n var frozenCols = this.parent.isFrozenGrid();\n var table = this.getTable();\n if (frozenCols && col.getFreezeTableName() === 'movable') {\n table = this.parent.getMovableVirtualHeader().querySelector('.' + literals.table);\n }\n for (var _i = 0, _a = [].slice.apply(table.querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === col.uid) {\n setStyleAttribute(ele, { 'display': displayVal });\n if (displayVal === '') {\n removeClass([ele], 'e-hide');\n }\n break;\n }\n }\n };\n return VirtualHeaderRenderer;\n}(HeaderRender));\nexport { VirtualHeaderRenderer };\n/**\n * @hidden\n */\nvar VirtualElementHandler = /** @class */ (function () {\n function VirtualElementHandler() {\n }\n VirtualElementHandler.prototype.renderWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.wrapper.appendChild(this.table);\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderPlaceHolder = function (position) {\n if (position === void 0) { position = 'relative'; }\n this.placeholder = createElement('div', { className: 'e-virtualtrack', styles: \"position:\" + position });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderFrozenWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) + \"; display: flex\" });\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderFrozenPlaceHolder = function () {\n this.placeholder = createElement('div', { className: 'e-virtualtrack' });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderMovableWrapper = function (height) {\n this.movableWrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.movableContent.appendChild(this.movableWrapper);\n };\n VirtualElementHandler.prototype.renderMovablePlaceHolder = function () {\n this.movablePlaceholder = createElement('div', { className: 'e-virtualtrack' });\n this.movableContent.appendChild(this.movablePlaceholder);\n };\n VirtualElementHandler.prototype.adjustTable = function (xValue, yValue) {\n this.wrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.adjustMovableTable = function (xValue, yValue) {\n this.movableWrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.setMovableWrapperWidth = function (width, full) {\n this.movableWrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setMovableVirtualHeight = function (height, width) {\n this.movablePlaceholder.style.height = height + \"px\";\n this.movablePlaceholder.style.width = width;\n };\n VirtualElementHandler.prototype.setWrapperWidth = function (width, full) {\n this.wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setVirtualHeight = function (height, width) {\n this.placeholder.style.height = height + \"px\";\n this.placeholder.style.width = width;\n };\n VirtualElementHandler.prototype.setFreezeWrapperWidth = function (wrapper, width, full) {\n wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n return VirtualElementHandler;\n}());\nexport { VirtualElementHandler };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { FreezeContentRender, FreezeRender } from './freeze-renderer';\nimport { ColumnFreezeContentRenderer } from './column-freeze-renderer';\nimport { VirtualContentRenderer, VirtualHeaderRenderer } from './virtual-content-renderer';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { FreezeRowModelGenerator } from '../services/freeze-row-model-generator';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { RenderType } from '../base/enum';\nimport { InterSectionObserver } from '../services/intersection-observer';\nimport * as events from '../base/constant';\nimport { splitFrozenRowObjectCells } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * VirtualFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar VirtualFreezeRenderer = /** @class */ (function (_super) {\n __extends(VirtualFreezeRenderer, _super);\n function VirtualFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n /** @hidden */\n _this.frzRows = [];\n /** @hidden */\n _this.mvblRows = [];\n /** @hidden */\n _this.frRows = [];\n _this.serviceLoc = locator;\n _this.eventListener('on');\n _this.rowModelGenerator = new RowModelGenerator(_this.parent);\n return _this;\n }\n VirtualFreezeRenderer.prototype.eventListener = function (action) {\n this.parent[action](events.getVirtualData, this.getVirtualData, this);\n this.parent[action](events.setFreezeSelection, this.setFreezeSelection, this);\n this.parent[action](events.refreshVirtualFrozenRows, this.refreshVirtualFrozenRows, this);\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n };\n VirtualFreezeRenderer.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' && this.parent.frozenRows) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n setCache(this, i);\n }\n }\n };\n VirtualFreezeRenderer.prototype.refreshVirtualFrozenRows = function (args) {\n var _this = this;\n var gObj = this.parent;\n if (args.requestType === 'delete' && gObj.frozenRows) {\n args.isFrozenRowsRender = true;\n var query = gObj.renderModule.data.generateQuery(true).clone();\n query.page(1, gObj.pageSettings.pageSize);\n gObj.renderModule.data.getData({}, query).then(function (e) {\n renderFrozenRows(args, e.result, gObj.getSelectedRowIndexes(), gObj, _this.rowModelGenerator, _this.serviceLoc, _this.virtualRenderer, _this);\n });\n }\n };\n VirtualFreezeRenderer.prototype.getVirtualData = function (data) {\n this.virtualRenderer.getVirtualData(data);\n };\n VirtualFreezeRenderer.prototype.setFreezeSelection = function (args) {\n setFreezeSelection(args, this.virtualRenderer);\n };\n /**\n * @returns {void}\n * @hidden\n */\n VirtualFreezeRenderer.prototype.renderTable = function () {\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n this.virtualRenderer = new VirtualContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n _super.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var movableCont = this.getMovableContent();\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n if (this.parent.enableColumnVirtualization) {\n this.virtualRenderer.virtualEle.movableContent = this.virtualRenderer.movableContent\n = this.getPanel().querySelector('.' + literals.movableContent);\n this.virtualRenderer.virtualEle.renderMovableWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderMovablePlaceHolder();\n var tbl = movableCont.querySelector('table');\n this.virtualRenderer.virtualEle.movableTable = tbl;\n this.virtualRenderer.virtualEle.movableWrapper.appendChild(tbl);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movableWrapper);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movablePlaceholder);\n }\n this.virtualRenderer.virtualEle.wrapper.appendChild(this.getFrozenContent());\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n /**\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newChild\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n VirtualFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n appendContent(this.virtualRenderer, this.widthService, target, newChild, e);\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {NotifyArgs} notifyArgs - specifies the notifyargs\n * @returns {Row[]} returns the row\n * @hidden\n */\n VirtualFreezeRenderer.prototype.generateRows = function (data, notifyArgs) {\n if (!this.firstPageRecords) {\n this.firstPageRecords = data;\n }\n return generateRows(this.virtualRenderer, data, notifyArgs, this.freezeRowGenerator, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getRowByIndex = function (index) {\n return this.virtualRenderer.getRowByIndex(index);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getMovableRowByIndex = function (index) {\n return this.virtualRenderer.getMovableVirtualRowByIndex(index);\n };\n VirtualFreezeRenderer.prototype.collectRows = function (tableName) {\n return collectRows(tableName, this.virtualRenderer, this.parent);\n };\n /**\n * @returns {HTMLCollection} returns the Htmlcollection\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getMovableRows = function () {\n return this.collectRows('movable');\n };\n /**\n * @returns {HTMLCollectionOf} returns the html collection\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getRows = function () {\n return this.collectRows('frozen-left');\n };\n /**\n * @returns {Element} returns the element\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getColGroup = function () {\n var mCol = this.parent.getMovableVirtualContent();\n return this.isXaxis() ? mCol.querySelector(literals.colGroup) : this.colgroup;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {Row[]} returns the row\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getReorderedFrozenRows = function (args) {\n return getReorderedFrozenRows(args, this.virtualRenderer, this.parent, this.freezeRowGenerator, this.firstPageRecords);\n };\n VirtualFreezeRenderer.prototype.isXaxis = function () {\n return isXaxis(this.virtualRenderer);\n };\n VirtualFreezeRenderer.prototype.getHeaderCells = function () {\n return getHeaderCells(this.virtualRenderer, this.parent);\n };\n VirtualFreezeRenderer.prototype.getVirtualFreezeHeader = function () {\n return getVirtualFreezeHeader(this.virtualRenderer, this.parent);\n };\n VirtualFreezeRenderer.prototype.ensureFrozenCols = function (columns) {\n return ensureFrozenCols(columns, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {object} returns the object\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getRowObjectByIndex = function (index) {\n return this.virtualRenderer.getRowObjectByIndex(index);\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n VirtualFreezeRenderer.prototype.setColGroup = function (colGroup) {\n return setColGroup(colGroup, this.virtualRenderer, this);\n };\n return VirtualFreezeRenderer;\n}(FreezeContentRender));\nexport { VirtualFreezeRenderer };\n/**\n * VirtualFreezeHdrRenderer is used to render the virtual table within the frozen and movable header table\n *\n * @hidden\n */\nvar VirtualFreezeHdrRenderer = /** @class */ (function (_super) {\n __extends(VirtualFreezeHdrRenderer, _super);\n function VirtualFreezeHdrRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.serviceLoc = locator;\n return _this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n VirtualFreezeHdrRenderer.prototype.renderTable = function () {\n this.virtualHdrRenderer = new VirtualHeaderRenderer(this.parent, this.serviceLoc);\n this.virtualHdrRenderer.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.virtualHdrRenderer.gen.getColumnIndexes(this.getPanel()\n .querySelector('.' + literals.headerContent)));\n this.virtualHdrRenderer.virtualEle.content = this.getPanel().querySelector('.' + literals.headerContent);\n this.virtualHdrRenderer.virtualEle.renderFrozenWrapper();\n this.virtualHdrRenderer.virtualEle.renderFrozenPlaceHolder();\n if (this.parent.enableColumnVirtualization) {\n this.virtualHdrRenderer.virtualEle.movableContent = this.getPanel().querySelector('.' + literals.movableHeader);\n this.virtualHdrRenderer.virtualEle.renderMovableWrapper();\n this.virtualHdrRenderer.virtualEle.renderMovablePlaceHolder();\n }\n _super.prototype.renderTable.call(this);\n this.virtualHdrRenderer.setPanel(this.parent.getHeaderContent());\n };\n VirtualFreezeHdrRenderer.prototype.rfshMovable = function () {\n this.getFrozenHeader().appendChild(this.getTable());\n this.virtualHdrRenderer.virtualEle.wrapper.appendChild(this.getFrozenHeader());\n if (this.parent.enableColumnVirtualization) {\n this.virtualHdrRenderer.virtualEle.movableWrapper.appendChild(this.createHeader(undefined, 'movable'));\n }\n else {\n this.getMovableHeader().appendChild(this.createTable());\n }\n this.virtualHdrRenderer.virtualEle.wrapper.appendChild(this.getMovableHeader());\n };\n return VirtualFreezeHdrRenderer;\n}(FreezeRender));\nexport { VirtualFreezeHdrRenderer };\n/**\n * @param {NotifyArgs} args - specifies the args\n * @param {Object[]} data - specifies the data\n * @param {number[]}selectedIdx - specifies the selected index\n * @param {IGrid} parent - specifies the IGrid\n * @param {IModelGenerator} rowModelGenerator - specifies the rowModeGenerator\n * @param {ServiceLocator} locator - specifies the locator\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {VirtualFreezeRenderer} instance - specifies the instance\n * @returns {void}\n * @hidden\n */\nexport function renderFrozenRows(args, data, selectedIdx, parent, rowModelGenerator, locator, virtualRenderer, instance) {\n parent.clearSelection();\n args.startIndex = 0;\n var rowRenderer = new RowRenderer(locator, null, parent);\n var rows = rowModelGenerator.generateRows(data, args);\n if (args.renderMovableContent) {\n virtualRenderer.vgenerator.movableCache[1] = rows;\n rows = parent.getMovableRowsObject();\n }\n else if (!args.renderFrozenRightContent && !args.renderMovableContent) {\n virtualRenderer.vgenerator.cache[1] = rows;\n rows = parent.getRowsObject();\n }\n else if (args.renderFrozenRightContent) {\n virtualRenderer.vgenerator.frozenRightCache[1] = rows;\n rows = parent.getFrozenRightRowsObject();\n }\n var hdr = !args.renderMovableContent && !args.renderFrozenRightContent\n ? parent.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody) : args.renderMovableContent\n ? parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody)\n : parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody);\n hdr.innerHTML = '';\n for (var i = 0; i < parent.frozenRows; i++) {\n hdr.appendChild(rowRenderer.render(rows[i], parent.getColumns()));\n if (selectedIdx.indexOf(i) > -1) {\n rows[i].isSelected = true;\n for (var k = 0; k < rows[i].cells.length; k++) {\n rows[i].cells[k].isSelected = true;\n }\n }\n }\n if (args.renderMovableContent) {\n instance.mvblRows = virtualRenderer.vgenerator.movableCache[1];\n }\n else if (!args.renderMovableContent && !args.renderFrozenRightContent) {\n instance.frzRows = virtualRenderer.vgenerator.cache[1];\n }\n else if (args.renderFrozenRightContent) {\n instance.frRows = virtualRenderer.vgenerator.frozenRightCache[1];\n }\n args.renderMovableContent = !args.renderMovableContent && !args.renderFrozenRightContent;\n args.renderFrozenRightContent = parent.getFrozenMode() === literals.leftRight\n && !args.renderMovableContent && !args.renderFrozenRightContent;\n if (args.renderMovableContent || args.renderFrozenRightContent) {\n renderFrozenRows(args, data, selectedIdx, parent, rowModelGenerator, locator, virtualRenderer, instance);\n if (!args.renderMovableContent && !args.renderFrozenRightContent) {\n args.isFrozenRowsRender = false;\n }\n }\n}\n/**\n * @param {Row[]} data - specifies the data\n * @param {freezeTable} tableName -specifies the table\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function splitCells(data, tableName, parent) {\n var rows = [];\n for (var i = 0; i < data.length; i++) {\n rows.push(extend({}, data[i]));\n rows[i].cells = splitFrozenRowObjectCells(parent, rows[i].cells, tableName);\n }\n return rows;\n}\n/**\n * @param {freezeTable} tableName - specifies the freeze tabel\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function collectRows(tableName, virtualRenderer, parent) {\n var rows = [];\n var cache;\n if (tableName === literals.frozenLeft) {\n cache = virtualRenderer.vgenerator.cache;\n }\n else if (tableName === 'movable') {\n cache = virtualRenderer.vgenerator.movableCache;\n }\n else if (tableName === literals.frozenRight) {\n cache = parent.getFrozenMode() === 'Right' ? virtualRenderer.vgenerator.cache : virtualRenderer.vgenerator.frozenRightCache;\n }\n var keys = Object.keys(cache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(splitCells(cache[keys[i]], tableName, parent));\n }\n return rows;\n}\n/**\n * @param {object} args - specifies the args\n * @param {string} args.uid - specifirs the uid\n * @param {boolean} args.set - specifies the set\n * @param {boolean} args.clearAll - specifies the boolean to clearall\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @returns {void}\n * @hidden\n */\nexport function setFreezeSelection(args, virtualRenderer) {\n var leftKeys = Object.keys(virtualRenderer.vgenerator.cache);\n var movableKeys = Object.keys(virtualRenderer.vgenerator.movableCache);\n var rightKeys = Object.keys(virtualRenderer.vgenerator.frozenRightCache);\n for (var i = 0; i < leftKeys.length; i++) {\n selectFreezeRows(args, virtualRenderer.vgenerator.cache[leftKeys[i]]);\n }\n for (var i = 0; i < movableKeys.length; i++) {\n selectFreezeRows(args, virtualRenderer.vgenerator.movableCache[movableKeys[i]]);\n }\n for (var i = 0; i < rightKeys.length; i++) {\n selectFreezeRows(args, virtualRenderer.vgenerator.frozenRightCache[rightKeys[i]]);\n }\n}\n/**\n * @param {Object} args - specifies the args\n * @param {string} args.uid - specifirs the uid\n * @param {boolean} args.set - specifies the set\n * @param {boolean} args.clearAll - specifies the boolean to clearall\n * @param {Row[]} cache - specifies the cache\n * @returns {void}\n * @hidden\n */\nexport function selectFreezeRows(args, cache) {\n var rows = cache.filter(function (row) { return args.clearAll || args.uid === row.uid; });\n for (var j = 0; j < rows.length; j++) {\n rows[j].isSelected = args.set;\n var cells = rows[j].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[k].isSelected = args.set;\n }\n }\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {ColumnWidthService} widthService - specifies the width service\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newchild\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\nexport function appendContent(virtualRenderer, widthService, target, newChild, e) {\n virtualRenderer.appendContent(target, newChild, e);\n widthService.refreshFrozenScrollbar();\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {object[]} data - specifies the data\n * @param {NotifyArgs} notifyArgs - specifies the notifyargs\n * @param {FreezeRowModelGenerator} freezeRowGenerator - specifies the freeze row generator\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function generateRows(virtualRenderer, data, notifyArgs, freezeRowGenerator, parent) {\n var virtualRows = virtualRenderer.vgenerator.generateRows(data, notifyArgs);\n var arr = [];\n arr = virtualRows.map(function (row) { return extend({}, row); });\n var rows = freezeRowGenerator.generateRows(data, notifyArgs, arr);\n if (parent.frozenRows && notifyArgs.requestType === 'delete' && parent.pageSettings.currentPage === 1) {\n rows = rows.slice(parent.frozenRows);\n }\n return rows;\n}\n/**\n * @param {NotifyArgs} args -specifies the args\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {IGrid} parent - specifies the IGrid\n * @param {FreezeRowModelGenerator} freezeRowGenerator - specifies the freezeRowGenerator\n * @param {Object[]} firstPageRecords - specifies the first page records\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function getReorderedFrozenRows(args, virtualRenderer, parent, freezeRowGenerator, firstPageRecords) {\n var bIndex = args.virtualInfo.blockIndexes;\n var colIndex = args.virtualInfo.columnIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n args.virtualInfo.page = 1;\n if (!args.renderMovableContent) {\n args.virtualInfo.columnIndexes = [];\n }\n var firstRecordslength = parent.getCurrentViewRecords().length;\n firstPageRecords = parent.renderModule.data.dataManager.dataSource.json.slice(0, firstRecordslength);\n var virtualRows = virtualRenderer.vgenerator.generateRows(firstPageRecords, args);\n var rows = splitReorderedRows(virtualRows, parent, args, freezeRowGenerator);\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.columnIndexes = colIndex;\n args.virtualInfo.page = page;\n return rows.splice(0, parent.frozenRows);\n}\n/**\n * @param {Row[]} rows - specifies the row\n * @param {IGrid} parent - specifies the IGrid\n * @param {NotifyArgs} args - specifies the notify arguments\n * @param {FreezeRowModelGenerator} freezeRowGenerator - specifies the freezerowgenerator\n * @returns {Row[]} returns the row\n * @hidden\n */\nexport function splitReorderedRows(\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nrows, parent, args, freezeRowGenerator) {\n var tableName;\n if (args.renderMovableContent) {\n tableName = 'movable';\n }\n else if (args.renderFrozenRightContent) {\n tableName = 'frozen-right';\n }\n else {\n tableName = 'frozen-left';\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[i].cells = splitFrozenRowObjectCells(parent, rows[i].cells, tableName);\n }\n return rows;\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the VirtualRenderer\n * @returns {boolean} returns the isXaxis\n * @hidden\n */\nexport function isXaxis(virtualRenderer) {\n var value = false;\n if (virtualRenderer) {\n value = virtualRenderer.requestType === 'virtualscroll'\n && virtualRenderer.currentInfo.sentinelInfo.axis === 'X';\n }\n return value;\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtualrenderer\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Element[]} returns the element\n * @hidden\n */\nexport function getHeaderCells(virtualRenderer, parent) {\n var content = isXaxis(virtualRenderer) ? parent.getMovableVirtualHeader() : parent.getHeaderContent();\n return content ? [].slice.call(content.querySelectorAll('.e-headercell:not(.e-stackedheadercell)')) : [];\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual Renderer\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Element} returns the element\n * @hidden\n */\nexport function getVirtualFreezeHeader(virtualRenderer, parent) {\n var headerTable;\n if (isXaxis(virtualRenderer)) {\n headerTable = parent.getMovableVirtualHeader().querySelector('.' + literals.table);\n }\n else {\n headerTable = parent.getFrozenVirtualHeader().querySelector('.' + literals.table);\n }\n return headerTable;\n}\n/**\n * @param {Column[]} columns - specifies the columns\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Column[]} returns the column[]\n * @hidden\n */\nexport function ensureFrozenCols(columns, parent) {\n var frozenCols = parent.columns.slice(0, parent.getFrozenColumns());\n columns = frozenCols.concat(columns);\n return columns;\n}\n/**\n * @param {Element} colGroup - specifies the colGroup\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {ColumnVirtualFreezeRenderer} instance - specifies the instances\n * @returns {Element} returns the element\n * @hidden\n */\nexport function setColGroup(colGroup, virtualRenderer, instance) {\n if (!isXaxis(virtualRenderer)) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n instance.colgroup = colGroup;\n }\n return instance.colgroup;\n}\n/**\n * @param {VirtualFreezeRenderer} instance - specifies the instance\n * @param {number} index - specifies the index\n * @returns {void}\n * @hidden\n */\nexport function setCache(instance, index) {\n if (instance.virtualRenderer.vgenerator.cache[1]) {\n instance.virtualRenderer.vgenerator.cache[1][index] = instance.frzRows[index];\n }\n else {\n instance.virtualRenderer.vgenerator.cache[1] = instance.frzRows;\n }\n if (instance.virtualRenderer.vgenerator.movableCache[1]) {\n instance.virtualRenderer.vgenerator.movableCache[1][index] = instance.mvblRows[index];\n }\n else {\n instance.virtualRenderer.vgenerator.movableCache[1] = instance.mvblRows;\n }\n}\n/**\n * @param {IGrid} parent - specifies the IGrid\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtualRenderer\n * @param {Element} scrollbar - specifies the scrollbr\n * @param {Element} mCont - specifies the mCont\n * @returns {void}\n * @hidden\n */\nexport function setDebounce(parent, virtualRenderer, scrollbar, mCont) {\n var debounceEvent = (parent.dataSource instanceof DataManager && !parent.dataSource.dataSource.offline);\n var opt = {\n container: virtualRenderer.content, pageHeight: virtualRenderer.getBlockHeight() * 2, debounceEvent: debounceEvent,\n axes: parent.enableColumnVirtualization ? ['X', 'Y'] : ['Y'], scrollbar: scrollbar,\n movableContainer: mCont\n };\n virtualRenderer.observer = new InterSectionObserver(virtualRenderer.virtualEle.wrapper, opt, virtualRenderer.virtualEle.movableWrapper);\n}\n/**\n * ColumnVirtualFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar ColumnVirtualFreezeRenderer = /** @class */ (function (_super) {\n __extends(ColumnVirtualFreezeRenderer, _super);\n function ColumnVirtualFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n /** @hidden */\n _this.frRows = [];\n /** @hidden */\n _this.frzRows = [];\n /** @hidden */\n _this.mvblRows = [];\n _this.serviceLoc = locator;\n _this.eventListener('on');\n _this.rowModelGenerator = new RowModelGenerator(_this.parent);\n return _this;\n }\n ColumnVirtualFreezeRenderer.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' && this.parent.frozenRows) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n if (this.virtualRenderer.vgenerator.frozenRightCache[1]) {\n this.virtualRenderer.vgenerator.frozenRightCache[1][i] = this.frRows.length ? this.frRows[i] : this.frzRows[i];\n }\n else {\n this.virtualRenderer.vgenerator.frozenRightCache[1] = this.frRows.length ? this.frRows : this.frzRows;\n break;\n }\n setCache(this, i);\n }\n }\n };\n ColumnVirtualFreezeRenderer.prototype.eventListener = function (action) {\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n this.parent[action](events.refreshVirtualFrozenRows, this.refreshVirtualFrozenRows, this);\n this.parent[action](events.getVirtualData, this.getVirtualData, this);\n this.parent[action](events.setFreezeSelection, this.setFreezeSelection, this);\n };\n ColumnVirtualFreezeRenderer.prototype.refreshVirtualFrozenRows = function (args) {\n var _this = this;\n if (args.requestType === 'delete' && this.parent.frozenRows) {\n args.isFrozenRowsRender = true;\n var query = this.parent.renderModule.data.generateQuery(true).clone();\n query.page(1, this.parent.pageSettings.pageSize);\n var selectedIdx_1 = this.parent.getSelectedRowIndexes();\n this.parent.renderModule.data.getData({}, query).then(function (e) {\n renderFrozenRows(args, e.result, selectedIdx_1, _this.parent, _this.rowModelGenerator, _this.serviceLoc, _this.virtualRenderer, _this);\n });\n }\n };\n ColumnVirtualFreezeRenderer.prototype.setFreezeSelection = function (args) {\n setFreezeSelection(args, this.virtualRenderer);\n };\n ColumnVirtualFreezeRenderer.prototype.getVirtualData = function (data) {\n this.virtualRenderer.getVirtualData(data);\n };\n ColumnVirtualFreezeRenderer.prototype.renderNextFrozentPart = function (e, tableName) {\n e.renderMovableContent = this.parent.getFrozenLeftCount() ? tableName === literals.frozenLeft : tableName === literals.frozenRight;\n e.renderFrozenRightContent = this.parent.getFrozenMode() === literals.leftRight && tableName === 'movable';\n if (e.renderMovableContent || e.renderFrozenRightContent) {\n this.refreshContentRows(extend({}, e));\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.renderTable = function () {\n this.virtualRenderer = new VirtualContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n _super.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var frozenRightCont = this.getFrozenRightContent();\n var frzCont = this.getFrozenContent();\n var movableCont = this.getMovableContent();\n if (this.parent.getFrozenMode() === 'Right') {\n frzCont = frozenRightCont;\n }\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n this.renderVirtualFrozenLeft(frzCont, movableCont);\n this.renderVirtualFrozenRight(frzCont, movableCont);\n this.renderVirtualFrozenLeftRight(frzCont, movableCont, frozenRightCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n ColumnVirtualFreezeRenderer.prototype.renderVirtualFrozenLeft = function (frzCont, movableCont) {\n if (this.parent.getFrozenMode() === 'Left') {\n this.virtualRenderer.virtualEle.wrapper.appendChild(frzCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n }\n };\n ColumnVirtualFreezeRenderer.prototype.renderVirtualFrozenRight = function (frzCont, movableCont) {\n if (this.parent.getFrozenMode() === 'Right') {\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(frzCont);\n }\n };\n ColumnVirtualFreezeRenderer.prototype.renderVirtualFrozenLeftRight = function (frzCont, movableCont, frozenRightCont) {\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.virtualRenderer.virtualEle.wrapper.appendChild(frzCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(frozenRightCont);\n }\n };\n /**\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newchild\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n appendContent(this.virtualRenderer, this.widthService, target, newChild, e);\n this.refreshScrollOffset();\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.generateRows = function (data, e) {\n if (!this.firstPageRecords) {\n this.firstPageRecords = data;\n }\n return generateRows(this.virtualRenderer, data, e, this.freezeRowGenerator, this.parent);\n };\n /**\n * @param {number} index - specifies the number\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getRowByIndex = function (index) {\n return this.virtualRenderer.getRowByIndex(index);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} - returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getFrozenRightRowByIndex = function (index) {\n return this.virtualRenderer.getFrozenRightVirtualRowByIndex(index);\n };\n ColumnVirtualFreezeRenderer.prototype.collectRows = function (tableName) {\n return collectRows(tableName, this.virtualRenderer, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getMovableRowByIndex = function (index) {\n return this.virtualRenderer.getMovableVirtualRowByIndex(index);\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getFrozenRightRows = function () {\n return this.collectRows('frozen-right');\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getMovableRows = function () {\n return this.collectRows('movable');\n };\n /**\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getColGroup = function () {\n var mCol = this.parent.getMovableVirtualContent();\n return isXaxis(this.virtualRenderer) ? mCol.querySelector(literals.colGroup) : this.colgroup;\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getRows = function () {\n return this.collectRows(this.parent.getFrozenMode() === 'Right' ? 'frozen-right' : 'frozen-left');\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {Row[]} returns the row object\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getReorderedFrozenRows = function (args) {\n return getReorderedFrozenRows(args, this.virtualRenderer, this.parent, this.freezeRowGenerator, this.firstPageRecords);\n };\n ColumnVirtualFreezeRenderer.prototype.getHeaderCells = function () {\n return getHeaderCells(this.virtualRenderer, this.parent);\n };\n ColumnVirtualFreezeRenderer.prototype.isXaxis = function () {\n return isXaxis(this.virtualRenderer);\n };\n ColumnVirtualFreezeRenderer.prototype.getVirtualFreezeHeader = function () {\n return getVirtualFreezeHeader(this.virtualRenderer, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {object} - returns the object\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getRowObjectByIndex = function (index) {\n return this.virtualRenderer.getRowObjectByIndex(index);\n };\n ColumnVirtualFreezeRenderer.prototype.ensureFrozenCols = function (columns) {\n return ensureFrozenCols(columns, this.parent);\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} - returns the element\n */\n ColumnVirtualFreezeRenderer.prototype.setColGroup = function (colGroup) {\n return setColGroup(colGroup, this.virtualRenderer, this);\n };\n return ColumnVirtualFreezeRenderer;\n}(ColumnFreezeContentRenderer));\nexport { ColumnVirtualFreezeRenderer };\n","import * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { FreezeRender, FreezeContentRender } from '../renderer/freeze-renderer';\nimport { VirtualFreezeRenderer, VirtualFreezeHdrRenderer, ColumnVirtualFreezeRenderer } from '../renderer/virtual-freeze-renderer';\nimport { ColumnFreezeContentRenderer, ColumnFreezeHeaderRenderer } from '../renderer/column-freeze-renderer';\n/**\n * `Freeze` module is used to handle Frozen rows and columns.\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n function Freeze(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n Freeze.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n };\n Freeze.prototype.instantiateRenderer = function () {\n this.parent.log('limitation', this.getModuleName());\n var renderer = this.locator.getService('rendererFactory');\n if (this.parent.getFrozenColumns()) {\n if (this.parent.enableColumnVirtualization) {\n renderer.addRenderer(RenderType.Header, new VirtualFreezeHdrRenderer(this.parent, this.locator));\n }\n else {\n renderer.addRenderer(RenderType.Header, new FreezeRender(this.parent, this.locator));\n }\n if (this.parent.enableVirtualization) {\n renderer.addRenderer(RenderType.Content, new VirtualFreezeRenderer(this.parent, this.locator));\n }\n else {\n renderer.addRenderer(RenderType.Content, new FreezeContentRender(this.parent, this.locator));\n }\n }\n if (this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenRightColumnsCount()) {\n renderer.addRenderer(RenderType.Header, new ColumnFreezeHeaderRenderer(this.parent, this.locator));\n if (this.parent.enableVirtualization) {\n renderer.addRenderer(RenderType.Content, new ColumnVirtualFreezeRenderer(this.parent, this.locator));\n }\n else {\n renderer.addRenderer(RenderType.Content, new ColumnFreezeContentRenderer(this.parent, this.locator));\n }\n }\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.instantiateRenderer);\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Freeze;\n}());\nexport { Freeze };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var r = _a[_i];\n if (r.index === row.index) {\n _this[count] = row;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(row);\n }\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","import { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","import { CompressedStreamWriter } from './compression-writer';\nimport { Save } from '@syncfusion/ej2-file-utils';\nvar CRC32TABLE = [];\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nvar ZipArchive = /** @class */ (function () {\n /**\n * constructor for creating ZipArchive instance\n */\n function ZipArchive() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(ZipArchive.prototype, \"compressionLevel\", {\n /**\n * gets compression level\n */\n get: function () {\n return this.level;\n },\n /**\n * sets compression level\n */\n set: function (level) {\n this.level = level;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"length\", {\n /**\n * gets items count\n */\n get: function () {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n ZipArchive.prototype.addItem = function (item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n };\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n ZipArchive.prototype.addDirectory = function (directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n };\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n ZipArchive.prototype.getItem = function (index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n };\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n ZipArchive.prototype.contains = function (item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n };\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n ZipArchive.prototype.save = function (fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal(fileName, false).then(function () {\n resolve(zipArchive);\n });\n });\n };\n /**\n * Save archive as blob\n * @return {Promise}\n */\n ZipArchive.prototype.saveAsBlob = function () {\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal('', true).then(function (blob) {\n resolve(blob);\n });\n });\n };\n ZipArchive.prototype.saveInternal = function (fileName, skipFileSave) {\n var _this = this;\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n var zipData = [];\n var dirLength = 0;\n for (var i = 0; i < zipArchive.files.length; i++) {\n var compressedObject = _this.getCompressedData(_this.files[i]);\n compressedObject.then(function (data) {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n var blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchive.prototype.destroy = function () {\n if (this.files !== undefined && this.files.length > 0) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n };\n ZipArchive.prototype.getCompressedData = function (item) {\n var zipArchive = this;\n var promise = new Promise(function (resolve, reject) {\n if (item instanceof ZipArchiveItem) {\n var reader_1 = new FileReader();\n reader_1.onload = function () {\n var input = new Uint8Array(reader_1.result);\n var data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n var length_1 = 0;\n for (var i = 0; i < data.compressedData.length; i++) {\n length_1 += data.compressedData[i].length;\n }\n data.compressedSize = length_1;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader_1.readAsArrayBuffer(item.data);\n }\n else {\n var data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n };\n ZipArchive.prototype.compressData = function (input, data, crc32Table) {\n var compressor = new CompressedStreamWriter(true);\n var currentIndex = 0;\n var nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n var subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n };\n ZipArchive.prototype.constructZippedObject = function (zipParts, data, dirLength, isDirectory) {\n var extFileAttr = 0;\n var date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n var header = this.writeHeader(data, date);\n var localHeader = 'PK\\x03\\x04' + header + data.fileName;\n var centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n };\n ZipArchive.prototype.writeHeader = function (data, date) {\n var zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n };\n ZipArchive.prototype.writeZippedContent = function (fileName, zipData, localDirLen, skipFileSave) {\n var cenDirLen = 0;\n var buffer = [];\n for (var i = 0; i < zipData.length; i++) {\n var item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (var i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n var blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n };\n ZipArchive.prototype.writeCentralDirectory = function (data, localHeader, offset, externalFileAttribute) {\n var directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n };\n ZipArchive.prototype.writeFooter = function (zipData, centralLength, localLength) {\n var dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n };\n ZipArchive.prototype.getArrayBuffer = function (input) {\n var a = new Uint8Array(input.length);\n for (var j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n };\n ZipArchive.prototype.getBytes = function (value, offset) {\n var bytes = '';\n for (var i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n };\n ZipArchive.prototype.getModifiedTime = function (date) {\n var modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n };\n ZipArchive.prototype.getModifiedDate = function (date) {\n var modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n };\n ZipArchive.prototype.calculateCrc32Value = function (crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (var i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n };\n /**\n * construct cyclic redundancy code table\n * @private\n */\n ZipArchive.initCrc32Table = function () {\n var i;\n for (var j = 0; j < 256; j++) {\n i = j;\n for (var k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n };\n return ZipArchive;\n}());\nexport { ZipArchive };\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @class */ (function () {\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n function ZipArchiveItem(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n Object.defineProperty(ZipArchiveItem.prototype, \"name\", {\n /**\n * Get the name of archive item\n * @returns string\n */\n get: function () {\n return this.fileName;\n },\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set: function (value) {\n this.fileName = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchiveItem.prototype.destroy = function () {\n this.fileName = undefined;\n this.data = undefined;\n };\n return ZipArchiveItem;\n}());\nexport { ZipArchiveItem };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n ValueFormatter.prototype.getFormatFunction = function (format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n ValueFormatter.prototype.displayText = function (value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { ValueFormatter } from './value-formatter';\n/**\n * CsvHelper class\n * @private\n */\nvar CsvHelper = /** @class */ (function () {\n /* tslint:disable:no-any */\n function CsvHelper(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n CsvHelper.prototype.parseWorksheet = function (json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRows = function (rows) {\n var count = 1;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRow = function (row) {\n if (row.cells !== null && row.cells !== undefined) {\n var count = 1;\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseCell = function (cell) {\n var csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n };\n CsvHelper.prototype.parseCellValue = function (value) {\n var val = '';\n var length = value.length;\n for (var start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n CsvHelper.prototype.save = function (fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n var dataUrl_1 = window.URL.createObjectURL(this.buffer);\n var dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n dwlLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n });\n }\n };\n CsvHelper.prototype.saveAsBlob = function () {\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n };\n return CsvHelper;\n}());\nexport { CsvHelper };\n","/**\n * BlobHelper class\n * @private\n */\nvar BlobHelper = /** @class */ (function () {\n function BlobHelper() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n BlobHelper.prototype.append = function (part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n };\n BlobHelper.prototype.getBlob = function () {\n return new Blob(this.parts, { type: 'text/plain' });\n };\n return BlobHelper;\n}());\nexport { BlobHelper };\n","/**\n * AutoFilters class\n * @private\n */\nvar AutoFilters = /** @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\nexport { AutoFilters };\n","import { Worksheets } from './worksheets';\nimport { Worksheet, FreezePane, MergeCell, MergeCells, HyperLink, Grouping } from './worksheet';\nimport { CellStyle, Font, Borders, CellXfs, Alignment, NumFmt, CellStyleXfs, CellStyles } from './cell-style';\nimport { Column } from './column';\nimport { Row, Rows } from './row';\nimport { Image } from './image';\nimport { Cell, Cells } from './cell';\nimport { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { CsvHelper } from './csv-helper';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { BlobHelper } from './blob-helper';\nimport { AutoFilters } from './auto-filters';\n/**\n * Workbook class\n */\nvar Workbook = /** @class */ (function () {\n /* tslint:disable:no-any */\n function Workbook(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n var cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n var cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n var tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n Workbook.prototype.parserBuiltInProperties = function (jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserWorksheets = function (json) {\n this.worksheets = new Worksheets();\n var length = json.length;\n for (var i = 0; i < length; i++) {\n var jsonSheet = json[i];\n var sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n if (jsonSheet.enableRtl !== null && jsonSheet.enableRtl !== undefined) {\n sheet.enableRtl = jsonSheet.enableRtl;\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n if (jsonSheet.autoFilters !== null && jsonSheet.autoFilters !== undefined) {\n this.parseFilters(jsonSheet.autoFilters, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.mergeOptions = function (fromJson, toJson) {\n /* tslint:disable:no-any */\n var result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.applyProperties = function (sourceJson, destJson) {\n var keys = Object.keys(sourceJson);\n for (var index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n };\n Workbook.prototype.getCellName = function (row, column) {\n return this.getColumnName(column) + row.toString();\n };\n Workbook.prototype.getColumnName = function (col) {\n col--;\n var strColumnName = '';\n do {\n var iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserPrintTitle = function (json, sheet) {\n var printTitleName = '';\n var titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n var fromRow = json.fromRow;\n var toRow = void 0;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n var titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n var fromColumn = json.fromColumn;\n var toColumn = void 0;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserFreezePanes = function (json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserColumns = function (json, sheet) {\n var columnsLength = json.length;\n sheet.columns = [];\n for (var column = 0; column < columnsLength; column++) {\n var col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRows = function (json, sheet) {\n var rowsLength = json.length;\n sheet.rows = new Rows();\n var rowId = 0;\n for (var r = 0; r < rowsLength; r++) {\n var row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n };\n Workbook.prototype.insertMergedCellsStyle = function (sheet) {\n var _this = this;\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach(function (value, key) {\n var row = sheet.rows.filter(function (item) {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n var cell = row.cells.filter(function (item) {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n var cells = row.cells.filter(function (item) {\n return item.index <= value.x;\n });\n var insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, _this.createCell(value, key));\n }\n }\n else {\n var rows = sheet.rows.filter(function (item) {\n return item.index <= value.y;\n });\n var rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(_this.createCell(value, key));\n var insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n };\n Workbook.prototype.createCell = function (value, key) {\n var cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRow = function (json, rowIndex) {\n var row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseGrouping = function (json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseCells = function (json, row) {\n row.cells = new Cells();\n var cellsLength = json !== undefined ? json.length : 0;\n var spanMin = 1;\n var spanMax = 1;\n var curCellIndex = 0;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n var jsonCell = json[cellId];\n var cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n var hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n curCellIndex = (cell.index + 1);\n }\n row.spans = (spanMin) + ':' + (spanMax);\n };\n Workbook.prototype.GetColors = function () {\n var colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n };\n Workbook.prototype.processColor = function (colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n };\n Workbook.prototype.processCellValue = function (value, cell) {\n var cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n var processedVal = '';\n var startindex = value.indexOf('<', 0);\n var endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + value.substring(0, startindex) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + text + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.getNumberFormat = function (numberFormat, type) {\n var returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserBorder = function (json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n };\n Workbook.prototype.processCellStyle = function (style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n var compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n };\n Workbook.prototype.processNumFormatId = function (style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n };\n Workbook.prototype.isNewFont = function (toCompareStyle) {\n var result = false;\n var index = 0;\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n index++;\n var fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n Workbook.prototype.saveAsBlob = function (blobSaveType) {\n var _this = this;\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise(function (resolve, reject) {\n var obj = {};\n obj.blobData = _this.csvHelper.saveAsBlob();\n resolve(obj);\n });\n default:\n return new Promise(function (resolve, reject) {\n _this.saveInternal();\n _this.mArchive.saveAsBlob().then(function (blob) {\n var obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n };\n Workbook.prototype.save = function (fileName, proxyUrl) {\n var _this = this;\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n var xlsxMatch = fileName.match('.xlsx$');\n var csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(function () {\n _this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n };\n Workbook.prototype.saveInternal = function () {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n };\n Workbook.prototype.saveWorkbook = function () {\n /* tslint:disable-next-line:max-line-length */\n var workbookTemp = '';\n var sheets = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n var sheetName = this.worksheets[i].name;\n sheetName = sheetName.replace(\"&\", \"&\");\n sheetName = sheetName.replace(\"<\", \"<\");\n sheetName = sheetName.replace(\">\", \">\");\n sheetName = sheetName.replace(\"\\\"\", \""\");\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n var imageFile = new BlobHelper();\n var imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n };\n Workbook.prototype.updatelastRowOffset = function (sheet, picture) {\n var iCurHeight = picture.height;\n var iCurRow = picture.row;\n var iCurOffset = 0;\n while (iCurHeight >= 0) {\n var iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n var iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n var rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.updatelastColumnOffSet = function (sheet, picture) {\n var iCurWidth = picture.width;\n var iCurCol = picture.column;\n var iCurOffset = 0;\n while (iCurWidth >= 0) {\n var iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n var iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n var colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.convertToPixels = function (value) {\n return value * this.unitsProportions[6];\n };\n Workbook.prototype.convertBase64toImage = function (img) {\n var byteStr = window.atob(img);\n var buffer = new ArrayBuffer(byteStr.length);\n var data = new Uint8Array(buffer);\n for (var i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n var blob = new Blob([data], { type: 'image/png' });\n return blob;\n };\n Workbook.prototype.saveDrawingRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var drawingRelation = '';\n var length = sheet.images.length;\n var id = this.imageCount - sheet.images.length;\n for (var i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n };\n Workbook.prototype.pixelsToColumnWidth = function (pixels) {\n var dDigitWidth = 7;\n var val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n };\n Workbook.prototype.ColumnWidthToPixels = function (val) {\n var dDigitWidth = 7;\n var fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n };\n Workbook.prototype.trunc = function (x) {\n var n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n };\n Workbook.prototype.pixelsToRowHeight = function (pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n };\n Workbook.prototype.saveSheetRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var relStr = '';\n for (var _i = 0, _a = sheet.hyperLinks; _i < _a.length; _i++) {\n var hLink = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n };\n Workbook.prototype.saveSheetView = function (sheet) {\n var paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n var sstStart = '';\n var si = '';\n for (var i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n };\n Workbook.prototype.processString = function (value) {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n return value;\n };\n Workbook.prototype.saveStyles = function () {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n var styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n };\n Workbook.prototype.updateCellXfsStyleXfs = function () {\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var style = _a[_i];\n var cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n var compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n var font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n };\n Workbook.prototype.addToArchive = function (xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n var blob = new Blob([xmlString], { type: 'text/plain' });\n var archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n var archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n };\n Workbook.prototype.processMergeCells = function (cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n var mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n var startCell = this.getCellName(mCell.y, mCell.x);\n var endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n var mergedCell = mergeCells.add(mCell);\n var start = { x: mCell.x, y: mCell.y };\n var end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n };\n Workbook.prototype.updatedMergedCellStyles = function (sCell, eCell, cell) {\n for (var x = sCell.x; x <= eCell.x; x++) {\n for (var y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n };\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n Workbook.prototype.dateToTicks = function (year, month, day) {\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n var daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n var days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n var y = year - 1;\n var n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n };\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n Workbook.prototype.timeToTicks = function (hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n var totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n };\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n Workbook.prototype.isLeapYear = function (year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n };\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n Workbook.prototype.toOADate = function (date) {\n var ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n var doubleDateOffset = daysTo1899 * ticksPerDay;\n var oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n var millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n };\n return Workbook;\n}());\nexport { Workbook };\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\nexport { BuiltInProperties };\n","import { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent, foreignKeyData) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n if (!parent.parentDetails && foreignKeyData) {\n this.foreignKeyData = foreignKeyData;\n }\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[i];\n options.index = startIndex;\n if (gObj.childGrid) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[startIndex]) {\n options.isExpand = gObj.expandedRows[startIndex].isExpand;\n }\n }\n var row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n };\n ExportHelper.prototype.generateCells = function (columns, gObj) {\n var cells = [];\n if (gObj.childGridLevel) {\n var len = gObj.childGridLevel;\n for (var i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n };\n ExportHelper.prototype.getColumnData = function (gridObj) {\n var _this = this;\n var columnPromise = [];\n var promise;\n var fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (var i = 0; i < fColumns.length; i++) {\n var colData = ('result' in fColumns[i].dataSource) ?\n new DataManager(fColumns[i].dataSource.result) :\n fColumns[i].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then(function (e) {\n for (var j = 0; j < fColumns.length; j++) {\n _this.foreignKeyData[fColumns[j].field] = e[j].result;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[i] = new Row({});\n rows[i].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows: rows, columns: this.generateActualColumns(columns) };\n };\n ExportHelper.prototype.getConvertedWidth = function (input) {\n var value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n };\n ExportHelper.prototype.generateActualColumns = function (columns, actualColumns) {\n if (actualColumns === void 0) { actualColumns = []; }\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var column = columns_2[_i];\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n var colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n };\n ExportHelper.prototype.processHeaderCells = function (rows, cols) {\n var columns = cols;\n for (var i = 0; i < columns.length; i++) {\n if (!columns[i].commands) {\n rows = this.appendGridCells(columns[i], rows, 0);\n }\n }\n return rows;\n };\n ExportHelper.prototype.appendGridCells = function (cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n var colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n var isIgnoreFirstCell = void 0;\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[i].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[i], gridRows, index + 1);\n }\n }\n return gridRows;\n };\n ExportHelper.prototype.generateCell = function (gridColumn, cellType, rowSpan, rowIndex) {\n var option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n };\n ExportHelper.prototype.processColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gridObj = this.parent;\n var columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (var j = 0, len_1 = gridObj.groupSettings.columns.length; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[i].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n };\n ExportHelper.prototype.getCellCount = function (column, count) {\n if (column.columns) {\n for (var i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[i], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n };\n ExportHelper.prototype.checkAndExport = function (gridPool, globalResolve) {\n var bool = Object.keys(gridPool).some(function (key) {\n return !gridPool[key];\n });\n if (!bool) {\n globalResolve();\n }\n };\n ExportHelper.prototype.failureHandler = function (gridPool, childGridObj, resolve) {\n var _this = this;\n return function () {\n gridPool[childGridObj.id] = true;\n _this.checkAndExport(gridPool, resolve);\n };\n };\n ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[exportId] = false;\n childGridObj.isExportGrid = true;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[i].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[i]);\n }\n }\n return actualGridColumns;\n };\n /**\n * Gets the foreignkey data.\n *\n * @returns {ForeignKeyFormat} returns the foreignkey data\n * @hidden\n */\n ExportHelper.prototype.getForeignKeyData = function () {\n return this.foreignKeyData;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /**\n * Used to format the exporting cell value\n *\n * @param {ExportHelperArgs} args - Specifies cell details.\n * @param {boolean} isServerBlaz - Specifies blazor platform\n * @returns {string} returns formated value\n * @hidden\n */\n ExportValueFormatter.prototype.formatCellValue = function (args, isServerBlaz) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat({ format: args.column.format })(args.value) : '';\n }\n else if (args.column.type === 'boolean' && args.value !== '') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n var format = void 0;\n var cFormat = args.column.format;\n if (args.column.type === 'date') {\n format = isServerBlaz ? { type: 'date', format: cFormat } : { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = isServerBlaz ? { type: 'time', format: cFormat } : { type: 'time', skeleton: cFormat };\n }\n else {\n format = isServerBlaz ? { type: 'dateTime', format: cFormat } : { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n var customFormat = void 0;\n if (args.column.type === 'date') {\n customFormat = {\n type: args.column.format.type,\n format: args.column.format.format, skeleton: args.column.format.skeleton\n };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend } from '@syncfusion/ej2-base';\nimport { Data } from '../actions/data';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { CellType } from '../base/enum';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getPrintGridModel, getUid, isExportColumns, updateColumnTypeForExportColumns, prepareColumns, measureColumnDepth } from '../base/util';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function ExcelExport(parent, locator) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isElementIdChanged = false;\n this.gridPool = {};\n this.sheet = {};\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n *\n * @param {IGrid} grid - Defines the grid.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {Workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {boolean} isCsv - true if export to CSV.\n * @param {boolean} isBlob - true if isBlob is enabled.\n * @returns {Promise} - Returns the map for export.\n */\n // eslint-disable-next-line\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if (grid.childGrid && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n var args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob\n };\n gObj.trigger(events.beforeExcelExport, args);\n if (args[cancel]) {\n return new Promise(function (resolve) {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[isBlb];\n if (args[csv]) {\n this.isCsvExport = args[csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[isMultiEx], args[workbk]);\n };\n ExcelExport.prototype.exportingSuccess = function (resolve) {\n this.isExporting = false;\n this.parent.trigger(events.excelExportComplete, this.isBlob ? { promise: this.blobPromise } : {});\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n this.sheet.images = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) &&\n exportProperties.dataSource instanceof DataManager) {\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var autoFilters = {\n row: colDepth, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n var book = new Workbook(_this.book, 'csv', gObj.locale, gObj.currencyCode, separator);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n var book = new Workbook(_this.book, 'xlsx', gObj.locale, gObj.currencyCode);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (_this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n };\n ExcelExport.prototype.organiseRows = function (rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n var childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n };\n ExcelExport.prototype.processGridExport = function (gObj, exportProperties, r) {\n var excelRows = [];\n var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if (gObj.childGrid && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) && !(exportProperties.dataSource instanceof DataManager)) {\n // eslint-disable-next-line max-len\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, exportProperties.dataSource, excelRows, helper);\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(events.exportDataBound, { excelRows: excelRows, type: 'excel' });\n return excelRows;\n };\n ExcelExport.prototype.processRecordContent = function (gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n var record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n if (!isNullOrUndefined(currentViewRecords)) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n var result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow);\n }\n }\n return excelRow;\n };\n ExcelExport.prototype.processGroupedRows = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = {};\n cell.index = index + level;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel' };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, dataSource.level + dataSource.childLevels, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level), true);\n }\n }\n };\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[c];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var fkData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n var cell = {};\n var idx = index + level + gObj.childGridLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelImage = {\n image: excelCellArgs.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n this.sheet.images.push(excelImage);\n templateRowHeight = excelCellArgs.image.height || 50;\n this.columns[idx - 1].width = excelCellArgs.image.width || this.columns[idx - 1].width;\n }\n if (!isNullOrUndefined(excelCellArgs.hyperLink)) {\n excelCellArgs.cell.hyperlink = { target: excelCellArgs.hyperLink.target };\n excelCellArgs.value = excelCellArgs.hyperLink.displayText || excelCellArgs.value;\n }\n cell = excelCellArgs.cell;\n cell.index = idx;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n var style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n var styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[styleIndex], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength < 8 && level > 0) {\n excelRow.grouping = { outlineLevel: level, isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if (!isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[i].grouping = { outlineLevel: intent + childGridObj.childGridLevel,\n isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return excelRow;\n };\n };\n ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n isEmpty = false;\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (var _c = 0, _d = Object.keys(row.data[cell.column.field]); _c < _d.length; _c++) {\n var key = _d[_c];\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - sum\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - average\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - max\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - min\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - count\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - truecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - falsecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n var gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: eCell\n };\n this.parent.trigger(events.excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n var row_1 = {};\n if (this.groupedColLength < 8 && this.groupedColLength > 0) {\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n var level = excelRows[excelRows.length - 1][dummyGrouping][dummyOutlineLevel];\n var grouping = { outlineLevel: level, isCollapsed: true };\n row_1 = { index: this.rowLength++, cells: cells, grouping: grouping };\n }\n else {\n row_1 = { index: this.rowLength++, cells: cells };\n }\n if (!isEmpty) {\n excelRows.push(row_1);\n }\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.aggregateStyle = function (col, style, field) {\n var column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n };\n ExcelExport.prototype.getAggreateValue = function (cellType, template, cell, row) {\n var templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n var txt;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if (this.parent.isReact || this.parent.isVue) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return txt[0].textContent;\n };\n ExcelExport.prototype.mergeOptions = function (JSON1, JSON2) {\n var result = {};\n var attrname = Object.keys(JSON1);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[index] !== 'name') {\n result[attrname[index]] = JSON1[attrname[index]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[index] !== 'name') {\n result[attrname[index]] = JSON2[attrname[index]];\n }\n }\n return result;\n };\n ExcelExport.prototype.getColumnStyle = function (gObj, columnIndex) {\n var index = 0;\n for (var _i = 0, _a = this.styles; _i < _a.length; _i++) {\n var style = _a[_i];\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n };\n ExcelExport.prototype.processHeaderContent = function (gObj, headerRow, indent, excelRows) {\n var rowIndex = 1;\n var gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n var gridColumns = headerRow.columns;\n var spannedCells = [];\n if (indent > 0) {\n var index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[row].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var style = {};\n var cell = {};\n var gridCell = gridRows[row].cells[column];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n var result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (var i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n var spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n var excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(events.excelHeaderQueryCellInfo, excelHeaderCellArgs);\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n excelRows.push({ index: this.rowLength++, cells: cells });\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[col], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[row];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.updatedCellIndex = function (json) {\n var cellsLength = json.cells.length;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n var jsonCell = json.cells[cellId];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n };\n ExcelExport.prototype.processExcelFooter = function (footer) {\n if (!isNullOrUndefined(footer.rows)) {\n var noRows = void 0;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (var row = 0; row < noRows; row++) {\n var json = footer.rows[row];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.getIndex = function (spannedCells, rowIndex, columnIndex) {\n for (var _i = 0, spannedCells_1 = spannedCells; _i < spannedCells_1.length; _i++) {\n var spannedCell = spannedCells_1[_i];\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n };\n ExcelExport.prototype.parseStyles = function (gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width) && col.width !== 'auto') {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var data = [];\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\nexport { PdfWriter };\n","/**\n * @private\n * @hidden\n */\nexport function defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n","/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\nimport { defaultToString } from './utils';\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @class */ (function () {\n /**\n * @private\n * @hidden\n */\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.setValue = function (key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.remove = function (key) {\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.values = function () {\n var valuesArray = [];\n var namesOfValues = Object.keys(this.table);\n for (var index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n var pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.clear = function () {\n this.table = {};\n this.nElements = 0;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.size = function () {\n return this.nElements;\n };\n return Dictionary;\n}()); // End of dictionary\nexport { Dictionary };\n","/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nexport var ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n","/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\nimport { ObjectStatus } from './enum';\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @class */ (function () {\n function PdfMainObjectCollection() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n Object.defineProperty(PdfMainObjectCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.objectCollections.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n PdfMainObjectCollection.prototype.items = function (index) {\n return this.objectCollections[index];\n };\n Object.defineProperty(PdfMainObjectCollection.prototype, \"outIsNew\", {\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get: function () {\n return this.isNew;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element.\n * @private\n */\n PdfMainObjectCollection.prototype.add = function (element) {\n var objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n };\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n PdfMainObjectCollection.prototype.lookFor = function (obj) {\n var index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (var i = this.count - 1; i >= 0; i--) {\n var oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * Gets the `reference of the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.getReference = function (index, isNew) {\n this.index = this.lookFor(index);\n var reference;\n this.isNew = false;\n var oi = this.objectCollections[this.index];\n reference = oi.reference;\n var obj = { reference: reference, wasNew: isNew };\n return obj;\n };\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.trySetReference = function (obj, reference, found) {\n var result = true;\n found = true;\n this.index = this.lookFor(obj);\n var oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n };\n PdfMainObjectCollection.prototype.destroy = function () {\n for (var _i = 0, _a = this.objectCollections; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n };\n return PdfMainObjectCollection;\n}());\nexport { PdfMainObjectCollection };\nvar ObjectInfo = /** @class */ (function () {\n function ObjectInfo(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n Object.defineProperty(ObjectInfo.prototype, \"object\", {\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get: function () {\n return this.pdfObject;\n },\n set: function (value) {\n this.pdfObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ObjectInfo.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `reference`.\n * @private\n */\n ObjectInfo.prototype.setReference = function (reference) {\n this.pdfReference = reference;\n };\n return ObjectInfo;\n}());\nexport { ObjectInfo };\n","/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nexport var InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n var ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n var SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nvar PdfString = /** @class */ (function () {\n function PdfString(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (var i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n Object.defineProperty(PdfString.prototype, \"hex\", {\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get: function () {\n return this.bHex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"value\", {\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get: function () {\n return this.stringValue;\n },\n set: function (value) {\n this.stringValue = value;\n this.data = null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status1;\n },\n set: function (value) {\n this.status1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving1;\n },\n set: function (value) {\n this.isSaving1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index1;\n },\n set: function (value) {\n this.index1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position1;\n },\n set: function (value) {\n this.position1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"converted\", {\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get: function () {\n return this.bConverted;\n },\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set: function (value) {\n this.bConverted = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"encode\", {\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get: function () {\n return this.bForceEncoding;\n },\n set: function (value) {\n this.bForceEncoding = value;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n PdfString.bytesToHex = function (bytes) {\n if (bytes == null) {\n return '';\n }\n var builder = '';\n return builder;\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfString.prototype.save = function (writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n };\n PdfString.prototype.pdfEncode = function () {\n var result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n var data = this.escapeSymbols(this.value);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n };\n PdfString.prototype.escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n PdfString.prototype.clone = function (crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n var newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n };\n /**\n * Converts string to array of unicode symbols.\n */\n PdfString.toUnicodeArray = function (value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var startIndex = 0;\n var output = [];\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n };\n /**\n * Converts byte data to string.\n */\n PdfString.byteToString = function (data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n var result = '';\n for (var i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n };\n //constants = ;\n /**\n * `General markers` for string.\n * @private\n */\n PdfString.stringMark = '()';\n /**\n * `Hex markers` for string.\n * @private\n */\n PdfString.hexStringMark = '<>';\n /**\n * Format of password data.\n * @private\n */\n PdfString.hexFormatPattern = '{0:X2}';\n return PdfString;\n}());\nexport { PdfString };\n","import { Encoding, validateNullOrUndefined } from './encoding';\nimport { Save } from './save';\n/**\n * StreamWriter class contains the implementation for writing characters to a file in a particular encoding\n * ```typescript\n * let writer = new StreamWriter();\n * writer.write('Hello World');\n * writer.save('Sample.txt');\n * writer.dispose();\n * ```\n */\nvar StreamWriter = /** @class */ (function () {\n /**\n * Initializes a new instance of the StreamWriter class by using the specified encoding.\n * @param {Encoding} encoding?- The character encoding to use.\n */\n function StreamWriter(encoding) {\n this.bufferBlob = new Blob(['']);\n this.bufferText = '';\n this.init(encoding);\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(StreamWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the StreamWriter as Blob.\n * @returns Blob\n */\n get: function () {\n this.flush();\n return this.bufferBlob;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StreamWriter.prototype, \"encoding\", {\n /**\n * Gets the encoding.\n * @returns Encoding\n */\n get: function () {\n return this.enc;\n },\n enumerable: true,\n configurable: true\n });\n StreamWriter.prototype.init = function (encoding) {\n if (encoding === null || encoding === undefined) {\n this.enc = new Encoding(false);\n this.enc.type = 'Utf8';\n }\n else {\n this.enc = encoding;\n this.setBomByte();\n }\n };\n /**\n * Private method to set Byte Order Mark(BOM) value based on EncodingType\n */\n StreamWriter.prototype.setBomByte = function () {\n if (this.encoding.includeBom) {\n switch (this.encoding.type) {\n case 'Unicode':\n var arrayUnicode = new ArrayBuffer(2);\n var uint8 = new Uint8Array(arrayUnicode);\n uint8[0] = 255;\n uint8[1] = 254;\n this.bufferBlob = new Blob([arrayUnicode]);\n break;\n case 'Utf8':\n var arrayUtf8 = new ArrayBuffer(3);\n var utf8 = new Uint8Array(arrayUtf8);\n utf8[0] = 239;\n utf8[1] = 187;\n utf8[2] = 191;\n this.bufferBlob = new Blob([arrayUtf8]);\n break;\n default:\n this.bufferBlob = new Blob(['']);\n break;\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - The file name to save\n * @returns {void}\n */\n StreamWriter.prototype.save = function (fileName) {\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Writes the specified string.\n * @param {string} value - The string to write. If value is null or undefined, nothing is written.\n * @returns {void}\n */\n StreamWriter.prototype.write = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText += value;\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n StreamWriter.prototype.flush = function () {\n if (this.bufferText === undefined || this.bufferText === null || this.bufferText.length === 0) {\n return;\n }\n var bufferArray = this.encoding.getBytes(this.bufferText, 0, this.bufferText.length);\n this.bufferText = '';\n this.bufferBlob = new Blob([this.bufferBlob, bufferArray]);\n };\n /**\n * Writes the specified string followed by a line terminator\n * @param {string} value - The string to write. If value is null or undefined, nothing is written\n * @returns {void}\n */\n StreamWriter.prototype.writeLine = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText = this.bufferText + value + '\\r\\n';\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n /**\n * Releases the resources used by the StreamWriter\n * @returns {void}\n */\n StreamWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n this.bufferText = undefined;\n if (this.enc instanceof Encoding) {\n this.enc.destroy();\n }\n this.enc = undefined;\n };\n return StreamWriter;\n}());\nexport { StreamWriter };\n","import { StreamWriter } from '@syncfusion/ej2-file-utils';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\nimport { PdfDocument } from './pdf-document';\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n PdfDocumentBase.prototype.setMainObjectCollection = function (mainObjectCollection) {\n this.objects = mainObjectCollection;\n };\n /**\n * Sets the `cross table`.\n * @private\n */\n PdfDocumentBase.prototype.setCrossTable = function (cTable) {\n this.pdfCrossTable = cTable;\n };\n /**\n * Sets the `catalog`.\n * @private\n */\n PdfDocumentBase.prototype.setCatalog = function (catalog) {\n this.pdfCatalog = catalog;\n };\n PdfDocumentBase.prototype.save = function (filename) {\n var _this = this;\n var encoding = new Encoding(true);\n var SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n var encoding_1 = new Encoding(true);\n var SW_1 = new StreamWriter(encoding_1);\n return new Promise(function (resolve, reject) {\n /* tslint:disable-next-line:no-any */\n var obj = {};\n obj.blobData = new Blob([_this.document.docSave(SW_1, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n };\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n PdfDocumentBase.prototype.clone = function () {\n return this.document;\n };\n return PdfDocumentBase;\n}());\nexport { PdfDocumentBase };\n","/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @class */ (function () {\n function PdfName(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n Object.defineProperty(PdfName.prototype, \"status\", {\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status6;\n },\n set: function (value) {\n this.status6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving6;\n },\n set: function (value) {\n this.isSaving6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index6;\n },\n set: function (value) {\n this.index6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position6;\n },\n set: function (value) {\n this.position6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n set: function (value) {\n // if (value !== this.value) {\n var val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n },\n enumerable: true,\n configurable: true\n });\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n PdfName.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n };\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n PdfName.prototype.toString = function () {\n return (this.stringStartMark + this.escapeString(this.value));\n };\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n PdfName.prototype.clone = function (crossTable) {\n var newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n };\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n PdfName.prototype.escapeString = function (stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n var result = '';\n var len = 0;\n for (var i = 0, len_1 = stringValue.length; i < len_1; i++) {\n var ch = stringValue[i];\n var index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n };\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n PdfName.prototype.normalizeValue = function (value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n var strFormat = '#{0:X}';\n //return value.replace(c.toString(),String.format(strFormat,c));\n return value;\n // }\n };\n /**\n * PDF `special characters`.\n * @private\n */\n PdfName.delimiters = '()<>[]{}/%}';\n /**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\n PdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n return PdfName;\n}());\nexport { PdfName };\n","/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @class */ (function () {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n function Operators() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n /**\n * Specifies the value of `obj`.\n * @private\n */\n Operators.obj = 'obj';\n /**\n * Specifies the value of `endObj`.\n * @private\n */\n Operators.endObj = 'endobj';\n /**\n * Specifies the value of `R`.\n * @private\n */\n Operators.r = 'R';\n /**\n * Specifies the value of ` `.\n * @private\n */\n Operators.whiteSpace = ' ';\n /**\n * Specifies the value of `/`.\n * @private\n */\n Operators.slash = '/';\n /**\n * Specifies the value of `\\r\\n`.\n * @private\n */\n Operators.newLine = '\\r\\n';\n /**\n * Specifies the value of `stream`.\n * @private\n */\n Operators.stream = 'stream';\n /**\n * Specifies the value of `endStream`.\n * @private\n */\n Operators.endStream = 'endstream';\n /**\n * Specifies the value of `xref`.\n * @private\n */\n Operators.xref = 'xref';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.f = 'f';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.n = 'n';\n /**\n * Specifies the value of `trailer`.\n * @private\n */\n Operators.trailer = 'trailer';\n /**\n * Specifies the value of `startxref`.\n * @private\n */\n Operators.startxref = 'startxref';\n /**\n * Specifies the value of `eof`.\n * @private\n */\n Operators.eof = '%%EOF';\n /**\n * Specifies the value of `header`.\n * @private\n */\n Operators.header = '%PDF-1.5';\n /**\n * Specifies the value of `beginText`.\n * @private\n */\n Operators.beginText = 'BT';\n /**\n * Specifies the value of `endText`.\n * @private\n */\n Operators.endText = 'ET';\n /**\n * Specifies the value of `m`.\n * @private\n */\n Operators.beginPath = 'm';\n /**\n * Specifies the value of `l`.\n * @private\n */\n Operators.appendLineSegment = 'l';\n /**\n * Specifies the value of `S`.\n * @private\n */\n Operators.stroke = 'S';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.fill = 'f';\n /**\n * Specifies the value of `f*`.\n * @private\n */\n Operators.fillEvenOdd = 'f*';\n /**\n * Specifies the value of `B`.\n * @private\n */\n Operators.fillStroke = 'B';\n /**\n * Specifies the value of `B*`.\n * @private\n */\n Operators.fillStrokeEvenOdd = 'B*';\n /**\n * Specifies the value of `c`.\n * @private\n */\n Operators.appendbeziercurve = 'c';\n /**\n * Specifies the value of `re`.\n * @private\n */\n Operators.appendRectangle = 're';\n /**\n * Specifies the value of `q`.\n * @private\n */\n Operators.saveState = 'q';\n /**\n * Specifies the value of `Q`.\n * @private\n */\n Operators.restoreState = 'Q';\n /**\n * Specifies the value of `Do`.\n * @private\n */\n Operators.paintXObject = 'Do';\n /**\n * Specifies the value of `cm`.\n * @private\n */\n Operators.modifyCtm = 'cm';\n /**\n * Specifies the value of `Tm`.\n * @private\n */\n Operators.modifyTM = 'Tm';\n /**\n * Specifies the value of `w`.\n * @private\n */\n Operators.setLineWidth = 'w';\n /**\n * Specifies the value of `J`.\n * @private\n */\n Operators.setLineCapStyle = 'J';\n /**\n * Specifies the value of `j`.\n * @private\n */\n Operators.setLineJoinStyle = 'j';\n /**\n * Specifies the value of `d`.\n * @private\n */\n Operators.setDashPattern = 'd';\n /**\n * Specifies the value of `i`.\n * @private\n */\n Operators.setFlatnessTolerance = 'i';\n /**\n * Specifies the value of `h`.\n * @private\n */\n Operators.closePath = 'h';\n /**\n * Specifies the value of `s`.\n * @private\n */\n Operators.closeStrokePath = 's';\n /**\n * Specifies the value of `b`.\n * @private\n */\n Operators.closeFillStrokePath = 'b';\n /**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\n Operators.setCharacterSpace = 'Tc';\n /**\n * Specifies the value of `setWordSpace`.\n * @private\n */\n Operators.setWordSpace = 'Tw';\n /**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\n Operators.setHorizontalScaling = 'Tz';\n /**\n * Specifies the value of `setTextLeading`.\n * @private\n */\n Operators.setTextLeading = 'TL';\n /**\n * Specifies the value of `setFont`.\n * @private\n */\n Operators.setFont = 'Tf';\n /**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\n Operators.setRenderingMode = 'Tr';\n /**\n * Specifies the value of `setTextRise`.\n * @private\n */\n Operators.setTextRise = 'Ts';\n /**\n * Specifies the value of `setTextScaling`.\n * @private\n */\n Operators.setTextScaling = 'Tz';\n /**\n * Specifies the value of `setCoords`.\n * @private\n */\n Operators.setCoords = 'Td';\n /**\n * Specifies the value of `goToNextLine`.\n * @private\n */\n Operators.goToNextLine = 'T*';\n /**\n * Specifies the value of `setText`.\n * @private\n */\n Operators.setText = 'Tj';\n /**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\n Operators.setTextWithFormatting = 'TJ';\n /**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\n Operators.setTextOnNewLine = '\\'';\n /**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\n Operators.selectcolorspaceforstroking = 'CS';\n /**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\n Operators.selectcolorspacefornonstroking = 'cs';\n /**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\n Operators.setrbgcolorforstroking = 'RG';\n /**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\n Operators.setrbgcolorfornonstroking = 'rg';\n /**\n * Specifies the value of `K`.\n * @private\n */\n Operators.setcmykcolorforstroking = 'K';\n /**\n * Specifies the value of `k`.\n * @private\n */\n Operators.setcmykcolorfornonstroking = 'k';\n /**\n * Specifies the value of `G`.\n * @private\n */\n Operators.setgraycolorforstroking = 'G';\n /**\n * Specifies the value of `g`.\n * @private\n */\n Operators.setgraycolorfornonstroking = 'g';\n /**\n * Specifies the value of `W`.\n * @private\n */\n Operators.clipPath = 'W';\n /**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\n Operators.clipPathEvenOdd = 'W*';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.endPath = 'n';\n /**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\n Operators.setGraphicsState = 'gs';\n /**\n * Specifies the value of `%`.\n * @private\n */\n Operators.comment = '%';\n /**\n * Specifies the value of `*`.\n * @private\n */\n Operators.evenOdd = '*';\n /**\n * Specifies the value of `M`.\n * @private\n */\n Operators.setMiterLimit = 'M';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\n Operators.setColorAndPattern = 'scn';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\n Operators.setColorAndPatternStroking = 'SCN';\n return Operators;\n}());\nexport { Operators };\n","/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n //\n }\n return DictionaryProperties;\n}());\nexport { DictionaryProperties };\n","import { Dictionary } from './../collections/dictionary';\nimport { PdfName } from './pdf-name';\nimport { Operators } from './../input-output/pdf-operators';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @class */ (function () {\n function PdfDictionary(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nexport { PdfDictionary };\nvar SaveSectionCollectionEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nexport { SaveSectionCollectionEventHandler };\nvar SaveDescendantFontEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nexport { SaveDescendantFontEventHandler };\nvar SaveFontDictionaryEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nexport { SaveFontDictionaryEventHandler };\nvar SaveAnnotationEventHandler = /** @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nexport { SaveAnnotationEventHandler };\nvar SaveSectionEventHandler = /** @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\nexport { SaveSectionEventHandler };\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\nexport { SaveTemplateEventHandler };\n","/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\nexport { PdfNumber };\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfDictionary } from './pdf-dictionary';\nimport { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\nimport { PdfName } from './pdf-name';\nimport { PdfArray } from './pdf-array';\nimport { PdfReferenceHolder } from './pdf-reference';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\n/**\n * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @class */ (function (_super) {\n __extends(PdfStream, _super);\n function PdfStream(dictionary, data) {\n var _this = _super.call(this, dictionary) || this;\n //Constants\n /**\n * @hidden\n * @private\n */\n _this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n _this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n _this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n _this.bCompress = true;\n /**\n * @hidden\n * @private\n */\n _this.isImageStream = false;\n /**\n * @hidden\n * @private\n */\n _this.isFontStream = false;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isImage\", {\n /**\n * Gets or sets 'is image' flag.\n * @private\n */\n get: function () {\n return this.isImageStream;\n },\n set: function (value) {\n this.isImageStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isFont\", {\n /**\n * Gets or sets 'is font' flag.\n * @private\n */\n get: function () {\n return this.isFontStream;\n },\n set: function (value) {\n this.isFontStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isImage && !this.isFont) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nexport { PdfStream };\nvar SaveCmapEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nexport { SaveCmapEventHandler };\nvar SaveFontProgramEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\nexport { SaveFontProgramEventHandler };\n","/**\n * public Enum for `ObjectType`.\n * @private\n */\nexport var ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfString } from './../primitives/pdf-string';\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @class */ (function () {\n function PdfReference(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n Object.defineProperty(PdfReference.prototype, \"status\", {\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status3;\n },\n set: function (value) {\n this.status3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving3;\n },\n set: function (value) {\n this.isSaving3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index3;\n },\n set: function (value) {\n this.index3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position3;\n },\n set: function (value) {\n this.position3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var returnObject3 = null;\n return returnObject3;\n },\n enumerable: true,\n configurable: true\n });\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n PdfReference.prototype.save = function (writer) {\n writer.write(this.toString());\n };\n /**\n * Returns a `string` representing the object.\n * @private\n */\n PdfReference.prototype.toString = function () {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n };\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n PdfReference.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReference;\n}());\nexport { PdfReference };\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @class */ (function () {\n function PdfReferenceHolder(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n Object.defineProperty(PdfReferenceHolder.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status4;\n },\n set: function (value) {\n this.status4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving4;\n },\n set: function (value) {\n this.isSaving4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index4;\n },\n set: function (value) {\n this.index4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position4;\n },\n set: function (value) {\n this.position4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"object\", {\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get: function () {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"index\", {\n /**\n * Gets the `index` of the object.\n * @private\n */\n get: function () {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"element\", {\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n PdfReferenceHolder.prototype.initialize = function (obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n var tempObj = obj1;\n this.initialize(tempObj.element);\n }\n };\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n PdfReferenceHolder.prototype.save = function (writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n var position = writer.position;\n var cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n var reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n };\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n PdfReferenceHolder.prototype.clone = function (crossTable) {\n var refHolder = null;\n var temp = null;\n var refNum = '';\n var reference = null;\n // Restricts addition of same object multiple time.\n /* if (this.Reference != null && this.crossTable != null && this.crossTable.PageCorrespondance.containsKey(this.Reference)) {\n refHolder = new PdfReferenceHolder(this.crossTable.PageCorrespondance.getValue(this.Reference) as PdfReference, crossTable);\n return refHolder;\n }\n if (Object instanceof PdfNumber) {\n return new PdfNumber((Object as PdfNumber).IntValue);\n }\n */\n // if (Object instanceof PdfDictionary) {\n // // Meaning the referenced page is not available for import.\n // let type : PdfName = new PdfName(this.dictionaryProperties.type);\n // let dict : PdfDictionary = Object as PdfDictionary;\n // if (dict.ContainsKey(type)) {\n // let pageName : PdfName = dict.Items.getValue(type.Value) as PdfName;\n // if (pageName !== null) {\n // if (pageName.Value === 'Page') {\n // return new PdfNull();\n // }\n // }\n // }\n // }\n /* if (Object instanceof PdfName) {\n return new PdfName ((Object as PdfName ).Value);\n }\n */\n // Resolves circular references.\n // if (crossTable.PrevReference !== null && (crossTable.PrevReference.indexOf(this.Reference) !== -1)) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.Reference).ClonedObject;\n // if (obj !== null) {\n // reference = crossTable.GetReference(obj);\n // return new PdfReferenceHolder(reference, crossTable);\n // } else {\n // return new PdfNull();\n // }\n // }\n /*if (this.Reference !== null) {\n crossTable.PrevReference.push(this.Reference);\n }\n reference = crossTable.GetReference(temp);\n refHolder = new PdfReferenceHolder(reference, crossTable);\n return refHolder;\n */\n return null;\n };\n return PdfReferenceHolder;\n}());\nexport { PdfReferenceHolder };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCatalog.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @class */ (function (_super) {\n __extends(PdfCatalog, _super);\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n function PdfCatalog() {\n var _this = _super.call(this) || this;\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n _this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n _this.tempDictionaryProperties = new DictionaryProperties();\n _this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n return _this;\n }\n Object.defineProperty(PdfCatalog.prototype, \"pages\", {\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get: function () {\n return this.sections;\n },\n set: function (value) {\n var dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n return PdfCatalog;\n}(PdfDictionary));\nexport { PdfCatalog };\n","/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nexport var PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nexport var PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nexport var PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nexport var PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nexport var TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n","import { ObjectStatus } from './../input-output/enum';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './pdf-dictionary-properties';\nimport { Operators } from './pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfReference } from './../primitives/pdf-reference';\nimport { ObjectType } from './cross-table';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfCatalog } from './../document/pdf-catalog';\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @class */ (function () {\n function PdfCrossTable() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n Object.defineProperty(PdfCrossTable.prototype, \"isMerging\", {\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get: function () {\n return this.merging;\n },\n set: function (value) {\n this.merging = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"trailer\", {\n /**\n * Gets the `trailer`.\n * @private\n */\n get: function () {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"document\", {\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"pdfObjects\", {\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get: function () {\n return this.items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"objectCollection\", {\n /**\n * Gets the `object collection`.\n * @private\n */\n get: function () {\n return this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"count\", {\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get: function () {\n return this.objectCount;\n },\n set: function (value) {\n this.objectCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"nextObjNumber\", {\n /**\n * Returns `next available object number`.\n * @private\n */\n get: function () {\n this.count = this.count + 1;\n return this.count;\n },\n enumerable: true,\n configurable: true\n });\n PdfCrossTable.prototype.save = function (writer, filename) {\n this.saveHead(writer);\n var state = false;\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n var saveCount = this.count;\n var xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n var prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (var i = 0; i < this.objectCollection.count; ++i) {\n var oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * `Saves the endess` of the file.\n * @private\n */\n PdfCrossTable.prototype.saveTheEndess = function (writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n };\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n PdfCrossTable.prototype.saveTrailer = function (writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n var trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n };\n /**\n * `Saves the xref section`.\n * @private\n */\n PdfCrossTable.prototype.saveSections = function (writer) {\n var objectNum = 0;\n var count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n };\n /**\n * `Saves a subsection`.\n * @private\n */\n PdfCrossTable.prototype.saveSubsection = function (writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n var subsectionHead = '{0} {1}{2}';\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (var i = objectNum; i <= objectNum + count; ++i) {\n var obj = this.objects.getValue(i);\n var str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n };\n /**\n * Generates string for `xref table item`.\n * @private\n */\n PdfCrossTable.prototype.getItem = function (offset, genNumber, isFree) {\n var returnString = '';\n var addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n var addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (var index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (var index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n };\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n PdfCrossTable.prototype.prepareSubsection = function (objectNum) {\n var count = 0;\n var i;\n var total = this.count;\n for (var k = 0; k < this.document.pdfObjects.count; k++) {\n var reference = this.document.pdfObjects.items(k).reference;\n var refString = reference.toString();\n var refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n };\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n PdfCrossTable.prototype.markTrailerReferences = function () {\n var tempArray;\n var keys = this.trailer.items.keys();\n var values = this.trailer.items.values();\n };\n /**\n * `Saves the head`.\n * @private\n */\n PdfCrossTable.prototype.saveHead = function (writer) {\n var version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n };\n /**\n * Generates the `version` of the file.\n * @private\n */\n PdfCrossTable.prototype.generateFileVersion = function (document) {\n var iVersion = 4;\n var version = '1.' + iVersion.toString();\n return version;\n };\n PdfCrossTable.prototype.getReference = function (obj, bNew) {\n if (typeof bNew === 'undefined') {\n var wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n };\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n PdfCrossTable.prototype.getSubReference = function (obj, bNew) {\n var isNew = false;\n var wasNew;\n var reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n var tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n var objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n var found = void 0;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n var tempIndex = this.document.pdfObjects.count - 1;\n var tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n var tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n };\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n PdfCrossTable.prototype.saveObjects = function (writer) {\n var objectCollection = this.objectCollection;\n for (var i = 0; i < objectCollection.count; ++i) {\n var oi = objectCollection.items(i);\n var obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n };\n /**\n * `Saves indirect object`.\n * @private\n */\n PdfCrossTable.prototype.saveIndirectObject = function (obj, writer) {\n var reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n var tempArchive = false;\n tempArchive = obj.getArchive();\n var allowedType = !((obj instanceof PdfStream) || !tempArchive || (obj instanceof PdfCatalog));\n var sigFlag = false;\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n };\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n PdfCrossTable.prototype.doSaveObject = function (obj, reference, writer) {\n var correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n var stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n };\n PdfCrossTable.prototype.registerObject = function (offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n };\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n PdfCrossTable.dereference = function (obj) {\n var rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n };\n return PdfCrossTable;\n}());\nexport { PdfCrossTable };\nvar RegisteredObject = /** @class */ (function () {\n function RegisteredObject(offset, reference, free) {\n var tempOffset = offset;\n this.offsetNumber = tempOffset;\n var tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n Object.defineProperty(RegisteredObject.prototype, \"objectNumber\", {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RegisteredObject.prototype, \"offset\", {\n /**\n * Gets the `offset`.\n * @private\n */\n get: function () {\n var result;\n result = this.offsetNumber;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return RegisteredObject;\n}());\nexport { RegisteredObject };\n","/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @class */ (function () {\n function PointF(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n return PointF;\n}());\nexport { PointF };\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @class */ (function () {\n function SizeF(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n return SizeF;\n}());\nexport { SizeF };\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @class */ (function () {\n function RectangleF(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n var pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n var sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n var x = arg1;\n var y = arg2;\n var width = arg3;\n var height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n return RectangleF;\n}());\nexport { RectangleF };\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @class */ (function () {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n function Rectangle(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Gets a value of width\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Gets a value of height\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\n /**\n * Gets a value of Top and Left\n */\n get: function () {\n return new PointF(this.left, this.top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"size\", {\n /**\n * Gets a value of size\n */\n get: function () {\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.toString = function () {\n return this.topLeft + 'x' + this.size;\n };\n return Rectangle;\n}());\nexport { Rectangle };\n","/**\n * PdfPageSize.ts class for EJ2-PDF\n */\nimport { SizeF } from './../drawing/pdf-drawing';\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\nexport { PdfPageSize };\n","/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\nexport { PdfMargins };\n","/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nexport var PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nexport var PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nexport var PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nexport var PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nexport var PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nexport var PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nexport var PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nexport var PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nexport var PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nexport var PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nexport var PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nexport var PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n","/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nexport var PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nexport var PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nexport var FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nexport var TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nexport var TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nexport var TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nexport var TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nexport var TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nexport var FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nexport var TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n","/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import { Operators } from './pdf-operators';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\nexport { PdfStreamWriter };\n","import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfWordWrapType } from './enum';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n var isSingleWord = false;\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent /*)*/;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n var spaces = StringTokenizer.spaces;\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\nexport { PdfStringLayouter };\n//Internal declaration\nvar PdfStringLayoutResult = /** @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nexport { PdfStringLayoutResult };\nvar LineInfo = /** @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\nexport { LineInfo };\n/**\n* Break type of the `line`.\n* @private\n*/\nexport var LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n","import { PdfColorSpace } from './enum';\nimport { Operators } from './../input-output/pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfArray } from './../primitives/pdf-array';\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\nexport { PdfColor };\n","/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\nexport { PdfBrush };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColor } from './../pdf-color';\nimport { PdfColorSpace } from './../enum';\nimport { PdfBrush } from './pdf-brush';\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @class */ (function (_super) {\n __extends(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n var sBrush = brush;\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\nexport { PdfSolidBrush };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\nimport { PdfVerticalAlignment } from './../../graphics/enum';\nimport { PdfSubSuperScript, PdfWordWrapType } from './../../graphics/fonts/enum';\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n","/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.length, this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\nexport { StringTokenizer };\n","/**\n * PdfFont.ts class for EJ2-PDF\n */\nimport { PdfFontStyle } from './enum';\nimport { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfStringFormat } from './pdf-string-format';\nimport { PdfStringLayouter } from './string-layouter';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\nexport { PdfFont };\n","/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nexport var PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nexport var PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nexport var PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n","/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\nimport { PointF } from './../drawing/pdf-drawing';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nexport { PdfTransformationMatrix };\nvar Matrix = /** @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\nexport { Matrix };\n","/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\nexport { ProcedureSets };\n","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\nexport { PdfTransparency };\n","/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\nexport { PdfAutomaticFieldInfoCollection };\n","/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\nexport { PdfGraphicsElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfDocument } from './../pdf-document';\nimport { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';\nimport { PdfAutomaticFieldInfo } from './automatic-field-info';\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @class */ (function (_super) {\n __extends(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\nexport { PdfAutomaticField };\n","/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\nimport { PointF } from './../../drawing/pdf-drawing';\nimport { PdfAutomaticField } from './automatic-field';\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\nexport { PdfAutomaticFieldInfo };\n","/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n var dataUrlPrefix = 'data:';\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\nexport { ByteArray };\n","/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\nexport { TtfTableInfo };\n","var TtfNameTable = /** @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\nexport { TtfNameTable };\n","/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\nexport { TtfNameRecord };\n","/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\nexport { TtfHeadTable };\n","var TtfMetrics = /** @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\nexport { TtfMetrics };\n","/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\nexport { TtfHorizontalHeaderTable };\n","/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\nexport { TtfOS2Table };\n","/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\nexport { TtfPostTable };\n","/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\nexport { TtfLongHorMetric };\n","/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\nexport { TtfCmapSubTable };\n","/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\nexport { TtfCmapTable };\n","/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\nexport { TtfGlyphInfo };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\nexport { TtfLocaTable };\n","/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\nexport { TtfAppleCmapSubTable };\n","/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\nexport { TtfMicrosoftCmapSubTable };\n","/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\nexport { TtfTrimmedCmapSubTable };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\nexport { TtfGlyphHeader };\n","/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var i1 = (value & 0xff000000) >> 24;\n i1 = i1 < 0 ? 256 + i1 : i1;\n var i2 = (value & 0x00ff0000) >> 16;\n i2 = i2 < 0 ? 256 + i2 : i2;\n var i3 = (value & 0x0000ff00) >> 8;\n i3 = i3 < 0 ? 256 + i3 : i3;\n var i4 = value & 0x000000ff;\n i4 = i4 < 0 ? 256 + i4 : i4;\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\nexport { BigEndianWriter };\n","/**\n * TtfReader.ts class for EJ2-PDF\n */\nimport { TtfTableInfo } from './ttf-table-info';\nimport { Dictionary } from './../../collections/dictionary';\nimport { TtfNameTable } from './ttf-name-table';\nimport { TtfNameRecord } from './ttf-name-record';\nimport { TtfHeadTable } from './ttf-head-table';\nimport { TtfMetrics } from './ttf-metrics';\nimport { TtfHorizontalHeaderTable } from './ttf-horizontal-header-table';\nimport { TtfOS2Table } from './ttf-OS2-Table';\nimport { TtfPostTable } from './ttf-post-table';\nimport { TtfLongHorMetric } from './ttf-long-hor-metric';\nimport { TtfCmapSubTable } from './ttf-cmap-sub-table';\nimport { TtfCmapTable } from './ttf-cmap-table';\nimport { TtfGlyphInfo } from './ttf-glyph-info';\nimport { TtfLocaTable } from './ttf-loca-table';\nimport { TtfAppleCmapSubTable } from './ttf-apple-cmap-sub-table';\nimport { TtfMicrosoftCmapSubTable } from './ttf-microsoft-cmap-sub-table';\nimport { TtfTrimmedCmapSubTable } from './ttf-trimmed-cmap-sub-table';\nimport { TtfGlyphHeader } from './ttf-glyph-header';\nimport { Rectangle } from './../../drawing/pdf-drawing';\nimport { StringTokenizer } from './string-tokenizer';\nimport { TtfCmapFormat, TtfCmapEncoding, TtfPlatformID } from './enum';\nimport { TtfMicrosoftEncodingID, TtfMacintoshEncodingID, TtfCompositeGlyphFlags } from './enum';\nimport { BigEndianWriter } from './../../input-output/big-endian-writer';\nvar TtfReader = /** @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n var i = 0;\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n i++;\n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\n}());\nexport { TtfReader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFont } from './pdf-font';\nimport { PdfSubSuperScript } from './enum';\nimport { PdfArray } from './../../primitives/pdf-array';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nexport { PdfFontMetrics };\nvar WidthTable = /** @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nexport { WidthTable };\nvar StandardWidthTable = /** @class */ (function (_super) {\n __extends(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\nexport { StandardWidthTable };\n","/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nimport { ByteArray } from './../../graphics/images/index';\nimport { TtfReader } from './ttf-reader';\nimport { PdfDictionary, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler } from './../../primitives/pdf-dictionary';\nimport { SaveFontProgramEventHandler, SaveCmapEventHandler } from './../../primitives/pdf-stream';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfString } from './../../primitives/pdf-string';\nimport { PdfReferenceHolder } from './../../primitives/pdf-reference';\nimport { PdfFontMetrics } from './pdf-font-metrics';\nimport { StandardWidthTable } from './pdf-font-metrics';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { Dictionary } from './../../collections/dictionary';\nimport { FontDescriptorFlags } from './enum';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { Operators } from './../../input-output/pdf-operators';\nvar UnicodeTrueTypeFont = /** @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isFont = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isFont = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isFont = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isFont = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isFont = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\nexport { UnicodeTrueTypeFont };\n","/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\nvar ArabicShapeRenderer = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\nexport { ArabicShapeRenderer };\n//#endregion\n//#region Internals\nvar ArabicShape = /** @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\nexport { ArabicShape };\n//#endregion\n","/**\n * Bidi.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nexport { Bidi };\nvar RtlCharacters = /** @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\nexport { RtlCharacters };\n","import { PdfString } from './../../primitives/pdf-string';\nimport { ArabicShapeRenderer } from './rtl/rtl-text-shape';\nimport { PdfTextDirection } from './../enum';\nimport { Bidi } from './rtl/rtl-bidirectional';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\nexport { RtlRenderer };\n","/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n function PdfBoolean(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n Object.defineProperty(PdfBoolean.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.objectStatus;\n },\n set: function (value) {\n this.objectStatus = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.saving;\n },\n set: function (value) {\n this.saving = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index;\n },\n set: function (value) {\n this.index = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfBoolean.prototype.save = function (writer) {\n writer.write(this.boolToStr(this.value));\n };\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n PdfBoolean.prototype.clone = function (crossTable) {\n var newNumber = new PdfBoolean(this.value);\n return newNumber;\n };\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n PdfBoolean.prototype.boolToStr = function (value) {\n return value ? 'true' : 'false';\n };\n return PdfBoolean;\n}());\nexport { PdfBoolean };\n","/**\n * ImageDecoder class\n */\nimport { ByteArray } from './byte-array';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\n/**\n * Specifies the image `format`.\n * @private\n */\nexport var ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nvar ImageDecoder = /** @class */ (function () {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n function ImageDecoder(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n Object.defineProperty(ImageDecoder.prototype, \"height\", {\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"width\", {\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"bitsPerComponent\", {\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mbitsPerComponent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"size\", {\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageData\", {\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageDataAsNumberArray\", {\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.internalBuffer.buffer;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.initialize = function () {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n };\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.reset = function () {\n this.mStream.position = 0;\n };\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.parseJpegImage = function () {\n this.reset();\n var imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n var i = 4;\n var isLengthExceed = false;\n /* tslint:disable */\n var length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n };\n Object.defineProperty(ImageDecoder.prototype, \"format\", {\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get: function () {\n return this.mFormat;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n ImageDecoder.prototype.checkIfJpeg = function () {\n this.reset();\n for (var i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n };\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getImageDictionary = function () {\n if (this.mFormat === ImageFormat.Jpeg) {\n var tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isImage = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var skippedByte = 0;\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n skippedByte++;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\nexport { ImageDecoder };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfBrush } from './pdf-brush';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from '../../primitives/pdf-name';\nimport { PdfNumber } from '../../primitives/pdf-number';\nimport { PdfReferenceHolder } from '../../primitives/pdf-reference';\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @class */ (function (_super) {\n __extends(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\nexport { PdfGradientBrush };\n","/**\n * PdfTemplate.ts class for EJ2-PDF\n */\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PointF, SizeF, RectangleF } from './../../drawing/pdf-drawing';\nimport { GetResourceEventHandler } from './../pdf-graphics';\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","/**\n * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nexport var PdfBorderOverlapStyle;\n(function (PdfBorderOverlapStyle) {\n /**\n * Specifies the type of `Overlap`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Overlap\"] = 0] = \"Overlap\";\n /**\n * Specifies the type of `Inside`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Inside\"] = 1] = \"Inside\";\n})(PdfBorderOverlapStyle || (PdfBorderOverlapStyle = {}));\n","/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\nexport { PdfUnitConverter };\n","import { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfGraphicsUnit } from './../enum';\nimport { PdfUnitConverter } from './../unit-convertor';\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfBitmap.ts class for EJ2-PDF\n */\nimport { ImageDecoder } from './../../graphics/images/image-decoder';\nimport { ByteArray } from './../../graphics/images/byte-array';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfImage } from './pdf-image';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfResources.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTemplate } from './figures/pdf-template';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfBitmap } from './../graphics/images/pdf-bitmap';\nimport { PdfImage } from './../graphics/images/pdf-image';\nimport { PdfGradientBrush } from './brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @class */ (function (_super) {\n __extends(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\nexport { PdfResources };\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\nexport { Guid };\n/* tslint:enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { GetResourceEventHandler } from './../pdf-graphics';\nimport { PdfBrush } from './pdf-brush';\nimport { PointF, SizeF, RectangleF, Rectangle } from './../../drawing/pdf-drawing';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfPage } from './../../pages/pdf-page';\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @class */ (function (_super) {\n __extends(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\nexport { PdfTilingBrush };\n","/**\n * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /* tslint:disable */\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n }; /* tslint:enable */\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /* tslint:disable */\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n /* tslint:disable */\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent; /* tslint:enable */\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n /* tslint:disable */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /* tslint:disable */\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n /* tslint:disable */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n /* tslint:enable */\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n /* tslint:disable */\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify)); /* tslint:enable */\n return shouldJustify;\n };\n /* tslint:disable */\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n /* tslint:disable */\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n /* tslint:enable */\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n /* tslint:disable */\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n /* tslint:disable */\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n /* tslint:enable */\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n /* tslint:disable */\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n /* tslint:enable */\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n /* tslint:disable */\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None; /* tslint:enable */\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n /* tslint:disable */\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /* tslint:disable */\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n /* tslint:enable */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /* tslint:enable */\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(path.pathPoints, path.pathTypes);\n this.drawPathHelper(pen, brush, path.fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n this.transformationMatrix = matrix;\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n","import { PdfStream } from './../primitives/pdf-stream';\nimport { PdfGraphics, GetResourceEventHandler } from './../graphics/pdf-graphics';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n var cropBox = null;\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\nexport { PdfPageLayer };\n","/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\nexport { PdfCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageLayerCollection.ts class for EJ2-PDF\n */\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfPageLayer } from './pdf-page-layer';\nimport { PdfCollection } from './../general/pdf-collection';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfStream } from './../primitives/pdf-stream';\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @class */ (function (_super) {\n __extends(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n var ocproperties = null;\n var propertie = null;\n var isLayerAdded = false;\n // if (loadedPage instanceof PdfPage) {\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var newLine = '\\n';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\nexport { PdfPageLayerCollection };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfResources } from './../graphics/pdf-resources';\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n var rh = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\nexport { PdfPageBase };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { SizeF, RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary, SaveTemplateEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { SizeF } from './../drawing/pdf-drawing';\nimport { PdfAnnotationCollection } from './../annotations/annotation-collection';\nimport { PdfPageLayer } from './pdf-page-layer';\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function (_super) {\n __extends(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\nexport { PdfPage };\n","/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\nexport { PageAddedEventArgs };\n","/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\nexport { PdfSectionPageCollection };\n","import { TemplateType } from './../pages/enum';\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\nexport { PdfDocumentTemplate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSectionTemplate.ts class for EJ2-PDF\n */\nimport { PdfDocumentTemplate } from './../document/pdf-document-template';\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @class */ (function (_super) {\n __extends(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\nexport { PdfSectionTemplate };\n","import { PdfPage } from './pdf-page';\nimport { PageAddedEventArgs } from './page-added-event-arguments';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { SaveSectionEventHandler } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfSectionCollection } from './pdf-section-collection';\nimport { PdfSectionPageCollection } from './pdf-section-page-collection';\nimport { RectangleF } from './../drawing/pdf-drawing';\nimport { PdfSectionTemplate } from './pdf-section-templates';\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nexport { PdfSection };\nvar PageSettingsState = /** @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\nexport { PageSettingsState };\n","import { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfDictionary, SaveSectionCollectionEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfSection } from './pdf-section';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\nexport { PdfSectionCollection };\n","import { PdfPage } from './pdf-page';\nimport { Dictionary } from './../collections/dictionary';\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n var len;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\nexport { PdfDocumentPageCollection };\n","/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\n}());\nexport { PdfCacheCollection };\n","/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\nimport { PdfFontStyle, PdfFontFamily } from './enum';\nimport { PdfFontMetrics, StandardWidthTable } from './pdf-font-metrics';\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\nexport { PdfStandardFontMetricsFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFontFamily, PdfFontStyle, FontEncoding } from './enum';\nimport { PdfFont } from './pdf-font';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStandardFontMetricsFactory } from './pdf-standard-font-metrics-factory';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfWriter } from './../input-output/pdf-writer';\nimport { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';\nimport { PdfDocumentBase } from './pdf-document-base';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfCatalog } from './pdf-catalog';\nimport { PdfPageSettings } from './../pages/pdf-page-settings';\nimport { PdfSectionCollection } from './../pages/pdf-section-collection';\nimport { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';\nimport { PdfCacheCollection } from './../general/pdf-cache-collection';\nimport { PdfColorSpace } from './../graphics/enum';\nimport { PdfDocumentTemplate } from './pdf-document-template';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function (_super) {\n __extends(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\nexport { PdfDocument };\n","/**\n * PdfBorders.ts class for EJ2-PDF\n */\nimport { PdfPen } from './../../../graphics/pdf-pen';\nimport { PdfDashStyle } from './../../../graphics/enum';\nimport { PdfColor } from './../../../graphics/pdf-color';\n/**\n * `PdfBorders` class used represents the cell border of the PDF grid.\n */\nvar PdfBorders = /** @class */ (function () {\n // Constructor\n /**\n * Create a new instance for `PdfBorders` class.\n * @private\n */\n function PdfBorders() {\n var defaultBorderPenLeft = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenLeft.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenRight = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenRight.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenTop = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenTop.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenBottom = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenBottom.dashStyle = PdfDashStyle.Solid;\n this.leftPen = defaultBorderPenLeft;\n this.rightPen = defaultBorderPenRight;\n this.topPen = defaultBorderPenTop;\n this.bottomPen = defaultBorderPenBottom;\n }\n Object.defineProperty(PdfBorders.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `Left`.\n * @private\n */\n get: function () {\n return this.leftPen;\n },\n set: function (value) {\n this.leftPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"right\", {\n /**\n * Gets or sets the `Right`.\n * @private\n */\n get: function () {\n return this.rightPen;\n },\n set: function (value) {\n this.rightPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"top\", {\n /**\n * Gets or sets the `Top`.\n * @private\n */\n get: function () {\n return this.topPen;\n },\n set: function (value) {\n this.topPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"bottom\", {\n /**\n * Gets or sets the `Bottom`.\n * @private\n */\n get: function () {\n return this.bottomPen;\n },\n set: function (value) {\n this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"all\", {\n /**\n * sets the `All`.\n * @private\n */\n set: function (value) {\n this.leftPen = this.rightPen = this.topPen = this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"isAll\", {\n /**\n * Gets a value indicating whether this instance `is all`.\n * @private\n */\n get: function () {\n return ((this.leftPen === this.rightPen) && (this.leftPen === this.topPen) && (this.leftPen === this.bottomPen));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders, \"default\", {\n /**\n * Gets the `default`.\n * @private\n */\n get: function () {\n return new PdfBorders();\n },\n enumerable: true,\n configurable: true\n });\n return PdfBorders;\n}());\nexport { PdfBorders };\nvar PdfPaddings = /** @class */ (function () {\n function PdfPaddings(left, right, top, bottom) {\n /**\n * The 'left' border padding set.\n * @private\n */\n this.hasLeftPad = false;\n /**\n * The 'right' border padding set.\n * @private\n */\n this.hasRightPad = false;\n /**\n * The 'top' border padding set.\n * @private\n */\n this.hasTopPad = false;\n /**\n * The 'bottom' border padding set.\n * @private\n */\n this.hasBottomPad = false;\n if (typeof left === 'undefined') {\n //5.76 and 0 are taken from ms-word default table margins.\n this.leftPad = this.rightPad = 5.76;\n //0.5 is set for top and bottom by default.\n this.bottomPad = this.topPad = 0.5;\n }\n else {\n this.leftPad = left;\n this.rightPad = right;\n this.topPad = top;\n this.bottomPad = bottom;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n }\n }\n Object.defineProperty(PdfPaddings.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `left` value of the edge\n * @private\n */\n get: function () {\n return this.leftPad;\n },\n set: function (value) {\n this.leftPad = value;\n this.hasLeftPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"right\", {\n /**\n * Gets or sets the `right` value of the edge.\n * @private\n */\n get: function () {\n return this.rightPad;\n },\n set: function (value) {\n this.rightPad = value;\n this.hasRightPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"top\", {\n /**\n * Gets or sets the `top` value of the edge\n * @private\n */\n get: function () {\n return this.topPad;\n },\n set: function (value) {\n this.topPad = value;\n this.hasTopPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom` value of the edge.\n * @private\n */\n get: function () {\n return this.bottomPad;\n },\n set: function (value) {\n this.bottomPad = value;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"all\", {\n /**\n * Sets value to all sides `left,right,top and bottom`.s\n * @private\n */\n set: function (value) {\n this.leftPad = this.rightPad = this.topPad = this.bottomPad = value;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPaddings;\n}());\nexport { PdfPaddings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfBorders, PdfPaddings } from './pdf-borders';\nimport { PdfBorderOverlapStyle } from './../../tables/light-tables/enum';\n/**\n * Base class for the `grid style`,\n */\nvar PdfGridStyleBase = /** @class */ (function () {\n function PdfGridStyleBase() {\n }\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridBackgroundBrush;\n },\n set: function (value) {\n this.gridBackgroundBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridTextBrush;\n },\n set: function (value) {\n this.gridTextBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridTextPen;\n },\n set: function (value) {\n this.gridTextPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridFont;\n },\n set: function (value) {\n this.gridFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `background Image`.\n * @private\n */\n get: function () {\n return this.gridBackgroundImage;\n },\n set: function (value) {\n this.gridBackgroundImage = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyleBase;\n}());\nexport { PdfGridStyleBase };\n/**\n * `PdfGridStyle` class provides customization of the appearance for the 'PdfGrid'.\n */\nvar PdfGridStyle = /** @class */ (function (_super) {\n __extends(PdfGridStyle, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGridStyle` class.\n * @private\n */\n function PdfGridStyle() {\n var _this = _super.call(this) || this;\n _this.gridBorderOverlapStyle = PdfBorderOverlapStyle.Overlap;\n _this.bAllowHorizontalOverflow = false;\n _this.gridHorizontalOverflowType = PdfHorizontalOverflowType.LastPage;\n return _this;\n }\n Object.defineProperty(PdfGridStyle.prototype, \"cellSpacing\", {\n //Properties\n /**\n * Gets or sets the `cell spacing` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n if (typeof this.gridCellSpacing === 'undefined') {\n this.gridCellSpacing = 0;\n }\n return this.gridCellSpacing;\n },\n set: function (value) {\n this.gridCellSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"horizontalOverflowType\", {\n /**\n * Gets or sets the type of the `horizontal overflow` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridHorizontalOverflowType;\n },\n set: function (value) {\n this.gridHorizontalOverflowType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"allowHorizontalOverflow\", {\n /**\n * Gets or sets a value indicating whether to `allow horizontal overflow`.\n * @private\n */\n get: function () {\n return this.bAllowHorizontalOverflow;\n },\n set: function (value) {\n this.bAllowHorizontalOverflow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n return this.gridCellPadding;\n },\n set: function (value) {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n this.gridCellPadding = value;\n }\n else {\n this.gridCellPadding = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"borderOverlapStyle\", {\n /**\n * Gets or sets the `border overlap style` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridBorderOverlapStyle;\n },\n set: function (value) {\n this.gridBorderOverlapStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyle;\n}(PdfGridStyleBase));\nexport { PdfGridStyle };\n/**\n * `PdfGridCellStyle` class provides customization of the appearance for the 'PdfGridCell'.\n */\nvar PdfGridCellStyle = /** @class */ (function (_super) {\n __extends(PdfGridCellStyle, _super);\n /**\n * Initializes a new instance of the `PdfGridCellStyle` class.\n * @private\n */\n function PdfGridCellStyle() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridCellBorders = PdfBorders.default;\n return _this;\n }\n Object.defineProperty(PdfGridCellStyle.prototype, \"stringFormat\", {\n //Properties\n /**\n * Gets the `string format` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"borders\", {\n /**\n * Gets or sets the `border` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridCellBorders;\n },\n set: function (value) {\n this.gridCellBorders = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n return this.gridCellPadding;\n },\n set: function (value) {\n if (this.gridCellPadding == null || typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n this.gridCellPadding = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridCellStyle;\n}(PdfGridStyleBase));\nexport { PdfGridCellStyle };\n/**\n * `PdfGridRowStyle` class provides customization of the appearance for the `PdfGridRow`.\n */\nvar PdfGridRowStyle = /** @class */ (function () {\n // public setBackgroundImage(value : PdfImage) : void {\n // this.gridRowBackgroundImage = value;\n // if (typeof this.parent !== 'undefined') {\n // for (let i : number = 0; i < this.parent.cells.count; i++) {\n // this.parent.cells.getCell(i).style.backgroundImage = value;\n // }\n // }\n // }\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowStyle` class.\n * @private\n */\n function PdfGridRowStyle() {\n //\n }\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBackgroundBrush = function (value) {\n this.gridRowBackgroundBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.backgroundBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridRowTextBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextBrush = function (value) {\n this.gridRowTextBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridRowTextPen;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextPen = function (value) {\n this.gridRowTextPen = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textPen = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridRowFont;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setFont = function (value) {\n this.gridRowFont = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.font = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"border\", {\n /**\n * Gets or sets the `border` of the current row.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBorder === 'undefined') {\n this.setBorder(new PdfBorders());\n }\n return this.gridRowBorder;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBorder = function (value) {\n this.gridRowBorder = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.borders = value;\n }\n }\n };\n /**\n * sets the `parent row` of the current object.\n * @private\n */\n PdfGridRowStyle.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundImage;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridRowStyle;\n}());\nexport { PdfGridRowStyle };\n/**\n * public Enum for `PdfHorizontalOverflowType`.\n * @private\n */\nexport var PdfHorizontalOverflowType;\n(function (PdfHorizontalOverflowType) {\n /**\n * Specifies the type of `NextPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"NextPage\"] = 0] = \"NextPage\";\n /**\n * Specifies the type of `LastPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"LastPage\"] = 1] = \"LastPage\";\n})(PdfHorizontalOverflowType || (PdfHorizontalOverflowType = {}));\n","/**\n * ElementLayouter.ts class for EJ2-PDF\n */\nimport { RectangleF } from './../../../drawing/pdf-drawing';\n/**\n * Base class for `elements lay outing`.\n * @private\n */\nvar ElementLayouter = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `ElementLayouter` class.\n * @private\n */\n function ElementLayouter(element) {\n this.layoutElement = element;\n }\n Object.defineProperty(ElementLayouter.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.layoutElement;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `element`.\n * @private\n */\n ElementLayouter.prototype.getElement = function () {\n return this.layoutElement;\n };\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n ElementLayouter.prototype.layout = function (param) {\n return this.layoutInternal(param);\n };\n ElementLayouter.prototype.Layouter = function (param) {\n return this.layoutInternal(param);\n };\n /**\n * Returns the `next page`.\n * @private\n */\n ElementLayouter.prototype.getNextPage = function (currentPage) {\n var section = currentPage.section;\n var nextPage = section.add();\n return nextPage;\n };\n ElementLayouter.prototype.getPaginateBounds = function (param) {\n if ((param == null)) {\n throw new Error('ArgumentNullException : param');\n }\n var result = param.format.usePaginateBounds ? param.format.paginateBounds\n : new RectangleF(param.bounds.x, 0, param.bounds.width, param.bounds.height);\n return result;\n };\n return ElementLayouter;\n}());\nexport { ElementLayouter };\nvar PdfLayoutFormat = /** @class */ (function () {\n function PdfLayoutFormat(baseFormat) {\n if (typeof baseFormat === 'undefined') {\n //\n }\n else {\n this.break = baseFormat.break;\n this.layout = baseFormat.layout;\n this.paginateBounds = baseFormat.paginateBounds;\n this.boundsSet = baseFormat.usePaginateBounds;\n }\n }\n Object.defineProperty(PdfLayoutFormat.prototype, \"layout\", {\n // Properties\n /**\n * Gets or sets `layout` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.layoutType === 'undefined' || this.layoutType == null) {\n // this.layoutType = PdfLayoutType.Paginate;\n // }\n return this.layoutType;\n },\n set: function (value) {\n this.layoutType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"break\", {\n /**\n * Gets or sets `break` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.breakType === 'undefined' || this.boundsSet == null) {\n // this.breakType = PdfLayoutBreakType.FitPage;\n // }\n return this.breakType;\n },\n set: function (value) {\n this.breakType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"paginateBounds\", {\n /**\n * Gets or sets the `bounds` on the next page.\n * @private\n */\n get: function () {\n if (typeof this.layoutPaginateBounds === 'undefined' && this.layoutPaginateBounds == null) {\n this.layoutPaginateBounds = new RectangleF(0, 0, 0, 0);\n }\n return this.layoutPaginateBounds;\n },\n set: function (value) {\n this.layoutPaginateBounds = value;\n this.boundsSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"usePaginateBounds\", {\n /**\n * Gets a value indicating whether [`use paginate bounds`].\n * @private\n */\n get: function () {\n // if (typeof this.boundsSet === 'undefined' || this.boundsSet == null) {\n // this.boundsSet = false;\n // }\n return this.boundsSet;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutFormat;\n}());\nexport { PdfLayoutFormat };\nvar PdfLayoutParams = /** @class */ (function () {\n function PdfLayoutParams() {\n }\n Object.defineProperty(PdfLayoutParams.prototype, \"page\", {\n // Properties\n /**\n * Gets or sets the layout `page` for the element.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"bounds\", {\n /**\n * Gets or sets layout `bounds` for the element.\n * @private\n */\n get: function () {\n return new RectangleF(this.layoutBounds.x, this.layoutBounds.y, this.layoutBounds.width, this.layoutBounds.height);\n },\n set: function (value) {\n this.layoutBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"format\", {\n /**\n * Gets or sets `layout settings` for the element.\n * @private\n */\n get: function () {\n return this.layoutFormat;\n },\n set: function (value) {\n this.layoutFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutParams;\n}());\nexport { PdfLayoutParams };\nvar PdfLayoutResult = /** @class */ (function () {\n // Constructors\n /**\n * Initializes the new instance of `PdfLayoutResult` class.\n * @private\n */\n function PdfLayoutResult(page, bounds) {\n this.pdfPage = page;\n this.layoutBounds = bounds;\n }\n Object.defineProperty(PdfLayoutResult.prototype, \"page\", {\n // Properties\n /**\n * Gets the last `page` where the element was drawn.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutResult.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of the element on the last page where it was drawn.\n * @private\n */\n get: function () {\n return this.layoutBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutResult;\n}());\nexport { PdfLayoutResult };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
\n * \n * \n *
\n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[name], rules, {});\n }\n else {\n this.rules[name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[name] && !rules) {\n delete this.rules[name];\n }\n else if (!isNullOrUndefined(this.rules[name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[name][rules[i]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formValidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n input.classList.remove(this.errorClass);\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n input.classList.remove(this.validClass);\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[name]) {\n return;\n }\n var rules = Object.keys(this.rules[name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[name][rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[name][rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[name][rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[rule] : this.defaultMessages[rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[i] : ruleValue;\n message = message.replace(formats[i], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n this.inputElement.parentNode.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[i];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n return !isNaN(new Date(option.value).getTime());\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","import { RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutParams, PdfLayoutFormat } from './base/element-layouter';\nimport { PdfBorders } from './../../structured-elements/grid/styles/pdf-borders';\n/**\n * `PdfLayoutElement` class represents the base class for all elements that can be layout on the pages.\n * @private\n */\nvar PdfLayoutElement = /** @class */ (function () {\n function PdfLayoutElement() {\n }\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseBeginPageLayout\", {\n // Property\n /**\n * Gets a value indicating whether the `start page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseEndPageLayout\", {\n /**\n * Gets a value indicating whether the `ending page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n //Event Handlers\n PdfLayoutElement.prototype.onBeginPageLayout = function (args) {\n if (this.beginPageLayout) {\n this.beginPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.onEndPageLayout = function (args) {\n if (this.endPageLayout) {\n this.endPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.drawHelper = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n return this.drawHelper(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawHelper(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n this.bEmbedFonts = arg4;\n return this.drawHelper(arg2, arg3, null);\n }\n else {\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n if (param != null) {\n var x = param.bounds.x;\n var y = param.bounds.y;\n if (param.bounds.x === 0) {\n x = PdfBorders.default.right.width / 2;\n }\n if (param.bounds.y === 0) {\n y = PdfBorders.default.top.width / 2;\n }\n var newBound = new RectangleF(x, y, param.bounds.width, param.bounds.height);\n param.bounds = newBound;\n }\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n var result = this.layout(param);\n return result;\n }\n };\n return PdfLayoutElement;\n}());\nexport { PdfLayoutElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * TextLayouter.ts class for EJ2-PDF\n */\nimport { ElementLayouter, PdfLayoutResult } from './element-layouter';\nimport { RectangleF, SizeF } from './../../../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../../fonts/string-layouter';\nimport { PdfLayoutBreakType } from './../../figures/enum';\nimport { PdfColor } from './../../pdf-color';\nimport { PdfTextWebLink } from './../../../annotations/pdf-text-web-link';\n/**\n * Class that `layouts the text`.\n * @private\n */\nvar TextLayouter = /** @class */ (function (_super) {\n __extends(TextLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `TextLayouter` class.\n * @private\n */\n function TextLayouter(element) {\n return _super.call(this, element) || this;\n }\n Object.defineProperty(TextLayouter.prototype, \"element\", {\n /**\n * Gets the layout `element`.\n * @private\n */\n get: function () {\n return _super.prototype.getElement.call(this);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n TextLayouter.prototype.layoutInternal = function (param) {\n /* tslint:disable */\n this.format = (this.element.stringFormat !== null && typeof this.element.stringFormat !== 'undefined') ? this.element.stringFormat : null;\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var text = this.element.value;\n var result = null;\n var pageResult = new TextPageLayoutResult();\n pageResult.page = currentPage;\n pageResult.remainder = text;\n for (;;) {\n pageResult = this.layoutOnPage(text, currentPage, currentBounds, param);\n result = this.getLayoutResult(pageResult);\n break;\n }\n /* tslint:enable */\n return result;\n };\n /**\n * Raises `PageLayout` event if needed.\n * @private\n */\n TextLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfTextLayoutResult(pageResult.page, pageResult.bounds, pageResult.remainder, pageResult.lastLineBounds);\n return result;\n };\n /* tslint:disable */\n /**\n * `Layouts` the text on the page.\n * @private\n */\n TextLayouter.prototype.layoutOnPage = function (text, currentPage, currentBounds, param) {\n var result = new TextPageLayoutResult();\n result.remainder = text;\n result.page = currentPage;\n currentBounds = this.checkCorrectBounds(currentPage, currentBounds);\n var layouter = new PdfStringLayouter();\n var stringResult = layouter.layout(text, this.element.font, this.format, currentBounds, currentPage.getClientSize().height, false, new SizeF(0, 0));\n var textFinished = (stringResult.remainder == null);\n var doesntFit = (param.format.break === PdfLayoutBreakType.FitElement);\n var canDraw = !(doesntFit || stringResult.empty);\n // Draw the text.\n var graphics = currentPage.graphics;\n var brush = this.element.getBrush();\n if (this.element instanceof PdfTextWebLink) {\n brush.color = new PdfColor(0, 0, 255);\n }\n graphics.drawStringLayoutResult(stringResult, this.element.font, this.element.pen, brush, currentBounds, this.format);\n var lineInfo = stringResult.lines[stringResult.lineCount - 1];\n result.lastLineBounds = graphics.getLineBounds(stringResult.lineCount - 1, stringResult, this.element.font, currentBounds, this.format);\n result.bounds = this.getTextPageBounds(currentPage, currentBounds, stringResult);\n result.remainder = stringResult.remainder;\n result.end = (textFinished);\n return result;\n };\n /* tslint:enable */\n /**\n * `Corrects current bounds` on the page.\n * @private\n */\n TextLayouter.prototype.checkCorrectBounds = function (currentPage, currentBounds) {\n var pageSize = currentPage.graphics.clientSize;\n currentBounds.height = (currentBounds.height > 0) ? currentBounds.height : pageSize.height - currentBounds.y;\n return currentBounds;\n };\n /**\n * Returns a `rectangle` where the text was printed on the page.\n * @private\n */\n /* tslint:disable */\n TextLayouter.prototype.getTextPageBounds = function (currentPage, currentBounds, stringResult) {\n var textSize = stringResult.actualSize;\n var x = currentBounds.x;\n var y = currentBounds.y;\n var width = (currentBounds.width > 0) ? currentBounds.width : textSize.width;\n var height = textSize.height;\n var shiftedRect = currentPage.graphics.checkCorrectLayoutRectangle(textSize, currentBounds.x, currentBounds.y, this.format);\n // if (currentBounds.width <= 0) {\n x = shiftedRect.x;\n // }\n var verticalShift = currentPage.graphics.getTextVerticalAlignShift(textSize.height, currentBounds.height, this.format);\n y += verticalShift;\n var bounds = new RectangleF(x, y, width, height);\n return bounds;\n };\n return TextLayouter;\n}(ElementLayouter));\nexport { TextLayouter };\nvar TextPageLayoutResult = /** @class */ (function () {\n function TextPageLayoutResult() {\n }\n return TextPageLayoutResult;\n}());\nexport { TextPageLayoutResult };\nvar PdfTextLayoutResult = /** @class */ (function (_super) {\n __extends(PdfTextLayoutResult, _super);\n // Constructors\n /**\n * Initializes the new instance of `PdfTextLayoutResult` class.\n * @private\n */\n function PdfTextLayoutResult(page, bounds, remainder, lastLineBounds) {\n var _this = _super.call(this, page, bounds) || this;\n _this.remainderText = remainder;\n _this.lastLineTextBounds = lastLineBounds;\n return _this;\n }\n Object.defineProperty(PdfTextLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets a value that contains the `text` that was not printed.\n * @private\n */\n get: function () {\n return this.remainderText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextLayoutResult.prototype, \"lastLineBounds\", {\n /**\n * Gets a value that indicates the `bounds` of the last line that was printed on the page.\n * @private\n */\n get: function () {\n return this.lastLineTextBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTextLayoutResult;\n}(PdfLayoutResult));\nexport { PdfTextLayoutResult };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfTextElement.ts class for EJ2-PDF\n */\nimport { PdfLayoutElement } from './../figures/layout-element';\nimport { PdfBrush } from './../brushes/pdf-brush';\nimport { PdfFont } from './../fonts/pdf-font';\nimport { PdfStandardFont } from './../fonts/pdf-standard-font';\nimport { PdfPen } from './../pdf-pen';\nimport { PdfLayoutParams } from './../figures/base/element-layouter';\nimport { TextLayouter } from './base/text-layouter';\nimport { PdfSolidBrush } from './../brushes/pdf-solid-brush';\nimport { PdfColor } from './../pdf-color';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutFormat } from './base/element-layouter';\nimport { PdfStringLayouter } from './../fonts/string-layouter';\nimport { PdfTextAlignment } from './../enum';\n/**\n * `PdfTextElement` class represents the text area with the ability to span several pages\n * and inherited from the 'PdfLayoutElement' class.\n * @private\n */\nvar PdfTextElement = /** @class */ (function (_super) {\n __extends(PdfTextElement, _super);\n function PdfTextElement(arg1, arg2, arg3, arg4, arg5) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * `Text` data.\n * @private\n */\n _this.content = '';\n /**\n * `Value` of text data.\n * @private\n */\n _this.elementValue = '';\n /**\n * indicate whether the drawText with PointF overload is called or not.\n * @default false\n * @private\n */\n _this.hasPointOverload = false;\n /**\n * indicate whether the PdfGridCell value is `PdfTextElement`\n * @default false\n * @private\n */\n _this.isPdfTextElement = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (typeof arg1 === 'string' && typeof arg2 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && typeof arg3 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfPen && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfBrush && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfBrush = arg3;\n }\n else {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n _this.pdfBrush = arg4;\n _this.format = arg5;\n }\n return _this;\n }\n Object.defineProperty(PdfTextElement.prototype, \"text\", {\n // Properties\n /**\n * Gets or sets a value indicating the `text` that should be printed.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.elementValue = value;\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"value\", {\n //get value\n /**\n * Gets or sets a `value` indicating the text that should be printed.\n * @private\n */\n get: function () {\n return this.elementValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"pen\", {\n //get pen\n /**\n * Gets or sets a `PdfPen` that determines the color, width, and style of the text\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n //Set pen value\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"brush\", {\n //get brush\n /**\n * Gets or sets the `PdfBrush` that will be used to draw the text with color and texture.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n //Set brush value\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"font\", {\n //get font\n /**\n * Gets or sets a `PdfFont` that defines the text format.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * //\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n if (this.pdfFont instanceof PdfStandardFont && this.content != null) {\n this.elementValue = PdfStandardFont.convert(this.content);\n }\n else {\n this.elementValue = this.content;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `PdfStringFormat` that will be used to set the string format\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets a `brush` for drawing.\n * @private\n */\n PdfTextElement.prototype.getBrush = function () {\n return (this.pdfBrush == null || typeof this.pdfBrush === 'undefined') ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.pdfBrush;\n };\n // /**\n // * `Draws` an element on the Graphics.\n // * @private\n // */\n // public drawInternal(graphics : PdfGraphics) : void {\n // graphics.drawString(this.elementValue, this.pdfFont, this.pdfPen, this.getBrush(), 0, 0, this.stringFormat);\n // }\n /**\n * `Layouts` the element.\n * @private\n */\n PdfTextElement.prototype.layout = function (param) {\n var layouter = new TextLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n PdfTextElement.prototype.drawText = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawText(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n this.hasPointOverload = true;\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawText(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n return this.drawText(arg2, arg3, null);\n }\n else {\n var layout = new PdfStringLayouter();\n if (this.hasPointOverload) {\n var stringLayoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg2.graphics.clientSize.width - arg3.x), 0), true, arg2.graphics.clientSize);\n var layoutResult = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n var previousPage = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (stringLayoutResult.lines.length > 1) {\n this.text = stringLayoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n layoutResult = this.layout(param);\n var bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, arg2.graphics.clientSize.width, stringLayoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < stringLayoutResult.lines.length; i++) {\n param.page = layoutResult.page;\n param.bounds = new RectangleF(new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n this.text = stringLayoutResult.layoutLines[i].text;\n if (bounds.y + stringLayoutResult.lineHeight > layoutResult.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (layoutResult.page.graphics.clientSize.height - layoutResult.bounds.height)) {\n bounds = new RectangleF(0, layoutResult.bounds.height, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(0, 0, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n layoutResult = this.layout(param);\n if (i !== (stringLayoutResult.lines.length - 1)) {\n bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n layoutResult = this.calculateResultBounds(layoutResult, lineWidth, layoutResult.page.graphics.clientSize.width, 0);\n }\n }\n }\n return layoutResult;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n layoutResult = this.layout(param);\n layoutResult = this.calculateResultBounds(layoutResult, lineSize.width, layoutResult.page.graphics.clientSize.width, 0);\n }\n return layoutResult;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg3.width, 0), false, arg2.graphics.clientSize);\n var result = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (layoutResult.lines.length > 1) {\n this.text = layoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n result = this.layout(param);\n var bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < layoutResult.lines.length; i++) {\n param.page = result.page;\n param.bounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n this.text = layoutResult.layoutLines[i].text;\n if (bounds.y + layoutResult.lineHeight > result.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (result.page.graphics.clientSize.height - result.bounds.height)) {\n bounds = new RectangleF(temparg3.x, layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(temparg3.x, 0, temparg3.width, layoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n result = this.layout(param);\n if (i !== (layoutResult.lines.length - 1)) {\n bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n result = this.calculateResultBounds(result, lineWidth, temparg3.width, temparg3.x);\n }\n }\n }\n return result;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n result = this.layout(param);\n result = this.calculateResultBounds(result, lineSize.width, temparg3.width, temparg3.x);\n }\n return result;\n }\n }\n }\n };\n PdfTextElement.prototype.calculateResultBounds = function (result, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth);\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n result.bounds.x = startPosition;\n result.bounds.width = maximumWidth;\n }\n else {\n result.bounds.width = startPosition;\n result.bounds.width = lineWidth;\n }\n return result;\n };\n return PdfTextElement;\n}(PdfLayoutElement));\nexport { PdfTextElement };\n","import { PdfColor } from './../graphics/pdf-color';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfDictionary, SaveAnnotationEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfString } from './../primitives/pdf-string';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfSolidBrush } from './../graphics/brushes/pdf-solid-brush';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStringFormat } from './../graphics/fonts/pdf-string-format';\nimport { PdfTextAlignment } from './../graphics/enum';\n/**\n * `PdfAnnotation` class represents the base class for annotation objects.\n * @private\n */\nvar PdfAnnotation = /** @class */ (function () {\n function PdfAnnotation(arg1) {\n // Fields\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * `Color` of the annotation\n * @private\n */\n this.pdfColor = new PdfColor(255, 255, 255);\n /**\n * `Bounds` of the annotation.\n * @private\n */\n this.rectangle = new RectangleF(0, 0, 0, 0);\n /**\n * Parent `page` of the annotation.\n * @private\n */\n this.pdfPage = null;\n /**\n * `Brush of the text` of the annotation.\n * @default new PdfSolidBrush(new PdfColor(0, 0, 0))\n * @private\n */\n this.textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n /**\n * `Font of the text` of the annotation.\n * @default new PdfStandardFont(PdfFontFamily.TimesRoman, 10)\n * @private\n */\n this.textFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 10);\n /**\n * `StringFormat of the text` of the annotation.\n * @default new PdfStringFormat(PdfTextAlignment.Left)\n * @private\n */\n this.format = new PdfStringFormat(PdfTextAlignment.Left);\n /**\n * `Text` of the annotation.\n * @private\n */\n this.content = '';\n /**\n * Internal variable to store `dictionary`.\n * @private\n */\n this.pdfDictionary = new PdfDictionary();\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n this.internalColor = new PdfColor();\n /**\n * `opacity or darkness` of the annotation.\n * @private\n * @default 1.0\n */\n this.darkness = 1.0;\n if (typeof arg1 === 'undefined') {\n this.initialize();\n }\n else {\n this.initialize();\n this.bounds = arg1;\n }\n }\n Object.defineProperty(PdfAnnotation.prototype, \"color\", {\n // Properties\n /**\n * `Color` of the annotation\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"innerColor\", {\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n get: function () {\n return this.internalColor;\n },\n set: function (value) {\n this.internalColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"bounds\", {\n /**\n * `bounds` of the annotation.\n * @private\n */\n get: function () {\n return this.rectangle;\n },\n set: function (value) {\n this.rectangle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"page\", {\n /**\n * Parent `page` of the annotation.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"font\", {\n /**\n * To specifying the `Font of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textFont;\n },\n set: function (value) {\n this.textFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"stringFormat\", {\n /**\n * To specifying the `StringFormat of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"brush\", {\n /**\n * To specifying the `Brush of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textBrush;\n },\n set: function (value) {\n this.textBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"text\", {\n /**\n * `Text` of the annotation.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n this.dictionary.items.setValue(this.dictionaryProperties.contents, new PdfString(this.content));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"dictionary\", {\n /**\n * Internal variable to store `dictionary`.\n * @hidden\n */\n get: function () {\n return this.pdfDictionary;\n },\n set: function (value) {\n this.pdfDictionary = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the annotation event handler and specifies the type of the annotation.\n * @private\n */\n PdfAnnotation.prototype.initialize = function () {\n this.pdfDictionary.annotationBeginSave = new SaveAnnotationEventHandler(this);\n this.pdfDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.annot));\n };\n /**\n * Sets related `page` of the annotation.\n * @private\n */\n PdfAnnotation.prototype.setPage = function (page) {\n this.pdfPage = page;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.p, new PdfReferenceHolder(this.pdfPage));\n };\n /**\n * Handles the `BeginSave` event of the Dictionary.\n * @private\n */\n PdfAnnotation.prototype.beginSave = function () {\n this.save();\n };\n /**\n * `Saves` an annotation.\n * @private\n */\n /* tslint:disable */\n PdfAnnotation.prototype.save = function () {\n var nativeRectangle = new RectangleF(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n var section = this.pdfPage.section;\n var initialHeight = nativeRectangle.height;\n var tempLoacation = section.pointToNativePdf(this.page, new PointF(nativeRectangle.x, nativeRectangle.y));\n nativeRectangle.x = tempLoacation.x;\n nativeRectangle.width = tempLoacation.x + nativeRectangle.width;\n nativeRectangle.y = (tempLoacation.y - this.page.document.pageSettings.margins.top);\n nativeRectangle.height = nativeRectangle.y - initialHeight;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.rect, PdfArray.fromRectangle(nativeRectangle));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(this.darkness));\n };\n Object.defineProperty(PdfAnnotation.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotation;\n}());\nexport { PdfAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfAnnotation } from './annotation';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfLinkAnnotation` class represents the ink annotation class.\n * @private\n */\nvar PdfLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfLinkAnnotation, _super);\n function PdfLinkAnnotation(rectangle) {\n return _super.call(this, rectangle) || this;\n }\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfLinkAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n };\n return PdfLinkAnnotation;\n}(PdfAnnotation));\nexport { PdfLinkAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfLinkAnnotation } from './link-annotation';\n/**\n * Represents base class for `link annotations` with associated action.\n * @private\n */\nvar PdfActionLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfActionLinkAnnotation, _super);\n // Constructors\n /**\n * Specifies the constructor for `ActionLinkAnnotation`.\n * @private\n */\n function PdfActionLinkAnnotation(rectangle) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * Internal variable to store annotation's `action`.\n * @default null\n * @private\n */\n _this.pdfAction = null;\n return _this;\n }\n //Public method\n /**\n * get and set the `action`.\n * @hidden\n */\n PdfActionLinkAnnotation.prototype.getSetAction = function (value) {\n if (typeof value === 'undefined') {\n return this.pdfAction;\n }\n else {\n this.pdfAction = value;\n }\n };\n return PdfActionLinkAnnotation;\n}(PdfLinkAnnotation));\nexport { PdfActionLinkAnnotation };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfAction` class represents base class for all action types.\n * @private\n */\nvar PdfAction = /** @class */ (function () {\n // Constructors\n /**\n * Initialize instance for `Action` class.\n * @private\n */\n function PdfAction() {\n /**\n * Specifies the Next `action` to perform.\n * @private\n */\n this.action = null;\n /**\n * Specifies the Internal variable to store `dictionary properties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // super(); -> Object()\n this.initialize();\n }\n Object.defineProperty(PdfAction.prototype, \"next\", {\n // Properties\n /**\n * Gets and Sets the `Next` action to perform.\n * @private\n */\n get: function () {\n return this.action;\n },\n set: function (value) {\n // if (this.action !== value) {\n this.action = value;\n this.dictionary.items.setValue(this.dictionaryProperties.next, new PdfReferenceHolder(this.action));\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAction.prototype, \"dictionary\", {\n /**\n * Gets and Sets the instance of PdfDictionary class for `Dictionary`.\n * @private\n */\n get: function () {\n if (typeof this.pdfDictionary === 'undefined') {\n this.pdfDictionary = new PdfDictionary();\n }\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the action type.\n * @private\n */\n PdfAction.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.action));\n };\n Object.defineProperty(PdfAction.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` as IPdfPrimitive class.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAction;\n}());\nexport { PdfAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfAction } from './action';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfUriAction` class for initialize the uri related internals.\n * @private\n */\nvar PdfUriAction = /** @class */ (function (_super) {\n __extends(PdfUriAction, _super);\n function PdfUriAction(uri) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Specifies the `uri` string.\n * @default ''.\n * @private\n */\n _this.uniformResourceIdentifier = '';\n return _this;\n }\n Object.defineProperty(PdfUriAction.prototype, \"uri\", {\n // Properties\n /**\n * Gets and Sets the value of `Uri`.\n * @private\n */\n get: function () {\n return this.uniformResourceIdentifier;\n },\n set: function (value) {\n this.uniformResourceIdentifier = value;\n this.dictionary.items.setValue(this.dictionaryProperties.uri, new PdfString(this.uniformResourceIdentifier));\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the internals.\n * @private\n */\n PdfUriAction.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.s, new PdfName(this.dictionaryProperties.uri));\n };\n return PdfUriAction;\n}(PdfAction));\nexport { PdfUriAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfActionLinkAnnotation } from './action-link-annotation';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfUriAction } from './../actions/uri-action';\n/**\n * `PdfUriAnnotation` class represents the Uri annotation.\n * @private\n */\nvar PdfUriAnnotation = /** @class */ (function (_super) {\n __extends(PdfUriAnnotation, _super);\n function PdfUriAnnotation(rectangle, uri) {\n var _this = _super.call(this, rectangle) || this;\n if (typeof uri !== 'undefined') {\n _this.uri = uri;\n }\n return _this;\n }\n Object.defineProperty(PdfUriAnnotation.prototype, \"uriAction\", {\n /**\n * Get `action` of the annotation.\n * @private\n */\n get: function () {\n if (typeof this.pdfUriAction === 'undefined') {\n this.pdfUriAction = new PdfUriAction();\n }\n return this.pdfUriAction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"uri\", {\n // Properties\n /**\n * Gets or sets the `Uri` address.\n * @private\n */\n get: function () {\n return this.uriAction.uri;\n },\n set: function (value) {\n if (this.uriAction.uri !== value) {\n this.uriAction.uri = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"action\", {\n /**\n * Gets or sets the `action`.\n * @private\n */\n get: function () {\n return this.getSetAction();\n },\n set: function (value) {\n this.getSetAction(value);\n this.uriAction.next = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfUriAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n var tempPrimitive = this.uriAction.element;\n this.dictionary.items.setValue(this.dictionaryProperties.a, this.uriAction.element);\n };\n return PdfUriAnnotation;\n}(PdfActionLinkAnnotation));\nexport { PdfUriAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPage } from './../pages/pdf-page';\nimport { PointF, RectangleF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTextElement } from './../graphics/figures/text-element';\nimport { PdfUriAnnotation } from './uri-annotation';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfFontStyle } from './../graphics/fonts/enum';\nimport { PdfTextAlignment } from './../graphics/enum';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * `PdfTextWebLink` class represents the class for text web link annotation.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * //\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextWebLink = /** @class */ (function (_super) {\n __extends(PdfTextWebLink, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfTextWebLink` class.\n * @private\n */\n function PdfTextWebLink() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store `Url`.\n * @default ''\n * @private\n */\n _this.uniformResourceLocator = '';\n /**\n * Internal variable to store `Uri Annotation` object.\n * @default null\n * @private\n */\n _this.uriAnnotation = null;\n /**\n * Checks whether the drawTextWebLink method with `PointF` overload is called or not.\n * If it set as true, then the start position of each lines excluding firest line is changed as (0, Y).\n * @private\n * @hidden\n */\n _this.recalculateBounds = false;\n _this.defaultBorder = new PdfArray();\n for (var i = 0; i < 3; i++) {\n _this.defaultBorder.add(new PdfNumber(0));\n }\n return _this;\n }\n Object.defineProperty(PdfTextWebLink.prototype, \"url\", {\n // Properties\n /**\n * Gets or sets the `Uri address`.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * //\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.uniformResourceLocator;\n },\n set: function (value) {\n if (value.length === 0) {\n throw new Error('ArgumentException : Url - string can not be empty');\n }\n this.uniformResourceLocator = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfTextWebLink.prototype.draw = function (arg1, arg2) {\n if (arg1 instanceof PdfPage) {\n var layout = new PdfStringLayouter();\n var previousFontStyle = this.font.style;\n if (arg2 instanceof PointF) {\n this.recalculateBounds = true;\n this.font.style = PdfFontStyle.Underline;\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg1.graphics.clientSize.width - arg2.x), 0), true, arg1.graphics.clientSize);\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(arg2, textSize);\n rect = this.calculateBounds(rect, textSize.width, arg1.graphics.clientSize.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var result = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n else {\n var result = this.drawMultipleLineWithPoint(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg2.width, 0), false, new SizeF(0, 0));\n this.font.style = PdfFontStyle.Underline;\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(new PointF(arg2.x, arg2.y), textSize);\n rect = this.calculateBounds(rect, textSize.width, arg2.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var returnValue = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n else {\n var returnValue = this.drawMultipleLineWithBounds(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n }\n }\n else {\n var page = new PdfPage();\n page = arg1.page;\n return this.draw(page, arg2);\n }\n };\n /* tslint:enable */\n //Private methods\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified location.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithPoint = function (result, page, location) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var bounds = new RectangleF(location, size);\n if (i !== 0) {\n bounds.x = 0;\n }\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(0, 0, page.graphics.clientSize.width, size.height);\n location.y = 0;\n }\n else {\n break;\n }\n }\n bounds = this.calculateBounds(bounds, size.width, page.graphics.clientSize.width, bounds.x);\n this.uriAnnotation = new PdfUriAnnotation(bounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n if (i !== 0) {\n layoutResult = this.drawText(page, new PointF(0, bounds.y));\n }\n else {\n layoutResult = this.drawText(page, bounds.x, bounds.y);\n }\n location.y += size.height;\n }\n return layoutResult;\n };\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified bounds.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithBounds = function (result, page, bounds) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var internalBounds = new RectangleF(new PointF(bounds.x, bounds.y), size);\n internalBounds = this.calculateBounds(internalBounds, size.width, bounds.width, bounds.x);\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(bounds.x, 0, bounds.width, size.height);\n internalBounds.y = 0;\n }\n else {\n break;\n }\n }\n this.uriAnnotation = new PdfUriAnnotation(internalBounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n layoutResult = this.drawText(page, bounds);\n bounds.y += size.height;\n }\n return layoutResult;\n };\n /* tslint:disable */\n PdfTextWebLink.prototype.calculateBounds = function (currentBounds, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth);\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n currentBounds.x = startPosition;\n currentBounds.width = maximumWidth;\n }\n else {\n currentBounds.width = startPosition;\n currentBounds.width = lineWidth;\n }\n return currentBounds;\n };\n return PdfTextWebLink;\n}(PdfTextElement));\nexport { PdfTextWebLink };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfGrid } from '../pdf-grid';\nimport { PdfStringFormat } from './../../../graphics/fonts/pdf-string-format';\nimport { SizeF, RectangleF, PointF } from './../../../drawing/pdf-drawing';\nimport { PdfBorders } from '../styles/pdf-borders';\nimport { PdfLayoutType, PdfLayoutBreakType } from './../../../graphics/figures/enum';\nimport { PdfLayoutResult, PdfLayoutFormat, ElementLayouter } from './../../../graphics/figures/base/element-layouter';\nimport { PdfHorizontalOverflowType } from '../styles/style';\nimport { TemporaryDictionary } from './../../../collections/object-object-pair/dictionary';\n/**\n * Class `lay outing the text`.\n *\n */\nvar PdfGridLayouter = /** @class */ (function (_super) {\n __extends(PdfGridLayouter, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGridLayouter(baseFormat) {\n var _this = _super.call(this, baseFormat) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridInitialWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n _this.childheight = 0;\n /**\n * Check weather it is `child grid or not`.\n * @private\n */\n _this.isChildGrid = false;\n /**\n * @hidden\n * @private\n */\n _this.hasRowSpanSpan = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.flag = true;\n /**\n * @hidden\n * @private\n */\n _this.columnRanges = [];\n /**\n * @hidden\n * @private\n */\n _this.currentLocation = new PointF(0, 0);\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n _this.isOverloadWithPosition = false;\n return _this;\n }\n Object.defineProperty(PdfGridLayouter.prototype, \"Grid\", {\n //Properties\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n //Public methods\n /**\n * `Layouts` the text.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /*public layout(graphics : PdfLayoutParams) : PdfLayoutResult\n public layout(graphics : PdfGraphics, bounds : RectangleF) : void\n public layout(graphics : PdfGraphics, bounds : PointF) : void\n public layout(graphics ?: PdfGraphics | PdfLayoutParams, bounds ?: PointF | RectangleF) : void | PdfLayoutResult {\n if (graphics instanceof PdfGraphics) {\n if (bounds instanceof PointF) {\n if (bounds.x === 0) {\n bounds.x = PdfBorders.default.right.width / 2;\n }\n if (bounds.y === 0) {\n bounds.y = PdfBorders.default.top.width / 2;\n }\n let boundaries : RectangleF = new RectangleF(bounds, new SizeF(0, 0));\n this.layout(graphics, boundaries);\n } else {\n let width : number = graphics.clientSize.width;\n let parameter : PdfLayoutParams = new PdfLayoutParams();\n parameter.bounds = bounds;\n this.currentGraphics = graphics;\n if (graphics.layer != null) {\n let index : number = 0;\n if (this.currentGraphics.page instanceof PdfPage) {\n index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n } else {\n index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n }\n } else {\n this.layoutInternal(parameter);\n }\n }\n }\n }*/\n /**\n * Gets the `format`.\n * @private\n */\n PdfGridLayouter.prototype.getFormat = function (format) {\n var f = format;\n return f;\n };\n /**\n * `Layouts` the element.\n * @private\n */\n PdfGridLayouter.prototype.layoutInternal = function (param) {\n var format = this.getFormat(param.format);\n this.gridLayoutFormat = this.getFormat(param.format);\n this.currentPage = param.page;\n if (this.currentPage !== null) {\n var pageHeight = this.currentPage.getClientSize().height;\n var pageWidth = this.currentPage.getClientSize().width;\n this.currentPageBounds = this.currentPage.getClientSize();\n }\n else {\n throw Error('Can not set page as null');\n //this.currentPageBounds = this.currentGraphics.clientSize;\n }\n this.currentGraphics = this.currentPage.graphics;\n //this.currentGraphics = (this.currentPage != null ) ? this.currentPage.graphics : this.currentGraphics;\n // if (this.currentGraphics.layer !== null) {\n // let index : number = 0;\n // if (this.currentGraphics.page instanceof PdfPage) {\n // index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n // } else {\n // index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n // }\n // this.listOfNavigatePages.push(index);\n // }\n var index = 0;\n index = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n this.listOfNavigatePages.push(index);\n if (format != null && format.break === PdfLayoutBreakType.FitColumnsToPage) {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), new SizeF(this.Grid.columns.width, this.currentGraphics.clientSize.height));\n }\n else {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n }\n //this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n if (this.Grid.rows.count !== 0) {\n this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width :\n (this.currentBounds.width - this.Grid.rows.getRow(0).cells.getCell(0).style.borders.left.width / 2);\n }\n else if (this.Grid.headers.count !== 0) {\n // this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width : (this.currentBounds.width -\n // this.Grid.headers.getHeader(0).cells.getCell(0).style.borders.left.width / 2);\n this.currentBounds.width = param.bounds.width;\n }\n else {\n throw Error('Please add row or header into grid');\n }\n this.startLocation = new PointF(param.bounds.x, param.bounds.y);\n // if (this.Grid.style.allowHorizontalOverflow && this.currentBounds.width > this.currentGraphics.clientSize.width) {\n // this.currentBounds.width = this.currentGraphics.clientSize.width;\n // this.currentBounds.width -= this.currentBounds.x;\n // }\n // if (this.Grid.isChildGrid) {\n // this.childheight = param.bounds.height;\n // }\n // if (param.format !== null && param.format.usePaginateBounds) {\n // if (param.format.paginateBounds.height > 0) {\n // this.currentBounds.height = param.format.paginateBounds.height;\n // }\n //} else \n if (param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (!this.Grid.isChildGrid) {\n this.hType = this.Grid.style.horizontalOverflowType;\n }\n if (!this.Grid.style.allowHorizontalOverflow) {\n this.columnRanges = [];\n this.Grid.measureColumnsWidth(this.currentBounds);\n this.columnRanges.push([0, this.Grid.columns.count - 1]);\n }\n else {\n this.Grid.measureColumnsWidth();\n this.determineColumnDrawRanges();\n }\n if (this.Grid.hasRowSpanSpan) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n if (this.Grid.rows.getRow(i).height !== -1 && !this.Grid.rows.getRow(i).isRowHeightSet) {\n this.Grid.rows.getRow(i).isRowHeightSet = true;\n }\n }\n }\n var result = this.layoutOnPage(param);\n return result;\n };\n // /* tslint:enable */\n /**\n * `Determines the column draw ranges`.\n * @private\n */\n PdfGridLayouter.prototype.determineColumnDrawRanges = function () {\n var startColumn = 0;\n var endColumn = 0;\n var cellWidths = 0;\n var availableWidth = this.currentGraphics.clientSize.width - this.currentBounds.x;\n for (var i = 0; i < this.Grid.columns.count; i++) {\n cellWidths += this.Grid.columns.getColumn(i).width;\n if (cellWidths >= availableWidth) {\n var subWidths = 0;\n for (var j = startColumn; j <= i; j++) {\n subWidths += this.Grid.columns.getColumn(j).width;\n if (subWidths > availableWidth) {\n break;\n }\n endColumn = j;\n }\n this.columnRanges.push([startColumn, endColumn]);\n startColumn = endColumn + 1;\n endColumn = startColumn;\n cellWidths = (endColumn <= i) ? this.Grid.columns.getColumn(i).width : 0;\n }\n }\n // if (startColumn !== this.columns.Count) {\n this.columnRanges.push([startColumn, this.Grid.columns.count - 1]);\n // }\n };\n /**\n * `Layouts the on page`.\n * @private\n */\n PdfGridLayouter.prototype.layoutOnPage = function (param) {\n /* tslint:disable */\n this.pageBounds.x = param.bounds.x;\n this.pageBounds.y = param.bounds.y;\n this.pageBounds.height = param.bounds.height;\n var format = this.getFormat(param.format);\n var endArgs = null;\n var result = null;\n var layoutedPages = new TemporaryDictionary();\n var startPage = param.page;\n var isParentCell = false;\n var cellBounds = [];\n for (var index = 0; index < this.columnRanges.length; index++) {\n var range = this.columnRanges[index];\n this.cellStartIndex = range[0];\n this.cellEndIndex = range[1];\n var returnObject = this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex);\n this.currentBounds = returnObject.currentBounds;\n this.currentRowIndex = returnObject.currentRowIndex;\n // if (returnObject.returnValue) {\n // result = new PdfGridLayoutResult(this.currentPage, this.currentBounds);\n // break;\n // }\n //Draw Headers.\n var drawHeader = void 0;\n for (var i_1 = 0; i_1 < this.Grid.headers.count; i_1++) {\n var row = this.Grid.headers.getHeader(i_1);\n var headerHeight = this.currentBounds.y;\n // RowLayoutResult\n var headerResult = this.drawRow(row);\n // if (headerHeight === this.currentBounds.y) {\n // drawHeader = true;\n // if (PdfGrid.repeatRowIndex === -1) {\n // PdfGrid.repeatRowIndex = this.rows.getRow.indexOf(row);\n // }\n // } else {\n drawHeader = false;\n // }\n }\n var i = 0;\n var length_1 = this.Grid.rows.count;\n var repeatRow = void 0;\n var startingHeight = 0;\n var flag = true;\n //Here is to draw parent Grid and Cells\n cellBounds = [];\n //Draw row by row with the specified cell range.\n for (var j = 0; j < this.Grid.rows.count; j++) {\n var row = this.Grid.rows.getRow(j);\n i++;\n this.currentRowIndex = i - 1;\n var originalHeight = this.currentBounds.y;\n startPage = this.currentPage;\n PdfGridLayouter.repeatRowIndex = -1;\n if (flag && row.grid.isChildGrid) {\n startingHeight = originalHeight;\n flag = false;\n }\n var rowResult = null;\n ///rowResult = this.drawRow(row);\n /*if(!row.isrowFinish) {\n if(!row.grid.isgridSplit){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n } else {\n if(!row.isrowDraw){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n row.grid.isgridSplit = false;\n } else {\n rowResult = null;\n break;\n }\n }\n }\n else {\n //row.isrowFinish = false;\n //rowResult = this.drawRow(row);\n rowResult = null;\n break;\n \n } */\n if (this.Grid.splitChildRowIndex == -1) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else {\n if (row.grid.ParentCell.row.grid.isGridSplit && this.Grid.splitChildRowIndex <= row.rowIndex) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else if (row.isrowFinish) {\n continue;\n }\n else {\n break;\n }\n }\n //rowResult = this.drawRow(row);\n cellBounds.push(rowResult.bounds.width);\n /*if (row.isRowBreaksNextPage)\n {\n let x : number = 0;\n for (let l : number = 0; l < row.cells.count; l++)\n {\n let isNestedRowBreak : boolean = false;\n if (row.height == row.cells.getCell(l).height)\n {\n let n : number;\n let grid : PdfGrid = row.cells.getCell(l).value as PdfGrid;\n for (let m : number = grid.rows.count; 0 < m; m--)\n {\n if ((grid.rows.getRow(m - 1).rowBreakHeight > 0))\n {\n isNestedRowBreak = true;\n break;\n }\n if (grid.rows.getRow(m - 1).isRowBreaksNextPage)\n {\n row.rowBreakHeightValue = grid.rows.getRow(m - 1).rowBreakHeightValue;\n break;\n }\n row.rowBreakHeightValue += grid.rows.getRow(m - 1).height;\n }\n }\n if (isNestedRowBreak)\n break;\n }\n for (let j : number = 0; j < row.cells.count; j++)\n {\n\n if (row.height > row.cells.getCell(j).height)\n {\n row.cells.getCell(j).value = \" \";\n let rect : RectangleF ;\n let page : PdfPage = this.getNextPage(this.currentPage);\n let section : PdfSection = this.currentPage.section;\n let index : number = section.indexOf(page);\n for (let k : number = 0; k < (section.count - 1) - index; k++)\n {\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, page.getClientSize().height);\n PdfGridLayouter.repeatRowIndex = -1;\n row.cells.getCell(j).draw(page.graphics, rect, false);\n page = this.getNextPage(page);\n }\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, row.rowBreakHeightValue);\n\n row.cells.getCell(j).draw(page.graphics, rect, false);\n }\n x += row.grid.columns.getColumn(j).width;\n }\n }*/\n //if height remains same, it is understood that row is not drawn in the page\n if (originalHeight === this.currentBounds.y) {\n repeatRow = true;\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n else {\n repeatRow = false;\n PdfGridLayouter.repeatRowIndex = -1;\n }\n while (!rowResult.isFinish && startPage != null) {\n var tempResult = this.getLayoutResult();\n /*if (startPage != this.currentPage)\n {\n if (row.grid.isChildGrid && row.grid.ParentCell != null)\n {\n let bounds : RectangleF= new RectangleF(new PointF(format.paginateBounds.x,format.paginateBounds.y), new SizeF(param.bounds.width, tempResult.bounds.height));\n bounds.x += param.bounds.x;\n if (row.grid.ParentCell.row.grid.style.cellPadding != null)\n {\n bounds.y += row.grid.ParentCell.row.grid.style.cellPadding.top;\n if (bounds.height > this.currentPageBounds.height)\n {\n bounds.height = this.currentPageBounds.height - bounds.y;\n bounds.height -= (row.grid.ParentCell.row.grid.style.cellPadding.bottom);\n }\n }\n // Draw border for cells in the nested grid cell's row.\n for (let c : number = 0; c < row.cells.count; c++)\n {\n let cell : PdfGridCell = row.cells.getCell(c);\n let cellWidth : number= 0;\n if (cell.columnSpan > 1)\n {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(cell.width, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(this.currentGraphics, new RectangleF(new PointF(bounds.x,bounds.y), new SizeF(cellWidth, bounds.height)));\n bounds.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n }\n */\n endArgs = this.raisePageLayouted(tempResult);\n if (endArgs.cancel || repeatRow)\n break;\n else if (this.Grid.allowRowBreakAcrossPages) {\n //If there is no space in the current page, add new page and then draw the remaining row.\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n var location_1 = new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n if ((format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 &&\n format.paginateBounds.height === 0) && (this.startLocation.x === location_1.x && this.startLocation.y === location_1.y)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n }\n if (this.Grid.isChildGrid && row.grid.ParentCell != null) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n if (row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top < this.currentBounds.height) {\n this.currentBounds.y = this.Grid.ParentCell.row.grid.style.cellPadding.top;\n }\n }\n }\n if (row.grid.ParentCell != null) {\n row.grid.ParentCell.row.isRowBreaksNextPage = true;\n row.grid.ParentCell.row.rowBreakHeightValue = row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top + this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n for (var i_2 = row.rowIndex + 1; i_2 < row.grid.rows.count; i_2++) {\n row.grid.ParentCell.row.rowBreakHeightValue += row.grid.rows.getRow(i_2).height;\n }\n //row.rowBreakHeight = row.grid.ParentCell.row.rowBreakHeightValue;\n }\n /*if (row.noOfPageCount > 1)\n {\n let temp : number = row.rowBreakHeightValue;\n for (let j : number = 1; j < row.noOfPageCount; j++)\n {\n row.rowBreakHeightValue = 0;\n row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n this.currentPage = this.getNextPageformat(format);\n startPage = this.currentPage;\n }\n row.rowBreakHeightValue = temp;\n row.noOfPageCount = 1;\n rowResult = this.drawRow(row);\n } else {\n rowResult = this.drawRow(row);\n }\n /*if(row.grid.isChildGrid){\n row.isrowFinish = false;\n row.isrowDraw = false;\n row.grid.isgridSplit = true;\n row.grid.ParentCell.row.grid.isgridSplit = true;\n //rowResult.isFinish = false;\n break;\n }*/\n if (row.grid.isChildGrid) {\n //row.grid.isgridSplit = true;\n row.isrowFinish = false;\n //row.grid.ParentCell.row.grid.isgridSplit = true;\n row.grid.splitChildRowIndex = row.rowIndex;\n row.grid.ParentCell.row.grid.splitChildRowIndex = row.grid.ParentCell.row.rowIndex;\n if (row.grid.ParentCell.row.grid.isGridSplit) {\n row.grid.ParentCell.row.noOfPageCount += 1;\n row.grid.ParentCell.row.grid.isGridSplit = false;\n }\n break;\n }\n if (row.noOfPageCount < 1) {\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n if (row.style.border != null && ((row.style.border.left != null && row.style.border.left.width !== 1)\n || (row.style.border.top != null && row.style.border.top.width !== 1))) {\n var x = row.style.border.left.width / 2;\n var y = row.style.border.top.width / 2;\n if (this.currentBounds.x === PdfBorders.default.right.width / 2 && this.currentBounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.currentBounds.width, this.currentBounds.height);\n this.currentBounds = newBound;\n }\n }\n if (this.Grid.repeatHeader) {\n for (var j_1 = 0; j_1 < this.Grid.headers.count; j_1++) {\n var headerRepeat = this.Grid.headers.getHeader(j_1);\n this.drawRow(headerRepeat);\n }\n }\n rowResult = this.drawRow(row);\n if (row.noOfPageCount >= 1) {\n var temp = row.rowBreakHeightValue;\n for (var j_2 = 0; j_2 < row.noOfPageCount; j_2++) {\n //this.currentPage.section.add();\n var tempResult1 = this.getLayoutResult();\n endArgs = this.raisePageLayouted(tempResult1);\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n //row.rowBreakHeightValue = 0;\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n this.currentBounds.y = 0.5;\n if (this.Grid.repeatHeader) {\n for (var i_3 = 0; i_3 < this.Grid.headers.count; i_3++) {\n var header = this.Grid.headers.getHeader(i_3);\n this.drawRow(header);\n }\n }\n //row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n }\n // row.rowBreakHeight = temp;\n // row.noOfPageCount = 1;\n // rowResult = this.drawRow(row);\n }\n row.grid.splitChildRowIndex = -1;\n row.grid.isGridSplit = false;\n rowResult.isFinish = true;\n //row.NestedGridLayoutResult.bounds.height = row.rowBreakHeightValue;\n //this.currentBounds.y = rowResult.bounds.y;\n for (var i_4 = 0; i_4 < row.cells.count; i_4++) {\n if (row.cells.getCell(i_4).value instanceof PdfGrid) {\n row.cells.getCell(i_4).value.splitChildRowIndex = -1;\n }\n }\n }\n }\n // else if (!this.Grid.allowRowBreakAcrossPages && i < length)\n // {\n // this.currentPage = this.getNextPageformat(format);\n // break;\n // }\n // else if (i >= length)\n // break;\n }\n if (!rowResult.isFinish && startPage !== null && format.layout !== PdfLayoutType.OnePage && repeatRow) {\n // During pagination, cell position is maintained here.\n this.startLocation.x = this.currentBounds.x;\n var isAddNextPage = false;\n this.currentPage = this.getNextPageformat(format);\n /*if (!this.Grid.isSingleGrid)\n {\n for ( let j : number= 0; j < this.Grid.rows.count; j++)\n {\n let isWidthGreaterthanParent : boolean = false;\n for (let k : number = 0; k < this.Grid.rows.getRow(j).cells.count; k++)\n {\n if (this.Grid.rows.getRow(j).cells.getCell(k).width > this.currentPageBounds.width)\n isWidthGreaterthanParent = true;\n }\n if (isWidthGreaterthanParent && this.Grid.rows.getRow(j).cells.getCell(this.rowBreakPageHeightCellIndex).pageCount > 0)\n {\n isAddNextPage = true;\n }\n }\n }\n if (!this.Grid.isRearranged && isAddNextPage)\n {\n let section : PdfSection = this.currentPage.section;\n \n //this.currentPage = section.add();\n \n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0,0), this.currentPage.getClientSize());\n \n let pageindex : number = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n }\n else\n {\n this.currentPage = this.getNextPageformat(format);\n }\n if (format.paginateBounds.y == 0)\n this.currentBounds.y = PdfBorders.default.top.width/2;\n else\n {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n \n }\n if (this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex))\n break;*/\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.y > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.y = param.bounds.y;\n }\n this.startLocation.y = this.currentBounds.y;\n if ((format.paginateBounds.x === format.paginateBounds.y) &&\n (format.paginateBounds.y === format.paginateBounds.height) &&\n (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n }\n if (this.currentBounds.x === PdfBorders.default.left.width / 2) {\n this.currentBounds.y += this.startLocation.x;\n }\n if (this.Grid.repeatHeader) {\n for (var i_5 = 0; i_5 < this.Grid.headers.count; i_5++) {\n var header = this.Grid.headers.getHeader(i_5);\n this.drawRow(header);\n }\n }\n this.drawRow(row);\n if (this.currentPage !== null && !layoutedPages.containsKey(this.currentPage)) {\n layoutedPages.add(this.currentPage, range);\n }\n }\n if (row.NestedGridLayoutResult != null) {\n // Position for next row in the grid.\n this.currentPage = row.NestedGridLayoutResult.page;\n this.currentGraphics = this.currentPage.graphics; //If not, next row will not be drawn in the layouted page.\n this.startLocation = new PointF(row.NestedGridLayoutResult.bounds.x, row.NestedGridLayoutResult.bounds.y);\n var recalHeight = this.ReCalculateHeight(row, row.NestedGridLayoutResult.bounds.height);\n this.currentBounds.y = recalHeight;\n //this.currentBounds.y = row.NestedGridLayoutResult.bounds.height;\n if (startPage != this.currentPage) {\n var secion = this.currentPage.section;\n var startIndex = secion.indexOf(startPage) + 1;\n var endIndex = secion.indexOf(this.currentPage);\n for (var page = startIndex; page < endIndex + 1; page++) {\n var pageGraphics = this.currentPage.graphics;\n var location_2 = new PointF(format.paginateBounds.x, format.paginateBounds.y);\n var height = page == endIndex ? (row.NestedGridLayoutResult.bounds.height - param.bounds.y) :\n (this.currentBounds.height - location_2.y);\n if (height <= pageGraphics.clientSize.height)\n height += param.bounds.y;\n // if (row.grid.isChildGrid && row.grid.ParentCell != null)\n // location.x += param.bounds.x;\n location_2.y = format == null ? 0.5 : format.paginateBounds.y;\n // Draw border for last paginated row containing nested grid.\n for (var c = 0; c < row.cells.count; c++) {\n var cell = row.cells.getCell(c);\n var cellWidth = 0;\n var totalwidth = 0;\n if (cell.value instanceof PdfGrid) {\n for (var i_6 = 0; i_6 < cell.value.columns.count; i_6++) {\n totalwidth += cell.value.columns.getColumn(i_6).columnWidth;\n }\n }\n else {\n totalwidth = cell.width;\n }\n // if (cell.columnSpan > 1)\n // {\n // for (; c < cell.columnSpan; c++)\n // cellWidth += row.grid.columns.getColumn(c).width;\n // }\n // else\n cellWidth = Math.max(totalwidth, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(cellWidth, height)));\n location_2.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n // So, nested grid drawing is completed for the current row. Update page.\n // Otherwise, the next nested grid of the parent will draw borders from start.\n startPage = this.currentPage;\n }\n }\n }\n var isPdfGrid = false;\n var maximumCellBoundsWidth = 0;\n if (cellBounds.length > 0) {\n maximumCellBoundsWidth = cellBounds[0];\n }\n var largeNavigatePage = [[1, 2]];\n for (var c = 0; c < this.Grid.rows.count; c++) {\n if (this.cellEndIndex != -1 && this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value instanceof PdfGrid) {\n var grid = this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value;\n this.rowLayoutBoundsWidth = grid.rowLayoutBoundsWidth;\n isPdfGrid = true;\n // if (largeNavigatePage[0][0] < grid.listOfNavigatePages.length)\n // {\n // largeNavigatePage[0][0] = grid.listOfNavigatePages.length;\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n // else if ((largeNavigatePage[0][0] == grid.listOfNavigatePages.length) && (largeNavigatePage[0][1] < cellBounds[c]))\n // {\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n }\n }\n if (!isPdfGrid && cellBounds.length > 0) {\n for (var c = 0; c < i - 1; c++) {\n if (maximumCellBoundsWidth < cellBounds[c]) {\n maximumCellBoundsWidth = cellBounds[c];\n }\n }\n this.rowLayoutBoundsWidth = maximumCellBoundsWidth;\n }\n else {\n this.rowLayoutBoundsWidth = largeNavigatePage[0][1];\n }\n if (this.columnRanges.indexOf(range) < this.columnRanges.length - 1\n && startPage != null && format.layout != PdfLayoutType.OnePage) {\n isParentCell = this.Grid.isChildGrid;\n if (largeNavigatePage[0][0] != 0) {\n var section = this.currentPage.section;\n var pageIndex = section.indexOf(this.currentPage);\n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0, 0), this.currentPage.getClientSize());\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n }\n else {\n this.currentPage = this.getNextPageformat(format);\n }\n // let locationGrid : PointF= new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n // if (format.paginateBounds == new RectangleF(0,0,0,0) && this.startLocation == locationGrid)\n // {\n // this.currentBounds.x += this.startLocation.x;\n // this.currentBounds.y += this.startLocation.y;\n // }\n }\n if (this.columnRanges.length - 1 !== index && this.columnRanges.length > 1 && format.layout !== PdfLayoutType.OnePage) {\n this.currentPage = this.getNextPageformat(format);\n if ((format.paginateBounds.x === format.paginateBounds.y) && (format.paginateBounds.y === format.paginateBounds.height)\n && (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n //this.currentBounds.height = this.pageBounds.height;\n }\n }\n }\n result = this.getLayoutResult();\n if (this.Grid.style.allowHorizontalOverflow && this.Grid.style.horizontalOverflowType == PdfHorizontalOverflowType.NextPage) {\n this.reArrangePages(layoutedPages);\n }\n this.raisePageLayouted(result);\n return result;\n };\n /* tslint:enable */\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGridLayouter.prototype.getNextPageformat = function (format) {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n this.flag = false;\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n this.currentGraphics = nextPage.graphics;\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n if (!(this.listOfNavigatePages.indexOf(pageindex) !== -1)) {\n this.listOfNavigatePages.push(pageindex);\n }\n this.currentBounds = new RectangleF(new PointF(0, 0), nextPage.getClientSize());\n // if ((format.paginateBounds.x !== format.paginateBounds.y) && (format.paginateBounds.y !== format.paginateBounds.height)\n // && (format.paginateBounds.height !== format.paginateBounds.width) && (format.paginateBounds.width !== 0)) {\n // this.currentBounds.x = format.paginateBounds.x;\n // this.currentBounds.y = format.paginateBounds.y;\n // this.currentBounds.height = format.paginateBounds.height;\n // }\n return nextPage;\n };\n PdfGridLayouter.prototype.CheckIfDefaultFormat = function (format) {\n var defaultFormat = new PdfStringFormat();\n return (format.alignment === defaultFormat.alignment && format.characterSpacing === defaultFormat.characterSpacing &&\n format.clipPath === defaultFormat.clipPath && format.firstLineIndent === defaultFormat.firstLineIndent &&\n format.horizontalScalingFactor === defaultFormat.horizontalScalingFactor &&\n format.lineAlignment === defaultFormat.lineAlignment\n && format.lineLimit === defaultFormat.lineLimit && format.lineSpacing === defaultFormat.lineSpacing &&\n format.measureTrailingSpaces === defaultFormat.measureTrailingSpaces && format.noClip === defaultFormat.noClip &&\n format.paragraphIndent === defaultFormat.paragraphIndent && format.rightToLeft === defaultFormat.rightToLeft &&\n format.subSuperScript === defaultFormat.subSuperScript && format.wordSpacing === defaultFormat.wordSpacing &&\n format.wordWrap === defaultFormat.wordWrap);\n };\n /**\n * `Raises BeforeCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.RaiseBeforeCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, style) {\n var args = null;\n if (this.Grid.raiseBeginCellDraw) {\n args = new PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style);\n this.Grid.onBeginCellDraw(args);\n style = args.style;\n }\n return style;\n };\n /**\n * `Raises AfterCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseAfterCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, cellstyle) {\n var args = null;\n if (this.Grid.raiseEndCellDraw) {\n args = new PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, cellstyle);\n this.Grid.onEndCellDraw(args);\n }\n };\n PdfGridLayouter.prototype.reArrangePages = function (layoutedPages) {\n var document = this.currentPage.document;\n var pages = [];\n var keys = layoutedPages.keys();\n var values = layoutedPages.values();\n for (var i = 0; i < keys.length; i++) {\n var page = keys[i];\n page.section = null;\n pages.push(page);\n document.pages.remove(page);\n }\n /* tslint:disable */\n for (var i = 0; i < layoutedPages.size(); i++) {\n var count = 0;\n for (var j = i, count_1 = (layoutedPages.size() / this.columnRanges.length); j < layoutedPages.size(); j += count_1) {\n var page = pages[j];\n if (document.pages.indexOf(page) === -1) {\n document.pages.add(page);\n }\n }\n }\n /* tslint:enable */\n };\n /**\n * Gets the `layout result`.\n * @private\n */\n PdfGridLayouter.prototype.getLayoutResult = function () {\n if (this.Grid.isChildGrid && this.Grid.allowRowBreakAcrossPages) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n var row = this.Grid.rows.getRow(i);\n if (row.rowBreakHeight > 0 && row.repeatFlag) {\n this.startLocation.y = this.currentPage.origin.y;\n }\n }\n }\n var bounds;\n if (!this.isChanged) {\n bounds = new RectangleF(this.startLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n this.startLocation.y));\n }\n // else {\n // bounds = new RectangleF(this.currentLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n // this.currentLocation.y));\n // }\n /* tslint:enable */\n return new PdfGridLayoutResult(this.currentPage, bounds);\n };\n /**\n * `Recalculate row height` for the split cell to be drawn.\n * @private\n */\n PdfGridLayouter.prototype.ReCalculateHeight = function (row, height) {\n var newHeight = 0.0;\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n if (!(row.cells.getCell(i).remainingString === null || row.cells.getCell(i).remainingString === '' ||\n typeof row.cells.getCell(i).remainingString === 'undefined')) {\n newHeight = Math.max(newHeight, row.cells.getCell(i).measureHeight());\n }\n }\n return Math.max(height, newHeight);\n };\n /**\n * `Raises BeforePageLayout event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds, currentRow) {\n var cancel = false;\n if (this.Grid.raiseBeginPageLayout) {\n var args = new PdfGridBeginPageLayoutEventArgs(currentBounds, currentPage, currentRow);\n this.Grid.onBeginPageLayout(args);\n // if (currentBounds !== args.Bounds) {\n // this.isChanged = true;\n // this.currentLocation = new PointF(args.Bounds.x, args.Bounds.y);\n // this.measureColumnsWidth(new RectangleF(new PointF(args.Bounds.x, args.Bounds.y) ,\n // new SizeF(args.Bounds.width + args.Bounds.x ,\n // args.Bounds.height)));\n // }\n cancel = args.cancel;\n currentBounds = args.bounds;\n currentRow = args.startRowIndex;\n }\n return { returnValue: cancel, currentBounds: currentBounds, currentRowIndex: currentRow };\n };\n /**\n * `Raises PageLayout event` if needed.\n * @private\n */\n PdfGridLayouter.prototype.raisePageLayouted = function (result) {\n var args = new PdfGridEndPageLayoutEventArgs(result);\n if (this.Grid.raiseEndPageLayout) {\n this.Grid.onEndPageLayout(args);\n }\n return args;\n };\n PdfGridLayouter.prototype.drawRow = function (row, result, height) {\n if (typeof result === 'undefined') {\n //.. Check if required space available.\n //.....If the row conains spans which falls through more than one page, then draw the row to next page. \n var result_1 = new RowLayoutResult();\n var rowHeightWithSpan = 0;\n var location_3 = new PointF(0, 0);\n var size = new SizeF(0, 0);\n var isHeader = false;\n if (row.rowSpanExists) {\n var maxSpan = 0;\n var currRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n if (currRowIndex === -1) {\n currRowIndex = this.Grid.headers.indexOf(row);\n if (currRowIndex !== -1) {\n isHeader = true;\n }\n }\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n }\n for (var i = currRowIndex; i < currRowIndex + maxSpan; i++) {\n rowHeightWithSpan += (isHeader ? this.Grid.headers.getHeader(i).height : this.Grid.rows.getRow(i).height);\n }\n // let rowMaxHeight : number = rowHeightWithSpan;\n // for (let i : number = 0; i < row.cells.count; i++ ) {\n // rowMaxHeight = rowMaxHeight > row.cells.getCell(i).height ? rowMaxHeight : row.cells.getCell(i).height;\n // }\n // let flag : boolean = true;\n // let nextRow : PdfGridRow = this.Grid.headers.getHeader(this.Grid.headers.indexOf(row) + 1);\n // for (let i : number = 0; i < nextRow.cells.count; i++ ) {\n // if (nextRow.cells.getCell(i).value !== '' && nextRow.cells.getCell(i).value !== undefined) {\n // flag = false;\n // break;\n // }\n // }\n // if ((rowMaxHeight > rowHeightWithSpan) && flag) {\n // row.height += (rowMaxHeight - rowHeightWithSpan);\n // } \n }\n var calculatedHeight = row.rowBreakHeight > 0.0 ? row.rowBreakHeight : row.height;\n if (this.Grid.isChildGrid && this.Grid.ParentCell != null) {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n // if (calculatedHeight + this.Grid.ParentCell.row.grid.style.cellPadding.bottom +\n // this.Grid.ParentCell.row.grid.style.cellPadding.top > this.currentPageBounds.height) {\n // if (this.Grid.allowRowBreakAcrossPages) {\n // result.isFinish = true;\n // if ( this.Grid.isChildGrid && row.rowBreakHeight > 0 ) {\n // if (this.Grid.ParentCell.row.grid.style.cellPadding !== null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n // result.bounds = this.currentBounds ;\n // this.drawRowWithBreak(result, row, calculatedHeight);\n // } else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page. \n // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // calculatedHeight = this.currentBounds.height - this.currentBounds.y -\n // this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n // } else\n if (this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom + calculatedHeight >\n this.currentPageBounds.height || this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom\n + calculatedHeight > this.currentBounds.height || this.currentBounds.y +\n this.Grid.ParentCell.row.grid.style.cellPadding.bottom + rowHeightWithSpan > this.currentPageBounds.height) {\n //If a row is repeated and still cannot fit in page, proceed draw.\n if (this.Grid.ParentCell.row.grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n this.Grid.splitChildRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n // if (this.Grid.isChildGrid && row.rowBreakHeightValue > 0) {\n // // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n result_1.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n }\n // else {\n // result.isFinish = false;\n // row.repeatFlag = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n // else {\n // result.isFinish = false;\n // }\n }\n else {\n result_1.isFinish = true;\n if (row.grid.ParentCell.row.rowBreakHeightValue > 0) {\n row.repeatFlag = true;\n }\n else {\n row.repeatFlag = false;\n calculatedHeight = row.height;\n }\n if (this.Grid.isChildGrid && row.rowBreakHeight > 0) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n calculatedHeight += this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n if (calculatedHeight > this.currentPageBounds.height) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n //result.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.isrowFinish = true;\n row.repeatFlag = true;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n // else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page.\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n else if (this.currentBounds.y + calculatedHeight > this.currentPageBounds.height ||\n this.currentBounds.y + calculatedHeight > (this.currentBounds.height + this.startLocation.y) ||\n this.currentBounds.y + rowHeightWithSpan > this.currentPageBounds.height) {\n // If a row is repeated and still cannot fit in page, proceed draw.\n if (this.Grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n // else {\n // result.isFinish = false;\n // this.drawRow(row, result, calculatedHeight);\n // }\n }\n else {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = true;\n this.drawRow(row, result_1, calculatedHeight);\n row.repeatFlag = false;\n }\n }\n return result_1;\n }\n else {\n var skipcell = false;\n var location_4 = new PointF(this.currentBounds.x, this.currentBounds.y);\n // if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x && row.width <\n // this.currentPage.getClientSize().width) {\n // location.x = this.startLocation.x;\n // }\n result.bounds = new RectangleF(location_4, new SizeF(0, 0));\n height = this.ReCalculateHeight(row, height);\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((i > this.cellEndIndex + 1) && (row.cells.getCell(i).columnSpan > 1));\n // let cancelSpans : boolean = false;\n if (!cancelSpans) {\n for (var j = 1; j < row.cells.getCell(i).columnSpan; j++) {\n row.cells.getCell(i + j).isCellMergeContinue = true;\n }\n }\n var size = new SizeF(this.Grid.columns.getColumn(i).width, height);\n // if (size.width > this.currentGraphics.clientSize.width) {\n // size.width = this.currentGraphics.clientSize.width;\n // }\n // if (this.Grid.isChildGrid && this.Grid.style.allowHorizontalOverflow) {\n // if (size.width >= this.currentGraphics.clientSize.width) {\n // size.width -= 2 * this.currentBounds.x;\n // }\n // }\n /* tslint:disable */\n if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n this.CheckIfDefaultFormat(row.cells.getCell(i).stringFormat)) {\n row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n }\n var cellstyle = row.cells.getCell(i).style;\n var tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n row.cells.getCell(i).style = this.RaiseBeforeCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, cellstyle);\n //row.cells.getCell(i).style = cellstyle;\n if (!skipcell) {\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n grid.parentCellIndex = i;\n }\n var stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location_4, size), cancelSpans);\n if (row.grid.style.allowHorizontalOverflow && (row.cells.getCell(i).columnSpan > this.cellEndIndex ||\n i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1) && this.cellEndIndex < row.cells.count - 1) {\n row.rowOverflowIndex = this.cellEndIndex;\n }\n if (row.grid.style.allowHorizontalOverflow && (row.rowOverflowIndex > 0 && (row.cells.getCell(i).columnSpan >\n this.cellEndIndex || i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1)) &&\n row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1 > 0) {\n row.cells.getCell(row.rowOverflowIndex + 1).value = stringResult !== null ? (stringResult.remainder !== undefined) ?\n stringResult.remainder : '' : '';\n row.cells.getCell(row.rowOverflowIndex + 1).stringFormat = row.cells.getCell(i).stringFormat;\n row.cells.getCell(row.rowOverflowIndex + 1).style = row.cells.getCell(i).style;\n row.cells.getCell(row.rowOverflowIndex + 1).columnSpan = row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1;\n }\n }\n /* tslint:enable */\n tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n if (!cancelSpans) {\n this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, row.cells.getCell(i).style);\n }\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n if (this.Grid.columns.getColumn(i).width >= this.currentGraphics.clientSize.width) {\n location_4.x = grid.rowLayoutBoundsWidth;\n location_4.x += grid.style.cellSpacing;\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n if (!row.rowMergeComplete || row.isRowHeightSet) {\n this.currentBounds.y += height;\n }\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location_4.x, location_4.y));\n }\n };\n PdfGridLayouter.prototype.drawRowWithBreak = function (result, row, calculateHeight) {\n var location = new PointF(this.currentBounds.x, this.currentBounds.y);\n if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x) {\n location.x = this.startLocation.x;\n }\n result.bounds = new RectangleF(location, new SizeF(0, 0));\n this.gridHeight = row.rowBreakHeight > 0 ? this.currentPageBounds.height : 0;\n // Calculate the remaining height.\n if (row.grid.style.cellPadding.top + this.currentBounds.y + row.grid.style.cellPadding.bottom < this.currentPageBounds.height) {\n row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n }\n // else {\n // row.rowBreakHeight = calculateHeight;\n // result.isFinish = false;\n // return;\n // }\n // No need to explicit break if the row height is equal to grid height.\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n var cellHeight = cell.measureHeight();\n if (cellHeight === calculateHeight && cell.value instanceof PdfGrid) {\n row.rowBreakHeight = 0;\n }\n // else if (cellHeight === calculateHeight && (cell.value as PdfGrid) === null) {\n // row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n // }\n }\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((row.cells.getCell(i).columnSpan + i > this.cellEndIndex + 1) &&\n (row.cells.getCell(i).columnSpan > 1));\n // if (!cancelSpans) {\n // for (let k : number = 1; k < row.cells.getCell(i).columnSpan; k++) {\n // row.cells.getCell(i + k).isCellMergeContinue = true;\n // }\n //}\n var size = new SizeF(this.Grid.columns.getColumn(i).width, this.gridHeight > 0.0 ? this.gridHeight :\n this.currentPageBounds.height);\n // if (size.width === 0) {\n // size = new SizeF(row.cells.getCell(i).width, size.height);\n // }\n // if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n // this.CheckIfDefaultFormat((row.cells.getCell(i).stringFormat))) {\n // row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n // }\n var cellstyle1 = row.cells.getCell(i).style;\n row.cells.getCell(i).style = cellstyle1;\n var skipcell = false;\n var stringResult = null;\n if (!skipcell) {\n stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location, size), cancelSpans);\n }\n //If still row is to be drawn, set cell finished drawing cell as false and update the text to be drawn.\n if (row.rowBreakHeight > 0.0) {\n if (stringResult != null) {\n row.cells.getCell(i).FinishedDrawingCell = false;\n row.cells.getCell(i).remainingString = stringResult.remainder == null ? ' ' : stringResult.remainder;\n if (row.grid.isChildGrid) {\n row.rowBreakHeight = calculateHeight - stringResult.actualSize.height;\n }\n }\n }\n result.isFinish = (!result.isFinish) ? result.isFinish : row.cells.getCell(i).FinishedDrawingCell;\n // let tempValue : string = ((typeof row.cells.getCell(i).value === 'string' &&\n //row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '') as string;\n // if (!cancelSpans) {\n // // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i,\n // // new RectangleF(location, size), tempValue, row.cells.getCell(i).style); \n // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size),\n // (row.cells.getCell(i).value as string) ? row.cells.getCell(i).value.toString() : ' ',\n // row.cells.getCell(i).style);\n // } \n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n this.rowBreakPageHeightCellIndex = i;\n // row.cells.getCell(i).pageCount = grid.listOfNavigatePages.length;\n // for (let j : number = 0;j= this.currentGraphics.clientSize.width) {\n location.x = this.rowLayoutBoundsWidth;\n location.x += grid.style.cellSpacing;\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n this.currentBounds.y += this.gridHeight > 0.0 ? this.gridHeight : calculateHeight;\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location.x, location.y));\n };\n /**\n * @hidden\n * @private\n */\n PdfGridLayouter.repeatRowIndex = -1;\n return PdfGridLayouter;\n}(ElementLayouter));\nexport { PdfGridLayouter };\n// recalculateBounds : boolean, clientSize : SizeF\n//Implementation\n/**\n * `Initializes` internal data.\n * @private\n */\n//Internal declaration\nvar PdfGridLayoutResult = /** @class */ (function (_super) {\n __extends(PdfGridLayoutResult, _super);\n /**\n * Constructor\n * @private\n */\n function PdfGridLayoutResult(page, bounds) {\n return _super.call(this, page, bounds) || this;\n }\n return PdfGridLayoutResult;\n}(PdfLayoutResult));\nexport { PdfGridLayoutResult };\n/**\n * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.\n */\nvar PdfGridLayoutFormat = /** @class */ (function (_super) {\n __extends(PdfGridLayoutFormat, _super);\n /**\n * Initializes a new instance of the `PdfGridLayoutFormat` class.\n * @private\n */\n function PdfGridLayoutFormat(baseFormat) {\n return _super.call(this, baseFormat) || this;\n }\n return PdfGridLayoutFormat;\n}(PdfLayoutFormat));\nexport { PdfGridLayoutFormat };\nvar GridCellEventArgs = /** @class */ (function () {\n // Constructors\n /**\n * Initialize a new instance for `GridCellEventArgs` class.\n * @private\n */\n function GridCellEventArgs(graphics, rowIndex, cellIndex, bounds, value) {\n this.gridRowIndex = rowIndex;\n this.gridCellIndex = cellIndex;\n this.internalValue = value;\n this.gridBounds = bounds;\n this.pdfGraphics = graphics;\n }\n Object.defineProperty(GridCellEventArgs.prototype, \"rowIndex\", {\n // Properties\n /**\n * Gets the value of current `row index`.\n * @private\n */\n get: function () {\n return this.gridRowIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"cellIndex\", {\n /**\n * Gets the value of current `cell index`.\n * @private\n */\n get: function () {\n return this.gridCellIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"value\", {\n /**\n * Gets the actual `value` of current cell.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of current cell.\n * @private\n */\n get: function () {\n return this.gridBounds;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"graphics\", {\n /**\n * Gets the instance of `current graphics`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n return GridCellEventArgs;\n}());\nexport { GridCellEventArgs };\nvar PdfGridBeginCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StartCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.style = style;\n return _this;\n }\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"skip\", {\n // Properties\n /**\n * Gets or sets a value indicating whether the value of this cell should be `skipped`.\n * @private\n */\n get: function () {\n return this.bSkip;\n },\n set: function (value) {\n this.bSkip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"style\", {\n /**\n * Gets or sets a `style` value of the cell.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridBeginCellDrawEventArgs };\nvar PdfGridEndCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfGridEndCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.cellStyle = style;\n return _this;\n }\n Object.defineProperty(PdfGridEndCellDrawEventArgs.prototype, \"style\", {\n // Propertise\n /**\n * Get the `PdfGridCellStyle`.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridEndCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridEndCellDrawEventArgs };\nvar PdfCancelEventArgs = /** @class */ (function () {\n function PdfCancelEventArgs() {\n }\n Object.defineProperty(PdfCancelEventArgs.prototype, \"cancel\", {\n // Properties\n /**\n * Gets and Sets the value of `cancel`.\n * @private\n */\n get: function () {\n return this.isCancel;\n },\n set: function (value) {\n this.isCancel = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCancelEventArgs;\n}());\nexport { PdfCancelEventArgs };\nvar BeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(BeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `BeginPageLayoutEventArgs` class with the specified rectangle and page.\n * @private\n */\n function BeginPageLayoutEventArgs(bounds, page) {\n var _this = _super.call(this) || this;\n _this.bounds = bounds;\n _this.pdfPage = page;\n return _this;\n }\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"bounds\", {\n // Properties\n /**\n * Gets or sets value that indicates the lay outing `bounds` on the page.\n * @private\n */\n get: function () {\n return this.cellBounds;\n },\n set: function (value) {\n this.cellBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"page\", {\n /**\n * Gets the `page` where the lay outing should start.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return BeginPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { BeginPageLayoutEventArgs };\n/**\n * `EndPageLayoutEventArgs` class is alternate for end page layout events.\n */\nvar EndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(EndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `EndPageLayoutEventArgs` class. with the specified 'PdfLayoutResult'.\n * @private\n */\n function EndPageLayoutEventArgs(result) {\n var _this = _super.call(this) || this;\n _this.layoutResult = result;\n return _this;\n }\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"result\", {\n // Properties\n /**\n * Gets the lay outing `result` of the page.\n * @private\n */\n get: function () {\n return this.layoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"nextPage\", {\n /**\n * Gets or sets a value indicating the `next page` where the element should be layout.\n * @private\n */\n get: function () {\n return this.nextPdfPage;\n },\n set: function (value) {\n this.nextPdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n return EndPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { EndPageLayoutEventArgs };\n/**\n * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridBeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridBeginPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginPageLayoutEventArgs(bounds, page, startRow) {\n var _this = _super.call(this, bounds, page) || this;\n _this.startRow = startRow;\n return _this;\n }\n Object.defineProperty(PdfGridBeginPageLayoutEventArgs.prototype, \"startRowIndex\", {\n // Properties\n /**\n * Gets the `start row index`.\n * @private\n */\n get: function () {\n return this.startRow;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginPageLayoutEventArgs;\n}(BeginPageLayoutEventArgs));\nexport { PdfGridBeginPageLayoutEventArgs };\n/**\n * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridEndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridEndPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndPageLayoutEventArgs(result) {\n return _super.call(this, result) || this;\n }\n return PdfGridEndPageLayoutEventArgs;\n}(EndPageLayoutEventArgs));\nexport { PdfGridEndPageLayoutEventArgs };\nvar RowLayoutResult = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `RowLayoutResult` class.\n * @private\n */\n function RowLayoutResult() {\n this.layoutedBounds = new RectangleF(0, 0, 0, 0);\n }\n Object.defineProperty(RowLayoutResult.prototype, \"isFinish\", {\n /**\n * Gets or sets a value indicating whether this instance `is finish`.\n * @private\n */\n get: function () {\n return this.bIsFinished;\n },\n set: function (value) {\n this.bIsFinished = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RowLayoutResult.prototype, \"bounds\", {\n /**\n * Gets or sets the `bounds`.\n * @private\n */\n get: function () {\n return this.layoutedBounds;\n },\n set: function (value) {\n this.layoutedBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n return RowLayoutResult;\n}());\nexport { RowLayoutResult };\n","import { PdfGrid } from './pdf-grid';\nimport { PdfGridCellStyle } from './styles/style';\nimport { PdfStringLayouter } from './../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\nimport { RectangleF, PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfDashStyle, PdfLineCap } from './../../graphics/enum';\nimport { PdfBorderOverlapStyle } from './../tables/light-tables/enum';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfImage } from './../../graphics/images/pdf-image';\nimport { PdfBitmap } from './../../graphics/images/pdf-bitmap';\nimport { PdfTextWebLink } from './../../annotations/pdf-text-web-link';\nimport { PdfLayoutType } from './../../graphics/figures/enum';\nimport { PdfGridLayouter, PdfGridLayoutFormat } from './../../structured-elements/grid/layout/grid-layouter';\nimport { PdfLayoutParams } from '../../../implementation/graphics/figures/base/element-layouter';\n/**\n * `PdfGridCell` class represents the schema of a cell in a 'PdfGrid'.\n */\nvar PdfGridCell = /** @class */ (function () {\n function PdfGridCell(row) {\n /**\n * `Width` of the cell.\n * @default 0\n * @private\n */\n this.cellWidth = 0;\n /**\n * `Height` of the cell.\n * @default 0\n * @private\n */\n this.cellHeight = 0;\n /**\n * `tempval`to stores current width .\n * @default 0\n * @private\n */\n this.tempval = 0;\n this.fontSpilt = false;\n /**\n * Specifies weather the `cell is drawn`.\n * @default true\n * @private\n */\n this.finsh = true;\n /**\n * The `remaining height` of row span.\n * @default 0\n * @private\n */\n this.rowSpanRemainingHeight = 0;\n this.hasRowSpan = false;\n this.hasColSpan = false;\n /**\n * the 'isFinish' is set to page finish\n */\n this.isFinish = true;\n /**\n * The `present' to store the current cell.\n * @default false\n * @private\n */\n this.present = false;\n this.gridRowSpan = 1;\n this.colSpan = 1;\n if (typeof row !== 'undefined') {\n this.gridRow = row;\n }\n }\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeContinue\", {\n //Properties\n get: function () {\n return this.internalIsCellMergeContinue;\n },\n set: function (value) {\n this.internalIsCellMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeContinue\", {\n get: function () {\n return this.internalIsRowMergeContinue;\n },\n set: function (value) {\n this.internalIsRowMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeStart\", {\n get: function () {\n return this.internalIsCellMergeStart;\n },\n set: function (value) {\n this.internalIsCellMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeStart\", {\n get: function () {\n return this.internalIsRowMergeStart;\n },\n set: function (value) {\n this.internalIsRowMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"remainingString\", {\n /**\n * Gets or sets the `remaining string` after the row split between pages.\n * @private\n */\n get: function () {\n return this.remaining;\n },\n set: function (value) {\n this.remaining = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"FinishedDrawingCell\", {\n /**\n * Gets or sets the `FinishedDrawingCell` .\n * @private\n */\n get: function () {\n return this.isFinish;\n },\n set: function (value) {\n this.isFinish = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `string format`.\n * @private\n */\n get: function () {\n if (this.format == null) {\n this.format = new PdfStringFormat();\n }\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"row\", {\n /**\n * Gets or sets the parent `row`.\n * @private\n */\n get: function () {\n return this.gridRow;\n },\n set: function (value) {\n this.gridRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the cell.\n * @private\n */\n get: function () {\n return this.objectValue;\n },\n set: function (value) {\n this.objectValue = value;\n if (this.objectValue instanceof PdfGrid) {\n this.row.grid.isSingleGrid = false;\n var grid = this.objectValue;\n grid.ParentCell = this;\n this.objectValue.isChildGrid = true;\n var rowCount = this.row.grid.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.row.grid.rows.getRow(i);\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cell.parent = this;\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"rowSpan\", {\n /**\n * Gets or sets a value that indicates the total number of rows that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.gridRowSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw new Error('ArgumentException : Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.gridRowSpan = value;\n this.row.rowSpanExists = true;\n this.row.grid.hasRowSpanSpan = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"style\", {\n /**\n * Gets or sets the cell `style`.\n * @private\n */\n get: function () {\n if (this.cellStyle == null) {\n this.cellStyle = new PdfGridCellStyle();\n }\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"height\", {\n /**\n * Gets the `height` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellHeight === 0) {\n this.cellHeight = this.measureHeight();\n }\n return this.cellHeight;\n },\n set: function (value) {\n this.cellHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"columnSpan\", {\n /**\n * Gets or sets a value that indicates the total number of columns that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.colSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw Error('Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.colSpan = value;\n this.row.columnSpanExists = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"width\", {\n /**\n * Gets the `width` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellWidth === 0 || this.row.grid.isComplete) {\n this.cellWidth = this.measureWidth();\n }\n return Math.round(this.cellWidth);\n },\n set: function (value) {\n this.cellWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the width`.\n * @private\n */\n PdfGridCell.prototype.measureWidth = function () {\n // .. Calculate the cell text width.\n // .....Add border widths, cell spacings and paddings to the width.\n var width = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string') {\n /* tslint:disable */\n var slr = layouter.layout(this.objectValue, this.getTextFont(), this.stringFormat, new SizeF(Number.MAX_VALUE, Number.MAX_VALUE), false, new SizeF(0, 0));\n width += slr.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n width = this.objectValue.size.width;\n //width += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n width += this.objectValue.width;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n var result = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(0, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n width += result.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding != null) {\n width += (this.style.cellPadding.left + this.style.cellPadding.right);\n }\n else {\n width += (this.row.grid.style.cellPadding.left + this.row.grid.style.cellPadding.right);\n }\n }\n else {\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n width += this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n width += this.style.cellPadding.right;\n }\n }\n else {\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n width += this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n width += this.row.grid.style.cellPadding.right;\n }\n }\n }\n width += this.row.grid.style.cellSpacing;\n return width;\n };\n /**\n * Draw the `cell background`.\n * @private\n */\n PdfGridCell.prototype.drawCellBackground = function (graphics, bounds) {\n var backgroundBrush = this.getBackgroundBrush();\n //graphics.isTemplateGraphics = true;\n if (backgroundBrush != null) {\n graphics.save();\n graphics.drawRectangle(backgroundBrush, bounds.x, bounds.y, bounds.width, bounds.height);\n graphics.restore();\n }\n if (this.style.backgroundImage != null) {\n var image = this.getBackgroundImage();\n graphics.drawImage(this.style.backgroundImage, bounds.x, bounds.y, bounds.width, bounds.height);\n }\n };\n /**\n * `Adjusts the text layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustContentLayoutArea = function (bounds) {\n //Add Padding value to its Cell Bounds\n var returnBounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n if (!(this.objectValue instanceof PdfGrid)) {\n if (typeof this.style.cellPadding === 'undefined' || this.style.cellPadding == null) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n returnBounds.height -= (this.gridRow.grid.style.cellPadding.bottom + this.gridRow.grid.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n else {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.style.cellPadding.bottom + this.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n if (this.rowSpan === 1) {\n returnBounds.width -= (this.style.borders.left.width);\n }\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.gridRow.grid.style.cellPadding.left !== 'undefined' && this.gridRow.grid.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.gridRow.grid.style.cellPadding.left;\n }\n if (typeof this.gridRow.grid.style.cellPadding.top !== 'undefined' && this.gridRow.grid.style.cellPadding.hasTopPad) {\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.gridRow.grid.style.cellPadding.top;\n }\n if (typeof this.gridRow.grid.style.cellPadding.right !== 'undefined' && this.gridRow.grid.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.gridRow.grid.style.cellPadding.right;\n }\n if (typeof this.gridRow.grid.style.cellPadding.bottom !== 'undefined' && this.gridRow.grid.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.gridRow.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.style.cellPadding.right;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.style.cellPadding.bottom;\n }\n }\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n return returnBounds;\n };\n /**\n * `Draws` the specified graphics.\n * @private\n */\n PdfGridCell.prototype.draw = function (graphics, bounds, cancelSubsequentSpans) {\n var isrowbreak = false;\n /*if (!this.row.grid.isSingleGrid)\n {\n //Check whether the Grid Span to Nextpage\n if ((this.remainingString != null) || (PdfGridLayouter.repeatRowIndex != -1))\n {\n this.DrawParentCells(graphics, bounds, true);\n }\n else if (this.row.grid.rows.count > 1)\n {\n for (let i : number = 0; i < this.row.grid.rows.count; i++)\n {\n if (this.row == this.row.grid.rows.getRow(i))\n {\n if (this.row.grid.rows.getRow(i).rowBreakHeight > 0)\n isrowbreak = true;\n if ((i > 0) && (isrowbreak))\n this.DrawParentCells(graphics, bounds, false);\n }\n }\n }\n } */\n var result = null;\n /*if (cancelSubsequentSpans)\n {\n //..Cancel all subsequent cell spans, if no space exists.\n let currentCellIndex : number = this.row.cells.indexOf(this);\n for (let i : number = currentCellIndex + 1; i <= currentCellIndex + this.colSpan; i++)\n {\n this.row.cells.getCell(i).isCellMergeContinue = false;\n this.row.cells.getCell(i).isRowMergeContinue = false;\n }\n this.colSpan = 1;\n }*/\n //..Skip cells which were already covered by spanmap.\n if (this.internalIsCellMergeContinue || this.internalIsRowMergeContinue) {\n if (this.internalIsCellMergeContinue && this.row.grid.style.allowHorizontalOverflow) {\n if ((this.row.rowOverflowIndex > 0 && (this.row.cells.indexOf(this) != this.row.rowOverflowIndex + 1)) || (this.row.rowOverflowIndex == 0 && this.internalIsCellMergeContinue)) {\n return result;\n }\n }\n else {\n return result;\n }\n }\n //Adjust bounds with Row and Column Spacing\n bounds = this.adjustOuterLayoutArea(bounds, graphics);\n this.drawCellBackground(graphics, bounds);\n var textPen = this.getTextPen();\n var textBrush = this.getTextBrush();\n if (typeof textPen === 'undefined' && typeof textBrush === 'undefined') {\n textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var font = this.getTextFont();\n var strFormat = this.getStringFormat();\n var innerLayoutArea = bounds;\n if (innerLayoutArea.height >= graphics.clientSize.height) {\n // If to break row to next page.\n if (this.row.grid.allowRowBreakAcrossPages) {\n innerLayoutArea.height -= innerLayoutArea.y;\n //bounds.height -= bounds.y;\n // if(this.row.grid.isChildGrid)\n // {\n // innerLayoutArea.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n // if user choose to cut the row whose height is more than page height.\n // else\n // {\n // innerLayoutArea.height = graphics.clientSize.height;\n // bounds.height = graphics.clientSize.height;\n // }\n }\n innerLayoutArea = this.adjustContentLayoutArea(innerLayoutArea);\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var temp = void 0;\n var layoutRectangle = void 0;\n if (innerLayoutArea.height < font.height)\n layoutRectangle = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, font.height);\n else\n layoutRectangle = innerLayoutArea;\n if (innerLayoutArea.height < font.height && this.row.grid.isChildGrid && this.row.grid.ParentCell != null) {\n var height = layoutRectangle.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom - this.row.grid.style.cellPadding.bottom;\n if (this.row.grid.splitChildRowIndex != -1) {\n this.fontSpilt = true;\n this.row.rowFontSplit = true;\n }\n if (height > 0 && height < font.height)\n layoutRectangle.height = height;\n // else if (height + this.row.grid.style.cellPadding.bottom > 0 && height + this.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = height + this.row.grid.style.cellPadding.bottom;\n // else if (bounds.height < font.height)\n // layoutRectangle.height = bounds.height;\n // else if (bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom; \n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n layoutRectangle.width -= this.gridRow.grid.style.cellSpacing;\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n if (this.isFinish) {\n // if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined'){\n // this.remaining = '';\n // graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // } else {\n temp = this.remaining === '' ? this.remaining : this.objectValue;\n graphics.drawString(temp, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined') {\n this.remaining = '';\n //graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n }\n else {\n if (typeof this.remaining == 'undefined' || this.remaining === null) {\n this.remaining = '';\n }\n if (this.row.repeatFlag) {\n graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n // else {\n // if(this.row.grid.ParentCell.row.repeatFlag) {\n // graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat); \n // } else {\n // layoutRectangle.height = this.row.height;\n // graphics.drawString((this.objectValue as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // bounds.height = this.row.height;\n // }\n // }\n this.isFinish = true;\n //graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n result = graphics.stringLayoutResult;\n // if(this.row.grid.isChildGrid && this.row.rowBreakHeight > 0 && result !=null) {\n // bounds.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n else if (this.objectValue instanceof PdfGrid) {\n var childGrid = this.objectValue;\n childGrid.isChildGrid = true;\n childGrid.ParentCell = this;\n var layoutRect = void 0;\n layoutRect = innerLayoutArea;\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n // layoutRect = bounds;\n // if (this.style.cellPadding != null){\n // layoutRect = bounds; \n // } else if((this.row.grid.style.cellPadding != null) && (childGrid.style.cellPadding.bottom === 0.5) && (childGrid.style.cellPadding.top === 0.5)\n // && (childGrid.style.cellPadding.left === 5.76) && (childGrid.style.cellPadding.right === 5.76)\n // && (this.gridRow.grid.style.cellSpacing === 0) && (childGrid.style.cellSpacing === 0)) {\n // layoutRect = innerLayoutArea;\n // }\n // if(this.objectValue.style.cellPadding != null && typeof this.objectValue.style.cellPadding !== 'undefined'){\n // layoutRect = bounds;\n // } \n var layouter = new PdfGridLayouter(childGrid);\n var format = new PdfGridLayoutFormat();\n if (this.row.grid.LayoutFormat != null)\n format = this.row.grid.LayoutFormat;\n else\n format.layout = PdfLayoutType.Paginate;\n var param = new PdfLayoutParams();\n if (graphics.layer != null) {\n // Define layout parameters.\n param.page = graphics.page;\n param.bounds = layoutRect;\n param.format = format;\n //Set the span \n childGrid.setSpan();\n childGrid.checkSpan();\n // Draw the child grid.\n var childGridResult = layouter.Layouter(param);\n //let childGridResult : PdfLayoutResult = layouter.innerLayout(param);\n this.value = childGrid;\n if (this.row.grid.splitChildRowIndex !== -1) {\n this.height = this.row.rowBreakHeightValue;\n }\n if (param.page != childGridResult.page) //&& (isWidthGreaterthanParent != true))\n {\n childGridResult.bounds.height = this.row.rowBreakHeightValue;\n if (this.row.rowBreakHeight == 0)\n this.row.NestedGridLayoutResult = childGridResult;\n else\n this.row.rowBreakHeight = this.row.rowBreakHeightValue;\n //bounds.height = this.row.rowBreakHeight;\n //After drawing paginated nested grid, the bounds of the parent grid in start page should be corrected for borders.\n //bounds.height = graphics.clientSize.height - bounds.y;\n }\n }\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n var imageBounds = void 0;\n if (this.objectValue.width <= innerLayoutArea.width) {\n imageBounds = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, this.objectValue.width, innerLayoutArea.height);\n }\n else {\n imageBounds = innerLayoutArea;\n }\n graphics.drawImage(this.objectValue, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height);\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n this.objectValue.draw(graphics.currentPage, innerLayoutArea);\n }\n else if (typeof this.objectValue === 'undefined') {\n this.objectValue = \"\";\n graphics.drawString(this.objectValue, font, textPen, textBrush, innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, innerLayoutArea.height, strFormat);\n if (this.style.cellPadding != null && this.style.cellPadding.bottom == 0 && this.style.cellPadding.left == 0 && this.style.cellPadding.right == 0 && this.style.cellPadding.top == 0) {\n bounds.width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n }\n if (this.style.borders != null) {\n if (!this.fontSpilt)\n this.drawCellBorders(graphics, bounds);\n else {\n if (this.row.grid.ParentCell.row.grid.splitChildRowIndex != -1) {\n this.row.rowFontSplit = false;\n this.drawCellBorders(graphics, bounds);\n }\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Draws the `cell border` constructed by drawing lines.\n * @private\n */\n PdfGridCell.prototype.drawCellBorders = function (graphics, bounds) {\n if (this.row.grid.style.borderOverlapStyle === PdfBorderOverlapStyle.Inside) {\n bounds.x += this.style.borders.left.width;\n bounds.y += this.style.borders.top.width;\n bounds.width -= this.style.borders.right.width;\n bounds.height -= this.style.borders.bottom.width;\n }\n var p1 = new PointF(bounds.x, bounds.y + bounds.height);\n var p2 = new PointF(bounds.x, bounds.y);\n var pen = this.cellStyle.borders.left;\n if (this.cellStyle.borders.left.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n // SetTransparency(ref graphics, pen);\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n pen = this.cellStyle.borders.right;\n if ((bounds.x + bounds.width) > (graphics.clientSize.width - (pen.width / 2))) {\n p1 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y);\n p2 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y + bounds.height);\n }\n if (this.cellStyle.borders.right.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y);\n pen = this.cellStyle.borders.top;\n if (this.cellStyle.borders.top.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n p2 = new PointF(bounds.x, bounds.y + bounds.height);\n pen = this.cellStyle.borders.bottom;\n if ((bounds.y + bounds.height) > (graphics.clientSize.height - (pen.width / 2))) {\n p1 = new PointF((bounds.x + bounds.width), (graphics.clientSize.height - (pen.width / 2)));\n p2 = new PointF(bounds.x, (graphics.clientSize.height - (pen.width / 2)));\n }\n if (this.cellStyle.borders.bottom.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n };\n // private setTransparency(graphics : PdfGraphics, pen : PdfPen) : void {\n // let alpha : number = (pen.color.a / 255)as number;\n // graphics.save();\n // graphics.setTransparency(alpha);\n // }\n /**\n * `Adjusts the outer layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustOuterLayoutArea = function (bounds, g) {\n var isHeader = false;\n var cellSpacing = this.row.grid.style.cellSpacing;\n if (cellSpacing > 0) {\n bounds = new RectangleF(bounds.x + cellSpacing, bounds.y + cellSpacing, bounds.width - cellSpacing, bounds.height - cellSpacing);\n }\n var currentColIndex = this.row.cells.indexOf(this);\n if (this.columnSpan > 1 || (this.row.rowOverflowIndex > 0 && (currentColIndex == this.row.rowOverflowIndex + 1) && this.isCellMergeContinue)) {\n var span = this.columnSpan;\n if (span == 1 && this.isCellMergeContinue) {\n for (var j = currentColIndex + 1; j < this.row.grid.columns.count; j++) {\n if (this.row.cells.getCell(j).isCellMergeContinue)\n span++;\n else\n break;\n }\n }\n var totalWidth = 0;\n for (var i = currentColIndex; i < currentColIndex + span; i++) {\n if (this.row.grid.style.allowHorizontalOverflow) {\n var width = void 0;\n var compWidth = this.row.grid.size.width < g.clientSize.width ? this.row.grid.size.width : g.clientSize.width;\n if (this.row.grid.size.width > g.clientSize.width) {\n width = bounds.x + totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n else {\n width = totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n if (width > compWidth) {\n break;\n }\n }\n totalWidth += this.row.grid.columns.getColumn(i).width;\n }\n totalWidth -= this.row.grid.style.cellSpacing;\n bounds.width = totalWidth;\n }\n if (this.rowSpan > 1 || this.row.rowSpanExists) {\n var span = this.rowSpan;\n var currentRowIndex = this.row.grid.rows.rowCollection.indexOf(this.row);\n if (currentRowIndex == -1) {\n currentRowIndex = this.row.grid.headers.indexOf(this.row);\n if (currentRowIndex != -1) {\n isHeader = true;\n }\n }\n // if (span == 1 && this.isCellMergeContinue) {\n // for (let j : number = currentRowIndex + 1; j < this.row.grid.rows.count; j++)\n // {\n // let flag : boolean = (isHeader ? this.row.grid.headers.getHeader(j).cells.getCell(currentColIndex).isCellMergeContinue : this.row.grid.rows.getRow(j).cells.getCell(currentColIndex).isCellMergeContinue);\n // if (flag)\n // span++;\n // else\n // break;\n // }\n // }\n var totalHeight = 0;\n var max = 0;\n for (var i = currentRowIndex; i < currentRowIndex + span; i++) {\n totalHeight += (isHeader ? this.row.grid.headers.getHeader(i).height : this.row.grid.rows.getRow(i).height);\n var row = this.row.grid.rows.getRow(i);\n var rowIndex = this.row.grid.rows.rowCollection.indexOf(row);\n /*if (this.rowSpan > 1)\n {\n for (let k : number = 0; k < this.row.cells.count; k++) {\n let cell : PdfGridCell = this.row.cells.getCell(k);\n if(cell.rowSpan>1)\n {\n let tempHeight : number =0;\n \n for (let j :number = i; j < i +cell.rowSpan; j++)\n {\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = false;\n tempHeight += this.row.grid.rows.getRow(j).height;\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = true;\n }\n //To check the Row spanned cell height is greater than the total spanned row height.\n if(cell.height>tempHeight)\n {\n if (max < (cell.height - tempHeight))\n {\n max = cell.height - tempHeight;\n if (this.rowSpanRemainingHeight != 0 && max > this.rowSpanRemainingHeight)\n {\n max += this.rowSpanRemainingHeight;\n }\n let index :number = row.cells.indexOf(cell);\n //set the m_rowspanRemainingHeight to last rowspanned row.\n this.row.grid.rows.getRow((rowIndex +cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight = max;\n this.rowSpanRemainingHeight = this.row.grid.rows.getRow((rowIndex + cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight;\n }\n }\n }\n }\n }\n if (!this.row.grid.rows.getRow(i).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(i).isRowHeightSet = true;*/\n }\n var cellIndex = this.row.cells.indexOf(this);\n totalHeight -= this.row.grid.style.cellSpacing;\n // if (this.row.cells.getCell(cellIndex).height > totalHeight && (!this.row.grid.rows.getRow((currentRowIndex + span) - 1).isRowHeightSet)) {\n // this.row.grid.rows.getRow((currentRowIndex + span) - 1).cells.getCell(cellIndex).rowSpanRemainingHeight = this.row.cells.getCell(cellIndex).height - totalHeight;\n // totalHeight = this.row.cells.getCell(cellIndex).height;\n // bounds.height = totalHeight;\n // } else {\n bounds.height = totalHeight;\n // }\n if (!this.row.rowMergeComplete) {\n bounds.height = totalHeight;\n }\n }\n return bounds;\n };\n /* tslint:enable */\n /**\n * Gets the `text font`.\n * @private\n */\n PdfGridCell.prototype.getTextFont = function () {\n if (typeof this.style.font !== 'undefined' && this.style.font != null) {\n return this.style.font;\n }\n else if (typeof this.row.style.font !== 'undefined' && this.row.style.font != null) {\n return this.row.style.font;\n }\n else if (typeof this.row.grid.style.font !== 'undefined' && this.row.grid.style.font != null) {\n return this.row.grid.style.font;\n }\n else {\n return PdfDocument.defaultFont;\n }\n };\n /**\n * Gets the `text brush`.\n * @private\n */\n PdfGridCell.prototype.getTextBrush = function () {\n if (typeof this.style.textBrush !== 'undefined' && this.style.textBrush != null) {\n return this.style.textBrush;\n }\n else if (typeof this.row.style.textBrush !== 'undefined' && this.row.style.textBrush != null) {\n return this.row.style.textBrush;\n }\n else {\n return this.row.grid.style.textBrush;\n }\n };\n /**\n * Gets the `text pen`.\n * @private\n */\n PdfGridCell.prototype.getTextPen = function () {\n if (typeof this.style.textPen !== 'undefined' && this.style.textPen != null) {\n return this.style.textPen;\n }\n else if (typeof this.row.style.textPen !== 'undefined' && this.row.style.textPen != null) {\n return this.row.style.textPen;\n }\n else {\n return this.row.grid.style.textPen;\n }\n };\n /**\n * Gets the `background brush`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundBrush = function () {\n if (typeof this.style.backgroundBrush !== 'undefined' && this.style.backgroundBrush != null) {\n return this.style.backgroundBrush;\n }\n else if (typeof this.row.style.backgroundBrush !== 'undefined' && this.row.style.backgroundBrush != null) {\n return this.row.style.backgroundBrush;\n }\n else {\n return this.row.grid.style.backgroundBrush;\n }\n };\n /**\n * Gets the `background image`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundImage = function () {\n if (typeof this.style.backgroundImage !== 'undefined' && this.style.backgroundImage != null) {\n return this.style.backgroundImage;\n }\n else if (typeof this.row.style.backgroundImage !== 'undefined' && this.row.style.backgroundImage != null) {\n return this.row.style.backgroundImage;\n }\n else {\n return this.row.grid.style.backgroundImage;\n }\n };\n /**\n * Gets the current `StringFormat`.\n * @private\n */\n PdfGridCell.prototype.getStringFormat = function () {\n if (typeof this.style.stringFormat !== 'undefined' && this.style.stringFormat != null) {\n return this.style.stringFormat;\n }\n else {\n return this.stringFormat;\n }\n };\n /**\n * Calculates the `height`.\n * @private\n */\n PdfGridCell.prototype.measureHeight = function () {\n // .. Calculate the cell text height.\n // .....Add border widths, cell spacings and paddings to the height.\n var width = this.calculateWidth();\n // //check whether the Current PdfGridCell has padding\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n //width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n var height = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var currentValue = this.objectValue;\n /* tslint:disable */\n if (!this.isFinish)\n currentValue = !(this.remaining === null || this.remaining === '' ||\n typeof this.remaining === 'undefined') ? this.remaining : this.objectValue;\n var slr = null;\n var cellIndex = this.row.cells.indexOf(this);\n if (this.gridRow.grid.style.cellSpacing != 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n }\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n if (this.gridRow.grid.isChildGrid) {\n if (width < 0) {\n this.tempval = width;\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n this.tempval += (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n this.tempval += (this.style.cellPadding.right + this.style.cellPadding.left);\n this.tempval += (this.style.borders.left.width + this.style.borders.right.width);\n }\n }\n else {\n this.tempval = width;\n }\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(this.tempval, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n else {\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n }\n /* tslint:enable */\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n var cellIndex = this.row.cells.indexOf(this);\n var internalWidth = 0;\n if ((this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n internalWidth -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n internalWidth -= this.style.cellPadding.right;\n }\n }\n else if ((this.row.grid.style.cellPadding != null || typeof this.row.grid.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n internalWidth -= this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n internalWidth -= this.row.grid.style.cellPadding.right;\n }\n }\n else {\n internalWidth = this.calculateWidth();\n }\n this.objectValue.tempWidth = internalWidth;\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n height = this.objectValue.size.height;\n }\n else {\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n if (this.gridRow.grid.style.cellSpacing !== 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n //height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (this.row.grid.style.cellPadding.hasBottomPad && typeof this.row.grid.style.cellPadding.bottom !== 'undefined') {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n height += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n height += this.objectValue.height;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n /* tslint:disable */\n var slr = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n height += slr.actualSize.height;\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (typeof this.objectValue === 'undefined') {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n //Add padding top and bottom value to height\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n else {\n height += (this.style.cellPadding.top + this.style.cellPadding.bottom);\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (typeof this.row.grid.style.cellPadding.bottom !== 'undefined' && this.row.grid.style.cellPadding.hasBottomPad) {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n height += this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n height += this.style.cellPadding.bottom;\n }\n }\n }\n height += this.row.grid.style.cellSpacing;\n return height;\n };\n /**\n * return the calculated `width` of the cell.\n * @private\n */\n PdfGridCell.prototype.calculateWidth = function () {\n var cellIndex = this.row.cells.indexOf(this);\n var rowindex = this.row.grid.rows.rowCollection.indexOf(this.row);\n var columnSpan = this.columnSpan;\n var width = 0;\n if (columnSpan === 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n }\n }\n else if (columnSpan > 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n if ((i + 1) < columnSpan) {\n this.row.cells.getCell(cellIndex + i + 1).hasColSpan = true;\n }\n }\n }\n if (this.parent != null && this.parent.row.width > 0) {\n if ((this.row.grid.isChildGrid) && this.parent != null && (this.row.width > this.parent.row.width)) {\n width = 0;\n for (var j = 0; j < this.parent.columnSpan; j++) {\n width += this.parent.row.grid.columns.getColumn(j).width;\n }\n width = width / this.row.cells.count;\n }\n }\n return width;\n };\n return PdfGridCell;\n}());\nexport { PdfGridCell };\n/**\n * `PdfGridCellCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridCell' objects.\n * @private\n */\nvar PdfGridCellCollection = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridCellCollection` class with the row.\n * @private\n */\n function PdfGridCellCollection(row) {\n /**\n * @hidden\n * @private\n */\n this.cells = [];\n this.gridRow = row;\n }\n //Properties\n /**\n * Gets the current `cell`.\n * @private\n */\n PdfGridCellCollection.prototype.getCell = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException');\n }\n return this.cells[index];\n };\n Object.defineProperty(PdfGridCellCollection.prototype, \"count\", {\n /**\n * Gets the cells `count`.[Read-Only].\n * @private\n */\n get: function () {\n return this.cells.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridCellCollection.prototype.add = function (cell) {\n if (typeof cell === 'undefined') {\n var tempcell = new PdfGridCell();\n this.add(tempcell);\n return cell;\n }\n else {\n cell.row = this.gridRow;\n this.cells.push(cell);\n }\n };\n /**\n * Returns the `index of` a particular cell in the collection.\n * @private\n */\n PdfGridCellCollection.prototype.indexOf = function (cell) {\n return this.cells.indexOf(cell);\n };\n return PdfGridCellCollection;\n}());\nexport { PdfGridCellCollection };\n","import { PdfGridCell } from './pdf-grid-cell';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\n/**\n * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.\n */\nvar PdfGridColumn = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumn` class with the parent grid.\n * @private\n */\n function PdfGridColumn(grid) {\n /**\n * The `width` of the column.\n * @default 0\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n }\n Object.defineProperty(PdfGridColumn.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the 'PdfGridColumn'.\n * @private\n */\n get: function () {\n return this.columnWidth;\n },\n set: function (value) {\n this.isCustomWidth = true;\n this.columnWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumn.prototype, \"format\", {\n /**\n * Gets or sets the information about the text `formatting`.\n * @private\n */\n get: function () {\n if (this.stringFormat == null) {\n this.stringFormat = new PdfStringFormat(); //GetDefaultFormat();\n }\n return this.stringFormat;\n },\n set: function (value) {\n this.stringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridColumn;\n}());\nexport { PdfGridColumn };\n/**\n * `PdfGridColumnCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridColumn' objects.\n * @private\n */\nvar PdfGridColumnCollection = /** @class */ (function () {\n //properties\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumnCollection` class with the parent grid.\n * @private\n */\n function PdfGridColumnCollection(grid) {\n /**\n * @hidden\n * @private\n */\n this.internalColumns = [];\n /**\n * @hidden\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n this.internalColumns = [];\n }\n //Iplementation\n /**\n * `Add` a new column to the 'PdfGrid'.\n * @private\n */\n PdfGridColumnCollection.prototype.add = function (count) {\n // public add(column : PdfGridColumn) : void\n // public add(arg : number|PdfGridColumn) : void {\n // if (typeof arg === 'number') {\n for (var i = 0; i < count; i++) {\n this.internalColumns.push(new PdfGridColumn(this.grid));\n for (var index = 0; index < this.grid.rows.count; index++) {\n var row = this.grid.rows.getRow(index);\n var cell = new PdfGridCell();\n cell.value = '';\n row.cells.add(cell);\n }\n }\n // } else {\n // let column : PdfGridColumn = new PdfGridColumn(this.grid);\n // this.columns.push(column);\n // return column;\n // }\n };\n Object.defineProperty(PdfGridColumnCollection.prototype, \"count\", {\n /**\n * Gets the `number of columns` in the 'PdfGrid'.[Read-Only].\n * @private\n */\n get: function () {\n return this.internalColumns.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"width\", {\n /**\n * Gets the `widths`.\n * @private\n */\n get: function () {\n if (this.columnWidth === 0) {\n this.columnWidth = this.measureColumnsWidth();\n }\n if (this.grid.initialWidth !== 0 && this.columnWidth !== this.grid.initialWidth && !this.grid.style.allowHorizontalOverflow) {\n this.columnWidth = this.grid.initialWidth;\n this.grid.isPageWidth = true;\n }\n return this.columnWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"columns\", {\n /**\n * Gets the `array of PdfGridColumn`.[Read-Only]\n * @private\n */\n get: function () {\n return this.internalColumns;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfGridColumn` from the specified index.[Read-Only]\n * @private\n */\n PdfGridColumnCollection.prototype.getColumn = function (index) {\n if (index >= 0 && index <= this.columns.length) {\n return this.columns[index];\n }\n else {\n throw Error('can not get the column from the index: ' + index);\n }\n };\n //Implementation\n /**\n * `Calculates the column widths`.\n * @private\n */\n PdfGridColumnCollection.prototype.measureColumnsWidth = function () {\n var totalWidth = 0;\n this.grid.measureColumnsWidth();\n for (var i = 0, count = this.internalColumns.length; i < count; i++) {\n totalWidth += this.internalColumns[i].width;\n }\n return totalWidth;\n };\n /**\n * Gets the `widths of the columns`.\n * @private\n */\n PdfGridColumnCollection.prototype.getDefaultWidths = function (totalWidth) {\n var widths = [];\n var summ = 0.0;\n var subFactor = this.count;\n for (var i = 0; i < this.count; i++) {\n if (this.grid.isPageWidth && totalWidth >= 0 && !this.internalColumns[i].isCustomWidth) {\n this.internalColumns[i].width = 0;\n }\n else {\n widths[i] = this.internalColumns[i].width;\n if (this.internalColumns[i].width > 0 && this.internalColumns[i].isCustomWidth) {\n totalWidth -= this.internalColumns[i].width;\n subFactor--;\n }\n else {\n widths[i] = 0;\n }\n }\n }\n for (var i = 0; i < this.count; i++) {\n var width = totalWidth / subFactor;\n if (widths[i] <= 0) {\n widths[i] = width;\n }\n }\n return widths;\n };\n return PdfGridColumnCollection;\n}());\nexport { PdfGridColumnCollection };\n","import { PdfGridCell, PdfGridCellCollection } from './pdf-grid-cell';\nimport { PdfGridRowStyle } from './styles/style';\n/**\n * `PdfGridRow` class provides customization of the settings for the particular row.\n */\nvar PdfGridRow = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridRow` class with the parent grid.\n * @private\n */\n function PdfGridRow(grid) {\n /**\n * Stores the index of the overflowing row.\n * @private\n */\n this.gridRowOverflowIndex = 0;\n /**\n * The `height` of the row.\n * @private\n */\n this.rowHeight = 0;\n /**\n * The `width` of the row.\n * @private\n */\n this.rowWidth = 0;\n /**\n * The `isFinish` of the row.\n * @private\n */\n this.isrowFinish = false;\n /**\n * Check whether the Row span row height `is set explicitly`.\n * @default false\n * @public\n */\n this.isRowSpanRowHeightSet = false;\n /**\n * The `page count` of the row.\n * @public\n */\n this.noOfPageCount = 0;\n /**\n * Check whether the row height `is set explicitly`.\n * @default false\n * @private\n */\n this.isRowHeightSet = false;\n this.isPageBreakRowSpanApplied = false;\n /**\n * Check weather the row merge `is completed` or not.\n * @default true\n * @private\n */\n this.isRowMergeComplete = true;\n this.repeatFlag = false;\n this.rowFontSplit = false;\n this.pdfGrid = grid;\n }\n Object.defineProperty(PdfGridRow.prototype, \"rowSpanExists\", {\n //Properties\n /**\n * Gets or sets a value indicating [`row span exists`].\n * @private\n */\n get: function () {\n return this.bRowSpanExists;\n },\n set: function (value) {\n this.bRowSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"cells\", {\n /**\n * Gets the `cells` from the selected row.[Read-Only].\n * @private\n */\n get: function () {\n if (this.gridCells == null) {\n this.gridCells = new PdfGridCellCollection(this);\n }\n return this.gridCells;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"grid\", {\n /**\n * Gets or sets the parent `grid`.\n * @private\n */\n get: function () {\n return this.pdfGrid;\n },\n set: function (value) {\n this.pdfGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"style\", {\n /**\n * Gets or sets the row `style`.\n * @private\n */\n get: function () {\n if (typeof this.rowStyle === 'undefined') {\n this.rowStyle = new PdfGridRowStyle();\n this.rowStyle.setParent(this);\n }\n return this.rowStyle;\n },\n set: function (value) {\n this.rowStyle = value;\n for (var i = 0; i < this.cells.count; i++) {\n this.cells.getCell(i).style.borders = value.border;\n if (typeof value.font !== 'undefined') {\n this.cells.getCell(i).style.font = value.font;\n }\n if (typeof value.backgroundBrush !== 'undefined') {\n this.cells.getCell(i).style.backgroundBrush = value.backgroundBrush;\n }\n if (typeof value.backgroundImage !== 'undefined') {\n this.cells.getCell(i).style.backgroundImage = value.backgroundImage;\n }\n if (typeof value.textBrush !== 'undefined') {\n this.cells.getCell(i).style.textBrush = value.textBrush;\n }\n if (typeof value.textPen !== 'undefined') {\n this.cells.getCell(i).style.textPen = value.textPen;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowBreakHeight\", {\n /**\n * `Height` of the row yet to be drawn after split.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBreakHeight === 'undefined') {\n this.gridRowBreakHeight = 0;\n }\n return this.gridRowBreakHeight;\n },\n set: function (value) {\n this.gridRowBreakHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowOverflowIndex\", {\n /**\n * `over flow index` of the row.\n * @private\n */\n get: function () {\n return this.gridRowOverflowIndex;\n },\n set: function (value) {\n this.gridRowOverflowIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the row.\n * @private\n */\n get: function () {\n if (!this.isRowHeightSet) {\n this.rowHeight = this.measureHeight();\n }\n return this.rowHeight;\n },\n set: function (value) {\n this.rowHeight = value;\n this.isRowHeightSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the row.\n * @private\n */\n get: function () {\n if (this.rowWidth === 0 || typeof this.rowWidth === 'undefined') {\n this.rowWidth = this.measureWidth();\n }\n return this.rowWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"NestedGridLayoutResult\", {\n /**\n * Gets or sets the row `Nested grid Layout Result`.\n * @private\n */\n get: function () {\n return this.gridResult;\n },\n set: function (value) {\n this.gridResult = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"columnSpanExists\", {\n /**\n * Gets or sets a value indicating [`column span exists`].\n * @private\n */\n get: function () {\n return this.bColumnSpanExists;\n },\n set: function (value) {\n this.bColumnSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowMergeComplete\", {\n /**\n * Check whether the Row `has row span or row merge continue`.\n * @private\n */\n get: function () {\n return this.isRowMergeComplete;\n },\n set: function (value) {\n this.isRowMergeComplete = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowIndex\", {\n /**\n * Returns `index` of the row.\n * @private\n */\n get: function () {\n return this.grid.rows.rowCollection.indexOf(this);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the height`.\n * @private\n */\n PdfGridRow.prototype.measureHeight = function () {\n var rowSpanRemainingHeight = 0;\n var rowHeight;\n var maxHeight = 0;\n if (this.cells.getCell(0).rowSpan > 1) {\n rowHeight = 0;\n }\n else {\n rowHeight = this.cells.getCell(0).height;\n }\n for (var i = 0; i < this.cells.count; i++) {\n var cell = this.cells.getCell(i);\n //get the maximum rowspan remaining height.\n if (cell.rowSpanRemainingHeight > rowSpanRemainingHeight) {\n rowSpanRemainingHeight = cell.rowSpanRemainingHeight;\n }\n //skip the cell if row spanned.\n // if (cell.isRowMergeContinue) {\n // continue;\n // }\n // if (!cell.isRowMergeContinue) {\n // this.rowMergeComplete = false;\n // }\n this.rowMergeComplete = false;\n if (cell.rowSpan > 1) {\n var cellIn = i;\n var rowin = this.grid.rows.rowCollection.indexOf(this);\n for (var j = 0; j < cell.rowSpan; j++) {\n if ((j + 1) < cell.rowSpan) {\n this.grid.rows.getRow(rowin + j + 1).cells.getCell(cellIn).hasRowSpan = true;\n }\n }\n if (maxHeight < cell.height) {\n maxHeight = cell.height;\n }\n continue;\n }\n rowHeight = Math.max(rowHeight, cell.height);\n }\n if (maxHeight > rowHeight) {\n rowHeight = maxHeight;\n }\n if (rowHeight === 0) {\n rowHeight = maxHeight;\n }\n else if (rowSpanRemainingHeight > 0) {\n rowHeight += rowSpanRemainingHeight;\n }\n return rowHeight;\n };\n PdfGridRow.prototype.measureWidth = function () {\n var rowWid = 0;\n for (var i = 0; i < this.grid.columns.count; i++) {\n var column = this.grid.columns.getColumn(i);\n rowWid += column.width;\n }\n return rowWid;\n };\n return PdfGridRow;\n}());\nexport { PdfGridRow };\n/**\n * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.\n * @private\n */\nvar PdfGridRowCollection = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowCollection` class with the parent grid.\n * @private\n */\n function PdfGridRowCollection(grid) {\n this.rows = [];\n this.grid = grid;\n }\n Object.defineProperty(PdfGridRowCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the number of header in the `PdfGrid`.[Read-Only].\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRowCollection.prototype, \"rowCollection\", {\n //Implementation\n /**\n * Return the row collection of the `grid`.\n * @private\n */\n get: function () {\n return this.rows;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowCollection.prototype.addRow = function (arg) {\n if (typeof arg === 'undefined') {\n var temprow = new PdfGridRow(this.grid);\n this.addRow(temprow);\n return temprow;\n }\n else {\n arg.style.setBackgroundBrush(this.grid.style.backgroundBrush);\n arg.style.setFont(this.grid.style.font);\n arg.style.setTextBrush(this.grid.style.textBrush);\n arg.style.setTextPen(this.grid.style.textPen);\n if (arg.cells.count === 0) {\n for (var i = 0; i < this.grid.columns.count; i++) {\n arg.cells.add(new PdfGridCell());\n }\n }\n this.rows.push(arg);\n }\n };\n /**\n * Return the row by index.\n * @private\n */\n PdfGridRowCollection.prototype.getRow = function (index) {\n return this.rows[index];\n };\n return PdfGridRowCollection;\n}());\nexport { PdfGridRowCollection };\n/**\n * `PdfGridHeaderCollection` class provides customization of the settings for the header.\n * @private\n */\nvar PdfGridHeaderCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfGridHeaderCollection` class with the parent grid.\n * @private\n */\n function PdfGridHeaderCollection(grid) {\n /**\n * The array to store the `rows` of the grid header.\n * @private\n */\n this.rows = [];\n this.grid = grid;\n this.rows = [];\n }\n //Properties\n /**\n * Gets a 'PdfGridRow' object that represents the `header` row in a 'PdfGridHeaderCollection' control.[Read-Only].\n * @private\n */\n PdfGridHeaderCollection.prototype.getHeader = function (index) {\n // if (index < 0 || index >= Count) {\n // throw new IndexOutOfRangeException();\n // }\n return (this.rows[index]);\n };\n Object.defineProperty(PdfGridHeaderCollection.prototype, \"count\", {\n /**\n * Gets the `number of header` in the 'PdfGrid'.[Read-Only]\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridHeaderCollection.prototype.add = function (arg) {\n if (typeof arg === 'number') {\n var row = void 0;\n for (var i = 0; i < arg; i++) {\n row = new PdfGridRow(this.grid);\n for (var j = 0; j < this.grid.columns.count; j++) {\n row.cells.add(new PdfGridCell());\n }\n this.rows.push(row);\n }\n return this.rows;\n }\n else {\n this.rows.push(arg);\n }\n };\n PdfGridHeaderCollection.prototype.indexOf = function (row) {\n return this.rows.indexOf(row);\n };\n return PdfGridHeaderCollection;\n}());\nexport { PdfGridHeaderCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfGrid.ts class for EJ2-PDF\n */\nimport { PdfGridColumnCollection } from './pdf-grid-column';\nimport { PdfGridRowCollection, PdfGridHeaderCollection } from './pdf-grid-row';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutElement } from './../../graphics/figures/layout-element';\nimport { PdfLayoutFormat } from './../../graphics/figures/base/element-layouter';\nimport { PdfGridStyle } from './styles/style';\nimport { PdfBorders } from './styles/pdf-borders';\nimport { PdfGridLayouter } from './../../structured-elements/grid/layout/grid-layouter';\nvar PdfGrid = /** @class */ (function (_super) {\n __extends(PdfGrid, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGrid() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n /**\n * Check the child grid is ' split or not'\n */\n _this.isGridSplit = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.splitChildRowIndex = -1;\n /**\n * The event raised on `begin cell lay outing`.\n * @event\n * @private\n */\n //public beginPageLayout : Function;\n /**\n * The event raised on `end cell lay outing`.\n * @event\n * @private\n */\n //public endPageLayout : Function;\n _this.hasRowSpanSpan = false;\n _this.hasColumnSpan = false;\n _this.isSingleGrid = true;\n return _this;\n }\n Object.defineProperty(PdfGrid.prototype, \"raiseBeginCellDraw\", {\n //Properties\n /**\n * Gets a value indicating whether the `start cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginCellDraw !== 'undefined' && typeof this.beginCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"raiseEndCellDraw\", {\n /**\n * Gets a value indicating whether the `end cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endCellDraw !== 'undefined' && typeof this.endCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"repeatHeader\", {\n /**\n * Gets or sets a value indicating whether to `repeat header`.\n * @private\n */\n get: function () {\n if (this.bRepeatHeader == null || typeof this.bRepeatHeader === 'undefined') {\n this.bRepeatHeader = false;\n }\n return this.bRepeatHeader;\n },\n set: function (value) {\n this.bRepeatHeader = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"allowRowBreakAcrossPages\", {\n /**\n * Gets or sets a value indicating whether to split or cut rows that `overflow a page`.\n * @private\n */\n get: function () {\n return this.breakRow;\n },\n set: function (value) {\n this.breakRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"columns\", {\n /**\n * Gets the `column` collection of the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridColumns == null || typeof this.gridColumns === 'undefined') {\n this.gridColumns = new PdfGridColumnCollection(this);\n }\n return this.gridColumns;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"rows\", {\n /**\n * Gets the `row` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridRows == null) {\n this.gridRows = new PdfGridRowCollection(this);\n }\n return this.gridRows;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"headers\", {\n /**\n * Gets the `headers` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridHeaders == null || typeof this.gridHeaders === 'undefined') {\n this.gridHeaders = new PdfGridHeaderCollection(this);\n }\n return this.gridHeaders;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"initialWidth\", {\n /**\n * Indicating `initial width` of the page.\n * @private\n */\n get: function () {\n return this.gridInitialWidth;\n },\n set: function (value) {\n this.gridInitialWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"style\", {\n /**\n * Gets or sets the `grid style`.\n * @private\n */\n get: function () {\n if (this.gridStyle == null) {\n this.gridStyle = new PdfGridStyle();\n }\n return this.gridStyle;\n },\n set: function (value) {\n if (this.gridStyle == null) {\n this.gridStyle = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isPageWidth\", {\n /**\n * Gets a value indicating whether the grid column width is considered to be `page width`.\n * @private\n */\n get: function () {\n return this.ispageWidth;\n },\n set: function (value) {\n this.ispageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isChildGrid\", {\n /**\n * Gets or set if grid `is nested grid`.\n * @private\n */\n get: function () {\n return this.ischildGrid;\n },\n set: function (value) {\n this.ischildGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"size\", {\n /**\n * Gets or set if grid ' is split or not'\n * @public\n */\n // public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }\n /**\n * Gets the `size`.\n * @private\n */\n get: function () {\n if ((this.gridSize.width === 0 || typeof this.gridSize.width === 'undefined') && this.gridSize.height === 0) {\n this.gridSize = this.measure();\n }\n return this.gridSize;\n // } else {\n // return this.gridSize;\n // }\n },\n set: function (value) {\n this.gridSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"ParentCell\", {\n get: function () {\n return this.parentCell;\n },\n set: function (value) {\n this.parentCell = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"LayoutFormat\", {\n get: function () {\n return this.layoutFormat;\n },\n enumerable: true,\n configurable: true\n });\n PdfGrid.prototype.draw = function (arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null)) {\n var width = (arg1.graphics.clientSize.width - arg2);\n var layoutRectangle = new RectangleF(arg2, arg3, width, 0);\n return this.drawHelper(arg1, layoutRectangle, arg4);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'boolean') {\n return this.drawHelper(arg1, arg2, null);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n /**\n * `measures` this instance.\n * @private\n */\n PdfGrid.prototype.measure = function () {\n var height = 0;\n var width = this.columns.width;\n for (var i = 0; i < this.headers.count; i++) {\n var row = this.headers.getHeader(i);\n height += row.height;\n }\n for (var i = 0; i < this.rows.count; i++) {\n var row = this.rows.getRow(i);\n height += row.height;\n }\n return new SizeF(width, height);\n };\n PdfGrid.prototype.onBeginCellDraw = function (args) {\n if (this.raiseBeginCellDraw) {\n this.beginCellDraw(this, args);\n }\n };\n PdfGrid.prototype.onEndCellDraw = function (args) {\n if (this.raiseEndCellDraw) {\n this.endCellDraw(this, args);\n }\n };\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n PdfGrid.prototype.layout = function (param) {\n if (this.rows.count !== 0) {\n var currentRow = this.rows.getRow(0).cells.getCell(0).style;\n if (currentRow.borders != null && ((currentRow.borders.left != null && currentRow.borders.left.width !== 1) ||\n (currentRow.borders.top != null && currentRow.borders.top.width !== 1))) {\n var x = currentRow.borders.left.width / 2;\n var y = currentRow.borders.top.width / 2;\n if (param.bounds.x === PdfBorders.default.right.width / 2 && param.bounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.gridSize.width, this.gridSize.height);\n param.bounds = newBound;\n }\n }\n }\n this.setSpan();\n this.checkSpan();\n this.layoutFormat = param.format;\n this.gridLocation = param.bounds;\n var layouter = new PdfGridLayouter(this);\n var result = (layouter.Layouter(param));\n return result;\n };\n PdfGrid.prototype.setSpan = function () {\n var colSpan = 1;\n var rowSpan = 1;\n var currentCellIndex = 0;\n var currentRowIndex = 0;\n var maxSpan = 0;\n var rowCount = this.headers.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.headers.getHeader(i);\n maxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.headers.count) {\n throw new Error('Invalid span specified at Header ' + j.toString() + ' column ' + i.toString());\n }\n // if (this.rows.count !== 0 && cell.rowSpan + i > this.rows.count) {\n // throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n // }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n colSpan = cell.columnSpan;\n rowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n row.cells.getCell(currentCellIndex).rowSpan = rowSpan;\n colSpan--;\n }\n currentCellIndex = j;\n colSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n rowSpan--;\n while (colSpan > 1) {\n currentCellIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n colSpan--;\n }\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n colSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n rowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n rowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = maxSpan;\n }\n };\n PdfGrid.prototype.checkSpan = function () {\n var cellcolSpan;\n var cellrowSpan = 1;\n var cellmaxSpan = 0;\n var currentCellIndex;\n var currentRowIndex = 0;\n cellcolSpan = cellrowSpan = 1;\n currentCellIndex = currentRowIndex = 0;\n if (this.hasRowSpanSpan || this.hasColumnSpan) {\n var rowCount = this.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.rows.getRow(i);\n cellmaxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cellmaxSpan = Math.max(cellmaxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue\n && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.rows.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n cellcolSpan = cell.columnSpan;\n cellrowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n currentCellIndex = j;\n cellcolSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellrowSpan--;\n while (cellcolSpan > 1) {\n currentCellIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n cellcolSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n cellrowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n cellrowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = cellmaxSpan;\n }\n }\n };\n PdfGrid.prototype.measureColumnsWidth = function (bounds) {\n if (typeof bounds !== 'undefined') {\n this.isPageWidth = false;\n var widths = this.columns.getDefaultWidths(bounds.width - bounds.x);\n //let tempWidth : number = this.columns.getColumn(0).width;\n for (var i = 0, count = this.columns.count; i < count; i++) {\n // if (this.columns.getColumn(i).width < 0)\n // this.columns.getColumn(i).columnWidth = widths[i];\n // else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth && widths[i]>0 && this.isComplete)\n this.columns.getColumn(i).columnWidth = widths[i];\n this.tempWidth = widths[i];\n }\n if (this.ParentCell != null && this.style.allowHorizontalOverflow == false && this.ParentCell.row.grid.style.allowHorizontalOverflow == false) {\n var padding = 0;\n var columnWidth = 0;\n var columnCount = this.columns.count;\n var childGridColumnWidth = 0;\n if (this.ParentCell.style.cellPadding != null || typeof this.ParentCell.style.cellPadding !== 'undefined') {\n if (typeof this.ParentCell.style.cellPadding.left != 'undefined' && this.ParentCell.style.cellPadding.hasLeftPad) {\n padding += this.ParentCell.style.cellPadding.left;\n }\n if (typeof this.ParentCell.style.cellPadding.right != 'undefined' && this.ParentCell.style.cellPadding.hasRightPad) {\n padding += this.ParentCell.style.cellPadding.right;\n }\n }\n for (var i = 0; i < this.ParentCell.columnSpan; i++) {\n columnWidth += this.ParentCell.row.grid.columns.getColumn(this.parentCellIndex + i).width;\n }\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n columnWidth -= this.gridColumns.getColumn(j).width;\n columnCount--;\n }\n }\n if ((this.ParentCell.row.grid.style.cellPadding != null || typeof this.ParentCell.row.grid.style.cellPadding != 'undefined')) {\n if (typeof this.ParentCell.row.grid.style.cellPadding.top != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasTopPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.top;\n }\n if (typeof this.ParentCell.row.grid.style.cellPadding.bottom != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasBottomPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n columnWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n if (columnWidth > padding) {\n childGridColumnWidth = (columnWidth - padding) / columnCount;\n this.tempWidth = childGridColumnWidth;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColumnWidth;\n }\n }\n }\n }\n // if (this.ParentCell != null && this.ParentCell.row.width > 0)\n // {\n // if (this.isChildGrid && this.gridSize.width > this.ParentCell.row.width)\n // {\n // widths = this.columns.getDefaultWidths(bounds.width);\n // for (let i : number = 0; i < this.columns.count; i++)\n // {\n // this.columns.getColumn(i).width = widths[i];\n // }\n // }\n // }\n }\n else {\n var widths = [this.columns.count];\n for (var n = 0; n < this.columns.count; n++) {\n widths[n] = 0;\n }\n var cellWidth = 0;\n var cellWidths = 0;\n if ((typeof this.isChildGrid === 'undefined' && typeof this.gridLocation !== 'undefined') || (this.isChildGrid === null && typeof this.gridLocation !== 'undefined')) {\n this.initialWidth = this.gridLocation.width;\n }\n if (this.headers.count > 0) {\n var colCount_1 = this.headers.getHeader(0).cells.count;\n var rowCount = this.headers.count;\n for (var i = 0; i < colCount_1; i++) {\n cellWidth = 0;\n for (var j = 0; j < rowCount; j++) {\n var rowWidth = Math.min(this.initialWidth, this.headers.getHeader(j).cells.getCell(i).width);\n cellWidth = Math.max(cellWidth, rowWidth);\n }\n widths[i] = cellWidth;\n }\n }\n // else {\n // let colCount : number = this.rows.getRow(0).cells.count;\n // let rowCount : number = this.rows.count;\n // for (let i : number = 0; i < colCount; i++) {\n // cellWidth = 0;\n // for (let j : number = 0; j < rowCount; j++) {\n // let rowWidth : number = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n // cellWidth = Math.max(cellWidth, rowWidth);\n // }\n // widths[i] = cellWidth;\n // }\n // }\n cellWidth = 0;\n for (var i = 0, colCount_2 = this.columns.count; i < colCount_2; i++) {\n for (var j = 0, rowCount = this.rows.count; j < rowCount; j++) {\n if ((this.rows.getRow(j).cells.getCell(i).columnSpan == 1 && !this.rows.getRow(j).cells.getCell(i).isCellMergeContinue) || this.rows.getRow(j).cells.getCell(i).value != null) {\n if (this.rows.getRow(j).cells.getCell(i).value != null && !this.rows.getRow(j).grid.style.allowHorizontalOverflow) {\n var value = this.rows.getRow(j).grid.style.cellPadding.right +\n this.rows.getRow(j).grid.style.cellPadding.left\n + this.rows.getRow(j).cells.getCell(i).style.borders.left.width / 2;\n // if (this.initialWidth != 0 )\n // (this.rows.getRow(j).cells.getCell(i).value as PdfGrid).initialWidth = this.initialWidth - value;\n }\n var rowWidth = 0;\n rowWidth = this.initialWidth > 0.0 ? Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width) : this.rows.getRow(j).cells.getCell(i).width;\n // let internalWidth : number = this.rows.getRow(j).cells.getCell(i).width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.left.width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.right.width;\n // let internalHeight : number = this.rows.getRow(j).cells.getCell(i).height;\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.top.width);\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.bottom.width);\n // let isCorrectWidth : boolean = (internalWidth + this.gridLocation.x) > this.currentGraphics.clientSize.width;\n // let isCorrectHeight : boolean = (internalHeight + this.gridLocation.y) > this.currentGraphics.clientSize.height;\n // if (isCorrectWidth || isCorrectHeight) {\n // throw Error('Image size exceeds client size of the page. Can not insert this image');\n // }\n // rowWidth = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n cellWidth = Math.max(widths[i], Math.max(cellWidth, rowWidth));\n cellWidth = Math.max(this.columns.getColumn(i).width, cellWidth);\n }\n }\n if (this.rows.count != 0)\n widths[i] = cellWidth;\n cellWidth = 0;\n }\n for (var i = 0, RowCount = this.rows.count; i < RowCount; i++) {\n for (var j = 0, ColCount = this.columns.count; j < ColCount; j++) {\n if (this.rows.getRow(i).cells.getCell(j).columnSpan > 1) {\n var total = widths[j];\n for (var k = 1; k < this.rows.getRow(i).cells.getCell(j).columnSpan; k++) {\n total += widths[j + k];\n }\n // if (this.rows.getRow(i).cells.getCell(j).width > total)\n // {\n // let extendedWidth : number = this.rows.getRow(i).cells.getCell(j).width - total;\n // extendedWidth = extendedWidth / this.rows.getRow(i).cells.getCell(j).columnSpan;\n // for (let k : number = j; k < j + this.rows.getRow(i).cells.getCell(j).columnSpan; k++)\n // widths[k] += extendedWidth;\n // }\n }\n }\n }\n // if (this.isChildGrid && this.initialWidth != 0)\n // {\n // widths = this.columns.getDefaultWidths(this.initialWidth);\n // }\n for (var i = 0, count = this.columns.count; i < count; i++) {\n if (this.columns.getColumn(i).width <= 0)\n this.columns.getColumn(i).columnWidth = widths[i];\n else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth)\n this.columns.getColumn(i).columnWidth = widths[i];\n }\n var padding = 0;\n var colWidth = 0;\n var colCount = this.columns.count;\n var childGridColWidth = 0;\n colWidth = this.tempWidth;\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n colWidth -= this.gridColumns.getColumn(j).width;\n colCount--;\n }\n }\n // if (this.style.cellSpacing != 0){\n // colWidth -= this.style.cellSpacing * 2;\n // }\n if (colWidth > 0) {\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n colWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n }\n if (colWidth > padding) {\n childGridColWidth = (colWidth) / colCount;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColWidth;\n }\n }\n }\n }\n };\n return PdfGrid;\n}(PdfLayoutElement));\nexport { PdfGrid };\n","/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\nimport { PdfDockStyle, PdfAlignmentStyle, TemplateType } from './enum';\nimport { PointF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTemplate } from './../graphics/figures/pdf-template';\nimport { PdfPage } from './pdf-page';\nimport { RectangleF } from './../drawing/pdf-drawing';\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n if (bounds.x === -0) {\n bounds.x = 0;\n }\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = -actualBounds.x;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = -actualBounds.y;\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = -actualBounds.x;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = -actualBounds.x;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = -actualBounds.x;\n y = -actualBounds.y;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = -actualBounds.y + actualSize.height;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n return PdfPageTemplateElement;\n}());\nexport { PdfPageTemplateElement };\n","/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\nimport { PdfNumberStyle } from './../../pages/enum';\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nvar PdfNumbersConvertor = /** @class */ (function () {\n function PdfNumbersConvertor() {\n }\n // Static methods\n /**\n * Convert string value from page number with correct format.\n * @private\n */\n PdfNumbersConvertor.convert = function (intArabic, numberStyle) {\n var result = '';\n switch (numberStyle) {\n case PdfNumberStyle.None:\n result = '';\n break;\n case PdfNumberStyle.Numeric:\n result = intArabic.toString();\n break;\n case PdfNumberStyle.LowerLatin:\n result = this.arabicToLetter(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.LowerRoman:\n result = this.arabicToRoman(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.UpperLatin:\n result = this.arabicToLetter(intArabic);\n break;\n case PdfNumberStyle.UpperRoman:\n result = this.arabicToRoman(intArabic);\n break;\n }\n return result;\n };\n /**\n * Converts `arabic to roman` letters.\n * @private\n */\n PdfNumbersConvertor.arabicToRoman = function (intArabic) {\n var retval = '';\n var retvalM = this.generateNumber(intArabic, 1000, 'M');\n retval += retvalM.returnValue;\n intArabic = retvalM.intArabic;\n var retvalCM = this.generateNumber(intArabic, 900, 'CM');\n retval += retvalCM.returnValue;\n intArabic = retvalCM.intArabic;\n var retvalD = this.generateNumber(intArabic, 500, 'D');\n retval += retvalD.returnValue;\n intArabic = retvalD.intArabic;\n var retvalCD = this.generateNumber(intArabic, 400, 'CD');\n retval += retvalCD.returnValue;\n intArabic = retvalCD.intArabic;\n var retvalC = this.generateNumber(intArabic, 100, 'C');\n retval += retvalC.returnValue;\n intArabic = retvalC.intArabic;\n var retvalXC = this.generateNumber(intArabic, 90, 'XC');\n retval += retvalXC.returnValue;\n intArabic = retvalXC.intArabic;\n var retvalL = this.generateNumber(intArabic, 50, 'L');\n retval += retvalL.returnValue;\n intArabic = retvalL.intArabic;\n var retvalXL = this.generateNumber(intArabic, 40, 'XL');\n retval += retvalXL.returnValue;\n intArabic = retvalXL.intArabic;\n var retvalX = this.generateNumber(intArabic, 10, 'X');\n retval += retvalX.returnValue;\n intArabic = retvalX.intArabic;\n var retvalIX = this.generateNumber(intArabic, 9, 'IX');\n retval += retvalIX.returnValue;\n intArabic = retvalIX.intArabic;\n var retvalV = this.generateNumber(intArabic, 5, 'V');\n retval += retvalV.returnValue;\n intArabic = retvalV.intArabic;\n var retvalIV = this.generateNumber(intArabic, 4, 'IV');\n retval += retvalIV.returnValue;\n intArabic = retvalIV.intArabic;\n var retvalI = this.generateNumber(intArabic, 1, 'I');\n retval += retvalI.returnValue;\n intArabic = retvalI.intArabic;\n return retval.toString();\n };\n /**\n * Converts `arabic to normal letters`.\n * @private\n */\n PdfNumbersConvertor.arabicToLetter = function (arabic) {\n var stack = this.convertToLetter(arabic);\n var result = '';\n while (stack.length > 0) {\n var num = stack.pop();\n result = this.appendChar(result, num);\n }\n return result.toString();\n };\n /**\n * Generate a string value of an input number.\n * @private\n */\n PdfNumbersConvertor.generateNumber = function (value, magnitude, letter) {\n var numberstring = '';\n while (value >= magnitude) {\n value -= magnitude;\n numberstring += letter;\n }\n return { returnValue: numberstring.toString(), intArabic: value };\n };\n /**\n * Convert a input number into letters.\n * @private\n */\n PdfNumbersConvertor.convertToLetter = function (arabic) {\n if (arabic <= 0) {\n throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');\n }\n var stack = [];\n while (arabic > this.letterLimit) {\n var remainder = arabic % this.letterLimit;\n if (remainder === 0.0) {\n arabic = arabic / this.letterLimit - 1;\n remainder = this.letterLimit;\n }\n else {\n arabic /= this.letterLimit;\n }\n stack.push(remainder);\n }\n stack.push(arabic);\n return stack;\n };\n /**\n * Convert number to actual string value.\n * @private\n */\n PdfNumbersConvertor.appendChar = function (builder, value) {\n var letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);\n builder += letter;\n return builder;\n };\n // Fields\n /**\n * numbers of letters in english [readonly].\n * @default = 26.0\n * @private\n */\n PdfNumbersConvertor.letterLimit = 26.0;\n /**\n * Resturns `acsii start index` value.\n * @default 64\n * @private\n */\n PdfNumbersConvertor.acsiiStartIndex = (65 - 1);\n return PdfNumbersConvertor;\n}());\nexport { PdfNumbersConvertor };\n","/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nvar PdfTemplateValuePair = /** @class */ (function () {\n function PdfTemplateValuePair(template, value) {\n // Fields\n /**\n * Internal variable to store template.\n * @default null\n * @private\n */\n this.pdfTemplate = null;\n /**\n * Intenal variable to store value.\n * @private\n */\n this.content = '';\n if (typeof template === 'undefined') {\n //\n }\n else {\n this.template = template;\n this.value = value;\n }\n }\n Object.defineProperty(PdfTemplateValuePair.prototype, \"template\", {\n // Properties\n /**\n * Gets or sets the template.\n * @private\n */\n get: function () {\n return this.pdfTemplate;\n },\n set: function (value) {\n this.pdfTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplateValuePair.prototype, \"value\", {\n /**\n * Gets or sets the value.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplateValuePair;\n}());\nexport { PdfTemplateValuePair };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nvar PdfMultipleValueField = /** @class */ (function (_super) {\n __extends(PdfMultipleValueField, _super);\n function PdfMultipleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the instance of dictionary values of `graphics and template value pair`.\n * @private\n */\n _this.list = new TemporaryDictionary();\n return _this;\n }\n // Implementation\n /* tslint:disable */\n PdfMultipleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var value = this.getValue(graphics);\n var template = new PdfTemplate(this.getSize());\n this.list.setValue(graphics, new PdfTemplateValuePair(template, value));\n var g = template.graphics;\n var size = this.getSize();\n template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n };\n return PdfMultipleValueField;\n}(PdfAutomaticField));\nexport { PdfMultipleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents PDF document `page number field`.\n * @public\n */\nvar PdfPageNumberField = /** @class */ (function (_super) {\n __extends(PdfPageNumberField, _super);\n function PdfPageNumberField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the page number field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageNumberField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the page number field.\n * @private\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return the `string` value of page number field.\n * @public\n */\n PdfPageNumberField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n result = this.internalGetValue(page);\n return result;\n };\n /**\n * Internal method to `get actual value of page number`.\n * @private\n */\n PdfPageNumberField.prototype.internalGetValue = function (page) {\n var document = page.document;\n var pageIndex = document.pages.indexOf(page) + 1;\n return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);\n };\n return PdfPageNumberField;\n}(PdfMultipleValueField));\nexport { PdfPageNumberField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCompositeField.ts class for EJ2-PDF\n */\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents class which can concatenate multiple automatic fields into single string.\n */\nvar PdfCompositeField = /** @class */ (function (_super) {\n __extends(PdfCompositeField, _super);\n // Constructor\n /**\n * Initialize a new instance of `PdfCompositeField` class.\n * @param font Font of the field.\n * @param brush Color of the field.\n * @param text Content of the field.\n * @param list List of the automatic fields in specific order based on the text content.\n */\n function PdfCompositeField(font, brush, text) {\n var list = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n list[_i - 3] = arguments[_i];\n }\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the array of automatic fields.\n * @private\n */\n _this.internalAutomaticFields = null;\n /**\n * Stores the text value of the field.\n * @private\n */\n _this.internalText = '';\n _this.font = font;\n _this.brush = brush;\n _this.text = text;\n _this.automaticFields = list;\n return _this;\n }\n Object.defineProperty(PdfCompositeField.prototype, \"text\", {\n // Properties\n /**\n * Gets and sets the content of the field.\n * @public\n */\n get: function () {\n return this.internalText;\n },\n set: function (value) {\n this.internalText = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCompositeField.prototype, \"automaticFields\", {\n /**\n * Gets and sets the list of the field to drawn.\n * @public\n */\n get: function () {\n return this.internalAutomaticFields;\n },\n set: function (value) {\n this.internalAutomaticFields = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value generated from the list of automatic fields.\n * @public\n */\n PdfCompositeField.prototype.getValue = function (graphics) {\n var values = [];\n var text = this.text.toString();\n if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {\n for (var i = 0; i < this.automaticFields.length; i++) {\n var automaticField = this.automaticFields[i];\n text = text.replace('{' + i + '}', automaticField.getValue(graphics));\n }\n }\n return text;\n };\n return PdfCompositeField;\n}(PdfMultipleValueField));\nexport { PdfCompositeField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSingleValueField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value in the whole document.\n */\nvar PdfSingleValueField = /** @class */ (function (_super) {\n __extends(PdfSingleValueField, _super);\n // Constructors\n function PdfSingleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /* tslint:disable */\n _this.list = new TemporaryDictionary();\n /* tslint:enable */\n _this.painterGraphics = [];\n return _this;\n }\n PdfSingleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var page = this.getPageFromGraphics(graphics);\n var document = page.document;\n var textValue = this.getValue(graphics);\n /* tslint:disable */\n if (this.list.containsKey(document)) {\n var pair = this.list.getValue(document);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n else {\n var size = this.getSize();\n var template = new PdfTemplate(size);\n this.list.setValue(document, new PdfTemplateValuePair(template, textValue));\n template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n /* tslint:enable */\n };\n return PdfSingleValueField;\n}(PdfAutomaticField));\nexport { PdfSingleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageCountField.ts class for EJ2-PDF\n */\nimport { PdfSingleValueField } from './single-value-field';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\n/**\n * Represents total PDF document page count automatic field.\n */\nvar PdfPageCountField = /** @class */ (function (_super) {\n __extends(PdfPageCountField, _super);\n function PdfPageCountField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageCountField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the field.\n * @public\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value of the content to drawn.\n * @public\n */\n PdfPageCountField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n var document = page.section.parent.document;\n var count = document.pages.count;\n result = PdfNumbersConvertor.convert(count, this.numberStyle);\n return result;\n };\n return PdfPageCountField;\n}(PdfSingleValueField));\nexport { PdfPageCountField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfTrueTypeFont.ts class for EJ2-PDF\n */\nimport { UnicodeTrueTypeFont } from './unicode-true-type-font';\nimport { PdfFont } from './pdf-font';\nimport { PdfFontStyle } from './enum';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfTextDirection } from './../enum';\nimport { RtlRenderer } from './rtl-renderer';\n//https://www.giftofspeed.com/base64-encoder/\nvar PdfTrueTypeFont = /** @class */ (function (_super) {\n __extends(PdfTrueTypeFont, _super);\n function PdfTrueTypeFont(base64String, size, style) {\n var _this = _super.call(this, size) || this;\n /**\n * Indicates whether the font is embedded or not.\n * @private\n */\n _this.isEmbedFont = false;\n /**\n * Indicates whether the font is unicoded or not.\n * @private\n */\n _this.isUnicode = true;\n if (style !== undefined) {\n _this.createFontInternal(base64String, style);\n }\n else {\n _this.createFontInternal(base64String, PdfFontStyle.Regular);\n }\n return _this;\n }\n PdfTrueTypeFont.prototype.equalsToFont = function (font) {\n var result = false;\n //let result : boolean = this.fontInternal.equalsToFont(font);\n return result;\n };\n PdfTrueTypeFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var returnValue = this.getUnicodeLineWidth(line, /*out*/ width, format);\n width = returnValue.width;\n }\n else {\n width = this.fontInternal.getLineWidth(line);\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Returns width of the char.\n */\n PdfTrueTypeFont.prototype.getCharWidth = function (charCode, format) {\n var codeWidth = this.fontInternal.getCharWidth(charCode);\n var size = this.metrics.getSize(format);\n codeWidth *= (0.001 * size);\n return codeWidth;\n };\n //Implementation\n PdfTrueTypeFont.prototype.createFontInternal = function (base64String, style) {\n this.fontInternal = new UnicodeTrueTypeFont(base64String, this.size);\n this.calculateStyle(style);\n this.initializeInternals();\n };\n PdfTrueTypeFont.prototype.calculateStyle = function (style) {\n var iStyle = this.fontInternal.ttfMetrics.macStyle;\n if ((style & PdfFontStyle.Underline) !== 0) {\n iStyle |= PdfFontStyle.Underline;\n }\n if ((style & PdfFontStyle.Strikeout) !== 0) {\n iStyle |= PdfFontStyle.Strikeout;\n }\n this.setStyle(iStyle);\n };\n PdfTrueTypeFont.prototype.initializeInternals = function () {\n var equalFont = null;\n if (PdfDocument.enableCache) {\n // Search for the similar fonts.\n equalFont = PdfDocument.cache.search(this);\n }\n var internals = null;\n // There is not equal font in the cache.\n if (equalFont !== null && equalFont !== undefined) {\n // Get the settings from the cached font.\n internals = equalFont.getInternals();\n var metrics = equalFont.metrics;\n metrics = metrics.clone();\n metrics.size = this.size;\n this.metrics = metrics;\n this.fontInternal = equalFont.fontInternal;\n }\n else {\n if (equalFont == null) {\n if (this.fontInternal instanceof UnicodeTrueTypeFont) {\n this.fontInternal.isEmbed = this.isEmbedFont;\n }\n this.fontInternal.createInternals();\n internals = this.fontInternal.getInternals();\n this.metrics = this.fontInternal.metrics;\n }\n }\n this.metrics.isUnicodeFont = true;\n this.setInternals(internals);\n //this.ttfReader = (this.fontInternal as UnicodeTrueTypeFont).ttfReader;\n };\n /**\n * Stores used symbols.\n */\n PdfTrueTypeFont.prototype.setSymbols = function (text) {\n var internalFont = this.fontInternal;\n if (internalFont != null) {\n internalFont.setSymbols(text);\n }\n };\n Object.defineProperty(PdfTrueTypeFont.prototype, \"Unicode\", {\n /**\n * Property\n *\n */\n get: function () {\n return this.isUnicode;\n },\n enumerable: true,\n configurable: true\n });\n // public get Font() : UnicodeTrueTypeFont {\n // return this.fontInternal as UnicodeTrueTypeFont;\n // }\n PdfTrueTypeFont.prototype.getUnicodeLineWidth = function (line, /*out*/ width, format) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n width = 0;\n var glyphIndices = null;\n var rtlRender = new RtlRenderer();\n /* tslint:disable-next-line:max-line-length */\n var result = rtlRender.getGlyphIndex(line, this, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, /*out*/ glyphIndices, true);\n var resultGlyph = result.success;\n glyphIndices = result.glyphs;\n if (resultGlyph && glyphIndices !== null) {\n var ttfReader = this.fontInternal.ttfReader;\n for (var i = 0, len = glyphIndices.length; i < len; i++) {\n var glyphIndex = glyphIndices[i];\n var glyph = ttfReader.getGlyph(glyphIndex);\n if (glyph !== null && typeof glyph !== 'undefined') {\n width += glyph.width;\n }\n }\n }\n return { success: resultGlyph, width: width };\n };\n return PdfTrueTypeFont;\n}(PdfFont));\nexport { PdfTrueTypeFont };\n","import * as events from '../base/constant';\nimport { PdfDocument, PdfGrid, PdfBorders, PdfPen, PdfPaddings } from '@syncfusion/ej2-pdf-export';\nimport { PdfStandardFont, PdfFontFamily, PdfFontStyle, PdfBitmap } from '@syncfusion/ej2-pdf-export';\nimport { PdfStringFormat, PdfTextAlignment, PdfColor, PdfSolidBrush, PdfTextWebLink } from '@syncfusion/ej2-pdf-export';\nimport { PdfVerticalAlignment, RectangleF, PdfPageTemplateElement } from '@syncfusion/ej2-pdf-export';\nimport { PointF, PdfPageNumberField, PdfCompositeField } from '@syncfusion/ej2-pdf-export';\nimport { PdfPageCountField, SizeF, PdfPageSettings, PdfPageOrientation } from '@syncfusion/ej2-pdf-export';\nimport { PdfTrueTypeFont } from '@syncfusion/ej2-pdf-export';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { Data } from '../actions/data';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { compile, getEnumValue, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getValue } from '@syncfusion/ej2-base';\nimport { getUid, getPrintGridModel, measureColumnDepth, isExportColumns, updateColumnTypeForExportColumns, prepareColumns } from '../base/util';\n/**\n * `PDF Export` module is used to handle the exportToPDF action.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for the Grid PDF Export module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function PdfExport(parent) {\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.customDataSource = false;\n this.isGrouping = false;\n this.headerOnPages = [];\n this.drawPosition = { xPosition: 0, yPosition: 0 };\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.gridPool = {};\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n PdfExport.prototype.init = function (parent) {\n this.exportValueFormatter = new ExportValueFormatter(parent.locale);\n this.pdfDocument = undefined;\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.parent = parent;\n this.isGrouping = false;\n this.isExporting = true;\n parent.id = getUid('main-grid');\n this.gridPool[parent.id] = false;\n this.pdfPageSettings = new PdfPageSettings();\n };\n PdfExport.prototype.exportWithData = function (parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject) {\n var _this = this;\n this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n this.pdfDocument = pdfDoc;\n }\n else {\n this.pdfDocument = new PdfDocument();\n }\n this.processExport(parent, returnType, pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : {});\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n };\n /**\n * Used to map the input data\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PdfExportProperties} pdfExportProperties - specifies the PdfExportProperties\n * @param {boolean} isMultipleExport - specifies the isMultipleExport\n * @param {Object} pdfDoc - specifies the pdfDoc\n * @param {boolean} isBlob - speciies whether it is Blob or not\n * @returns {void}\n */\n PdfExport.prototype.Map = function (parent, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n this.data = new Data(this.parent);\n this.isBlob = isBlob;\n this.gridPool = {};\n var query = new Query();\n if (parent.childGrid && !(!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.hierarchyExportMode === 'None')) {\n parent.expandedRows = getPrintGridModel(parent).expandedRows;\n }\n var args = {\n requestType: 'beforePdfExport', cancel: false,\n headerPageNumbers: [], gridDrawPosition: { xPosition: 0, yPosition: 0 }, generateQuery: false\n };\n var gridObject = 'gridObject';\n args[gridObject] = parent;\n var can = 'cancel';\n var generateQuery = 'generateQuery';\n var header = 'headerPageNumbers';\n var drawPos = 'gridDrawPosition';\n parent.trigger(events.beforePdfExport, args);\n if (args[can] === true) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n return resolve();\n });\n }\n if (isExportColumns(pdfExportProperties)) {\n updateColumnTypeForExportColumns(pdfExportProperties, parent);\n }\n if (args[generateQuery]) {\n query = ExportHelper.getQuery(parent, this.data);\n }\n this.headerOnPages = args[header];\n this.drawPosition = args[drawPos];\n this.parent.log('exporting_begin', this.getModuleName());\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)\n && pdfExportProperties.dataSource instanceof DataManager) {\n return new Promise(function (resolve, reject) {\n pdfExportProperties.dataSource.executeQuery(query).then(function (returnType) {\n _this.exportWithData(parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject);\n });\n });\n }\n else if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve, reject) {\n _this.exportWithData(parent, pdfDoc, resolve, _this.parent.getCurrentViewRecords(), pdfExportProperties, isMultipleExport, reject);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(parent, this.data)));\n allPromise_1.push(this.helper.getColumnData(parent));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n _this.pdfDocument = pdfDoc;\n }\n else {\n _this.pdfDocument = new PdfDocument();\n }\n _this.processExport(parent, e[0], pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : {});\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n });\n }\n };\n PdfExport.prototype.processExport = function (gObj, returnType, pdfExportProperties, isMultipleExport) {\n var _this = this;\n var section = this.pdfDocument.sections.add();\n var pdfGrid;\n this.processSectionExportProperties(section, pdfExportProperties);\n var pdfPage = section.pages.add();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n pdfGrid = _this.processGridExport(gObj, returnType, pdfExportProperties);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n // draw the grid\n var xPosition = 'xPosition';\n var yPosition = 'yPosition';\n pdfGrid.draw(pdfPage, _this.drawPosition[xPosition], _this.drawPosition[yPosition]);\n _this.drawHeader(pdfExportProperties);\n if (!isMultipleExport) {\n // save the PDF\n if (!_this.isBlob) {\n if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.fileName) {\n _this.pdfDocument.save(pdfExportProperties.fileName);\n }\n else {\n _this.pdfDocument.save('Export.pdf');\n }\n }\n else {\n _this.blobPromise = _this.pdfDocument.save();\n }\n _this.pdfDocument.destroy();\n delete gObj.expandedRows;\n }\n return _this.pdfDocument;\n });\n };\n PdfExport.prototype.processSectionExportProperties = function (section, pdfExportProperties) {\n if (!isNullOrUndefined(pdfExportProperties) && (!isNullOrUndefined(pdfExportProperties.pageOrientation)\n || !isNullOrUndefined(pdfExportProperties.pageSize))) {\n this.pdfPageSettings.orientation = (pdfExportProperties.pageOrientation === 'Landscape') ?\n PdfPageOrientation.Landscape : PdfPageOrientation.Portrait;\n this.pdfPageSettings.size = this.getPageSize(pdfExportProperties.pageSize);\n section.setPageSettings(this.pdfPageSettings);\n }\n return section;\n };\n PdfExport.prototype.processGridExport = function (gObj, returnType, pdfExportProperties) {\n var allowHorizontalOverflow = true;\n var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(pdfExportProperties)) {\n this.gridTheme = pdfExportProperties.theme;\n allowHorizontalOverflow = isNullOrUndefined(pdfExportProperties.allowHorizontalOverflow) ?\n true : pdfExportProperties.allowHorizontalOverflow;\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var dataSource = this.processExportProperties(pdfExportProperties, returnType.result);\n var columns = isExportColumns(pdfExportProperties) ?\n prepareColumns(pdfExportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n columns = columns.filter(function (columns) { return isNullOrUndefined(columns.commands); });\n var isGrouping = false;\n if (gObj.groupSettings.columns.length) {\n isGrouping = true;\n }\n if (gObj.childGrid && !isNullOrUndefined(pdfExportProperties)) {\n gObj.hierarchyPrintMode = pdfExportProperties.hierarchyExportMode || 'Expanded';\n }\n // create a grid\n var pdfGrid = new PdfGrid();\n // get header theme style\n var headerThemeStyle = this.getHeaderThemeStyle();\n var border = headerThemeStyle.border;\n var headerFont = headerThemeStyle.font;\n var headerBrush = headerThemeStyle.brush;\n var returnValue = helper.getHeaders(columns, this.hideColumnInclude);\n // Column collection with respect to the records in the grid\n var gridColumns = returnValue.columns;\n // process grid header content\n pdfGrid = this.processGridHeaders(gObj.groupSettings.columns.length, pdfGrid, returnValue.rows, gridColumns, border, headerFont, headerBrush, gObj, allowHorizontalOverflow, columns);\n // set alignment, width and type of the values of the column\n this.setColumnProperties(gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow);\n var captionThemeStyle = this.getSummaryCaptionThemeStyle();\n if (!isNullOrUndefined(dataSource) && dataSource.length) {\n if (isGrouping) {\n if (!isNullOrUndefined(captionThemeStyle.border)) {\n border = captionThemeStyle.border;\n }\n this.processGroupedRecords(pdfGrid, dataSource, gridColumns, gObj, border, 0, captionThemeStyle.font, captionThemeStyle.\n brush, captionThemeStyle.backgroundBrush, returnType, pdfExportProperties, helper, 0);\n }\n else {\n this.processRecord(border, gridColumns, gObj, dataSource, pdfGrid, 0, pdfExportProperties, helper, 0);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var sRows = void 0;\n var column = summaryModel.getColumns();\n column = column.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n if (this.customDataSource) {\n sRows = summaryModel.generateRows(dataSource, returnType.aggregates);\n }\n else if (this.currentViewData) {\n sRows = summaryModel.generateRows(this.parent.getCurrentViewRecords(), returnType.aggregates);\n }\n else if (isGrouping) {\n sRows = summaryModel.generateRows(dataSource.records, returnType.aggregates);\n }\n else {\n sRows = summaryModel.generateRows(returnType.result, returnType.aggregates, null, null, column);\n }\n this.processAggregates(sRows, pdfGrid, border, captionThemeStyle.font, captionThemeStyle.brush, captionThemeStyle.backgroundBrush, false);\n }\n }\n else {\n var row = pdfGrid.rows.addRow();\n row.style.setBorder(border);\n }\n return pdfGrid;\n };\n PdfExport.prototype.getSummaryCaptionThemeStyle = function () {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.caption)) {\n var fontSize = !isNullOrUndefined(this.gridTheme.caption.fontSize) ? this.gridTheme.caption.fontSize : 9.75;\n var fontFamily = !isNullOrUndefined(this.gridTheme.caption.fontName) ?\n this.getFontFamily(this.gridTheme.caption.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.caption);\n var pdfColor = new PdfColor(0, 0, 0);\n if (!isNullOrUndefined(this.gridTheme.caption.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.caption.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var borderCaption = this.gridTheme.caption.border ? this.getBorderStyle(this.gridTheme.caption.border) : null;\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.caption.font)) {\n font = this.gridTheme.caption.font;\n }\n return { font: font, brush: new PdfSolidBrush(pdfColor), backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)),\n border: borderCaption };\n }\n else {\n //Material theme\n return { font: new PdfStandardFont(PdfFontFamily.Helvetica, 9.75), brush: new PdfSolidBrush(new PdfColor(0, 0, 0)),\n backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)) };\n }\n };\n PdfExport.prototype.getGridPdfFont = function (args) {\n var fontFamily = 'fontFamily';\n var fontSize = 'fontSize';\n var fontStyle = 'fontStyle';\n var isTrueType = 'isTrueType';\n var style = 0;\n if (args.header && args.header.font) {\n var headerFont = args.header.font[fontFamily];\n var headerSize = args.header.font[fontSize];\n var headerStyle = args.header.font[fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[headerStyle]) ? 0 : PdfFontStyle[headerStyle]);\n if (args.header.font[isTrueType]) {\n args.header.font = new PdfTrueTypeFont(headerFont, headerSize, style);\n }\n else {\n var fontFamily_1 = !isNullOrUndefined(headerFont) ?\n this.getFontFamily(headerFont) : PdfFontFamily.Helvetica;\n args.header.font = new PdfStandardFont(fontFamily_1, headerSize, style);\n }\n }\n if (args.caption && args.caption.font) {\n var captionFont = args.caption.font[fontFamily];\n var captionSize = args.caption.font[fontSize];\n var captionStyle = args.caption.font[fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[captionStyle]) ? 0 : PdfFontStyle[captionStyle]);\n if (args.caption.font[isTrueType]) {\n args.caption.font = new PdfTrueTypeFont(captionFont, captionSize, style);\n }\n else {\n var fontFamily_2 = !isNullOrUndefined(captionFont) ?\n this.getFontFamily(captionFont) : PdfFontFamily.Helvetica;\n args.caption.font = new PdfStandardFont(fontFamily_2, captionSize, style);\n }\n }\n if (args.record && args.record.font) {\n var recordFont = args.record.font[fontFamily];\n var recordSize = args.record.font[fontSize];\n var recordStyle = args.record.font[fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[recordStyle]) ? 0 : PdfFontStyle[recordStyle]);\n if (args.record.font[isTrueType]) {\n args.record.font = new PdfTrueTypeFont(recordFont, recordSize, style);\n }\n else {\n var fontFamily_3 = !isNullOrUndefined(recordFont) ?\n this.getFontFamily(recordFont) : PdfFontFamily.Helvetica;\n args.record.font = new PdfStandardFont(fontFamily_3, recordSize, style);\n }\n }\n };\n PdfExport.prototype.getHeaderThemeStyle = function () {\n var border = new PdfBorders();\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.header)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.header.fontName) ?\n this.getFontFamily(this.gridTheme.header.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.header);\n var fontSize = !isNullOrUndefined(this.gridTheme.header.fontSize) ? this.gridTheme.header.fontSize : 10.5;\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.header.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.header.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.header.font)) {\n font = this.gridTheme.header.font;\n }\n return { border: this.getBorderStyle(this.gridTheme.header.border), font: font, brush: new PdfSolidBrush(pdfColor) };\n }\n else {\n //Material theme\n border.all = new PdfPen(new PdfColor(234, 234, 234));\n return { border: border, font: new PdfStandardFont(PdfFontFamily.Helvetica, 10.5),\n brush: new PdfSolidBrush(new PdfColor(102, 102, 102)) };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.processGroupedRecords = function (pdfGrid, dataSource, gridColumns, gObj, border, level, font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index) {\n var _this = this;\n var groupIndex = level;\n var _loop_1 = function (dataSourceItems) {\n var row = pdfGrid.rows.addRow();\n var col = gObj.getColumnByField(dataSourceItems.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: dataSourceItems.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = this_1.parent.getColumnByField(dataSourceItems.field).headerText + ': ' + (!col.enableGroupByFormat ? this_1.exportValueFormatter.formatCellValue(args) : dataSourceItems.key) + ' - ' + dataSourceItems.count + (dataSource.count > 1 ? ' items' : ' item');\n var cArgs = { captionText: value, type: 'PDF' };\n this_1.parent.trigger(events.exportGroupCaption, cArgs, function (cArgs) {\n row.cells.getCell(groupIndex).value = cArgs.captionText;\n row.cells.getCell(groupIndex + 1).style.stringFormat = new PdfStringFormat(PdfTextAlignment.Left);\n row.style.setBorder(border);\n row.style.setFont(font);\n row.style.setTextBrush(brush);\n row.style.setBackgroundBrush(backgroundBrush);\n var sRows;\n var captionSummaryModel = new CaptionSummaryModelGenerator(gObj);\n if (!isNullOrUndefined(dataSourceItems.items.records)) {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n }\n else {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n }\n if (!isNullOrUndefined(sRows) && sRows.length === 0) {\n row.cells.getCell(groupIndex + 1).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex);\n _this.processGroupedRecords(pdfGrid, dataSourceItems.items, gridColumns, gObj, border, (groupIndex + 1), font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index);\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false);\n }\n else {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex);\n index = _this.processRecord(border, gridColumns, gObj, dataSourceItems.items, pdfGrid, (groupIndex + 1), pdfExportProperties, helper, index);\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n var isGroupedFooter = true;\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false, null, null, isGroupedFooter);\n }\n });\n };\n var this_1 = this;\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var dataSourceItems = dataSource_1[_i];\n _loop_1(dataSourceItems);\n }\n };\n PdfExport.prototype.processGridHeaders = function (childLevels, pdfGrid, rows, gridColumn, border, headerFont, headerBrush, grid, allowHorizontalOverflow, eCols) {\n var _this = this;\n var columnCount = gridColumn.length + childLevels;\n var depth = measureColumnDepth(eCols);\n var cols = eCols;\n var index = 0;\n if (this.parent.allowGrouping) {\n index = this.parent.groupSettings.columns.length;\n }\n pdfGrid.columns.add(columnCount);\n pdfGrid.headers.add(rows.length);\n var applyTextAndSpan = function (rowIdx, colIdx, col, rowSpan, colSpan) {\n var gridHeader = pdfGrid.headers.getHeader(rowIdx);\n var pdfCell = gridHeader.cells.getCell(colIdx);\n var cell = rows[rowIdx].cells[colIdx];\n if (!isNullOrUndefined(col.headerTextAlign)) {\n pdfCell.style.stringFormat = _this.getHorizontalAlignment(col.headerTextAlign);\n }\n if (rowSpan > 0) {\n pdfCell.rowSpan = rowSpan;\n pdfCell.style.stringFormat = _this.getVerticalAlignment('Bottom', pdfCell.style.stringFormat, col.textAlign);\n }\n if (colSpan > 0) {\n pdfCell.columnSpan = colSpan;\n }\n gridHeader.style.setBorder(border);\n gridHeader.style.setFont(headerFont);\n gridHeader.style.setTextBrush(headerBrush);\n pdfCell.value = col.headerText;\n if (!isNullOrUndefined(cell) && (cell.cellType === CellType.HeaderIndent || cell.cellType === CellType.DetailHeader)) {\n pdfCell.value = '';\n pdfCell.width = 20;\n }\n var args = {\n cell: pdfCell,\n gridCell: cell,\n style: pdfCell.style\n };\n _this.parent.trigger(events.pdfHeaderQueryCellInfo, args);\n };\n var recuHeader = function (cols, depth, spanCnt, colIndex, rowIndex, isRoot) {\n var cidx = 0;\n for (var i = 0; i < cols.length; i++) {\n if (isRoot) {\n cidx = cidx + spanCnt + (i === 0 ? 0 : -1);\n colIndex = cidx;\n spanCnt = 0;\n }\n if (!isRoot && !cols[i].visible) {\n colIndex = colIndex - 1;\n }\n if (cols[i].columns && cols[i].columns.length) {\n var newSpanCnt = recuHeader(cols[i].columns, depth - 1, 0, i + colIndex, rowIndex + 1, false);\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[i], 0, newSpanCnt);\n spanCnt = spanCnt + newSpanCnt;\n colIndex = colIndex + newSpanCnt - 1;\n }\n else if (cols[i].visible || _this.hideColumnInclude) {\n spanCnt++;\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[i], depth, 0);\n }\n }\n return spanCnt;\n };\n recuHeader(cols, depth, 0, 0, 0, true);\n if (pdfGrid.columns.count >= 6 && allowHorizontalOverflow) {\n pdfGrid.style.allowHorizontalOverflow = true;\n }\n return pdfGrid;\n };\n PdfExport.prototype.processExportProperties = function (pdfExportProperties, dataSource) {\n if (!isNullOrUndefined(pdfExportProperties)) {\n if (!isNullOrUndefined(pdfExportProperties.theme)) {\n this.gridTheme = pdfExportProperties.theme;\n }\n var clientSize = this.pdfPageSettings.size;\n this.drawHeader(pdfExportProperties);\n if (!isNullOrUndefined(pdfExportProperties.footer)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footer = pdfExportProperties.footer;\n var position = new PointF(0, ((clientSize.width - 80) - (footer.fromBottom * 0.75)));\n var size = new SizeF((clientSize.width - 80), (footer.height * 0.75));\n var bounds = new RectangleF(position, size);\n this.pdfDocument.template.bottom = this.drawPageTemplate(new PdfPageTemplateElement(bounds), footer);\n }\n if (!isNullOrUndefined(pdfExportProperties.includeHiddenColumn) && !this.isGrouping) {\n this.hideColumnInclude = pdfExportProperties.includeHiddenColumn;\n }\n if (!isNullOrUndefined(pdfExportProperties.dataSource)) {\n if (!(pdfExportProperties.dataSource instanceof DataManager)) {\n dataSource = pdfExportProperties.dataSource;\n }\n this.customDataSource = true;\n this.currentViewData = false;\n }\n else if (!isNullOrUndefined(pdfExportProperties.exportType)) {\n if (pdfExportProperties.exportType === 'CurrentPage') {\n dataSource = this.parent.currentViewData;\n this.currentViewData = true;\n this.customDataSource = false;\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n return dataSource;\n };\n PdfExport.prototype.drawHeader = function (pdfExportProperties) {\n var _this = this;\n var clientSize = this.pdfPageSettings.size;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.header)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var header = pdfExportProperties.header;\n var position = new PointF(0, header.fromTop);\n var size = new SizeF((clientSize.width - 80), (header.height * 0.75));\n var bounds = new RectangleF(position, size);\n if (!this.headerOnPages.length) {\n this.pdfDocument.template.top = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n }\n else {\n var headerTemplate_1 = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n this.headerOnPages.filter(function (index) {\n if (index - 1 >= 0 && index - 1 < _this.pdfDocument.pages.count - 1) {\n _this.pdfDocument.pages.getPageByIndex(index - 1).graphics\n .drawPdfTemplate(headerTemplate_1.template, new PointF(0, 0));\n }\n });\n }\n }\n };\n PdfExport.prototype.drawPageTemplate = function (template, element) {\n for (var _i = 0, _a = element.contents; _i < _a.length; _i++) {\n var content = _a[_i];\n this.processContentValidation(content);\n switch (content.type) {\n case 'Text':\n if (content.value === '' || content.value === undefined || content.value === null || typeof content.value !== 'string') {\n throw new Error('please enter the valid input value in text content...');\n }\n this.drawText(template, content);\n break;\n case 'PageNumber':\n this.drawPageNumber(template, content);\n break;\n case 'Image':\n if (content.src === undefined || content.src === null || content.src === '') {\n throw new Error('please enter the valid base64 string in image content...');\n }\n this.drawImage(template, content);\n break;\n case 'Line':\n this.drawLine(template, content);\n break;\n default:\n throw new Error('Please set valid content type...');\n }\n }\n return template;\n };\n PdfExport.prototype.processContentValidation = function (content) {\n if (content.type === undefined || content.type === null) {\n throw new Error('please set valid content type...');\n }\n else {\n if (content.type === 'Line') {\n if (content.points === undefined || content.points === null) {\n throw new Error('please enter valid points in ' + content.type + ' content...');\n }\n else {\n if (content.points.x1 === undefined || content.points.x1 === null || typeof content.points.x1 !== 'number') {\n throw new Error('please enter valid x1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y1 === undefined || content.points.y1 === null || typeof content.points.y1 !== 'number') {\n throw new Error('please enter valid y1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.x2 === undefined || content.points.x2 === null || typeof content.points.x2 !== 'number') {\n throw new Error('please enter valid x2 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y2 === undefined || content.points.y2 === null || typeof content.points.y2 !== 'number') {\n throw new Error('please enter valid y2 co-ordinate in ' + content.type + ' points...');\n }\n }\n }\n else {\n if (content.position === undefined || content.position === null) {\n throw new Error('please enter valid position in ' + content.type + ' content...');\n }\n else {\n if (content.position.x === undefined || content.position.x === null || typeof content.position.x !== 'number') {\n throw new Error('please enter valid x co-ordinate in ' + content.type + ' position...');\n }\n if (content.position.y === undefined || content.position.y === null || typeof content.position.y !== 'number') {\n throw new Error('please enter valid y co-ordinate in ' + content.type + ' position...');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawText = function (pageTemplate, content) {\n var font = this.getFont(content);\n var brush = this.getBrushFromContent(content);\n var pen = null;\n if (!isNullOrUndefined(content.style.textPenColor)) {\n var penColor = this.hexToRgb(content.style.textPenColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n if (brush == null && pen == null) {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var value = content.value.toString();\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var format = new PdfStringFormat();\n var result = this.setContentFormat(content, format);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, result.size.width, result.size.height, result.format);\n }\n else {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, format);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawPageNumber = function (documentHeader, content) {\n var font = this.getFont(content);\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n else {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var pageNumber = new PdfPageNumberField(font, brush);\n pageNumber.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n var compositeField;\n var format;\n if (!isNullOrUndefined(content.format)) {\n var total = '$total';\n var current = '$current';\n if (content.format.indexOf(total) !== -1 && content.format.indexOf(current) !== -1) {\n var pageCount = new PdfPageCountField(font);\n pageCount.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n if (content.format.indexOf(total) > content.format.indexOf(current)) {\n format = content.format.replace(current, '0');\n format = format.replace(total, '1');\n }\n else {\n format = content.format.replace(current, '1');\n format = format.replace(total, '0');\n }\n compositeField = new PdfCompositeField(font, brush, format, pageNumber, pageCount);\n }\n else if (content.format.indexOf(current) !== -1 && content.format.indexOf(total) === -1) {\n format = content.format.replace(current, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n else {\n var pageCount = new PdfPageCountField(font);\n format = content.format.replace(total, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageCount);\n }\n }\n else {\n format = '{0}';\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var result = this.setContentFormat(content, compositeField.stringFormat);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n compositeField.stringFormat = result.format;\n compositeField.bounds = new RectangleF(x, y, result.size.width, result.size.height);\n }\n compositeField.draw(documentHeader.graphics, x, y);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawImage = function (documentHeader, content) {\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var width = (!isNullOrUndefined(content.size)) ? (content.size.width * 0.75) : undefined;\n var height = (!isNullOrUndefined(content.size)) ? (content.size.height * 0.75) : undefined;\n var image = new PdfBitmap(content.src);\n if (!isNullOrUndefined(width)) {\n documentHeader.graphics.drawImage(image, x, y, width, height);\n }\n else {\n documentHeader.graphics.drawImage(image, x, y);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawLine = function (documentHeader, content) {\n var x1 = content.points.x1 * 0.75;\n var y1 = content.points.y1 * 0.75;\n var x2 = content.points.x2 * 0.75;\n var y2 = content.points.y2 * 0.75;\n var pen = this.getPenFromContent(content);\n if (!isNullOrUndefined(content.style) && content.style !== null) {\n if (!isNullOrUndefined(content.style.penSize) && content.style.penSize !== null && typeof content.style.penSize === 'number') {\n pen.width = content.style.penSize * 0.75;\n }\n pen.dashStyle = this.getDashStyle(content.style.dashStyle);\n }\n documentHeader.graphics.drawLine(pen, x1, y1, x2, y2);\n };\n PdfExport.prototype.processAggregates = function (sRows, pdfGrid, border, font, brush, backgroundBrush, isCaption, captionRow, groupIndex, isGroupedFooter) {\n for (var _i = 0, sRows_1 = sRows; _i < sRows_1.length; _i++) {\n var row = sRows_1[_i];\n var leastCaptionSummaryIndex = -1;\n var index = 0;\n var isEmpty = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = [];\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n var cell = row.cells[index];\n if (cell.cellType === CellType.DetailFooterIntent) {\n i--;\n index++;\n continue;\n }\n if (!this.hideColumnInclude) {\n while (cell.visible === undefined) {\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if (!isNullOrUndefined(captionRow)) {\n if (!isNullOrUndefined(captionRow.cells.getCell(i).value)) {\n var args = { row: row, type: 'GroupCaption', style: captionRow.cells };\n this.parent.trigger(events.pdfAggregateQueryCellInfo, args);\n value.push('');\n value.push(captionRow.cells.getCell(i).value);\n isEmpty = false;\n if (!isCaption) {\n i += 1;\n }\n }\n else {\n value.push('');\n }\n }\n else {\n value.push('');\n }\n i += 1;\n index = index + 1;\n cell = row.cells[index];\n }\n while (!isNullOrUndefined(cell.visible) && !cell.visible) {\n index = index + 1;\n cell = row.cells[index];\n }\n }\n if (cell.isDataCell) {\n var templateFn = {};\n if (!isNullOrUndefined(cell.column.footerTemplate) || !isNullOrUndefined(cell.column.groupCaptionTemplate)\n || !isNullOrUndefined(cell.column.groupFooterTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getTemplateFunction(templateFn, i, leastCaptionSummaryIndex, cell);\n templateFn = result.templateFunction;\n leastCaptionSummaryIndex = result.leastCaptionSummaryIndex;\n var txt = void 0;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if (this.parent.isReact || this.parent.isVue) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n value.push(txt[0].textContent);\n isEmpty = false;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getSummaryWithoutTemplate(row.data[cell.column.field]);\n if (!isNullOrUndefined(result)) {\n value.push(result);\n }\n }\n }\n else {\n value.push('');\n }\n if (isEmpty && value[i] !== '' && !isNullOrUndefined(value[i]) && value[i] !== null) {\n isEmpty = false;\n }\n index += 1;\n }\n if (isCaption) {\n for (var i = (this.parent.groupSettings.columns.length) + 1; i < value.length - 1; i++) {\n value[i] = value[i + 1];\n }\n }\n if (!isEmpty) {\n if (!isCaption) {\n var gridRow = pdfGrid.rows.addRow();\n gridRow.style.setBorder(border);\n gridRow.style.setFont(font);\n gridRow.style.setTextBrush(brush);\n gridRow.style.setBackgroundBrush(backgroundBrush);\n var args = {\n row: row, type: isGroupedFooter ? 'GroupFooter' : 'Footer', style: gridRow.cells\n };\n this.parent.trigger(events.pdfAggregateQueryCellInfo, args);\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n gridRow.cells.getCell(i).value = value[i].toString();\n }\n }\n else {\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n captionRow.cells.getCell(i).value = value[i].toString();\n if (i === (groupIndex + 1) && leastCaptionSummaryIndex !== -1 && leastCaptionSummaryIndex !== 1) {\n captionRow.cells.getCell(i).columnSpan = leastCaptionSummaryIndex - (groupIndex + 1);\n }\n else if (i === (groupIndex + 1) && leastCaptionSummaryIndex === -1) {\n captionRow.cells.getCell(i).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getTemplateFunction = function (templateFn, index, leastCaptionSummaryIndex, cell) {\n if (!isNullOrUndefined(cell.column.footerTemplate) && cell.cellType === CellType.Summary) {\n templateFn[getEnumValue(CellType, CellType.Summary)] = compile(cell.column.footerTemplate);\n }\n else if (!isNullOrUndefined(cell.column.groupCaptionTemplate)) {\n if (leastCaptionSummaryIndex === -1) {\n leastCaptionSummaryIndex = index;\n }\n templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = compile(cell.column.groupCaptionTemplate);\n }\n else {\n templateFn[getEnumValue(CellType, CellType.GroupSummary)] = compile(cell.column.groupFooterTemplate);\n }\n return { templateFunction: templateFn, leastCaptionSummaryIndex: leastCaptionSummaryIndex };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getSummaryWithoutTemplate = function (data) {\n if (!isNullOrUndefined(data.Sum)) {\n return data.Sum;\n }\n else if (!isNullOrUndefined(data.Average)) {\n return data.Average;\n }\n else if (!isNullOrUndefined(data.Max)) {\n return data.Max;\n }\n else if (!isNullOrUndefined(data.Min)) {\n return data.Min;\n }\n else if (!isNullOrUndefined(data.Count)) {\n return data.Count;\n }\n else if (!isNullOrUndefined(data.TrueCount)) {\n return data.TrueCount;\n }\n else if (!isNullOrUndefined(data.FalseCount)) {\n return data.FalseCount;\n }\n else if (!isNullOrUndefined(data.Custom)) {\n return data.Custom;\n }\n };\n /**\n * Set alignment, width and type of the values of the column\n *\n * @param {Column[]} gridColumns - specifies the grid column\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {ExportHelper} helper - specifies the helper\n * @param {IGrid} gObj - specifies the IGrid\n * @param {boolean} allowHorizontalOverflow - specifies the allowHorizontalOverflow\n * @returns {void}\n */\n PdfExport.prototype.setColumnProperties = function (gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow) {\n var startIndex = gObj.groupSettings.columns.length;\n for (var i = 0; i < startIndex; i++) {\n pdfGrid.columns.getColumn(i).width = 20;\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (!isNullOrUndefined(gridColumns[i].textAlign)) {\n pdfGrid.columns.getColumn(i + startIndex).format = this.getHorizontalAlignment(gridColumns[i].textAlign);\n }\n // Need to add width consideration with % value\n if (pdfGrid.style.allowHorizontalOverflow && !isNullOrUndefined(gridColumns[i].width) && allowHorizontalOverflow) {\n pdfGrid.columns.getColumn(i + startIndex).width = typeof gridColumns[i].width === 'number' ?\n gridColumns[i].width * 0.75 : helper.getConvertedWidth(gridColumns[i].width) * 0.75;\n }\n }\n };\n /**\n * set default style properties of each rows in exporting grid\n *\n * @param {PdfGridRow} row - specifies the PdfGridRow\n * @param {PdfBorders} border - specifies the PdfBorders\n * @returns {PdfGrid} returns the pdfgrid\n * @private\n */\n PdfExport.prototype.setRecordThemeStyle = function (row, border) {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.record)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.record.fontName) ?\n this.getFontFamily(this.gridTheme.record.fontName) : PdfFontFamily.Helvetica;\n var fontSize = !isNullOrUndefined(this.gridTheme.record.fontSize) ? this.gridTheme.record.fontSize : 9.75;\n var fontStyle = this.getFontStyle(this.gridTheme.record);\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.record.font)) {\n font = this.gridTheme.record.font;\n }\n row.style.setFont(font);\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.record.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.record.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n row.style.setTextBrush(new PdfSolidBrush(pdfColor));\n }\n else {\n row.style.setTextBrush(new PdfSolidBrush(new PdfColor(0, 0, 0)));\n }\n var borderRecord = this.gridTheme && this.gridTheme.record &&\n this.gridTheme.record.border ? this.getBorderStyle(this.gridTheme.record.border) : border;\n row.style.setBorder(borderRecord);\n return row;\n };\n /**\n * generate the formatted cell values\n *\n * @param {PdfBorders} border - specifies the border\n * @param {Column[]} columns - specifies the columns\n * @param {IGrid} gObj - specifies the IGrid\n * @param {Object[]} dataSource - specifies the datasource\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {number} startIndex - specifies the startindex\n * @param {PdfExportProperties} pdfExportProperties - specifies the pdfExportProperties\n * @param {ExportHelper} helper - specifies the helper\n * @param {number} rowIndex - specifies the rowIndex\n * @returns {number} returns the number of records\n * @private\n */\n PdfExport.prototype.processRecord = function (border, columns, gObj, dataSource, pdfGrid, startIndex, pdfExportProperties, helper, rowIndex) {\n var rows = helper.getGridRowModel(columns, dataSource, gObj, rowIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n rowIndex++;\n // create a new row and set default style properties\n var gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var cellLength = row.cells.length;\n for (var j = 0; j < cellLength; j++) {\n var gridCell = row.cells[j];\n if (gridCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gridCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var foreignKeyData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n foreignKeyData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, foreignKeyData);\n }\n var data = row.data;\n var cell = gridRow.cells.getCell(j);\n var args = {\n data: data,\n value: value,\n column: column,\n style: undefined,\n colSpan: 1,\n cell: cell\n };\n args.value = args.column.type === 'boolean' && typeof args.value === 'string' ? args.value :\n this.exportValueFormatter.formatCellValue(args, gObj.isServerRendered);\n this.parent.trigger(events.pdfQueryCellInfo, args);\n if (!isNullOrUndefined(args.image)) {\n args.value = new PdfBitmap(args.image.base64);\n }\n cell.value = args.value;\n if (!isNullOrUndefined(args.hyperLink)) {\n // create the Text Web Link\n var textLink = new PdfTextWebLink();\n // set the hyperlink\n textLink.url = args.hyperLink.target;\n // set the link text\n textLink.text = args.hyperLink.displayText || args.hyperLink.target;\n // set the font\n textLink.font = new PdfStandardFont(PdfFontFamily.Helvetica, 9.75);\n // set the brush and pen for the text color\n textLink.brush = new PdfSolidBrush(new PdfColor(51, 102, 187));\n cell.value = textLink;\n }\n if (!isNullOrUndefined(args.style)) {\n this.processCellStyle(cell, args);\n }\n if (args.colSpan > 1) {\n if ((j + 1 + args.colSpan) > gridRow.cells.count) {\n args.colSpan = gridRow.cells.count - (j + 1);\n }\n cell.columnSpan = args.colSpan;\n for (var i = 1; i < cell.columnSpan; i++) {\n var spanCell = gridRow.cells.getCell(j + i);\n spanCell.value = '';\n }\n j += (args.colSpan - 1);\n }\n }\n if (row.isExpand) {\n var gridRow_1 = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var cell = gridRow_1.cells.getCell(startIndex);\n cell.columnSpan = gridRow_1.cells.count - (startIndex);\n cell.style.cellPadding = new PdfPaddings(10, 10, 10, 10);\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType) ?\n pdfExportProperties.exportType : 'AllPages';\n var returnValue = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnValue.childGrid;\n var element = returnValue.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n var args = { childGrid: childGridObj, row: row, cell: cell, exportProperties: pdfExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(cell, childGridObj, pdfExportProperties);\n childGridObj.appendTo(element);\n }\n this.parent.notify(events.exportRowDataBound, { type: 'pdf', rowObj: row });\n }\n return rowIndex;\n };\n PdfExport.prototype.childGridCell = function (cell, childGridObj, pdfExportProperties) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n cell.value = _this.processGridExport(childGridObj, result, pdfExportProperties);\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return cell;\n };\n };\n PdfExport.prototype.processCellStyle = function (cell, args) {\n if (!isNullOrUndefined(args.style.backgroundColor)) {\n var backColor = this.hexToRgb(args.style.backgroundColor);\n cell.style.backgroundBrush = new PdfSolidBrush(new PdfColor(backColor.r, backColor.g, backColor.b));\n }\n if (!isNullOrUndefined(args.style.textAlignment)) {\n cell.style.stringFormat = this.getHorizontalAlignment(args.style.textAlignment);\n }\n if (!isNullOrUndefined(args.style.cellPadding)) {\n cell.style.cellPadding = args.style.cellPadding;\n }\n if (!isNullOrUndefined(args.style.verticalAlignment)) {\n cell.style.stringFormat = this.getVerticalAlignment(args.style.verticalAlignment, cell.style.stringFormat);\n }\n if (!isNullOrUndefined(args.style.textBrushColor)) {\n var textBrushColor = this.hexToRgb(args.style.textBrushColor);\n cell.style.textBrush = new PdfSolidBrush(new PdfColor(textBrushColor.r, textBrushColor.g, textBrushColor.b));\n }\n if (!isNullOrUndefined(args.style.textPenColor)) {\n var textPenColor = this.hexToRgb(args.style.textPenColor);\n cell.style.textPen = new PdfPen(new PdfColor(textPenColor.r, textPenColor.g, textPenColor.b));\n }\n if (!isNullOrUndefined(args.style.fontFamily) || !isNullOrUndefined(args.style.fontSize) || !isNullOrUndefined(args.style.bold) ||\n !isNullOrUndefined(args.style.italic) || !isNullOrUndefined(args.style.underline) || !isNullOrUndefined(args.style.strikeout)) {\n cell.style.font = this.getFont(args);\n }\n if (!isNullOrUndefined(args.style.border)) {\n var border = new PdfBorders();\n var borderWidth = args.style.border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? (borderWidth * 0.75) : (undefined);\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(args.style.border.color)) {\n var borderColor = this.hexToRgb(args.style.border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(args.style.border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(args.style.border.dashStyle);\n }\n border.all = pen;\n cell.style.borders = border;\n }\n if (!isNullOrUndefined(args.style.paragraphIndent)) {\n cell.style.stringFormat = new PdfStringFormat();\n cell.style.stringFormat.paragraphIndent = args.style.paragraphIndent;\n }\n };\n /**\n * set text alignment of each columns in exporting grid\n *\n * @param {string} textAlign - specifies the textAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getHorizontalAlignment = function (textAlign, format) {\n if (format === undefined) {\n format = new PdfStringFormat();\n }\n switch (textAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n case 'Left':\n format.alignment = PdfTextAlignment.Left;\n break;\n }\n return format;\n };\n /**\n * set vertical alignment of each columns in exporting grid\n *\n * @param {string} verticalAlign - specifies the verticalAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @param {string} textAlign - specifies the text align\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getVerticalAlignment = function (verticalAlign, format, textAlign) {\n if (format === undefined) {\n format = new PdfStringFormat();\n format = this.getHorizontalAlignment(textAlign, format);\n }\n switch (verticalAlign) {\n case 'Bottom':\n format.lineAlignment = PdfVerticalAlignment.Bottom;\n break;\n case 'Middle':\n format.lineAlignment = PdfVerticalAlignment.Middle;\n break;\n case 'Top':\n format.lineAlignment = PdfVerticalAlignment.Top;\n break;\n }\n return format;\n };\n PdfExport.prototype.getFontFamily = function (fontFamily) {\n switch (fontFamily) {\n case 'TimesRoman':\n return 2;\n case 'Courier':\n return 1;\n case 'Symbol':\n return 3;\n case 'ZapfDingbats':\n return 4;\n default:\n return 0;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getFont = function (content) {\n if (content.font) {\n return content.font;\n }\n var fontSize = (!isNullOrUndefined(content.style.fontSize)) ? (content.style.fontSize * 0.75) : 9.75;\n var fontFamily = (!isNullOrUndefined(content.style.fontFamily)) ?\n (this.getFontFamily(content.style.fontFamily)) : PdfFontFamily.TimesRoman;\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(content.style.bold) && content.style.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(content.style.italic) && content.style.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(content.style.underline) && content.style.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(content.style.strikeout) && content.style.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return new PdfStandardFont(fontFamily, fontSize, fontStyle);\n };\n PdfExport.prototype.getPageNumberStyle = function (pageNumberType) {\n switch (pageNumberType) {\n case 'LowerLatin':\n return 2;\n case 'LowerRoman':\n return 3;\n case 'UpperLatin':\n return 4;\n case 'UpperRoman':\n return 5;\n default:\n return 1;\n }\n };\n PdfExport.prototype.setContentFormat = function (content, format) {\n if (!isNullOrUndefined(content.size)) {\n var width = content.size.width * 0.75;\n var height = content.size.height * 0.75;\n format = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);\n if (!isNullOrUndefined(content.style.hAlign)) {\n switch (content.style.hAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n default:\n format.alignment = PdfTextAlignment.Left;\n }\n }\n if (!isNullOrUndefined(content.style.vAlign)) {\n format = this.getVerticalAlignment(content.style.vAlign, format);\n }\n return { format: format, size: new SizeF(width, height) };\n }\n return null;\n };\n PdfExport.prototype.getPageSize = function (pageSize) {\n switch (pageSize) {\n case 'Letter':\n return new SizeF(612, 792);\n case 'Note':\n return new SizeF(540, 720);\n case 'Legal':\n return new SizeF(612, 1008);\n case 'A0':\n return new SizeF(2380, 3368);\n case 'A1':\n return new SizeF(1684, 2380);\n case 'A2':\n return new SizeF(1190, 1684);\n case 'A3':\n return new SizeF(842, 1190);\n case 'A5':\n return new SizeF(421, 595);\n case 'A6':\n return new SizeF(297, 421);\n case 'A7':\n return new SizeF(210, 297);\n case 'A8':\n return new SizeF(148, 210);\n case 'A9':\n return new SizeF(105, 148);\n // case 'A10':\n // return new SizeF(74, 105);\n case 'B0':\n return new SizeF(2836, 4008);\n case 'B1':\n return new SizeF(2004, 2836);\n case 'B2':\n return new SizeF(1418, 2004);\n case 'B3':\n return new SizeF(1002, 1418);\n case 'B4':\n return new SizeF(709, 1002);\n case 'B5':\n return new SizeF(501, 709);\n case 'Archa':\n return new SizeF(648, 864);\n case 'Archb':\n return new SizeF(864, 1296);\n case 'Archc':\n return new SizeF(1296, 1728);\n case 'Archd':\n return new SizeF(1728, 2592);\n case 'Arche':\n return new SizeF(2592, 3456);\n case 'Flsa':\n return new SizeF(612, 936);\n case 'HalfLetter':\n return new SizeF(396, 612);\n case 'Letter11x17':\n return new SizeF(792, 1224);\n case 'Ledger':\n return new SizeF(1224, 792);\n default:\n return new SizeF(595, 842);\n }\n };\n PdfExport.prototype.getDashStyle = function (dashStyle) {\n switch (dashStyle) {\n case 'Dash':\n return 1;\n case 'Dot':\n return 2;\n case 'DashDot':\n return 3;\n case 'DashDotDot':\n return 4;\n default:\n return 0;\n }\n };\n PdfExport.prototype.getPenFromContent = function (content) {\n var pen = new PdfPen(new PdfColor(0, 0, 0));\n if (!isNullOrUndefined(content.style) && content.style !== null && !isNullOrUndefined(content.style.penColor)) {\n var penColor = this.hexToRgb(content.style.penColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n return pen;\n };\n PdfExport.prototype.getBrushFromContent = function (content) {\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n /* tslint:disable-next-line:max-line-length */\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n return brush;\n };\n PdfExport.prototype.hexToRgb = function (hex) {\n if (hex === null || hex === '' || hex.length !== 7) {\n throw new Error('please set valid hex value for color...');\n }\n hex = hex.substring(1);\n var bigint = parseInt(hex, 16);\n var r = (bigint >> 16) & 255;\n var g = (bigint >> 8) & 255;\n var b = bigint & 255;\n return { r: r, g: g, b: b };\n };\n PdfExport.prototype.getFontStyle = function (theme) {\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(theme) && theme.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(theme) && theme.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(theme) && theme.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(theme) && theme.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return fontStyle;\n };\n PdfExport.prototype.getBorderStyle = function (border) {\n var borders = new PdfBorders();\n if (!isNullOrUndefined(border)) {\n var borderWidth = border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? borderWidth * 0.75 : undefined;\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(border.color)) {\n var borderColor = this.hexToRgb(border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(border.dashStyle);\n }\n borders.all = pen;\n }\n else {\n borders.all = new PdfPen(new PdfColor(234, 234, 234));\n }\n return borders;\n };\n PdfExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","import { EventHandler, detach, formatUnit, Browser, closest } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, parentsUntil, gridActionHandler, Global } from '../base/util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nexport var resizeClassList = {\n root: 'e-rhandler',\n suppress: 'e-rsuppress',\n icon: 'e-ricon',\n helper: 'e-rhelper',\n header: 'th.e-headercell',\n cursor: 'e-rcursor'\n};\n/**\n * `Resize` module is used to handle Resize to fit for columns.\n *\n * @hidden\n * @private\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for the Grid resize module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Resize(parent) {\n this.tapped = false;\n this.isDblClk = true;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n var columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map(function (x) { return x.field; }) : (typeof fName === 'string') ? [fName] : fName;\n this.findColumn(columnName);\n };\n Resize.prototype.autoFit = function () {\n var newarray = this.parent.getColumns().filter(function (c) { return c.autoFit === true; })\n .map(function (c) { return c.field || c.headerText; });\n if (newarray.length > 0) {\n this.autoFitColumns(newarray);\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n this.widthService.setWidthToTable();\n }\n };\n Resize.prototype.resizeColumn = function (fName, index, id) {\n var gObj = this.parent;\n var tWidth = 0;\n var headerTable;\n var contentTable;\n var footerTable;\n var headerDivTag = 'e-gridheader';\n var contentDivTag = literals.gridContent;\n var footerDivTag = literals.gridFooter;\n var indentWidth = 0;\n var uid = id ? id : this.parent.getUidByColumnField(fName);\n var columnIndex = this.parent.getNormalizedColumnIndex(uid);\n var headerTextClone;\n var contentTextClone;\n var footerTextClone;\n var columnIndexByField = this.parent.getColumnIndexByField(fName);\n var left = gObj.getFrozenColumns() || gObj.getFrozenLeftColumnsCount();\n var movable = gObj.getMovableColumnsCount();\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (gObj.isFrozenGrid()) {\n var col = gObj.getColumnByField(fName);\n if (col.getFreezeTableName() === literals.frozenLeft) {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === 'movable') {\n headerTable = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).children[0];\n contentTable = gObj.getContent().querySelector('.' + literals.movableContent).children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n headerTable = gObj.getHeaderContent().querySelector('.e-frozen-right-header').children[0];\n contentTable = gObj.getContent().querySelector('.e-frozen-right-content').children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n }\n }\n }\n else {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n }\n }\n var indentWidthClone = [].slice.call(headerTable.querySelector('tr').getElementsByClassName('e-grouptopleftcell'));\n if (indentWidthClone.length > 0) {\n for (var i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[i].offsetWidth;\n }\n }\n var detailsElement = contentTable.querySelector('.e-detailrowcollapse') ||\n contentTable.querySelector('.e-detailrowexpand');\n if ((this.parent.detailTemplate || this.parent.childGrid) && detailsElement) {\n indentWidth += detailsElement.offsetWidth;\n }\n var headerText = [headerTextClone];\n var contentText = [];\n var footerText = [];\n if (footerTable) {\n for (var i = 0; i < footerTextClone.length; i++) {\n footerText[i] = footerTextClone[i].cloneNode(true);\n }\n }\n for (var i = 0; i < contentTextClone.length; i++) {\n contentText[i] = contentTextClone[i].cloneNode(true);\n }\n var wHeader = this.createTable(headerTable, headerText, headerDivTag);\n var wContent = this.createTable(contentTable, contentText, contentDivTag);\n var wFooter = null;\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[columnIndexByField];\n var width = columnbyindex.width = formatUnit(Math.max(wHeader, wContent, wFooter));\n var colMaxWidth = columnbyindex.maxWidth && parseFloat(columnbyindex.maxWidth.toString());\n if (parseInt(width, 10) > colMaxWidth) {\n columnbyindex.width = colMaxWidth;\n }\n this.widthService.setColumnWidth(gObj.getColumns()[columnIndexByField]);\n var result = gObj.getColumns().some(function (x) { return x.width === null\n || x.width === undefined || x.width.length <= 0; });\n if (result === false) {\n var element = gObj.getColumns();\n for (var i = 0; i < element.length; i++) {\n if (element[i].visible) {\n tWidth = tWidth + parseFloat(element[i].width);\n }\n }\n }\n var calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0 && !gObj.isFrozenGrid()) {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n calcTableWidth = '100%';\n }\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n if (!isNullOrUndefined(footerTable)) {\n footerTable.style.width = formatUnit(calcTableWidth);\n }\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n headerTable.classList.add('e-tableborder');\n contentTable.classList.add('e-tableborder');\n }\n else {\n headerTable.classList.remove('e-tableborder');\n contentTable.classList.remove('e-tableborder');\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n Resize.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.widthService = null;\n this.unwireEvents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n Resize.prototype.findColumn = function (fName) {\n for (var i = 0; i < fName.length; i++) {\n var fieldName = fName[i];\n var columnIndex = this.parent.getColumnIndexByField(fieldName);\n var column = this.parent.getColumns()[columnIndex];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex);\n }\n }\n };\n /**\n * To create table for autofit\n *\n * @param {Element} table - specifies the table\n * @param {Element[]} text - specifies the text\n * @param {string} tag - specifies the tag name\n * @returns {number} returns the number\n * @hidden\n */\n Resize.prototype.createTable = function (table, text, tag) {\n var myTableDiv = this.parent.createElement('div');\n myTableDiv.className = this.parent.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.parent.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.parent.createElement('table');\n myTable.className = table.className;\n myTable.classList.add('e-resizetable');\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var myTr = this.parent.createElement('tr');\n for (var i = 0; i < text.length; i++) {\n var tr = myTr.cloneNode();\n tr.className = table.querySelector('tr').className;\n tr.appendChild(text[i]);\n myTable.appendChild(tr);\n }\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n var offsetWidthValue = myTable.getBoundingClientRect().width;\n document.body.removeChild(myTableDiv);\n return Math.ceil(offsetWidthValue);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.refreshHeight, this);\n this.parent.on(events.initialEnd, this.wireEvents, this);\n this.parent.on(events.contentReady, this.autoFit, this);\n this.parent.on(events.refreshHandlers, this.refreshHeight, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.refreshHeight);\n this.parent.off(events.initialEnd, this.wireEvents);\n this.parent.off(events.refreshHandlers, this.refreshHeight);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.render = function () {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n };\n Resize.prototype.refreshHeight = function () {\n var element = this.getResizeHandlers();\n for (var i = 0; i < element.length; i++) {\n if (element[i].parentElement.offsetHeight > 0) {\n element[i].style.height = element[i].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\n };\n Resize.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart, this);\n EventHandler.add(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit, this);\n };\n Resize.prototype.unwireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart);\n EventHandler.remove(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit);\n };\n Resize.prototype.getResizeHandlers = function () {\n return this.parent.isFrozenGrid() ?\n [].slice.call(this.parent.getHeaderContent().getElementsByClassName(resizeClassList.root))\n : [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.root));\n };\n Resize.prototype.setHandlerHeight = function () {\n var element = [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.suppress));\n for (var i = 0; i < element.length; i++) {\n element[i].style.height = element[i].parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.callAutoFit = function (e) {\n if (e.target.classList.contains('e-rhandler')) {\n var col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n var header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n };\n Resize.prototype.touchResizeStart = function (e) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n return this.resizeStart(e);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.callAutoFit(e);\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.target.classList.contains('e-rhandler')) {\n if (!this.helper) {\n if (this.getScrollBarWidth() === 0) {\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n for (var _i = 0, _a = this.refreshColumnWidth(); _i < _a.length; _i++) {\n var col = _a[_i];\n this.widthService.setColumnWidth(col);\n }\n this.widthService.setWidthToTable();\n }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n if (this.parent.getVisibleFrozenColumns()) {\n var mtbody = this.parent.getMovableContentTbody();\n var ftbody = this.parent.getFrozenLeftContentTbody();\n var frtbody = this.parent.getFrozenRightContentTbody();\n var mtr = [].slice.call(mtbody.querySelectorAll('tr'));\n var ftr = [].slice.call(ftbody.querySelectorAll('tr'));\n var frTr = [];\n if (this.parent.getFrozenMode() === literals.leftRight && frtbody) {\n frTr = [].slice.call(frtbody.querySelectorAll('tr'));\n }\n var _loop_1 = function (i) {\n gridActionHandler(this_1.parent, function (tableName, row) {\n if (_this.parent.rowHeight) {\n row[i].style.height = _this.parent.rowHeight + 'px';\n }\n else {\n row[i].style.removeProperty('height');\n }\n }, [ftr, mtr, frTr]);\n };\n var this_1 = this;\n for (var i = 0; i < mtr.length; i++) {\n _loop_1(i);\n }\n }\n this.parentElementWidth = this.parent.element.getBoundingClientRect().width;\n this.appendHelper();\n this.column = this.getTargetColumn(e);\n this.pageX = this.getPointX(e);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if (this.parent.enableRtl) {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n else {\n this.minMove = parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n }\n else if (this.parent.enableRtl) {\n this.minMove = parseFloat(this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n else {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n this.minMove += this.pageX;\n }\n if (Browser.isDevice && !this.helper.classList.contains(resizeClassList.icon)) {\n this.helper.classList.add(resizeClassList.icon);\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n var args = { e: e, column: this.column };\n this.parent.trigger(events.resizeStart, args, function (args) {\n if (args.cancel || _this.parent.isEdit) {\n _this.cancelResizeAction();\n return;\n }\n EventHandler.add(document, Browser.touchEndEvent, _this.resizeEnd, _this);\n EventHandler.add(_this.parent.element, Browser.touchMoveEvent, _this.resizing, _this);\n _this.updateCursor('add');\n });\n }\n }\n };\n Resize.prototype.cancelResizeAction = function (removeEvents) {\n if (removeEvents) {\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n }\n if (Browser.isDevice) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n detach(this.helper);\n this.refresh();\n };\n Resize.prototype.getWidth = function (width, minWidth, maxWidth) {\n if (minWidth && width < minWidth) {\n return minWidth;\n }\n else if ((maxWidth && width > maxWidth)) {\n return maxWidth;\n }\n else {\n return width;\n }\n };\n Resize.prototype.updateResizeEleHeight = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[i].style.height = this.element.parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.getColData = function (column, mousemove) {\n return {\n width: parseFloat(isNullOrUndefined(this.widthService.getWidth(column)) || this.widthService.getWidth(column) === 'auto' ? '0'\n : this.widthService.getWidth(column).toString()) + mousemove,\n minWidth: column.minWidth ? parseFloat(column.minWidth.toString()) : null,\n maxWidth: column.maxWidth ? parseFloat(column.maxWidth.toString()) : null\n };\n };\n Resize.prototype.resizing = function (e) {\n if (isNullOrUndefined(this.column)) {\n return;\n }\n var offsetWidth = 0;\n if (isNullOrUndefined(this.column)) {\n offsetWidth = parentsUntil(this.element, 'th').offsetWidth;\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.setHelperHeight();\n }\n var pageX = this.getPointX(e);\n var mousemove = this.parent.enableRtl ? -(pageX - this.pageX) : (pageX - this.pageX);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n mousemove = this.parent.enableRtl ? (pageX - this.pageX) : (this.pageX - pageX);\n }\n var colData = this.getColData(this.column, mousemove);\n if (!colData.width) {\n colData.width = closest(this.element, 'th').offsetWidth;\n }\n var width = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n this.parent.log('resize_min_max', { column: this.column, width: width });\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if ((this.parent.enableRtl && this.minMove >= pageX) || (!this.parent.enableRtl && this.minMove <= pageX)) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n }\n if ((this.column.getFreezeTableName() !== literals.frozenRight\n && ((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX)))\n || (this.column.getFreezeTableName() === literals.frozenRight && ((this.parent.enableRtl && this.minMove >= pageX)\n || (!this.parent.enableRtl && this.minMove <= pageX)))) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n if (width !== parseFloat(isNullOrUndefined(this.column.width) || this.column.width === 'auto' ?\n offsetWidth.toString() : this.column.width.toString())) {\n this.pageX = pageX;\n this.column.width = formatUnit(width);\n var args = {\n e: e,\n column: this.column\n };\n this.parent.trigger(events.onResize, args);\n if (args.cancel) {\n this.cancelResizeAction(true);\n return;\n }\n var columns = [this.column];\n var finalColumns = [this.column];\n if (this.column.columns) {\n columns = this.getSubColumns(this.column, []);\n columns = this.calulateColumnsWidth(columns, false, mousemove);\n finalColumns = this.calulateColumnsWidth(columns, true, mousemove);\n }\n for (var _i = 0, finalColumns_1 = finalColumns; _i < finalColumns_1.length; _i++) {\n var col = finalColumns_1[_i];\n this.widthService.setColumnWidth(col, null, 'resize');\n }\n this.updateHelper();\n }\n this.isDblClk = false;\n };\n Resize.prototype.calulateColumnsWidth = function (columns, isUpdate, mousemove) {\n var finalColumns = [];\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var totalWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n totalWidth += parseFloat(columns[i].width.toString());\n }\n var colData = this.getColData(col, (parseFloat(col.width)) * mousemove / totalWidth);\n var colWidth = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n if ((colWidth !== parseFloat(col.width.toString()))) {\n if (isUpdate) {\n col.width = formatUnit(colWidth < 1 ? 1 : colWidth);\n }\n finalColumns.push(col);\n }\n }\n return finalColumns;\n };\n Resize.prototype.getSubColumns = function (column, subColumns) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false && col.allowResizing) {\n if (col.columns) {\n this.getSubColumns(col, subColumns);\n }\n else {\n subColumns.push(col);\n }\n }\n }\n return subColumns;\n };\n Resize.prototype.resizeEnd = function (e) {\n if (!this.helper || this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n detach(this.helper);\n var args = { e: e, column: this.column };\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var cTable = content.querySelector('.' + literals.movableContent) ? content.querySelector('.' + literals.movableContent) : content;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(events.resizeStop, args);\n closest(this.element, '.e-headercell').classList.add('e-resized');\n if (parentsUntil(this.element, 'e-frozenheader')) {\n this.isFrozenColResized = true;\n }\n else {\n this.isFrozenColResized = false;\n }\n if (this.parent.isFrozenGrid()) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(events.textWrapRefresh, { case: 'textwrap' });\n }\n this.refresh();\n this.doubleTapEvent(e);\n this.isDblClk = true;\n };\n Resize.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Resize.prototype.refreshColumnWidth = function () {\n var columns = this.parent.getColumns();\n for (var _i = 0, _a = [].slice.apply(this.parent.getHeaderContent().querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, columns_2 = columns; _b < columns_2.length; _b++) {\n var column = columns_2[_b];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === column.uid && column.visible) {\n column.width = ele.getBoundingClientRect().width;\n break;\n }\n }\n }\n return columns;\n };\n Resize.prototype.refreshStackedColumnWidth = function () {\n for (var _i = 0, _a = this.parent.getStackedColumns(this.parent.columns); _i < _a.length; _i++) {\n var stackedColumn = _a[_i];\n stackedColumn.width = this.getStackedWidth(stackedColumn, 0);\n }\n };\n Resize.prototype.getStackedWidth = function (column, width) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false) {\n if (col.columns) {\n this.getStackedWidth(col, width);\n }\n else {\n width += col.width;\n }\n }\n }\n return width;\n };\n Resize.prototype.getTargetColumn = function (e) {\n var cell = closest(e.target, resizeClassList.header);\n cell = cell.querySelector('.e-headercelldiv') || cell.querySelector('.e-stackedheadercelldiv');\n var uid = cell.getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.updateCursor = function (action) {\n var headerRows = [].slice.call(this.parent.getHeaderContent().querySelectorAll('th'));\n headerRows.push(this.parent.element);\n for (var _i = 0, headerRows_1 = headerRows; _i < headerRows_1.length; _i++) {\n var row = headerRows_1[_i];\n row.classList[action](resizeClassList.cursor);\n }\n };\n Resize.prototype.refresh = function () {\n this.column = null;\n this.pageX = null;\n this.element = null;\n this.helper = null;\n };\n Resize.prototype.appendHelper = function () {\n this.helper = this.parent.createElement('div', {\n className: resizeClassList.helper\n });\n this.parent.element.appendChild(this.helper);\n this.setHelperHeight();\n };\n Resize.prototype.setHelperHeight = function () {\n var isFrozen = this.parent.isFrozenGrid();\n var height = isFrozen ? this.parent.getContent().querySelector('.' + literals.content).offsetHeight\n : this.parent.getContent().offsetHeight - this.getScrollBarWidth();\n var rect = closest(this.element, resizeClassList.header);\n var tr = [].slice.call(this.parent.getHeaderContent().querySelectorAll('tr'));\n var right = this.parent.getFrozenRightColumnsCount();\n if (isFrozen) {\n if (parentsUntil(rect, literals.movableHeader)) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelectorAll('tr'));\n }\n else if (right && parentsUntil(rect, 'e-frozen-right-header')) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelectorAll('tr'));\n }\n else {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-left-header').querySelectorAll('tr'));\n }\n }\n for (var i = tr.indexOf(rect.parentElement); i < tr.length && i > -1; i++) {\n height += tr[i].offsetHeight;\n }\n var pos = this.calcPos(rect);\n if (parentsUntil(rect, 'e-frozen-right-header')) {\n pos.left += (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1);\n }\n else {\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n }\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\n if (this.parent.enableVirtualization) {\n this.helper.classList.add('e-virtual-rhandler');\n }\n };\n Resize.prototype.getScrollBarWidth = function (height) {\n var ele = this.parent.getContent().firstChild;\n return (ele.scrollHeight > ele.clientHeight && height) ||\n ele.scrollWidth > ele.clientWidth ? getScrollBarWidth() : 0;\n };\n Resize.prototype.removeHelper = function (e) {\n var cls = e.target.classList;\n if (!(cls.contains(resizeClassList.root) || cls.contains(resizeClassList.icon)) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n detach(this.helper);\n this.refresh();\n }\n };\n Resize.prototype.updateHelper = function () {\n var rect = closest(this.element, resizeClassList.header);\n var left;\n if (parentsUntil(rect, 'e-frozen-right-header')) {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1));\n }\n else {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n }\n var borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n if (this.parent.isFrozenGrid()) {\n var table = closest(rect, '.' + literals.table);\n var fLeft = table.offsetLeft;\n if (left < fLeft) {\n left = fLeft;\n }\n }\n this.helper.style.left = left + 'px';\n };\n Resize.prototype.calcPos = function (elem) {\n var parentOffset = {\n top: 0,\n left: 0\n };\n var offset = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var offsetParent = parentsUntil(elem, 'e-grid') || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n };\n Resize.prototype.doubleTapEvent = function (e) {\n var _this = this;\n if (this.getUserAgent() && this.isDblClk) {\n if (!this.tapped) {\n this.tapped = setTimeout(function () {\n _this.tapped = null;\n }, 300);\n }\n else {\n clearTimeout(this.tapped);\n this.callAutoFit(e);\n this.tapped = null;\n }\n }\n };\n Resize.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n Resize.prototype.timeoutHandler = function () {\n this.tapped = null;\n };\n return Resize;\n}());\nexport { Resize };\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { role: 'link', tabindex: '-1', 'aria-label': 'Goto Page ' + i,\n href: 'javascript:void(0);', name: 'Goto page' + i }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n var target = e.target;\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!target.classList.contains('e-disable') && !isNullOrUndefined(target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var pageNo;\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n if (pageNo <= pagerObj.totalPages) {\n this.links[i].style.display = '';\n this.links[i].setAttribute('index', pageNo.toString());\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[i].classList.add('e-pager-default');\n }\n else {\n this.links[i].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[i].style.display = 'none';\n }\n classList(this.links[i], [], ['e-currentitem', 'e-active']);\n }\n this.first.setAttribute('index', '1');\n this.last.setAttribute('index', pagerObj.totalPages.toString());\n this.prev.setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.next.setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.pagerElement.querySelector('.e-mfirst').setAttribute('index', '1');\n this.pagerElement.querySelector('.e-mlast').setAttribute('index', pagerObj.totalPages.toString());\n this.pagerElement.querySelector('.e-mprev').setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.pagerElement.querySelector('.e-mnext').setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.PP.setAttribute('index', (parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount).toString());\n this.NP.setAttribute('index', (parseInt(this.links[this.links.length - 1].getAttribute('index'), 10) + 1).toString());\n };\n NumericContainer.prototype.updateStyles = function () {\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n classList(this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount], ['e-currentitem', 'e-active'], []);\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, append, isBlazor } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar', attrs: { 'aria-label': 'Pager Information' } });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n if (isBlazor()) {\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('CurrentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('TotalItemsInfo'), [pagerObj.totalRecordsCount || 0]);\n }\n else {\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n }\n this.pageNoMsgElem.parentElement.setAttribute('aria-label', this.pageNoMsgElem.textContent + this.pageCountMsgElem.textContent);\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[i].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, L10n, Browser, isBlazor } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren } from '../grid/base/util';\n/**\n * Represents the `Pager` component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @hidden\n */\n function Pager(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.pageRefresh = 'pager-refresh';\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager',\n previousPagerTooltip: 'Go to previous pager',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager',\n PreviousPagerTooltip: 'Go to previous pager',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.initLocalization();\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.refresh();\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate()) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = isBlazor() ? this.getPagerTemplate()(data, this, 'template', tempId, this.isStringTemplate) :\n this.isVue ? this.getPagerTemplate()(data, this) : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.containerModule.refresh();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('FirstPageTooltip') : this.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('PreviousPageTooltip') :\n this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('NextPageTooltip') :\n this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('LastPageTooltip') :\n this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[i]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return this.isReact && this.template && typeof (this.template) !== 'string';\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","import { createElement, remove, isBlazor } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '1' } });\n this.pagerCons = createElement('span', { className: 'e-constant', innerHTML: isBlazor() ?\n this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown') });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n cssClass: 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n this.pagerModule.trigger('dropDownChanged', { pageSize: parseInt(this.dropDownListObject.value, 10) });\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.pagerModule.pageSize === this.pagerModule.totalRecordsCount) {\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerAllDropDown') :\n this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n }\n else {\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown');\n }\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[i] = parseInt(item[i], 10) ? item[i].toString() : (this.pagerModule.getLocalizedLabel(item[i]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[i]) : item[i];\n }\n return item;\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n this.dropDownListObject[prop] = value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': 'Pager external message' } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n remove(this.element);\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n this.pagerObj = new Pager(pagerObj);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[i].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[i].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[i]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[j]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[prop] = newProp[prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.pageSize = e.oldProp.pageSize;\n gObj.pageSettings.pageSize = e.newProp.pageSize;\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n this.pageSettings.currentPage = e.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, type: events.actionBegin\n };\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n e.cancel = true;\n }\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact) {\n this.parent.addEventListener(events.created, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return this.parent.isReact && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact) {\n this.parent.removeEventListener(events.created, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","import { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { createElement, closest, remove, classList, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { parentsUntil, isActionPrevent, isGroupAdaptive, updatecloneRow, getComplexFieldID, isComplexField } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * The `Group` module is used to handle group action.\n */\nvar Group = /** @class */ (function () {\n /**\n * Constructor for Grid group module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {GroupSettingsModel} groupSettings - specifies the GroupSettingsModel\n * @param {string[]} sortedColumns - specifies the sortedColumns\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Group(parent, groupSettings, sortedColumns, serviceLocator) {\n var _this = this;\n //Internal variables\n this.sortRequired = true;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.reorderingColumns = [];\n this.visualElement = createElement('div', {\n className: 'e-cloneproperties e-dragclone e-gdclone',\n styles: 'line-height:23px', attrs: { action: 'grouping' }\n });\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = e.sender.target;\n var element = target.classList.contains('e-groupheadercell') ? target :\n parentsUntil(target, 'e-groupheadercell');\n if (!element || (!target.classList.contains('e-drag') && _this.groupSettings.allowReordering)) {\n return false;\n }\n _this.column = gObj.getColumnByField(element.firstElementChild.getAttribute('ej-mappingname'));\n _this.visualElement.textContent = element.textContent;\n _this.visualElement.style.width = element.offsetWidth + 2 + 'px';\n _this.visualElement.style.height = element.offsetHeight + 2 + 'px';\n _this.visualElement.setAttribute('e-mappinguid', _this.column.uid);\n gObj.element.appendChild(_this.visualElement);\n return _this.visualElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.dragStart = function (e) {\n _this.parent.element.classList.add('e-ungroupdrag');\n };\n this.drag = function (e) {\n if (_this.groupSettings.allowReordering) {\n _this.animateDropper(e);\n }\n var target = e.target;\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n _this.parent.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: _this.column });\n if (!_this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, literals.gridContent) || parentsUntil(target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n };\n this.dragStop = function (e) {\n _this.parent.element.classList.remove('e-ungroupdrag');\n var preventDrop = !(parentsUntil(e.target, literals.gridContent) || parentsUntil(e.target, 'e-gridheader'));\n if (_this.groupSettings.allowReordering && preventDrop) {\n remove(e.helper);\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n _this.rearrangeGroup();\n }\n else if (!(parentsUntil(e.target, 'e-grid'))) {\n var field = _this.parent.getColumnByUid(e.helper.getAttribute('e-mappinguid')).field;\n if (_this.groupSettings.columns.indexOf(field) !== -1) {\n _this.ungroupColumn(field);\n }\n }\n return;\n }\n else if (preventDrop) {\n remove(e.helper);\n return;\n }\n };\n this.animateDropper = function (e) {\n var uid = _this.parent.element.querySelector('.e-cloneproperties').getAttribute('e-mappinguid');\n var dragField = _this.parent.getColumnByUid(uid).field;\n var parent = parentsUntil(e.target, 'e-groupdroparea');\n var dropTarget = parentsUntil(e.target, 'e-group-animator');\n var grouped = [].slice.call(_this.element.getElementsByClassName('e-groupheadercell'))\n .map(function (e) { return e.querySelector('div').getAttribute('ej-mappingname'); });\n var cols = JSON.parse(JSON.stringify(grouped));\n if (dropTarget || parent) {\n if (dropTarget) {\n var dropField = dropTarget.querySelector('div[ej-mappingname]').getAttribute('ej-mappingname');\n var dropIndex = +(dropTarget.getAttribute('index'));\n if (dropField !== dragField) {\n var dragIndex = cols.indexOf(dragField);\n if (dragIndex !== -1) {\n cols.splice(dragIndex, 1);\n }\n var flag = dropIndex !== -1 && dragIndex === dropIndex;\n cols.splice(dropIndex + (flag ? 1 : 0), 0, dragField);\n }\n }\n else if (parent && cols.indexOf(dragField) === -1) {\n cols.push(dragField);\n }\n _this.element.innerHTML = '';\n if (cols.length && !_this.element.classList.contains('e-grouped')) {\n _this.element.classList.add('e-grouped');\n }\n _this.reorderingColumns = cols;\n for (var c = 0; c < cols.length; c++) {\n _this.addColToGroupDrop(cols[c]);\n }\n }\n else {\n _this.addLabel();\n _this.removeColFromGroupDrop(dragField);\n }\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n _this.element.classList.remove('e-hover');\n remove(e.droppedElement);\n _this.aria.setDropTarget(_this.parent.element.querySelector('.e-groupdroparea'), false);\n _this.aria.setGrabbed(_this.parent.getHeaderTable().querySelector('[aria-grabbed=true]'), false);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n _this.parent.log('action_disabled_column', { moduleName: _this.getModuleName(), columnName: column.headerText });\n return;\n }\n _this.groupColumn(column.field);\n };\n this.contentRefresh = true;\n this.aria = new AriaService();\n this.parent = parent;\n this.groupSettings = groupSettings;\n this.serviceLocator = serviceLocator;\n this.sortedColumns = sortedColumns;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n this.groupGenerator = new GroupModelGenerator(this.parent);\n }\n Group.prototype.addLabel = function () {\n if (!this.element.getElementsByClassName('e-group-animator').length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n };\n Group.prototype.rearrangeGroup = function () {\n this.sortRequired = false;\n this.updateModel();\n };\n Group.prototype.columnDrag = function (e) {\n if (this.groupSettings.allowReordering) {\n this.animateDropper(e);\n }\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!parentsUntil(e.target, 'e-groupdroparea') &&\n !(this.parent.allowReordering && parentsUntil(e.target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n if (e.target.classList.contains('e-groupdroparea')) {\n this.element.classList.add('e-hover');\n }\n else {\n this.element.classList.remove('e-hover');\n }\n };\n Group.prototype.columnDragStart = function (e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\n var dropArea = this.parent.element.querySelector('.e-groupdroparea');\n this.aria.setDropTarget(dropArea, e.column.allowGrouping);\n var element = e.target.classList.contains('e-headercell') ? e.target : parentsUntil(e.target, 'e-headercell');\n this.aria.setGrabbed(element, true, !e.column.allowGrouping);\n };\n Group.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') === 'grouping') {\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n return;\n }\n this.ungroupColumn(column.field);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.groupComplete, this.onActionComplete, this);\n this.parent.on(events.ungroupComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.columnDrag, this.columnDrag, this);\n this.parent.on(events.columnDragStart, this.columnDragStart, this);\n this.parent.on(events.headerDrop, this.columnDrop, this);\n this.parent.on(events.columnDrop, this.columnDrop, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.sortComplete, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.groupAggregates, this.onGroupAggregates, this);\n this.parent.on('blazor-action-begin', this.blazorActionBegin, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.groupComplete, this.onActionComplete);\n this.parent.off(events.ungroupComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.columnDrag, this.columnDrag);\n this.parent.off(events.columnDragStart, this.columnDragStart);\n this.parent.off(events.columnDrop, this.columnDrop);\n this.parent.off(events.headerDrop, this.columnDrop);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.sortComplete, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.groupAggregates, this.onGroupAggregates);\n this.parent.off('blazor-action-begin', this.blazorActionBegin);\n this.parent.off('group-expand-collapse', this.updateExpand);\n };\n Group.prototype.blazorActionBegin = function () {\n if (this.parent.allowGrouping && !this.parent.isCollapseStateEnabled()) {\n this.expandAll();\n }\n };\n Group.prototype.initialEnd = function () {\n var gObj = this.parent;\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.onEmpty, this.initialEnd);\n if (this.parent.getColumns().length && this.groupSettings.columns.length) {\n this.contentRefresh = false;\n for (var _i = 0, _a = gObj.groupSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.groupColumn(col);\n }\n this.contentRefresh = true;\n }\n };\n Group.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\n e.preventDefault();\n switch (e.action) {\n case 'altDownArrow':\n case 'altUpArrow':\n // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var rows = gObj.getContentTable().querySelector(literals.tbody).children;\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var grpRow = void 0;\n for (var i = dataRow.rowIndex; i >= 0; i--) {\n if (!rows[i].classList.contains(literals.row) && !rows[i].classList.contains('e-detailrow')) {\n grpRow = rows[i];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'enter':\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null)) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n // eslint-disable-next-line no-case-declarations\n var row = element ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row) {\n break;\n }\n this.expandCollapseRows(row);\n break;\n case 'ctrlSpace':\n // eslint-disable-next-line no-case-declarations\n var elem = gObj.focusModule.currentInfo.element;\n if (elem && elem.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(elem.firstElementChild.getAttribute('e-mappinguid'));\n if (column.field && gObj.groupSettings.columns.indexOf(column.field) < 0) {\n this.groupColumn(column.field);\n }\n else {\n this.ungroupColumn(column.field);\n }\n }\n break;\n }\n };\n Group.prototype.clickHandler = function (e) {\n this.expandCollapseRows(e.target);\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n };\n Group.prototype.unGroupFromTarget = function (target) {\n if (target.classList.contains('e-ungroupbutton')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n };\n Group.prototype.toogleGroupFromHeader = function (target) {\n if (this.groupSettings.showToggleButton) {\n if (target.classList.contains('e-grptogglebtn')) {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n else {\n this.groupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n }\n else {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n }\n };\n Group.prototype.applySortFromTarget = function (target) {\n var gObj = this.parent;\n var gHeader = closest(target, '.e-groupheadercell');\n if (gObj.allowSorting && gHeader && !target.classList.contains('e-ungroupbutton') &&\n !target.classList.contains('e-toggleungroup')) {\n var field = gHeader.firstElementChild.getAttribute('ej-mappingname');\n if (gObj.getColumnHeaderByField(field).getElementsByClassName('e-ascending').length) {\n gObj.sortColumn(field, 'Descending', true);\n }\n else {\n gObj.sortColumn(field, 'Ascending', true);\n }\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n Group.prototype.expandCollapseRows = function (target) {\n var trgt = parentsUntil(target, 'e-recordplusexpand') ||\n parentsUntil(target, 'e-recordpluscollapse');\n if (trgt) {\n var cellIdx = trgt.cellIndex;\n var rowIdx = trgt.parentElement.rowIndex;\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var rows = [].slice.call(rowNodes).slice(rowIdx + 1, rowNodes.length);\n var isHide = void 0;\n var expandElem = void 0;\n var dataManager = void 0;\n var query = void 0;\n var toExpand = [];\n var gObj = this.parent;\n var indent = trgt.parentElement.getElementsByClassName('e-indentcell').length;\n var expand = false;\n if (trgt.classList.contains('e-recordpluscollapse')) {\n addClass([trgt], 'e-recordplusexpand');\n removeClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n expand = true;\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, expand, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.captionExpand(trgt.parentElement);\n }\n }\n else {\n isHide = true;\n removeClass([trgt], 'e-recordplusexpand');\n addClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.captionCollapse(trgt.parentElement);\n }\n }\n this.aria.setExpand(trgt, expand);\n if (!isGroupAdaptive(gObj) && !this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].querySelectorAll('td')[cellIdx] &&\n rows[i].querySelectorAll('td')[cellIdx].classList.contains('e-indentcell') && rows) {\n if (isHide) {\n rows[i].style.display = 'none';\n }\n else {\n if (rows[i].getElementsByClassName('e-indentcell').length === indent + 1) {\n rows[i].style.display = '';\n expandElem = rows[i].querySelector('.e-recordplusexpand');\n if (expandElem) {\n toExpand.push(expandElem);\n }\n if (rows[i].classList.contains('e-detailrow')) {\n if (rows[i - 1].getElementsByClassName('e-detailrowcollapse').length) {\n rows[i].style.display = 'none';\n }\n }\n }\n }\n }\n else {\n break;\n }\n }\n this.updateVisibleexpandCollapseRows();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n for (var i = 0, len = toExpand.length; i < len; i++) {\n removeClass([toExpand[i]], 'e-recordplusexpand');\n addClass([toExpand[i]], 'e-recordpluscollapse');\n toExpand[i].firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n this.expandCollapseRows(toExpand[i]);\n }\n }\n };\n Group.prototype.updateVisibleexpandCollapseRows = function () {\n var rows = this.parent.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].isDataRow && this.parent.getRowElementByUID(rows[i].uid).style.display === 'none') {\n rows[i].visible = false;\n }\n }\n };\n Group.prototype.updateVirtualRows = function (gObj, target, isExpand, query, dataManager) {\n var rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n this.parent.notify(events.refreshVirtualMaxPage, {});\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n var args = { requestType: 'virtualscroll', rowObject: rObj };\n dataManager = gObj.getDataModule().getData(args, query.requiresCount());\n dataManager.then(function (e) { return gObj.renderModule.dataManagerSuccess(e, args); });\n };\n Group.prototype.expandCollapse = function (isExpand) {\n if (!isExpand) {\n this.parent.notify(events.initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var row;\n for (var i = 0, len = rowNodes.length; i < len; i++) {\n if (rowNodes[i].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row = rowNodes[i].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row) {\n row.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n row.firstElementChild.className = isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' :\n 'e-icons e-gnextforward e-icon-grightarrow';\n }\n if (!(rowNodes[i].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[i].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n this.updateVisibleexpandCollapseRows();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.expandAll = function () {\n this.expandCollapse(true);\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.collapseAll = function () {\n this.expandCollapse(false);\n };\n /**\n * The function is used to render grouping\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderGroupDropArea();\n this.initDragAndDrop();\n this.refreshToggleBtn();\n };\n Group.prototype.renderGroupDropArea = function () {\n var groupElem = this.parent.element.querySelector('.e-groupdroparea');\n if (groupElem) {\n remove(groupElem);\n }\n this.element = this.parent.createElement('div', { className: 'e-groupdroparea', attrs: { 'tabindex': '-1' } });\n if (this.groupSettings.allowReordering) {\n this.element.classList.add('e-group-animate');\n }\n this.updateGroupDropArea();\n this.parent.element.insertBefore(this.element, this.parent.element.firstChild);\n if (!this.groupSettings.showDropArea) {\n this.element.style.display = 'none';\n }\n };\n Group.prototype.updateGroupDropArea = function (clear) {\n if (this.groupSettings.showDropArea && !this.groupSettings.columns.length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n else {\n if ((this.element.innerHTML === this.l10n.getConstant('GroupDropArea') && (this.groupSettings.columns.length === 1\n || !this.isAppliedGroup && !this.isAppliedUnGroup)) || clear) {\n this.element.innerHTML = '';\n }\n this.element.classList.add('e-grouped');\n }\n };\n Group.prototype.initDragAndDrop = function () {\n this.initializeGHeaderDrop();\n this.initializeGHeaderDrag();\n };\n Group.prototype.initializeGHeaderDrag = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drag = new Draggable(this.element, {\n dragTarget: this.groupSettings.allowReordering ? '.e-drag' : '.e-groupheadercell',\n distance: this.groupSettings.allowReordering ? -10 : 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n };\n Group.prototype.initializeGHeaderDrop = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drop = new Droppable(this.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n * @returns {void}\n */\n Group.prototype.groupColumn = function (columnName) {\n var gObj = this.parent;\n var column = gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n (this.contentRefresh && this.groupSettings.columns.indexOf(columnName) > -1)) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.groupColumn, arg1: columnName });\n return;\n }\n column.visible = gObj.groupSettings.showGroupedColumn;\n this.colName = columnName;\n this.isAppliedGroup = true;\n if (this.contentRefresh) {\n this.updateModel();\n }\n else {\n this.addColToGroupDrop(columnName);\n }\n this.updateGroupDropArea();\n this.isAppliedGroup = false;\n };\n /**\n * Ungroups a column by column name.\n *\n * @param {string} columnName - Defines the column name to ungroup.\n * @returns {void}\n */\n Group.prototype.ungroupColumn = function (columnName) {\n var gObj = this.parent;\n var column = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (c) { return c.field === columnName; })[0] : gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false || this.groupSettings.columns.indexOf(columnName) < 0) {\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.ungroupColumn, arg1: columnName });\n return;\n }\n column.visible = true;\n this.colName = column.field;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns.splice(columns.indexOf(this.colName), 1);\n if (this.sortedColumns.indexOf(columnName) < 0) {\n for (var i = 0, len = gObj.sortSettings.columns.length; i < len; i++) {\n if (columnName === gObj.sortSettings.columns[i].field) {\n gObj.sortSettings.columns.splice(i, 1);\n break;\n }\n }\n }\n if (this.groupSettings.allowReordering) {\n this.reorderingColumns = columns;\n }\n this.groupSettings.columns = columns;\n if (gObj.allowGrouping) {\n this.isAppliedUnGroup = true;\n this.parent.dataBind();\n }\n };\n /**\n * The function used to update groupSettings\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.updateModel = function () {\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns = this.reorderingColumns.length ? JSON.parse(JSON.stringify(this.reorderingColumns)) : columns;\n if (this.sortRequired) {\n if (columns.indexOf(this.colName) === -1) {\n columns.push(this.colName);\n }\n this.groupAddSortingQuery(this.colName);\n }\n this.sortRequired = true;\n this.parent.groupSettings.columns = columns;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Group.prototype.onActionComplete = function (e) {\n if (e.requestType === 'grouping') {\n this.addColToGroupDrop(this.colName);\n }\n else {\n this.removeColFromGroupDrop(this.colName);\n }\n var args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: events.actionComplete\n } : { requestType: 'ungrouping', type: events.actionComplete };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.colName = null;\n };\n Group.prototype.groupAddSortingQuery = function (colName) {\n var i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[i].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[i].direction = 'Ascending';\n }\n };\n Group.prototype.createElement = function (field) {\n var gObj = this.parent;\n var direction = 'Ascending';\n var animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n var groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n var childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n if (isComplexField(field)) {\n childDiv.setAttribute('ej-complexname', getComplexFieldID(field));\n }\n var column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode\n var headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': 'Drag the grouped column' }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'ungroup button' }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': 'ungroup the grouped column' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n };\n Group.prototype.addColToGroupDrop = function (field) {\n var groupElem = isComplexField(field) ? this.parent.element.querySelector('.e-groupdroparea div[ej-complexname=' +\n getComplexFieldID(field) + ']') : this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + field + ']');\n if (this.groupSettings.allowReordering && groupElem) {\n return;\n }\n var column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n var groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n var index = this.element.getElementsByClassName('e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n //Todo: rtl\n };\n Group.prototype.createSeparator = function () {\n return this.parent.createElement('span', {\n className: 'e-nextgroup e-icons e-icon-next', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'Separator for the grouped columns' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n });\n };\n Group.prototype.refreshToggleBtn = function (isRemove) {\n if (this.groupSettings.showToggleButton) {\n var headers = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-headercelldiv'));\n for (var i = 0, len = headers.length; i < len; i++) {\n if (!((headers[i].classList.contains('e-emptycell')) || (headers[i].classList.contains('e-headerchkcelldiv')))) {\n var column = this.parent.getColumnByUid(headers[i].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[i].getElementsByClassName('e-grptogglebtn').length) {\n remove(headers[i].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[i].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' +\n (this.groupSettings.columns.indexOf(column.field) > -1 ? 'e-toggleungroup e-icon-ungroup'\n : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1', 'aria-label': 'Group button' }\n }));\n }\n }\n }\n }\n }\n };\n Group.prototype.removeColFromGroupDrop = function (field) {\n if (!isNullOrUndefined(this.getGHeaderCell(field))) {\n var elem = this.getGHeaderCell(field);\n if (this.groupSettings.allowReordering) {\n var parent_1 = parentsUntil(elem, 'e-group-animator');\n remove(parent_1);\n }\n else {\n remove(elem);\n }\n this.updateGroupDropArea();\n }\n this.isAppliedUnGroup = false;\n };\n Group.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var args = void 0;\n if (this.contentRefresh) {\n if (!this.isAppliedUnGroup) {\n if (!this.isAppliedGroup) {\n this.updateGroupDropArea(true);\n for (var j = 0; j < this.parent.sortSettings.columns.length; j++) {\n if (this.parent.sortSettings.columns[j].isFromGroup) {\n this.parent.sortSettings.columns.splice(j, 1);\n j--;\n }\n }\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.colName = this.groupSettings.columns[i];\n var col = this.parent.getColumnByField(this.colName);\n col.visible = this.parent.groupSettings.showGroupedColumn;\n this.groupAddSortingQuery(this.colName);\n if (i < this.groupSettings.columns.length - 1) {\n this.addColToGroupDrop(this.groupSettings.columns[i]);\n }\n }\n }\n args = {\n columnName: this.colName, requestType: e.properties[prop].length ? 'grouping' : 'ungrouping',\n type: events.actionBegin\n };\n }\n else {\n args = { columnName: this.colName, requestType: 'ungrouping', type: events.actionBegin };\n }\n if (!this.groupSettings.showGroupedColumn) {\n var columns = e.oldProperties[prop];\n for (var i = 0; i < columns.length; i++) {\n if (e.properties[prop].indexOf(columns[i]) === -1) {\n this.parent.getColumnByField(columns[i]).visible = true;\n }\n }\n }\n this.parent.notify(events.modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n if (this.groupSettings.showDropArea) {\n this.element.style.display = '';\n }\n else {\n this.element.style.display = 'none';\n }\n break;\n case 'showGroupedColumn':\n this.updateGroupedColumn(this.groupSettings.showGroupedColumn);\n this.parent.notify(events.modelChanged, { requestType: 'refresh' });\n break;\n case 'showUngroupButton':\n this.updateButtonVisibility(this.groupSettings.showUngroupButton, 'e-ungroupbutton');\n break;\n case 'showToggleButton':\n this.updateButtonVisibility(this.groupSettings.showToggleButton, 'e-togglegroupbutton ');\n this.parent.refreshHeader();\n break;\n case 'enableLazyLoading':\n this.parent.freezeRefresh();\n break;\n }\n }\n };\n Group.prototype.updateGroupedColumn = function (isVisible) {\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.parent.getColumnByField(this.groupSettings.columns[i]).visible = isVisible;\n }\n };\n Group.prototype.updateButtonVisibility = function (isVisible, className) {\n var gHeader = [].slice.call(this.element.getElementsByClassName(className));\n for (var i = 0; i < gHeader.length; i++) {\n gHeader[i].style.display = isVisible ? '' : 'none';\n }\n };\n Group.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.isDestroyed && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.removeEventListener();\n this.refreshToggleBtn(true);\n remove(this.element);\n //call ejdrag and drop destroy\n };\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.clearGrouping = function () {\n var cols = JSON.parse(JSON.stringify(this.groupSettings.columns));\n this.contentRefresh = false;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (i === (len - 1)) {\n this.contentRefresh = true;\n }\n this.ungroupColumn(cols[i]);\n }\n this.contentRefresh = true;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Group.prototype.getModuleName = function () {\n return 'group';\n };\n Group.prototype.refreshSortIcons = function () {\n var gObj = this.parent;\n var header;\n var cols = gObj.sortSettings.columns;\n var gCols = gObj.groupSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n this.refreshToggleBtn();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[i].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[i].field) > -1)) {\n classList(header.querySelector('.e-sortfilterdiv'), ['e-ascending', 'e-icon-ascending'], []);\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').appendChild(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }));\n }\n }\n else if (this.getGHeaderCell(cols[i].field) && this.getGHeaderCell(cols[i].field).getElementsByClassName('e-groupsort').length) {\n if (cols[i].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-descending', 'e-icon-descending'], ['e-ascending', 'e-icon-ascending']);\n }\n }\n }\n for (var i = 0, len = gCols.length; i < len; i++) {\n if (fieldNames.indexOf(gCols[i]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[i]).setAttribute('aria-grouped', 'true');\n }\n };\n Group.prototype.getGHeaderCell = function (field) {\n if (this.element && this.element.querySelector('[ej-mappingname=\"' + field + '\"]')) {\n return this.element.querySelector('[ej-mappingname=\"' + field + '\"]').parentElement;\n }\n return null;\n };\n Group.prototype.onGroupAggregates = function (editedData) {\n var aggregates = this.iterateGroupAggregates(editedData);\n var rowData = this.groupGenerator.generateRows(aggregates, {});\n var summaryRows = this.parent.getRowsObject().filter(function (row) { return !row.isDataRow; });\n var updateSummaryRows = rowData.filter(function (data) { return !data.isDataRow; });\n if (this.parent.isReact) {\n this.parent.destroyTemplate(['groupFooterTemplate', 'groupCaptionTemplate', 'footerTemplate']);\n }\n for (var i = 0; i < updateSummaryRows.length; i++) {\n var row = updateSummaryRows[i];\n var cells = row.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: row.data, dataUid: summaryRows[i] ? summaryRows[i].uid : '' };\n this.parent.notify(events.refreshAggregateCell, args);\n }\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords();\n var deletedCols = [];\n var changeds = rows.map(function (row) {\n if (row.edit === 'delete') {\n deletedCols.push(row.data);\n }\n return row.changes instanceof Object ? row.changes : row.data;\n });\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n changeds = updatedData.length === 0 ? changeds : updatedData;\n var mergeData = initData.map(function (item) {\n var pKeyVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = changeds.some(function (cItem) {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n var eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (var i = 0; i < deletedCols.length; i++) {\n var index = mergeData.indexOf(deletedCols[i]);\n mergeData.splice(index, 1);\n }\n }\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[j];\n for (var k = 0; k < row.columns.length; k++) {\n var aggr = {};\n var type = row.columns[k].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[k].field };\n aggregates.push(aggr);\n }\n }\n var result;\n var aggrds;\n var groupedCols = this.parent.groupSettings.columns;\n for (var l = 0; l < groupedCols.length; l++) {\n aggrds = result ? result : mergeData;\n result = DataUtil.group(aggrds, groupedCols[l], aggregates, null, null);\n }\n return result;\n };\n Group.prototype.updateExpand = function (args) {\n var uid = args.uid;\n var isExpand = args.isExpand;\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n if (row.uid === uid || isNullOrUndefined(uid)) {\n row.isExpand = isExpand;\n var _loop_1 = function (j) {\n var childRow = rows[j];\n var closestParent = void 0;\n if (childRow.parentUid !== row.uid) {\n closestParent = rows.filter(function (x) { return x.uid === childRow.parentUid; })[0];\n }\n if (childRow.parentUid === row.uid) {\n childRow.visible = row.isExpand;\n }\n else if (!isNullOrUndefined(closestParent) && childRow.parentUid === closestParent.uid) {\n if (closestParent.isExpand && closestParent.visible === true) {\n childRow.visible = true;\n }\n else if (closestParent.isExpand && closestParent.visible === false) {\n childRow.visible = false;\n }\n }\n if (isNullOrUndefined(uid)) {\n return \"break\";\n }\n };\n for (var j = i + 1; j < rows.length; j++) {\n var state_1 = _loop_1(j);\n if (state_1 === \"break\")\n break;\n }\n }\n }\n this.parent.notify(events.contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n };\n return Group;\n}());\nexport { Group };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[i], sortedCols);\n if (this.columnName === gCols[i]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[i]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n // eslint-disable-next-line no-self-assign\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols;\n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[i]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[i].isFromGroup) {\n this.sortedColumns.push(sortColumns[i].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[i].field);\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[i].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, {\n requestType: 'sorting', type: events.actionBegin, target: this.currentTarget\n });\n }\n break;\n }\n }\n this.addSortIcons();\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.sortComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.click, handler: this.clickHandler },\n { event: events.headerRefreshed, handler: this.refreshSortIcons },\n { event: events.keyPressed, handler: this.keyPressed },\n { event: events.cancelBegin, handler: this.cancelBeginEvent }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey));\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (fieldNames.indexOf(cols[i].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, cols[i].direction);\n if (this.isMultiSort && cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[i].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1 &&\n !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[i].field === field) {\n return this.sortSettings.columns[i];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","import { closest, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { Resize } from '../actions/resize';\nimport { Page } from '../actions/page';\nimport { parentsUntil, applyBiggerTheme } from '../base/util';\nimport { Group } from '../actions/group';\nimport { Sort } from '../actions/sort';\nimport { PdfExport } from '../actions/pdf-export';\nimport { ExcelExport } from '../actions/excel-export';\nimport * as literals from '../base/string-literals';\nexport var menuClass = {\n header: '.' + literals.gridHeader,\n content: '.' + literals.gridContent,\n edit: '.e-inline-edit',\n batchEdit: '.e-editedbatchcell',\n editIcon: 'e-edit',\n pager: '.e-gridpager',\n delete: 'e-delete',\n save: 'e-save',\n cancel: 'e-cancel',\n copy: 'e-copy',\n pdf: 'e-pdfexport',\n group: 'e-icon-group',\n ungroup: 'e-icon-ungroup',\n csv: 'e-csvexport',\n excel: 'e-excelexport',\n fPage: 'e-icon-first',\n nPage: 'e-icon-next',\n lPage: 'e-icon-last',\n pPage: 'e-icon-prev',\n ascending: 'e-icon-ascending',\n descending: 'e-icon-descending',\n groupHeader: 'e-groupdroparea',\n touchPop: 'e-gridpopup'\n};\n/**\n * The `ContextMenu` module is used to handle context menu actions.\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.disableItems = [];\n this.hiddenItems = [];\n this.localeText = this.setLocaleKey();\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(events.initialLoad, this.render, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRenderMenu);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler.bind(this));\n };\n ContextMenu.prototype.keyDownHandler = function (e) {\n if (e.code === 'Tab' || e.which === 9) {\n this.contextMenu.close();\n }\n if (e.code === 'Escape') {\n this.contextMenu.close();\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ContextMenu.prototype.render = function () {\n this.parent.element.classList.add('e-noselect');\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_cmenu' });\n EventHandler.add(this.element, 'keydown', this.keyDownHandler.bind(this));\n this.parent.element.appendChild(this.element);\n var target = '#' + this.gridID;\n this.contextMenu = new Menu({\n items: this.getMenuItems(),\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n target: target,\n select: this.contextMenuItemClick.bind(this),\n beforeOpen: this.contextMenuBeforeOpen.bind(this),\n onOpen: this.contextMenuOpen.bind(this),\n onClose: this.contextMenuOnClose.bind(this),\n cssClass: 'e-grid-menu'\n });\n this.contextMenu.appendTo(this.element);\n };\n ContextMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.contextMenu) {\n this.contextMenu.destroy();\n remove(this.element);\n this.parent.element.classList.remove('e-noselect');\n }\n this.render();\n }\n };\n ContextMenu.prototype.getMenuItems = function () {\n var menuItems = [];\n var exportItems = [];\n for (var _i = 0, _a = this.parent.contextMenuItems; _i < _a.length; _i++) {\n var item = _a[_i];\n if (typeof item === 'string' && this.getDefaultItems().indexOf(item) !== -1) {\n if (item.toLocaleLowerCase().indexOf('export') !== -1) {\n exportItems.push(this.buildDefaultItems(item));\n }\n else {\n menuItems.push(this.buildDefaultItems(item));\n }\n }\n else if (typeof item !== 'string') {\n menuItems.push(item);\n }\n }\n if (exportItems.length > 0) {\n var exportGroup = this.buildDefaultItems('export');\n exportGroup.items = exportItems;\n menuItems.push(exportGroup);\n }\n return menuItems;\n };\n ContextMenu.prototype.getLastPage = function () {\n var totalpage = Math.floor(this.parent.pageSettings.totalRecordsCount / this.parent.pageSettings.pageSize);\n if (this.parent.pageSettings.totalRecordsCount % this.parent.pageSettings.pageSize) {\n totalpage += 1;\n }\n return totalpage;\n };\n ContextMenu.prototype.contextMenuOpen = function () {\n this.isOpen = true;\n };\n /**\n * @param {ContextMenuClickEventArgs} args - specifies the ContextMenuClickEventArgs argument type\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.contextMenuItemClick = function (args) {\n var item = this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Edit':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode === 'Batch') {\n if (this.row && this.cell && !isNaN(parseInt(this.cell.getAttribute(literals.ariaColIndex), 10))) {\n this.parent.editModule.editCell(parseInt(this.row.getAttribute(literals.ariaRowIndex), 10), \n // eslint-disable-next-line\n this.parent.getColumns()[parseInt(this.cell.getAttribute(literals.ariaColIndex), 10)].field);\n }\n }\n else {\n this.parent.editModule.endEdit();\n this.parent.editModule.startEdit(this.row);\n }\n }\n break;\n case 'Delete':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.parent.editModule.endEdit();\n }\n if (this.parent.getSelectedRecords().length === 1) {\n this.parent.editModule.deleteRow(this.row);\n }\n else {\n this.parent.deleteRecord();\n }\n }\n break;\n case 'Save':\n if (this.parent.editModule) {\n this.parent.editModule.endEdit();\n }\n break;\n case 'Cancel':\n if (this.parent.editModule) {\n this.parent.editModule.closeEdit();\n }\n break;\n case 'Copy':\n this.parent.copy();\n break;\n case 'PdfExport':\n this.parent.pdfExport();\n break;\n case 'ExcelExport':\n this.parent.excelExport();\n break;\n case 'CsvExport':\n this.parent.csvExport();\n break;\n case 'SortAscending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'FirstPage':\n this.parent.goToPage(1);\n break;\n case 'PrevPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage - 1);\n break;\n case 'LastPage':\n this.parent.goToPage(this.getLastPage());\n break;\n case 'NextPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage + 1);\n break;\n }\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuClick, args);\n };\n ContextMenu.prototype.contextMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][parent] instanceof Menu) {\n this.updateItemStatus();\n }\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: false });\n };\n ContextMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[item]);\n };\n ContextMenu.prototype.updateItemStatus = function () {\n this.contextMenu.showItems(this.hiddenItems);\n this.contextMenu.enableItems(this.disableItems);\n this.hiddenItems = [];\n this.disableItems = [];\n this.isOpen = false;\n };\n ContextMenu.prototype.contextMenuBeforeOpen = function (args) {\n var closestGrid = closest(args.event.target, '.e-grid');\n if (args.event && closestGrid && closestGrid !== this.parent.element) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + menuClass.groupHeader)\n || closest(args.event.target, '.' + menuClass.touchPop) ||\n closest(args.event.target, '.e-summarycell') ||\n closest(args.event.target, '.e-groupcaption') ||\n closest(args.event.target, '.e-filterbarcell'))) {\n args.cancel = true;\n }\n else {\n this.targetColumn = this.getColumn(args.event);\n this.targetRowdata = this.parent.getRowInfo(args.event.target);\n if ((isNullOrUndefined(args.parentItem)) && this.targetColumn) {\n if (this.targetRowdata.cell) {\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: true });\n this.selectRow(args.event, (this.targetRowdata.cell.classList.contains('e-selectionbackground')\n && this.parent.selectionSettings.type === 'Multiple') ? false : true);\n }\n }\n var hideSepItems = [];\n var showSepItems = [];\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[key];\n if (this.getDefaultItems().indexOf(key) !== -1) {\n if (this.ensureDisabledStatus(key)) {\n this.disableItems.push(item.text);\n }\n if (args.event && (this.ensureTarget(args.event.target, menuClass.edit) ||\n this.ensureTarget(args.event.target, menuClass.batchEdit))) {\n if (key !== 'Save' && key !== 'Cancel') {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.parent.editModule && this.parent.editSettings.mode === 'Batch' &&\n ((closest(args.event.target, '.e-gridform')) ||\n this.parent.editModule.getBatchChanges()[literals.changedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.addedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.deletedRecords].length) && (key === 'Save' || key === 'Cancel')) {\n continue;\n }\n else if (isNullOrUndefined(args.parentItem) && args.event\n && !this.ensureTarget(args.event.target, dItem.target)) {\n this.hiddenItems.push(item.text);\n }\n }\n else if (item.target && args.event &&\n !this.ensureTarget(args.event.target, item.target)) {\n if (item.separator) {\n hideSepItems.push(item.id);\n }\n else {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.ensureTarget(args.event.target, item.target) && item.separator) {\n showSepItems.push(item.id);\n }\n }\n if (showSepItems.length > 0) {\n this.contextMenu.showItems(showSepItems, true);\n }\n this.contextMenu.enableItems(this.disableItems, false);\n this.contextMenu.hideItems(this.hiddenItems);\n if (hideSepItems.length > 0) {\n this.contextMenu.hideItems(hideSepItems, true);\n }\n this.eventArgs = args.event;\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuOpen, args);\n if (args.cancel || (this.hiddenItems.length === args.items.length && !args.parentItem)) {\n this.updateItemStatus();\n args.cancel = true;\n }\n }\n applyBiggerTheme(this.parent.element, this.contextMenu.element.parentElement);\n };\n ContextMenu.prototype.ensureTarget = function (targetElement, selector) {\n var target = targetElement;\n if (this.ensureFrozenHeader(targetElement) && (selector === menuClass.header || selector === menuClass.content)) {\n target = closest(targetElement, selector === menuClass.header ? 'thead' : literals.tbody);\n }\n else if (selector === menuClass.content || selector === menuClass.header) {\n target = parentsUntil(closest(targetElement, '.' + literals.table), selector.substr(1, selector.length));\n }\n else {\n target = closest(targetElement, selector);\n }\n return target && parentsUntil(target, 'e-grid') === this.parent.element;\n };\n ContextMenu.prototype.ensureFrozenHeader = function (targetElement) {\n return (this.parent.isFrozenGrid() || this.parent.frozenRows)\n && closest(targetElement, menuClass.header) ? true : false;\n };\n ContextMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n status = !(this.parent.ensureModuleInjected(Resize) && !this.parent.isEdit)\n || (this.targetColumn && !this.targetColumn.field && item === 'AutoFit');\n break;\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n break;\n case 'Ungroup':\n if (!this.parent.allowGrouping || !this.parent.ensureModuleInjected(Group)\n || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'Edit':\n case 'Delete':\n case 'Save':\n case 'Cancel':\n if (!this.parent.editModule || (this.parent.getDataRows().length === 0)) {\n status = true;\n }\n break;\n case 'Copy':\n if (this.parent.getSelectedRowIndexes().length === 0 ||\n this.parent.getCurrentViewRecords().length === 0) {\n status = true;\n }\n break;\n case 'export':\n if ((!this.parent.allowExcelExport || !this.parent.excelExport) ||\n !this.parent.ensureModuleInjected(PdfExport) && !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'PdfExport':\n if (!(this.parent.allowPdfExport) || !this.parent.ensureModuleInjected(PdfExport)) {\n status = true;\n }\n break;\n case 'ExcelExport':\n case 'CsvExport':\n if (!(this.parent.allowExcelExport) || !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'SortAscending':\n case 'SortDescending':\n if ((!this.parent.allowSorting) || !this.parent.ensureModuleInjected(Sort) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n else if (this.parent.ensureModuleInjected(Sort) && this.parent.sortSettings.columns.length > 0 && this.targetColumn) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[i].field === this.targetColumn.field\n && sortColumns[i].direction.toLowerCase() === item.toLowerCase().replace('sort', '').toLocaleLowerCase()) {\n status = true;\n }\n }\n }\n break;\n case 'FirstPage':\n case 'PrevPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === 1)) {\n status = true;\n }\n break;\n case 'LastPage':\n case 'NextPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === this.getLastPage())) {\n status = true;\n }\n break;\n }\n return status;\n };\n /**\n * Gets the context menu element from the Grid.\n *\n * @returns {Element} returns the element\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.element;\n };\n /**\n * Destroys the context menu component in the Grid.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.contextMenu.destroy();\n remove(this.element);\n this.removeEventListener();\n this.parent.element.classList.remove('e-noselect');\n };\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n ContextMenu.prototype.generateID = function (item) {\n return this.gridID + '_cmenu_' + item;\n };\n ContextMenu.prototype.getKeyFromId = function (id) {\n return id.replace(this.gridID + '_cmenu_', '');\n };\n ContextMenu.prototype.buildDefaultItems = function (item) {\n var menuItem;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n menuItem = { target: menuClass.header };\n break;\n case 'Group':\n menuItem = { target: menuClass.header, iconCss: menuClass.group };\n break;\n case 'Ungroup':\n menuItem = { target: menuClass.header, iconCss: menuClass.ungroup };\n break;\n case 'Edit':\n menuItem = { target: menuClass.content, iconCss: menuClass.editIcon };\n break;\n case 'Delete':\n menuItem = { target: menuClass.content, iconCss: menuClass.delete };\n break;\n case 'Save':\n menuItem = { target: menuClass.edit, iconCss: menuClass.save };\n break;\n case 'Cancel':\n menuItem = { target: menuClass.edit, iconCss: menuClass.cancel };\n break;\n case 'Copy':\n menuItem = { target: menuClass.content, iconCss: menuClass.copy };\n break;\n case 'export':\n menuItem = { target: menuClass.content };\n break;\n case 'PdfExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.pdf };\n break;\n case 'ExcelExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.excel };\n break;\n case 'CsvExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.csv };\n break;\n case 'SortAscending':\n menuItem = { target: menuClass.header, iconCss: menuClass.ascending };\n break;\n case 'SortDescending':\n menuItem = { target: menuClass.header, iconCss: menuClass.descending };\n break;\n case 'FirstPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.fPage };\n break;\n case 'PrevPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.pPage };\n break;\n case 'LastPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.lPage };\n break;\n case 'NextPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.nPage };\n break;\n }\n this.defaultItems[item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n target: menuItem.target, iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : ''\n };\n return this.defaultItems[item];\n };\n ContextMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit',\n 'Group', 'Ungroup', 'Edit', 'Delete', 'Save', 'Cancel', 'Copy', 'export',\n 'PdfExport', 'ExcelExport', 'CsvExport', 'SortAscending', 'SortDescending',\n 'FirstPage', 'PrevPage', 'LastPage', 'NextPage'];\n };\n ContextMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Copy': 'Copy',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'Edit': 'EditRecord',\n 'Delete': 'DeleteRecord',\n 'Save': 'Save',\n 'Cancel': 'CancelButton',\n 'PdfExport': 'Pdfexport',\n 'ExcelExport': 'Excelexport',\n 'CsvExport': 'Csvexport',\n 'export': 'Export',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'FirstPage': 'FirstPage',\n 'LastPage': 'LastPage',\n 'PrevPage': 'PreviousPage',\n 'NextPage': 'NextPage'\n };\n return localeKeys;\n };\n ContextMenu.prototype.getColumn = function (e) {\n var cell = closest(e.target, 'th.e-headercell');\n if (cell) {\n var uid = cell.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n else {\n var ele = (this.parent.getRowInfo(e.target).column);\n return ele || null;\n }\n };\n ContextMenu.prototype.selectRow = function (e, isSelectable) {\n this.cell = e.target;\n this.row = closest(e.target, 'tr.e-row') || this.row;\n if (this.row && isSelectable && !parentsUntil(e.target, 'e-gridpager')) {\n this.parent.selectRow(parseInt(this.row.getAttribute(literals.ariaRowIndex), 10));\n }\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { Reorder, headerRefreshed } from '@syncfusion/ej2-grids';\nimport { Grid, Resize, ExcelExport, PdfExport, ContextMenu, Freeze } from '@syncfusion/ej2-grids';\nimport { Selection } from '@syncfusion/ej2-grids';\nimport { createElement, setStyleAttribute, remove, isNullOrUndefined, EventHandler, getElement } from '@syncfusion/ej2-base';\nimport { isBlazor, addClass, removeClass, SanitizeHtmlHelper, select, selectAll } from '@syncfusion/ej2-base';\nimport * as cls from '../../common/base/css-constant';\nimport * as events from '../../common/base/constant';\nimport { AggregateMenu } from '../../common/popups/aggregate-menu';\nimport { PivotUtil } from '../../base/util';\n/**\n * Module to render PivotGrid control\n */\n/** @hidden */\nvar Render = /** @class */ (function () {\n /** Constructor for render module\n * @param {PivotView} parent - Instance of pivot table.\n */\n function Render(parent) {\n this.indentCollection = {};\n this.colPos = 0;\n this.lastSpan = 0;\n this.lvlCollection = {};\n this.hierarchyCollection = {};\n this.lvlPosCollection = {};\n this.hierarchyPosCollection = {};\n this.position = 0;\n this.measurePos = 0;\n this.maxMeasurePos = 0;\n this.hierarchyCount = 0;\n this.actualText = '';\n this.parent = parent;\n this.resColWidth = (this.parent.showGroupingBar && this.parent.groupingBarModule) ? (this.parent.isAdaptive ? 180 : 250) :\n (this.parent.isAdaptive ? 140 : 200);\n this.engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;\n this.gridSettings = parent.gridSettings;\n this.formatList = this.getFormatList();\n this.aggMenu = new AggregateMenu(this.parent);\n }\n /* eslint-disable-next-line */\n /** @hidden */\n Render.prototype.render = function () {\n var parent = this.parent;\n var engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;\n this.parent.gridHeaderCellInfo = [];\n this.parent.gridCellCollection = {};\n this.injectGridModules(parent);\n this.rowStartPos = this.getRowStartPos();\n if (this.parent.grid && this.parent.grid.element && this.parent.element.querySelector('.e-grid')) {\n this.parent.notEmpty = true;\n if (!engine.isEngineUpdated) {\n engine.headerContent = this.frameDataSource('header');\n engine.valueContent = this.frameDataSource('value');\n }\n else {\n if (this.parent.enableValueSorting) {\n engine.valueContent = this.frameDataSource('value');\n }\n engine.isEngineUpdated = false;\n }\n this.parent.grid.setProperties({\n columns: this.frameStackedHeaders(), dataSource: (this.parent.dataType === 'olap' ? true :\n parent.dataSourceSettings.values.length > 0) && !this.engine.isEmptyData ? engine.valueContent :\n this.frameDataSource('value')\n }, true);\n if (this.parent.grid.height === 'auto') {\n var mCntHeight = this.parent.element.querySelector('.' + cls.MOVABLECONTENT_DIV).offsetHeight; /* eslint-disable-line */\n var dataHeight = this.parent.grid.dataSource.length * this.parent.gridSettings.rowHeight;\n if (mCntHeight > 50 && mCntHeight < dataHeight) {\n this.parent.grid.contentModule.setHeightToContent(dataHeight); /* eslint-disable-line */\n }\n }\n this.parent.grid.notify('datasource-modified', {});\n if (this.parent.isScrolling) {\n this.parent.resizeInfo = {};\n }\n this.parent.grid.refreshColumns();\n if (this.parent.showGroupingBar && this.parent.groupingBarModule &&\n this.parent.element.querySelector('.' + cls.GROUPING_BAR_CLASS)) {\n this.parent.groupingBarModule.setGridRowWidth();\n }\n var e = this.parent.element.querySelector('.e-movablecontent');\n e.querySelector('colGroup').innerHTML =\n this.parent.grid.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup').innerHTML;\n this.parent.grid.width = this.calculateGridWidth();\n if (!this.gridSettings.allowAutoResizing && this.parent.showGroupingBar && this.parent.groupingBarModule && this.parent.element.querySelector('.' + cls.GROUPING_BAR_CLASS)) {\n this.parent.groupingBarModule.refreshUI();\n }\n if (!this.parent.isScrolling) {\n this.calculateGridHeight(true);\n }\n //this.parent.isScrolling = false;\n }\n else {\n this.parent.element.innerHTML = '';\n this.bindGrid(this.parent, (this.engine.isEmptyData ? true : false));\n this.parent.element.appendChild(createElement('div', { id: this.parent.element.id + '_grid' }));\n this.parent.grid.isStringTemplate = true;\n this.parent.grid.appendTo('#' + this.parent.element.id + '_grid');\n }\n this.parent.grid.on(headerRefreshed, this.refreshHeader, this);\n };\n Render.prototype.refreshHeader = function () {\n if (this.parent.enableVirtualization) {\n var mHdr = this.parent.element.querySelector('.' + cls.MOVABLEHEADER_DIV);\n var mCont = this.parent.element.querySelector('.' + cls.MOVABLECONTENT_DIV);\n var vtr = mCont.querySelector('.' + cls.VIRTUALTRACK_DIV);\n this.parent.virtualHeaderDiv = mHdr.querySelector('.' + cls.VIRTUALTRACK_DIV);\n if (mHdr.querySelector('.' + cls.VIRTUALTRACK_DIV)) {\n remove(mHdr.querySelector('.' + cls.VIRTUALTRACK_DIV));\n }\n else {\n this.parent.virtualHeaderDiv = createElement('div', { className: cls.VIRTUALTRACK_DIV });\n }\n mHdr.appendChild(this.parent.virtualHeaderDiv);\n if (vtr) {\n setStyleAttribute(this.parent.virtualHeaderDiv, { height: 0, width: vtr.style.width });\n }\n setStyleAttribute(mHdr.querySelector('.e-table'), {\n transform: (mCont.querySelector('.e-table').style.transform).split(',')[0] + ',' + 0 + 'px)'\n });\n var ele = this.parent.isAdaptive ? mCont : mCont.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV);\n mHdr.scrollLeft = ele.scrollLeft;\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n Render.prototype.bindGrid = function (parent, isEmpty) {\n this.injectGridModules(parent);\n this.parent.grid = new Grid({\n frozenColumns: 1,\n frozenRows: 0,\n enableHover: false,\n dataSource: isEmpty ? this.frameEmptyData() : this.frameDataSource('value'),\n columns: isEmpty ? this.frameEmptyColumns() : this.frameStackedHeaders(),\n height: isEmpty ? 'auto' : this.calculateGridHeight(),\n width: isEmpty ? (this.gridSettings.allowAutoResizing ? this.parent.width : 400) : this.calculateGridWidth(),\n locale: parent.locale,\n enableRtl: parent.enableRtl,\n allowExcelExport: parent.allowExcelExport,\n allowPdfExport: parent.allowPdfExport,\n allowResizing: this.gridSettings.allowResizing,\n allowTextWrap: this.gridSettings.allowTextWrap,\n allowReordering: (this.parent.showGroupingBar ? false : this.gridSettings.allowReordering),\n allowSelection: this.gridSettings.allowSelection,\n /* eslint-disable-next-line */\n contextMenuItems: this.gridSettings.contextMenuItems,\n selectedRowIndex: this.gridSettings.selectedRowIndex,\n /* eslint-disable-next-line */\n selectionSettings: this.gridSettings.selectionSettings,\n textWrapSettings: this.gridSettings.textWrapSettings,\n printMode: this.gridSettings.printMode,\n rowHeight: this.gridSettings.rowHeight,\n gridLines: this.gridSettings.gridLines,\n contextMenuClick: this.contextMenuClick.bind(this),\n contextMenuOpen: this.contextMenuOpen.bind(this),\n beforeCopy: this.gridSettings.beforeCopy ? this.gridSettings.beforeCopy.bind(this.parent) : undefined,\n beforePrint: this.gridSettings.beforePrint ? this.gridSettings.beforePrint.bind(this.parent) : undefined,\n printComplete: this.gridSettings.printComplete ? this.gridSettings.printComplete.bind(this.parent) : undefined,\n rowSelecting: this.gridSettings.rowSelecting ? this.gridSettings.rowSelecting.bind(this.parent) : undefined,\n rowSelected: this.rowSelected.bind(this),\n rowDeselecting: this.gridSettings.rowDeselecting ? this.gridSettings.rowDeselecting.bind(this.parent) : undefined,\n rowDeselected: this.rowDeselected.bind(this),\n cellSelecting: this.gridSettings.cellSelecting ? this.gridSettings.cellSelecting.bind(this.parent) : undefined,\n cellSelected: this.cellSelected.bind(this),\n cellDeselecting: this.gridSettings.cellDeselecting ? this.gridSettings.cellDeselecting.bind(this.parent) : undefined,\n cellDeselected: this.cellDeselected.bind(this),\n resizeStart: this.gridSettings.resizeStart ? this.gridSettings.resizeStart.bind(this.parent) : undefined,\n columnDragStart: this.gridSettings.columnDragStart ? this.gridSettings.columnDragStart.bind(this) : undefined,\n columnDrag: this.gridSettings.columnDrag ? this.gridSettings.columnDrag.bind(this) : undefined,\n columnDrop: this.gridSettings.columnDrop ? this.gridSettings.columnDrop.bind(this) : undefined,\n beforeExcelExport: this.beforeExcelExport.bind(this),\n resizing: this.setGroupWidth.bind(this),\n resizeStop: this.onResizeStop.bind(this),\n queryCellInfo: this.queryCellInfo.bind(this),\n dataBound: this.dataBound.bind(this),\n headerCellInfo: this.headerCellInfo.bind(this),\n excelHeaderQueryCellInfo: this.excelHeaderQueryCellInfo.bind(this),\n pdfHeaderQueryCellInfo: this.pdfHeaderQueryCellInfo.bind(this),\n excelQueryCellInfo: this.excelQueryCellInfo.bind(this),\n pdfQueryCellInfo: this.pdfQueryCellInfo.bind(this),\n beforePdfExport: this.gridSettings.beforePdfExport ? this.gridSettings.beforePdfExport.bind(this) : undefined,\n pdfExportComplete: this.pdfExportComplete.bind(this),\n excelExportComplete: this.excelExportComplete.bind(this)\n });\n if (isBlazor()) {\n var isJsComponent = 'isJsComponent';\n /* eslint-disable-next-line */\n this.parent.grid[isJsComponent] = true;\n }\n this.parent.grid.on('header-refreshed', this.headerRefreshed.bind(this));\n this.parent.grid.on('export-DataBound', this.excelDataBound.bind(this));\n };\n /* eslint-disable-next-line */\n Render.prototype.headerRefreshed = function (args) {\n if (this.parent.lastGridSettings && Object.keys(this.parent.lastGridSettings).indexOf('allowResizing') > -1) {\n this.parent.lastGridSettings = undefined;\n if (this.parent.showGroupingBar && this.parent.groupingBarModule &&\n this.parent.element.querySelector('.' + cls.GROUPING_BAR_CLASS)) {\n this.parent.groupingBarModule.setGridRowWidth();\n }\n }\n };\n /* eslint-disable-next-line */\n Render.prototype.beforeExcelExport = function (args) {\n if (!isNullOrUndefined(args.gridObject.columns) && !isNullOrUndefined(this.parent.pivotColumns)) {\n args.gridObject.columns[args.gridObject.columns.length - 1].width =\n this.parent.pivotColumns[this.parent.pivotColumns.length - 1].width;\n }\n this.parent.trigger(events.beforeExcelExport, args);\n };\n Render.prototype.rowSelected = function (args) {\n this.parent.renderModule.selected();\n this.parent.trigger(events.rowSelected, args);\n };\n Render.prototype.rowDeselected = function (args) {\n this.parent.renderModule.selected();\n this.parent.trigger(events.rowDeselected, args);\n };\n Render.prototype.cellSelected = function (args) {\n if (this.parent.rowRangeSelection.enable) {\n this.parent.grid.selectionModule.selectRowsByRange(this.parent.rowRangeSelection.startIndex, this.parent.rowRangeSelection.endIndex);\n this.parent.rowRangeSelection.enable = false;\n }\n else {\n this.parent.renderModule.selected();\n this.parent.trigger(events.selected, args);\n }\n };\n Render.prototype.cellSelecting = function (args) {\n this.parent.trigger(events.cellSelecting, args);\n };\n Render.prototype.cellDeselected = function (args) {\n this.parent.renderModule.selected();\n this.parent.trigger(events.cellDeselected, args);\n };\n Render.prototype.queryCellInfo = function (args) {\n this.parent.renderModule.rowCellBoundEvent(args);\n };\n Render.prototype.headerCellInfo = function (args) {\n this.parent.renderModule.columnCellBoundEvent(args);\n };\n Render.prototype.excelHeaderQueryCellInfo = function (args) {\n this.parent.renderModule.excelColumnEvent(args);\n };\n Render.prototype.pdfQueryCellInfo = function (args) {\n this.parent.renderModule.pdfRowEvent(args);\n };\n Render.prototype.excelQueryCellInfo = function (args) {\n this.parent.renderModule.excelRowEvent(args);\n };\n Render.prototype.pdfHeaderQueryCellInfo = function (args) {\n this.parent.renderModule.pdfColumnEvent(args);\n };\n /* eslint-disable */\n Render.prototype.pdfExportComplete = function (args) {\n if (this.parent.lastColumn !== undefined && this.parent.lastColumn.width !== 'auto') {\n this.parent.lastColumn.width = 'auto';\n this.parent.lastColumn = undefined;\n }\n };\n Render.prototype.excelExportComplete = function (args) {\n if (this.parent.lastColumn !== undefined && this.parent.lastColumn.width !== 'auto') {\n this.parent.lastColumn.width = 'auto';\n this.parent.lastColumn = undefined;\n }\n };\n /* eslint-enable */\n Render.prototype.dataBound = function (args) {\n if (this.parent.cellTemplate && !isBlazor()) {\n for (var _i = 0, _a = this.parent.gridHeaderCellInfo; _i < _a.length; _i++) {\n var cell = _a[_i];\n if (this.parent.cellTemplate) {\n /* eslint-disable-next-line */\n var element = this.parent.getCellTemplate()(cell, this.parent, 'cellTemplate', this.parent.element.id + '_cellTemplate', null, null, cell.targetCell);\n if (element && element !== '' && element.length > 0) {\n if (this.parent.enableHtmlSanitizer) {\n this.parent.appendHtml(cell.targetCell, SanitizeHtmlHelper.sanitize(element[0].outerHTML));\n }\n else {\n this.parent.appendHtml(cell.targetCell, element[0].outerHTML);\n }\n }\n }\n }\n this.parent.gridHeaderCellInfo = [];\n }\n if (this.parent.element.querySelector('.e-firstcell') && !(this.parent.dataSourceSettings.values.length === 1 && this.parent.dataSourceSettings.columns.length > 0)) {\n if (this.parent.enableRtl) {\n this.parent.element.querySelector('.e-firstcell').style.borderRight = 'none';\n }\n else {\n this.parent.element.querySelector('.e-firstcell').style.borderLeft = 'none';\n }\n }\n if (this.parent.grid && this.parent.grid.widthService) {\n this.parent.grid.widthService.setWidthToTable();\n }\n if (this.parent.notEmpty) {\n this.calculateGridHeight(true);\n }\n this.parent.isScrolling = false;\n this.setFocusOnLastCell();\n if (!isNullOrUndefined(this.parent.renderReactTemplates)) { /* eslint-disable-line */\n this.parent.renderReactTemplates(); /* eslint-disable-line */\n }\n if (this.parent.isInitial) {\n this.parent.refreshData();\n }\n this.parent.isInitial = false;\n this.parent.notify(events.contentReady, {});\n };\n Render.prototype.setFocusOnLastCell = function () {\n if (this.parent.keyboardModule && this.parent.keyboardModule.event &&\n this.parent.keyboardModule.event.target.nodeName === 'TD') {\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n gridFocus.setFocusedElement(this.parent.keyboardModule.event.target);\n gridFocus.focus(this.parent.keyboardModule.event);\n addClass([this.parent.keyboardModule.event.target], ['e-focused', 'e-focus']);\n this.parent.keyboardModule.event.target.setAttribute('tabindex', '0');\n this.parent.keyboardModule.event = undefined;\n }\n };\n /* eslint-disable */\n Render.prototype.contextMenuOpen = function (args) {\n var _this = this;\n var _loop_1 = function (item) {\n var cellTarget = this_1.parent.lastCellClicked;\n var elem = null;\n var bool = void 0;\n var isGroupElement = void 0;\n if (cellTarget.classList.contains('e-stackedheadercelldiv') || cellTarget.classList.contains('e-cellvalue') ||\n cellTarget.classList.contains('e-headercelldiv') || cellTarget.classList.contains('e-icons') || cellTarget.classList.contains('e-rhandler')) {\n elem = cellTarget.parentElement;\n }\n else if (cellTarget.classList.contains('e-headercell') || cellTarget.classList.contains('e-rowcell') || cellTarget.classList.contains('e-columnsheader') ||\n cellTarget.classList.contains('e-rowsheader') || cellTarget.classList.contains('e-valuescontent') || cellTarget.classList.contains('e-valuesheader')) {\n elem = cellTarget;\n }\n else if (cellTarget.classList.contains('e-headertext')) {\n elem = cellTarget.parentElement.parentElement;\n }\n if (!elem) {\n args.cancel = true;\n return { value: void 0 };\n }\n if (elem.classList.contains('e-valuesheader') || elem.classList.contains('e-stot')) {\n bool = true;\n }\n if (this_1.parent.allowGrouping && this_1.parent.groupingModule && !this_1.validateField(elem)) {\n isGroupElement = true;\n }\n var rowIndex = Number(elem.getAttribute('index'));\n var colIndex = Number(elem.getAttribute('aria-colindex'));\n var pivotValue1 = this_1.parent.pivotValues[rowIndex][colIndex];\n var selectedID = item.id;\n switch (selectedID) {\n case this_1.parent.element.id + '_expand':\n if (elem.querySelectorAll('.' + cls.EXPAND).length > 0) {\n if (selectAll('#' + this_1.parent.element.id + '_expand', args.element)) {\n select('#' + this_1.parent.element.id + '_expand', args.element).classList.add(cls.MENU_DISABLE);\n }\n if (select('#' + this_1.parent.element.id + '_expand', args.element).classList.contains(cls.MENU_DISABLE)) {\n select('#' + this_1.parent.element.id + '_expand', args.element).classList.remove(cls.MENU_DISABLE);\n }\n if (select('#' + this_1.parent.element.id + '_expand', args.element).classList.contains(cls.MENU_HIDE)) {\n select('#' + this_1.parent.element.id + '_expand', args.element).classList.remove(cls.MENU_HIDE);\n select('#' + this_1.parent.element.id + '_collapse', args.element).classList.remove(cls.MENU_HIDE);\n }\n }\n else {\n if (bool) {\n select('#' + this_1.parent.element.id + '_expand', args.element).classList.add(cls.MENU_HIDE);\n }\n else {\n select('#' + this_1.parent.element.id + '_expand', args.element).classList.add(cls.MENU_DISABLE);\n }\n }\n break;\n case this_1.parent.element.id + '_collapse':\n if (elem.querySelectorAll('.' + cls.COLLAPSE).length > 0) {\n if (select('#' + this_1.parent.element.id + '_expand', args.element)) {\n select('#' + this_1.parent.element.id + '_expand', args.element).classList.add(cls.MENU_DISABLE);\n }\n if (select('#' + this_1.parent.element.id + '_collapse', args.element).classList.contains(cls.MENU_DISABLE)) {\n select('#' + this_1.parent.element.id + '_collapse', args.element).classList.remove(cls.MENU_DISABLE);\n }\n if (select('#' + this_1.parent.element.id + '_collapse', args.element).classList.contains(cls.MENU_HIDE)) {\n select('#' + this_1.parent.element.id + '_collapse', args.element).classList.remove(cls.MENU_HIDE);\n select('#' + this_1.parent.element.id + '_expand', args.element).classList.remove(cls.MENU_HIDE);\n }\n }\n else {\n if (bool) {\n select('#' + this_1.parent.element.id + '_collapse', args.element).classList.add(cls.MENU_HIDE);\n }\n else {\n select('#' + this_1.parent.element.id + '_collapse', args.element).classList.add(cls.MENU_DISABLE);\n }\n }\n break;\n case this_1.parent.element.id + '_custom_group':\n if (!isGroupElement && args.items.length === 2) {\n args.cancel = true;\n }\n if (selectAll('#' + this_1.parent.element.id + '_custom_group', args.element)) {\n addClass([select('#' + this_1.parent.element.id + '_custom_group', args.element)], cls.MENU_HIDE);\n }\n if (isGroupElement) {\n if (selectAll('#' + this_1.parent.element.id + '_custom_group', args.element)) {\n removeClass([select('#' + this_1.parent.element.id + '_custom_group', args.element)], cls.MENU_HIDE);\n }\n }\n break;\n case this_1.parent.element.id + '_custom_ungroup':\n if (selectAll('#' + this_1.parent.element.id + '_custom_ungroup', args.element)) {\n addClass([select('#' + this_1.parent.element.id + '_custom_ungroup', args.element)], cls.MENU_HIDE);\n }\n if (isGroupElement) {\n var isUngroupOption = false;\n var fieldName = elem.getAttribute('fieldname');\n var groupField = PivotUtil.getFieldByName(fieldName, this_1.parent.dataSourceSettings.groupSettings);\n if (groupField && groupField.type === 'Custom' || (this_1.parent.engineModule.fieldList[fieldName].isCustomField && fieldName.indexOf('_custom_group') > -1)) {\n groupField = PivotUtil.getFieldByName(fieldName.replace('_custom_group', ''), this_1.parent.dataSourceSettings.groupSettings);\n if (groupField) {\n var cell = this_1.parent.engineModule.pivotValues[Number(elem.getAttribute('index'))][Number(elem.getAttribute('aria-colindex'))];\n var selectedCellsInfo = this_1.parent.groupingModule.getSelectedCells(cell.axis, fieldName, cell.actualText.toString());\n selectedCellsInfo.push({ axis: cell.axis, fieldName: fieldName, name: cell.actualText.toString(), cellInfo: cell });\n var selectedOptions = this_1.parent.groupingModule.getSelectedOptions(selectedCellsInfo);\n for (var _i = 0, _a = groupField.customGroups; _i < _a.length; _i++) {\n var customGroup = _a[_i];\n if (selectedOptions.indexOf(customGroup.groupName) > -1) {\n isUngroupOption = true;\n break;\n }\n }\n }\n }\n else if (groupField && (groupField.type === 'Date' || groupField.type === 'Number') ||\n (this_1.parent.engineModule.fieldList[fieldName].isCustomField && fieldName.indexOf('_date_group') > -1)) {\n isUngroupOption = true;\n }\n if (selectAll('#' + this_1.parent.element.id + '_custom_ungroup', args.element) && isUngroupOption) {\n removeClass([select('#' + this_1.parent.element.id + '_custom_ungroup', args.element)], cls.MENU_HIDE);\n }\n }\n break;\n case this_1.parent.element.id + '_drillthrough':\n if (!this_1.parent.allowDrillThrough) {\n if (select('#' + this_1.parent.element.id + '_drillthrough', args.element)) {\n select('#' + this_1.parent.element.id + '_drillthrough', args.element).classList.add(cls.MENU_DISABLE);\n }\n }\n else if (!(elem.classList.contains('e-summary'))) {\n if (elem.innerText === '') {\n if (select('#' + this_1.parent.element.id + '_drillthrough', args.element)) {\n select('#' + this_1.parent.element.id + '_drillthrough', args.element).classList.add(cls.MENU_DISABLE);\n }\n }\n }\n else {\n if (select('#' + this_1.parent.element.id + '_drillthrough', args.element).classList.contains(cls.MENU_DISABLE)) {\n select('#' + this_1.parent.element.id + '_drillthrough', args.element).classList.remove(cls.MENU_DISABLE);\n }\n }\n break;\n case this_1.parent.element.id + '_sortasc':\n if (!this_1.parent.enableValueSorting) {\n if (select('#' + this_1.parent.element.id + '_sortasc', args.element)) {\n select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.add(cls.MENU_DISABLE);\n }\n }\n else if (elem.querySelectorAll('.e-icon-descending').length > 0) {\n if (select('#' + this_1.parent.element.id + '_sortdesc', args.element)) {\n select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.add(cls.MENU_DISABLE);\n }\n else {\n select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.remove(cls.MENU_DISABLE);\n }\n if (select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.contains(cls.MENU_DISABLE)) {\n select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.remove(cls.MENU_DISABLE);\n }\n }\n else if (select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.contains(cls.MENU_DISABLE)) {\n select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.remove(cls.MENU_DISABLE);\n }\n break;\n case this_1.parent.element.id + '_sortdesc':\n if (!this_1.parent.enableValueSorting) {\n if (select('#' + this_1.parent.element.id + '_sortdesc', args.element)) {\n select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.add(cls.MENU_DISABLE);\n }\n }\n else if (elem.querySelectorAll('.e-icon-ascending').length > 0) {\n if (select('#' + this_1.parent.element.id + '_sortasc', args.element)) {\n select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.add(cls.MENU_DISABLE);\n }\n else {\n select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.remove(cls.MENU_DISABLE);\n }\n if (select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.contains(cls.MENU_DISABLE)) {\n select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.remove(cls.MENU_DISABLE);\n }\n }\n else if (select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.contains(cls.MENU_DISABLE)) {\n select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.remove(cls.MENU_DISABLE);\n }\n break;\n case this_1.parent.element.id + '_CalculatedField':\n if (!this_1.parent.allowCalculatedField) {\n select('#' + this_1.parent.element.id + '_CalculatedField', args.element).classList.add(cls.MENU_DISABLE);\n }\n break;\n case this_1.parent.element.id + '_pdf':\n if (!this_1.parent.allowPdfExport) {\n select('#' + this_1.parent.element.id + '_pdf', args.element).classList.add(cls.MENU_DISABLE);\n }\n break;\n case this_1.parent.element.id + '_excel':\n if (!this_1.parent.allowExcelExport) {\n select('#' + this_1.parent.element.id + '_excel', args.element).classList.add(cls.MENU_DISABLE);\n }\n break;\n case this_1.parent.element.id + '_csv':\n if (!this_1.parent.allowExcelExport) {\n select('#' + this_1.parent.element.id + '_csv', args.element).classList.add(cls.MENU_DISABLE);\n }\n break;\n case this_1.parent.element.id + '_exporting':\n if ((!this_1.parent.allowExcelExport) && (!this_1.parent.allowPdfExport)) {\n select('#' + this_1.parent.element.id + '_exporting', args.element).classList.add(cls.MENU_DISABLE);\n }\n break;\n case this_1.parent.element.id + '_aggregate':\n if ((select('#' + this_1.parent.element.id + '_aggregate', args.element)) &&\n (!select('#' + this_1.parent.element.id + '_aggregate', args.element).classList.contains(cls.MENU_DISABLE))) {\n select('#' + this_1.parent.element.id + '_aggregate', args.element).classList.add(cls.MENU_DISABLE);\n }\n if ((elem.classList.contains('e-valuesheader') || elem.classList.contains('e-valuescontent') ||\n (elem.classList.contains('e-stot') && elem.classList.contains('e-rowsheader'))) && this_1.parent.dataType !== 'olap') {\n var fieldType_1;\n if (!(elem.innerText === '')) {\n fieldType_1 = this_1.parent.engineModule.fieldList[pivotValue1.actualText.toString()].type;\n }\n var eventArgs = {\n cancel: false, fieldName: pivotValue1.actualText.toString(),\n aggregateTypes: this_1.getMenuItem(fieldType_1).slice(),\n displayMenuCount: 7\n };\n this_1.parent.trigger(events.aggregateMenuOpen, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && !(elem.innerText === '')) {\n var menuItem = [];\n var checkDuplicates = [];\n for (var i = 0; i < observedArgs.aggregateTypes.length; i++) {\n var key = observedArgs.aggregateTypes[i];\n if (fieldType_1 !== 'number') {\n if ((['Count', 'DistinctCount'].indexOf(key) > -1) && (checkDuplicates.indexOf(key) < 0)) {\n menuItem.push({ text: _this.parent.localeObj.getConstant(key), id: _this.parent.element.id + '_Agg' + key });\n checkDuplicates.push(key);\n }\n }\n else {\n if ((_this.parent.getAllSummaryType().indexOf(key) > -1) && (checkDuplicates.indexOf(key) < 0)) {\n menuItem.push({ text: _this.parent.localeObj.getConstant(key), id: _this.parent.element.id + '_Agg' + key });\n checkDuplicates.push(key);\n }\n }\n }\n if (menuItem.length > observedArgs.displayMenuCount) {\n menuItem.splice(observedArgs.displayMenuCount);\n menuItem.push({\n text: _this.parent.localeObj.getConstant('MoreOption'),\n id: _this.parent.element.id + '_Agg' + 'MoreOption'\n });\n }\n if (menuItem && menuItem.length >= 1) {\n item.items = menuItem;\n select('#' + _this.parent.element.id + '_aggregate', args.element).classList.remove(cls.MENU_DISABLE);\n }\n }\n });\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var state_1 = _loop_1(item);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n this.parent.trigger(events.contextMenuOpen, args);\n };\n Render.prototype.getMenuItem = function (isStringField) {\n var menuItems = [];\n for (var i = 0; i < this.parent.aggregateTypes.length; i++) {\n var key = this.parent.aggregateTypes[i];\n if (isStringField !== 'string') {\n if ((this.parent.getAllSummaryType().indexOf(key) > -1) && (menuItems.indexOf(key) === -1)) {\n menuItems.push(key);\n }\n }\n else {\n if ((['Count', 'DistinctCount'].indexOf(key) > -1) && (menuItems.indexOf(key) === -1)) {\n menuItems.push(key);\n }\n }\n }\n return menuItems;\n };\n Render.prototype.contextMenuClick = function (args) {\n var _this = this;\n // this.parent.gridSettings.contextMenuClick();\n var target = this.parent.lastCellClicked;\n var selected = args.item.id;\n var event = new MouseEvent('dblclick', {\n 'view': window,\n 'bubbles': true,\n 'cancelable': true\n });\n var exportArgs = {};\n var ele = null;\n if (target.classList.contains('e-stackedheadercelldiv') || target.classList.contains('e-cellvalue') ||\n target.classList.contains('e-headercelldiv') || target.classList.contains('e-icons') || target.classList.contains('e-rhandler')) {\n ele = target.parentElement;\n }\n else if (target.classList.contains('e-headercell') || target.classList.contains('e-rowcell')) {\n ele = target;\n }\n else if (target.classList.contains('e-headertext')) {\n ele = target.parentElement.parentElement;\n }\n var rowIndx = Number(ele.getAttribute('index'));\n var colIndx = Number(ele.getAttribute('aria-colindex'));\n var pivotValue = this.parent.pivotValues[rowIndx][colIndx];\n var aggregateType;\n if (args.item.id.indexOf(this.parent.element.id + '_Agg') > -1) {\n this.field = this.parent.engineModule.fieldList[pivotValue.actualText.toString()].id;\n this.fieldCaption = this.parent.engineModule.fieldList[pivotValue.actualText.toString()].caption;\n aggregateType = args.item.id.split('_Agg')[1];\n }\n switch (selected) {\n case this.parent.element.id + '_pdf':\n exportArgs = {\n pdfDoc: undefined,\n isBlob: false,\n isMultipleExport: false,\n pdfExportProperties: { fileName: 'Export.pdf' },\n };\n this.parent.trigger(events.beforeExport, exportArgs, function (observedArgs) {\n if (isBlazor()) {\n var pdfProperties = PivotUtil.formatPdfExportProperties(observedArgs.pdfExportProperties);\n _this.parent.pdfExport(pdfProperties, observedArgs.isMultipleExport, observedArgs.pdfDoc, observedArgs.isBlob);\n }\n else {\n _this.parent.pdfExport(observedArgs.pdfExportProperties, observedArgs.isMultipleExport, observedArgs.pdfDoc, observedArgs.isBlob);\n }\n });\n break;\n case this.parent.element.id + '_excel':\n exportArgs = {\n isBlob: false,\n isMultipleExport: false,\n workbook: undefined,\n excelExportProperties: { fileName: 'Export.xlsx' },\n };\n this.parent.trigger(events.beforeExport, exportArgs, function (observedArgs) {\n if (isBlazor()) {\n var excelProperties = PivotUtil.formatExcelExportProperties(observedArgs.excelExportProperties);\n _this.parent.excelExport(excelProperties, observedArgs.isMultipleExport, observedArgs.workbook, observedArgs.isBlob);\n }\n else {\n _this.parent.excelExport(observedArgs.excelExportProperties, observedArgs.isMultipleExport, observedArgs.workbook, observedArgs.isBlob);\n }\n });\n break;\n case this.parent.element.id + '_csv':\n exportArgs = {\n isBlob: false,\n workbook: undefined,\n isMultipleExport: false,\n excelExportProperties: { fileName: 'Export.csv' },\n };\n this.parent.trigger(events.beforeExport, exportArgs, function (observedArgs) {\n if (isBlazor()) {\n var excelProperties = PivotUtil.formatExcelExportProperties(observedArgs.excelExportProperties);\n _this.parent.csvExport(excelProperties, observedArgs.isMultipleExport, observedArgs.workbook, observedArgs.isBlob);\n }\n else {\n _this.parent.csvExport(observedArgs.excelExportProperties, observedArgs.isMultipleExport, observedArgs.workbook, observedArgs.isBlob);\n }\n });\n break;\n case this.parent.element.id + '_drillthrough_menu':\n ele.dispatchEvent(event);\n break;\n case this.parent.element.id + '_sortasc':\n this.parent.setProperties({\n dataSourceSettings: {\n valueSortSettings: {\n headerText: pivotValue.valueSort.levelName,\n headerDelimiter: this.parent.dataSourceSettings.valueSortSettings.headerDelimiter\n }\n }\n });\n this.parent.dataSourceSettings.valueSortSettings.sortOrder = 'Ascending';\n break;\n case this.parent.element.id + '_sortdesc':\n this.parent.setProperties({\n dataSourceSettings: {\n valueSortSettings: {\n headerText: pivotValue.valueSort.levelName,\n headerDelimiter: this.parent.dataSourceSettings.valueSortSettings.headerDelimiter\n }\n }\n });\n this.parent.dataSourceSettings.valueSortSettings.sortOrder = 'Descending';\n break;\n case this.parent.element.id + '_expand':\n if (ele.querySelectorAll('.' + cls.EXPAND)) {\n var exp = ele.querySelectorAll('.' + cls.EXPAND)[0];\n this.parent.onDrill(exp);\n }\n break;\n case this.parent.element.id + '_collapse':\n if (ele.querySelectorAll('.' + cls.COLLAPSE)) {\n var colp = ele.querySelectorAll('.' + cls.COLLAPSE)[0];\n this.parent.onDrill(colp);\n }\n break;\n case this.parent.element.id + '_CalculatedField':\n this.parent.calculatedFieldModule.createCalculatedFieldDialog();\n break;\n case this.parent.element.id + '_AggMoreOption':\n case this.parent.element.id + '_AggDifferenceFrom':\n case this.parent.element.id + '_AggPercentageOfDifferenceFrom':\n case this.parent.element.id + '_AggPercentageOfParentTotal':\n ele.setAttribute('id', this.field);\n ele.setAttribute('data-caption', this.fieldCaption);\n ele.setAttribute('data-field', this.field);\n ele.setAttribute('data-type', this.engine.fieldList[pivotValue.actualText.toString()].aggregateType);\n ele.setAttribute('data-basefield', this.engine.fieldList[pivotValue.actualText.toString()].baseField);\n ele.setAttribute('data-baseItem', this.engine.fieldList[pivotValue.actualText.toString()].baseItem);\n this.aggMenu.createValueSettingsDialog(ele, this.parent.element, aggregateType);\n break;\n case this.parent.element.id + '_Agg' + aggregateType:\n this.updateAggregate(aggregateType);\n break;\n case this.parent.element.id + '_custom_group':\n case this.parent.element.id + '_custom_ungroup':\n if (this.parent.groupingModule) {\n var args_1 = {\n target: ele,\n option: selected,\n parentElement: this.parent.element\n };\n this.parent.notify(events.initGrouping, args_1);\n this.parent.grid.contextMenuModule.contextMenu.close();\n }\n break;\n }\n this.parent.trigger(events.contextMenuClick, args);\n };\n Render.prototype.validateColumnTotalcell = function (columnIndex) {\n var headerPosKeys = Object.keys(this.engine.headerContent);\n var keysLength = headerPosKeys.length;\n var sumLock = false;\n var fieldName = \"\";\n for (var pos = keysLength - 1; pos >= 0; pos--) {\n var cell = this.engine.headerContent[headerPosKeys[pos]][columnIndex];\n if (cell) {\n sumLock = sumLock && fieldName !== '' ? fieldName === cell.valueSort.axis : false;\n fieldName = cell.valueSort.axis ? cell.valueSort.axis.toString() : '';\n if (cell.type === 'sum') {\n sumLock = true;\n }\n if (sumLock && cell.members && cell.members.length > 0) {\n return true;\n }\n }\n else {\n return false;\n }\n }\n return false;\n };\n Render.prototype.validateField = function (target) {\n var isValueField = false;\n if (target.classList.contains('e-stot') || target.classList.contains('e-gtot') || target.classList.contains('e-valuescontent') || target.classList.contains('e-valuesheader')) {\n isValueField = true;\n }\n else {\n var fieldName = target.getAttribute('fieldName');\n if (!fieldName || fieldName == '') {\n var rowIndx = Number(target.getAttribute('index'));\n var colIndx = Number(target.getAttribute('aria-colindex'));\n fieldName = this.engine.pivotValues[rowIndx][colIndx].actualText;\n }\n var valuefields = this.parent.dataSourceSettings.values;\n for (var valueCnt = 0; valueCnt < valuefields.length; valueCnt++) {\n if (this.parent.dataSourceSettings.values[valueCnt].name === fieldName) {\n isValueField = true;\n break;\n }\n }\n }\n return isValueField;\n };\n /* eslint-enable */\n Render.prototype.updateAggregate = function (aggregate) {\n if (this.parent.getAllSummaryType().indexOf(aggregate) > -1) {\n var valuefields = this.parent.dataSourceSettings.values;\n for (var valueCnt = 0; valueCnt < this.parent.dataSourceSettings.values.length; valueCnt++) {\n if (this.parent.dataSourceSettings.values[valueCnt].name === this.field) {\n var dataSourceItem = valuefields[valueCnt];\n dataSourceItem.type = aggregate;\n }\n }\n }\n };\n Render.prototype.injectGridModules = function (parent) {\n Grid.Inject(Freeze);\n if (parent.allowExcelExport) {\n Grid.Inject(ExcelExport);\n }\n if (parent.allowPdfExport) {\n Grid.Inject(PdfExport);\n }\n Grid.Inject(Selection, Reorder, Resize);\n if (this.gridSettings.contextMenuItems) {\n Grid.Inject(ContextMenu);\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n Render.prototype.updateGridSettings = function () {\n this.injectGridModules(this.parent);\n this.parent.grid.allowResizing = this.gridSettings.allowResizing;\n this.parent.grid.allowTextWrap = this.gridSettings.allowTextWrap;\n this.parent.grid.allowReordering = (this.parent.showGroupingBar ? false : this.gridSettings.allowReordering);\n this.parent.grid.allowSelection = this.gridSettings.allowSelection;\n /* eslint-disable-next-line */\n this.parent.grid.contextMenuItems = this.gridSettings.contextMenuItems;\n this.parent.grid.selectedRowIndex = this.gridSettings.selectedRowIndex;\n /* eslint-disable-next-line */\n this.parent.grid.selectionSettings = this.gridSettings.selectionSettings;\n this.parent.grid.textWrapSettings = this.gridSettings.textWrapSettings;\n this.parent.grid.printMode = this.gridSettings.printMode;\n this.parent.grid.rowHeight = this.gridSettings.rowHeight;\n this.parent.grid.gridLines = this.gridSettings.gridLines;\n if (this.parent.lastGridSettings) {\n var keys = Object.keys(this.parent.lastGridSettings);\n if (keys.indexOf('height') > -1) {\n this.parent.grid.height = this.gridSettings.height;\n }\n if (keys.indexOf('width') > -1) {\n this.parent.grid.width = this.gridSettings.width;\n }\n this.updatePivotColumns();\n if (keys.indexOf('allowTextWrap') > -1) {\n this.parent.layoutRefresh();\n }\n }\n this.clearColumnSelection();\n };\n Render.prototype.updatePivotColumns = function () {\n var keys = Object.keys(this.parent.lastGridSettings);\n for (var colPos = 0; colPos < this.parent.pivotColumns.length; colPos++) {\n var pivotColumn = this.parent.pivotColumns[colPos];\n for (var keyPos = 0; keyPos < keys.length; keyPos++) {\n var key = keys[keyPos];\n /* eslint-disable-next-line */\n if (!isNullOrUndefined(this.parent.pivotColumns[colPos][key])) {\n /* eslint-disable-next-line */\n pivotColumn[key] = this.parent.lastGridSettings[key];\n }\n }\n }\n this.parent.fillGridColumns(this.parent.grid.columns);\n };\n Render.prototype.clearColumnSelection = function () {\n removeClass(this.parent.element.querySelectorAll('.' + cls.CELL_ACTIVE_BGCOLOR), [cls.CELL_ACTIVE_BGCOLOR, cls.SELECTED_BGCOLOR]);\n };\n Render.prototype.appendValueSortIcon = function (cell, tCell, rCnt, cCnt) {\n if (this.parent.enableValueSorting && this.parent.dataType === 'pivot') {\n var vSort = this.parent.dataSourceSettings.valueSortSettings;\n var len = (cell.type === 'grand sum' &&\n this.parent.dataSourceSettings.values.length === 1 && !this.parent.dataSourceSettings.alwaysShowValueHeader) ? 0 :\n (this.parent.dataSourceSettings.values.length > 1 || this.parent.dataSourceSettings.alwaysShowValueHeader) ?\n (this.parent.engineModule.headerContent.length - 1) :\n this.parent.dataSourceSettings.columns.length === 0 ? 0 : (this.parent.engineModule.headerContent.length - 1);\n var lock = (vSort && vSort.headerText) ? cell.valueSort.levelName === vSort.headerText : cCnt === vSort.columnIndex;\n if (vSort !== undefined && lock && rCnt === len && this.parent.dataSourceSettings.valueAxis === 'column') {\n if (tCell.querySelector('.e-sortfilterdiv')) {\n tCell.querySelector('.e-sortfilterdiv').classList.add(vSort.sortOrder === 'Descending' ?\n 'e-descending' : 'e-ascending');\n tCell.querySelector('.e-sortfilterdiv').classList.add(vSort.sortOrder === 'Descending' ?\n 'e-icon-descending' : 'e-icon-ascending');\n }\n else {\n tCell.appendChild(createElement('div', {\n className: (vSort.sortOrder === 'Descending' ?\n 'e-icon-descending e-icons e-descending e-sortfilterdiv' :\n 'e-icon-ascending e-icons e-ascending e-sortfilterdiv')\n }));\n }\n if (!isNullOrUndefined(cell.hasChild) && cell.type !== 'grand sum' && tCell.querySelector('.e-expand') &&\n (tCell.querySelector('.e-icon-descending') || tCell.querySelector('.e-icon-ascending'))) {\n var element = (tCell.querySelector('.e-icon-descending') || tCell.querySelector('.e-icon-ascending'));\n setStyleAttribute(element, { 'padding-top': '12px' });\n }\n }\n // return tCell;\n }\n return tCell;\n };\n Render.prototype.onResizeStop = function (args) {\n /* eslint-disable-next-line */\n var column = args.column.field === '0.formattedText' ? '0.formattedText' : args.column.customAttributes.cell.valueSort.levelName;\n this.parent.resizeInfo[column] = Number(args.column.width.toString().split('px')[0]);\n this.setGroupWidth(args);\n this.calculateGridHeight(true);\n this.parent.grid.hideScroll();\n };\n Render.prototype.setGroupWidth = function (args) {\n if (this.parent.showGroupingBar && this.parent.groupingBarModule &&\n this.parent.element.querySelector('.' + cls.GROUPING_BAR_CLASS)) {\n this.parent.groupingBarModule.refreshUI();\n if (this.parent.element.querySelector('.e-group-row').offsetWidth < 245 && !this.parent.firstColWidth) {\n args.cancel = true;\n var gridColumn = this.parent.grid.columns;\n if (gridColumn && gridColumn.length > 0) {\n gridColumn[0].width = this.resColWidth;\n }\n this.parent.element.querySelector('.e-frozenheader').querySelector('col').style.width = (this.resColWidth + 'px');\n this.parent.element.querySelector('.e-frozencontent').querySelector('col').style.width = (this.resColWidth + 'px');\n }\n this.parent.element.querySelector('.e-group-rows').style.height = 'auto';\n this.parent.element.querySelector('.e-group-values').style.width =\n this.parent.element.querySelector('.e-group-row').offsetWidth + 'px';\n var firstRowHeight = this.parent.element.querySelector('.e-headercontent').offsetHeight;\n this.parent.element.querySelector('.e-group-rows').style.height = firstRowHeight + 'px';\n }\n this.parent.trigger(args.e.type === 'touchend' || args.e.type === 'mouseup' ? events.resizeStop : events.resizing, args);\n };\n /* eslint-disable-next-line */\n /** @hidden */\n Render.prototype.selected = function () {\n clearTimeout(this.timeOutObj);\n this.timeOutObj = setTimeout(this.onSelect.bind(this), 300);\n };\n Render.prototype.onSelect = function () {\n var pivotArgs = { selectedCellsInfo: [], pivotValues: this.parent.pivotValues, currentCell: null };\n /* eslint-disable-next-line */\n var selectedElements = this.parent.element.querySelectorAll('.' + cls.CELL_SELECTED_BGCOLOR + ',.' + cls.SELECTED_BGCOLOR);\n for (var _i = 0, selectedElements_1 = selectedElements; _i < selectedElements_1.length; _i++) {\n var element = selectedElements_1[_i];\n var colIndex = Number(element.getAttribute('aria-colindex'));\n var rowIndex = Number(element.getAttribute('index'));\n var cell = this.engine.pivotValues[rowIndex][colIndex];\n if (cell) {\n if (cell.axis === 'value') {\n pivotArgs.selectedCellsInfo.push({\n currentCell: cell,\n value: cell.value,\n columnHeaders: cell.columnHeaders,\n rowHeaders: cell.rowHeaders,\n measure: cell.actualText.toString()\n });\n }\n else if (cell.axis === 'column') {\n pivotArgs.selectedCellsInfo.push({\n currentCell: cell,\n value: cell.formattedText,\n columnHeaders: cell.valueSort.levelName,\n rowHeaders: '',\n measure: ''\n });\n }\n else {\n pivotArgs.selectedCellsInfo.push({\n currentCell: cell,\n value: cell.formattedText,\n columnHeaders: '',\n rowHeaders: cell.valueSort.levelName,\n measure: ''\n });\n }\n }\n }\n this.parent.trigger(events.cellSelected, pivotArgs);\n };\n Render.prototype.rowCellBoundEvent = function (args) {\n var tCell = args.cell;\n if (tCell && (this.parent.notEmpty) && this.engine.headerContent) {\n var customClass = this.parent.hyperlinkSettings.cssClass;\n tCell.setAttribute('index', (Number(tCell.getAttribute('index')) + this.engine.headerContent.length).toString());\n var cell = args.data[0];\n if (tCell.getAttribute('aria-colindex') === '0') {\n if (this.parent.dataType === 'pivot') {\n var isValueCell = cell.type && cell.type === 'value';\n tCell.innerText = '';\n var level = cell.level ? cell.level : (isValueCell ? (this.lastSpan + 1) : 0);\n do {\n if (level > 0) {\n tCell.appendChild(createElement('span', {\n className: level === 0 ? '' : cls.NEXTSPAN\n }));\n }\n level--;\n } while (level > -1);\n level = cell.level ? cell.level : 0;\n this.lastSpan = !isValueCell ? level : this.lastSpan;\n if (!cell.hasChild && level > 0) {\n tCell.appendChild(createElement('span', {\n className: cls.LASTSPAN\n }));\n }\n var fieldName = void 0;\n if ((this.parent.dataSourceSettings.rows.length > 0 &&\n (cell.valueSort ? Object.keys(cell.valueSort).length > 0 : true))) {\n fieldName = level > -1 ? this.parent.dataSourceSettings.rows[level].name : '';\n tCell.setAttribute('fieldname', fieldName);\n }\n }\n else {\n tCell = this.onOlapRowCellBoundEvent(tCell, cell);\n }\n var localizedText = cell.formattedText;\n if (cell.type) {\n if (cell.type === 'grand sum') {\n this.rowGrandPos = cell.rowIndex;\n tCell.classList.add('e-gtot');\n localizedText = this.parent.localeObj.getConstant('grandTotal');\n }\n else if (cell.valueSort.levelName === (this.parent.localeObj.getConstant('grandTotal') +\n (this.parent.dataSourceSettings.valueSortSettings.headerDelimiter) + (cell.formattedText))) {\n tCell.classList.add('e-gtot');\n }\n else {\n tCell.classList.add('e-stot');\n }\n }\n tCell.classList.add(cls.ROWSHEADER);\n if (cell.hasChild === true && !cell.isNamedSet) {\n tCell.appendChild(createElement('div', {\n className: (cell.isDrilled === true ? cls.COLLAPSE : cls.EXPAND) + ' ' + cls.ICON,\n attrs: {\n 'title': cell.isDrilled === true ? this.parent.localeObj.getConstant('collapse') :\n this.parent.localeObj.getConstant('expand')\n }\n }));\n }\n tCell.appendChild(createElement('span', {\n className: cls.CELLVALUE,\n innerHTML: (this.parent.isRowCellHyperlink || cell.enableHyperlink ? '' + localizedText + '' : localizedText)\n }));\n var vSort = this.parent.pivotView.dataSourceSettings.valueSortSettings;\n if (this.parent.enableValueSorting) {\n if (vSort && vSort.headerText && this.parent.dataSourceSettings.valueAxis === 'row'\n && this.parent.pivotValues[Number(tCell.getAttribute('index'))][0].valueSort.levelName) {\n if (this.parent.pivotValues[Number(tCell.getAttribute('index'))][0].valueSort.levelName\n === vSort.headerText) {\n var style = (tCell.querySelector('.e-expand') || tCell.querySelector('.e-collapse')) ?\n 'padding-top: 18px' : 'padding-top: 12px';\n tCell.appendChild(createElement('div', {\n className: (vSort.sortOrder === 'Descending' ?\n 'e-icon-descending e-icons e-descending e-sortfilterdiv' :\n 'e-icon-ascending e-icons e-ascending e-sortfilterdiv'),\n styles: style\n }));\n }\n }\n }\n }\n else {\n var innerText = tCell.innerText;\n tCell.innerText = '';\n tCell.classList.add(cls.VALUESCONTENT);\n cell = args.data[Number(tCell.getAttribute('aria-colindex'))];\n if (cell.isSum) {\n tCell.classList.add(cls.SUMMARY);\n }\n if (cell.isGrandSum || this.colGrandPos === Number(tCell.getAttribute('aria-colindex')) || this.rowGrandPos === Number(tCell.getAttribute('index'))) {\n tCell.classList.add('e-gtot');\n }\n else if (this.parent.dataType === 'olap' ? cell.isSum : this.validateColumnTotalcell(!isNullOrUndefined(cell.value) ? cell.colIndex : cell.colIndex - 1)) {\n tCell.classList.add('e-colstot');\n }\n if (cell.cssClass) {\n tCell.classList.add(cell.cssClass);\n }\n tCell.appendChild(createElement('span', {\n className: cls.CELLVALUE,\n innerHTML: ((tCell.className.indexOf('e-summary') !== -1 && this.parent.isSummaryCellHyperlink) ||\n (tCell.className.indexOf('e-summary') === -1 && this.parent.isValueCellHyperlink) || cell.enableHyperlink ?\n '' + innerText + '' : innerText)\n }));\n if (this.parent.gridSettings.allowReordering && !this.parent.showGroupingBar) {\n tCell.setAttribute('aria-colindex', args.column.customAttributes.cell.colIndex.toString());\n }\n }\n if (this.parent.cellTemplate) {\n var index = tCell.getAttribute('index');\n var colindex = tCell.getAttribute('aria-colindex');\n var templateID = index + '_' + colindex;\n if (!(window && isBlazor())) {\n /* eslint-disable-next-line */\n var element = this.parent.getCellTemplate()({ targetCell: tCell, cellInfo: cell }, this.parent, 'cellTemplate', this.parent.element.id + '_cellTemplate', null, null, tCell);\n if (element && element !== '' && element.length > 0) {\n if (this.parent.enableHtmlSanitizer) {\n this.parent.appendHtml(tCell, SanitizeHtmlHelper.sanitize(element[0].outerHTML));\n }\n else {\n this.parent.appendHtml(tCell, element[0].outerHTML);\n }\n }\n }\n else if (index && colindex) {\n this.parent.gridCellCollection[templateID] = tCell;\n }\n }\n this.unWireEvents(tCell);\n this.wireEvents(tCell);\n }\n args.pivotview = this.parent;\n this.parent.trigger(events.queryCellInfo, args);\n };\n /* eslint-disable */\n Render.prototype.onOlapRowCellBoundEvent = function (tCell, cell) {\n tCell.innerText = '';\n var rowMeasurePos = this.engine.rowMeasurePos;\n if (this.parent.enableVirtualization) {\n if (cell.ordinal > -1 && this.parent.olapEngineModule.tupRowInfo.length > 0) {\n var tupInfo = this.parent.olapEngineModule.tupRowInfo[cell.ordinal];\n var memberPosition = tupInfo.uNameCollection.indexOf(cell.actualText.toString());\n var cropUName = tupInfo.uNameCollection.substring(0, memberPosition) +\n (cell.memberType === 3 ? '' : cell.actualText.toString());\n var fieldSep = cropUName.split('::[').map(function (item) {\n return item[0] === '[' ? item : ('[' + item);\n });\n if (cell.memberType === 3 && rowMeasurePos) {\n fieldSep.push(cell.actualText.toString());\n }\n var nxtIndextCount = -1;\n var lastIndextCount = 0;\n var prevHasChild = false;\n for (var fPos = 0; fPos < fieldSep.length; fPos++) {\n var fieldMembers = fieldSep[fPos];\n var membersCount = fieldMembers.split('~~').length;\n nxtIndextCount += membersCount;\n var hasChild = tupInfo.typeCollection[fPos] !== '2' ? (this.engine.fieldList[tupInfo.members[fPos].getAttribute('Hierarchy')] && this.engine.fieldList[tupInfo.members[fPos].getAttribute('Hierarchy')].isHierarchy && fPos < this.parent.dataSourceSettings.rows.length - 1 && !this.parent.dataSourceSettings.rows[fPos + 1].isNamedSet && this.parent.dataSourceSettings.rows[fPos + 1].name.indexOf('[Measures]') < 0 && this.engine.fieldList[this.parent.dataSourceSettings.rows[fPos + 1].name] && this.engine.fieldList[this.parent.dataSourceSettings.rows[fPos + 1].name].hasAllMember) ? true : Number(tupInfo.members[fPos].querySelector('CHILDREN_CARDINALITY').textContent) > 0 : false;\n lastIndextCount += (fPos > 0 && prevHasChild && !hasChild) ? 1 : 0;\n prevHasChild = hasChild;\n }\n var indent = 0;\n for (var iPos = 0; iPos < nxtIndextCount; iPos++) {\n tCell.appendChild(createElement('span', {\n className: cls.NEXTSPAN,\n }));\n indent++;\n }\n for (var iPos = 0; iPos < lastIndextCount && nxtIndextCount > 0; iPos++) {\n tCell.appendChild(createElement('span', {\n className: cls.LASTSPAN,\n }));\n }\n this.indentCollection[cell.rowIndex] = indent;\n this.maxIndent = this.maxIndent > indent ? this.maxIndent : indent;\n }\n }\n else {\n var hierarchyName = cell.hierarchy;\n var levelName = cell.memberType === 3 ? (this.measurePos + '.' + cell.levelUniqueName) : cell.levelUniqueName;\n var hasChild = cell.hasChild;\n if (!this.lvlCollection[levelName] && levelName) {\n this.lvlPosCollection[this.position] = levelName;\n this.lvlCollection[levelName] = { position: this.position, hasChild: hasChild };\n this.position++;\n }\n else if (levelName) {\n var currPos_1 = this.lvlCollection[levelName].position;\n for (var pos = currPos_1 + 1; pos < this.position; pos++) {\n delete this.lvlCollection[this.lvlPosCollection[pos]];\n delete this.lvlPosCollection[pos];\n }\n this.position = this.position > (currPos_1 + 1) ? (currPos_1 + 1) : this.position;\n }\n if (!this.hierarchyCollection[hierarchyName] && hierarchyName) {\n this.hierarchyPosCollection[this.hierarchyCount] = hierarchyName;\n this.hierarchyCollection[hierarchyName] = {\n lvlPosition: this.position - 1,\n hierarchyPOs: this.hierarchyCount\n };\n this.hierarchyCount++;\n }\n else if (hierarchyName) {\n var currPos_2 = this.hierarchyCollection[hierarchyName].hierarchyPOs;\n for (var pos = currPos_2 + 1; pos < this.hierarchyCount; pos++) {\n delete this.hierarchyCollection[this.hierarchyPosCollection[pos]];\n delete this.hierarchyPosCollection[pos];\n }\n this.hierarchyCount = this.hierarchyCount > (currPos_2 + 1) ? (currPos_2 + 1) : this.hierarchyCount;\n }\n if (cell.memberType !== 3 && levelName && this.lvlCollection[levelName]) {\n var currHierarchyPos = this.hierarchyCollection[hierarchyName] ?\n this.hierarchyCollection[hierarchyName].hierarchyPOs : -1;\n this.measurePos = rowMeasurePos <= currHierarchyPos && this.hierarchyPosCollection[rowMeasurePos + 1] ?\n this.measurePos : this.lvlCollection[levelName].position;\n }\n var currPos = this.lvlCollection[levelName] ? this.lvlCollection[levelName].position : -1;\n var lvlPos = 0;\n var indent = 0;\n while (lvlPos <= currPos && currPos > 0 && cell.level > -1) {\n var hasChild_1 = this.lvlCollection[this.lvlPosCollection[lvlPos]].hasChild;\n var prevHasChild = lvlPos > 0 ? this.lvlCollection[this.lvlPosCollection[lvlPos - 1]].hasChild : false;\n if (prevHasChild && !hasChild_1) {\n tCell.appendChild(createElement('span', {\n className: cls.LASTSPAN,\n }));\n }\n if (lvlPos !== currPos) {\n tCell.appendChild(createElement('span', {\n className: cls.NEXTSPAN,\n }));\n indent++;\n }\n lvlPos++;\n }\n if (cell.memberType === 3 && cell.level === -1 && Object.keys(this.lvlCollection).length > 1) {\n tCell.appendChild(createElement('span', {\n className: cls.NEXTSPAN,\n }));\n indent++;\n }\n this.indentCollection[cell.rowIndex] = indent;\n this.maxIndent = this.maxIndent > indent ? this.maxIndent : indent;\n }\n tCell.setAttribute('fieldname', cell.hierarchy);\n var grandTotal = (this.parent.olapEngineModule.tupRowInfo[cell.ordinal] ?\n (this.parent.olapEngineModule.tupRowInfo[cell.ordinal].measurePosition === 0 ?\n this.parent.olapEngineModule.tupRowInfo[cell.ordinal].allStartPos === 1 :\n this.parent.olapEngineModule.tupRowInfo[cell.ordinal].allStartPos === 0) : false);\n if (grandTotal) {\n tCell.classList.add('e-gtot');\n }\n return tCell;\n };\n /* eslint-enable */\n Render.prototype.columnCellBoundEvent = function (args) {\n if (args.cell.column && args.cell.column.customAttributes) {\n var cell = args.cell.column.customAttributes.cell;\n var tCell = args.node;\n if (cell) {\n var customClass = this.parent.hyperlinkSettings.cssClass;\n var level = cell.level ? cell.level : 0;\n if ((cell.level === -1 && !cell.rowSpan) || cell.rowSpan === -1) {\n args.node.style.display = 'none';\n }\n else if (cell.rowSpan > 1) {\n args.node.setAttribute('rowspan', cell.rowSpan.toString());\n args.node.setAttribute('aria-rowspan', cell.rowSpan.toString());\n if ((cell.rowIndex + cell.rowSpan) === this.engine.headerContent.length) {\n args.node.style.borderBottomWidth = '0px';\n }\n }\n args.node.setAttribute('aria-colindex', cell.colIndex.toString());\n args.node.setAttribute('index', cell.rowIndex.toString());\n var fieldName = void 0;\n if (this.parent.dataType === 'pivot') {\n if (!(this.parent.dataSourceSettings.values && this.parent.dataSourceSettings.valueAxis === 'column' &&\n this.parent.dataSourceSettings.values.length > 1 &&\n (cell.rowIndex === this.engine.headerContent.length - 1)) && this.parent.dataSourceSettings.columns &&\n this.parent.dataSourceSettings.columns.length > 0) {\n fieldName = level > -1 && this.parent.dataSourceSettings.columns[level] ?\n this.parent.dataSourceSettings.columns[level].name : '';\n tCell.setAttribute('fieldname', fieldName);\n }\n if (this.validateColumnTotalcell(cell.colIndex)) {\n tCell.classList.add('e-colstot');\n }\n }\n else {\n tCell = this.onOlapColumnCellBoundEvent(tCell, cell);\n }\n if (cell.type) {\n tCell.classList.add(cell.type === 'grand sum' ? 'e-gtot' : 'e-stot');\n if (cell.type === 'grand sum') {\n this.colGrandPos = cell.colIndex;\n }\n else {\n tCell.classList.add('e-colstot');\n }\n var localizedText = cell.type === 'grand sum' ? this.parent.localeObj.getConstant('grandTotal') :\n cell.formattedText.split('Total')[0] + this.parent.localeObj.getConstant('total');\n if (tCell.querySelector('.e-headertext') !== null) {\n tCell.querySelector('.e-headertext').innerText = localizedText;\n }\n else {\n tCell.querySelector('.e-stackedheadercelldiv').innerText = localizedText;\n }\n }\n tCell.classList.add(cls.COLUMNSHEADER);\n if (this.parent.isColumnCellHyperlink || cell.enableHyperlink) {\n if (tCell.querySelector('.e-stackedheadercelldiv')) {\n var innerText = tCell.querySelector('.e-stackedheadercelldiv').innerText;\n tCell.querySelector('.e-stackedheadercelldiv').innerHTML =\n '' + innerText + '';\n }\n else if (tCell.querySelector('.e-headertext')) {\n var innerText = tCell.querySelector('.e-headertext').innerText;\n tCell.querySelector('.e-headertext').innerHTML =\n '' + innerText + '';\n }\n }\n if (cell.hasChild === true && !cell.isNamedSet) {\n var hdrdiv = tCell.querySelector('.e-headercelldiv');\n if (hdrdiv) {\n hdrdiv.style.height = 'auto';\n hdrdiv.style.lineHeight = 'normal';\n }\n var div = createElement('div', {\n className: (cell.isDrilled === true ? cls.COLLAPSE : cls.EXPAND) + ' ' + cls.ICON,\n attrs: {\n 'title': cell.isDrilled === true ? this.parent.localeObj.getConstant('collapse') :\n this.parent.localeObj.getConstant('expand')\n }\n });\n tCell.children[0].classList.add(cls.CELLVALUE);\n if (window.navigator.userAgent.indexOf('Edge') > -1 || window.navigator.userAgent.indexOf('Trident') > -1) {\n tCell.children[0].style.display = 'table';\n }\n else {\n tCell.children[0].style.display = 'block';\n }\n tCell.insertBefore(div, tCell.children[0]);\n }\n tCell = this.appendValueSortIcon(cell, tCell, cell.rowIndex, cell.colIndex);\n if (this.parent.cellTemplate) {\n var index = tCell.getAttribute('index');\n var colindex = tCell.getAttribute('aria-colindex');\n var templateID = index + '_' + colindex;\n if (!(window && isBlazor())) {\n this.parent.gridHeaderCellInfo.push({ targetCell: tCell });\n }\n else if (index && colindex) {\n this.parent.gridCellCollection[templateID] = tCell;\n }\n }\n var len = this.parent.dataSourceSettings.values.length;\n for (var vCnt = 0; vCnt < len; vCnt++) {\n if (this.parent.dataSourceSettings.values[vCnt].name === cell.actualText) {\n if (this.parent.dataType === 'olap') {\n var grandTotal = (this.parent.olapEngineModule.tupColumnInfo[cell.ordinal] ?\n (this.parent.olapEngineModule.tupColumnInfo[cell.ordinal].measurePosition === 0 ?\n this.parent.olapEngineModule.tupColumnInfo[cell.ordinal].allStartPos === 1 :\n this.parent.olapEngineModule.tupColumnInfo[cell.ordinal].allStartPos === 0) : false);\n if (grandTotal) {\n tCell.classList.add('e-gtot');\n }\n }\n if (cell.valueSort.levelName === (this.parent.localeObj.getConstant('grandTotal') + (this.parent.dataSourceSettings.valueSortSettings.headerDelimiter) + (cell.formattedText))\n || cell.valueSort.levelName === ('Grand Total' + (this.parent.dataSourceSettings.valueSortSettings.headerDelimiter) + (cell.formattedText))) {\n tCell.classList.add('e-gtot');\n }\n else {\n tCell.classList.add(cls.VALUESHEADER);\n }\n }\n }\n this.unWireEvents(tCell);\n this.wireEvents(tCell);\n }\n }\n this.parent.trigger(events.headerCellInfo, args);\n };\n Render.prototype.onOlapColumnCellBoundEvent = function (tCell, cell) {\n tCell.setAttribute('fieldname', cell.memberType === 3 ? cell.actualText.toString() : cell.hierarchy);\n var prevCell = this.engine.headerContent[cell.rowIndex] ?\n this.engine.headerContent[cell.rowIndex][cell.colIndex - 1] : undefined;\n if (prevCell && prevCell.actualText === cell.actualText && prevCell.type === cell.type &&\n (prevCell.colSpan > 1)) {\n tCell.style.display = 'none';\n }\n else {\n tCell.setAttribute('colspan', cell.colSpan.toString());\n tCell.setAttribute('aria-colspan', cell.colSpan.toString());\n }\n if (cell.rowIndex === (this.engine.headerContent.length - 1) && cell.memberType === 2) {\n tCell.style.display = this.isSpannedCell(this.engine.headerContent.length, cell) ? 'none' : tCell.style.display;\n }\n return tCell;\n };\n Render.prototype.isSpannedCell = function (colLength, currCell) {\n var prevCell = this.engine.headerContent[currCell.rowIndex - 1] ?\n this.engine.headerContent[currCell.rowIndex - 1][currCell.colIndex] : undefined;\n var parentCellSpan;\n var parentCellPos;\n while (prevCell && ((prevCell.memberType === currCell.memberType) || (prevCell.type && currCell.type))) {\n if (prevCell.rowSpan > 0) {\n parentCellSpan = prevCell.rowSpan;\n parentCellPos = prevCell.rowIndex;\n }\n prevCell = this.engine.headerContent[prevCell.rowIndex - 1] ?\n this.engine.headerContent[prevCell.rowIndex - 1][currCell.colIndex] : undefined;\n }\n return (parentCellPos + parentCellSpan) >= colLength;\n };\n Render.prototype.onHyperCellClick = function (e) {\n var cell = e.target.parentElement.parentElement;\n cell = (cell.className.indexOf('e-headercelldiv') > -1 ? cell.parentElement : cell);\n var args = {\n currentCell: cell,\n data: this.engine.pivotValues[Number(cell.getAttribute('index'))][Number(cell.getAttribute('aria-colindex'))],\n cancel: true,\n nativeEvent: e\n };\n this.parent.trigger(events.hyperlinkCellClick, args, function (observedArgs) {\n if (!observedArgs.cancel) {\n args.currentCell = getElement(args.currentCell);\n var url = args.currentCell.getAttribute('data-url') ? (args.currentCell).getAttribute('data-url') :\n args.currentCell.querySelector('a').getAttribute('data-url');\n window.open(url);\n }\n });\n };\n Render.prototype.getRowStartPos = function () {\n var pivotValues = this.parent.pivotValues;\n var rowPos;\n for (var rCnt = 0; rCnt < (pivotValues ? pivotValues.length : 0); rCnt++) {\n if (pivotValues[rCnt] && pivotValues[rCnt][0] && pivotValues[rCnt][0].axis === 'row') {\n rowPos = rCnt;\n break;\n }\n }\n return rowPos;\n };\n Render.prototype.frameDataSource = function (type) {\n var dataContent = [];\n if (this.parent.dataSourceSettings.values.length > 0 && !this.engine.isEmptyData) {\n if ((this.parent.enableValueSorting) || !this.engine.isEngineUpdated) {\n var rowCnt = 0;\n var pivotValues = this.parent.pivotValues;\n var start = type === 'value' ? this.rowStartPos : 0;\n var end = type === 'value' ? (pivotValues ? pivotValues.length : 0) : this.rowStartPos;\n for (var rCnt = start; rCnt < end; rCnt++) {\n if (pivotValues[rCnt]) {\n rowCnt = type === 'header' ? rCnt : rowCnt;\n dataContent[rowCnt] = {};\n for (var cCnt = 0; cCnt < pivotValues[rCnt].length; cCnt++) {\n if (pivotValues[rCnt][cCnt]) {\n dataContent[rowCnt][cCnt] = pivotValues[rCnt][cCnt];\n }\n }\n rowCnt++;\n }\n }\n }\n else {\n dataContent = type === 'value' ? this.engine.valueContent : this.engine.headerContent;\n }\n }\n else {\n dataContent = this.frameEmptyData();\n }\n return dataContent;\n };\n /** @hidden */\n /* eslint-disable-next-line */\n Render.prototype.frameEmptyData = function () {\n /* eslint-disable-next-line */\n var dataContent = [{\n 0: { formattedText: this.parent.localeObj.getConstant('grandTotal') },\n 1: { formattedText: this.parent.localeObj.getConstant('emptyData') }\n }];\n return dataContent;\n };\n Render.prototype.calculateColWidth = function (colCount) {\n var offsetWidth = this.parent.element.offsetWidth ? this.parent.element.offsetWidth :\n this.parent.element.getBoundingClientRect().width;\n var parWidth = isNaN(this.parent.width) ? (this.parent.width.toString().indexOf('%') > -1 ?\n ((parseFloat(this.parent.width.toString()) / 100) * offsetWidth) : offsetWidth) :\n Number(this.parent.width);\n parWidth = parWidth - (this.gridSettings.columnWidth > this.resColWidth ? this.gridSettings.columnWidth : this.resColWidth) - 2;\n colCount = colCount - 1;\n this.isOverflows = !((colCount * this.gridSettings.columnWidth) < parWidth);\n var colWidth = (colCount * this.gridSettings.columnWidth) < parWidth ? (parWidth / colCount) : this.gridSettings.columnWidth;\n return (!this.isOverflows && !this.gridSettings.allowAutoResizing) ? this.gridSettings.columnWidth : Math.floor(colWidth);\n };\n Render.prototype.resizeColWidth = function (colCount) {\n var parWidth = isNaN(this.parent.width) ? (this.parent.width.toString().indexOf('%') > -1 ?\n ((parseFloat(this.parent.width.toString()) / 100) * this.parent.element.offsetWidth) : this.parent.element.offsetWidth) :\n Number(this.parent.width);\n colCount = colCount - 1;\n parWidth = parWidth - (this.gridSettings.columnWidth > this.resColWidth ? this.gridSettings.columnWidth : this.resColWidth) - 2;\n this.isOverflows = !((colCount * this.gridSettings.columnWidth) < parWidth);\n var colWidth = (colCount * this.gridSettings.columnWidth) < parWidth ? (parWidth / colCount) : this.gridSettings.columnWidth;\n return (!this.isOverflows && !this.gridSettings.allowAutoResizing) ? this.gridSettings.columnWidth : Math.floor(colWidth);\n };\n Render.prototype.calculateGridWidth = function () {\n var parWidth = this.parent.width;\n var eleWidth = this.parent.element.getBoundingClientRect().width ?\n this.parent.element.getBoundingClientRect().width : this.parent.element.offsetWidth;\n if (this.gridSettings.width === 'auto') {\n if (this.parent.width === 'auto') {\n parWidth = eleWidth;\n }\n else if (this.parent.width.toString().indexOf('%') > -1) {\n parWidth = ((parseFloat(this.parent.width.toString()) / 100) * eleWidth);\n }\n }\n else {\n parWidth = this.gridSettings.width;\n }\n return (!this.gridSettings.allowAutoResizing && parWidth > this.parent.totColWidth) ? this.parent.totColWidth : parWidth;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n Render.prototype.calculateGridHeight = function (elementCreated) {\n var gridHeight = this.parent.height;\n var parHeight = this.parent.getHeightAsNumber();\n if (isNaN(parHeight)) {\n parHeight = parHeight > this.parent.minHeight ? parHeight : this.parent.minHeight;\n }\n if (this.parent.currentView !== 'Chart') {\n if (this.gridSettings.height === 'auto' && parHeight && this.parent.element.querySelector('.' + cls.GRID_HEADER)) {\n var rowColHeight = this.parent.element.querySelector('.' + cls.GRID_HEADER).offsetHeight;\n var gBarHeight = rowColHeight + (this.parent.element.querySelector('.' + cls.GROUPING_BAR_CLASS) ?\n this.parent.element.querySelector('.' + cls.GROUPING_BAR_CLASS).offsetHeight : 0);\n var toolBarHeight = this.parent.element.querySelector('.' + cls.GRID_TOOLBAR) ? 42 : 0;\n gridHeight = parHeight - (gBarHeight + toolBarHeight) - 1;\n gridHeight = gridHeight < 40 ? 40 : gridHeight;\n if (elementCreated) {\n var tableHeight = this.parent.element.querySelector('.' + cls.FROZENCONTENT_DIV + ' .' + cls.TABLE).offsetHeight;\n var contentHeight = this.parent.element.querySelector('.' + cls.MOVABLECONTENT_DIV).offsetHeight;\n var tableWidth = this.parent.element.querySelector('.' + cls.MOVABLECONTENT_DIV + ' .' + cls.TABLE).offsetWidth;\n var contentWidth = this.parent.element.querySelector('.' + cls.MOVABLECONTENT_DIV).offsetWidth;\n var horizontalOverflow = contentWidth < tableWidth;\n //let verticalOverflow: boolean = contentHeight < tableHeight;\n var commonOverflow = horizontalOverflow && ((gridHeight - tableHeight) < 18) ? true : false;\n if (gridHeight >= tableHeight && (horizontalOverflow ? gridHeight >= contentHeight : true) &&\n !commonOverflow) {\n this.parent.grid.height = 'auto';\n }\n else {\n this.parent.grid.height = gridHeight;\n this.parent.grid.dataBind();\n }\n this.parent.grid.widthService.refreshFrozenScrollbar();\n }\n else {\n if (gridHeight > (this.engine.valueContent.length * this.gridSettings.rowHeight)) {\n gridHeight = 'auto';\n }\n }\n }\n else {\n gridHeight = this.gridSettings.height;\n }\n }\n return gridHeight < this.parent.gridSettings.rowHeight ? this.parent.gridSettings.rowHeight : gridHeight;\n };\n Render.prototype.frameStackedHeaders = function () {\n var singleValueFormat = this.parent.dataSourceSettings.values.length === 1 &&\n !this.parent.dataSourceSettings.alwaysShowValueHeader ?\n this.formatList[this.parent.dataSourceSettings.values[0].name] : undefined;\n var integrateModel = [];\n if ((this.parent.dataType === 'olap' ? true : this.parent.dataSourceSettings.values.length > 0) && !this.engine.isEmptyData) {\n var headerCnt = this.engine.headerContent.length;\n var headerSplit = []; /* eslint-disable-line */\n var splitPos = []; /* eslint-disable-line */\n var colWidth = this.calculateColWidth(this.engine.pivotValues ? this.engine.pivotValues[0].length : 0);\n do {\n var columnModel = [];\n var actualCnt = 0;\n headerCnt--;\n var colField = this.engine.headerContent[headerCnt];\n if (colField) {\n for (var cCnt = 0; cCnt < Object.keys(colField).length + (colField[0] ? 0 : 1); cCnt++) {\n var colSpan = (colField[cCnt] && colField[cCnt].colSpan) ?\n ((colField[cCnt].memberType !== 3 || headerCnt === 0) ?\n colField[cCnt].colSpan : headerSplit[cCnt]) : 1;\n colSpan = this.parent.dataType === 'olap' ? 1 : colSpan;\n var formattedText = colField[cCnt] ? (colField[cCnt].type === 'grand sum' ?\n this.parent.localeObj.getConstant('grandTotal') : (colField[cCnt].type === 'sum' ?\n colField[cCnt].formattedText.split('Total')[0] + this.parent.localeObj.getConstant('total') :\n colField[cCnt].formattedText)) : '';\n if (headerCnt === this.engine.headerContent.length - 1) {\n colSpan = 1;\n columnModel[actualCnt] = {\n field: (cCnt + '.formattedText'),\n headerText: formattedText,\n customAttributes: { 'cell': colField[cCnt] },\n /* eslint-disable-next-line */\n width: colField[cCnt] ? this.setSavedWidth(colField[cCnt].valueSort.levelName, colWidth) : this.resColWidth,\n minWidth: 30,\n format: cCnt === 0 ? '' : (isNullOrUndefined(singleValueFormat) ? this.formatList[colField[cCnt].actualText] : singleValueFormat),\n allowReordering: (this.parent.showGroupingBar ? false : this.parent.gridSettings.allowReordering),\n allowResizing: this.parent.gridSettings.allowResizing,\n visible: true\n };\n }\n else if (headerSplit[cCnt]) {\n colSpan = (colField[cCnt] && colField[cCnt].type === 'grand sum' &&\n colField[cCnt].memberType === 2) ? 1 : colSpan;\n var tmpSpan = colSpan;\n var innerModel = [];\n var innerPos = cCnt;\n while (tmpSpan > 0) {\n if (columnModel[actualCnt]) {\n if (!integrateModel[splitPos[innerPos]]) {\n break;\n }\n innerModel.push(integrateModel[splitPos[innerPos]]);\n }\n else {\n columnModel[actualCnt] = {\n headerText: formattedText,\n /* eslint-disable-next-line */\n field: colField[cCnt] ? colField[cCnt].valueSort.levelName : '',\n customAttributes: { 'cell': colField[cCnt] },\n /* eslint-disable-next-line */\n width: colField[cCnt] ? this.setSavedWidth(colField[cCnt].valueSort.levelName, colWidth) :\n this.resColWidth,\n minWidth: 30,\n allowReordering: (this.parent.showGroupingBar ? false : this.parent.gridSettings.allowReordering),\n allowResizing: this.parent.gridSettings.allowResizing,\n visible: true\n };\n innerModel = [integrateModel[splitPos[innerPos]]];\n }\n tmpSpan = tmpSpan - headerSplit[innerPos];\n innerPos = innerPos + headerSplit[innerPos];\n }\n columnModel[actualCnt].columns = innerModel;\n }\n if (columnModel[actualCnt]) {\n columnModel[actualCnt].clipMode = this.gridSettings.clipMode;\n }\n headerSplit[cCnt] = colSpan;\n splitPos[cCnt] = actualCnt;\n actualCnt++;\n cCnt = cCnt + colSpan - 1;\n }\n }\n integrateModel = columnModel.length > 0 ? columnModel : integrateModel;\n } while (headerCnt > 0);\n integrateModel[0] = {\n field: (0 + '.formattedText'),\n width: this.resColWidth,\n minWidth: 30,\n headerText: '',\n allowReordering: false,\n allowResizing: this.parent.gridSettings.allowResizing,\n visible: true\n };\n }\n else {\n integrateModel = this.frameEmptyColumns();\n }\n if (integrateModel.length > 1) {\n var lastColumn = integrateModel[integrateModel.length - 1];\n lastColumn.minWidth = lastColumn.width;\n lastColumn.width = 'auto';\n if (lastColumn.columns && lastColumn.columns.length > 0) {\n this.configLastColumnWidth(lastColumn.columns[lastColumn.columns.length - 1]);\n }\n }\n this.parent.triggerColumnRenderEvent(integrateModel);\n return integrateModel;\n };\n Render.prototype.configLastColumnWidth = function (column) {\n column.minWidth = column.width;\n column.width = 'auto';\n if (column.columns && column.columns.length > 0) {\n this.configLastColumnWidth(column.columns[column.columns.length - 1]);\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n Render.prototype.setSavedWidth = function (column, width) {\n width = this.parent.resizeInfo[column] ? this.parent.resizeInfo[column] : width;\n return width;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n Render.prototype.frameEmptyColumns = function () {\n var columns = [];\n var colWidth = this.calculateColWidth(2);\n columns.push({ field: '0.formattedText', headerText: '', minWidth: 30, width: this.resColWidth });\n columns.push({ field: '1.formattedText', headerText: this.parent.localeObj.getConstant('grandTotal'), minWidth: 30, width: colWidth });\n return columns;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n Render.prototype.getFormatList = function () {\n var formatArray = {};\n for (var vCnt = 0; vCnt < this.parent.dataSourceSettings.values.length; vCnt++) {\n var field = this.parent.dataSourceSettings.values[vCnt];\n var format = 'N';\n if (this.parent.dataType === 'olap') {\n if (this.parent.olapEngineModule.fieldList[field.name]) {\n var fString = this.parent.olapEngineModule.fieldList[field.name].formatString;\n format = fString.indexOf('#') > -1 ? fString : (fString[0] + '2');\n }\n }\n else {\n if (this.parent.dataSourceSettings.formatSettings.length > 0) {\n for (var fCnt = 0; fCnt < this.parent.dataSourceSettings.formatSettings.length; fCnt++) {\n var formatSettings = this.parent.dataSourceSettings.formatSettings[fCnt];\n if (field.name === formatSettings.name) {\n format = formatSettings.format;\n break;\n }\n else {\n continue;\n }\n }\n }\n }\n formatArray[field.name] = format;\n }\n return formatArray;\n };\n /* eslint-disable */\n Render.prototype.excelColumnEvent = function (args) {\n if (args.gridCell !== undefined && args.gridCell.column.width === 'auto') {\n this.parent.lastColumn = args.gridCell.column;\n args.gridCell.column.width = args.gridCell.column.minWidth;\n }\n args = this.exportHeaderEvent(args);\n this.parent.trigger(events.excelHeaderQueryCellInfo, args);\n };\n Render.prototype.pdfColumnEvent = function (args) {\n if (args.gridCell !== undefined && args.gridCell.column.width === 'auto') {\n this.parent.lastColumn = args.gridCell.column;\n args.gridCell.column.width = args.gridCell.column.minWidth;\n }\n this.parent.trigger(events.pdfHeaderQueryCellInfo, args);\n };\n /* eslint-enable */\n Render.prototype.excelRowEvent = function (args) {\n if (args.column.field === '0.formattedText') {\n var isValueCell = args.data[0].type === 'value';\n var level = 0;\n if (this.parent.dataType === 'olap') {\n /* eslint-disable-next-line */\n level = this.indentCollection[args.data[0].rowIndex];\n }\n else {\n level = isValueCell ? (this.lastSpan + 1) : args.data[0].level;\n }\n this.colPos = 0;\n args.style = { hAlign: 'Left', indent: level * 2 };\n this.lastSpan = isValueCell ? this.lastSpan : level;\n }\n else {\n this.colPos++;\n /* eslint-disable-next-line */\n if (isNullOrUndefined(args.data[this.colPos].value) || isNullOrUndefined(args.data[this.colPos].formattedText)) {\n args.value = '';\n }\n else {\n /* eslint-disable-next-line */\n args.value = args.data[this.colPos].value || args.data[this.colPos].formattedText;\n }\n }\n args = this.exportContentEvent(args);\n this.parent.trigger(events.excelQueryCellInfo, args);\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n Render.prototype.pdfRowEvent = function (args) {\n args = this.exportContentEvent(args);\n if (args.column.field === '0.formattedText') {\n var level = 0;\n var isValueCell = args.data[0].type === 'value';\n if (this.parent.dataType === 'olap') {\n level = this.indentCollection[args.data[0].rowIndex];\n }\n else {\n level = isValueCell ? (this.lastSpan + 1) : args.data[0].level !== -1 ?\n args.data[0].level : 0;\n }\n args.style = { paragraphIndent: level * 10 };\n this.lastSpan = isValueCell ? this.lastSpan : level;\n }\n this.parent.trigger(events.pdfQueryCellInfo, args);\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n Render.prototype.excelDataBound = function (args) {\n var excelRows = args.excelRows;\n var rowStartPos = Object.keys(this.engine.headerContent).length;\n for (var i = 0; i < rowStartPos; i++) {\n var cells = excelRows[i].cells;\n var tmpCell = [];\n for (var j = 0; j < cells.length; j++) {\n if (cells[j].rowSpan !== -1) {\n tmpCell.push(cells[j]);\n }\n }\n excelRows[i].cells = tmpCell;\n }\n };\n Render.prototype.exportHeaderEvent = function (args) {\n var rowSpan = 1;\n if (args.gridCell.column.customAttributes) {\n var cell = args.gridCell.column.customAttributes.cell;\n if (this.actualText !== cell.actualText && cell.colSpan > 1 && cell.level > -1) {\n args.gridCell.colSpan = args.cell.colSpan = cell.colSpan > -1 ? cell.colSpan : 1;\n }\n rowSpan = cell.rowSpan > -1 ? cell.rowSpan : 1;\n if (args.name === 'excelHeaderQueryCellInfo') {\n if (cell.rowSpan > -1) {\n rowSpan = cell.rowSpan;\n }\n else if (!isNullOrUndefined(cell.type) && cell.level !== 0) {\n rowSpan = -1;\n args.cell.rowSpan = -1;\n }\n }\n this.actualText = cell.actualText;\n }\n else {\n rowSpan = Object.keys(this.engine.headerContent).length;\n }\n if (args.cell.rowSpan !== rowSpan && rowSpan > -1) {\n args.cell.rowSpan = rowSpan;\n }\n return args;\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n Render.prototype.exportContentEvent = function (args) {\n args.value = args.data[Number(args.column.field.split('.formattedText')[0])].type === 'grand sum' ? /* eslint-disable-line */\n this.parent.localeObj.getConstant('grandTotal') : args.value;\n return args;\n };\n Render.prototype.unWireEvents = function (cell) {\n if (cell.querySelector('.e-hyperlinkcell')) {\n EventHandler.remove(cell.querySelector('.e-hyperlinkcell'), this.parent.isAdaptive ? 'touchend' : 'click', this.onHyperCellClick);\n }\n else {\n return;\n }\n };\n Render.prototype.wireEvents = function (cell) {\n if (cell.querySelector('.e-hyperlinkcell')) {\n EventHandler.add(cell.querySelector('.e-hyperlinkcell'), this.parent.isAdaptive ? 'touchend' : 'click', this.onHyperCellClick, this);\n }\n else {\n return;\n }\n };\n return Render;\n}());\nexport { Render };\n","import * as events from '../../common/base/constant';\nimport { PivotCommon } from '../../common/base/pivot-common';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * Module for PivotCommon rendering\n */\n/** @hidden */\nvar Common = /** @class */ (function () {\n function Common(parent) {\n /* eslint-enable */\n this.parent = parent;\n this.parent.commonModule = this;\n this.addEventListener();\n }\n /* eslint-disable-next-line */\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Common.prototype.getModuleName = function () {\n return 'common';\n };\n Common.prototype.initiateCommonModule = function () {\n if (!this.parent.pivotCommon) {\n /* eslint-disable */\n var args = {\n pivotEngine: this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule,\n dataSourceSettings: this.parent.dataSourceSettings.properties ?\n this.parent.dataSourceSettings.properties : this.parent.dataSourceSettings,\n id: this.parent.element.id,\n element: this.parent.element,\n moduleName: this.parent.getModuleName(),\n enableRtl: this.parent.enableRtl,\n isAdaptive: Browser.isDevice,\n renderMode: 'Popup',\n localeObj: this.parent.localeObj,\n dataType: this.parent.dataType\n };\n /* eslint-enable */\n this.parent.pivotCommon = new PivotCommon(args);\n }\n else {\n this.parent.pivotCommon.element = this.parent.element;\n this.parent.pivotCommon.engineModule = this.parent.dataType === 'olap' ?\n this.parent.olapEngineModule : this.parent.engineModule;\n this.parent.pivotCommon.parentID = this.parent.element.id;\n /* eslint-disable */\n this.parent.pivotCommon.dataSourceSettings = this.parent.dataSourceSettings.properties ?\n this.parent.dataSourceSettings.properties : this.parent.dataSourceSettings;\n /* eslint-enable */\n this.parent.pivotCommon.moduleName = this.parent.getModuleName();\n this.parent.pivotCommon.enableRtl = this.parent.enableRtl;\n this.parent.pivotCommon.isAdaptive = Browser.isDevice;\n this.parent.pivotCommon.renderMode = 'Popup';\n this.parent.pivotCommon.localeObj = this.parent.localeObj;\n this.parent.pivotCommon.dataType = this.parent.dataType;\n }\n this.parent.pivotCommon.control = this.parent;\n };\n /* eslint-disable-next-line */\n /**\n * @hidden\n */\n Common.prototype.addEventListener = function () {\n this.handlers = {\n load: this.initiateCommonModule\n };\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.handlers.load, this);\n this.parent.on(events.uiUpdate, this.handlers.load, this);\n };\n /* eslint-disable-next-line */\n /**\n * @hidden\n */\n Common.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.handlers.load);\n this.parent.off(events.uiUpdate, this.handlers.load);\n };\n /**\n * To destroy the groupingbar\n * @returns {void}\n * @hidden\n */\n Common.prototype.destroy = function () {\n this.removeEventListener();\n if (this.parent.pivotCommon) {\n this.parent.pivotCommon.destroy();\n this.parent.pivotCommon = null;\n }\n };\n return Common;\n}());\nexport { Common };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Event } from '@syncfusion/ej2-base';\n/**\n * Interface for a class SelectionSettings\n */\nvar PivotSelectionSettings = /** @class */ (function (_super) {\n __extends(PivotSelectionSettings, _super);\n function PivotSelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], PivotSelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], PivotSelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], PivotSelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], PivotSelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], PivotSelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], PivotSelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], PivotSelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n return PivotSelectionSettings;\n}(ChildProperty));\nexport { PivotSelectionSettings };\n/**\n * Represents Pivot widget model class.\n */\nvar GridSettings = /** @class */ (function (_super) {\n __extends(GridSettings, _super);\n function GridSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('auto')\n ], GridSettings.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], GridSettings.prototype, \"width\", void 0);\n __decorate([\n Property('Both')\n ], GridSettings.prototype, \"gridLines\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(true)\n ], GridSettings.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], GridSettings.prototype, \"allowAutoResizing\", void 0);\n __decorate([\n Property(null)\n ], GridSettings.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(110)\n ], GridSettings.prototype, \"columnWidth\", void 0);\n __decorate([\n Property('Ellipsis')\n ], GridSettings.prototype, \"clipMode\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], GridSettings.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Property({ mode: 'Row', cellSelectionMode: 'Flow', type: 'Single' })\n ], GridSettings.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property({ wrapMode: 'Both' })\n ], GridSettings.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property('AllPages')\n ], GridSettings.prototype, \"printMode\", void 0);\n __decorate([\n Property()\n ], GridSettings.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"columnRender\", void 0);\n return GridSettings;\n}(ChildProperty));\nexport { GridSettings };\n","import { Workbook } from '@syncfusion/ej2-excel-export';\nimport * as events from '../../common/base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PivotUtil } from '../../base/util';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the PivotGrid Excel Export module.\n * @param {PivotView} parent - Instance of pivot table.\n * @hidden\n */\n function ExcelExport(parent) {\n this.actualrCnt = 0;\n this.parent = parent;\n }\n /**\n * For internal use only - Get the module name.\n * @returns {string} - string.\n * @private\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'excelExport';\n };\n ExcelExport.prototype.addHeaderAndFooter = function (excelExportProperties, stringValue, type, rowCount) {\n var cells = [];\n if (!isNullOrUndefined(excelExportProperties.rows)) {\n this.actualrCnt = (type === 'footer') ? this.actualrCnt + rowCount - (excelExportProperties.rows[0].cells.length) : this.actualrCnt;\n var row = excelExportProperties.rows;\n for (var i = 0; i < row.length; i++) {\n for (var j = 0; j < row[i].cells.length; j++) {\n cells = [];\n cells.push({\n index: i + 1, value: row[i].cells[j].value,\n colSpan: row[i].cells[j].colSpan, rowSpan: row[i].cells[j].rowSpan, style: row[i].cells[j].style\n });\n this.actualrCnt++;\n this.rows.push({ index: this.actualrCnt, cells: cells });\n }\n }\n this.actualrCnt = (type === 'header') ? rowCount : this.actualrCnt;\n }\n else {\n if (stringValue !== '') {\n if (type === 'footer') {\n this.actualrCnt++;\n }\n cells.push({\n index: 1, value: stringValue,\n });\n this.rows.push({ index: this.actualrCnt + 1, cells: cells });\n this.actualrCnt = (type === 'header') ? this.actualrCnt + 2 : this.actualrCnt;\n }\n }\n };\n /* eslint-disable */\n /**\n * Method to perform excel export.\n * @hidden\n */\n ExcelExport.prototype.exportToExcel = function (type, exportProperties) {\n this.rows = [];\n this.actualrCnt = 0;\n var isHeaderSet = !isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.header);\n var isFooterSet = !isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.footer);\n var isFileNameSet = !isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.fileName);\n this.engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;\n /** Event trigerring */\n var clonedValues;\n var currentPivotValues = PivotUtil.getClonedPivotValues(this.engine.pivotValues);\n var customFileName = isFileNameSet ? exportProperties.fileName : 'default.xlsx';\n if (isHeaderSet) {\n this.addHeaderAndFooter(exportProperties.header, '', 'header', exportProperties.header.headerRows);\n }\n if (this.parent.exportAllPages && this.parent.enableVirtualization && this.parent.dataType !== 'olap') {\n var pageSettings = this.engine.pageSettings;\n this.engine.pageSettings = null;\n this.engine.generateGridData(this.parent.dataSourceSettings);\n this.parent.applyFormatting(this.engine.pivotValues);\n clonedValues = PivotUtil.getClonedPivotValues(this.engine.pivotValues);\n this.engine.pivotValues = currentPivotValues;\n this.engine.pageSettings = pageSettings;\n }\n else {\n clonedValues = currentPivotValues;\n }\n var args = {\n fileName: customFileName, header: '', footer: '', dataCollections: [clonedValues]\n };\n var fileName;\n var header;\n var footer;\n var dataCollections;\n this.parent.trigger(events.beforeExport, args, function (observedArgs) {\n fileName = observedArgs.fileName;\n header = observedArgs.header;\n footer = observedArgs.footer;\n dataCollections = observedArgs.dataCollections;\n });\n if (!isHeaderSet && isNullOrUndefined(args.excelExportProperties) && header !== '') {\n this.addHeaderAndFooter({}, header, 'header', undefined);\n }\n else if (!isNullOrUndefined(args.excelExportProperties) && !isNullOrUndefined(args.excelExportProperties.header)) {\n this.addHeaderAndFooter(args.excelExportProperties.header, '', 'header', args.excelExportProperties.header.headerRows);\n }\n /** Fill data and export */\n var workSheets = [];\n for (var dataColl = 0; dataColl < dataCollections.length; dataColl++) {\n var pivotValues = dataCollections[dataColl];\n var colLen = 0;\n var rowLen = pivotValues.length;\n var formatList = this.parent.renderModule.getFormatList();\n var maxLevel = 0;\n for (var rCnt = 0; rCnt < rowLen; rCnt++) {\n if (pivotValues[rCnt]) {\n this.actualrCnt++;\n colLen = pivotValues[rCnt].length;\n var cells = [];\n for (var cCnt = 0; cCnt < colLen; cCnt++) {\n if (pivotValues[rCnt][cCnt]) {\n var pivotCell = pivotValues[rCnt][cCnt];\n if (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {\n var cellValue = pivotCell.axis === 'value' ? pivotCell.value : pivotCell.formattedText;\n if (pivotCell.type === 'grand sum') {\n cellValue = this.parent.localeObj.getConstant('grandTotal');\n }\n else if (pivotCell.type === 'sum') {\n cellValue = cellValue.toString().replace('Total', this.parent.localeObj.getConstant('total'));\n }\n else {\n cellValue = cellValue;\n }\n if (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {\n cells.push({\n index: cCnt + 1, value: cellValue,\n colSpan: pivotCell.colSpan, rowSpan: (pivotCell.rowSpan === -1 ? 1 : pivotCell.rowSpan),\n });\n if (pivotCell.axis === 'value') {\n if (isNaN(pivotCell.value) || pivotCell.formattedText === '' ||\n pivotCell.formattedText === undefined || isNullOrUndefined(pivotCell.value)) {\n cells[cells.length - 1].value = '';\n }\n var field = (this.parent.dataSourceSettings.valueAxis === 'row' &&\n this.parent.dataType === 'olap' && pivotCell.rowOrdinal &&\n this.engine.tupRowInfo[pivotCell.rowOrdinal]) ?\n this.engine.tupRowInfo[pivotCell.rowOrdinal].measureName :\n pivotCell.actualText;\n cells[cells.length - 1].style = {\n numberFormat: formatList[field], bold: false, wrapText: true\n };\n if (pivotCell.style) {\n cells[cells.length - 1].style.backColor = pivotCell.style.backgroundColor;\n cells[cells.length - 1].style.fontColor = pivotCell.style.color;\n cells[cells.length - 1].style.fontName = pivotCell.style.fontFamily;\n cells[cells.length - 1].style.fontSize = Number(pivotCell.style.fontSize.split('px')[0]);\n }\n }\n else {\n cells[cells.length - 1].style = {\n bold: true, vAlign: 'Center', wrapText: true, indent: cCnt === 0 ? pivotCell.level * 10 : 0\n };\n if (pivotCell.axis === 'row' && cCnt === 0) {\n cells[cells.length - 1].style.hAlign = 'Left';\n if (this.parent.dataType === 'olap') {\n var indent = this.parent.renderModule.indentCollection[rCnt];\n cells[cells.length - 1].style.indent = indent * 2;\n maxLevel = maxLevel > indent ? maxLevel : indent;\n }\n else {\n cells[cells.length - 1].style.indent = pivotCell.level * 2;\n maxLevel = pivotCell.level > maxLevel ? pivotCell.level : maxLevel;\n }\n }\n }\n cells[cells.length - 1].style.borders = { color: '#000000', lineStyle: 'Thin' };\n }\n }\n cCnt = cCnt + (pivotCell.colSpan ? (pivotCell.colSpan - 1) : 0);\n }\n else {\n cells.push({\n index: cCnt + 1, value: '', colSpan: 1, rowSpan: 1,\n });\n }\n }\n this.rows.push({ index: this.actualrCnt, cells: cells });\n }\n }\n if (isFooterSet) {\n this.addHeaderAndFooter(exportProperties.footer, '', 'footer', exportProperties.footer.footerRows);\n }\n else if (!isFooterSet && footer !== '' && isNullOrUndefined(args.excelExportProperties)) {\n this.addHeaderAndFooter({}, footer, 'footer', undefined);\n }\n else if (!isNullOrUndefined(args.excelExportProperties) && !isNullOrUndefined(args.excelExportProperties.footer)) {\n this.addHeaderAndFooter(args.excelExportProperties.footer, '', 'footer', args.excelExportProperties.footer.footerRows);\n }\n var columns = [];\n for (var cCnt = 0; cCnt < colLen; cCnt++) {\n columns.push({ index: cCnt + 1, width: 100 });\n }\n if (maxLevel > 0) {\n columns[0].width = 100 + (maxLevel * 20);\n }\n workSheets.push({ columns: columns, rows: this.rows });\n }\n var book = new Workbook({ worksheets: workSheets }, type === 'Excel' ? 'xlsx' : 'csv', undefined, this.parent.currencyCode);\n if ('.xlsx' === fileName.substring(fileName.length - 5, fileName.length) || '.csv' === fileName.substring(fileName.length - 4, fileName.length)) {\n book.save(fileName);\n }\n else {\n book.save(fileName + (type === 'Excel' ? '.xlsx' : '.csv'));\n }\n };\n /**\n * To destroy the excel export module\n * @returns {void}\n * @hidden\n */\n ExcelExport.prototype.destroy = function () {\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { PdfGrid, PdfPen, PointF, PdfDocument, PdfStandardFont, PdfFontFamily, PdfSolidBrush, PdfColor, PdfStringFormat, PdfVerticalAlignment, PdfTextAlignment, PdfFontStyle, PdfPageTemplateElement, RectangleF, PdfBorders } from '@syncfusion/ej2-pdf-export';\nimport * as events from '../../common/base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PivotUtil } from '../../base/util';\n/**\n * @hidden\n * `PDFExport` module is used to handle the PDF export action.\n */\nvar PDFExport = /** @class */ (function () {\n /**\n * Constructor for the PivotGrid PDF Export module.\n * @param {PivotView} parent - Instance of pivot table.\n * @hidden\n */\n function PDFExport(parent) {\n this.parent = parent;\n }\n /**\n * For internal use only - Get the module name.\n * @returns {string} - string.\n * @private\n */\n PDFExport.prototype.getModuleName = function () {\n return 'pdfExport';\n };\n PDFExport.prototype.addPage = function (eventParams) {\n var page = eventParams.document.pages.add();\n var pdfExportProperties = eventParams.args.pdfExportProperties;\n var header = (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.header) && !isNullOrUndefined(pdfExportProperties.header.contents) && !isNullOrUndefined(pdfExportProperties.header.contents[0].value)) ?\n pdfExportProperties.header.contents[0].value : eventParams.args.header;\n var footer = (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.footer) && !isNullOrUndefined(pdfExportProperties.footer.contents) && !isNullOrUndefined(pdfExportProperties.footer.contents[0].value)) ?\n pdfExportProperties.footer.contents[0].value : eventParams.args.footer;\n var font = new PdfStandardFont(PdfFontFamily.TimesRoman, 15, PdfFontStyle.Regular);\n var brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n var pen = new PdfPen(new PdfColor(0, 0, 0), .5);\n /** Header and Footer to be set */\n var headerTemplate = new PdfPageTemplateElement(new RectangleF(0, 0, page.graphics.clientSize.width, 20));\n headerTemplate.graphics.drawString(header, font, pen, brush, 0, 0, new PdfStringFormat(PdfTextAlignment.Center));\n eventParams.document.template.top = headerTemplate;\n var footerTemplate = new PdfPageTemplateElement(new RectangleF(0, 0, page.graphics.clientSize.width, 20));\n footerTemplate.graphics.drawString(footer, font, pen, brush, 0, 0, new PdfStringFormat(PdfTextAlignment.Center));\n eventParams.document.template.bottom = footerTemplate;\n return page;\n };\n PDFExport.prototype.hexDecToRgb = function (hexDec) {\n if (hexDec === null || hexDec === '' || hexDec.length !== 7) {\n throw new Error('please set valid hex value for color..');\n }\n hexDec = hexDec.substring(1);\n var bigint = parseInt(hexDec, 16);\n var r = (bigint >> 16) & 255;\n var g = (bigint >> 8) & 255;\n var b = bigint & 255;\n return { r: r, g: g, b: b };\n };\n PDFExport.prototype.getFontStyle = function (theme) {\n var fontType = PdfFontStyle.Regular;\n if (!isNullOrUndefined(theme) && theme.bold) {\n fontType |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(theme) && theme.italic) {\n fontType |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(theme) && theme.underline) {\n fontType |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(theme) && theme.strikeout) {\n fontType |= PdfFontStyle.Strikeout;\n }\n return fontType;\n };\n PDFExport.prototype.getBorderStyle = function (borderStyle) {\n var borders = new PdfBorders();\n if (!isNullOrUndefined(borderStyle)) {\n var borderWidth = borderStyle.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? borderWidth * 0.75 : undefined;\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(borderStyle.color)) {\n var borderColor = this.hexDecToRgb(borderStyle.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(borderStyle.dashStyle)) {\n pen.dashStyle = this.getDashStyle(borderStyle.dashStyle);\n }\n borders.all = pen;\n }\n else {\n var pdfColor = new PdfColor(234, 234, 234);\n borders.all = new PdfPen(pdfColor);\n }\n return borders;\n };\n PDFExport.prototype.getDashStyle = function (dashType) {\n switch (dashType) {\n case 'Dash':\n return 1;\n case 'Dot':\n return 2;\n case 'DashDot':\n return 3;\n case 'DashDotDot':\n return 4;\n default:\n return 0;\n }\n };\n PDFExport.prototype.getStyle = function () {\n var border = new PdfBorders();\n if (!isNullOrUndefined(this.gridStyle)) {\n var fontFamily = !isNullOrUndefined(this.gridStyle.header.fontName) ?\n this.getFontFamily(this.gridStyle.header.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridStyle.header);\n var fontSize = !isNullOrUndefined(this.gridStyle.header.fontSize) ? this.gridStyle.header.fontSize : 10.5;\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridStyle.header.fontColor)) {\n var penBrushColor = this.hexDecToRgb(this.gridStyle.header.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridStyle.header.font)) {\n font = this.gridStyle.header.font;\n }\n return {\n border: this.getBorderStyle(this.gridStyle.header.border), font: font, brush: new PdfSolidBrush(pdfColor)\n };\n }\n else {\n return {\n brush: new PdfSolidBrush(new PdfColor()),\n border: border, font: undefined\n };\n }\n };\n PDFExport.prototype.setRecordThemeStyle = function (row, border) {\n if (!isNullOrUndefined(this.gridStyle) && !isNullOrUndefined(this.gridStyle.record)) {\n var fontFamily = !isNullOrUndefined(this.gridStyle.record.fontName) ?\n this.getFontFamily(this.gridStyle.record.fontName) : PdfFontFamily.Helvetica;\n var fontSize = !isNullOrUndefined(this.gridStyle.record.fontSize) ? this.gridStyle.record.fontSize : 9.75;\n var fontStyle = this.getFontStyle(this.gridStyle.record);\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridStyle.record.font)) {\n font = this.gridStyle.record.font;\n }\n row.style.setFont(font);\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridStyle.record.fontColor)) {\n var penBrushColor = this.hexDecToRgb(this.gridStyle.record.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n row.style.setTextBrush(new PdfSolidBrush(pdfColor));\n }\n var borderRecord = this.gridStyle && this.gridStyle.record &&\n this.gridStyle.record.border ? this.getBorderStyle(this.gridStyle.record.border) : border;\n row.style.setBorder(borderRecord);\n return row;\n };\n /**\n * Method to perform pdf export.\n * @hidden\n */\n /* eslint-disable */\n PDFExport.prototype.exportToPDF = function (pdfExportProperties) {\n this.engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;\n var eventParams = this.applyEvent();\n var headerStyle = this.getStyle();\n var indent = this.parent.renderModule.maxIndent ? this.parent.renderModule.maxIndent : 5;\n var firstColumnWidth = 100 + (indent * 20);\n var size = Math.floor((540 - firstColumnWidth) / 90) + 1;\n /** Fill data and export */\n var dataCollIndex = 0;\n var pivotValues = eventParams.args.dataCollections[dataCollIndex];\n for (var vLen = 0; eventParams.args.allowRepeatHeader && size > 1 && vLen < pivotValues.length; vLen++) {\n for (var vCnt = size; pivotValues[vLen] && vCnt < pivotValues[vLen].length; vCnt += size) {\n pivotValues[vLen].splice(vCnt, 0, pivotValues[vLen][0]);\n }\n }\n var colLength = pivotValues && pivotValues.length > 0 ? pivotValues[0].length : 0;\n var integratedCnt = 0;\n do {\n if (!isNullOrUndefined(pdfExportProperties)) {\n eventParams.args.header = (!isNullOrUndefined(pdfExportProperties.header) && !isNullOrUndefined(pdfExportProperties.header.contents) && !isNullOrUndefined(pdfExportProperties.header.contents[0].value)) ?\n pdfExportProperties.header.contents[0].value : eventParams.args.header;\n eventParams.args.footer = (!isNullOrUndefined(pdfExportProperties.footer) && !isNullOrUndefined(pdfExportProperties.footer.contents) && !isNullOrUndefined(pdfExportProperties.footer.contents[0].value)) ?\n pdfExportProperties.footer.contents[0].value : eventParams.args.footer;\n }\n var page = this.addPage(eventParams);\n var pdfGrid = new PdfGrid();\n var pageSize = size > 1 ? size : 5;\n if (pivotValues && pivotValues.length > 0) {\n pdfGrid.columns.add(pivotValues[0].length - integratedCnt >= pageSize ? pageSize : pivotValues[0].length - integratedCnt);\n var rowLen = pivotValues.length;\n var actualrCnt = 0;\n var maxLevel = 0;\n for (var rCnt = 0; rCnt < rowLen; rCnt++) {\n if (pivotValues[rCnt]) {\n var isColHeader = !(pivotValues[rCnt][0] && pivotValues[rCnt][0].axis === 'row');\n var colLen = pivotValues[rCnt].length > (integratedCnt + pageSize) ? (integratedCnt + pageSize) :\n pivotValues[rCnt].length;\n if (isColHeader) {\n pdfGrid.headers.add(1);\n }\n var pdfGridRow = !isColHeader ? pdfGrid.rows.addRow() : pdfGrid.headers.getHeader(actualrCnt);\n if (isColHeader) {\n pdfGridRow.style.setBorder(headerStyle.border);\n if (headerStyle.font) {\n pdfGridRow.style.setFont(headerStyle.font);\n }\n pdfGridRow.style.setTextBrush(headerStyle.brush);\n }\n else {\n this.setRecordThemeStyle(pdfGridRow, headerStyle.border);\n }\n var localCnt = 0;\n var isEmptyRow = true;\n for (var cCnt = integratedCnt; cCnt < colLen; cCnt++) {\n var isValueCell = false;\n if (pivotValues[rCnt][cCnt]) {\n var pivotCell = pivotValues[rCnt][cCnt];\n if (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {\n var cellValue = pivotCell.formattedText;\n cellValue = pivotCell.type === 'grand sum' ? this.parent.localeObj.getConstant('grandTotal') :\n (pivotCell.type === 'sum' ?\n cellValue.toString().replace('Total', this.parent.localeObj.getConstant('total')) : cellValue);\n if (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {\n pdfGridRow.cells.getCell(localCnt).columnSpan = pivotCell.colSpan ?\n (pageSize - localCnt < pivotCell.colSpan ? pageSize - localCnt : pivotCell.colSpan) : 1;\n if (isColHeader && pivotCell.rowSpan && pivotCell.rowSpan > 1) {\n pdfGridRow.cells.getCell(localCnt).rowSpan = pivotCell.rowSpan ? pivotCell.rowSpan : 1;\n }\n pdfGridRow.cells.getCell(localCnt).value = cellValue ? cellValue.toString() : '';\n }\n if (cellValue !== '') {\n isEmptyRow = false;\n }\n }\n maxLevel = pivotCell.level > maxLevel ? pivotCell.level : maxLevel;\n isValueCell = pivotCell.axis === 'value';\n cCnt = cCnt + (pdfGridRow.cells.getCell(localCnt).columnSpan ?\n (pdfGridRow.cells.getCell(localCnt).columnSpan - 1) : 0);\n localCnt = localCnt + (pdfGridRow.cells.getCell(localCnt).columnSpan ?\n (pdfGridRow.cells.getCell(localCnt).columnSpan - 1) : 0);\n if (pivotCell.style) {\n pdfGridRow = this.applyStyle(pdfGridRow, pivotCell, localCnt);\n }\n var args = {\n style: (pivotCell && pivotCell.isSum) ? { bold: true } : undefined,\n pivotCell: pivotCell,\n cell: pdfGridRow.cells.getCell(localCnt)\n };\n this.parent.trigger(events.onPdfCellRender, args);\n if (args.style) {\n this.processCellStyle(pdfGridRow.cells.getCell(localCnt), args);\n }\n }\n else {\n var args = {\n style: undefined,\n pivotCell: undefined,\n cell: pdfGridRow.cells.getCell(localCnt)\n };\n this.parent.trigger(events.onPdfCellRender, args);\n if (args.style) {\n this.processCellStyle(pdfGridRow.cells.getCell(localCnt), args);\n }\n pdfGridRow.cells.getCell(localCnt).value = '';\n if (cCnt === 0 && isColHeader && this.parent.dataSourceSettings.columns &&\n this.parent.dataSourceSettings.columns.length > 0) {\n pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan++;\n }\n else if (cCnt !== 0 && isColHeader && this.parent.dataSourceSettings.columns &&\n this.parent.dataSourceSettings.columns.length > 0 &&\n pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan <\n Object.keys(this.engine.headerContent).length) {\n pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan++;\n }\n }\n var stringFormat = new PdfStringFormat();\n if (this.parent.dataType === 'olap') {\n var indent_1 = (!isColHeader && localCnt === 0 && pivotValues[rCnt][cCnt]) ?\n (this.parent.renderModule.indentCollection[pivotValues[rCnt][cCnt].rowIndex]) : 0;\n stringFormat.paragraphIndent = indent_1 * 15;\n maxLevel = maxLevel > indent_1 ? maxLevel : indent_1;\n }\n else {\n stringFormat.paragraphIndent = (!isColHeader && localCnt === 0 && pivotValues[rCnt][cCnt] &&\n pivotValues[rCnt][cCnt].level !== -1) ?\n pivotValues[rCnt][cCnt].level * 15 : 0;\n }\n stringFormat.alignment = isValueCell ? PdfTextAlignment.Right : PdfTextAlignment.Left;\n stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n pdfGridRow.cells.getCell(localCnt).style.stringFormat = stringFormat;\n localCnt++;\n }\n if (isEmptyRow) {\n pdfGridRow.height = 16;\n }\n actualrCnt++;\n }\n }\n pdfGrid.columns.getColumn(0).width = 100 + (maxLevel * 20);\n }\n if (integratedCnt === 0 && this.parent.dataSourceSettings.columns && this.parent.dataSourceSettings.columns.length > 0) {\n pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan--;\n }\n pdfGrid.draw(page, new PointF(10, 20));\n integratedCnt = integratedCnt + pageSize;\n if (integratedCnt >= colLength && eventParams.args.dataCollections.length > (dataCollIndex + 1)) {\n dataCollIndex++;\n pivotValues = eventParams.args.dataCollections[dataCollIndex];\n colLength = pivotValues && pivotValues.length > 0 ? pivotValues[0].length : 0;\n integratedCnt = 0;\n }\n } while (integratedCnt < colLength);\n eventParams.document.save(eventParams.args.fileName + '.pdf');\n eventParams.document.destroy();\n };\n PDFExport.prototype.applyStyle = function (pdfGridRow, pivotCell, localCnt) {\n var color = this.parent.conditionalFormattingModule.hexToRgb(pivotCell.style.backgroundColor);\n var brush = new PdfSolidBrush(new PdfColor(color.r, color.g, color.b));\n pdfGridRow.cells.getCell(localCnt).style.backgroundBrush = brush;\n var size = Number(pivotCell.style.fontSize.split('px')[0]);\n var font = new PdfStandardFont(PdfFontFamily.TimesRoman, size, PdfFontStyle.Regular);\n pdfGridRow.cells.getCell(localCnt).style.font = font;\n color = this.parent.conditionalFormattingModule.hexToRgb(pivotCell.style.color);\n brush = new PdfSolidBrush(new PdfColor(color.r, color.g, color.b));\n pdfGridRow.cells.getCell(localCnt).style.textBrush = brush;\n return pdfGridRow;\n };\n PDFExport.prototype.getFontFamily = function (family) {\n switch (family) {\n case 'TimesRoman':\n return 2;\n case 'Courier':\n return 1;\n case 'Symbol':\n return 3;\n case 'ZapfDingbats':\n return 4;\n default:\n return 0;\n }\n };\n PDFExport.prototype.getFont = function (theme) {\n if (theme.style.font) {\n return theme.style.font;\n }\n var fontSize = (theme.cell.cellStyle.font && theme.cell.cellStyle.font.fontSize) ? theme.cell.cellStyle.font.fontSize :\n (!isNullOrUndefined(theme.style.fontSize)) ? (theme.style.fontSize * 0.75) : 9.75;\n var fontFamily = (!isNullOrUndefined(theme.style.fontFamily)) ?\n (this.getFontFamily(theme.style.fontFamily)) : PdfFontFamily.TimesRoman;\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(theme.style.bold) && theme.style.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(theme.style.italic) && theme.style.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(theme.style.underline) && theme.style.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(theme.style.strikeout) && theme.style.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return new PdfStandardFont(fontFamily, fontSize, fontStyle);\n };\n PDFExport.prototype.processCellStyle = function (gridCell, arg) {\n if (!isNullOrUndefined(arg.style.backgroundColor)) {\n var backColor = this.hexDecToRgb(arg.style.backgroundColor);\n gridCell.style.backgroundBrush = new PdfSolidBrush(new PdfColor(backColor.r, backColor.g, backColor.b));\n }\n if (!isNullOrUndefined(arg.style.textBrushColor)) {\n var textBrushColor = this.hexDecToRgb(arg.style.textBrushColor);\n gridCell.style.textBrush = new PdfSolidBrush(new PdfColor(textBrushColor.r, textBrushColor.g, textBrushColor.b));\n }\n if (!isNullOrUndefined(arg.style.textPenColor)) {\n var textColor = this.hexDecToRgb(arg.style.textPenColor);\n gridCell.style.textPen = new PdfPen(new PdfColor(textColor.r, textColor.g, textColor.b));\n }\n if (!isNullOrUndefined(arg.style.fontFamily) || !isNullOrUndefined(arg.style.fontSize) || !isNullOrUndefined(arg.style.bold) ||\n !isNullOrUndefined(arg.style.italic) || !isNullOrUndefined(arg.style.underline) || !isNullOrUndefined(arg.style.strikeout)) {\n gridCell.style.font = this.getFont(arg);\n }\n if (!isNullOrUndefined(arg.style.border)) {\n var border = new PdfBorders();\n var borderWidth = arg.style.border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? (borderWidth * 0.75) : (undefined);\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(arg.style.border.color)) {\n var borderColor = this.hexDecToRgb(arg.style.border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(arg.style.border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(arg.style.border.dashStyle);\n }\n border.all = pen;\n gridCell.style.borders = border;\n }\n };\n PDFExport.prototype.applyEvent = function () {\n var _this = this;\n /** Event trigerring */\n var clonedValues;\n var currentPivotValues = PivotUtil.getClonedPivotValues(this.engine.pivotValues);\n if (this.parent.exportAllPages && this.parent.enableVirtualization && this.parent.dataType !== 'olap') {\n var pageSettings = this.engine.pageSettings;\n this.engine.pageSettings = null;\n this.engine.generateGridData(this.parent.dataSourceSettings);\n this.parent.applyFormatting(this.engine.pivotValues);\n clonedValues = PivotUtil.getClonedPivotValues(this.engine.pivotValues);\n this.engine.pivotValues = currentPivotValues;\n this.engine.pageSettings = pageSettings;\n }\n else {\n clonedValues = currentPivotValues;\n }\n var style;\n var args = {\n fileName: 'default', header: '', footer: '', dataCollections: [clonedValues], allowRepeatHeader: true, style: style\n };\n var argument;\n this.parent.trigger(events.beforeExport, args, function (observedArgs) {\n _this.gridStyle = observedArgs.style;\n argument = observedArgs;\n });\n var document = new PdfDocument();\n return { document: document, args: argument };\n };\n /**\n * To destroy the pdf export module.\n * @returns {void}\n * @hidden\n */\n PDFExport.prototype.destroy = function () {\n };\n return PDFExport;\n}());\nexport { PDFExport };\n","import { KeyboardEvents, closest, addClass, isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport * as cls from '../../common/base/css-constant';\nimport * as events from '../../common/base/constant';\n/**\n * PivotView Keyboard interaction\n */\n/** @hidden */\nvar KeyboardInteraction = /** @class */ (function () {\n /**\n * Constructor.\n * @param {PivotView} parent - Instance of pivot table.\n */\n function KeyboardInteraction(parent) {\n this.keyConfigs = {\n tab: 'tab',\n shiftTab: 'shift+tab',\n enter: 'enter',\n shiftUp: 'shift+upArrow',\n shiftDown: 'shift+downArrow',\n shiftLeft: 'shift+leftArrow',\n shiftRight: 'shift+rightArrow',\n shiftEnter: 'shift+enter',\n ctrlEnter: 'ctrl+enter',\n upArrow: 'upArrow',\n downArrow: 'downArrow',\n leftArrow: 'leftArrow',\n rightArrow: 'rightArrow',\n escape: 'escape',\n ctrlShiftF: 'ctrl+shift+f'\n };\n this.parent = parent;\n this.event = undefined;\n this.parent.element.tabIndex = this.parent.element.tabIndex === -1 ? 0 : this.parent.element.tabIndex;\n this.pivotViewKeyboardModule = new KeyboardEvents(this.parent.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n KeyboardInteraction.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'tab':\n this.processTab(e);\n break;\n case 'shiftTab':\n this.processShiftTab(e);\n break;\n case 'enter':\n case 'shiftEnter':\n case 'ctrlEnter':\n this.processEnter(e);\n break;\n case 'shiftUp':\n case 'shiftDown':\n case 'shiftLeft':\n case 'shiftRight':\n case 'upArrow':\n case 'downArrow':\n case 'leftArrow':\n case 'rightArrow':\n this.processSelection(e);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlShiftF':\n this.toggleFieldList(e);\n break;\n }\n };\n KeyboardInteraction.prototype.getNextButton = function (target) {\n var allPivotButtons = this.allpivotButtons(target);\n removeClass(allPivotButtons, 'e-btn-focused');\n if (this.parent.grid.element.querySelector('.' + cls.PIVOT_BUTTON_CLASS)) {\n var len = allPivotButtons.length;\n for (var i = 0; i < len; i++) {\n if (allPivotButtons[i].getAttribute('data-uid') === target.getAttribute('data-uid')) {\n return (allPivotButtons[i + 1] ? allPivotButtons[i + 1] : target);\n }\n }\n }\n return target;\n };\n KeyboardInteraction.prototype.getPrevButton = function (target) {\n var allPivotButtons = this.allpivotButtons(target);\n removeClass(allPivotButtons, 'e-btn-focused');\n if (this.parent.grid.element.querySelector('.' + cls.PIVOT_BUTTON_CLASS)) {\n var len = allPivotButtons.length;\n for (var i = 0; i < len; i++) {\n if (allPivotButtons[i].getAttribute('data-uid') === target.getAttribute('data-uid')) {\n return (allPivotButtons[i - 1] ? allPivotButtons[i - 1] : target);\n }\n }\n }\n return target;\n };\n KeyboardInteraction.prototype.allpivotButtons = function (target) {\n var buttons;\n var columnFilterValueGroup = closest(target, '.' + cls.GRID_GROUPING_BAR_CLASS);\n var rowGroup = closest(target, '.' + cls.GROUP_PIVOT_ROW);\n var chartGroup = closest(target, '.' + cls.CHART_GROUPING_BAR_CLASS);\n var tableAxis = target.classList.contains(cls.ROWSHEADER);\n var chartAxis;\n var rowAxis;\n var columnFilterValueAxis;\n if (columnFilterValueGroup !== null) {\n rowAxis = columnFilterValueGroup.classList.contains(cls.GRID_GROUPING_BAR_CLASS);\n }\n else if (rowGroup !== null) {\n columnFilterValueAxis = rowGroup.classList.contains(cls.GROUP_PIVOT_ROW);\n }\n else if (chartGroup !== null) {\n chartAxis = chartGroup.classList.contains(cls.CHART_GROUPING_BAR_CLASS);\n }\n if (rowAxis || columnFilterValueAxis || tableAxis) {\n /* eslint-disable */\n var groupingbarButton = [].slice.call(this.parent.element.querySelector('.' + cls.GRID_GROUPING_BAR_CLASS).querySelectorAll('.' + cls.PIVOT_BUTTON_CLASS));\n var headerButton = [].slice.call(this.parent.element.querySelector('.' + cls.GROUP_PIVOT_ROW).querySelectorAll('.' + cls.PIVOT_BUTTON_CLASS));\n buttons = groupingbarButton.concat(headerButton);\n }\n else if (chartAxis) {\n buttons = [].slice.call(this.parent.element.querySelector('.' + cls.CHART_GROUPING_BAR_CLASS).querySelectorAll('.' + cls.PIVOT_BUTTON_CLASS));\n }\n /* eslint-enable */\n return buttons;\n };\n KeyboardInteraction.prototype.processTab = function (e) {\n var target = e.target;\n if (target && (closest(target, '.' + cls.PIVOT_BUTTON_CLASS) || target.classList.contains('e-group-row'))) {\n if (this.parent.grid) {\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n if (target.classList.contains('e-group-row') && target.querySelector('.e-btn-focused')) {\n target = target.querySelector('.e-btn-focused');\n }\n else if (target.classList.contains('e-group-row')) {\n gridFocus.focus();\n var element = gridFocus.getFocusedElement();\n addClass([element], ['e-focused', 'e-focus']);\n element.setAttribute('tabindex', '0');\n e.preventDefault();\n return;\n }\n var nextButton = this.getNextButton(target);\n if (nextButton.getAttribute('data-uid') !== target.getAttribute('data-uid')) {\n if (this.parent.element.querySelector('.e-focused')) {\n this.parent.element.querySelector('.e-focused').setAttribute('tabindex', '-1');\n removeClass(this.parent.element.querySelectorAll('.e-focus'), 'e-focus');\n removeClass(this.parent.element.querySelectorAll('.e-focused'), 'e-focused');\n gridFocus.setFocusedElement(this.parent.element.querySelector('.e-headercell'));\n this.parent.element.querySelector('.e-headercell').setAttribute('tabindex', '0');\n }\n else {\n gridFocus.currentInfo.skipAction = true;\n }\n addClass([nextButton], 'e-btn-focused');\n nextButton.focus();\n }\n else {\n gridFocus.focus();\n var element = gridFocus.getFocusedElement();\n addClass([element], ['e-focused', 'e-focus']);\n element.setAttribute('tabindex', '0');\n }\n e.preventDefault();\n return;\n }\n }\n else if (!this.parent.showGroupingBar && this.parent.showFieldList &&\n target && closest(target, '.' + cls.TOGGLE_FIELD_LIST_CLASS)) {\n if (this.parent.grid) {\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n gridFocus.focus();\n var element = gridFocus.getFocusedElement();\n addClass([element], ['e-focused', 'e-focus']);\n element.setAttribute('tabindex', '0');\n e.preventDefault();\n return;\n }\n }\n else if (!this.parent.showGroupingBar && !this.parent.showFieldList &&\n target && closest(target, '.' + cls.PIVOT_VIEW_CLASS) && !closest(target, '.e-popup.e-popup-open')) {\n if (this.parent.grid) {\n var gridElement = closest(target, '.' + cls.PIVOT_VIEW_CLASS);\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n var rows = [].slice.call(gridElement.getElementsByTagName('tr'));\n if (target.innerHTML === (rows[rows.length - 1]).lastChild.innerHTML) {\n gridFocus.currentInfo.skipAction = true;\n }\n else {\n gridFocus.focus();\n var element = gridFocus.getFocusedElement();\n addClass([element], ['e-focused', 'e-focus']);\n element.setAttribute('tabindex', '0');\n e.preventDefault();\n return;\n }\n }\n }\n else if (target && closest(target, '.' + cls.GRID_TOOLBAR) && this.parent.toolbar && this.parent.toolbarModule) {\n clearTimeout(this.timeOutObj);\n this.timeOutObj = setTimeout(function () {\n removeClass(closest(target, '.' + cls.GRID_TOOLBAR).querySelectorAll('.e-menu-item.e-focused'), 'e-focused');\n if (document.activeElement && document.activeElement.classList.contains('e-menu-item')) {\n addClass([document.activeElement], 'e-focused');\n }\n });\n }\n else if (target.classList.contains('e-numerictextbox')) {\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n gridFocus.focus();\n var element = gridFocus.getFocusedElement();\n removeClass([element], ['e-focused', 'e-focus']);\n element.setAttribute('tabindex', '0');\n e.preventDefault();\n }\n };\n KeyboardInteraction.prototype.processShiftTab = function (e) {\n var target = e.target;\n if (target && (closest(target, '.' + cls.PIVOT_BUTTON_CLASS) || target.classList.contains('e-group-row'))) {\n if (this.parent.grid) {\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n if (target.classList.contains('e-group-row') && target.querySelector('.e-btn-focused')) {\n target = target.querySelector('.e-btn-focused');\n }\n else if (target.classList.contains('e-group-row')) {\n target = this.parent.element.querySelector('.e-btn-focused') ? this.parent.element.querySelector('.e-btn-focused') :\n this.parent.element.querySelector('.' + cls.GRID_GROUPING_BAR_CLASS);\n var allPivotButtons = this.allpivotButtons(target);\n if (allPivotButtons.length > 0 && allPivotButtons[allPivotButtons.length - 1]) {\n gridFocus.currentInfo.skipAction = true;\n allPivotButtons[allPivotButtons.length - 1].focus();\n removeClass(allPivotButtons, 'e-btn-focused');\n addClass([allPivotButtons[allPivotButtons.length - 1]], 'e-btn-focused');\n e.preventDefault();\n return;\n }\n }\n var prevButton = this.getPrevButton(target);\n if (prevButton.getAttribute('data-uid') !== target.getAttribute('data-uid')) {\n gridFocus.currentInfo.skipAction = true;\n prevButton.focus();\n e.preventDefault();\n return;\n }\n }\n }\n else if (target && this.parent.grid && (target.classList.contains('e-movablefirst') ||\n (target.classList.contains('e-rowsheader') && closest(target, 'tr').getAttribute('data-uid') ===\n this.parent.grid.element.querySelector('.e-frozencontent tr').getAttribute('data-uid')))) {\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n if (target.classList.contains('e-movablefirst')) {\n target = (this.parent.element.querySelector('.' + cls.GROUP_ROW_CLASS + ' .e-btn-focused')) ?\n (this.parent.element.querySelector('.' + cls.GROUP_ROW_CLASS + ' .e-btn-focused')) :\n (this.parent.element.querySelector('.' + cls.GROUP_ROW_CLASS));\n var element = gridFocus.getFocusedElement();\n removeClass([element], ['e-focused', 'e-focus']);\n }\n var allPivotButtons_1 = this.allpivotButtons(target);\n if (allPivotButtons_1.length > 0) {\n gridFocus.currentInfo.skipAction = true;\n setTimeout(function () {\n allPivotButtons_1[allPivotButtons_1.length - 1].focus();\n });\n removeClass(allPivotButtons_1, 'e-btn-focused');\n addClass([allPivotButtons_1[allPivotButtons_1.length - 1]], 'e-btn-focused');\n e.preventDefault();\n return;\n }\n }\n else if (target && closest(target, '.' + cls.GRID_TOOLBAR) &&\n this.parent.toolbar && this.parent.toolbarModule) {\n clearTimeout(this.timeOutObj);\n this.timeOutObj = setTimeout(function () {\n removeClass(closest(target, '.' + cls.GRID_TOOLBAR).querySelectorAll('.e-menu-item.e-focused'), 'e-focused');\n if (document.activeElement && document.activeElement.classList.contains('e-menu-item')) {\n addClass([document.activeElement], 'e-focused');\n }\n });\n }\n else if (target.classList.contains('e-numerictextbox')) {\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n gridFocus.focus();\n var element = gridFocus.getFocusedElement();\n removeClass([element], ['e-focused', 'e-focus']);\n element.setAttribute('tabindex', '0');\n e.preventDefault();\n }\n };\n KeyboardInteraction.prototype.processEnter = function (e) {\n var target = e.target;\n if (target && closest(target, '.' + cls.GRID_CLASS)) {\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n if (e.keyCode === 13 && !e.shiftKey && !e.ctrlKey) {\n if (target.querySelector('.' + cls.ICON)) {\n this.event = e;\n target.querySelector('.' + cls.ICON).click();\n gridFocus.focus();\n var element = gridFocus.getFocusedElement();\n addClass([element], ['e-focused', 'e-focus']);\n element.setAttribute('tabindex', '0');\n }\n else if (target.classList.contains('e-valuescontent')) {\n target.dispatchEvent(new MouseEvent('dblclick', {\n 'view': window,\n 'bubbles': true,\n 'cancelable': true\n }));\n if (target.querySelector('.e-numerictextbox')) {\n target.click();\n }\n }\n else if (target.classList.contains('e-numerictextbox')) {\n gridFocus.focus();\n var element = gridFocus.getFocusedElement();\n removeClass([element], ['e-focused', 'e-focus']);\n }\n }\n else if (e.keyCode === 13 && e.shiftKey && !e.ctrlKey) {\n if (this.parent.enableValueSorting) {\n this.event = e;\n target.click();\n gridFocus.focus();\n var element = gridFocus.getFocusedElement();\n addClass([element], ['e-focused', 'e-focus']);\n element.setAttribute('tabindex', '0');\n }\n }\n else if (e.keyCode === 13 && !e.shiftKey && e.ctrlKey) {\n if (this.parent.hyperlinkSettings && target.querySelector('a')) {\n target.querySelector('a').click();\n }\n }\n e.preventDefault();\n return;\n }\n };\n KeyboardInteraction.prototype.clearSelection = function () {\n var control = this.parent;\n removeClass(control.element.querySelectorAll('.' + cls.CELL_SELECTED_BGCOLOR + ',.' + cls.SELECTED_BGCOLOR), [cls.SELECTED_BGCOLOR, cls.CELL_SELECTED_BGCOLOR, cls.CELL_ACTIVE_BGCOLOR]);\n this.parent.renderModule.selected();\n };\n KeyboardInteraction.prototype.processSelection = function (e) {\n var target = e.target;\n if (this.parent.grid && this.parent.gridSettings.allowSelection && this.parent.gridSettings.selectionSettings.mode !== 'Row' &&\n !target.classList.contains('e-numerictextbox')) {\n var control_1 = this.parent;\n var colIndex_1 = Number(e.target.getAttribute('aria-colIndex'));\n var rowIndex_1 = Number(e.target.getAttribute('index'));\n var ele_1;\n /* eslint-disable */\n if (target.nodeName === 'TH' || target.nodeName === 'TD') {\n if (e.action === 'shiftUp' || e.action === 'upArrow') {\n ele_1 = (rowIndex_1 === 0 || colIndex_1 === 0 || (target.nodeName !== 'TH' &&\n control_1.renderModule.rowStartPos !== rowIndex_1)) ? null : this.getParentElement(control_1, ele_1, colIndex_1, rowIndex_1 - 1);\n }\n else if (e.action === 'shiftDown' || e.action === 'downArrow') {\n ele_1 = control_1.element.querySelector('th[aria-colindex=\"' + colIndex_1 + '\"][index=\"' + (rowIndex_1 + 1) + '\"]');\n }\n else if (e.action === 'shiftLeft' || e.action === 'leftArrow') {\n ele_1 = e.target.previousSibling;\n }\n else {\n ele_1 = e.target.nextSibling;\n }\n }\n if (!isNullOrUndefined(ele_1)) {\n if (control_1.gridSettings.selectionSettings.mode === 'Both' ? !ele_1.classList.contains(cls.ROW_CELL_CLASS) : true) {\n colIndex_1 = Number(ele_1.getAttribute('aria-colindex'));\n rowIndex_1 = Number(ele_1.getAttribute('index'));\n var colSpan_1 = Number(ele_1.getAttribute('aria-colspan'));\n control_1.clearSelection(ele_1, e, colIndex_1, rowIndex_1);\n var selectArgs = {\n cancel: false,\n isCellClick: true,\n currentCell: ele_1,\n data: control_1.pivotValues[rowIndex_1][colIndex_1]\n };\n control_1.trigger(events.cellSelecting, selectArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n control_1.applyColumnSelection(e, ele_1, colIndex_1, colIndex_1 + (colSpan_1 > 0 ? (colSpan_1 - 1) : 0), rowIndex_1);\n }\n });\n }\n else {\n control_1.clearSelection(ele_1, e, colIndex_1, rowIndex_1);\n }\n }\n else {\n if (e.action === 'upArrow') {\n ele_1 = control_1.element.querySelector('[aria-colindex=\"' + colIndex_1 + '\"][index=\"' + (rowIndex_1 - 1) + '\"]');\n rowIndex_1--;\n }\n else if (e.action === 'downArrow') {\n ele_1 = control_1.element.querySelector('[aria-colindex=\"' + colIndex_1 + '\"][index=\"' + (rowIndex_1 + 1) + '\"]');\n rowIndex_1++;\n }\n if (!isNullOrUndefined(ele_1)) {\n control_1.clearSelection(ele_1, e, colIndex_1, rowIndex_1);\n }\n }\n }\n else if (target && (e.keyCode === 37 || e.keyCode === 38) &&\n this.parent && this.parent.showGroupingBar && this.parent.groupingBarModule && !target.classList.contains('e-numerictextbox')) {\n if (this.parent.grid && this.parent.element.querySelector('.e-frozenheader') && this.parent.element.querySelector('.e-frozenheader').querySelectorAll('.e-focus').length > 0) {\n removeClass(this.parent.element.querySelector('.e-frozenheader').querySelectorAll('.e-focus'), 'e-focus');\n removeClass(this.parent.element.querySelector('.e-frozenheader').querySelectorAll('.e-focused'), 'e-focused');\n this.parent.element.querySelector('.e-headercell').setAttribute('tabindex', '-1');\n var gridFocus = this.parent.grid.serviceLocator.getService('focus');\n gridFocus.setFocusedElement(target);\n addClass([target], ['e-focused', 'e-focus']);\n target.setAttribute('tabindex', '0');\n target.focus();\n e.preventDefault();\n return;\n }\n }\n else if (target.classList.contains('e-numerictextbox') && e.action === 'rightArrow' || e.action === 'leftArrow') {\n target.click();\n }\n /* eslint-enable */\n };\n KeyboardInteraction.prototype.getParentElement = function (control, ele, colIndex, rowIndex) {\n while (!ele) {\n ele = control.element.querySelector('[aria-colindex=\"' + colIndex + '\"][index=\"' + rowIndex + '\"]');\n colIndex--;\n }\n return ele;\n };\n KeyboardInteraction.prototype.toggleFieldList = function (e) {\n if (this.parent && !this.parent.isDestroyed && this.parent.showFieldList &&\n this.parent.pivotFieldListModule && !this.parent.pivotFieldListModule.isDestroyed &&\n this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS)) {\n if (!this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS).classList.contains(cls.ICON_HIDDEN)) {\n this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS).click();\n e.preventDefault();\n return;\n }\n else if (this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS).classList.contains(cls.ICON_HIDDEN) &&\n this.parent.pivotFieldListModule.dialogRenderer && this.parent.pivotFieldListModule.dialogRenderer.fieldListDialog &&\n !this.parent.pivotFieldListModule.dialogRenderer.fieldListDialog.isDestroyed) {\n this.parent.pivotFieldListModule.dialogRenderer.fieldListDialog.hide();\n }\n }\n };\n /**\n * To destroy the keyboard module.\n * @returns {void}\n * @private\n */\n KeyboardInteraction.prototype.destroy = function () {\n if (this.pivotViewKeyboardModule) {\n this.pivotViewKeyboardModule.destroy();\n }\n else {\n return;\n }\n };\n return KeyboardInteraction;\n}());\nexport { KeyboardInteraction };\n","import { createElement, remove, select } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport * as cls from '../../common/base/css-constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\n/**\n * Module to render Pivot button\n */\n/** @hidden */\nvar PivotContextMenu = /** @class */ (function () {\n /* eslint-disable */\n /** Constructor for render module */\n function PivotContextMenu(parent) {\n /* eslint-enable */\n this.parent = parent;\n this.parent.contextMenuModule = this;\n }\n /**\n * Initialize the pivot table rendering\n * @returns {void}\n * @private\n */\n PivotContextMenu.prototype.render = function () {\n this.renderContextMenu();\n };\n PivotContextMenu.prototype.renderContextMenu = function () {\n var menuItems = [\n { text: this.parent.localeObj.getConstant('addToFilter'), id: this.parent.element.id + '_Filters' },\n { text: this.parent.localeObj.getConstant('addToRow'), id: this.parent.element.id + '_Rows' },\n { text: this.parent.localeObj.getConstant('addToColumn'), id: this.parent.element.id + '_Columns' },\n { text: this.parent.localeObj.getConstant('addToValue'), id: this.parent.element.id + '_Values' }\n ];\n var menuOptions = {\n cssClass: cls.PIVOT_CONTEXT_MENU_CLASS,\n items: menuItems,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n beforeOpen: this.onBeforeMenuOpen.bind(this),\n select: this.onSelectContextMenu.bind(this)\n };\n var cMenu = createElement('ul', {\n id: this.parent.element.id + '_PivotContextMenu'\n });\n this.parent.element.appendChild(cMenu);\n this.menuObj = new ContextMenu(menuOptions);\n this.menuObj.isStringTemplate = true;\n this.menuObj.appendTo(cMenu);\n };\n PivotContextMenu.prototype.onBeforeMenuOpen = function (args) {\n var items = [].slice.call(args.element.querySelectorAll('li'));\n var fieldType = this.parent.dataType === 'olap' ? this.fieldElement.getAttribute('data-type') :\n this.fieldElement.querySelector('.' + cls.PIVOT_BUTTON_CONTENT_CLASS).getAttribute('data-type');\n removeClass(items, cls.MENU_DISABLE);\n if (fieldType === 'CalculatedField' || fieldType === 'isMeasureFieldsAvail') {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (item.textContent !== this.parent.localeObj.getConstant('addToValue')) {\n addClass([item], cls.MENU_DISABLE);\n }\n }\n }\n else if (fieldType === 'isMeasureAvail') {\n for (var _a = 0, items_2 = items; _a < items_2.length; _a++) {\n var item = items_2[_a];\n if (item.textContent !== this.parent.localeObj.getConstant('addToRow') &&\n item.textContent !== this.parent.localeObj.getConstant('addToColumn')) {\n addClass([item], cls.MENU_DISABLE);\n }\n }\n }\n else if (this.parent.dataType === 'olap') {\n for (var _b = 0, items_3 = items; _b < items_3.length; _b++) {\n var item = items_3[_b];\n if (item.textContent === this.parent.localeObj.getConstant('addToValue')) {\n addClass([item], cls.MENU_DISABLE);\n break;\n }\n }\n }\n };\n PivotContextMenu.prototype.onSelectContextMenu = function (menu) {\n if (menu.element.textContent !== null) {\n var fieldName = this.fieldElement.getAttribute('data-uid');\n var dropClass = menu.item.id.replace(this.parent.element.id + '_', '').toLowerCase();\n this.parent.pivotCommon.dataSourceUpdate.control = this.parent.getModuleName() === 'pivotview' ? this.parent :\n (this.parent.pivotGridModule ? this.parent.pivotGridModule : this.parent);\n this.parent.pivotCommon.dataSourceUpdate.btnElement = this.fieldElement;\n this.parent.pivotCommon.dataSourceUpdate.updateDataSource(fieldName, dropClass, -1);\n this.parent.updateDataSource(true);\n this.fieldElement = undefined;\n }\n };\n /**\n * To destroy the pivot button event listener\n * @returns {void}\n * @hidden\n */\n PivotContextMenu.prototype.destroy = function () {\n if (!this.parent.isDestroyed) {\n return;\n }\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n if (select('#' + this.parent.element.id + '_PivotContextMenu', document)) {\n remove(select('#' + this.parent.element.id + '_PivotContextMenu', document));\n }\n }\n else {\n return;\n }\n };\n return PivotContextMenu;\n}());\nexport { PivotContextMenu };\n","import { EventHandler, setStyleAttribute, isBlazor } from '@syncfusion/ej2-base';\nimport { contentReady } from '../../common/base/constant';\nimport * as cls from '../../common/base/css-constant';\n/**\n * `VirtualScroll` module is used to handle scrolling behavior.\n */\nvar VirtualScroll = /** @class */ (function () {\n /**\n * Constructor for PivotView scrolling.\n * @param {PivotView} parent - Instance of pivot table.\n * @hidden\n */\n function VirtualScroll(parent) {\n this.previousValues = { top: 0, left: 0 };\n this.frozenPreviousValues = { top: 0, left: 0 };\n this.eventType = '';\n this.parent = parent;\n this.engineModule = this.parent.dataType === 'pivot' ? this.parent.engineModule : this.parent.olapEngineModule;\n this.addInternalEvents();\n }\n /**\n * It returns the Module name.\n * @returns {string} - string.\n * @hidden\n */\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualscroll';\n };\n VirtualScroll.prototype.addInternalEvents = function () {\n this.parent.on(contentReady, this.wireEvents, this);\n };\n VirtualScroll.prototype.wireEvents = function () {\n if (this.parent.displayOption.view !== 'Chart') {\n var mCont = this.parent.element.querySelector('.' + cls.MOVABLECONTENT_DIV);\n var fCont = this.parent.element.querySelector('.' + cls.FROZENCONTENT_DIV);\n var mHdr = this.parent.element.querySelector('.' + cls.MOVABLEHEADER_DIV);\n var mScrollBar = mCont.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV);\n EventHandler.clearEvents(mCont);\n EventHandler.clearEvents(fCont);\n if (this.engineModule) {\n var ele = this.parent.isAdaptive ? mCont : mCont.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV);\n EventHandler.add(ele, 'scroll touchmove pointermove', this.onHorizondalScroll(mHdr, mCont, fCont), this);\n EventHandler.add(mCont.parentElement, 'scroll wheel touchmove pointermove keyup keydown', this.onVerticalScroll(fCont, mCont), this);\n EventHandler.add(mCont.parentElement.parentElement, 'mouseup touchend', this.common(mHdr, mCont, fCont), this);\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n // EventHandler.add(fCont.parentElement, 'wheel', this.onWheelScroll(mCont, fCont), this);\n // EventHandler.add(fCont.parentElement, 'touchstart pointerdown', this.setPageXY(), this);\n // EventHandler.add(fCont.parentElement, 'touchmove pointermove', this.onTouchScroll(mHdr, mCont, fCont), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mHdr, mCont, fCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr, mCont, fCont), this);\n }\n this.parent.grid.on('check-scroll-reset', function (args) {\n args.cancel = true;\n });\n this.parent.grid.on('prevent-frozen-scroll-refresh', function (args) {\n args.cancel = true;\n });\n this.parent.grid.isPreventScrollEvent = true;\n }\n };\n VirtualScroll.prototype.onWheelScroll = function (mCont, fCont) {\n var _this = this;\n var element = mCont;\n return function (e) {\n var top = element.parentElement.scrollTop + (e.deltaMode === 1 ? e.deltaY * 30 : e.deltaY);\n if (_this.frozenPreviousValues.top === top) {\n return;\n }\n e.preventDefault();\n _this.frozenPreviousValues.top = top;\n _this.eventType = e.type;\n };\n };\n VirtualScroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (!(e.touches && e.touches.length)) {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n else {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n return pageXY;\n };\n VirtualScroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n var eContent = _this.parent.element.querySelector('.' + cls.MOVABLECONTENT_DIV).parentElement;\n if (eContent.querySelector('tbody') === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n VirtualScroll.prototype.onTouchScroll = function (mHdr, mCont, fCont) {\n var _this = this;\n var element = mCont;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var pageXY = _this.getPointXY(e);\n var top = element.parentElement.scrollTop + (_this.pageXY.y - pageXY.y);\n var ele = _this.parent.isAdaptive ? mCont : element.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV);\n var left = ele.scrollLeft + (_this.pageXY.x - pageXY.x);\n if (_this.frozenPreviousValues.left === left || left < 0) {\n return;\n }\n mHdr.scrollLeft = left;\n ele.scrollLeft = left;\n _this.pageXY.x = pageXY.x;\n _this.frozenPreviousValues.left = left;\n if (_this.frozenPreviousValues.top === top || top < 0) {\n return;\n }\n _this.pageXY.y = pageXY.y;\n _this.frozenPreviousValues.top = top;\n _this.eventType = e.type;\n };\n };\n VirtualScroll.prototype.update = function (mHdr, mCont, top, left, e) {\n var _this = this;\n this.parent.isScrolling = true;\n var engine = this.parent.dataType === 'pivot' ? this.parent.engineModule : this.parent.olapEngineModule;\n if (isBlazor() || this.parent.dataSourceSettings.mode === 'Server') {\n engine.pageSettings = this.parent.pageSettings;\n }\n if (this.parent.pageSettings && engine.pageSettings) {\n if (this.direction === 'vertical') {\n var rowValues_1 = this.parent.dataType === 'pivot' ?\n (this.parent.dataSourceSettings.valueAxis === 'row' ? this.parent.dataSourceSettings.values.length : 1) : 1;\n var exactSize_1 = (this.parent.pageSettings.rowSize * rowValues_1 * this.parent.gridSettings.rowHeight);\n var section = Math.ceil(top / exactSize_1);\n if ((this.parent.scrollPosObject.vertical === section ||\n engine.pageSettings.rowSize >= engine.rowCount)) {\n // this.parent.hideWaitingPopup();\n return;\n }\n this.parent.showWaitingPopup();\n this.parent.scrollPosObject.vertical = section;\n engine.pageSettings.rowCurrentPage = section > 1 ? section : 1;\n var rowStartPos_1 = 0;\n if (this.parent.dataType === 'pivot') {\n if (isBlazor()) {\n var pivot_1 = this.parent;\n var sfBlazor = 'sfBlazor';\n /* eslint-disable-next-line */\n var dataSourceSettings = window[sfBlazor].\n copyWithoutCircularReferences([pivot_1.dataSourceSettings], pivot_1.dataSourceSettings);\n /* eslint-disable-next-line */\n var pageSettings = window[sfBlazor].\n copyWithoutCircularReferences([engine.pageSettings], engine.pageSettings);\n /* eslint-disable-next-line */\n pivot_1.interopAdaptor.invokeMethodAsync('PivotInteropMethod', 'generateGridData', {\n 'dataSourceSettings': dataSourceSettings,\n 'pageSettings': pageSettings, 'isScrolling': true\n }).then(\n /* eslint-disable-next-line */\n function (data) {\n pivot_1.updateBlazorData(data, pivot_1);\n pivot_1.pivotValues = engine.pivotValues;\n rowStartPos_1 = _this.parent.engineModule.rowStartPos;\n var exactPage = Math.ceil(rowStartPos_1 / (pivot_1.pageSettings.rowSize * rowValues_1));\n var pos = exactSize_1 * exactPage -\n (engine.rowFirstLvl * rowValues_1 * pivot_1.gridSettings.rowHeight);\n pivot_1.scrollPosObject.verticalSection = pos;\n });\n }\n else if (this.parent.dataSourceSettings.mode === 'Server') {\n this.parent.getEngine('onScroll', null, null, null, null, null, null);\n }\n else {\n this.parent.engineModule.generateGridData(this.parent.dataSourceSettings, this.parent.engineModule.headerCollection);\n rowStartPos_1 = this.parent.engineModule.rowStartPos;\n }\n }\n else {\n this.parent.olapEngineModule.scrollPage('scroll');\n rowStartPos_1 = this.parent.olapEngineModule.pageRowStartPos;\n }\n if (!(isBlazor() && this.parent.dataType === 'pivot')) {\n this.parent.pivotValues = engine.pivotValues;\n var exactPage = Math.ceil(rowStartPos_1 / (this.parent.pageSettings.rowSize * rowValues_1));\n var pos = exactSize_1 * exactPage -\n (engine.rowFirstLvl * rowValues_1 * this.parent.gridSettings.rowHeight);\n this.parent.scrollPosObject.verticalSection = pos;\n }\n }\n else {\n var colValues_1 = this.parent.dataType === 'pivot' ?\n (this.parent.dataSourceSettings.valueAxis === 'column' ? this.parent.dataSourceSettings.values.length : 1) : 1;\n var exactSize_2 = (this.parent.pageSettings.columnSize *\n colValues_1 * this.parent.gridSettings.columnWidth);\n var section = Math.ceil(left / exactSize_2);\n if (this.parent.scrollPosObject.horizontal === section) {\n // this.parent.hideWaitingPopup();\n return;\n }\n this.parent.showWaitingPopup();\n var pivot = this.parent;\n pivot.scrollPosObject.horizontal = section;\n engine.pageSettings.columnCurrentPage = section > 1 ? section : 1;\n var colStartPos_1 = 0;\n if (pivot.dataType === 'pivot') {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n var pivot_2 = this.parent;\n /* eslint-disable-next-line */\n var pageSettings = window[sfBlazor].\n copyWithoutCircularReferences([engine.pageSettings], engine.pageSettings);\n /* eslint-disable-next-line */\n var dataSourceSettings = window[sfBlazor].\n copyWithoutCircularReferences([pivot_2.dataSourceSettings], pivot_2.dataSourceSettings);\n /* eslint-disable-next-line */\n pivot_2.interopAdaptor.invokeMethodAsync('PivotInteropMethod', 'generateGridData', {\n 'dataSourceSettings': dataSourceSettings,\n 'pageSettings': pageSettings, 'isScrolling': true\n }).then(\n /* eslint-disable-next-line */\n function (data) {\n pivot_2.updateBlazorData(data, pivot_2);\n colStartPos_1 = pivot_2.engineModule.colStartPos;\n pivot_2.pivotValues = engine.pivotValues;\n var exactPage = Math.ceil(colStartPos_1 / (pivot_2.pageSettings.columnSize * colValues_1));\n var pos = exactSize_2 * exactPage - (engine.colFirstLvl *\n colValues_1 * pivot_2.gridSettings.columnWidth);\n pivot_2.scrollPosObject.horizontalSection = pos;\n });\n }\n else if (this.parent.dataSourceSettings.mode === 'Server') {\n this.parent.getEngine('onScroll', null, null, null, null, null, null);\n }\n else {\n pivot.engineModule.generateGridData(pivot.dataSourceSettings, pivot.engineModule.headerCollection);\n colStartPos_1 = pivot.engineModule.colStartPos;\n }\n }\n else {\n pivot.olapEngineModule.scrollPage('scroll');\n colStartPos_1 = pivot.olapEngineModule.pageColStartPos;\n }\n if (!(isBlazor() && pivot.dataType === 'pivot')) {\n pivot.pivotValues = engine.pivotValues;\n var exactPage = Math.ceil(colStartPos_1 / (pivot.pageSettings.columnSize * colValues_1));\n var pos = exactSize_2 * exactPage - (engine.colFirstLvl *\n colValues_1 * pivot.gridSettings.columnWidth);\n pivot.scrollPosObject.horizontalSection = pos;\n }\n }\n }\n };\n VirtualScroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n VirtualScroll.prototype.common = function (mHdr, mCont, fCont) {\n var _this = this;\n return function (e) {\n var ele = _this.parent.isAdaptive ? mCont : mCont.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV);\n _this.update(mHdr, mCont, mCont.parentElement.scrollTop * _this.parent.verticalScrollScale, ele.scrollLeft * _this.parent.horizontalScrollScale, e);\n };\n };\n VirtualScroll.prototype.onHorizondalScroll = function (mHdr, mCont, fCont) {\n var _this = this;\n /* eslint-disable-next-line */\n var timeOutObj;\n return function (e) {\n var ele = _this.parent.isAdaptive ? mCont : mCont.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV);\n var left = ele.scrollLeft * _this.parent.horizontalScrollScale;\n if (e.type === 'wheel' || e.type === 'touchmove' || _this.eventType === 'wheel' || _this.eventType === 'touchmove') {\n clearTimeout(timeOutObj);\n /* eslint-disable */\n timeOutObj = setTimeout(function () {\n left = e.type === 'touchmove' ? ele.scrollLeft : left;\n _this.update(mHdr, mCont, mCont.parentElement.scrollTop * _this.parent.verticalScrollScale, left, e);\n }, 300);\n }\n if (_this.previousValues.left === left) {\n return;\n }\n _this.parent.scrollDirection = _this.direction = 'horizondal';\n var horiOffset = -((left - _this.parent.scrollPosObject.horizontalSection - ele.scrollLeft));\n var vertiOffset = mCont.querySelector('.' + cls.TABLE).style.transform.split(',').length > 1 ?\n mCont.querySelector('.' + cls.TABLE).style.transform.split(',')[1].trim() : \"0px)\";\n if (ele.scrollLeft < _this.parent.scrollerBrowserLimit) {\n setStyleAttribute(mCont.querySelector('.e-table'), {\n transform: 'translate(' + horiOffset + 'px,' + vertiOffset\n });\n setStyleAttribute(mHdr.querySelector('.e-table'), {\n transform: 'translate(' + horiOffset + 'px,' + 0 + 'px)'\n });\n }\n var excessMove = _this.parent.scrollPosObject.horizontalSection > left ?\n -(_this.parent.scrollPosObject.horizontalSection - left) : ((left + mHdr.offsetWidth) -\n (_this.parent.scrollPosObject.horizontalSection + mCont.querySelector('.e-table').offsetWidth));\n var notLastPage = Math.ceil(_this.parent.scrollPosObject.horizontalSection / _this.parent.horizontalScrollScale) <\n _this.parent.scrollerBrowserLimit;\n if (_this.parent.scrollPosObject.horizontalSection > left ? true : (excessMove > 1 && notLastPage)) {\n // showSpinner(this.parent.element);\n if (left > mHdr.clientWidth) {\n if (_this.parent.scrollPosObject.left < 1) {\n _this.parent.scrollPosObject.left = mHdr.clientWidth;\n }\n _this.parent.scrollPosObject.left = _this.parent.scrollPosObject.left - 50;\n excessMove = _this.parent.scrollPosObject.horizontalSection > left ?\n (excessMove - _this.parent.scrollPosObject.left) : (excessMove + _this.parent.scrollPosObject.left);\n }\n else {\n excessMove = -_this.parent.scrollPosObject.horizontalSection;\n }\n horiOffset = -((left - (_this.parent.scrollPosObject.horizontalSection + excessMove) - mCont.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV).scrollLeft));\n var vWidth = (_this.parent.gridSettings.columnWidth * _this.engineModule.columnCount);\n if (vWidth > _this.parent.scrollerBrowserLimit) {\n _this.parent.horizontalScrollScale = vWidth / _this.parent.scrollerBrowserLimit;\n vWidth = _this.parent.scrollerBrowserLimit;\n }\n if (horiOffset > vWidth && horiOffset > left) {\n horiOffset = left;\n excessMove = 0;\n }\n setStyleAttribute(mCont.querySelector('.e-table'), {\n transform: 'translate(' + horiOffset + 'px,' + vertiOffset\n });\n setStyleAttribute(mHdr.querySelector('.e-table'), {\n transform: 'translate(' + horiOffset + 'px,' + 0 + 'px)'\n });\n _this.parent.scrollPosObject.horizontalSection = _this.parent.scrollPosObject.horizontalSection + excessMove;\n }\n _this.previousValues.left = left;\n _this.frozenPreviousValues.left = left;\n _this.eventType = '';\n mHdr.scrollLeft = ele.scrollLeft;\n };\n };\n VirtualScroll.prototype.onVerticalScroll = function (fCont, mCont) {\n var _this = this;\n var timeOutObj;\n return function (e) {\n var top = mCont.parentElement.scrollTop * _this.parent.verticalScrollScale;\n if (e.type === 'wheel' || e.type === 'touchmove' || _this.eventType === 'wheel' || _this.eventType === 'touchmove' || e.type === 'keyup' || e.type === 'keydown') {\n var ele_1 = _this.parent.isAdaptive ? mCont : mCont.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV);\n clearTimeout(timeOutObj);\n timeOutObj = setTimeout(function () {\n _this.update(null, mCont, mCont.parentElement.scrollTop * _this.parent.verticalScrollScale, ele_1.scrollLeft * _this.parent.horizontalScrollScale, e);\n }, 300);\n }\n /* eslint-enable */\n if (_this.previousValues.top === top) {\n return;\n }\n _this.parent.scrollDirection = _this.direction = 'vertical';\n var vertiOffset = -((top - _this.parent.scrollPosObject.verticalSection - mCont.parentElement.scrollTop));\n var horiOffset = mCont.querySelector('.' + cls.TABLE).style.transform.split(',')[0].trim();\n if (vertiOffset > _this.parent.virtualDiv.clientHeight) {\n vertiOffset = _this.parent.virtualDiv.clientHeight;\n }\n if (mCont.parentElement.scrollTop < _this.parent.scrollerBrowserLimit) {\n setStyleAttribute(fCont.querySelector('.e-table'), {\n transform: 'translate(' + 0 + 'px,' + vertiOffset + 'px)'\n });\n setStyleAttribute(mCont.querySelector('.e-table'), {\n transform: horiOffset + ',' + vertiOffset + 'px)'\n });\n }\n var excessMove = _this.parent.scrollPosObject.verticalSection > top ?\n -(_this.parent.scrollPosObject.verticalSection - top) : ((top + fCont.parentElement.clientHeight) -\n (_this.parent.scrollPosObject.verticalSection + fCont.querySelector('.e-table').offsetHeight));\n var notLastPage = Math.ceil(_this.parent.scrollPosObject.verticalSection / _this.parent.verticalScrollScale) <\n _this.parent.scrollerBrowserLimit;\n if (_this.parent.scrollPosObject.verticalSection > top ? true : (excessMove > 1 && notLastPage)) {\n // showSpinner(this.parent.element);\n if (top > fCont.parentElement.clientHeight) {\n if (_this.parent.scrollPosObject.top < 1) {\n _this.parent.scrollPosObject.top = fCont.parentElement.clientHeight;\n }\n _this.parent.scrollPosObject.top = _this.parent.scrollPosObject.top - 50;\n excessMove = _this.parent.scrollPosObject.verticalSection > top ?\n (excessMove - _this.parent.scrollPosObject.top) : (excessMove + _this.parent.scrollPosObject.top);\n }\n else {\n excessMove = -_this.parent.scrollPosObject.verticalSection;\n }\n var movableTable = _this.parent.element.querySelector('.' + cls.MOVABLECONTENT_DIV).querySelector('.e-table');\n vertiOffset = -((top - (_this.parent.scrollPosObject.verticalSection + excessMove) - mCont.parentElement.scrollTop));\n var vHeight = (_this.parent.gridSettings.rowHeight * _this.engineModule.rowCount + 0.1\n - movableTable.clientHeight);\n if (vHeight > _this.parent.scrollerBrowserLimit) {\n _this.parent.verticalScrollScale = vHeight / _this.parent.scrollerBrowserLimit;\n vHeight = _this.parent.scrollerBrowserLimit;\n }\n if (vertiOffset > vHeight && vertiOffset > top) {\n vertiOffset = top;\n excessMove = 0;\n }\n if (vertiOffset > _this.parent.virtualDiv.clientHeight) {\n vertiOffset = _this.parent.virtualDiv.clientHeight;\n }\n setStyleAttribute(fCont.querySelector('.e-table'), {\n transform: 'translate(' + 0 + 'px,' + vertiOffset + 'px)'\n });\n setStyleAttribute(mCont.querySelector('.e-table'), {\n transform: horiOffset + ',' + vertiOffset + 'px)'\n });\n _this.parent.scrollPosObject.verticalSection = _this.parent.scrollPosObject.verticalSection + excessMove;\n }\n _this.previousValues.top = top;\n _this.frozenPreviousValues.top = top;\n _this.eventType = '';\n };\n };\n /* eslint-disable-next-line */\n /**\n * @hidden\n */\n VirtualScroll.prototype.removeInternalEvents = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(contentReady, this.wireEvents);\n };\n /**\n * To destroy the virtualscrolling event listener\n * @returns {void}\n * @hidden\n */\n VirtualScroll.prototype.destroy = function () {\n this.removeInternalEvents();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, isBlazor, select } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n * The `Toolbar` module is used to handle ToolBar actions.\n *\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[item].text = '';\n this.predefinedItems[item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n remove(this.element);\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = ' \\\n
';\n }\n }\n this.bindSearchEvents();\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getItems();\n this.toolbar = new tool({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this)\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[viewStr]) {\n this.toolbar[registerTemp] = {};\n this.toolbar[viewStr] = this.parent[viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (!isBlazor() && typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n if (action === ResponsiveToolbarAction.isInitial) {\n var id = this.parent.element.id;\n var items = [id + '_edit', id + '_delete'];\n var selectedRecords = this.parent.getSelectedRowIndexes();\n var excludingItems = [id + '_responsiveback', id + '_update', id + '_cancel'];\n for (var _i = 0, _a = this.toolbar.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n if (selectedRecords.length) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n else {\n if (excludingItems.indexOf(item.id) === -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n if (this.searchElement) {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n }\n if (action === ResponsiveToolbarAction.isSearch) {\n var items = [this.parent.element.id + '_responsiveback', this.parent.element.id + '_search'];\n for (var _b = 0, _c = this.toolbar.items; _b < _c.length; _b++) {\n var item = _c[_b];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n if (edit.allowAdding) {\n enableItems.push(this.gridID + '_add');\n }\n else {\n disableItems.push(this.gridID + '_add');\n }\n if (edit.allowEditing && hasData) {\n enableItems.push(this.gridID + '_edit');\n }\n else {\n disableItems.push(this.gridID + '_edit');\n }\n if (edit.allowDeleting && hasData) {\n enableItems.push(this.gridID + '_delete');\n }\n else {\n disableItems.push(this.gridID + '_delete');\n }\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.getElementsByClassName('e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar.indexOf('Search') > -1) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = args;\n var originalEvent = args.originalEvent;\n gObj.trigger(events.toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n break;\n case gID + '_columnchooser':\n /* eslint-disable */\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n /* eslint-enable */\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n };\n Toolbar.prototype.search = function () {\n this.parent.search(this.searchElement.value);\n };\n Toolbar.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n };\n Toolbar.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.reRenderToolbar },\n { event: events.initialEnd, handler: this.render },\n { event: events.uiUpdate, handler: this.onPropertyChanged },\n { event: events.inBoundModelChanged, handler: this.updateSearchBox.bind(this) },\n { event: events.modelChanged, handler: this.refreshToolbarItems },\n { event: events.toolbarRefresh, handler: this.refreshToolbarItems },\n { event: events.inBoundModelChanged, handler: this.modelChanged },\n { event: events.dataBound, handler: this.refreshToolbarItems },\n { event: events.click, handler: this.removeResponsiveSearch },\n { event: events.rowModeChange, handler: this.reRenderToolbar }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { classList, addClass, removeClass, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { EventHandler, closest } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { Dialog, calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { createCboxWithWrap, toogleCheckbox, parentsUntil, removeAddCboxClasses } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { SearchBox } from '../services/focus-strategy';\nimport * as literals from '../base/string-literals';\n/**\n * The `ColumnChooser` module is used to show or hide columns dynamically.\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for the Grid ColumnChooser module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function ColumnChooser(parent, serviceLocator) {\n this.showColumn = [];\n this.hideColumn = [];\n this.changedColumns = [];\n this.unchangedColumns = [];\n this.isDlgOpen = false;\n this.initialOpenDlg = true;\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.isInitialOpen = false;\n this.isCustomizeOpenCC = false;\n this.searchOperator = 'startswith';\n this.prevShowedCols = [];\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.cBoxTrue = createCheckBox(this.parent.createElement, true, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, true, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n }\n ColumnChooser.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n this.unWireEvents();\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.element && !this.dlgObj.isDestroyed) {\n this.dlgObj.destroy();\n }\n };\n ColumnChooser.prototype.rtlUpdate = function () {\n if (this.parent.enableRtl) {\n addClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n else {\n removeClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(document, 'click', this.clickHandler, this);\n this.parent.on(events.uiUpdate, this.enableAfterRenderEle, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.addEventListener(events.dataBound, this.hideDialog.bind(this));\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.rtlUpdated, this.rtlUpdate, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.resetColumns, this.onResetColumns, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'click', this.clickHandler);\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.uiUpdate, this.enableAfterRenderEle);\n this.parent.off(events.rtlUpdated, this.rtlUpdate);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.off(events.resetColumns, this.onResetColumns);\n };\n ColumnChooser.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderDlgContent();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n };\n ColumnChooser.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n if (!this.isCustomizeOpenCC) {\n if (!isNullOrUndefined(closest(targetElement, '.e-cc')) || !isNullOrUndefined(closest(targetElement, '.e-cc-toolbar'))) {\n if (targetElement.classList.contains('e-columnchooser-btn') || targetElement.classList.contains('e-cc-toolbar')) {\n if ((this.initialOpenDlg && this.dlgObj.visible) || !this.isDlgOpen) {\n this.isDlgOpen = true;\n return;\n }\n }\n else if (targetElement.classList.contains('e-cc-cancel')) {\n targetElement.parentElement.querySelector('.e-ccsearch').value = '';\n this.columnChooserSearch('');\n this.removeCancelIcon();\n this.refreshCheckboxButton();\n }\n }\n else {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible && !targetElement.classList.contains('e-toolbar-items')) {\n this.dlgObj.hide();\n this.clearActions();\n this.refreshCheckboxState();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.targetdlg = e.target;\n }\n }\n if (this.isCustomizeOpenCC && e.target.classList.contains('e-cc-cancel')) {\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n ColumnChooser.prototype.hideDialog = function () {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible) {\n this.dlgObj.hide();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n };\n /**\n * To render columnChooser when showColumnChooser enabled.\n *\n * @param {number} x - specifies the position x\n * @param {number} y - specifies the position y\n * @param {Element} target - specifies the target\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.renderColumnChooser = function (x, y, target) {\n if (!this.dlgObj.visible && (this.parent.detailTemplate || this.parent.childGrid)) {\n this.hideOpenedDialog();\n }\n if (!this.dlgObj.visible) {\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (target) {\n this.targetdlg = target;\n }\n this.refreshCheckboxState();\n this.dlgObj.dataBind();\n this.dlgObj.element.style.maxHeight = '430px';\n var elementVisible = this.dlgObj.element.style.display;\n this.dlgObj.element.style.display = 'block';\n var newpos = calculateRelativeBasedPosition(closest(target, '.e-toolbar-item'), this.dlgObj.element);\n this.dlgObj.element.style.display = elementVisible;\n this.dlgObj.element.style.top = newpos.top + closest(target, '.e-cc-toolbar').getBoundingClientRect().height + 'px';\n var dlgWidth = 250;\n if (!isNullOrUndefined(closest(target, '.e-bigger'))) {\n this.dlgObj.width = 258;\n }\n if (Browser.isDevice) {\n this.dlgObj.target = document.body;\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n this.dlgObj.open = this.mOpenDlg.bind(this);\n }\n else {\n if (this.parent.enableRtl) {\n this.dlgObj.element.style.left = target.offsetLeft + 'px';\n }\n else {\n this.dlgObj.element.style.left = ((newpos.left - dlgWidth) + closest(target, '.e-cc-toolbar').clientWidth) + 2 + 'px';\n }\n }\n this.removeCancelIcon();\n this.dlgObj.show();\n this.parent.notify(events.columnChooserOpened, { dialog: this.dlgObj });\n }\n else {\n // this.unWireEvents();\n this.hideDialog();\n this.addcancelIcon();\n this.clearActions();\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n this.isCustomizeOpenCC = true;\n if (this.dlgObj.visible) {\n this.hideDialog();\n return;\n }\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (!this.isInitialOpen) {\n this.dlgObj.content = this.renderChooserList();\n this.updateIntermediateBtn();\n }\n else {\n this.refreshCheckboxState();\n }\n this.dlgObj.dataBind();\n this.dlgObj.position = { X: 'center', Y: 'center' };\n if (isNullOrUndefined(X)) {\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n }\n else {\n this.dlgObj.element.style.top = '';\n this.dlgObj.element.style.left = '';\n this.dlgObj.element.style.top = Y + 'px';\n this.dlgObj.element.style.left = X + 'px';\n }\n this.dlgObj.beforeOpen = this.customDialogOpen.bind(this);\n this.dlgObj.show();\n this.isInitialOpen = true;\n this.dlgObj.beforeClose = this.customDialogClose.bind(this);\n };\n ColumnChooser.prototype.enableAfterRenderEle = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n ColumnChooser.prototype.keyUpHandler = function (e) {\n if (e.action === 'escape') {\n this.hideDialog();\n }\n };\n ColumnChooser.prototype.customDialogOpen = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.add(searchElement, 'keyup', this.columnChooserManualSearch, this);\n };\n ColumnChooser.prototype.customDialogClose = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.remove(searchElement, 'keyup', this.columnChooserManualSearch);\n };\n ColumnChooser.prototype.getColumns = function () {\n var columns = this.parent.getColumns().filter(function (column) { return (column.type !== 'checkbox'\n && column.showInColumnChooser === true) || (column.type === 'checkbox' && column.field !== undefined); });\n return columns;\n };\n ColumnChooser.prototype.renderDlgContent = function () {\n this.dlgDiv = this.parent.createElement('div', { className: 'e-ccdlg e-cc', id: this.parent.element.id + '_ccdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('ColumnChooserDialogARIA'));\n this.parent.element.appendChild(this.dlgDiv);\n this.dlgObj = new Dialog({\n header: this.l10n.getConstant('ChooseColumns'),\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n target: document.getElementById(this.parent.element.id),\n buttons: [{\n click: this.confirmDlgBtnClick.bind(this),\n buttonModel: {\n content: this.l10n.getConstant('OKButton'), isPrimary: true,\n cssClass: 'e-cc e-cc_okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this),\n buttonModel: { cssClass: 'e-flat e-cc e-cc-cnbtn', content: this.l10n.getConstant('CancelButton') }\n }],\n content: this.renderChooserList(),\n width: 250,\n cssClass: 'e-cc',\n animationSettings: { effect: 'None' }\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[isStringTemplate] = true;\n this.dlgObj.appendTo(this.dlgDiv);\n this.wireEvents();\n };\n ColumnChooser.prototype.renderChooserList = function () {\n this.mainDiv = this.parent.createElement('div', { className: 'e-main-div e-cc' });\n var searchDiv = this.parent.createElement('div', { className: 'e-cc-searchdiv e-cc e-input-group' });\n var ccsearchele = this.parent.createElement('input', {\n className: 'e-ccsearch e-cc e-input',\n attrs: { placeholder: this.l10n.getConstant('Search') }\n });\n var ccsearchicon = this.parent.createElement('span', {\n className: 'e-ccsearch-icon e-icons e-cc e-input-group-icon',\n attrs: { title: this.l10n.getConstant('Search') }\n });\n var conDiv = this.parent.createElement('div', { className: 'e-cc-contentdiv' });\n this.innerDiv = this.parent.createElement('div', { className: 'e-innerdiv e-cc' });\n searchDiv.appendChild(ccsearchele);\n searchDiv.appendChild(ccsearchicon);\n this.searchBoxObj = new SearchBox(ccsearchele);\n var innerDivContent = this.refreshCheckboxList(this.parent.getColumns());\n this.innerDiv.appendChild(innerDivContent);\n conDiv.appendChild(this.innerDiv);\n this.mainDiv.appendChild(searchDiv);\n this.mainDiv.appendChild(conDiv);\n return this.mainDiv;\n };\n ColumnChooser.prototype.confirmDlgBtnClick = function (args) {\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.changedColumns = (this.changedColumns.length > 0) ? this.changedColumns : this.unchangedColumns;\n this.changedColumnState(this.changedColumns);\n var uncheckedLength = this.ulElement.querySelector('.e-uncheck') &&\n this.ulElement.querySelectorAll('.e-uncheck:not(.e-selectall)').length;\n if (!isNullOrUndefined(args)) {\n if (uncheckedLength < this.parent.getColumns().length) {\n if (this.hideColumn.length) {\n this.columnStateChange(this.hideColumn, false);\n }\n if (this.showColumn.length) {\n this.columnStateChange(this.showColumn, true);\n }\n this.getShowHideService.setVisible(this.stateChangeColumns, this.changedStateColumns);\n this.clearActions();\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n if (this.parent.getCurrentViewRecords().length === 0) {\n var emptyRowCell = this.parent.element.querySelector('.e-emptyrow').querySelector('td');\n emptyRowCell.setAttribute('colSpan', this.parent.getVisibleColumns().length.toString());\n }\n }\n }\n };\n ColumnChooser.prototype.onResetColumns = function (e) {\n if (e.requestType === 'columnstate') {\n this.resetColumnState();\n return;\n }\n };\n ColumnChooser.prototype.resetColumnState = function () {\n this.showColumn = [];\n this.hideColumn = [];\n this.hideDialog();\n };\n ColumnChooser.prototype.changedColumnState = function (changedColumns) {\n for (var index = 0; index < changedColumns.length; index++) {\n var colUid = changedColumns[index];\n var currentCol = this.parent.getColumnByUid(colUid);\n this.changedStateColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.columnStateChange = function (stateColumns, state) {\n for (var index = 0; index < stateColumns.length; index++) {\n var colUid = stateColumns[index];\n var currentCol = this.parent.getColumnByUid(colUid);\n if (currentCol.type !== 'checkbox') {\n currentCol.visible = state;\n }\n this.stateChangeColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.clearActions = function () {\n this.resetColumnState();\n this.addcancelIcon();\n };\n ColumnChooser.prototype.clearBtnClick = function () {\n this.clearActions();\n this.parent.notify(events.columnChooserCancelBtnClick, { dialog: this.dlgObj });\n };\n ColumnChooser.prototype.checkstatecolumn = function (isChecked, coluid, selectAll) {\n if (selectAll === void 0) { selectAll = false; }\n if (isChecked) {\n if (this.hideColumn.indexOf(coluid) !== -1) {\n this.hideColumn.splice(this.hideColumn.indexOf(coluid), 1);\n }\n if (this.showColumn.indexOf(coluid) === -1) {\n this.showColumn.push(coluid);\n }\n }\n else {\n if (this.showColumn.indexOf(coluid) !== -1) {\n this.showColumn.splice(this.showColumn.indexOf(coluid), 1);\n }\n if (this.hideColumn.indexOf(coluid) === -1) {\n this.hideColumn.push(coluid);\n }\n }\n if (selectAll) {\n if (!isChecked) {\n this.changedColumns.push(coluid);\n }\n else {\n this.unchangedColumns.push(coluid);\n }\n }\n else if (this.changedColumns.indexOf(coluid) !== -1) {\n this.changedColumns.splice(this.changedColumns.indexOf(coluid), 1);\n }\n else {\n this.changedColumns.push(coluid);\n }\n };\n ColumnChooser.prototype.columnChooserSearch = function (searchVal) {\n var clearSearch = false;\n var fltrCol;\n var okButton;\n var buttonEle = this.dlgDiv.querySelector('.e-footer-content');\n var selectedCbox = this.ulElement.querySelector('.e-check') &&\n this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n this.isInitialOpen = true;\n if (buttonEle) {\n okButton = buttonEle.querySelector('.e-btn').ej2_instances[0];\n }\n if (searchVal === '') {\n this.removeCancelIcon();\n fltrCol = this.getColumns();\n clearSearch = true;\n }\n else {\n fltrCol = new DataManager(this.getColumns()).executeLocal(new Query()\n .where('headerText', this.searchOperator, searchVal, true, this.parent.columnChooserSettings.ignoreAccent));\n }\n if (fltrCol.length) {\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.classList.remove('e-ccnmdiv');\n this.innerDiv.appendChild(this.refreshCheckboxList(fltrCol));\n if (!clearSearch) {\n this.addcancelIcon();\n this.refreshCheckboxButton();\n }\n else {\n if (okButton && selectedCbox) {\n okButton.disabled = false;\n }\n }\n }\n else {\n var nMatchele = this.parent.createElement('span', { className: 'e-cc e-nmatch' });\n nMatchele.innerHTML = this.l10n.getConstant('Matchs');\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.appendChild(nMatchele);\n this.innerDiv.classList.add('e-ccnmdiv');\n if (okButton) {\n okButton.disabled = true;\n }\n }\n this.flag = true;\n this.stopTimer();\n };\n ColumnChooser.prototype.wireEvents = function () {\n EventHandler.add(this.dlgObj.element, 'click', this.checkBoxClickHandler, this);\n EventHandler.add(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch, this);\n this.searchBoxObj.wireEvent();\n };\n ColumnChooser.prototype.unWireEvents = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.dlgObj.element) {\n EventHandler.remove(this.dlgObj.element, 'click', this.checkBoxClickHandler);\n }\n EventHandler.remove(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch);\n this.searchBoxObj.unWireEvent();\n };\n ColumnChooser.prototype.checkBoxClickHandler = function (e) {\n var checkstate;\n var elem = parentsUntil(e.target, 'e-checkbox-wrapper');\n if (elem) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateSelectAll(!elem.querySelector('.e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n elem.querySelector('.e-chk-hidden').focus();\n if (elem.querySelector('.e-check')) {\n checkstate = true;\n }\n else if (elem.querySelector('.e-uncheck')) {\n checkstate = false;\n }\n else {\n return;\n }\n this.updateIntermediateBtn();\n var columnUid = parentsUntil(elem, 'e-ccheck').getAttribute('uid');\n var column = this.parent.getColumns();\n if (columnUid === 'grid-selectAll') {\n this.changedColumns = [];\n this.unchangedColumns = [];\n for (var i = 0; i < column.length; i++) {\n if (column[i].showInColumnChooser) {\n this.checkstatecolumn(checkstate, column[i].uid, true);\n }\n }\n }\n else {\n this.checkstatecolumn(checkstate, columnUid);\n }\n this.refreshCheckboxButton();\n }\n };\n ColumnChooser.prototype.updateIntermediateBtn = function () {\n var cnt = this.ulElement.children.length - 1;\n var className = [];\n var elem = this.ulElement.children[0].querySelector('.e-frame');\n var selected = this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn = this.dlgObj.btnObj[0];\n btn.disabled = false;\n if (cnt === selected) {\n className = ['e-check'];\n }\n else if (selected) {\n className = ['e-stop'];\n }\n else {\n className = ['e-uncheck'];\n btn.disabled = true;\n }\n btn.dataBind();\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n };\n ColumnChooser.prototype.updateSelectAll = function (checked) {\n var cBoxes = [].slice.call(this.ulElement.getElementsByClassName('e-frame'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n }\n };\n ColumnChooser.prototype.refreshCheckboxButton = function () {\n var visibleCols = this.parent.getVisibleColumns();\n for (var i = 0; i < visibleCols.length; i++) {\n var columnUID = visibleCols[i].uid;\n if (this.prevShowedCols.indexOf(columnUID) === -1) {\n this.prevShowedCols.push(columnUID);\n }\n }\n for (var i = 0; i < this.hideColumn.length; i++) {\n var index = this.prevShowedCols.indexOf(this.hideColumn[i]);\n if (index !== -1) {\n this.prevShowedCols.splice(index, 1);\n }\n }\n var selected = this.showColumn.length !== 0 ? 1 : this.prevShowedCols.length;\n var btn = this.dlgDiv.querySelector('.e-footer-content').querySelector('.e-btn').ej2_instances[0];\n btn.disabled = false;\n var srchShowCols = [];\n var searchData = [].slice.call(this.parent.element.getElementsByClassName('e-cc-chbox'));\n for (var i = 0, itemsLen = searchData.length; i < itemsLen; i++) {\n var element = searchData[i];\n var columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n srchShowCols.push(columnUID);\n }\n var hideCols = this.showColumn.filter(function (column) { return srchShowCols.indexOf(column) !== -1; });\n if (selected === 0 && hideCols.length === 0) {\n btn.disabled = true;\n }\n btn.dataBind();\n };\n ColumnChooser.prototype.refreshCheckboxList = function (gdCol) {\n this.ulElement = this.parent.createElement('ul', { className: 'e-ccul-ele e-cc' });\n var selectAllValue = this.l10n.getConstant('SelectAll');\n var cclist = this.parent.createElement('li', { className: 'e-cclist e-cc e-cc-selectall' });\n var selectAll = this.createCheckBox(selectAllValue, false, 'grid-selectAll');\n if (gdCol.length) {\n selectAll.querySelector('.e-checkbox-wrapper').firstElementChild.classList.add('e-selectall');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n this.checkState(selectAll.querySelector('.e-icons'), true);\n cclist.appendChild(selectAll);\n this.ulElement.appendChild(cclist);\n }\n for (var i = 0; i < gdCol.length; i++) {\n var columns = gdCol[i];\n this.renderCheckbox(columns);\n }\n return this.ulElement;\n };\n ColumnChooser.prototype.refreshCheckboxState = function () {\n this.dlgObj.element.querySelector('.e-cc.e-input').value = '';\n this.columnChooserSearch('');\n var gridObject = this.parent;\n var currentCheckBoxColls = this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)');\n for (var i = 0, itemLen = currentCheckBoxColls.length; i < itemLen; i++) {\n var element = currentCheckBoxColls[i];\n var columnUID = void 0;\n if (this.parent.childGrid || this.parent.detailTemplate) {\n columnUID = parentsUntil(this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)')[i], 'e-ccheck').getAttribute('uid');\n }\n else {\n columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n }\n var column = gridObject.getColumnByUid(columnUID);\n var uncheck = [].slice.call(element.parentElement.getElementsByClassName('e-uncheck'));\n if (column.visible && !uncheck.length) {\n element.checked = true;\n this.checkState(element.parentElement.querySelector('.e-icons'), true);\n }\n else {\n element.checked = false;\n this.checkState(element.parentElement.querySelector('.e-icons'), false);\n }\n }\n };\n ColumnChooser.prototype.checkState = function (element, state) {\n if (state) {\n classList(element, ['e-check'], ['e-uncheck']);\n }\n else {\n classList(element, ['e-uncheck'], ['e-check']);\n }\n };\n ColumnChooser.prototype.createCheckBox = function (label, checked, uid) {\n var cbox = checked ? this.cBoxTrue.cloneNode(true) : this.cBoxFalse.cloneNode(true);\n cbox.querySelector('.e-label').innerHTML = label;\n return createCboxWithWrap(uid, cbox, 'e-ccheck');\n };\n ColumnChooser.prototype.renderCheckbox = function (column) {\n var cclist;\n var hideColState;\n var showColState;\n if (column.showInColumnChooser) {\n cclist = this.parent.createElement('li', { className: 'e-cclist e-cc', styles: 'list-style:None', id: 'e-ccli_' + column.uid });\n hideColState = this.hideColumn.indexOf(column.uid) === -1 ? false : true;\n showColState = this.showColumn.indexOf(column.uid) === -1 ? false : true;\n var cccheckboxlist = this.createCheckBox(column.headerText, (column.visible && !hideColState) || showColState, column.uid);\n cclist.appendChild(cccheckboxlist);\n this.ulElement.appendChild(cclist);\n }\n if (this.isInitialOpen) {\n this.updateIntermediateBtn();\n }\n };\n ColumnChooser.prototype.columnChooserManualSearch = function (e) {\n this.addcancelIcon();\n this.searchValue = e.target.value;\n this.stopTimer();\n this.startTimer(e);\n };\n ColumnChooser.prototype.startTimer = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var interval = !proxy.flag && e.keyCode !== 13 ? 500 : 0;\n this.timer = window.setInterval(function () { proxy.columnChooserSearch(proxy.searchValue); }, interval);\n };\n ColumnChooser.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ColumnChooser.prototype.addcancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.add('e-cc-cancel');\n };\n ColumnChooser.prototype.removeCancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.remove('e-cc-cancel');\n };\n ColumnChooser.prototype.mOpenDlg = function () {\n if (Browser.isDevice) {\n this.dlgObj.element.querySelector('.e-cc-searchdiv').classList.remove('e-input-focus');\n this.dlgObj.element.querySelectorAll('.e-cc-chbox')[0].focus();\n }\n };\n // internally use\n ColumnChooser.prototype.getModuleName = function () {\n return 'columnChooser';\n };\n ColumnChooser.prototype.hideOpenedDialog = function () {\n var openCC = [].slice.call(document.getElementsByClassName('e-ccdlg')).filter(function (dlgEle) {\n return dlgEle.classList.contains('e-popup-open');\n });\n for (var i = 0, dlgLen = openCC.length; i < dlgLen; i++) {\n if (openCC[i].classList.contains('e-dialog') || this.parent.element.id + '_ccdlg' !== openCC[i].id) {\n openCC[i].ej2_instances[0].hide();\n }\n }\n };\n ColumnChooser.prototype.beforeOpenColumnChooserEvent = function () {\n var args1 = {\n requestType: 'beforeOpenColumnChooser', element: this.parent.element,\n columns: this.getColumns(), cancel: false,\n searchOperator: this.parent.columnChooserSettings.operator\n };\n this.parent.trigger(events.beforeOpenColumnChooser, args1);\n this.searchOperator = args1.searchOperator;\n return args1;\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { isNullOrUndefined, addClass, extend, closest, updateBlazorTemplate, isBlazor } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, alignFrozenEditForm, getMovableTbody, getFrozenRightTbody, setStyleAndAttributes } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n var mTbody = getMovableTbody(this.parent);\n var frTbody = getFrozenRightTbody(this.parent);\n var isFrozenGrid = this.parent.isFrozenGrid();\n var isVirtualFrozen = isFrozenGrid && this.parent.enableColumnVirtualization && args.isScroll;\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = isVirtualFrozen ? this.parent.getMovableHeaderTbody() : this.parent.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = isVirtualFrozen ? this.parent.getMovableContentTbody() : this.parent.getContentTable().querySelector(literals.tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (isFrozenGrid && !isVirtualFrozen) {\n var moveTbody = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frTbody_1 = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n (frTbody_1.firstElementChild).parentNode.removeChild(frTbody_1.firstElementChild);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(args.row, tbody.firstChild);\n }\n else {\n tbody.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n if (isFrozenGrid && !isVirtualFrozen) {\n var mEle = this.renderMovableform(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mEle, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mEle);\n }\n args.row.querySelector('.e-normaledit').setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', '' + (this.parent.getVisibleColumns().length - this.parent.getVisibleFrozenColumns()));\n if (frTbody) {\n var frEle = this.renderFrozenRightForm(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frEle, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frEle);\n }\n var colSpan = this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount();\n args.row.querySelector('.e-normaledit').setAttribute('colspan', colSpan + '');\n frEle.querySelector('.e-normaledit').setAttribute('colspan', '' + this.parent.getFrozenRightColumnsCount());\n }\n if (this.parent.height === 'auto') {\n this.parent.notify(events.frozenHeight, {});\n }\n }\n };\n InlineEditRender.prototype.renderFrozenRightForm = function (ele, args) {\n var frEle = ele.cloneNode(true);\n var form = args.frozenRightForm = frEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return frEle;\n }\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup).innerHTML;\n return frEle;\n };\n InlineEditRender.prototype.renderMovableform = function (ele, args) {\n var mEle = ele.cloneNode(true);\n var form = args.movableForm = mEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return mEle;\n }\n this.renderMovable(ele, mEle);\n mEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup).innerHTML;\n return mEle;\n };\n InlineEditRender.prototype.updateFreezeEdit = function (row, td) {\n td = td.concat([].slice.call(this.getFreezeRow(row).querySelectorAll('td.e-rowcell')));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n td = td.concat([].slice.call(this.getFreezeRightRow(row).querySelectorAll('td.e-rowcell')));\n }\n return td;\n };\n InlineEditRender.prototype.getFreezeRightRow = function (row) {\n var idx = parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var frHdr = this.parent.getFrozenRightHeaderTbody();\n var frCont = this.parent.getFrozenRightContentTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getFrozenRightRowByIndex(idx);\n }\n else if (frCont.contains(row) || frHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n return row;\n };\n InlineEditRender.prototype.getFreezeRow = function (row) {\n if (this.parent.isFrozenGrid()) {\n var idx = parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var mCont = this.parent.getMovableContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var mHdr = this.parent.getMovableHeaderTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getMovableRowByIndex(idx);\n }\n else if (mCont.contains(row) || mHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n }\n return row;\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var isCustomFormValidation = args.isCustomFormValidation;\n var isScroll = args.isScroll;\n if (!isScroll && (closest(args.row, '.' + literals.movableContent) || closest(args.row, '.' + literals.movableHeader))) {\n args.row = this.getFreezeRow(args.row);\n }\n if (closest(args.row, '.e-frozen-right-content') || closest(args.row, '.e-frozen-right-header')) {\n args.row = this.getFreezeRightRow(args.row);\n }\n var isVirtualFrozen = this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization && isScroll;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n if (!isVirtualFrozen && !isCustomFormValidation) {\n tdElement = this.updateFreezeEdit(args.row, tdElement);\n }\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(literals.editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n if (!isVirtualFrozen && !isCustomFormValidation) {\n this.refreshFreezeEdit(args.row, args);\n }\n };\n InlineEditRender.prototype.refreshFreezeEdit = function (row, args) {\n var td = row.firstChild;\n if (this.parent.getVisibleFrozenColumns() && this.parent.editSettings.template) {\n td.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader).\n querySelector(literals.colGroup).innerHTML;\n }\n var fCls;\n var cont;\n var cloneFrozen = 'cloneFrozen';\n var idx = parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n if (this.parent.isFrozenGrid()) {\n if (idx < this.parent.frozenRows) {\n cont = this.parent.getHeaderContent();\n fCls = '.' + literals.frozenHeader;\n }\n else {\n cont = this.parent.getContent();\n fCls = '.' + literals.frozenContent;\n }\n var mTd = td.cloneNode(true);\n var frTd = td.cloneNode(true);\n var form = args.movableForm = mTd.querySelector('form');\n if (this.parent.editSettings.template) {\n this.refreshEditForm(form, args.rowData);\n }\n var fRows = void 0;\n var frRows = void 0;\n if (cont.querySelector(fCls).contains(row)) {\n fRows = this.parent.getMovableRowByIndex(idx);\n this.updateFrozenCont(fRows, td, mTd);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, td, frTd);\n }\n }\n else {\n fRows = this.parent.getRowByIndex(idx);\n this.updateFrozenCont(fRows, mTd, td);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, frTd, td);\n }\n }\n if (isBlazor() && this.parent.isServerRendered) {\n args[cloneFrozen].appendChild(mTd);\n args[cloneFrozen].classList.add(literals.editedRow);\n }\n else {\n fRows.appendChild(mTd);\n fRows.classList.add(literals.editedRow);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frRows.appendChild(frTd);\n frRows.classList.add(literals.editedRow);\n alignFrozenEditForm(args.frozenRightForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n }\n alignFrozenEditForm(args.movableForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n };\n InlineEditRender.prototype.refreshEditForm = function (form, data) {\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, data, false);\n }\n };\n InlineEditRender.prototype.updateFrozenRightCont = function (row, ele, frEle) {\n row.innerHTML = '';\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount() + '');\n frEle.setAttribute('colspan', this.parent.getFrozenRightColumnsCount() + '');\n };\n InlineEditRender.prototype.updateFrozenCont = function (row, ele, mEle) {\n row.innerHTML = '';\n this.renderMovable(ele, mEle);\n mEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - this.parent.getVisibleFrozenColumns() + '');\n };\n InlineEditRender.prototype.renderRightFrozen = function (ele, frEle) {\n frEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[i].getFreezeTableName() === literals.frozenRight) {\n var index = k - this.parent.getMovableColumnsCount();\n frEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[index]));\n k--;\n }\n }\n };\n InlineEditRender.prototype.renderMovable = function (ele, mEle) {\n mEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[i].getFreezeTableName() === 'movable') {\n mEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[k]));\n k--;\n }\n }\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - gObj.getVisibleFrozenColumns()\n + this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25' } });\n table.appendChild(gObj.getContentTable().querySelector(literals.colGroup).cloneNode(true));\n var tbody = this.parent.createElement(literals.tbody);\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit ? tdElement[m].getAttribute('colspan') : null;\n var col = cols[i];\n if ((isVirtualFrozen && col.getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n i++;\n continue;\n }\n var td_1 = this.parent.createElement('td', {\n className: literals.rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].validationRules) {\n _this.parent.editModule.formObj.rules[cols[i].field] =\n cols[i].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","import { classList } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, parentRow.children[parseInt(args.cell.getAttribute(literals.ariaColIndex), 10)]);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.remove('e-ellipsistooltip');\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [literals.editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { remove, extend, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, applyBiggerTheme, addBiggerDialog } from '../base/util';\nimport { ResponsiveDialogRenderer } from './responsive-dialog-renderer';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar DialogEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.dialogDestroy, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(undefined, args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = this.getDialogEditTemplateElement('HeaderTemplate', args);\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n this.dialog.setAttribute('aria-label', 'Dialog edit');\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true, cssClass: 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? this.getDialogEditTemplateElement('FooterTemplate', args) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'), cssClass: 'e-primary', isPrimary: true }\n },\n { click: this.btnClick.bind(this), buttonModel: { cssClass: 'e-flat', content: this.l10n.getConstant('CancelButton') } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n args.dialog = this.dialogObj;\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[i]]) {\n var templateName = dialogEditTemplates[i].charAt(0).toUpperCase() + dialogEditTemplates[i].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(events.toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? literals.editedRow : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n if (isReactCompiler) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].validationRules) {\n _this.parent.editModule.formObj.rules[columns[i].field] =\n columns[i].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '6px' } });\n var tbody = this.parent.createElement(literals.tbody);\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[i]) || cols[i].commands || cols[i].commandsTemplate ||\n cols[i].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr');\n var dataCell = this.parent.createElement('td', {\n className: literals.rowCell, attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n elements[cols[i].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[i].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dialogDestroy, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return DialogEditRender;\n}());\nexport { DialogEditRender };\n","import { isNullOrUndefined, closest, extend } from '@syncfusion/ej2-base';\nimport { InlineEditRender } from './inline-edit-renderer';\nimport { BatchEditRender } from './batch-edit-renderer';\nimport { DialogEditRender } from './dialog-edit-renderer';\nimport { attributes, classList, select } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { getComplexFieldID, getObject, appendChildren, parentsUntil, extendObjWithFn } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar EditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent -specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables\n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n var isCustomFormValidation = args.isCustomFormValidation;\n if (!isCustomFormValidation) {\n this.parent.notify(events.beforeStartEdit, args);\n this.convertWidget(args);\n }\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var fForm;\n var frForm;\n var frzCols = gObj.isFrozenGrid();\n var index = gObj.getFrozenMode() === 'Right' && gObj.editSettings.mode === 'Normal' ? 1 : 0;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) :\n gObj.element.getElementsByClassName('e-gridform')[index];\n var isVirtualFrozen = frzCols && this.parent.enableColumnVirtualization && args.isScroll;\n if (frzCols && gObj.editSettings.mode === 'Normal') {\n var rowIndex = parseInt(args.row.getAttribute(literals.ariaRowIndex), 10);\n if (gObj.frozenRows && ((args.requestType === 'add' && gObj.editSettings.newRowPosition === 'Top')\n || rowIndex < gObj.frozenRows)) {\n fForm = gObj.element.querySelector('.' + literals.movableHeader).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n else {\n fForm = gObj.element.querySelector('.' + literals.movableContent).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n }\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (isVirtualFrozen && col.getFreezeTableName() !== 'movable') {\n continue;\n }\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (isNullOrUndefined(cellArgs.element) && frzCols) {\n cellArgs.element = fForm.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n }\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n if (col.getFreezeTableName() === 'movable' && gObj.editSettings.mode === 'Normal') {\n cell = fForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else if (frForm && col.getFreezeTableName() === literals.frozenRight && gObj.editSettings.mode === 'Normal') {\n cell = frForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else {\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n if (frzCols && !this.parent.allowTextWrap && ((args.requestType === 'add') || args.requestType === 'beginEdit')\n && this.parent.editSettings.mode !== 'Dialog' && !isNullOrUndefined(form) && !isNullOrUndefined(fForm)) {\n var mTdElement = (fForm.querySelector('tr').children[0]);\n var fTdElement = (form.querySelector('tr').children[0]);\n if (fTdElement.offsetHeight > mTdElement.offsetHeight) {\n mTdElement.style.height = fTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = fTdElement.offsetHeight + 'px';\n }\n }\n else {\n fTdElement.style.height = mTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = mTdElement.offsetHeight + 'px';\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || (this.parent.enableVirtualization && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, literals.addedRow))) {\n elem.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[i];\n if (this.parent.editModule.checkColumnIsGrouped(col) || (isVirtualFrozen && cols[i].getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n continue;\n }\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[i], args.rowData, { 'index': args.row ? args.row.getAttribute(literals.ariaRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n if (isReactCompiler) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID);\n appendChildren(input, template);\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\nexport { EditRender };\n","import { createEditElement } from '../base/util';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar EditCellBase = /** @class */ (function () {\n function EditCellBase(parent) {\n this.parent = parent;\n }\n EditCellBase.prototype.create = function (args) {\n return createEditElement(this.parent, args.column, 'e-field', { type: 'text' });\n };\n EditCellBase.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n EditCellBase.prototype.destroy = function () {\n if (this.obj) {\n this.obj.destroy();\n }\n };\n return EditCellBase;\n}());\nexport { EditCellBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, createEditElement, getObject } from '../base/util';\nimport * as literals from '../base/string-literals';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar BooleanEditCell = /** @class */ (function (_super) {\n __extends(BooleanEditCell, _super);\n function BooleanEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n return createEditElement(this.parent, args.column, classNames, { type: 'checkbox', value: args.value });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(literals.rowCell)), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n change: this.checkBoxChange.bind(this)\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(literals.rowCell)), add].concat(this.activeClasses));\n }\n };\n return BooleanEditCell;\n}(EditCellBase));\nexport { BooleanEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined, select } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { parentsUntil } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar DropDownEditCell = /** @class */ (function (_super) {\n __extends(DropDownEditCell, _super);\n function DropDownEditCell(parent) {\n var _this = \n //constructor\n _super.call(this) || this;\n _this.parent = parent;\n _this.flag = false;\n return _this;\n }\n DropDownEditCell.prototype.write = function (args) {\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.column = args.column;\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n var params = {};\n if (args.column.edit.params) {\n var keys = Object.keys(args.column.edit.params);\n for (var i = 0; i < keys.length; i++) {\n params[keys[i]] = keys[i] === 'query' ? args.column.edit.params[keys[i]].clone() : args.column.edit.params[keys[i]];\n }\n }\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl, actionComplete: this.ddActionComplete.bind(this),\n created: this.dropdownCreated.bind(this),\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always', open: this.dropDownOpen.bind(this),\n sortOrder: 'Ascending',\n beforeOpen: this.dropdownBeforeOpen.bind(this)\n }, params));\n if (this.parent.enableVirtualization) {\n this.obj.dataSource = [args.rowData];\n }\n this.obj.query.params = this.parent.query.params;\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.dropdownBeforeOpen = function () {\n if (this.parent.enableVirtualization) {\n this.obj.dataSource = this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource);\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\nexport { DropDownEditCell };\n","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject, createEditElement } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\nexport { NumericEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isBlazor } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n if (!(isBlazor() && this.isServerRendered)) {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n this.element.setAttribute('role', 'textbox');\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n }\n else {\n this.respectiveElement = this.element;\n this.textboxWrapper = { container: this.element.parentElement };\n if (this.showClearButton && !this.multiline) {\n this.textboxWrapper.clearButton = this.textboxWrapper.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.respectiveElement, this.textboxWrapper.clearButton, this.textboxWrapper.container);\n }\n if (this.floatLabelType === 'Auto') {\n Input.wireFloatingEvents(this.respectiveElement);\n }\n // eslint-disable-next-line max-len, @typescript-eslint/no-explicit-any\n Input.bindInitialEvent({ element: this.respectiveElement, buttons: null, customTag: null, floatLabelType: this.floatLabelType, properties: this.properties });\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.respectiveElement.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n this.raiseChangeEvent(args, true);\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.respectiveElement.tagName !== 'TEXTAREA') {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR))) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-placeholder', 'aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n _super.prototype.destroy.call(this);\n }\n else {\n this.textboxWrapper = null;\n }\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { isEditable, createEditElement } from '../base/util';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n *\n * @hidden\n */\nvar DefaultEditCell = /** @class */ (function (_super) {\n __extends(DefaultEditCell, _super);\n function DefaultEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultEditCell.prototype.create = function (args) {\n var attr = {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', style: 'text-align:' + args.column.textAlign\n };\n return createEditElement(this.parent, args.column, 'e-field e-input e-defaultcell', attr);\n };\n DefaultEditCell.prototype.read = function (element) {\n return element.value;\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new TextBox(extend({\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText\n }, col.edit.params));\n this.obj.appendTo(args.element);\n };\n return DefaultEditCell;\n}(EditCellBase));\nexport { DefaultEditCell };\n","import { extend, select } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive, refreshForeignData, getObject, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if ((((parentsUntil(target, literals.gridContent) &&\n parentsUntil(parentsUntil(target, literals.gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, literals.headerContent))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, literals.rowCell)\n ? parseInt(target.parentElement.getAttribute(literals.ariaRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, literals.rowCell) && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, literals.row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[action] !== 'edit') {\n this.parent.selectRow(0);\n }\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'save',\n type: events.actionComplete\n }));\n break;\n case 'delete':\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'delete',\n type: events.actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.getEditArgs = function (editedData, rowObj, isScroll) {\n var primaryKeys = this.parent.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[i], editedData));\n }\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: editedData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined, isScroll: isScroll\n };\n return args;\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute(literals.ariaRowIndex), 10);\n if (gObj.enableVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[aria-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (!this.previousData && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[index],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n gObj.refresh();\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var index = gObj.getFrozenMode() === 'Right' ? 1 : 0;\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.getElementsByClassName('e-gridform')[index];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n if (gObj.isFrozenGrid() && gObj.editSettings.mode === 'Normal') {\n var mhdrFrm = gObj.getMovableVirtualHeader().querySelector('.e-gridform');\n var mCntFrm = gObj.getMovableVirtualContent().querySelector('.e-gridform');\n var mvblEle = [mhdrFrm || mCntFrm];\n var frHdrFrm = void 0;\n var frCntFrm = void 0;\n var frEle = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n frHdrFrm = gObj.getFrozenRightHeader().querySelector('.e-gridform');\n frCntFrm = gObj.getFrozenRightContent().querySelector('.e-gridform');\n frEle = [frHdrFrm || frCntFrm];\n }\n gridActionHandler(this.parent, function (tableName, elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var ele = elements_1[_i];\n if (ele) {\n editedData = gObj.editModule.getCurrentEditedData(ele, editedData);\n }\n }\n }, [[], mvblEle, frEle]);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(literals.editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = false;\n this.refreshRow(args.data);\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n this.parent.trigger(events.actionComplete, args);\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.parent.isFrozenGrid() && this.cloneFrozen) {\n this.cloneFrozen.remove();\n this.frozen.classList.remove('e-hiddenrow');\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.trigger(events.actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var frzCols = this.parent.isFrozenGrid();\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, data);\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[aria-rowindex=\"' + rowObj.index + '\"]'));\n if (frzCols && tr.length) {\n for (var i = 0; i < tr.length; i++) {\n var rowUid = tr[i].getAttribute('data-uid');\n if (rowUid !== this.uid) {\n rowObj = this.parent.getRowObjectFromUID(rowUid);\n rowObj.changes = data;\n row.refresh(rowObj, this.parent.getColumns(), true);\n this.parent.editModule.checkLastRow(tr[i]);\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit) {\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n gObj.isEdit = false;\n _this.stopEditStatus();\n closeEditArgs.type = events.actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.trigger(events.actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n this.parent.notify(events.getVirtualData, rowData);\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll && cols[i].getFreezeTableName() !== 'movable') {\n continue;\n }\n if (cols[i].field) {\n DataUtil.setValue(cols[i].field, cols[i].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.' + literals.addedRow);\n gObj.trigger(events.actionComplete, addArgs);\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_1 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[i] === getObject(fieldname, record) || data[i] === record;\n });\n data[i] = contained ? tmpRecord : data[i][fieldname] ? data[i] : (_a = {}, _a[fieldname] = data[i], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_1(i);\n }\n }\n var args = {\n requestType: 'delete', type: events.actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if (this.parent.enableVirtualization && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.element.getElementsByClassName(literals.addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[i]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[i].classList.remove(literals.editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.crudAction, handler: this.editHandler },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.click, handler: this.clickHandler },\n { event: events.recordAdded, handler: this.requestSuccess },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.deleteComplete, handler: this.editComplete },\n { event: events.saveComplete, handler: this.editComplete },\n { event: events.rowModeChange, handler: this.closeEdit },\n { event: events.closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n *\n * @hidden\n */\nvar InlineEdit = /** @class */ (function (_super) {\n __extends(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\nexport { InlineEdit };\n","import { extend, addClass, removeClass, setValue, isBlazor, closest, select } from '@syncfusion/ej2-base';\nimport { remove, classList } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, inArray, refreshForeignData, getObject, alignFrozenEditForm, gridActionHandler, addRemoveEventListener } from '../base/util';\nimport { splitFrozenRowObjectCells, getGridRowElements } from '../base/util';\nimport { sliceElements, getCellByColAndRowIndex, getMovableTbody, getFrozenRightTbody } from '../base/util';\nimport { getGridRowObjects } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.click, handler: this.clickHandler },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.keyPressed, handler: this.keyDownHandler },\n { event: events.editNextValCell, handler: this.editNextValCell },\n { event: events.closeBatch, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if (this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td')) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, literals.rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, literals.rowCell);\n var tr = parentsUntil(e.target, literals.row);\n var rowIndex = tr && parseInt(tr.getAttribute(literals.ariaRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(literals.ariaColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(literals.editedRow)) {\n this.editCell(rowIndex, this.parent.getColumns()[colIndex].field, this.isAddRow(rowIndex));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var frzCols = this.parent.getFrozenLeftCount();\n var frzRightCols = this.parent.getFrozenRightColumnsCount();\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (!e.byKey || clear) {\n if (this.parent.isEdit && clear) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n if (frzCols && (mCont.contains(e.element) || (this.parent.frozenRows && mHdr.contains(e.element)))) {\n cellIndex += frzCols;\n }\n if (frzRightCols) {\n var frHdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frCont.contains(e.element) || (this.parent.frozenRows && frHdr.contains(e.element))) {\n cellIndex += (frzCols + this.parent.getMovableColumnsCount());\n }\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += this.parent.frozenRows;\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[e.indexes[1]];\n if (col && !this.parent.isEdit) {\n this.editCell(e.indexes[0], col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[index].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[cellIdx].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var _this = this;\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n var allRows = getGridRowObjects(this.parent);\n var _loop_1 = function (i) {\n var isInsert = false;\n var isDirty = rows[i].isDirty;\n gridActionHandler(this_1.parent, function (tableName, rows) {\n isInsert = _this.removeBatchElementChanges(rows[i], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n }, allRows);\n if (isInsert) {\n i--;\n }\n out_i_1 = i;\n };\n var this_1 = this, out_i_1;\n for (var i = 0; i < rows.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.removeHideAndSelection = function (tr) {\n if (tr.classList.contains('e-hiddenrow')) {\n tr.removeAttribute('aria-selected');\n var tdElements = [].slice.call(tr.getElementsByClassName('e-selectionbackground'));\n for (var i = 0; i < tdElements.length; i++) {\n removeClass([tdElements[i]], ['e-selectionbackground', 'e-active']);\n }\n }\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.closeForm = function () {\n for (var i = 0; i < Object.keys(this.originalCell).length; i++) {\n for (var j = 0; j < Object.keys(this.cloneCell).length; j++) {\n if (Object.keys(this.originalCell)[i] === Object.keys(this.cloneCell)[j]) {\n this.cloneCell[Object.keys(this.cloneCell)[j]].replaceWith(this.originalCell[Object.keys(this.originalCell)[i]]);\n if (this.originalCell[Object.keys(this.originalCell)[i]].classList.contains('e-selectionbackground')) {\n this.originalCell[Object.keys(this.originalCell)[i]]\n .classList.remove('e-selectionbackground', 'e-cellselectionbackground', 'e-active');\n }\n }\n }\n }\n this.cloneCell = {};\n this.originalCell = {};\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[i].uid === uid) {\n break;\n }\n }\n gridActionHandler(this.parent, function (tableName, rows) {\n rows.splice(i, 1);\n }, getGridRowObjects(this.parent));\n };\n /**\n * @param {Row} row - specifies the row object\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n gridActionHandler(this.parent, function (tableName, rows) {\n var rowClone = row.clone();\n rowClone.cells = splitFrozenRowObjectCells(gObj, rowClone.cells, tableName);\n if (isTop) {\n rows.unshift(rowClone);\n }\n else {\n rows.push(rowClone);\n }\n }, getGridRowObjects(this.parent), true);\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = data ? gObj.getRows()[index] : selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[index] : selectedRows[0];\n if (_this.parent.isFrozenGrid()) {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(literals.ariaRowIndex), 10);\n selectedRows = [];\n selectedRows.push(gObj.getRowByIndex(index));\n selectedRows.push(gObj.getMovableRowByIndex(index));\n if (gObj.getFrozenMode() === literals.leftRight) {\n selectedRows.push(gObj.getFrozenRightRowByIndex(index));\n }\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uid = selectedRows[i].getAttribute('data-uid');\n if (selectedRows[i].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(selectedRows[i]);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(selectedRows[i], ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getMovableDataRows().length >= gObj.frozenRows) {\n gObj.getMovableHeaderTbody().appendChild(gObj.getMovableRowByIndex(gObj.frozenRows - 1));\n gObj.getFrozenHeaderTbody().appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.getFrozenRightHeaderTbody().appendChild(gObj.getFrozenRightRowByIndex(gObj.frozenRows - 1));\n }\n }\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete selectedRows[i];\n }\n }\n else if (!_this.parent.isFrozenGrid() && (selectedRows.length === 1 || data)) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[i].getAttribute('data-uid');\n if (selectedRows[i].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[i]);\n }\n else {\n classList(selectedRows[i], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[i];\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n if (gObj.getSelectedRows().length) {\n index = parseInt(gObj.getSelectedRows()[0].getAttribute(literals.ariaRowIndex), 10);\n }\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataRows = getGridRowElements(this.parent);\n var dataObjects = getGridRowObjects(this.parent);\n var _loop_2 = function (i, j, len) {\n if (rows[i].classList.contains(literals.row) && !rows[i].classList.contains('e-hiddenrow')) {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[i].setAttribute(literals.ariaRowIndex, j.toString());\n rowObjects[i].index = j;\n }, dataRows, null, dataObjects);\n j++;\n }\n else {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[i].removeAttribute(literals.ariaRowIndex);\n rowObjects[i].index = -1;\n }, dataRows, null, dataObjects);\n }\n out_j_1 = j;\n };\n var this_2 = this, out_j_1;\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n _loop_2(i, j, len);\n j = out_j_1;\n }\n };\n BatchEdit.prototype.getIndexFromData = function (data) {\n return inArray(data, this.parent.getCurrentViewRecords());\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(events.editNextValCell, {});\n }\n if (gObj.isEdit) {\n return;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n var mTr;\n var frTr;\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n var col;\n var index;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n _this.removeFrozenTbody();\n }\n if (gObj.isFrozenGrid()) {\n frTr = tr.cloneNode(true);\n mTr = _this.renderMovable(tr, frTr);\n tr = gObj.getFrozenMode() === 'Right' ? frTr : tr;\n _this.renderFrozenAddRow(tr, mTr, frTr);\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(tr, tbody.firstChild);\n }\n else {\n tbody.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject(), args: { isFrozen: _this.parent.isFrozenGrid() } });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[index];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey, cell: tr.cells[index]\n };\n gObj.trigger(events.batchAdd, args1);\n if (gObj.isFrozenGrid()) {\n alignFrozenEditForm(mTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n }\n });\n };\n BatchEdit.prototype.renderFrozenAddRow = function (tr, mTr, frTr) {\n var gObj = this.parent;\n var mTbody = getMovableTbody(this.parent);\n var frTbody = getFrozenRightTbody(this.parent);\n if (gObj.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mTr, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mTr);\n }\n addClass([].slice.call(mTr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n if (frTbody && frTr) {\n if (gObj.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frTr, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frTr);\n }\n addClass([].slice.call(frTr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n alignFrozenEditForm(frTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n }\n if (gObj.height === 'auto') {\n gObj.notify(events.frozenHeight, {});\n }\n };\n BatchEdit.prototype.removeFrozenTbody = function () {\n var gObj = this.parent;\n if (gObj.isFrozenGrid()) {\n var moveTbody = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frTbody = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n (frTbody.firstElementChild).parentNode.removeChild(frTbody.firstElementChild);\n }\n }\n };\n BatchEdit.prototype.renderMovable = function (ele, rightEle) {\n var mEle = ele.cloneNode(true);\n var movable = this.parent.getMovableColumnsCount();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n sliceElements(ele, 0, left);\n sliceElements(mEle, left, right ? mEle.children.length - right : mEle.children.length);\n sliceElements(rightEle, left + movable, rightEle.children.length);\n return mEle;\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[i].validationRules) : false;\n if (!isAdd && this.checkNPCell(cols[i])) {\n return i;\n }\n else if (isAdd && !cols[i].template && cols[i].visible && cols[i].allowEditing &&\n !(cols[i].isIdentity && cols[i].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.checkNPCell = function (col) {\n return !col.template && col.visible && !col.isPrimaryKey && !col.isIdentity && col.allowEditing;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && col.allowEditing) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var row;\n var mRowData;\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n if (col.getFreezeTableName() === 'movable' || col.getFreezeTableName() === literals.frozenRight) {\n row = col.getFreezeTableName() === 'movable' ? gObj.getMovableDataRows()[index] : gObj.getFrozenRightDataRows()[index];\n mRowData = this.parent.getRowObjectFromUID(row.getAttribute('data-uid'));\n rowData = mRowData.changes ? extend({}, {}, mRowData.changes, true) : rowData;\n }\n else {\n row = gObj.getDataRows()[index];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n }\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity)) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(literals.ariaColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj = col.getFreezeTableName() === 'movable' ? this.parent.getMovableRowsObject()[rowIndex] :\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject()[rowIndex]\n : gObj.getRowObjectFromUID(td.parentElement.getAttribute('data-uid'));\n this.refreshTD(td, col, rowObj, value);\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td, column: col, data: rowObj.changes\n });\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n var currentRowObj;\n if (!this.parent.isFrozenGrid()) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n }\n else {\n var rowEle = this.parent.getRowElementByUID(rowObj.uid);\n var rowIndex = parseInt(rowEle.getAttribute(literals.ariaRowIndex), 10);\n currentRowObj = this.parent.getRowsObject()[rowIndex];\n if (!currentRowObj.changes) {\n currentRowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n setValue(field, value, currentRowObj.changes);\n }\n var movableRowObject = this.parent.getMovableRowsObject()[rowIndex];\n movableRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[field] !== value) {\n movableRowObject.isDirty = true;\n currentRowObj.isDirty = true;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frRowObject = this.parent.getFrozenRightRowsObject()[rowIndex];\n frRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[field] !== value) {\n frRowObject.isDirty = true;\n }\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n var rowcell;\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n this.setChanges(rowObj, column.field, value);\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n frzCols = frzCols && this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (frzCols && column.getFreezeTableName() === 'movable' && this.parent.getColumns().length === rowObj.cells.length) {\n rowcell = rowObj.cells.slice(frzCols, rowObj.cells.length);\n }\n else {\n rowcell = rowObj.cells;\n }\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (frzCols) {\n index = column.getFreezeTableName() === 'movable' && this.parent.getFrozenMode() !== 'Right'\n ? frzCols : column.getFreezeTableName() === literals.frozenRight\n ? this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount() : index;\n }\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[cellIndex];\n parentElement.cells[cellIndex].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[m].getAttribute(literals.ariaColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n if (this.isAdded && !gObj.isEdit) {\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[index];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n args.cell = this.form.parentElement;\n args.columnObject = column;\n }\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(events.tooltipDestroy, {});\n var rowObj = parentsUntil(cellSaveArgs.cell, literals.movableContent)\n || parentsUntil(cellSaveArgs.cell, literals.movableHeader) ? gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), true)\n : gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n if (gObj.getFrozenMode() === literals.leftRight && (parentsUntil(cellSaveArgs.cell, 'e-frozen-right-header')\n || parentsUntil(cellSaveArgs.cell, 'e-frozen-right-content'))) {\n rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), false, true);\n }\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [literals.editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n gObj.notify(events.toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && col.allowEditing) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[index].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, literals.rowCell);\n if (rowcell) {\n var cell = rowcell.querySelector('.e-field');\n if (cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (visibleColumns[columnIndex].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[literals.addedRecords].length -\n changes[literals.deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n *\n * @hidden\n */\nvar DialogEdit = /** @class */ (function (_super) {\n __extends(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\nexport { DialogEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject, getCustomDateFormat } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function (_super) {\n __extends(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\nexport { DatePickerEditCell };\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element)\n };\n}\n","/**\n * `TemplateEditCell` is used to handle template cell.\n *\n * @hidden\n */\nvar TemplateEditCell = /** @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\nexport { TemplateEditCell };\n","/**\n * Specifies Chart Themes\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /** @private */\n Theme.axisLabelFont = {\n size: '12px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.axisTitleFont = {\n size: '14px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.chartTitleFont = {\n size: '15px',\n fontWeight: '500',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.chartSubTitleFont = {\n size: '11px',\n fontWeight: '500',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.crosshairLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.tooltipLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.legendLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.legendTitleFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.stripLineLabelFont = {\n size: '12px',\n fontWeight: 'Regular',\n color: '#353535',\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.stockEventFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n})(Theme || (Theme = {}));\n/** @private */\nexport function getSeriesColor(theme) {\n var palette;\n switch (theme) {\n case 'Fabric':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'Bootstrap4':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Bootstrap':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'HighContrastLight':\n case 'Highcontrast':\n case 'HighContrast':\n palette = ['#79ECE4', '#E98272', '#DFE6B6', '#C6E773', '#BA98FF',\n '#FA83C3', '#00C27A', '#43ACEF', '#D681EF', '#D8BC6E'];\n break;\n case 'MaterialDark':\n palette = ['#00bdae', '#404041', '#357cd2', '#e56590', '#f8b883',\n '#70ad47', '#dd8abd', '#7f84e8', '#7bb4eb', '#ea7a57'];\n break;\n case 'FabricDark':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'BootstrapDark':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n // palette = ['#B586FF', '#71F9A3', '#FF9572', '#5BD5FF', '#F9F871',\n // '#B6F971', '#8D71F9', '#FF6F91', '#FFC75F', '#D55DB1'];\n // break;\n default:\n palette = ['#00bdae', '#404041', '#357cd2', '#e56590', '#f8b883',\n '#70ad47', '#dd8abd', '#7f84e8', '#7bb4eb', '#ea7a57'];\n break;\n }\n return palette;\n}\n/** @private */\nexport function getThemeColor(theme) {\n var style;\n var darkBackground = theme === 'MaterialDark' ? '#303030' : (theme === 'FabricDark' ? '#201F1F' : '1A1A1A');\n switch (theme) {\n case 'HighContrastLight':\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n axisLabel: '#ffffff',\n axisTitle: '#ffffff',\n axisLine: '#ffffff',\n majorGridLine: '#BFBFBF',\n minorGridLine: '#969696',\n majorTickLine: '#BFBFBF',\n minorTickLine: '#969696',\n chartTitle: '#ffffff',\n legendLabel: '#ffffff',\n background: '#000000',\n areaBorder: '#ffffff',\n errorBar: '#ffffff',\n crosshairLine: '#ffffff',\n crosshairFill: '#ffffff',\n crosshairLabel: '#000000',\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n markerShadow: '#BFBFBF',\n selectionRectFill: 'rgba(255, 217, 57, 0.3)',\n selectionRectStroke: '#ffffff',\n selectionCircleStroke: '#FFD939'\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n axisLabel: '#DADADA', axisTitle: '#ffffff',\n axisLine: ' #6F6C6C',\n majorGridLine: '#414040',\n minorGridLine: '#514F4F',\n majorTickLine: '#414040',\n minorTickLine: ' #4A4848',\n chartTitle: '#ffffff',\n legendLabel: '#DADADA',\n background: darkBackground,\n areaBorder: ' #9A9A9A',\n errorBar: '#ffffff',\n crosshairLine: '#F4F4F4',\n crosshairFill: '#F4F4F4',\n crosshairLabel: '#282727',\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A',\n markerShadow: null,\n selectionRectFill: 'rgba(56,169,255, 0.1)',\n selectionRectStroke: '#38A9FF',\n selectionCircleStroke: '#282727'\n };\n break;\n case 'Bootstrap4':\n style = {\n axisLabel: '#212529', axisTitle: '#212529', axisLine: '#CED4DA', majorGridLine: '#CED4DA',\n minorGridLine: '#DEE2E6', majorTickLine: '#ADB5BD', minorTickLine: '#CED4DA', chartTitle: '#212529', legendLabel: '#212529',\n background: '#FFFFFF', areaBorder: '#DEE2E6', errorBar: '#000000', crosshairLine: '#6C757D', crosshairFill: '#495057',\n crosshairLabel: '#FFFFFF', tooltipFill: 'rgba(0, 0, 0, 0.9)', tooltipBoldLabel: 'rgba(255,255,255)',\n tooltipLightLabel: 'rgba(255,255,255, 0.9)', tooltipHeaderLine: 'rgba(255,255,255, 0.2)', markerShadow: null,\n selectionRectFill: 'rgba(255,255,255, 0.1)', selectionRectStroke: 'rgba(0, 123, 255)', selectionCircleStroke: '#495057'\n };\n break;\n default:\n style = {\n axisLabel: '#686868',\n axisTitle: '#424242',\n axisLine: '#b5b5b5',\n majorGridLine: '#dbdbdb',\n minorGridLine: '#eaeaea',\n majorTickLine: '#b5b5b5',\n minorTickLine: '#d6d6d6',\n chartTitle: '#424242',\n legendLabel: '#353535',\n background: '#FFFFFF',\n areaBorder: 'Gray',\n errorBar: '#000000',\n crosshairLine: '#4f4f4f',\n crosshairFill: '#4f4f4f',\n crosshairLabel: '#e5e5e5',\n tooltipFill: 'rgba(0, 8, 22, 0.75)',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff',\n markerShadow: null,\n selectionRectFill: 'rgba(41, 171, 226, 0.1)',\n selectionRectStroke: '#29abe2',\n selectionCircleStroke: '#29abe2'\n };\n break;\n }\n return style;\n}\n/** @private */\nexport function getScrollbarThemeColor(theme) {\n var scrollStyle;\n switch (theme) {\n case 'HighContrastLight':\n scrollStyle = {\n backRect: '#333',\n thumb: '#bfbfbf',\n circle: '#fff',\n circleHover: '#685708',\n arrow: '#333',\n grip: '#333',\n arrowHover: '#fff',\n backRectBorder: '#969696'\n };\n break;\n case 'Bootstrap':\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e6e6e6',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#8c8c8c',\n grip: '#8c8c8c'\n };\n break;\n case 'Fabric':\n scrollStyle = {\n backRect: '#f8f8f8',\n thumb: '#eaeaea',\n circle: '#fff',\n circleHover: '#eaeaea',\n arrow: '#a6a6a6',\n grip: '#a6a6a6'\n };\n break;\n default:\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e0e0e0',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#9e9e9e',\n grip: '#9e9e9e'\n };\n break;\n }\n return scrollStyle;\n}\n","import { closest, addClass, select } from '@syncfusion/ej2-base';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { EditRender } from '../renderer/edit-renderer';\nimport { BooleanEditCell } from '../renderer/boolean-edit-cell';\nimport { DropDownEditCell } from '../renderer/dropdown-edit-cell';\nimport { NumericEditCell } from '../renderer/numeric-edit-cell';\nimport { DefaultEditCell } from '../renderer/default-edit-cell';\nimport { InlineEdit } from './inline-edit';\nimport { BatchEdit } from './batch-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { parentsUntil, getComplexFieldID, setComplexFieldID, getScrollBarWidth, setValidationRuels } from '../base/util';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport { DatePickerEditCell } from '../renderer/datepicker-edit-cell';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { TemplateEditCell } from '../renderer/template-edit-cell';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, getColumnModelByFieldName } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for the Grid editing module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the servicelocator\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[i].editTemplate) {\n var templteCell = 'templateedit';\n cols[i].edit = extend(new Edit.editCellType[templteCell](this.parent), cols[i].edit || {});\n }\n else {\n cols[i].edit = extend(new Edit.editCellType[cols[i].editType && Edit.editCellType[cols[i].editType] ?\n cols[i].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[i].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n this.isLastRow = tr.rowIndex === this.parent.getContent().querySelector('tr:last-child').rowIndex;\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args &&\n args.requestType === 'add' && this.parent.height > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(events.closeEdit, {});\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
' + this.l10n.getConstant(content) + '
';\n obj.dataBind();\n obj.show();\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.getElementsByClassName('e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'), cssClass: 'e-primary', isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this), buttonModel: { content: this.l10n.getConstant('OKButton'), cssClass: 'e-flat', isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' }\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord();\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.initialEnd, handler: this.initialEnd },\n { event: events.keyPressed, handler: this.keyPressHandler },\n { event: events.autoCol, handler: this.updateColTypeObj },\n { event: events.tooltipDestroy, handler: this.destroyToolTip },\n { event: events.preventBatch, handler: this.preventBatch },\n { event: events.destroyForm, handler: this.destroyForm }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[k].hasAttribute('name') && (elements[k].className !== 'e-multi-hidden')) ||\n elements[k].classList.contains('e-multiselect')) && !(elements[k].type === 'hidden' &&\n (parentsUntil(elements[k], 'e-switch-wrapper') || parentsUntil(elements[k], 'e-checkbox-wrapper')))) {\n var field = (elements[k].hasAttribute('name')) ? setComplexFieldID(elements[k].getAttribute('name')) :\n setComplexFieldID(elements[k].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[k].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[k].checked;\n }\n else if (elements[k].value) {\n value = elements[k].value;\n if (elements[k].ej2_instances &&\n elements[k].ej2_instances.length &&\n !isNullOrUndefined(elements[k].ej2_instances[0].value)) {\n elements[k].blur();\n value = elements[k].ej2_instances[0].value;\n if ((column.type === 'date' || column.type === 'dateTime' || column.type === 'datetime') &&\n (elements[k].ej2_instances[0].isServerRendered)) {\n value = elements[k].value;\n }\n }\n }\n else if (elements[k].ej2_instances) {\n value = elements[k].ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[k], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[k], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[k].type === 'radio') {\n if (elements[k].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[j].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[j].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[j].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[j], temp[k], editedData);\n DataUtil.setValue(col[j].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[i].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[i], editedData);\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + literals.editedRow);\n var addRow = this.parent.element.querySelector('.' + literals.addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, literals.row).getAttribute(literals.ariaRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterafteropen', 'filterbeforeopen', 'filterchoicerequest', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isDestroyVirtualForm = this.parent.enableVirtualization && this.formObj\n && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[i].hasAttribute('name')) {\n if (elements[i].ej2_instances &&\n elements[i].ej2_instances.length &&\n !elements[i].ej2_instances[0].isDestroyed) {\n elements[i].ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[i] && formObjects[i].element && !formObjects[i].isDestroyed) {\n formObjects[i].destroy();\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, literals.gridContent) || (this.parent.frozenRows\n && parentsUntil(e.target, literals.headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.closeEdit();\n }\n }\n break;\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols) {\n var gObj = this.parent;\n var frzCols = gObj.isFrozenGrid();\n var isInline = this.parent.editSettings.mode === 'Normal';\n var idx = this.parent.getFrozenMode() === 'Right' && isInline ? 1 : 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.getElementsByClassName('e-gridform')[idx] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = this.parent.getFrozenMode() === 'Right' && isInline ? 0 : 1;\n var mForm = gObj.element.getElementsByClassName('e-gridform')[index];\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[i].visible) {\n continue;\n }\n if (cols[i].validationRules) {\n setValidationRuels(cols[i], index, rules, mRules, frRules, cols.length);\n }\n }\n if (frzCols && this.parent.editSettings.mode !== 'Dialog') {\n this.parent.editModule.mFormObj = this.createFormObj(mForm, mRules);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frForm = gObj.element.getElementsByClassName('e-gridform')[2];\n this.parent.editModule.frFormObj = this.createFormObj(frForm, frRules);\n }\n }\n else {\n rules = extend(rules, mRules, frRules);\n }\n this.parent.editModule.formObj = this.createFormObj(form, rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n _this.valErrorPlacement(inputElement, error);\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + id + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFHdr;\n var gObj = this.parent;\n var table;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFHdr = (gObj.frozenRows && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + literals.row).getAttribute(literals.ariaRowIndex), 10) || 0));\n var field = inputElement.name;\n var col = void 0;\n if (field) {\n col = getColumnModelByFieldName(this.parent, setComplexFieldID(field));\n }\n if (col && gObj.isFrozenGrid()) {\n if (col.getFreezeTableName() === 'frozen-left') {\n table = isFHdr ? gObj.getFrozenVirtualHeader().querySelector('table')\n : gObj.getFrozenVirtualContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n table = isFHdr ? gObj.getFrozenRightHeader().querySelector('table')\n : gObj.getFrozenRightContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'movable') {\n table = isFHdr ? gObj.getMovableVirtualHeader().querySelector('table')\n : gObj.getMovableVirtualContent().querySelector('table');\n }\n }\n else {\n table = isFHdr ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n }\n else {\n table = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, literals.rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + args.inputName + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var column = this.parent.getColumnByField(name);\n var formObj = this.parent.getFrozenMode() === literals.leftRight && this.parent.editSettings.mode === 'Normal'\n && column.getFreezeTableName() === literals.frozenRight ? this.frFormObj.element : this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n if (frzCols) {\n gcontent = this.parent.getMovableVirtualContent();\n }\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + literals.rowCell);\n var row = closest(element, '.' + literals.row);\n var fCont = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = !fCont ? [].slice.call(this.parent.getContent().getElementsByClassName(literals.row))\n : [].slice.call(this.parent.getFrozenVirtualContent().getElementsByClassName(literals.row));\n if (this.parent.editSettings.mode === 'Batch') {\n if (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && rows[rows.length - 1].getAttribute(literals.ariaRowIndex) === row.getAttribute(literals.ariaRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n var fHeraderRows = frzCols ? this.parent.getFrozenVirtualHeader().querySelector(literals.tbody).children\n : this.parent.getHeaderTable().querySelector(literals.tbody).children;\n isFHdr = fHeraderRows.length > (parseInt(row.getAttribute(literals.ariaRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute(literals.ariaRowIndex), 10) === fHeraderRows.length - 1;\n }\n if (isFHdrLastRow || (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains(literals.addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top\n - (frzCols ? fCont.scrollTop : 0)) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if (!customForm && (frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + literals.table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + literals.frozenContent) || closest(element, '.' + literals.frozenHeader))\n || (this.parent.frozenRows && !frzCols)) {\n formObj.appendChild(div);\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if ((frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || frzCols || this.parent.frozenRows) {\n gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (validationForBottomRowPos) {\n if (isScroll && !frzCols && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n div.style.bottom = (this.parent.height - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { addClass, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren } from '../base/util';\n/**\n * `CommandColumn` used to render command column in grid\n *\n * @hidden\n */\nvar CommandColumnRenderer = /** @class */ (function (_super) {\n __extends(CommandColumnRenderer, _super);\n function CommandColumnRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.buttonElement = _this.parent.createElement('button', {});\n _this.unbounDiv = _this.parent.createElement('div', { className: 'e-unboundcelldiv', styles: 'display: inline-block' });\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowcell e-unboundcell', attrs: {\n role: 'gridcell', tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isVirtualEdit - specifies virtual scroll editing\n * @returns {Element} returns the element\n */\n CommandColumnRenderer.prototype.render = function (cell, data, attributes, isVirtualEdit) {\n var node = this.element.cloneNode();\n var uid = 'uid';\n node.appendChild(this.unbounDiv.cloneNode());\n node.setAttribute('aria-label', 'is Command column column header ' + cell.column.headerText);\n if (cell.column.commandsTemplate) {\n if (this.parent.isReact && typeof (cell.column.commandsTemplate) !== 'string') {\n var tempID = this.parent + 'commandsTemplate';\n cell.column.getColumnTemplate()(data, this.parent, 'commandsTemplate', tempID, null, null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node.firstElementChild, cell.column.getColumnTemplate()(data));\n }\n }\n else {\n for (var _i = 0, _a = cell.commands; _i < _a.length; _i++) {\n var command = _a[_i];\n node = this.renderButton(node, command, attributes.index, command[uid]);\n }\n }\n this.setAttributes(node, cell, attributes);\n if ((!this.parent.enableVirtualization && this.parent.isEdit) || isVirtualEdit) {\n addClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n }\n else {\n addClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n }\n return node;\n };\n CommandColumnRenderer.prototype.renderButton = function (node, buttonOption, index, uid) {\n var button = this.buttonElement.cloneNode();\n attributes(button, {\n 'id': this.parent.element.id + (buttonOption.type || '') + '_' + index + '_' + uid, 'type': 'button',\n title: !isNullOrUndefined(buttonOption.title) ? buttonOption.title :\n buttonOption.buttonOption.content || this.localizer.getConstant(buttonOption.type) || buttonOption.type,\n 'data-uid': uid\n });\n button.onclick = buttonOption.buttonOption.click;\n var buttonObj = new Button(buttonOption.buttonOption, button);\n buttonObj.commandType = buttonOption.type;\n node.firstElementChild.appendChild(buttonObj.element);\n switch (buttonOption.type) {\n case 'Edit':\n case 'Delete':\n addClass([button], ['e-edit-delete', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n case 'Cancel':\n case 'Save':\n addClass([button], ['e-save-cancel', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n }\n return node;\n };\n return CommandColumnRenderer;\n}(CellRenderer));\nexport { CommandColumnRenderer };\n","import { closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { click, keyPressed, commandClick, initialEnd } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport { CommandColumnRenderer } from '../renderer/command-column-renderer';\nimport { getUid } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `CommandColumn` used to handle the command column actions.\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.initiateRender();\n this.addEventListener();\n }\n CommandColumn.prototype.initiateRender = function () {\n var cellFac = this.locator.getService('cellRendererFactory');\n cellFac.addCellRenderer(CellType.CommandColumn, new CommandColumnRenderer(this.parent, this.locator));\n };\n CommandColumn.prototype.commandClickHandler = function (e) {\n var gObj = this.parent;\n var target = closest(e.target, 'button');\n if (!target || !closest(e.target, '.e-unboundcell')) {\n return;\n }\n var buttonObj = target.ej2_instances[0];\n var type = buttonObj.commandType;\n var uid = target.getAttribute('data-uid');\n var commandColumn;\n var row = gObj.getRowObjectFromUID(closest(target, '.' + literals.row).getAttribute('data-uid'));\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].commands) {\n var commandCols = cols[i].commands;\n for (var j = 0; j < commandCols.length; j++) {\n var idInString = 'uid';\n var typeInString = 'type';\n if (commandCols[j][idInString] === uid && commandCols[j][typeInString] === type) {\n commandColumn = commandCols[j];\n }\n }\n }\n }\n var args = {\n cancel: false,\n target: target,\n commandColumn: commandColumn,\n rowData: isNullOrUndefined(row) ? undefined : row.data\n };\n this.parent.trigger(commandClick, args, function (commandclickargs) {\n if (buttonObj.disabled || !gObj.editModule || commandclickargs.cancel) {\n return;\n }\n switch (type) {\n case 'Edit':\n gObj.editModule.endEdit();\n gObj.editModule.startEdit(closest(target, 'tr'));\n break;\n case 'Cancel':\n gObj.editModule.closeEdit();\n break;\n case 'Save':\n gObj.editModule.endEdit();\n break;\n case 'Delete':\n if (gObj.editSettings.mode !== 'Batch') {\n gObj.editModule.endEdit();\n }\n gObj.commandDelIndex = parseInt(closest(target, 'tr').getAttribute(literals.ariaRowIndex), 10);\n gObj.clearSelection();\n //for toogle issue when dbl click\n gObj.selectRow(gObj.commandDelIndex, false);\n gObj.editModule.deleteRecord();\n gObj.commandDelIndex = undefined;\n break;\n }\n });\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * To destroy CommandColumn.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n CommandColumn.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.commandClickHandler);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(initialEnd, this.load);\n };\n CommandColumn.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.commandClickHandler, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(initialEnd, this.load, this);\n };\n CommandColumn.prototype.keyPressHandler = function (e) {\n if (e.action === 'enter' && closest(e.target, '.e-unboundcelldiv')) {\n this.commandClickHandler(e);\n e.preventDefault();\n }\n };\n CommandColumn.prototype.load = function () {\n var uid = 'uid';\n var col = this.parent.columnModel;\n for (var i = 0; i < col.length; i++) {\n if (col[i].commands) {\n var commandCol = col[i].commands;\n for (var j = 0; j < commandCol.length; j++) {\n commandCol[j][uid] = getUid('gridcommand');\n }\n }\n }\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","import { initialLoad } from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { VirtualContentRenderer, VirtualHeaderRenderer } from '../renderer/virtual-content-renderer';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { extend, getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { setComplexFieldID, setValidationRuels, getColumnModelByUid } from '../base/util';\n/**\n * Virtual Scrolling class\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualscroll';\n };\n VirtualScroll.prototype.instantiateRenderer = function () {\n this.parent.log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = this.locator.getService('rendererFactory');\n if (!this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization) {\n renderer.addRenderer(RenderType.Header, new VirtualHeaderRenderer(this.parent, this.locator));\n }\n renderer.addRenderer(RenderType.Content, new VirtualContentRenderer(this.parent, this.locator));\n }\n this.ensurePageSize();\n };\n VirtualScroll.prototype.ensurePageSize = function () {\n var rowHeight = this.parent.getRowHeight();\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height;\n this.blockSize = ~~(vHeight / rowHeight);\n var height = this.blockSize * 2;\n var size = this.parent.pageSettings.pageSize;\n this.parent.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.columnWidthChanged, this.refreshVirtualElement, this);\n this.parent.on(events.createVirtualValidationForm, this.createVirtualValidationForm, this);\n this.parent.on(events.validateVirtualForm, this.virtualEditFormValidation, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(events.columnWidthChanged, this.refreshVirtualElement);\n this.parent.off(events.createVirtualValidationForm, this.createVirtualValidationForm);\n this.parent.off(events.validateVirtualForm, this.virtualEditFormValidation);\n };\n VirtualScroll.prototype.getCurrentEditedData = function (prevData) {\n var data = {\n virtualData: extend({}, {}, prevData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n return data.virtualData;\n };\n VirtualScroll.prototype.createVirtualValidationForm = function (e) {\n var gObj = this.parent;\n if (gObj.enableVirtualization && gObj.editSettings.mode === 'Normal') {\n var cols = gObj.columns;\n var rowRenderer = new RowRenderer(this.locator, null, this.parent);\n var rowObj = extend({}, {}, gObj.getRowObjectFromUID(e.uid), true);\n gObj.notify(events.refreshVirtualEditFormCells, rowObj);\n var args = e.argsCreator(this.getCurrentEditedData(e.prevData), {}, false);\n args.isCustomFormValidation = true;\n args.row = rowRenderer.render(rowObj, cols);\n e.renderer.update(args);\n var rules = {};\n for (var i = 0; i < cols.length; i++) {\n if (!cols[i].visible) {\n continue;\n }\n if (cols[i].validationRules) {\n setValidationRuels(cols[i], 0, rules, {}, {}, cols.length, true);\n }\n }\n args.form.classList.add('e-virtual-validation');\n gObj.editModule.virtualFormObj = gObj.editModule.createFormObj(args.form, rules);\n }\n };\n VirtualScroll.prototype.virtualEditFormValidation = function (args) {\n var gObj = this.parent;\n var error = gObj.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n if (gObj.editModule.virtualFormObj) {\n if (error && error.style.display !== 'none') {\n var errorDomRect = error.getBoundingClientRect();\n var forms = gObj.element.querySelectorAll('.e-gridform');\n var form = forms[0];\n var contentLeft = gObj.getContent().getBoundingClientRect().left;\n if (forms.length > 1) {\n form = gObj.getFrozenMode() !== 'Right' ? forms[1] : forms[0];\n contentLeft = gObj.getMovableVirtualContent().getBoundingClientRect().left;\n }\n if (errorDomRect.left < contentLeft || errorDomRect.right > gObj.element.offsetWidth) {\n var tooltip = form.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx }, true);\n }\n }\n else if (gObj.editModule.virtualFormObj && (!error || error.style.display === 'none')) {\n var existingErrors = gObj.editModule.virtualFormObj.element.querySelectorAll('.e-tooltip-wrap:not([style*=\"display: none\"])');\n for (var i = 0; i < existingErrors.length; i++) {\n remove(existingErrors[i]);\n }\n this.setEditedDataToValidationForm(gObj.editModule.virtualFormObj.element, this.getCurrentEditedData(args.prevData));\n args.isValid = gObj.editModule.virtualFormObj.validate();\n if (!args.isValid) {\n var tooltip = gObj.editModule.virtualFormObj.element.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx });\n }\n }\n }\n };\n VirtualScroll.prototype.scrollToEdit = function (tooltip, args, isRenderer) {\n var gObj = this.parent;\n if (tooltip) {\n var cols = gObj.columnModel;\n var field = setComplexFieldID(tooltip.id).split('_')[0];\n var col = gObj.getColumnByField(field);\n var scrollTop = this.parent.getContent().firstElementChild.scrollTop;\n var row = gObj.getRowByIndex(args.editIdx);\n if (isRenderer || !col || (!isNullOrUndefined(args.addIdx) && scrollTop > 0) || (!isNullOrUndefined(args.editIdx) && !row)) {\n var validationCol = void 0;\n for (var i = 0; i < cols.length && !col; i++) {\n if (cols[i].field === field) {\n validationCol = cols[i];\n break;\n }\n }\n if (isRenderer) {\n validationCol = col;\n }\n this.parent.notify(events.scrollToEdit, validationCol);\n }\n }\n };\n VirtualScroll.prototype.setEditedDataToValidationForm = function (form, editedData) {\n var gObj = this.parent;\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col = getColumnModelByUid(this.parent, inputs[i].getAttribute('e-mappinguid'));\n var value = getValue(col.field, editedData);\n value = isNullOrUndefined(value) ? '' : value;\n inputs[i].value = value;\n }\n };\n VirtualScroll.prototype.refreshVirtualElement = function (args) {\n if (this.parent.enableColumnVirtualization && args.module === 'resize') {\n var renderer = this.locator.getService('rendererFactory');\n renderer.getRenderer(RenderType.Content).refreshVirtualElement();\n }\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { createElement, setStyleAttribute, remove, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport * as cls from '../../common/base/css-constant';\nimport { Grid, Reorder, Resize, ColumnChooser, Toolbar, ExcelExport, PdfExport } from '@syncfusion/ej2-grids';\nimport { VirtualScroll, Selection, Edit, Page, CommandColumn } from '@syncfusion/ej2-grids';\nimport * as events from '../../common/base/constant';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\n/**\n * `DrillThroughDialog` module to create drill-through dialog.\n */\n/** @hidden */\nvar DrillThroughDialog = /** @class */ (function () {\n /* eslint-disable-next-line */\n /**\n * Constructor for the dialog action.\n * @hidden\n */\n function DrillThroughDialog(parent) {\n /** @hidden */\n this.indexString = [];\n this.clonedData = [];\n this.isUpdated = false;\n this.gridIndexObjects = {};\n this.gridData = [];\n this.formatList = {};\n this.parent = parent;\n this.engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;\n }\n DrillThroughDialog.prototype.frameHeaderWithKeys = function (header) {\n var keys = Object.keys(header);\n var keyPos = 0;\n var framedHeader = {}; /* eslint-disable-line */\n while (keyPos < keys.length) {\n framedHeader[keys[keyPos]] = header[keys[keyPos]];\n keyPos++;\n }\n return framedHeader;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n DrillThroughDialog.prototype.showDrillThroughDialog = function (eventArgs) {\n var _this = this;\n this.gridData = eventArgs.rawData;\n for (var i = 0; i < eventArgs.rawData.length; i++) {\n this.clonedData.push(this.frameHeaderWithKeys(eventArgs.rawData[i]));\n }\n var actualText = eventArgs.currentCell.actualText.toString();\n if (this.engine.fieldList[actualText].aggregateType !== 'Count' && this.parent.editSettings.allowInlineEditing &&\n this.parent.editSettings.allowEditing && eventArgs.rawData.length === 1 &&\n this.engine.fieldList[actualText].aggregateType !== 'DistinctCount' && typeof (eventArgs.rawData[0][actualText]) !== 'string') {\n this.editCell(eventArgs);\n }\n else {\n this.removeDrillThroughDialog();\n var drillThroughDialog = createElement('div', {\n id: this.parent.element.id + '_drillthrough',\n className: cls.DRILLTHROUGH_DIALOG\n });\n this.parent.element.appendChild(drillThroughDialog);\n this.dialogPopUp = new Dialog({\n animationSettings: { effect: 'Fade' },\n allowDragging: false,\n header: this.parent.localeObj.getConstant('details'),\n content: this.createDrillThroughGrid(eventArgs),\n beforeOpen: function () {\n _this.drillThroughGrid.setProperties({\n dataSource: _this.parent.editSettings.allowEditing ?\n _this.dataWithPrimarykey(eventArgs) : _this.gridData,\n height: !_this.parent.editSettings.allowEditing ? 300 : 220\n }, false);\n },\n beforeClose: function () {\n if (_this.parent.editSettings.allowEditing && _this.isUpdated) {\n if (_this.parent.dataSourceSettings.type === 'CSV') {\n _this.updateData(_this.drillThroughGrid.dataSource);\n }\n var gridIndexObjectsValue = Object.keys(_this.gridIndexObjects);\n var previousPosition = [];\n for (var _i = 0, gridIndexObjectsValue_1 = gridIndexObjectsValue; _i < gridIndexObjectsValue_1.length; _i++) {\n var value = gridIndexObjectsValue_1[_i];\n previousPosition.push(_this.gridIndexObjects[value]);\n }\n var count = Object.keys(_this.gridIndexObjects).length;\n var addItems = [];\n var prevItems = [];\n var index = 0;\n /* eslint-disable @typescript-eslint/dot-notation */\n for (var _a = 0, _b = _this.drillThroughGrid.dataSource; _a < _b.length; _a++) {\n var item = _b[_a];\n if (isNullOrUndefined(item['__index']) || item['__index'] === '') {\n for (var _c = 0, _d = _this.engine.fields; _c < _d.length; _c++) {\n var field = _d[_c];\n if (isNullOrUndefined(item[field])) {\n delete item[field];\n }\n }\n delete item['__index'];\n addItems.push(item);\n }\n else if (count > 0) {\n if (isBlazor() && _this.parent.editSettings.allowCommandColumns) {\n _this.parent.engineModule.data[Number(item['__index'])] = item;\n }\n delete _this.gridIndexObjects[item['__index'].toString()];\n prevItems.push(item);\n count--;\n }\n if (_this.parent.dataSourceSettings.mode === 'Server') {\n if (item['__index']) {\n delete item['__index'];\n }\n if (_this.gridData[index]['__index']) {\n delete _this.gridData[index]['__index'];\n }\n }\n index++;\n }\n count = 0;\n if (isBlazor() && _this.parent.enableVirtualization) {\n var currModule_1 = _this; /* eslint-disable-line */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n currModule_1.parent.interopAdaptor.invokeMethodAsync('PivotInteropMethod', 'updateRawData', {\n 'AddItem': addItems, 'RemoveItem': currModule_1.gridIndexObjects, 'ModifiedItem': currModule_1.gridData /* eslint-disable-line */\n }).then(function (data) {\n currModule_1.parent.updateBlazorData(data, currModule_1.parent);\n currModule_1.parent.allowServerDataBinding = false;\n currModule_1.parent.setProperties({ pivotValues: currModule_1.parent.engineModule.pivotValues }, true);\n delete currModule_1.parent.bulkChanges.pivotValues;\n currModule_1.parent.allowServerDataBinding = true;\n currModule_1.isUpdated = false;\n currModule_1.gridIndexObjects = {};\n });\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n else if (_this.parent.dataSourceSettings.mode === 'Server') {\n var gridIndex = []; /* eslint-disable-line */\n var keys = Object.keys(_this.gridIndexObjects);\n for (var len = 0; len < keys.length; len++) {\n delete _this.parent.drillThroughValue.indexObject[_this.gridIndexObjects[keys[len]]];\n gridIndex.push({ Key: keys[len], Value: _this.gridIndexObjects[keys[len]] }); /* eslint-disable-line */\n }\n var indexObject = []; /* eslint-disable-line */\n keys = Object.keys(_this.parent.drillThroughValue.indexObject);\n for (var len = 0; len < keys.length; len++) {\n indexObject.push({ Key: keys[len], Value: _this.parent.drillThroughValue.indexObject[keys[len]] }); /* eslint-disable-line */\n }\n _this.parent.getEngine('updateRawData', null, null, null, null, null, null, null, { 'addedData': addItems, 'removedData': gridIndex, 'updatedData': prevItems, indexObject: indexObject });\n }\n else {\n var items = [];\n var data = (_this.parent.allowDataCompression && _this.parent.enableVirtualization) ?\n _this.parent.engineModule.actualData : _this.parent.engineModule.data;\n for (var _e = 0, _f = data; _e < _f.length; _e++) {\n var item = _f[_e];\n delete item['__index'];\n if (_this.gridIndexObjects[count.toString()] === undefined) {\n items.push(item);\n }\n count++;\n }\n /* eslint-enable @typescript-eslint/dot-notation */\n items = items.concat(addItems);\n var eventArgs_1 = {\n currentData: _this.drillThroughGrid.dataSource,\n previousData: _this.clonedData,\n previousPosition: previousPosition,\n cancel: false\n };\n _this.parent.trigger(events.editCompleted, eventArgs_1);\n if (!eventArgs_1.cancel) {\n _this.parent.setProperties({ dataSourceSettings: { dataSource: items } }, true);\n _this.engine.updateGridData(_this.parent.dataSourceSettings);\n _this.parent.pivotValues = _this.engine.pivotValues;\n }\n }\n }\n if (!(isBlazor() && _this.parent.enableVirtualization)) {\n _this.isUpdated = false;\n _this.gridIndexObjects = {};\n }\n },\n isModal: true,\n visible: true,\n showCloseIcon: true,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n width: this.parent.isAdaptive ? '100%' : '60%',\n position: { X: 'center', Y: 'center' },\n closeOnEscape: true,\n target: document.body,\n close: this.removeDrillThroughDialog.bind(this)\n });\n this.dialogPopUp.isStringTemplate = true;\n this.dialogPopUp.appendTo(drillThroughDialog);\n // this.dialogPopUp.element.querySelector('.e-dlg-header').innerHTML = this.parent.localeObj.getConstant('details');\n setStyleAttribute(this.dialogPopUp.element, { 'visibility': 'visible' });\n }\n };\n DrillThroughDialog.prototype.editCell = function (eventArgs) {\n var _this = this;\n var gridResize = this.parent.gridSettings.allowResizing;\n var actualText = eventArgs.currentCell.actualText.toString();\n var indexObject = Number(Object.keys(eventArgs.currentCell.indexObject));\n eventArgs.currentTarget.firstElementChild.style.display = 'none';\n var cellValue = Number(eventArgs.rawData[0][actualText]);\n /* eslint-disable */\n var previousData = this.frameHeaderWithKeys(eventArgs.rawData[eventArgs.rawData.length - 1]);\n var currentData = eventArgs.rawData[eventArgs.rawData.length - 1];\n /* eslint-enable */\n if (eventArgs.currentCell.actualText in previousData) {\n currentData[eventArgs.currentCell.actualText] = eventArgs.currentCell.actualValue;\n }\n this.numericTextBox = new NumericTextBox({\n value: cellValue,\n enableRtl: this.parent.enableRtl,\n enabled: true,\n format: '####.##',\n locale: this.parent.locale,\n change: function () {\n var textBoxValue = _this.numericTextBox.value;\n var indexValue = eventArgs.currentCell.indexObject[indexObject];\n eventArgs.rawData[0][actualText] = textBoxValue;\n _this.parent.engineModule.data[indexValue] = eventArgs.rawData[0];\n },\n blur: function () {\n var eventArgs = {\n currentData: currentData,\n previousData: previousData,\n previousPosition: currentData.index,\n cancel: false\n };\n _this.parent.trigger(events.editCompleted, eventArgs);\n if (!eventArgs.cancel) {\n _this.parent.setProperties({ dataSourceSettings: { dataSource: _this.parent.engineModule.data } }, true);\n _this.engine.updateGridData(_this.parent.dataSourceSettings);\n _this.parent.pivotValues = _this.engine.pivotValues;\n _this.parent.gridSettings.allowResizing = gridResize;\n }\n }\n });\n var textBoxElement = createElement('input', {\n id: this.parent.element.id + '_inputbox'\n });\n eventArgs.currentTarget.appendChild(textBoxElement);\n this.numericTextBox.appendTo(textBoxElement);\n eventArgs.currentCell.value = this.numericTextBox.value;\n this.numericTextBox.focusIn();\n this.parent.gridSettings.allowResizing = false;\n };\n /* eslint-disable , @typescript-eslint/no-explicit-any */\n DrillThroughDialog.prototype.updateData = function (dataSource) {\n var dataPos = 0;\n var data = (this.parent.allowDataCompression && this.parent.enableVirtualization) ?\n this.parent.engineModule.actualData : this.parent.engineModule.data;\n while (dataPos < dataSource.length) {\n var fields = Object.keys(dataSource[dataPos]);\n var keyPos = 0;\n var framedSet = [];\n while (keyPos < fields.length) {\n if (!isNullOrUndefined(this.parent.engineModule.fieldKeys[fields[keyPos]])) {\n framedSet[this.parent.engineModule.fieldKeys[fields[keyPos]]] = dataSource[dataPos][fields[keyPos]];\n }\n keyPos++;\n }\n data[dataSource[dataPos]['__index']] = framedSet; /* eslint-disable-line */\n dataPos++;\n }\n if (this.parent.allowDataCompression && this.parent.enableVirtualization) {\n this.parent.engineModule.actualData = data;\n }\n else {\n this.parent.engineModule.data = data;\n }\n };\n DrillThroughDialog.prototype.removeDrillThroughDialog = function () {\n if (this.dialogPopUp && !this.dialogPopUp.isDestroyed) {\n this.dialogPopUp.destroy();\n }\n var dialogElement = document.getElementById(this.parent.element.id + '_drillthrough');\n if (dialogElement) {\n remove(dialogElement);\n }\n if (document.getElementById(this.parent.element.id + '_drillthroughgrid_ccdlg')) {\n remove(document.getElementById(this.parent.element.id + '_drillthroughgrid_ccdlg'));\n }\n };\n /* eslint-disable */\n DrillThroughDialog.prototype.createDrillThroughGrid = function (eventArgs) {\n var drillThroughBody = createElement('div', { id: this.parent.element.id + '_drillthroughbody', className: cls.DRILLTHROUGH_BODY_CLASS });\n var drillThroughBodyHeader = createElement('div', {\n id: this.parent.element.id +\n '_drillthroughbodyheader', className: cls.DRILLTHROUGH_BODY_HEADER_CONTAINER_CLASS\n });\n if (eventArgs.rowHeaders !== '') {\n drillThroughBodyHeader.innerHTML = '' +\n this.parent.localeObj.getConstant('row') + ' :' + eventArgs.rowHeaders + '';\n }\n if (eventArgs.columnHeaders !== '') {\n drillThroughBodyHeader.innerHTML = drillThroughBodyHeader.innerHTML + '' + this.parent.localeObj.getConstant('column') +\n ' :' +\n eventArgs.columnHeaders + '';\n }\n if (eventArgs.value !== '') {\n var measure = eventArgs.value.split('(')[0];\n var value = eventArgs.value.split('(')[1].split(')')[0];\n if (value !== '0') {\n drillThroughBodyHeader.innerHTML = drillThroughBodyHeader.innerHTML + '' +\n measure + ' :' + value + '';\n }\n }\n var toolbarItems = ['ColumnChooser'];\n if (this.parent.editSettings.allowEditing) {\n if (this.parent.editSettings.allowCommandColumns) {\n toolbarItems = ['ColumnChooser', 'Add'];\n }\n else if (this.parent.editSettings.mode === 'Batch') {\n toolbarItems = ['ColumnChooser', 'Add', 'Delete', 'Update', 'Cancel'];\n }\n else if (this.parent.editSettings.mode === 'Dialog') {\n toolbarItems = ['ColumnChooser', 'Add', 'Edit', 'Delete'];\n }\n else {\n toolbarItems = ['ColumnChooser', 'Add', 'Edit', 'Delete', 'Update', 'Cancel'];\n }\n }\n var drillThroughGrid = createElement('div', { id: this.parent.element.id + '_drillthroughgrid', className: cls.DRILLTHROUGH_GRID_CLASS });\n Grid.Inject(Selection, Reorder, Resize, Toolbar, ColumnChooser);\n this.drillThroughGrid = new Grid({\n gridLines: 'Default',\n allowResizing: true,\n allowReordering: true,\n showColumnChooser: true,\n enableHover: false,\n toolbar: toolbarItems,\n columns: eventArgs.gridColumns,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enableVirtualization: !this.parent.editSettings.allowEditing,\n allowPaging: this.parent.editSettings.allowEditing,\n pageSettings: { pageSize: 20 },\n rowHeight: this.parent.gridSettings.rowHeight\n });\n if (isBlazor()) {\n this.drillThroughGrid['isJsComponent'] = true;\n }\n if (this.parent.dataType === 'olap') {\n this.formatData();\n }\n var dialogModule = this;\n this.parent.trigger(events.beginDrillThrough, {\n cellInfo: eventArgs,\n gridObj: isBlazor() ? undefined : this.drillThroughGrid,\n type: 'editing'\n });\n if (this.drillThroughGrid.allowExcelExport) {\n Grid.Inject(ExcelExport);\n }\n if (this.drillThroughGrid.allowPdfExport) {\n Grid.Inject(PdfExport);\n }\n if (this.parent.editSettings.allowEditing) {\n Grid.Inject(Edit, Page);\n this.drillThroughGrid.editSettings = this.parent.editSettings;\n if (this.parent.editSettings.allowCommandColumns) {\n this.drillThroughGrid.editSettings.mode = 'Normal';\n this.drillThroughGrid.editSettings.allowEditOnDblClick = false;\n Grid.Inject(CommandColumn);\n this.drillThroughGrid.columns.push({\n headerText: this.parent.localeObj.getConstant('manageRecords'), width: 160, showInColumnChooser: false,\n commands: [\n { type: 'Edit', buttonOption: { iconCss: ' e-icons e-edit', cssClass: 'e-flat' } },\n { type: 'Delete', buttonOption: { iconCss: 'e-icons e-delete', cssClass: 'e-flat' } },\n { type: 'Save', buttonOption: { iconCss: 'e-icons e-update', cssClass: 'e-flat' } },\n { type: 'Cancel', buttonOption: { iconCss: 'e-icons e-cancel-icon', cssClass: 'e-flat' } }\n ]\n });\n }\n else {\n this.drillThroughGrid.editSettings.allowEditOnDblClick = this.parent.editSettings.allowEditOnDblClick;\n }\n this.drillThroughGrid.columns.push({\n field: '__index', visible: false, isPrimaryKey: true, type: 'string', showInColumnChooser: false\n });\n this.drillThroughGrid.actionComplete = function (args) {\n if (args.requestType === 'batchsave' || args.requestType === 'save' || args.requestType === 'delete') {\n dialogModule.isUpdated = true;\n }\n if ((dialogModule.drillThroughGrid.editSettings.mode === 'Normal' && args.requestType === 'save' &&\n dialogModule.drillThroughGrid.element.querySelectorAll('.e-tbar-btn:hover').length > 0 &&\n !dialogModule.parent.editSettings.allowCommandColumns) || args.requestType === 'batchsave') {\n dialogModule.dialogPopUp.hide();\n }\n };\n this.drillThroughGrid.beforeBatchSave = function () {\n dialogModule.isUpdated = true;\n };\n /* eslint-enable @typescript-eslint/indent */\n }\n else {\n Grid.Inject(VirtualScroll);\n }\n document.body.appendChild(drillThroughGrid);\n this.drillThroughGrid.isStringTemplate = true;\n this.drillThroughGrid.appendTo(drillThroughGrid);\n drillThroughBody.appendChild(drillThroughBodyHeader);\n drillThroughBody.appendChild(drillThroughGrid);\n return drillThroughBody;\n };\n /** @hidden */\n DrillThroughDialog.prototype.frameGridColumns = function (rawData) {\n var keys = this.parent.dataType === 'olap' ? rawData[0] ? Object.keys(rawData[0]) : [] :\n Object.keys(this.engine.fieldList);\n var columns = [];\n if (this.parent.dataSourceSettings.formatSettings.length > 0) {\n for (var i = 0; i < this.parent.dataSourceSettings.formatSettings.length; i++) {\n this.formatList[this.parent.dataSourceSettings.formatSettings[i].name] = this.parent.dataSourceSettings.formatSettings[i].format;\n }\n }\n if (this.parent.dataType === 'olap') {\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n columns.push({\n field: key.replace(/_x005B_|_x0020_|_x005D_|_x0024_/g, '').replace('].[', '').split('.').reverse().join(''),\n headerText: key.replace(/_x005B_|_x005D_|_x0024_/g, '').replace(/_x0020_/g, ' ').\n replace('].[', '').split('.').reverse().join('.'),\n width: 120,\n visible: true,\n validationRules: { required: true },\n format: !isNullOrUndefined(this.formatList[key]) ? this.formatList[key] : null,\n type: !isNullOrUndefined(this.formatList[key]) ? null : 'string'\n });\n }\n }\n else {\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var key = keys_2[_a];\n if (this.engine.fieldList[key].aggregateType !== 'CalculatedField') {\n var editType = '';\n var isDateField = ((this.engine.fieldList[key].type === 'date' || this.engine.fieldList[key].type === 'datetime') && (this.isDateFieldExist(key) || (rawData[0] && rawData[0][key] && rawData[0][key].toString().indexOf(' ') === -1))) ? true : false;\n if (this.engine.fieldList[key].type === 'number') {\n editType = 'numericedit';\n }\n else if (this.engine.fieldList[key].type === 'date' && isDateField) {\n editType = 'datepickeredit';\n }\n else if (this.engine.fieldList[key].type === 'datetime' && isDateField) {\n editType = 'datetimepickeredit';\n }\n else {\n editType = 'defaultedit';\n }\n columns.push({\n field: key,\n headerText: this.engine.fieldList[key].caption,\n width: 120,\n visible: this.engine.fieldList[key].isSelected,\n validationRules: { required: true },\n editType: editType,\n format: !isNullOrUndefined(this.formatList[key]) ? this.formatList[key] : null,\n type: !isNullOrUndefined(this.formatList[key]) ? null : 'string'\n });\n }\n }\n }\n return columns;\n };\n DrillThroughDialog.prototype.isDateFieldExist = function (key) {\n for (var len = 0; len < this.parent.dataSourceSettings.formatSettings.length; len++) {\n if (this.parent.dataSourceSettings.formatSettings[len].name === key && this.parent.dataSourceSettings.formatSettings[len].type.indexOf('date') > -1) {\n return true;\n }\n }\n for (var len = 0; len < this.parent.dataSourceSettings.fieldMapping.length; len++) {\n if (this.parent.dataSourceSettings.fieldMapping[len].name === key && this.parent.dataSourceSettings.fieldMapping[len].dataType.indexOf('date') > -1) {\n return true;\n }\n }\n return false;\n };\n DrillThroughDialog.prototype.formatData = function () {\n var index = 0;\n while (index < this.gridData.length) {\n var data = this.gridData[index];\n var keys = Object.keys(this.gridData[index]);\n var newData = {};\n var i = 0;\n while (i < keys.length) {\n var key = keys[i].replace(/_x005B_|_x0020_|_x005D_|_x0024_/g, '').replace('].[', '').split('.').reverse().join('');\n newData[key] = data[keys[i]];\n i++;\n }\n this.gridData[index] = newData;\n index++;\n }\n };\n DrillThroughDialog.prototype.dataWithPrimarykey = function (eventArgs) {\n var indexString = this.indexString.length > 0 ? this.indexString : Object.keys(eventArgs.currentCell.indexObject);\n var rawData = this.gridData;\n var count = 0;\n for (var _i = 0, rawData_1 = rawData; _i < rawData_1.length; _i++) {\n var item = rawData_1[_i];\n item['__index'] = indexString[count];\n this.gridIndexObjects[indexString[count].toString()] = Number(indexString[count]);\n count++;\n }\n return rawData;\n };\n return DrillThroughDialog;\n}());\nexport { DrillThroughDialog };\n","import { contentReady } from '../../common/base/constant';\nimport * as events from '../../common/base/constant';\nimport { DrillThroughDialog } from '../../common/popups/drillthrough-dialog';\nimport { EventHandler, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\n/**\n * `DrillThrough` module.\n */\nvar DrillThrough = /** @class */ (function () {\n /**\n * Constructor.\n * @param {PivotView} parent - Instance of pivot table.\n * @hidden\n */\n function DrillThrough(parent) {\n this.parent = parent;\n this.drillThroughDialog = new DrillThroughDialog(this.parent);\n this.addInternalEvents();\n }\n /**\n * It returns the Module name.\n * @returns {string} - string.\n * @hidden\n */\n DrillThrough.prototype.getModuleName = function () {\n return 'drillthrough';\n };\n DrillThrough.prototype.addInternalEvents = function () {\n this.parent.on(contentReady, this.wireEvents, this);\n };\n DrillThrough.prototype.wireEvents = function () {\n this.unWireEvents();\n EventHandler.add(this.parent.element, 'dblclick', this.mouseClickHandler, this);\n };\n DrillThrough.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.element, 'dblclick', this.mouseClickHandler);\n };\n DrillThrough.prototype.mouseClickHandler = function (e) {\n var target = e.target;\n var ele = null;\n if (target.classList.contains('e-stackedheadercelldiv') || target.classList.contains('e-cellvalue') ||\n target.classList.contains('e-headercelldiv')) {\n ele = target.parentElement;\n }\n else if (target.classList.contains('e-headercell') || target.classList.contains('e-rowcell')) {\n ele = target;\n }\n else if (target.classList.contains('e-headertext')) {\n ele = target.parentElement.parentElement;\n }\n if (ele) {\n if (this.parent.allowDrillThrough && ele.classList.contains('e-valuescontent') || this.parent.editSettings.allowEditing) {\n var colIndex = Number(ele.getAttribute('aria-colindex'));\n var rowIndex = Number(ele.getAttribute('index'));\n this.executeDrillThrough(this.parent.pivotValues[rowIndex][colIndex], rowIndex, colIndex, ele);\n }\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n DrillThrough.prototype.executeDrillThrough = function (pivotValue, rowIndex, colIndex, element) {\n this.parent.drillThroughElement = element;\n this.parent.drillThroughValue = pivotValue;\n var engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;\n var valueCaption = '';\n var aggType = '';\n var rawData = [];\n if (pivotValue.rowHeaders !== undefined && pivotValue.columnHeaders !== undefined && !isNullOrUndefined(pivotValue.value)) {\n if (this.parent.dataType === 'olap') {\n var tupleInfo = void 0;\n if (this.parent.dataSourceSettings.valueAxis === 'row') {\n tupleInfo = engine.tupRowInfo[pivotValue.rowOrdinal];\n }\n else {\n tupleInfo = engine.tupColumnInfo[pivotValue.colOrdinal];\n }\n var measureName = tupleInfo ?\n engine.getUniqueName(tupleInfo.measureName) : pivotValue.actualText;\n if (engine.fieldList[measureName] && engine.fieldList[measureName].isCalculatedField) {\n this.parent.pivotCommon.errorDialog.createErrorDialog(this.parent.localeObj.getConstant('error'), this.parent.localeObj.getConstant('drillError'));\n return;\n }\n valueCaption = engine.fieldList[measureName || pivotValue.actualText].caption;\n aggType = engine.fieldList[measureName || pivotValue.actualText].aggregateType;\n this.parent.olapEngineModule.getDrillThroughData(pivotValue, this.parent.maxRowsInDrillThrough);\n try {\n rawData = JSON.parse(engine.gridJSON);\n }\n catch (exception) {\n this.parent.pivotCommon.errorDialog.createErrorDialog(this.parent.localeObj.getConstant('error'), engine.gridJSON);\n return;\n }\n }\n else {\n valueCaption = engine.fieldList[pivotValue.actualText.toString()] ?\n engine.fieldList[pivotValue.actualText.toString()].caption : pivotValue.actualText.toString();\n aggType = engine.fieldList[pivotValue.actualText] ? engine.fieldList[pivotValue.actualText].aggregateType : '';\n var currModule_1 = this; /* eslint-disable-line */\n if (isBlazor() && this.parent.enableVirtualization) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n currModule_1.parent.interopAdaptor.invokeMethodAsync('PivotInteropMethod', 'fetchRawData', { 'RowIndex': rowIndex, 'ColumnIndex': colIndex }).then(function (data) {\n rawData = JSON.parse(data.rawData);\n var parsedObj = JSON.parse(data.indexObject);\n var indexObject = {};\n for (var len = 0; len < parsedObj.length; len++) {\n indexObject[parsedObj[len].Key] = parsedObj[len].Value;\n }\n pivotValue.indexObject = indexObject;\n currModule_1.triggerDialog(valueCaption, aggType, rawData, pivotValue, element);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n });\n }\n else if (this.parent.dataSourceSettings.mode === 'Server') {\n this.parent.getEngine('fetchRawData', null, null, null, null, null, null, { rowIndex: rowIndex, columnIndex: colIndex });\n }\n else {\n if (this.parent.enableVirtualization && this.parent.allowDataCompression) {\n var indexArray = Object.keys(pivotValue.indexObject);\n this.drillThroughDialog.indexString = [];\n for (var _i = 0, indexArray_1 = indexArray; _i < indexArray_1.length; _i++) {\n var cIndex = indexArray_1[_i];\n for (var _a = 0, _b = this.parent.engineModule.groupRawIndex[Number(cIndex)]; _a < _b.length; _a++) {\n var aIndex = _b[_a];\n rawData.push(this.parent.engineModule.actualData[aIndex]);\n this.drillThroughDialog.indexString.push(aIndex.toString());\n }\n }\n }\n else {\n var indexArray = Object.keys(pivotValue.indexObject);\n for (var _c = 0, indexArray_2 = indexArray; _c < indexArray_2.length; _c++) {\n var index = indexArray_2[_c];\n rawData.push(this.parent.engineModule.data[Number(index)]);\n }\n }\n }\n }\n if (!(isBlazor() && this.parent.enableVirtualization) && this.parent.dataSourceSettings.mode !== 'Server') {\n this.triggerDialog(valueCaption, aggType, rawData, pivotValue, element);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n DrillThrough.prototype.frameData = function (eventArgs) {\n var keyPos = 0;\n var dataPos = 0;\n var data = [];\n while (dataPos < eventArgs.rawData.length) {\n var framedHeader = {};\n while (keyPos < eventArgs.gridColumns.length) {\n framedHeader[eventArgs.gridColumns[keyPos].field] = this.parent.dataSourceSettings.mode === 'Server' ?\n eventArgs.rawData[dataPos][this.parent.engineModule.fields.indexOf(eventArgs.gridColumns[keyPos].field) !== -1 ? this.parent.engineModule.fields.indexOf(eventArgs.gridColumns[keyPos].field) : 0] : /* eslint-disable-line */\n eventArgs.rawData[dataPos][this.parent.engineModule.fieldKeys[eventArgs.gridColumns[keyPos].field]];\n keyPos++;\n }\n data.push(framedHeader);\n dataPos++;\n keyPos = 0;\n }\n eventArgs.rawData = data;\n return eventArgs;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n DrillThrough.prototype.triggerDialog = function (valueCaption, aggType, rawData, pivotValue, element) {\n var valuetText = aggType === 'CalculatedField' ? valueCaption.toString() : aggType !== '' ?\n (this.parent.localeObj.getConstant(aggType) + ' ' + this.parent.localeObj.getConstant('of') + ' ' + valueCaption) :\n valueCaption;\n var eventArgs = {\n currentTarget: element,\n currentCell: pivotValue,\n rawData: rawData,\n rowHeaders: pivotValue.rowHeaders === '' ? '' : pivotValue.rowHeaders.toString().split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).join(' - '),\n columnHeaders: pivotValue.columnHeaders === '' ? '' : pivotValue.columnHeaders.toString().split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).join(' - '),\n value: valuetText + '(' + pivotValue.formattedText + ')',\n gridColumns: this.drillThroughDialog.frameGridColumns(rawData),\n cancel: false\n };\n if (this.parent.dataSourceSettings.type === 'CSV') {\n eventArgs = this.frameData(eventArgs);\n }\n var drillThrough = this; /* eslint-disable-line */\n var gridColumns = eventArgs.gridColumns;\n this.parent.trigger(events.drillThrough, eventArgs, function (observedArgs) {\n if (isBlazor()) {\n for (var i = 0; i < observedArgs.gridColumns.length; i++) {\n if (gridColumns[i].field === observedArgs.gridColumns[i].field) {\n gridColumns[i].field = observedArgs.gridColumns[i].field;\n gridColumns[i].editType = observedArgs.gridColumns[i].editType;\n gridColumns[i].headerText = observedArgs.gridColumns[i].headerText;\n gridColumns[i].type = observedArgs.gridColumns[i].type;\n gridColumns[i].validationRules = observedArgs.gridColumns[i].validationRules;\n gridColumns[i].visible = observedArgs.gridColumns[i].visible;\n gridColumns[i].width = observedArgs.gridColumns[i].width;\n }\n }\n observedArgs.gridColumns = gridColumns;\n }\n if (!eventArgs.cancel) {\n drillThrough.drillThroughDialog.showDrillThroughDialog(observedArgs);\n }\n });\n };\n return DrillThrough;\n}());\nexport { DrillThrough };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Theme } from '../model/theme';\n/**\n * Defines the appearance of the connectors\n */\nvar Connector = /** @class */ (function (_super) {\n __extends(Connector, _super);\n function Connector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Line')\n ], Connector.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Connector.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"length\", void 0);\n __decorate([\n Property('')\n ], Connector.prototype, \"dashArray\", void 0);\n return Connector;\n}(ChildProperty));\nexport { Connector };\n/**\n * Configures the fonts in charts.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('16px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], Font.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n __decorate([\n Property('Trim')\n ], Font.prototype, \"textOverflow\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Configures the borders in the chart.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Configures the marker position in the chart.\n */\nvar Offset = /** @class */ (function (_super) {\n __extends(Offset, _super);\n function Offset() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Offset.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Offset.prototype, \"y\", void 0);\n return Offset;\n}(ChildProperty));\nexport { Offset };\n/**\n * Configures the chart area.\n */\nvar ChartArea = /** @class */ (function (_super) {\n __extends(ChartArea, _super);\n function ChartArea() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Border)\n ], ChartArea.prototype, \"border\", void 0);\n __decorate([\n Property('transparent')\n ], ChartArea.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], ChartArea.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"backgroundImage\", void 0);\n return ChartArea;\n}(ChildProperty));\nexport { ChartArea };\n/**\n * Configures the chart margins.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Configures the chart Legend Container Padding.\n */\nvar ContainerPadding = /** @class */ (function (_super) {\n __extends(ContainerPadding, _super);\n function ContainerPadding() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"bottom\", void 0);\n return ContainerPadding;\n}(ChildProperty));\nexport { ContainerPadding };\n/**\n * Configures the animation behavior for chart series.\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], Animation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Series and point index\n *\n * @public\n */\nvar Indexes = /** @class */ (function (_super) {\n __extends(Indexes, _super);\n function Indexes() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Indexes.prototype, \"series\", void 0);\n __decorate([\n Property(0)\n ], Indexes.prototype, \"point\", void 0);\n return Indexes;\n}(ChildProperty));\nexport { Indexes };\n/**\n * Column series rounded corner options\n */\nvar CornerRadius = /** @class */ (function (_super) {\n __extends(CornerRadius, _super);\n function CornerRadius() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topRight\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomRight\", void 0);\n return CornerRadius;\n}(ChildProperty));\nexport { CornerRadius };\n/**\n * @private\n */\nvar Index = /** @class */ (function () {\n function Index(seriesIndex, pointIndex) {\n this.series = seriesIndex;\n this.point = pointIndex;\n }\n return Index;\n}());\nexport { Index };\n/**\n * Configures the Empty Points of series\n */\nvar EmptyPointSettings = /** @class */ (function (_super) {\n __extends(EmptyPointSettings, _super);\n function EmptyPointSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EmptyPointSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], EmptyPointSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Gap')\n ], EmptyPointSettings.prototype, \"mode\", void 0);\n return EmptyPointSettings;\n}(ChildProperty));\nexport { EmptyPointSettings };\n/**\n * Configures the drag settings of series\n */\nvar DragSettings = /** @class */ (function (_super) {\n __extends(DragSettings, _super);\n function DragSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DragSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"minY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"maxY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"fill\", void 0);\n return DragSettings;\n}(ChildProperty));\nexport { DragSettings };\n/**\n * Configures the ToolTips in the chart.\n *\n * @public\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex(Theme.tooltipLabelFont, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], TooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], TooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Complex({ color: '#cccccc', width: 0.5 }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * button settings in period selector\n */\nvar Periods = /** @class */ (function (_super) {\n __extends(Periods, _super);\n function Periods() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Years')\n ], Periods.prototype, \"intervalType\", void 0);\n __decorate([\n Property(1)\n ], Periods.prototype, \"interval\", void 0);\n __decorate([\n Property(null)\n ], Periods.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], Periods.prototype, \"selected\", void 0);\n return Periods;\n}(ChildProperty));\nexport { Periods };\n/**\n * Period Selector Settings\n */\nvar PeriodSelectorSettings = /** @class */ (function (_super) {\n __extends(PeriodSelectorSettings, _super);\n function PeriodSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(43)\n ], PeriodSelectorSettings.prototype, \"height\", void 0);\n __decorate([\n Property('Bottom')\n ], PeriodSelectorSettings.prototype, \"position\", void 0);\n __decorate([\n Collection([], Periods)\n ], PeriodSelectorSettings.prototype, \"periods\", void 0);\n return PeriodSelectorSettings;\n}(ChildProperty));\nexport { PeriodSelectorSettings };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SvgRenderer = /** @class */ (function () {\n /* End-Properties */\n function SvgRenderer(rootID) {\n //Internal Variables\n this.svgLink = 'http://www.w3.org/2000/svg';\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n SvgRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n }; /* tslint:enable */\n /**\n * To create a Html5 SVG element\n *\n * @param {SVGAttributes} options - Options to create SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createSvg = function (options) {\n if (isNullOrUndefined(options.id)) {\n options.id = this.rootId + '_svg';\n }\n this.svgObj = document.getElementById(options.id);\n if (isNullOrUndefined(document.getElementById(options.id))) {\n this.svgObj = document.createElementNS(this.svgLink, 'svg');\n }\n this.svgObj = this.setElementAttributes(options, this.svgObj);\n this.setSVGSize(options.width, options.height);\n return this.svgObj;\n };\n // method to set the height and width for the SVG element\n SvgRenderer.prototype.setSVGSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width) || this.width <= 0) {\n this.svgObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.svgObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height) || this.height <= 0) {\n this.svgObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.svgObj.setAttribute('height', this.height.toString());\n }\n };\n /**\n * To draw a path\n *\n * @param {PathAttributes} options - Options to draw a path in SVG\n * @returns {Element} It returns a appropriate path\n */\n SvgRenderer.prototype.drawPath = function (options) {\n var path = document.getElementById(options.id);\n if (path === null) {\n path = document.createElementNS(this.svgLink, 'path');\n }\n path = this.setElementAttributes(options, path);\n return path;\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - Options to draw a line in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawLine = function (options) {\n var line = document.getElementById(options.id);\n if (line === null) {\n line = document.createElementNS(this.svgLink, 'line');\n }\n line = this.setElementAttributes(options, line);\n return line;\n };\n /**\n * To draw a rectangle\n *\n * @param {BaseAttibutes} options - Required options to draw a rectangle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawRectangle = function (options) {\n var rectangle = document.getElementById(options.id);\n if (rectangle === null) {\n rectangle = document.createElementNS(this.svgLink, 'rect');\n }\n rectangle = this.setElementAttributes(options, rectangle);\n return rectangle;\n };\n /**\n * To draw a circle\n *\n * @param {CircleAttributes} options - Required options to draw a circle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircle = function (options) {\n var circle = document.getElementById(options.id);\n if (circle === null) {\n circle = document.createElementNS(this.svgLink, 'circle');\n }\n circle = this.setElementAttributes(options, circle);\n return circle;\n };\n /**\n * To draw a polyline\n *\n * @param {PolylineAttributes} options - Options required to draw a polyline\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolyline = function (options) {\n var polyline = document.getElementById(options.id);\n if (polyline === null) {\n polyline = document.createElementNS(this.svgLink, 'polyline');\n }\n polyline = this.setElementAttributes(options, polyline);\n return polyline;\n };\n /**\n * To draw an ellipse\n *\n * @param {EllipseAttributes} options - Options required to draw an ellipse\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawEllipse = function (options) {\n var ellipse = document.getElementById(options.id);\n if (ellipse === null) {\n ellipse = document.createElementNS(this.svgLink, 'ellipse');\n }\n ellipse = this.setElementAttributes(options, ellipse);\n return ellipse;\n };\n /**\n * To draw a polygon\n *\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolygon = function (options) {\n var polygon = document.getElementById(options.id);\n if (polygon === null) {\n polygon = document.createElementNS(this.svgLink, 'polygon');\n }\n polygon = this.setElementAttributes(options, polygon);\n return polygon;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - Required options to draw an image in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawImage = function (options) {\n var img = document.createElementNS(this.svgLink, 'image');\n img.setAttributeNS(null, 'height', options.height.toString());\n img.setAttributeNS(null, 'width', options.width.toString());\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', options.href);\n img.setAttributeNS(null, 'x', options.x.toString());\n img.setAttributeNS(null, 'y', options.y.toString());\n img.setAttributeNS(null, 'id', options.id);\n img.setAttributeNS(null, 'visibility', options.visibility);\n if (!isNullOrUndefined(this.getOptionValue(options, 'clip-path'))) {\n img.setAttributeNS(null, 'clip-path', this.getOptionValue(options, 'clip-path'));\n }\n if (!isNullOrUndefined(options.preserveAspectRatio)) {\n img.setAttributeNS(null, 'preserveAspectRatio', options.preserveAspectRatio);\n }\n return img;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - Options needed to draw a text in SVG\n * @param {string} label - Label of the text\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createText = function (options, label) {\n var text = document.createElementNS(this.svgLink, 'text');\n text = this.setElementAttributes(options, text);\n if (!isNullOrUndefined(label)) {\n text.textContent = label;\n }\n return text;\n };\n /**\n * To create a tSpan\n *\n * @param {TextAttributes} options - Options to create tSpan\n * @param {string} label - The text content which is to be rendered in the tSpan\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTSpan = function (options, label) {\n var tSpan = document.createElementNS(this.svgLink, 'tspan');\n tSpan = this.setElementAttributes(options, tSpan);\n if (!isNullOrUndefined(label)) {\n tSpan.textContent = label;\n }\n return tSpan;\n };\n /**\n * To create a title\n *\n * @param {string} text - The text content which is to be rendered in the title\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTitle = function (text) {\n var title = document.createElementNS(this.svgLink, 'title');\n title.textContent = text;\n return title;\n };\n /**\n * To create defs element in SVG\n *\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createDefs = function () {\n var defs = document.createElementNS(this.svgLink, 'defs');\n return defs;\n };\n /**\n * To create clip path in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createClipPath = function (options) {\n var clipPath = document.createElementNS(this.svgLink, 'clipPath');\n clipPath = this.setElementAttributes(options, clipPath);\n return clipPath;\n };\n /**\n * To create foreign object in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create foreign object\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createForeignObject = function (options) {\n var foreignObject = document.createElementNS(this.svgLink, 'foreignObject');\n foreignObject = this.setElementAttributes(options, foreignObject);\n return foreignObject;\n };\n /**\n * To create group element in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create group\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createGroup = function (options) {\n var group = document.createElementNS(this.svgLink, 'g');\n group = this.setElementAttributes(options, group);\n return group;\n };\n /**\n * To create pattern in SVG\n *\n * @param {PatternAttributes} options - Required options to create pattern in SVG\n * @param {string} element - Specifies the name of the pattern\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createPattern = function (options, element) {\n var pattern = document.createElementNS(this.svgLink, element);\n pattern = this.setElementAttributes(options, pattern);\n return pattern;\n };\n /**\n * To create radial gradient in SVG\n *\n * @param {string[]} colors - Specifies the colors required to create radial gradient\n * @param {string} name - Specifies the name of the gradient\n * @param {RadialGradient} options - value for radial gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createRadialGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'radialGradient',\n 'cx': options.cx + '%',\n 'cy': options.cy + '%',\n 'r': options.r + '%',\n 'fx': options.fx + '%',\n 'fy': options.fy + '%'\n };\n this.drawGradient('radialGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'radialGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To create linear gradient in SVG\n *\n * @param {GradientColor[]} colors - Array of string specifies the values for color\n * @param {string} name - Specifies the name of the gradient\n * @param {LinearGradient} options - Specifies the options for gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createLinearGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'linearGradient',\n 'x1': options.x1 + '%',\n 'y1': options.y1 + '%',\n 'x2': options.x2 + '%',\n 'y2': options.y2 + '%'\n };\n this.drawGradient('linearGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'linearGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To render the gradient element in SVG\n *\n * @param {string} gradientType - Specifies the type of the gradient\n * @param {RadialGradient | LinearGradient} options - Options required to render a gradient\n * @param {string[]} colors - Array of string specifies the values for color\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawGradient = function (gradientType, options, colors) {\n var defs = this.createDefs();\n var gradient = document.createElementNS(this.svgLink, gradientType);\n gradient = this.setElementAttributes(options, gradient);\n for (var i = 0; i < colors.length; i++) {\n var stop_1 = document.createElementNS(this.svgLink, 'stop');\n stop_1.setAttribute('offset', colors[i].colorStop);\n stop_1.setAttribute('stop-color', colors[i].color);\n stop_1.setAttribute('stop-opacity', colors[i].opacity ? (colors[i].opacity) : '1');\n if (!isNullOrUndefined(colors[i].style)) {\n stop_1.setAttribute('style', colors[i].style);\n }\n gradient.appendChild(stop_1);\n }\n defs.appendChild(gradient);\n return defs;\n };\n /**\n * To render a clip path\n *\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Rect';\n var rect = this.drawRectangle(options);\n clipPath.appendChild(rect);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To create circular clip path in SVG\n *\n * @param {CircleAttributes} options - Options required to create circular clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircularClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Circle';\n var circle = this.drawCircle(options);\n clipPath.appendChild(circle);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {Element} element - The element to which the attributes need to be set\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], options[keys[i]]);\n }\n return element;\n };\n /**\n * To create a Html5 canvas element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n SvgRenderer.prototype.createCanvas = function () {\n return null;\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n","/* eslint-disable no-case-declarations */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils.\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n */\nvar CanvasRenderer = /** @class */ (function () {\n /* End-Properties */\n function CanvasRenderer(rootID) {\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n CanvasRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n };\n /* tslint:enable */\n /**\n * To create a Html5 canvas element\n *\n * @param {BaseAttibutes} options - Options to create canvas\n * @returns {HTMLCanvasElement} Creating a canvas\n */\n CanvasRenderer.prototype.createCanvas = function (options) {\n var canvasObj = document.createElement('canvas');\n canvasObj.setAttribute('id', this.rootId + '_canvas');\n this.ctx = canvasObj.getContext('2d');\n this.canvasObj = canvasObj;\n this.setCanvasSize(options.width, options.height);\n return this.canvasObj;\n };\n /**\n * To set the width and height for the Html5 canvas element\n *\n * @param {number} width - width of the canvas\n * @param {number} height - height of the canvas\n * @returns {void} Setting canvas size\n */\n CanvasRenderer.prototype.setCanvasSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width)) {\n this.canvasObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.canvasObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height)) {\n this.canvasObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.canvasObj.setAttribute('height', this.height.toString());\n }\n };\n // To set the values to the attributes\n CanvasRenderer.prototype.setAttributes = function (options) {\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n var dashArray = this.getOptionValue(options, 'stroke-dasharray');\n if (!isNullOrUndefined(dashArray)) {\n var dashArrayString = dashArray.split(',');\n this.ctx.setLineDash([parseInt(dashArrayString[0], 10), parseInt(dashArrayString[1], 10)]);\n }\n this.ctx.strokeStyle = this.getOptionValue(options, 'stroke');\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - required options to draw a line on the canvas\n * @returns {void} To draw a line\n */\n CanvasRenderer.prototype.drawLine = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.moveTo(options.x1, options.y1);\n this.ctx.lineTo(options.x2, options.y2);\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw a rectangle\n *\n * @param {RectAttributes} options - required options to draw a rectangle on the canvas.\n * @param {Int32Array} canvasTranslate TO get a translate value of canvas.\n * @returns {void} To draw rectangle.\n */\n CanvasRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var cornerRadius = options.rx;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = this.getOptionValue(options, 'opacity');\n this.setAttributes(options);\n this.ctx.rect(options.x, options.y, options.width, options.height);\n if (cornerRadius !== null && cornerRadius >= 0) {\n this.drawCornerRadius(options);\n }\n else {\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n this.ctx.fillRect(options.x, options.y, options.width, options.height);\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return (this.canvasObj);\n };\n // To draw the corner of a rectangle\n CanvasRenderer.prototype.drawCornerRadius = function (options) {\n var cornerRadius = options.rx;\n var x = options.x;\n var y = options.y;\n var width = options.width;\n var height = options.height;\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n if (width < 2 * cornerRadius) {\n cornerRadius = width / 2;\n }\n if (height < 2 * cornerRadius) {\n cornerRadius = height / 2;\n }\n this.ctx.beginPath();\n this.ctx.moveTo(x + width - cornerRadius, y);\n this.ctx.arcTo(x + width, y, x + width, y + height, cornerRadius);\n this.ctx.arcTo(x + width, y + height, x, y + height, cornerRadius);\n this.ctx.arcTo(x, y + height, x, y, cornerRadius);\n this.ctx.arcTo(x, y, x + width, y, cornerRadius);\n this.ctx.closePath();\n this.ctx.fill();\n this.ctx.stroke();\n };\n /**\n * To draw a path on the canvas\n *\n * @param {PathAttributes} options - options needed to draw path.\n * @param {Int32Array} canvasTranslate - Array of numbers to translate the canvas.\n * @returns {Element} To draw a path.\n */\n CanvasRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = options.d;\n var dataSplit = path.split(' ');\n var borderWidth = this.getOptionValue(options, 'stroke-width');\n var canvasCtx = this.ctx;\n var flag = true;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = options.opacity ? options.opacity : this.getOptionValue(options, 'fill-opacity');\n this.setAttributes(options);\n for (var i = 0; i < dataSplit.length; i = i + 3) {\n var x1 = parseFloat(dataSplit[i + 1]);\n var y1 = parseFloat(dataSplit[i + 2]);\n switch (dataSplit[i]) {\n case 'M':\n if (!options.innerR && !options.cx) {\n this.ctx.moveTo(x1, y1);\n }\n break;\n case 'L':\n if (!options.innerR) {\n this.ctx.lineTo(x1, y1);\n }\n break;\n case 'Q':\n var q1 = parseFloat(dataSplit[i + 3]);\n var q2 = parseFloat(dataSplit[i + 4]);\n this.ctx.quadraticCurveTo(x1, y1, q1, q2);\n i = i + 2;\n break;\n case 'C':\n var c1 = parseFloat(dataSplit[i + 3]);\n var c2 = parseFloat(dataSplit[i + 4]);\n var c3 = parseFloat(dataSplit[i + 5]);\n var c4 = parseFloat(dataSplit[i + 6]);\n this.ctx.bezierCurveTo(x1, y1, c1, c2, c3, c4);\n i = i + 4;\n break;\n case 'A':\n if (!options.innerR) {\n if (options.cx) {\n this.ctx.arc(options.cx, options.cy, options.radius, 0, 2 * Math.PI, options.counterClockWise);\n }\n else {\n this.ctx.moveTo(options.x, options.y);\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.lineTo(options.x, options.y);\n }\n }\n else if (flag) {\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.arc(options.x, options.y, options.innerR, options.end, options.start, !options.counterClockWise);\n flag = false;\n }\n i = i + 5;\n break;\n case 'z':\n case 'Z':\n this.ctx.closePath();\n //since for loop is incremented by 3, to get next value after 'z' i is decremented for 2.\n i = i - 2;\n break;\n }\n }\n if (options.fill !== 'none' && options.fill !== undefined) {\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n }\n if (borderWidth > 0) {\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - options required to draw text\n * @param {string} label - Specifies the text which has to be drawn on the canvas\n * @param {number} transX - Specifies the text of translate X\n * @param {number} transY - Specifies the text of translate Y\n * @param {number} dy - Specifies the text of translate dy\n * @param {boolean} isTSpan - Specifies the boolean value of span value\n * @returns {void}\n */\n CanvasRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var fontWeight = this.getOptionValue(options, 'font-weight');\n if (!isNullOrUndefined(fontWeight) && fontWeight.toLowerCase() === 'regular') {\n fontWeight = 'normal';\n }\n var fontSize = this.getOptionValue(options, 'font-size');\n var fontFamily = this.getOptionValue(options, 'font-family');\n var fontStyle = this.getOptionValue(options, 'font-style').toLowerCase();\n var font = (fontStyle + ' ' + fontWeight + ' ' + fontSize + ' ' + fontFamily);\n var anchor = this.getOptionValue(options, 'text-anchor');\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n if (anchor === 'middle') {\n anchor = 'center';\n }\n this.ctx.save();\n this.ctx.fillStyle = options.fill;\n this.ctx.font = font;\n this.ctx.textAlign = anchor;\n this.ctx.globalAlpha = opacity;\n if (options.baseline) {\n this.ctx.textBaseline = options.baseline;\n }\n if (!isTSpan) {\n var txtlngth = 0;\n this.ctx.translate(options.x + (txtlngth / 2) + (transX ? transX : 0), options.y + (transY ? transY : 0));\n this.ctx.rotate(options.labelRotation * Math.PI / 180);\n }\n this.ctx.fillText(label, isTSpan ? options.x : 0, isTSpan ? dy : 0);\n this.ctx.restore();\n return this.canvasObj;\n };\n /**\n * To draw circle on the canvas\n *\n * @param {CircleAttributes} options - required options to draw the circle\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawCircle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(options.cx, options.cy, options.r, 0, 2 * Math.PI);\n this.ctx.fillStyle = options.fill;\n this.ctx.globalAlpha = options.opacity;\n this.ctx.fill();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.setAttributes(options);\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw polyline\n *\n * @param {PolylineAttributes} options - options needed to draw polyline\n * @returns {void}\n */\n CanvasRenderer.prototype.drawPolyline = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n var points = options.points.split(' ');\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i].split(',');\n var x = parseFloat(point[0]);\n var y = parseFloat(point[1]);\n if (i === 0) {\n this.ctx.moveTo(x, y);\n }\n else {\n this.ctx.lineTo(x, y);\n }\n }\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw an ellipse on the canvas\n *\n * @param {EllipseAttributes} options - options needed to draw ellipse\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawEllipse = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var circumference = Math.max(options.rx, options.ry);\n var scaleX = options.rx / circumference;\n var scaleY = options.ry / circumference;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.translate(options.cx, options.cy);\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.save();\n this.ctx.scale(scaleX, scaleY);\n this.ctx.arc(0, 0, circumference, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n this.ctx.restore();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - options required to draw an image on the canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawImage = function (options) {\n this.ctx.save();\n var imageObj = new Image();\n if (!isNullOrUndefined(options.href)) {\n imageObj.src = options.href;\n this.ctx.drawImage(imageObj, options.x, options.y, options.width, options.height);\n }\n this.ctx.restore();\n };\n /**\n * To create a linear gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns color\n */\n CanvasRenderer.prototype.createLinearGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createLinearGradient(0, 0, 0, this.canvasObj.height);\n }\n var color = this.setGradientValues(colors, myGradient);\n return color;\n };\n /**\n * To create a radial gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns gradient color\n */\n CanvasRenderer.prototype.createRadialGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createRadialGradient(0, 0, 0, 0, 0, this.canvasObj.height);\n }\n var colorName = this.setGradientValues(colors, myGradient);\n return colorName;\n };\n // To set the gradient values\n CanvasRenderer.prototype.setGradientValues = function (colors, myGradient) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n for (var i = 0; i <= colors.length - 1; i++) {\n var color = colors[i].color;\n var newColorStop = (colors[i].colorStop).slice(0, -1);\n var stopColor = parseInt(newColorStop, 10) / 100;\n myGradient.addColorStop(stopColor, color);\n }\n colorName = myGradient.toString();\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {HTMLElement} element - The element to which the attributes need to be set\n * @returns {HTMLElement} It returns null value\n */\n CanvasRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n var values = Object.keys(options).map(function (key) { return options[key]; });\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], values[i]);\n }\n return null;\n };\n /**\n * To update the values of the canvas element attributes\n *\n * @param {SVGCanvasAttributes} options - Specifies the colors required to create gradient\n * @returns {void}\n */\n CanvasRenderer.prototype.updateCanvasAttributes = function (options) {\n this.setElementAttributes(options, this.canvasObj);\n var ctx = this.ctx;\n if (!isNullOrUndefined(this.dataUrl)) {\n var img_1 = new Image;\n img_1.onload = function () {\n ctx.drawImage(img_1, 0, 0);\n };\n img_1.src = this.dataUrl;\n }\n };\n /**\n * This method clears the given rectangle region\n *\n * @param {Rect} rect The rect parameter as passed\n */\n CanvasRenderer.prototype.clearRect = function (rect) {\n this.ctx.restore();\n this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);\n };\n /**\n * For canvas rendering in chart\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createGroup = function () {\n return null;\n };\n /**\n * To render a clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawClipPath = function () {\n return null;\n };\n /**\n * Clip method to perform clip in canvas mode\n *\n * @param {BaseAttibutes} options The canvas clip of options\n */\n CanvasRenderer.prototype.canvasClip = function (options) {\n this.ctx.save();\n this.ctx.fillStyle = 'transparent';\n this.ctx.rect(options.x, options.y, options.width, options.height);\n this.ctx.fill();\n this.ctx.clip();\n };\n /**\n * Tp restore the canvas\n */\n CanvasRenderer.prototype.canvasRestore = function () {\n this.ctx.restore();\n };\n /**\n * To draw a polygon\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawPolygon = function () {\n return null;\n };\n /**\n * To create defs element in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createDefs = function () {\n return null;\n };\n /**\n * To create clip path in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createClipPath = function () {\n return null;\n };\n /**\n * To create a Html5 SVG element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createSvg = function () {\n return null;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SvgRenderer } from '../svg-render/index';\nimport { createElement, remove, merge } from '@syncfusion/ej2-base';\n/**\n * Function to measure the height and width of the text.\n *\n * @private\n * @param {string} text To get a text\n * @param {FontModel} font To get a font of the text\n * @returns {Size} measureText\n */\nexport function measureText(text, font) {\n var breakText = text || ''; // For avoid NuLL value\n var htmlObject = document.getElementById('chartmeasuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'chartmeasuretext' });\n document.body.appendChild(htmlObject);\n }\n if (typeof (text) === 'string' && (text.indexOf('<') > -1 || text.indexOf('>') > -1)) {\n var textArray = text.split(' ');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].indexOf('
') === -1) {\n textArray[i] = textArray[i].replace(/[<>]/g, '&');\n }\n }\n text = textArray.join(' ');\n }\n htmlObject.innerHTML = (breakText.indexOf('
') > -1 || breakText.indexOf('
') > -1) ? breakText : text;\n htmlObject.style.position = 'fixed';\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.visibility = 'hidden';\n htmlObject.style.top = '-100';\n htmlObject.style.left = '0';\n htmlObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n htmlObject.style.lineHeight = 'normal';\n return new Size(htmlObject.clientWidth, htmlObject.clientHeight);\n}\n/** @private */\nexport function findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, tipRadius) {\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n tipRadius = tipRadius ? tipRadius : 0;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY + ' ' +\n ' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + tipRadius) + ' ' + (height + arrowPadding - tipRadius));\n direction += ' Q' + ' ' + (tipX) + ' ' + (height + arrowPadding) + ' ' + (tipX - tipRadius) +\n ' ' + (height + arrowPadding - tipRadius);\n }\n if ((arrowLocation.x - arrowPadding / 2) > startX) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + height +\n ' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX - tipRadius) + ' ' + (arrowLocation.y + tipRadius));\n direction += ' Q' + ' ' + (tipX) + ' ' + (arrowLocation.y) + ' ' + (tipX + tipRadius) + ' ' + (arrowLocation.y + tipRadius);\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (startY) + ' L' + ' '\n + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height) +\n ' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + (startY + rY) + ' L' + ' ' + (width) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width + arrowPadding - tipRadius) + ' ' + (tipY - tipRadius));\n direction += ' Q ' + (width + arrowPadding) + ' ' + (tipY) + ' ' + (width + arrowPadding - tipRadius) + ' ' + (tipY + tipRadius);\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding / 2) +\n ' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + (startY + rY) + ' L' + ' ' + (startX) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX - arrowPadding + tipRadius) + ' ' + (tipY - tipRadius));\n direction += ' Q ' + (startX - arrowPadding) + ' ' + (tipY) + ' ' + (startX - arrowPadding + tipRadius) + ' ' + (tipY + tipRadius);\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding / 2) +\n ' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY) +\n ' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n/** @private */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\nvar Side = /** @class */ (function () {\n function Side(bottom, right) {\n this.isRight = right;\n this.isBottom = bottom;\n }\n return Side;\n}());\nexport { Side };\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine, labelRotation) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.labelRotation = 0;\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n _this.labelRotation = labelRotation;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var renderer = new SvgRenderer('');\n var temp = calculateShapes(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n htmlObject.setAttribute('aria-label', label);\n return htmlObject;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url) {\n var path;\n var functionName = 'Path';\n var width = size.width;\n var height = size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Cross':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n path = 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + (locX - (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Pentagon':\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n path = 'M' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ';\n }\n else {\n path = path.concat('L' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ');\n }\n }\n path = path.concat('Z');\n merge(options, { 'd': path });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nexport function textElement(options, font, color, parent) {\n var renderOptions = {};\n var renderer = new SvgRenderer('');\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine\n };\n var text = typeof options.text === 'string' ? options.text : options.text[0];\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.color = font.color;\n parent.appendChild(htmlObject);\n return htmlObject;\n}\nvar TooltipLocation = /** @class */ (function () {\n function TooltipLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return TooltipLocation;\n}());\nexport { TooltipLocation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\nimport { NotifyPropertyChanges, Property, Event, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { extend, compile as templateComplier, Component, resetBlazorTemplate, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '../svg-render/index';\nimport { ChildProperty, createElement, remove, Browser, Animation } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption } from './helper';\n/**\n * Configures the fonts in charts.\n *\n * @private\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Segoe UI')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], TextStyle.prototype, \"opacity\", void 0);\n return TextStyle;\n}(ChildProperty));\nexport { TextStyle };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar TooltipBorder = /** @class */ (function (_super) {\n __extends(TooltipBorder, _super);\n function TooltipBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], TooltipBorder.prototype, \"width\", void 0);\n return TooltipBorder;\n}(ChildProperty));\nexport { TooltipBorder };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar AreaBounds = /** @class */ (function (_super) {\n __extends(AreaBounds, _super);\n function AreaBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"height\", void 0);\n return AreaBounds;\n}(ChildProperty));\nexport { AreaBounds };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar ToolLocation = /** @class */ (function (_super) {\n __extends(ToolLocation, _super);\n function ToolLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"y\", void 0);\n return ToolLocation;\n}(ChildProperty));\nexport { ToolLocation };\n/**\n * Represents the Tooltip control.\n * ```html\n *
\n * \n * ```\n *\n * @private\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Tooltip(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.allowServerDataBinding = false;\n this.initPrivateVariable();\n if (!this.isCanvas) {\n this.removeSVG();\n }\n this.createTooltipElement();\n };\n Tooltip.prototype.initPrivateVariable = function () {\n this.renderer = new SvgRenderer(this.element.id);\n this.themeStyle = getTooltipThemeColor(this.theme);\n this.formattedText = [];\n this.padding = 5;\n this.isFirst = true;\n this.markerPoint = [];\n };\n Tooltip.prototype.removeSVG = function () {\n var svgObject = document.getElementById(this.element.id + '_svg');\n var templateObject = document.getElementById(this.element.id + 'parent_template');\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n if (svgObject && svgObject.parentNode) {\n remove(svgObject);\n }\n if (templateObject && templateObject.parentNode) {\n remove(templateObject);\n }\n };\n /**\n * To Initialize the control rendering.\n */\n Tooltip.prototype.render = function () {\n this.fadeOuted = false;\n if (!this.template) {\n this.renderText(this.isFirst);\n var argsData = {\n cancel: false, name: 'tooltipRender', tooltip: this\n };\n this.trigger('tooltipRender', argsData);\n var markerSide = this.renderTooltipElement(this.areaBounds, this.location);\n this.drawMarker(markerSide.isBottom, markerSide.isRight, this.markerSize);\n }\n else {\n this.updateTemplateFn();\n this.createTemplate(this.areaBounds, this.location);\n }\n this.trigger('loaded', { tooltip: this });\n var element = document.getElementById('chartmeasuretext');\n if (element) {\n remove(element);\n }\n this.allowServerDataBinding = true;\n };\n Tooltip.prototype.createTooltipElement = function () {\n this.textElements = [];\n if (!this.template || this.shared) {\n // SVG element for tooltip\n var svgObject = this.renderer.createSvg({ id: this.element.id + '_svg' });\n this.element.appendChild(svgObject);\n // Group to hold text and path.\n var groupElement = document.getElementById(this.element.id + '_group');\n if (!groupElement) {\n groupElement = this.renderer.createGroup({ id: this.element.id + '_group' });\n groupElement.setAttribute('transform', 'translate(0,0)');\n }\n svgObject.appendChild(groupElement);\n var pathElement = this.renderer.drawPath({\n 'id': this.element.id + '_path', 'stroke-width': this.theme === 'Bootstrap4' ? 0 : this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': this.theme === 'Bootstrap4' ? 0.9 : this.opacity,\n 'stroke': this.border.color\n });\n groupElement.appendChild(pathElement);\n }\n };\n Tooltip.prototype.drawMarker = function (isBottom, isRight, size) {\n if (this.shapes.length <= 0) {\n return null;\n }\n var shapeOption;\n var count = 0;\n var markerGroup = this.renderer.createGroup({ id: this.element.id + '_trackball_group' });\n var groupElement = getElement(this.element.id + '_group');\n var x = (this.marginX * 2) + (size / 2) + (isRight ? this.arrowPadding : 0);\n for (var _i = 0, _a = this.shapes; _i < _a.length; _i++) {\n var shape = _a[_i];\n if (shape !== 'None') {\n shapeOption = new PathOption(this.element.id + '_Trackball_' + count, this.palette[count], 1, '#cccccc', 1, null);\n if (this.markerPoint[count]) {\n markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : 0)), shape, new Size(size, size), '', shapeOption, null));\n }\n count++;\n }\n }\n groupElement.appendChild(markerGroup);\n };\n Tooltip.prototype.renderTooltipElement = function (areaBounds, location) {\n var tooltipDiv = getElement(this.element.id);\n var arrowLocation = new TooltipLocation(0, 0);\n var tipLocation = new TooltipLocation(0, 0);\n var svgObject = getElement(this.element.id + '_svg');\n var groupElement = getElement(this.element.id + '_group');\n var pathElement = getElement(this.element.id + '_path');\n var rect;\n var isTop = false;\n var isLeft = false;\n var isBottom = false;\n var x = 0;\n var y = 0;\n this.tipRadius = 1;\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n if (this.content.length > 1) {\n rect = this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y);\n isTop = true;\n }\n else {\n rect = this.tooltipLocation(areaBounds, location, arrowLocation, tipLocation);\n if (!this.inverted) {\n isTop = (rect.y < (location.y + this.clipBounds.y));\n isBottom = !isTop;\n y = (isTop ? 0 : this.arrowPadding);\n }\n else {\n isLeft = (rect.x < (location.x + this.clipBounds.x));\n x = (isLeft ? 0 : this.arrowPadding);\n }\n }\n if (this.header !== '') {\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, this.textStyle).height +\n (this.marginY * 2) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : 0); //header padding;\n var xLength = (this.marginX * 3) + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0);\n var direction = 'M ' + xLength + ' ' + headerSize +\n 'L ' + (rect.width + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0) - (this.marginX * 2)) +\n ' ' + headerSize;\n var pathElement_1 = this.renderer.drawPath({\n 'id': this.element.id + '_header_path', 'stroke-width': 1,\n 'fill': null, 'opacity': 0.8, 'stroke': this.themeStyle.tooltipHeaderLine, 'd': direction\n });\n groupElement.appendChild(pathElement_1);\n }\n var start = this.border.width / 2;\n var pointRect = new Rect(start + x, start + y, rect.width - start, rect.height - start);\n groupElement.setAttribute('opacity', '1');\n if (this.enableAnimation && !this.shared && !this.isFirst) {\n this.animateTooltipDiv(tooltipDiv, rect);\n }\n else {\n this.updateDiv(tooltipDiv, rect.x, rect.y);\n }\n // eslint-disable-next-line no-extra-boolean-cast\n svgObject.setAttribute('height', (rect.height + this.border.width + (!((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('width', (rect.width + this.border.width + (((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('opacity', '1');\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n isTop = this.tooltipPlacement.indexOf('Top') > -1;\n isBottom = this.tooltipPlacement.indexOf('Bottom') > -1;\n isLeft = this.tooltipPlacement.indexOf('Left') > -1;\n }\n pathElement.setAttribute('d', findDirection(this.rx, this.ry, pointRect, arrowLocation, this.arrowPadding, isTop, isBottom, isLeft, tipLocation.x, tipLocation.y, this.tipRadius));\n if (this.enableShadow && this.theme !== 'Bootstrap4') {\n // To fix next chart initial tooltip opacity issue in tab control\n var shadowId = this.element.id + '_shadow';\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n var shadow = '';\n shadow += '';\n shadow += '';\n var defElement = this.renderer.createDefs();\n defElement.setAttribute('id', this.element.id + 'SVG_tooltip_definition');\n groupElement.appendChild(defElement);\n defElement.innerHTML = shadow;\n }\n pathElement.setAttribute('stroke', this.border.color);\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom);\n return new Side(isBottom, !isLeft && !isTop && !isBottom);\n };\n Tooltip.prototype.changeText = function (point, isBottom, isRight) {\n var element = document.getElementById(this.element.id + '_text');\n if (isBottom) {\n element.setAttribute('transform', 'translate(0,' + this.arrowPadding + ')');\n }\n if (isRight) {\n element.setAttribute('transform', 'translate(' + this.arrowPadding + ' 0)');\n }\n };\n Tooltip.prototype.findFormattedText = function () {\n this.formattedText = [];\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n this.formattedText = this.formattedText.concat(this.header);\n }\n this.formattedText = this.formattedText.concat(this.content);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.renderText = function (isRender) {\n var height = 0;\n var width = 0; // Padding for text;\n var subWidth = 0;\n var lines;\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var groupElement = getElement(this.element.id + '_group');\n var tspanElement;\n var textCollection;\n var tspanStyle = '';\n var line;\n var tspanOption;\n this.findFormattedText();\n var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled ? 'end' : 'start';\n this.leftSpace = this.areaBounds.x + this.location.x;\n this.rightSpace = (this.areaBounds.x + this.areaBounds.width) - this.leftSpace;\n var headerContent = this.header.replace(//g, '').replace(/<\\/b>/g, '').trim();\n var isBoldTag = this.header.indexOf('') > -1 && this.header.indexOf('') > -1;\n var headerWidth = measureText(this.formattedText[0], font).width + (2 * this.marginX) + this.arrowPadding;\n var isLeftSpace = (this.location.x - headerWidth) < this.location.x;\n var isRightSpace = (this.areaBounds.x + this.areaBounds.width) < (this.location.x + headerWidth);\n var header;\n var headerSpace = (headerContent !== '') ? this.marginY : 0;\n var isRow = true;\n var isColumn = true;\n this.markerPoint = [];\n var markerSize = (this.shapes.length > 0) ? 10 : 0;\n var markerPadding = (this.shapes.length > 0) ? 5 : 0;\n var spaceWidth = 4;\n var subStringLength;\n var fontSize = '13px';\n var fontWeight = 'Normal';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size));\n if (!isRender || this.isCanvas) {\n removeElement(this.element.id + '_text');\n removeElement(this.element.id + '_header_path');\n removeElement(this.element.id + '_trackball_group');\n removeElement(this.element.id + 'SVG_tooltip_definition');\n }\n var options = new TextOption(this.element.id + '_text', this.marginX * 2, (this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, null, groupElement);\n var withoutHeader = this.formattedText.length === 1 && this.formattedText[0].indexOf(' : ') > -1;\n var isHeader = this.header !== '';\n var size = isHeader && isBoldTag ? 16 : 13;\n for (var k = 0, pointsLength = this.formattedText.length; k < pointsLength; k++) {\n textCollection = this.formattedText[k].replace(/<(b|strong)>/g, '')\n .replace(/<\\/(b|strong)>/g, '')\n .split(//g);\n if (k === 0 && !withoutHeader && this.isTextWrap &&\n (this.leftSpace < headerWidth || isLeftSpace) &&\n (this.rightSpace < headerWidth || isRightSpace)) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n header = headerContent !== '' ? headerContent : this.formattedText[k];\n textCollection = header.match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n this.wrappedText = isBoldTag ? '' + textCollection.join('
') + '
' : textCollection.join('
');\n this.isWrap = textCollection.length > 1;\n }\n if (textCollection[0] === '') {\n continue;\n }\n if ((k !== 0) || (headerContent === '')) {\n this.markerPoint.push((headerContent !== '' ? (this.marginY) : 0) + options.y + height);\n }\n for (var i = 0, len = textCollection.length; i < len; i++) { // string value of unicode for LTR is \\u200E\n lines = textCollection[i].replace(//g, '
').replace(/<\\/b>/g, '
').replace(/:/g, '
\\u200E:
')\n .split('
');\n subWidth = 0;\n isColumn = true;\n height += dy;\n for (var j = 0, len_1 = lines.length; j < len_1; j++) {\n line = lines[j];\n if (!/\\S/.test(line) && line !== '') {\n line = ' '; //to trim multiple white spaces to single white space\n }\n if ((!isColumn && line === ' ') || (line.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '')) {\n subWidth += line !== ' ' ? spaceWidth : 0;\n if (isColumn && !isRow) {\n tspanOption = {\n x: (this.marginX * 2) + (markerSize + markerPadding),\n dy: dy + ((isColumn) ? headerSpace : 0), fill: ''\n };\n headerSpace = null;\n }\n else {\n if (isRow && isColumn) {\n tspanOption = {\n x: (headerContent === '') ? ((this.marginX * 2) + (markerSize + markerPadding))\n : (this.marginX * 2) + (this.isWrap ? (markerSize + markerPadding) : 0)\n };\n }\n else {\n tspanOption = {};\n }\n }\n isColumn = false;\n tspanElement = this.renderer.createTSpan(tspanOption, '');\n parentElement.appendChild(tspanElement);\n if (line.indexOf('') > -1 || ((isBoldTag && j === 0 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'bold';\n labelColor = this.themeStyle.tooltipBoldLabel;\n tspanStyle = 'font-weight:' + fontWeight;\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n else {\n tspanStyle = fontWeight === 'bold' ? 'font-weight:' + fontWeight : '';\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n if (line.indexOf('') > -1 || ((isBoldTag && j === len_1 - 1 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'Normal';\n labelColor = this.themeStyle.tooltipLightLabel;\n }\n // eslint-disable-next-line no-useless-escape\n (tspanElement).textContent = line = this.getTextContent(line);\n subWidth += measureText(line, font).width;\n if (tspanStyle !== '') {\n tspanElement.style.fontWeight = tspanStyle.split('font-weight:')[1];\n tspanElement.style.color = tspanElement.getAttribute('fill');\n }\n // 'inherit' will apply css style from parent element.\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = 'inherit';\n isRow = false;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, subWidth);\n }\n }\n this.elementSize = new Size(width + (width > 0 ? (2 * this.marginX) : 0), height);\n this.elementSize.width += (markerSize + markerPadding); // marker size + marker Spacing\n var element = (parentElement.childNodes[0]);\n if (headerContent !== '' && element && !this.isWrap) {\n font.fontWeight = 'bold';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font).width / 2;\n element.setAttribute('x', width_1.toString());\n }\n };\n Tooltip.prototype.getTextContent = function (text) {\n var texts = text.match(/<[a-zA-Z\\/](.|\\n)*?>/g);\n if (isNullOrUndefined(texts)) {\n return text;\n }\n var isRtlText = /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(text);\n for (var i = 0; i < texts.length; i++) {\n if (this.isValidHTMLElement(texts[i].replace('<', '').replace('/', '').replace('>', '').trim())) {\n text = text.replace(texts[i], isRtlText ? '\\u200E' : '');\n }\n }\n return text;\n };\n Tooltip.prototype.isValidHTMLElement = function (element) {\n return document.createElement(element).toString() != \"[object HTMLUnknownElement]\";\n };\n Tooltip.prototype.createTemplate = function (areaBounds, location) {\n var argsData = { cancel: false, name: 'tooltipRender', tooltip: this };\n this.trigger('tooltipRender', argsData);\n var parent = document.getElementById(this.element.id);\n if (this.isCanvas) {\n this.removeSVG();\n }\n var firstElement = parent.firstElementChild;\n if (firstElement) {\n remove(firstElement);\n }\n if (!argsData.cancel) {\n var elem = createElement('div', { id: this.element.id + 'parent_template' });\n var templateElement = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n while (templateElement && templateElement.length > 0) {\n if (isBlazor() || templateElement.length === 1) {\n elem.appendChild(templateElement[0]);\n templateElement = null;\n }\n else {\n elem.appendChild(templateElement[0]);\n }\n }\n parent.appendChild(elem);\n var element = this.isCanvas ? elem : this.element;\n var rect = element.getBoundingClientRect();\n this.padding = 0;\n this.elementSize = new Size(rect.width, rect.height);\n var tooltipRect = this.shared ? this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y)\n : this.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n if (this.enableAnimation && !this.shared && !this.isFirst) {\n this.animateTooltipDiv(this.element, tooltipRect);\n }\n else {\n this.updateDiv(element, tooltipRect.x, tooltipRect.y);\n }\n if (this.blazorTemplate) {\n //Customer issue - F149037 Call back function to handle the blazor tooltip alignment issues\n var tooltipRendered = function () {\n var rect1 = getElement(thisObject_1.element.id).getBoundingClientRect();\n thisObject_1.elementSize = new Size(rect1.width, rect1.height);\n var tooltipRect1 = thisObject_1.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n thisObject_1.updateDiv(getElement(thisObject_1.element.id), tooltipRect1.x, tooltipRect1.y);\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisObject_1 = this;\n tooltipRendered.bind(thisObject_1, areaBounds, location);\n updateBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate', this.blazorTemplate.name, this.blazorTemplate.parent, undefined, tooltipRendered);\n }\n }\n else {\n remove(getElement(this.element.id + '_tooltip'));\n }\n };\n Tooltip.prototype.sharedTooltipLocation = function (bounds, x, y) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var tooltipRect = new Rect(x + 2 * this.padding, y - height - this.padding, width, height);\n var tooltipDivEndValue = tooltipRect.y + tooltipRect.height;\n var boundsEndValue = bounds.y + bounds.height;\n var isStockChart = false;\n var heightDifference;\n if (this.controlInstance) {\n var containerDivID = this.controlInstance[\"element\"][\"id\"];\n isStockChart = containerDivID.indexOf(\"stockChart\") !== -1;\n }\n // To check whether the tooltip crop at bottom\n if (boundsEndValue < tooltipDivEndValue) {\n heightDifference = tooltipDivEndValue - boundsEndValue;\n tooltipRect.y -= (heightDifference + 2 * this.padding);\n }\n // To check whether the tooltip crop at top\n if (tooltipRect.y < bounds.y) {\n heightDifference = bounds.y - tooltipRect.y;\n tooltipRect.y += isStockChart ? (tooltipRect.height + 2 * this.padding) : (heightDifference + 2 * this.padding);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x -= (tooltipRect.width + 4 * this.padding);\n }\n return tooltipRect;\n };\n Tooltip.prototype.getCurrentPosition = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n var position = this.tooltipPlacement;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var markerHeight = this.offset;\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n if (position === 'Top' || position === 'Bottom') {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (position === 'Bottom') {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (bounds.x + bounds.width < location.x + width) {\n location.x = (bounds.width > width) ? ((bounds.x + bounds.width) - width + 6) : bounds.x;\n arrowLocation.x = tipLocation.x = (bounds.width > width) ? (bounds.x + symbolLocation.x - location.x) : symbolLocation.x;\n }\n else if (bounds.x > location.x) {\n location.x = bounds.x;\n arrowLocation.x = tipLocation.x = symbolLocation.x;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if (position === 'Left') {\n location.x = symbolLocation.x + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (bounds.y + bounds.height < location.y + height) {\n location.y = (bounds.height > height) ? ((bounds.y + bounds.height) - height + 6) : bounds.y;\n arrowLocation.y = tipLocation.y = (bounds.height > height) ? (bounds.y + symbolLocation.y - location.y) : symbolLocation.y;\n }\n else if (bounds.y > location.y) {\n location.y = bounds.y;\n arrowLocation.y = tipLocation.y = symbolLocation.y;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.tooltipLocation = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n var tooltipRect = this.getCurrentPosition(bounds, symbolLocation, arrowLocation, tipLocation);\n return tooltipRect;\n }\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var markerHeight = this.offset;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n if (!this.inverted) {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (location.y < boundsY || (this.isNegative)) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n if (location.y + height + this.arrowPadding > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > boundsX + bounds.width) {\n arrowLocation.x += ((location.x + width) - (boundsX + bounds.width));\n tipLocation.x += ((location.x + width) - (boundsX + bounds.width));\n location.x -= ((location.x + width) - (boundsX + bounds.width));\n }\n if (arrowLocation.x + this.arrowPadding / 2 > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding / 2;\n tipLocation.x = width;\n this.tipRadius = 0;\n }\n if (arrowLocation.x - this.arrowPadding / 2 < this.rx) {\n arrowLocation.x = this.rx + this.arrowPadding / 2;\n tipLocation.x = 0;\n this.tipRadius = 0;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + clipX + markerHeight;\n }\n if (location.y <= boundsY) {\n arrowLocation.y -= (boundsY - location.y);\n tipLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= boundsY + bounds.height) {\n arrowLocation.y += ((location.y + height) - (boundsY + bounds.height));\n tipLocation.y += ((location.y + height) - (boundsY + bounds.height));\n location.y -= ((location.y + height) - (boundsY + bounds.height));\n }\n if (arrowLocation.y + this.arrowPadding / 2 > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding / 2;\n tipLocation.y = height;\n this.tipRadius = 0;\n }\n if (arrowLocation.y - this.arrowPadding / 2 < this.ry) {\n arrowLocation.y = this.ry + this.arrowPadding / 2;\n tipLocation.y = 0;\n this.tipRadius = 0;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n Tooltip.prototype.animateTooltipDiv = function (tooltipDiv, rect) {\n var _this = this;\n var x = parseFloat(tooltipDiv.style.left);\n var y = parseFloat(tooltipDiv.style.top);\n var currenDiff;\n new Animation({}).animate(tooltipDiv, {\n duration: this.duration,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\n },\n end: function (model) {\n _this.updateDiv(tooltipDiv, rect.x, rect.y);\n _this.trigger('animationComplete', { tooltip: _this });\n }\n });\n };\n Tooltip.prototype.updateDiv = function (tooltipDiv, x, y) {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\n }\n }\n catch (e) {\n this.templateFn = templateComplier(this.template);\n }\n }\n };\n /** @private */\n Tooltip.prototype.fadeOut = function () {\n var _this = this;\n var tooltipElement = (this.isCanvas && !this.template) ? getElement(this.element.id + '_svg') :\n getElement(this.element.id);\n if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\n if (this.isCanvas && !this.template) {\n tooltipGroup_1 = document.getElementById(this.element.id + '_group') ? document.getElementById(this.element.id + '_group') :\n tooltipGroup_1;\n }\n if (!tooltipGroup_1) {\n return null;\n }\n var opacity_1 = parseFloat(tooltipGroup_1.getAttribute('opacity')) || 1;\n new Animation({}).animate(tooltipGroup_1, {\n duration: 200,\n progress: function (args) {\n // tooltipGroup.removeAttribute('e-animate');\n _this.progressAnimation(tooltipGroup_1, opacity_1, (args.timeStamp / args.duration));\n },\n end: function () {\n _this.fadeOuted = true;\n _this.endAnimation(tooltipGroup_1);\n }\n });\n }\n };\n Tooltip.prototype.progressAnimation = function (tooltipGroup, opacity, timeStamp) {\n tooltipGroup.style.animation = '';\n tooltipGroup.setAttribute('opacity', (opacity - timeStamp).toString());\n };\n /*\n * @hidden\n */\n Tooltip.prototype.endAnimation = function (tooltipGroup) {\n tooltipGroup.setAttribute('opacity', '0');\n if (this.template) {\n tooltipGroup.style.display = 'none';\n }\n this.trigger('animationComplete', { tooltip: this });\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n var keyEntity = [];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name\n *\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-tooltip');\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n this.isFirst = false;\n this.render();\n };\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"shared\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableShadow\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"fill\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], Tooltip.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ size: '13px', fontWeight: 'Normal', color: null, fontStyle: 'Normal', fontFamily: 'Segoe UI' }, TextStyle)\n ], Tooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], Tooltip.prototype, \"duration\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"inverted\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isNegative\", void 0);\n __decorate([\n Complex({ color: '#cccccc', width: 0.5 }, TooltipBorder)\n ], Tooltip.prototype, \"border\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property(10)\n ], Tooltip.prototype, \"markerSize\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"clipBounds\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"palette\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"shapes\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"location\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offset\", void 0);\n __decorate([\n Property(2)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(2)\n ], Tooltip.prototype, \"ry\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginX\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginY\", void 0);\n __decorate([\n Property(12)\n ], Tooltip.prototype, \"arrowPadding\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"data\", void 0);\n __decorate([\n Property('Material')\n ], Tooltip.prototype, \"theme\", void 0);\n __decorate([\n Complex({ x: 0, y: 0, width: 0, height: 0 }, AreaBounds)\n ], Tooltip.prototype, \"areaBounds\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"availableSize\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"blazorTemplate\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isCanvas\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isTextWrap\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"animationComplete\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/** @private */\nexport function getTooltipThemeColor(theme) {\n var style;\n switch (theme) {\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696'\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A'\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: 'rgba(0, 0, 0, 0.9)',\n tooltipBoldLabel: 'rgba(255, 255, 255)',\n tooltipLightLabel: 'rgba(255, 255, 255, 0.9)',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)'\n };\n break;\n default:\n style = {\n tooltipFill: 'rgba(0, 8, 22, 0.75)',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff'\n };\n break;\n }\n return style;\n}\n","/* eslint-disable jsdoc/require-returns */\n/**\n * Numeric Range.\n *\n * @private\n */\nvar DoubleRange = /** @class */ (function () {\n function DoubleRange(start, end) {\n /*\n if (!isNaN(start) && !isNaN(end)) {\n this.mIsEmpty = true;\n } else {\n this.mIsEmpty = false;\n }*/\n if (start < end) {\n this.mStart = start;\n this.mEnd = end;\n }\n else {\n this.mStart = end;\n this.mEnd = start;\n }\n }\n Object.defineProperty(DoubleRange.prototype, \"start\", {\n //private mIsEmpty: boolean;\n /** @private */\n get: function () {\n return this.mStart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"end\", {\n /** @private */\n get: function () {\n return this.mEnd;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"delta\", {\n /*\n get isEmpty(): boolean {\n return this.mIsEmpty;\n }*/\n /** @private */\n get: function () {\n return (this.mEnd - this.mStart);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"median\", {\n /** @private */\n get: function () {\n return this.mStart + (this.mEnd - this.mStart) / 2;\n },\n enumerable: true,\n configurable: true\n });\n return DoubleRange;\n}());\nexport { DoubleRange };\n","import { getMinPointsDelta, getActualDesiredIntervalsCount, setRange, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn, logBase } from '../../common/utils/helper';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\n/**\n * Numeric module is used to render numeric axis.\n */\nvar Double = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function Double(chart) {\n this.isColumn = 0;\n this.chart = chart;\n }\n /**\n * Numeric Nice Interval for the axis.\n *\n * @private\n */\n Double.prototype.calculateNumericNiceInterval = function (axis, delta, size) {\n var actualDesiredIntervalsCount = getActualDesiredIntervalsCount(size, axis);\n var niceInterval = delta / actualDesiredIntervalsCount;\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n return niceInterval;\n }\n var minInterval = Math.pow(10, Math.floor(logBase(niceInterval, 10)));\n for (var _i = 0, _a = axis.intervalDivs; _i < _a.length; _i++) {\n var interval = _a[_i];\n var currentInterval = minInterval * interval;\n if (actualDesiredIntervalsCount < (delta / currentInterval)) {\n break;\n }\n niceInterval = currentInterval;\n }\n return niceInterval;\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Double.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n if ((!axis.startFromZero) && (this.isColumn > 0)) {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.max = axis.doubleRange.end + axis.actualRange.interval;\n if ((axis.doubleRange.start - axis.actualRange.interval < 0 && axis.doubleRange.start > 0)) {\n axis.actualRange.min = 0;\n }\n else {\n axis.actualRange.min = axis.doubleRange.start - axis.actualRange.interval;\n }\n }\n else {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n }\n };\n /**\n * Range for the axis.\n *\n * @private\n */\n Double.prototype.initializeDoubleRange = function (axis) {\n //Axis Min\n if (axis.minimum !== null) {\n this.min = axis.minimum;\n }\n else if (this.min === null || this.min === Number.POSITIVE_INFINITY) {\n this.min = 0;\n }\n // Axis Max\n if (axis.maximum !== null) {\n this.max = axis.maximum;\n }\n else if (this.max === null || this.max === Number.NEGATIVE_INFINITY) {\n this.max = 5;\n }\n if (this.min === this.max) {\n this.max = axis.valueType.indexOf('Category') > -1 ? this.max : this.min + 1;\n }\n axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n };\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n * @private\n */\n Double.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis, this.chart);\n };\n /**\n * Calculate Range for the axis.\n *\n * @private\n */\n Double.prototype.calculateRange = function (axis) {\n /*! Generate axis range */\n this.min = null;\n this.max = null;\n if (!setRange(axis)) {\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible) {\n continue;\n }\n this.paddingInterval = 0;\n axis.maxPointLength = series.points.length;\n if (((series.type.indexOf('Column') > -1 || series.type.indexOf('Histogram') > -1) && axis.orientation === 'Horizontal')\n || (series.type.indexOf('Bar') > -1 && axis.orientation === 'Vertical')) {\n if ((series.xAxis.valueType === 'Double' || series.xAxis.valueType === 'DateTime')\n && series.xAxis.rangePadding === 'Auto') {\n this.paddingInterval = getMinPointsDelta(series.xAxis, axis.series) * 0.5;\n }\n }\n //For xRange\n if (axis.orientation === 'Horizontal') {\n if (this.chart.requireInvertedAxis) {\n this.yAxisRange(axis, series);\n }\n else {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n }\n // For yRange\n if (axis.orientation === 'Vertical') {\n this.isColumn += (series.type === 'Column' || series.type === 'Bar' || series.drawType === 'Column') ? 1 : 0;\n if (this.chart.requireInvertedAxis) {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n else {\n this.yAxisRange(axis, series);\n }\n }\n }\n }\n };\n Double.prototype.yAxisRange = function (axis, series) {\n if (series.dragSettings.enable && this.chart.dragY) {\n if (this.chart.dragY >= axis.visibleRange.max) {\n series.yMax = this.chart.dragY + axis.visibleRange.interval;\n }\n if (this.chart.dragY <= axis.visibleRange.min) {\n series.yMin = this.chart.dragY - axis.visibleRange.interval;\n }\n }\n this.findMinMax(series.yMin, series.yMax);\n };\n Double.prototype.findMinMax = function (min, max) {\n if (this.min === null || this.min > min) {\n this.min = min;\n }\n if (this.max === null || this.max < max) {\n this.max = max;\n }\n if ((this.max === this.min) && this.max < 0 && this.min < 0) { // max == min\n this.max = 0;\n }\n };\n /**\n * Apply padding for the range.\n *\n * @private\n */\n Double.prototype.applyRangePadding = function (axis, size) {\n var start = axis.actualRange.min;\n var end = axis.actualRange.max;\n if (!setRange(axis)) {\n var interval = axis.actualRange.interval;\n var padding = axis.getRangePadding(this.chart);\n if (padding === 'Additional' || padding === 'Round') {\n this.findAdditional(axis, start, end, interval);\n }\n else if (padding === 'Normal') {\n this.findNormal(axis, start, end, interval, size);\n }\n else {\n this.updateActualRange(axis, start, end, interval);\n }\n }\n axis.actualRange.delta = axis.actualRange.max - axis.actualRange.min;\n this.calculateVisibleRange(size, axis);\n };\n Double.prototype.updateActualRange = function (axis, minimum, maximum, interval) {\n axis.actualRange = {\n min: axis.minimum != null ? axis.minimum : minimum,\n max: axis.maximum != null ? axis.maximum : maximum,\n interval: axis.interval != null ? axis.interval : interval,\n delta: axis.actualRange.delta\n };\n };\n Double.prototype.findAdditional = function (axis, start, end, interval) {\n var minimum;\n var maximum;\n minimum = Math.floor(start / interval) * interval;\n maximum = Math.ceil(end / interval) * interval;\n if (axis.rangePadding === 'Additional') {\n minimum -= interval;\n maximum += interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n Double.prototype.findNormal = function (axis, start, end, interval, size) {\n var remaining;\n var minimum;\n var maximum;\n var startValue = start;\n if (start < 0) {\n startValue = 0;\n minimum = start + (start * 0.05);\n remaining = interval + (minimum % interval);\n if ((0.365 * interval) >= remaining) {\n minimum -= interval;\n }\n if (minimum % interval < 0) {\n minimum = (minimum - interval) - (minimum % interval);\n }\n }\n else {\n minimum = start < ((5.0 / 6.0) * end) ? 0 : (start - (end - start) * 0.5);\n if (minimum % interval > 0) {\n minimum -= (minimum % interval);\n }\n }\n maximum = (end > 0) ? (end + (end - startValue) * 0.05) : (end - (end - startValue) * 0.05);\n remaining = interval - (maximum % interval);\n if ((0.365 * interval) >= remaining) {\n maximum += interval;\n }\n if (maximum % interval > 0) {\n maximum = (maximum + interval) - (maximum % interval);\n }\n axis.doubleRange = new DoubleRange(minimum, maximum);\n if (minimum === 0) {\n interval = this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n maximum = Math.ceil(maximum / interval) * interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n /**\n * Calculate visible range for axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleRange = function (size, axis) {\n axis.visibleRange = {\n max: axis.actualRange.max, min: axis.actualRange.min,\n delta: axis.actualRange.delta, interval: axis.actualRange.interval\n };\n if (this.chart.chartAreaType === 'Cartesian') {\n var isLazyLoad = isNullOrUndefined(axis.zoomingScrollBar) ? false : axis.zoomingScrollBar.isLazyLoad;\n if ((axis.zoomFactor < 1 || axis.zoomPosition > 0) && !isLazyLoad) {\n axis.calculateVisibleRangeOnZooming(this.chart);\n axis.calculateAxisRange(size, this.chart);\n axis.visibleRange.interval = (axis.enableAutoIntervalOnZooming && axis.valueType !== 'Category') ?\n this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size)\n : axis.visibleRange.interval;\n }\n }\n axis.triggerRangeRender(this.chart, axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.interval);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleLabels = function (axis, chart) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n var tempInterval = axis.visibleRange.min;\n var labelStyle;\n var controlName = chart.getModuleName();\n var isPolarRadar = controlName === 'chart' && chart.chartAreaType === 'PolarRadar';\n if (!isPolarRadar && (axis.zoomFactor < 1 || axis.zoomPosition > 0 || this.paddingInterval)) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var format = this.getFormat(axis);\n var isCustom = format.match('{value}') !== null;\n var intervalDigits = 0;\n var formatDigits = 0;\n if (axis.labelFormat && axis.labelFormat.indexOf('n') > -1) {\n formatDigits = parseInt(axis.labelFormat.substring(1, axis.labelFormat.length), 10);\n }\n axis.format = chart.intl.getNumberFormat({\n format: isCustom ? '' : format,\n useGrouping: chart.useGroupingSeparator\n });\n axis.startLabel = axis.format(axis.visibleRange.min);\n axis.endLabel = axis.format(axis.visibleRange.max);\n if (axis.visibleRange.interval && (axis.visibleRange.interval + '').indexOf('.') >= 0) {\n intervalDigits = (axis.visibleRange.interval + '').split('.')[1].length;\n }\n var duplicateTempInterval;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange)) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (tempInterval && (tempInterval + '').indexOf('.') >= 0 && (tempInterval + '').split('.')[1].length > 10) {\n tempInterval = (tempInterval + '').split('.')[1].length > (formatDigits || intervalDigits) ?\n +tempInterval.toFixed(formatDigits || intervalDigits) : tempInterval;\n if (tempInterval <= axis.visibleRange.max) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Format of the axis label.\n *\n * @private\n */\n Double.prototype.getFormat = function (axis) {\n if (axis.labelFormat) {\n if (axis.labelFormat.indexOf('p') === 0 && axis.labelFormat.indexOf('{value}') === -1 && axis.isStack100) {\n return '{value}%';\n }\n return axis.labelFormat;\n }\n return axis.isStack100 ? '{value}%' : '';\n };\n /**\n * Formatted the axis label.\n *\n * @private\n */\n Double.prototype.formatValue = function (axis, isCustom, format, tempInterval) {\n return isCustom ? format.replace('{value}', axis.format(tempInterval))\n : axis.format(tempInterval);\n };\n return Double;\n}());\nexport { Double };\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\n/**\n * Specifies the chart constant value\n */\n/** @private */\nexport var loaded = 'loaded';\n/** @private */\nexport var legendClick = 'legendClick';\n/** @private */\nexport var load = 'load';\n/** @private */\nexport var animationComplete = 'animationComplete';\n/** @private */\nexport var legendRender = 'legendRender';\n/** @private */\nexport var textRender = 'textRender';\n/** @private */\nexport var pointRender = 'pointRender';\n/** @private */\nexport var sharedTooltipRender = 'sharedTooltipRender';\n/** @private */\nexport var seriesRender = 'seriesRender';\n/** @private */\nexport var axisLabelRender = 'axisLabelRender';\n/** @private */\nexport var axisLabelClick = 'axisLabelClick';\n/** @private */\nexport var axisRangeCalculated = 'axisRangeCalculated';\n/** @private */\nexport var axisMultiLabelRender = 'axisMultiLabelRender';\n/** @private */\nexport var tooltipRender = 'tooltipRender';\n/** @private */\nexport var chartMouseMove = 'chartMouseMove';\n/** @private */\nexport var chartMouseClick = 'chartMouseClick';\n/** @private */\nexport var pointClick = 'pointClick';\n/** @private */\nexport var pointDoubleClick = 'pointDoubleClick';\n/** @private */\nexport var pointMove = 'pointMove';\n/** @private */\nexport var chartMouseLeave = 'chartMouseLeave';\n/** @private */\nexport var chartMouseDown = 'chartMouseDown';\n/** @private */\nexport var chartMouseUp = 'chartMouseUp';\n/** @private */\nexport var zoomComplete = 'zoomComplete';\n/** @private */\nexport var dragComplete = 'dragComplete';\n/** @private */\nexport var selectionComplete = 'selectionComplete';\n/** @private */\nexport var resized = 'resized';\n/** @private */\nexport var beforeResize = 'beforeResize';\n/** @private */\nexport var beforePrint = 'beforePrint';\n/** @private */\nexport var annotationRender = 'annotationRender';\n/** @private */\nexport var scrollStart = 'scrollStart';\n/** @private */\nexport var scrollEnd = 'scrollEnd';\n/** @private */\nexport var scrollChanged = 'scrollChanged';\n/** @private */\nexport var stockEventRender = 'stockEventRender';\n/** @private */\nexport var multiLevelLabelClick = 'multiLevelLabelClick';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragEnd = 'dragEnd';\n/*** @private*/\nexport var regSub = /~\\d+~/g;\n/*** @private*/\nexport var regSup = /\\^\\d+\\^/g;\n/** @private */\nexport var beforeExport = 'beforeExport';\n/** @private */\nexport var afterExport = 'afterExport';\n/** @private */\nexport var bulletChartMouseClick = 'chartMouseClick';\n/** @private */\nexport var onZooming = 'onZooming';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/ban-types */\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Theme } from '../../common/model/theme';\nimport { Font, Border } from '../../common/model/base';\n/**\n * Configures the Annotation for chart.\n */\nvar ChartAnnotationSettings = /** @class */ (function (_super) {\n __extends(ChartAnnotationSettings, _super);\n function ChartAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('Center')\n ], ChartAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Pixel')\n ], ChartAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], ChartAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], ChartAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"yAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"description\", void 0);\n return ChartAnnotationSettings;\n}(ChildProperty));\nexport { ChartAnnotationSettings };\n/**\n * label border properties.\n */\nvar LabelBorder = /** @class */ (function (_super) {\n __extends(LabelBorder, _super);\n function LabelBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], LabelBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], LabelBorder.prototype, \"width\", void 0);\n __decorate([\n Property('Rectangle')\n ], LabelBorder.prototype, \"type\", void 0);\n return LabelBorder;\n}(ChildProperty));\nexport { LabelBorder };\n/**\n * categories for multi level labels\n */\nvar MultiLevelCategories = /** @class */ (function (_super) {\n __extends(MultiLevelCategories, _super);\n function MultiLevelCategories() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"end\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"maximumTextWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"type\", void 0);\n return MultiLevelCategories;\n}(ChildProperty));\nexport { MultiLevelCategories };\n/**\n * Strip line properties\n */\nvar StripLineSettings = /** @class */ (function (_super) {\n __extends(StripLineSettings, _super);\n function StripLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StripLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"startFromAxis\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"size\", void 0);\n __decorate([\n Property('#808080')\n ], StripLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('Auto')\n ], StripLineSettings.prototype, \"sizeType\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isRepeat\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatEvery\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatUntil\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isSegmented\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentStart\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentEnd\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentAxisName\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], StripLineSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"rotation\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Complex(Theme.stripLineLabelFont, Font)\n ], StripLineSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Behind')\n ], StripLineSettings.prototype, \"zIndex\", void 0);\n __decorate([\n Property(1)\n ], StripLineSettings.prototype, \"opacity\", void 0);\n return StripLineSettings;\n}(ChildProperty));\nexport { StripLineSettings };\n/**\n * MultiLevelLabels properties\n */\nvar MultiLevelLabels = /** @class */ (function (_super) {\n __extends(MultiLevelLabels, _super);\n function MultiLevelLabels() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Center')\n ], MultiLevelLabels.prototype, \"alignment\", void 0);\n __decorate([\n Property('Wrap')\n ], MultiLevelLabels.prototype, \"overflow\", void 0);\n __decorate([\n Complex(Theme.axisLabelFont, Font)\n ], MultiLevelLabels.prototype, \"textStyle\", void 0);\n __decorate([\n Complex({ color: null, width: 1, type: 'Rectangle' }, LabelBorder)\n ], MultiLevelLabels.prototype, \"border\", void 0);\n __decorate([\n Collection([], MultiLevelCategories)\n ], MultiLevelLabels.prototype, \"categories\", void 0);\n return MultiLevelLabels;\n}(ChildProperty));\nexport { MultiLevelLabels };\n/**\n * Specifies range for scrollbarSettings property\n *\n * @public\n */\nvar ScrollbarSettingsRange = /** @class */ (function (_super) {\n __extends(ScrollbarSettingsRange, _super);\n function ScrollbarSettingsRange() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"maximum\", void 0);\n return ScrollbarSettingsRange;\n}(ChildProperty));\nexport { ScrollbarSettingsRange };\n/**\n * Scrollbar Settings Properties for Lazy Loading\n */\nvar ScrollbarSettings = /** @class */ (function (_super) {\n __extends(ScrollbarSettings, _super);\n function ScrollbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ScrollbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"pointsLength\", void 0);\n __decorate([\n Complex({}, ScrollbarSettingsRange)\n ], ScrollbarSettings.prototype, \"range\", void 0);\n return ScrollbarSettings;\n}(ChildProperty));\nexport { ScrollbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { Property, Complex, ChildProperty, Collection, extend } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\nimport { rotateTextSize, firstToLowerCase, valueToCoefficient, inside, isBreakLabel, isZoomSet, getTitle } from '../../common/utils/helper';\nimport { Size, Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { Double } from '../axis/double-axis';\nimport { Theme } from '../../common/model/theme';\nimport { axisRangeCalculated } from '../../common/model/constants';\nimport { StripLineSettings, MultiLevelLabels, LabelBorder, ScrollbarSettings } from '../model/chart-base';\nimport { textWrap } from '../../common/utils/helper';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Configures the `rows` of the chart.\n */\nvar Row = /** @class */ (function (_super) {\n __extends(Row, _super);\n function Row() {\n /**\n * The height of the row as a string accept input both as '100px' and '100%'.\n * If specified as '100%, row renders to the full height of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n return _this;\n }\n /**\n * Measure the row size\n *\n * @returns {void}\n * @private\n */\n Row.prototype.computeSize = function (axis, scrollBarHeight) {\n var width = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n width += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding) + axis.lineStyle.width * 0.5);\n }\n if (axis.opposedPosition) {\n this.farSizes.push(width);\n }\n else {\n this.nearSizes.push(width);\n }\n };\n __decorate([\n Property('100%')\n ], Row.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], Row.prototype, \"border\", void 0);\n return Row;\n}(ChildProperty));\nexport { Row };\n/**\n * Configures the `columns` of the chart.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n /**\n * The width of the column as a string accepts input both as like '100px' or '100%'.\n * If specified as '100%, column renders to the full width of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.padding = 0;\n return _this;\n }\n /**\n * Measure the column size\n *\n * @returns {void}\n * @private\n */\n Column.prototype.computeSize = function (axis, scrollBarHeight) {\n var height = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n height += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding) + axis.lineStyle.width * 0.5);\n }\n if (axis.opposedPosition) {\n this.farSizes.push(height);\n }\n else {\n this.nearSizes.push(height);\n }\n };\n __decorate([\n Property('100%')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Complex({}, Border)\n ], Column.prototype, \"border\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Configures the major grid lines in the `axis`.\n */\nvar MajorGridLines = /** @class */ (function (_super) {\n __extends(MajorGridLines, _super);\n function MajorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MajorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MajorGridLines.prototype, \"color\", void 0);\n return MajorGridLines;\n}(ChildProperty));\nexport { MajorGridLines };\n/**\n * Configures the minor grid lines in the `axis`.\n */\nvar MinorGridLines = /** @class */ (function (_super) {\n __extends(MinorGridLines, _super);\n function MinorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MinorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MinorGridLines.prototype, \"color\", void 0);\n return MinorGridLines;\n}(ChildProperty));\nexport { MinorGridLines };\n/**\n * Configures the axis line of a chart.\n */\nvar AxisLine = /** @class */ (function (_super) {\n __extends(AxisLine, _super);\n function AxisLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], AxisLine.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], AxisLine.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}(ChildProperty));\nexport { AxisLine };\n/**\n * Configures the major tick lines.\n */\nvar MajorTickLines = /** @class */ (function (_super) {\n __extends(MajorTickLines, _super);\n function MajorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MajorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MajorTickLines.prototype, \"color\", void 0);\n return MajorTickLines;\n}(ChildProperty));\nexport { MajorTickLines };\n/**\n * Configures the minor tick lines.\n */\nvar MinorTickLines = /** @class */ (function (_super) {\n __extends(MinorTickLines, _super);\n function MinorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MinorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MinorTickLines.prototype, \"color\", void 0);\n return MinorTickLines;\n}(ChildProperty));\nexport { MinorTickLines };\n/**\n * Configures the crosshair ToolTip.\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairTooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], CrosshairTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex(Theme.crosshairLabelFont, Font)\n ], CrosshairTooltip.prototype, \"textStyle\", void 0);\n return CrosshairTooltip;\n}(ChildProperty));\nexport { CrosshairTooltip };\n/**\n * Configures the axes in the chart.\n *\n * @public\n */\nvar Axis = /** @class */ (function (_super) {\n __extends(Axis, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Axis(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n /** @private */\n _this.visibleLabels = [];\n /** @private */\n _this.series = [];\n /** @private */\n _this.rect = new Rect(undefined, undefined, 0, 0);\n /** @private */\n _this.axisBottomLine = null;\n /** @private */\n _this.intervalDivs = [10, 5, 2, 1];\n /** @private */\n _this.isStack100 = false;\n /** @private */\n _this.crossAt = null;\n /** @private */\n _this.updatedRect = null;\n /** @private */\n _this.multiLevelLabelHeight = 0;\n /** @private */\n _this.isChart = true;\n /** @private */\n _this.isIntervalInDecimal = true;\n /** @private */\n _this.titleCollection = [];\n /** @private */\n _this.titleSize = new Size(0, 0);\n /**\n * Task: BLAZ-2044\n * This property used to hide the axis when series hide from legend click\n *\n * @private\n */\n _this.internalVisibility = true;\n _this.angle = _this.labelRotation;\n return _this;\n }\n /**\n * The function used to find tick size.\n *\n * @returns {number} tick line size\n * @private\n */\n Axis.prototype.findTickSize = function (crossAxis) {\n if (this.tickPosition === 'Inside') {\n return 0;\n }\n if (crossAxis && (!crossAxis.visibleRange || this.isInside(crossAxis.visibleRange))) {\n return 0;\n }\n return this.majorTickLines.height;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {number}\n * @private\n */\n Axis.prototype.isInside = function (range) {\n return (inside(this.crossAt, range) ||\n (!this.opposedPosition && this.crossAt >= range.max) || (this.opposedPosition && this.crossAt <= range.min));\n };\n /**\n * The function used to find label Size.\n *\n * @returns {number} labelSize\n * @private\n */\n Axis.prototype.findLabelSize = function (crossAxis, innerPadding) {\n var titleSize = 0;\n var isHorizontal = this.orientation === 'Horizontal';\n if (this.title) {\n this.titleSize = measureText(this.title, this.titleStyle);\n titleSize = this.titleSize.height + innerPadding;\n if (this.rect.width || this.rect.height) {\n var length_1 = isHorizontal ? this.rect.width : this.rect.height;\n this.titleCollection = getTitle(this.title, this.titleStyle, length_1);\n titleSize = (titleSize * this.titleCollection.length);\n }\n }\n if (this.labelPosition === 'Inside') {\n return titleSize + innerPadding;\n }\n var diff;\n var value;\n var labelSize = titleSize + innerPadding + this.titlePadding + this.labelPadding +\n ((this.orientation === 'Vertical') ? this.maxLabelSize.width : this.maxLabelSize.height) + this.multiLevelLabelHeight;\n if (crossAxis && this.placeNextToAxisLine) {\n var range = crossAxis.visibleRange;\n var size = (crossAxis.orientation === 'Horizontal') ? crossAxis.rect.width : crossAxis.rect.height;\n if (!range || !size) {\n return 0;\n }\n else if (this.isInside(range)) {\n value = this.findDifference(crossAxis);\n diff = (value) * (size / range.delta);\n diff = (value) * ((size - (diff < labelSize ? (labelSize - diff) : 0)) / range.delta);\n labelSize = (diff < labelSize) ? (labelSize - diff) : 0;\n }\n }\n return labelSize;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.updateCrossValue = function () {\n var value = this.crossAt;\n if (value === null || !this.isInside(this.crossInAxis.visibleRange)) {\n this.updatedRect = this.rect;\n return null;\n }\n var range = this.crossInAxis.visibleRange;\n if (!this.opposedPosition) {\n if (this.crossAt > range.max) {\n value = range.max;\n }\n }\n else {\n if (this.crossAt < range.min) {\n value = range.min;\n }\n }\n this.updatedRect = extend({}, this.rect, null, true);\n if (this.orientation === 'Horizontal') {\n value = this.crossInAxis.rect.height - (valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.height);\n this.updatedRect.y = this.crossInAxis.rect.y + value;\n }\n else {\n value = valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.width;\n this.updatedRect.x = this.crossInAxis.rect.x + value;\n }\n };\n Axis.prototype.findDifference = function (crossAxis) {\n var value = 0;\n if (this.opposedPosition) {\n value = crossAxis.isInversed ? crossAxis.visibleRange.min : crossAxis.visibleRange.max;\n }\n else {\n value = crossAxis.isInversed ? crossAxis.visibleRange.max : crossAxis.visibleRange.min;\n }\n return Math.abs(this.crossAt - value);\n };\n /**\n * Calculate visible range for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.calculateVisibleRangeOnZooming = function (chart) {\n if (isZoomSet(this)) {\n var baseRange = this.actualRange;\n var start = void 0;\n var end = void 0;\n if (!this.isInversed || chart.zoomModule) {\n start = this.actualRange.min + this.zoomPosition * this.actualRange.delta;\n end = start + this.zoomFactor * this.actualRange.delta;\n }\n else {\n start = this.actualRange.max - (this.zoomPosition * this.actualRange.delta);\n end = start - (this.zoomFactor * this.actualRange.delta);\n }\n if (start < baseRange.min) {\n end = end + (baseRange.min - start);\n start = baseRange.min;\n }\n if (end > baseRange.max) {\n start = start - (end - baseRange.max);\n end = baseRange.max;\n }\n this.doubleRange = new DoubleRange(start, end);\n this.visibleRange = { min: this.doubleRange.start, max: this.doubleRange.end,\n delta: this.doubleRange.delta, interval: this.visibleRange.interval };\n }\n };\n /**\n * Calculate range for x and y axis after zoom.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.calculateAxisRange = function (size, chart) {\n if (chart.enableAutoIntervalOnBothAxis) {\n if (this.orientation === 'Horizontal' && chart.zoomSettings.mode === 'X') {\n for (var i = 0; i < this.series.length; i++) {\n var yValue = [];\n for (var _i = 0, _a = this.series[i].visiblePoints; _i < _a.length; _i++) {\n var points = _a[_i];\n if ((points.xValue > this.visibleRange.min) && (points.xValue < this.visibleRange.max)) {\n yValue.push(points.yValue);\n }\n }\n for (var _b = 0, _c = chart.axisCollections; _b < _c.length; _b++) {\n var axis = _c[_b];\n if (axis.orientation === 'Vertical' && !isNullOrUndefined(axis.series[i])) {\n axis.series[i].yMin = Math.min.apply(Math, yValue);\n axis.series[i].yMax = Math.max.apply(Math, yValue);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n }\n }\n }\n }\n if (this.orientation === 'Vertical' && chart.zoomSettings.mode === 'Y') {\n for (var i = 0; i < this.series.length; i++) {\n var xValue = [];\n for (var _d = 0, _e = this.series[i].visiblePoints; _d < _e.length; _d++) {\n var points = _e[_d];\n if ((points.yValue > this.visibleRange.min) && (points.yValue < this.visibleRange.max)) {\n xValue.push(points.xValue);\n }\n }\n for (var _f = 0, _g = chart.axisCollections; _f < _g.length; _f++) {\n var axis = _g[_f];\n if (axis.orientation === 'Horizontal' && !isNullOrUndefined(axis.series[i])) {\n axis.series[i].xMin = Math.min.apply(Math, xValue);\n axis.series[i].xMax = Math.max.apply(Math, xValue);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n }\n }\n }\n }\n }\n };\n /**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.triggerRangeRender = function (chart, minimum, maximum, interval) {\n var argsData = {\n cancel: false, name: axisRangeCalculated, axis: this,\n minimum: minimum, maximum: maximum, interval: interval\n };\n chart.trigger(axisRangeCalculated, argsData);\n if (!argsData.cancel) {\n this.visibleRange = { min: argsData.minimum, max: argsData.maximum, interval: argsData.interval,\n delta: argsData.maximum - argsData.minimum };\n }\n };\n /**\n * Calculate padding for the axis.\n *\n * @returns {string}\n * @private\n */\n Axis.prototype.getRangePadding = function (chart) {\n var padding = this.rangePadding;\n if (padding !== 'Auto') {\n return padding;\n }\n switch (this.orientation) {\n case 'Horizontal':\n if (chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n case 'Vertical':\n if (!chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n }\n return padding;\n };\n /**\n * Calculate maximum label width for the axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getMaxLabelWidth = function (chart) {\n var pointX;\n var previousEnd = 0;\n var isIntersect = false;\n var isAxisLabelBreak;\n this.angle = this.labelRotation;\n this.maxLabelSize = new Size(0, 0);\n var action = this.labelIntersectAction;\n var label;\n for (var i = 0, len = this.visibleLabels.length; i < len; i++) {\n label = this.visibleLabels[i];\n isAxisLabelBreak = isBreakLabel(label.originalText);\n if (isAxisLabelBreak) {\n label.size = measureText(label.originalText.replace(/
/g, ' '), this.labelStyle);\n label.breakLabelSize = measureText(this.enableTrim ? label.text.join('
') : label.originalText, this.labelStyle);\n }\n else {\n label.size = measureText(label.text, this.labelStyle);\n }\n var width = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n if (width > this.maxLabelSize.width) {\n this.maxLabelSize.width = width;\n this.rotatedLabel = label.text;\n }\n var height = isAxisLabelBreak ? label.breakLabelSize.height : label.size.height;\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n if (isAxisLabelBreak) {\n label.text = this.enableTrim ? label.text : label.originalText.split('
');\n }\n if (action === 'None' || action === 'Hide' || action === 'Trim') {\n continue;\n }\n if ((action !== 'None' || this.angle % 360 === 0) && this.orientation === 'Horizontal' &&\n this.rect.width > 0 && !isIntersect) {\n var width1 = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n pointX -= width1 / 2;\n if (this.edgeLabelPlacement === 'Shift') {\n if (i === 0 && pointX < this.rect.x) {\n pointX = this.rect.x;\n }\n if (i === this.visibleLabels.length - 1 && ((pointX + width1) > (this.rect.x + this.rect.width))) {\n pointX = this.rect.x + this.rect.width - width1;\n }\n }\n switch (action) {\n case 'MultipleRows':\n if (i > 0) {\n this.findMultiRows(i, pointX, label, isAxisLabelBreak);\n }\n break;\n case 'Rotate45':\n case 'Rotate90':\n if (i > 0 && (!this.isInversed ? pointX <= previousEnd : pointX + width1 >= previousEnd)) {\n this.angle = (action === 'Rotate45') ? 45 : 90;\n isIntersect = true;\n }\n break;\n default:\n if (isAxisLabelBreak) {\n var result = void 0;\n var result1 = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n result = textWrap(label.text[index], this.rect.width / this.visibleLabels.length, this.labelStyle);\n if (result.length > 1) {\n for (var j = 0; j < result.length; j++) {\n str = result[j];\n result1.push(str);\n }\n }\n else {\n result1.push(result[0]);\n }\n }\n label.text = result1;\n }\n else {\n label.text = textWrap(label.text, this.rect.width / this.visibleLabels.length, this.labelStyle);\n }\n // eslint-disable-next-line no-case-declarations\n var height_1 = (label.size.height * label.text.length);\n if (height_1 > this.maxLabelSize.height) {\n this.maxLabelSize.height = height_1;\n }\n break;\n }\n previousEnd = this.isInversed ? pointX : pointX + width1;\n }\n }\n if (this.angle !== 0 && this.orientation === 'Horizontal') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart);\n }\n }\n if (chart.multiLevelLabelModule && this.multiLevelLabels.length > 0) {\n chart.multiLevelLabelModule.getMultilevelLabelsHeight(this);\n }\n };\n /**\n * Finds the multiple rows for axis.\n *\n * @returns {void}\n */\n Axis.prototype.findMultiRows = function (length, currentX, currentLabel, isBreakLabels) {\n var label;\n var pointX;\n var width2;\n var store = [];\n var isMultiRows;\n for (var i = length - 1; i >= 0; i--) {\n label = this.visibleLabels[i];\n width2 = isBreakLabels ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n isMultiRows = !this.isInversed ? currentX < (pointX + width2 * 0.5) :\n currentX + currentLabel.size.width > (pointX - width2 * 0.5);\n if (isMultiRows) {\n store.push(label.index);\n currentLabel.index = (currentLabel.index > label.index) ? currentLabel.index : label.index + 1;\n }\n else {\n currentLabel.index = store.indexOf(label.index) > -1 ? currentLabel.index : label.index;\n }\n }\n var height = ((isBreakLabels ? currentLabel.breakLabelSize.height : currentLabel.size.height) * currentLabel.index) +\n (5 * (currentLabel.index - 1));\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n };\n /**\n * Finds the default module for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getModule = function (chart) {\n if (this.valueType === 'Double') {\n this.baseModule = new Double(chart);\n }\n else {\n this.baseModule = chart[firstToLowerCase(this.valueType) + 'Module'];\n }\n };\n __decorate([\n Complex(Theme.axisLabelFont, Font)\n ], Axis.prototype, \"labelStyle\", void 0);\n __decorate([\n Complex({}, CrosshairTooltip)\n ], Axis.prototype, \"crosshairTooltip\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"title\", void 0);\n __decorate([\n Complex(Theme.axisTitleFont, Font)\n ], Axis.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"skeleton\", void 0);\n __decorate([\n Property('DateTime')\n ], Axis.prototype, \"skeletonType\", void 0);\n __decorate([\n Property('Center')\n ], Axis.prototype, \"lineBreakAlignment\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"plotOffset\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetLeft\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetTop\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetRight\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetBottom\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isIndexed\", void 0);\n __decorate([\n Property(10)\n ], Axis.prototype, \"logBase\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"columnIndex\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"rowIndex\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"span\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"desiredIntervals\", void 0);\n __decorate([\n Property(3)\n ], Axis.prototype, \"maximumLabels\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"zoomFactor\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"zoomPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableScrollbarOnZooming\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"opposedPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableAutoIntervalOnZooming\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"rangePadding\", void 0);\n __decorate([\n Property('Double')\n ], Axis.prototype, \"valueType\", void 0);\n __decorate([\n Property('None')\n ], Axis.prototype, \"edgeLabelPlacement\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"intervalType\", void 0);\n __decorate([\n Property('BetweenTicks')\n ], Axis.prototype, \"labelPlacement\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"tickPosition\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"name\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"visible\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"minorTicksPerInterval\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"labelRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesAt\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"placeNextToAxisLine\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesInAxis\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"maximum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"interval\", void 0);\n __decorate([\n Property(34)\n ], Axis.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"enableTrim\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"labelPadding\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"titlePadding\", void 0);\n __decorate([\n Complex({}, MajorTickLines)\n ], Axis.prototype, \"majorTickLines\", void 0);\n __decorate([\n Complex({}, MinorTickLines)\n ], Axis.prototype, \"minorTickLines\", void 0);\n __decorate([\n Complex({}, MajorGridLines)\n ], Axis.prototype, \"majorGridLines\", void 0);\n __decorate([\n Complex({}, MinorGridLines)\n ], Axis.prototype, \"minorGridLines\", void 0);\n __decorate([\n Complex({}, AxisLine)\n ], Axis.prototype, \"lineStyle\", void 0);\n __decorate([\n Property('Trim')\n ], Axis.prototype, \"labelIntersectAction\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isInversed\", void 0);\n __decorate([\n Property(100)\n ], Axis.prototype, \"coefficient\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"startAngle\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"startFromZero\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"description\", void 0);\n __decorate([\n Property(2)\n ], Axis.prototype, \"tabIndex\", void 0);\n __decorate([\n Collection([], StripLineSettings)\n ], Axis.prototype, \"stripLines\", void 0);\n __decorate([\n Collection([], MultiLevelLabels)\n ], Axis.prototype, \"multiLevelLabels\", void 0);\n __decorate([\n Complex({ color: null, width: 0, type: 'Rectangle' }, LabelBorder)\n ], Axis.prototype, \"border\", void 0);\n __decorate([\n Complex({}, ScrollbarSettings)\n ], Axis.prototype, \"scrollbarSettings\", void 0);\n return Axis;\n}(ChildProperty));\nexport { Axis };\n/** @private */\nvar VisibleLabels = /** @class */ (function () {\n function VisibleLabels(text, value, labelStyle, originalText, size, breakLabelSize, index) {\n if (size === void 0) { size = new Size(0, 0); }\n if (breakLabelSize === void 0) { breakLabelSize = new Size(0, 0); }\n if (index === void 0) { index = 1; }\n this.text = text;\n this.originalText = originalText;\n this.value = value;\n this.labelStyle = labelStyle;\n this.size = size;\n this.breakLabelSize = breakLabelSize;\n this.index = index;\n }\n return VisibleLabels;\n}());\nexport { VisibleLabels };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\nimport { Animation, compile as templateComplier, Browser } from '@syncfusion/ej2-base';\nimport { merge, extend, isNullOrUndefined, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { createElement, remove } from '@syncfusion/ej2-base';\nimport { Index } from '../../common/model/base';\nimport { VisibleLabels } from '../../chart/axis/axis';\nimport { axisLabelRender, regSub } from '../model/constants';\nimport { measureText, findDirection, Rect, TextOption, Size, PathOption, SvgRenderer, CanvasRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Function to sort the dataSource, by default it sort the data in ascending order.\n *\n * @param {Object} data chart data\n * @param {string} fields date fields\n * @param {boolean} isDescending boolean values of descending\n * @returns {Object[]} It returns chart data which be sorted.\n */\nexport function sort(data, fields, isDescending) {\n var sortData = extend([], data, null);\n sortData.sort(function (a, b) {\n var first = 0;\n var second = 0;\n for (var i = 0; i < fields.length; i++) {\n first += a[fields[i]];\n second += b[fields[i]];\n }\n if ((!isDescending && first < second) || (isDescending && first > second)) {\n return -1;\n }\n else if (first === second) {\n return 0;\n }\n return 1;\n });\n return sortData;\n}\n/** @private */\nexport function isBreakLabel(label) {\n return label.indexOf('
') !== -1;\n}\n/** @private */\nexport function getVisiblePoints(series) {\n var points = extend([], series.points, null, true);\n var tempPoints = [];\n var tempPoint;\n var pointIndex = 0;\n for (var i = 0; i < points.length; i++) {\n tempPoint = points[i];\n if (isNullOrUndefined(tempPoint.x) || tempPoint.x === '') {\n continue;\n }\n else {\n tempPoint.index = pointIndex++;\n tempPoints.push(tempPoint);\n }\n }\n return tempPoints;\n}\n/** @private */\nexport function rotateTextSize(font, text, angle, chart) {\n var renderer = new SvgRenderer(chart.element.id);\n var labelText;\n var textCollection = [];\n var height;\n var dy;\n var label;\n var tspanElement;\n var options = {\n id: 'rotate_text',\n x: chart.initialClipRect.x,\n y: chart.initialClipRect.y,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'transform': 'rotate(' + angle + ', 0, 0)',\n 'text-anchor': 'middle'\n };\n if (isBreakLabel(text)) {\n textCollection = text.split('
');\n labelText = textCollection[0];\n }\n else {\n labelText = text;\n }\n var htmlObject = renderer.createText(options, labelText);\n if (!chart.delayRedraw && !chart.redraw) {\n chart.element.appendChild(chart.svgObject);\n }\n // for line break label\n if (typeof textCollection !== 'string' && textCollection.length > 1) {\n for (var i = 1, len = textCollection.length; i < len; i++) {\n height = (measureText(textCollection[i], font).height);\n dy = (options.y) + ((i * height));\n label = textCollection[i];\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n chart.svgObject.appendChild(htmlObject);\n var box = htmlObject.getBoundingClientRect();\n remove(htmlObject);\n if (!chart.delayRedraw && !chart.redraw) {\n remove(chart.svgObject);\n }\n return new Size((box.right - box.left), (box.bottom - box.top));\n}\n/** @private */\nexport function removeElement(id) {\n if (!id) {\n return null;\n }\n var element = typeof id === 'string' ? getElement(id) : id;\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function logBase(value, base) {\n return Math.log(value) / Math.log(base);\n}\n/** @private */\nexport function showTooltip(text, x, y, areaWidth, id, element, isTouch, isTitleOrLegendEnabled) {\n //let id1: string = 'EJ2_legend_tooltip';\n var tooltip = document.getElementById(id);\n var size = measureText(text, {\n fontFamily: 'Segoe UI', size: '12px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n });\n var width = size.width + 5;\n x = (x + width > areaWidth) ? x - (width + 15) : x;\n y = isTitleOrLegendEnabled ? (y - size.height / 2) : y + 15;\n if (!tooltip) {\n tooltip = createElement('div', {\n innerHTML: text,\n id: id,\n styles: 'top:' + (y).toString() + 'px;left:' + (x + 15).toString() +\n 'px;background-color: rgb(255, 255, 255) !important; color:black !important; ' +\n 'position:absolute;border:1px solid rgb(112, 112, 112); padding-left : 3px; padding-right : 2px;' +\n 'padding-bottom : 2px; padding-top : 2px; font-size:12px; font-family: \"Segoe UI\"'\n });\n element.appendChild(tooltip);\n var left = parseInt(tooltip.style.left.replace('px', ''), 10);\n if (left < 0) {\n tooltip.style.left = '0px';\n }\n }\n else {\n tooltip.innerHTML = text;\n tooltip.style.top = (y).toString() + 'px';\n tooltip.style.left = (x + 15).toString() + 'px';\n }\n if (isTouch) {\n setTimeout(function () { removeElement(id); }, 1500);\n }\n}\n/** @private */\nexport function inside(value, range) {\n return (value < range.max) && (value > range.min);\n}\n/** @private */\nexport function withIn(value, range) {\n return (value <= range.max) && (value >= range.min);\n}\n/** @private */\nexport function logWithIn(value, axis) {\n return axis.valueType === 'Logarithmic' ? logBase(value, axis.logBase) : value;\n}\n/** @private */\nexport function withInRange(previousPoint, currentPoint, nextPoint, series) {\n var mX2 = logWithIn(currentPoint.xValue, series.xAxis);\n var mX1 = previousPoint ? logWithIn(previousPoint.xValue, series.xAxis) : mX2;\n var mX3 = nextPoint ? logWithIn(nextPoint.xValue, series.xAxis) : mX2;\n var xStart = Math.floor(series.xAxis.visibleRange.min);\n var xEnd = Math.ceil(series.xAxis.visibleRange.max);\n return ((mX1 >= xStart && mX1 <= xEnd) || (mX2 >= xStart && mX2 <= xEnd) ||\n (mX3 >= xStart && mX3 <= xEnd) || (xStart >= mX1 && xStart <= mX3));\n}\n/** @private */\nexport function sum(values) {\n var sum = 0;\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n sum += value;\n }\n return sum;\n}\n/** @private */\nexport function subArraySum(values, first, last, index, series) {\n var sum = 0;\n if (index !== null) {\n for (var i = (first + 1); i < last; i++) {\n if (index.indexOf(i) === -1) {\n sum += values[i][series.yName];\n }\n }\n }\n else {\n for (var i = (first + 1); i < last; i++) {\n if (!isNullOrUndefined(values[i][series.yName])) {\n sum += values[i][series.yName];\n }\n }\n }\n return sum;\n}\n/** @private */\nexport function subtractThickness(rect, thickness) {\n rect.x += thickness.left;\n rect.y += thickness.top;\n rect.width -= thickness.left + thickness.right;\n rect.height -= thickness.top + thickness.bottom;\n return rect;\n}\n/** @private */\nexport function subtractRect(rect, thickness) {\n rect.x += thickness.x;\n rect.y += thickness.y;\n rect.width -= thickness.x + thickness.width;\n rect.height -= thickness.y + thickness.height;\n return rect;\n}\n/** @private */\nexport function degreeToLocation(degree, radius, center) {\n var radian = (degree * Math.PI) / 180;\n return new ChartLocation(Math.cos(radian) * radius + center.x, Math.sin(radian) * radius + center.y);\n}\n/** @private */\nexport function degreeToRadian(degree) {\n return degree * (Math.PI / 180);\n}\n/** @private */\nexport function getRotatedRectangleCoordinates(actualPoints, centerX, centerY, angle) {\n var coordinatesAfterRotation = [];\n for (var i = 0; i < 4; i++) {\n var point = actualPoints[i];\n // translate point to origin\n var tempX = point.x - centerX;\n var tempY = point.y - centerY;\n // now apply rotation\n var rotatedX = tempX * Math.cos(degreeToRadian(angle)) - tempY * Math.sin(degreeToRadian(angle));\n var rotatedY = tempX * Math.sin(degreeToRadian(angle)) + tempY * Math.cos(degreeToRadian(angle));\n // translate back\n point.x = rotatedX + centerX;\n point.y = rotatedY + centerY;\n coordinatesAfterRotation.push(new ChartLocation(point.x, point.y));\n }\n return coordinatesAfterRotation;\n}\n/**\n * Helper function to determine whether there is an intersection between the two polygons described\n * by the lists of vertices. Uses the Separating Axis Theorem\n *\n * @param {ChartLocation[]} a an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @param {ChartLocation[]} b an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @returns {boolean} if there is any intersection between the 2 polygons, false otherwise\n */\nexport function isRotatedRectIntersect(a, b) {\n var polygons = [a, b];\n var minA;\n var maxA;\n var projected;\n var i;\n var i1;\n var j;\n var minB;\n var maxB;\n for (i = 0; i < polygons.length; i++) {\n // for each polygon, look at each edge of the polygon, and determine if it separates\n // the two shapes\n var polygon = polygons[i];\n for (i1 = 0; i1 < polygon.length; i1++) {\n // grab 2 vertices to create an edge\n var i2 = (i1 + 1) % polygon.length;\n var p1 = polygon[i1];\n var p2 = polygon[i2];\n // find the line perpendicular to this edge\n var normal = new ChartLocation(p2.y - p1.y, p1.x - p2.x);\n minA = maxA = undefined;\n // for each vertex in the first shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n for (j = 0; j < a.length; j++) {\n projected = normal.x * a[j].x + normal.y * a[j].y;\n if (isNullOrUndefined(minA) || projected < minA) {\n minA = projected;\n }\n if (isNullOrUndefined(maxA) || projected > maxA) {\n maxA = projected;\n }\n }\n // for each vertex in the second shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n minB = maxB = undefined;\n for (j = 0; j < b.length; j++) {\n projected = normal.x * b[j].x + normal.y * b[j].y;\n if (isNullOrUndefined(minB) || projected < minB) {\n minB = projected;\n }\n if (isNullOrUndefined(maxB) || projected > maxB) {\n maxB = projected;\n }\n }\n // if there is no overlap between the projects, the edge we are looking at separates the two\n // polygons, and we know there is no overlap\n if (maxA < minB || maxB < minA) {\n return false;\n }\n }\n }\n return true;\n}\n/** @private */\nfunction getAccumulationLegend(locX, locY, r, height, width, mode) {\n var cartesianlarge = degreeToLocation(270, r, new ChartLocation(locX, locY));\n var cartesiansmall = degreeToLocation(270, r, new ChartLocation(locX + (width / 10), locY));\n return 'M' + ' ' + locX + ' ' + locY + ' ' + 'L' + ' ' + (locX + r) + ' ' + (locY) + ' ' + 'A' + ' ' + (r) + ' ' + (r) +\n ' ' + 0 + ' ' + 1 + ' ' + 1 + ' ' + cartesianlarge.x + ' ' + cartesianlarge.y + ' ' + 'Z' + ' ' + 'M' + ' ' + (locX +\n (width / 10)) + ' ' + (locY - (height / 10)) + ' ' + 'L' + (locX + (r)) + ' ' + (locY - height / 10) + ' ' + 'A' + ' '\n + (r) + ' ' + (r) + ' ' + 0 + ' ' + 0 + ' ' + 0 + ' ' + cartesiansmall.x + ' ' + cartesiansmall.y + ' ' + 'Z';\n}\n/** @private */\nexport function getAngle(center, point) {\n var angle = Math.atan2((point.y - center.y), (point.x - center.x));\n angle = angle < 0 ? (6.283 + angle) : angle;\n return angle * (180 / Math.PI);\n}\n/** @private */\nexport function subArray(values, index) {\n var subArray = [];\n for (var i = 0; i <= index - 1; i++) {\n subArray.push(values[i]);\n }\n return subArray;\n}\n/** @private */\nexport function valueToCoefficient(value, axis) {\n var range = axis.visibleRange;\n var result = (value - range.min) / (range.delta);\n return axis.isInversed ? (1 - result) : result;\n}\n/** @private */\nexport function TransformToVisible(x, y, xAxis, yAxis, isInverted, series) {\n x = (xAxis.valueType === 'Logarithmic' ? logBase(x > 1 ? x : 1, xAxis.logBase) : x);\n y = (yAxis.valueType === 'Logarithmic' ?\n logBase(y > 1 ? y : 1, yAxis.logBase) : y);\n x += xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks' && series.type !== 'Radar' ? 0.5 : 0;\n var radius = series.chart.radius * valueToCoefficient(y, yAxis);\n var point = CoefficientToVector(valueToPolarCoefficient(x, xAxis), series.chart.primaryXAxis.startAngle);\n return {\n x: (series.clipRect.width / 2 + series.clipRect.x) + radius * point.x,\n y: (series.clipRect.height / 2 + series.clipRect.y) + radius * point.y\n };\n}\n/**\n * method to find series, point index by element id\n *\n * @private\n */\nexport function indexFinder(id, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n var ids = ['NaN', 'NaN'];\n if (id.indexOf('_Point_') > -1) {\n ids = id.split('_Series_')[1].split('_Point_');\n }\n else if (id.indexOf('_shape_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_shape_');\n ids[0] = '0';\n }\n else if (id.indexOf('_text_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_text_');\n ids[0] = '0';\n }\n return new Index(parseInt(ids[0], 10), parseInt(ids[1], 10));\n}\n/** @private */\nexport function CoefficientToVector(coefficient, startAngle) {\n startAngle = startAngle < 0 ? startAngle + 360 : startAngle;\n var angle = Math.PI * (1.5 - 2 * coefficient);\n angle = angle + (startAngle * Math.PI) / 180;\n return { x: Math.cos(angle), y: Math.sin(angle) };\n}\n/** @private */\nexport function valueToPolarCoefficient(value, axis) {\n var range = axis.visibleRange;\n var delta;\n var length;\n if (axis.valueType !== 'Category') {\n delta = (range.max - (axis.valueType === 'DateTime' ? axis.dateTimeInterval : range.interval)) - range.min;\n length = axis.visibleLabels.length - 1;\n delta = delta === 0 ? 1 : delta;\n }\n else {\n // To split an interval equally based on visible labels count\n delta = axis.visibleLabels.length === 1 ? 1 :\n (axis.visibleLabels[axis.visibleLabels.length - 1].value - axis.visibleLabels[0].value);\n length = axis.visibleLabels.length;\n }\n return axis.isInversed ? ((value - range.min) / delta) * (1 - 1 / (length)) :\n 1 - ((value - range.min) / delta) * (1 - 1 / (length));\n}\n/** @private */\nvar Mean = /** @class */ (function () {\n function Mean(verticalStandardMean, verticalSquareRoot, horizontalStandardMean, horizontalSquareRoot, verticalMean, horizontalMean) {\n this.verticalStandardMean = verticalStandardMean;\n this.horizontalStandardMean = horizontalStandardMean;\n this.verticalSquareRoot = verticalSquareRoot;\n this.horizontalSquareRoot = horizontalSquareRoot;\n this.verticalMean = verticalMean;\n this.horizontalMean = horizontalMean;\n }\n return Mean;\n}());\nexport { Mean };\n/** @private */\nvar PolarArc = /** @class */ (function () {\n function PolarArc(startAngle, endAngle, innerRadius, radius, currentXPosition) {\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.currentXPosition = currentXPosition;\n }\n return PolarArc;\n}());\nexport { PolarArc };\n/** @private */\nexport function createTooltip(id, text, top, left, fontSize) {\n var tooltip = getElement(id);\n var style = 'top:' + top.toString() + 'px;' +\n 'left:' + left.toString() + 'px;' +\n 'color:black !important; ' +\n 'background:#FFFFFF !important; ' +\n 'position:absolute;border:1px solid #707070;font-size:' + fontSize + ';border-radius:2px; z-index:1';\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id, innerHTML: ' ' + text + ' ', styles: style\n });\n document.body.appendChild(tooltip);\n }\n else {\n tooltip.setAttribute('innerHTML', ' ' + text + ' ');\n tooltip.setAttribute('styles', style);\n }\n}\n/** @private */\nexport function createZoomingLabels(chart, axis, parent, index, isVertical, rect) {\n var margin = 5;\n var opposedPosition = axis.opposedPosition;\n var anchor = isVertical ? 'start' : 'auto';\n var size;\n var chartRect = chart.availableSize.width;\n var x;\n var y;\n var rx = 3;\n var arrowLocation;\n var direction;\n var scrollBarHeight = axis.scrollbarSettings.enable || (axis.zoomingScrollBar && axis.zoomingScrollBar.svgObject)\n ? axis.scrollBarHeight : 0;\n for (var i = 0; i < 2; i++) {\n size = measureText(i ? axis.endLabel : axis.startLabel, axis.labelStyle);\n if (isVertical) {\n arrowLocation = i ? new ChartLocation(rect.x - scrollBarHeight, rect.y + rx) :\n new ChartLocation(axis.rect.x - scrollBarHeight, (rect.y + rect.height - rx));\n x = (rect.x + (opposedPosition ? (rect.width + margin + scrollBarHeight) : -(size.width + margin + margin + scrollBarHeight)));\n y = (rect.y + (i ? 0 : rect.height - size.height - margin));\n x += (x < 0 || ((chartRect) < (x + size.width + margin))) ? (opposedPosition ? -(size.width / 2) : size.width / 2) : 0;\n direction = findDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, false, false, !opposedPosition, arrowLocation.x, arrowLocation.y + (i ? -rx : rx));\n }\n else {\n arrowLocation = i ? new ChartLocation((rect.x + rect.width - rx), (rect.y + rect.height + scrollBarHeight)) :\n new ChartLocation(rect.x + rx, (rect.y + rect.height + scrollBarHeight));\n x = (rect.x + (i ? (rect.width - size.width - margin) : 0));\n y = (opposedPosition ? (rect.y - size.height - 10 - scrollBarHeight) : (rect.y + rect.height + margin + scrollBarHeight));\n direction = findDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, opposedPosition, !opposedPosition, false, arrowLocation.x + (i ? rx : -rx), arrowLocation.y);\n }\n x = x + (margin / 2);\n y = y + (3 * (size.height / 4)) + (margin / 2);\n parent.appendChild(chart.renderer.drawPath(new PathOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_Shape_' + i, chart.themeStyle.crosshairFill, 2, chart.themeStyle.crosshairFill, 1, null, direction)));\n textElement(chart.renderer, new TextOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_' + i, x, y, anchor, i ? axis.endLabel : axis.startLabel), { color: chart.themeStyle.crosshairLabel, fontFamily: 'Segoe UI', fontWeight: 'Regular', size: '11px' }, chart.themeStyle.crosshairLabel, parent);\n }\n return parent;\n}\n//Within bounds\n/** @private */\nexport function withInBounds(x, y, bounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= bounds.x - width && x <= bounds.x + bounds.width + width && y >= bounds.y - height\n && y <= bounds.y + bounds.height + height);\n}\n/** @private */\nexport function getValueXByPoint(value, size, axis) {\n var actualValue = !axis.isInversed ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function getValueYByPoint(value, size, axis) {\n var actualValue = axis.isInversed ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function findClipRect(series) {\n var rect = series.clipRect;\n if (series.chart.requireInvertedAxis) {\n rect.x = series.yAxis.rect.x;\n rect.y = series.xAxis.rect.y;\n rect.width = series.yAxis.rect.width;\n rect.height = series.xAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n}\n/** @private */\nexport function firstToLowerCase(str) {\n return str.substr(0, 1).toLowerCase() + str.substr(1);\n}\n/** @private */\nexport function getTransform(xAxis, yAxis, invertedAxis) {\n var x;\n var y;\n var width;\n var height;\n if (invertedAxis) {\n x = yAxis.rect.x;\n y = xAxis.rect.y;\n width = yAxis.rect.width;\n height = xAxis.rect.height;\n }\n else {\n x = xAxis.rect.x;\n y = yAxis.rect.y;\n width = xAxis.rect.width;\n height = yAxis.rect.height;\n }\n return new Rect(x, y, width, height);\n}\n/** @private */\nexport function getMinPointsDelta(axis, seriesCollection) {\n var minDelta = Number.MAX_VALUE;\n var xValues;\n var minVal;\n var seriesMin;\n for (var index = 0; index < seriesCollection.length; index++) {\n var series = seriesCollection[index];\n xValues = [];\n if (series.visible &&\n (axis.name === series.xAxisName || (axis.name === 'primaryXAxis' && series.xAxisName === null)\n || (axis.name === series.chart.primaryXAxis.name && !series.xAxisName))) {\n xValues = series.points.map(function (point) {\n return point.xValue;\n });\n xValues.sort(function (first, second) { return first - second; });\n if (xValues.length === 1) {\n seriesMin = (axis.valueType === 'DateTime' && series.xMin === series.xMax) ? (series.xMin - 2592000000) : series.xMin;\n minVal = xValues[0] - (!isNullOrUndefined(seriesMin) ?\n seriesMin : axis.visibleRange.min);\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n else {\n for (var index_1 = 0; index_1 < xValues.length; index_1++) {\n var value = xValues[index_1];\n if (index_1 > 0 && value) {\n minVal = value - xValues[index_1 - 1];\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n }\n }\n }\n }\n if (minDelta === Number.MAX_VALUE) {\n minDelta = 1;\n }\n return minDelta;\n}\n/** @private */\nexport function getAnimationFunction(effect) {\n var functionName;\n switch (effect) {\n case 'Linear':\n functionName = linear;\n break;\n }\n return functionName;\n}\n/**\n * Animation Effect Calculation Started Here\n *\n * @param {number} currentTime currentTime\n * @param {number} startValue startValue of the animation\n * @param {number} endValue endValue of the animation\n * @param {number} duration duration of the animation\n * @private\n */\nexport function linear(currentTime, startValue, endValue, duration) {\n return -endValue * Math.cos(currentTime / duration * (Math.PI / 2)) + endValue + startValue;\n}\n/**\n * Animation Effect Calculation End\n *\n * @private\n */\nexport function markerAnimate(element, delay, duration, series, pointIndex, point, isLabel) {\n var centerX = point.x;\n var centerY = point.y;\n var height = 0;\n element.style.visibility = 'hidden';\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n height = ((args.timeStamp - args.delay) / args.duration);\n element.setAttribute('transform', 'translate(' + centerX\n + ' ' + centerY + ') scale(' + height + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function () {\n element.style.visibility = '';\n if ((series.type === 'Scatter' || series.type === 'Bubble') && !isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n }\n });\n}\n/**\n * Animate the rect element\n */\nexport function animateRectElement(element, delay, duration, currentRect, previousRect) {\n var setStyle = function (rect) {\n element.setAttribute('x', rect.x + '');\n element.setAttribute('y', rect.y + '');\n element.setAttribute('width', rect.width + '');\n element.setAttribute('height', rect.height + '');\n };\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: delay,\n //name: name,\n progress: function (args) {\n setStyle(new Rect(linear(args.timeStamp, previousRect.x, currentRect.x - previousRect.x, args.duration), linear(args.timeStamp, previousRect.y, currentRect.y - previousRect.y, args.duration), linear(args.timeStamp, previousRect.width, currentRect.width - previousRect.width, args.duration), linear(args.timeStamp, previousRect.height, currentRect.height - previousRect.height, args.duration)));\n },\n end: function () {\n setStyle(currentRect);\n }\n });\n}\n/**\n * Animation after legend click a path\n *\n * @param {Element} element element to be animated\n * @param {string} direction current direction of the path\n * @param {boolean} redraw chart redraw\n * @param {string} previousDirection previous direction of the path\n * @param {number} animateDuration animateDuration of the path\n */\nexport function pathAnimation(element, direction, redraw, previousDirection, animateDuration) {\n if (!redraw || (!previousDirection && !element)) {\n return null;\n }\n var duration = 300;\n if (animateDuration) {\n duration = animateDuration;\n }\n var startDirections = previousDirection || element.getAttribute('d');\n var splitDirections = startDirections.split(/(?=[LMCZAQ])/);\n var endDirections = direction.split(/(?=[LMCZAQ])/);\n var currentDireciton;\n var startPath = [];\n var endPath = [];\n var c;\n var end;\n element.setAttribute('d', startDirections);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n currentDireciton = '';\n splitDirections.map(function (directions, index) {\n startPath = directions.split(' ');\n endPath = endDirections[index] ? endDirections[index].split(' ') : startPath;\n if (startPath[0] === 'Z') {\n currentDireciton += 'Z' + ' ';\n }\n else {\n currentDireciton += startPath[0] + ' ' +\n linear(args.timeStamp, +startPath[1], (+endPath[1] - +startPath[1]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[2], (+endPath[2] - +startPath[2]), args.duration) + ' ';\n }\n if (startPath[0] === 'C' || startPath[0] === 'Q') {\n c = 3;\n end = startPath[0] === 'Q' ? 4 : 6;\n while (c < end) {\n currentDireciton += linear(args.timeStamp, +startPath[c], (+endPath[c] - +startPath[c]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[++c], (+endPath[c] - +startPath[c]), args.duration) + ' ';\n ++c;\n }\n }\n if (startPath[0] === 'A') {\n currentDireciton += 0 + ' ' + 0 + ' ' + 1 + ' ' +\n linear(args.timeStamp, +startPath[6], (+endPath[6] - +startPath[6]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[7], (+endPath[7] - +startPath[7]), args.duration) + ' ';\n }\n });\n element.setAttribute('d', currentDireciton);\n },\n end: function () {\n element.setAttribute('d', direction);\n }\n });\n}\n/**\n * To append the clip rect element\n *\n * @param {boolean} redraw chart redraw value\n * @param {BaseAttibutes} options element options\n * @param {SvgRenderer} renderer svg renderer values\n * @param {string} clipPath clipPath of the element\n */\nexport function appendClipElement(redraw, options, renderer, clipPath) {\n if (clipPath === void 0) { clipPath = 'drawClipPath'; }\n var clipElement = redrawElement(redraw, options.id, options, renderer);\n if (clipElement) {\n var def = renderer.createDefs();\n def.appendChild(clipElement);\n return def;\n }\n else {\n return renderer[clipPath](options);\n }\n}\n/**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\nexport function triggerLabelRender(chart, tempInterval, text, labelStyle, axis) {\n var argsData = {\n cancel: false, name: axisLabelRender, axis: axis,\n text: text, value: tempInterval, labelStyle: labelStyle\n };\n chart.trigger(axisLabelRender, argsData);\n if (!argsData.cancel) {\n var isLineBreakLabels = argsData.text.indexOf('
') !== -1;\n var text_1 = (axis.enableTrim) ? (isLineBreakLabels ?\n lineBreakLabelTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle) :\n textTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle)) : argsData.text;\n axis.visibleLabels.push(new VisibleLabels(text_1, argsData.value, argsData.labelStyle, argsData.text));\n }\n}\n/**\n * The function used to find whether the range is set.\n *\n * @returns {boolean} It returns true if the axis range is set otherwise false.\n * @private\n */\nexport function setRange(axis) {\n return (axis.minimum != null && axis.maximum != null);\n}\n/**\n * To check whether the axis is zoomed or not.\n *\n * @param {Axis} axis axis model\n */\nexport function isZoomSet(axis) {\n return (axis.zoomFactor < 1 && axis.zoomPosition >= 0);\n}\n/**\n * Calculate desired interval for the axis.\n *\n * @returns {void} It returns desired interval count.\n * @private\n */\nexport function getActualDesiredIntervalsCount(availableSize, axis) {\n var size = axis.orientation === 'Horizontal' ? availableSize.width : availableSize.height;\n if (isNullOrUndefined(axis.desiredIntervals)) {\n var desiredIntervalsCount = (axis.orientation === 'Horizontal' ? 0.533 : 1) * axis.maximumLabels;\n desiredIntervalsCount = Math.max((size * (desiredIntervalsCount / 100)), 1);\n return desiredIntervalsCount;\n }\n else {\n return axis.desiredIntervals;\n }\n}\n/**\n * Animation for template\n *\n * @private\n */\nexport function templateAnimate(element, delay, duration, name, isRemove) {\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n name: name,\n progress: function (args) {\n args.element.style.visibility = 'visible';\n },\n end: function (args) {\n if (isRemove) {\n remove(args.element);\n }\n else {\n args.element.style.visibility = 'visible';\n }\n }\n });\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label, renderer, clipRect, isChartControl, control) {\n var chartRenderer = renderer ? renderer : new SvgRenderer('');\n var shapeOption = calculateShapes(location, size, shape, options, url, isChartControl, control);\n var drawElement = chartRenderer['draw' + shapeOption.functionName](shapeOption.renderOption, clipRect ? new Int32Array([clipRect.x, clipRect.y]) : null);\n //drawElement.setAttribute('aria-label', label);\n return drawElement;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url, isChart, control) {\n var dir;\n var functionName = 'Path';\n var isBulletChart = isChart;\n var width = (isBulletChart && shape === 'Circle') ? (size.width - 2) : size.width;\n var height = (isBulletChart && shape === 'Circle') ? (size.height - 2) : size.height;\n var sizeBullet = (isBulletChart) ? control.targetWidth : 0;\n var lx = location.x;\n var ly = location.y;\n var y = location.y + (-height / 2);\n var x = location.x + (-width / 2);\n var eq = 72;\n var xVal;\n var yVal;\n switch (shape) {\n case 'Bubble':\n case 'Circle':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': lx, 'cy': ly });\n break;\n case 'Cross':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' +\n (ly + (-height / 2));\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'Multiply':\n dir = 'M ' + (lx - sizeBullet) + ' ' + (ly - sizeBullet) + ' L ' +\n (lx + sizeBullet) + ' ' + (ly + sizeBullet) + ' M ' +\n (lx - sizeBullet) + ' ' + (ly + sizeBullet) + ' L ' + (lx + sizeBullet) + ' ' + (ly - sizeBullet);\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'HorizontalLine':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly;\n merge(options, { 'd': dir });\n break;\n case 'VerticalLine':\n dir = 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Diamond':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + ly + ' z';\n merge(options, { 'd': dir });\n break;\n case 'ActualRect':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 8)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'TargetRect':\n dir = 'M' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Rectangle':\n case 'Hilo':\n case 'HiloOpenClose':\n case 'Candle':\n case 'Waterfall':\n case 'BoxAndWhisker':\n case 'StepArea':\n case 'StackingStepArea':\n case 'Square':\n case 'Flag':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pyramid':\n case 'Triangle':\n dir = 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Funnel':\n case 'InvertedTriangle':\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pentagon':\n for (var i = 0; i <= 5; i++) {\n xVal = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yVal = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n dir = 'M' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ';\n }\n else {\n dir = dir.concat('L' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ');\n }\n }\n dir = dir.concat('Z');\n merge(options, { 'd': dir });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n options = calculateLegendShapes(location, new Size(width, height), shape, options).renderOption;\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nexport function getRectLocation(startLocation, endLocation, outerRect) {\n var x = (endLocation.x < outerRect.x) ? outerRect.x :\n (endLocation.x > (outerRect.x + outerRect.width)) ? outerRect.x + outerRect.width : endLocation.x;\n var y = (endLocation.y < outerRect.y) ? outerRect.y :\n (endLocation.y > (outerRect.y + outerRect.height)) ? outerRect.y + outerRect.height : endLocation.y;\n return new Rect((x > startLocation.x ? startLocation.x : x), (y > startLocation.y ? startLocation.y : y), Math.abs(x - startLocation.x), Math.abs(y - startLocation.y));\n}\n/** @private */\nexport function minMax(value, min, max) {\n return value > max ? max : (value < min ? min : value);\n}\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n templateFn = templateComplier(template);\n }\n return templateFn;\n}\n/** @private */\nexport function accReactTemplate(childElement, chart, isTemplate, points, argsData, point, datalabelGroup, id, dataLabel, redraw) {\n var clientRect = childElement.getBoundingClientRect();\n chart.accumulationDataLabelModule.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, true);\n}\n/** @private */\nexport function chartReactTemplate(childElement, chart, point, series, labelIndex, redraw) {\n var parentElement = document.getElementById(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabelCollections');\n if (parentElement) {\n if (point.index === 0) {\n chart.dataLabelCollections = []; // clear old datalabel bounds for react callback\n }\n chart.dataLabelModule.calculateTemplateLabelSize(parentElement, childElement, point, series, series.marker.dataLabel, labelIndex, series.clipRect, redraw, true);\n }\n}\n/** @private */\nexport function createTemplate(childElement, pointIndex, content, chart, point, series, dataLabelId, labelIndex, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw) {\n var templateFn = getTemplateFunction(content);\n var templateElement;\n try {\n var blazor = 'Blazor';\n var tempObject = window[blazor] ? (dataLabelId ? point : { point: point }) :\n { chart: chart, series: series, point: point };\n var templateId = dataLabelId ? dataLabelId + '_template' : 'template';\n var elementData = templateFn ? templateFn(tempObject, chart, templateId, dataLabelId ||\n childElement.id.replace(/[^a-zA-Z0-9]/g, '')) : [];\n if (elementData.length) {\n templateElement = Array.prototype.slice.call(elementData);\n var len = templateElement.length;\n for (var i = 0; i < len; i++) {\n childElement.appendChild(templateElement[i]);\n }\n }\n var reactCallback = void 0;\n if (chart.getModuleName() === 'accumulationchart') {\n reactCallback = accReactTemplate.bind(this, childElement, chart, isTemplate, points, argsData, points[pointIndex], datalabelGroup, id, dataLabel, redraw);\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n else if (chart.getModuleName() === 'chart') {\n reactCallback = (point && series) ? chartReactTemplate.bind(this, childElement, chart, point, series, labelIndex, redraw) : reactCallback;\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n }\n catch (e) {\n return childElement;\n }\n return childElement;\n}\n/** @private */\nexport function getFontStyle(font) {\n var style = '';\n style = 'font-size:' + font.size +\n '; font-style:' + font.fontStyle + '; font-weight:' + font.fontWeight +\n '; font-family:' + font.fontFamily + ';opacity:' + font.opacity +\n '; color:' + font.color + ';';\n return style;\n}\n/** @private */\nexport function measureElementRect(element, redraw, isReactCallback) {\n if (redraw === void 0) { redraw = false; }\n if (!isReactCallback) { // If the element is already in DOM, no need to append in the body.\n document.body.appendChild(element);\n }\n var bounds = element.getBoundingClientRect();\n if (redraw) {\n remove(element);\n }\n else if (!isReactCallback) { // for react chart data label template - (callback function)\n removeElement(element.id);\n }\n return bounds;\n}\n/** @private */\nexport function findlElement(elements, id) {\n var element;\n for (var i = 0, length_1 = elements.length; i < length_1; i++) {\n if (elements[i].id.indexOf(id) > -1) {\n element = elements[i];\n continue;\n }\n }\n return element;\n}\n/** @private */\nexport function getPoint(x, y, xAxis, yAxis, isInverted) {\n x = ((xAxis.valueType === 'Logarithmic') ?\n logBase(((x > 0) ? x : Math.pow(xAxis.logBase, xAxis.visibleRange.min)), xAxis.logBase) : x);\n y = ((yAxis.valueType === 'Logarithmic') ?\n logBase(((y > 0) ? y : Math.pow(yAxis.logBase, yAxis.visibleRange.min)), yAxis.logBase) : y);\n x = valueToCoefficient(x, xAxis);\n y = valueToCoefficient(y, yAxis);\n var xLength = (isInverted ? xAxis.rect.height : xAxis.rect.width);\n var yLength = (isInverted ? yAxis.rect.width : yAxis.rect.height);\n var locationX = isInverted ? y * (yLength) : x * (xLength);\n var locationY = isInverted ? (1 - x) * (xLength) : (1 - y) * (yLength);\n return new ChartLocation(locationX, locationY);\n}\n/** @private */\nexport function appendElement(child, parent, redraw, animate, x, y) {\n if (redraw === void 0) { redraw = false; }\n if (animate === void 0) { animate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (child && child.hasChildNodes() && parent) {\n appendChildElement(false, parent, child, redraw, animate, x, y);\n }\n else {\n return null;\n }\n}\n/**\n * Method to append child element\n *\n * @param {boolean} isCanvas canvas mode value\n * @param {Element} parent parent element\n * @param {Element} childElement childElement element\n * @param {boolean} redraw chart redraw value\n * @param {boolean} isAnimate animation value\n * @param {string} x x position\n * @param {string} y y position\n * @param {ChartLocation} start start location value\n * @param {string} direction direction of the element\n * @param {boolean} forceAnimate forceAnimate\n * @param {boolean} isRect isRect\n * @param {Rect} previousRect previousRect\n * @param {number} animateDuration duration of the animation\n */\nexport function appendChildElement(isCanvas, parent, childElement, redraw, isAnimate, x, y, start, direction, forceAnimate, isRect, previousRect, animateDuration) {\n if (isAnimate === void 0) { isAnimate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n if (isRect === void 0) { isRect = false; }\n if (previousRect === void 0) { previousRect = null; }\n if (isCanvas) {\n return null;\n }\n var existChild = parent.querySelector('#' + childElement.id);\n var element = (existChild || getElement(childElement.id));\n var child = childElement;\n var duration = animateDuration ? animateDuration : 300;\n if (redraw && isAnimate && element) {\n start = start || (element.tagName === 'DIV' ?\n new ChartLocation(+(element.style[x].split('px')[0]), +(element.style[y].split('px')[0])) :\n new ChartLocation(+element.getAttribute(x), +element.getAttribute(y)));\n if (direction && direction !== 'undefined') {\n pathAnimation(childElement, childElement.getAttribute('d'), redraw, direction, duration);\n }\n else if (isRect && previousRect) {\n animateRectElement(child, 0, duration, new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')), previousRect);\n }\n else {\n var end = child.tagName === 'DIV' ?\n new ChartLocation(+(child.style[x].split('px')[0]), +(child.style[y].split('px')[0])) :\n new ChartLocation(+child.getAttribute(x), +child.getAttribute(y));\n animateRedrawElement(child, duration, start, end, x, y);\n }\n }\n else if (redraw && isAnimate && !element && forceAnimate) {\n templateAnimate(child, 0, 600, 'FadeIn');\n }\n if (existChild) {\n parent.replaceChild(child, element);\n }\n else {\n parent.appendChild(child);\n }\n}\n/** @private */\nexport function getDraggedRectLocation(x1, y1, x2, y2, outerRect) {\n var width = Math.abs(x1 - x2);\n var height = Math.abs(y1 - y2);\n var x = Math.max(checkBounds(Math.min(x1, x2), width, outerRect.x, outerRect.width), outerRect.x);\n var y = Math.max(checkBounds(Math.min(y1, y2), height, outerRect.y, outerRect.height), outerRect.y);\n return new Rect(x, y, Math.min(width, outerRect.width), Math.min(height, outerRect.height));\n}\n/** @private */\nexport function checkBounds(start, size, min, max) {\n if (start < min) {\n start = min;\n }\n else if ((start + size) > (max + min)) {\n start = (max + min) - size;\n }\n return start;\n}\n/** @private */\nexport function getLabelText(currentPoint, series, chart) {\n var labelFormat = series.yAxis.labelFormat;\n var text = [];\n var customLabelFormat = labelFormat.match('{value}') !== null;\n switch (series.seriesType) {\n case 'XY':\n /**\n * I255790\n * For Polar radar series, the dataLabel appears out of range when axis range is given for yaxis\n * Cause: Since symbol location for the points which did not lies in within range, lies outside of seriesRect.\n * Fix: DataLabel rendered after checking WithIn for the points\n */\n if (series.chart.chartAreaType === 'PolarRadar') {\n if (series.drawType.indexOf('Stacking') !== -1) {\n if ((series.yAxis.valueType === 'Logarithmic' &&\n logWithIn(series.stackedValues.endValues[currentPoint.index], series.yAxis)) ||\n withIn(series.stackedValues.endValues[currentPoint.index], series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n else {\n if ((series.yAxis.valueType === 'Logarithmic' && logWithIn(currentPoint.yValue, series.yAxis)) ||\n withIn(currentPoint.yValue, series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n }\n else {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n break;\n case 'HighLow':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n break;\n case 'HighLowOpenClose':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.max(currentPoint.open, currentPoint.close).toString());\n text.push(currentPoint.text || Math.min(currentPoint.open, currentPoint.close).toString());\n break;\n case 'BoxPlot':\n text.push(currentPoint.text || currentPoint.median.toString());\n text.push(currentPoint.text || currentPoint.maximum.toString());\n text.push(currentPoint.text || currentPoint.minimum.toString());\n text.push(currentPoint.text || currentPoint.upperQuartile.toString());\n text.push(currentPoint.text || currentPoint.lowerQuartile.toString());\n for (var _i = 0, _a = currentPoint.outliers; _i < _a.length; _i++) {\n var liers = _a[_i];\n text.push(currentPoint.text || liers.toString());\n }\n break;\n }\n if (labelFormat && !currentPoint.text) {\n series.yAxis.format = chart.intl.getNumberFormat({\n format: customLabelFormat ? '' : labelFormat,\n useGrouping: chart.useGroupingSeparator\n });\n for (var i = 0; i < text.length; i++) {\n text[i] = customLabelFormat ? labelFormat.replace('{value}', series.yAxis.format(parseFloat(text[i]))) :\n series.yAxis.format(parseFloat(text[i]));\n }\n }\n return text;\n}\n/** @private */\nexport function stopTimer(timer) {\n window.clearInterval(timer);\n}\n/** @private */\nexport function isCollide(rect, collections, clipRect) {\n var currentRect = new Rect(rect.x + clipRect.x, rect.y + clipRect.y, rect.width, rect.height);\n var isCollide = collections.some(function (rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n });\n return isCollide;\n}\n/** @private */\nexport function isOverlap(currentRect, rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n}\n/** @private */\nexport function containsRect(currentRect, rect) {\n return (currentRect.x <= rect.x && currentRect.x + currentRect.width >= rect.x + rect.width &&\n currentRect.y <= rect.y && currentRect.height + currentRect.y >= rect.y + rect.height);\n}\n/** @private */\nexport function calculateRect(location, textSize, margin) {\n return new Rect((location.x - (textSize.width / 2) - margin.left), (location.y - (textSize.height / 2) - margin.top), textSize.width + margin.left + margin.right, textSize.height + margin.top + margin.bottom);\n}\n/** @private */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/** @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/** @private */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/** @private */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n document.body.appendChild(createElement('text', { id: 'chartmeasuretext' }));\n var element = document.getElementById('chartmeasuretext');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n remove(element);\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/** @private */\nexport function getSaturationColor(color, factor) {\n color = colorNameToHex(color);\n color = color.replace(/[^0-9a-f]/gi, '');\n if (color.length < 6) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n factor = factor || 0;\n // convert to decimal and change luminosity\n var rgb = '#';\n var colorCode;\n for (var i = 0; i < 3; i++) {\n colorCode = parseInt(color.substr(i * 2, 2), 16);\n colorCode = Math.round(Math.min(Math.max(0, colorCode + (colorCode * factor)), 255));\n rgb += ('00' + colorCode.toString(16)).substr(colorCode.toString(16).length);\n }\n return rgb;\n}\n/** @private */\nexport function getMedian(values) {\n var half = Math.floor(values.length / 2);\n return values.length % 2 ? values[half] : ((values[half - 1] + values[half]) / 2.0);\n}\n/** @private */\nexport function calculateLegendShapes(location, size, shape, options) {\n var padding = 10;\n var dir = '';\n var space = 2;\n var height = size.height;\n var width = size.width;\n var lx = location.x;\n var ly = location.y;\n switch (shape) {\n case 'MultiColoredLine':\n case 'Line':\n case 'StackingLine':\n case 'StackingLine100':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly);\n merge(options, { 'd': dir });\n break;\n case 'StepLine':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2) - (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx +\n (-width / 2) + (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 2) + (width / 10))\n + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10)) + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10))\n + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' +\n ' ' + (lx + (width / 5)) + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly +\n (-height / 2)) + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + '' + (lx + (width / 2)\n + (padding / 4)) + ' ' + (ly + (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'UpArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2) + (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly + (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'DownArrow':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2) - (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly - (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'RightArrow':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' L' + ' ' + (lx + (-width / 2)) + ' ' +\n (ly + (height / 2) - space) + ' ' + 'L' + ' ' + (lx + (width / 2) - (2 * space)) + ' ' + (ly) +\n ' L' + (lx + (-width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'LeftArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2) - space) + ' L' + ' ' + (lx + (-width / 2) + (2 * space))\n + ' ' + (ly) + ' L' + (lx + (width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Column':\n case 'Pareto':\n case 'StackingColumn':\n case 'StackingColumn100':\n case 'RangeColumn':\n case 'Histogram':\n dir = 'M' + ' ' + (lx - 3 * (width / 5)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx - 3 *\n (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' +\n (lx + (-width / 10) - (width / 20)) + ' ' + (ly - (height / 4) - (padding / 2))\n + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly - (height / 4) -\n (padding / 2)) + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly\n + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 10) - (width / 20)) + ' ' + (ly +\n (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + 3 * (width / 5)) + ' ' + (ly) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n dir = 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 5)) + ' '\n + 'L' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'L' + ' ' +\n (lx - (width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'Z' + ' '\n + 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - (height / 5)\n + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4)) + ' ' + (ly\n - (height / 5) + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4))\n + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'L' + ' ' + (lx - (width / 2)\n + (-padding / 4)) + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + (lx - (width / 2) + (-padding / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 2)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx - (width / 2) + (-padding / 4))\n + ' ' + (ly + (height / 2) + (padding / 10)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Spline':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' '\n + lx + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5))\n + ' ' + 'M' + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx\n + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Area':\n case 'MultiColoredArea':\n case 'RangeArea':\n case 'StackingArea':\n case 'StackingArea100':\n dir = 'M' + ' ' + (lx - (width / 2) - (padding / 4)) + ' ' + (ly + (height / 2))\n + ' ' + 'L' + ' ' + (lx + (-width / 4) + (-padding / 8)) + ' ' + (ly - (height / 2))\n + ' ' + 'L' + ' ' + (lx) + ' ' + (ly + (height / 4)) + ' ' + 'L' + ' ' + (lx\n + (width / 4) + (padding / 8)) + ' ' + (ly + (-height / 2) + (height / 4)) + ' '\n + 'L' + ' ' + (lx + (height / 2) + (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'SplineArea':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + lx\n + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx + (width / 2)) + ' '\n + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2)) + ' ' + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Pie':\n case 'Doughnut':\n options.stroke = 'transparent';\n // eslint-disable-next-line no-case-declarations\n var r = Math.min(height, width) / 2;\n dir = getAccumulationLegend(lx, ly, r, height, width, shape);\n merge(options, { 'd': dir });\n break;\n }\n return { renderOption: options };\n}\n/** @private */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth) {\n return label;\n }\n }\n }\n return label;\n}\n/** @private */\nexport function lineBreakLabelTrim(maxWidth, text, font) {\n var labelCollection = [];\n var breakLabels = text.split('
');\n for (var i = 0; i < breakLabels.length; i++) {\n text = breakLabels[i];\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i_1 = textLength - 1; i_1 >= 0; --i_1) {\n text = text.substring(0, i_1) + '...';\n size = measureText(text, font).width;\n if (size <= maxWidth) {\n labelCollection.push(text);\n break;\n }\n }\n }\n else {\n labelCollection.push(text);\n }\n }\n return labelCollection;\n}\n/** @private */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/** @private */\nexport function redrawElement(redraw, id, options, renderer) {\n if (!redraw) {\n return null;\n }\n var element = getElement(id);\n if (element && options) {\n renderer.setElementAttributes(options, element.tagName === 'clipPath' ? element.childNodes[0] : element);\n }\n return element;\n}\n/** @private */\nexport function animateRedrawElement(element, duration, start, end, x, y) {\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n var isDiv = element.tagName === 'DIV';\n var setStyle = function (xValue, yValue) {\n if (isDiv) {\n element.style[x] = xValue + 'px';\n element.style[y] = yValue + 'px';\n }\n else {\n element.setAttribute(x, xValue + '');\n element.setAttribute(y, yValue + '');\n }\n };\n setStyle(start.x, start.y);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n setStyle(linear(args.timeStamp, start.x, end.x - start.x, args.duration), linear(args.timeStamp, start.y, end.y - start.y, args.duration));\n },\n end: function () {\n setStyle(end.x, end.y);\n }\n });\n}\n/** @private */\nexport function textElement(renderer, option, font, color, parent, isMinus, redraw, isAnimate, forceAnimate, animateDuration, seriesClipRect, labelSize, isRotatedLabelIntersect, isCanvas) {\n if (isMinus === void 0) { isMinus = false; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n var renderOptions = {};\n var tspanElement;\n //let renderer: SvgRenderer = new SvgRenderer('');\n var height;\n var dy;\n var label;\n renderOptions = {\n 'id': option.id,\n 'x': option.x,\n 'y': option.y,\n 'fill': color ? color : 'black',\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': option.anchor,\n 'labelRotation': option.labelRotation,\n 'transform': option.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': option.baseLine\n };\n var text = typeof option.text === 'string' ? option.text : isMinus ? option.text[option.text.length - 1] : option.text[0];\n var transX = seriesClipRect ? seriesClipRect.x : 0;\n var transY = seriesClipRect ? seriesClipRect.y : 0;\n var htmlObject = renderer.createText(renderOptions, text, transX, transY);\n htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.color = font.color;\n htmlObject.style.textAnchor = option.anchor;\n if (typeof option.text !== 'string' && option.text.length > 1) {\n for (var i = 1, len = option.text.length; i < len; i++) {\n height = (measureText(option.text[i], font).height);\n dy = (option.y) + ((isMinus) ? -(i * height) : (i * height));\n label = isMinus ? option.text[option.text.length - (i + 1)] : option.text[i];\n if (isCanvas) {\n tspanElement = renderer.createText(renderOptions, label, null, null, dy, true);\n }\n else {\n tspanElement = renderer.createTSpan({\n 'x': option.x, 'id': option.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n }\n if (!isRotatedLabelIntersect) {\n appendChildElement(renderer instanceof CanvasRenderer, parent, htmlObject, redraw, isAnimate, 'x', 'y', null, null, forceAnimate, false, null, animateDuration);\n }\n return htmlObject;\n}\n/**\n * Method to calculate the width and height of the chart\n */\nexport function calculateSize(chart) {\n // fix for Chart rendered with default width in IE issue\n var containerWidth = chart.element.clientWidth || chart.element.offsetWidth;\n var containerHeight = chart.element.clientHeight;\n if (chart.stockChart) {\n containerWidth = chart.stockChart.element.clientWidth;\n }\n var height = 450;\n var marginHeight;\n if (chart.getModuleName() === 'rangeNavigator') {\n var range = chart;\n var tooltipSpace = range.tooltip.enable ? 35 : 0;\n var periodHeight = range.periodSelectorSettings.periods.length ?\n range.periodSelectorSettings.height : 0;\n marginHeight = range.margin.top + range.margin.bottom + tooltipSpace;\n var labelSize = measureText('tempString', range.labelStyle).height;\n var labelPadding = 15;\n height = (chart.series.length ? (Browser.isDevice ? 80 : 120) : ((range.enableGrouping ? (40 + labelPadding + labelSize) : 40)\n + marginHeight)) + periodHeight;\n if (range.disableRangeSelector) {\n height = periodHeight;\n }\n }\n chart.availableSize = new Size(stringToNumber(chart.width, containerWidth) || containerWidth || 600, stringToNumber(chart.height, containerHeight || height) || containerHeight || height);\n}\n/**\n * To create svg element.\n *\n * @param {Chart} chart chart instance\n */\nexport function createSvg(chart) {\n chart.canvasRender = new CanvasRenderer(chart.element.id);\n chart.renderer = chart.enableCanvas ? chart.canvasRender : new SvgRenderer(chart.element.id);\n calculateSize(chart);\n if (chart.stockChart && chart.getModuleName() === 'chart') {\n chart.svgObject = chart.stockChart.chartObject;\n }\n else if (chart.stockChart && chart.getModuleName() === 'rangeNavigator') {\n chart.svgObject = chart.stockChart.selectorObject;\n }\n else {\n if (chart.enableCanvas) {\n chart.svgObject = chart.renderer.createCanvas({\n id: chart.element.id + '_canvas',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n else {\n chart.svgObject = chart.renderer.createSvg({\n id: chart.element.id + '_svg',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n }\n}\n/**\n * To calculate chart title and height\n *\n * @param {string} title text of the title\n * @param {FontModel} style style of the title\n * @param {number} width width of the title\n */\nexport function getTitle(title, style, width) {\n var titleCollection = [];\n switch (style.textOverflow) {\n case 'Wrap':\n titleCollection = textWrap(title, width, style);\n break;\n case 'Trim':\n titleCollection.push(textTrim(width, title, style));\n break;\n default:\n titleCollection.push(title);\n break;\n }\n return titleCollection;\n}\n/**\n * Method to calculate x position of title\n */\nexport function titlePositionX(rect, titleStyle) {\n var positionX;\n if (titleStyle.textAlignment === 'Near') {\n positionX = rect.x;\n }\n else if (titleStyle.textAlignment === 'Center') {\n positionX = rect.x + rect.width / 2;\n }\n else {\n positionX = rect.x + rect.width;\n }\n return positionX;\n}\n/**\n * Method to find new text and element size based on textOverflow\n */\nexport function textWrap(currentLabel, maximumWidth, font) {\n var textCollection = currentLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n * Method to support the subscript and superscript value to text\n */\nexport function getUnicodeText(text, regexp) {\n var title = text.replace(regexp, ' ');\n var digit = text.match(regexp);\n var digitSpecific = ' ';\n var convertedText = ' ';\n var k = 0;\n var unicodeSub = {\n '0': '\\u2080', '1': '\\u2081', '2': '\\u2082', '3': '\\u2083', '4': '\\u2084',\n '5': '\\u2085', '6': '\\u2086', '7': '\\u2087', '8': '\\u2088', '9': '\\u2089'\n };\n var unicodeSup = {\n '0': '\\u2070', '1': '\\u00B9', '2': '\\u00B2', '3': '\\u00B3', '4': '\\u2074',\n '5': '\\u2075', '6': '\\u2076', '7': '\\u2077', '8': '\\u2078', '9': '\\u2079'\n };\n for (var i = 0; i <= title.length - 1; i++) {\n if (title[i] === ' ') {\n digitSpecific = (regexp === regSub) ? digit[k].replace(/~/g, '') : digit[k].replace(/\\^/g, '');\n for (var j = 0; j < digitSpecific.length; j++) {\n convertedText += (regexp === regSub) ? unicodeSub[digitSpecific[j]] : unicodeSup[digitSpecific[j]];\n }\n k++;\n }\n else {\n convertedText += title[i];\n }\n }\n return convertedText.trim();\n}\n/**\n * Method to reset the blazor templates\n */\nexport function blazorTemplatesReset(control) {\n for (var i = 0; i < control.annotations.length; i++) {\n resetBlazorTemplate((control.element.id + '_Annotation_' + i).replace(/[^a-zA-Z0-9]/g, ''), 'ContentTemplate');\n }\n //This reset the tooltip templates\n resetBlazorTemplate(control.element.id + '_tooltipparent_template' + '_blazorTemplate', 'Template');\n //Datalabel templates reset\n resetBlazorTemplate(control.element.id + '_DataLabel');\n}\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar StackValues = /** @class */ (function () {\n function StackValues(startValue, endValue) {\n this.startValues = startValue;\n this.endValues = endValue;\n }\n return StackValues;\n}());\nexport { StackValues };\n/** @private */\nvar RectOption = /** @class */ (function (_super) {\n __extends(RectOption, _super);\n function RectOption(id, fill, border, opacity, rect, rx, ry, transform, dashArray) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity, dashArray) || this;\n _this.y = rect.y;\n _this.x = rect.x;\n _this.height = rect.height;\n _this.width = rect.width;\n _this.rx = rx ? rx : 0;\n _this.ry = ry ? ry : 0;\n _this.transform = transform ? transform : '';\n _this.stroke = (border.width !== 0 && _this.stroke !== '') ? border.color : 'transparent';\n return _this;\n }\n return RectOption;\n}(PathOption));\nexport { RectOption };\n/** @private */\nvar ImageOption = /** @class */ (function () {\n function ImageOption(height, width, href, x, y, id, visibility, preserveAspectRatio) {\n this.height = height;\n this.width = width;\n this.href = href;\n this.x = x;\n this.y = y;\n this.id = id;\n this.visibility = visibility;\n this.preserveAspectRatio = preserveAspectRatio;\n }\n return ImageOption;\n}());\nexport { ImageOption };\n/** @private */\nvar CircleOption = /** @class */ (function (_super) {\n __extends(CircleOption, _super);\n function CircleOption(id, fill, border, opacity, cx, cy, r) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity) || this;\n _this.cy = cy;\n _this.cx = cx;\n _this.r = r;\n return _this;\n }\n return CircleOption;\n}(PathOption));\nexport { CircleOption };\n/** @private */\nvar PolygonOption = /** @class */ (function () {\n function PolygonOption(id, points, fill) {\n this.id = id;\n this.points = points;\n this.fill = fill;\n }\n return PolygonOption;\n}());\nexport { PolygonOption };\n/** @private */\nvar ChartLocation = /** @class */ (function () {\n function ChartLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return ChartLocation;\n}());\nexport { ChartLocation };\n/** @private */\nvar LabelLocation = /** @class */ (function () {\n function LabelLocation(x, y) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n return LabelLocation;\n}());\nexport { LabelLocation };\n/** @private */\nvar Thickness = /** @class */ (function () {\n function Thickness(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n return Thickness;\n}());\nexport { Thickness };\n/** @private */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/** @private */\nvar PointData = /** @class */ (function () {\n function PointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.lierIndex = index;\n }\n return PointData;\n}());\nexport { PointData };\n/** @private */\nvar AccPointData = /** @class */ (function () {\n function AccPointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.index = index;\n }\n return AccPointData;\n}());\nexport { AccPointData };\n/** @private */\nvar ControlPoints = /** @class */ (function () {\n function ControlPoints(controlPoint1, controlPoint2) {\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n }\n return ControlPoints;\n}());\nexport { ControlPoints };\n/** @private */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbgColorValue;\n if (Number(value) === colorMap.start) {\n color = colorMap.colors[0];\n }\n else if (Number(value) === colorMap.end) {\n color = colorMap.colors[colorMap.colors.length - 1];\n }\n else {\n rbgColorValue = getGradientColor(Number(value), colorMap);\n color = convertToHexCode(rbgColorValue);\n }\n return color;\n}\n/** @private */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.start;\n var nextOffset = colorMap.end;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.colors.length <= 2) {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n }\n else {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n var a = full / (colorMap.colors.length - 1);\n var b = void 0;\n var c = void 0;\n var length_2 = colorMap.colors.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_2; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.colors[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value <= splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/** @private */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/** @private */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { subtractThickness, valueToCoefficient, sum, redrawElement, isBreakLabel, ChartLocation } from '../../common/utils/helper';\nimport { subArray, inside, appendChildElement } from '../../common/utils/helper';\nimport { Thickness, logBase, createZoomingLabels, getElement } from '../../common/utils/helper';\nimport { Size, Rect, measureText, TextOption, PathOption } from '@syncfusion/ej2-svg-base';\nimport { textElement, textTrim, getRotatedRectangleCoordinates, isRotatedRectIntersect, isZoomSet } from '../../common/utils/helper';\n/**\n * Specifies the Cartesian Axis Layout.\n */\nvar axisPadding = 10;\nvar CartesianAxisLayoutPanel = /** @class */ (function () {\n /** @private */\n function CartesianAxisLayoutPanel(chartModule) {\n this.chart = chartModule;\n this.padding = 5;\n }\n /**\n * Measure the axis size.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureAxis = function (rect) {\n var chart = this.chart;\n this.crossAt(chart);\n this.seriesClipRect = new Rect(rect.x, rect.y, rect.width, rect.height);\n this.initialClipRect = rect;\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with initial Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (!this.chart.delayRedraw) {\n this.calculateAxisSize(this.initialClipRect);\n }\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with series Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (!this.chart.delayRedraw) {\n chart.refreshAxis();\n this.calculateAxisSize(this.seriesClipRect);\n }\n };\n CartesianAxisLayoutPanel.prototype.measureRowAxis = function (chart, rect) {\n var row;\n this.calculateRowSize(rect);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n row = item;\n row.nearSizes = [];\n row.farSizes = [];\n this.arrangeAxis(row);\n this.measureDefinition(row, chart, new Size(chart.availableSize.width, row.computedHeight));\n if (this.leftSize < sum(row.nearSizes)) {\n this.leftSize = sum(row.nearSizes);\n }\n if (this.rightSize < sum(row.farSizes)) {\n this.rightSize = sum(row.farSizes);\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.measureColumnAxis = function (chart, rect) {\n var column;\n this.calculateColumnSize(rect);\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var item = _a[_i];\n column = item;\n column.farSizes = [];\n column.nearSizes = [];\n this.arrangeAxis(column);\n this.measureDefinition(column, chart, new Size(column.computedWidth, chart.availableSize.height));\n if (this.bottomSize < sum(column.nearSizes)) {\n this.bottomSize = sum(column.nearSizes);\n }\n if (this.topSize < sum(column.farSizes)) {\n this.topSize = sum(column.farSizes);\n }\n }\n };\n /**\n * Measure the column and row in chart.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureDefinition = function (definition, chart, size) {\n var ele = 16; // scrollbar element height is 16.\n for (var _i = 0, _a = definition.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n axis.scrollBarHeight = chart.scrollBarModule && chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0) ? ele : 0;\n axis.scrollBarHeight = chart.scrollBarModule && (chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)\n || axis.scrollbarSettings.enable) ? ele : 0;\n axis.getModule(chart);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n definition.computeSize(axis, axis.scrollBarHeight);\n }\n if (definition.farSizes.length > 0) {\n definition.farSizes[definition.farSizes.length - 1] -= axisPadding;\n }\n if (definition.nearSizes.length > 0) {\n definition.nearSizes[definition.nearSizes.length - 1] -= axisPadding;\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.calculateAxisSize = function (rect) {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var axis;\n var nearCount = 0;\n var farCount = 0;\n var size = 0;\n var x;\n var y;\n var axisOffset;\n this.calculateRowSize(rect);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_1 = row.axes.length; j < len_1; j++) {\n axis = row.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.height === 0) {\n axis.rect.height = row.computedHeight;\n size = 0;\n for (var k = i + 1, len_2 = i + axis.span; k < len_2; k++) {\n definition = chart.rows[k];\n size += definition.computedHeight;\n }\n axis.rect.y = (row.computedTop - size) + (axis.plotOffsetTop ? axis.plotOffsetTop : axisOffset);\n axis.rect.height = (axis.rect.height + size) -\n (this.getAxisOffsetValue(axis.plotOffsetTop, axis.plotOffsetBottom, axis.plotOffset));\n axis.rect.width = 0;\n }\n if (axis.opposedPosition) {\n x = rect.x + rect.width + sum(subArray(row.farSizes, farCount));\n axis.rect.x = axis.rect.x >= x ? axis.rect.x : x;\n farCount++;\n }\n else {\n x = rect.x - sum(subArray(row.nearSizes, nearCount));\n axis.rect.x = axis.rect.x <= x ? axis.rect.x : x;\n nearCount++;\n }\n }\n }\n this.calculateColumnSize(rect);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_3 = column.axes.length; j < len_3; j++) {\n axis = column.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.width === 0) {\n for (var k = i, len_4 = (i + axis.span); k < len_4; k++) {\n definition = chart.columns[k];\n axis.rect.width += definition.computedWidth;\n }\n axis.rect.x = column.computedLeft + (axis.plotOffsetLeft ? axis.plotOffsetLeft : axisOffset);\n axis.rect.width -= (this.getAxisOffsetValue(axis.plotOffsetLeft, axis.plotOffsetRight, axis.plotOffset));\n axis.rect.height = 0;\n }\n if (axis.opposedPosition) {\n y = rect.y - sum(subArray(column.farSizes, farCount));\n axis.rect.y = axis.rect.y <= y ? axis.rect.y : y;\n farCount++;\n }\n else {\n y = rect.y + rect.height + sum(subArray(column.nearSizes, nearCount));\n axis.rect.y = axis.rect.y >= y ? axis.rect.y : y;\n nearCount++;\n }\n }\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measure = function () {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var actualIndex;\n var span;\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n //definition.Axes = axis;\n if (axis.orientation === 'Vertical') {\n chart.verticalAxes.push(axis);\n actualIndex = this.getActualRow(axis);\n row = chart.rows[actualIndex];\n this.pushAxis(row, axis);\n span = ((actualIndex + axis.span) > chart.rows.length ? chart.rows.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.rows[j];\n definition.axes[row.axes.length - 1] = axis;\n chart.rows[j] = definition;\n }\n chart.rows[actualIndex] = row;\n }\n else {\n chart.horizontalAxes.push(axis);\n actualIndex = this.getActualColumn(axis);\n column = chart.columns[actualIndex];\n this.pushAxis(column, axis);\n span = ((actualIndex + axis.span) > chart.columns.length ? chart.columns.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.columns[j];\n definition.axes[column.axes.length - 1] = axis;\n chart.columns[j] = definition;\n }\n chart.columns[actualIndex] = column;\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.getAxisOffsetValue = function (position1, position2, plotOffset) {\n var rangeOffset = position1 ? (position1 + (position2 ? position2 :\n plotOffset)) : (position2 ? position2 + plotOffset : 2 * plotOffset);\n return rangeOffset;\n };\n CartesianAxisLayoutPanel.prototype.crossAt = function (chart) {\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n if (axis.crossesAt === null) {\n continue;\n }\n if (!axis.crossesInAxis) {\n if (chart.requireInvertedAxis) {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryXAxis : chart.primaryYAxis;\n }\n else {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryYAxis : chart.primaryXAxis;\n }\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n else {\n for (var i = 2, len = chart.axisCollections.length; i < len; i++) {\n if (axis.crossesInAxis === chart.axisCollections[i].name) {\n axis.crossInAxis = chart.axisCollections[i];\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n }\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.updateCrossAt = function (axis, crossAt) {\n switch (axis.valueType) {\n case 'DateTime':\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n return Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: crossAt }).val))));\n case 'Category':\n return parseFloat(crossAt) ? parseFloat(crossAt) : axis.labels.indexOf(crossAt);\n case 'Logarithmic':\n return logBase(crossAt, axis.logBase);\n default:\n return crossAt;\n }\n };\n CartesianAxisLayoutPanel.prototype.pushAxis = function (definition, axis) {\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (!definition.axes[i]) {\n definition.axes[i] = axis;\n break;\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.arrangeAxis = function (definition) {\n var axisCollection = [];\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (definition.axes[i]) {\n axisCollection.push(definition.axes[i]);\n }\n }\n definition.axes = axisCollection;\n };\n CartesianAxisLayoutPanel.prototype.getActualColumn = function (axis) {\n var actualLength = this.chart.columns.length;\n var pos = axis.columnIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n CartesianAxisLayoutPanel.prototype.getActualRow = function (axis) {\n var actualLength = this.chart.rows.length;\n var pos = axis.rowIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n /**\n * Measure the row size.\n *\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateRowSize = function (rect) {\n /*! Calculate row size */\n var chart = this.chart;\n var row;\n var rowTop = rect.y + rect.height;\n var height = 0;\n var remainingHeight = Math.max(0, rect.height);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n if (row.height.indexOf('%') !== -1) {\n height = Math.min(remainingHeight, (rect.height * parseInt(row.height, 10) / 100));\n }\n else {\n height = Math.min(remainingHeight, parseInt(row.height, 10));\n }\n height = (i !== (len - 1)) ? height : remainingHeight;\n row.computedHeight = height;\n rowTop -= height;\n row.computedTop = rowTop;\n remainingHeight -= height;\n }\n };\n /**\n * Measure the row size.\n *\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateColumnSize = function (rect) {\n /*! Calculate column size */\n var chart = this.chart;\n var column;\n var columnLeft = rect.x;\n var width = 0;\n var remainingWidth = Math.max(0, rect.width);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n if (column.width.indexOf('%') !== -1) {\n width = Math.min(remainingWidth, (rect.width * parseInt(column.width, 10) / 100));\n }\n else {\n width = Math.min(remainingWidth, parseInt(column.width, 10));\n }\n width = (i !== (len - 1)) ? width : remainingWidth;\n column.computedWidth = width;\n column.computedLeft = columnLeft;\n columnLeft += width;\n remainingWidth -= width;\n }\n };\n /**\n * To render the axis element.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.renderAxes = function () {\n var chart = this.chart;\n var axis;\n var axisElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisInsideCollection' });\n var axisLineElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisOutsideCollection' });\n var outsideElement;\n var isInside;\n for (var i = 0, len = chart.axisCollections.length; i < len; i++) {\n axis = chart.axisCollections[i];\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Inside' });\n outsideElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Outside' });\n isInside = this.findAxisPosition(axis);\n if (axis.orientation === 'Horizontal') {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, axis.plotOffset, 0, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0) {\n this.drawXAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawXAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n else {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, 0, axis.plotOffset, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0) {\n this.drawYAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawYAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n if (outsideElement && outsideElement.childNodes.length > 0) {\n axisLineElement.appendChild(outsideElement);\n }\n }\n if (chart.scrollBarModule && ((chart.zoomSettings.enableScrollbar && axis.enableScrollbarOnZooming) ||\n axis.scrollbarSettings.enable)) {\n this.renderScrollbar(chart, axis);\n }\n }\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'DefinitionLine' });\n for (var j = 0, len = chart.rows.length; j < len; j++) {\n var row = chart.rows[j];\n if (row.border.color) {\n this.drawBottomLine(row, j, true);\n }\n }\n for (var j = 0, len = chart.columns.length; j < len; j++) {\n var column = chart.columns[j];\n if (column.border.color) {\n this.drawBottomLine(column, j, false);\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, axisElement, chart.redraw);\n return axisLineElement;\n };\n /**\n * To render the axis scrollbar\n *\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderScrollbar = function (chart, axis) {\n var isZoomed = isNullOrUndefined(chart.zoomModule) ? false : chart.zoomModule.isZoomed;\n if (((isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) || (axis.scrollbarSettings.enable &&\n (axis.zoomFactor <= 1 || axis.zoomPosition >= 0))) &&\n (!axis.zoomingScrollBar.isScrollUI || chart.visibleSeries[0].type.indexOf('Bar') >= 0)) {\n if (!chart.scrollElement) {\n chart.scrollElement = redrawElement(chart.redraw, chart.element.id + '_scrollElement') || createElement('div', { id: chart.element.id + '_scrollElement' });\n }\n appendChildElement(false, chart.scrollElement, axis.zoomingScrollBar.render(true), true);\n }\n else if (axis.zoomFactor === 1 && axis.zoomPosition === 0 && axis.zoomingScrollBar.svgObject && !axis.scrollbarSettings.enable) {\n axis.zoomingScrollBar.destroy();\n }\n if (axis.zoomingScrollBar.isScrollUI) {\n axis.zoomingScrollBar.isScrollUI = false;\n }\n };\n /**\n * To find the axis position\n *\n * @param {Axis} axis axis\n * @returns {boolean} axis position\n */\n CartesianAxisLayoutPanel.prototype.findAxisPosition = function (axis) {\n return axis.crossAt !== null && axis.isInside(axis.crossInAxis.visibleRange);\n };\n /**\n * To render the bootom line of the columns and rows\n *\n * @param {Row | Column} definition definition\n * @param {number} index index\n * @param {boolean} isRow isRow\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawBottomLine = function (definition, index, isRow) {\n var chart = this.chart;\n var optionsLine = {};\n var x1;\n var x2;\n var y1;\n var y2;\n var definitionName;\n if (isRow) {\n definition = definition;\n y1 = y2 = definition.computedTop + definition.computedHeight;\n x1 = this.seriesClipRect.x;\n x2 = x1 + this.seriesClipRect.width;\n definitionName = 'Row';\n }\n else {\n definition = definition;\n x1 = x2 = definition.computedLeft;\n y1 = this.seriesClipRect.y;\n y2 = y1 + this.seriesClipRect.height;\n definitionName = 'Column';\n }\n optionsLine = {\n 'id': chart.element.id + '_AxisBottom_' + definitionName + index,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n 'stroke-width': definition.border.width,\n 'stroke': definition.border.color\n };\n this.htmlObject = chart.renderer.drawLine(optionsLine);\n this.element.appendChild(this.htmlObject);\n };\n /**\n * To render the axis line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} plotX plotX\n * @param {number} plotY plotY\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawAxisLine = function (axis, index, plotX, plotY, parent, rect) {\n var chart = this.chart;\n var optionsLine = {};\n var element = getElement(chart.element.id + 'AxisLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n element = null;\n optionsLine = {\n 'id': chart.element.id + 'AxisLine_' + index,\n 'd': 'M ' + (rect.x - plotX) + ' ' + (rect.y - plotY) +\n ' L ' + (rect.x + rect.width + plotX) + ' ' + (rect.y + rect.height + plotY),\n 'stroke-dasharray': axis.lineStyle.dashArray,\n 'stroke-width': axis.lineStyle.width,\n 'stroke': axis.lineStyle.color || chart.themeStyle.axisLine\n };\n this.htmlObject = chart.renderer.drawPath(optionsLine);\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction);\n };\n /**\n * To render the yAxis grid line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointY = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorGridDirection;\n var tickSize = axis.opposedPosition ? axis.majorTickLines.height : -axis.majorTickLines.height;\n var axisLineSize = (axis.opposedPosition) ? axis.lineStyle.width * 0.5 : -axis.lineStyle.width * 0.5;\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ?\n 0.5 : 0;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.opposedPosition ? axis.scrollBarHeight :\n -axis.scrollBarHeight : 0;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.x - tickSize - axisLineSize) : (rect.x + tickSize + axisLineSize + scrollBarHeight);\n var length = axis.visibleLabels.length;\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks' && length > 0) {\n length += 1;\n }\n var minorGridLines = axis.minorGridLines;\n var minorTickLines = axis.minorTickLines;\n //Gridlines\n for (var i = 0; i < length; i++) {\n tempInterval = !axis.visibleLabels[i] ? (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel\n : axis.visibleLabels[i].value - ticksbwtLabel;\n pointY = valueToCoefficient(tempInterval, axis) * rect.height;\n pointY = (pointY * -1) + (rect.y + rect.height);\n if (pointY >= rect.y && (rect.y + rect.height) >= pointY) {\n if ((inside(tempInterval, axis.visibleRange)) || this.isBorder(axis, i, pointY)) {\n majorGrid = 'M ' + this.seriesClipRect.x + ' ' + (pointY) +\n ' L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + pointY;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (rect.x + axisLineSize + (isTickInside ? scrollBarHeight : 0)) + ' ' + pointY +\n ' L ' + (ticks) + ' ' + pointY;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if ((minorGridLines.width > 0 || minorTickLines.width > 0) && axis.minorTicksPerInterval > 0) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorGridDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorGridDirection[0], minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorGridDirection[1], minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To check the border of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} value value\n * @returns {boolean} check the border of the axis\n */\n CartesianAxisLayoutPanel.prototype.isBorder = function (axis, index, value) {\n var border = this.chart.chartArea.border;\n var rect = this.seriesClipRect;\n var orientation = axis.orientation;\n var start = (orientation === 'Horizontal') ? rect.x : rect.y;\n var size = (orientation === 'Horizontal') ? rect.width : rect.height;\n var startIndex = (orientation === 'Horizontal') ? 0 : axis.visibleLabels.length - 1;\n var endIndex = (orientation === 'Horizontal') ? axis.visibleLabels.length - 1 : 0;\n if (axis.plotOffset > 0) {\n return true;\n }\n else if ((value === start || value === (start + size)) && (border.width <= 0 || border.color === 'transparent')) {\n return true;\n }\n else if ((value !== start && index === startIndex) || (value !== (start + size) && index === endIndex)) {\n return true;\n }\n return false;\n };\n /**\n * To render the yAxis label\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var pointX = 0;\n var pointY = 0;\n var elementSize;\n var labelSpace = axis.labelPadding;\n var options;\n var isAxisBreakLabel;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.opposedPosition;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n padding = (axis.opposedPosition) ? padding : -padding;\n var defaultAnchor = ((isOpposed && isLabelInside) || (!isOpposed && !isLabelInside)) ? 'end' : 'start';\n defaultAnchor = chart.isRtlEnabled ? ((axis.opposedPosition) ? 'end' : 'start') : defaultAnchor;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight * (isOpposed ? 1 : -1) : 0;\n var textHeight;\n var textPadding;\n var maxLineWidth;\n var pixel = 10;\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n isAxisBreakLabel = isBreakLabel(axis.visibleLabels[i].originalText);\n pointX = isLabelInside ? (rect.x - padding) : (rect.x + padding + scrollBarHeight);\n elementSize = isAxisBreakLabel ? axis.visibleLabels[i].breakLabelSize : axis.visibleLabels[i].size;\n pointY = (valueToCoefficient(axis.visibleLabels[i].value, axis) * rect.height) + (chart.stockChart ? 7 : 0);\n pointY = Math.floor((pointY * -1) + (rect.y + rect.height));\n textHeight = ((elementSize.height / 8) * axis.visibleLabels[i].text.length / 2);\n textPadding = ((elementSize.height / 4) * 3) + 3;\n pointY = (isAxisBreakLabel ? (axis.labelPosition === 'Inside' ? (pointY - (elementSize.height / 2) - textHeight + textPadding)\n : (pointY - textHeight)) : (axis.labelPosition === 'Inside' ? (pointY + textPadding) : pointY + (elementSize.height / 4)));\n if (axis.majorGridLines.width > axis.majorTickLines.width) {\n maxLineWidth = axis.majorGridLines.width;\n }\n else {\n maxLineWidth = axis.majorTickLines.width;\n }\n if (axis.labelStyle.textAlignment === 'Far') {\n pointY = pointY - maxLineWidth - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointY = pointY + maxLineWidth + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointY = pointY;\n }\n pointX = isAxisBreakLabel ? this.getAxisLabelXvalue(pointX, axis, elementSize.width) : pointX;\n var anchor = isAxisBreakLabel ? this.getAnchor(axis) : defaultAnchor;\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor, axis.visibleLabels[i].text);\n if (axis.edgeLabelPlacement) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (axis.isInversed && i === len - 1)) && options.y > rect.y + rect.height) ||\n (((i === len - 1) || (axis.isInversed && i === 0)) && options.y - elementSize.height * 0.5 < rect.y)) {\n options.text = '';\n }\n break;\n case 'Shift':\n if ((i === 0 || (axis.isInversed && i === len - 1)) && options.y > rect.y + rect.height) {\n options.y = pointY = rect.y + rect.height;\n }\n else if (((i === len - 1) || (axis.isInversed && i === 0)) && (options.y - elementSize.height * 0.5 < rect.y)) {\n options.y = pointY = rect.y + elementSize.height * 0.5;\n }\n break;\n }\n }\n textElement(chart.renderer, options, axis.labelStyle, axis.labelStyle.color || chart.themeStyle.axisLabel, labelElement, false, chart.redraw, true, true, null, null, null, null, chart.enableCanvas);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n appendChildElement(chart.enableCanvas, parent, labelElement, chart.redraw);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n /**\n * To get X value based on lineBreakAlignment for Y axis line break labels only.\n *\n * @param {number} x text x position\n * @param {Axis} axis y axis values\n * @param {number} textWidth axis label width\n * @returns {number} returns suitable axis label x position\n */\n CartesianAxisLayoutPanel.prototype.getAxisLabelXvalue = function (x, axis, textWidth) {\n var anchor = axis.lineBreakAlignment;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.opposedPosition;\n if ((isOpposed && isLabelInside) || (!isOpposed && !isLabelInside)) {\n return (anchor === 'Right' ? x : (anchor === 'Center' ? (x - textWidth / 2) : (x - textWidth)));\n }\n else {\n return (anchor === 'Left' ? x : (anchor === 'Center' ? (x + textWidth / 2) : (x + textWidth)));\n }\n };\n /**\n * To render the yAxis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisBorder = function (axis, index, parent, rect) {\n if (axis.border.width > 0) {\n var startY = void 0;\n var pointY = void 0;\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n scrollBarHeight = (axis.opposedPosition ? 1 : -1) * scrollBarHeight;\n var gap = (rect.height / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endY = void 0;\n var length_1 = axis.maxLabelSize.width + 10 + ((axis.tickPosition === axis.labelPosition) ?\n axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endX = ((axis.opposedPosition && axis.labelPosition === 'Inside') || (!axis.opposedPosition\n && axis.labelPosition === 'Outside')) ? rect.x - length_1 + scrollBarHeight : rect.x + length_1 + scrollBarHeight;\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointY = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointY = (axis.isInversed ? (1 - pointY) : pointY) * rect.height;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startY = (pointY * -1) + (rect.y + rect.height);\n endY = (pointY * -1) - (gap) + (rect.y + rect.height);\n }\n else {\n startY = (pointY * -1) + gap / 2 + (rect.y + rect.height);\n endY = (pointY * -1) - gap / 2 + (rect.y + rect.height);\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startY > (rect.y + rect.height)) {\n labelBorder += ('M' + ' ' + endX + ' ' + (rect.y + rect.height) + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(rect.y) > (endY)) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX\n + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + (rect.y) + ' ');\n }\n else {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY + ' ' + 'L' + ' ' +\n endX + ' ' + endY + ' ');\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startY > rect.y + rect.height) && !((endY) < Math.floor(rect.y))) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'M' + ' ' + endX + ' ' + endY + ' ' +\n 'L' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle') ? ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + rect.y + ' ' + 'L' + ' ' +\n (rect.x + scrollBarHeight) + ' ' + (rect.y + rect.height) + ' ') : '';\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n if (axis.multiLevelLabels.length > 0 && this.chart.multiLevelLabelModule) {\n this.chart.multiLevelLabelModule.renderYAxisMultiLevelLabels(axis, index, parent, rect);\n }\n };\n /**\n * To render the yAxis title\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var labelRotation = (axis.opposedPosition) ? 90 : -90;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n (axis.maxLabelSize.width + axis.multiLevelLabelHeight + this.padding));\n padding = axis.opposedPosition ? padding + axis.scrollBarHeight : -padding - axis.scrollBarHeight;\n var x = rect.x + padding;\n var y = rect.y + rect.height * 0.5;\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y - axis.labelPadding - titleSize, 'middle', axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitle, parent, null, null, null, null, null, null, null, null, chart.enableCanvas);\n element.setAttribute('tabindex', axis.tabIndex.toString());\n element.setAttribute('aria-label', axis.description || axis.title);\n }\n };\n /**\n * xAxis grid line calculation performed here\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointX = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorDirection;\n var tickSize = (axis.opposedPosition) ? -axis.majorTickLines.height : axis.majorTickLines.height;\n var axisLineSize = (axis.opposedPosition) ? -axis.lineStyle.width * 0.5 : axis.lineStyle.width * 0.5;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.opposedPosition ? -axis.scrollBarHeight :\n axis.scrollBarHeight : 0;\n var ticksbwtLabel = (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks') ?\n 0.5 : 0;\n var length = axis.visibleLabels.length;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.y - tickSize - axisLineSize) : (rect.y + tickSize + axisLineSize + scrollBarHeight);\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && length > 0 && axis.labelPlacement === 'BetweenTicks') {\n length += 1;\n }\n //Gridlines\n for (var i = 0; i < length; i++) {\n if (axis.valueType !== 'DateTimeCategory') {\n tempInterval = axis.visibleLabels[i] ? axis.visibleLabels[i].value - ticksbwtLabel\n : (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel;\n }\n else {\n tempInterval = axis.visibleLabels[i] ?\n axis.visibleLabels[i].value - ticksbwtLabel : axis.visibleRange.max;\n }\n pointX = (valueToCoefficient(tempInterval, axis) * rect.width) + rect.x;\n if (pointX >= rect.x && (rect.x + rect.width) >= pointX) {\n if (inside(tempInterval, axis.visibleRange) || this.isBorder(axis, i, pointX)) {\n majorGrid = 'M ' + pointX + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height) +\n ' L ' + pointX + ' ' + this.seriesClipRect.y;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (pointX) + ' ' + (rect.y + axisLineSize + (isTickInside ? scrollBarHeight : 0))\n + ' L ' + (pointX) + ' ' + ticks;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if (axis.minorTicksPerInterval > 0 && (axis.minorGridLines.width > 0 || axis.minorTickLines.width > 0)) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To render missing minor grid lines while zooming\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} i i\n * @param {number} index index\n * @param {IThemeStyle} chartThemeStyle chartThemeStyle\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderMinorGridOnZooming = function (axis, tempInterval, rect, i, index, chartThemeStyle, parent) {\n var minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i, true);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', -1, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', -1, parent, chartThemeStyle.minorTickLine);\n };\n /**\n * To calcualte the axis minor line\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {string[]} axis minor line path\n */\n CartesianAxisLayoutPanel.prototype.drawAxisMinorLine = function (axis, tempInterval, rect, labelIndex, isFirstLabel) {\n var value = tempInterval;\n var coor = 0;\n var position = 0;\n var range = axis.visibleRange;\n var isTickInside = axis.tickPosition === 'Inside';\n var direction = [];\n var tickSize = axis.opposedPosition ? -axis.minorTickLines.height : axis.minorTickLines.height;\n var logStart;\n var logEnd;\n var logInterval = 1;\n var logPosition = 1;\n var ticksX = isTickInside ? (rect.y - tickSize) : (rect.y + tickSize);\n var ticksY = isTickInside ? (rect.x + tickSize) : (rect.x - tickSize);\n var minorGird = '';\n var minorTick = '';\n if (axis.valueType === 'Logarithmic') {\n logStart = Math.pow(axis.logBase, value - range.interval);\n logEnd = Math.pow(axis.logBase, value);\n logInterval = (logEnd - logStart) / (axis.minorTicksPerInterval + 1);\n logPosition = logStart + logInterval;\n }\n if (axis.orientation === 'Horizontal') {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n logPosition += logInterval;\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil((axis.isInversed ? (1 - position) : position) * rect.width);\n coor = (Math.floor(position + rect.x));\n minorGird = minorGird.concat('M' + ' ' + coor + ' ' + (this.seriesClipRect.y)\n + 'L ' + coor + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height));\n coor = (Math.floor(position + rect.x));\n minorTick = minorTick.concat('M' + ' ' + coor + ' ' + (rect.y)\n + 'L ' + coor + ' ' + (ticksX + axis.scrollBarHeight));\n }\n }\n }\n else {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil(((axis.isInversed ? (1 - position) : position)) * rect.height) * -1; // For inversed axis\n coor = (Math.floor(position + rect.y + rect.height));\n minorGird = minorGird.concat('M' + ' ' + (this.seriesClipRect.x) + ' ' + coor\n + 'L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + coor + ' ');\n coor = (Math.floor(position + rect.y + rect.height));\n minorTick = minorTick.concat('M' + ' ' + rect.x + ' ' + coor + 'L ' + (ticksY - axis.scrollBarHeight) +\n ' ' + coor + ' ');\n }\n logPosition += logInterval;\n }\n }\n direction.push(minorGird);\n direction.push(minorTick);\n return direction;\n };\n /**\n * To find the numeric value of the log\n *\n * @param {Axis} axis axis\n * @param {number} logPosition logPosition\n * @param {number} value value\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {number} value\n */\n CartesianAxisLayoutPanel.prototype.findLogNumeric = function (axis, logPosition, value, labelIndex, isFirstLabel) {\n var range = axis.visibleRange;\n var tempValue;\n if (axis.valueType === 'Logarithmic') {\n value = logBase(logPosition, axis.logBase);\n }\n else if (axis.valueType === 'DateTime') {\n tempValue = axis.dateTimeInterval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n else if (axis.valueType === 'DateTimeCategory') {\n var padding = axis.labelPlacement === 'BetweenTicks' ? 0.5 : 0;\n value += ((axis.visibleLabels[labelIndex + 1] ?\n axis.visibleLabels[labelIndex + 1].value - padding : axis.visibleRange.max) -\n (axis.visibleLabels[labelIndex] ?\n axis.visibleLabels[labelIndex].value - padding : axis.visibleRange.min)) /\n (axis.minorTicksPerInterval + 1);\n }\n else {\n tempValue = range.interval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n return value;\n };\n /**\n * To render the xAxis Labels\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var pointX = 0;\n var pointY = 0;\n var labelSpace = axis.labelPadding;\n var labelHeight;\n var elementSize;\n var labelPadding;\n var anchor;\n var pixel = 10;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var islabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.opposedPosition;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isHorizontalAngle = (angle === 0 || angle === -180 || angle === 180);\n var options;\n var labelWidth;\n var previousEnd = axis.isInversed ? (rect.x + rect.width) : rect.x;\n var width = 0;\n var length = axis.visibleLabels.length;\n var intervalLength;\n var label;\n var isAxisBreakLabel;\n var scrollBarHeight = axis.scrollbarSettings.enable || (!islabelInside && isNullOrUndefined(axis.crossesAt)\n && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) ? axis.scrollBarHeight : 0;\n var newPoints = [];\n var isRotatedLabelIntersect = false;\n padding += (angle === 90 || angle === 270 || angle === -90 || angle === -270) ? (islabelInside ? 5 : -5) : 0;\n var isLabelUnderAxisLine = ((!isOpposed && !islabelInside) || (isOpposed && islabelInside));\n var isEndAnchor = isLabelUnderAxisLine ?\n ((360 >= angle && angle >= 180) || (-1 >= angle && angle >= -180)) :\n ((1 <= angle && angle <= 180) || (-181 >= angle && angle >= -360));\n for (var i = 0, len = length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(label.originalText);\n pointX = (valueToCoefficient(label.value, axis) * rect.width) + rect.x;\n elementSize = label.size;\n intervalLength = rect.width / length;\n labelWidth = isAxisBreakLabel ? label.breakLabelSize.width : elementSize.width;\n width = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle === 0 &&\n labelWidth > intervalLength) ? intervalLength : labelWidth;\n labelHeight = elementSize.height / 4;\n pointX -= (isAxisBreakLabel || angle !== 0) ? 0 : (width / 2);\n // label X value adjustment for label rotation (Start)\n if (angle !== 0) {\n if (isAxisBreakLabel) {\n pointX -= axis.lineBreakAlignment === 'Left' ? (label.breakLabelSize.width / 2) : axis.lineBreakAlignment === 'Right' ?\n -(label.breakLabelSize.width / 2) : 0;\n }\n else {\n pointX -= (angle === -90 || angle === 270 ? -labelHeight : (angle === 90 || angle === -270) ? labelHeight : 0);\n }\n }\n // label X value adjustment for label rotation (End)\n if (axis.labelStyle.textAlignment === 'Far') {\n pointX = pointX + width - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointX = pointX - width + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointX = pointX;\n }\n // For line break label alignment like left, right & center in angle 0\n if (isAxisBreakLabel && axis.lineBreakAlignment !== 'Center' && angle === 0) {\n pointX += axis.lineBreakAlignment === 'Left' ? -(width / 2) : (width / 2);\n }\n var paddingForBreakLabel = isAxisBreakLabel ?\n (isHorizontalAngle ? (elementSize.height) : (label.breakLabelSize.width / 2)) : 0;\n padding = isAxisBreakLabel ? (tickSpace + labelSpace + axis.lineStyle.width * 0.5) : padding;\n // label Y value adjustment (Start)\n if (islabelInside && angle) {\n if (isAxisBreakLabel) {\n pointY = isOpposed ? (rect.y + padding + (paddingForBreakLabel)) : (rect.y - padding - (paddingForBreakLabel));\n }\n else {\n pointY = isOpposed ? (rect.y + padding + labelHeight) : (rect.y - padding - labelHeight);\n }\n }\n else {\n if (isAxisBreakLabel) {\n labelPadding = !isLabelUnderAxisLine ? -(padding + scrollBarHeight + (paddingForBreakLabel)) :\n padding + scrollBarHeight + (angle ? paddingForBreakLabel : (3 * labelHeight));\n }\n else {\n labelPadding = !isLabelUnderAxisLine ?\n -(padding + scrollBarHeight + (angle ? labelHeight : (label.index > 1 ? (2 * labelHeight) : 0))) :\n padding + scrollBarHeight + ((angle ? 1 : 3) * labelHeight);\n }\n pointY = (rect.y + (labelPadding * label.index));\n }\n // label Y value adjustment (End)\n if (isAxisBreakLabel) {\n anchor = this.getAnchor(axis); // for break label self alignment\n }\n else {\n anchor = (chart.isRtlEnabled || isEndAnchor) ? 'end' : '';\n }\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor);\n if (axis.edgeLabelPlacement && (angle === 0)) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (axis.isInversed && i === len - 1)) && options.x < rect.x) ||\n ((i === len - 1 || (axis.isInversed && i === 0)) && (options.x + width > rect.x + rect.width))) {\n continue;\n }\n break;\n case 'Shift':\n if ((i === 0 || (axis.isInversed && i === len - 1)) && options.x < rect.x) {\n intervalLength -= (rect.x - options.x);\n options.x = pointX = rect.x;\n }\n else if ((i === len - 1 || (axis.isInversed && i === 0)) && ((options.x + width) > rect.x + rect.width)) {\n if (elementSize.width > intervalLength && axis.labelIntersectAction === 'Trim') {\n intervalLength -= (options.x + width - (rect.x + rect.width));\n }\n else {\n intervalLength = width;\n }\n options.x = pointX = rect.x + rect.width - intervalLength;\n }\n break;\n }\n }\n options.text = this.getLabelText(label, axis, intervalLength);\n // ------- Hide Calculation (Start) -------------\n // Currect label actual start value (Start)\n var xValue = void 0;\n var xValue2 = void 0;\n if (isAxisBreakLabel && angle === 0) {\n if (axis.lineBreakAlignment === 'Right') {\n xValue = (options.x - width);\n xValue2 = options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n xValue = (options.x - (width / 2));\n xValue2 = options.x + (width / 2);\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n // Currect label actual start value (End)\n if (angle === 0 && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!axis.isInversed ? xValue <= previousEnd : xValue2 >= previousEnd)) {\n continue;\n }\n // Previous label actual end value (Start)\n if (isAxisBreakLabel) {\n if (axis.lineBreakAlignment === 'Right') {\n previousEnd = axis.isInversed ? (options.x - width) : options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n previousEnd = axis.isInversed ? (options.x - (width / 2)) : options.x + (width / 2);\n }\n else {\n previousEnd = axis.isInversed ? options.x : options.x + width;\n }\n }\n else {\n previousEnd = axis.isInversed ? options.x : options.x + width;\n }\n // Previous label actual end value (End)\n // ------- Hide Calculation (End) -------------\n // label Rotataion calculation (Start)\n if (angle !== 0) {\n var height = void 0;\n var rect_1 = void 0;\n if (isAxisBreakLabel) {\n var xAdjustment = 0;\n var yAdjustment = 0;\n height = (label.breakLabelSize.height);\n yAdjustment = (label.breakLabelSize.height) - 4; // 4 for label bound correction\n // xAdjustment (Start)\n if (axis.lineBreakAlignment === 'Center') {\n xAdjustment = -(label.breakLabelSize.width / 2);\n }\n else if (axis.lineBreakAlignment === 'Right') {\n xAdjustment = -label.breakLabelSize.width;\n }\n // xAdjustment (End)\n if (isLabelUnderAxisLine) {\n yAdjustment = (label.breakLabelSize.height) / (options.text.length + 1);\n }\n rect_1 = new Rect(options.x + xAdjustment, options.y - (yAdjustment), label.breakLabelSize.width, height);\n }\n else {\n height = (pointY) - (options.y - ((label.size.height / 2) + 10));\n rect_1 = new Rect(options.x, options.y - ((label.size.height / 2) - 5), label.size.width, height);\n }\n var rectCoordinates = this.getRectanglePoints(rect_1);\n var rectCenterX = isAxisBreakLabel ? rect_1.x + (rect_1.width / 2) : pointX;\n var rectCenterY = isAxisBreakLabel ? rect_1.y + (rect_1.height / 2) : (pointY - (height / 2));\n if (isAxisBreakLabel) {\n options.transform = 'rotate(' + angle + ',' + rectCenterX + ',' + rectCenterY + ')';\n }\n else {\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n }\n newPoints.push(getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle));\n isRotatedLabelIntersect = false;\n for (var index_1 = i; index_1 > 0; index_1--) {\n if (newPoints[i] && newPoints[index_1 - 1] && isRotatedRectIntersect(newPoints[i], newPoints[index_1 - 1])) {\n isRotatedLabelIntersect = true;\n newPoints[i] = null;\n break;\n }\n }\n }\n // label Rotataion calculation (End)\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabel, labelElement, (axis.opposedPosition !== (axis.labelPosition === 'Inside')), chart.redraw, true, null, null, null, label.size, isRotatedLabelIntersect, chart.enableCanvas);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n parent.appendChild(labelElement);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n /**\n * To get text anchor value for line break labels.\n *\n * @param {Axis} axis axis model\n * @returns {string} returns text anchor\n */\n CartesianAxisLayoutPanel.prototype.getAnchor = function (axis) {\n return (axis.lineBreakAlignment === 'Center' ? 'middle' : (axis.lineBreakAlignment === 'Left' ? 'start' : 'end'));\n };\n /**\n * Get rect coordinates\n *\n * @param {Rect} rect rect\n * @returns {ChartLocation[]} rectangle points\n */\n CartesianAxisLayoutPanel.prototype.getRectanglePoints = function (rect) {\n var point1 = new ChartLocation(rect.x, rect.y);\n var point2 = new ChartLocation(rect.x + rect.width, rect.y);\n var point3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var point4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [point1, point2, point3, point4];\n };\n /**\n * To get axis label text\n *\n * @param {VisibleLabels} label label\n * @param {Axis} axis axis\n * @param {number} intervalLength intervalLength\n * @returns {string | string[]} label or label collection\n */\n CartesianAxisLayoutPanel.prototype.getLabelText = function (label, axis, intervalLength) {\n if (isBreakLabel(label.originalText)) {\n var result = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n str = this.findAxisLabel(axis, label.text[index], intervalLength);\n result.push(str);\n }\n return result;\n }\n else {\n return this.findAxisLabel(axis, label.text, intervalLength);\n }\n };\n /**\n * To render the x-axis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} axisRect axisRect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisBorder = function (axis, index, parent, axisRect) {\n if (axis.border.width > 0) {\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var startX = void 0;\n var startY = axisRect.y + ((axis.opposedPosition ? -1 : 1) * scrollBarHeight);\n var padding = 10;\n var pointX = void 0;\n var gap = (axisRect.width / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endX = void 0;\n var length_2 = axis.maxLabelSize.height +\n ((axis.tickPosition === axis.labelPosition) ? axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endY = ((axis.opposedPosition && axis.labelPosition === 'Inside') ||\n (!axis.opposedPosition && axis.labelPosition === 'Outside')) ?\n (axisRect.y + length_2 + padding + scrollBarHeight) : (axisRect.y - length_2 - padding - scrollBarHeight);\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointX = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointX = (axis.isInversed ? (1 - pointX) : pointX) * axisRect.width;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startX = pointX + axisRect.x;\n endX = pointX + (gap) + axisRect.x;\n }\n else {\n startX = pointX - gap * 0.5 + axisRect.x;\n endX = pointX + gap * 0.5 + axisRect.x;\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startX < axisRect.x) {\n labelBorder += ('M' + ' ' + axisRect.x + ' ' + endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(endX) > axisRect.width + axisRect.x && !(axis.visibleLabels.length === 1)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'L' + ' ' + (axisRect.width + axisRect.x) + ' ' + endY + ' ');\n }\n else {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' +\n endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === 0) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + startX + ' ' + endY + ' L ' + (axisRect.x) + ' ' + endY);\n }\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + endX + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + endY + ' L ' + (axisRect.width + axisRect.x) + ' ' + endY);\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startX < axisRect.x) && !(Math.floor(endX) > axisRect.width + axisRect.x)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + startY + ' L ' + endX + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle' ? ('M ' + ' ' + axisRect.x + ' ' + startY + 'L' + ' ' +\n (axisRect.x + axisRect.width) + ' ' + startY) : '');\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n if (this.chart.multiLevelLabelModule && axis.multiLevelLabels.length > 0) {\n this.chart.multiLevelLabelModule.renderXAxisMultiLevelLabels(axis, index, parent, axisRect);\n }\n };\n /**\n * To create border element of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} labelBorder labelBorder\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createAxisBorderElement = function (axis, index, labelBorder, parent) {\n var element = getElement(this.chart.element.id + '_BorderLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n var borderElement = this.chart.renderer.drawPath(new PathOption(this.chart.element.id + '_BorderLine_' + index, 'transparent', axis.border.width, axis.border.color || this.chart.themeStyle.axisLine, 1, '', labelBorder));\n borderElement.setAttribute('style', 'pointer-events: none');\n appendChildElement(this.chart.enableCanvas, parent, borderElement, this.chart.redraw, true, 'x', 'y', null, direction, true);\n };\n /**\n * To find the axis label of the intersect action\n *\n * @param {Axis} axis axis\n * @param {string} label label\n * @param {number} width width\n * @returns {string} label\n */\n CartesianAxisLayoutPanel.prototype.findAxisLabel = function (axis, label, width) {\n return (axis.labelIntersectAction === 'Trim' ?\n ((axis.angle % 360 === 0 && !axis.enableTrim) ? textTrim(width, label, axis.labelStyle) : label) : label);\n };\n /**\n * X-Axis Title function performed\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var elementSize = measureText(axis.title, axis.titleStyle);\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight : 0;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n axis.maxLabelSize.height + axis.multiLevelLabelHeight + axis.labelPadding);\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n padding = axis.opposedPosition ? -(padding + elementSize.height / 4 + scrollBarHeight + titleSize) : (padding + (3 *\n elementSize.height / 4) + scrollBarHeight);\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, rect.x + rect.width * 0.5, rect.y + padding, 'middle', axis.titleCollection);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitle, parent, null, null, null, null, null, null, null, null, chart.enableCanvas);\n element.setAttribute('aria-label', axis.description || axis.title);\n element.setAttribute('tabindex', axis.tabIndex.toString());\n }\n };\n /**\n * To render the axis grid and tick lines(Both Major and Minor)\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} gridDirection gridDirection\n * @param {MajorTickLinesModel | MinorTickLinesModel | MajorGridLinesModel | MinorGridLinesModel} gridModel gridModel\n * @param {string} gridId gridId\n * @param {number} gridIndex gridIndex\n * @param {Element} parent parent\n * @param {string} themeColor themeColor\n * @param {string} dashArray dashArray\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderGridLine = function (axis, index, gridDirection, gridModel, gridId, gridIndex, parent, themeColor, dashArray) {\n if (dashArray === void 0) { dashArray = null; }\n var chart = this.chart;\n var direction;\n var element;\n if (gridModel.width > 0 && axis.visible && axis.internalVisibility && gridDirection) {\n element = getElement(chart.element.id + gridId + index + '_' + gridIndex);\n direction = element ? element.getAttribute('d') : null;\n element = null;\n this.htmlObject = chart.renderer.drawPath(new PathOption(chart.element.id + gridId + index + '_' + gridIndex, 'transparent', gridModel.width, gridModel.color || themeColor, null, dashArray, gridDirection));\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction, true);\n }\n };\n /**\n * To Find the parent node of the axis\n *\n * @param {string} elementId elementId\n * @param {Element} label label\n * @param {number} index index\n * @returns {Element} parent node of the axis\n */\n CartesianAxisLayoutPanel.prototype.findParentNode = function (elementId, label, index) {\n if (document.getElementById(elementId + 'AxisGroup' + index + 'Inside').contains(document.getElementById(label.id))) {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Inside');\n }\n else {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Outside');\n }\n };\n /**\n * Create Zooming Labels Function Called here\n *\n * @param {Chart} chart chart\n * @param {Element} labelElement labelElement\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createZoomingLabel = function (chart, labelElement, axis, index, rect) {\n var parentNode = this.findParentNode(chart.element.id, labelElement, index);\n labelElement.setAttribute('opacity', '0.3');\n var zoomElement = chart.renderer.createGroup({\n id: chart.element.id + 'AxisLabels_Zoom' + index\n });\n zoomElement = createZoomingLabels(chart, axis, zoomElement, index, axis.orientation === 'Vertical', rect);\n parentNode.replaceChild(labelElement, document.getElementById(labelElement.id));\n if (getElement(chart.element.id + 'AxisLabels_Zoom' + index)) {\n parentNode.replaceChild(zoomElement, document.getElementById(zoomElement.id));\n }\n else {\n parentNode.appendChild(zoomElement);\n }\n };\n return CartesianAxisLayoutPanel;\n}());\nexport { CartesianAxisLayoutPanel };\n","import { withInBounds, PointData, getValueXByPoint, getValueYByPoint } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * To get the data on mouse move.\n *\n * @private\n */\nvar ChartData = /** @class */ (function () {\n /**\n * Constructor for the data.\n *\n * @private\n */\n function ChartData(chart) {\n /** @private */\n this.currentPoints = [];\n /** @private */\n this.previousPoints = [];\n this.insideRegion = false;\n this.chart = chart;\n this.lierIndex = 0;\n }\n /**\n * Method to get the Data.\n *\n * @private\n */\n ChartData.prototype.getData = function () {\n var chart = this.chart;\n var point = null;\n var series = null;\n var width;\n var height;\n var mouseX;\n var mouseY;\n for (var len = chart.visibleSeries.length, i = len - 1; i >= 0; i--) {\n series = chart.visibleSeries[i];\n width = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.height + 5) / 2 : 0;\n height = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.width + 5) / 2 : 0;\n mouseX = chart.mouseX;\n mouseY = chart.mouseY;\n if (series.dragSettings.enable && series.isRectSeries) {\n if (!(series.type === 'Bar' && chart.isTransposed) && (chart.isTransposed || series.type === 'Bar')) {\n var markerWidth = series.marker.width / 2;\n mouseX = series.yAxis.isInversed ? mouseX + markerWidth : mouseX - markerWidth;\n }\n else {\n var markerHeight = series.marker.height / 2;\n mouseY = series.yAxis.isInversed ? mouseY - markerHeight : mouseY + markerHeight;\n }\n }\n if (series.visible && withInBounds(mouseX, mouseY, series.clipRect, width, height)) {\n point = this.getRectPoint(series, series.clipRect, mouseX, mouseY);\n }\n if (point) {\n return new PointData(point, series);\n }\n }\n return new PointData(point, series);\n };\n ChartData.prototype.isSelected = function (chart) {\n return ((chart.selectionMode.indexOf('Drag') > -1 || chart.selectionMode.indexOf('Lasso') > -1) && chart.selectionModule &&\n chart.selectionModule.rectPoints !== null);\n };\n ChartData.prototype.getRectPoint = function (series, rect, x, y) {\n var chart = this.chart;\n var fromCenterX;\n var fromCenterY;\n var clickAngle;\n var arcAngle = 0;\n var startAngle;\n var endAngle;\n var distanceFromCenter;\n if (chart.isScrolling) {\n return null;\n }\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.regionData) {\n if (!point.regions || !point.regions.length) {\n continue;\n }\n }\n if (point.regionData && this.chart.chartAreaType === 'PolarRadar' && series.drawType.indexOf('Column') > -1) {\n fromCenterX = x - (series.clipRect.width / 2 + series.clipRect.x);\n fromCenterY = y - (series.clipRect.height / 2 + series.clipRect.y);\n arcAngle = 2 * Math.PI * (point.regionData.currentXPosition < 0 ? 1 + point.regionData.currentXPosition\n : point.regionData.currentXPosition);\n clickAngle = (Math.atan2(fromCenterY, fromCenterX) + 0.5 * Math.PI - arcAngle) % (2 * Math.PI);\n clickAngle = clickAngle < 0 ? 2 * Math.PI + clickAngle : clickAngle;\n clickAngle = clickAngle + 2 * Math.PI * series.chart.primaryXAxis.startAngle;\n startAngle = point.regionData.startAngle;\n startAngle -= arcAngle;\n startAngle = startAngle < 0 ? 2 * Math.PI + startAngle : startAngle;\n endAngle = point.regionData.endAngle;\n endAngle -= arcAngle;\n endAngle = endAngle < 0 ? 2 * Math.PI + endAngle : endAngle;\n distanceFromCenter = Math.sqrt(Math.pow(Math.abs(fromCenterX), 2) + Math.pow(Math.abs(fromCenterY), 2));\n if (clickAngle >= startAngle && clickAngle <= endAngle &&\n (((distanceFromCenter >= point.regionData.innerRadius && distanceFromCenter <= point.regionData.radius) ||\n (distanceFromCenter <= point.regionData.innerRadius && distanceFromCenter >= point.regionData.radius))\n && distanceFromCenter <= series.chart.radius)) {\n return point;\n }\n }\n if ((series.dragSettings.enable && series.isRectSeries) || (series.isRectSeries && series.marker.visible)) {\n if (this.isPointInThresholdRegion(x, y, point, rect, series)) {\n this.insideRegion = true;\n return point;\n }\n }\n if (!this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n else if (this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n }\n return null;\n };\n /**\n * Checks whether the region contains a point\n */\n ChartData.prototype.checkRegionContainsPoint = function (regionRect, rect, x, y) {\n var _this = this;\n return regionRect.some(function (region, index) {\n _this.lierIndex = index;\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y, region.width, region.height));\n });\n };\n /**\n * To check the point in threshold region for column and bar series\n *\n * @param {number} x X coordinate\n * @param {number} y Y coodinate\n * @param {Points} point point\n * @param {Rect} rect point rect region\n * @param {Series} series series\n */\n ChartData.prototype.isPointInThresholdRegion = function (x, y, point, rect, series) {\n var _this = this;\n var isBar = series.type === 'Bar';\n var isInversed = series.yAxis.isInversed;\n var isTransposed = series.chart.isTransposed;\n var heightValue = 10;\n var yValue = 0;\n var xValue = 0;\n var width;\n var height = width = 2 * heightValue;\n if (isInversed && isTransposed) {\n if (isBar) {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n }\n else if (isInversed || point.yValue < 0) {\n if (isBar) {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n }\n else if (isTransposed) {\n if (isBar) {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n }\n else {\n if (isBar) {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n }\n return point.regions.some(function (region) {\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x + xValue, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y + yValue, width, height));\n });\n };\n /**\n * @private\n */\n ChartData.prototype.getClosest = function (series, value, xvalues) {\n var closest;\n var data;\n var xData = xvalues ? xvalues : series.xData;\n if (value >= series.xMin - 0.5 && value <= series.xMax + 0.5) {\n for (var i = 0; i < xData.length; i++) {\n data = xData[i];\n if (closest == null || Math.abs(data - value) < Math.abs(closest - value)) {\n closest = data;\n }\n }\n }\n var isDataExist = series.xData.indexOf(closest) !== -1;\n if (isDataExist) {\n return closest;\n }\n else {\n return null;\n }\n };\n ChartData.prototype.getClosestX = function (chart, series, xvalues) {\n var value;\n var rect = series.clipRect;\n if (!chart.requireInvertedAxis) {\n value = getValueXByPoint(chart.mouseX - rect.x, rect.width, series.xAxis);\n }\n else {\n value = getValueYByPoint(chart.mouseY - rect.y, rect.height, series.xAxis);\n }\n var closest = this.getClosest(series, value, xvalues);\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (closest === point.xValue && point.visible) {\n return new PointData(point, series);\n }\n }\n return null;\n };\n /**\n * Merge all visible series X values for shared tooltip (EJ2-47072)\n *\n * @param visibleSeries\n * @private\n */\n ChartData.prototype.mergeXvalues = function (visibleSeries) {\n var collection = [];\n for (var index = 0; index < visibleSeries.length; index++) {\n collection = collection.concat(visibleSeries[index].xData);\n }\n return collection.filter(function (item, index) {\n return index === collection.indexOf(item);\n });\n };\n return ChartData;\n}());\nexport { ChartData };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\nimport { Property, ChildProperty, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { StackValues, RectOption, appendChildElement, appendClipElement } from '../../common/utils/helper';\nimport { firstToLowerCase, CircleOption, getColorByValue } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Border, Font, Margin, Animation, EmptyPointSettings, CornerRadius, Connector, DragSettings } from '../../common/model/base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Offset } from '../../common/model/base';\nimport { seriesRender } from '../../common/model/constants';\nimport { sort, getVisiblePoints, setRange } from '../../common/utils/helper';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * Configures the data label in the series.\n */\nvar DataLabelSettings = /** @class */ (function (_super) {\n __extends(DataLabelSettings, _super);\n function DataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], DataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], DataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], DataLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], DataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Property('Auto')\n ], DataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property('Center')\n ], DataLabelSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], DataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 5, right: 5, top: 5, bottom: 5 }, Margin)\n ], DataLabelSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ size: '11px', color: '', fontStyle: 'Normal', fontWeight: 'Normal', fontFamily: 'Segoe UI' }, Font)\n ], DataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"template\", void 0);\n __decorate([\n Property('Hide')\n ], DataLabelSettings.prototype, \"labelIntersectAction\", void 0);\n return DataLabelSettings;\n}(ChildProperty));\nexport { DataLabelSettings };\n/**\n * Configures the marker in the series.\n */\nvar MarkerSettings = /** @class */ (function (_super) {\n __extends(MarkerSettings, _super);\n function MarkerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Circle')\n ], MarkerSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], MarkerSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"height\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ width: 2, color: null }, Border)\n ], MarkerSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Offset)\n ], MarkerSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], MarkerSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, DataLabelSettings)\n ], MarkerSettings.prototype, \"dataLabel\", void 0);\n return MarkerSettings;\n}(ChildProperty));\nexport { MarkerSettings };\n/**\n * Points model for the series.\n *\n * @public\n */\nvar Points = /** @class */ (function () {\n function Points() {\n /** point symbol location */\n this.symbolLocations = null;\n /** point region */\n this.regions = null;\n /** point percentage value */\n this.percentage = null;\n /** point region data */\n this.regionData = null;\n /** To know the point is selected */\n this.isSelect = false;\n /** point marker */\n this.marker = {\n visible: false\n };\n /**\n * To identify point y value with in the range.\n *\n * @private\n */\n this.isPointInRange = true;\n }\n return Points;\n}());\nexport { Points };\n/**\n * Defines the behavior of the Trendlines\n */\nvar Trendline = /** @class */ (function (_super) {\n __extends(Trendline, _super);\n function Trendline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n Trendline.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.points = series.points;\n }\n chart.trendLineModule.initDataSource(this);\n chart.visibleSeriesCount++;\n };\n __decorate([\n Property('')\n ], Trendline.prototype, \"name\", void 0);\n __decorate([\n Property('0')\n ], Trendline.prototype, \"dashArray\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"visible\", void 0);\n __decorate([\n Property('Linear')\n ], Trendline.prototype, \"type\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"period\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"polynomialOrder\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"backwardForecast\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"forwardForecast\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Trendline.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, MarkerSettings)\n ], Trendline.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(null)\n ], Trendline.prototype, \"intercept\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], Trendline.prototype, \"width\", void 0);\n __decorate([\n Property('SeriesType')\n ], Trendline.prototype, \"legendShape\", void 0);\n return Trendline;\n}(ChildProperty));\nexport { Trendline };\n/**\n * Configures Error bar in series.\n */\nvar ErrorBarCapSettings = /** @class */ (function (_super) {\n __extends(ErrorBarCapSettings, _super);\n function ErrorBarCapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"width\", void 0);\n __decorate([\n Property(10)\n ], ErrorBarCapSettings.prototype, \"length\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarCapSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"opacity\", void 0);\n return ErrorBarCapSettings;\n}(ChildProperty));\nexport { ErrorBarCapSettings };\nvar ChartSegment = /** @class */ (function (_super) {\n __extends(ChartSegment, _super);\n function ChartSegment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"color\", void 0);\n __decorate([\n Property('0')\n ], ChartSegment.prototype, \"dashArray\", void 0);\n return ChartSegment;\n}(ChildProperty));\nexport { ChartSegment };\n/**\n * Error bar settings\n *\n * @public\n */\nvar ErrorBarSettings = /** @class */ (function (_super) {\n __extends(ErrorBarSettings, _super);\n function ErrorBarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ErrorBarSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Fixed')\n ], ErrorBarSettings.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ErrorBarSettings.prototype, \"direction\", void 0);\n __decorate([\n Property('Vertical')\n ], ErrorBarSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"verticalError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalPositiveError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalNegativeError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalPositiveError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalNegativeError\", void 0);\n __decorate([\n Complex(null, ErrorBarCapSettings)\n ], ErrorBarSettings.prototype, \"errorBarCap\", void 0);\n return ErrorBarSettings;\n}(ChildProperty));\nexport { ErrorBarSettings };\n/**\n * Defines the common behavior of Series and Technical Indicators\n */\nvar SeriesBase = /** @class */ (function (_super) {\n __extends(SeriesBase, _super);\n function SeriesBase() {\n /**\n * The DataSource field that contains the x value.\n * It is applicable for series and technical indicators\n *\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.currentViewData = [];\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.seriesType = 'XY';\n _this.isRectTypeSeries = false;\n return _this;\n }\n /**\n * Process data for the series.\n *\n * @hidden\n */\n SeriesBase.prototype.processJsonData = function () {\n var i = 0;\n var point = new Points();\n var xName = (this instanceof Series && this.type === 'Histogram') ? 'x' : this.xName;\n var textMappingName = this instanceof Series && this.marker.dataLabel.name ?\n this.marker.dataLabel.name : '';\n if (this instanceof Series) {\n if ((this.type === 'Waterfall' || this.type === 'Histogram')) {\n this.currentViewData = this.chart[firstToLowerCase(this.type) + 'SeriesModule'].\n processInternalData(extend([], this.currentViewData, null, true), this);\n }\n if (this.category === 'Pareto') {\n this.currentViewData = sort(extend([], this.currentViewData, null, true), [this.yName], true);\n if (this.type === 'Line') {\n this.currentViewData = this.chart.paretoSeriesModule.performCumulativeCalculation(this.currentViewData, this);\n }\n }\n this.isRectTypeSeries = this.type.indexOf('Column') > -1 || this.type.indexOf('Bar') > -1\n || this.type.indexOf('Histogram') > -1;\n }\n var len = Object.keys(this.currentViewData).length;\n this.points = [];\n this.xMin = Infinity;\n this.xMax = -Infinity;\n this.yMin = Infinity;\n this.yMax = -Infinity;\n this.sizeMax = -Infinity;\n this.getSeriesType();\n if (this.xAxis.valueType === 'Category') {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n this.pushCategoryData(point, i, point.x);\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n i++;\n }\n }\n else if (this.xAxis.valueType.indexOf('DateTime') > -1) {\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n if (!isNullOrUndefined(point.x) && point.x !== '') {\n point.x = new Date(DataUtil.parse.parseJson({ val: point.x }).val);\n if (this.xAxis.valueType === 'DateTime') {\n point.xValue = Date.parse(point.x.toString());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.chart.isBlazor ? this.pushCategoryData(point, i, Date.parse(point.x.toString()).toString()) :\n this.pushCategoryData(point, i, Date.parse(dateParser(dateFormatter(point.x))).toString());\n }\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n }\n else {\n point.visible = false;\n }\n i++;\n }\n }\n else {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n point.xValue = point.x;\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n i++;\n }\n }\n if (this instanceof Series) {\n if (this.type.indexOf('Spline') > -1 || (this.drawType.indexOf('Spline') > -1 && this.chart.chartAreaType === 'PolarRadar')) {\n var isArea = (this.type.indexOf('Area') > -1 || this.drawType.indexOf('Area') > -1);\n this.chart['spline' + (isArea ? 'Area' : '') + 'SeriesModule'].findSplinePoint(this);\n }\n else if (this.type.indexOf('Histogram') > -1 && (this.xAxis.maximum || this.xAxis.minimum)) {\n this.chart['histogramSeriesModule'].calculateBinValues(this);\n }\n }\n };\n SeriesBase.prototype.pushData = function (point, i) {\n point.index = i;\n point.yValue = point.y;\n // To find the min, max for the axis range.\n this.xMin = Math.min(this.xMin, point.xValue);\n this.xMax = Math.max(this.xMax, point.xValue);\n this.xData.push(point.xValue);\n };\n /** @private */\n SeriesBase.prototype.dataPoint = function (i, textMappingName, xName) {\n this.points[i] = new Points();\n var point = this.points[i];\n var currentViewData = this.currentViewData;\n var getObjectValueByMappingString = this.enableComplexProperty ? getValue : this.getObjectValue;\n point.x = getObjectValueByMappingString(xName, currentViewData[i]);\n point.high = getObjectValueByMappingString(this.high, currentViewData[i]);\n point.low = getObjectValueByMappingString(this.low, currentViewData[i]);\n point.open = getObjectValueByMappingString(this.open, currentViewData[i]);\n point.close = getObjectValueByMappingString(this.close, currentViewData[i]);\n point.volume = getObjectValueByMappingString(this.volume, currentViewData[i]);\n point.interior = getObjectValueByMappingString(this.pointColorMapping, currentViewData[i]);\n if (this instanceof Series) {\n point.y = getObjectValueByMappingString(this.yName, currentViewData[i]);\n point.size = getObjectValueByMappingString(this.size, currentViewData[i]);\n point.text = getObjectValueByMappingString(textMappingName, currentViewData[i]);\n point.tooltip = getObjectValueByMappingString(this.tooltipMappingName, currentViewData[i]);\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 && this.isAdvancedColorSupported()) {\n if (this.colorName && this.colorName.length > 0) {\n point.colorValue = getObjectValueByMappingString(this.colorName, currentViewData[i]);\n }\n else {\n point.colorValue = getObjectValueByMappingString(this.yName, currentViewData[i]);\n }\n point.interior = this.getPointFillColor(point.interior, point.colorValue);\n }\n }\n return point;\n };\n SeriesBase.prototype.isAdvancedColorSupported = function () {\n if (this.chart.visibleSeries.length === 1 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n return true;\n }\n return false;\n };\n SeriesBase.prototype.getPointFillColor = function (pointFill, value) {\n var color = pointFill;\n if (value && this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0) {\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var rangeMap = _a[_i];\n if (value >= rangeMap.start && value <= rangeMap.end) {\n if (rangeMap.colors.length > 1) {\n color = getColorByValue(rangeMap, value);\n }\n else {\n color = rangeMap.colors[0];\n }\n }\n }\n }\n return color;\n };\n SeriesBase.prototype.getObjectValue = function (mappingName, data) {\n return data[mappingName];\n };\n /**\n * To set empty point value based on empty point mode\n *\n * @private\n */\n SeriesBase.prototype.setEmptyPoint = function (point, i) {\n if (!this.findVisibility(point)) {\n point.visible = true;\n return null;\n }\n point.isEmpty = true;\n var mode = this instanceof Series && point.isPointInRange ? this.emptyPointSettings.mode : 'Drop';\n switch (mode) {\n case 'Zero':\n point.visible = true;\n if (this instanceof Series && this.seriesType.indexOf('HighLow') > -1) {\n point.high = point.low = 0;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = point.close = 0;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = 0;\n }\n break;\n case 'Average':\n if (this instanceof Series) {\n if (this.seriesType.indexOf('HighLow') > -1) {\n point.high = (isNullOrUndefined(point.high) || isNaN(+point.high)) ? this.getAverage(this.high, i) : point.high;\n point.low = (isNullOrUndefined(point.low) || isNaN(+point.low)) ? this.getAverage(this.low, i) : point.low;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = (isNullOrUndefined(point.open) || isNaN(+point.open)) ? this.getAverage(this.open, i) : point.open;\n point.close = (isNullOrUndefined(point.close) || isNaN(+point.close)) ? this.getAverage(this.close, i) :\n point.close;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = this.getAverage(this.yName, i);\n }\n }\n point.visible = true;\n break;\n case 'Drop':\n case 'Gap':\n this.yData[i] = null;\n point.visible = false;\n break;\n }\n };\n SeriesBase.prototype.findVisibility = function (point) {\n var type = this instanceof Series ? this.seriesType : 'HighLowOpenClose';\n var yValues;\n var yAxisMin = this.yAxis.minimum;\n var yAxisMax = this.yAxis.maximum;\n switch (type) {\n case 'XY':\n if (this.chart.chartAreaType === 'PolarRadar' && ((!isNullOrUndefined(yAxisMin) && point.yValue < yAxisMin) ||\n (!isNullOrUndefined(yAxisMax) && point.yValue > yAxisMax))) {\n point.isPointInRange = false;\n return true;\n }\n this.setXYMinMax(point.yValue);\n this.yData.push(point.yValue);\n if (this instanceof Series && this.type === 'Bubble') {\n this.sizeMax = Math.max(this.sizeMax, (isNullOrUndefined(point.size) || isNaN(+point.size)) ? this.sizeMax\n : point.size);\n }\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.y) || isNaN(+point.y));\n case 'HighLow':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'HighLowOpenClose':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.open) || isNaN(+point.open)) || (isNullOrUndefined(point.close) || isNaN(+point.close))\n || (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'BoxPlot':\n yValues = (point.y || [null]).filter(function (value) {\n return !isNullOrUndefined(value) && !isNaN(value);\n }).sort(function (a, b) {\n return a - b;\n });\n point.y = yValues;\n this.yMin = Math.min(this.yMin, Math.min.apply(Math, yValues));\n this.yMax = Math.max(this.yMax, Math.max.apply(Math, yValues));\n return !yValues.length;\n }\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setXYMinMax = function (yValue) {\n var isLogAxis = (this.yAxis.valueType === 'Logarithmic' || this.xAxis.valueType === 'Logarithmic');\n var isNegativeValue = yValue < 0;\n var seriesMinY;\n if (this.isRectTypeSeries && !setRange(this.yAxis)) {\n seriesMinY = ((isLogAxis ? (yValue) : isNegativeValue ? yValue : 0));\n }\n else {\n seriesMinY = yValue;\n }\n this.yMin = isLogAxis ?\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY) || (seriesMinY === 0)) ? this.yMin : seriesMinY) :\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY)) ? this.yMin : seriesMinY);\n this.yMax = Math.max(this.yMax, (isNullOrUndefined(yValue) || isNaN(yValue)) ? this.yMax : yValue);\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setHiloMinMax = function (high, low) {\n this.yMin = Math.min(this.yMin, Math.min((isNullOrUndefined(low) || isNaN(low)) ? this.yMin : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMin : high));\n this.yMax = Math.max(this.yMax, Math.max((isNullOrUndefined(low) || isNaN(low)) ? this.yMax : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMax : high));\n };\n /**\n * Finds the type of the series\n *\n * @private\n */\n SeriesBase.prototype.getSeriesType = function () {\n var type;\n if (this instanceof Series) {\n var seriesType = this.chart.chartAreaType === 'PolarRadar' ? this.drawType : this.type;\n if (seriesType) {\n switch (seriesType) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'Hilo':\n type = 'HighLow';\n break;\n case 'HiloOpenClose':\n case 'Candle':\n type = 'HighLowOpenClose';\n break;\n case 'BoxAndWhisker':\n type = 'BoxPlot';\n break;\n default:\n type = 'XY';\n }\n }\n }\n this.seriesType = type;\n };\n /** @private */\n SeriesBase.prototype.pushCategoryData = function (point, index, pointX) {\n if (!this.chart.tooltip.shared) {\n if (!this.visible) {\n return null;\n }\n }\n if (!this.xAxis.isIndexed) {\n if (this.xAxis.labels.indexOf(pointX) < 0) {\n this.xAxis.labels.push(pointX);\n }\n point.xValue = this.xAxis.labels.indexOf(pointX);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.xAxis.labels[index] ? this.xAxis.labels[index] += ', ' + pointX :\n this.xAxis.labels.push(pointX);\n point.xValue = index;\n }\n };\n /**\n * To find average of given property\n */\n SeriesBase.prototype.getAverage = function (member, i, data) {\n if (data === void 0) { data = this.currentViewData; }\n var previous = data[i - 1] ? (data[i - 1][member] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][member] || 0) : 0;\n return (previous + next) / 2;\n };\n /**\n * To find the control points for spline.\n *\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.refreshDataManager = function (chart) {\n var _this = this;\n this.chart = chart;\n var dataSource;\n var isAngular = 'isAngular';\n if (chart[isAngular]) {\n dataSource = Object.keys(this.dataSource).length ? this.dataSource : chart.dataSource;\n }\n else {\n dataSource = this.dataSource || chart.dataSource;\n }\n if (!(dataSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dataSource, count: dataSource.length }, false);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e); });\n };\n SeriesBase.prototype.dataManagerSuccess = function (e, isRemoteData) {\n if (isRemoteData === void 0) { isRemoteData = true; }\n this.currentViewData = e.count ? e.result : [];\n this.chart.allowServerDataBinding = false;\n if (this instanceof Series) {\n if (this.chart.stockChart) {\n this.chart.stockChart.series[this.index].localData = this.currentViewData;\n }\n var argsData = {\n name: seriesRender, series: this, data: this.currentViewData, fill: this.interior\n };\n this.chart.trigger(seriesRender, argsData);\n this.interior = argsData.fill;\n this.currentViewData = argsData.data;\n }\n if (this.chart.stockChart && !(this instanceof Series)) {\n this.currentViewData = this.chart.stockChart.findCurrentData(this.chart.stockChart.series[0].localData, this.chart.stockChart.series[0].xName);\n }\n this.processJsonData();\n this.recordsCount = e.count;\n this.refreshChart(isRemoteData);\n this.currentViewData = null;\n };\n SeriesBase.prototype.refreshChart = function (isRemoteData) {\n var chart = this.chart;\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 1 : 0;\n }\n chart.refreshTechnicalIndicator(this);\n if (this instanceof Series && this.category !== 'TrendLine') {\n for (var _i = 0, _a = this.trendlines; _i < _a.length; _i++) {\n var trendline = _a[_i];\n trendline.setDataSource(this, chart);\n }\n }\n //if (chart.visibleSeries.length === (chart.visibleSeriesCount - chart.indicators.length)) {\n if (chart.visibleSeries.length === (chart.visibleSeriesCount)) {\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart.isBlazor ? {} : chart });\n if (this.chart.stockChart && this.chart.stockChart.initialRender) {\n this.chart.stockChart.initialRender = false;\n this.chart.stockChart.stockChartDataManagerSuccess();\n }\n }\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 0 : 1;\n }\n };\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"colorName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"high\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"low\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"open\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"close\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"volume\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(true)\n ], SeriesBase.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"yAxisName\", void 0);\n __decorate([\n Complex(null, Animation)\n ], SeriesBase.prototype, \"animation\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], SeriesBase.prototype, \"width\", void 0);\n __decorate([\n Property('0')\n ], SeriesBase.prototype, \"dashArray\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], SeriesBase.prototype, \"query\", void 0);\n __decorate([\n Collection([], ChartSegment)\n ], SeriesBase.prototype, \"segments\", void 0);\n __decorate([\n Property('X')\n ], SeriesBase.prototype, \"segmentAxis\", void 0);\n __decorate([\n Property(false)\n ], SeriesBase.prototype, \"enableComplexProperty\", void 0);\n return SeriesBase;\n}(ChildProperty));\nexport { SeriesBase };\n/**\n * Configures the series in charts.\n *\n * @public\n */\nvar Series = /** @class */ (function (_super) {\n __extends(Series, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Series(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n _this.visibleSeriesCount = 0;\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.isRectSeries = false;\n /** @private */\n _this.drawPoints = [];\n /** @private */\n _this.delayedAnimation = false;\n return _this;\n }\n /**\n * Refresh the axis label.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.refreshAxisLabel = function () {\n if (this.xAxis.valueType !== 'Category') {\n return null;\n }\n this.xAxis.labels = [];\n for (var _i = 0, _a = this.xAxis.series; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.visible && item.category !== 'TrendLine') {\n item.xMin = Infinity;\n item.xMax = -Infinity;\n for (var _b = 0, _c = item.points; _b < _c.length; _b++) {\n var point = _c[_b];\n item.pushCategoryData(point, point.index, point.x);\n item.xMin = Math.min(item.xMin, point.xValue);\n item.xMax = Math.max(item.xMax, point.xValue);\n }\n }\n }\n };\n /**\n * To get the series collection.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.findSeriesCollection = function (column, row, isStack) {\n var seriesCollection = [];\n for (var _i = 0, _a = row.axes; _i < _a.length; _i++) {\n var rowAxis = _a[_i];\n for (var _b = 0, _c = rowAxis.series; _b < _c.length; _b++) {\n var rowSeries = _c[_b];\n for (var _d = 0, _e = column.axes; _d < _e.length; _d++) {\n var axis = _e[_d];\n for (var _f = 0, _g = axis.series; _f < _g.length; _f++) {\n var series = _g[_f];\n if (series === rowSeries && series.visible && this.rectSeriesInChart(series, isStack)) {\n seriesCollection.push(series);\n }\n }\n }\n }\n }\n return seriesCollection;\n };\n /**\n * To get the column type series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.rectSeriesInChart = function (series, isStack) {\n var type = (series.type).toLowerCase();\n return (type.indexOf('column') !== -1 || type.indexOf('bar') !== -1 || type.indexOf('histogram') !== -1 ||\n type.indexOf('hiloopenclose') !== -1 || type.indexOf('candle') !== -1 || type.indexOf('pareto') !== -1 ||\n type.indexOf('hilo') !== -1 || series.drawType.indexOf('Column') !== -1 ||\n type.indexOf('waterfall') !== -1 || type.indexOf('boxandwhisker') !== -1 || isStack);\n };\n /**\n * To calculate the stacked values.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.calculateStackedValue = function (isStacking100, chart) {\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.calculateStackingValues(this.findSeriesCollection(columnItem, item, true), isStacking100);\n }\n }\n };\n Series.prototype.calculateStackingValues = function (seriesCollection, isStacking100) {\n var startValues;\n var endValues;\n var yValues = [];\n var lastPositive = [];\n var lastNegative = [];\n var stackingGroup;\n var lastValue;\n var value;\n var frequencies = [];\n if (isStacking100) {\n frequencies = this.findFrequencies(seriesCollection);\n }\n var stackingSeies = [];\n var stackedValues = [];\n var visiblePoints = [];\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Stacking') !== -1 || (series.drawType.indexOf('Stacking') !== -1 &&\n (series.chart.chartAreaType === 'PolarRadar'))) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!lastPositive[stackingGroup]) {\n lastPositive[stackingGroup] = [];\n lastNegative[stackingGroup] = [];\n }\n yValues = series.yData;\n startValues = [];\n endValues = [];\n stackingSeies.push(series);\n visiblePoints = getVisiblePoints(series);\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n lastValue = 0;\n value = +yValues[j]; // Fix for chart not rendering while y value is given as string issue\n if (lastPositive[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastPositive[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (lastNegative[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastNegative[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (isStacking100) {\n value = value / frequencies[stackingGroup][visiblePoints[j].xValue] * 100;\n value = !isNaN(value) ? value : 0;\n visiblePoints[j].percentage = +(value.toFixed(2));\n }\n else {\n stackedValues[j] = stackedValues[j] ? stackedValues[j] + Math.abs(value) : Math.abs(value);\n }\n if (value >= 0) {\n lastValue = lastPositive[stackingGroup][visiblePoints[j].xValue];\n lastPositive[stackingGroup][visiblePoints[j].xValue] += value;\n }\n else {\n lastValue = lastNegative[stackingGroup][visiblePoints[j].xValue];\n lastNegative[stackingGroup][visiblePoints[j].xValue] += value;\n }\n startValues.push(lastValue);\n endValues.push(value + lastValue);\n if (isStacking100 && (endValues[j] > 100)) {\n endValues[j] = 100;\n }\n }\n series.stackedValues = new StackValues(startValues, endValues);\n var isLogAxis = series.yAxis.valueType === 'Logarithmic';\n var isColumnBarType = (series.type.indexOf(\"Column\") !== -1 || series.type.indexOf(\"Bar\") !== -1);\n series.yMin = isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : Math.min.apply(0, startValues);\n series.yMax = Math.max.apply(0, endValues);\n if (series.yMin > Math.min.apply(0, endValues)) {\n series.yMin = (isStacking100) ? -100 :\n isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : Math.min.apply(0, endValues);\n }\n if (series.yMax < Math.max.apply(0, startValues)) {\n series.yMax = 0;\n }\n }\n }\n this.findPercentageOfStacking(stackingSeies, stackedValues, isStacking100);\n };\n Series.prototype.findPercentageOfStacking = function (stackingSeies, values, isStacking100) {\n for (var _i = 0, stackingSeies_1 = stackingSeies; _i < stackingSeies_1.length; _i++) {\n var item = stackingSeies_1[_i];\n if (isStacking100) {\n return null;\n }\n for (var _a = 0, _b = getVisiblePoints(item); _a < _b.length; _a++) {\n var point = _b[_a];\n point.percentage = Math.abs(+(point.y / values[point.index] * 100).toFixed(2));\n }\n }\n };\n Series.prototype.findFrequencies = function (seriesCollection) {\n var frequencies = [];\n var stackingGroup;\n var visiblePoints = [];\n for (var _i = 0, seriesCollection_2 = seriesCollection; _i < seriesCollection_2.length; _i++) {\n var series = seriesCollection_2[_i];\n series.yAxis.isStack100 = series.type.indexOf('100') !== -1 ? true : false;\n visiblePoints = getVisiblePoints(series);\n if (series.type.indexOf('Stacking') !== -1) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!frequencies[stackingGroup]) {\n frequencies[stackingGroup] = [];\n }\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n if (frequencies[stackingGroup][visiblePoints[j].xValue] === undefined) {\n frequencies[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (series.yData[j] > 0) {\n frequencies[stackingGroup][visiblePoints[j].xValue] += series.yData[j];\n }\n else {\n frequencies[stackingGroup][visiblePoints[j].xValue] -= series.yData[j];\n }\n }\n }\n }\n return frequencies;\n };\n /* private dataManagerFailure(e: { result: Object[] }): void {\n this.currentViewData = [];\n this.refreshChart();\n }*/\n /** @private */\n Series.prototype.renderSeries = function (chart) {\n var seriesType = firstToLowerCase(this.type);\n seriesType = seriesType.replace('100', '');\n if (chart[seriesType + 'SeriesModule']) {\n if (this.category !== 'Indicator' && this.category !== 'TrendLine') {\n this.createSeriesElements(chart);\n }\n this.visiblePoints = getVisiblePoints(this);\n chart[seriesType + 'SeriesModule'].render(this, this.xAxis, this.yAxis, chart.requireInvertedAxis);\n if (this.category !== 'Indicator') {\n if (this.errorBar.visible) {\n this.chart.errorBarModule.render(this);\n }\n if (this.marker.dataLabel.visible) {\n chart.dataLabelModule.render(this, this.chart, this.marker.dataLabel);\n }\n this.appendSeriesElement(chart.seriesElements, chart);\n }\n if (!this.chart.enableCanvas) {\n this.performAnimation(chart, seriesType, this.errorBar, this.marker, this.marker.dataLabel);\n }\n }\n };\n /**\n * To create seris element.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.createSeriesElements = function (chart) {\n if (this.category !== 'Indicator') {\n var elementId = chart.element.id;\n // 8 for extend border value 5 for extend size value\n var explodeValue = this.marker.border.width + 8 + 5;\n var render = (this.type === 'Scatter' || this.type === 'Bubble') ?\n chart.svgRenderer : chart.renderer;\n var index = this.index === undefined ? this.category : this.index;\n var markerHeight = void 0;\n var markerWidth = void 0;\n var options = void 0;\n if (this.type === 'Scatter') {\n markerHeight = (chart.primaryYAxis.maximum || chart.primaryXAxis.maximum) ? 0 : (this.marker.height + explodeValue) / 2;\n markerWidth = (chart.primaryYAxis.maximum || chart.primaryXAxis.maximum) ? 0 : (this.marker.width + explodeValue) / 2;\n }\n else {\n markerHeight = 0;\n markerWidth = 0;\n }\n if (chart.chartAreaType === 'PolarRadar') {\n var markerMaxValue = (this.drawType === 'Scatter') ? Math.max(this.marker.width, this.marker.height) : 0;\n options = new CircleOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, this.clipRect.width / 2 + this.clipRect.x, this.clipRect.height / 2 + this.clipRect.y, chart.radius + markerMaxValue);\n this.clipRectElement = appendClipElement(chart.redraw, options, render, 'drawCircularClipPath');\n }\n else {\n options = new RectOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: -markerWidth, y: -markerHeight,\n width: this.clipRect.width + markerWidth * 2,\n height: this.clipRect.height + markerHeight * 2\n });\n this.clipRectElement = appendClipElement(chart.redraw, options, render);\n }\n var transform = chart.chartAreaType === 'Cartesian' ? 'translate(' + this.clipRect.x + ',' + (this.clipRect.y) + ')' : '';\n this.symbolElement = null;\n this.seriesElement = render.createGroup({\n 'id': elementId + 'SeriesGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + elementId + '_ChartSeriesClipRect_' + index + ')'\n });\n if (!this.chart.enableCanvas || this.type === 'Scatter' || this.type === 'Bubble') {\n this.seriesElement.appendChild(this.clipRectElement);\n }\n }\n };\n /**\n * To append the series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.appendSeriesElement = function (element, chart) {\n var marker = this.marker;\n var dataLabel = marker.dataLabel;\n var redraw = chart.redraw;\n if (this.category !== 'TrendLine') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n var errorBar = this.errorBar;\n if (errorBar.visible) {\n if (chart.chartAreaType === 'PolarRadar') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n }\n else {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.errorBarElement, redraw);\n }\n }\n if (this.type === 'Scatter' || this.type === 'Bubble') {\n appendChildElement(false, chart.seriesElements, this.seriesElement, redraw);\n }\n }\n if (marker.visible && (chart.chartAreaType === 'Cartesian' ||\n ((this.drawType !== 'Scatter') && chart.chartAreaType === 'PolarRadar')) && this.type !== 'Scatter' &&\n this.type !== 'Bubble' && this.type !== 'Candle' && this.type !== 'Hilo' && this.type !== 'HiloOpenClose' && this.symbolElement) {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.symbolElement, redraw);\n }\n if (dataLabel.visible && this.textElement) {\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.shapeElement, redraw);\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.textElement, redraw);\n }\n if (!chart.enableCanvas && chart.dataLabelElements.hasChildNodes()) {\n chart.seriesElements.appendChild(chart.dataLabelElements);\n }\n };\n /**\n * To perform animation for chart series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.performAnimation = function (chart, type, errorBar, marker, dataLabel) {\n if (this.animation.enable && chart.animateSeries) {\n chart[type + 'SeriesModule'].doAnimation(this);\n if (errorBar.visible) {\n chart.errorBarModule.doErrorBarAnimation(this);\n }\n if (marker.visible) {\n chart.markerRender.doMarkerAnimation(this);\n }\n //to datalabel animation disabled for edge and IE\n if (dataLabel.visible && Browser.info.name !== 'edge' && !Browser.isIE) {\n chart.dataLabelModule.doDataLabelAnimation(this);\n }\n }\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setPointColor = function (point, color) {\n color = point.interior || color;\n return point.isEmpty ? (this.emptyPointSettings.fill || color) : color;\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setBorderColor = function (point, border) {\n border.width = point.isEmpty ? (this.emptyPointSettings.border.width || border.width) : border.width;\n border.color = point.isEmpty ? (this.emptyPointSettings.border.color || border.color) : border.color;\n return border;\n };\n __decorate([\n Property('')\n ], Series.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"yName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"drawType\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"isClosed\", void 0);\n __decorate([\n Property('#2ecd71')\n ], Series.prototype, \"bearFillColor\", void 0);\n __decorate([\n Property('#e74c3d')\n ], Series.prototype, \"bullFillColor\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"enableSolidCandles\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"binInterval\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"showNormalDistribution\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"stackingGroup\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], Series.prototype, \"border\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"zOrder\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"type\", void 0);\n __decorate([\n Complex(null, ErrorBarSettings)\n ], Series.prototype, \"errorBar\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], Series.prototype, \"marker\", void 0);\n __decorate([\n Complex({}, DragSettings)\n ], Series.prototype, \"dragSettings\", void 0);\n __decorate([\n Collection([], Trendline)\n ], Series.prototype, \"trendlines\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipFormat\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('SeriesType')\n ], Series.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"unSelectedStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"nonHighlightStyle\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"minRadius\", void 0);\n __decorate([\n Property(3)\n ], Series.prototype, \"maxRadius\", void 0);\n __decorate([\n Property('Natural')\n ], Series.prototype, \"splineType\", void 0);\n __decorate([\n Property(0.5)\n ], Series.prototype, \"cardinalSplineTension\", void 0);\n __decorate([\n Complex(null, EmptyPointSettings)\n ], Series.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"showMean\", void 0);\n __decorate([\n Property('Normal')\n ], Series.prototype, \"boxPlotMode\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidth\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"columnSpacing\", void 0);\n __decorate([\n Property('#C64E4A')\n ], Series.prototype, \"negativeFillColor\", void 0);\n __decorate([\n Property('#4E81BC')\n ], Series.prototype, \"summaryFillColor\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"intermediateSumIndexes\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"sumIndexes\", void 0);\n __decorate([\n Complex({ color: 'black', width: 2 }, Connector)\n ], Series.prototype, \"connector\", void 0);\n __decorate([\n Complex(null, CornerRadius)\n ], Series.prototype, \"cornerRadius\", void 0);\n return Series;\n}(SeriesBase));\nexport { Series };\n","/* eslint-disable @typescript-eslint/ban-types */\nimport { Query, DataManager, Deferred } from '@syncfusion/ej2-data';\n/**\n * data module is used to generate query and dataSource\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @private\n */\n function Data(dataSource, query) {\n this.initDataManager(dataSource, query);\n }\n /**\n * The function used to initialize dataManager and query\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @returns {void}\n * @private\n */\n Data.prototype.initDataManager = function (dataSource, query) {\n this.dataManager = dataSource instanceof DataManager ? dataSource : new DataManager(dataSource);\n this.query = query instanceof Query ? query : new Query();\n };\n /**\n * The function used to generate updated Query from chart model\n *\n * @returns {void}\n * @private\n */\n Data.prototype.generateQuery = function () {\n var query = this.query.clone();\n return query;\n };\n /**\n * The function used to get dataSource by executing given Query\n *\n * @param {Query} query - A Query that specifies to generate dataSource\n * @returns {void}\n * @private\n */\n Data.prototype.getData = function (dataQuery) {\n var _this = this;\n if (this.dataManager.ready) {\n var dataManagerDeferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(dataQuery).then(function (result) {\n dataManagerDeferred_1.resolve(result);\n });\n }).catch(function (e) { dataManagerDeferred_1.reject(e); });\n return dataManagerDeferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(dataQuery);\n }\n };\n return Data;\n}());\nexport { Data };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\nimport { drawSymbol } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { Browser, extend, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { withInBounds, PointData, stopTimer } from '../../common/utils/helper';\nimport { colorNameToHex, convertHexToColor } from '../../common/utils/helper';\n/**\n * Marker Module used to render the marker for line type series.\n */\nvar MarkerExplode = /** @class */ (function (_super) {\n __extends(MarkerExplode, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function MarkerExplode(chart) {\n var _this = _super.call(this, chart) || this;\n _this.elementId = chart.element.id;\n return _this;\n }\n /**\n * @hidden\n */\n MarkerExplode.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMoveHandler);\n this.chart.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseUpHandler = function () {\n var chart = this.chart;\n if (chart.isTouch && !chart.crosshair.enable && !this.isSelected(chart)) {\n this.markerMove(true);\n }\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n if ((!chart.crosshair.enable || (chart.tooltip.enable)) && (!chart.isTouch || chart.startMove) && !this.isSelected(chart)) {\n this.markerMove(false);\n }\n };\n MarkerExplode.prototype.markerMove = function (remove) {\n var _this = this;\n var chart = this.chart;\n this.currentPoints = [];\n var data;\n var previous;\n var explodeSeries;\n var series;\n if (!chart.tooltip.shared || !chart.tooltip.enable) {\n data = this.getData();\n series = data.series;\n previous = this.previousPoints[0];\n explodeSeries = series && ((series.type === 'Bubble' || series.drawType === 'Scatter' || series.type === 'Scatter') ||\n (((series.type !== 'Candle') && (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose')) &&\n (series.marker.visible && series.marker.width !== 0 && series.marker.height !== 0)));\n data.lierIndex = this.lierIndex;\n if (data.point && explodeSeries && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex))) {\n this.currentPoints.push(data);\n }\n if (data.point && explodeSeries && chart.isPointMouseDown) {\n this.currentPoints.push(data);\n }\n }\n else {\n if (!withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n return null;\n }\n if (chart.tooltip.enable) {\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var chartSeries = _a[_i];\n if (!chartSeries.enableTooltip || chartSeries.category === 'Indicator') {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && chartSeries.visible) {\n data = this.getClosestX(chart, chartSeries, commonXvalues);\n }\n else if (chart.chartAreaType === 'PolarRadar' && chartSeries.visible && pointData.point !== null) {\n data = new PointData(chartSeries.points[pointData.point.index], chartSeries);\n }\n if (data) {\n this.currentPoints.push(data);\n data = null;\n }\n }\n }\n }\n var length = this.previousPoints.length;\n if (this.currentPoints.length > 0) {\n if (length === 0 || chart.isPointMouseDown || (length > 0 && this.previousPoints[0].point !== this.currentPoints[0].point)) {\n if (this.previousPoints.length > 0) {\n this.removeHighlightedMarker();\n }\n var _loop_1 = function (data_1) {\n if ((data_1 && data_1.point) || ((series.type !== 'Candle') &&\n (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose'))) {\n stopTimer(this_1.markerExplode);\n this_1.isRemove = true;\n data_1.point.symbolLocations.map(function (location, index) {\n if (!data_1.series.isRectSeries || data_1.point.marker.visible) {\n _this.drawTrackBall(data_1.series, data_1.point, location, index);\n }\n });\n }\n };\n var this_1 = this;\n for (var _b = 0, _c = this.currentPoints; _b < _c.length; _b++) {\n var data_1 = _c[_b];\n _loop_1(data_1);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n }\n }\n if (!chart.tooltip.enable && ((this.currentPoints.length === 0 && this.isRemove) || (remove && this.isRemove) ||\n !withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect))) {\n this.isRemove = false;\n this.markerExplode = +setTimeout(function () {\n _this.removeHighlightedMarker();\n }, 2000);\n }\n this.currentPoints = [];\n };\n MarkerExplode.prototype.drawTrackBall = function (series, point, location, index) {\n var marker = point.marker;\n var seriesMarker = series.marker;\n var shape = marker.shape || seriesMarker.shape;\n if (shape === 'None') {\n return null;\n }\n var element = series.symbolElement || series.seriesElement;\n var className;\n if (this.chart.highlightModule && this.chart.highlightMode !== 'None') {\n className = this.chart.highlightModule.generateStyle(series);\n }\n if (this.chart.selectionModule && this.chart.selectionMode !== 'None') {\n className = this.chart.selectionModule.generateStyle(series);\n }\n var symbolId = this.elementId + '_Series_' + series.index + '_Point_' + point.index + '_Trackball' +\n (index ? index : '');\n var size = new Size((marker.width || seriesMarker.width) + 5, (marker.height || seriesMarker.height) + 5);\n var border = (marker.border || series.border);\n var explodeSeries = (series.type === 'BoxAndWhisker' || series.type === 'Bubble' || series.type === 'Scatter');\n var borderColor = (border.color && border.color !== 'transparent') ? border.color :\n marker.fill || point.interior || (explodeSeries ? point.color : series.interior);\n var colorValue = convertHexToColor(colorNameToHex(borderColor));\n var borderWidth = marker.border ? marker.border.width : seriesMarker.border.width;\n var markerShadow = series.chart.themeStyle.markerShadow ||\n 'rgba(' + colorValue.r + ',' + colorValue.g + ',' + colorValue.b + ',0.2)';\n for (var i = 0; i < 2; i++) {\n var options = new PathOption(symbolId + '_' + i, i ? (marker.fill || point.color || (explodeSeries ? series.interior : '#ffffff')) : 'transparent', borderWidth + (i ? 0 : 8), i ? borderColor : markerShadow, (marker.opacity || seriesMarker.opacity), null, null);\n var symbol = drawSymbol(location, shape, size, marker.imageUrl, options, '', this.chart.svgRenderer, series.clipRect);\n // incident: 252450 point click selection not working while maker explode\n //symbol.setAttribute('style', 'pointer-events:none');\n symbol.setAttribute('class', 'EJ2-Trackball');\n var selectionId = element.id.indexOf('Symbol') !== -1 ? '_Symbol' : '';\n var seletionElem = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + selectionId);\n if (className !== '' && !isNullOrUndefined(className) && !isNullOrUndefined(seletionElem) &&\n seletionElem.hasAttribute('class') && (className === seletionElem.getAttribute('class'))) {\n symbol.classList.add(className);\n }\n symbol.setAttribute('clip-path', element.getAttribute('clip-path'));\n symbol.setAttribute('transform', element.getAttribute('transform'));\n this.chart.svgObject.appendChild(symbol);\n }\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.removeHighlightedMarker = function () {\n var elements = document.getElementsByClassName('EJ2-Trackball');\n for (var i = 0, len = elements.length; i < len; i++) {\n remove(elements[0]);\n }\n this.previousPoints = [];\n };\n return MarkerExplode;\n}(ChartData));\nexport { MarkerExplode };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { RectOption, appendChildElement, getElement, appendClipElement } from '../../common/utils/helper';\nimport { findlElement, drawSymbol, markerAnimate, CircleOption } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { pointRender } from '../../common/model/constants';\nimport { MarkerExplode } from './marker-explode';\nimport { getSaturationColor } from '../../common/utils/helper';\n/**\n * Marker module used to render the marker for line type series.\n */\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function Marker(chart) {\n var _this = _super.call(this, chart) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Render the marker for series.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.render = function (series) {\n var _this = this;\n var redraw = series.chart.redraw;\n this.createElement(series, redraw);\n var _loop_1 = function (point) {\n if (point.visible && point.symbolLocations && point.symbolLocations.length) {\n point.symbolLocations.map(function (location, index) {\n if (series.marker.shape !== 'None') {\n _this.renderMarker(series, point, location, index, redraw);\n }\n });\n }\n };\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n _loop_1(point);\n }\n };\n Marker.prototype.renderMarker = function (series, point, location, index, redraw) {\n var seriesIndex = series.index === undefined ? series.category : series.index;\n var marker = series.marker;\n var border = {\n color: marker.border.color,\n width: marker.border.width\n };\n var borderColor = marker.border.color;\n var previousLocation;\n var previousPath;\n var circlePath;\n var shapeOption;\n location.x = location.x + marker.offset.x;\n location.y = location.y - marker.offset.y;\n var isBoxPlot = series.type === 'BoxAndWhisker';\n var fill = marker.fill || (isBoxPlot ? point.interior || series.interior : '#ffffff');\n var markerElement;\n var parentElement = isBoxPlot ?\n findlElement(series.seriesElement.childNodes, 'Series_' + series.index + '_Point_' + point.index)\n : series.symbolElement;\n border.color = borderColor || series.setPointColor(point, series.interior);\n var symbolId = this.elementId + '_Series_' + seriesIndex + '_Point_' + point.index + '_Symbol' +\n (index ? index : '');\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: point.isEmpty ? (series.emptyPointSettings.fill || fill) : fill,\n border: {\n color: series.type === 'BoxAndWhisker' ?\n (!isNullOrUndefined(borderColor) && borderColor !== 'transparent') ? borderColor :\n getSaturationColor(fill, -0.6)\n : border.color,\n width: border.width\n },\n height: marker.height, width: marker.width, shape: marker.shape\n };\n argsData.border = series.setBorderColor(point, { width: argsData.border.width, color: argsData.border.color });\n if (!series.isRectSeries || series.type === 'BoxAndWhisker') {\n this.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n }\n point.color = argsData.fill;\n if (!argsData.cancel) {\n var y = void 0;\n if (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.drawType === 'RangeColumn') {\n y = index ? point.low : point.high;\n }\n else if (isBoxPlot) {\n y = point.outliers[index];\n }\n else {\n y = point.y;\n }\n var markerFill = argsData.point.marker.fill || argsData.fill;\n var markerBorder = void 0;\n if (!isNullOrUndefined(argsData.point.marker.border)) {\n markerBorder = {\n color: argsData.point.marker.border.color || argsData.border.color,\n width: argsData.point.marker.border.width || argsData.border.width\n };\n }\n else {\n markerBorder = { color: argsData.border.color, width: argsData.border.width };\n }\n var markerWidth = argsData.point.marker.width || argsData.width;\n var markerHeight = argsData.point.marker.height || argsData.height;\n var markerOpacity = argsData.point.marker.opacity || marker.opacity;\n var markerShape = argsData.point.marker.shape || argsData.shape;\n var imageURL = argsData.point.marker.imageUrl || marker.imageUrl;\n shapeOption = new PathOption(symbolId, markerFill, markerBorder.width, markerBorder.color, markerOpacity, null);\n if ((parentElement !== undefined && parentElement !== null) || this.chart.enableCanvas) {\n if (redraw && getElement(shapeOption.id)) {\n markerElement = getElement(shapeOption.id);\n circlePath = markerShape === 'Circle' ? 'c' : '';\n previousLocation = {\n x: +markerElement.getAttribute(circlePath + 'x'), y: +markerElement.getAttribute(circlePath + 'y')\n };\n previousPath = markerElement.getAttribute('d');\n }\n markerElement = drawSymbol(location, markerShape, new Size(markerWidth, markerHeight), imageURL, shapeOption, point.x.toString() + ':' + y.toString(), this.chart.renderer, series.clipRect);\n appendChildElement(this.chart.enableCanvas, parentElement, markerElement, redraw, true, circlePath + 'x', circlePath + 'y', previousLocation, previousPath, false, false, null, series.chart.duration);\n }\n point.marker = {\n border: markerBorder, fill: markerFill, height: markerHeight,\n visible: true, shape: markerShape, width: markerWidth, imageUrl: imageURL\n };\n }\n else {\n location = null;\n point.marker = {\n visible: false\n };\n }\n };\n Marker.prototype.createElement = function (series, redraw) {\n var markerClipRect;\n var marker = series.marker;\n // 8 for extend border value 5 for extend size value\n var explodeValue = marker.border.width + 8 + 5;\n var render = series.chart.svgRenderer;\n var index = series.index === undefined ? series.category : series.index;\n var options;\n var transform = series.chart.chartAreaType === 'Cartesian' ? 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')' : '';\n if (marker.visible) {\n var markerHeight = (marker.height + explodeValue) / 2;\n var markerWidth = (marker.width + explodeValue) / 2;\n if (series.chart.chartAreaType === 'Cartesian') {\n options = new RectOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: -markerWidth, y: -markerHeight,\n width: series.clipRect.width + markerWidth * 2,\n height: series.clipRect.height + markerHeight * 2\n });\n markerClipRect = appendClipElement(redraw, options, render);\n }\n else {\n options = new CircleOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, series.clipRect.width / 2 + series.clipRect.x, series.clipRect.height / 2 + series.clipRect.y, series.chart.radius + Math.max(markerHeight, markerWidth));\n markerClipRect = appendClipElement(redraw, options, render, 'drawCircularClipPath');\n }\n options = {\n 'id': this.elementId + 'SymbolGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.elementId + '_ChartMarkerClipRect_' + index + ')'\n };\n series.symbolElement = render.createGroup(options);\n series.symbolElement.appendChild(markerClipRect);\n if (this.chart.enableCanvas) {\n var element = document.getElementById(this.chart.element.id + '_tooltip_svg');\n element.appendChild(series.symbolElement);\n }\n }\n };\n Marker.prototype.getRangeLowPoint = function (region, series) {\n var x = region.x;\n var y = region.y;\n if (series.chart.requireInvertedAxis) {\n y += region.height / 2;\n x += series.yAxis.isInversed ? region.width : 0;\n }\n else {\n y += series.yAxis.isInversed ? 0 : region.height;\n x += region.width / 2;\n }\n return { x: x, y: y };\n };\n /**\n * Animates the marker.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.doMarkerAnimation = function (series) {\n if (!(series.type === 'Scatter' || series.type === 'Bubble' || series.type === 'Candle' || series.type === 'Hilo' ||\n series.type === 'HiloOpenClose' || (series.chart.chartAreaType === 'PolarRadar' && (series.drawType === 'Scatter')))) {\n var markerElements = series.symbolElement.childNodes;\n var delay = series.animation.delay + series.animation.duration;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var j = 1;\n var incFactor = (series.type === 'RangeArea' || series.type === 'RangeColumn') ? 2 : 1;\n for (var i = 0; i < series.points.length; i++) {\n if (series.points[i].symbolLocations) {\n if (!series.points[i].symbolLocations.length || !markerElements[j]) {\n continue;\n }\n markerAnimate(markerElements[j], delay, duration, series, i, series.points[i].symbolLocations[0], false);\n if (incFactor === 2) {\n var lowPoint = this.getRangeLowPoint(series.points[i].regions[0], series);\n markerAnimate(markerElements[j + 1], delay, duration, series, i, lowPoint, false);\n }\n j += incFactor;\n }\n }\n }\n };\n return Marker;\n}(MarkerExplode));\nexport { Marker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { Property, Complex, ChildProperty } from '@syncfusion/ej2-base';\nimport { measureText, Rect, TextOption, Size, PathOption } from '@syncfusion/ej2-svg-base';\nimport { Font, Border, Margin, ContainerPadding } from '../model/base';\nimport { Theme } from '../model/theme';\nimport { subtractThickness, Thickness, drawSymbol, ChartLocation, titlePositionX, getTitle, textTrim } from '../utils/helper';\nimport { RectOption, textElement, stringToNumber } from '../utils/helper';\nimport { removeElement, showTooltip, getElement, appendChildElement } from '../utils/helper';\n/**\n * Configures the location for the legend.\n */\nvar Location = /** @class */ (function (_super) {\n __extends(Location, _super);\n function Location() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Location.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Location.prototype, \"y\", void 0);\n return Location;\n}(ChildProperty));\nexport { Location };\n/**\n * Configures the legends in charts.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Location)\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property('Auto')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('Series')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"padding\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex(Theme.legendLabelFont, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Complex({}, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, Margin)\n ], LegendSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, ContainerPadding)\n ], LegendSettings.prototype, \"containerPadding\", void 0);\n __decorate([\n Property(5)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"description\", void 0);\n __decorate([\n Property(3)\n ], LegendSettings.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex(Theme.legendTitleFont, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Top')\n ], LegendSettings.prototype, \"titlePosition\", void 0);\n __decorate([\n Property(100)\n ], LegendSettings.prototype, \"maximumTitleWidth\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"enablePages\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"isInversed\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Legend base class for Chart and Accumulation chart.\n *\n * @private\n */\nvar BaseLegend = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function BaseLegend(chart) {\n this.pageXCollections = []; // pages of x locations\n this.legendTitleCollections = [];\n this.legendRegions = [];\n this.pagingRegions = [];\n this.chart = chart;\n this.legend = chart.legendSettings;\n this.legendID = chart.element.id + '_chart_legend';\n this.isChartControl = (chart.getModuleName() === 'chart');\n this.isBulletChartControl = (chart.getModuleName() === 'bulletChart');\n this.bulletChart = this.chart;\n this.fivePixel = 5;\n this.rowCount = 0;\n this.pageButtonSize = 8;\n this.maxColumns = 0;\n this.maxWidth = 0;\n this.currentPage = 1;\n this.backwardArrowOpacity = 0;\n this.forwardArrowOpacity = 1;\n this.arrowWidth = (2 * (this.fivePixel + this.pageButtonSize + this.fivePixel));\n this.arrowHeight = this.arrowWidth;\n this.isTop = false;\n this.isTitle = false;\n this.currentPageNumber = 1;\n }\n /**\n * Calculate the bounds for the legends.\n *\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.calculateLegendBounds = function (rect, availableSize, maxLabelSize) {\n var legend = this.legend;\n var defaultValue = (this.isBulletChartControl) ? '40%' : '20%';\n this.getPosition(legend.position, availableSize);\n this.legendBounds = new Rect(rect.x, rect.y, 0, 0);\n this.isVertical = (this.position === 'Left' || this.position === 'Right');\n if (this.isVertical) {\n this.legendBounds.height = stringToNumber(legend.height, availableSize.height - (rect.y - this.chart.margin.top)) || rect.height;\n this.legendBounds.width = stringToNumber(legend.width || defaultValue, availableSize.width);\n }\n else {\n this.legendBounds.width = stringToNumber(legend.width, availableSize.width) || rect.width;\n this.legendBounds.height = stringToNumber(legend.height || defaultValue, availableSize.height);\n }\n this.library.getLegendBounds(availableSize, this.legendBounds, legend);\n if (!this.isBulletChartControl) {\n this.legendBounds.width += (this.legend.containerPadding.left + this.legend.containerPadding.right);\n this.legendBounds.height += (this.legend.containerPadding.top + this.legend.containerPadding.bottom);\n }\n this.getLocation(this.position, legend.alignment, this.legendBounds, rect, availableSize, maxLabelSize);\n };\n /**\n * To find legend position based on available size for chart and accumulation chart\n *\n * @param position\n * @param availableSize\n * @param position\n * @param availableSize\n * @returns {void}\n */\n BaseLegend.prototype.getPosition = function (position, availableSize) {\n var chart = this.chart;\n var accumulation = this.chart;\n if (this.isChartControl || this.isBulletChartControl) {\n this.position = (position !== 'Auto') ? position : 'Bottom';\n }\n else {\n if (position === 'Auto' && ((chart || accumulation).visibleSeries && (chart || accumulation).visibleSeries[0].type === 'Funnel' || (chart || accumulation).visibleSeries[0].type === 'Pyramid')) {\n position = 'Top';\n }\n this.position = (position !== 'Auto') ? position :\n (availableSize.width > availableSize.height ? 'Right' : 'Bottom');\n }\n };\n /**\n * To set bounds for chart and accumulation chart\n *\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @returns {void}\n */\n BaseLegend.prototype.setBounds = function (computedWidth, computedHeight, legend, legendBounds) {\n var titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n if (this.isVertical && this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleHeight += (this.pageButtonSize + this.fivePixel);\n }\n computedWidth = Math.min(computedWidth, legendBounds.width);\n computedHeight = Math.min(computedHeight, legendBounds.height);\n if (legend.mode === 'Gradient') {\n legendBounds.width = legend.width ? legendBounds.width : this.isVertical ? computedWidth : 0.75 * legendBounds.width;\n legendBounds.height = legend.height ? legendBounds.height : this.isVertical ? 0.75 * legendBounds.height : computedHeight;\n }\n else {\n legendBounds.width = !legend.width ? computedWidth : legendBounds.width;\n legendBounds.height = !legend.height ? computedHeight : legendBounds.height;\n }\n if (!this.isBulletChartControl) {\n if (this.isTop && legend.titleStyle.textOverflow !== 'None') {\n this.calculateLegendTitle(legend, legendBounds);\n legendBounds.height += legend.titleStyle.textOverflow === 'Wrap' && this.legendTitleCollections.length > 1 ?\n (this.legendTitleSize.height - (this.legendTitleSize.height / this.legendTitleCollections.length)) : 0;\n }\n }\n this.rowCount = Math.max(1, Math.ceil((legendBounds.height - legend.padding - titleHeight) /\n (this.maxItemHeight + legend.padding)));\n };\n /**\n * To find legend location based on position, alignment for chart and accumulation chart\n *\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n */\n BaseLegend.prototype.getLocation = function (position, alignment, legendBounds, rect, availableSize, maxLabelSize) {\n var padding = this.legend.border.width;\n var isBulletChart = this.isBulletChartControl;\n var bulletChart = this.bulletChart;\n var labelIns = bulletChart.labelPosition === 'Inside';\n var ticklIns = bulletChart.tickPosition === 'Inside';\n var isVertical = bulletChart.orientation === 'Vertical';\n var categoryFieldValue = (isBulletChart && bulletChart.categoryField !== '') ?\n maxLabelSize.width + this.chart.border.width + padding * 3 : 0;\n var marginBottom = this.chart.margin.bottom;\n var legendHeight = legendBounds.height + padding + this.legend.margin.top + this.legend.margin.bottom;\n var legendWidth = legendBounds.width + padding + this.legend.margin.left + this.legend.margin.right;\n if (position === 'Bottom') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + (rect.height - legendHeight) + padding + this.legend.margin.top;\n legendBounds.y += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns\n && !isVertical) ? bulletChart.majorTickLines.height + marginBottom + this.legend.border.width + padding * 2 :\n (isVertical && bulletChart.categoryField !== '') ? maxLabelSize.height + padding * 2 : 0;\n subtractThickness(rect, new Thickness(0, 0, 0, legendHeight));\n }\n else if (position === 'Top') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + padding + this.legend.margin.top;\n legendBounds.y -= (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n !isVertical) ? bulletChart.majorTickLines.height + this.chart.margin.top : 0;\n legendHeight -= (isBulletChart) ? -padding * 2 : 0;\n subtractThickness(rect, new Thickness(0, 0, legendHeight, 0));\n }\n else if (position === 'Right') {\n legendBounds.x = rect.x + (rect.width - legendBounds.width) - this.legend.margin.right;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (this.chart.margin.left + this.chart.margin.right + bulletChart.majorTickLines.height) : 0;\n subtractThickness(rect, new Thickness(0, legendWidth, 0, 0));\n }\n else if (position === 'Left') {\n legendBounds.x = legendBounds.x + this.legend.margin.left;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (legendBounds.x - this.chart.margin.left + padding + bulletChart.majorTickLines.height) :\n (bulletChart.orientation !== 'Vertical' && bulletChart.categoryField !== '') ? categoryFieldValue : 0;\n subtractThickness(rect, new Thickness(legendWidth, 0, 0, 0));\n }\n else {\n legendBounds.x = this.legend.location.x;\n legendBounds.y = this.legend.location.y;\n subtractThickness(rect, new Thickness(0, 0, 0, 0));\n }\n };\n /**\n * To find legend alignment for chart and accumulation chart\n *\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n */\n BaseLegend.prototype.alignLegend = function (start, size, legendSize, alignment) {\n switch (alignment) {\n case 'Far':\n start = (size - legendSize) - start;\n break;\n case 'Center':\n start = ((size - legendSize) / 2);\n break;\n }\n return start;\n };\n /**\n * Renders the legend.\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.renderLegend = function (chart, legend, legendBounds, redraw) {\n var titleHeight = 0;\n var titlePlusArrowWidth = 0;\n var pagingLegendBounds = new Rect(0, 0, 0, 0);\n var requireLegendBounds = new Rect(0, 0, 0, 0);\n var firstLegend = this.findFirstLegendPosition(this.legendCollections);\n var padding = legend.padding;\n var isPaging = legend.enablePages;\n var titlePosition = legend.titlePosition;\n var upArrowHeight = this.isPaging && !legend.enablePages && this.isVertical ? this.pageButtonSize : 0;\n var legendGroup = chart.renderer.createGroup({ id: this.legendID + '_g' });\n var legendTranslateGroup = this.createLegendElements(chart, legendBounds, legendGroup, legend, this.legendID, redraw);\n this.legendRegions = [];\n var maxHeight = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n if (this.legendCollections[i].text !== '') {\n maxHeight = Math.max(this.legendCollections[i].textSize.height, maxHeight);\n break;\n }\n else {\n continue;\n }\n }\n this.maxItemHeight = Math.max(maxHeight, legend.shapeHeight);\n // For new legend navigation\n if (!isPaging && this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = !this.isTitle ? 0 : titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n titlePlusArrowWidth += (this.pageButtonSize + (2 * this.fivePixel));\n }\n else if (!this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = this.isTitle && titlePosition === 'Left' ? (this.fivePixel + this.legendTitleSize.width) : 0;\n }\n titleHeight = !this.isTitle ? 0 : (this.isTop || this.isVertical ? this.legendTitleSize.height : 0);\n if (chart.legendSettings.mode === 'Gradient' && this.legendCollections.length > 1) {\n this.getLinearLegend(legendBounds, chart, legend, legendTranslateGroup);\n this.totalPages = 1;\n }\n else if (firstLegend !== this.legendCollections.length) {\n var legendSeriesGroup = void 0; // legendItem group for each series group element\n var count = 0;\n var previousLegend = this.legendCollections[firstLegend];\n // starting shape center x,y position && to resolve lint error used new line for declaration\n var start = new ChartLocation(this.isBulletChartControl ? legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) :\n legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) + legend.containerPadding.left, this.isBulletChartControl ? legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) :\n legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) + legend.containerPadding.top);\n var anchor = chart.isRtlEnabled ? 'end' : 'start';\n var textOptions = new TextOption('', start.x, start.y, anchor);\n var textPadding = legend.shapePadding + padding + legend.shapeWidth;\n // initialization for totalPages legend click totalpage again calculate\n this.totalPages = this.totalPages = (this.isChartControl || this.isBulletChartControl) ? this.totalPages : 0;\n this.pageXCollections = [];\n this.legendCollections[firstLegend].location = start;\n if (!legend.enablePages && this.isPaging) {\n var x = start.x - this.fivePixel;\n var y = start.y - this.fivePixel;\n var leftSpace = this.isTitle && !this.isVertical && titlePosition === 'Left' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n var bottomSapce = this.isVertical ? (this.pageButtonSize) + Math.abs(y - legendBounds.y) : 0;\n var rightSpace = this.isTitle && !this.isVertical && titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n rightSpace += this.isVertical ? 0 : (this.fivePixel + this.pageButtonSize + this.fivePixel);\n pagingLegendBounds = new Rect(x, y, legendBounds.width - rightSpace - leftSpace, legendBounds.height - bottomSapce);\n requireLegendBounds = pagingLegendBounds;\n }\n else {\n requireLegendBounds = legendBounds;\n }\n for (var _i = 0, _a = this.legendCollections; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n if (this.chart.getModuleName() === 'accumulationchart') {\n // eslint-disable-next-line max-len\n legendOption.fill = (this.chart || this.chart).visibleSeries[0].points[legendOption.pointIndex].color;\n }\n this.accessbilityText = (this.isBulletChartControl) ? 'Legend of bullet chart' + '' + legendOption.text\n : 'Click to show or hide the ' + legendOption.text + ' series';\n if (legendOption.render && legendOption.text !== '') {\n legendSeriesGroup = chart.renderer.createGroup({\n id: this.legendID + this.generateId(legendOption, '_g_', count)\n });\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('tabindex', legend.tabIndex.toString());\n legendSeriesGroup.setAttribute('aria-label', legend.description ||\n this.accessbilityText);\n }\n this.library.getRenderPoint(legendOption, start, textPadding, previousLegend, requireLegendBounds, count, firstLegend);\n this.renderSymbol(legendOption, legendSeriesGroup, count);\n this.renderText(chart, legendOption, legendSeriesGroup, textOptions, count);\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('style', 'outline: none; cursor: ' + ((!legend.toggleVisibility && (chart.selectionMode === 'None' ||\n chart.highlightMode === 'None' ||\n chart.selectionMode === 'None') || this.isBulletChartControl) ? 'auto' : 'pointer'));\n }\n if (legendTranslateGroup) {\n legendTranslateGroup.appendChild(legendSeriesGroup);\n }\n previousLegend = legendOption;\n }\n count++;\n }\n if (this.isPaging) {\n this.renderPagingElements(chart, legendBounds, textOptions, legendGroup);\n }\n else {\n this.totalPages = 1;\n }\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, legendGroup, redraw);\n };\n /** @private */\n BaseLegend.prototype.getLinearLegend = function (legendBounds, chart, legend, legendTranslateGroup) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var previousLegend = this.legendCollections[0];\n var nextLegend = this.legendCollections[1];\n var defElement = this.chart.renderer.createDefs();\n var gradientLegendCount = 0;\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var fillColors = [];\n var numberItems = [];\n if (legend.title) {\n if (!this.isVertical) {\n if (legend.titlePosition === 'Left') {\n legendBounds.x += this.legendTitleSize.width;\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Right') {\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Top') {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n else {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var colorMap = _a[_i];\n if (numberItems.indexOf(colorMap.start) < 0) {\n numberItems.push(colorMap.start);\n }\n if (colorMap.colors.length > 2) {\n var diffValue = (colorMap.end - colorMap.start);\n var colorsLength = colorMap.colors.length - 1;\n if (diffValue > 0) {\n diffValue = diffValue / colorsLength;\n for (var index = 1; index < colorsLength; index++) {\n var calculatedValue = colorMap.start + (diffValue * index);\n numberItems.push(calculatedValue);\n }\n }\n else {\n for (var index = 1; index < colorsLength; index++) {\n numberItems.push(colorMap.start);\n }\n }\n }\n if (numberItems.indexOf(colorMap.end) < 0) {\n numberItems.push(colorMap.end);\n }\n for (var _b = 0, _c = colorMap.colors; _b < _c.length; _b++) {\n var fillColor = _c[_b];\n if (fillColors.indexOf(fillColor) < 0) {\n fillColors.push(fillColor);\n }\n }\n if (colorMap.colors.length > 0 && colorMap.colors.length < 2) {\n fillColors.push(colorMap.colors[0]);\n }\n }\n var x2 = this.isVertical ? '0' : '100';\n var y2 = this.isVertical ? '100' : '0';\n linerGradientEle.setAttribute('id', this.generateId(previousLegend, 'linearGradient', gradientLegendCount));\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n var full = numberItems[numberItems.length - 1] - numberItems[0];\n for (var b = 0; b < fillColors.length; b++) {\n var offsetValue = numberItems[b] - numberItems[0];\n offsetValue = offsetValue / full;\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', offsetValue.toString());\n stopEle.setAttribute('stop-color', fillColors[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n var startLabel = previousLegend.text.toString();\n var endLabel = nextLegend.text.toString();\n var startTextSize = measureText(startLabel, legend.textStyle);\n var endTextSize = measureText(endLabel, legend.textStyle);\n var textWidth = startTextSize.width > endTextSize.width ? startTextSize.width : endTextSize.width;\n var textHeight = startTextSize.height > endTextSize.height ? startTextSize.height : endTextSize.height;\n var otherSpaces = (2 * textWidth) + (4 * legend.padding);\n var linearBarWidth = legendBounds.width;\n var linearBarHeight = legendBounds.height;\n var xValue = legendBounds.x + textWidth + (2 * legend.padding);\n var yValue = legendBounds.y + legend.padding;\n var startLabelY;\n var endLabelY;\n var startLabelX;\n var endLabelX;\n if (this.isVertical) {\n otherSpaces = (2 * textHeight) + (4 * legend.padding);\n linearBarWidth = legendBounds.width - (2 * legend.padding);\n linearBarHeight = legendBounds.height - otherSpaces;\n xValue = legendBounds.x + legend.padding;\n yValue = legendBounds.y + textHeight + (2 * legend.padding);\n startLabelY = legendBounds.y + legend.padding + textHeight;\n endLabelY = yValue + linearBarHeight + textHeight;\n startLabelX = (legendBounds.x + (legendBounds.width * 0.5)) - (textWidth * 0.5);\n endLabelX = startLabelX;\n if (linearBarWidth > 30) {\n var diffWidth = linearBarWidth - 30;\n linearBarWidth = 30;\n xValue = xValue + (diffWidth / 2);\n }\n }\n else {\n linearBarWidth = legendBounds.width - otherSpaces;\n linearBarHeight = legendBounds.height - (2 * legend.padding);\n startLabelX = legendBounds.x + legend.padding + (textWidth - startTextSize.width);\n endLabelX = legendBounds.x + linearBarWidth + (3 * legend.padding) + textWidth;\n startLabelY = legendBounds.y + (legendBounds.height * 0.5) + (textHeight * 0.25);\n endLabelY = startLabelY;\n if (linearBarHeight > 30) {\n var diffHeight = linearBarHeight - 30;\n linearBarHeight = 30;\n yValue = yValue + (diffHeight / 2);\n }\n }\n var textOptions = new TextOption('', startLabelX, startLabelY, '', startLabel);\n var hiddenColor = '#D3D3D3';\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 1);\n var fontcolor = previousLegend.visible ? legend.textStyle.color || chart.themeStyle.legendLabel : hiddenColor;\n var isCanvas = this.chart.enableCanvas;\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\n textOptions = new TextOption('', endLabelX, endLabelY, '', endLabel);\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 2);\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\n var gradientLegend = chart.renderer.drawRectangle({\n width: linearBarWidth,\n height: linearBarHeight,\n x: xValue,\n y: yValue,\n fill: 'url(#' + this.generateId(previousLegend, 'linearGradient', gradientLegendCount) + ')'\n });\n defElement.appendChild(linerGradientEle);\n legendTranslateGroup.appendChild(defElement);\n legendTranslateGroup.appendChild(gradientLegend);\n };\n /**\n * To find first valid legend text index for chart and accumulation chart\n *\n * @param legendCollection\n * @returns {number}\n * @private\n */\n BaseLegend.prototype.findFirstLegendPosition = function (legendCollection) {\n var count = 0;\n for (var _i = 0, legendCollection_1 = legendCollection; _i < legendCollection_1.length; _i++) {\n var legend = legendCollection_1[_i];\n if (legend.render && legend.text !== '') {\n break;\n }\n count++;\n }\n return count;\n };\n /**\n * To get the legend title text width and height.\n *\n * @param legend\n * @param legendBounds\n */\n BaseLegend.prototype.calculateLegendTitle = function (legend, legendBounds) {\n if (legend.title) {\n this.isTop = legend.titlePosition === 'Top';\n var padding = legend.titleStyle.textOverflow === 'Trim' ? 2 * legend.padding : 0;\n if (this.isTop || this.isVertical) {\n this.legendTitleCollections = getTitle(legend.title, legend.titleStyle, (legendBounds.width - padding));\n }\n else {\n this.legendTitleCollections[0] = textTrim(legend.maximumTitleWidth, legend.title, legend.titleStyle);\n }\n var text = this.isTop ? legend.title : this.legendTitleCollections[0];\n this.legendTitleSize = measureText(text, legend.titleStyle);\n this.legendTitleSize.height *= this.legendTitleCollections.length;\n }\n else {\n this.legendTitleSize = new Size(0, 0);\n }\n };\n /**\n * Render the legend title\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param legendGroup\n */\n BaseLegend.prototype.renderLegendTitle = function (chart, legend, legendBounds, legendGroup) {\n var padding = legend.padding;\n var alignment = legend.titleStyle.textAlignment;\n this.isTop = legend.titlePosition === 'Top';\n var anchor = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n var x = titlePositionX(legendBounds, legend.titleStyle);\n anchor = this.isTop || this.isVertical ? anchor : '';\n x = alignment === 'Near' ? (x + padding) : alignment === 'Far' ? (x - padding) : x;\n x = (this.isTop || this.isVertical) ? x : ((legendBounds.x) + (legend.titlePosition === 'Left' ? 5 :\n (legendBounds.width - this.legendTitleSize.width - 5)));\n var topPadding = (legendBounds.height / 2) + (this.legendTitleSize.height / 4);\n var y = legendBounds.y + (!this.isTop && !this.isVertical ? topPadding :\n (this.legendTitleSize.height / this.legendTitleCollections.length));\n var legendTitleTextOptions = new TextOption(this.legendID + '_title', x, y, anchor, this.legendTitleCollections);\n textElement(chart.renderer, legendTitleTextOptions, legend.titleStyle, legend.titleStyle.color, legendGroup);\n };\n /**\n * To create legend rendering elements for chart and accumulation chart\n *\n * @param chart\n * @param legendBounds\n * @param legendGroup\n * @param legend\n * @param id\n * @param redraw\n */\n BaseLegend.prototype.createLegendElements = function (chart, legendBounds, legendGroup, legend, id, redraw) {\n var padding = legend.padding;\n var options = new RectOption(id + '_element', legend.background, legend.border, legend.opacity, legendBounds);\n var legendItemsGroup = chart.renderer.createGroup({ id: id + '_collections' });\n var isCanvas = chart.enableCanvas;\n var clippath = chart.renderer.createClipPath({ id: id + '_clipPath' });\n if (legendGroup) {\n legendGroup.appendChild(chart.renderer.drawRectangle(options));\n }\n else {\n chart.renderer.drawRectangle(options);\n }\n if (legend.title) {\n this.renderLegendTitle(chart, legend, legendBounds, legendGroup);\n }\n if (!isCanvas) {\n legendGroup.appendChild(legendItemsGroup);\n }\n this.legendTranslateGroup = chart.renderer.createGroup({ id: id + '_translate_g' });\n if (!isCanvas) {\n legendItemsGroup.appendChild(this.legendTranslateGroup);\n }\n options.y += padding + (this.isTop ? this.legendTitleSize.height : 0);\n options.id += '_clipPath_rect';\n options.width = ((!this.isChartControl && chart.getModuleName() !== 'bulletChart') && this.isVertical) ? this.maxWidth - padding + legend.containerPadding.left + legend.containerPadding.right\n : legendBounds.width;\n if (!isCanvas) {\n this.clipRect = chart.renderer.drawRectangle(options);\n clippath.appendChild(this.clipRect);\n }\n else {\n this.pagingClipRect = options;\n }\n appendChildElement(isCanvas, chart.svgObject, clippath, redraw);\n if (!isCanvas) {\n legendItemsGroup.setAttribute('style', 'clip-path:url(#' + clippath.id + ')');\n }\n return this.legendTranslateGroup;\n };\n /**\n * To render legend symbols for chart and accumulation chart\n *\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n */\n BaseLegend.prototype.renderSymbol = function (legendOption, group, i) {\n var control = this.isBulletChartControl ? this.chart : null;\n var symbolColor = legendOption.visible ? legendOption.fill : '#D3D3D3';\n var isStrokeWidth = (this.chart.getModuleName() === 'chart' && (legendOption.shape === 'SeriesType') &&\n (legendOption.type.toLowerCase().indexOf('line') > -1) && (legendOption.type.toLowerCase().indexOf('area') === -1));\n var isCustomBorder = this.chart.getModuleName() === 'chart' &&\n (legendOption.type === 'Scatter' || legendOption.type === 'Bubble');\n var isCanvas = this.chart.enableCanvas;\n var borderColor;\n var shape = (legendOption.shape === 'SeriesType') ? legendOption.type : legendOption.shape;\n var strokewidth = isStrokeWidth ? (this.legend.mode === 'Series' ?\n this.chart.visibleSeries[i].width : this.chart.visibleSeries[0].width) :\n (this.isBulletChartControl && legendOption.shape === 'Multiply') ? 4 : 1;\n var regionPadding;\n shape = shape === 'Scatter' ? legendOption.markerShape : shape;\n if (isCustomBorder && i < this.chart.visibleSeries.length) {\n var seriesBorder = this.chart.visibleSeries[i].border;\n borderColor = seriesBorder.color ? seriesBorder.color : symbolColor;\n strokewidth = seriesBorder.width ? seriesBorder.width : 1;\n }\n var symbolOption = new PathOption(this.legendID + this.generateId(legendOption, '_shape_', i), symbolColor, strokewidth, (isCustomBorder ? borderColor : symbolColor), 1, '', '');\n var textSize = measureText(legendOption.text, this.legend.textStyle);\n var x = this.legend.isInversed ? legendOption.location.x + textSize.width + this.legend.shapePadding\n : legendOption.location.x;\n var y = legendOption.location.y;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), legendOption.url, symbolOption, this.accessbilityText, this.chart.renderer, null, this.isBulletChartControl, control));\n }\n else {\n regionPadding = -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber);\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ? new Rect(0, regionPadding, 0, 0) : null, this.isBulletChartControl, control);\n this.legendRegions.push({\n rect: new Rect(legendOption.location.x, legendOption.location.y, this.legend.shapeWidth, this.legend.shapeHeight + regionPadding), index: i\n });\n }\n if (shape === 'Line' && legendOption.markerVisibility && legendOption.markerShape !== 'Image' ||\n (legendOption.type === 'Doughnut' && shape === 'Doughnut')) {\n symbolOption.id = this.legendID + this.generateId(legendOption, '_shape_marker_', i);\n shape = legendOption.type === 'Doughnut' ? 'Circle' : legendOption.markerShape;\n symbolOption.fill = legendOption.type === 'Doughnut' ? '#FFFFFF' : symbolOption.fill;\n if (!isCanvas) {\n // eslint-disable-next-line max-len\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, null, null, this.isBulletChartControl, control));\n }\n else {\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, this.isBulletChartControl, control);\n }\n }\n };\n /**\n * To render legend text for chart and accumulation chart\n *\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n */\n BaseLegend.prototype.renderText = function (chart, legendOption, group, textOptions, i) {\n var legend = chart.legendSettings;\n var hiddenColor = '#D3D3D3';\n var fontcolor = legendOption.visible ? legend.textStyle.color || chart.themeStyle.legendLabel : hiddenColor;\n var isCanvas = this.chart.enableCanvas;\n textOptions.id = this.legendID + this.generateId(legendOption, '_text_', i);\n textOptions.text = legendOption.text;\n textOptions.x = legend.isInversed ? legendOption.location.x - (legend.shapeWidth / 2) :\n legendOption.location.x + (legend.shapeWidth / 2) + legend.shapePadding;\n textOptions.y = legendOption.location.y + this.maxItemHeight / 4;\n var element = textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, group, false, false, false, false, null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\n if (element) {\n element.setAttribute('aria-label', legend.description || this.accessbilityText);\n }\n if (isCanvas) {\n var textSize = measureText(textOptions.text, legend.textStyle);\n this.legendRegions[i].rect.y = textOptions.y < this.legendRegions[i].rect.y ? textOptions.y : this.legendRegions[i].rect.y;\n this.legendRegions[i].rect.width += textSize.width;\n this.legendRegions[i].rect.height = textSize.height;\n this.legendRegions[i].rect.y -= textSize.height * 0.5;\n }\n };\n /**\n * To render legend paging elements for chart and accumulation chart\n *\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n */\n BaseLegend.prototype.renderPagingElements = function (chart, bounds, textOption, legendGroup) {\n var paginggroup = chart.renderer.createGroup({ id: this.legendID + '_navigation' });\n var isCanvas = chart.enableCanvas;\n var titleHeight = this.isBulletChartControl ? 0 : this.legendTitleSize.height;\n var grayColor = '#545454';\n var legend = chart.legendSettings; // to solve parameter lint error, legend declaration is here\n var padding = 8; // const padding for paging elements\n var symbolOption = new PathOption(this.legendID + '_pageup', 'transparent', 5, grayColor, 1, '', '');\n var iconSize = this.pageButtonSize;\n // Page left arrow drawing calculation started here\n var rowCount = !legend.enablePages && this.isPaging && !this.isVertical && !this.isBulletChartControl ? 1 :\n (this.rowCount - 1);\n var titleWidth = this.isTitle && legend.titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n this.pagingRegions = [];\n this.backwardArrowOpacity = this.currentPage !== 1 ? 1 : 0;\n this.forwardArrowOpacity = this.currentPage === this.totalPages ? 0 : 1;\n if (!isCanvas) {\n legendGroup.appendChild(paginggroup);\n }\n if (this.isChartControl || this.isBulletChartControl || !this.isVertical) {\n this.totalPages = Math.ceil(this.totalPages / Math.max(1, this.rowCount - 1));\n }\n else {\n this.totalPages = Math.ceil(this.totalPages / this.maxColumns);\n }\n if (paginggroup) {\n paginggroup.setAttribute('style', 'cursor: pointer');\n }\n this.clipPathHeight = rowCount * (this.maxItemHeight + legend.padding);\n if (!isCanvas) {\n this.clipRect.setAttribute('height', this.clipPathHeight.toString());\n }\n else {\n //paging clipRect only for canvas mode\n this.pagingClipRect.height = this.legendBounds.height - this.clipPathHeight -\n (this.pagingClipRect.y - this.legendBounds.y) - legend.border.width;\n this.pagingClipRect.y = this.pagingClipRect.y + this.clipPathHeight;\n this.pagingClipRect.x += legend.border.width;\n this.pagingClipRect.width -= (legend.border.width + legend.border.width / 2);\n this.chart.renderer.clearRect(new Rect(this.pagingClipRect.x, this.pagingClipRect.y, this.pagingClipRect.width, this.pagingClipRect.height));\n }\n var pageTextElement;\n var x = (bounds.x + iconSize / 2);\n var y = bounds.y + this.clipPathHeight + ((titleHeight + bounds.height - this.clipPathHeight) / 2);\n if (this.isPaging && !legend.enablePages && !this.isVertical && !this.isBulletChartControl) {\n x = (bounds.x + this.fivePixel + this.pageButtonSize + titleWidth);\n y = legend.title && this.isTop ? (bounds.y + padding + titleHeight + (iconSize / 1) + 0.5) :\n (bounds.y + padding + iconSize + 0.5);\n }\n var size = measureText(this.totalPages + '/' + this.totalPages, legend.textStyle);\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + (iconSize / 2) + padding + titleHeight;\n symbolOption.opacity = this.backwardArrowOpacity;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'UpArrow', new Size(iconSize, iconSize), '', symbolOption, 'UpArrow'));\n }\n else {\n symbolOption.opacity = this.isBulletChartControl ? symbolOption.opacity :\n (legend.enablePages ? 1 : this.backwardArrowOpacity);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow', this.chart.renderer, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(x + bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5, y - iconSize * 0.5, iconSize, iconSize));\n // Page numbering rendering calculation started here\n textOption.x = x + (iconSize / 2) + padding;\n textOption.y = y + (size.height / 4);\n textOption.id = this.legendID + '_pagenumber';\n textOption.text = '1/' + this.totalPages;\n if (isCanvas && this.totalNoOfPages) {\n textOption.text = this.currentPageNumber + '/' + this.totalNoOfPages;\n }\n if (legend.enablePages || this.isBulletChartControl) {\n pageTextElement = textElement(chart.renderer, textOption, legend.textStyle, legend.textStyle.color, paginggroup, false, false, false, false, null, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n // Page right arrow rendering calculation started here\n x = textOption.x + padding + (iconSize / 2) + size.width;\n if (this.isPaging && !legend.enablePages && !this.isVertical) {\n x = (bounds.x + bounds.width - this.fivePixel - this.pageButtonSize - (legend.title && legend.titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0));\n }\n symbolOption.id = this.legendID + '_pagedown';\n symbolOption.opacity = !legend.enablePages ? this.forwardArrowOpacity : 1;\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + bounds.height - (iconSize / 2) - padding;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'DownArrow', new Size(iconSize, iconSize), '', symbolOption, 'DownArrow'));\n }\n else {\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow', this.chart.renderer, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(x + (bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5), y - iconSize * 0.5, iconSize, iconSize));\n if (!isCanvas && (legend.enablePages || this.isBulletChartControl)) {\n //placing the navigation buttons and page numbering in legend right corner\n paginggroup.setAttribute('transform', 'translate(' + (bounds.width - (2 * (iconSize + padding) +\n padding + size.width)) + ', ' + 0 + ')');\n }\n else {\n if (this.currentPageNumber === 1 && this.calTotalPage && (legend.enablePages || this.isBulletChartControl)) {\n this.totalNoOfPages = this.totalPages;\n this.calTotalPage = false;\n }\n if (!legend.enablePages && !this.isBulletChartControl) { // For new legend page navigation\n this.translatePage(null, this.currentPage - 1, this.currentPage, legend);\n }\n }\n if (legend.enablePages || this.isBulletChartControl) {\n this.translatePage(pageTextElement, this.currentPage - 1, this.currentPage, legend);\n }\n };\n /**\n * To translate legend pages for chart and accumulation chart\n *\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n */\n BaseLegend.prototype.translatePage = function (pagingText, page, pageNumber, legend) {\n var size = (this.clipPathHeight) * page;\n var translate = 'translate(0,-' + size + ')';\n if (!this.isChartControl && !this.isBulletChartControl && this.isVertical) {\n size = this.pageXCollections[page * this.maxColumns] - this.legendBounds.x;\n size = size < 0 ? 0 : size; // to avoid small pixel variation\n translate = 'translate(-' + size + ',0)';\n }\n if (!this.chart.enableCanvas) {\n this.legendTranslateGroup.setAttribute('transform', translate);\n }\n if (!this.chart.enableCanvas && (legend.enablePages || this.isBulletChartControl)) {\n pagingText.textContent = (pageNumber) + '/' + this.totalPages;\n }\n this.currentPage = pageNumber;\n return size;\n };\n /**\n * To change legend pages for chart and accumulation chart\n *\n * @param event\n * @param pageUp\n * @param event\n * @param pageUp\n */\n BaseLegend.prototype.changePage = function (event, pageUp) {\n var legend = this.chart.legendSettings;\n var backwardArrow = document.getElementById(this.legendID + '_pageup');\n var forwardArrow = document.getElementById(this.legendID + '_pagedown');\n var pageText = (legend.enablePages || this.isBulletChartControl) ?\n document.getElementById(this.legendID + '_pagenumber') : null;\n var page = (legend.enablePages || this.isBulletChartControl) ? parseInt(pageText.textContent.split('/')[0], 10) :\n this.currentPage;\n if (pageUp && page > 1) {\n this.translatePage(pageText, (page - 2), (page - 1), legend);\n }\n else if (!pageUp && page < this.totalPages) {\n this.translatePage(pageText, page, (page + 1), legend);\n }\n if (this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === this.totalPages ? this.hideArrow(forwardArrow) : this.showArrow(forwardArrow);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === 1 ? this.hideArrow(backwardArrow) : this.showArrow(backwardArrow);\n }\n };\n /**\n * To hide the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.hideArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '0');\n };\n /**\n * To show the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.showArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '1');\n };\n /**\n * To find legend elements id based on chart or accumulation chart\n *\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @private\n */\n BaseLegend.prototype.generateId = function (option, prefix, count) {\n if (this.isChartControl) {\n return prefix + count;\n }\n else {\n return prefix + option.pointIndex;\n }\n };\n /**\n * To show or hide trimmed text tooltip for legend.\n *\n * @param event\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.move = function (event) {\n var _this = this;\n var x = this.chart.mouseX;\n var y = this.chart.mouseY;\n if (event.target.textContent.indexOf('...') > -1) {\n var targetId = event.target.id.split(this.legendID + '_text_');\n if (targetId.length === 2) {\n var index = parseInt(targetId[1], 10);\n var element = this.chart.element;\n if (!isNaN(index)) {\n if (this.chart.isTouch) {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.isChartControl) {\n showTooltip(this.chart.series[index].name, x, y, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n else {\n showTooltip(this.chart.visibleSeries[0].points[index].x.toString(), x + 10, y + 10, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n }\n }\n }\n else {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.chart.isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = +setTimeout(function () { removeElement(_this.chart.element.id + '_EJ2_Legend_Tooltip'); }, 1000);\n }\n };\n return BaseLegend;\n}());\nexport { BaseLegend };\n/**\n * Class for legend options\n *\n * @private\n */\nvar LegendOptions = /** @class */ (function () {\n function LegendOptions(text, fill, shape, visible, type, url, markerShape, markerVisibility, pointIndex, seriesIndex) {\n this.location = { x: 0, y: 0 };\n this.text = text;\n this.fill = fill;\n this.shape = shape;\n this.url = url;\n this.visible = visible;\n this.type = type;\n this.markerVisibility = markerVisibility;\n this.markerShape = markerShape;\n this.pointIndex = pointIndex;\n this.seriesIndex = seriesIndex;\n }\n return LegendOptions;\n}());\nexport { LegendOptions };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, Complex } from '@syncfusion/ej2-base';\nimport { Connector } from '../../common/model/base';\nimport { SeriesBase } from '../series/chart-series';\nimport { firstToLowerCase } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * Defines how to represent the market trend using technical indicators\n */\nvar TechnicalIndicator = /** @class */ (function (_super) {\n __extends(TechnicalIndicator, _super);\n function TechnicalIndicator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n TechnicalIndicator.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.xData = series.xData;\n this.yData = series.yData;\n this.points = series.points;\n }\n var type = firstToLowerCase(this.type);\n chart[type + 'IndicatorModule'].initDataSource(this, chart);\n chart.visibleSeriesCount += this.targetSeries.length;\n };\n __decorate([\n Property('Sma')\n ], TechnicalIndicator.prototype, \"type\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"period\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"kPeriod\", void 0);\n __decorate([\n Property(3)\n ], TechnicalIndicator.prototype, \"dPeriod\", void 0);\n __decorate([\n Property(80)\n ], TechnicalIndicator.prototype, \"overBought\", void 0);\n __decorate([\n Property(20)\n ], TechnicalIndicator.prototype, \"overSold\", void 0);\n __decorate([\n Property(2)\n ], TechnicalIndicator.prototype, \"standardDeviation\", void 0);\n __decorate([\n Property('Close')\n ], TechnicalIndicator.prototype, \"field\", void 0);\n __decorate([\n Property(12)\n ], TechnicalIndicator.prototype, \"slowPeriod\", void 0);\n __decorate([\n Property(26)\n ], TechnicalIndicator.prototype, \"fastPeriod\", void 0);\n __decorate([\n Property(true)\n ], TechnicalIndicator.prototype, \"showZones\", void 0);\n __decorate([\n Complex({ color: '#ff9933', width: 2 }, Connector)\n ], TechnicalIndicator.prototype, \"macdLine\", void 0);\n __decorate([\n Property('Both')\n ], TechnicalIndicator.prototype, \"macdType\", void 0);\n __decorate([\n Property('#2ecd71')\n ], TechnicalIndicator.prototype, \"macdPositiveColor\", void 0);\n __decorate([\n Property('#e74c3d')\n ], TechnicalIndicator.prototype, \"macdNegativeColor\", void 0);\n __decorate([\n Property('rgba(211,211,211,0.25)')\n ], TechnicalIndicator.prototype, \"bandColor\", void 0);\n __decorate([\n Complex({ color: '#ffb735', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"upperLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"lowerLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"periodLine\", void 0);\n __decorate([\n Property('')\n ], TechnicalIndicator.prototype, \"seriesName\", void 0);\n return TechnicalIndicator;\n}(SeriesBase));\nexport { TechnicalIndicator };\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { print as printWindow, createElement, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { getElement, removeElement } from '../utils/helper';\nimport { beforePrint, afterExport } from '../model/constants';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap, SizeF, PdfStandardFont, PdfPageTemplateElement, PdfSolidBrush, PdfColor } from '@syncfusion/ej2-pdf-export';\nvar ExportUtils = /** @class */ (function () {\n /**\n * Constructor for chart and accumulation annotation\n *\n * @param control\n */\n function ExportUtils(control) {\n this.control = control;\n }\n /**\n * To print the accumulation and chart elements\n *\n * @param elements\n */\n ExportUtils.prototype.print = function (elements) {\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData);\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, this.printWindow);\n }\n };\n /**\n * To get the html string of the chart and accumulation\n *\n * @param elements\n * @private\n */\n ExportUtils.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n for (var j = 0; j < elements.length; j++) {\n var value = elements[j];\n div.appendChild(getElement(value).cloneNode(true));\n }\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n return div;\n };\n /**\n * To export the file as image/svg format\n *\n * @param type\n * @param fileName\n */\n ExportUtils.prototype.export = function (type, fileName, orientation, controls, width, height, isVertical, header, footer) {\n var _this = this;\n var controlValue = this.getControlsValue(controls, isVertical);\n width = width ? width : controlValue.width;\n height = height ? height : controlValue.height;\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n var image;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': width.toString(),\n 'height': height.toString()\n }\n });\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var svgData = '' +\n controlValue.svg.outerHTML +\n '';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (Browser.info.name === 'msie') {\n var svg = new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'application/octet-stream' });\n window.navigator.msSaveOrOpenBlob(svg, fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n this.triggerDownload(fileName, type, url, isDownload);\n }\n }\n else if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n image = canvas.toDataURL();\n if (type === 'PDF') {\n this.exportPdf(canvas, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n this.doexport(type, image, fileName);\n }\n }\n else {\n var image_1 = new Image();\n var ctx_1 = element.getContext('2d');\n image_1.onload = (function () {\n ctx_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (type === 'PDF') {\n _this.exportPdf(element, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n if (window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(element.toBlob(null), fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n _this.triggerDownload(fileName, type, element.toDataURL('image/' + type.toLowerCase()), isDownload);\n }\n }\n });\n image_1.src = url;\n }\n if (!isCanvas) {\n removeElement(document.getElementById(this.control.element.id + '_canvas'));\n }\n };\n /**\n * To get data url for charts.\n *\n * @param chart\n */\n ExportUtils.prototype.getDataUrl = function (chart) {\n var controlValue = this.getControlsValue([chart]);\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': controlValue.width.toString(),\n 'height': controlValue.height.toString()\n }\n });\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return { element: canvas, dataUrl: canvas.toDataURL() };\n }\n else {\n var image_2 = new Image();\n var ctx_2 = element.getContext('2d');\n image_2.onload = (function () {\n ctx_2.drawImage(image_2, 0, 0);\n window.URL.revokeObjectURL(url);\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return argsData.dataUrl;\n });\n image_2.src = url;\n return { element: element, blobUrl: url };\n }\n };\n /**\n * To trigger the download element\n *\n * @param fileName\n * @param type\n * @param url\n */\n ExportUtils.prototype.triggerDownload = function (fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n };\n /**\n * To get the maximum size value\n *\n * @param controls\n * @param name\n */\n // eslint-disable-next-line max-len\n ExportUtils.prototype.getControlsValue = function (controls, isVertical) {\n var width = 0;\n var height = 0;\n var isCanvas = this.control.enableCanvas;\n var svgObject = new SvgRenderer('').createSvg({\n id: 'Svg_Export_Element',\n width: 200, height: 200\n });\n controls.map(function (control) {\n var svg = control.svgObject.cloneNode(true);\n var groupEle = control.renderer.createGroup({\n style: (isNullOrUndefined(isVertical) || isVertical) ? 'transform: translateY(' + height + 'px)' :\n 'transform: translateX(' + width + 'px)'\n });\n if (!isCanvas) {\n groupEle.appendChild(svg);\n }\n width = (isNullOrUndefined(isVertical) || isVertical) ? Math.max(control.availableSize.width, width) :\n width + control.availableSize.width;\n height = (isNullOrUndefined(isVertical) || isVertical) ? height + control.availableSize.height :\n Math.max(control.availableSize.height, height);\n if (!isCanvas) {\n svgObject.appendChild(groupEle);\n }\n });\n if (!isCanvas) {\n svgObject.setAttribute('width', width + '');\n svgObject.setAttribute('height', height + '');\n }\n return {\n 'width': width,\n 'height': height,\n 'svg': svgObject\n };\n };\n ExportUtils.prototype.createCanvas = function () {\n var chart = this.control;\n this.canvasRender(true, chart);\n var canvas = chart.svgObject;\n this.canvasRender(false, chart);\n return canvas;\n };\n /**\n * To convert svg chart into canvas chart to fix export issue in IE\n * We cant export svg to other formats in IE\n *\n * @param enableCanvas\n * @param chart\n * @param enableCanvas\n * @param chart\n */\n ExportUtils.prototype.canvasRender = function (enableCanvas, chart) {\n chart.enableCanvas = enableCanvas;\n chart['preRender']();\n chart['render']();\n };\n // eslint-disable-next-line max-len\n ExportUtils.prototype.exportPdf = function (element, orientation, width, height, isDownload, fileName, header, footer) {\n var document = new PdfDocument();\n var margin = document.pageSettings.margins;\n var pdfDefaultWidth = document.pageSettings.width;\n var pdfDefaultHeight = document.pageSettings.height;\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n var exactWidth = (pdfDefaultWidth < width) ? (width + margin.left + margin.right) : pdfDefaultWidth;\n var exactHeight = (pdfDefaultHeight < height) ? (height + margin.top + margin.bottom) : pdfDefaultHeight;\n if (header !== undefined) {\n var font = new PdfStandardFont(1, header.fontSize || 15);\n var pdfHeader = new PdfPageTemplateElement(exactWidth, 40);\n pdfHeader.graphics.drawString(header.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), header.x, header.y, null);\n document.template.top = pdfHeader;\n }\n if (footer !== undefined) {\n var font = new PdfStandardFont(1, footer.fontSize || 15);\n var pdfFooter = new PdfPageTemplateElement(exactWidth, 40);\n pdfFooter.graphics.drawString(footer.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), footer.x, footer.y, null);\n document.template.bottom = pdfFooter;\n }\n document.pageSettings.size = new SizeF(exactWidth, exactHeight);\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, width, height);\n if (isDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n };\n ExportUtils.prototype.doexport = function (type, image, fileName) {\n var images = [];\n var fileType = type || 'JPG';\n images = [image];\n this.exportImage(images, fileName, fileType, image);\n };\n ExportUtils.prototype.exportImage = function (images, fileName, fileType, image) {\n var buffers = [];\n var length = (!(images instanceof HTMLElement)) ? images.length : 0;\n for (var g = 0; g < length; g++) {\n image = images[g];\n image = image.replace(/^data:[a-z]*;,/, '');\n var image1 = image.split(',');\n var byteString = atob(image1[1]);\n var buffer = new ArrayBuffer(byteString.length);\n var intArray = new Uint8Array(buffer);\n for (var i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n buffers.push(buffer);\n }\n for (var j = 0; j < buffers.length; j++) {\n var b = new Blob([buffers[j]], { type: 'application/octet-stream' });\n if (Browser.info.name === 'msie') {\n window.navigator.msSaveOrOpenBlob(b, fileName + '.' + fileType.toLocaleLowerCase());\n }\n }\n };\n return ExportUtils;\n}());\nexport { ExportUtils };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { Component, Property, NotifyPropertyChanges, Internationalization } from '@syncfusion/ej2-base';\nimport { L10n, setValue, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { ChildProperty } from '@syncfusion/ej2-base';\nimport { remove, extend } from '@syncfusion/ej2-base';\nimport { Browser, Touch } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, Complex, Collection } from '@syncfusion/ej2-base';\nimport { findClipRect, showTooltip, ImageOption, removeElement, appendChildElement, blazorTemplatesReset } from '../common/utils/helper';\nimport { textElement, RectOption, createSvg, firstToLowerCase, titlePositionX, redrawElement } from '../common/utils/helper';\nimport { appendClipElement, ChartLocation } from '../common/utils/helper';\nimport { getSeriesColor, Theme, getThemeColor } from '../common/model/theme';\nimport { Margin, Border, ChartArea, Font, Indexes, TooltipSettings } from '../common/model/base';\nimport { Row, Column, Axis } from './axis/axis';\nimport { CartesianAxisLayoutPanel } from './axis/cartesian-panel';\nimport { Rect, measureText, TextOption, Size, SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { ChartData } from './utils/get-data';\nimport { Series } from './series/chart-series';\nimport { Data } from '../common/model/data';\nimport { Marker } from './series/marker';\nimport { LegendSettings } from '../common/legend/legend';\nimport { TechnicalIndicator } from './technical-indicators/technical-indicator';\nimport { chartMouseClick, pointClick, pointDoubleClick, axisLabelClick, beforeResize } from '../common/model/constants';\nimport { chartMouseDown, chartMouseMove, chartMouseUp, load, pointMove, chartMouseLeave, resized } from '../common/model/constants';\nimport { ChartAnnotationSettings } from './model/chart-base';\nimport { getElement, getTitle } from '../common/utils/helper';\nimport { ExportUtils } from '../common/utils/export';\n/**\n * Configures the RangeColorSetting in the chart.\n */\nvar RangeColorSetting = /** @class */ (function (_super) {\n __extends(RangeColorSetting, _super);\n function RangeColorSetting() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"end\", void 0);\n __decorate([\n Property([])\n ], RangeColorSetting.prototype, \"colors\", void 0);\n __decorate([\n Property('')\n ], RangeColorSetting.prototype, \"label\", void 0);\n return RangeColorSetting;\n}(ChildProperty));\nexport { RangeColorSetting };\n/**\n * Configures the crosshair in the chart.\n */\nvar CrosshairSettings = /** @class */ (function (_super) {\n __extends(CrosshairSettings, _super);\n function CrosshairSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Complex({ color: null, width: 1 }, Border)\n ], CrosshairSettings.prototype, \"line\", void 0);\n __decorate([\n Property('Both')\n ], CrosshairSettings.prototype, \"lineType\", void 0);\n return CrosshairSettings;\n}(ChildProperty));\nexport { CrosshairSettings };\n/**\n * Configures the zooming behavior for the chart.\n */\nvar ZoomSettings = /** @class */ (function (_super) {\n __extends(ZoomSettings, _super);\n function ZoomSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableSelectionZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePinchZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableMouseWheelZooming\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"enableDeferredZooming\", void 0);\n __decorate([\n Property('XY')\n ], ZoomSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(['Zoom', 'ZoomIn', 'ZoomOut', 'Pan', 'Reset'])\n ], ZoomSettings.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePan\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableScrollbar\", void 0);\n return ZoomSettings;\n}(ChildProperty));\nexport { ZoomSettings };\n/**\n * Represents the Chart control.\n * ```html\n *
\n * \n * ```\n *\n * @public\n */\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Chart(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.rotatedDataLabelCollections = [];\n /** @public */\n _this.animated = false;\n /** @private */\n _this.isPointMouseDown = false;\n /** @private */\n _this.isScrolling = false;\n /** @private */\n _this.checkResize = 0;\n /** @private */\n _this.visible = 0;\n /** @private */\n _this.clickCount = 0;\n /** @private */\n _this.singleClickTimer = 0;\n /** @private */\n _this.chartAreaType = 'Cartesian';\n /** @private */\n _this.isRtlEnabled = false;\n _this.chartid = 57723;\n setValue('mergePersistData', _this.mergePersistChartData, _this);\n return _this;\n }\n /**\n * To manage persist chart data\n */\n Chart.prototype.mergePersistChartData = function () {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === ''))) {\n var dataObj = JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n extend(this[key], dataObj[key]);\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /**\n *\n * @param elementId\n * Return the proper ID when the special character exist in the ID\n */\n Chart.prototype.isIdHasSpecialCharacter = function (elementId) {\n var regex = /^[A-Za-z0-9 ]+$/;\n var childElementId = '';\n if (!regex.test(elementId)) {\n for (var i = 0; i < elementId.length; i++) {\n if (!regex.test(elementId[i]) && elementId.indexOf('-') === -1 &&\n elementId.indexOf('_') === -1 && elementId.indexOf('\\\\') === -1) {\n childElementId += ('\\\\' + elementId[i]);\n }\n else {\n childElementId += elementId[i];\n }\n }\n return childElementId;\n }\n else {\n return elementId;\n }\n };\n /**\n * Initialize the event handler.\n */\n Chart.prototype.preRender = function () {\n this.element.id = this.isIdHasSpecialCharacter(this.element.id);\n // It is used for checking blazor framework or not.\n var blazor = 'Blazor';\n this.isBlazor = window[blazor];\n this.allowServerDataBinding = false;\n this.unWireEvents();\n this.initPrivateVariable();\n this.setCulture();\n this.wireEvents();\n if (this.stockChart) {\n if (this.stockChart.tooltip.header === null) {\n this.tooltip.header = '${point.x}';\n }\n if (this.stockChart.tooltip.format === null) {\n this.tooltip.format = 'High : ${point.high}
Low :' +\n ' ${point.low}
Open : ${point.open}
Close : ${point.close}';\n if (this.stockChart.series[0].volume !== '') {\n this.tooltip.format += '
Volume : ${point.volume}';\n }\n }\n this.animateSeries = false;\n }\n };\n Chart.prototype.initPrivateVariable = function () {\n this.animateSeries = true;\n this.delayRedraw = false;\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.refreshAxis();\n this.refreshDefinition(this.rows);\n this.refreshDefinition(this.columns);\n if (this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-chart').length;\n this.element.id = 'chart_' + this.chartid + '_' + collection;\n }\n //seperate ID to differentiate chart and stock chart\n this.svgId = this.stockChart ? this.stockChart.element.id + '_stockChart_chart' :\n this.element.id + (this.enableCanvas ? '_canvas' : '_svg');\n };\n /**\n * To Initialize the control rendering.\n */\n Chart.prototype.render = function () {\n var _this = this;\n this.svgRenderer = new SvgRenderer(this.element.id);\n var loadEventData = {\n chart: this.isBlazor ? {} : this, theme: this.theme, name: load, cancel: false\n };\n if (!this.stockChart) {\n /**\n * Load event for the chart will be triggered only chart componet, if this is stock chart, load event did not triggered.\n */\n this.trigger(load, loadEventData, function () {\n if (!loadEventData.cancel) {\n _this.cartesianChartRendering(loadEventData);\n }\n });\n }\n else {\n // The fix is specific for nextjs app, as window is set as not defined for server side application like nextjs.\n this.isRtlEnabled = (window.getComputedStyle(document.querySelector('body')).direction === 'rtl');\n this.cartesianChartRendering(loadEventData);\n }\n };\n Chart.prototype.cartesianChartRendering = function (beforeRenderData) {\n this.theme = this.isBlazor ? beforeRenderData.theme : this.theme;\n this.createChartSvg();\n this.setTheme();\n this.markerRender = new Marker(this);\n this.calculateAreaType();\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.calculateVisibleAxis();\n this.processData();\n this.renderComplete();\n this.allowServerDataBinding = true;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key key\n * @returns {string} localized label\n */\n Chart.prototype.getLocalizedLabel = function (key) {\n return this.localeObject.getConstant(key);\n };\n /**\n * Animate the series bounds.\n *\n * @private\n */\n Chart.prototype.animate = function (duration) {\n this.redraw = true;\n this.animated = true; //used to set duration as 1000 for animation at default 300\n this.duration = duration ? duration : 1000;\n };\n /**\n * Refresh the chart bounds.\n *\n * @private\n */\n Chart.prototype.refreshBound = function () {\n this.rotatedDataLabelCollections = [];\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.getLegendOptions(this.visibleSeries, this);\n }\n /**\n * I264230, EJ2-36761\n * Issue: Tooltip doesnot appears after zooming and hovering on same point\n * Root cause: While performing zoom, previous points in tooltip restore.\n * Fix: previous points set to empty array\n */\n if (this.tooltip.enable && this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.calculateStackValues();\n this.calculateBounds();\n //this prevents the initial rendering of stock chart\n if (this.stockChart && !this.stockChart.rangeFound) {\n if (this.stockChart.enablePeriodSelector || this.stockChart.enableSelector) {\n return null;\n }\n }\n this.renderElements();\n removeElement('chartmeasuretext');\n this.removeSelection();\n };\n /**\n * To calcualte the stack values\n */\n Chart.prototype.calculateStackValues = function () {\n var series;\n var isCalculateStacking = false;\n for (var i = 0, len = this.visibleSeries.length; i < len; i++) {\n series = this.visibleSeries[i];\n series.position = series.rectCount = undefined;\n if (((series.type.indexOf('Stacking') !== -1) || (series.drawType.indexOf('Stacking') !== -1\n && this.chartAreaType === 'PolarRadar')) && !isCalculateStacking) {\n series.calculateStackedValue(series.type.indexOf('100') > -1, this);\n isCalculateStacking = true;\n }\n }\n };\n Chart.prototype.removeSelection = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible) {\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n point.isSelect = false;\n }\n }\n }\n if (getElement(this.element.id + '_ej2_drag_multi_group')) {\n if (this.selectionMode.indexOf('Drag') > -1) {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_multi_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n else if (getElement(this.element.id + '_ej2_drag_group')) {\n if (this.selectionMode !== 'Lasso') {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n };\n Chart.prototype.renderElements = function () {\n this.renderBorder();\n this.renderTitle();\n this.renderAreaBorder();\n this.renderSeriesElements(this.renderAxes());\n this.renderLegend();\n this.applyZoomkit();\n this.performSelection();\n this.setSecondaryElementPosition();\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var value = _a[_i];\n updateBlazorTemplate(this.element.id + '_DataLabel', 'Template', value.marker.dataLabel);\n }\n this.renderAnnotation();\n };\n /**\n * To render the legend\n *\n * @private\n */\n Chart.prototype.renderAxes = function () {\n this.yAxisElements = this.renderer.createGroup({ id: this.element.id + 'yAxisCollection' });\n var axisElement;\n if (this.rows.length > 0 && this.columns.length > 0) {\n axisElement = this.chartAxisLayoutPanel.renderAxes();\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Behind', this.axisCollections);\n }\n return axisElement;\n };\n /**\n * To render the legend\n */\n Chart.prototype.renderLegend = function () {\n if (this.legendModule && this.legendModule.legendCollections.length && this.legendSettings.visible) {\n this.legendModule.calTotalPage = true;\n var borderWidth = this.legendSettings.border.width;\n var bounds = this.legendModule.legendBounds;\n var rect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n if (this.enableCanvas) {\n rect = new Rect(rect.x - borderWidth / 2, rect.y - borderWidth / 2, rect.width + borderWidth, rect.height + borderWidth);\n this.renderer.canvasClip(rect);\n }\n this.legendModule.renderLegend(this, this.legendSettings, bounds);\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n }\n if (!this.redraw) {\n if (!this.stockChart) {\n this.element.appendChild(this.svgObject);\n }\n else {\n if (!getElement(this.stockChart.chartObject.id)) {\n this.stockChart.mainObject.appendChild(this.svgObject);\n }\n }\n }\n };\n /**\n * To set the left and top position for data label template for center aligned chart\n */\n Chart.prototype.setSecondaryElementPosition = function () {\n var element = getElement(this.element.id + '_Secondary_Element');\n if (!element) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n element.style.left = Math.max(svgRect.left - rect.left, 0) + 'px';\n element.style.top = Math.max(svgRect.top - rect.top, 0) + 'px';\n };\n Chart.prototype.initializeModuleElements = function () {\n this.dataLabelCollections = [];\n var elementId = this.element.id;\n if (this.series.length) {\n this.seriesElements = (this.series[0].type === 'Scatter' || this.series[0].type === 'Bubble') ?\n this.svgRenderer.createGroup({ id: elementId + 'SeriesCollection' }) :\n this.renderer.createGroup({ id: elementId + 'SeriesCollection' });\n }\n if (this.indicators.length) {\n this.indicatorElements = this.renderer.createGroup({ id: elementId + 'IndicatorCollection' });\n }\n if (this.hasTrendlines()) {\n this.trendLineElements = this.renderer.createGroup({ id: elementId + 'TrendLineCollection' });\n }\n this.dataLabelElements = this.renderer.createGroup({ id: elementId + 'DataLabelCollection' });\n };\n Chart.prototype.hasTrendlines = function () {\n var isTrendline;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n isTrendline = series.trendlines.length ? true : false;\n if (isTrendline) {\n break;\n }\n }\n return isTrendline;\n };\n Chart.prototype.renderSeriesElements = function (axisElement) {\n // Initialize the series elements values\n this.initializeModuleElements();\n var elementId = this.element.id;\n if (this.element.tagName !== 'g') {\n var tooltipDiv = redrawElement(this.redraw, elementId + '_Secondary_Element') ||\n this.createElement('div');\n tooltipDiv.id = elementId + '_Secondary_Element';\n tooltipDiv.setAttribute('style', 'position: relative');\n appendChildElement(false, this.element, tooltipDiv, this.redraw);\n }\n // For canvas\n if (this.enableCanvas) {\n var tooltipdiv = document.getElementById(elementId + '_Secondary_Element');\n tooltipdiv = !tooltipdiv ? this.createElement('div', { id: elementId + '_Secondary_Element',\n attrs: { 'style': 'position: relative; left:0px; top:0px' } }) : tooltipdiv;\n var svg = this.svgRenderer.createSvg({\n id: elementId + '_tooltip_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n svg.setAttribute('style', 'position: absolute; pointer-events: none');\n tooltipdiv.appendChild(svg);\n }\n // For userInteraction\n if (this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: elementId + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.initializeIndicator();\n this.initializeTrendLine();\n this.renderSeries();\n // Trendline is append to DOM after the series\n if (this.trendLineElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.trendLineElements, this.redraw);\n }\n this.appendElementsAfterSeries(axisElement);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderSeries = function () {\n var visibility;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.category === 'TrendLine') {\n visibility = this.series[item.sourceIndex].trendlines[item.index].visible;\n }\n else {\n visibility = item.visible;\n }\n if (visibility) {\n this.visible++;\n findClipRect(item);\n if (this.enableCanvas) {\n // To render scatter and bubble series in canvas\n this.renderCanvasSeries(item);\n // To clip the series rect for canvas\n this.renderer.canvasClip(this.chartAxisLayoutPanel.seriesClipRect);\n }\n item.renderSeries(this);\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n }\n }\n this.visible = 0;\n var options = {\n 'id': this.element.id + '_ChartAreaClipRect_',\n 'x': this.chartAxisLayoutPanel.seriesClipRect.x,\n 'y': this.chartAxisLayoutPanel.seriesClipRect.y,\n 'width': this.chartAxisLayoutPanel.seriesClipRect.width,\n 'height': this.chartAxisLayoutPanel.seriesClipRect.height,\n 'fill': 'transparent',\n 'stroke-width': 1,\n 'stroke': 'Gray'\n };\n if (!this.seriesElements) {\n return;\n }\n if (!this.enableCanvas) {\n this.seriesElements.appendChild(appendClipElement(this.redraw, options, this.renderer));\n }\n var seriesSvg = document.getElementById(this.element.id + '_series_svg');\n if (seriesSvg) {\n appendChildElement(false, seriesSvg, this.seriesElements, this.redraw);\n }\n else {\n appendChildElement(this.enableCanvas, this.svgObject, this.seriesElements, this.redraw);\n }\n };\n Chart.prototype.renderCanvasSeries = function (item) {\n var svgElement;\n var divElement;\n if ((item.type === 'Bubble' || item.type === 'Scatter')) {\n svgElement = !svgElement ? this.svgRenderer.createSvg({ id: this.element.id + '_series_svg',\n width: this.availableSize.width, height: this.availableSize.height }) : svgElement;\n divElement = !divElement ? this.createElement('div', { id: this.element.id + '_series' }) : divElement;\n divElement.setAttribute('style', 'position: absolute');\n var mainElement = document.getElementById(this.element.id + '_Secondary_Element');\n divElement.appendChild(svgElement);\n mainElement.appendChild(divElement);\n }\n svgElement = (this.enableCanvas && (item.type === 'Bubble' || item.type === 'Scatter')) ?\n svgElement : this.svgObject;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var canvas = (this.enableCanvas && (item.type === 'Bubble' || item.type === 'Scatter')) ?\n false : this.enableCanvas;\n };\n Chart.prototype.initializeIndicator = function () {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (this[firstToLowerCase(indicator.type) + 'IndicatorModule']) {\n this[firstToLowerCase(indicator.type) + 'IndicatorModule'].createIndicatorElements(this, indicator, indicator.index);\n }\n }\n if (this.indicatorElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.indicatorElements, this.redraw);\n }\n };\n Chart.prototype.initializeTrendLine = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.trendlines.length) {\n this.trendLineModule.getTrendLineElements(series, this);\n }\n }\n };\n Chart.prototype.appendElementsAfterSeries = function (axisElement) {\n if (this.chartAreaType === 'PolarRadar') {\n appendChildElement(this.enableCanvas, this.svgObject, this.yAxisElements, this.redraw);\n }\n appendChildElement(this.enableCanvas, this.svgObject, axisElement, this.redraw);\n if ((this.zoomModule && this.zoomSettings.enableScrollbar && this.scrollElement.childElementCount) ||\n (this.scrollElement && this.scrollElement.childElementCount)) {\n appendChildElement(false, getElement(this.element.id + '_Secondary_Element'), this.scrollElement, this.redraw);\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Over', this.axisCollections);\n }\n if (!this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: this.element.id + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.stockChart) {\n this.stockChart.calculateStockEvents();\n }\n };\n Chart.prototype.applyZoomkit = function () {\n /**\n * Issue: Zoomkit not visible after performing refresh()\n * Fix: this method called without checking `zoomModule.isZoomed`\n */\n if (this.chartAreaType === 'PolarRadar') {\n return;\n }\n if (!this.redraw && this.zoomModule && (!this.zoomSettings.enablePan || this.zoomModule.performedUI)) {\n this.zoomModule.applyZoomToolkit(this, this.axisCollections);\n }\n };\n /**\n * Render annotation perform here\n *\n * @private\n */\n Chart.prototype.renderAnnotation = function () {\n if (this.annotationModule) {\n //for stock chart, stock chart's id is added to render the annotations\n this.annotationModule.renderAnnotations(getElement((this.stockChart ? this.stockChart.element.id : this.element.id) + '_Secondary_Element'));\n }\n };\n Chart.prototype.performSelection = function () {\n var selectedDataIndexes = [];\n if (this.selectionModule) {\n selectedDataIndexes = extend([], this.selectionModule.selectedDataIndexes, null, true);\n this.selectionModule.invokeSelection(this);\n }\n if (this.highlightModule) {\n this.highlightModule.invokeHighlight(this);\n }\n if (selectedDataIndexes.length > 0) {\n this.selectionModule.selectedDataIndexes = selectedDataIndexes;\n this.selectionModule.redrawSelection(this, this.selectionMode);\n }\n };\n Chart.prototype.processData = function (render) {\n if (render === void 0) { render = true; }\n this.visibleSeriesCount = 0;\n var check = true;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible && !this.legendSettings.visible) {\n this.visibleSeriesCount++;\n continue;\n }\n if (series.category !== 'Indicator' && series.category !== 'TrendLine') {\n this.initializeDataModule(series);\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n if (indicator.dataSource) {\n var techIndicator = indicator;\n this.initializeDataModule(techIndicator);\n check = false;\n }\n }\n if (render && (!this.visibleSeries.length || this.visibleSeriesCount === this.visibleSeries.length && check)) {\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n };\n Chart.prototype.initializeDataModule = function (series) {\n series.xData = [];\n series.yData = [];\n var dataSource;\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n dataSource = Object.keys(series.dataSource).length ? series.dataSource : this.dataSource;\n }\n else {\n dataSource = series.dataSource || this.dataSource;\n }\n series.dataModule = new Data(dataSource, series.query);\n series.points = [];\n series.refreshDataManager(this);\n };\n Chart.prototype.calculateBounds = function () {\n var margin = this.margin;\n // Title Height;\n var titleHeight = 0;\n var subTitleHeight = 0;\n var titleWidth = 0;\n var padding = 15;\n var left = margin.left;\n var width = this.availableSize.width - left - margin.right - this.border.width;\n this.titleCollection = [];\n this.subTitleCollection = [];\n if (this.title) {\n this.titleCollection = getTitle(this.title, this.titleStyle, width);\n titleHeight = (measureText(this.title, this.titleStyle).height * this.titleCollection.length) + padding;\n if (this.subTitle) {\n var maxWidth = 0;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, maxWidth);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle).height * this.subTitleCollection.length) +\n padding;\n }\n }\n var top = margin.top + subTitleHeight + titleHeight + this.chartArea.border.width * 0.5;\n var height = this.availableSize.height - top - this.border.width - margin.bottom;\n this.initialClipRect = new Rect(left, top, width, height);\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.calculateLegendBounds(this.initialClipRect, this.availableSize, null);\n }\n this.chartAxisLayoutPanel.measureAxis(this.initialClipRect);\n };\n /**\n * Handles the print method for chart control.\n */\n Chart.prototype.print = function (id) {\n var exportChart = new ExportUtils(this);\n exportChart.print(id);\n };\n /**\n * Defines the trendline initialization\n */\n Chart.prototype.initTrendLines = function () {\n this.isProtectedOnChange = true;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n var trendIndex = 0;\n for (var _b = 0, _c = series.trendlines; _b < _c.length; _b++) {\n var trendline = _c[_b];\n var trendLine = trendline;\n if (this.trendLineModule) {\n trendLine.index = trendIndex;\n trendLine.sourceIndex = series.index;\n this.trendLineModule.initSeriesCollection(trendLine, this);\n if (trendLine.targetSeries) {\n trendLine.targetSeries.xAxisName = series.xAxisName;\n trendLine.targetSeries.yAxisName = series.yAxisName;\n this.visibleSeries.push(trendLine.targetSeries);\n }\n }\n trendIndex++;\n }\n }\n this.isProtectedOnChange = false;\n };\n Chart.prototype.calculateAreaType = function () {\n var series = this.series[0];\n this.chartArea.border.width = this.stockChart ? 0 : this.chartArea.border.width;\n if (series) {\n this.requireInvertedAxis = ((series.type.indexOf('Bar') !== -1) && !this.isTransposed) ||\n ((series.type.indexOf('Bar') === -1) && this.isTransposed && this.chartAreaType !== 'PolarRadar');\n }\n this.chartAxisLayoutPanel = this.chartAreaType === 'PolarRadar' ? (this.polarSeriesModule || this.radarSeriesModule)\n : new CartesianAxisLayoutPanel(this);\n };\n /**\n * Calculate the visible axis\n *\n * @private\n */\n Chart.prototype.calculateVisibleAxis = function () {\n var axis;\n var axes = [this.primaryXAxis, this.primaryYAxis];\n axes = this.chartAreaType === 'Cartesian' ? axes.concat(this.axes) : axes;\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n axes = axes.concat(this.paretoSeriesModule.paretoAxes);\n }\n this.axisCollections = [];\n if (this.zoomModule) {\n this.zoomModule.isPanning = this.zoomModule.isAxisZoomed(axes) && this.zoomSettings.enablePan;\n this.svgObject.setAttribute('cursor', this.zoomModule.isPanning ? 'pointer' : 'auto');\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n if (this.scrollSettingEnabled) {\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n for (var i = 0, len = axes.length; i < len; i++) {\n axis = axes[i];\n axis.series = [];\n axis.labels = [];\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.initAxis(series, axis, true);\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n this.initAxis(indicator, axis, false);\n }\n if (this.scrollBarModule && !axis.zoomingScrollBar) {\n this.scrollBarModule.injectTo(axis, this);\n }\n if (axis.orientation != null) {\n this.axisCollections.push(axis);\n }\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.chartAxisLayoutPanel.measure();\n }\n };\n Chart.prototype.initAxis = function (series, axis, isSeries) {\n if (series.xAxisName === axis.name || (series.xAxisName == null && axis.name === 'primaryXAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Vertical' : 'Horizontal';\n series.xAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n else if (series.yAxisName === axis.name || (series.yAxisName == null && axis.name === 'primaryYAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Horizontal' : 'Vertical';\n series.yAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n };\n Chart.prototype.initTechnicalIndicators = function () {\n var i = 0;\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n var techIndicator = indicator;\n var type = firstToLowerCase(techIndicator.type);\n if (this[type + 'IndicatorModule']) {\n techIndicator.index = i;\n this[type + 'IndicatorModule'].initSeriesCollection(techIndicator, this);\n for (var _b = 0, _c = techIndicator.targetSeries; _b < _c.length; _b++) {\n var targetSeries = _c[_b];\n if (indicator.seriesName || indicator.dataSource) {\n this.visibleSeries.push(targetSeries);\n }\n }\n }\n i++;\n }\n };\n /** @private */\n Chart.prototype.refreshTechnicalIndicator = function (series) {\n if (this.indicators.length) {\n var targetIndicator = null;\n if (series instanceof Series && series.category !== 'Indicator') {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (indicator.seriesName === series.name && !indicator.dataSource) {\n targetIndicator = indicator;\n targetIndicator.setDataSource(series, this);\n }\n }\n }\n else if (series instanceof TechnicalIndicator) {\n targetIndicator = series;\n targetIndicator.setDataSource(series instanceof Series ? series : null, this);\n }\n }\n };\n Chart.prototype.calculateVisibleSeries = function () {\n var series;\n this.visibleSeries = [];\n var colors = this.palettes.length ? this.palettes : getSeriesColor(this.theme);\n var count = colors.length;\n var seriesCollection = this.series.sort(function (a, b) { return a.zOrder - b.zOrder; });\n for (var i = 0, len = seriesCollection.length; i < len; i++) {\n series = seriesCollection[i];\n // for y axis label issue during chart navigation\n series.category = seriesCollection[0].type === 'Pareto' ? 'Pareto' : 'Series';\n series.index = i;\n series.interior = series.fill || colors[i % count];\n switch (series.type) {\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n if (seriesCollection[0].type.indexOf('Bar') === -1) {\n continue;\n }\n break;\n case 'Polar':\n case 'Radar':\n if (this.chartAreaType !== 'PolarRadar') {\n continue;\n }\n if (this.chartAreaType === 'PolarRadar' && ((series.xAxisName === null && series.yAxisName !== null) ||\n (series.xAxisName !== null && series.yAxisName === null) ||\n (series.xAxisName !== null && series.yAxisName !== null))) {\n continue;\n }\n break;\n case 'Pareto':\n this.visibleSeries.push(series);\n this.paretoSeriesModule.initSeries(series, this);\n continue;\n default:\n if (this.chartAreaType === 'PolarRadar' || seriesCollection[0].type.indexOf('Bar') > -1) {\n continue;\n }\n break;\n }\n this.visibleSeries.push(series);\n seriesCollection[i] = series;\n }\n };\n Chart.prototype.renderTitle = function () {\n var rect;\n var margin = this.margin;\n if (this.title) {\n var alignment = this.titleStyle.textAlignment;\n var getAnchor = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n var elementSize = measureText(this.title, this.titleStyle);\n rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var options = new TextOption(this.element.id + '_ChartTitle', titlePositionX(rect, this.titleStyle), this.margin.top + ((elementSize.height) * 3 / 4), getAnchor, this.titleCollection, '', 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartTitle', options, this.renderer) ||\n textElement(this.renderer, options, this.titleStyle, this.titleStyle.color || this.themeStyle.chartTitle, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas);\n if (element) {\n element.setAttribute('aria-label', this.description || this.title);\n element.setAttribute('tabindex', this.tabIndex.toString());\n }\n if (this.subTitle) {\n this.renderSubTitle(options);\n }\n }\n };\n Chart.prototype.renderSubTitle = function (options) {\n var maxWidth = 0;\n var titleWidth = 0;\n var padding = 10;\n var anchor = function (alignment) {\n return alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n };\n var alignment = this.titleStyle.textAlignment;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var subTitleElementSize = measureText(this.subTitle, this.subTitleStyle);\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n var subTitleOptions = new TextOption(this.element.id + '_ChartSubTitle', titlePositionX(rect, this.subTitleStyle), options.y * options.text.length + ((subTitleElementSize.height) * 3 / 4) + padding, anchor(this.subTitleStyle.textAlignment), this.subTitleCollection, '', 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartSubTitle', subTitleOptions, this.renderer) ||\n textElement(this.renderer, subTitleOptions, this.subTitleStyle, this.subTitleStyle.color || this.themeStyle.chartTitle, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas);\n if (element) {\n element.setAttribute('aria-label', this.description || this.subTitle);\n element.setAttribute('tabindex', this.tabIndex.toString());\n }\n };\n Chart.prototype.renderBorder = function () {\n var width = this.border.width;\n var backGroundImage = this.backgroundImage;\n var fillColor = backGroundImage ? 'transparent' : (this.background || this.themeStyle.background);\n var rect = new RectOption(this.element.id + '_ChartBorder', fillColor, this.border, 1, new Rect(width * 0.5, width * 0.5, this.availableSize.width - width, this.availableSize.height - width));\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBorder', rect, this.renderer)\n || this.renderer.drawRectangle(rect);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n // to draw back ground image for chart\n if (backGroundImage) {\n var image = new ImageOption(this.availableSize.height - width, this.availableSize.width - width, backGroundImage, 0, 0, this.element.id + '_ChartBackground', 'visible', 'none');\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBackground', image, this.renderer)\n || this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderAreaBorder = function () {\n if (this.chartAreaType === 'PolarRadar') {\n return null;\n }\n else {\n var element = getElement(this.element.id + '_ChartAreaBorder');\n var previousRect = element ?\n new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')) : null;\n var rect = new RectOption(this.element.id + '_ChartAreaBorder', this.chartArea.background, { width: this.chartArea.border.width, color: this.chartArea.border.color || this.themeStyle.areaBorder }, this.chartArea.opacity, this.chartAxisLayoutPanel.seriesClipRect);\n this.htmlObject = this.renderer.drawRectangle(rect);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true, previousRect);\n this.htmlObject = null;\n }\n // to draw back ground image for chart area\n var backGroundImage = this.chartArea.backgroundImage;\n if (backGroundImage) {\n var width = this.chartArea.border.width;\n var image = new ImageOption(this.initialClipRect.height - width, this.initialClipRect.width - width, backGroundImage, this.initialClipRect.x, this.initialClipRect.y, this.element.id + '_ChartAreaBackground', 'visible', 'none');\n this.htmlObject = this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true);\n }\n };\n /**\n * To add series for the chart\n *\n * @param {SeriesModel[]} seriesCollection - Defines the series collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n series = new Series(this, 'series', series);\n this.series.push(series);\n }\n this.refresh();\n };\n /**\n * To Remove series for the chart\n *\n * @param {number} index - Defines the series index to be remove in chart series\n * @returns {void}\n */\n Chart.prototype.removeSeries = function (index) {\n this.redraw = false; //fix for remove svg not working when use animatemethod.\n this.series.splice(index, 1);\n this.refresh();\n };\n /**\n * To Clear all series for the chart\n *\n * @returns {void}.\n */\n Chart.prototype.clearSeries = function () {\n this.series = [];\n this.refresh();\n };\n /**\n * To add secondary axis for the chart\n *\n * @param {AxisModel[]} axisCollection - Defines the axis collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addAxes = function (axisCollection) {\n for (var _i = 0, axisCollection_1 = axisCollection; _i < axisCollection_1.length; _i++) {\n var axis = axisCollection_1[_i];\n axis = new Axis(this, 'axes', axis);\n if (this.isBlazor) {\n axis.interval = isNaN(axis.interval) ? null : axis.interval;\n axis.desiredIntervals = isNaN(axis.desiredIntervals) ? null : axis.desiredIntervals;\n }\n this.axes.push(axis);\n }\n this.refresh();\n };\n /**\n * To remove secondary axis for the chart\n *\n * @param {number} index - Defines the axis collection to be removed in chart.\n * @returns {void}\n */\n Chart.prototype.removeAxis = function (index) {\n this.redraw = false;\n this.axes.splice(index, 1);\n this.refresh();\n };\n /**\n * To destroy the widget\n *\n * @function destroy\n * @returns {void}.\n * @member of Chart\n */\n Chart.prototype.destroy = function () {\n if (this.scrollBarModule) {\n this.scrollBarModule.destroy();\n }\n if (this.markerRender) {\n this.markerRender.removeEventListener();\n this.markerRender = null;\n }\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.visibleSeries = [];\n this.axisCollections = [];\n this.rotatedDataLabelCollections = [];\n this.seriesElements = null;\n this.chartAxisLayoutPanel = null;\n this.dataLabelCollections = null;\n this.dataLabelElements = null;\n this.yAxisElements = null;\n /**\n * To fix react timeout destroy issue.\n */\n if (this.element) {\n this.unWireEvents();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\n if (!this.enableCanvas) {\n this.removeSvg();\n this.svgObject = null;\n }\n }\n };\n /**\n * Get component name\n */\n Chart.prototype.getModuleName = function () {\n return 'chart';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Chart.prototype.getPersistData = function () {\n var keyEntity = ['loaded', 'animationComplete', 'primaryXAxis', 'primaryYAxis'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Method to create SVG element.\n */\n Chart.prototype.createChartSvg = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * Method to bind events for chart\n */\n Chart.prototype.unWireEvents = function () {\n var startEvent = Browser.touchStartEvent;\n var moveEvent = Browser.touchMoveEvent;\n var stopEvent = Browser.touchEndEvent;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! UnBind the Event handler */\n EventHandler.remove(this.element, startEvent, this.chartOnMouseDown);\n EventHandler.remove(this.element, moveEvent, this.mouseMove);\n EventHandler.remove(this.element, stopEvent, this.mouseEnd);\n EventHandler.remove(this.element, 'click', this.chartOnMouseClick);\n EventHandler.remove(this.element, 'contextmenu', this.chartRightClick);\n EventHandler.remove(this.element, cancelEvent, this.mouseLeave);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n /**\n * To fix memory issue\n */\n if (this.touchObject) {\n this.touchObject.destroy();\n this.touchObject = null;\n }\n };\n Chart.prototype.wireEvents = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (!this.element) {\n return;\n }\n /*! Find the Events type */\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! Bind the Event handler */\n EventHandler.add(this.element, Browser.touchStartEvent, this.chartOnMouseDown, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMove, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEnd, this);\n EventHandler.add(this.element, 'click', this.chartOnMouseClick, this);\n EventHandler.add(this.element, 'contextmenu', this.chartRightClick, this);\n EventHandler.add(this.element, cancelEvent, this.mouseLeave, this);\n this.resizeBound = this.chartResize.bind(this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n this.longPressBound = this.longPress.bind(this);\n this.touchObject = new Touch(this.element, { tapHold: this.longPressBound, tapHoldThreshold: 500 });\n /*! Apply the style for chart */\n this.setStyle(this.element);\n };\n Chart.prototype.chartRightClick = function (event) {\n if (this.crosshair.enable && this.crosshairModule &&\n (event.buttons === 2 || event.which === 0 || event.pointerType === 'touch')) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n Chart.prototype.setStyle = function (element) {\n var zooming = this.zoomSettings;\n var disableScroll = zooming.enableSelectionZooming || zooming.enablePinchZooming ||\n this.selectionMode !== 'None' || this.crosshair.enable || this.highlightMode !== 'None';\n element.style.touchAction = disableScroll ? 'none' : 'element';\n element.style.msTouchAction = disableScroll ? 'none' : 'element';\n element.style.msContentZooming = 'none';\n element.style.msUserSelect = 'none';\n element.style.webkitUserSelect = 'none';\n element.style.position = 'relative';\n element.style.display = 'block';\n // To fix angular and react tooltip div scrollbar issue\n element.style.overflow = 'hidden';\n };\n /**\n * Finds the orientation.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.isOrientation = function () {\n return ('orientation' in window && 'onorientationchange' in window);\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.longPress = function (e) {\n this.mouseX = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientX) : 0;\n this.mouseY = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientY) : 0;\n this.startMove = true;\n this.setMouseXY(this.mouseX, this.mouseY);\n this.notify('tapHold', e);\n return false;\n };\n /**\n * To find mouse x, y for aligned chart element svg position\n */\n Chart.prototype.setMouseXY = function (pageX, pageY) {\n if (getElement(this.svgId)) {\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n this.mouseY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n this.mouseX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n }\n };\n /**\n * Export method for the chart.\n */\n Chart.prototype.export = function (type, fileName) {\n if (this.exportModule) {\n this.exportModule.export(type, fileName);\n if (this.afterExport) {\n this.exportModule.getDataUrl(this);\n }\n }\n };\n /**\n * Handles the chart resize.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartResize = function () {\n var _this = this;\n this.animateSeries = false;\n var arg = {\n chart: this.isBlazor ? {} : this,\n name: resized,\n currentSize: new Size(0, 0),\n previousSize: new Size(this.availableSize.width, this.availableSize.height)\n };\n var beforeResizeArgs = { name: 'beforeResize', cancelResizedEvent: false };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n this.trigger(beforeResize, beforeResizeArgs);\n if (!beforeResizeArgs.cancelResizedEvent) {\n this.resizeTo = +setTimeout(function () {\n if (_this.isDestroyed || _this.stockChart) {\n clearTimeout(_this.resizeTo);\n return;\n }\n _this.createChartSvg();\n arg.currentSize = _this.availableSize;\n _this.trigger(resized, arg);\n _this.refreshAxis();\n _this.refreshBound();\n _this.trigger('loaded', { chart: _this.isBlazor ? {} : _this });\n }, 500);\n }\n return false;\n };\n /**\n * Handles the mouse move.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseMove = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (e.type === 'touchmove') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2' || this.isTouch;\n pageX = e.clientX;\n pageY = e.clientY;\n }\n if (getElement(this.svgId)) {\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseMove(e);\n }\n return false;\n };\n /**\n * Handles the mouse leave.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseLeave = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (e.type === 'touchleave') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseLeave(e);\n return false;\n };\n /**\n * Handles the mouse leave on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseLeave = function (e) {\n var element = e.target;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.trigger(chartMouseLeave, { target: element.id, x: this.mouseX, y: this.mouseY });\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n this.isChartDrag = this.isPointMouseDown = false;\n this.notify(cancelEvent, e);\n return false;\n };\n /**\n * Handles the mouse click on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseClick = function (e) {\n var _this = this;\n var element = e.target;\n this.trigger(chartMouseClick, { target: element.id, x: this.mouseX, y: this.mouseY });\n this.clickCount++;\n var timeInterval = 0;\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n var observers = 'observers';\n timeInterval = this.pointDoubleClick[observers].length > 0 ? 400 : 0;\n }\n else {\n timeInterval = this.pointDoubleClick ? 400 : 0;\n }\n if (this.clickCount === 1 && this.pointClick) {\n this.singleClickTimer = +setTimeout(function () {\n _this.clickCount = 0;\n _this.triggerPointEvent(pointClick, e);\n }, timeInterval);\n }\n else if (this.clickCount === 2 && this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n this.triggerPointEvent(pointDoubleClick, e);\n }\n if (this.axisLabelClick) {\n this.triggerAxisLabelClickEvent(axisLabelClick, e);\n }\n this.notify('click', e);\n return false;\n };\n Chart.prototype.triggerPointEvent = function (event, e) {\n var evt = e;\n var data = new ChartData(this);\n var pointData = data.getData();\n if (pointData.series && pointData.point) {\n this.trigger(event, {\n series: this.isBlazor ? {} : pointData.series,\n point: pointData.point,\n seriesIndex: pointData.series.index, pointIndex: pointData.point.index,\n x: this.mouseX, y: this.mouseY, pageX: evt.pageX, pageY: evt.pageY\n });\n }\n };\n Chart.prototype.triggerAxisLabelClickEvent = function (event, e) {\n var targetElement = e.target;\n var clickEvt = e;\n if (targetElement.id.indexOf('_AxisLabel_') !== -1) {\n var index = targetElement.id.split('_AxisLabel_');\n var axisIndex = +index[0].slice(-1);\n var labelIndex = +index[1];\n var currentAxis = this.axisCollections[axisIndex];\n if (currentAxis.visible && (axisIndex === 0 || axisIndex === 1)) {\n this.trigger(event, {\n chart: this,\n axis: currentAxis,\n text: currentAxis.visibleLabels[labelIndex].text,\n labelID: targetElement.id,\n index: labelIndex,\n location: new ChartLocation(clickEvt.pageX, clickEvt.pageY),\n value: currentAxis.visibleLabels[labelIndex].value\n });\n }\n }\n };\n /**\n * Handles the mouse move on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseMove = function (e) {\n var element = e.target;\n this.trigger(chartMouseMove, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (this.pointMove) {\n this.triggerPointEvent(pointMove, e);\n }\n // Tooltip for chart series.\n if (!this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY);\n this.axisTooltip(e, this.mouseX, this.mouseY);\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseMove(e);\n }\n this.notify(Browser.touchMoveEvent, e);\n this.isTouch = false;\n return false;\n };\n Chart.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var id = (targetId === (this.element.id + '_ChartTitle') || targetId === (this.element.id + '_ChartSubTitle') ||\n targetId.indexOf('_AxisTitle') > -1 || targetId.indexOf('_legend_title') > -1);\n var index = 0;\n if (targetId.indexOf('_AxisTitle') > -1) {\n index = parseInt(((targetId.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_')[2], 10);\n }\n if (id && (event.target.textContent.indexOf('...') > -1)) {\n var title = (targetId === (this.element.id + '_ChartTitle')) ? this.title :\n targetId.indexOf('_AxisTitle') > -1 ? this.axisCollections[index].title :\n targetId.indexOf('_ChartSubTitle') > -1 ? this.subTitle : this.legendSettings.title;\n showTooltip(title, x, y, this.element.offsetWidth, this.element.id + '_EJ2_Title_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_Title_Tooltip');\n }\n };\n Chart.prototype.axisTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n if (((targetId.indexOf('AxisLabel') > -1) || targetId.indexOf('Axis_MultiLevelLabel') > -1) &&\n (event.target.textContent.indexOf('...') > -1)) {\n var isTitleOrLegendEnabled = (this.legendSettings.visible || this.primaryXAxis.title === '');\n showTooltip(this.findAxisLabel(targetId), x, y, this.element.offsetWidth, this.element.id + '_EJ2_AxisLabel_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch, isTitleOrLegendEnabled);\n }\n else {\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n }\n };\n Chart.prototype.findAxisLabel = function (text) {\n var texts;\n if (text.indexOf('AxisLabel') > -1) {\n texts = ((text.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_');\n return this.axisCollections[parseInt(texts[0], 10)].visibleLabels[parseInt(texts[1], 10)].originalText;\n }\n else {\n texts = ((text.replace(this.element.id, '')).replace('Axis_MultiLevelLabel_Level_', '').replace('Text_', '')).split('_');\n return (this.axisCollections[parseInt(texts[0], 10)].multiLevelLabels[parseInt(texts[1], 10)]\n .categories[parseInt(texts[2], 10)].text);\n }\n };\n /**\n * Handles the mouse down on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseDown = function (e) {\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var offset = Browser.isDevice ? 20 : 30;\n var rect = this.element.getBoundingClientRect();\n var element = e.target;\n this.trigger(chartMouseDown, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (e.type === 'touchstart') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.clientX;\n pageY = e.clientY;\n target = e.target;\n }\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n this.mouseDownX = this.previousMouseMoveX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n this.mouseDownY = this.previousMouseMoveY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n if (this.isTouch) {\n this.isDoubleTap = (new Date().getTime() < this.threshold && target.id.indexOf(this.element.id + '_Zooming_') === -1 &&\n (this.mouseDownX - offset >= this.mouseX || this.mouseDownX + offset >= this.mouseX) &&\n (this.mouseDownY - offset >= this.mouseY || this.mouseDownY + offset >= this.mouseY) &&\n (this.mouseX - offset >= this.mouseDownX || this.mouseX + offset >= this.mouseDownX) &&\n (this.mouseY - offset >= this.mouseDownY || this.mouseY + offset >= this.mouseDownY));\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseDown();\n }\n this.notify(Browser.touchStartEvent, e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseEnd = function (e) {\n var pageY;\n var pageX;\n var touchArg;\n if (e.type === 'touchend') {\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n this.isTouch = true;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n pageY = e.clientY;\n pageX = e.clientX;\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n }\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseUp(e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.chartOnMouseUp = function (e) {\n var element = e.target;\n this.trigger(chartMouseUp, { target: element.id, x: this.mouseX, y: this.mouseY });\n this.isChartDrag = false;\n if (this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.axisTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.threshold = new Date().getTime() + 300;\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseUp();\n }\n if (!this.enableCanvas && this.seriesElements) {\n this.seriesElements.removeAttribute('clip-path');\n }\n this.notify(Browser.touchEndEvent, e);\n return false;\n };\n /**\n * Method to set culture for chart\n */\n Chart.prototype.setCulture = function () {\n this.intl = new Internationalization();\n this.setLocaleConstants();\n this.localeObject = new L10n(this.getModuleName(), this.defaultLocalConstants, this.locale);\n };\n /**\n * Method to set the annotation content dynamically for chart.\n */\n Chart.prototype.setAnnotationValue = function (annotationIndex, content) {\n var parentNode = getElement(this.element.id + '_Annotation_Collections');\n var annotation = this.annotations[annotationIndex];\n var element;\n if (content !== null) {\n annotation.content = content;\n if (parentNode) {\n removeElement(this.element.id + '_Annotation_' + annotationIndex);\n element = this.createElement('div');\n this.annotationModule.processAnnotation(annotation, annotationIndex, element);\n parentNode.appendChild(element.children[0]);\n }\n else {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n }\n };\n /**\n * Method to set locale constants\n */\n Chart.prototype.setLocaleConstants = function () {\n this.defaultLocalConstants = {\n ZoomIn: 'Zoom in',\n Zoom: 'Zoom',\n ZoomOut: 'Zoom out',\n Pan: 'Pan',\n Reset: 'Reset',\n ResetZoom: 'Reset Zoom'\n };\n };\n /**\n * Theming for chart\n */\n Chart.prototype.setTheme = function () {\n /*! Set theme */\n this.themeStyle = getThemeColor(this.theme);\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]}\n * @private\n */\n /* eslint-disable */\n Chart.prototype.requiredModules = function () {\n var _this = this;\n var modules = [];\n var series = this.series;\n var enableAnnotation = false;\n var moduleName;\n var errorBarVisible = false;\n var isPointDrag = false;\n var dataLabelEnable = false;\n var zooming = this.zoomSettings;\n this.chartAreaType = (series.length > 0 && (series[0].type === 'Polar' || series[0].type === 'Radar')) ? 'PolarRadar' : 'Cartesian';\n if (this.tooltip.enable) {\n modules.push({\n member: 'Tooltip',\n args: [this]\n });\n }\n series.map(function (value) {\n _this.isLegend = (_this.legendSettings.visible && ((value.name !== '') || !!_this.isLegend));\n moduleName = value.type.indexOf('100') !== -1 ? value.type.replace('100', '') + 'Series' : value.type + 'Series';\n errorBarVisible = value.errorBar.visible || errorBarVisible;\n dataLabelEnable = value.marker.dataLabel.visible || dataLabelEnable;\n isPointDrag = value.dragSettings.enable || isPointDrag;\n if (!modules.some(function (currentModule) {\n return currentModule.member === moduleName;\n })) {\n modules.push({\n member: moduleName,\n args: [_this, series]\n });\n }\n if (_this.chartAreaType === 'PolarRadar') {\n modules.push({\n member: value.drawType + 'Series',\n args: [_this, series]\n });\n }\n if (value.type === 'Pareto') {\n modules.push({\n member: 'ColumnSeries',\n args: [_this, series]\n });\n modules.push({\n member: 'LineSeries',\n args: [_this, series]\n });\n }\n });\n this.findIndicatorModules(modules);\n this.findTrendLineModules(modules);\n modules = this.findAxisModule(modules);\n enableAnnotation = this.annotations.some(function (value) {\n return (value.content !== null);\n });\n if (errorBarVisible) {\n modules.push({\n member: 'ErrorBar',\n args: [this, series]\n });\n }\n if (this.isLegend) {\n modules.push({\n member: 'Legend',\n args: [this]\n });\n }\n if (this.enableExport || this.allowExport) {\n modules.push({\n member: 'Export',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && !this.scrollSettingEnabled && (zooming.enableSelectionZooming\n || zooming.enableMouseWheelZooming || zooming.enablePinchZooming || zooming.enablePan || zooming.enableScrollbar)) {\n modules.push({\n member: 'Zoom',\n args: [this, this.zoomSettings]\n });\n if (zooming.enableScrollbar) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n }\n if (this.selectionMode !== 'None' && !(this.chartAreaType === 'PolarRadar' &&\n this.selectionMode.indexOf('Drag') > -1)) {\n modules.push({\n member: 'Selection',\n args: [this]\n });\n }\n if (this.highlightMode !== 'None') {\n modules.push({\n member: 'Highlight',\n args: [this]\n });\n }\n if (dataLabelEnable) {\n modules.push({\n member: 'DataLabel',\n args: [this, series]\n });\n }\n if (isPointDrag) {\n modules.push({\n member: 'DataEditing',\n args: [this]\n });\n }\n if (enableAnnotation) {\n modules.push({\n member: 'Annotation',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && this.crosshair.enable) {\n modules.push({\n member: 'Crosshair',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findAxisModule = function (modules) {\n var axisCollections = [];\n axisCollections.push(this.primaryXAxis);\n axisCollections.push(this.primaryYAxis);\n axisCollections = axisCollections.concat(this.axes);\n var datetimeEnabled = false;\n var categoryEnabled = false;\n var logarithmicEnabled = false;\n var striplineEnabled = false;\n var dateTimeCategoryEnabled = false;\n var multiLevelEnabled = false;\n for (var _i = 0, axisCollections_1 = axisCollections; _i < axisCollections_1.length; _i++) {\n var axis = axisCollections_1[_i];\n datetimeEnabled = axis.valueType === 'DateTime' || datetimeEnabled;\n categoryEnabled = axis.valueType === 'Category' || categoryEnabled;\n logarithmicEnabled = axis.valueType === 'Logarithmic' || logarithmicEnabled;\n dateTimeCategoryEnabled = axis.valueType === 'DateTimeCategory' || dateTimeCategoryEnabled;\n striplineEnabled = this.findStriplineVisibility(axis.stripLines) || striplineEnabled;\n multiLevelEnabled = axis.multiLevelLabels.length > 0 || multiLevelEnabled;\n this.scrollSettingEnabled = axis.scrollbarSettings.enable ? true : this.scrollSettingEnabled;\n }\n if (datetimeEnabled) {\n modules.push({\n member: 'DateTime',\n args: [this]\n });\n }\n if (categoryEnabled) {\n modules.push({\n member: 'Category',\n args: [this]\n });\n }\n if (logarithmicEnabled) {\n modules.push({\n member: 'Logarithmic',\n args: [this]\n });\n }\n if (striplineEnabled) {\n modules.push({\n member: 'StripLine',\n args: [this]\n });\n }\n if (multiLevelEnabled) {\n modules.push({\n member: 'MultiLevelLabel',\n args: [this]\n });\n }\n if (dateTimeCategoryEnabled) {\n modules.push({\n member: 'DateTimeCategory',\n args: [this]\n });\n }\n if (this.scrollSettingEnabled) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findIndicatorModules = function (modules) {\n var macdEnable;\n var bandEnable;\n var indicators = this.indicators;\n if (this.indicators.length) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n indicators.map(function (indicator) {\n macdEnable = macdEnable || indicator.type === 'Macd';\n bandEnable = bandEnable || indicator.type === 'BollingerBands';\n });\n if (macdEnable) {\n modules.push({\n member: 'ColumnSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'RangeAreaSeries',\n args: [this]\n });\n }\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n modules.push({\n member: indicator.type + 'Indicator',\n args: [this]\n });\n }\n }\n };\n Chart.prototype.findTrendLineModules = function (modules) {\n var isLine;\n var isSpline;\n var _loop_1 = function (series) {\n var markerEnable;\n series.trendlines.map(function (trendline) {\n markerEnable = markerEnable || trendline.marker.visible;\n isLine = isLine || (trendline.type === 'Linear' || trendline.type === 'MovingAverage') ? true : false;\n isSpline = isSpline || !isLine ? true : false;\n });\n if (markerEnable) {\n modules.push({\n member: 'Marker',\n args: [this_1, series]\n });\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n _loop_1(series);\n }\n if (isLine || isSpline) {\n modules.push({\n member: 'TrendLine',\n args: [this]\n });\n }\n if (isLine) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n }\n if (isSpline) {\n modules.push({\n member: 'SplineSeries',\n args: [this]\n });\n }\n };\n Chart.prototype.findStriplineVisibility = function (striplines) {\n var visible = false;\n for (var _i = 0, striplines_1 = striplines; _i < striplines_1.length; _i++) {\n var stripline = striplines_1[_i];\n if (stripline.visible) {\n visible = true;\n break;\n }\n }\n return visible;\n };\n /**\n * To Remove the SVG.\n * @return {boolean}\n * @private\n */\n Chart.prototype.removeSvg = function () {\n if (this.redraw) {\n return null;\n }\n blazorTemplatesReset(this);\n if (this.enableCanvas && this.svgObject && this.svgObject.tagName === 'CANVAS') {\n this.renderer.clearRect(new Rect(0, 0, this.availableSize.width, this.availableSize.height));\n if (this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n return null;\n }\n removeElement(this.element.id + '_Secondary_Element');\n if (this.isReact) {\n this.clearTemplate();\n }\n var removeLength = 0;\n if (this.zoomModule && this.zoomModule.pinchTarget) {\n this.zoomModule.pinchTarget.id = '';\n this.zoomModule.pinchTarget.setAttribute('opacity', '0');\n this.svgObject.appendChild(this.zoomModule.pinchTarget);\n removeLength = 1;\n }\n // Fix for blazor resize issue\n if (!isNullOrUndefined(this.resizeTo)) {\n if (this.resizeTo !== this.checkResize && this.isBlazor && this.element.childElementCount) {\n var containerCollection = document.querySelectorAll('.e-chart');\n for (var index = 0; index < containerCollection.length; index++) {\n var container = containerCollection[index];\n while (container.firstChild) {\n remove(container.firstChild);\n }\n }\n }\n this.checkResize = this.resizeTo;\n }\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > removeLength) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode && !(this.stockChart)) {\n remove(this.svgObject);\n }\n }\n };\n Chart.prototype.refreshDefinition = function (definitions) {\n for (var _i = 0, definitions_1 = definitions; _i < definitions_1.length; _i++) {\n var item = definitions_1[_i];\n item.axes = [];\n }\n };\n /**\n * Refresh the axis default value.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.refreshAxis = function () {\n var axis = this.primaryXAxis;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis = this.primaryYAxis;\n axis.isStack100 = false;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n for (var _i = 0, _a = this.axes; _i < _a.length; _i++) {\n var item = _a[_i];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n for (var _b = 0, _c = this.paretoSeriesModule.paretoAxes; _b < _c.length; _b++) {\n var item = _c[_b];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n }\n };\n Chart.prototype.axisChange = function (axis) {\n if (!axis.name && !axis.valueType) {\n return false;\n }\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData();\n return true;\n };\n /**\n * Get visible series by index\n */\n Chart.prototype.getVisibleSeries = function (visibleSeries, index) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return null;\n };\n /**\n * Fix for live data update flicker issue\n */\n Chart.prototype.refreshLiveData = function () {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n if (!this.isBlazor) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n };\n /**\n * To remove style element\n */\n Chart.prototype.removeStyles = function () {\n removeElement(this.element.id + '_ej2_chart_selection');\n removeElement(this.element.id + '_ej2_chart_highlight');\n };\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n Chart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var renderer = false;\n var refreshBounds = false;\n this.animateSeries = false;\n if (!this.delayRedraw) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'primaryXAxis':\n refreshBounds = this.axisChange(newProp.primaryXAxis);\n if (newProp.primaryXAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryXAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n break;\n case 'primaryYAxis':\n refreshBounds = this.axisChange(newProp.primaryYAxis);\n if (newProp.primaryYAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryYAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n break;\n case 'axes':\n for (var _b = 0, _c = Object.keys(newProp.axes); _b < _c.length; _b++) {\n var index = _c[_b];\n refreshBounds = refreshBounds || this.axisChange(newProp.axes[index]);\n if (!newProp.axes[index].crosshairTooltip) {\n refreshBounds = true;\n }\n }\n break;\n case 'height':\n case 'width':\n this.createChartSvg();\n refreshBounds = true;\n break;\n case 'subTitle':\n case 'title':\n refreshBounds = true;\n break;\n case 'titleStyle':\n if (newProp.titleStyle && (newProp.titleStyle.size || newProp.titleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'subTitleStyle':\n if (newProp.subTitleStyle && (newProp.subTitleStyle.size || newProp.subTitleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'border':\n renderer = true;\n break;\n case 'dataSource':\n this.processData(false);\n refreshBounds = true;\n break;\n case 'enableCanvas':\n this.refresh();\n break;\n case 'series':\n var len = this.series.length;\n var seriesRefresh = false;\n var series = void 0;\n var blazorProp = void 0;\n for (var i = 0; i < len; i++) {\n series = newProp.series[i];\n // I264774 blazor series visible property binding not working issue fixed.\n if (this.isBlazor && series && ((series.visible !== oldProp.series[i].visible) || series.isClosed ||\n series.marker || series.emptyPointSettings || series.type || series.boxPlotMode || series.showMean)) {\n blazorProp = true;\n }\n if (series && (series.dataSource || series.query || series.errorBar || series.xName ||\n series.yName || series.size || series.high || series.low || series.open || series.close ||\n series.fill || series.name || series.marker || blazorProp)) {\n extend(this.getVisibleSeries(this.visibleSeries, i), series, null, true);\n seriesRefresh = true;\n }\n }\n if (seriesRefresh) {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n refreshBounds = true;\n }\n break;\n case 'indicators':\n refreshBounds = true;\n break;\n case 'zoomSettings':\n if (newProp.zoomSettings.enableScrollbar || oldProp.zoomSettings.enableScrollbar) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'background':\n renderer = true;\n break;\n case 'chartArea':\n if (newProp.chartArea.border && newProp.chartArea.border.width) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'legendSettings':\n if (!newProp.legendSettings.background || !newProp.legendSettings.opacity) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'palettes':\n this.calculateVisibleSeries();\n renderer = true;\n break;\n case 'selectedDataIndexes':\n case 'selectionMode':\n if (this.selectionModule && newProp.selectionMode && newProp.selectionMode.indexOf('Drag') === -1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode);\n }\n break;\n case 'isMultiSelect':\n if (this.selectionModule && !newProp.isMultiSelect && this.selectionModule.selectedDataIndexes.length > 1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode);\n }\n break;\n case 'highlightMode':\n case 'selectionPattern':\n case 'highlightPattern':\n this.removeStyles();\n renderer = true;\n break;\n case 'theme':\n this.animateSeries = true;\n break;\n case 'locale':\n case 'currencyCode':\n if (this.isBlazor) {\n this.setCulture();\n renderer = true;\n }\n else {\n this.refresh();\n }\n break;\n case 'tooltip':\n if (this.tooltipModule) { // To check the tooltip enable is true.\n this.tooltipModule.previousPoints = [];\n }\n break;\n }\n }\n if (!refreshBounds && renderer) {\n this.removeSvg();\n this.renderElements();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (refreshBounds) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n if (this.isReact) {\n this.clearTemplate();\n }\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n this.redraw = false;\n this.animated = false;\n }\n }\n };\n __decorate([\n Property(null)\n ], Chart.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"dataSource\", void 0);\n __decorate([\n Complex(Theme.chartTitleFont, Font)\n ], Chart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex(Theme.chartSubTitleFont, Font)\n ], Chart.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Complex({}, Margin)\n ], Chart.prototype, \"margin\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], Chart.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"background\", void 0);\n __decorate([\n Complex({ border: { color: null, width: 0.5 }, background: 'transparent' }, ChartArea)\n ], Chart.prototype, \"chartArea\", void 0);\n __decorate([\n Complex({ name: 'primaryXAxis' }, Axis)\n ], Chart.prototype, \"primaryXAxis\", void 0);\n __decorate([\n Complex({ name: 'primaryYAxis' }, Axis)\n ], Chart.prototype, \"primaryYAxis\", void 0);\n __decorate([\n Collection([{}], Row)\n ], Chart.prototype, \"rows\", void 0);\n __decorate([\n Collection([{}], Column)\n ], Chart.prototype, \"columns\", void 0);\n __decorate([\n Collection([{}], Axis)\n ], Chart.prototype, \"axes\", void 0);\n __decorate([\n Collection([{}], Series)\n ], Chart.prototype, \"series\", void 0);\n __decorate([\n Collection([{}], ChartAnnotationSettings)\n ], Chart.prototype, \"annotations\", void 0);\n __decorate([\n Property([])\n ], Chart.prototype, \"palettes\", void 0);\n __decorate([\n Property('Material')\n ], Chart.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], Chart.prototype, \"tooltip\", void 0);\n __decorate([\n Complex({}, CrosshairSettings)\n ], Chart.prototype, \"crosshair\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], Chart.prototype, \"legendSettings\", void 0);\n __decorate([\n Collection([{}], RangeColorSetting)\n ], Chart.prototype, \"rangeColorSettings\", void 0);\n __decorate([\n Complex({}, ZoomSettings)\n ], Chart.prototype, \"zoomSettings\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionPattern\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowExport\", void 0);\n __decorate([\n Collection([], Indexes)\n ], Chart.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableAutoIntervalOnBothAxis\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isTransposed\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableCanvas\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"backgroundImage\", void 0);\n __decorate([\n Collection([], TechnicalIndicator)\n ], Chart.prototype, \"indicators\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], Chart.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableSideBySidePlacement\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeResize\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"afterExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisRangeCalculated\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisMultiLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"multiLevelLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"sharedTooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"selectionComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"zoomComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"onZooming\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollEnd\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollChanged\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragEnd\", void 0);\n __decorate([\n Property('USD')\n ], Chart.prototype, \"currencyCode\", void 0);\n Chart = __decorate([\n NotifyPropertyChanges\n ], Chart);\n return Chart;\n}(Component));\nexport { Chart };\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { appendChildElement, redrawElement, pathAnimation, valueToCoefficient, getVisiblePoints } from '../../common/utils/helper';\nimport { getAnimationFunction, getPoint, getMinPointsDelta } from '../../common/utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { pointRender } from '../../common/model/constants';\n/**\n * Column Series Base\n */\nvar ColumnBase = /** @class */ (function () {\n function ColumnBase() {\n }\n /**\n * To get the position of the column series.\n *\n * @returns {DoubleRange} doubleRange\n * @private\n */\n ColumnBase.prototype.getSideBySideInfo = function (series) {\n if (series.chart.enableSideBySidePlacement && !series.position) {\n this.getSideBySidePositions(series);\n }\n var position = !series.chart.enableSideBySidePlacement ? 0 : series.position;\n var rectCount = !series.chart.enableSideBySidePlacement ? 1 : series.rectCount;\n series.isRectSeries = true;\n var visibleSeries = series.chart.visibleSeries;\n var seriesSpacing = series.chart.enableSideBySidePlacement ? series.columnSpacing : 0; // Column Spacing\n var pointSpacing = (series.columnWidth === null || isNaN(+series.columnWidth)) ? ((series.type === 'Histogram') ? 1 : 0.7) :\n series.columnWidth; // Column width\n var minimumPointDelta = getMinPointsDelta(series.xAxis, visibleSeries);\n var width = minimumPointDelta * pointSpacing;\n var radius;\n var location = (position) / rectCount - 0.5;\n var doubleRange = new DoubleRange(location, location + (1 / rectCount));\n if (!(isNaN(doubleRange.start) || isNaN(doubleRange.end))) {\n doubleRange = new DoubleRange(doubleRange.start * width, doubleRange.end * width);\n radius = seriesSpacing * doubleRange.delta;\n doubleRange = new DoubleRange(doubleRange.start + radius / 2, doubleRange.end - radius / 2);\n }\n return doubleRange;\n };\n /**\n * To get the rect values.\n *\n * @returns {Rect} rect region values\n * @private\n */\n ColumnBase.prototype.getRectangle = function (x1, y1, x2, y2, series) {\n var point1 = getPoint(x1, y1, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n var point2 = getPoint(x2, y2, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n return new Rect(Math.min(point1.x, point2.x), Math.min(point1.y, point2.y), Math.abs(point2.x - point1.x), Math.abs(point2.y - point1.y));\n };\n /**\n * To get the position of each series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.getSideBySidePositions = function (series) {\n var chart = series.chart;\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.findRectPosition(series.findSeriesCollection(columnItem, item, false));\n }\n }\n };\n ColumnBase.prototype.findRectPosition = function (seriesCollection) {\n var stackingGroup = [];\n var vSeries = { rectCount: 0, position: null };\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n if (value.type.indexOf('Stacking') !== -1) {\n if (value.stackingGroup) {\n if (stackingGroup[value.stackingGroup] === undefined) {\n value.position = vSeries.rectCount;\n stackingGroup[value.stackingGroup] = vSeries.rectCount++;\n }\n else {\n value.position = stackingGroup[value.stackingGroup];\n }\n }\n else {\n if (vSeries.position === null) {\n value.position = vSeries.rectCount;\n vSeries.position = vSeries.rectCount++;\n }\n else {\n value.position = vSeries.position;\n }\n }\n }\n else {\n value.position = vSeries.rectCount++;\n }\n }\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n value.rectCount = vSeries.rectCount;\n }\n };\n /**\n * Updates the symbollocation for points\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateSymbolLocation = function (point, rect, series) {\n if (!series.chart.requireInvertedAxis) {\n this.updateXRegion(point, rect, series);\n }\n else {\n this.updateYRegion(point, rect, series);\n }\n if (series.type === 'Histogram') {\n point.minimum = +point.x - series.histogramValues.binWidth / 2;\n point.maximum = +point.x + series.histogramValues.binWidth / 2;\n }\n };\n /**\n * Update the region for the point.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateXRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isInversed)) ? rect.y : (rect.y + rect.height)\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: rect.y + rect.height\n });\n }\n };\n /**\n * Update the region for the point in bar series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateYRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isInversed)) ? rect.x + rect.width : rect.x,\n y: rect.y + rect.height / 2\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x,\n y: rect.y + rect.height / 2\n });\n }\n };\n /**\n * To render the marker for the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.renderMarker = function (series) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.render(series);\n }\n };\n /**\n * To get the marker region when Y value is 0\n *\n * @param {Points} point point\n * @param {rect} rect rect\n * @param {Series} series series\n */\n ColumnBase.prototype.getRegion = function (point, rect, series) {\n if (point.y === 0) {\n var markerWidth = (series.marker && series.marker.width) ? series.marker.width : 0;\n var markerHeight = (series.marker && series.marker.height) ? series.marker.height : 0;\n point.regions.push(new Rect(point.symbolLocations[0].x - markerWidth, point.symbolLocations[0].y - markerHeight, 2 * markerWidth, 2 * markerHeight));\n }\n else {\n point.regions.push(rect);\n }\n };\n /**\n * To trigger the point rendering event.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.triggerEvent = function (series, point, fill, border) {\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: series.setPointColor(point, fill),\n border: series.setBorderColor(point, border)\n };\n series.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n return argsData;\n };\n /**\n * To draw the rectangle for points.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.drawRectangle = function (series, point, rect, argsData) {\n var chart = series.chart;\n var check = chart.requireInvertedAxis ? rect.height : rect.width;\n if (check <= 0) {\n return null;\n }\n var direction;\n if (point.y === 0) {\n // For 0 values corner radius will not calculate\n direction = this.calculateRoundedRectPath(rect, 0, 0, 0, 0);\n }\n else {\n direction = this.calculateRoundedRectPath(rect, series.cornerRadius.topLeft, series.cornerRadius.topRight, series.cornerRadius.bottomLeft, series.cornerRadius.bottomRight);\n }\n var name = series.category === 'Indicator' ? chart.element.id + '_Indicator_' + series.index + '_' + series.name +\n '_Point_' + point.index : chart.element.id + '_Series_' + series.index + '_Point_' + point.index;\n var previousElement = redrawElement(chart.redraw, name);\n var previousDirection = previousElement ? previousElement.getAttribute('d') : '';\n var options = new PathOption(name, argsData.fill, argsData.border.width, argsData.border.color, series.opacity, series.dashArray, direction);\n var element = chart.renderer.drawPath(options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n switch (series.seriesType) {\n case 'XY':\n element.setAttribute('aria-label', point.x.toString() + ':' + point.yValue.toString());\n break;\n case 'HighLow':\n element.setAttribute('aria-label', point.x.toString() + ':' + point.high.toString() + ':' + point.low.toString());\n break;\n }\n appendChildElement(series.chart.enableCanvas, series.seriesElement, element, chart.redraw);\n if (!series.chart.enableCanvas) {\n pathAnimation(element, direction, chart.redraw, previousDirection, chart.duration);\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animate = function (series) {\n var rectElements = series.seriesElement.childNodes;\n var count = series.category === 'Indicator' ? 0 : 1;\n var visiblePoints = getVisiblePoints(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n if (!point.symbolLocations.length && !(series.type === 'BoxAndWhisker' && point.regions.length)) {\n continue;\n }\n this.animateRect(rectElements[count], series, point);\n count++;\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animateRect = function (element, series, point) {\n var option = series.animation;\n var duration = series.chart.animated ? series.chart.duration : option.duration;\n var effect = getAnimationFunction('Linear');\n var isPlot = point.yValue < 0;\n var x;\n var y;\n var elementHeight = +point.regions[0].height;\n var elementWidth = +point.regions[0].width;\n var centerX;\n var centerY;\n if (!series.chart.requireInvertedAxis) {\n x = +point.regions[0].x;\n if (series.type.indexOf('Stacking') > -1) {\n y = (1 - valueToCoefficient(0, series.yAxis)) * (series.yAxis.rect.height);\n centerX = x;\n centerY = y;\n }\n else {\n y = +point.regions[0].y;\n centerY = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? y + elementHeight / 2 :\n (isPlot !== series.yAxis.isInversed) ? y : y + elementHeight;\n centerX = isPlot ? x : x + elementWidth;\n }\n }\n else {\n y = +point.regions[0].y;\n if (series.type.indexOf('Stacking') > -1) {\n x = (valueToCoefficient(0, series.yAxis)) * series.yAxis.rect.width;\n centerX = x;\n centerY = y;\n }\n else {\n x = +point.regions[0].x;\n centerY = isPlot ? y : y + elementHeight;\n centerX = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? x + elementWidth / 2 :\n (isPlot !== series.yAxis.isInversed) ? x + elementWidth : x;\n }\n }\n var value;\n if (!isNullOrUndefined(element)) {\n element.style.visibility = 'hidden';\n new Animation({}).animate(element, {\n duration: duration,\n delay: option.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n element.style.visibility = 'visible';\n if (!series.chart.requireInvertedAxis) {\n elementHeight = elementHeight ? elementHeight : 1;\n value = effect(args.timeStamp - args.delay, 0, elementHeight, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(1,' + (value / elementHeight) + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n else {\n elementWidth = elementWidth ? elementWidth : 1;\n value = effect(args.timeStamp - args.delay, 0, elementWidth, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(' + (value / elementWidth) + ', 1) translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n }\n },\n end: function () {\n element.setAttribute('transform', 'translate(0,0)');\n var seriesElement = series.seriesElement;\n if (element === seriesElement.lastElementChild || point.index === series.points.length - 1 ||\n (series.type === 'Waterfall' && element === seriesElement.children[seriesElement.childElementCount - 2])) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n if (series.type === 'Waterfall') {\n var rectElements = seriesElement.childNodes;\n for (var i = 0; i < rectElements.length; i++) {\n if (rectElements[i].id.indexOf('Connector') !== -1) {\n rectElements[i].style.visibility = 'visible';\n rectElements[i].setAttribute('transform', 'translate(0,0)');\n }\n }\n }\n }\n }\n });\n }\n };\n /**\n * To get rounded rect path direction\n */\n ColumnBase.prototype.calculateRoundedRectPath = function (rect, topLeft, topRight, bottomLeft, bottomRight) {\n return 'M' + ' ' + rect.x + ' ' + (topLeft + rect.y) +\n ' Q ' + rect.x + ' ' + rect.y + ' ' + (rect.x + topLeft) + ' ' +\n rect.y + ' ' + 'L' + ' ' + (rect.x + rect.width - topRight) + ' ' + rect.y +\n ' Q ' + (rect.x + rect.width) + ' ' + rect.y + ' ' +\n (rect.x + rect.width) + ' ' + (rect.y + topRight) + ' ' + 'L ' +\n (rect.x + rect.width) + ' ' + (rect.y + rect.height - bottomRight)\n + ' Q ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' ' + (rect.x + rect.width - bottomRight) + ' ' +\n (rect.y + rect.height) + ' ' + 'L ' + (rect.x + bottomLeft) + ' ' + (rect.y + rect.height) + ' Q ' + rect.x + ' ' +\n (rect.y + rect.height) + ' ' + rect.x + ' ' + (rect.y + rect.height - bottomLeft) + ' ' + 'L' + ' ' + rect.x + ' ' +\n (topLeft + rect.y) + ' ' + 'Z';\n };\n return ColumnBase;\n}());\nexport { ColumnBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\nimport { withInRange } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `ColumnSeries` Module used to render the column series.\n */\nvar ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Column series.\n *\n * @returns {void}\n * @private\n */\n ColumnSeries.prototype.render = function (series) {\n var rect;\n var sideBySideInfo = this.getSideBySideInfo(series);\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var pointColumn = _a[_i];\n pointColumn.symbolLocations = [];\n pointColumn.regions = [];\n if (pointColumn.visible && withInRange(series.points[pointColumn.index - 1], pointColumn, series.points[pointColumn.index + 1], series)) {\n rect = this.getRectangle(pointColumn.xValue + sideBySideInfo.start, pointColumn.yValue, pointColumn.xValue + sideBySideInfo.end, origin, series);\n var color = series.category === 'Indicator' ? pointColumn.color : series.interior;\n argsData = this.triggerEvent(series, pointColumn, color, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.updateSymbolLocation(pointColumn, rect, series);\n this.drawRectangle(series, pointColumn, rect, argsData);\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n ColumnSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * Get module name.\n */\n ColumnSeries.prototype.getModuleName = function () {\n return 'ColumnSeries';\n /**\n * return the module name\n */\n };\n /**\n * To destroy the column series.\n *\n * @returns {void}\n * @private\n */\n ColumnSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return ColumnSeries;\n}(ColumnBase));\nexport { ColumnSeries };\n","/* eslint-disable no-trailing-spaces */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getAnimationFunction, pathAnimation, getElement } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Base for line type series.\n */\nvar LineBase = /** @class */ (function () {\n /** @private */\n function LineBase(chartModule) {\n this.chart = chartModule;\n }\n /**\n * To improve the chart performance.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.enableComplexProperty = function (series) {\n var tempPoints = [];\n var tempPoints2 = [];\n var xVisibleRange = series.xAxis.visibleRange;\n var yVisibleRange = series.yAxis.visibleRange;\n var seriesPoints = series.points;\n var areaBounds = series.clipRect;\n var xTolerance = Math.abs(xVisibleRange.delta / areaBounds.width);\n var yTolerance = Math.abs(yVisibleRange.delta / areaBounds.height);\n var prevXValue = (seriesPoints[0] && seriesPoints[0].x > xTolerance) ? 0 : xTolerance;\n var prevYValue = (seriesPoints[0] && seriesPoints[0].y > yTolerance) ? 0 : yTolerance;\n var xVal = 0;\n var yVal = 0;\n for (var _i = 0, seriesPoints_1 = seriesPoints; _i < seriesPoints_1.length; _i++) {\n var currentPoint = seriesPoints_1[_i];\n currentPoint.symbolLocations = [];\n xVal = currentPoint.xValue ? currentPoint.xValue : xVisibleRange.min;\n yVal = currentPoint.yValue ? currentPoint.yValue : yVisibleRange.min;\n if (Math.abs(prevXValue - xVal) >= xTolerance || Math.abs(prevYValue - yVal) >= yTolerance) {\n tempPoints.push(currentPoint);\n prevXValue = xVal;\n prevYValue = yVal;\n }\n }\n var tempPoint;\n for (var i = 0; i < tempPoints.length; i++) {\n tempPoint = tempPoints[i];\n if (isNullOrUndefined(tempPoint.x) || tempPoint.x === '') {\n continue;\n }\n else {\n tempPoints2.push(tempPoint);\n }\n }\n return tempPoints2;\n };\n /**\n * To generate the line path direction\n *\n * @param {Points} firstPoint firstPoint\n * @param {Points} secondPoint secondPoint\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getPointLocation getPointLocation\n * @param {string} startPoint startPoint\n */\n LineBase.prototype.getLineDirection = function (firstPoint, secondPoint, series, isInverted, getPointLocation, startPoint) {\n var direction = '';\n if (firstPoint != null) {\n var point1 = getPointLocation(firstPoint.xValue, firstPoint.yValue, series.xAxis, series.yAxis, isInverted, series);\n var point2 = getPointLocation(secondPoint.xValue, secondPoint.yValue, series.xAxis, series.yAxis, isInverted, series);\n direction = startPoint + ' ' + (point1.x) + ' ' + (point1.y) + ' ' +\n 'L' + ' ' + (point2.x) + ' ' + (point2.y) + ' ';\n }\n return direction;\n };\n /**\n * To append the line path.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.appendLinePath = function (options, series, clipRect) {\n var element = getElement(options.id);\n var chart = series.chart;\n var previousDirection = element ? element.getAttribute('d') : null;\n var htmlObject = series.chart.renderer.drawPath(options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n if (htmlObject) {\n htmlObject.setAttribute('clip-path', clipRect);\n }\n series.pathElement = htmlObject;\n if (!series.chart.enableCanvas) {\n series.seriesElement.appendChild(htmlObject);\n }\n series.isRectSeries = false;\n pathAnimation(element, options.d, series.chart.redraw, previousDirection, chart.duration);\n };\n /**\n * To render the marker for the series.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.renderMarker = function (series) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.render(series);\n }\n };\n /**\n * To do the progressive animation.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.doProgressiveAnimation = function (series, option) {\n var animation = new Animation({});\n var path = series.pathElement;\n var strokeDashArray = path.getAttribute('stroke-dasharray');\n var pathLength = series.pathElement.getTotalLength();\n var currentTime;\n path.style.visibility = 'hidden';\n animation.animate(path, {\n duration: option.duration,\n delay: option.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n path.style.visibility = 'visible';\n currentTime = Math.abs(Math.round(((args.timeStamp - args.delay) * pathLength) / args.duration));\n path.setAttribute('stroke-dasharray', currentTime + ',' + pathLength);\n }\n },\n end: function () {\n path.setAttribute('stroke-dasharray', strokeDashArray);\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n });\n };\n /**\n * To store the symbol location and region\n *\n * @param {Points} point point\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getLocation getLocation\n */\n LineBase.prototype.storePointLocation = function (point, series, isInverted, getLocation) {\n var markerWidth = (series.marker && series.marker.width) ? series.marker.width : 0;\n var markerHeight = (series.marker && series.marker.height) ? series.marker.height : 0;\n point.symbolLocations.push(getLocation(point.xValue, point.yValue, series.xAxis, series.yAxis, isInverted, series));\n point.regions.push(new Rect(point.symbolLocations[0].x - markerWidth, point.symbolLocations[0].y - markerHeight, 2 * markerWidth, 2 * markerHeight));\n };\n /**\n * To find point with in the visible range\n *\n * @param {Points} point point\n * @param {Axis} yAxis yAxis\n * @private\n */\n LineBase.prototype.withinYRange = function (point, yAxis) {\n return point.yValue >= yAxis.visibleRange.min && point.yValue <= yAxis.visibleRange.max;\n };\n /**\n * To get first and last visible points\n *\n * @private\n */\n LineBase.prototype.getFirstLastVisiblePoint = function (points) {\n var first = null;\n var last = null;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n if (first === null && point.visible) {\n first = last = point;\n }\n last = point.visible ? point : last;\n }\n return { first: first ? first : points[0], last: last ? last : points[points.length - 1] };\n };\n /**\n * To do the linear animation.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.doLinearAnimation = function (series, animation) {\n var clipRect = series.clipRectElement.childNodes[0].childNodes[0];\n var duration = series.chart.animated ? series.chart.duration : animation.duration;\n var effect = getAnimationFunction('Linear');\n var elementHeight = +clipRect.getAttribute('height');\n var elementWidth = +clipRect.getAttribute('width');\n var xCenter = +clipRect.getAttribute('x');\n var yCenter = series.chart.requireInvertedAxis ? +clipRect.getAttribute('height') + +clipRect.getAttribute('y') :\n +clipRect.getAttribute('y');\n var value;\n clipRect.style.visibility = 'hidden';\n new Animation({}).animate(clipRect, {\n duration: duration,\n delay: animation.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n clipRect.style.visibility = 'visible';\n if (series.chart.requireInvertedAxis) {\n value = effect(args.timeStamp - args.delay, 0, elementHeight, args.duration);\n clipRect.setAttribute('transform', 'translate(' + xCenter + ' ' + yCenter +\n ') scale(1,' + (value / elementHeight) + ') translate(' + (-xCenter) + ' ' + (-yCenter) + ')');\n }\n else {\n value = effect(args.timeStamp - args.delay, 0, elementWidth, args.duration);\n clipRect.setAttribute('transform', 'translate(' + xCenter + ' ' + yCenter +\n ') scale(' + (value / elementWidth) + ', 1) translate(' + (-xCenter) + ' ' + (-yCenter) + ')');\n }\n }\n },\n end: function () {\n clipRect.setAttribute('transform', 'translate(0,0)');\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n });\n };\n return LineBase;\n}());\nexport { LineBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, getPoint, TransformToVisible } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from './line-base';\n/**\n * `LineSeries` module used to render the line series.\n */\nvar LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Line Series.\n *\n * @returns {void}\n * @private\n */\n LineSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var point1;\n var point2;\n var direction = '';\n var prevPoint = null;\n var startPoint = 'M';\n var isPolar = (series.chart && series.chart.chartAreaType === 'PolarRadar');\n var isDrop = (series.emptyPointSettings && series.emptyPointSettings.mode === 'Drop');\n var getCoordinate = isPolar ? TransformToVisible : getPoint;\n var visiblePoints = series.category === 'TrendLine' ? series.points : this.enableComplexProperty(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n point.regions = [];\n point.symbolLocations = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n direction += this.getLineDirection(prevPoint, point, series, isInverted, getCoordinate, startPoint);\n startPoint = prevPoint ? 'L' : startPoint;\n prevPoint = point;\n this.storePointLocation(point, series, isInverted, getCoordinate);\n }\n else {\n prevPoint = isDrop ? prevPoint : null;\n startPoint = isDrop ? startPoint : 'M';\n }\n }\n if (isPolar) {\n if (series.isClosed) {\n var points = this.getFirstLastVisiblePoint(visiblePoints);\n point2 = getCoordinate(points.last.xValue, points.last.yValue, xAxis, yAxis, isInverted, series);\n point1 = getCoordinate(points.first.xValue, points.first.yValue, xAxis, yAxis, isInverted, series);\n direction = direction.concat(startPoint + ' ' + point2.x + ' ' + point2.y + ' ' + 'L' + ' ' + point1.x + ' ' + point1.y);\n }\n }\n var name = series.category === 'Indicator' ? series.chart.element.id + '_Indicator_' + series.index + '_' + series.name :\n series.category === 'TrendLine' ? series.chart.element.id + '_Series_' + series.sourceIndex + '_TrendLine_' + series.index :\n series.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index);\n var options = new PathOption(name, 'none', series.width, series.interior, series.opacity, series.dashArray, direction);\n this.appendLinePath(options, series, '');\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n LineSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doProgressiveAnimation(series, option);\n };\n /**\n * Get module name.\n */\n LineSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'LineSeries';\n };\n /**\n * To destroy the line series.\n *\n * @returns {void}\n * @private\n */\n LineSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return LineSeries;\n}(LineBase));\nexport { LineSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { getPoint, appendClipElement, pathAnimation } from '../../common/utils/helper';\nimport { LineBase } from './line-base';\nimport { RectOption, getElement } from '../../common/utils/helper';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * Base class for multi colored series\n */\nvar MultiColoredSeries = /** @class */ (function (_super) {\n __extends(MultiColoredSeries, _super);\n function MultiColoredSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To Generate the area path direction\n *\n * @param {number} xValue xValue\n * @param {number} yValue yValue\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getPointLocation getPointLocation\n * @param {ChartLocation} startPoint startPoint\n * @param {string} startPath startPath\n */\n MultiColoredSeries.prototype.getAreaPathDirection = function (xValue, yValue, series, isInverted, getPointLocation, startPoint, startPath) {\n var direction = '';\n var firstPoint;\n if (startPoint === null) {\n firstPoint = getPointLocation(xValue, yValue, series.xAxis, series.yAxis, isInverted, series);\n direction += (startPath + ' ' + (firstPoint.x) + ' ' + (firstPoint.y) + ' ');\n }\n return direction;\n };\n /**\n * To Generate the empty point direction\n *\n * @param {ChartLocation} firstPoint firstPoint\n * @param {ChartLocation} secondPoint secondPoint\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getPointLocation getPointLocation\n */\n MultiColoredSeries.prototype.getAreaEmptyDirection = function (firstPoint, secondPoint, series, isInverted, getPointLocation) {\n var direction = '';\n direction += this.getAreaPathDirection(firstPoint.x, firstPoint.y, series, isInverted, getPointLocation, null, 'L');\n direction += this.getAreaPathDirection(secondPoint.x, secondPoint.y, series, isInverted, getPointLocation, null, 'L');\n return direction;\n };\n /**\n * To set point color\n */\n MultiColoredSeries.prototype.setPointColor = function (currentPoint, previous, series, isXSegment, segments) {\n if (series.pointColorMapping === '') {\n var segment = void 0;\n var value = void 0;\n for (var i = 0; i < segments.length; i++) {\n segment = segments[i];\n value = isXSegment ? currentPoint.xValue : currentPoint.yValue;\n if (value <= this.getAxisValue(segment.value, isXSegment ? series.xAxis : series.yAxis, series.chart) || !segment.value) {\n currentPoint.interior = segment.color;\n break;\n }\n }\n if (currentPoint.interior == null) {\n currentPoint.interior = series.interior;\n }\n return false;\n }\n else {\n if (previous) {\n return series.setPointColor(currentPoint, series.interior) !== series.setPointColor(previous, series.interior);\n }\n else {\n return false;\n }\n }\n };\n MultiColoredSeries.prototype.sortSegments = function (series, chartSegments) {\n var _this = this;\n var axis = series.segmentAxis === 'X' ? series.xAxis : series.yAxis;\n var segments = [].concat(chartSegments);\n return segments.sort(function (a, b) {\n return _this.getAxisValue(a.value, axis, series.chart) - _this.getAxisValue(b.value, axis, series.chart);\n });\n };\n /**\n * Segment calculation performed here\n *\n * @param {Series} series series\n * @param {PathOption[]} options options\n * @param {ChartSegmentModel[]} segments chartSegments\n */\n MultiColoredSeries.prototype.applySegmentAxis = function (series, options, segments) {\n var _this = this;\n if (series.pointColorMapping !== '') {\n options.map(function (option) {\n _this.appendLinePath(option, series, '');\n });\n return null;\n }\n var isXSegment = series.segmentAxis === 'X';\n var axis = isXSegment ? series.xAxis : series.yAxis;\n var chart = series.chart;\n var segment;\n this.includeSegment(segments, axis, series, segments.length);\n var length = segments.length;\n var value;\n var clipPath;\n var attributeOptions;\n var _loop_1 = function (index) {\n segment = segments[index];\n value = this_1.getAxisValue(segment.value, axis, series.chart);\n clipPath = this_1.createClipRect(index ? this_1.getAxisValue(segments[index - 1].value, axis, series.chart)\n : axis.visibleRange.min, value, series, index, isXSegment);\n if (clipPath) {\n options.map(function (option) {\n attributeOptions = {\n 'clip-path': clipPath,\n 'stroke-dasharray': segment.dashArray,\n 'opacity': option.opacity,\n 'stroke': series.type.indexOf('Line') > -1 ? segment.color || series.interior : series.border.color,\n 'stroke-width': option['stroke-width'],\n 'fill': series.type.indexOf('Line') > -1 ? 'none' : segment.color || series.interior,\n 'id': option.id + '_Segment_' + index,\n 'd': option.d\n };\n pathAnimation(getElement(attributeOptions.id), attributeOptions.d, chart.redraw);\n series.seriesElement.appendChild(chart.renderer.drawPath(attributeOptions));\n });\n }\n };\n var this_1 = this;\n for (var index = 0; index < length; index++) {\n _loop_1(index);\n }\n };\n MultiColoredSeries.prototype.includeSegment = function (segments, axis, series, length) {\n if (length <= 0) {\n segments.push({ value: axis.visibleRange.max, color: series.interior });\n return null;\n }\n if (this.getAxisValue(segments[length - 1].value, axis, series.chart) < axis.visibleRange.max) {\n segments.push({ value: axis.visibleRange.max, color: series.interior });\n }\n };\n /**\n * To create clip rect for segment axis\n *\n * @param {number} startValue startValue\n * @param {number} endValue endValue\n * @param {Series} series series\n * @param {number} index index\n * @param {boolean} isX isX\n */\n MultiColoredSeries.prototype.createClipRect = function (startValue, endValue, series, index, isX) {\n var isRequired = series.chart.requireInvertedAxis;\n var startPointLocation = getPoint(isX ? startValue : series.xAxis.visibleRange.min, isX ? series.yAxis.visibleRange.max : endValue, series.xAxis, series.yAxis, isRequired);\n var endPointLocation = getPoint(isX ? endValue : series.xAxis.visibleRange.max, isX ? series.yAxis.visibleRange.min : startValue, series.xAxis, series.yAxis, isRequired);\n endPointLocation = isRequired ?\n [startPointLocation, startPointLocation = endPointLocation][0] : endPointLocation;\n var options;\n if ((endPointLocation.x - startPointLocation.x > 0) && (endPointLocation.y - startPointLocation.y > 0)) {\n options = new RectOption(series.chart.element.id + '_ChartSegment' + series.index + 'ClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: startPointLocation.x,\n y: startPointLocation.y,\n width: endPointLocation.x - startPointLocation.x,\n height: endPointLocation.y - startPointLocation.y\n });\n series.seriesElement.appendChild(appendClipElement(series.chart.redraw, options, series.chart.renderer));\n return 'url(#' + series.chart.element.id + '_ChartSegment' + series.index + 'ClipRect_' + index + ')';\n }\n return null;\n };\n /**\n * To get exact value from segment value\n *\n * @param {Object} segmentValue segmentValue\n * @param {Axis} axis axis\n * @param {Chart} chart chart\n */\n MultiColoredSeries.prototype.getAxisValue = function (segmentValue, axis, chart) {\n if (segmentValue === null) {\n segmentValue = axis.visibleRange.max;\n }\n if (axis.valueType === 'DateTime') {\n var option = { skeleton: 'full', type: 'dateTime' };\n return Date.parse(chart.intl.getDateParser(option)(chart.intl.getDateFormat(option)(new Date(DataUtil.parse.parseJson({ val: segmentValue }).val))));\n }\n else if (axis.valueType.indexOf('Category') > -1) {\n var xValue = axis.valueType === 'DateTimeCategory' ?\n (segmentValue.getTime()).toString() :\n segmentValue;\n return (axis.labels.indexOf(xValue) < 0) ? +segmentValue : axis.labels.indexOf(xValue);\n }\n else {\n return +segmentValue;\n }\n };\n return MultiColoredSeries;\n}(LineBase));\nexport { MultiColoredSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getPoint, withInRange, ChartLocation, TransformToVisible } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { MultiColoredSeries } from './multi-colored-base';\n/**\n * `AreaSeries` module is used to render the area series.\n */\nvar AreaSeries = /** @class */ (function (_super) {\n __extends(AreaSeries, _super);\n function AreaSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Area series.\n *\n * @returns {void}\n * @private\n */\n AreaSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var startPoint = null;\n var direction = '';\n var isPolar = (series.chart && series.chart.chartAreaType === 'PolarRadar');\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n if (isPolar) {\n var connectPoints = this.getFirstLastVisiblePoint(series.points);\n origin = connectPoints.first.yValue;\n }\n var currentXValue;\n var isDropMode = (series.emptyPointSettings && series.emptyPointSettings.mode === 'Drop');\n var borderWidth = series.border ? series.border.width : 0;\n var borderColor = series.border ? series.border.color : 'transparent';\n var getCoordinate = series.chart.chartAreaType === 'PolarRadar' ? TransformToVisible : getPoint;\n var visiblePoints = this.enableComplexProperty(series);\n var point;\n for (var i = 0; i < visiblePoints.length; i++) {\n point = visiblePoints[i];\n currentXValue = point.xValue;\n point.symbolLocations = [];\n point.regions = [];\n if (point.visible && withInRange(visiblePoints[i - 1], point, visiblePoints[i + 1], series)) {\n direction += this.getAreaPathDirection(currentXValue, origin, series, isInverted, getCoordinate, startPoint, 'M');\n startPoint = startPoint || new ChartLocation(currentXValue, origin);\n // First Point to draw the area path\n direction += this.getAreaPathDirection(currentXValue, point.yValue, series, isInverted, getCoordinate, null, 'L');\n if (visiblePoints[i + 1] && (!visiblePoints[i + 1].visible &&\n (!isPolar || (isPolar && this.withinYRange(visiblePoints[i + 1], yAxis)))) && !isDropMode) {\n direction += this.getAreaEmptyDirection({ 'x': currentXValue, 'y': origin }, startPoint, series, isInverted, getCoordinate);\n startPoint = null;\n }\n this.storePointLocation(point, series, isInverted, getCoordinate);\n }\n }\n if (isPolar && direction !== '') {\n var endPoint = '';\n var chart = this.chart;\n endPoint += this.getAreaPathDirection(0, origin, series, isInverted, getCoordinate, null, 'L');\n if (xAxis.isInversed || yAxis.isInversed) {\n direction += (series.type === 'Polar' ? chart.polarSeriesModule.getPolarIsInversedPath(xAxis, endPoint) :\n chart.radarSeriesModule.getRadarIsInversedPath(xAxis, endPoint));\n }\n direction = direction.concat(direction + ' ' + 'Z');\n }\n this.appendLinePath(new PathOption(series.chart.element.id + '_Series_' + series.index, series.interior, borderWidth, borderColor, series.opacity, series.dashArray, ((series.points.length > 1 && direction !== '') ? (direction + this.getAreaPathDirection(series.points[series.points.length - 1].xValue, series.chart.chartAreaType === 'PolarRadar' ?\n series.points[series.points.length - 1].yValue : origin, series, isInverted, getCoordinate, null, 'L')) : '')), series, '');\n this.renderMarker(series);\n };\n /**\n * To destroy the area series.\n *\n * @returns {void}\n * @private\n */\n AreaSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n /**\n * Get module name\n */\n AreaSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'AreaSeries';\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n AreaSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doLinearAnimation(series, option);\n };\n return AreaSeries;\n}(MultiColoredSeries));\nexport { AreaSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Chart legend\n */\nimport { remove, Browser, extend } from '@syncfusion/ej2-base';\nimport { LegendOptions, BaseLegend } from '../../common/legend/legend';\nimport { textTrim, removeElement, RectOption, withInBounds, blazorTemplatesReset } from '../../common/utils/helper';\nimport { getUnicodeText } from '../../common/utils/helper';\nimport { measureText, Rect, getElement } from '@syncfusion/ej2-svg-base';\nimport { legendRender, legendClick, regSub, regSup } from '../../common/model/constants';\n/**\n * `Legend` module is used to render legend for the chart.\n */\nvar Legend = /** @class */ (function (_super) {\n __extends(Legend, _super);\n function Legend(chart) {\n var _this = _super.call(this, chart) || this;\n _this.library = _this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Binding events for legend module.\n */\n Legend.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMove, this);\n this.chart.on('click', this.click, this);\n this.chart.on(Browser.touchEndEvent, this.mouseEnd, this);\n };\n /**\n * UnBinding events for legend module.\n */\n Legend.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMove);\n this.chart.off('click', this.click);\n this.chart.off(Browser.touchEndEvent, this.mouseEnd);\n };\n /**\n * To handle mosue move for legend module\n */\n Legend.prototype.mouseMove = function (e) {\n if (this.chart.legendSettings.visible && !this.chart.isTouch) {\n this.move(e);\n if (this.chart.highlightModule && this.chart.highlightMode !== 'None') {\n this.click(e);\n }\n }\n };\n /**\n * To handle mosue end for legend module\n */\n Legend.prototype.mouseEnd = function (e) {\n if (this.chart.legendSettings.visible && this.chart.isTouch) {\n this.move(e);\n }\n };\n /**\n * Get the legend options.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendOptions = function (visibleSeriesCollection, chart) {\n this.legendCollections = [];\n var seriesType;\n var fill;\n var colors = [];\n if (visibleSeriesCollection.length > 1) {\n this.legend.mode = 'Series';\n }\n for (var _i = 0, visibleSeriesCollection_1 = visibleSeriesCollection; _i < visibleSeriesCollection_1.length; _i++) {\n var series = visibleSeriesCollection_1[_i];\n if (this.legend.mode === 'Series') {\n if (series.category !== 'Indicator') {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n // To set legend color when use pointColorMapping\n fill = (series.pointColorMapping && series.points.length > 0) ?\n (series.points[0].interior ? series.points[0].interior : series.interior) : series.interior;\n this.legendCollections.push(new LegendOptions(series.name, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : series.visible), seriesType, series.legendImageUrl, series.marker.shape, series.marker.visible));\n }\n }\n else if (this.legend.mode === 'Point') {\n var _loop_1 = function (points) {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n if (this_1.legendCollections.filter(function (i) { return i.text === points.x.toString(); }).length === 0) {\n this_1.legendCollections.push(new LegendOptions(points.x.toString(), fill, series.legendShape, (series.category === 'TrendLine' ?\n this_1.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, '', series.marker.shape, series.marker.visible));\n }\n };\n var this_1 = this;\n for (var _a = 0, _b = series.points; _a < _b.length; _a++) {\n var points = _b[_a];\n _loop_1(points);\n }\n }\n else if (this.legend.mode === 'Range') {\n for (var _c = 0, _d = series.points; _c < _d.length; _c++) {\n var points = _d[_c];\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n var legendLabel = 'Others';\n if (colors.indexOf(fill) < 0) {\n colors.push(fill);\n if (chart.rangeColorSettings.length >= 1 && chart.rangeColorSettings[0].colors.length === 1) {\n for (var _e = 0, _f = chart.rangeColorSettings; _e < _f.length; _e++) {\n var rangeMap = _f[_e];\n if (rangeMap.colors[0] === fill) {\n legendLabel = rangeMap.label;\n }\n }\n this.legendCollections.push(new LegendOptions(legendLabel, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, '', series.marker.shape, series.marker.visible));\n }\n }\n }\n }\n else {\n if (this.legendCollections.length === 0 && chart.rangeColorSettings.length > 0) {\n var startLabel = chart.rangeColorSettings[0].start.toString();\n var endLabel = chart.rangeColorSettings[chart.rangeColorSettings.length - 1].end.toString();\n this.legendCollections.push(new LegendOptions(startLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n this.legendCollections.push(new LegendOptions(endLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n }\n }\n }\n };\n /** @private */\n Legend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var extraHeight = 0;\n var extraWidth = 0;\n var arrowWidth = this.arrowWidth;\n var arrowHeight = this.arrowHeight;\n var verticalArrowSpace = this.isVertical && !legend.enablePages ? arrowHeight : 0;\n var titleSpace = this.isTitle && titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleSpace = this.isTitle && this.isVertical && titlePosition !== 'Top' ? this.legendTitleSize.height + this.fivePixel : titleSpace;\n if (!this.isVertical) {\n extraHeight = !legend.height ? ((availableSize.height / 100) * 5) : 0;\n }\n else {\n extraWidth = !legend.width ? ((availableSize.width / 100) * 5) : 0;\n }\n legendBounds.height += (extraHeight);\n legendBounds.width += extraWidth;\n var shapeWidth = legend.shapeWidth;\n var shapePadding = legend.shapePadding;\n var maximumWidth = 0;\n var rowWidth = 0;\n var legendWidth = 0;\n var columnHeight = 0;\n var rowCount = 0;\n var titlePlusArrowSpace = 0;\n var legendEventArgs;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle).height, legend.shapeHeight);\n var render = false;\n for (var _i = 0, _a = this.legendCollections; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n if (regSub.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSub);\n }\n if (regSup.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSup);\n }\n legendEventArgs = {\n fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n markerShape: legendOption.markerShape, name: legendRender, cancel: false\n };\n this.chart.trigger(legendRender, legendEventArgs);\n legendOption.render = !legendEventArgs.cancel;\n legendOption.text = legendEventArgs.text;\n legendOption.fill = legendEventArgs.fill;\n legendOption.shape = legendEventArgs.shape;\n legendOption.markerShape = legendEventArgs.markerShape;\n legendOption.textSize = measureText(legendOption.text, legend.textStyle);\n if (legendOption.render) {\n render = true;\n legendWidth = shapeWidth + shapePadding + legendOption.textSize.width + padding;\n rowWidth = rowWidth + legendWidth;\n if (!legend.enablePages && !this.isVertical) {\n titlePlusArrowSpace = this.isTitle && titlePosition !== 'Top' ? this.legendTitleSize.width + this.fivePixel : 0;\n titlePlusArrowSpace += arrowWidth;\n }\n if (legendBounds.width < (padding + rowWidth + titlePlusArrowSpace) || this.isVertical) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding + titlePlusArrowSpace - (this.isVertical ? 0 : legendWidth)));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = this.isVertical ? 0 : legendWidth;\n rowCount++;\n columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + titleSpace + verticalArrowSpace;\n }\n }\n }\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding + titleSpace);\n this.isPaging = legendBounds.height < columnHeight;\n if (this.isPaging && !legend.enablePages) {\n if (this.isVertical) {\n // eslint-disable-next-line no-self-assign\n columnHeight = columnHeight;\n }\n else {\n columnHeight = (this.maxItemHeight + padding) + padding + (titlePosition === 'Top' ? titleSpace : 0);\n }\n }\n this.totalPages = rowCount;\n if (!this.isPaging && !this.isVertical) {\n rowWidth += this.isTitle && titlePosition !== 'Top' ? (this.fivePixel + this.legendTitleSize.width + this.fivePixel) : 0;\n }\n if (render) {\n this.setBounds(Math.max((rowWidth + padding), maximumWidth), columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n /** @private */\n Legend.prototype.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend) {\n var padding = this.legend.padding;\n var previousBound = (prevLegend.location.x + textPadding + prevLegend.textSize.width);\n if ((previousBound + (legendOption.textSize.width + textPadding)) > (rect.x + rect.width + this.legend.shapeWidth / 2) ||\n this.isVertical) {\n legendOption.location.x = start.x;\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + this.maxItemHeight + padding;\n }\n else {\n legendOption.location.x = (count === firstLegend) ? prevLegend.location.x : previousBound;\n legendOption.location.y = prevLegend.location.y;\n }\n var availwidth = (this.legendBounds.x + this.legendBounds.width) - (legendOption.location.x +\n textPadding - this.legend.shapeWidth / 2);\n legendOption.text = textTrim(+availwidth.toFixed(4), legendOption.text, this.legend.textStyle);\n };\n /** @private */\n Legend.prototype.LegendClick = function (index, event) {\n var chart = this.chart;\n var seriesIndex = chart.legendSettings.mode === 'Series' ? index : 0;\n var series = chart.visibleSeries[seriesIndex];\n var legend = this.legendCollections[index];\n var changeDetection = 'isProtectedOnChange';\n if (chart.legendSettings.mode === 'Series') {\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: series.points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n series.legendShape = legendClickArgs.legendShape;\n if (series.fill !== null) {\n chart.visibleSeries[index].interior = series.fill;\n }\n if (chart.legendSettings.toggleVisibility) {\n if (series.category === 'TrendLine') {\n if (!chart.series[series.sourceIndex].trendlines[series.index].visible) {\n chart.series[series.sourceIndex].trendlines[series.index].visible = true;\n }\n else {\n chart.series[series.sourceIndex].trendlines[series.index].visible = false;\n }\n }\n else {\n series.chart[changeDetection] = true;\n this.changeSeriesVisiblity(series, series.visible);\n }\n legend.visible = series.category === 'TrendLine' ? chart.series[series.sourceIndex].trendlines[series.index].visible :\n (series.visible);\n this.refreshLegendToggle(chart, series);\n }\n else if (chart.selectionModule) {\n chart.selectionModule.legendSelection(chart, index, event);\n }\n else if (chart.highlightModule) {\n chart.highlightModule.legendSelection(chart, index, event);\n }\n series.chart[changeDetection] = false;\n }\n else if (chart.legendSettings.mode === 'Point') {\n var point = series.points[index];\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: [point], name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility) {\n point.visible = !point.visible;\n var legendOption = this.legendCollections[index];\n legendOption.visible = point.visible;\n this.refreshLegendToggle(chart, series);\n }\n }\n else if (chart.legendSettings.mode === 'Range') {\n var points = [];\n var legendOption = this.legendCollections[index];\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (legendOption.fill === (point.interior || series.interior)) {\n points.push(point);\n }\n }\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility) {\n legendOption.visible = !legendOption.visible;\n for (var _b = 0, points_1 = points; _b < points_1.length; _b++) {\n var point = points_1[_b];\n point.visible = !point.visible;\n }\n this.refreshLegendToggle(chart, series);\n }\n }\n };\n Legend.prototype.refreshLegendToggle = function (chart, series) {\n var selectedDataIndexes = [];\n if (chart.selectionModule) {\n selectedDataIndexes = extend([], chart.selectionModule.selectedDataIndexes, null, true);\n }\n if ((chart.svgObject.childNodes.length > 0) && !chart.enableAnimation && !chart.enableCanvas) {\n while (chart.svgObject.lastChild) {\n chart.svgObject.removeChild(chart.svgObject.lastChild);\n }\n remove(chart.svgObject);\n }\n chart.animateSeries = false;\n chart.redraw = chart.enableAnimation;\n chart.rotatedDataLabelCollections = [];\n removeElement(getElement(chart.element.id + '_Secondary_Element').querySelectorAll('.ejSVGTooltip')[0]);\n blazorTemplatesReset(chart);\n this.redrawSeriesElements(series, chart);\n chart.removeSvg();\n chart.refreshAxis();\n series.refreshAxisLabel();\n this.refreshSeries(chart.visibleSeries);\n chart.markerRender.removeHighlightedMarker();\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart });\n if (selectedDataIndexes.length > 0) {\n chart.selectionModule.selectedDataIndexes = selectedDataIndexes;\n chart.selectionModule.redrawSelection(chart, chart.selectionMode);\n }\n if (chart.highlightModule && chart.highlightMode !== 'None') {\n chart.highlightModule.redrawSelection(chart, chart.highlightMode);\n }\n chart.redraw = false;\n };\n Legend.prototype.changeSeriesVisiblity = function (series, visibility) {\n series.visible = !visibility;\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis)) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n };\n Legend.prototype.isSecondaryAxis = function (axis) {\n return (this.chart.axes.indexOf(axis) > -1);\n };\n Legend.prototype.redrawSeriesElements = function (series, chart) {\n if (!chart.redraw) {\n return null;\n }\n removeElement(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) +\n '_DataLabelCollections');\n };\n Legend.prototype.refreshSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n series.position = undefined;\n }\n };\n /**\n * To show the tooltip for the trimmed text in legend.\n *\n * @returns {void}\n */\n Legend.prototype.click = function (event) {\n var _this = this;\n if (!this.chart.legendSettings.visible) {\n return;\n }\n var pageX = this.chart.mouseX;\n var pageY = this.chart.mouseY;\n var legendRegion = [];\n var targetId = event.target.id;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_'];\n var seriesIndex;\n for (var _i = 0, legendItemsId_1 = legendItemsId; _i < legendItemsId_1.length; _i++) {\n var id = legendItemsId_1[_i];\n if (targetId.indexOf(id) > -1) {\n seriesIndex = parseInt(targetId.split(id)[1], 10);\n this.LegendClick(seriesIndex, event);\n break;\n }\n }\n if (targetId.indexOf(this.legendID + '_pageup') > -1) {\n this.changePage(event, true);\n }\n else if (targetId.indexOf(this.legendID + '_pagedown') > -1) {\n this.changePage(event, false);\n }\n if (this.chart.enableCanvas && this.pagingRegions.length) {\n this.checkWithinBounds(pageX, pageY);\n }\n legendRegion = this.legendRegions.filter(function (region) {\n return (withInBounds(pageX, (pageY + (_this.isPaging ? (_this.currentPageNumber - 1) * _this.translatePage(null, 1, 2) : 0)), region.rect));\n });\n if (legendRegion.length && this.chart.enableCanvas) {\n this.LegendClick(legendRegion[0].index, event);\n }\n };\n /**\n * To check click position is within legend bounds\n */\n Legend.prototype.checkWithinBounds = function (pageX, pageY) {\n var cRender = this.chart.renderer;\n var bounds = this.legendBounds;\n var borderWidth = this.chart.legendSettings.border.width;\n var canvasRect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n canvasRect.x = canvasRect.x - borderWidth / 2;\n canvasRect.y = canvasRect.y - borderWidth / 2;\n canvasRect.width = canvasRect.width + borderWidth;\n canvasRect.height = canvasRect.height + borderWidth;\n if (withInBounds(pageX, pageY, this.pagingRegions[0])) {\n // pagedown calculations are performing here\n if (--this.currentPageNumber > 0) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transparent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n ++this.currentPageNumber;\n }\n return null;\n }\n if (withInBounds(pageX, pageY, this.pagingRegions[1])) {\n // pageUp calculations are performing here\n if (++this.currentPageNumber > 0 && this.currentPageNumber <= this.totalNoOfPages) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transpaent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n --this.currentPageNumber;\n }\n return null;\n }\n };\n /**\n * Get module name\n */\n Legend.prototype.getModuleName = function () {\n return 'Legend';\n };\n /**\n * To destroy the Legend.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Legend;\n}(BaseLegend));\nexport { Legend };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { extend } from '@syncfusion/ej2-base';\nimport { ChartLocation, withInBounds } from '../../common/utils/helper';\nimport { Rect, Size, measureText } from '@syncfusion/ej2-svg-base';\nimport { stopTimer, removeElement } from '../../common/utils/helper';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { Tooltip as SVGTooltip } from '@syncfusion/ej2-svg-base';\n/**\n * Tooltip Module used to render the tooltip for series.\n */\nvar BaseTooltip = /** @class */ (function (_super) {\n __extends(BaseTooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function BaseTooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.element = _this.chart.element;\n _this.textStyle = chart.tooltip.textStyle;\n _this.control = chart;\n return _this;\n }\n BaseTooltip.prototype.getElement = function (id) {\n return document.getElementById(id);\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.getTooltipElement = function (isTooltip) {\n this.inverted = this.chart.requireInvertedAxis;\n this.header = (this.control.tooltip.header === null) ?\n ((this.control.tooltip.shared) ? '${point.x}' : '${series.name}')\n : (this.control.tooltip.header);\n this.formattedText = [];\n var tooltipDiv = document.getElementById(this.chart.element.id + '_tooltip');\n var isStockChart = this.chart.element.id.indexOf('stockChart') > -1;\n if (!isTooltip && !tooltipDiv || isStockChart) {\n return this.createElement();\n }\n return null;\n };\n BaseTooltip.prototype.createElement = function () {\n var tooltipDiv = document.createElement('div');\n tooltipDiv.id = this.element.id + '_tooltip';\n tooltipDiv.className = 'ejSVGTooltip';\n tooltipDiv.setAttribute('style', 'pointer-events:none; position:absolute;z-index: 1');\n return tooltipDiv;\n };\n BaseTooltip.prototype.pushData = function (data, isFirst, tooltipDiv, isChart) {\n if (data.series.enableTooltip) {\n if (isChart) {\n this.currentPoints.push(data);\n }\n else {\n this.currentPoints.push(data);\n }\n this.stopAnimation();\n if (tooltipDiv && !document.getElementById(tooltipDiv.id)) {\n if (!this.chart.stockChart) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n else {\n document.getElementById(this.chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n return true;\n }\n return false;\n };\n BaseTooltip.prototype.removeHighlight = function () {\n var item;\n var series;\n for (var i = 0, len = this.previousPoints.length; i < len; i++) {\n item = this.previousPoints[i];\n if (item.series.isRectSeries) {\n if (item.series.visible) {\n this.highlightPoint(item.series, item.point.index, false);\n }\n continue;\n }\n series = item.series;\n if (!series.marker.visible && item.series.type !== 'Scatter' && item.series.type !== 'Bubble') {\n this.previousPoints.shift();\n len -= 1;\n }\n }\n };\n BaseTooltip.prototype.highlightPoint = function (series, pointIndex, highlight) {\n var element = this.getElement(this.element.id + '_Series_' + series.index + '_Point_' + pointIndex);\n var selectionModule = this.control.accumulationSelectionModule;\n var isSelectedElement = selectionModule && selectionModule.selectedDataIndexes.length > 0 ? true : false;\n if (element) {\n if ((!isSelectedElement || isSelectedElement && element.getAttribute('class')\n && element.getAttribute('class').indexOf('_ej2_chart_selection_series_') === -1)) {\n element.setAttribute('opacity', (highlight ? series.opacity / 2 : series.opacity).toString());\n }\n else {\n element.setAttribute('opacity', series.opacity.toString());\n }\n }\n };\n BaseTooltip.prototype.highlightPoints = function () {\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.series.isRectSeries && item.series.category === 'Series') {\n this.highlightPoint(item.series, item.point.index, true);\n }\n }\n };\n BaseTooltip.prototype.createTooltip = function (chart, isFirst, location, clipLocation, point, shapes, offset, bounds, extraPoints, templatePoint, customTemplate) {\n if (extraPoints === void 0) { extraPoints = null; }\n if (templatePoint === void 0) { templatePoint = null; }\n var series = this.currentPoints[0].series;\n var module = chart.tooltipModule || chart.accumulationTooltipModule;\n if (!module) { // For the tooltip enable is false.\n return;\n }\n var isNegative = (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0);\n var inverted = this.chart.requireInvertedAxis && series.isRectSeries;\n var position = null;\n if (this.text.length <= 1) {\n var contentSize = measureText(this.text[0], chart.tooltip.textStyle);\n var headerSize = (!(this.header === '' || this.header === '')) ? measureText(this.header, this.textStyle) :\n new Size(0, 0);\n // marker size + arrowpadding + 2 * padding + markerpadding\n var markerSize = 10 + 12 + (2 * 10) + 5;\n contentSize.width = Math.max(contentSize.width, headerSize.width) + ((shapes.length > 0) ? markerSize : 0);\n var heightPadding = 12 + (2 * 10) + (headerSize.height > 0 ? (2 * 10) : 0);\n contentSize.height = contentSize.height + headerSize.height + heightPadding;\n position = this.getCurrentPosition(isNegative, inverted);\n position = this.getPositionBySize(contentSize, new Rect(0, 0, bounds.width, bounds.height), location, position);\n isNegative = (position === 'Left') || (position === 'Bottom');\n inverted = (position === 'Left') || (position === 'Right');\n }\n // else if (tooltipPosition !== 'None' && this.text.length <= 1) {\n // position = tooltipPosition as TooltipPlacement;\n // isNegative = (position === 'Left') || (position === 'Bottom');\n // inverted = (position === 'Left') || (position === 'Right');\n // }\n if (isFirst) {\n this.svgTooltip = new SVGTooltip({\n opacity: chart.tooltip.opacity,\n header: this.headerText,\n content: this.text,\n fill: chart.tooltip.fill,\n border: chart.tooltip.border,\n enableAnimation: chart.tooltip.enableAnimation,\n location: location,\n shared: chart.tooltip.shared,\n shapes: shapes,\n clipBounds: this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation,\n areaBounds: bounds,\n palette: this.findPalette(),\n template: customTemplate || chart.tooltip.template,\n data: templatePoint,\n theme: chart.theme,\n offset: offset,\n textStyle: chart.tooltip.textStyle,\n isNegative: isNegative,\n inverted: inverted,\n arrowPadding: this.text.length > 1 || this.chart.stockChart ? 0 : 12,\n availableSize: chart.availableSize,\n duration: this.chart.tooltip.duration,\n isCanvas: this.chart.enableCanvas,\n isTextWrap: chart.tooltip.enableTextWrap && chart.getModuleName() === 'chart',\n blazorTemplate: { name: 'Template', parent: this.chart.tooltip },\n controlInstance: this.chart,\n tooltipPlacement: position,\n tooltipRender: function () {\n module.removeHighlight();\n module.highlightPoints();\n module.updatePreviousPoint(extraPoints);\n },\n animationComplete: function (args) {\n if (args.tooltip.fadeOuted) {\n module.fadeOut(module.previousPoints);\n }\n }\n }, '#' + this.element.id + '_tooltip');\n }\n else {\n if (this.svgTooltip) {\n this.svgTooltip.location = location;\n this.svgTooltip.content = this.text;\n this.svgTooltip.header = this.headerText;\n this.svgTooltip.offset = offset;\n this.svgTooltip.palette = this.findPalette();\n this.svgTooltip.shapes = shapes;\n this.svgTooltip.data = templatePoint;\n this.svgTooltip.template = chart.tooltip.template;\n this.svgTooltip.textStyle = chart.tooltip.textStyle;\n this.svgTooltip.isNegative = isNegative;\n this.svgTooltip.inverted = inverted;\n this.svgTooltip.clipBounds = this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation;\n this.svgTooltip.arrowPadding = this.text.length > 1 || this.chart.stockChart ? 0 : 12;\n this.svgTooltip.tooltipPlacement = position;\n this.svgTooltip.dataBind();\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.chart.isReact) {\n this.chart.renderReactTemplates();\n }\n };\n BaseTooltip.prototype.getPositionBySize = function (textSize, bounds, arrowLocation, position) {\n var isTop = this.isTooltipFitPosition('Top', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isBottom = this.isTooltipFitPosition('Bottom', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isRight = this.isTooltipFitPosition('Right', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isLeft = this.isTooltipFitPosition('Left', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var tooltipPos;\n if (isTop || isBottom || isRight || isLeft) {\n if (position === 'Top') {\n tooltipPos = isTop ? 'Top' : (isBottom ? 'Bottom' : (isRight ? 'Right' : 'Left'));\n }\n else if (position === 'Bottom') {\n tooltipPos = isBottom ? 'Bottom' : (isTop ? 'Top' : (isRight ? 'Right' : 'Left'));\n }\n else if (position === 'Right') {\n tooltipPos = isRight ? 'Right' : (isLeft ? 'Left' : (isTop ? 'Top' : 'Bottom'));\n }\n else {\n tooltipPos = isLeft ? 'Left' : (isRight ? 'Right' : (isTop ? 'Top' : 'Bottom'));\n }\n }\n else {\n var size = [(arrowLocation.x - bounds.x), ((bounds.x + bounds.width) - arrowLocation.x),\n (arrowLocation.y - bounds.y), ((bounds.y + bounds.height) - arrowLocation.y)];\n var index = size.indexOf(Math.max.apply(this, size));\n position = (index === 0) ? 'Left' : (index === 1) ? 'Right' : (index === 2) ? 'Top' : 'Bottom';\n return position;\n }\n return tooltipPos;\n };\n BaseTooltip.prototype.isTooltipFitPosition = function (position, bounds, location, size) {\n var start = new ChartLocation(0, 0);\n var end = new ChartLocation(0, 0);\n switch (position) {\n case 'Top':\n start.x = location.x - (size.width / 2);\n start.y = location.y - size.height;\n end.x = location.x + (size.width / 2);\n end.y = location.y;\n break;\n case 'Bottom':\n start.x = location.x - (size.width / 2);\n start.y = location.y;\n end.x = location.x + (size.width / 2);\n end.y = location.y + size.height;\n break;\n case 'Right':\n start.x = location.x;\n start.y = location.y - (size.height / 2);\n end.x = location.x + size.width;\n end.y = location.y + (size.height / 2);\n break;\n case 'Left':\n start.x = location.x - size.width;\n start.y = location.y - (size.height / 2);\n end.x = location.x;\n end.y = location.y + (size.height / 2);\n break;\n }\n return (withInBounds(start.x, start.y, bounds) && withInBounds(end.x, end.y, bounds));\n };\n BaseTooltip.prototype.getCurrentPosition = function (isNegative, inverted) {\n var position;\n if (inverted) {\n position = isNegative ? 'Left' : 'Right';\n }\n else {\n position = isNegative ? 'Bottom' : 'Top';\n }\n return position;\n };\n BaseTooltip.prototype.findPalette = function () {\n var colors = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n colors.push(this.findColor(data, data.series));\n }\n return colors;\n };\n BaseTooltip.prototype.findColor = function (data, series) {\n if (series.isRectSeries && (series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) {\n return data.point.color;\n }\n else {\n return (data.point.color && data.point.color !== '#ffffff' ? data.point.color\n : data.point.interior) ||\n series.marker.fill || series.interior;\n }\n };\n BaseTooltip.prototype.updatePreviousPoint = function (extraPoints) {\n if (extraPoints) {\n this.currentPoints = this.currentPoints.concat(extraPoints);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n };\n BaseTooltip.prototype.fadeOut = function (data) {\n var svgElement = this.chart.enableCanvas ? this.getElement(this.element.id + '_tooltip_group') :\n this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0);\n if (!isTooltip) {\n this.valueX = null;\n this.valueY = null;\n this.currentPoints = [];\n this.removeHighlight();\n this.removeHighlightedMarker(data);\n this.svgTooltip = null;\n this.control.trigger('animationComplete', {});\n }\n };\n /*\n * @hidden\n */\n BaseTooltip.prototype.removeHighlightedMarker = function (data) {\n if (this.chart.markerRender) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n }\n this.chart.markerRender.removeHighlightedMarker();\n }\n this.previousPoints = [];\n };\n // public triggerEvent(point: PointData | AccPointData, isFirst: boolean, textCollection: string, firstText: boolean = true): boolean {\n // let argsData: ITooltipRenderEventArgs = {\n // cancel: false, name: tooltipRender, text: textCollection,\n // point: point.point, series: point.series, textStyle: this.textStyle\n // };\n // this.chart.trigger(tooltipRender, argsData);\n // if (!argsData.cancel) {\n // if (point.series.type === 'BoxAndWhisker') {\n // this.removeText();\n // isFirst = true;\n // }\n // this.formattedText = this.formattedText.concat(argsData.text);\n // this.text = this.formattedText;\n // }\n // return !argsData.cancel;\n // }\n BaseTooltip.prototype.removeText = function () {\n this.textElements = [];\n var element = this.getElement(this.element.id + '_tooltip_group');\n if (element && element.childNodes.length > 0) {\n while (element.lastChild && element.childNodes.length !== 1) {\n element.removeChild(element.lastChild);\n }\n }\n };\n BaseTooltip.prototype.stopAnimation = function () {\n stopTimer(this.toolTipInterval);\n };\n /**\n * Removes the tooltip on mouse leave.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.removeTooltip = function (duration) {\n var _this = this;\n var tooltipElement = this.getElement(this.element.id + '_tooltip');\n var tooltipTemplate = tooltipElement ? this.getElement(tooltipElement.id + 'parent_template') : null;\n var isTemplateRendered = tooltipTemplate && tooltipTemplate.innerHTML !== '
';\n this.stopAnimation();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.chart.isReact && isTemplateRendered) {\n this.chart.clearTemplate([tooltipTemplate.id], [0]);\n }\n if (tooltipElement && this.previousPoints.length > 0) {\n this.toolTipInterval = +setTimeout(function () {\n if (_this.svgTooltip) {\n _this.svgTooltip.fadeOut();\n }\n }, duration);\n }\n };\n return BaseTooltip;\n}(ChartData));\nexport { BaseTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, Browser, remove } from '@syncfusion/ej2-base';\nimport { PointData, ChartLocation } from '../../common/utils/helper';\nimport { getElement } from '@syncfusion/ej2-svg-base';\nimport { valueToCoefficient, removeElement, valueToPolarCoefficient, withInBounds } from '../../common/utils/helper';\nimport { BaseTooltip } from '../../common/user-interaction/tooltip';\nimport { tooltipRender, sharedTooltipRender } from '../../common/model/constants';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `Tooltip` module is used to render the tooltip for chart series.\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function Tooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * @hidden\n */\n Tooltip.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.chart.on(cancelEvent, this.mouseLeaveHandler, this);\n this.chart.on('tapHold', this.longPress, this);\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n Tooltip.prototype.mouseUpHandler = function () {\n var chart = this.control;\n if (chart.isTouch && !this.isSelected(chart) &&\n ((withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect) && chart.tooltip.shared)\n || !chart.tooltip.shared)) {\n if (!chart.crosshair.enable) {\n this.tooltip();\n this.removeTooltip(2000);\n }\n else if (chart.startMove) {\n this.removeTooltip(2000);\n }\n }\n };\n Tooltip.prototype.mouseLeaveHandler = function () {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n };\n Tooltip.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n // Tooltip for chart series.\n if (!chart.disableTrackTooltip && !this.isSelected(chart)) {\n if (!chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n if (withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n if (chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n }\n else {\n if (chart.tooltip.shared) {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n }\n }\n }\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Tooltip.prototype.longPress = function () {\n var chart = this.chart;\n if (chart.crosshair.enable && withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n this.tooltip();\n }\n return false;\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n */\n Tooltip.prototype.tooltip = function () {\n if ((this.chart.stockChart && this.chart.stockChart.onPanning)) {\n this.removeTooltip(1000);\n return null;\n }\n var elementId = this.chart.enableCanvas ? this.element.id + '_tooltip_group' : this.element.id + '_tooltip_svg';\n var svgElement = this.getElement(elementId);\n // To prevent the disappearance of the tooltip, while resize the stock chart.\n var isStockSvg = this.chart.stockChart && svgElement && (svgElement.firstChild.childNodes.length > 1);\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0 && !isStockSvg);\n var tooltipDiv = this.getTooltipElement(isTooltip);\n if (this.chart.enableCanvas && tooltipDiv) {\n document.getElementById(this.chart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n tooltipDiv.appendChild(document.getElementById(this.chart.element.id + '_tooltip_svg'));\n }\n if (!this.chart.tooltip.shared) {\n this.renderSeriesTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n else {\n this.renderGroupedTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n };\n Tooltip.prototype.findHeader = function (data) {\n if (this.header === '') {\n return '';\n }\n this.header = this.parseTemplate(data.point, data.series, this.header, data.series.xAxis, data.series.yAxis);\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n return this.header;\n }\n return '';\n };\n Tooltip.prototype.findShapes = function () {\n if (!this.chart.tooltip.enableMarker) {\n return [];\n }\n var marker = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n marker.push(data.point.marker.shape || data.series.marker.shape);\n }\n return marker;\n };\n Tooltip.prototype.renderSeriesTooltip = function (chart, isFirst, tooltipDiv) {\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n this.currentPoints = [];\n if (this.findData(data, this.previousPoints[0])) {\n if (!(chart.dataEditingModule && chart.dataEditingModule.isPointDragging) && (this.previousPoints[0] &&\n data.point.index === this.previousPoints[0].point.index && data.series.index === this.previousPoints[0].series.index)) {\n return null;\n }\n if (this.pushData(data, isFirst, tooltipDiv, true)) {\n this.triggerTooltipRender(data, isFirst, this.getTooltipText(data), this.findHeader(data));\n }\n }\n else {\n if (!data.point && this.isRemove) {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n this.isRemove = false;\n }\n else {\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible && !(series.category === 'TrendLine')) {\n data = this.getClosestX(chart, series, commonXvalues) || data;\n }\n }\n }\n }\n if (data && data.point) {\n this.findMouseValue(data, chart);\n }\n };\n Tooltip.prototype.triggerTooltipRender = function (point, isFirst, textCollection, headerText) {\n var _this = this;\n var template;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText, template: template,\n series: this.chart.isBlazor ? {} : point.series, textStyle: this.textStyle, point: point.point,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index, seriesName: point.series.name,\n pointIndex: point.point.index, pointText: point.point.text }\n };\n var chartTooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n _this.headerText = argsData.headerText;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n _this.createTooltip(_this.chart, isFirst, _this.getSymbolLocation(point), point.series.clipRect, point.point, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), _this.chart.chartAxisLayoutPanel.seriesClipRect, null, _this.getTemplateText(point), _this.chart.tooltip.template ? argsData.template : '');\n }\n else {\n _this.removeHighlight();\n remove(_this.getElement(_this.element.id + '_tooltip'));\n }\n _this.isRemove = true;\n };\n chartTooltipSuccess.bind(this, point);\n this.chart.trigger(tooltipRender, argsData, chartTooltipSuccess);\n };\n Tooltip.prototype.findMarkerHeight = function (pointData) {\n if (!this.chart.tooltip.enableMarker) {\n return 0;\n }\n var markerHeight = 0;\n var series = pointData.series;\n markerHeight = ((series.marker.visible || (this.chart.tooltip.shared &&\n (!series.isRectSeries || series.marker.visible)) || series.type === 'Scatter' || series.drawType === 'Scatter')\n && !(series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) ?\n ((series.marker.height + 2) / 2 + (2 * series.marker.border.width)) : 0;\n return markerHeight;\n };\n Tooltip.prototype.findData = function (data, previous) {\n return data.point && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex) || (previous.point === data.point));\n };\n Tooltip.prototype.getSymbolLocation = function (data) {\n var location;\n if (data.series.type !== 'BoxAndWhisker') {\n if (!data.point.symbolLocations[0]) {\n return null;\n }\n location = new ChartLocation(data.point.symbolLocations[0].x, data.point.symbolLocations[0].y);\n }\n switch (data.series.type) {\n case 'BoxAndWhisker':\n return this.getBoxLocation(data);\n case 'Waterfall':\n return this.getWaterfallRegion(data, location);\n case 'RangeArea':\n return this.getRangeArea(data, location);\n default:\n return location;\n }\n };\n Tooltip.prototype.getRangeArea = function (data, location) {\n if (data.point.regions[0]) {\n if (!this.inverted) {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2;\n }\n else {\n location.x = data.point.regions[0].x + data.point.regions[0].width / 2;\n }\n }\n return location;\n };\n Tooltip.prototype.getWaterfallRegion = function (data, location) {\n if (!this.inverted) {\n location.y = (data.point.y < 0) ?\n location.y - data.point.regions[0].height : location.y;\n }\n else {\n location.x = (data.point.y < 0) ?\n location.x + data.point.regions[0].width : location.x;\n }\n return location;\n };\n Tooltip.prototype.getTooltipText = function (pointData) {\n var series = pointData.series;\n return this.parseTemplate(pointData.point, series, this.getFormat(this.chart, series), series.xAxis, series.yAxis);\n };\n Tooltip.prototype.getTemplateText = function (data) {\n if (this.chart.tooltip.template) {\n var point = extend({}, data.point);\n point.x = this.formatPointValue(data.point, data.series.xAxis, 'x', true, false);\n if ((data.series.seriesType === 'XY')) {\n point.y = this.formatPointValue(data.point, data.series.yAxis, 'y', false, true);\n }\n else {\n point.low = this.formatPointValue(data.point, data.series.yAxis, 'low', false, true);\n point.high = this.formatPointValue(data.point, data.series.yAxis, 'high', false, true);\n }\n return point;\n }\n else {\n return data.point;\n }\n };\n Tooltip.prototype.findMouseValue = function (data, chart) {\n if (!chart.requireInvertedAxis) {\n if (chart.chartAreaType === 'PolarRadar') {\n this.valueX = valueToPolarCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n else {\n this.valueX = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? this.valueX :\n valueToCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n this.valueY = chart.mouseY;\n }\n else {\n this.valueY = (1 - valueToCoefficient(data.point.xValue, data.series.xAxis)) * data.series.xAxis.rect.height\n + data.series.xAxis.rect.y;\n this.valueX = chart.mouseX;\n }\n };\n Tooltip.prototype.renderGroupedTooltip = function (chart, isFirst, tooltipDiv) {\n var data;\n var lastData;\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n this.stopAnimation();\n this.removeHighlight();\n this.currentPoints = [];\n var extraPoints = [];\n //let headerContent : string = '';\n if (isFirst) {\n if (!chart.stockChart) {\n if (tooltipDiv) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n else {\n if (tooltipDiv && !getElement(tooltipDiv.id)) {\n document.getElementById(chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n }\n this.removeText();\n var argument = {\n text: [], cancel: false, name: sharedTooltipRender, data: [], headerText: '', textStyle: this.textStyle\n };\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.enableTooltip || !series.visible) {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && series.visible) {\n data = this.getClosestX(chart, series, commonXvalues);\n }\n else if (chart.chartAreaType === 'PolarRadar' && series.visible && pointData.point !== null) {\n data = new PointData(series.points[pointData.point.index], series);\n }\n // if (data && this.header !== '' && this.currentPoints.length === 0) {\n // headerContent = this.findHeader(data);\n // }\n if (data) {\n if (!chart.isBlazor) {\n this.triggerSharedTooltip(data, isFirst, this.getTooltipText(data), this.findHeader(data), extraPoints);\n }\n else {\n argument.data.push({ pointX: data.point.x, pointY: data.point.y, seriesIndex: data.series.index,\n seriesName: data.series.name, pointIndex: data.point.index, pointText: data.point.text });\n argument.headerText = this.findHeader(data);\n this.currentPoints.push(data);\n argument.text.push(this.getTooltipText(data));\n lastData = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? lastData : data;\n }\n }\n // if (data && this.triggerEvent(data, isFirst, this.getTooltipText(data)), this.findHeader(data)) {\n // this.findMouseValue(data, chart);\n // (this.currentPoints).push(data);\n // data = null;\n // } else if (data) {\n // extraPoints.push(data);\n // }\n }\n if (chart.isBlazor && data) { // To avoid console error when we have empty chart with shared tooltip.\n this.triggerBlazorSharedTooltip(argument, lastData, extraPoints, chart, isFirst);\n }\n if (this.currentPoints.length > 0) {\n this.createTooltip(chart, isFirst, this.findSharedLocation(), this.currentPoints.length === 1 ? this.currentPoints[0].series.clipRect : null, null, this.findShapes(), this.findMarkerHeight(this.currentPoints[0]), chart.chartAxisLayoutPanel.seriesClipRect, extraPoints, this.chart.tooltip.template ? this.getTemplateText(data) : null, this.chart.tooltip.template ? argument.template : '');\n }\n else if (this.getElement(this.element.id + '_tooltip_path')) {\n this.getElement(this.element.id + '_tooltip_path').setAttribute('d', '');\n }\n };\n Tooltip.prototype.triggerBlazorSharedTooltip = function (argument, point, extraPoints, chart, isFirst) {\n var _this = this;\n var argsData = {\n cancel: false, name: sharedTooltipRender, text: argument.text, headerText: argument.headerText,\n textStyle: argument.textStyle,\n data: argument.data\n };\n var blazorSharedTooltip = function (argsData) {\n if (!argsData.cancel) {\n _this.text = argsData.text;\n _this.headerText = argsData.headerText;\n _this.findMouseValue(point, _this.chart);\n point = null;\n _this.createTooltip(chart, isFirst, _this.findSharedLocation(), null, null, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), chart.chartAxisLayoutPanel.seriesClipRect, extraPoints);\n }\n else {\n extraPoints.push(point);\n }\n };\n blazorSharedTooltip.bind(this, point, extraPoints);\n this.chart.trigger(sharedTooltipRender, argsData, blazorSharedTooltip);\n };\n Tooltip.prototype.triggerSharedTooltip = function (point, isFirst, textCollection, headerText, extraPoints) {\n var _this = this;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText,\n point: point.point, series: this.chart.isBlazor ? {} : point.series, textStyle: this.textStyle,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index, seriesName: point.series.name,\n pointIndex: point.point.index, pointText: point.point.text }\n };\n var sharedTooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n _this.headerText = argsData.headerText;\n _this.findMouseValue(point, _this.chart);\n _this.currentPoints.push(point);\n point = null;\n }\n else {\n extraPoints.push(point);\n }\n };\n sharedTooltipSuccess.bind(this, point, extraPoints);\n this.chart.trigger(tooltipRender, argsData, sharedTooltipSuccess);\n if (argsData.template) {\n this.chart.tooltip.template = argsData.template;\n }\n };\n Tooltip.prototype.findSharedLocation = function () {\n var stockChart = this.chart.stockChart;\n if (stockChart) {\n if (this.text.length === 1) {\n this.text.push('');\n }\n var toolbarHeight = stockChart.enablePeriodSelector ? stockChart.toolbarHeight : 0;\n var element = document.getElementById(stockChart.element.id + '_ChartTitle');\n var titleHeight = stockChart.title !== '' ? element.getBoundingClientRect().height + 10 : 0;\n return new ChartLocation(this.chart.chartAxisLayoutPanel.seriesClipRect.x + 5, this.chart.chartAxisLayoutPanel.seriesClipRect.y + toolbarHeight + 5 + titleHeight);\n }\n else {\n if (this.currentPoints.length > 1) {\n return new ChartLocation(this.valueX, this.valueY);\n }\n else {\n return this.getSymbolLocation(this.currentPoints[0]);\n }\n }\n };\n Tooltip.prototype.getBoxLocation = function (data) {\n var location = this.lierIndex > 3 ? data.point.symbolLocations[this.lierIndex - 4] :\n {\n x: data.point.regions[0].x + (data.point.regions[0].width / 2),\n y: data.point.regions[0].y + (data.point.regions[0].height / 2)\n };\n return location;\n };\n Tooltip.prototype.parseTemplate = function (point, series, format, xAxis, yAxis) {\n var val;\n var textValue;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n val = new RegExp('${point' + '.' + dataValue + '}', 'gm');\n format = format.replace(val.source, this.formatPointValue(point, val.source === '${point.x}' ? xAxis : yAxis, dataValue, val.source === '${point.x}', (val.source === '${point.high}' ||\n val.source === '${point.open}' ||\n val.source === '${point.close}' ||\n val.source === '${point.low}' ||\n val.source === '${point.y}' ||\n val.source === '${point.minimum}' ||\n val.source === '${point.maximum}' ||\n val.source === '${point.outliers}' ||\n val.source === '${point.upperQuartile}' ||\n val.source === '${point.lowerQuartile}' ||\n val.source === '${point.median}')));\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n val = new RegExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(val.source, textValue);\n }\n return format;\n };\n Tooltip.prototype.formatPointValue = function (point, axis, dataValue, isXPoint, isYPoint) {\n var textValue;\n var customLabelFormat;\n var value;\n if (axis.valueType !== 'Category' && isXPoint) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', axis.format(point[dataValue])) :\n axis.format(point[dataValue]);\n }\n else if (isYPoint && !isNullOrUndefined(point[dataValue])) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n value = dataValue === 'outliers' ? axis.format(point[dataValue][this.lierIndex - 4]) :\n axis.format(point[dataValue]);\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', value) : value;\n }\n else {\n textValue = point[dataValue];\n }\n return textValue;\n };\n Tooltip.prototype.getFormat = function (chart, series) {\n if (series.tooltipFormat) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return series.tooltipFormat;\n }\n if (!series.tooltipFormat && chart.tooltip.format) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return chart.tooltip.format;\n }\n var textX = (series.type === 'Histogram') ? '${point.minimum}' + '-' + '${point.maximum}' : '${point.x}';\n var format = !chart.tooltip.shared ? textX : '${series.name}';\n switch (series.seriesType) {\n case 'XY':\n if (series.category === 'Indicator') {\n this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return format + ' : ' + ((series.type === 'Bubble') ? '${point.y} Size : ${point.size}' :\n '${point.y}');\n case 'HighLow':\n return format + ('
High : ${point.high}
Low : ${point.low}');\n case 'HighLowOpenClose':\n return format + ('
High : ${point.high}
Low : ${point.low}
' +\n 'Open : ${point.open}
Close : ${point.close}');\n case 'BoxPlot': {\n return format + '
' + (this.lierIndex > 3 ? 'Outliers : ${point.outliers}' :\n 'Maximum : ${point.maximum}
Q3 : ${point.upperQuartile}
' +\n 'Median : ${point.median}
Q1 : ${point.lowerQuartile}
Minimum : ${point.minimum}');\n }\n default: return '';\n }\n };\n Tooltip.prototype.getIndicatorTooltipFormat = function (series, chart, format) {\n var toolTip;\n if (series.seriesType === 'XY') {\n toolTip = series.name + ' : ${point.y}';\n }\n else {\n toolTip = format;\n }\n return toolTip;\n };\n /*\n * @hidden\n */\n Tooltip.prototype.removeHighlightedMarker = function (data) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n }\n if (this.chart.markerRender) {\n this.chart.markerRender.removeHighlightedMarker();\n }\n this.previousPoints = [];\n };\n /**\n * Get module name.\n */\n Tooltip.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Tooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Tooltip;\n}(BaseTooltip));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Double } from '../axis/double-axis';\n/**\n * Common axis classes\n *\n * @private\n */\nvar NiceInterval = /** @class */ (function (_super) {\n __extends(NiceInterval, _super);\n function NiceInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Method to calculate numeric datetime interval\n */\n NiceInterval.prototype.calculateDateTimeNiceInterval = function (axis, size, start, end, isChart) {\n if (isChart === void 0) { isChart = true; }\n var oneDay = 24 * 60 * 60 * 1000;\n var startDate = new Date(start);\n var endDate = new Date(end);\n //var axisInterval ;\n var totalDays = (Math.abs((startDate.getTime() - endDate.getTime()) / (oneDay)));\n var interval;\n axis.actualIntervalType = axis.intervalType;\n var type = axis.intervalType;\n switch (type) {\n case 'Years':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n break;\n case 'Quarter':\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n break;\n case 'Months':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n break;\n case 'Weeks':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n break;\n case 'Days':\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n break;\n case 'Hours':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n break;\n case 'Minutes':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n break;\n case 'Seconds':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n break;\n case 'Auto':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Years';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Quarter';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Months';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Weeks';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Days';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Hours';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Minutes';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n axis.actualIntervalType = 'Seconds';\n return interval;\n }\n return interval;\n };\n /**\n * To get the skeleton for the DateTime axis.\n *\n * @returns {string} skeleton format\n * @private\n */\n NiceInterval.prototype.getSkeleton = function (axis, currentValue, previousValue, isBlazor) {\n var skeleton;\n var intervalType = axis.actualIntervalType;\n if (axis.skeleton) {\n return axis.skeleton;\n }\n if (intervalType === 'Years') {\n if (isBlazor) {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'y' : 'y') : 'y';\n }\n else {\n skeleton = axis.isChart ? ((axis.valueType === 'DateTime' && axis.isIntervalInDecimal) ? 'y' : 'yMMM') : 'y';\n }\n }\n else if (intervalType === 'Quarter') {\n skeleton = isBlazor ? 'y' : 'yMMM';\n }\n else if (intervalType === 'Months') {\n if (isBlazor) {\n skeleton = axis.isChart ? 'm' : 'm';\n }\n else {\n skeleton = axis.isChart ? 'MMMd' : 'MMM';\n }\n }\n else if (intervalType === 'Weeks') {\n skeleton = isBlazor ? 'm' : 'MEd';\n }\n else if (intervalType === 'Days') {\n if (isBlazor) {\n skeleton = 'd';\n }\n else {\n skeleton = axis.isChart ? this.getDayFormat(axis, currentValue, previousValue) : 'MMMd';\n }\n }\n else if (intervalType === 'Hours') {\n if (isBlazor) {\n skeleton = 't';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'Hm' : 'EHm') : 'h';\n }\n }\n else if (intervalType === 'Minutes') {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hm';\n }\n }\n else {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hms';\n }\n }\n return skeleton;\n };\n /**\n * Get intervalType month format\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n */\n NiceInterval.prototype.getMonthFormat = function (axis, currentValue, previousValue) {\n return ((new Date(currentValue).getFullYear() === new Date(previousValue).getFullYear()) ?\n (axis.isIntervalInDecimal ? 'MMM' : 'MMM d') : 'y MMM');\n };\n /**\n * Get intervalType day label format for the axis\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n */\n NiceInterval.prototype.getDayFormat = function (axis, currentValue, previousValue) {\n return (axis.valueType === 'DateTime' ?\n ((new Date(currentValue).getMonth() !== new Date(previousValue).getMonth()) ? 'MMMd' :\n (axis.isIntervalInDecimal ? 'd' : 'Ehm')) : 'yMd');\n };\n /**\n * Find label format for axis\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n * @private\n */\n NiceInterval.prototype.findCustomFormats = function (axis, currentValue, previousValue) {\n var labelFormat = axis.labelFormat ? axis.labelFormat : '';\n if (axis.isChart && !axis.skeleton && axis.actualIntervalType === 'Months' && !labelFormat) {\n labelFormat = axis.valueType === 'DateTime' ? this.getMonthFormat(axis, currentValue, previousValue) : 'yMMM';\n }\n return labelFormat;\n };\n return NiceInterval;\n}(Double));\nexport { NiceInterval };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { getActualDesiredIntervalsCount, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn } from '../../common/utils/helper';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { NiceInterval } from '../axis/axis-helper';\n/**\n * `Category` module is used to render category axis.\n */\nvar Category = /** @class */ (function (_super) {\n __extends(Category, _super);\n /**\n * Constructor for the category module.\n *\n * @private\n */\n function Category(chart) {\n return _super.call(this, chart) || this;\n }\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n */\n Category.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis);\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Category.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n // axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n if (!axis.interval) {\n axis.actualRange.interval = Math.max(1, Math.floor(axis.doubleRange.delta / getActualDesiredIntervalsCount(size, axis)));\n }\n else {\n axis.actualRange.interval = Math.ceil(axis.interval);\n }\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n axis.actualRange.delta = axis.doubleRange.delta;\n };\n /**\n * Padding for the axis.\n *\n * @private\n */\n Category.prototype.applyRangePadding = function (axis, size) {\n var ticks = (axis.labelPlacement === 'BetweenTicks' && this.chart.chartAreaType !== 'PolarRadar') ? 0.5 : 0;\n if (ticks > 0) {\n axis.actualRange.min -= ticks;\n axis.actualRange.max += ticks;\n }\n else {\n axis.actualRange.max += axis.actualRange.max ? 0 : 0.5;\n }\n axis.doubleRange = new DoubleRange(axis.actualRange.min, axis.actualRange.max);\n axis.actualRange.delta = axis.doubleRange.delta;\n this.calculateVisibleRange(size, axis);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Category.prototype.calculateVisibleLabels = function (axis) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n var tempInterval = Math.ceil(axis.visibleRange.min);\n var labelStyle;\n if (axis.zoomFactor < 1 || axis.zoomPosition > 0) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var position;\n axis.startLabel = axis.labels[Math.round(axis.visibleRange.min)];\n axis.endLabel = axis.labels[Math.floor(axis.visibleRange.max)];\n for (; tempInterval <= axis.visibleRange.max; tempInterval += axis.visibleRange.interval) {\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange) && axis.labels.length > 0) {\n position = Math.round(tempInterval);\n triggerLabelRender(this.chart, position, axis.labels[position] ? axis.labels[position].toString() : position.toString(), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Get module name\n */\n Category.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Category';\n };\n /**\n * To destroy the category axis.\n *\n * @returns {void}\n * @private\n */\n Category.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Category;\n}(NiceInterval));\nexport { Category };\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\n/**\n * Selection src file\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Selection Module handles the selection for chart.\n *\n * @private\n */\nvar BaseSelection = /** @class */ (function () {\n function BaseSelection(control) {\n this.control = control;\n }\n /**\n * To create selection styles for series\n *\n * @returns {void}\n */\n BaseSelection.prototype.seriesStyles = function () {\n var seriesclass;\n var style = document.getElementById(this.styleId);\n var pattern = '{}';\n var fill;\n var opacity;\n var selectionPattern = this.control.selectionPattern;\n var highlightPattern = this.control.highlightPattern;\n if (isNullOrUndefined(style) || selectionPattern !== 'None' || highlightPattern !== 'None') {\n style = document.createElement('style');\n style.setAttribute('id', this.styleId);\n for (var _i = 0, _a = this.control.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n var visibleSeries = this.control.visibleSeries[series.index] ||\n this.control.visibleSeries[series.index];\n if ((!isNullOrUndefined(selectionPattern) || !isNullOrUndefined(highlightPattern)) &&\n (selectionPattern !== 'None' || highlightPattern !== 'None')) {\n var patternName = this.styleId.indexOf('highlight') > 0 ? highlightPattern : selectionPattern;\n if (visibleSeries.type === 'Pie' || visibleSeries.type === 'Funnel' ||\n visibleSeries.type === 'Pyramid') {\n for (var i = 0; i < visibleSeries.points.length; i++) {\n opacity = visibleSeries.opacity;\n fill = this.pattern(this.control, (visibleSeries.points[i]).color, series.index, patternName, opacity);\n pattern = '{ fill:' + fill + '}';\n }\n }\n else if (visibleSeries.type) {\n opacity = visibleSeries.opacity;\n fill = this.pattern(this.control, visibleSeries.interior, series.index, patternName, opacity);\n pattern = '{ fill:' + fill + '}';\n }\n }\n seriesclass = series.selectionStyle || this.styleId + '_series_' + series.index + ',' + '.' +\n this.styleId + '_series_' + series.index + '> *';\n pattern = (pattern.indexOf('None') > -1) ? '{}' : pattern;\n style.innerHTML += series.selectionStyle ? '' : '.' + seriesclass + pattern;\n }\n style.innerHTML += '.' + this.unselected + ' { opacity:' + (0.3) + ';} ';\n document.body.appendChild(style);\n }\n };\n /**\n * To create the pattern for series/points\n *\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n */\n BaseSelection.prototype.pattern = function (chart, color, index, patternName, opacity) {\n var backgroundColor = '#ffffff';\n var svg = chart.svgObject;\n var pathOptions = [];\n var patternGroup = {\n 'id': chart.element.id + '_' + patternName + '_Selection' + '_' + index, 'patternUnits': 'userSpaceOnUse'\n };\n var heightStr = 'height';\n var widthStr = 'width';\n var width = 10;\n var height = 12;\n var patternNum = 6;\n var turquoiseNum = 17;\n var turstrokewidth = 1;\n var starNum = 21;\n var circleNum = 9;\n var tileNum = 18;\n var strokeWidth = 1;\n var bubNum = 20;\n switch (patternName) {\n case 'Dots':\n patternGroup[heightStr] = patternGroup[widthStr] = patternNum;\n patternGroup[widthStr] = patternNum;\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': 7, 'height': 7, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity, 'name': 'rect'\n };\n pathOptions[1] = {\n 'cx': 3,\n 'cy': 3,\n 'r': 2,\n 'stroke-width': 1,\n 'fill': color,\n 'name': 'circle'\n };\n break;\n case 'Pacman':\n patternGroup[heightStr] = '18.384';\n patternGroup[widthStr] = '17.917';\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': 17.917, 'height': 18.384,\n 'transform': 'translate(0,0)', 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M9.081,9.194l5.806-3.08c-0.812-1.496-2.403-3.052-4.291-3.052H8.835C6.138,3.063,3,6.151,3,8.723v1.679 c0,2.572,3.138,5.661,5.835,5.661h1.761c2.085,0,3.835-1.76,4.535-3.514L9.081,9.194z', 'stroke-width': 1, 'stroke': color, 'fill': color\n };\n break;\n case 'Chessboard':\n patternGroup[heightStr] = patternGroup[widthStr] = width;\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': width, 'height': width, 'fill': backgroundColor, 'opacity': opacity,\n 'name': 'rect'\n };\n pathOptions[1] = { 'x': 0, 'y': 0, 'width': 5, 'height': 5, 'fill': color, 'opacity': opacity, 'name': 'rect' };\n pathOptions[2] = { 'x': 5, 'y': 5, 'width': 5, 'height': 5, 'fill': color, 'opacity': opacity, 'name': 'rect' };\n break;\n case 'Crosshatch':\n patternGroup[heightStr] = patternGroup[widthStr] = '8';\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': 8, 'height': 8, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity, 'name': 'rect'\n };\n pathOptions[1] = {\n 'd': 'M0 0L8 8ZM8 0L0 8Z',\n 'stroke-width': 1,\n 'stroke': color,\n 'name': 'path'\n };\n break;\n case 'DiagonalForward':\n patternGroup[heightStr] = patternGroup[widthStr] = patternNum;\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': patternNum, 'height': patternNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity, 'name': 'rect'\n };\n pathOptions[1] = {\n 'd': 'M 3 -3 L 9 3 M 6 6 L 0 0 M 3 9 L -3 3',\n 'stroke-width': 2,\n 'stroke': color,\n 'name': 'path'\n };\n break;\n case 'DiagonalBackward':\n patternGroup[heightStr] = patternGroup[widthStr] = patternNum;\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': patternNum, 'height': patternNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity, 'name': 'rect'\n };\n pathOptions[1] = {\n 'd': 'M 3 -3 L -3 3 M 0 6 L 6 0 M 9 3 L 3 9',\n 'stroke-width': 2,\n 'stroke': color,\n 'name': 'path'\n };\n break;\n case 'Grid':\n patternGroup[heightStr] = patternGroup[widthStr] = patternNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': patternNum, 'height': patternNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path',\n 'd': 'M1 3.5L11 3.5 M0 3.5L11 3.5 M0 7.5L11 7.5 M0 11.5L11 11.5 M5.5 0L5.5 12 M11.5 0L11.5 12Z',\n 'stroke-width': 1,\n 'stroke': color\n };\n break;\n case 'Turquoise':\n patternGroup[heightStr] = patternGroup[widthStr] = turquoiseNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': turquoiseNum, 'height': turquoiseNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M0.5739999999999998,2.643a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[2] = {\n 'name': 'path', 'd': 'M11.805,2.643a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[3] = {\n 'name': 'path', 'd': 'M6.19,2.643a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[4] = {\n 'name': 'path', 'd': 'M11.805,8.217a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[5] = {\n 'name': 'path', 'd': 'M6.19,8.217a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[6] = {\n 'name': 'path', 'd': 'M11.805,13.899a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[7] = {\n 'name': 'path', 'd': 'M6.19,13.899a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n break;\n case 'Star':\n patternGroup[heightStr] = patternGroup[widthStr] = starNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': starNum, 'height': starNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path',\n 'd': 'M15.913,18.59L10.762 12.842 5.613 18.75 8.291 11.422 0.325 9.91 8.154 8.33 5.337 0.91 10.488 6.658 15.637 0.75 12.959 8.078 20.925 9.59 13.096 11.17 z',\n 'stroke-width': 1,\n 'stroke': color,\n 'fill': color\n };\n break;\n case 'Triangle':\n patternGroup[heightStr] = patternGroup[widthStr] = width;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': width, 'height': width, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path',\n 'd': 'M4.987,0L7.48 4.847 9.974 9.694 4.987 9.694 0 9.694 2.493 4.847 z',\n 'stroke-width': 1,\n 'stroke': color,\n 'fill': color\n };\n break;\n case 'Circle':\n patternGroup[heightStr] = patternGroup[widthStr] = circleNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': circleNum, 'height': circleNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'circle',\n 'cx': 5.125,\n 'cy': 3.875,\n 'r': 3.625,\n 'stroke-width': 1,\n 'fill': color\n };\n break;\n case 'Tile':\n patternGroup[heightStr] = patternGroup[widthStr] = tileNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': tileNum, 'height': tileNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = { 'name': 'path', 'd': 'M0,9L0 0 9 0 z', 'stroke-width': strokeWidth, 'stroke': color, 'fill': color };\n pathOptions[2] = { 'name': 'path', 'd': 'M9,9L9 0 18 0 z', 'stroke-width': strokeWidth, 'stroke': color, 'fill': color };\n pathOptions[3] = { 'name': 'path', 'd': 'M0,18L0 9 9 9 z', 'stroke-width': strokeWidth, 'stroke': color, 'fill': color };\n pathOptions[4] = { 'name': 'path', 'd': 'M9,18L9 9 18 9 z', 'stroke-width': strokeWidth, 'stroke': color, 'fill': color };\n break;\n case 'HorizontalDash':\n patternGroup[heightStr] = patternGroup[widthStr] = height;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': height, 'height': height, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M0,1.5 L10 1.5 M0,5.5 L10 5.5 M0,9.5 L10 9.5 z', 'stroke-width': 1,\n 'stroke': color, 'fill': color\n };\n break;\n case 'VerticalDash':\n patternGroup[heightStr] = patternGroup[widthStr] = height;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': height, 'height': height, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M1.5,0 L1.5 10 M5.5,0 L5.5 10 M9.5,0 L9.5 10 z', 'stroke-width': 1,\n 'stroke': color, 'fill': color\n };\n break;\n case 'Rectangle':\n patternGroup[heightStr] = patternGroup[widthStr] = height;\n pathOptions[0] = { 'name': 'rect', 'width': height, 'height': height, 'fill': backgroundColor, 'opacity': opacity };\n pathOptions[1] = { 'name': 'rect', 'x': 1, 'y': 2, 'width': 4, 'height': 9, 'fill': color, 'opacity': opacity };\n pathOptions[2] = { 'name': 'rect', 'x': 7, 'y': 2, 'width': 4, 'height': 9, 'fill': color, 'opacity': opacity };\n break;\n case 'Box':\n patternGroup[heightStr] = patternGroup[widthStr] = width;\n pathOptions[0] = { 'name': 'rect', 'width': 13, 'height': 13, 'fill': backgroundColor, 'opacity': opacity };\n pathOptions[1] = {\n 'name': 'rect', 'x': 1.5, 'y': 1.5, 'width': width, 'height': 9, 'fill': color,\n 'opacity': opacity\n };\n break;\n case 'HorizontalStripe':\n patternGroup[heightStr] = height;\n patternGroup[widthStr] = width;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': width, 'height': height,\n 'transform': 'translate(0,0)', 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M0,0.5 L10 0.5 M0,4.5 L10 4.5 M0,8.5 L10 8.5 z', 'stroke-width': 1,\n 'stroke': color, 'fill': color\n };\n break;\n case 'VerticalStripe':\n patternGroup[heightStr] = width;\n patternGroup[widthStr] = height;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': height, 'height': width, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M0.5,0 L0.5 10 M4.5,0 L4.5 10 M8.5,0 L8.5 10 z', 'stroke-width': 1,\n 'stroke': color, 'fill': color\n };\n break;\n case 'Bubble':\n patternGroup[heightStr] = patternGroup[widthStr] = bubNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': bubNum, 'height': bubNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = { 'name': 'circle', 'cx': 5.217, 'cy': 11.325, 'r': 3.429, 'stroke-width': 1, 'fill': '#D0A6D1' };\n pathOptions[2] = { 'name': 'circle', 'cx': 13.328, 'cy': 6.24, 'r': 4.884, 'stroke-width': 1, 'fill': color };\n pathOptions[3] = {\n 'name': 'circle', 'cx': 13.277, 'cy': 14.66, 'r': 3.018, 'stroke-width': 1,\n 'fill': '#D0A6D1'\n };\n break;\n }\n var svgRenderer = (chart.svgRenderer || chart.renderer);\n var pattern = svgRenderer.createPattern(patternGroup, 'pattern');\n this.loadPattern(chart, pathOptions, pattern, svgRenderer);\n svg.appendChild(pattern);\n return 'url(#' + chart.element.id + '_' + patternName + '_' + 'Selection' + '_' + index + ')';\n };\n /**\n * To load the pattern into svg\n *\n * @param chart\n * @param options\n * @param pattern\n * @param svgRenderer\n * @param chart\n * @param options\n * @param pattern\n * @param svgRenderer\n * @param chart\n * @param options\n * @param pattern\n * @param svgRenderer\n * @param chart\n * @param options\n * @param pattern\n * @param svgRenderer\n */\n BaseSelection.prototype.loadPattern = function (chart, options, pattern, svgRenderer) {\n var i;\n for (i = 0; i < options.length; i++) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var path = svgRenderer.createPattern(options[i], options[i].name);\n pattern.appendChild(path);\n }\n };\n /**\n * To concat indexes\n *\n * @param userIndexes\n * @param localIndexes\n * @param userIndexes\n * @param localIndexes\n */\n BaseSelection.prototype.concatIndexes = function (userIndexes, localIndexes) {\n return userIndexes.concat(localIndexes);\n };\n /**\n * Selected points series visibility checking on legend click\n *\n * @param selectedIndexes\n */\n BaseSelection.prototype.checkVisibility = function (selectedIndexes) {\n if (!selectedIndexes) {\n return false;\n }\n var visible = false;\n var uniqueSeries = [];\n for (var _i = 0, selectedIndexes_1 = selectedIndexes; _i < selectedIndexes_1.length; _i++) {\n var index = selectedIndexes_1[_i];\n if (uniqueSeries.indexOf(index.series) === -1) {\n uniqueSeries.push(index.series);\n }\n }\n for (var _a = 0, uniqueSeries_1 = uniqueSeries; _a < uniqueSeries_1.length; _a++) {\n var index = uniqueSeries_1[_a];\n if (this.control.series[index].visible) {\n visible = true;\n break;\n }\n }\n return visible;\n };\n /**\n * To add svg element style class\n *\n * @param element\n * @param className\n * @param element\n * @param className\n * @private\n */\n BaseSelection.prototype.addSvgClass = function (element, className) {\n var elementClassName = element.getAttribute('class') || '';\n elementClassName += ((elementClassName !== '') ? ' ' : '');\n if (elementClassName.indexOf(className) === -1) {\n element.setAttribute('class', elementClassName + className);\n }\n };\n /**\n * To remove svg element style class\n *\n * @param element\n * @param className\n * @param element\n * @param className\n * @private\n */\n BaseSelection.prototype.removeSvgClass = function (element, className) {\n var elementClassName = element.getAttribute('class') || '';\n if (elementClassName.indexOf(className) > -1) {\n element.setAttribute('class', elementClassName.replace(className, ''));\n }\n };\n /**\n * To get children from parent element\n *\n * @param parent\n */\n BaseSelection.prototype.getChildren = function (parent) {\n var children = [];\n for (var i = 0; i < parent.childNodes.length; i++) {\n if (parent.childNodes[i].tagName !== 'defs') {\n children.push(parent.childNodes[i]);\n }\n }\n return children;\n };\n return BaseSelection;\n}());\nexport { BaseSelection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/**\n * Selection src file\n */\nimport { Browser } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ChartLocation, RectOption, CircleOption, withInBounds, getDraggedRectLocation, removeElement, getElement } from '../../common/utils/helper';\nimport { Rect, PathOption } from '@syncfusion/ej2-svg-base';\nimport { Index } from '../../common/model/base';\nimport { dragComplete, selectionComplete } from '../../common/model/constants';\nimport { BaseSelection } from '../../common/user-interaction/selection';\n/**\n * `Selection` module handles the selection for chart.\n *\n * @private\n */\nvar Selection = /** @class */ (function (_super) {\n __extends(Selection, _super);\n /**\n * Constructor for selection module.\n *\n * @private\n */\n function Selection(chart) {\n var _this = _super.call(this, chart) || this;\n _this.isdrawRect = true;\n _this.multiDataIndexes = [];\n _this.pathIndex = 0;\n _this.seriesIndex = 0;\n _this.count = -1;\n _this.dragRectArray = [];\n _this.filterArray = [];\n _this.totalSelectedPoints = [];\n _this.chart = chart;\n _this.renderer = chart.renderer;\n var mode = chart.selectionMode;\n _this.isMultiDrag = chart.isMultiSelect && (mode.indexOf('Drag') > -1);\n _this.addEventListener();\n return _this;\n }\n /**\n * Binding events for selection module.\n */\n Selection.prototype.addEventListener = function () {\n if (this.chart.isDestroyed || (this.chart.stockChart && this.chart.stockChart.onPanning)) {\n return;\n }\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.chart.on(Browser.touchMoveEvent, this.mouseMove, this);\n this.chart.on(cancelEvent, this.completeSelection, this);\n this.chart.on('click', this.calculateSelectedElements, this);\n this.chart.on(Browser.touchStartEvent, this.mousedown, this);\n this.chart.on(Browser.touchEndEvent, this.completeSelection, this);\n };\n /**\n * Chart mouse down\n */\n Selection.prototype.mousedown = function (e) {\n var chart = this.chart;\n if (chart.isPointMouseDown || chart.selectionMode === 'None' || chart.isChartDrag) {\n return;\n }\n if (chart.isDoubleTap || !chart.isTouch || this.rectPoints) {\n this.dragStart(chart, chart.chartAxisLayoutPanel.seriesClipRect, chart.mouseDownX, chart.mouseDownY, e);\n }\n };\n /**\n * UnBinding events for selection module.\n */\n Selection.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMove);\n this.chart.off('pointerleave' || 'mouseleave', this.completeSelection);\n this.chart.off('click', this.calculateSelectedElements);\n this.chart.off(Browser.touchStartEvent, this.mousedown);\n this.chart.off(Browser.touchEndEvent, this.completeSelection);\n };\n /**\n * To find private variable values\n */\n Selection.prototype.initPrivateVariables = function (chart) {\n this.styleId = chart.element.id + '_ej2_chart_selection';\n this.unselected = chart.element.id + '_ej2_deselected';\n this.closeIconId = chart.element.id + '_ej2_drag_close';\n this.draggedRectGroup = chart.element.id + '_ej2_drag_group';\n this.multiRectGroup = chart.element.id + '_ej2_drag_multi_group';\n this.draggedRect = chart.element.id + '_ej2_drag_rect';\n this.lassoPath = chart.element.id + '_ej2_drag_path';\n this.selectedDataIndexes = [];\n this.rectPoints = null;\n this.isSeriesMode = chart.selectionMode === 'Series';\n };\n /**\n * Method to select the point and series.\n *\n * @returns {void}\n */\n Selection.prototype.invokeSelection = function (chart) {\n this.initPrivateVariables(chart);\n this.series = extend({}, chart.visibleSeries, null, true);\n this.seriesStyles();\n this.currentMode = chart.selectionMode;\n if (!(chart.selectionMode.indexOf('Drag') > -1)) {\n this.selectDataIndex(chart, this.concatIndexes(chart.selectedDataIndexes, this.selectedDataIndexes));\n }\n };\n Selection.prototype.generateStyle = function (series) {\n if (series) {\n if (this.styleId.indexOf('selection') > 1 && this.chart.selectionMode !== 'None') {\n this.unselected = series.unSelectedStyle || this.unselected;\n }\n if (this.styleId.indexOf('highlight') > 0 && this.chart.highlightMode !== 'None') {\n this.unselected = series.nonHighlightStyle || this.unselected;\n }\n return (series.selectionStyle || this.styleId + '_series_' + series.index);\n }\n return 'undefined';\n };\n /**\n * Method to get the selected data index\n *\n * @private\n */\n Selection.prototype.selectDataIndex = function (chart, indexes) {\n for (var _i = 0, indexes_1 = indexes; _i < indexes_1.length; _i++) {\n var index = indexes_1[_i];\n this.performSelection(index, chart, this.getElementByIndex(chart, index)[0]);\n }\n };\n /**\n * Method to get the selected index element\n *\n * @private\n */\n Selection.prototype.getElementByIndex = function (chart, index, suffix) {\n if (suffix === void 0) { suffix = ''; }\n var elementId = chart.element.id + '_Series_' + index.series + '_Point' + '_' + index.point;\n var series = chart.series[index.series];\n elementId = (!series.isRectSeries && series.type !== 'Scatter' && series.type !== 'Bubble' &&\n series.marker.visible) ? (elementId + '_Symbol' + suffix) : elementId;\n return [getElement(elementId), (series.type === 'RangeArea' && series.marker.visible) ? getElement(elementId + '1') : null];\n };\n /**\n * Method to get the selected cluster element\n *\n * @private\n */\n Selection.prototype.getClusterElements = function (chart, index) {\n var clusters = [];\n var seriesStyle;\n var selectedElements;\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible) {\n index = new Index(series.index, index.point);\n clusters.push(this.getElementByIndex(chart, index)[0]);\n seriesStyle = this.generateStyle(chart.visibleSeries[index.series]);\n selectedElements = document.querySelectorAll('.' + seriesStyle);\n this.findTrackballElements(selectedElements, seriesStyle);\n if (!chart.isMultiSelect && selectedElements.length > 0 && selectedElements[0].id !== clusters[clusters.length - 1].id) {\n this.removeSelection(chart, index.series, selectedElements, seriesStyle, true);\n }\n }\n }\n return clusters;\n };\n /**\n * Method to get trackball elements\n *\n * @private\n */\n Selection.prototype.findTrackballElements = function (selectedElements, className) {\n var trackballElements;\n var elements;\n for (var i = 0; i < selectedElements.length; i++) {\n if (!isNullOrUndefined(selectedElements[i])) {\n trackballElements = !isNullOrUndefined(selectedElements[i].parentNode) ?\n [].slice.call(selectedElements[0].parentNode.querySelectorAll('.' + className)) : [];\n if (trackballElements.length > 0) {\n elements = [];\n for (var i_1 = 0; i_1 < trackballElements.length; i_1++) {\n if (trackballElements[i_1].id.indexOf('Trackball') > -1) {\n elements.push(trackballElements[i_1]);\n }\n }\n this.removeStyles(elements);\n }\n }\n }\n };\n /**\n * Method to get the selected element\n *\n * @private\n */\n Selection.prototype.findElements = function (chart, series, index, suffix) {\n if (suffix === void 0) { suffix = ''; }\n if (this.isSeriesMode) {\n return this.getSeriesElements(series);\n }\n else if (this.currentMode === 'Cluster') {\n return this.getClusterElements(chart, index);\n }\n else {\n return this.getElementByIndex(chart, index, suffix);\n }\n };\n /**\n * To find the selected element.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.isAlreadySelected = function (event) {\n var targetElem = event.target;\n if (event.type === 'click') {\n this.currentMode = this.chart.selectionMode;\n this.styleId = this.chart.element.id + '_ej2_chart_selection';\n }\n else if (event.type === 'mousemove') {\n this.currentMode = this.chart.highlightMode;\n this.highlightDataIndexes = [];\n this.styleId = this.chart.element.id + '_ej2_chart_highlight';\n }\n if (this.chart.highlightMode !== 'None' && this.chart.selectionMode === 'None') {\n if (event.type === 'click') {\n return false;\n }\n }\n if ((this.chart.highlightMode !== 'None' && this.previousSelectedEle && this.previousSelectedEle[0])) {\n var parentNodeId = targetElem.parentNode.id;\n var isElement = void 0;\n if (targetElem.parentNode) {\n isElement = (parentNodeId.indexOf('SeriesGroup') > 0 || parentNodeId.indexOf('SymbolGroup') > 0) ? true : false;\n }\n for (var i = 0; i < this.previousSelectedEle.length; i++) {\n if (this.previousSelectedEle[i].hasAttribute('class')) {\n if (this.previousSelectedEle[i].getAttribute('class').indexOf('highlight') > -1 &&\n (isElement || event.type === 'click')) {\n this.previousSelectedEle[i].removeAttribute('class');\n this.addOrRemoveIndex(this.highlightDataIndexes, this.indexFinder(this.previousSelectedEle[i].id));\n }\n else if (!isElement && this.previousSelectedEle[i].getAttribute('class').indexOf('highlight') > -1) {\n this.performSelection(this.indexFinder(this.previousSelectedEle[i].id), this.chart, this.previousSelectedEle[i]);\n }\n }\n }\n }\n return true;\n };\n /**\n * To find the selected element.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.calculateSelectedElements = function (event) {\n if (isNullOrUndefined(event.target)) {\n return;\n }\n var targetElement = event.target;\n if ((this.chart.selectionMode === 'None' && this.chart.highlightMode === 'None') ||\n targetElement.id.indexOf(this.chart.element.id + '_') === -1) {\n return;\n }\n if (event.type === 'mousemove') {\n if (targetElement.hasAttribute('class') && (targetElement.getAttribute('class').indexOf('highlight') > -1 ||\n targetElement.getAttribute('class').indexOf('selection') > -1)) {\n return;\n }\n if (!isNullOrUndefined(targetElement.parentNode) && targetElement.parentNode.hasAttribute('class') &&\n (targetElement.parentNode.getAttribute('class').indexOf('highlight') > 0 ||\n targetElement.parentNode.getAttribute('class').indexOf('selection') > 0)) {\n return;\n }\n }\n this.isAlreadySelected(event);\n if (targetElement.id.indexOf('_Series_') > -1) {\n var element = void 0;\n if (targetElement.id.indexOf('_Trackball_1') > -1) {\n element = getElement(targetElement.id.split('_Trackball_')[0] + '_Symbol');\n element = isNullOrUndefined(element) ? getElement(targetElement.id.split('_Trackball_')[0]) : element;\n }\n else if (targetElement.id.indexOf('_Trackball_0') > -1) {\n return null;\n }\n this.performSelection(this.indexFinder(targetElement.id), this.chart, element || targetElement);\n }\n };\n /**\n * Method to perform the selection\n *\n * @private\n */\n Selection.prototype.performSelection = function (index, chart, element) {\n this.isSeriesMode = this.currentMode === 'Series';\n if (chart.series[index.series].type === 'BoxAndWhisker' && element &&\n element.id === chart.element.id + '_Series_' + index.series + '_Point_' + index.point + '_BoxPath') {\n element = element.parentNode;\n }\n if (chart.series[index.series].type === 'Area' && (this.currentMode === 'Point' || this.currentMode === 'Cluster') && element &&\n (element.id === this.chart.element.id + '_Series_' + index.series)) {\n var className = this.generateStyle(chart.series[index.series]);\n var selectionEle = document.querySelectorAll('.' + className);\n this.findTrackballElements(selectionEle, className);\n this.blurEffect(chart.element.id, chart.visibleSeries);\n }\n switch (this.currentMode) {\n case 'Series':\n this.selection(chart, index, this.getSeriesElements(chart.series[index.series]));\n this.selectionComplete(chart, index, this.currentMode);\n this.blurEffect(chart.element.id, chart.visibleSeries);\n break;\n case 'Point':\n if (!isNaN(index.point) && element) {\n this.selection(chart, index, [element]);\n this.selectionComplete(chart, index, this.currentMode);\n this.blurEffect(chart.element.id, chart.visibleSeries);\n }\n break;\n case 'Cluster':\n if (!isNaN(index.point)) {\n this.clusterSelection(chart, index);\n this.selectionComplete(chart, index, this.currentMode);\n this.blurEffect(chart.element.id, chart.visibleSeries);\n }\n break;\n }\n };\n /**\n * Method to get the selected data index\n *\n * @private\n */\n Selection.prototype.selectionComplete = function (chart, index, selectionMode) {\n var points;\n var pointIndex;\n var seriesIndex;\n var selectedPointValues = [];\n var yValue;\n var selectedPointX;\n if (selectionMode === 'Cluster') {\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible) {\n for (var i = 0; i < this.selectedDataIndexes.length; i++) {\n pointIndex = chart.isMultiSelect ? this.selectedDataIndexes[i].point : index.point;\n seriesIndex = series.index;\n points = series.points;\n if (!isNaN(pointIndex)) {\n yValue = series.type !== 'RangeArea' ? points[pointIndex].yValue :\n points[pointIndex].regions[0].y;\n selectedPointX = points[pointIndex].xValue;\n if (chart.primaryXAxis.valueType === 'Category') {\n selectedPointX = points[pointIndex].x.toLocaleString();\n }\n else if (chart.primaryXAxis.valueType === 'DateTime') {\n selectedPointX = new Date(points[pointIndex].xValue);\n }\n if (series.category !== 'Indicator') {\n selectedPointValues.push({\n x: selectedPointX, y: yValue, seriesIndex: seriesIndex,\n pointIndex: pointIndex\n });\n }\n if (series.type === 'RangeArea') {\n selectedPointValues.push({\n x: selectedPointX, y: points[pointIndex].regions[0].y,\n seriesIndex: seriesIndex, pointIndex: pointIndex\n });\n }\n }\n }\n }\n }\n }\n else if (selectionMode === 'Series') {\n if (chart.isMultiSelect) {\n for (var i = 0; i < this.selectedDataIndexes.length; i++) {\n seriesIndex = this.selectedDataIndexes[i].series;\n selectedPointValues.push({\n seriesIndex: seriesIndex\n });\n }\n }\n else {\n seriesIndex = (this.selectedDataIndexes.length > 0) ? this.selectedDataIndexes[0].series : 0;\n selectedPointValues.push({\n seriesIndex: seriesIndex\n });\n }\n }\n else if (selectionMode === 'Point') {\n for (var i = 0; i < this.selectedDataIndexes.length; i++) {\n pointIndex = this.selectedDataIndexes[i].point;\n seriesIndex = this.selectedDataIndexes[i].series;\n var series = chart.series[seriesIndex];\n points = series.points;\n if (!isNaN(pointIndex)) {\n selectedPointX = points[pointIndex].xValue;\n yValue = series.type !== 'RangeArea' ? points[pointIndex].yValue :\n points[pointIndex].regions[0].y;\n if (chart.primaryXAxis.valueType === 'Category') {\n selectedPointX = points[pointIndex].x.toLocaleString();\n }\n else if (chart.primaryXAxis.valueType === 'DateTime') {\n selectedPointX = new Date(points[pointIndex].xValue);\n }\n selectedPointValues.push({\n x: selectedPointX, y: yValue, seriesIndex: seriesIndex,\n pointIndex: pointIndex\n });\n }\n }\n }\n var args = {\n name: selectionComplete,\n selectedDataValues: selectedPointValues,\n cancel: false\n };\n chart.trigger(selectionComplete, args);\n };\n /**\n * Method to perform selection\n *\n * @private\n */\n Selection.prototype.selection = function (chart, index, selectedElements) {\n if (!(this.currentMode === 'Lasso')) {\n if (!chart.isMultiSelect && (this.currentMode.indexOf('Drag') === -1 && this.styleId.indexOf('highlight') === -1 &&\n chart.selectionMode !== 'None')) {\n this.removeMultiSelectElements(chart, this.selectedDataIndexes, index, chart.series);\n }\n }\n if (!isNullOrUndefined(selectedElements[0])) {\n var isAdd = void 0;\n var className = selectedElements[0] && (selectedElements[0].getAttribute('class') || '');\n var pClassName = selectedElements[0].parentNode &&\n (selectedElements[0].parentNode.getAttribute('class') || '');\n if (className !== '' && this.currentMode !== 'Cluster') {\n this.findTrackballElements(selectedElements, className);\n }\n if (selectedElements[0] && className.indexOf(this.getSelectionClass(selectedElements[0].id)) > -1) {\n this.removeStyles(selectedElements);\n }\n else if (selectedElements[0].parentNode && pClassName.indexOf(this.getSelectionClass(selectedElements[0].id)) > -1) {\n this.removeStyles([selectedElements[0].parentNode]);\n }\n else {\n this.previousSelectedEle = chart.highlightMode !== 'None' ? selectedElements : [];\n this.applyStyles(selectedElements);\n isAdd = true;\n }\n if (this.styleId.indexOf('highlight') > 0 && chart.highlightMode !== 'None') {\n this.addOrRemoveIndex(this.highlightDataIndexes, index, isAdd);\n }\n else {\n this.addOrRemoveIndex(this.selectedDataIndexes, index, isAdd);\n }\n }\n };\n /**\n * Method to get the cluster selection element\n *\n * @private\n */\n Selection.prototype.clusterSelection = function (chart, index) {\n this.selection(chart, index, this.getClusterElements(chart, new Index(index.series, index.point)));\n };\n /**\n * Method to remove the multi selected elements\n *\n * @private\n */\n Selection.prototype.removeMultiSelectElements = function (chart, index, currentIndex, seriesCollection) {\n var series;\n for (var i = 0; i < index.length; i++) {\n series = seriesCollection[index[i].series];\n if ((this.isSeriesMode && !this.toEquals(index[i], currentIndex, this.isSeriesMode)) ||\n (this.currentMode === 'Cluster' && !this.toEquals(index[i], currentIndex, false)) ||\n (!this.isSeriesMode && this.toEquals(index[i], currentIndex, true) && !this.toEquals(index[i], currentIndex, false))) {\n this.removeStyles(this.findElements(chart, series, index[i]));\n index.splice(i, 1);\n i--;\n }\n }\n };\n /**\n * Method to remove the selection\n *\n * @private\n */\n Selection.prototype.blurEffect = function (chartId, visibleSeries, legendClick) {\n if (legendClick === void 0) { legendClick = false; }\n var visibility = (this.checkVisibility(this.highlightDataIndexes) ||\n this.checkVisibility(this.selectedDataIndexes)); // legend click scenario\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (series.visible) {\n this.checkSelectionElements(getElement(chartId + 'SeriesGroup' + series.index), this.generateStyle(series), visibility, legendClick, series.index);\n if (!isNullOrUndefined(getElement(chartId + 'SymbolGroup' + series.index))) {\n this.checkSelectionElements(getElement(chartId + 'SymbolGroup' + series.index), this.generateStyle(series), visibility, legendClick, series.index);\n }\n }\n }\n };\n /**\n * Method to add the add/remove class to element\n *\n * @private\n */\n Selection.prototype.checkSelectionElements = function (element, className, visibility, legendClick, series) {\n var children = (this.isSeriesMode ? [element] : element.childNodes);\n if (this.chart.selectionMode !== 'None' && this.chart.highlightMode !== 'None') {\n children = (element.children);\n }\n var elementClassName;\n var parentClassName;\n var legendShape;\n var selectElement = element;\n for (var i = 0; i < children.length; i++) {\n elementClassName = children[i].getAttribute('class') || '';\n parentClassName = children[i].parentNode.getAttribute('class') || '';\n if (this.chart.selectionMode !== 'None' && this.chart.highlightMode !== 'None') {\n className = elementClassName.indexOf('selection') > 0 ||\n elementClassName.indexOf('highlight') > 0 ? elementClassName : className;\n className = (parentClassName.indexOf('selection') > 0 ||\n parentClassName.indexOf('highlight') > 0) ? parentClassName : className;\n }\n if (elementClassName.indexOf(className) === -1 &&\n parentClassName.indexOf(className) === -1 && visibility) {\n this.addSvgClass(children[i], this.unselected);\n }\n else {\n selectElement = children[i];\n this.removeSvgClass(children[i], this.unselected);\n this.removeSvgClass(children[i].parentNode, this.unselected);\n }\n if (children[i].id.indexOf('Trackball') > 0 && selectElement.classList[0] === className) {\n this.removeSvgClass(children[i], this.unselected);\n this.removeSvgClass(children[i].parentNode, this.unselected);\n this.addSvgClass(children[i], className);\n }\n }\n if (element.id.indexOf('Symbol') > -1) {\n if ((element.querySelectorAll('.' + className)[0]) && element.querySelectorAll('.' + className)[0].getAttribute('class')\n === className) {\n var symbolEle = getElement(this.control.element.id + '_Series_' + element.id[element.id.length - 1]);\n var seriesClassName = symbolEle && symbolEle.hasAttribute('class') ? symbolEle.getAttribute('class') : '';\n if (seriesClassName.indexOf(this.unselected) > -1) {\n this.removeSvgClass(symbolEle, this.unselected);\n }\n }\n }\n if (this.control.legendModule && this.control.legendSettings.visible) {\n legendShape = getElement(this.control.element.id + '_chart_legend_shape_' + series);\n if (legendShape) {\n if (legendShape.hasAttribute('class')) {\n this.removeSvgClass(legendShape, legendShape.getAttribute('class'));\n }\n elementClassName = selectElement.getAttribute('class') || '';\n parentClassName = selectElement.parentNode.getAttribute('class') || '';\n if (elementClassName.indexOf(className) === -1 && parentClassName.indexOf(className) === -1 && visibility) {\n this.addSvgClass(legendShape, this.unselected);\n this.removeSvgClass(legendShape, className);\n }\n else {\n this.removeSvgClass(legendShape, this.unselected);\n if ((elementClassName === '' && parentClassName === '') || elementClassName.trim() === 'EJ2-Trackball') {\n this.removeSvgClass(legendShape, className);\n }\n else {\n this.addSvgClass(legendShape, className);\n }\n }\n if (legendClick && parentClassName.indexOf(className) > -1) {\n this.addSvgClass(legendShape, className);\n }\n }\n }\n };\n /**\n * Method to apply the styles\n *\n * @private\n */\n Selection.prototype.applyStyles = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n if (element) {\n this.removeSvgClass(element.parentNode, this.unselected);\n this.removeSvgClass(element, this.unselected);\n this.addSvgClass(element, this.getSelectionClass(element.id));\n }\n }\n };\n /**\n * Method to get the selection class\n *\n * @private\n */\n Selection.prototype.getSelectionClass = function (id) {\n return this.generateStyle(this.control.series[this.indexFinder(id).series]);\n };\n /**\n * Method to remove styles\n *\n * @private\n */\n Selection.prototype.removeStyles = function (elements) {\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n if (element) {\n this.removeSvgClass(element, this.getSelectionClass(element.id));\n }\n }\n };\n /**\n * Method to remove the selected data index\n *\n * @private\n */\n Selection.prototype.addOrRemoveIndex = function (indexes, index, isAdd) {\n for (var i = 0; i < indexes.length; i++) {\n if (this.toEquals(indexes[i], index, this.isSeriesMode)) {\n indexes.splice(i, 1);\n i--;\n }\n }\n if (isAdd) {\n indexes.push(index);\n }\n };\n /**\n * Method to get the equal index\n *\n * @private\n */\n Selection.prototype.toEquals = function (first, second, checkSeriesOnly) {\n return ((first.series === second.series || (this.currentMode === 'Cluster' && !checkSeriesOnly))\n && (checkSeriesOnly || (first.point === second.point)));\n };\n /**\n * To redraw the selected points.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.redrawSelection = function (chart, oldMode) {\n this.isSeriesMode = oldMode === 'Series';\n if (!isNullOrUndefined(oldMode)) {\n if (oldMode.indexOf('Drag') !== -1 || oldMode === 'Lasso') {\n chart.isRedrawSelection = false;\n }\n else {\n chart.isRedrawSelection = true;\n }\n }\n var selectedDataIndexes = extend([], this.selectedDataIndexes, null, true);\n var highlightDataIndexes = extend([], this.highlightDataIndexes, null, true);\n if (this.styleId.indexOf('highlight') > 0 && highlightDataIndexes.length > 0) {\n this.removeSelectedElements(chart, this.highlightDataIndexes, chart.series);\n selectedDataIndexes = highlightDataIndexes;\n }\n else {\n this.removeSelectedElements(chart, this.selectedDataIndexes, chart.series);\n }\n this.blurEffect(chart.element.id, chart.visibleSeries);\n this.selectDataIndex(chart, selectedDataIndexes);\n };\n /** @private */\n Selection.prototype.legendSelection = function (chart, series, event) {\n var targetElement = event.target;\n if (event.type === 'mousemove') {\n if (event.target.id.indexOf('text') > 1) {\n targetElement = getElement(event.target.id.replace('text', 'shape'));\n }\n if (targetElement.hasAttribute('class') && (targetElement.getAttribute('class').indexOf('highlight') > -1 ||\n targetElement.getAttribute('class').indexOf('selection') > -1)) {\n return;\n }\n this.currentMode = this.chart.highlightMode;\n }\n var isPreSelected = this.isAlreadySelected(event);\n if (isPreSelected) {\n var seriesStyle = this.generateStyle(chart.visibleSeries[series]);\n var selectedElements = (document.querySelectorAll('.' + seriesStyle));\n this.isSeriesMode = this.currentMode === 'Series';\n var isBlurEffectNeeded = true;\n if (selectedElements.length > 0) {\n this.removeSelection(chart, series, selectedElements, seriesStyle, isBlurEffectNeeded);\n }\n else {\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var element = _a[_i];\n if (element.index !== series && !chart.isMultiSelect) {\n seriesStyle = this.generateStyle(chart.visibleSeries[element.index]);\n selectedElements = document.querySelectorAll('.' + seriesStyle);\n this.removeSelection(chart, series, selectedElements, seriesStyle, isBlurEffectNeeded);\n }\n }\n var seriesElements = this.getSeriesElements(chart.visibleSeries[series]);\n for (var _b = 0, seriesElements_1 = seriesElements; _b < seriesElements_1.length; _b++) {\n var seriesElement = seriesElements_1[_b];\n if (isNullOrUndefined(seriesElement)) {\n return;\n }\n this.checkSelectionElements(seriesElement, seriesStyle, false, true, series);\n }\n this.isSeriesMode = true;\n this.selection(chart, new Index(series, NaN), seriesElements);\n this.isSeriesMode = chart.selectionMode === 'Series';\n this.blurEffect(chart.element.id, chart.visibleSeries, true);\n }\n }\n };\n Selection.prototype.removeSelection = function (chart, series, selectedElements, seriesStyle, isBlurEffectNeeded) {\n if (selectedElements.length > 0) {\n var elements = [];\n for (var i = 0; i < selectedElements.length; i++) {\n elements.push(selectedElements[i]);\n }\n this.removeStyles(elements);\n this.isSeriesMode = true;\n this.addOrRemoveIndex(this.selectedDataIndexes, new Index(series, NaN));\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var value = _a[_i];\n seriesStyle = this.generateStyle(value);\n if (document.querySelectorAll('.' + seriesStyle).length > 0) {\n for (var _b = 0, elements_3 = elements; _b < elements_3.length; _b++) {\n var element = elements_3[_b];\n this.checkSelectionElements(element, seriesStyle, true, true, series);\n }\n isBlurEffectNeeded = false;\n break;\n }\n }\n if (isBlurEffectNeeded) {\n this.isSeriesMode = chart.selectionMode === 'Series';\n this.blurEffect(chart.element.id, chart.visibleSeries);\n }\n }\n };\n /** @private */\n Selection.prototype.getSeriesElements = function (series) {\n var seriesElements = [series.seriesElement];\n if (series.marker.visible && series.type !== 'Scatter' && series.type !== 'Bubble' && !series.isRectSeries) {\n seriesElements.push(series.symbolElement);\n }\n return seriesElements;\n };\n /** @private */\n Selection.prototype.indexFinder = function (id) {\n var ids = ['NaN', 'NaN'];\n if (id.indexOf('SeriesGroup') > -1) {\n ids = id.split('SeriesGroup');\n ids[0] = ids[1];\n }\n else if (id.indexOf('SymbolGroup') > -1) {\n ids = id.split('SymbolGroup');\n ids[0] = ids[1];\n }\n else if (id.indexOf('_Point_') > -1) {\n ids = id.split('_Series_')[1].split('_Point_');\n }\n else if (id.indexOf('_Series_') > -1) {\n ids[0] = id.split('_Series_')[1];\n }\n else if (id.indexOf('_chart_legend_shape_') > -1) {\n ids = id.split('_chart_legend_shape_');\n ids[0] = ids[1];\n }\n return new Index(parseInt(ids[0], 10), parseInt(ids[1], 10));\n };\n /**\n * Drag selection that returns the selected data.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.calculateDragSelectedElements = function (chart, dragRect, isClose) {\n this.removeSelectedElements(chart, this.selectedDataIndexes, chart.series);\n var isLasso = chart.selectionMode === 'Lasso';\n var rect = new Rect(dragRect.x, dragRect.y, dragRect.width, dragRect.height);\n var axisOffset = new ChartLocation(chart.chartAxisLayoutPanel.seriesClipRect.x, chart.chartAxisLayoutPanel.seriesClipRect.y);\n this.removeOffset(rect, axisOffset);\n var points;\n var index;\n var selectedPointValues = [];\n var selectedSeriesValues = [];\n this.isSeriesMode = false;\n var isDragResize = (chart.allowMultiSelection) && (this.rectGrabbing || this.resizing);\n this.rectPoints = this.dragRectArray[isDragResize ? this.targetIndex : this.count] =\n new Rect(dragRect.x, dragRect.y, dragRect.width, dragRect.height);\n if (dragRect.width && dragRect.height && !isClose) {\n var rt = new Rect(dragRect.x, dragRect.y, dragRect.width, dragRect.height);\n this.removeOffset(rt, axisOffset);\n this.filterArray[isDragResize ? this.targetIndex : this.count] = rt;\n }\n var _loop_1 = function (series) {\n if (series.visible) {\n points = series.points;\n selectedPointValues = [];\n var xAxisOffset_1;\n var yAxisOffset_1;\n if ((chart.isTransposed || series.type.indexOf('Bar') !== -1) &&\n !(chart.isTransposed && series.type.indexOf('Bar') !== -1)) {\n xAxisOffset_1 = series.xAxis.rect.y - axisOffset.y;\n yAxisOffset_1 = series.yAxis.rect.x - axisOffset.x;\n }\n else {\n xAxisOffset_1 = series.xAxis.rect.x - axisOffset.x;\n yAxisOffset_1 = series.yAxis.rect.y - axisOffset.y;\n }\n for (var j = 0; j < points.length; j++) {\n var yValue = series.type !== 'RangeArea' ? points[j].yValue :\n points[j].regions[0].y;\n var isCurrentPoint = void 0;\n var selectedPointX = points[j].xValue;\n if (chart.primaryXAxis.valueType === 'Category') {\n selectedPointX = points[j].x.toLocaleString();\n }\n else if (chart.primaryXAxis.valueType === 'DateTime') {\n selectedPointX = new Date(points[j].xValue);\n }\n if (series.type === 'BoxAndWhisker') {\n isCurrentPoint = points[j].regions.some(function (region) {\n return withInBounds(region.x + xAxisOffset_1, region.y + yAxisOffset_1, rect);\n });\n }\n else {\n if (chart.selectionMode === 'Lasso') {\n isCurrentPoint = points[j].isSelect;\n }\n else {\n isCurrentPoint = (chart.allowMultiSelection) ?\n this_1.isPointSelect(points[j], xAxisOffset_1, yAxisOffset_1, this_1.filterArray) :\n points[j].symbolLocations.some(function (location) {\n return location && withInBounds(location.x + xAxisOffset_1, location.y + yAxisOffset_1, rect);\n });\n }\n }\n if (isCurrentPoint && series.category !== 'Indicator') {\n index = new Index(series.index, points[j].index);\n this_1.selection(chart, index, this_1.findElements(chart, series, index));\n selectedPointValues.push({ x: selectedPointX, y: yValue });\n }\n if (isCurrentPoint && series.type === 'RangeArea') {\n selectedPointValues.push({ x: selectedPointX, y: points[j].regions[0].y });\n }\n }\n selectedSeriesValues.push(selectedPointValues);\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n _loop_1(series);\n }\n this.blurEffect(chart.element.id, chart.visibleSeries);\n var x = isLasso ? chart.mouseDownX : (dragRect.x + dragRect.width);\n var y = isLasso ? chart.mouseDownY : dragRect.y;\n if (!isClose) {\n this.createCloseButton(x, y);\n }\n var args = {\n name: dragComplete,\n selectedDataValues: selectedSeriesValues,\n cancel: false\n };\n chart.trigger(dragComplete, args);\n };\n Selection.prototype.removeOffset = function (rect, clip) {\n rect.x -= clip.x;\n rect.y -= clip.y;\n };\n Selection.prototype.isPointSelect = function (points, xAxisOffset, yAxisOffset, rectCollection) {\n var location = points.symbolLocations[0];\n for (var _i = 0, rectCollection_1 = rectCollection; _i < rectCollection_1.length; _i++) {\n var rect = rectCollection_1[_i];\n if (rect && location && withInBounds(location.x + xAxisOffset, location.y + yAxisOffset, rect)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Method to draw dragging rect.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.drawDraggingRect = function (chart, dragRect, target) {\n var cartesianLayout = chart.chartAxisLayoutPanel.seriesClipRect;\n var border = chart.chartArea.border.width;\n var rectFill = chart.themeStyle.selectionRectFill;\n var rectStroke = chart.themeStyle.selectionRectStroke;\n var isLasso = chart.selectionMode === 'Lasso';\n if (this.isdrawRect) {\n cartesianLayout.x = cartesianLayout.x - border / 2;\n cartesianLayout.y = cartesianLayout.y - border / 2;\n cartesianLayout.width = cartesianLayout.width + border;\n cartesianLayout.height = cartesianLayout.height + border;\n this.isdrawRect = false;\n }\n switch (chart.selectionMode) {\n case 'DragX':\n dragRect.y = cartesianLayout.y;\n dragRect.height = cartesianLayout.height;\n break;\n case 'DragY':\n dragRect.x = cartesianLayout.x;\n dragRect.width = cartesianLayout.width;\n break;\n }\n if ((dragRect.width < 5 || dragRect.height < 5) && !isLasso) {\n return null;\n }\n var isDragMode = chart.selectionMode.indexOf('Drag') > -1 || chart.selectionMode === 'Lasso';\n if ((chart.allowMultiSelection) && isDragMode) {\n var element = void 0;\n var dragGroup = void 0;\n var multiGroup = getElement(this.multiRectGroup);\n if (!multiGroup) {\n multiGroup = chart.svgRenderer.createGroup({ id: this.multiRectGroup });\n chart.svgObject.appendChild(multiGroup);\n }\n if (this.rectGrabbing || this.resizing) {\n var rectElement = void 0;\n rectElement = getElement(this.draggedRect + this.targetIndex);\n if (rectElement.nextSibling) {\n remove(rectElement.nextSibling);\n }\n this.setAttributes(rectElement, dragRect);\n }\n else if (!getElement(this.draggedRectGroup + this.count)) {\n dragGroup = chart.svgRenderer.createGroup({ id: this.draggedRectGroup + this.count });\n var svgElement = document.getElementById(chart.element.id + '_series_svg');\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n chart.enableCanvas ? svgElement.appendChild(dragGroup) : multiGroup.appendChild(dragGroup);\n }\n if (!(chart.selectionMode === 'Lasso')) {\n element = chart.svgRenderer.drawRectangle(new RectOption(this.draggedRect + this.count, rectFill, { color: rectStroke, width: 1 }, 1, dragRect));\n element.setAttribute('style', 'cursor:move;');\n }\n else {\n element = chart.svgRenderer.drawPath(new PathOption(this.lassoPath + this.count, rectFill, 3, rectStroke, 1, '', this.path));\n }\n if (!dragGroup && !this.rectGrabbing && !this.resizing) {\n getElement(this.draggedRectGroup + this.count).appendChild(element);\n }\n else if (!this.rectGrabbing && !this.resizing) {\n dragGroup.appendChild(element);\n }\n }\n else {\n var element = isLasso ?\n getElement(this.lassoPath) : getElement(this.draggedRect);\n if (this.closeIcon) {\n removeElement(this.closeIconId);\n }\n if (element) {\n if (isLasso) {\n element.setAttribute('d', this.path);\n }\n else {\n this.setAttributes(element, dragRect);\n }\n }\n else {\n var dragGroup = chart.svgRenderer.createGroup({ id: this.draggedRectGroup });\n var svgElement = document.getElementById(chart.element.id + '_series_svg');\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n chart.enableCanvas ? svgElement.appendChild(dragGroup) : chart.svgObject.appendChild(dragGroup);\n if (!(chart.selectionMode === 'Lasso')) {\n element = chart.svgRenderer.drawRectangle(new RectOption(this.draggedRect, rectFill, { color: rectStroke, width: 1 }, 1, dragRect));\n }\n else {\n element = chart.svgRenderer.drawPath(new PathOption(this.lassoPath, rectFill, 3, rectStroke, 1, '', this.path));\n }\n //element.setAttribute('style', 'cursor:move;');\n dragGroup.appendChild(element);\n }\n }\n };\n /**\n * To get drag selected group element index from its id\n *\n * @param {string} id element id\n */\n Selection.prototype.getIndex = function (id) {\n var i;\n for (i = id.length - 1; i > 0; i--) {\n var x = Number(id[i]);\n if (!isNaN(x)) {\n continue;\n }\n else {\n break;\n }\n }\n var index = +id.substr(i + 1, id.length - 1);\n return index;\n };\n Selection.prototype.createCloseButton = function (x, y) {\n var isMultiDrag = this.chart.allowMultiSelection;\n var circleStroke = this.chart.themeStyle.selectionCircleStroke;\n var isDrag = this.rectGrabbing || this.resizing;\n var closeIcon = this.chart.svgRenderer.createGroup({\n id: this.closeIconId + (isMultiDrag ? (isDrag ? this.targetIndex : this.count) : ''),\n style: 'cursor:pointer; visibility: visible;'\n });\n closeIcon.appendChild(this.chart.svgRenderer.drawCircle(new CircleOption(this.closeIconId + '_circle' + (isMultiDrag ? (isDrag ? this.targetIndex : this.count) : ''), '#FFFFFF', { color: circleStroke, width: 1 }, 1, x, y, 10)));\n var direction = 'M ' + (x - 4) + ' ' + (y - 4) + ' L ' + (x + 4) + ' ' + (y + 4) + ' M ' + (x - 4) + ' ' + (y + 4) +\n ' L ' + (x + 4) + ' ' + (y - 4);\n closeIcon.appendChild(this.chart.svgRenderer.drawPath({\n id: this.closeIconId + '_cross' +\n (isMultiDrag ? (isDrag ? this.targetIndex : this.count) : ''), d: direction,\n stroke: circleStroke, 'stroke-width': 2, fill: circleStroke\n }));\n this.closeIcon = closeIcon;\n var pathElement = getElement(this.draggedRectGroup + (isMultiDrag ? (isDrag ? this.targetIndex : this.count) : ''));\n if (pathElement) {\n pathElement.appendChild(closeIcon);\n }\n };\n /**\n * Method to remove dragged element.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.removeDraggedElements = function (chart, event) {\n if ((event.target.id.indexOf(this.closeIconId) > -1) && (event.type.indexOf('move') === -1)) {\n var isSelectedvalues = true;\n if ((chart.allowMultiSelection)) {\n var index = this.getIndex(event.target.id);\n var multiRectGroupElement = getElement(this.multiRectGroup);\n remove(getElement(this.draggedRectGroup + index));\n this.dragRectArray[index] = null;\n this.filterArray[index] = null;\n this.totalSelectedPoints[index] = null;\n if (multiRectGroupElement && multiRectGroupElement.childElementCount === 0) {\n removeElement(multiRectGroupElement);\n this.dragRectArray = [];\n this.filterArray = [];\n this.totalSelectedPoints = [];\n }\n if (this.currentMode === 'Lasso') {\n if (this.multiDataIndexes[index] != null) {\n for (var i = 0; i < this.multiDataIndexes[index].length; i++) {\n this.multiDataIndexes[index][i].isSelect = false;\n }\n }\n this.multiDataIndexes[index] = null;\n for (var j = 0; j < this.multiDataIndexes.length; j++) {\n if (this.multiDataIndexes[j] != null) {\n isSelectedvalues = false;\n for (var k = 0; k < this.multiDataIndexes[j].length; k++) {\n this.multiDataIndexes[j][k].isSelect = true;\n }\n }\n }\n this.calculateDragSelectedElements(chart, this.dragRect, true);\n }\n else if (this.filterArray.length) {\n for (var i = 0; i < this.filterArray.length; i++) {\n if (this.filterArray[i]) {\n isSelectedvalues = false;\n this.calculateDragSelectedElements(chart, this.filterArray[i], true);\n }\n }\n }\n else {\n this.calculateDragSelectedElements(chart, new Rect(0, 0, 0, 0), true);\n }\n }\n else {\n remove(getElement(this.draggedRectGroup));\n this.removeSelectedElements(chart, this.selectedDataIndexes, chart.series);\n }\n this.blurEffect(chart.element.id, chart.visibleSeries);\n this.changeCursorStyle(false, chart.svgObject, 'auto');\n if (!(chart.allowMultiSelection) || isSelectedvalues) {\n this.rectPoints = null;\n }\n }\n };\n /**\n * Method to resize the drag rect.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.resizingSelectionRect = function (chart, location, tapped, target) {\n var rect;\n if (((chart.allowMultiSelection) && (target.id.indexOf('_ej2_drag_rect') > -1)) ||\n this.dragRectArray[this.targetIndex]) {\n if (target.id.indexOf('_ej2_drag_rect') > -1) {\n this.targetIndex = this.getIndex(target.id);\n }\n var r = this.dragRectArray[this.targetIndex];\n rect = new Rect(r.x, r.y, r.width, r.height);\n }\n if (!(chart.allowMultiSelection)) {\n rect = new Rect(this.rectPoints.x, this.rectPoints.y, this.rectPoints.width, this.rectPoints.height);\n }\n if (rect) {\n var resize = this.findResizeMode(chart.svgObject, rect, location);\n if (this.resizing) {\n rect = getDraggedRectLocation(rect.x, rect.y, (rect.x + rect.width), (rect.y + rect.height), chart.chartAxisLayoutPanel.seriesClipRect);\n this.drawDraggingRect(chart, rect);\n this.dragRect = rect;\n }\n if (tapped) {\n this.resizing = resize;\n }\n }\n else {\n return;\n }\n };\n Selection.prototype.findResizeMode = function (chartSvgObject, rect, location) {\n var cursorStyle = 'se-resize';\n var resize = false;\n if (!this.resizing) {\n var resizeEdges = [new Rect(rect.x, (rect.y), rect.width - 5, 5),\n new Rect((rect.x), rect.y, 5, rect.height),\n new Rect(rect.x, (rect.y + rect.height - 5), rect.width - 5, 5),\n new Rect((rect.x + rect.width - 5), rect.y + 5, 5, rect.height - 15),\n new Rect((rect.x + rect.width - 10), (rect.y + rect.height - 10), 10, 10)]; //corner\n for (var i = 0; i < resizeEdges.length; i++) {\n if (withInBounds(location.x, location.y, resizeEdges[i])) {\n cursorStyle = (i === 4) ? cursorStyle : (i % 2 === 0) ? 'ns-resize' : 'ew-resize';\n resize = true;\n this.resizeMode = i;\n break;\n }\n }\n }\n else {\n var x = rect.x;\n var y = rect.y;\n var width = (location.x - x);\n var height = (location.y - y);\n switch (this.resizeMode) {\n case 0:\n height = Math.abs((rect.height + rect.y) - location.y);\n rect.y = Math.min((rect.height + rect.y), location.y);\n rect.height = height;\n break;\n case 1:\n width = Math.abs((rect.width + rect.x) - location.x);\n rect.x = Math.min((rect.width + rect.x), location.x);\n rect.width = width;\n break;\n case 2:\n rect.height = Math.abs(height);\n rect.y = Math.min(location.y, y);\n break;\n case 3:\n rect.width = Math.abs(width);\n rect.x = Math.min(location.x, x);\n break;\n case 4:\n rect.width = Math.abs(width);\n rect.height = Math.abs(height);\n rect.x = Math.min(location.x, x);\n rect.y = Math.min(location.y, y);\n break;\n }\n }\n if (this.currentMode !== 'Lasso') {\n this.changeCursorStyle(resize, getElement((this.chart.allowMultiSelection) ? this.draggedRect +\n this.targetIndex : this.draggedRect), cursorStyle);\n }\n this.changeCursorStyle(resize, chartSvgObject, cursorStyle);\n return resize;\n };\n Selection.prototype.changeCursorStyle = function (isResize, rectelement, cursorStyle) {\n cursorStyle = isResize ? cursorStyle : (this.control.svgObject === rectelement) ? 'auto' : 'move';\n if (rectelement) {\n rectelement.setAttribute('style', 'cursor:' + cursorStyle + ';');\n }\n };\n Selection.prototype.removeSelectedElements = function (chart, index, seriesCollection) {\n index = chart.isRedrawSelection ? index : index.splice(0, index.length); // No need to remove selected indexes while redrawing\n var seriesElements;\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n seriesElements = this.getSeriesElements(series);\n this.removeStyles(seriesElements);\n for (var _a = 0, seriesElements_2 = seriesElements; _a < seriesElements_2.length; _a++) {\n var seriesElement = seriesElements_2[_a];\n this.removeStyles(this.getChildren(seriesElement));\n }\n }\n };\n Selection.prototype.setAttributes = function (ele, object) {\n var keys = Object.keys(object);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n ele.setAttribute(key, object[key]);\n }\n };\n /**\n * Method to move the dragged rect.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.draggedRectMoved = function (chart, grabbedPoint, doDrawing, target) {\n var rect;\n if ((this.resizing || this.rectGrabbing) && (chart.allowMultiSelection)) {\n var r = this.dragRectArray[this.targetIndex];\n rect = new Rect(r.x, r.y, r.width, r.height);\n }\n else {\n rect = new Rect(this.rectPoints.x, this.rectPoints.y, this.rectPoints.width, this.rectPoints.height);\n }\n rect.x -= (grabbedPoint.x - chart.mouseX);\n rect.y -= (grabbedPoint.y - chart.mouseY);\n rect = getDraggedRectLocation(rect.x, rect.y, rect.x + rect.width, rect.height + rect.y, chart.chartAxisLayoutPanel.seriesClipRect);\n if (doDrawing) {\n this.drawDraggingRect(chart, rect, target);\n }\n else {\n this.calculateDragSelectedElements(chart, rect);\n }\n };\n /**\n * To complete the selection.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.completeSelection = function (e) {\n var chart = this.chart;\n if (chart.selectionMode === 'None') {\n return;\n }\n this.currentMode = chart.selectionMode;\n if ((this.dragging || this.resizing) && this.dragRect.width > 5 && this.dragRect.height > 5) {\n this.calculateDragSelectedElements(chart, this.dragRect);\n }\n else if (!(chart.allowMultiSelection) && this.rectGrabbing &&\n this.rectPoints.width && this.rectPoints.height) {\n this.draggedRectMoved(chart, this.dragRect);\n }\n else if (this.rectGrabbing && this.dragRectArray[this.targetIndex].width && this.dragRectArray[this.targetIndex].height) {\n this.draggedRectMoved(chart, this.dragRect);\n }\n if (chart.selectionMode === 'Lasso' && this.dragging && this.path) {\n if (this.path.indexOf('L') !== -1) {\n if (!(chart.allowMultiSelection)) {\n getElement(this.lassoPath).setAttribute('d', this.path + 'Z');\n this.pointChecking(getElement(this.lassoPath));\n }\n else if (getElement(this.lassoPath + this.count)) {\n getElement(this.lassoPath + this.count).setAttribute('d', this.path + 'Z');\n this.pointChecking(getElement(this.lassoPath + this.count));\n }\n if (this.dragging || this.resizing) {\n this.calculateDragSelectedElements(chart, this.dragRect);\n }\n }\n }\n this.dragging = false;\n this.rectGrabbing = false;\n this.resizing = false;\n this.removeDraggedElements(chart, e);\n };\n Selection.prototype.getDragRect = function (chart, seriesClipRect) {\n return getDraggedRectLocation(chart.mouseDownX, chart.mouseDownY, chart.mouseX, chart.mouseY, seriesClipRect);\n };\n /** @private */\n Selection.prototype.dragStart = function (chart, seriesClipRect, mouseDownX, mouseDownY, event) {\n var mode = chart.selectionMode;\n this.currentMode = chart.selectionMode;\n this.dragging = (mode.indexOf('Drag') > -1 || mode === 'Lasso') && (chart.isDoubleTap || !chart.isTouch) &&\n chart.chartAreaType !== 'PolarRadar';\n var target = event.target;\n this.path = undefined;\n if (this.dragging) {\n this.count = getElement(this.multiRectGroup) ? (this.count + 1) : 0;\n this.dragRect = new Rect(chart.mouseDownX, chart.mouseDownY, 0, 0);\n if (chart.mouseDownX < seriesClipRect.x || chart.mouseDownX > (seriesClipRect.x + seriesClipRect.width) ||\n chart.mouseDownY < seriesClipRect.y || chart.mouseDownY > (seriesClipRect.y + seriesClipRect.height)) {\n this.dragging = false;\n }\n }\n if (mode === 'Lasso') {\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible) {\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n if (!(chart.allowMultiSelection)) {\n point.isSelect = false;\n }\n }\n }\n }\n }\n if (!(mode === 'Lasso')) {\n if (this.rectPoints && !(chart.allowMultiSelection)) {\n this.dragRect = new Rect(chart.mouseDownX, chart.mouseDownY, 0, 0);\n this.resizingSelectionRect(chart, new ChartLocation(mouseDownX, mouseDownY), true);\n this.rectGrabbing = withInBounds(mouseDownX, mouseDownY, this.rectPoints);\n }\n if ((chart.allowMultiSelection)) {\n var index = this.getIndex(target.id);\n this.targetIndex = this.isDragRect(target.id) ? index : undefined;\n if (this.dragRectArray.length && this.isDragRect(target.id)) {\n this.resizingSelectionRect(chart, new ChartLocation(mouseDownX, mouseDownY), true, target);\n this.rectGrabbing = withInBounds(mouseDownX, mouseDownY, this.dragRectArray[index]);\n }\n }\n }\n };\n Selection.prototype.isDragRect = function (id) {\n return id.indexOf('_ej2_drag_rect') > -1;\n };\n /** @private */\n Selection.prototype.mouseMove = function (event) {\n var chart = this.chart;\n var target = event.target;\n if (chart.highlightMode !== 'None') {\n if (!isNullOrUndefined(target)) {\n if (event.target.id.indexOf('text') > 1) {\n target = getElement(event.target.id.replace('text', 'shape'));\n }\n if ((target).hasAttribute('class') && ((target).getAttribute('class').indexOf('highlight') > -1 ||\n target.getAttribute('class').indexOf('selection') > -1)) {\n return;\n }\n this.calculateSelectedElements(event);\n return;\n }\n }\n if (chart.selectionMode === 'None') {\n return;\n }\n if (event.type === 'touchmove' && (Browser.isIos || Browser.isIos7) && this.dragging && event.preventDefault) {\n event.preventDefault();\n }\n var insideMoving = withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect);\n if (insideMoving) {\n if (this.rectGrabbing && !this.resizing) {\n this.draggedRectMoved(chart, this.dragRect, true, target);\n }\n else if (this.dragging && !this.resizing) {\n if (chart.selectionMode === 'Lasso') {\n this.getPath(chart.mouseDownX, chart.mouseDownY, chart.mouseX, chart.mouseY);\n this.drawDraggingRect(chart, this.dragRect, target);\n }\n else {\n this.dragRect = this.getDragRect(chart, chart.chartAxisLayoutPanel.seriesClipRect);\n this.drawDraggingRect(chart, this.dragRect, target);\n }\n }\n if (this.rectPoints && !(chart.allowMultiSelection)) {\n this.resizingSelectionRect(chart, new ChartLocation(chart.mouseX, chart.mouseY), null, target);\n }\n else if (((chart.allowMultiSelection) && !this.dragging) || this.resizing) {\n this.resizingSelectionRect(chart, new ChartLocation(chart.mouseX, chart.mouseY), null, target);\n }\n }\n else {\n this.completeSelection(event);\n }\n };\n Selection.prototype.getPath = function (startX, startY, endX, endY) {\n if (this.dragging) {\n if (this.path) {\n this.path = this.path + ' L' + endX + ' ' + endY;\n }\n else {\n this.path = 'M ' + startX + ' ' + startY;\n }\n }\n };\n Selection.prototype.pointChecking = function (path) {\n var _this = this;\n var chart = this.chart;\n var element;\n var svgRect = getElement(chart.svgId).getBoundingClientRect();\n var offsetX = chart.chartAxisLayoutPanel.seriesClipRect.x + Math.max(svgRect.left, 0);\n var offsetY = chart.chartAxisLayoutPanel.seriesClipRect.y + Math.max(svgRect.top, 0);\n this.multiDataIndexes[this.count] = [];\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n series.points.filter(function (point) {\n // To check whether the point have symbol location value or not.\n if (point.symbolLocations && point.symbolLocations.length) {\n element = document.elementFromPoint(point.symbolLocations[0].x + offsetX, point.symbolLocations[0].y + offsetY);\n }\n if (element === path) {\n point.isSelect = true;\n if ((_this.chart.allowMultiSelection) && _this.currentMode === 'Lasso') {\n _this.multiDataIndexes[_this.count][_this.seriesIndex] = point;\n _this.seriesIndex++;\n }\n }\n else if (!(chart.allowMultiSelection)) {\n point.isSelect = false;\n }\n });\n }\n this.seriesIndex = 0;\n };\n /**\n * Get module name.\n *\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'Selection';\n };\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n // Destroy method performed here\n };\n return Selection;\n}(BaseSelection));\nexport { Selection };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/**\n * StripLine src\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { valueToCoefficient, textElement, RectOption, appendChildElement, appendClipElement, withIn, getElement } from '../../common/utils/helper';\nimport { measureText, TextOption, PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * `StripLine` module is used to render the stripLine in chart.\n */\nvar StripLine = /** @class */ (function () {\n function StripLine() {\n }\n /**\n * Finding x, y, width and height of the strip line\n *\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} seriesClipRect seriesClipRect\n * @param {number} startValue startValue\n * @param {Axis} segmentAxis segmentAxis\n * @param {Chart} chart chart instance\n */\n StripLine.prototype.measureStripLine = function (axis, stripline, seriesClipRect, startValue, segmentAxis, chart) {\n var actualStart;\n var actualEnd;\n var orientation = axis.orientation;\n var isDateTimeAxis = axis.valueType === 'DateTime';\n if (stripline.isRepeat && stripline.size !== null) {\n actualStart = startValue;\n actualEnd = null;\n }\n else {\n if (axis.valueType === 'DateTimeCategory') {\n var start = stripline.start;\n var end = stripline.end;\n actualStart = (start != null && typeof start !== 'number') ?\n axis.labels.indexOf(this.dateToMilliSeconds(start, chart).toString()) : start;\n actualEnd = (end != null && typeof end !== 'number') ?\n axis.labels.indexOf(this.dateToMilliSeconds(end, chart).toString()) : end;\n }\n else {\n actualStart = stripline.start === null ? null : isDateTimeAxis && this.isCoreDate(stripline.start) ?\n this.dateToMilliSeconds(stripline.start, chart) : +stripline.start;\n actualEnd = stripline.end === null ? null : isDateTimeAxis && this.isCoreDate(stripline.start) ?\n this.dateToMilliSeconds(stripline.end, chart) : +stripline.end;\n }\n }\n var rect = this.getFromTovalue(actualStart, actualEnd, stripline.size, stripline.startFromAxis, axis, stripline);\n var height = (orientation === 'Vertical') ? (rect.to - rect.from) * axis.rect.height : seriesClipRect.height;\n var width = (orientation === 'Horizontal') ? (rect.to - rect.from) * axis.rect.width : seriesClipRect.width;\n var x = (orientation === 'Vertical') ? seriesClipRect.x : ((rect.from * axis.rect.width) + axis.rect.x);\n var y = (orientation === 'Horizontal') ? seriesClipRect.y : (axis.rect.y + axis.rect.height -\n ((stripline.sizeType === 'Pixel' ? rect.from : rect.to) * axis.rect.height));\n if (stripline.isSegmented && stripline.segmentStart != null && stripline.segmentEnd != null && stripline.sizeType !== 'Pixel') {\n var start = isDateTimeAxis && this.isCoreDate(stripline.segmentStart) ?\n this.dateToMilliSeconds(stripline.segmentStart, chart) : +stripline.segmentStart;\n var end = isDateTimeAxis && this.isCoreDate(stripline.segmentEnd) ?\n this.dateToMilliSeconds(stripline.segmentEnd, chart) : +stripline.segmentEnd;\n var segRect = this.getFromTovalue(start, end, null, null, segmentAxis, stripline);\n if (segmentAxis.orientation === 'Vertical') {\n y = (segmentAxis.rect.y + segmentAxis.rect.height -\n (segRect.to * segmentAxis.rect.height));\n height = (segRect.to - segRect.from) * segmentAxis.rect.height;\n }\n else {\n x = ((segRect.from * segmentAxis.rect.width) + segmentAxis.rect.x);\n width = (segRect.to - segRect.from) * segmentAxis.rect.width;\n }\n }\n if ((height !== 0 && width !== 0) || (stripline.sizeType === 'Pixel' && (stripline.start !== null || stripline.startFromAxis))) {\n return new Rect(x, y, width, height);\n }\n return new Rect(0, 0, 0, 0);\n };\n /**\n * To get from to value from start, end, size, start from axis\n *\n * @param {number} start start\n * @param {number} end end\n * @param {number} size size\n * @param {boolean} startFromAxis startFromAxis\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n */\n StripLine.prototype.getFromTovalue = function (start, end, size, startFromAxis, axis, stripline) {\n var from = (!stripline.isRepeat && startFromAxis) ? axis.visibleRange.min : start;\n var to = this.getToValue(Math.max(start, isNullOrUndefined(end) ? start : end), from, size, axis, end, stripline);\n from = this.findValue(from, axis);\n to = this.findValue(to, axis);\n return { from: valueToCoefficient(axis.isInversed ? to : from, axis), to: valueToCoefficient(axis.isInversed ? from : to, axis) };\n };\n /**\n * Finding end value of the strip line\n *\n * @param {number} to to\n * @param {number} from from\n * @param {number} size size\n * @param {Axis} axis axis\n * @param {number} end end\n * @param {StripLineSettingsModel} stripline stripline\n */\n StripLine.prototype.getToValue = function (to, from, size, axis, end, stripline) {\n var sizeType = stripline.sizeType;\n var isEnd = (end === null);\n if (axis.valueType === 'DateTime') {\n var fromValue = new Date(from);\n if (sizeType === 'Auto') {\n sizeType = axis.actualIntervalType;\n size *= axis.visibleRange.interval;\n }\n switch (sizeType) {\n case 'Years':\n return (isEnd ? new Date(fromValue.setFullYear(fromValue.getFullYear() + size)) : to);\n case 'Months':\n return (isEnd ? new Date(fromValue.setMonth(fromValue.getMonth() + size)) : to);\n case 'Days':\n return (isEnd ? new Date(fromValue.setDate(fromValue.getDate() + size)) : to);\n case 'Hours':\n return (isEnd ? new Date(fromValue.setHours(fromValue.getHours() + size)) : to);\n case 'Minutes':\n return (isEnd ? new Date(fromValue.setMinutes(fromValue.getMinutes() + size)) : to);\n case 'Seconds':\n return (isEnd ? new Date(fromValue.setSeconds(fromValue.getSeconds() + size)) : to);\n default:\n return from;\n }\n }\n else {\n return stripline.sizeType === 'Pixel' ? from : (isEnd ? (from + size) : to);\n }\n };\n /**\n * To check the strip line values within range\n *\n * @param {number} value value\n * @param {Axis} axis axis\n */\n StripLine.prototype.findValue = function (value, axis) {\n if (value < axis.visibleRange.min) {\n value = axis.visibleRange.min;\n }\n else if (value > axis.visibleRange.max) {\n value = axis.visibleRange.max;\n }\n return value;\n };\n /**\n * Date parse\n *\n * @param {Date} value date\n * @param {Chart} chart chart instance\n * @returns {Date} parsed date\n */\n StripLine.prototype.dateParse = function (value, chart) {\n var dateParser = chart.intl.getDateParser({ skeleton: 'full', type: 'dateTime' });\n var dateFormatter = chart.intl.getDateFormat({ skeleton: 'full', type: 'dateTime' });\n return new Date((Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: value }).val))))));\n };\n /**\n * To render strip lines based start and end.\n *\n * @param {Chart} chart chart\n * @param {ZIndex} position position\n * @param {Axis[]} axes axes\n * @private\n */\n StripLine.prototype.renderStripLine = function (chart, position, axes) {\n var id = chart.element.id + '_stripline_' + position + '_';\n var seriesClipRect = chart.chartAxisLayoutPanel.seriesClipRect;\n var end = 0;\n var limit = 0;\n var startValue = 0;\n var segmentAxis = null;\n var range;\n var options = new RectOption(id + 'ClipRect', 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: chart.initialClipRect.x, y: chart.initialClipRect.y,\n width: chart.initialClipRect.width,\n height: chart.initialClipRect.height\n });\n var striplineGroup = chart.renderer.createGroup({\n id: id + 'collections',\n 'clip-path': 'url(#' + id + 'ClipRect' + ')'\n });\n if (!chart.enableCanvas) {\n striplineGroup.appendChild(appendClipElement(chart.redraw, options, chart.renderer));\n }\n for (var _i = 0, axes_1 = axes; _i < axes_1.length; _i++) {\n var axis = axes_1[_i];\n var count = 0;\n for (var _a = 0, _b = axis.stripLines; _a < _b.length; _a++) {\n var stripline = _b[_a];\n if (stripline.visible && stripline.zIndex === position) {\n if (stripline.isSegmented && stripline.segmentStart != null && stripline.segmentEnd != null &&\n stripline.sizeType !== 'Pixel') {\n segmentAxis = this.getSegmentAxis(axes, axis, stripline);\n }\n if (stripline.isRepeat && stripline.repeatEvery != null && stripline.size !== null && stripline.sizeType !== 'Pixel') {\n limit = (stripline.repeatUntil != null) ? ((axis.valueType === 'DateTime') ?\n this.dateToMilliSeconds(stripline.repeatUntil, chart) : +stripline.repeatUntil) : axis.actualRange.max;\n startValue = axis.valueType === 'DateTime' && this.isCoreDate(stripline.start) ?\n this.dateToMilliSeconds(stripline.start, chart) : stripline.start;\n if ((stripline.startFromAxis && axis.valueType === 'DateTime' && stripline.sizeType === 'Auto') ||\n (stripline.start < axis.visibleRange.min)) {\n startValue = axis.visibleLabels[0].value === axis.visibleRange.min ? axis.visibleRange.min :\n axis.visibleLabels[0].value - (axis.valueType === 'DateTime' ? axis.dateTimeInterval :\n axis.visibleRange.interval);\n }\n startValue = stripline.startFromAxis && axis.valueType !== 'DateTime' ? axis.visibleRange.min : startValue;\n while (startValue < limit) {\n end = (startValue + (axis.valueType === 'DateTime' ? axis.dateTimeInterval * +stripline.size : stripline.size));\n range = withIn(end, axis.visibleRange);\n if ((startValue >= axis.visibleRange.min && startValue < axis.visibleRange.max) || range) {\n this.renderStripLineElement(axis, stripline, seriesClipRect, id, striplineGroup, chart, startValue, segmentAxis, count);\n }\n count++;\n startValue = this.getStartValue(axis, stripline, startValue, chart);\n }\n }\n else {\n this.renderStripLineElement(axis, stripline, seriesClipRect, id, striplineGroup, chart, null, segmentAxis, count);\n count++;\n }\n }\n }\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, striplineGroup, chart.redraw);\n };\n /**\n * To convert the C# date to js date\n *\n * @param {string | number | Object} value date value\n * @returns {boolean} returns true if datetime value type is string(for asp platform)\n */\n StripLine.prototype.isCoreDate = function (value) {\n return typeof value === 'string' ? true : false;\n };\n /**\n * To get the total milli seconds\n *\n * @param {Date | number | Object} value date value\n * @param {Chart} chart chart instance\n * @returns {number} returns milliseconds\n */\n StripLine.prototype.dateToMilliSeconds = function (value, chart) {\n return this.dateParse(value, chart).getTime();\n };\n /**\n * To draw the single line strip line\n *\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} rect rect\n * @param {string} id id\n * @param {Element} parent parent\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n */\n StripLine.prototype.renderPath = function (stripline, rect, id, parent, chart, axis) {\n var element = getElement(id);\n var direction = element ? element.getAttribute('d') : '';\n var d = (axis.orientation === 'Vertical') ? ('M' + rect.x + ' ' + rect.y + ' ' + 'L' + (rect.x + rect.width)\n + ' ' + rect.y) :\n ('M' + rect.x + ' ' + rect.y + ' ' + 'L' + rect.x + ' ' + (rect.y + rect.height));\n appendChildElement(chart.enableCanvas, parent, chart.renderer.drawPath(new PathOption(id, 'none', stripline.size, stripline.color, stripline.opacity, stripline.dashArray, d)), chart.redraw, true, 'x', 'y', null, direction, true);\n };\n /**\n * To draw the rectangle\n *\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} rect rect\n * @param {string} id id\n * @param {Element} parent parent\n * @param {Chart} chart chart\n */\n StripLine.prototype.renderRectangle = function (stripline, rect, id, parent, chart) {\n var element = getElement(id);\n var previousRect = element ? new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')) : null;\n appendChildElement(chart.enableCanvas, parent, chart.renderer.drawRectangle(new RectOption(id, stripline.color, stripline.border, stripline.opacity, rect, 0, 0, '', stripline.dashArray)), chart.redraw, true, 'x', 'y', null, null, true, true, previousRect);\n };\n /**\n * To create the text on strip line\n *\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} rect rect\n * @param {string} id id\n * @param {Element} parent parent\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n */\n StripLine.prototype.renderText = function (stripline, rect, id, parent, chart, axis) {\n var textSize = measureText(stripline.text, stripline.textStyle);\n var isRotationNull = (stripline.rotation === null);\n var textMid = isRotationNull ? 3 * (textSize.height / 8) : 0;\n var ty = rect.y + (rect.height / 2) + textMid;\n var rotation = isRotationNull ? ((axis.orientation === 'Vertical') ? 0 : -90) : stripline.rotation;\n var tx = rect.x + (rect.width / 2);\n var anchor;\n var padding = 5;\n if (axis.orientation === 'Horizontal') {\n tx = this.getTextStart(tx + (textMid * this.factor(stripline.horizontalAlignment)), rect.width, stripline.horizontalAlignment);\n ty = this.getTextStart(ty - textMid, rect.height, stripline.verticalAlignment) +\n (stripline.verticalAlignment === 'Start' && !isRotationNull ? (textSize.height / 4) : 0);\n anchor = isRotationNull ? this.invertAlignment(stripline.verticalAlignment) : stripline.horizontalAlignment;\n }\n else {\n tx = this.getTextStart(tx, rect.width, stripline.horizontalAlignment);\n ty = this.getTextStart(ty + (textMid * this.factor(stripline.verticalAlignment)) - padding, rect.height, stripline.verticalAlignment);\n anchor = stripline.horizontalAlignment;\n }\n textElement(chart.renderer, new TextOption(id, tx, ty, anchor, stripline.text, 'rotate(' + rotation + ' ' + tx + ',' + ty + ')', 'middle'), stripline.textStyle, stripline.textStyle.color, parent, null, null, null, null, null, null, null, null, chart.enableCanvas);\n };\n StripLine.prototype.invertAlignment = function (anchor) {\n switch (anchor) {\n case 'Start':\n anchor = 'End';\n break;\n case 'End':\n anchor = 'Start';\n break;\n }\n return anchor;\n };\n /**\n * To find the next value of the recurrence strip line\n *\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n * @param {number} startValue startValue\n * @param {Chart} chart chart instance\n * @returns {number} next start value of the recurrence strip line\n */\n StripLine.prototype.getStartValue = function (axis, stripline, startValue, chart) {\n if (axis.valueType === 'DateTime') {\n return (this.getToValue(null, startValue, +stripline.repeatEvery, axis, null, stripline));\n }\n else {\n return startValue + (+stripline.repeatEvery);\n }\n };\n /**\n * Finding segment axis for segmented strip line\n *\n * @param {Axis[]} axes axes collection\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n */\n StripLine.prototype.getSegmentAxis = function (axes, axis, stripline) {\n var segment;\n if (stripline.segmentAxisName == null) {\n return (axis.orientation === 'Horizontal') ? axes[1] : axes[0];\n }\n else {\n for (var i = 0; i < axes.length; i++) {\n if (stripline.segmentAxisName === axes[i].name) {\n segment = axes[i];\n }\n }\n return segment;\n }\n };\n /**\n * To render strip line on chart\n *\n * @param {Axis} axis axis\n * @param {StripLineSettingsModel} stripline stripline\n * @param {Rect} seriesClipRect seriesClipRect\n * @param {string} id id\n * @param {Element} striplineGroup striplineGroup\n * @param {Chart} chart chart\n * @param {number} startValue startValue\n * @param {Axis} segmentAxis segmentAxis\n * @param {number} count count\n */\n StripLine.prototype.renderStripLineElement = function (axis, stripline, seriesClipRect, id, striplineGroup, chart, startValue, segmentAxis, count) {\n var rect = this.measureStripLine(axis, stripline, seriesClipRect, startValue, segmentAxis, chart);\n if (stripline.sizeType === 'Pixel') {\n this.renderPath(stripline, rect, id + 'path_' + axis.name + '_' + count, striplineGroup, chart, axis);\n }\n else {\n if (rect.height !== 0 && rect.width !== 0) {\n this.renderRectangle(stripline, rect, id + 'rect_' + axis.name + '_' + count, striplineGroup, chart);\n }\n }\n if (stripline.text !== '') {\n this.renderText(stripline, rect, id + 'text_' + axis.name + '_' + count, striplineGroup, chart, axis);\n }\n };\n /**\n * To find the factor of the text\n *\n * @param {Anchor} anchor text anchor\n */\n StripLine.prototype.factor = function (anchor) {\n var factor = 0;\n switch (anchor) {\n case 'Start':\n factor = 1;\n break;\n case 'End':\n factor = -1;\n break;\n }\n return factor;\n };\n /**\n * To find the start value of the text\n *\n * @param {number} xy xy values\n * @param {number} size text size\n * @param {Anchor} textAlignment text alignment\n */\n StripLine.prototype.getTextStart = function (xy, size, textAlignment) {\n var padding = 5;\n switch (textAlignment) {\n case 'Start':\n xy = xy - (size / 2) + padding;\n break;\n case 'End':\n xy = xy + (size / 2) - padding;\n break;\n }\n return xy;\n };\n /**\n * To get the module name for `StripLine`.\n *\n * @private\n */\n StripLine.prototype.getModuleName = function () {\n return 'StripLine';\n };\n /**\n * To destroy the `StripLine` module.\n *\n * @private\n */\n StripLine.prototype.destroy = function () {\n // destroy peform here\n };\n return StripLine;\n}());\nexport { StripLine };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { ChartLocation, RectOption, isCollide, isOverlap } from '../../common/utils/helper';\nimport { markerAnimate, appendChildElement, getVisiblePoints } from '../../common/utils/helper';\nimport { getLabelText, convertHexToColor, calculateRect, textElement, colorNameToHex } from '../../common/utils/helper';\nimport { measureText, TextOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { textRender } from '../../common/model/constants';\nimport { createTemplate, getFontStyle, getElement, measureElementRect, templateAnimate, withIn, withInBounds } from '../../common/utils/helper';\nimport { createElement, getValue, extend } from '@syncfusion/ej2-base';\nimport { getPoint, getRotatedRectangleCoordinates, isRotatedRectIntersect } from '../../common/utils/helper';\n/**\n * `DataLabel` module is used to render data label for the data point.\n */\nvar DataLabel = /** @class */ (function () {\n /**\n * Constructor for the data label module.\n *\n * @private\n */\n function DataLabel(chart) {\n this.errorHeight = 0;\n this.chart = chart;\n }\n DataLabel.prototype.initPrivateVariables = function (series, marker) {\n var transform = '';\n var clipPath = '';\n var render = series.chart.renderer;\n var index = (series.index === undefined) ? series.category : series.index;\n if (series.chart.chartAreaType === 'Cartesian') {\n transform = 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')';\n clipPath = 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')';\n }\n if (marker.dataLabel.visible) {\n series.shapeElement = render.createGroup({\n 'id': this.chart.element.id + 'ShapeGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')'\n });\n series.textElement = render.createGroup({\n 'id': this.chart.element.id + 'TextGroup' + index,\n 'transform': transform,\n 'clip-path': clipPath\n });\n }\n this.markerHeight = ((series.type === 'Scatter' || marker.visible)) ? (marker.height / 2) : 0;\n this.commonId = this.chart.element.id + '_Series_' + index + '_Point_';\n this.calculateErrorHeight(series, series.marker.dataLabel.position);\n this.chartBackground = this.chart.chartArea.background === 'transparent' ?\n this.chart.background || this.chart.themeStyle.background : this.chart.chartArea.background;\n };\n DataLabel.prototype.calculateErrorHeight = function (series, position) {\n if (!series.errorBar.visible) {\n return null;\n }\n else if (series.errorBar.visible && this.chart.chartAreaType !== 'PolarRadar') {\n var direction = series.errorBar.direction;\n var positiveHeight = this.chart.errorBarModule.positiveHeight;\n var negativeHeight = this.chart.errorBarModule.negativeHeight;\n if (this.isRectSeries(series)) {\n if (position === 'Top' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Outer' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Plus') {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n else {\n if (position === 'Top' || position === 'Outer' || position === 'Auto') {\n if ((direction === 'Both' || direction === 'Plus') && (!series.chart.isTransposed)) {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Bottom' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n }\n else {\n this.errorHeight = 0;\n }\n };\n DataLabel.prototype.isRectSeries = function (series) {\n return series.isRectSeries || series.type === 'RangeArea';\n };\n /**\n * Render the data label for series.\n *\n * @returns {void}\n */\n DataLabel.prototype.render = function (series, chart, dataLabel) {\n // initialize the private variable\n this.initPrivateVariables(series, series.marker);\n var rect;\n var labelLocation = { x: 0, y: 0 };\n var rgbValue;\n var contrast;\n var argsData;\n var border;\n var textSize;\n var angle;\n var degree;\n this.inverted = chart.requireInvertedAxis;\n this.yAxisInversed = series.yAxis.isInversed;\n var redraw = chart.redraw;\n var isDataLabelOverlap = false;\n var coordinatesAfterRotation = [];\n var templateId = chart.element.id + '_Series_' +\n (series.index === undefined ? series.category : series.index) + '_DataLabelCollections';\n var element = createElement('div', {\n id: templateId\n });\n var visiblePoints = getVisiblePoints(series);\n var point;\n var rectCenterX;\n var rectCenterY;\n // Data label point iteration started\n for (var i = 0; i < visiblePoints.length; i++) {\n point = visiblePoints[i];\n if (!dataLabel.showZero && ((point.y !== 0) || (point.y === 0 && series.emptyPointSettings.mode === 'Zero'))) {\n return null;\n }\n this.margin = dataLabel.margin;\n var labelText = [];\n var labelLength = void 0;\n var xPos = void 0;\n var yPos = void 0;\n var xValue = void 0;\n var yValue = void 0;\n var isRender = true;\n var clip = series.clipRect;\n var shapeRect = void 0;\n isDataLabelOverlap = false;\n angle = degree = dataLabel.angle;\n border = { width: dataLabel.border.width, color: dataLabel.border.color };\n var argsFont = (extend({}, getValue('properties', dataLabel.font), null, true));\n if ((point.symbolLocations.length && point.symbolLocations[0]) ||\n (series.type === 'BoxAndWhisker' && point.regions.length)) {\n labelText = getLabelText(point, series, chart);\n labelLength = labelText.length;\n for (var i_1 = 0; i_1 < labelLength; i_1++) {\n argsData = {\n cancel: false, name: textRender, series: series,\n point: point, text: labelText[i_1], border: border,\n color: dataLabel.fill, template: dataLabel.template, font: argsFont, location: labelLocation,\n textSize: measureText(labelText[i_1], dataLabel.font)\n };\n chart.trigger(textRender, argsData);\n if (!argsData.cancel) {\n this.fontBackground = argsData.color;\n this.isDataLabelShape(argsData);\n this.markerHeight = series.type === 'Bubble' ? (point.regions[0].height / 2) : this.markerHeight;\n if (argsData.template !== null) {\n this.createDataLabelTemplate(element, series, dataLabel, point, argsData, i_1, redraw);\n }\n else {\n textSize = measureText(argsData.text, dataLabel.font);\n rect = this.calculateTextPosition(point, series, textSize, dataLabel, i_1);\n // To check whether the polar radar chart datalabel intersects the axis label or not\n if (chart.chartAreaType === 'PolarRadar') {\n for (var _i = 0, _a = chart.chartAxisLayoutPanel.visibleAxisLabelRect; _i < _a.length; _i++) {\n var rectRegion = _a[_i];\n if (isOverlap(new Rect(rect.x, rect.y, rect.width, rect.height), rectRegion)) {\n isRender = false;\n break;\n }\n }\n }\n var actualRect = new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height);\n //let notOverlapping: boolean;\n if (dataLabel.enableRotation) {\n var rectCoordinates = this.getRectanglePoints(rect);\n rectCenterX = rect.x + (rect.width / 2);\n rectCenterY = (rect.y + (rect.height / 2));\n coordinatesAfterRotation = getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle);\n isDataLabelOverlap = this.isDataLabelOverlapWithChartBound(coordinatesAfterRotation, chart, clip);\n if (!isDataLabelOverlap) {\n this.chart.rotatedDataLabelCollections.push(coordinatesAfterRotation);\n var currentPointIndex = this.chart.rotatedDataLabelCollections.length - 1;\n for (var index = currentPointIndex; index >= 0; index--) {\n if (this.chart.rotatedDataLabelCollections[currentPointIndex] &&\n this.chart.rotatedDataLabelCollections[index - 1] &&\n isRotatedRectIntersect(this.chart.rotatedDataLabelCollections[currentPointIndex], this.chart.rotatedDataLabelCollections[index - 1])) {\n isDataLabelOverlap = true;\n this.chart.rotatedDataLabelCollections[currentPointIndex] = null;\n break;\n }\n }\n }\n }\n else {\n isDataLabelOverlap = isCollide(rect, chart.dataLabelCollections, clip);\n }\n if ((!isDataLabelOverlap || dataLabel.labelIntersectAction === 'None') && isRender) {\n chart.dataLabelCollections.push(actualRect);\n if (this.isShape) {\n shapeRect = chart.renderer.drawRectangle(new RectOption(this.commonId + point.index + '_TextShape_' + i_1, argsData.color, argsData.border, dataLabel.opacity, rect, dataLabel.rx, dataLabel.ry), new Int32Array([clip.x, clip.y]));\n if (series.shapeElement) {\n series.shapeElement.appendChild(shapeRect);\n }\n }\n // Checking the font color\n rgbValue = convertHexToColor(colorNameToHex(this.fontBackground));\n contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n xPos = (rect.x + this.margin.left + textSize.width / 2) + labelLocation.x;\n yPos = (rect.y + this.margin.top + textSize.height * 3 / 4) + labelLocation.y;\n labelLocation = { x: 0, y: 0 };\n if (angle !== 0 && dataLabel.enableRotation) {\n // xValue = xPos - (dataLabel.margin.left) / 2 + (dataLabel.margin.right / 2);\n xValue = rectCenterX;\n //yValue = yPos - (dataLabel.margin.top) / 2 - (textSize.height / dataLabel.margin.top) +\n // (dataLabel.margin.bottom) / 2;\n yValue = rectCenterY;\n degree = (angle > 360) ? angle - 360 : (angle < -360) ? angle + 360 : angle;\n }\n else {\n degree = 0;\n xValue = rect.x;\n yValue = rect.y;\n }\n textElement(chart.renderer, new TextOption(this.commonId + point.index + '_Text_' + i_1, xPos, yPos, 'middle', argsData.text, 'rotate(' + degree + ',' + (xValue) + ',' + (yValue) + ')', 'auto', degree), argsData.font, argsData.font.color ||\n ((contrast >= 128 || series.type === 'Hilo') ? 'black' : 'white'), series.textElement, false, redraw, true, false, series.chart.duration, series.clipRect, null, null, chart.enableCanvas);\n }\n }\n }\n }\n }\n }\n if (element.childElementCount) {\n if (!chart.enableCanvas) {\n appendChildElement(chart.enableCanvas, getElement(chart.element.id + '_Secondary_Element'), element, chart.redraw, \n // eslint-disable-next-line @typescript-eslint/indent\n false, 'x', 'y', null, '', false, false, null, chart.duration);\n }\n else {\n getElement(chart.element.id + '_Secondary_Element').appendChild(element);\n }\n }\n };\n /**\n * Get rect coordinates\n */\n DataLabel.prototype.getRectanglePoints = function (rect) {\n var loc1 = new ChartLocation(rect.x, rect.y);\n var loc2 = new ChartLocation(rect.x + rect.width, rect.y);\n var loc3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var loc4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [loc1, loc2, loc3, loc4];\n };\n DataLabel.prototype.isDataLabelOverlapWithChartBound = function (rectCoordinates, chart, clip) {\n for (var index = 0; index < rectCoordinates.length; index++) {\n if (!withInBounds(rectCoordinates[index].x + clip.x, rectCoordinates[index].y + clip.y, chart.initialClipRect)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Render the data label template.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.createDataLabelTemplate = function (parentElement, series, dataLabel, point, data, labelIndex, redraw) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n var clip = series.clipRect;\n var childElement = createTemplate(createElement('div', {\n id: this.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabel_'\n + point.index + (labelIndex ? ('_' + labelIndex) : ''),\n styles: 'position: absolute;background-color:' + data.color + ';' +\n getFontStyle(dataLabel.font) + ';border:' + data.border.width + 'px solid ' + data.border.color + ';'\n }), point.index, data.template, this.chart, point, series, this.chart.element.id + '_DataLabel', labelIndex);\n this.calculateTemplateLabelSize(parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw);\n };\n DataLabel.prototype.calculateTemplateLabelSize = function (parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw, isReactCallback) {\n var elementRect = measureElementRect(childElement, redraw, isReactCallback);\n var rect = this.calculateTextPosition(point, series, { width: elementRect.width, height: elementRect.height }, dataLabel, labelIndex);\n var clipWidth = 0;\n var clipHeight = 0;\n var isOverlap = false;\n if (isReactCallback) {\n isOverlap = (elementRect.width === 0 || elementRect.height === 0); // To check the data label already overlap before react callback call\n // clipWidth = ((series.clipRect.x + rect.x) + elementRect.width) > parentElement.clientWidth ?\n // (parentElement.clientWidth - (series.clipRect.x + rect.x)) : 0;\n // clipHeight = (series.points.length - 1 === point.index) ? elementRect.height / 2 : 0;\n }\n childElement.style.left = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.x) + rect.x - clipWidth) + 'px';\n childElement.style.top = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.y) + rect.y + clipHeight) + 'px';\n var rgbValue = convertHexToColor(colorNameToHex(this.fontBackground));\n var vAxis = series.chart.requireInvertedAxis ? series.xAxis : series.yAxis;\n var hAxis = series.chart.requireInvertedAxis ? series.yAxis : series.xAxis;\n childElement.style.color = dataLabel.font.color ||\n ((Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000)) >= 128 ? 'black' : 'white');\n if (childElement.childElementCount && !isOverlap && (!isCollide(rect, this.chart.dataLabelCollections, clip) ||\n dataLabel.labelIntersectAction === 'None') && (series.seriesType !== 'XY' || point.yValue === undefined ||\n withIn(point.yValue, series.yAxis.visibleRange) || (series.type.indexOf('Stacking') > -1) ||\n (series.type.indexOf('100') > -1 && withIn(series.stackedValues.endValues[point.index], series.yAxis.visibleRange))) &&\n withIn(point.xValue, series.xAxis.visibleRange) && parseFloat(childElement.style.top) >= vAxis.rect.y &&\n parseFloat(childElement.style.left) >= hAxis.rect.x &&\n parseFloat(childElement.style.top) <= vAxis.rect.y + vAxis.rect.height &&\n parseFloat(childElement.style.left) <= hAxis.rect.x + hAxis.rect.width) {\n this.chart.dataLabelCollections.push(new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height));\n appendChildElement(this.chart.enableCanvas, parentElement, childElement, redraw, true, 'left', 'top');\n if (series.animation.enable && this.chart.animateSeries && !this.chart.enableCanvas) {\n this.doDataLabelAnimation(series, childElement);\n }\n else if (this.chart.enableCanvas) {\n parentElement.appendChild(childElement);\n }\n }\n };\n DataLabel.prototype.calculateTextPosition = function (point, series, textSize, dataLabel, labelIndex) {\n var labelRegion = labelIndex > 1 ? (series.type === 'Candle') ? point.regions[1] : point.regions[0] : point.regions[0];\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var location;\n location = this.getLabelLocation(point, series, textSize, labelIndex);\n var padding = 5;\n var clipRect = series.clipRect;\n // calculating alignment\n if (!this.chart.requireInvertedAxis || !this.isRectSeries(series) || series.type === 'BoxAndWhisker') {\n this.locationX = location.x;\n var alignmentValue = textSize.height + (this.borderWidth * 2) + this.markerHeight +\n this.margin.bottom + this.margin.top + padding;\n location.y = (dataLabel.position === 'Auto') ? location.y :\n this.calculateAlignment(alignmentValue, location.y, dataLabel.alignment, this.isRectSeries(series) ? point.yValue < 0 : false);\n // calculating position\n location.y = (!this.isRectSeries(series) || series.type === 'BoxAndWhisker') ?\n this.calculatePathPosition(location.y, dataLabel.position, series, point, textSize, labelIndex) :\n this.calculateRectPosition(location.y, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n if (this.isRectSeries(series) && this.chart.chartAreaType === 'PolarRadar') {\n location = this.calculatePolarRectPosition(location, dataLabel.position, series, point, textSize, labelIndex, dataLabel.alignment, alignmentValue);\n }\n }\n else {\n this.locationY = location.y;\n var alignmentValue = textSize.width + this.borderWidth + this.margin.left + this.margin.right - padding;\n location.x = dataLabel.position === 'Auto' ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, point.yValue < 0);\n location.x = this.calculateRectPosition(location.x, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n }\n var rect = calculateRect(location, textSize, this.margin);\n // Checking the condition whether data Label has been exist the clip rect\n if (!(dataLabel.enableRotation === true && dataLabel.angle !== 0) &&\n !((rect.y > (clipRect.y + clipRect.height)) || (rect.x > (clipRect.x + clipRect.width)) ||\n (rect.x + rect.width < 0) || (rect.y + rect.height < 0))) {\n rect.x = rect.x < 0 ? padding : rect.x;\n rect.y = (rect.y < 0) && !(dataLabel.labelIntersectAction === 'None') ? padding : rect.y;\n rect.x -= (rect.x + rect.width) > (clipRect.x + clipRect.width) ? (rect.x + rect.width)\n - (clipRect.x + clipRect.width) + padding : 0;\n rect.y -= (rect.y + rect.height) > (clipRect.y + clipRect.height) ? (rect.y + rect.height)\n - (clipRect.y + clipRect.height) + padding : 0;\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n }\n return rect;\n };\n // Calculation label location for polar column draw types\n DataLabel.prototype.calculatePolarRectPosition = function (location, position, series, point, size, labelIndex, alignment, alignmentValue) {\n var padding = 5;\n var columnRadius;\n var chartWidth = this.chart.availableSize.width;\n var alignmentSign = (alignment === 'Center') ? 0 : (alignment === 'Far' ? 1 : -1);\n var angle = (point.regionData.startAngle - 0.5 * Math.PI) + (point.regionData.endAngle - point.regionData.startAngle) / 2;\n if (labelIndex === 0) {\n columnRadius = point.regionData.radius < point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n else {\n columnRadius = point.regionData.radius > point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n if (series.drawType.indexOf('Stacking') > -1) {\n position = position === 'Outer' ? 'Top' : position;\n }\n else if (series.drawType.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n if (position === 'Outer') {\n columnRadius = labelIndex === 0 ? columnRadius + 2 * padding + this.markerHeight :\n columnRadius - 2 * padding - this.markerHeight;\n }\n else if (position === 'Middle') {\n columnRadius = columnRadius / 2 + padding;\n if (series.drawType === 'StackingColumn') {\n columnRadius = point.regionData.innerRadius + ((point.regionData.radius - point.regionData.innerRadius) / 2)\n + padding - (size.height / 2);\n }\n }\n else if (position === 'Top') {\n columnRadius = labelIndex === 0 ? columnRadius - 2 * padding - this.markerHeight :\n columnRadius + 2 * padding + this.markerHeight;\n }\n else if (position === 'Bottom') {\n columnRadius = 2 * padding;\n columnRadius += (series.drawType === 'StackingColumn') ? (point.regionData.innerRadius + this.markerHeight) : 0;\n }\n else {\n if (labelIndex === 0) {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius - padding :\n series.drawType === 'StackingColumn' ? columnRadius - 2 * padding : columnRadius + 2 * padding;\n }\n else {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius + padding : columnRadius - 2 * padding;\n }\n }\n columnRadius += (alignmentValue * alignmentSign);\n location.x = series.clipRect.width / 2 + series.clipRect.x + columnRadius * Math.cos(angle);\n // To change x location based on text anchor for column and stackingcolumn chart\n if (series.drawType === 'StackingColumn') {\n location.x = location.x < chartWidth / 2 ? location.x + size.width / 2 :\n (location.x > chartWidth / 2 ? location.x - size.width / 2 : location.x);\n }\n else if (series.drawType === 'Column') {\n location.x = location.x < chartWidth / 2 ? location.x - size.width / 2 :\n (location.x > chartWidth / 2 ? location.x + size.width / 2 : location.x);\n }\n location.y = series.clipRect.height / 2 + series.clipRect.y + columnRadius * Math.sin(angle);\n return location;\n };\n /**\n * Get the label location\n */\n DataLabel.prototype.getLabelLocation = function (point, series, textSize, labelIndex) {\n var location = new ChartLocation(0, 0);\n var labelRegion = (series.type === 'Candle' && labelIndex > 1) ? point.regions[1] : point.regions[0];\n if (series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var xAxis = series.xAxis;\n var yAxis = series.yAxis;\n var isInverted = series.chart.requireInvertedAxis;\n if (series.type === 'BoxAndWhisker') {\n this.markerHeight = 0;\n switch (labelIndex) {\n case 0:\n location = getPoint(point.xValue, point.median, xAxis, yAxis, isInverted);\n break;\n case 1:\n location = getPoint(point.xValue, point.maximum, xAxis, yAxis, isInverted);\n break;\n case 2:\n location = getPoint(point.xValue, point.minimum, xAxis, yAxis, isInverted);\n break;\n case 3:\n location = getPoint(point.xValue, point.upperQuartile, xAxis, yAxis, isInverted);\n break;\n case 4:\n location = getPoint(point.xValue, point.lowerQuartile, xAxis, yAxis, isInverted);\n break;\n default: {\n location = getPoint(point.xValue, point.outliers[labelIndex - 5], xAxis, yAxis, isInverted);\n this.markerHeight = series.marker.height / 2;\n break;\n }\n }\n if (isInverted) {\n location.y = point.regions[0].y + (point.regions[0].height / 2);\n }\n else {\n location.x = point.regions[0].x + (point.regions[0].width / 2);\n }\n }\n else if (labelIndex === 0 || labelIndex === 1) {\n location = new ChartLocation(point.symbolLocations[0].x, point.symbolLocations[0].y);\n }\n else if ((labelIndex === 2 || labelIndex === 3) && series.type === 'Candle') {\n location = new ChartLocation(point.symbolLocations[1].x, point.symbolLocations[1].y);\n }\n else if (isInverted) {\n location = { x: labelRegion.x + (labelRegion.width) / 2, y: labelRegion.y };\n }\n else {\n location = { x: labelRegion.x + labelRegion.width, y: labelRegion.y + (labelRegion.height) / 2 };\n }\n //Aligning the label at the beginning of the tick, when tick size is less than text size\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n if (series.chart.requireInvertedAxis) {\n var height = labelRegion.height;\n location.y = labelRegion.y + height / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n else {\n var width = labelRegion.width;\n location.x = labelRegion.x + width / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n }\n return location;\n };\n DataLabel.prototype.calculateRectPosition = function (labelLocation, rect, isMinus, position, series, textSize, labelIndex, point) {\n if (series.chart.chartAreaType === 'PolarRadar') {\n return null;\n }\n var padding = 5;\n var margin = this.margin;\n var textLength = !this.inverted ? textSize.height : textSize.width;\n var extraSpace = this.borderWidth + textLength / 2 + padding;\n if (series.type === 'StackingColumn100' || series.type === 'StackingBar100') {\n position = (position === 'Outer') ? 'Top' : position;\n }\n else if (series.type.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n else if (series.type === 'Waterfall') {\n position = position === 'Auto' ? 'Middle' : position;\n }\n switch (position) {\n case 'Bottom':\n labelLocation = !this.inverted ?\n isMinus ? (labelLocation - rect.height + extraSpace + margin.top) :\n (labelLocation + rect.height - extraSpace - margin.bottom) :\n isMinus ? (labelLocation + rect.width - extraSpace - margin.left) :\n (labelLocation - rect.width + extraSpace + margin.right);\n break;\n case 'Middle':\n labelLocation = labelLocation = !this.inverted ?\n (isMinus ? labelLocation - (rect.height / 2) : labelLocation + (rect.height / 2)) :\n (isMinus ? labelLocation + (rect.width / 2) : labelLocation - (rect.width / 2));\n break;\n case 'Auto':\n labelLocation = this.calculateRectActualPosition(labelLocation, rect, isMinus, series, textSize, labelIndex, point);\n break;\n default:\n extraSpace += this.errorHeight;\n labelLocation = this.calculateTopAndOuterPosition(labelLocation, rect, position, series, labelIndex, extraSpace, isMinus);\n break;\n }\n var check = !this.inverted ? (labelLocation < rect.y || labelLocation > rect.y + rect.height) :\n (labelLocation < rect.x || labelLocation > rect.x + rect.width);\n this.fontBackground = check ?\n (this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground)\n : this.fontBackground === 'transparent' ? (point.color || series.interior) : this.fontBackground;\n var seriesLength = series.chart.series.length;\n if (position === 'Outer' && (series.type.indexOf('Stacking') > -1) && ((seriesLength - 1) > series.index)) {\n var nextSeries = void 0;\n var nextSeriesPoint = void 0;\n for (var i = series.index + 1; i < seriesLength; i++) {\n nextSeries = series.chart.series[i];\n nextSeriesPoint = nextSeries.points[point.index];\n if ((nextSeries.type.indexOf('Stacking') > -1) && (nextSeries.type.indexOf('100') === -1)) {\n this.fontBackground = (nextSeriesPoint && ((nextSeriesPoint.yValue < 0 && point.yValue < 0) ||\n (nextSeriesPoint.yValue > 0 && point.yValue > 0))) ? (nextSeriesPoint ? nextSeriesPoint.color :\n nextSeries.interior) : this.fontBackground;\n break;\n }\n }\n }\n return labelLocation;\n };\n DataLabel.prototype.calculatePathPosition = function (labelLocation, position, series, point, size, labelIndex) {\n var padding = 5;\n if ((series.type.indexOf('Area') > -1 && series.type !== 'RangeArea')\n && this.yAxisInversed && series.marker.dataLabel.position !== 'Auto') {\n position = position === 'Top' ? 'Bottom' : position === 'Bottom' ? 'Top' : position;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n switch (position) {\n case 'Top':\n case 'Outer':\n labelLocation = labelLocation - this.markerHeight - this.borderWidth - size.height / 2 - this.margin.bottom - padding -\n this.errorHeight;\n break;\n case 'Bottom':\n labelLocation = labelLocation + this.markerHeight + this.borderWidth + size.height / 2 + this.margin.top + padding +\n this.errorHeight;\n break;\n case 'Auto':\n labelLocation = this.calculatePathActualPosition(labelLocation, this.markerHeight, series, point, size, labelIndex);\n break;\n }\n return labelLocation;\n };\n DataLabel.prototype.isDataLabelShape = function (style) {\n this.isShape = (style.color !== 'transparent' || style.border.width > 0);\n this.borderWidth = style.border.width;\n if (!this.isShape) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n }\n };\n DataLabel.prototype.calculateRectActualPosition = function (labelLocation, rect, isMinus, series, size, labelIndex, point) {\n var location;\n var labelRect;\n var isOverLap = true;\n var position = 0;\n var collection = this.chart.dataLabelCollections;\n var finalPosition = series.type.indexOf('Range') !== -1 || series.type === 'Hilo' ? 2 : 4;\n while (isOverLap && position < finalPosition) {\n var actualPosition = this.getPosition(position);\n if (series.type.indexOf('Stacking') > -1 && actualPosition === 'Outer') {\n actualPosition = 'Top';\n position++;\n }\n location = this.calculateRectPosition(labelLocation, rect, isMinus, actualPosition, series, size, labelIndex, point);\n if (!this.inverted) {\n labelRect = calculateRect(new ChartLocation(this.locationX, location), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect) || labelRect.y > series.clipRect.height;\n }\n else {\n labelRect = calculateRect(new ChartLocation(location, this.locationY), size, this.margin);\n isOverLap = labelRect.x < 0 || isCollide(labelRect, collection, series.clipRect) ||\n labelRect.x + labelRect.width > series.clipRect.width;\n }\n position++;\n }\n return location;\n };\n // alignment calculation assigned here\n DataLabel.prototype.calculateAlignment = function (value, labelLocation, alignment, isMinus) {\n switch (alignment) {\n case 'Far':\n labelLocation = !this.inverted ? (isMinus ? labelLocation + value : labelLocation - value) :\n (isMinus ? labelLocation - value : labelLocation + value);\n break;\n case 'Near':\n labelLocation = !this.inverted ? (isMinus ? labelLocation - value : labelLocation + value) :\n (isMinus ? labelLocation + value : labelLocation - value);\n break;\n // eslint-disable-next-line no-self-assign\n case 'Center':\n labelLocation = labelLocation;\n break;\n }\n return labelLocation;\n };\n //calculation for top and outer position of datalabel for rect series\n DataLabel.prototype.calculateTopAndOuterPosition = function (location, rect, position, series, index, extraSpace, isMinus) {\n var margin = this.margin;\n var top;\n switch (series.type) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'Hilo':\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n break;\n case 'Candle':\n top = (index === 0 || index === 2) && !this.yAxisInversed\n || (index === 1 || index === 3) && this.yAxisInversed;\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top, index > 1);\n break;\n case 'HiloOpenClose':\n if (index <= 1) {\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n }\n else {\n if (this.yAxisInversed) {\n location = !this.inverted ? location + extraSpace + margin.top : location - extraSpace - margin.right;\n }\n else {\n location = !this.inverted ? location - extraSpace - margin.bottom : location + extraSpace + margin.left;\n }\n }\n break;\n default:\n if ((isMinus && position === 'Top') || (!isMinus && position === 'Outer')) {\n location = !this.inverted ? location - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.left + this.markerHeight;\n }\n else {\n location = !this.inverted ? location + extraSpace + margin.top + this.markerHeight :\n location - extraSpace - margin.right - this.markerHeight;\n }\n break;\n }\n return location;\n };\n /**\n * Updates the label location\n */\n DataLabel.prototype.updateLabelLocation = function (position, location, extraSpace, margin, rect, top, inside) {\n if (inside === void 0) { inside = false; }\n if (!this.inverted) {\n if (top) {\n location = (position === 'Outer' && !inside) ? location - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.top + this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location + rect.height + extraSpace + margin.top + this.markerHeight :\n location + rect.height - extraSpace - margin.bottom - this.markerHeight;\n }\n }\n else {\n if (top) {\n location = (position === 'Outer' && !inside) ? location + extraSpace + margin.left + this.markerHeight :\n location - extraSpace - margin.right - this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location - rect.width - extraSpace - margin.right - this.markerHeight :\n location - rect.width + extraSpace + margin.left + this.markerHeight;\n }\n }\n return location;\n };\n DataLabel.prototype.calculatePathActualPosition = function (y, markerSize, series, point, size, labelIndex) {\n var points = series.points;\n var index = point.index;\n var yValue = points[index].yValue;\n var position;\n var nextPoint = points.length - 1 > index ? points[index + 1] : null;\n var previousPoint = index > 0 ? points[index - 1] : null;\n var yLocation;\n var isOverLap = true;\n var labelRect;\n var isBottom;\n var positionIndex;\n var collection = this.chart.dataLabelCollections;\n if (series.type === 'Bubble') {\n position = 'Top';\n }\n else if (series.type.indexOf('Step') > -1) {\n position = 'Top';\n if (index) {\n position = (!previousPoint || !previousPoint.visible || (yValue > previousPoint.yValue !== this.yAxisInversed)\n || yValue === previousPoint.yValue) ? 'Top' : 'Bottom';\n }\n }\n else if (series.type === 'BoxAndWhisker') {\n if (labelIndex === 1 || labelIndex === 3 || labelIndex > 4) {\n position = series.yAxis.isInversed ? 'Bottom' : 'Top';\n }\n else if (labelIndex === 2 || labelIndex === 4) {\n position = series.yAxis.isInversed ? 'Top' : 'Bottom';\n }\n else {\n isOverLap = false;\n position = 'Middle';\n yLocation = this.calculatePathPosition(y, position, series, point, size, labelIndex);\n }\n }\n else {\n if (index === 0) {\n position = (!nextPoint || !nextPoint.visible || yValue > nextPoint.yValue ||\n (yValue < nextPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else if (index === points.length - 1) {\n position = (!previousPoint || !previousPoint.visible || yValue > previousPoint.yValue ||\n (yValue < previousPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else {\n if (!nextPoint.visible && !(previousPoint && previousPoint.visible)) {\n position = 'Top';\n }\n else if (!nextPoint.visible || !previousPoint) {\n position = (nextPoint.yValue > yValue || (previousPoint && previousPoint.yValue > yValue)) ?\n 'Bottom' : 'Top';\n }\n else {\n var slope = (nextPoint.yValue - previousPoint.yValue) / 2;\n var intersectY = (slope * index) + (nextPoint.yValue - (slope * (index + 1)));\n position = !this.yAxisInversed ? intersectY < yValue ? 'Top' : 'Bottom' :\n intersectY < yValue ? 'Bottom' : 'Top';\n }\n }\n }\n isBottom = position === 'Bottom';\n positionIndex = ['Outer', 'Top', 'Bottom', 'Middle', 'Auto'].indexOf(position);\n while (isOverLap && positionIndex < 4) {\n yLocation = this.calculatePathPosition(y, this.getPosition(positionIndex), series, point, size, labelIndex);\n labelRect = calculateRect(new ChartLocation(this.locationX, yLocation), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect)\n || (labelRect.y + labelRect.height) > series.clipRect.height;\n positionIndex = isBottom ? positionIndex - 1 : positionIndex + 1;\n isBottom = false;\n }\n return yLocation;\n };\n /**\n * Animates the data label.\n *\n * @param {Series} series - Data label of the series gets animated.\n * @returns {void}\n */\n DataLabel.prototype.doDataLabelAnimation = function (series, element) {\n var shapeElements = series.shapeElement.childNodes;\n var textNode = series.textElement.childNodes;\n var delay = series.animation.delay + series.animation.duration;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var location;\n var length = element ? 1 : textNode.length;\n var tempElement;\n for (var i = 0; i < length; i++) {\n tempElement = textNode[i];\n if (element) {\n element.style.visibility = 'hidden';\n templateAnimate(element, delay, duration, 'ZoomIn');\n }\n else {\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n if (shapeElements[i]) {\n tempElement = shapeElements[i];\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n }\n }\n }\n };\n DataLabel.prototype.getPosition = function (index) {\n return (['Outer', 'Top', 'Bottom', 'Middle', 'Auto'][index]);\n };\n /**\n * Get module name.\n */\n DataLabel.prototype.getModuleName = function () {\n // Returns the module name\n return 'DataLabel';\n };\n /**\n * To destroy the dataLabel for series.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.destroy = function () {\n // Destroy method performed here\n };\n return DataLabel;\n}());\nexport { DataLabel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/**\n * AccumulationChart base file\n */\nimport { Property, ChildProperty, Complex, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { Border, Font, Animation, EmptyPointSettings, Connector } from '../../common/model/base';\nimport { Rect, PathOption } from '@syncfusion/ej2-svg-base';\nimport { stringToNumber, appendChildElement } from '../../common/utils/helper';\nimport { seriesRender, pointRender } from '../../common/model/constants';\nimport { getSeriesColor } from '../../common/model/theme';\nimport { getElement, firstToLowerCase } from '../../common/utils/helper';\n/**\n * Annotation for accumulation series\n */\nvar AccumulationAnnotationSettings = /** @class */ (function (_super) {\n __extends(AccumulationAnnotationSettings, _super);\n function AccumulationAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccumulationAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('0')\n ], AccumulationAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], AccumulationAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property('Pixel')\n ], AccumulationAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], AccumulationAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], AccumulationAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property('Center')\n ], AccumulationAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property(null)\n ], AccumulationAnnotationSettings.prototype, \"description\", void 0);\n return AccumulationAnnotationSettings;\n}(ChildProperty));\nexport { AccumulationAnnotationSettings };\n/**\n * Configures the dataLabel in accumulation chart.\n */\nvar AccumulationDataLabelSettings = /** @class */ (function (_super) {\n __extends(AccumulationDataLabelSettings, _super);\n function AccumulationDataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], AccumulationDataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], AccumulationDataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], AccumulationDataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], AccumulationDataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('Inside')\n ], AccumulationDataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], AccumulationDataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], AccumulationDataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property(0)\n ], AccumulationDataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], AccumulationDataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], AccumulationDataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ size: '11px', color: '', fontStyle: 'Normal', fontWeight: 'Normal', fontFamily: 'Segoe UI' }, Font)\n ], AccumulationDataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Complex({}, Connector)\n ], AccumulationDataLabelSettings.prototype, \"connectorStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationDataLabelSettings.prototype, \"template\", void 0);\n return AccumulationDataLabelSettings;\n}(ChildProperty));\nexport { AccumulationDataLabelSettings };\n/**\n * Center value of the Pie series.\n */\nvar PieCenter = /** @class */ (function (_super) {\n __extends(PieCenter, _super);\n function PieCenter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('50%')\n ], PieCenter.prototype, \"x\", void 0);\n __decorate([\n Property('50%')\n ], PieCenter.prototype, \"y\", void 0);\n return PieCenter;\n}(ChildProperty));\nexport { PieCenter };\n/**\n * Points model for the series.\n *\n * @public\n */\nvar AccPoints = /** @class */ (function () {\n function AccPoints() {\n /** accumulation point visibility */\n this.visible = true;\n /** accumulation point symbol location */\n this.symbolLocation = null;\n /** @private */\n this.region = null;\n /** @private */\n this.labelRegion = null;\n /** @private */\n this.labelVisible = true;\n this.regions = null;\n /** @private */\n this.isExplode = false;\n /** @private */\n this.isClubbed = false;\n /** @private */\n this.isSliced = false;\n /** @private */\n this.argsData = null;\n /** @private */\n this.isLabelUpdated = null;\n /** @private */\n this.initialLabelRegion = null;\n }\n return AccPoints;\n}());\nexport { AccPoints };\n/**\n * Configures the series in accumulation chart.\n */\nvar AccumulationSeries = /** @class */ (function (_super) {\n __extends(AccumulationSeries, _super);\n function AccumulationSeries() {\n /**\n * Specifies the dataSource for the series. It can be an array of JSON objects or an instance of DataManager.\n * ```html\n *
\n * ```\n * ```typescript\n * let dataManager: DataManager = new DataManager({\n * url: 'http://mvc.syncfusion.com/Services/Northwnd.svc/Tasks/'\n * });\n * let query: Query = new Query().take(50).where('Estimate', 'greaterThan', 0, false);\n * let pie: AccumulationChart = new AccumulationChart({\n * ...\n * series: [{\n * dataSource: dataManager,\n * xName: 'Id',\n * yName: 'Estimate',\n * query: query\n * }],\n * ...\n * });\n * pie.appendTo('#Pie');\n * ```\n *\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.points = [];\n /** @private */\n _this.clubbedPoints = [];\n /** @private */\n _this.sumOfPoints = 0;\n /** @private */\n _this.isRectSeries = true;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.rightSidePoints = [];\n /** @private */\n _this.leftSidePoints = [];\n return _this;\n }\n /**\n * To refresh the Datamanager for series\n *\n * @private\n */\n AccumulationSeries.prototype.refreshDataManager = function (accumulation, render) {\n var _this = this;\n var dateSource = this.dataSource || accumulation.dataSource;\n if (!(dateSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dateSource, count: dateSource.length }, accumulation, render);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, accumulation); });\n };\n /**\n * To get points on dataManager is success\n *\n * @private\n */\n AccumulationSeries.prototype.dataManagerSuccess = function (e, accumulation, render) {\n if (render === void 0) { render = true; }\n var argsData = {\n name: seriesRender, series: this, data: e.result\n };\n accumulation.allowServerDataBinding = false;\n accumulation.trigger(seriesRender, argsData);\n this.resultData = e.result !== '' ? e.result : [];\n if (!accumulation.isBlazor && !render) {\n this.getPoints(this.resultData, accumulation); // To update datasource using onPropertyChanged method. incident id: 290690\n }\n /* eslint-disable */\n if ((++accumulation.seriesCounts === accumulation.visibleSeries.length && render)\n // tslint:disable-next-line:no-string-literal\n || (window['Blazor'] && !render && accumulation.seriesCounts === 1)) {\n this.getPoints(this.resultData, accumulation);\n accumulation.refreshChart();\n }\n };\n /** @private To find points from result data */\n AccumulationSeries.prototype.getPoints = function (result, accumulation) {\n var length = Object.keys(result).length;\n this.sumOfPoints = 0;\n if (length === 0) {\n return null;\n }\n this.findSumOfPoints(result);\n this.points = [];\n this.clubbedPoints = [];\n this.sumOfClub = 0;\n var point;\n var colors = this.palettes.length ? this.palettes : getSeriesColor(accumulation.theme);\n var clubValue = stringToNumber(this.groupTo, this.sumOfPoints);\n for (var i = 0; i < length; i++) {\n point = this.setPoints(result, i, colors, accumulation);\n var currentY = point.y;\n if (!this.isClub(point, clubValue, i)) {\n if (isNullOrUndefined(point.y)) {\n point.visible = false;\n }\n this.pushPoints(point, colors);\n }\n else {\n point.index = this.clubbedPoints.length;\n point.isExplode = true;\n this.clubbedPoints.push(point);\n point.isSliced = true;\n }\n }\n this.lastGroupTo = this.groupTo;\n if (this.sumOfClub > 0) {\n var clubPoint_1 = this.generateClubPoint();\n this.pushPoints(clubPoint_1, colors);\n var pointsLength_1 = this.points.length - 1;\n this.clubbedPoints.map(function (point) {\n point.index += pointsLength_1;\n point.color = clubPoint_1.color;\n });\n }\n if (this.clubbedPoints.length && this.explode && this.type === 'Pie'\n && (this.explodeAll || this.points[this.points.length - 1].index === this.explodeIndex)) {\n this.points.splice(this.points.length - 1, 1);\n this.points = this.points.concat(this.clubbedPoints);\n }\n };\n AccumulationSeries.prototype.generateClubPoint = function () {\n var clubPoint = new AccPoints();\n clubPoint.isClubbed = true;\n clubPoint.x = 'Others';\n clubPoint.y = this.sumOfClub;\n clubPoint.text = clubPoint.originalText = clubPoint.x + ': ' + this.sumOfClub;\n clubPoint.sliceRadius = '80%';\n return clubPoint;\n };\n /**\n * Method to set point index and color\n */\n AccumulationSeries.prototype.pushPoints = function (point, colors) {\n point.index = this.points.length;\n point.isExplode = this.explodeAll || (point.index === this.explodeIndex);\n point.color = point.color || colors[point.index % colors.length];\n this.points.push(point);\n };\n /**\n * Method to find club point\n */\n AccumulationSeries.prototype.isClub = function (point, clubValue, index) {\n if (!isNullOrUndefined(clubValue)) {\n if (this.groupMode === 'Value' && Math.abs(point.y) <= clubValue) {\n this.sumOfClub += Math.abs(point.y);\n return true;\n }\n else if (this.groupMode === 'Point' && index >= clubValue) {\n this.sumOfClub += Math.abs(point.y);\n return true;\n }\n }\n return false;\n };\n /**\n * Method to find sum of points in the series\n */\n AccumulationSeries.prototype.findSumOfPoints = function (result) {\n var length = Object.keys(result).length;\n for (var i = 0; i < length; i++) {\n if (!isNullOrUndefined(result[i]) && !isNullOrUndefined(result[i][this.yName]) && !isNaN(result[i][this.yName])) {\n this.sumOfPoints += Math.abs(result[i][this.yName]);\n }\n }\n };\n /**\n * Method to set points x, y and text from data source\n */\n AccumulationSeries.prototype.setPoints = function (data, i, colors, accumulation) {\n var point = new AccPoints();\n point.x = getValue(this.xName, data[i]);\n point.y = getValue(this.yName, data[i]);\n point.percentage = (+(point.y / this.sumOfPoints * 100).toFixed(2));\n point.legendImageUrl = getValue(this.legendImageUrl, data[i]);\n point.color = getValue(this.pointColorMapping, data[i]);\n point.text = point.originalText = getValue(this.dataLabel.name || '', data[i]);\n point.tooltip = getValue(this.tooltipMappingName || '', data[i]);\n point.sliceRadius = getValue(this.radius, data[i]);\n point.sliceRadius = isNullOrUndefined(point.sliceRadius) ? '80%' : point.sliceRadius;\n point.separatorY = accumulation.intl.formatNumber(point.y, { useGrouping: accumulation.useGroupingSeparator });\n this.setAccEmptyPoint(point, i, data, colors);\n return point;\n };\n /**\n * Method render the series elements for accumulation chart\n * @private\n */\n AccumulationSeries.prototype.renderSeries = function (accumulation, redraw) {\n var seriesGroup = redraw ? getElement(accumulation.element.id + '_Series_' + this.index) :\n accumulation.renderer.createGroup({ id: accumulation.element.id + '_Series_' + this.index });\n this.renderPoints(accumulation, seriesGroup, redraw);\n var datalabelGroup;\n if (accumulation.accumulationDataLabelModule && this.dataLabel.visible) {\n datalabelGroup = accumulation.renderer.createGroup({ id: accumulation.element.id + '_datalabel_Series_' + this.index });\n datalabelGroup.style.visibility =\n (this.animation.enable && accumulation.animateSeries && this.type === 'Pie') ? 'hidden' : 'visible';\n this.renderDataLabel(accumulation, datalabelGroup, redraw);\n }\n if (this.type === 'Pie') {\n this.findMaxBounds(this.labelBound, this.accumulationBound);\n accumulation.pieSeriesModule.animateSeries(accumulation, this.animation, this, seriesGroup);\n }\n if (accumulation.accumulationLegendModule) {\n this.labelBound.x -= accumulation.explodeDistance;\n this.labelBound.y -= accumulation.explodeDistance;\n this.labelBound.height += (accumulation.explodeDistance - this.labelBound.y);\n this.labelBound.width += (accumulation.explodeDistance - this.labelBound.x);\n }\n };\n /**\n * Method render the points elements for accumulation chart series.\n */\n AccumulationSeries.prototype.renderPoints = function (accumulation, seriesGroup, redraw) {\n var pointId = accumulation.element.id + '_Series_' + this.index + '_Point_';\n var option;\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n var argsData = {\n cancel: false, name: pointRender, series: this, point: point, fill: point.color,\n border: this.isEmpty(point) ? { width: this.emptyPointSettings.border.width, color: this.emptyPointSettings.border.color } :\n { width: this.border.width, color: this.border.color }\n };\n accumulation.trigger(pointRender, argsData);\n point.color = argsData.fill;\n option = new PathOption(pointId + point.index, point.color, argsData.border.width || 1, argsData.border.color || point.color, this.opacity, '', '');\n accumulation[(firstToLowerCase(this.type) + 'SeriesModule')].\n renderPoint(point, this, accumulation, option, seriesGroup, redraw);\n }\n appendChildElement(false, accumulation.getSeriesElement(), seriesGroup, redraw);\n };\n /**\n * Method render the datalabel elements for accumulation chart.\n */\n AccumulationSeries.prototype.renderDataLabel = function (accumulation, datalabelGroup, redraw) {\n accumulation.accumulationDataLabelModule.findAreaRect();\n var element = createElement('div', {\n id: accumulation.element.id + '_Series_0' + '_DataLabelCollections'\n });\n this.leftSidePoints = [], this.rightSidePoints = [];\n var firstQuarter = [];\n var secondQuarter = [];\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (point.visible) {\n if (this.dataLabel.showZero || (!this.dataLabel.showZero && ((point.y !== 0) || (point.y === 0 &&\n this.emptyPointSettings.mode === 'Zero')))) {\n accumulation.accumulationDataLabelModule.renderDataLabel(point, this.dataLabel, datalabelGroup, this.points, this.index, element, redraw);\n }\n }\n if (point.midAngle >= 90 && point.midAngle <= 270) {\n this.leftSidePoints.push(point);\n }\n else {\n if (point.midAngle >= 0 && point.midAngle <= 90) {\n secondQuarter.push(point);\n }\n else {\n firstQuarter.push(point);\n }\n }\n }\n firstQuarter.sort(function (a, b) { return a.midAngle - b.midAngle; });\n secondQuarter.sort(function (a, b) { return a.midAngle - b.midAngle; });\n this.leftSidePoints.sort(function (a, b) { return a.midAngle - b.midAngle; });\n this.rightSidePoints = firstQuarter.concat(secondQuarter);\n accumulation.accumulationDataLabelModule.drawDataLabels(this, this.dataLabel, datalabelGroup, element, redraw);\n if (this.dataLabel.template !== null && element.childElementCount) {\n var dataLabelCallBack = accumulation.accumulationDataLabelModule.drawDataLabels.bind(accumulation.accumulationDataLabelModule, this, this.dataLabel, datalabelGroup, element, redraw);\n // tslint:disable-next-line:no-any\n if (accumulation.isReact) {\n accumulation.renderReactTemplates(dataLabelCallBack);\n }\n appendChildElement(false, getElement(accumulation.element.id + '_Secondary_Element'), element, redraw);\n }\n appendChildElement(false, accumulation.getSeriesElement(), datalabelGroup, redraw);\n };\n /**\n * To find maximum bounds for smart legend placing\n *\n * @private\n */\n AccumulationSeries.prototype.findMaxBounds = function (totalbound, bound) {\n totalbound.x = bound.x < totalbound.x ? bound.x : totalbound.x;\n totalbound.y = bound.y < totalbound.y ? bound.y : totalbound.y;\n totalbound.height = (bound.y + bound.height) > totalbound.height ? (bound.y + bound.height) : totalbound.height;\n totalbound.width = (bound.x + bound.width) > totalbound.width ? (bound.x + bound.width) : totalbound.width;\n };\n /**\n * To set empty point value for null points\n * @private\n */\n AccumulationSeries.prototype.setAccEmptyPoint = function (point, i, data, colors) {\n if (!(isNullOrUndefined(point.y) || isNaN(point.y))) {\n return null;\n }\n point.color = this.emptyPointSettings.fill || point.color;\n switch (this.emptyPointSettings.mode) {\n case 'Zero':\n point.y = 0;\n point.visible = true;\n break;\n case 'Average':\n var previous = data[i - 1] ? (data[i - 1][this.yName] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][this.yName] || 0) : 0;\n point.y = (Math.abs(previous) + Math.abs(next)) / 2;\n this.sumOfPoints += point.y;\n point.visible = true;\n break;\n default:\n point.visible = false;\n break;\n }\n };\n /**\n * To find point is empty\n */\n AccumulationSeries.prototype.isEmpty = function (point) {\n return point.color === this.emptyPointSettings.fill;\n };\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], AccumulationSeries.prototype, \"query\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"yName\", void 0);\n __decorate([\n Property(true)\n ], AccumulationSeries.prototype, \"visible\", void 0);\n __decorate([\n Complex({ color: null, width: 0 }, Border)\n ], AccumulationSeries.prototype, \"border\", void 0);\n __decorate([\n Complex(null, Animation)\n ], AccumulationSeries.prototype, \"animation\", void 0);\n __decorate([\n Property('SeriesType')\n ], AccumulationSeries.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"groupTo\", void 0);\n __decorate([\n Property('Value')\n ], AccumulationSeries.prototype, \"groupMode\", void 0);\n __decorate([\n Complex({}, AccumulationDataLabelSettings)\n ], AccumulationSeries.prototype, \"dataLabel\", void 0);\n __decorate([\n Property([])\n ], AccumulationSeries.prototype, \"palettes\", void 0);\n __decorate([\n Property(0)\n ], AccumulationSeries.prototype, \"startAngle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"endAngle\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"radius\", void 0);\n __decorate([\n Property('0')\n ], AccumulationSeries.prototype, \"innerRadius\", void 0);\n __decorate([\n Property('Pie')\n ], AccumulationSeries.prototype, \"type\", void 0);\n __decorate([\n Property(true)\n ], AccumulationSeries.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(false)\n ], AccumulationSeries.prototype, \"explode\", void 0);\n __decorate([\n Property('30%')\n ], AccumulationSeries.prototype, \"explodeOffset\", void 0);\n __decorate([\n Property(false)\n ], AccumulationSeries.prototype, \"explodeAll\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"explodeIndex\", void 0);\n __decorate([\n Complex({ mode: 'Drop' }, EmptyPointSettings)\n ], AccumulationSeries.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(0)\n ], AccumulationSeries.prototype, \"gapRatio\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"width\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"height\", void 0);\n __decorate([\n Property('20%')\n ], AccumulationSeries.prototype, \"neckWidth\", void 0);\n __decorate([\n Property('20%')\n ], AccumulationSeries.prototype, \"neckHeight\", void 0);\n __decorate([\n Property('Linear')\n ], AccumulationSeries.prototype, \"pyramidMode\", void 0);\n __decorate([\n Property(1)\n ], AccumulationSeries.prototype, \"opacity\", void 0);\n return AccumulationSeries;\n}(ChildProperty));\nexport { AccumulationSeries };\n/**\n * method to get series from index\n * @private\n */\nexport function getSeriesFromIndex(index, visibleSeries) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return visibleSeries[0];\n}\n/**\n * method to get point from index\n * @private\n */\nexport function pointByIndex(index, points) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n if (point.index === index) {\n return point;\n }\n }\n return null;\n}\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/**\n * Defines the common functionalities of accumulation series\n */\nimport { isNullOrUndefined, Animation, createElement } from '@syncfusion/ej2-base';\nimport { degreeToLocation, getElement, indexFinder, linear } from '../../common/utils/helper';\nimport { pointByIndex } from '../model/acc-base';\n/**\n * Accumulation Base used to do some base calculation for accumulation chart.\n */\nvar AccumulationBase = /** @class */ (function () {\n /** @private */\n function AccumulationBase(accumulation) {\n this.accumulation = accumulation;\n }\n Object.defineProperty(AccumulationBase.prototype, \"center\", {\n /**\n * Gets the center of the pie\n *\n * @private\n */\n get: function () {\n return this.pieCenter || (this.accumulation.visibleSeries[0].type === 'Pie' ?\n this.accumulation.pieSeriesModule.center : null);\n },\n /**\n * Sets the center of the pie\n *\n * @private\n */\n set: function (value) {\n this.pieCenter = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AccumulationBase.prototype, \"radius\", {\n /**\n * Gets the radius of the pie\n *\n * @private\n */\n get: function () {\n return this.pieRadius !== undefined ? this.pieRadius :\n this.accumulation.pieSeriesModule.radius;\n },\n /**\n * Sets the radius of the pie\n *\n * @private\n */\n set: function (value) {\n this.pieRadius = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AccumulationBase.prototype, \"labelRadius\", {\n /**\n * Gets the label radius of the pie\n *\n * @private\n */\n get: function () {\n return this.pieLabelRadius !== undefined ? this.pieLabelRadius :\n this.accumulation.pieSeriesModule.labelRadius;\n },\n /**\n * Sets the label radius of the pie\n *\n * @private\n */\n set: function (value) {\n this.pieLabelRadius = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Checks whether the series is circular or not\n *\n * @private\n */\n AccumulationBase.prototype.isCircular = function () {\n return this.accumulation.type === 'Pie';\n };\n /**\n * To check various radius pie\n *\n * @private\n */\n AccumulationBase.prototype.isVariousRadius = function () {\n return this.accumulation.pieSeriesModule.isRadiusMapped;\n };\n /**\n * To process the explode on accumulation chart loading\n *\n * @private\n */\n AccumulationBase.prototype.processExplode = function (event) {\n if (event.target.id.indexOf('_Series_') > -1 || event.target.id.indexOf('_datalabel_') > -1) {\n var pointIndex = indexFinder(event.target.id).point;\n if (isNaN(pointIndex) || (event.target.id.indexOf('_datalabel_') > -1 &&\n this.accumulation.visibleSeries[0].points[pointIndex].labelPosition === 'Outside')) {\n return null;\n }\n this.explodePoints(pointIndex, this.accumulation);\n this.deExplodeAll(pointIndex, this.accumulation.enableAnimation ? 300 : 0);\n }\n };\n /**\n * To invoke the explode on accumulation chart loading\n *\n * @private\n */\n AccumulationBase.prototype.invokeExplode = function () {\n var series = this.accumulation.visibleSeries[0];\n var duration = this.accumulation.enableAnimation ? 300 : 0;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (point.isExplode) {\n this.pointExplode(point.index, point, duration);\n }\n }\n if (this.accumulation.accumulationSelectionModule && this.accumulation.selectionMode !== 'None' &&\n this.accumulation.accumulationSelectionModule.selectedDataIndexes.length) {\n for (var _b = 0, _c = this.accumulation.accumulationSelectionModule.selectedDataIndexes; _b < _c.length; _b++) {\n var index = _c[_b];\n this.explodePoints(index.point, this.accumulation, true);\n this.deExplodeAll(index.point, duration);\n }\n }\n };\n /**\n * To deExplode all points in the series\n *\n * @private\n */\n AccumulationBase.prototype.deExplodeAll = function (index, animationDuration) {\n var pointId = this.accumulation.element.id + '_Series_0_Point_';\n var points = this.accumulation.visibleSeries[0].points;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var currentPoint = points_1[_i];\n if ((index !== currentPoint.index && !currentPoint.isSliced) || currentPoint.isClubbed) {\n currentPoint.isExplode = false;\n this.deExplodeSlice(currentPoint.index, pointId, animationDuration);\n }\n }\n };\n /**\n * To explode point by index\n *\n * @private\n */\n AccumulationBase.prototype.explodePoints = function (index, chart, explode) {\n if (explode === void 0) { explode = false; }\n var series = chart.visibleSeries[0];\n var points = series.points;\n var point = pointByIndex(index, points);\n var explodePoints = true;\n var duration = this.accumulation.enableAnimation ? 300 : 0;\n if (isNullOrUndefined(point)) {\n return null;\n }\n var clubPointsExploded = !explode &&\n (point.isSliced || (series.clubbedPoints.length &&\n points[points.length - 1].index === series.clubbedPoints[series.clubbedPoints.length - 1].index));\n if (series.type === 'Pie' && (clubPointsExploded || point.isClubbed)) {\n explodePoints = this.clubPointExplode(index, point, series, points, chart, duration, clubPointsExploded);\n }\n if (explodePoints) {\n this.pointExplode(index, point, duration, explode);\n }\n };\n AccumulationBase.prototype.getSum = function (points) {\n var total = 0;\n points.map(function (point) {\n total += point.visible ? point.y : 0;\n });\n return total;\n };\n AccumulationBase.prototype.clubPointExplode = function (index, point, series, points, chart, duration, clubPointsExploded) {\n if (clubPointsExploded === void 0) { clubPointsExploded = false; }\n if (point.isClubbed) {\n chart.animateSeries = false;\n points.splice(points.length - 1, 1);\n series.clubbedPoints.map(function (point) {\n point.visible = true;\n point.isExplode = true;\n });\n chart.visibleSeries[0].points = points.concat(series.clubbedPoints);\n this.deExplodeAll(index, duration);\n series.sumOfPoints = this.getSum(chart.visibleSeries[0].points);\n chart.refreshChart();\n return false;\n }\n else if (clubPointsExploded || point.isSliced) {\n chart.animateSeries = false;\n points.splice(points.length - series.clubbedPoints.length, series.clubbedPoints.length);\n var clubPoint = series.generateClubPoint();\n clubPoint.index = points.length;\n clubPoint.color = series.clubbedPoints[0].color;\n points.push(clubPoint);\n series.sumOfPoints = this.getSum(points);\n this.deExplodeAll(index, duration);\n clubPoint.isExplode = false;\n chart.visibleSeries[0].points = points;\n chart.refreshChart();\n this.pointExplode(clubPoint.index, points[clubPoint.index], 0, true);\n clubPoint.isExplode = false;\n this.deExplodeSlice(clubPoint.index, chart.element.id + '_Series_0_Point_', duration);\n if (point.isSliced) {\n return false;\n }\n }\n return true;\n };\n /**\n * To Explode points\n *\n * @param {number} index Index of a point.\n * @param {AccPoints} point To get the point of explode.\n * @param {number} duration Duration of the explode point.\n * @param {boolean} explode Either true or false.\n */\n AccumulationBase.prototype.pointExplode = function (index, point, duration, explode) {\n var translate;\n var pointId = this.accumulation.element.id + '_Series_0_Point_';\n var chart = this.accumulation;\n if (!this.isCircular()) {\n translate = {\n x: ((point.labelRegion && point.labelRegion.x < point.region.x) ? -chart.explodeDistance :\n chart.explodeDistance), y: 0\n };\n }\n else {\n translate = degreeToLocation(point.midAngle, chart.explodeDistance, this.center);\n }\n if (this.isExplode(pointId + index) || explode) {\n point.isExplode = true;\n this.explodeSlice(index, translate, pointId, this.center || { x: 0, y: 0 }, duration);\n }\n else {\n point.isExplode = false;\n this.deExplodeSlice(index, pointId, duration);\n }\n };\n /**\n * To check point is exploded by id\n */\n AccumulationBase.prototype.isExplode = function (id) {\n var element = getElement(id);\n var transform = element ? element.getAttribute('transform') : null;\n return (element && (transform === 'translate(0, 0)' || transform === null || transform === 'translate(0)'));\n };\n /**\n * To deExplode the point by index\n */\n AccumulationBase.prototype.deExplodeSlice = function (index, sliceId, animationDuration) {\n var element = getElement(sliceId + index);\n if (element) {\n var borderElement = element.parentNode.lastChild.hasAttribute('transform');\n if (borderElement) {\n element.parentNode.lastChild.removeAttribute('transform');\n }\n }\n var transform = element ? element.getAttribute('transform') : null;\n if (this.accumulation.enableAnimation && element && transform &&\n transform !== 'translate(0, 0)' && transform !== 'translate(0)') {\n var result = /translate\\((-?\\d+\\.?\\d*),?\\s*(-?\\d+[.]?\\d*)?\\)/.exec(transform);\n this.performAnimation(index, sliceId, 0, 0, +result[1], +result[2] || 0, animationDuration, true);\n }\n else {\n this.performAnimation(index, sliceId, 0, 0, 0, 0, animationDuration, true);\n }\n };\n /**\n * To translate the point elements by index and position\n */\n AccumulationBase.prototype.setTranslate = function (index, sliceId, position, transform) {\n this.setElementTransform(sliceId + index, position);\n if (this.accumulation.visibleSeries[0].dataLabel.visible) {\n sliceId = this.accumulation.element.id + '_datalabel_Series_0_';\n this.setElementTransform(sliceId + 'shape_' + index, position);\n this.setElementTransform(sliceId + 'text_' + index, position + transform);\n this.setElementTransform(sliceId + 'connector_' + index, position);\n }\n };\n /**\n * To translate the point element by id and position\n */\n AccumulationBase.prototype.setElementTransform = function (id, position) {\n var element = getElement(id);\n if (element) {\n element.setAttribute('transform', position);\n }\n };\n /**\n * To translate the point elements by index position\n */\n AccumulationBase.prototype.explodeSlice = function (index, translate, sliceId, center, animationDuration) {\n this.performAnimation(index, sliceId, 0, 0, translate.x - center.x, translate.y - center.y, animationDuration);\n };\n /**\n * To Perform animation point explode\n *\n * @param {number} index Index of the series.\n * @param {string} sliceId ID of the series.\n * @param {number} startX X value of start.\n * @param {number} startY Y value of start.\n * @param {number} endX X value of end.\n * @param {number} endY Y value of end.\n * @param {number} duration Duration of the animation.\n */\n AccumulationBase.prototype.performAnimation = function (index, sliceId, startX, startY, endX, endY, duration, isReverse) {\n var _this = this;\n var chart = this.accumulation;\n var values = sliceId.split('_');\n var seriesIndex = parseInt(sliceId.split('_')[values.length - 3], 10);\n var point = chart.visibleSeries[seriesIndex].points[index];\n if (duration <= 0) {\n this.setTranslate(index, sliceId, 'translate(' + (endX) + ', ' + (endY) + ')', point.transform);\n return null;\n }\n var xValue;\n var yValue;\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n xValue = linear(args.timeStamp, startX, endX, args.duration);\n yValue = linear(args.timeStamp, startY, endY, args.duration);\n _this.setTranslate(index, sliceId, 'translate(' + (isReverse ? endX - xValue : xValue) + ', ' + (isReverse ? endY - yValue : yValue) + ')', point.transform);\n },\n end: function () {\n _this.setTranslate(index, sliceId, 'translate(' + (isReverse ? startX : endX) + ', ' + (isReverse ? startX : endY) + ')', point.transform);\n }\n });\n };\n return AccumulationBase;\n}());\nexport { AccumulationBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Accumulation charts base file\n */\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { stringToNumber, ChartLocation, degreeToLocation, getAnimationFunction, getElement } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { animationComplete } from '../../common/model/constants';\nimport { AccumulationBase } from './accumulation-base';\n/**\n * PieBase class used to do pie base calculations.\n */\nvar PieBase = /** @class */ (function (_super) {\n __extends(PieBase, _super);\n function PieBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To initialize the property values.\n *\n * @private\n */\n PieBase.prototype.initProperties = function (chart, series) {\n this.accumulation = chart;\n this.size = Math.min(chart.initialClipRect.width, chart.initialClipRect.height);\n this.initAngles(series);\n var r = parseInt(series.radius, 10);\n if ((series.radius.indexOf('%') !== -1 || typeof r === 'number') && !isNaN(r)) {\n this.isRadiusMapped = false;\n this.radius = stringToNumber(series.radius, this.size / 2);\n this.innerRadius = stringToNumber(series.innerRadius, this.radius);\n this.labelRadius = series.dataLabel.position === 'Inside' ? (((this.radius - this.innerRadius) / 2) + this.innerRadius) :\n (this.radius + stringToNumber(series.dataLabel.connectorStyle.length || '4%', this.size / 2));\n }\n else {\n var radiusCollection = [];\n this.isRadiusMapped = true;\n for (var i = 0; i < Object.keys(series.points).length; i++) {\n if (series.points[i].sliceRadius.indexOf('%') !== -1) {\n radiusCollection[i] = stringToNumber(series.points[i].sliceRadius, this.size / 2);\n }\n else {\n radiusCollection[i] = parseInt(series.points[i].sliceRadius, 10);\n }\n }\n var minRadius = Math.min.apply(null, radiusCollection);\n var maxRadius = Math.max.apply(null, radiusCollection);\n this.radius = this.seriesRadius = maxRadius;\n this.innerRadius = stringToNumber(series.innerRadius, this.seriesRadius);\n this.innerRadius = this.innerRadius > minRadius ? (this.innerRadius / 2) : this.innerRadius;\n }\n // this.radius = stringToNumber(series.radius, size / 2);\n // this.innerRadius = stringToNumber(series.innerRadius, this.radius);\n // this.labelRadius = series.dataLabel.position === 'Inside' ? (((this.radius - this.innerRadius) / 2) + this.innerRadius) :\n // (this.radius + stringToNumber(series.dataLabel.connectorStyle.length || '4%', size / 2));\n chart.explodeDistance = series.explode ? stringToNumber(series.explodeOffset, this.radius) : 0;\n this.findCenter(chart, series);\n this.defaultLabelBound(series, series.dataLabel.visible, series.dataLabel.position);\n this.totalAngle -= 0.001;\n };\n /*\n * To get label radius of the pie.\n * @private\n */\n PieBase.prototype.getLabelRadius = function (series, point) {\n return series.dataLabel.position === 'Inside' ?\n ((((stringToNumber(point.sliceRadius, this.radius) - this.innerRadius)) / 2) + this.innerRadius) :\n (stringToNumber(point.sliceRadius, this.seriesRadius) + stringToNumber(series.dataLabel.connectorStyle.length || '4%', this.size / 2));\n };\n /**\n * To find the center of the accumulation.\n *\n * @private\n */\n PieBase.prototype.findCenter = function (accumulation, series) {\n this.accumulation = accumulation;\n this.center = {\n x: stringToNumber(accumulation.center.x, accumulation.initialClipRect.width) + (accumulation.initialClipRect.x),\n y: stringToNumber(accumulation.center.y, accumulation.initialClipRect.height) + (accumulation.initialClipRect.y)\n };\n var accumulationRect = this.getSeriesBound(series);\n var accumulationRectCenter = new ChartLocation(accumulationRect.x + accumulationRect.width / 2, accumulationRect.y + accumulationRect.height / 2);\n this.center.x += (this.center.x - accumulationRectCenter.x);\n this.center.y += (this.center.y - accumulationRectCenter.y);\n this.accumulation.origin = this.center;\n };\n /**\n * To find angles from series.\n */\n PieBase.prototype.initAngles = function (series) {\n var endAngle = isNullOrUndefined(series.endAngle) ? series.startAngle : series.endAngle;\n this.totalAngle = (endAngle - series.startAngle) % 360;\n this.startAngle = series.startAngle - 90;\n this.totalAngle = this.totalAngle <= 0 ? (360 + this.totalAngle) : this.totalAngle;\n this.startAngle = (this.startAngle < 0 ? (this.startAngle + 360) : this.startAngle) % 360;\n };\n /**\n * To calculate data-label bound\n *\n * @private\n */\n PieBase.prototype.defaultLabelBound = function (series, visible, position) {\n var accumulationBound = this.getSeriesBound(series);\n series.accumulationBound = accumulationBound;\n series.labelBound = new Rect(accumulationBound.x, accumulationBound.y, accumulationBound.width + accumulationBound.x, accumulationBound.height + accumulationBound.y);\n if (visible && position === 'Outside') {\n series.labelBound = new Rect(Infinity, Infinity, -Infinity, -Infinity);\n }\n };\n /**\n * To calculate series bound\n *\n * @private\n */\n PieBase.prototype.getSeriesBound = function (series) {\n var rect = new Rect(Infinity, Infinity, -Infinity, -Infinity);\n this.initAngles(series);\n var start = this.startAngle;\n var total = this.totalAngle;\n var end = (this.startAngle + total) % 360;\n end = (end === 0) ? 360 : end;\n series.findMaxBounds(rect, this.getRectFromAngle(start));\n series.findMaxBounds(rect, this.getRectFromAngle(end));\n series.findMaxBounds(rect, new Rect(this.center.x, this.center.y, 0, 0));\n var nextQuandrant = (Math.floor(start / 90) * 90 + 90) % 360;\n var lastQuadrant = (Math.floor(end / 90) * 90) % 360;\n lastQuadrant = (lastQuadrant === 0) ? 360 : lastQuadrant;\n if (total >= 90 || lastQuadrant === nextQuandrant) {\n series.findMaxBounds(rect, this.getRectFromAngle(nextQuandrant));\n series.findMaxBounds(rect, this.getRectFromAngle(lastQuadrant));\n }\n if (start === 0 || (start + total >= 360)) {\n series.findMaxBounds(rect, this.getRectFromAngle(0));\n }\n var length = nextQuandrant === lastQuadrant ? 0 : Math.floor(total / 90);\n for (var i = 1; i < length; i++) {\n nextQuandrant = nextQuandrant + 90;\n if ((nextQuandrant < lastQuadrant || end < start) || total === 360) {\n series.findMaxBounds(rect, this.getRectFromAngle(nextQuandrant));\n }\n }\n rect.width -= rect.x;\n rect.height -= rect.y;\n return rect;\n };\n /**\n * To get rect location size from angle\n */\n PieBase.prototype.getRectFromAngle = function (angle) {\n var location = degreeToLocation(angle, this.radius, this.center);\n return new Rect(location.x, location.y, 0, 0);\n };\n /**\n * To get path arc direction\n */\n PieBase.prototype.getPathArc = function (center, start, end, radius, innerRadius) {\n var degree = end - start;\n degree = degree < 0 ? (degree + 360) : degree;\n var flag = (degree < 180) ? 0 : 1;\n if (!innerRadius && innerRadius === 0) {\n return this.getPiePath(center, degreeToLocation(start, radius, center), degreeToLocation(end, radius, center), radius, flag);\n }\n else {\n return this.getDoughnutPath(center, degreeToLocation(start, radius, center), degreeToLocation(end, radius, center), radius, degreeToLocation(start, innerRadius, center), degreeToLocation(end, innerRadius, center), innerRadius, flag);\n }\n };\n /**\n * To get pie direction\n */\n PieBase.prototype.getPiePath = function (center, start, end, radius, clockWise) {\n return 'M ' + center.x + ' ' + center.y + ' L ' + start.x + ' ' + start.y + ' A ' + radius + ' ' +\n radius + ' 0 ' + clockWise + ' 1 ' + end.x + ' ' + end.y + ' Z';\n };\n /**\n * To get doughnut direction\n */\n PieBase.prototype.getDoughnutPath = function (center, start, end, radius, innerStart, innerEnd, innerRadius, clockWise) {\n return 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' + radius + ' 0 ' + clockWise +\n ' 1 ' + end.x + ' ' + end.y + ' L ' + innerEnd.x + ' ' + innerEnd.y + ' A ' + innerRadius +\n ' ' + innerRadius + ' 0 ' + clockWise + ',0 ' + innerStart.x + ' ' + innerStart.y + ' Z';\n };\n /**\n * Method to start animation for pie series.\n */\n PieBase.prototype.doAnimation = function (slice, series) {\n var _this = this;\n var startAngle = series.startAngle - 90;\n var duration = this.accumulation.duration ? this.accumulation.duration : series.animation.duration;\n var value;\n this.center.x += 1;\n var radius = Math.max(this.accumulation.availableSize.height, this.accumulation.availableSize.width) * 0.75;\n radius += radius * (0.414); // formula r + r / 2 * (1.414 -1)\n // eslint-disable-next-line @typescript-eslint/ban-types\n var effect = getAnimationFunction('Linear'); // need to check animation type\n new Animation({}).animate(slice, {\n duration: duration,\n delay: series.animation.delay,\n progress: function (args) {\n value = effect(args.timeStamp, startAngle, _this.totalAngle, args.duration);\n slice.setAttribute('d', _this.getPathArc(_this.center, startAngle, value, radius, 0));\n },\n end: function () {\n _this.center.x -= 1;\n slice.setAttribute('d', _this.getPathArc(_this.center, 0, 359.99999, radius, 0));\n _this.accumulation.trigger(animationComplete, _this.accumulation.isBlazor ? {} :\n { series: series, accumulation: _this.accumulation, chart: _this.accumulation });\n var datalabelGroup = getElement(_this.accumulation.element.id + '_datalabel_Series_' + series.index);\n datalabelGroup.style.visibility = _this.accumulation.isDestroyed ? 'hidden' : 'visible';\n }\n });\n };\n return PieBase;\n}(AccumulationBase));\nexport { PieBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { degreeToLocation, getElement, linear, stringToNumber, indexFinder } from '../../common/utils/helper';\nimport { PieBase } from '../renderer/pie-base';\nimport { Animation, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * PieSeries module used to render `Pie` Series.\n */\nvar PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To get path option, degree, symbolLocation from the point.\n *\n * @private\n */\n PieSeries.prototype.renderPoint = function (point, series, chart, option, seriesGroup, redraw) {\n var sum = series.sumOfPoints;\n point.startAngle = this.startAngle;\n var yValue = point.visible ? point.y : 0;\n var degree = (sum) ? ((Math.abs(yValue) / sum) * (this.totalAngle)) : null;\n var start = Math.PI / 180 * ((90 - (360 - this.startAngle)) - 90);\n this.radius = this.isRadiusMapped ? stringToNumber(point.sliceRadius, this.seriesRadius) : this.radius;\n option.d = this.getPathOption(point, degree, this.startAngle % 360);\n point.midAngle = (this.startAngle - (degree / 2)) % 360;\n point.endAngle = this.startAngle % 360;\n point.symbolLocation = degreeToLocation(point.midAngle, (this.radius + this.innerRadius) / 2, this.center);\n if (!redraw) {\n seriesGroup.appendChild(chart.renderer.drawPath(option));\n point.degree = degree;\n point.start = start;\n }\n else {\n seriesGroup.appendChild(chart.renderer.drawPath(option));\n this.refresh(point, degree, start, chart, option);\n }\n };\n PieSeries.prototype.findSeries = function (e) {\n var borderGap = 3; // Gap between pie/doughnut chart and border\n var width = 2; // width of the border\n var radius = this.innerRadius === 0 ? this.radius + borderGap : this.innerRadius - borderGap;\n var innerRadius = this.innerRadius === 0 ? radius + width : radius - width;\n this.toggleInnerPoint(e, radius, innerRadius);\n };\n PieSeries.prototype.toggleInnerPoint = function (event, radius, innerRadius) {\n var target = event.target;\n var id = indexFinder(target.id, true);\n var accumulationId = event.target.id.substring(0, (event.target.id.indexOf('Series') - 1));\n var borderElement = document.getElementById(this.accumulation.element.id + 'PointHover_Border');\n var createBorderEle;\n var seriesIndex = id.series;\n var pointIndex = id.point;\n var srcElem = getElement(accumulationId + '_Series_' + seriesIndex + '_Point_' + pointIndex);\n if (!isNaN(id.series) && srcElem) {\n if (!isNullOrUndefined(seriesIndex) && !isNaN(seriesIndex) && !isNullOrUndefined(pointIndex) && !isNaN(pointIndex)) {\n var point = this.accumulation.visibleSeries[0].points[pointIndex];\n var opacity = srcElem.getAttribute('class') === accumulationId + '_ej2_deselected' ?\n this.accumulation.tooltip.enable ? 0.5 : 0.3 : this.accumulation.tooltip.enable ? 0.5 : 1;\n var innerPie = this.getPathArc(this.accumulation.pieSeriesModule.center, point.startAngle % 360, (point.startAngle + point.degree) % 360, radius, innerRadius);\n // while using annotation as a chart border will appear in both chart.so changed checked the id with target id\n if ((borderElement) && (accumulationId === this.accumulation.element.id) &&\n (borderElement.getAttribute('d') !== innerPie || point.isExplode)) {\n borderElement.parentNode.removeChild(borderElement);\n borderElement = null;\n }\n var seriousGroup = getElement(accumulationId + '_Series_' + seriesIndex);\n if (!borderElement && ((!point.isExplode) || (point.isExplode && event.type !== 'click'))) {\n var path = new PathOption(accumulationId + 'PointHover_Border', point.color, 1, point.color, opacity, '', innerPie);\n createBorderEle = this.accumulation.renderer.drawPath(path);\n createBorderEle.removeAttribute('transform');\n if (this.accumulation.selectionMode !== 'None' && event.target.hasAttribute('class')) {\n this.accumulation.accumulationSelectionModule.addSvgClass(createBorderEle, event.target.getAttribute('class'));\n }\n seriousGroup.appendChild(createBorderEle);\n if (point.isExplode && createBorderEle) {\n var borderExplode = srcElem.getAttribute('transform');\n createBorderEle.setAttribute('transform', borderExplode);\n }\n }\n }\n }\n else if (borderElement) {\n this.removeBorder(borderElement, 1000);\n borderElement = null;\n }\n };\n PieSeries.prototype.removeBorder = function (borderElement, duration) {\n if (borderElement) {\n setTimeout(function () {\n if (borderElement.parentNode) {\n borderElement.parentNode.removeChild(borderElement);\n }\n }, duration);\n }\n };\n PieSeries.prototype.refresh = function (point, degree, start, chart, option) {\n var _this = this;\n var seriesElement = getElement(option.id);\n var duration = chart.duration ? chart.duration : 300;\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: 0,\n progress: function (args) {\n var curentDegree = linear(args.timeStamp, point.degree, (degree - point.degree), args.duration);\n var currentStartAngle = linear(args.timeStamp, point.start, start - point.start, args.duration);\n currentStartAngle = ((currentStartAngle / (Math.PI / 180)) + 360) % 360;\n seriesElement.setAttribute('d', _this.getPathOption(point, curentDegree, currentStartAngle));\n if (point.isExplode) {\n chart.accBaseModule.explodePoints(point.index, chart, true);\n }\n seriesElement.style.visibility = 'visible';\n },\n end: function () {\n seriesElement.style.visibility = point.visible ? 'visible' : 'hidden';\n seriesElement.setAttribute('d', option.d);\n point.degree = degree;\n point.start = start;\n }\n });\n };\n /**\n * To get path option from the point.\n */\n PieSeries.prototype.getPathOption = function (point, degree, startAngle) {\n if (!degree) {\n return '';\n }\n var path = this.getPathArc(this.center, startAngle % 360, (startAngle + degree) % 360, this.isRadiusMapped ? stringToNumber(point.sliceRadius, this.seriesRadius) : this.radius, this.innerRadius);\n //const path: string = this.getPathArc(this.center, startAngle % 360, (startAngle + degree) % 360, this.radius, this.innerRadius);\n this.startAngle += degree;\n return path;\n };\n /**\n * To animate the pie series.\n *\n * @private\n */\n PieSeries.prototype.animateSeries = function (accumulation, option, series, slice) {\n var groupId = accumulation.element.id + 'SeriesGroup' + series.index;\n if (series.animation.enable && accumulation.animateSeries) {\n var clippath = accumulation.renderer.createClipPath({ id: groupId + '_clipPath' });\n var path = new PathOption(groupId + '_slice', 'transparent', 1, 'transparent', 1, '', '');\n var clipslice = accumulation.renderer.drawPath(path);\n clippath.appendChild(clipslice);\n accumulation.svgObject.appendChild(clippath);\n // I263828 pie chart animation issue fixed for safari browser\n slice.setAttribute('style', 'clip-path:url(#' + clippath.id + '); -webkit-clip-path:url(#' + clippath.id + ');');\n this.doAnimation(clipslice, series);\n }\n };\n /**\n * To get the module name of the Pie series.\n */\n PieSeries.prototype.getModuleName = function () {\n return 'PieSeries';\n };\n /**\n * To destroy the pie series.\n *\n * @returns {void}\n * @private\n */\n PieSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n return PieSeries;\n}(PieBase));\nexport { PieSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * AccumulationChart file\n */\nimport { Property, Component, Complex, Collection, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { Internationalization, Event, Browser, EventHandler, Touch } from '@syncfusion/ej2-base';\nimport { remove, extend, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { Font, Margin, Border, TooltipSettings, Indexes } from '../common/model/base';\nimport { AccumulationSeries, PieCenter } from './model/acc-base';\nimport { Theme, getThemeColor } from '../common/model/theme';\nimport { load, pointClick } from '../common/model/constants';\nimport { pointMove, chartMouseClick, chartMouseDown } from '../common/model/constants';\nimport { chartMouseLeave, chartMouseMove, chartMouseUp, resized, beforeResize } from '../common/model/constants';\nimport { LegendSettings } from '../common/legend/legend';\nimport { subtractRect, indexFinder, appendChildElement, redrawElement, blazorTemplatesReset } from '../common/utils/helper';\nimport { RectOption, showTooltip, ImageOption } from '../common/utils/helper';\nimport { textElement, createSvg, calculateSize, removeElement, firstToLowerCase, withInBounds } from '../common/utils/helper';\nimport { getElement, titlePositionX } from '../common/utils/helper';\nimport { Rect, Size, measureText, TextOption } from '@syncfusion/ej2-svg-base';\nimport { Data } from '../common/model/data';\nimport { AccumulationBase } from './renderer/accumulation-base';\nimport { PieSeries } from './renderer/pie-series';\nimport { AccumulationAnnotationSettings } from './model/acc-base';\nimport { getTitle } from '../common/utils/helper';\nimport { ExportUtils } from '../common/utils/export';\n/**\n * Represents the AccumulationChart control.\n * ```html\n *
\n * \n * ```\n *\n * @public\n */\nvar AccumulationChart = /** @class */ (function (_super) {\n __extends(AccumulationChart, _super);\n /**\n * Constructor for creating the AccumulationChart widget\n *\n * @private\n */\n function AccumulationChart(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.animateselected = false;\n /** @private */\n _this.explodeDistance = 0;\n _this.chartid = 57724;\n return _this;\n }\n /**\n * Animate the series bounds on data change.\n *\n * @private\n */\n AccumulationChart.prototype.animate = function (duration) {\n this.duration = duration ? duration : 700;\n this.animateselected = true;\n this.animateSeries = false;\n var temIndex = 0;\n var tempcolor = [];\n var tempindex = [];\n var tempindex1 = [];\n var currentSeries = this.visibleSeries[0];\n var datasource = [];\n datasource = currentSeries.dataSource;\n currentSeries.sumOfPoints = 0;\n if (currentSeries.points.length < Object.keys(currentSeries.dataSource).length) {\n this.refresh();\n }\n else if (currentSeries.points.length > Object.keys(currentSeries.dataSource).length) {\n var currentSeries_1 = this.visibleSeries[0];\n currentSeries_1.points = currentSeries_1.points.filter(function (entry1) {\n entry1.visible = false;\n tempindex.push(entry1.index);\n tempcolor.push(entry1.color);\n return (datasource).some(function (entry2) {\n var accPoint = entry2;\n if (entry1.x === accPoint.x) {\n entry1.visible = true;\n tempindex1.push(entry1.index);\n entry1.index = temIndex;\n temIndex++;\n }\n return entry1.x === accPoint.x;\n });\n });\n var missing = tempindex.filter(function (item) { return tempindex1.indexOf(item) < 0; });\n var interval = tempindex.length - missing.length;\n for (var i = (tempindex.length - 1); i >= interval; i--) {\n removeElement('container_Series_0_Point_' + tempindex[i]);\n }\n for (var i = 0; i < currentSeries_1.points.length; i++) {\n currentSeries_1.points[i].y = currentSeries_1.dataSource[i].y;\n currentSeries_1.points[i].color = tempcolor[i];\n currentSeries_1.sumOfPoints += currentSeries_1.dataSource[i].y;\n }\n this.redraw = this.enableAnimation;\n this.animateSeries = false;\n this.calculateBounds();\n this.renderElements();\n }\n else {\n for (var i = 0; i < currentSeries.points.length; i++) {\n currentSeries.points[i].y = currentSeries.dataSource[i][currentSeries.yName];\n currentSeries.points[i].color = currentSeries.dataSource[i][currentSeries.pointColorMapping] != null\n ? currentSeries.dataSource[i][currentSeries.pointColorMapping] : currentSeries.points[i].color;\n currentSeries.sumOfPoints += currentSeries.dataSource[i][currentSeries.yName];\n }\n this.redraw = this.enableAnimation;\n this.animateSeries = false;\n this.removeSvg();\n this.refreshPoints(currentSeries.points);\n this.renderElements();\n }\n };\n Object.defineProperty(AccumulationChart.prototype, \"type\", {\n /** @private */\n get: function () {\n if (this.series && this.series.length) {\n return this.series[0].type;\n }\n return 'Pie';\n },\n enumerable: true,\n configurable: true\n });\n // accumulation chart methods\n /**\n * To create svg object, renderer and binding events for the container.\n */\n AccumulationChart.prototype.preRender = function () {\n var blazor = 'Blazor';\n this.isBlazor = window[blazor];\n this.allowServerDataBinding = false;\n this.unWireEvents();\n this.setCulture();\n this.animateSeries = true;\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-accumulationchart').length;\n this.element.id = 'acc_chart_' + this.chartid + '_' + collection;\n }\n calculateSize(this);\n this.wireEvents();\n };\n /**\n * Themeing for chart goes here\n */\n AccumulationChart.prototype.setTheme = function () {\n /*! Set theme for accumulation chart */\n this.themeStyle = getThemeColor(this.theme);\n };\n /**\n * To render the accumulation chart elements\n */\n AccumulationChart.prototype.render = function () {\n var _this = this;\n if (this.element.className.indexOf('e-accumulationchart') === -1) {\n this.element.classList.add('e-accumulationchart');\n }\n var loadEventData = {\n chart: this.isBlazor ? {} : this,\n accumulation: this.isBlazor ? {} : this,\n theme: this.theme, name: load, cancel: false\n };\n this.trigger(load, loadEventData, function () {\n _this.theme = _this.isBlazor ? loadEventData.theme : _this.theme;\n _this.setTheme();\n _this.accBaseModule = new AccumulationBase(_this);\n _this.pieSeriesModule = new PieSeries(_this);\n _this.calculateVisibleSeries();\n _this.processData();\n _this.renderComplete();\n _this.allowServerDataBinding = true;\n });\n };\n /**\n * Method to unbind events for accumulation chart\n */\n AccumulationChart.prototype.unWireEvents = function () {\n /*! Find the Events type */\n var isIE11Pointer = Browser.isPointer;\n var start = Browser.touchStartEvent;\n var move = Browser.touchMoveEvent;\n var stop = Browser.touchEndEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n /*! UnBind the Event handler */\n EventHandler.remove(this.element, move, this.accumulationMouseMove);\n EventHandler.remove(this.element, stop, this.accumulationMouseEnd);\n EventHandler.remove(this.element, start, this.accumulationMouseStart);\n EventHandler.remove(this.element, 'click', this.accumulationOnMouseClick);\n EventHandler.remove(this.element, 'contextmenu', this.accumulationRightClick);\n EventHandler.remove(this.element, cancel, this.accumulationMouseLeave);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.accumulationResize);\n };\n /**\n * Method to bind events for the accumulation chart\n */\n AccumulationChart.prototype.wireEvents = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (!this.element) {\n return;\n }\n /*! Find the Events type */\n var isIE11Pointer = Browser.isPointer;\n var start = Browser.touchStartEvent;\n var stop = Browser.touchEndEvent;\n var move = Browser.touchMoveEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n /*! Bind the Event handler */\n EventHandler.add(this.element, move, this.accumulationMouseMove, this);\n EventHandler.add(this.element, stop, this.accumulationMouseEnd, this);\n EventHandler.add(this.element, start, this.accumulationMouseStart, this);\n EventHandler.add(this.element, 'click', this.accumulationOnMouseClick, this);\n EventHandler.add(this.element, 'contextmenu', this.accumulationRightClick, this);\n EventHandler.add(this.element, cancel, this.accumulationMouseLeave, this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.accumulationResize.bind(this));\n new Touch(this.element); // To avoid geasture blocking for browser\n /*! Apply the style for chart */\n this.setStyle(this.element);\n };\n /**\n * Method to set mouse x, y from events\n */\n AccumulationChart.prototype.setMouseXY = function (e) {\n var pageX;\n var pageY;\n var svgRectElement = getElement(this.element.id + '_svg');\n if (svgRectElement && this.element) {\n var svgRect = svgRectElement.getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n if (e.type.indexOf('touch') > -1) {\n this.isTouch = true;\n var touchArg = e;\n pageY = touchArg.changedTouches[0].clientY;\n pageX = touchArg.changedTouches[0].clientX;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.mouseY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n this.mouseX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n }\n };\n /**\n * Handles the mouse end.\n *\n * @returns {boolean} Mouse end of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseEnd = function (e) {\n this.setMouseXY(e);\n this.trigger(chartMouseUp, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n if (this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n if (this.accumulationDataLabelModule && this.visibleSeries[0].dataLabel.visible) {\n this.accumulationDataLabelModule.move(e, this.mouseX, this.mouseY, this.isTouch);\n }\n if (this.accumulationLegendModule && this.legendSettings.visible) {\n this.accumulationLegendModule.move(e);\n }\n }\n this.notify(Browser.touchEndEvent, e);\n return false;\n };\n /*public removeSvgOffset(x: number, y: number): ChartLocation {\n let rect: ClientRect = this.element.getBoundingClientRect();\n let svgRect: ClientRect = getElement(this.element.id + '_svg').getBoundingClientRect();\n return { x: (x - rect.left) - Math.max(svgRect.left - rect.left, 0), y: (y - rect.top) - Math.max(svgRect.top - rect.top, 0)};\n }*/\n /**\n * Handles the mouse start.\n *\n * @returns {boolean} Mouse start of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseStart = function (e) {\n this.setMouseXY(e);\n this.trigger(chartMouseDown, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n return false;\n };\n /**\n * Handles the accumulation chart resize.\n *\n * @returns {boolean} Resize method of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationResize = function () {\n var _this = this;\n this.animateSeries = false;\n var args = {\n accumulation: this.isBlazor ? {} : this,\n previousSize: new Size(this.availableSize.width, this.availableSize.height),\n name: resized,\n currentSize: new Size(0, 0),\n chart: this.isBlazor ? {} : this\n };\n var beforeResizeArgs = { name: 'beforeResize', cancelResizedEvent: false };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n this.trigger(beforeResize, beforeResizeArgs);\n if (!beforeResizeArgs.cancelResizedEvent) {\n this.resizeTo = +setTimeout(function () {\n if (_this.isDestroyed) {\n clearTimeout(_this.resizeTo);\n return;\n }\n calculateSize(_this);\n args.currentSize = _this.availableSize;\n _this.trigger(resized, args);\n _this.refreshSeries();\n _this.refreshChart();\n }, 500);\n }\n return false;\n };\n /**\n * Handles the print method for accumulation chart control.\n */\n AccumulationChart.prototype.print = function (id) {\n // To handle the print funtion in IE and Edge browsers\n var clippath = document.getElementById(this.element.id + '_Series_0').style.clipPath;\n document.getElementById(this.element.id + '_Series_0').style.clipPath = '';\n var exportChart = new ExportUtils(this);\n exportChart.print(id);\n document.getElementById(this.element.id + '_Series_0').style.clipPath = clippath;\n };\n /**\n * Export method for the chart.\n */\n AccumulationChart.prototype.export = function (type, fileName) {\n if (this.exportModule) {\n this.exportModule.export(type, fileName);\n if (this.afterExport) {\n this.exportModule.getDataUrl(this);\n }\n }\n };\n /**\n * Applying styles for accumulation chart element\n */\n AccumulationChart.prototype.setStyle = function (element) {\n element.style.touchAction = 'element';\n element.style.msTouchAction = 'element';\n element.style.msContentZooming = 'none';\n element.style.msUserSelect = 'none';\n element.style.webkitUserSelect = 'none';\n element.style.position = 'relative';\n element.style.display = 'block';\n };\n /**\n * Method to set the annotation content dynamically for accumulation.\n */\n AccumulationChart.prototype.setAnnotationValue = function (annotationIndex, content) {\n var annotation = this.annotations[annotationIndex];\n var element;\n var parentNode = getElement(this.element.id + '_Annotation_Collections');\n if (content) {\n annotation.content = content;\n if (parentNode) {\n element = this.createElement('div');\n removeElement(this.element.id + '_Annotation_' + annotationIndex);\n this.annotationModule.processAnnotation(annotation, annotationIndex, element);\n parentNode.appendChild(element.children[0]);\n }\n else {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n }\n };\n /**\n * Handles the mouse move on accumulation chart.\n *\n * @returns {boolean} Mouse move of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseMove = function (e) {\n if (!getElement(this.element.id + '_svg')) {\n return false;\n }\n this.setMouseXY(e);\n this.trigger(chartMouseMove, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n if (this.pointMove) {\n this.triggerPointEvent(pointMove, e.target, e);\n }\n if (this.accumulationLegendModule && this.legendSettings.visible) {\n this.accumulationLegendModule.move(e);\n }\n if (this.accumulationDataLabelModule && this.visibleSeries[0] && this.visibleSeries[0].dataLabel.visible) {\n this.accumulationDataLabelModule.move(e, this.mouseX, this.mouseY);\n }\n if (!this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY);\n }\n if (this.enableBorderOnMouseMove && this.type === 'Pie' && this.pieSeriesModule &&\n withInBounds(this.mouseX, this.mouseY, this.initialClipRect)) {\n this.pieSeriesModule.findSeries(e);\n }\n this.notify(Browser.touchMoveEvent, e);\n return false;\n };\n AccumulationChart.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var id = (targetId === (this.element.id + '_title') || targetId === (this.element.id + '_subTitle') ||\n targetId === (this.element.id + '_chart_legend_title'));\n if ((event.target.textContent.indexOf('...') > -1) && id) {\n var title = (targetId === (this.element.id + '_title')) ?\n this.title : (targetId === (this.element.id + '_subTitle')) ? this.subTitle : this.legendSettings.title;\n showTooltip(title, x, y, this.element.offsetWidth, this.element.id + '_EJ2_Title_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_Title_Tooltip');\n }\n };\n /**\n * Handles the mouse click on accumulation chart.\n *\n * @returns {boolean} Mouse click of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationOnMouseClick = function (e) {\n this.setMouseXY(e);\n if (this.accumulationLegendModule && this.legendSettings.visible) {\n this.accumulationLegendModule.click(e);\n }\n if (this.selectionMode !== 'None' && this.accumulationSelectionModule) {\n this.accumulationSelectionModule.calculateSelectedElements(this, e);\n }\n if (this.visibleSeries[0].explode) {\n this.accBaseModule.processExplode(e);\n }\n if (this.enableBorderOnMouseMove && this.pieSeriesModule && this.type === 'Pie') {\n this.pieSeriesModule.findSeries(e);\n }\n this.trigger(chartMouseClick, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n if (this.pointClick) {\n this.triggerPointEvent(pointClick, e.target, e);\n }\n return false;\n };\n AccumulationChart.prototype.triggerPointEvent = function (event, element, e) {\n var evt = e;\n var indexes = indexFinder(element.id, true);\n if (indexes.series >= 0 && indexes.point >= 0) {\n this.trigger(event, {\n series: this.isBlazor ? {} : this.series[indexes.series],\n point: this.series[indexes.series].points[indexes.point],\n seriesIndex: indexes.series, pointIndex: indexes.point,\n x: this.mouseX, y: this.mouseY, pageX: evt.pageX, pageY: evt.pageY\n });\n }\n };\n /**\n * Handles the mouse right click on accumulation chart.\n *\n * @returns {boolean} Right click of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationRightClick = function (event) {\n if (event.buttons === 2 || event.pointerType === 'touch') {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n /**\n * Handles the mouse leave on accumulation chart.\n *\n * @returns {boolean} Mouse leave of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseLeave = function (e) {\n this.setMouseXY(e);\n this.trigger(chartMouseLeave, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n this.notify(Browser.isPointer ? 'pointerleave' : 'mouseleave', e);\n var borderElement = document.getElementById(this.element.id + 'PointHover_Border');\n if (borderElement) {\n this.pieSeriesModule.removeBorder(borderElement, 1000);\n borderElement = null;\n }\n return false;\n };\n /**\n * Method to set culture for chart\n */\n AccumulationChart.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * Method to create SVG element for accumulation chart.\n */\n AccumulationChart.prototype.createPieSvg = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * To Remove the SVG from accumulation chart.\n *\n * @returns {boolean} Remove svg.\n * @private\n */\n AccumulationChart.prototype.removeSvg = function () {\n if (this.redraw) {\n return null;\n }\n blazorTemplatesReset(this);\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n removeElement('EJ2_legend_tooltip');\n removeElement('EJ2_datalabel_tooltip');\n removeElement(this.element.id + 'PointHover_Border');\n };\n /**\n * Method to create the secondary element for tooltip, datalabel and annotaitons.\n */\n AccumulationChart.prototype.createSecondaryElement = function () {\n var element = redrawElement(this.redraw, this.element.id + '_Secondary_Element') ||\n this.createElement('div', {\n id: this.element.id + '_Secondary_Element',\n styles: 'position: relative'\n });\n appendChildElement(false, this.element, element, this.redraw);\n };\n /**\n * Method to find visible series based on series types\n */\n AccumulationChart.prototype.calculateVisibleSeries = function () {\n this.visibleSeries = [];\n for (var i = 0, length_1 = this.series.length; i < length_1; i++) {\n this.series[i].index = i;\n if (this.series[i].type === this.type && this.visibleSeries.length === 0) {\n this.visibleSeries.push(this.series[i]);\n break;\n }\n }\n };\n /**\n * To find points from dataSource\n */\n AccumulationChart.prototype.processData = function (render) {\n if (render === void 0) { render = true; }\n this.seriesCounts = 0;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n series.dataModule = new Data(series.dataSource || this.dataSource, series.query);\n series.refreshDataManager(this, render);\n }\n };\n /**\n * To refresh the accumulation chart\n *\n * @private\n */\n AccumulationChart.prototype.refreshChart = function () {\n this.doGrouppingProcess();\n this.createPieSvg();\n this.calculateBounds();\n this.renderElements();\n removeElement('chartmeasuretext');\n };\n /**\n * Method to find groupped points\n */\n AccumulationChart.prototype.doGrouppingProcess = function () {\n var series = this.visibleSeries[0];\n if (!isNullOrUndefined(series.resultData) && ((!isNullOrUndefined(series.lastGroupTo) &&\n series.lastGroupTo !== series.groupTo))) {\n series.getPoints(series.resultData, this);\n }\n };\n /**\n * Method to calculate bounds for accumulation chart\n */\n AccumulationChart.prototype.calculateBounds = function () {\n this.initialClipRect = new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height);\n this.titleCollection = [];\n this.subTitleCollection = [];\n var titleHeight = 0;\n var subTitleHeight = 0;\n var maxWidth = 0;\n var titleWidth = 0;\n this.titleCollection = getTitle(this.title, this.titleStyle, this.initialClipRect.width);\n titleHeight = this.title ? measureText(this.title, this.titleStyle).height * this.titleCollection.length : titleHeight;\n if (this.subTitle) {\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, maxWidth);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle).height * this.subTitleCollection.length);\n }\n subtractRect(this.initialClipRect, new Rect(0, (subTitleHeight + titleHeight), this.margin.right + this.margin.left, this.margin.bottom + this.margin.top));\n this.calculateLegendBounds();\n };\n /*\n * Method to calculate legend bounds for accumulation chart\n */\n AccumulationChart.prototype.calculateLegendBounds = function () {\n if (!this.accumulationLegendModule || !this.legendSettings.visible) {\n return null;\n }\n this.accumulationLegendModule.getLegendOptions(this, this.visibleSeries);\n this.accumulationLegendModule.calculateLegendBounds(this.initialClipRect, this.availableSize, null);\n };\n /**\n * To render elements for accumulation chart\n *\n * @private\n */\n AccumulationChart.prototype.renderElements = function () {\n this.renderBorder();\n this.createSecondaryElement();\n this.renderSeries();\n this.renderTitle();\n this.renderLegend();\n appendChildElement(false, this.element, this.svgObject, this.redraw);\n this.processSelection();\n this.processExplode();\n this.renderAnnotation();\n this.setSecondaryElementPosition();\n updateBlazorTemplate(this.element.id + '_DataLabel', 'Template', this.series[0].dataLabel);\n this.trigger('loaded', { accumulation: this.isBlazor ? {} : this, chart: this.isBlazor ? {} : this });\n this.animateSeries = false;\n };\n /**\n * To set the left and top position for data label template for center aligned chart\n *\n * @private\n */\n AccumulationChart.prototype.setSecondaryElementPosition = function () {\n var tooltipParent = getElement(this.element.id + '_Secondary_Element');\n if (!tooltipParent) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n var svgRect = getElement(this.element.id + '_svg').getBoundingClientRect();\n tooltipParent.style.left = Math.max(svgRect.left - rect.left, 0) + 'px';\n tooltipParent.style.top = Math.max(svgRect.top - rect.top, 0) + 'px';\n };\n /**\n * To render the annotaitions for accumulation series.\n *\n * @private\n */\n AccumulationChart.prototype.renderAnnotation = function () {\n if (this.annotationModule) {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n };\n /**\n * Method to process the explode in accumulation chart\n *\n * @private\n */\n AccumulationChart.prototype.processExplode = function () {\n if (this.redraw) {\n return null;\n }\n if (!this.visibleSeries[0].explode) {\n return null;\n }\n this.accBaseModule.invokeExplode();\n };\n /**\n * Method to render series for accumulation chart\n */\n AccumulationChart.prototype.renderSeries = function () {\n if (!this.redraw) {\n this.svgObject.appendChild(this.renderer.createGroup({ id: this.element.id + '_SeriesCollection' }));\n }\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible && this[(firstToLowerCase(series.type) + 'SeriesModule')]) {\n this[(firstToLowerCase(series.type) + 'SeriesModule')].initProperties(this, series);\n series.renderSeries(this, this.redraw);\n }\n }\n };\n /**\n * Method to render border for accumulation chart\n */\n AccumulationChart.prototype.renderBorder = function () {\n var padding = this.border.width;\n appendChildElement(false, this.svgObject, this.renderer.drawRectangle(new RectOption(this.element.id + '_border', this.background || this.themeStyle.background, this.border, 1, new Rect(padding / 2, padding / 2, this.availableSize.width - padding, this.availableSize.height - padding))), this.redraw);\n // to draw back ground image for accumulation chart\n var backGroundImage = this.backgroundImage;\n if (backGroundImage) {\n var image = new ImageOption(this.availableSize.height - padding, this.availableSize.width - padding, backGroundImage, 0, 0, this.element.id + '_background', 'visible', 'none');\n appendChildElement(false, this.svgObject, this.renderer.drawImage(image), this.redraw);\n }\n };\n /**\n * Method to render legend for accumulation chart\n */\n AccumulationChart.prototype.renderLegend = function () {\n if (!this.accumulationLegendModule || !this.legendSettings.visible) {\n return null;\n }\n if (this.accumulationLegendModule.legendCollections.length) {\n if (this.visibleSeries[0].type === 'Pie') {\n this.accumulationLegendModule.getSmartLegendLocation(this.visibleSeries[0].labelBound, this.accumulationLegendModule.legendBounds, this.margin);\n }\n this.accumulationLegendModule.renderLegend(this, this.legendSettings, this.accumulationLegendModule.legendBounds, this.redraw);\n }\n };\n /**\n * To process the selection in accumulation chart\n *\n * @private\n */\n AccumulationChart.prototype.processSelection = function () {\n if (!this.accumulationSelectionModule || this.selectionMode === 'None') {\n return null;\n }\n var selectedDataIndexes = extend([], this.accumulationSelectionModule.selectedDataIndexes, null, true);\n this.accumulationSelectionModule.invokeSelection(this);\n if (selectedDataIndexes.length > 0) {\n this.accumulationSelectionModule.selectedDataIndexes = selectedDataIndexes;\n this.accumulationSelectionModule.redrawSelection(this);\n }\n };\n /**\n * To render title for accumulation chart\n */\n AccumulationChart.prototype.renderTitle = function () {\n var margin = this.margin;\n if (!this.title) {\n return null;\n }\n var alignment = this.titleStyle.textAlignment;\n var getAnchor = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n var titleSize = measureText(this.title, this.titleStyle);\n var rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var options = new TextOption(this.element.id + '_title', titlePositionX(rect, this.titleStyle), this.margin.top + (titleSize.height * 3 / 4), getAnchor, this.titleCollection, '', 'auto');\n var element = textElement(this.renderer, options, this.titleStyle, this.titleStyle.color || this.themeStyle.chartTitle, this.svgObject, false, this.redraw);\n if (element) {\n element.setAttribute('aria-label', this.title);\n }\n if (this.subTitle) {\n this.renderSubTitle(options);\n }\n };\n AccumulationChart.prototype.renderSubTitle = function (options) {\n var maxWidth = 0;\n var titleWidth = 0;\n var padding = 10;\n var alignment = this.titleStyle.textAlignment;\n var getAnchor = function (alignment) {\n return alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n };\n var subTitleElementSize = measureText(this.subTitle, this.subTitleStyle);\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth / 2) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n var subTitleOption = new TextOption(this.element.id + '_subTitle', titlePositionX(rect, this.subTitleStyle), options.y * options.text.length + ((subTitleElementSize.height) * 3 / 4) + padding, getAnchor(this.subTitleStyle.textAlignment), this.subTitleCollection, '', 'auto');\n textElement(this.renderer, subTitleOption, this.subTitleStyle, this.subTitleStyle.color || this.themeStyle.chartTitle, this.svgObject, false, this.redraw);\n };\n /**\n * To get the series parent element\n *\n * @private\n */\n AccumulationChart.prototype.getSeriesElement = function () {\n return this.svgObject.getElementsByTagName('g')[0];\n };\n /**\n * To refresh the all visible series points\n *\n * @private\n */\n AccumulationChart.prototype.refreshSeries = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.refreshPoints(series.points);\n }\n };\n /**\n * To refresh points label region and visible\n *\n * @private\n */\n AccumulationChart.prototype.refreshPoints = function (points) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n point.labelPosition = null;\n point.labelRegion = null;\n point.labelVisible = true;\n }\n };\n /**\n * To get Module name\n *\n * @private\n */\n AccumulationChart.prototype.getModuleName = function () {\n return 'accumulationchart';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n AccumulationChart.prototype.destroy = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (this.element) {\n this.unWireEvents();\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-accumulationchart');\n this.removeSvg();\n this.svgObject = null;\n }\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]} required modules\n * @private\n */\n AccumulationChart.prototype.requiredModules = function () {\n var modules = [];\n var enableAnnotation = false;\n modules.push({\n member: this.type + 'Series',\n args: [this]\n });\n if (this.legendSettings.visible) {\n modules.push({\n member: 'AccumulationLegend',\n args: [this]\n });\n }\n if (this.findDatalabelVisibility()) {\n modules.push({\n member: 'AccumulationDataLabel',\n args: [this]\n });\n }\n if (this.tooltip.enable) {\n modules.push({\n member: 'AccumulationTooltip',\n args: [this]\n });\n }\n if (this.selectionMode !== 'None') {\n modules.push({\n member: 'AccumulationSelection',\n args: [this]\n });\n }\n if (this.enableExport || this.allowExport) {\n modules.push({\n member: 'Export',\n args: [this]\n });\n }\n enableAnnotation = this.annotations.some(function (value) {\n return (value.content !== null);\n });\n if (enableAnnotation) {\n modules.push({\n member: 'Annotation',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To find datalabel visibility in series\n */\n AccumulationChart.prototype.findDatalabelVisibility = function () {\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.dataLabel.visible) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get visible series for accumulation chart by index\n */\n AccumulationChart.prototype.changeVisibleSeries = function (visibleSeries, index) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return null;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n AccumulationChart.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n */\n AccumulationChart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var update = {\n refreshElements: false, refreshBounds: false\n };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'theme':\n this.animateSeries = true;\n break;\n case 'title':\n case 'subTitle':\n case 'height':\n case 'width':\n case 'margin':\n update.refreshBounds = true;\n break;\n case 'titleStyle':\n if (newProp.titleStyle && (newProp.titleStyle.size || newProp.titleStyle.textOverflow)) {\n update.refreshBounds = true;\n }\n else {\n update.refreshElements = true;\n }\n break;\n case 'subTitleStyle':\n if (newProp.subTitleStyle && (newProp.subTitleStyle.size || newProp.subTitleStyle.textOverflow)) {\n update.refreshBounds = true;\n }\n else {\n update.refreshElements = true;\n }\n break;\n case 'legendSettings':\n update.refreshBounds = true;\n update.refreshElements = true;\n break;\n case 'dataSource':\n this.processData(false);\n update.refreshBounds = true;\n break;\n case 'series':\n if (!this.animateselected) {\n var len = this.series.length;\n var seriesRefresh = false;\n var series = void 0;\n var blazorProp = void 0;\n for (var i = 0; i < len; i++) {\n series = newProp.series[i];\n if (this.isBlazor && (series.startAngle || series.endAngle || series.explodeOffset || series.neckHeight ||\n series.neckWidth || series.radius || series.innerRadius || series.groupMode || series.emptyPointSettings)) {\n blazorProp = true;\n }\n if (newProp.series[i] && (newProp.series[i].dataSource || newProp.series[i].yName || newProp.series[i].xName ||\n newProp.series[i].dataLabel || blazorProp)) {\n extend(this.changeVisibleSeries(this.visibleSeries, i), series, null, true);\n seriesRefresh = true;\n }\n if (newProp.series[i] && newProp.series[i].explodeIndex &&\n newProp.series[i].explodeIndex !== oldProp.series[i].explodeIndex) {\n this.accBaseModule.explodePoints(newProp.series[i].explodeIndex, this);\n this.accBaseModule.deExplodeAll(newProp.series[i].explodeIndex, this.enableAnimation ? 300 : 0);\n }\n }\n if (seriesRefresh) {\n this.processData(false);\n update.refreshBounds = true;\n }\n }\n this.animateselected = false;\n this.redraw = false;\n break;\n case 'locale':\n case 'currencyCode':\n _super.prototype.refresh.call(this);\n break;\n case 'background':\n case 'border':\n case 'annotations':\n case 'enableSmartLabels':\n update.refreshElements = true;\n break;\n case 'isMultiSelect':\n case 'selectedDataIndexes':\n case 'selectionMode':\n if (this.accumulationSelectionModule) {\n if (isNullOrUndefined(this.accumulationSelectionModule.selectedDataIndexes)) {\n this.accumulationSelectionModule.invokeSelection(this);\n }\n else {\n this.accumulationSelectionModule.redrawSelection(this);\n }\n }\n break;\n }\n }\n if (!update.refreshBounds && update.refreshElements) {\n this.createPieSvg();\n this.renderElements();\n }\n else if (update.refreshBounds) {\n this.refreshSeries();\n this.createPieSvg();\n this.calculateBounds();\n this.renderElements();\n }\n };\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"title\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"backgroundImage\", void 0);\n __decorate([\n Complex({}, PieCenter)\n ], AccumulationChart.prototype, \"center\", void 0);\n __decorate([\n Property('')\n ], AccumulationChart.prototype, \"dataSource\", void 0);\n __decorate([\n Complex(Theme.chartTitleFont, Font)\n ], AccumulationChart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex(Theme.chartSubTitleFont, Font)\n ], AccumulationChart.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], AccumulationChart.prototype, \"legendSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], AccumulationChart.prototype, \"tooltip\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"highLightMode\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"selectionPattern\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableBorderOnMouseMove\", void 0);\n __decorate([\n Property(false)\n ], AccumulationChart.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableAnimation\", void 0);\n __decorate([\n Collection([], Indexes)\n ], AccumulationChart.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Complex({}, Margin)\n ], AccumulationChart.prototype, \"margin\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableSmartLabels\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], AccumulationChart.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"background\", void 0);\n __decorate([\n Collection([{}], AccumulationSeries)\n ], AccumulationChart.prototype, \"series\", void 0);\n __decorate([\n Collection([{}], AccumulationAnnotationSettings)\n ], AccumulationChart.prototype, \"annotations\", void 0);\n __decorate([\n Property('Material')\n ], AccumulationChart.prototype, \"theme\", void 0);\n __decorate([\n Property(false)\n ], AccumulationChart.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], AccumulationChart.prototype, \"allowExport\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"beforeResize\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"afterExport\", void 0);\n __decorate([\n Property('USD')\n ], AccumulationChart.prototype, \"currencyCode\", void 0);\n AccumulationChart = __decorate([\n NotifyPropertyChanges\n ], AccumulationChart);\n return AccumulationChart;\n}(Component));\nexport { AccumulationChart };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Defines the common behavior of funnel and pyramid series\n */\nvar __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})();\nimport { Rect, Size } from '@syncfusion/ej2-svg-base';\nimport { stringToNumber } from '../../common/utils/helper';\nimport { AccumulationBase } from './accumulation-base';\n/**\n * TriangularBase is used to calculate base functions for funnel/pyramid series.\n */\nvar TriangularBase = /** @class */ (function (_super) {\n __extends(TriangularBase, _super);\n function TriangularBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Initializes the properties of funnel/pyramid series\n *\n * @private\n */\n TriangularBase.prototype.initProperties = function (chart, series) {\n var actualChartArea = chart.initialClipRect;\n series.triangleSize = new Size(stringToNumber(series.width, actualChartArea.width), stringToNumber(series.height, actualChartArea.height));\n series.neckSize = new Size(stringToNumber(series.neckWidth, actualChartArea.width), stringToNumber(series.neckHeight, actualChartArea.height));\n this.defaultLabelBound(series, series.dataLabel.visible, series.dataLabel.position, chart);\n if (series.explodeOffset === '30%') {\n series.explodeOffset = '25px';\n }\n chart.explodeDistance = stringToNumber(series.explodeOffset, actualChartArea.width);\n var points = series.points;\n this.initializeSizeRatio(points, series);\n };\n /**\n * Initializes the size of the pyramid/funnel segments\n *\n * @private\n */\n TriangularBase.prototype.initializeSizeRatio = function (points, series, reverse) {\n if (reverse === void 0) { reverse = false; }\n var sumOfPoints = series.sumOfPoints;\n //Limiting the ratio within the range of 0 to 1\n var gapRatio = Math.min(Math.max(series.gapRatio, 0), 1);\n //% equivalence of a value 1\n var coEff = 1 / (sumOfPoints * (1 + gapRatio / (1 - gapRatio)));\n var spacing = gapRatio / (points.length - 1);\n var y = 0;\n //starting from bottom\n for (var i = points.length - 1; i >= 0; i--) {\n var index = reverse ? points.length - 1 - i : i;\n if (points[index].visible) {\n var height = coEff * points[index].y;\n points[index].yRatio = y;\n points[index].heightRatio = height;\n y += height + spacing;\n }\n }\n };\n /**\n * Marks the label location from the set of points that forms a pyramid/funnel segment\n *\n * @private\n */\n TriangularBase.prototype.setLabelLocation = function (series, point, points) {\n var last = points.length - 1;\n var bottom = series.type === 'Funnel' ? points.length - 2 : points.length - 1;\n var x = (points[0].x + points[bottom].x) / 2;\n var right = (points[1].x + points[bottom - 1].x) / 2;\n point.region = new Rect(x, points[0].y, right - x, points[bottom].y - points[0].y);\n point.symbolLocation = {\n x: point.region.x + point.region.width / 2,\n y: point.region.y + point.region.height / 2\n };\n point.labelOffset = {\n x: point.symbolLocation.x - (points[0].x + points[last].x) / 2,\n y: point.symbolLocation.y - (points[0].y + points[last].y) / 2\n };\n };\n /**\n * Finds the path to connect the list of points\n *\n * @private\n */\n TriangularBase.prototype.findPath = function (locations) {\n var path = 'M';\n for (var i = 0; i < locations.length; i++) {\n path += locations[i].x + ' ' + locations[i].y;\n if (i !== locations.length - 1) {\n path += ' L';\n }\n }\n return path;\n };\n /**\n * To calculate data-label bounds\n *\n * @private\n */\n TriangularBase.prototype.defaultLabelBound = function (series, visible, position, chart) {\n var x = (chart.initialClipRect.width - series.triangleSize.width) / 2;\n var y = (chart.initialClipRect.height - series.triangleSize.height) / 2;\n var accumulationBound = new Rect(x, y, series.triangleSize.width, series.triangleSize.height);\n series.labelBound = new Rect(accumulationBound.x, accumulationBound.y, accumulationBound.width + accumulationBound.x, accumulationBound.height + accumulationBound.y);\n series.accumulationBound = accumulationBound;\n if (visible && position === 'Outside') {\n series.labelBound = new Rect(Infinity, Infinity, -Infinity, -Infinity);\n }\n };\n return TriangularBase;\n}(AccumulationBase));\nexport { TriangularBase };\n","/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/**\n * Defines the behavior of a funnel series\n */\nvar __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})();\nimport { appendChildElement, removeElement } from '../../common/utils/helper';\nimport { TriangularBase } from './triangular-base';\n/**\n * FunnelSeries module used to render `Funnel` Series.\n */\nvar FunnelSeries = /** @class */ (function (_super) {\n __extends(FunnelSeries, _super);\n function FunnelSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Defines the path of a funnel segment\n *\n * @private\n * @returns {string} Get segment data.\n */\n FunnelSeries.prototype.getSegmentData = function (point, series, chart) {\n var lineWidth;\n var topRadius;\n var bottomRadius;\n var endTop;\n var endBottom;\n var minRadius;\n var endMin;\n var bottomY;\n var area = series.triangleSize;\n var offset = 0;\n var extraSpace = (chart.initialClipRect.width - series.triangleSize.width) / 2;\n var emptySpaceAtLeft = extraSpace + chart.initialClipRect.x;\n var seriesTop = chart.initialClipRect.y + (chart.initialClipRect.height - area.height) / 2;\n //defines the top and bottom of a segment\n var top = point.yRatio * area.height;\n var bottom = top + point.heightRatio * area.height;\n var neckSize = series.neckSize;\n lineWidth = neckSize.width + (area.width - neckSize.width) * ((area.height - neckSize.height - top) /\n (area.height - neckSize.height));\n topRadius = (area.width / 2) - lineWidth / 2;\n //Calculating the middle slope change and bottom\n endTop = topRadius + lineWidth;\n if (bottom > area.height - neckSize.height || area.height === neckSize.height) {\n lineWidth = neckSize.width;\n }\n else {\n lineWidth = neckSize.width + (area.width - neckSize.width) *\n ((area.height - neckSize.height - bottom) / (area.height - neckSize.height));\n }\n bottomRadius = (area.width / 2) - (lineWidth / 2);\n endBottom = bottomRadius + lineWidth;\n if (top >= area.height - neckSize.height) {\n topRadius = bottomRadius = minRadius = (area.width / 2) - neckSize.width / 2;\n endTop = endBottom = endMin = (area.width / 2) + neckSize.width / 2;\n }\n else if (bottom > (area.height - neckSize.height)) {\n minRadius = bottomRadius = (area.width / 2) - lineWidth / 2;\n endMin = endBottom = minRadius + lineWidth;\n bottomY = area.height - neckSize.height;\n }\n top += seriesTop;\n bottom += seriesTop;\n bottomY += seriesTop;\n var line1 = { x: emptySpaceAtLeft + offset + topRadius, y: top };\n var line2 = { x: emptySpaceAtLeft + offset + endTop, y: top };\n var line4 = { x: emptySpaceAtLeft + offset + endBottom, y: bottom };\n var line5 = { x: emptySpaceAtLeft + offset + bottomRadius, y: bottom };\n var line3 = { x: emptySpaceAtLeft + offset + endBottom, y: bottom };\n var line6 = { x: emptySpaceAtLeft + offset + bottomRadius, y: bottom };\n if (bottomY) {\n line3 = { x: emptySpaceAtLeft + offset + endMin, y: bottomY };\n line6 = { x: emptySpaceAtLeft + offset + minRadius, y: bottomY };\n }\n var polygon = [line1, line2, line3, line4, line5, line6];\n this.setLabelLocation(series, point, polygon);\n var direction = this.findPath(polygon);\n return direction;\n };\n /**\n * Renders a funnel segment\n *\n * @private\n * @returns {void} Render point.\n */\n FunnelSeries.prototype.renderPoint = function (point, series, chart, options, seriesGroup, redraw) {\n if (!point.visible) {\n removeElement(options.id);\n return null;\n }\n var direction = this.getSegmentData(point, series, chart);\n point.midAngle = 0;\n options.d = direction;\n appendChildElement(false, seriesGroup, chart.renderer.drawPath(options), redraw);\n if (point.isExplode) {\n chart.accBaseModule.explodePoints(point.index, chart, true);\n }\n };\n /**\n * To get the module name of the funnel series.\n *\n * @returns {string} Get module name.\n */\n FunnelSeries.prototype.getModuleName = function () {\n return 'FunnelSeries';\n };\n /**\n * To destroy the funnel series.\n *\n * @returns {void} Destroy method.\n * @private\n */\n FunnelSeries.prototype.destroy = function () {\n /**\n * Destroys the funnel series\n */\n };\n return FunnelSeries;\n}(TriangularBase));\nexport { FunnelSeries };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Defines the behavior of a pyramid series\n */\nvar __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})();\nimport { removeElement } from '@syncfusion/ej2-svg-base';\nimport { appendChildElement } from '../../common/utils/helper';\nimport { TriangularBase } from './triangular-base';\n/**\n * PyramidSeries module used to render `Pyramid` Series.\n */\nvar PyramidSeries = /** @class */ (function (_super) {\n __extends(PyramidSeries, _super);\n function PyramidSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Defines the path of a pyramid segment\n */\n PyramidSeries.prototype.getSegmentData = function (point, series, chart) {\n var area = series.triangleSize;\n //top of th series\n var seriesTop = chart.initialClipRect.y + (chart.initialClipRect.height - area.height) / 2;\n //consider, if the point is exploded\n var offset = 0;\n var extraSpace = (chart.initialClipRect.width - series.triangleSize.width) / 2;\n var emptySpaceAtLeft = extraSpace + chart.initialClipRect.x;\n //top and bottom\n var top = point.yRatio;\n var bottom = point.yRatio + point.heightRatio;\n //width of the top and bottom edge\n var topRadius = 0.5 * (1 - point.yRatio);\n var bottomRadius = 0.5 * (1 - bottom);\n top += seriesTop / area.height;\n bottom += seriesTop / area.height;\n var line1 = {\n x: emptySpaceAtLeft + offset + topRadius * area.width,\n y: top * area.height\n };\n var line2 = {\n x: emptySpaceAtLeft + offset + (1 - topRadius) * area.width,\n y: top * area.height\n };\n var line3 = {\n x: emptySpaceAtLeft + offset + (1 - bottomRadius) * area.width,\n y: bottom * area.height\n };\n var line4 = {\n x: emptySpaceAtLeft + offset + bottomRadius * area.width,\n y: bottom * area.height\n };\n var polygon = [line1, line2, line3, line4];\n this.setLabelLocation(series, point, polygon);\n var direction = this.findPath(polygon);\n return direction;\n };\n /**\n * Initializes the size of the pyramid segments\n *\n * @private\n */\n PyramidSeries.prototype.initializeSizeRatio = function (points, series) {\n if (series.pyramidMode === 'Linear') {\n _super.prototype.initializeSizeRatio.call(this, points, series, true);\n }\n else {\n this.calculateSurfaceSegments(series);\n }\n };\n /**\n * Defines the size of the pyramid segments, the surface of that will reflect the values\n */\n PyramidSeries.prototype.calculateSurfaceSegments = function (series) {\n var count = series.points.length;\n var sumOfValues = series.sumOfPoints;\n var y = [];\n var height = [];\n var gapRatio = Math.min(0, Math.max(series.gapRatio, 1));\n var gapHeight = gapRatio / (count - 1);\n var preSum = this.getSurfaceHeight(0, sumOfValues);\n var currY = 0;\n for (var i = 0; i < count; i++) {\n if (series.points[i].visible) {\n y[i] = currY;\n height[i] = this.getSurfaceHeight(currY, Math.abs(series.points[i].y));\n currY += height[i] + gapHeight * preSum;\n }\n }\n var coef = 1 / (currY - gapHeight * preSum);\n for (var i = 0; i < count; i++) {\n if (series.points[i].visible) {\n series.points[i].yRatio = coef * y[i];\n series.points[i].heightRatio = coef * height[i];\n }\n }\n };\n /**\n * Finds the height of pyramid segment\n */\n PyramidSeries.prototype.getSurfaceHeight = function (y, surface) {\n var result = this.solveQuadraticEquation(1, 2 * y, -surface);\n return result;\n };\n /**\n * Solves quadratic equation\n */\n PyramidSeries.prototype.solveQuadraticEquation = function (a, b, c) {\n var root1;\n var root2;\n var d = b * b - 4 * a * c;\n if (d >= 0) {\n var sd = Math.sqrt(d);\n root1 = (-b - sd) / (2 * a);\n root2 = (-b + sd) / (2 * a);\n return Math.max(root1, root2);\n }\n return 0;\n };\n /**\n * Renders a pyramid segment\n */\n PyramidSeries.prototype.renderPoint = function (point, series, chart, options, seriesGroup, redraw) {\n if (!point.visible) {\n removeElement(options.id);\n return null;\n }\n options.d = this.getSegmentData(point, series, chart);\n point.midAngle = 0;\n appendChildElement(false, seriesGroup, chart.renderer.drawPath(options), redraw);\n if (point.isExplode) {\n chart.accBaseModule.explodePoints(point.index, chart, true);\n }\n };\n /**\n * To get the module name of the Pyramid series.\n */\n PyramidSeries.prototype.getModuleName = function () {\n return 'PyramidSeries';\n };\n /**\n * To destroy the pyramid series\n *\n * @returns {void}\n * @private\n */\n PyramidSeries.prototype.destroy = function () {\n /**\n * Destroys the pyramid series\n */\n };\n return PyramidSeries;\n}(TriangularBase));\nexport { PyramidSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable no-case-declarations */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { ChartLocation, ControlPoints } from '../../common/utils/helper';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { LineBase } from './line-base';\n/**\n * render Line series\n */\nvar SplineBase = /** @class */ (function (_super) {\n __extends(SplineBase, _super);\n /** @private */\n function SplineBase(chartModule) {\n var _this = _super.call(this, chartModule) || this;\n _this.splinePoints = [];\n return _this;\n }\n /**\n * To find the control points for spline.\n *\n * @returns {void}\n * @private\n */\n SplineBase.prototype.findSplinePoint = function (series) {\n var value;\n var realPoints = [];\n var points = [];\n var point;\n var pointIndex = 0;\n realPoints = this.filterEmptyPoints(series);\n for (var i = 0; i < realPoints.length; i++) {\n point = realPoints[i];\n if (point.x === null || point.x === '') {\n continue;\n }\n else {\n point.index = pointIndex;\n pointIndex++;\n points.push(point);\n }\n }\n this.splinePoints = this.findSplineCoefficients(points, series);\n if (points.length > 1) {\n series.drawPoints = [];\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point_1 = points_1[_i];\n if (point_1.index !== 0) {\n var previous = this.getPreviousIndex(points, point_1.index - 1, series);\n value = this.getControlPoints(points[previous], point_1, this.splinePoints[previous], this.splinePoints[point_1.index], series);\n series.drawPoints.push(value);\n // fix for Y-Axis of Spline chart not adjusting scale to suit dataSource issue\n var delta = series.yMax - series.yMin;\n if (point_1.yValue && value.controlPoint1.y && value.controlPoint2.y && delta > 1) {\n series.yMin = Math.min(series.yMin, point_1.yValue, value.controlPoint1.y, value.controlPoint2.y);\n series.yMax = Math.ceil(Math.max(series.yMax, point_1.yValue, value.controlPoint1.y, value.controlPoint2.y));\n series.yMin = series.yAxis.valueType !== 'Logarithmic' ? Math.floor(series.yMin) : series.yMin;\n }\n }\n }\n if (series.chart.chartAreaType === 'PolarRadar' && series.isClosed) {\n value = this.getControlPoints({ xValue: points[points.length - 1].xValue, yValue: points[points.length - 1].yValue }, { xValue: points[points.length - 1].xValue + 1, yValue: points[0].yValue }, this.splinePoints[0], this.splinePoints[points[points.length - 1].index], series);\n series.drawPoints.push(value);\n }\n }\n };\n SplineBase.prototype.getPreviousIndex = function (points, i, series) {\n if (series.emptyPointSettings.mode !== 'Drop') {\n return i;\n }\n while (isNullOrUndefined(points[i]) && i > -1) {\n i = i - 1;\n }\n return i;\n };\n SplineBase.prototype.getNextIndex = function (points, i, series) {\n if (series.emptyPointSettings.mode !== 'Drop') {\n return i;\n }\n while (isNullOrUndefined(points[i]) && i < points.length) {\n i = i + 1;\n }\n return i;\n };\n SplineBase.prototype.filterEmptyPoints = function (series, seriesPoints) {\n if (series.emptyPointSettings.mode !== 'Drop' && this.isPointInRange(series.points)) {\n return seriesPoints ? seriesPoints : series.points;\n }\n var points = seriesPoints ? seriesPoints : extend([], series.points, null, true);\n for (var i = 0; i < points.length; i++) {\n points[i].index = i;\n if (points[i].isEmpty) {\n points[i].symbolLocations = [];\n points[i].regions = [];\n points.splice(i, 1);\n i--;\n }\n }\n return points;\n };\n /**\n * To find points in the range\n *\n * @private\n */\n SplineBase.prototype.isPointInRange = function (points) {\n for (var _i = 0, points_2 = points; _i < points_2.length; _i++) {\n var point = points_2[_i];\n if (!point.isPointInRange) {\n return false;\n }\n }\n return true;\n };\n /**\n * To find the natural spline.\n *\n * @returns {void}\n * @private\n */\n SplineBase.prototype.findSplineCoefficients = function (points, series) {\n var count = points.length;\n var ySpline = [];\n var ySplineDuplicate = [];\n var coefficient1;\n var coefficient2;\n var coefficient3;\n var dy1;\n var dy2;\n var dx = [];\n var dy = [];\n var slope = [];\n var interPoint;\n var slopeLength;\n var cardinalSplineTension = series.cardinalSplineTension ? series.cardinalSplineTension : 0.5;\n cardinalSplineTension = cardinalSplineTension < 0 ? 0 : cardinalSplineTension > 1 ? 1 : cardinalSplineTension;\n switch (series.splineType) {\n case 'Monotonic':\n for (var i = 0; i < count - 1; i++) {\n dx[i] = points[i + 1].xValue - points[i].xValue;\n dy[i] = points[i + 1].yValue - points[i].yValue;\n slope[i] = dy[i] / dx[i];\n }\n //interpolant points\n slopeLength = slope.length;\n // to find the first and last co-efficient value\n ySpline[0] = slope[0];\n ySpline[count - 1] = slope[slopeLength - 1];\n //to find the other co-efficient values\n for (var j = 0; j < dx.length; j++) {\n if (slopeLength > j + 1) {\n if (slope[j] * slope[j + 1] <= 0) {\n ySpline[j + 1] = 0;\n }\n else {\n interPoint = dx[j] + dx[j + 1];\n ySpline[j + 1] = 3 * interPoint / ((interPoint + dx[j + 1]) / slope[j] + (interPoint + dx[j]) / slope[j + 1]);\n }\n }\n }\n break;\n case 'Cardinal':\n for (var i = 0; i < count; i++) {\n if (i === 0) {\n ySpline[i] = (count > 2) ? (cardinalSplineTension * (points[i + 2].xValue - points[i].xValue)) : 0;\n }\n else if (i === (count - 1)) {\n ySpline[i] = (count > 2) ? (cardinalSplineTension * (points[count - 1].xValue - points[count - 3].xValue)) : 0;\n }\n else {\n ySpline[i] = (cardinalSplineTension * (points[i + 1].xValue - points[i - 1].xValue));\n }\n }\n break;\n default:\n if (series.splineType === 'Clamped') {\n ySpline[0] = (3 * (points[1].yValue - points[0].yValue)) / (points[1].xValue - points[0].xValue) - 3;\n ySplineDuplicate[0] = 0.5;\n ySpline[points.length - 1] = (3 * (points[points.length - 1].yValue - points[points.length - 2].yValue)) /\n (points[points.length - 1].xValue - points[points.length - 2].xValue);\n ySpline[0] = ySplineDuplicate[0] = Math.abs(ySpline[0]) === Infinity ? 0 : ySpline[0];\n ySpline[points.length - 1] = ySplineDuplicate[points.length - 1] = Math.abs(ySpline[points.length - 1]) === Infinity ?\n 0 : ySpline[points.length - 1];\n }\n else {\n // assigning the first and last value as zero\n ySpline[0] = ySplineDuplicate[0] = 0;\n ySpline[points.length - 1] = 0;\n }\n for (var i = 1; i < count - 1; i++) {\n coefficient1 = points[i].xValue - points[i - 1].xValue;\n coefficient2 = points[i + 1].xValue - points[i - 1].xValue;\n coefficient3 = points[i + 1].xValue - points[i].xValue;\n dy1 = points[i + 1].yValue - points[i].yValue || null;\n dy2 = points[i].yValue - points[i - 1].yValue || null;\n if (coefficient1 === 0 || coefficient2 === 0 || coefficient3 === 0) {\n ySpline[i] = 0;\n ySplineDuplicate[i] = 0;\n }\n else {\n var p = 1 / (coefficient1 * ySpline[i - 1] + 2 * coefficient2);\n ySpline[i] = -p * coefficient3;\n ySplineDuplicate[i] = p * (6 * (dy1 / coefficient3 - dy2 / coefficient1) - coefficient1 * ySplineDuplicate[i - 1]);\n }\n }\n for (var k = count - 2; k >= 0; k--) {\n ySpline[k] = ySpline[k] * ySpline[k + 1] + ySplineDuplicate[k];\n }\n break;\n }\n return ySpline;\n };\n /**\n * To find the control points for spline.\n *\n * @returns {void}\n * @private\n */\n SplineBase.prototype.getControlPoints = function (point1, point2, ySpline1, ySpline2, series) {\n var controlPoint1;\n var controlPoint2;\n var point;\n var ySplineDuplicate1 = ySpline1;\n var ySplineDuplicate2 = ySpline2;\n var xValue1 = point1.xValue;\n var yValue1 = point1.yValue;\n var xValue2 = point2.xValue;\n var yValue2 = point2.yValue;\n switch (series.splineType) {\n case 'Cardinal':\n if (series.xAxis.valueType === 'DateTime') {\n ySplineDuplicate1 = ySpline1 / this.dateTimeInterval(series);\n ySplineDuplicate2 = ySpline2 / this.dateTimeInterval(series);\n }\n controlPoint1 = new ChartLocation(xValue1 + ySpline1 / 3, yValue1 + ySplineDuplicate1 / 3);\n controlPoint2 = new ChartLocation(xValue2 - ySpline2 / 3, yValue2 - ySplineDuplicate2 / 3);\n point = new ControlPoints(controlPoint1, controlPoint2);\n break;\n case 'Monotonic':\n var value = (xValue2 - xValue1) / 3;\n controlPoint1 = new ChartLocation(xValue1 + value, yValue1 + ySpline1 * value);\n controlPoint2 = new ChartLocation(xValue2 - value, yValue2 - ySpline2 * value);\n point = new ControlPoints(controlPoint1, controlPoint2);\n break;\n default:\n var one3 = 1 / 3.0;\n var deltaX2 = (xValue2 - xValue1);\n deltaX2 = deltaX2 * deltaX2;\n var y1 = one3 * (((2 * yValue1) + yValue2) - one3 * deltaX2 * (ySpline1 + 0.5 * ySpline2));\n var y2 = one3 * ((yValue1 + (2 * yValue2)) - one3 * deltaX2 * (0.5 * ySpline1 + ySpline2));\n controlPoint1 = new ChartLocation((2 * (xValue1) + (xValue2)) * one3, y1);\n controlPoint2 = new ChartLocation(((xValue1) + 2 * (xValue2)) * one3, y2);\n point = new ControlPoints(controlPoint1, controlPoint2);\n break;\n }\n return point;\n };\n /**\n * calculate datetime interval in hours\n */\n SplineBase.prototype.dateTimeInterval = function (series) {\n var interval = series.xAxis.actualIntervalType;\n var intervalInMilliseconds;\n if (interval === 'Years') {\n intervalInMilliseconds = 365 * 24 * 60 * 60 * 1000;\n }\n else if (interval === 'Months') {\n intervalInMilliseconds = 30 * 24 * 60 * 60 * 1000;\n }\n else if (interval === 'Days') {\n intervalInMilliseconds = 24 * 60 * 60 * 1000;\n }\n else if (interval === 'Hours') {\n intervalInMilliseconds = 60 * 60 * 1000;\n }\n else if (interval === 'Minutes') {\n intervalInMilliseconds = 60 * 1000;\n }\n else if (interval === 'Seconds') {\n intervalInMilliseconds = 1000;\n }\n else {\n intervalInMilliseconds = 30 * 24 * 60 * 60 * 1000;\n }\n return intervalInMilliseconds;\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n SplineBase.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doLinearAnimation(series, option);\n };\n return SplineBase;\n}(LineBase));\nexport { SplineBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getPoint, withInRange, TransformToVisible } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { SplineBase } from './spline-base';\n/**\n * `SplineAreaSeries` module used to render the spline area series.\n */\nvar SplineAreaSeries = /** @class */ (function (_super) {\n __extends(SplineAreaSeries, _super);\n function SplineAreaSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render the splineArea series.\n *\n * @returns {void}\n * @private\n */\n SplineAreaSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var firstPoint = null;\n var direction = '';\n var startPoint = null;\n var startPoint1 = null;\n var pt2;\n var bpt1;\n var bpt2;\n var controlPt1;\n var controlPt2;\n var realPoints = [];\n var points = [];\n var point;\n var pointIndex = 0;\n realPoints = this.filterEmptyPoints(series);\n for (var i = 0; i < realPoints.length; i++) {\n point = realPoints[i];\n if (point.x === null || point.x === '') {\n continue;\n }\n else {\n point.index = pointIndex;\n pointIndex++;\n points.push(point);\n }\n }\n var pointsLength = points.length;\n var previous;\n var getCoordinate = series.chart.chartAreaType === 'PolarRadar' ? TransformToVisible : getPoint;\n var origin = series.chart.chartAreaType === 'PolarRadar' ? series.points[0].yValue :\n Math.max(series.yAxis.visibleRange.min, 0);\n for (var i = 0; i < pointsLength; i++) {\n point = points[i];\n point.symbolLocations = [];\n point.regions = [];\n previous = this.getPreviousIndex(points, point.index - 1, series);\n if (point.visible &&\n withInRange(points[previous], point, points[this.getNextIndex(points, point.index - 1, series)], series)) {\n if (firstPoint) {\n controlPt1 = series.drawPoints[previous].controlPoint1;\n controlPt2 = series.drawPoints[previous].controlPoint2;\n pt2 = getCoordinate(point.xValue, point.yValue, xAxis, yAxis, isInverted, series);\n bpt1 = getCoordinate(controlPt1.x, controlPt1.y, xAxis, yAxis, isInverted, series);\n bpt2 = getCoordinate(controlPt2.x, controlPt2.y, xAxis, yAxis, isInverted, series);\n direction = direction.concat('C ' + bpt1.x + ' '\n + bpt1.y + ' ' + bpt2.x + ' ' + bpt2.y + ' ' + pt2.x + ' ' + pt2.y + ' ');\n }\n else {\n // Start point for the current path\n startPoint = getCoordinate(point.xValue, origin, xAxis, yAxis, isInverted, series);\n direction += ('M ' + startPoint.x + ' ' + startPoint.y + ' ');\n // First Point to draw the area path\n startPoint1 = getCoordinate(point.xValue, point.yValue, xAxis, yAxis, isInverted, series);\n direction += ('L ' + startPoint1.x + ' ' + startPoint1.y + ' ');\n }\n this.storePointLocation(point, series, isInverted, getCoordinate);\n firstPoint = point;\n }\n else {\n firstPoint = null;\n point.symbolLocations = [];\n }\n if (((i + 1 < pointsLength && !points[i + 1].visible) || i === pointsLength - 1)\n && pt2 && startPoint) {\n startPoint = getCoordinate(point.xValue, origin, xAxis, yAxis, isInverted, series);\n direction = direction.concat('L ' + (startPoint.x) + ' ' + (startPoint.y));\n }\n }\n this.appendLinePath(new PathOption(series.chart.element.id + '_Series_' + series.index, series.interior, series.border.width, series.border.color, series.opacity, series.dashArray, direction), series, '');\n this.renderMarker(series);\n };\n /**\n * Get module name.\n */\n SplineAreaSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'SplineAreaSeries';\n };\n /**\n * To destroy the spline.\n *\n * @returns {void}\n * @private\n */\n SplineAreaSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n return SplineAreaSeries;\n}(SplineBase));\nexport { SplineAreaSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, getPoint } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { MultiColoredSeries } from './multi-colored-base';\n/**\n * `MultiColoredLineSeries` used to render the line series with multi color.\n */\nvar MultiColoredLineSeries = /** @class */ (function (_super) {\n __extends(MultiColoredLineSeries, _super);\n function MultiColoredLineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Line Series.\n *\n * @returns {void}\n * @private\n */\n MultiColoredLineSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var previous = null;\n var startPoint = 'M';\n var visiblePoints = this.enableComplexProperty(series);\n var options = [];\n var direction = '';\n var segments = this.sortSegments(series, series.segments);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n point.regions = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n direction += this.getLineDirection(previous, point, series, isInverted, getPoint, startPoint);\n if (previous != null) {\n if (this.setPointColor(point, previous, series, series.segmentAxis === 'X', segments)) {\n options.push(new PathOption(series.chart.element.id + '_Series_' + series.index + '_Point_' + previous.index, 'none', series.width, series.setPointColor(previous, series.interior), series.opacity, series.dashArray, direction));\n startPoint = 'M';\n direction = '';\n }\n else {\n startPoint = 'L';\n }\n }\n else {\n this.setPointColor(point, null, series, series.segmentAxis === 'X', segments);\n }\n previous = point;\n this.storePointLocation(point, series, isInverted, getPoint);\n }\n else {\n previous = (series.emptyPointSettings.mode === 'Drop') ? previous : null;\n startPoint = (series.emptyPointSettings.mode === 'Drop') ? startPoint : 'M';\n point.symbolLocations = [];\n }\n }\n if (direction !== '') {\n options.push(new PathOption(series.chart.element.id + '_Series_' + series.index, 'none', series.width, series.setPointColor(visiblePoints[visiblePoints.length - 1], series.interior), series.opacity, series.dashArray, direction));\n }\n this.applySegmentAxis(series, options, segments);\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n MultiColoredLineSeries.prototype.doAnimation = function (series) {\n this.doLinearAnimation(series, series.animation);\n };\n /**\n * Get module name.\n */\n MultiColoredLineSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'MultiColoredLineSeries';\n };\n /**\n * To destroy the line series.\n *\n * @returns {void}\n * @private\n */\n MultiColoredLineSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return MultiColoredLineSeries;\n}(MultiColoredSeries));\nexport { MultiColoredLineSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, getPoint } from '../../common/utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from './line-base';\n/**\n * `RangeAreaSeries` module is used to render the range area series.\n */\nvar RangeAreaSeries = /** @class */ (function (_super) {\n __extends(RangeAreaSeries, _super);\n function RangeAreaSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render RangeArea Series.\n *\n * @returns {void}\n * @private\n */\n RangeAreaSeries.prototype.render = function (series, xAxis, yAxis, inverted) {\n var point;\n var direction = '';\n var command = 'M';\n var closed = undefined;\n var visiblePoints = this.enableComplexProperty(series);\n for (var i = 0, length_1 = visiblePoints.length; i < length_1; i++) {\n point = visiblePoints[i];\n point.symbolLocations = [];\n point.regions = [];\n var low = Math.min(point.low, point.high);\n var high = Math.max(point.low, point.high);\n if (yAxis.isInversed) {\n var temp = low;\n low = high;\n high = temp;\n }\n var lowPoint = getPoint(point.xValue, low, xAxis, yAxis, inverted);\n var highPoint = getPoint(point.xValue, high, xAxis, yAxis, inverted);\n point.symbolLocations.push(highPoint);\n point.symbolLocations.push(lowPoint);\n var rect = new Rect(Math.min(lowPoint.x, highPoint.x), Math.min(lowPoint.y, highPoint.y), Math.max(Math.abs(highPoint.x - lowPoint.x), series.marker.width), Math.max(Math.abs(highPoint.y - lowPoint.y), series.marker.width));\n if (!inverted) {\n rect.x -= series.marker.width / 2;\n }\n else {\n rect.y -= series.marker.width / 2;\n }\n point.regions.push(rect);\n //Path to connect the high points\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n direction = direction.concat(command + ' ' + (lowPoint.x) + ' ' + (lowPoint.y) + ' ');\n closed = false;\n if ((i + 1 < visiblePoints.length && !visiblePoints[i + 1].visible)\n || i === visiblePoints.length - 1) {\n // Path to connect the low points\n direction = this.closeRangeAreaPath(visiblePoints, point, series, direction, i);\n command = 'M';\n direction = direction.concat(' ' + 'Z');\n closed = true;\n }\n command = 'L';\n }\n else {\n if (closed === false && i !== 0) {\n direction = this.closeRangeAreaPath(visiblePoints, point, series, direction, i);\n closed = true;\n }\n command = 'M';\n point.symbolLocations = [];\n }\n }\n var name = series.category === 'Indicator' ? series.chart.element.id + '_Indicator_' + series.index + '_' + series.name :\n series.chart.element.id + '_Series_' + series.index;\n var options = new PathOption(name, series.interior, series.border.width, series.border.color, series.opacity, series.dashArray, direction);\n this.appendLinePath(options, series, '');\n this.renderMarker(series);\n };\n /**\n * path for rendering the low points\n *\n * @returns {void}.\n * @private\n */\n RangeAreaSeries.prototype.closeRangeAreaPath = function (visiblePoints, point, series, direction, i) {\n for (var j = i; j >= 0; j--) {\n if (visiblePoints[j].visible && visiblePoints[j].symbolLocations[0]) {\n point = visiblePoints[j];\n direction += 'L' + ' ' + (point.symbolLocations[0].x) + ' ' + ((point.symbolLocations[0].y)) + ' ';\n }\n else {\n break;\n }\n }\n return direction;\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n RangeAreaSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doLinearAnimation(series, option);\n };\n /**\n * Get module name.\n */\n RangeAreaSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'RangeAreaSeries';\n };\n /**\n * To destroy the line series.\n *\n * @returns {void}\n * @private\n */\n RangeAreaSeries.prototype.destroy = function () {\n /**\n * Destroys range area series\n */\n };\n return RangeAreaSeries;\n}(LineBase));\nexport { RangeAreaSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getPoint, withInRange, TransformToVisible } from '../../common/utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from './line-base';\n/**\n * `StackingAreaSeries` module used to render the Stacking Area series.\n */\nvar StackingAreaSeries = /** @class */ (function (_super) {\n __extends(StackingAreaSeries, _super);\n function StackingAreaSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render the Stacking area series.\n *\n * @returns {void}\n * @private\n */\n StackingAreaSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var polarAreaType = series.chart.chartAreaType === 'PolarRadar';\n var getCoordinate = polarAreaType ? TransformToVisible : getPoint;\n var lineDirection = '';\n var visiblePoints = this.enableComplexProperty(series);\n var pointsLength = visiblePoints.length;\n var stackedvalue = series.stackedValues;\n var origin = polarAreaType ?\n Math.max(series.yAxis.visibleRange.min, stackedvalue.endValues[0]) :\n Math.max(series.yAxis.visibleRange.min, stackedvalue.startValues[0]);\n var startPoint = 0;\n var point1;\n var point2;\n if (pointsLength > 0) {\n point1 = getCoordinate(visiblePoints[0].xValue, origin, xAxis, yAxis, isInverted, series);\n lineDirection = lineDirection.concat('M' + ' ' + (point1.x) + ' ' + (point1.y) + ' ');\n }\n var isPolar = (series.chart && series.chart.chartAreaType === 'PolarRadar');\n for (var i = 0; i < pointsLength; i++) {\n visiblePoints[i].symbolLocations = [];\n visiblePoints[i].regions = [];\n if (visiblePoints[i].visible && withInRange(visiblePoints[i - 1], visiblePoints[i], visiblePoints[i + 1], series)) {\n point1 = getCoordinate(visiblePoints[i].xValue, stackedvalue.endValues[i], xAxis, yAxis, isInverted, series);\n lineDirection = lineDirection.concat('L' + ' ' + (point1.x) + ' ' + (point1.y) + ' ');\n visiblePoints[i].symbolLocations.push(getCoordinate(visiblePoints[i].xValue, stackedvalue.endValues[i], xAxis, yAxis, isInverted, series));\n visiblePoints[i].regions.push(new Rect(visiblePoints[i].symbolLocations[0].x - series.marker.width, visiblePoints[i].symbolLocations[0].y - series.marker.height, 2 * series.marker.width, 2 * series.marker.height));\n }\n else {\n if (!isPolar && series.emptyPointSettings.mode !== 'Drop') {\n for (var j = i - 1; j >= startPoint; j--) {\n point2 = getCoordinate(visiblePoints[j].xValue, stackedvalue.startValues[j], xAxis, yAxis, isInverted, series);\n lineDirection = lineDirection.concat('L' + ' ' + (point2.x) + ' ' + (point2.y) + ' ');\n }\n if (visiblePoints[i + 1] && (visiblePoints[i + 1].visible &&\n (!isPolar || (isPolar && this.withinYRange(visiblePoints[i + 1], yAxis))))) {\n point1 = getCoordinate(visiblePoints[i + 1].xValue, stackedvalue.startValues[i + 1], xAxis, yAxis, isInverted, series);\n lineDirection = lineDirection.concat('M' + ' ' + (point1.x) + ' ' + (point1.y) + ' ');\n }\n startPoint = i + 1;\n }\n }\n }\n if (series.chart.chartAreaType === 'PolarRadar' && visiblePoints.length > 1) {\n var connectPoints = this.getFirstLastVisiblePoint(series.points);\n var chart = this.chart;\n point1 = { 'x': connectPoints.first.xValue, 'y': stackedvalue.endValues[connectPoints.first.index] };\n point2 = getCoordinate(point1.x, point1.y, xAxis, yAxis, isInverted, series);\n lineDirection += ('L' + ' ' + (point2.x) + ' ' + (point2.y) + ' ');\n if (this.chart.visible === 1 && (xAxis.isInversed || yAxis.isInversed)) {\n this.chart.enableAnimation = false;\n lineDirection = (series.type === 'Polar' ? chart.polarSeriesModule.getPolarIsInversedPath(xAxis, lineDirection) :\n chart.radarSeriesModule.getRadarIsInversedPath(xAxis, lineDirection));\n }\n }\n if (!isPolar || (isPolar && series.index !== this.getFirstSeriesIndex(series.chart.visibleSeries))) {\n for (var j = pointsLength - 1; j >= startPoint; j--) {\n if (isPolar && !visiblePoints[j].visible) {\n continue;\n }\n var previousSeries = this.getPreviousSeries(series);\n if (previousSeries.emptyPointSettings.mode !== 'Drop' || !previousSeries.points[j].isEmpty) {\n point2 = getCoordinate(visiblePoints[j].xValue, stackedvalue.startValues[j], xAxis, yAxis, isInverted, series);\n if (stackedvalue.startValues[j] === stackedvalue.endValues[j]) {\n point2.y = Math.floor(point2.y);\n }\n lineDirection = lineDirection.concat(((j === (pointsLength - 1) && polarAreaType) ? 'M' : 'L')\n + ' ' + (point2.x) + ' ' + (point2.y) + ' ');\n }\n }\n }\n var options = new PathOption(series.chart.element.id + '_Series_' + series.index, series.interior, series.border.width, series.border.color, series.opacity, series.dashArray, lineDirection);\n this.appendLinePath(options, series, '');\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n StackingAreaSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doLinearAnimation(series, option);\n };\n /**\n * To destroy the stacking area.\n *\n * @returns {void}\n * @private\n */\n StackingAreaSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n /**\n * Get module name.\n */\n StackingAreaSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'StackingAreaSeries';\n };\n /**\n * To find previous visible series\n */\n StackingAreaSeries.prototype.getPreviousSeries = function (series) {\n var seriesCollection = series.chart.visibleSeries;\n for (var i = 0, length_1 = seriesCollection.length; i < length_1; i++) {\n if (series.index === seriesCollection[i].index && i !== 0) {\n return seriesCollection[i - 1];\n }\n }\n return seriesCollection[0];\n };\n /**\n * To find the first visible series index\n *\n * @param {Series[]} seriesCollection first visible series index\n */\n StackingAreaSeries.prototype.getFirstSeriesIndex = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.visible) {\n return series.index;\n }\n }\n return 0;\n };\n return StackingAreaSeries;\n}(LineBase));\nexport { StackingAreaSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getPoint, withInRange, ChartLocation } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from './line-base';\n/**\n * `StepAreaSeries` Module used to render the step area series.\n */\nvar StepAreaSeries = /** @class */ (function (_super) {\n __extends(StepAreaSeries, _super);\n function StepAreaSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render StepArea series.\n *\n * @returns {void}\n * @private\n */\n StepAreaSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var currentPoint;\n var secondPoint;\n var start = null;\n var direction = '';\n var visiblePoints = this.enableComplexProperty(series);\n var pointsLength = visiblePoints.length;\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var point;\n var xValue;\n var lineLength;\n var prevPoint = null;\n if (xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks') {\n lineLength = 0.5;\n }\n else {\n lineLength = 0;\n }\n for (var i = 0; i < pointsLength; i++) {\n point = visiblePoints[i];\n xValue = point.xValue;\n point.symbolLocations = [];\n point.regions = [];\n if (point.visible && withInRange(visiblePoints[i - 1], point, visiblePoints[i + 1], series)) {\n if (start === null) {\n start = new ChartLocation(xValue, 0);\n // Start point for the current path\n currentPoint = getPoint(xValue - lineLength, origin, xAxis, yAxis, isInverted);\n direction += ('M' + ' ' + (currentPoint.x) + ' ' + (currentPoint.y) + ' ');\n currentPoint = getPoint(xValue - lineLength, point.yValue, xAxis, yAxis, isInverted);\n direction += ('L' + ' ' + (currentPoint.x) + ' ' + (currentPoint.y) + ' ');\n }\n // First Point to draw the Steparea path\n if (prevPoint != null) {\n currentPoint = getPoint(point.xValue, point.yValue, xAxis, yAxis, isInverted);\n secondPoint = getPoint(prevPoint.xValue, prevPoint.yValue, xAxis, yAxis, isInverted);\n direction += ('L' + ' ' +\n (currentPoint.x) + ' ' + (secondPoint.y) + ' L' + ' ' + (currentPoint.x) + ' ' + (currentPoint.y) + ' ');\n }\n else if (series.emptyPointSettings.mode === 'Gap') {\n currentPoint = getPoint(point.xValue, point.yValue, xAxis, yAxis, isInverted);\n direction += 'L' + ' ' + (currentPoint.x) + ' ' + (currentPoint.y) + ' ';\n }\n this.storePointLocation(point, series, isInverted, getPoint);\n prevPoint = point;\n }\n if (visiblePoints[i + 1] && !visiblePoints[i + 1].visible && series.emptyPointSettings.mode !== 'Drop') {\n // current start point\n currentPoint = getPoint(xValue + lineLength, origin, xAxis, yAxis, isInverted);\n direction += ('L' + ' ' + (currentPoint.x) + ' ' + (currentPoint.y));\n start = null;\n prevPoint = null;\n }\n }\n if ((pointsLength > 1) && direction !== '') {\n start = { 'x': visiblePoints[pointsLength - 1].xValue + lineLength, 'y': visiblePoints[pointsLength - 1].yValue };\n secondPoint = getPoint(start.x, start.y, xAxis, yAxis, isInverted);\n direction += ('L' + ' ' + (secondPoint.x) + ' ' + (secondPoint.y) + ' ');\n start = { 'x': visiblePoints[pointsLength - 1].xValue + lineLength, 'y': origin };\n secondPoint = getPoint(start.x, start.y, xAxis, yAxis, isInverted);\n direction += ('L' + ' ' + (secondPoint.x) + ' ' + (secondPoint.y) + ' ');\n }\n else {\n direction = '';\n }\n var options = new PathOption(series.chart.element.id + '_Series_' + series.index, series.interior, series.border.width, series.border.color, series.opacity, series.dashArray, direction);\n this.appendLinePath(options, series, '');\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n StepAreaSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doLinearAnimation(series, option);\n };\n /**\n * To destroy the step Area series.\n *\n * @returns {void}\n * @private\n */\n StepAreaSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n /**\n * Get module name.\n */\n StepAreaSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'StepAreaSeries';\n };\n return StepAreaSeries;\n}(LineBase));\nexport { StepAreaSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getPoint, withInRange } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from './line-base';\n/**\n * `StepLineSeries` module is used to render the step line series.\n */\nvar StepLineSeries = /** @class */ (function (_super) {\n __extends(StepLineSeries, _super);\n function StepLineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render the Step line series.\n *\n * @returns {void}\n * @private\n */\n StepLineSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var direction = '';\n var startPoint = 'M';\n var prevPoint = null;\n var lineLength;\n var point1;\n var point2;\n var visiblePoints = this.enableComplexProperty(series);\n if (xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks') {\n lineLength = 0.5;\n }\n else {\n lineLength = 0;\n }\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n point.symbolLocations = [];\n point.regions = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n if (prevPoint != null) {\n point2 = getPoint(point.xValue, point.yValue, xAxis, yAxis, isInverted);\n point1 = getPoint(prevPoint.xValue, prevPoint.yValue, xAxis, yAxis, isInverted);\n direction = direction.concat(startPoint + ' ' + (point1.x) + ' ' + (point1.y) + ' ' + 'L' + ' ' +\n (point2.x) + ' ' + (point1.y) + ' L' + ' ' + (point2.x) + ' ' + (point2.y) + ' ');\n startPoint = 'L';\n }\n else {\n point1 = getPoint(point.xValue - lineLength, point.yValue, xAxis, yAxis, isInverted);\n direction = direction.concat(startPoint + ' ' + (point1.x) + ' ' + (point1.y) + ' ');\n startPoint = 'L';\n }\n this.storePointLocation(point, series, isInverted, getPoint);\n prevPoint = point;\n }\n else {\n prevPoint = series.emptyPointSettings.mode === 'Drop' ? prevPoint : null;\n startPoint = series.emptyPointSettings.mode === 'Drop' ? startPoint : 'M';\n }\n }\n if (visiblePoints.length > 0) {\n point1 = getPoint(visiblePoints[visiblePoints.length - 1].xValue + lineLength, visiblePoints[visiblePoints.length - 1].yValue, xAxis, yAxis, isInverted);\n direction = direction.concat(startPoint + ' ' + (point1.x) + ' ' + (point1.y) + ' ');\n }\n var pathOptions = new PathOption(series.chart.element.id + '_Series_' + series.index, 'transparent', series.width, series.interior, series.opacity, series.dashArray, direction);\n this.appendLinePath(pathOptions, series, '');\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n StepLineSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doLinearAnimation(series, option);\n };\n /**\n * To destroy the step line series.\n *\n * @returns {void}\n * @private\n */\n StepLineSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n /**\n * Get module name.\n */\n StepLineSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'StepLineSeries';\n };\n return StepLineSeries;\n}(LineBase));\nexport { StepLineSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getPoint, withInRange, TransformToVisible } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { SplineBase } from './spline-base';\n/**\n * `SplineSeries` module is used to render the spline series.\n */\nvar SplineSeries = /** @class */ (function (_super) {\n __extends(SplineSeries, _super);\n function SplineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render the spline series.\n *\n * @returns {void}\n * @private\n */\n SplineSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var firstPoint = null;\n var direction = '';\n var startPoint = 'M';\n var points = [];\n var tempPoints = series.category === 'TrendLine' ? series.points : this.enableComplexProperty(series);\n points = this.filterEmptyPoints(series, tempPoints);\n var previous;\n var getCoordinate = series.chart.chartAreaType === 'PolarRadar' ? TransformToVisible : getPoint;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n previous = this.getPreviousIndex(points, point.index - 1, series);\n point.symbolLocations = [];\n point.regions = [];\n if (point.visible && withInRange(points[previous], point, points[this.getNextIndex(points, point.index - 1, series)], series)) {\n if (firstPoint !== null) {\n direction = this.getSplineDirection(series.drawPoints[previous], firstPoint, point, xAxis, yAxis, isInverted, series, startPoint, getCoordinate, direction);\n startPoint = 'L';\n }\n firstPoint = point;\n this.storePointLocation(point, series, isInverted, getCoordinate);\n }\n else {\n startPoint = 'M';\n firstPoint = null;\n point.symbolLocations = [];\n }\n }\n if ((points.length > 0 && series.drawPoints.length > 0) && series.chart.chartAreaType === 'PolarRadar' && series.isClosed) {\n var connectPoints = this.getFirstLastVisiblePoint(points);\n direction = this.getSplineDirection(series.drawPoints[series.drawPoints.length - 1], connectPoints.last, { xValue: connectPoints.first.xValue, yValue: connectPoints.first.yValue }, xAxis, yAxis, isInverted, series, startPoint, getCoordinate, direction);\n startPoint = 'L';\n }\n var name = series.category === 'TrendLine' ? series.chart.element.id + '_Series_' + series.sourceIndex + '_TrendLine_' + series.index :\n series.chart.element.id + '_Series_' + series.index;\n var options = new PathOption(name, 'transparent', series.width, series.interior, series.opacity, series.dashArray, direction);\n this.appendLinePath(options, series, '');\n this.renderMarker(series);\n };\n /**\n * To find the direct of spline using points.\n *\n * @param {ControlPoints} data data\n * @param {Points} firstPoint firstPoint\n * @param {Points} point point\n * @param {Axis} xAxis xAxis\n * @param {Axis} yAxis yAxis\n * @param {boolean} isInverted isInverted\n * @param {Series} series series\n * @param {string} startPoint startPoint\n * @param {Function} getCoordinate getCoordinate\n * @param {string} direction direction\n */\n SplineSeries.prototype.getSplineDirection = function (data, firstPoint, point, xAxis, yAxis, isInverted, series, startPoint, getCoordinate, direction) {\n var controlPoint1 = data.controlPoint1;\n var controlPoint2 = data.controlPoint2;\n var pt1 = getCoordinate(firstPoint.xValue, firstPoint.yValue, xAxis, yAxis, isInverted, series);\n var pt2 = getCoordinate(point.xValue, point.yValue, xAxis, yAxis, isInverted, series);\n var bpt1 = getCoordinate(controlPoint1.x, controlPoint1.y, xAxis, yAxis, isInverted, series);\n var bpt2 = getCoordinate(controlPoint2.x, controlPoint2.y, xAxis, yAxis, isInverted, series);\n return direction.concat((startPoint + ' ' + (pt1.x) + ' ' + (pt1.y) + ' ' + 'C' + ' ' + (bpt1.x) + ' '\n + (bpt1.y) + ' ' + (bpt2.x) + ' ' + (bpt2.y) + ' ' + (pt2.x) + ' ' + (pt2.y) + ' '));\n };\n /**\n * Get module name.\n */\n SplineSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'SplineSeries';\n };\n /**\n * To destroy the spline.\n *\n * @returns {void}\n * @private\n */\n SplineSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n return SplineSeries;\n}(SplineBase));\nexport { SplineSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getPoint, withInRange, ChartLocation } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { MultiColoredSeries } from './multi-colored-base';\n/**\n * `MultiColoredAreaSeries` module used to render the area series with multi color.\n */\nvar MultiColoredAreaSeries = /** @class */ (function (_super) {\n __extends(MultiColoredAreaSeries, _super);\n function MultiColoredAreaSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Area series.\n *\n * @returns {void}\n * @private\n */\n MultiColoredAreaSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var _this = this;\n var firstPoint;\n var startPoint = null;\n var direction = '';\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var options = [];\n var startRegion;\n var previous;\n var rendered;\n var segments = this.sortSegments(series, series.segments);\n series.visiblePoints.map(function (point, i, seriesPoints) {\n point.symbolLocations = [];\n point.regions = [];\n rendered = false;\n if (point.visible && withInRange(seriesPoints[i - 1], point, seriesPoints[i + 1], series)) {\n direction += _this.getAreaPathDirection(point.xValue, origin, series, isInverted, getPoint, startPoint, 'M');\n startPoint = startPoint || new ChartLocation(point.xValue, origin);\n firstPoint = getPoint(point.xValue, point.yValue, xAxis, yAxis, isInverted);\n if (previous && _this.setPointColor(point, previous, series, series.segmentAxis === 'X', segments)) {\n rendered = true;\n startRegion = getPoint(startPoint.x, origin, xAxis, yAxis, isInverted);\n direction += ('L' + ' ' + (firstPoint.x) + ' ' + (firstPoint.y) + ' ');\n direction += ('L' + ' ' + (firstPoint.x) + ' ' + (startRegion.y) + ' ');\n _this.generatePathOption(options, series, previous, direction, '_Point_' + previous.index);\n direction = 'M' + ' ' + (firstPoint.x) + ' ' + (startRegion.y) + ' ' + 'L' + ' ' +\n (firstPoint.x) + ' ' + (firstPoint.y) + ' ';\n }\n else {\n direction += ('L' + ' ' + (firstPoint.x) + ' ' + (firstPoint.y) + ' ');\n _this.setPointColor(point, null, series, series.segmentAxis === 'X', segments);\n }\n if (seriesPoints[i + 1] && !seriesPoints[i + 1].visible && series.emptyPointSettings.mode !== 'Drop') {\n direction += _this.getAreaEmptyDirection({ 'x': point.xValue, 'y': origin }, startPoint, series, isInverted, getPoint);\n startPoint = null;\n }\n previous = point;\n _this.storePointLocation(point, series, isInverted, getPoint);\n }\n });\n if (!isNullOrUndefined(rendered) && !rendered) {\n direction = series.points.length > 1 ?\n (direction + this.getAreaPathDirection(previous.xValue, origin, series, isInverted, getPoint, null, 'L')) : '';\n this.generatePathOption(options, series, previous, direction, '');\n }\n this.applySegmentAxis(series, options, segments);\n this.renderMarker(series);\n };\n /**\n * To Store the path directions of the area\n */\n MultiColoredAreaSeries.prototype.generatePathOption = function (options, series, point, direction, id) {\n options.push(new PathOption(series.chart.element.id + '_Series_' + series.index + id, series.setPointColor(point, series.interior), series.border.width, series.border.color, series.opacity, series.dashArray, direction));\n };\n /**\n * To destroy the area series.\n *\n * @returns {void}\n * @private\n */\n MultiColoredAreaSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n /**\n * Get module name\n */\n MultiColoredAreaSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'MultiColoredAreaSeries';\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n MultiColoredAreaSeries.prototype.doAnimation = function (series) {\n this.doLinearAnimation(series, series.animation);\n };\n return MultiColoredAreaSeries;\n}(MultiColoredSeries));\nexport { MultiColoredAreaSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * AccumulationChart legend\n */\nimport { extend, isNullOrUndefined, Animation } from '@syncfusion/ej2-base';\nimport { pointByIndex } from '../model/acc-base';\nimport { BaseLegend, LegendOptions } from '../../common/legend/legend';\nimport { Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { textTrim, getElement, blazorTemplatesReset } from '../../common/utils/helper';\n/**\n * AccumulationLegend module used to render `Legend` for Accumulation chart.\n */\nvar AccumulationLegend = /** @class */ (function (_super) {\n __extends(AccumulationLegend, _super);\n /**\n * Constructor for Accumulation Legend.\n *\n * @param {AccumulationChart} chart Get a chart as a parameter.\n */\n function AccumulationLegend(chart) {\n var _this = _super.call(this, chart) || this;\n _this.library = _this;\n _this.titleRect = new Rect(0, chart.margin.top, 0, 0);\n return _this;\n }\n /**\n * Get the legend options.\n *\n * @returns {void} Legend options.\n * @private\n */\n AccumulationLegend.prototype.getLegendOptions = function (chart, series) {\n this.legendCollections = [];\n for (var i = 0; i < 1; i++) {\n var seriesType = series[i].type;\n if (seriesType === 'Pie' || seriesType === 'Doughnut') {\n seriesType = (series[i].innerRadius !== '0' && series[i].innerRadius !== '0%') ?\n 'Doughnut' : 'Pie';\n }\n for (var _i = 0, _a = series[i].points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!isNullOrUndefined(point.x) && !isNullOrUndefined(point.y)) {\n this.legendCollections.push(new LegendOptions(point.x.toString(), point.color, series[i].legendShape, point.visible, seriesType, point.legendImageUrl, null, null, point.index, series[i].index));\n }\n }\n }\n };\n /**\n * To find legend bounds for accumulation chart.\n *\n * @private\n */\n AccumulationLegend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n var extraWidth = 0;\n var extraHeight = 0;\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var titlePlusArrowSpace = 0;\n var arrowWidth = this.arrowWidth;\n var arrowHeight = legend.enablePages ? 0 : this.arrowHeight;\n if (!this.isVertical) {\n extraHeight = !legend.height ? ((availableSize.height / 100) * 5) : 0;\n }\n else {\n extraWidth = !legend.width ? ((availableSize.width / 100) * 5) : 0;\n }\n legendBounds.width += extraWidth;\n legendBounds.height += extraHeight;\n var shapePadding = legend.shapePadding;\n var maximumWidth = 0;\n var shapeWidth = legend.shapeWidth;\n var rowWidth = 0;\n var rowCount = 0;\n var columnWidth = [];\n var columnHeight = 0;\n var legendWidth = 0;\n var titleHeight = 0;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle).height, legend.shapeHeight);\n var legendEventArgs;\n var render = false;\n for (var _i = 0, _a = this.legendCollections; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n legendEventArgs = { fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n name: 'legendRender', cancel: false };\n this.chart.trigger('legendRender', legendEventArgs);\n legendOption.render = !legendEventArgs.cancel;\n legendOption.text = ((legendEventArgs.text.indexOf('&') > -1) ? this.convertHtmlEntities(legendEventArgs.text) : legendEventArgs.text);\n legendOption.fill = legendEventArgs.fill;\n legendOption.shape = legendEventArgs.shape;\n legendOption.textSize = measureText(legendOption.text, legend.textStyle);\n if (legendOption.render && legendOption.text !== '') {\n render = true;\n legendWidth = shapeWidth + shapePadding + legendOption.textSize.width + padding;\n if (this.isVertical) {\n ++rowCount;\n columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + this.legendTitleSize.height + arrowHeight;\n if ((rowCount * (this.maxItemHeight + padding)) + padding + arrowHeight > legendBounds.height) {\n columnHeight = Math.max(columnHeight, (rowCount * (this.maxItemHeight + padding)) + padding + arrowHeight);\n rowWidth = rowWidth + maximumWidth;\n columnWidth.push(maximumWidth);\n this.totalPages = Math.max(rowCount, this.totalPages || 1);\n maximumWidth = 0;\n rowCount = 1;\n }\n maximumWidth = Math.max(legendWidth, maximumWidth);\n }\n else {\n if (!legend.enablePages) { // For new legend navigation support\n titlePlusArrowSpace = this.isTitle && titlePosition !== 'Top' ? this.legendTitleSize.width + this.fivePixel : 0;\n titlePlusArrowSpace += arrowWidth;\n }\n rowWidth = rowWidth + legendWidth;\n if (legendBounds.width < (padding + rowWidth + titlePlusArrowSpace)) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding + titlePlusArrowSpace - legendWidth));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = legendWidth;\n rowCount++;\n columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + this.legendTitleSize.height;\n }\n }\n }\n }\n titleHeight = titlePosition === 'Top' ? this.legendTitleSize.height : 0;\n if (this.isVertical) {\n rowWidth = rowWidth + maximumWidth;\n this.isPaging = legendBounds.width < (rowWidth + padding);\n columnHeight = Math.max(columnHeight, ((this.totalPages || 1) * (this.maxItemHeight + padding)) + padding + arrowHeight);\n this.isPaging = this.isPaging && (this.totalPages > 1);\n if (columnWidth[columnWidth.length - 1] !== maximumWidth) {\n columnWidth.push(maximumWidth);\n }\n }\n else {\n this.isPaging = legendBounds.height < columnHeight;\n columnHeight = !legend.enablePages && this.isPaging ? (this.maxItemHeight + padding) + padding + titleHeight : columnHeight;\n this.totalPages = this.totalRowCount = rowCount;\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding + titleHeight);\n if (!this.isPaging) { // For title left and right position\n rowWidth += this.isTitle && titlePosition !== 'Top' ? (this.fivePixel + this.legendTitleSize.width + this.fivePixel) : 0;\n }\n }\n this.maxColumns = 0; // initialization for max columns\n var width = this.isVertical ? this.getMaxColumn(columnWidth, legendBounds.width, padding, rowWidth + padding) :\n Math.max(rowWidth + padding, maximumWidth);\n if (render) { // if any legends not skipped in event check\n this.setBounds(width, columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n /**\n * To find html entities value for legend\n *\n * @returns {string} converts the entities to normal string.\n */\n AccumulationLegend.prototype.convertHtmlEntities = function (legendText) {\n var text = String(legendText).replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '\"').replace(' ', ' ').replace('¢', '¢').replace('£', '£').replace('¥', '¥').replace('€', '€').replace('©', '©').replace('®', '®');\n text = String(text).replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '\"').replace(' ', ' ').replace('¢', '¢').replace('£', '£').replace('¥', '¥').replace('€', '€').replace('©', '©').replace('®', '®');\n return text;\n };\n /**\n * To find maximum column size for legend\n *\n * @returns {number} Get a maximum columns.\n */\n AccumulationLegend.prototype.getMaxColumn = function (columns, width, padding, rowWidth) {\n var maxPageColumn = padding;\n this.maxColumnWidth = Math.max.apply(null, columns);\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n maxPageColumn += this.maxColumnWidth;\n this.maxColumns++;\n if (maxPageColumn + padding > width) {\n maxPageColumn -= this.maxColumnWidth;\n this.maxColumns--;\n break;\n }\n }\n this.isPaging = (maxPageColumn < rowWidth) && (this.totalPages > 1);\n if (maxPageColumn === padding) {\n maxPageColumn = width;\n }\n this.maxColumns = Math.max(1, this.maxColumns);\n this.maxWidth = maxPageColumn;\n return maxPageColumn;\n };\n /**\n * To find available width from legend x position.\n *\n * @returns {number} Get a available width.\n */\n AccumulationLegend.prototype.getAvailWidth = function (tx, width) {\n if (this.isVertical) {\n width = this.maxWidth;\n }\n return width - ((this.legend.padding * 2) + this.legend.shapeWidth + this.legend.shapePadding);\n };\n /**\n * To find legend rendering locations from legend options.\n *\n * @private\n */\n AccumulationLegend.prototype.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend) {\n var padding = this.legend.padding;\n if (this.isVertical) {\n if (count === firstLegend || (prevLegend.location.y + (this.maxItemHeight * 1.5) + (padding * 2) > rect.y + rect.height)) {\n legendOption.location.x = prevLegend.location.x + ((count === firstLegend) ? 0 : this.maxColumnWidth);\n legendOption.location.y = start.y;\n this.pageXCollections.push(legendOption.location.x - (this.legend.shapeWidth / 2) - padding);\n this.totalPages++;\n }\n else {\n legendOption.location.x = prevLegend.location.x;\n legendOption.location.y = prevLegend.location.y + this.maxItemHeight + padding;\n }\n }\n else {\n var previousBound = (prevLegend.location.x + textPadding + prevLegend.textSize.width);\n if ((previousBound + (legendOption.textSize.width + textPadding)) > (rect.x + rect.width + this.legend.shapeWidth / 2)) {\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + this.maxItemHeight + padding;\n legendOption.location.x = start.x;\n }\n else {\n legendOption.location.y = prevLegend.location.y;\n legendOption.location.x = (count === firstLegend) ? prevLegend.location.x : previousBound;\n }\n this.totalPages = this.totalRowCount;\n }\n var availablewidth = this.getAvailWidth(legendOption.location.x, this.legendBounds.width);\n legendOption.text = textTrim(+availablewidth.toFixed(4), legendOption.text, this.legend.textStyle);\n };\n /**\n * finding the smart legend place according to positions.\n *\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.getSmartLegendLocation = function (labelBound, legendBound, margin) {\n var space;\n switch (this.position) {\n case 'Left':\n space = ((labelBound.x - legendBound.width) - margin.left) / 2;\n legendBound.x = (labelBound.x - legendBound.width) < margin.left ? legendBound.x :\n (labelBound.x - legendBound.width) - space;\n break;\n case 'Right':\n space = ((this.chart.availableSize.width - margin.right) - (labelBound.x + labelBound.width + legendBound.width)) / 2;\n legendBound.x = (labelBound.x + labelBound.width + legendBound.width) > (this.chart.availableSize.width - margin.right) ?\n legendBound.x : (labelBound.x + labelBound.width + space);\n break;\n case 'Top':\n this.getTitleRect(this.chart);\n space = ((labelBound.y - legendBound.height) - (this.titleRect.y + this.titleRect.height)) / 2;\n legendBound.y = (labelBound.y - legendBound.height) < margin.top ? legendBound.y :\n (labelBound.y - legendBound.height) - space;\n break;\n case 'Bottom':\n space = ((this.chart.availableSize.height - margin.bottom) - (labelBound.y + labelBound.height + legendBound.height)) / 2;\n legendBound.y = labelBound.y + labelBound.height + legendBound.height > (this.chart.availableSize.height - margin.bottom) ?\n legendBound.y : (labelBound.y + labelBound.height) + space;\n break;\n }\n };\n /**\n * To get title rect.\n *\n * @returns {void} Get a title rect.\n */\n AccumulationLegend.prototype.getTitleRect = function (accumulation) {\n if (!accumulation.title) {\n return null;\n }\n var titleSize = measureText(accumulation.title, accumulation.titleStyle);\n this.titleRect = new Rect(accumulation.availableSize.width / 2 - titleSize.width / 2, accumulation.margin.top, titleSize.width, titleSize.height);\n };\n /**\n * To get legend by index\n *\n * @returns {LegendOptions} Return legend index.\n */\n AccumulationLegend.prototype.legendByIndex = function (index, legendCollections) {\n for (var _i = 0, legendCollections_1 = legendCollections; _i < legendCollections_1.length; _i++) {\n var legend = legendCollections_1[_i];\n if (legend.pointIndex === index) {\n return legend;\n }\n }\n return null;\n };\n /**\n * To show or hide the legend on clicking the legend.\n *\n * @returns {void}\n */\n AccumulationLegend.prototype.click = function (event) {\n var targetId = event.target.id;\n var chart = this.chart;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_', this.legendID + '_shape_marker_'];\n if (this.chart.accumulationSelectionModule) {\n var selectedDataIndexes = extend([], this.chart.accumulationSelectionModule.selectedDataIndexes, null, true);\n }\n this.chart.animateSeries = false;\n for (var _i = 0, legendItemsId_1 = legendItemsId; _i < legendItemsId_1.length; _i++) {\n var id = legendItemsId_1[_i];\n if (targetId.indexOf(id) > -1) {\n var pointIndex = parseInt(targetId.split(id)[1], 10);\n if (this.chart.legendSettings.toggleVisibility && !isNaN(pointIndex)) {\n var currentSeries = this.chart.visibleSeries[0];\n var point = pointByIndex(pointIndex, currentSeries.points);\n var legendOption = this.legendByIndex(pointIndex, this.legendCollections);\n point.visible = !point.visible;\n legendOption.visible = point.visible;\n currentSeries.sumOfPoints += point.visible ? point.y : -point.y;\n chart.redraw = chart.enableAnimation;\n this.sliceVisibility(pointIndex, point.visible);\n chart.removeSvg();\n //To remove the blazor templates\n blazorTemplatesReset(chart);\n this.chart.refreshPoints(currentSeries.points);\n this.chart.renderElements();\n }\n else if (this.chart.accumulationSelectionModule && !isNaN(pointIndex)) {\n this.chart.accumulationSelectionModule.legendSelection(this.chart, 0, pointIndex);\n }\n }\n }\n if (targetId.indexOf(this.legendID + '_pageup') > -1) {\n this.changePage(event, true);\n }\n else if (targetId.indexOf(this.legendID + '_pagedown') > -1) {\n this.changePage(event, false);\n }\n chart.redraw = false;\n };\n /**\n * To translate the point elements by index and position\n */\n AccumulationLegend.prototype.sliceVisibility = function (index, isVisible) {\n var sliceId = this.chart.element.id + '_Series_0_Point_';\n if (this.chart.visibleSeries[0].dataLabel.visible) {\n sliceId = this.chart.element.id + '_datalabel_Series_0_';\n this.sliceAnimate(getElement(sliceId + 'g_' + index), isVisible);\n }\n };\n /**\n * Slice animation\n *\n * @param {Element} element slice element.\n * @param {boolean} isVisible boolean value of slice.\n * @returns {void} slice animation method.\n */\n AccumulationLegend.prototype.sliceAnimate = function (element, isVisible) {\n if (!element) {\n return null;\n }\n new Animation({}).animate(element, {\n duration: 300,\n delay: 0,\n name: isVisible ? 'FadeIn' : 'FadeOut',\n end: function (args) {\n args.element.style.visibility = isVisible ? 'visible' : 'hidden';\n }\n });\n };\n /**\n * Get module name\n *\n * @returns {string} Return module name.\n */\n AccumulationLegend.prototype.getModuleName = function () {\n return 'AccumulationLegend';\n };\n /**\n * To destroy the Legend.\n *\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n return AccumulationLegend;\n}(BaseLegend));\nexport { AccumulationLegend };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * AccumulationChart Tooltip file\n */\nimport { Browser, remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { AccPointData, withInBounds, indexFinder } from '../../common/utils/helper';\nimport { BaseTooltip } from '../../common/user-interaction/tooltip';\nimport { tooltipRender } from '../../common/model/constants';\n/**\n * `AccumulationTooltip` module is used to render tooltip for accumulation chart.\n */\nvar AccumulationTooltip = /** @class */ (function (_super) {\n __extends(AccumulationTooltip, _super);\n function AccumulationTooltip(accumulation) {\n var _this = _super.call(this, accumulation) || this;\n _this.accumulation = accumulation;\n _this.addEventListener();\n return _this;\n }\n /**\n * @hidden\n */\n AccumulationTooltip.prototype.addEventListener = function () {\n if (this.accumulation.isDestroyed) {\n return;\n }\n this.accumulation.on(Browser.isPointer ? 'pointerleave' : 'mouseleave', this.mouseLeaveHandler, this);\n this.accumulation.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.accumulation.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n AccumulationTooltip.prototype.mouseLeaveHandler = function (e) {\n this.removeTooltip(this.accumulation.tooltip.fadeOutDuration);\n };\n AccumulationTooltip.prototype.mouseUpHandler = function (e) {\n var control = this.accumulation;\n if (control.tooltip.enable && control.isTouch && withInBounds(control.mouseX, control.mouseY, control.initialClipRect)) {\n this.tooltip(e);\n this.removeTooltip(2000);\n }\n };\n AccumulationTooltip.prototype.mouseMoveHandler = function (e) {\n var control = this.accumulation;\n // Tooltip for chart series.\n if (control.tooltip.enable && withInBounds(control.mouseX, control.mouseY, control.initialClipRect)) {\n this.tooltip(e);\n }\n };\n /**\n * Renders the tooltip.\n * @param {PointerEvent} event - Mouse move event.\n * @return {void}\n */\n AccumulationTooltip.prototype.tooltip = function (event) {\n var svgElement = this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0;\n var tooltipDiv = this.getTooltipElement(isTooltip);\n this.renderSeriesTooltip(event, this.accumulation, !isTooltip, tooltipDiv);\n };\n AccumulationTooltip.prototype.renderSeriesTooltip = function (e, chart, isFirst, tooltipDiv) {\n var data = this.getPieData(e, chart, chart.mouseX, chart.mouseY);\n var rect = chart.initialClipRect;\n this.currentPoints = [];\n if (data.point && (!this.previousPoints[0] || (this.previousPoints[0].point !== data.point))) {\n if (this.previousPoints[0] && data.point.index === this.previousPoints[0].point.index\n && data.series.index === this.previousPoints[0].series.index) {\n return null;\n }\n if (this.pushData(data, isFirst, tooltipDiv, false)) {\n this.triggerTooltipRender(data, isFirst, this.getTooltipText(data, chart.tooltip), this.findHeader(data));\n }\n }\n else {\n if (!data.point && this.isRemove) {\n this.removeTooltip(this.accumulation.tooltip.fadeOutDuration);\n this.isRemove = false;\n }\n }\n };\n AccumulationTooltip.prototype.triggerTooltipRender = function (point, isFirst, textCollection, headerText, firstText) {\n var _this = this;\n if (firstText === void 0) { firstText = true; }\n var template;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, point: point.point, textStyle: this.textStyle,\n series: this.accumulation.isBlazor ? {} : point.series, headerText: headerText,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index,\n pointIndex: point.point.index, pointText: point.point.text, seriesName: point.series.name }\n };\n var tooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n _this.headerText = argsData.headerText;\n _this.createTooltip(_this.chart, isFirst, point.point.symbolLocation, point.series.clipRect, point.point, ['Circle'], 0, _this.chart.initialClipRect, null, point.point, _this.accumulation.tooltip.template ? argsData.template : '');\n }\n else {\n _this.removeHighlight();\n remove(_this.getElement(_this.element.id + '_tooltip'));\n }\n _this.isRemove = true;\n };\n tooltipSuccess.bind(this, point);\n this.chart.trigger(tooltipRender, argsData, tooltipSuccess);\n };\n AccumulationTooltip.prototype.getPieData = function (e, chart, x, y) {\n var target = e.target;\n var id = indexFinder(target.id, true);\n if (!isNaN(id.series)) {\n var seriesIndex = id.series;\n var pointIndex = id.point;\n if (!isNullOrUndefined(seriesIndex) && !isNaN(seriesIndex) && !isNullOrUndefined(pointIndex) && !isNaN(pointIndex)) {\n var series = this.getSeriesFromIndex(seriesIndex, chart.visibleSeries);\n if (series.enableTooltip) {\n return new AccPointData(series.points[pointIndex], series);\n }\n }\n }\n return new AccPointData(null, null);\n };\n /**\n * To get series from index\n */\n AccumulationTooltip.prototype.getSeriesFromIndex = function (index, visibleSeries) {\n return visibleSeries[0];\n };\n AccumulationTooltip.prototype.getTooltipText = function (data, tooltip) {\n var series = data.series;\n var format = this.accumulation.useGroupingSeparator ? '${point.x} : ${point.separatorY}'\n : '${point.x} : ${point.y}';\n format = tooltip.format ? tooltip.format : format;\n return this.parseTemplate(data.point, series, format);\n };\n AccumulationTooltip.prototype.findHeader = function (data) {\n if (this.header === '') {\n return '';\n }\n this.header = this.parseTemplate(data.point, data.series, this.header);\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n return this.header;\n }\n return '';\n };\n AccumulationTooltip.prototype.parseTemplate = function (point, series, format) {\n var value;\n var textValue;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n value = new RegExp('${point' + '.' + dataValue + '}', 'gm');\n format = format.replace(value.source, point[dataValue]);\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n value = new RegExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(value.source, textValue);\n }\n return format;\n };\n /**\n * Get module name\n */\n AccumulationTooltip.prototype.getModuleName = function () {\n return 'AccumulationTooltip';\n };\n /**\n * To destroy the Tooltip.\n * @return {void}\n * @private\n */\n AccumulationTooltip.prototype.destroy = function (chart) {\n /**\n * Destroy method calling here\n */\n };\n return AccumulationTooltip;\n}(BaseTooltip));\nexport { AccumulationTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, getVisiblePoints } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `StackingColumnSeries` module used to render the stacking column series.\n */\nvar StackingColumnSeries = /** @class */ (function (_super) {\n __extends(StackingColumnSeries, _super);\n function StackingColumnSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render the Stacking column series.\n *\n * @returns {void}\n * @private\n */\n StackingColumnSeries.prototype.render = function (series) {\n series.isRectSeries = true;\n var sideBySideInfo = this.getSideBySideInfo(series);\n var rect;\n var argsData;\n var stackedValue = series.stackedValues;\n var visiblePoints = getVisiblePoints(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n point.symbolLocations = [];\n point.regions = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n rect = this.getRectangle(point.xValue + sideBySideInfo.start, stackedValue.endValues[point.index], point.xValue + sideBySideInfo.end, stackedValue.startValues[point.index], series);\n argsData = this.triggerEvent(series, point, series.interior, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.drawRectangle(series, point, rect, argsData);\n this.updateSymbolLocation(point, rect, series);\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n StackingColumnSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * To destroy the stacking column.\n *\n * @returns {void}\n * @private\n */\n StackingColumnSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n /**\n * Get module name.\n */\n StackingColumnSeries.prototype.getModuleName = function () {\n return 'StackingColumnSeries';\n };\n return StackingColumnSeries;\n}(ColumnBase));\nexport { StackingColumnSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\nimport { withInRange } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `RangeColumnSeries` module is used to render the range column series.\n */\nvar RangeColumnSeries = /** @class */ (function (_super) {\n __extends(RangeColumnSeries, _super);\n function RangeColumnSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Range Column series.\n *\n * @returns {void}\n * @private\n */\n RangeColumnSeries.prototype.render = function (series) {\n var rect;\n var sideBySideInfo = this.getSideBySideInfo(series);\n //let origin: number = Math.max(series.yAxis.visibleRange.min, 0);\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var rangePoint = _a[_i];\n rangePoint.symbolLocations = [];\n rangePoint.regions = [];\n if (rangePoint.visible && withInRange(series.points[rangePoint.index - 1], rangePoint, series.points[rangePoint.index + 1], series)) {\n rect = this.getRectangle(rangePoint.xValue + sideBySideInfo.start, rangePoint.high, rangePoint.xValue + sideBySideInfo.end, rangePoint.low, series);\n argsData = this.triggerEvent(series, rangePoint, series.interior, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.updateSymbolLocation(rangePoint, rect, series);\n this.drawRectangle(series, rangePoint, rect, argsData);\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Get module name.\n */\n RangeColumnSeries.prototype.getModuleName = function () {\n return 'RangeColumnSeries';\n /**\n * return the module name\n */\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n RangeColumnSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * To destroy the range column series.\n *\n * @returns {void}\n * @private\n */\n RangeColumnSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return RangeColumnSeries;\n}(ColumnBase));\nexport { RangeColumnSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `BarSeries` module is used to render the bar series.\n */\nvar BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Bar series.\n *\n * @returns {void}\n * @private\n */\n BarSeries.prototype.render = function (series) {\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var sideBySideInfo = this.getSideBySideInfo(series);\n var rect;\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var pointBar = _a[_i];\n pointBar.symbolLocations = [];\n pointBar.regions = [];\n if (pointBar.visible && withInRange(series.points[pointBar.index - 1], pointBar, series.points[pointBar.index + 1], series)) {\n rect = this.getRectangle(pointBar.xValue + sideBySideInfo.start, pointBar.yValue, pointBar.xValue + sideBySideInfo.end, origin, series);\n argsData = this.triggerEvent(series, pointBar, series.interior, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.updateSymbolLocation(pointBar, rect, series);\n this.drawRectangle(series, pointBar, rect, argsData);\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n BarSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * To destroy the bar series.\n *\n * @returns {void}\n * @private\n */\n BarSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n /**\n * Get module name\n */\n BarSeries.prototype.getModuleName = function () {\n return 'BarSeries';\n };\n return BarSeries;\n}(ColumnBase));\nexport { BarSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable prefer-const */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `StackingBarSeries` module is used to render the stacking bar series.\n */\nvar StackingBarSeries = /** @class */ (function (_super) {\n __extends(StackingBarSeries, _super);\n function StackingBarSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render the Stacking bar series.\n *\n * @returns {void}\n * @private\n */\n StackingBarSeries.prototype.render = function (series) {\n var sideBySideInfo = this.getSideBySideInfo(series);\n var stackedValue = series.stackedValues;\n var rect;\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var pointStack = _a[_i];\n pointStack.symbolLocations = [];\n pointStack.regions = [];\n if (pointStack.visible &&\n withInRange(series.points[pointStack.index - 1], pointStack, series.points[pointStack.index + 1], series)) {\n rect = this.getRectangle(pointStack.xValue + sideBySideInfo.start, stackedValue.endValues[pointStack.index], pointStack.xValue + sideBySideInfo.end, stackedValue.startValues[pointStack.index], series);\n argsData = this.triggerEvent(series, pointStack, series.interior, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.drawRectangle(series, pointStack, rect, argsData);\n this.updateSymbolLocation(pointStack, rect, series);\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * To destroy the stacking bar.\n *\n * @returns {void}\n * @private\n */\n StackingBarSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n /**\n * Get module name.\n */\n StackingBarSeries.prototype.getModuleName = function () {\n return 'StackingBarSeries';\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n StackingBarSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n return StackingBarSeries;\n}(ColumnBase));\nexport { StackingBarSeries };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { withInRange, getPoint, drawSymbol, getElement } from '../../common/utils/helper';\nimport { markerAnimate, TransformToVisible, appendChildElement } from '../../common/utils/helper';\nimport { PathOption, Rect, Size } from '@syncfusion/ej2-svg-base';\nimport { pointRender } from '../../common/model/constants';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ScatterSeries` module is used to render the scatter series.\n */\nvar ScatterSeries = /** @class */ (function () {\n function ScatterSeries() {\n }\n /**\n * Render the scatter series.\n *\n * @returns {void}\n * @private\n */\n ScatterSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n // Scatter series DataLabel is not rendered after selecting StackingColumn\n series.isRectSeries = false;\n var marker = series.marker;\n var visiblePoints = this.enableComplexProperty(series);\n var argsData;\n var getCoordinate = series.chart.chartAreaType === 'PolarRadar' ? TransformToVisible : getPoint;\n var startLocation;\n var redraw = series.chart.redraw;\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n startLocation = (redraw && point.symbolLocations) ? point.symbolLocations[0] : null;\n point.symbolLocations = [];\n point.regions = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: series.setPointColor(point, series.interior),\n border: series.setBorderColor(point, { width: series.border.width, color: series.border.color }),\n height: marker.height, width: marker.width, shape: marker.shape\n };\n series.chart.trigger(pointRender, argsData);\n if (!argsData.cancel) {\n point.symbolLocations.push(getCoordinate(point.xValue, point.yValue, xAxis, yAxis, isInverted, series));\n point.color = argsData.fill;\n this.refresh(series, point, argsData, startLocation);\n }\n else {\n point.marker = { visible: true };\n }\n }\n }\n };\n /**\n * To improve the chart performance.\n *\n * @returns {void}\n * @private\n */\n ScatterSeries.prototype.enableComplexProperty = function (series) {\n var tempPoints2 = [];\n var tempPoints = [];\n var yVisibleRange = series.yAxis.visibleRange;\n var xVisibleRange = series.xAxis.visibleRange;\n var areaBounds = series.clipRect;\n var seriesPoints = series.points;\n var yTolerance = Math.abs(yVisibleRange.delta / areaBounds.height);\n var xTolerance = Math.abs(xVisibleRange.delta / areaBounds.width);\n var prevYValue = (seriesPoints[0] && seriesPoints[0].y > yTolerance) ? 0 : yTolerance;\n var prevXValue = (seriesPoints[0] && seriesPoints[0].x > xTolerance) ? 0 : xTolerance;\n var yVal = 0;\n var xVal = 0;\n for (var _i = 0, seriesPoints_1 = seriesPoints; _i < seriesPoints_1.length; _i++) {\n var currentPoint = seriesPoints_1[_i];\n currentPoint.symbolLocations = [];\n yVal = currentPoint.yValue ? currentPoint.yValue : yVisibleRange.min;\n xVal = currentPoint.xValue ? currentPoint.xValue : xVisibleRange.min;\n if (Math.abs(prevYValue - yVal) >= yTolerance || Math.abs(prevXValue - xVal) >= xTolerance) {\n tempPoints.push(currentPoint);\n prevYValue = yVal;\n prevXValue = xVal;\n }\n }\n var currentTempPoint;\n for (var i = 0; i < tempPoints.length; i++) {\n currentTempPoint = tempPoints[i];\n if (isNullOrUndefined(currentTempPoint.x) || currentTempPoint.x === '') {\n continue;\n }\n else {\n tempPoints2.push(currentTempPoint);\n }\n }\n return tempPoints2;\n };\n /**\n * To append scatter element\n *\n * @param {Series} series series\n * @param {Points} point point\n * @param {IPointRenderEventArgs} argsData argsData\n * @param {ChartLocation} startLocation startLocation\n * @returns {void}\n */\n ScatterSeries.prototype.refresh = function (series, point, argsData, startLocation) {\n var chart = series.chart;\n var circlePath;\n var previousPath;\n var marker = series.marker;\n var shapeOption = new PathOption(chart.element.id + '_Series_' + series.index + '_Point_' + point.index, argsData.fill, argsData.border.width, argsData.border.color, series.opacity, null);\n if (chart.redraw && getElement(shapeOption.id)) {\n circlePath = argsData.shape === 'Circle' ? 'c' : '';\n previousPath = getElement(shapeOption.id).getAttribute('d');\n }\n appendChildElement(false, series.seriesElement, drawSymbol(point.symbolLocations[0], argsData.shape, new Size(argsData.width, argsData.height), marker.imageUrl, shapeOption, point.x.toString() + ':' + point.yValue.toString(), series.chart.svgRenderer, series.clipRect), chart.redraw, true, circlePath + 'x', circlePath + 'y', startLocation, previousPath);\n point.regions.push(new Rect(point.symbolLocations[0].x - marker.width, point.symbolLocations[0].y - marker.height, 2 * marker.width, 2 * marker.height));\n point.marker = {\n border: argsData.border, fill: argsData.fill,\n height: argsData.height, visible: true,\n width: argsData.width, shape: argsData.shape\n };\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n ScatterSeries.prototype.doAnimation = function (series) {\n var duration = series.animation.duration;\n var delay = series.animation.delay;\n var rectElements = series.seriesElement.childNodes;\n var count = 1;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.symbolLocations.length || !rectElements[count]) {\n continue;\n }\n markerAnimate(rectElements[count], delay, duration, series, point.index, point.symbolLocations[0], false);\n count++;\n }\n };\n /**\n * Get module name.\n */\n ScatterSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'ScatterSeries';\n };\n /**\n * To destroy the scatter.\n *\n * @returns {void}\n */\n ScatterSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n return ScatterSeries;\n}());\nexport { ScatterSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { valueToCoefficient, inside, isOverlap, textTrim } from '../../common/utils/helper';\nimport { appendChildElement } from '../../common/utils/helper';\nimport { CircleOption } from '../../common/utils/helper';\nimport { Size, measureText, TextOption, PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from '../series/line-base';\nimport { textElement, ChartLocation, valueToPolarCoefficient, CoefficientToVector, getElement } from '../../common/utils/helper';\n/**\n * Specifies the Polar Axis Layout.\n */\nvar PolarRadarPanel = /** @class */ (function (_super) {\n __extends(PolarRadarPanel, _super);\n function PolarRadarPanel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.visibleAxisLabelRect = [];\n return _this;\n }\n /**\n * Measure the polar radar axis size.\n *\n * @returns {void}\n * @private\n */\n PolarRadarPanel.prototype.measureAxis = function (rect) {\n var chart = this.chart;\n this.initialClipRect = rect;\n this.seriesClipRect = new Rect(rect.x, rect.y, rect.width, rect.height);\n //Measure axis size calculation\n this.measureRowAxis(chart, this.initialClipRect);\n this.measureColumnAxis(chart, this.initialClipRect);\n this.calculateAxisSize();\n };\n PolarRadarPanel.prototype.measureRowAxis = function (chart, rect) {\n this.calculateRowSize(rect);\n var row = chart.rows[0];\n this.measureDefinition(row, chart, new Size(chart.availableSize.width, row.computedHeight));\n };\n PolarRadarPanel.prototype.measureColumnAxis = function (chart, rect) {\n this.calculateColumnSize(rect);\n var column = chart.columns[0];\n this.measureDefinition(column, chart, new Size(column.computedWidth, chart.availableSize.height));\n };\n /**\n * Measure the column and row in chart.\n *\n * @returns {void}\n * @private\n */\n PolarRadarPanel.prototype.measureDefinition = function (definition, chart, size) {\n for (var _i = 0, _a = definition.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n axis.getModule(chart);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n PolarRadarPanel.prototype.calculateAxisSize = function () {\n var chart = this.chart;\n var axis;\n var padding = 5;\n this.centerX = this.initialClipRect.width * 0.5 + this.initialClipRect.x;\n this.centerY = this.initialClipRect.height * 0.5 + this.initialClipRect.y;\n chart.radius = Math.min(this.initialClipRect.width, this.initialClipRect.height) / 2 - padding -\n chart.primaryXAxis.majorTickLines.height - chart.primaryXAxis.maxLabelSize.height;\n chart.radius = (chart.primaryXAxis.coefficient * chart.radius) / 100;\n this.seriesClipRect.y = this.centerY - chart.radius;\n this.seriesClipRect.x = this.centerX - chart.radius;\n this.seriesClipRect.height = 2 * chart.radius;\n this.seriesClipRect.width = 2 * chart.radius;\n this.calculateRowSize(this.seriesClipRect);\n axis = chart.primaryYAxis;\n axis.rect = this.seriesClipRect;\n this.calculateColumnSize(this.seriesClipRect);\n axis = chart.primaryXAxis;\n axis.rect = this.seriesClipRect;\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n PolarRadarPanel.prototype.measure = function () {\n var chart = this.chart;\n chart.verticalAxes.push(chart.primaryYAxis);\n var row = chart.rows[0];\n row.axes[0] = chart.primaryYAxis;\n chart.rows[0] = row;\n chart.horizontalAxes.push(chart.primaryXAxis);\n var column = chart.columns[0];\n column.axes[0] = chart.primaryXAxis;\n chart.columns[0] = column;\n };\n /**\n * Measure the row size.\n *\n * @returns {void}\n */\n PolarRadarPanel.prototype.calculateRowSize = function (rect) {\n /*! Calculate row size */\n var chart = this.chart;\n var row = chart.rows[0];\n row.computedHeight = rect.height / 2;\n row.computedTop = rect.y;\n chart.rows[0] = row;\n };\n /**\n * Measure the row size.\n *\n * @returns {void}\n */\n PolarRadarPanel.prototype.calculateColumnSize = function (rect) {\n /*! Calculate column size */\n var chart = this.chart;\n var column = chart.columns[0];\n column.computedLeft = rect.x;\n column.computedWidth = rect.width;\n chart.columns[0] = column;\n };\n /**\n * To render the axis element.\n *\n * @returns {void}\n * @private\n */\n PolarRadarPanel.prototype.renderAxes = function () {\n var axis;\n var chart = this.chart;\n this.startAngle = chart.primaryXAxis.startAngle;\n var axisElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisCollection' });\n var axisLineElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisOutsideCollection' });\n for (var i = 0, len = chart.axisCollections.length; i < len; i++) {\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i });\n axis = chart.axisCollections[i];\n if (axis.orientation === 'Horizontal') {\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0) {\n this.drawXAxisGridLine(axis, i);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawXAxisLabels(axis, i);\n }\n }\n else {\n this.drawYAxisGridLine(axis, i);\n if (axis.lineStyle.width > 0) {\n this.drawYAxisLine(axis, i);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawYAxisLabels(axis, i);\n }\n }\n axisElement.appendChild(this.element);\n }\n axisElement.appendChild(this.element);\n appendChildElement(chart.enableCanvas, chart.svgObject, axisElement, chart.redraw);\n return axisLineElement;\n };\n PolarRadarPanel.prototype.drawYAxisLine = function (axis, index) {\n var chart = this.chart;\n var optionsLine = {};\n var vector = CoefficientToVector(valueToPolarCoefficient(axis.visibleLabels[0].value, axis), this.startAngle);\n var axisLine = 'M ' + this.centerX + ' ' + this.centerY + 'L ' +\n (this.centerX + chart.radius * vector.x) + ' ' + (this.centerY + chart.radius * vector.y);\n optionsLine = {\n 'id': chart.element.id + 'AxisLine_' + index,\n 'd': axisLine,\n 'stroke-dasharray': axis.lineStyle.dashArray,\n 'stroke-width': axis.lineStyle.width,\n 'stroke': axis.lineStyle.color || chart.themeStyle.axisLine\n };\n /**\n * I252450\n * When we click the center of the marker which is plotted in the axis line, selection did not work is fixed\n * Cause: Instead of marker id, axis line id is obtained while clicking\n * Fix: Pointer events set to none for axis lines\n */\n var element = chart.renderer.drawPath(optionsLine);\n this.setPointerEventNone(element);\n chart.yAxisElements.appendChild(element);\n };\n PolarRadarPanel.prototype.drawYAxisLabels = function (axis, index) {\n var chart = this.chart;\n var elementSize;\n var options;\n var pointX = 0;\n var pointY = 0;\n var angle = this.startAngle < 0 ? this.startAngle + 360 : this.startAngle;\n var anchor = 'middle';\n var radius;\n var padding = 5;\n var isIntersect;\n var labelRegions = [];\n var isLabelVisible = [];\n isLabelVisible[0] = true;\n var intersectType = axis.labelIntersectAction;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var vector = CoefficientToVector(valueToPolarCoefficient(axis.visibleLabels[0].value, axis), this.startAngle);\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n isIntersect = false;\n radius = chart.radius * valueToCoefficient(axis.visibleLabels[i].value, axis);\n elementSize = axis.visibleLabels[i].size;\n radius = chart.radius * valueToCoefficient(axis.visibleLabels[i].value, axis);\n pointX = (this.centerX + radius * vector.x) + ((axis.majorTickLines.height + elementSize.width / 2 + padding / 2)\n * (Math.cos(angle * Math.PI / 180)) * (axis.labelPosition === 'Inside' ? 1 : -1));\n pointY = (this.centerY + radius * vector.y) + ((axis.majorTickLines.height + elementSize.height / 2)\n * (Math.sin(angle * Math.PI / 180)) * (axis.labelPosition === 'Inside' ? 1 : -1));\n pointY += (elementSize.height / 4);\n labelRegions[i] = this.getLabelRegion(pointX, pointY, axis.visibleLabels[i], anchor);\n if (i !== 0 && intersectType === 'Hide') {\n for (var j = i; j >= 0; j--) {\n j = (j === 0) ? 0 : (j === i) ? (j - 1) : j;\n if (isLabelVisible[j] && isOverlap(labelRegions[i], labelRegions[j])) {\n isIntersect = true;\n isLabelVisible[i] = false;\n break;\n }\n else {\n isLabelVisible[i] = true;\n }\n }\n if (isIntersect) {\n continue; // If the label is intersect, the label render is ignored.\n }\n // To check Y axis label with visible X axis label\n for (var _i = 0, _a = this.visibleAxisLabelRect; _i < _a.length; _i++) {\n var rect = _a[_i];\n if (isOverlap(labelRegions[i], rect)) {\n isIntersect = true;\n break;\n }\n }\n }\n if (isIntersect) {\n continue;\n }\n this.visibleAxisLabelRect.push(labelRegions[i]);\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor, axis.visibleLabels[i].text);\n textElement(chart.renderer, options, axis.labelStyle, axis.labelStyle.color || chart.themeStyle.axisLabel, labelElement, false, chart.redraw, true, true, null, null, null, null, chart.enableCanvas);\n }\n chart.yAxisElements.appendChild(labelElement);\n };\n PolarRadarPanel.prototype.drawYAxisGridLine = function (axis, index) {\n var chart = this.chart;\n var options;\n var radius;\n var majorTick = '';\n var majorGrid = '';\n var vector;\n var angle = this.startAngle < 0 ? this.startAngle + 360 : this.startAngle;\n var x1;\n var y1;\n var x2;\n var y2;\n var border = {\n color: axis.majorGridLines.color || chart.themeStyle.majorGridLine,\n width: axis.majorGridLines.width\n };\n var previousValue;\n var element;\n if (axis.majorGridLines.width > 0) {\n if (chart.visibleSeries[0].type === 'Polar') {\n for (var j = 0; j < axis.visibleLabels.length; j++) {\n element = getElement(chart.element.id + '_MajorGridLine_' + index + '_' + j);\n previousValue = element ? element.getAttribute('r') : null;\n radius = chart.radius * valueToCoefficient(axis.visibleLabels[j].value, axis);\n options = new CircleOption(chart.element.id + '_MajorGridLine_' + index + '_' + j, 'transparent', border, axis.majorGridLines.width, this.centerX, this.centerY, radius);\n appendChildElement(chart.enableCanvas, this.element, chart.renderer.drawCircle(options), chart.redraw, true, 'r', 'r', new ChartLocation(+previousValue, +previousValue), null, true);\n }\n if (radius !== chart.radius) {\n options = new CircleOption(chart.element.id + '_MajorGridLine_' + index + '_' + axis.visibleLabels.length + 1, 'transparent', border, axis.majorGridLines.width, this.centerX, this.centerY, chart.radius);\n appendChildElement(chart.enableCanvas, this.element, chart.renderer.drawCircle(options), chart.redraw, true, 'r', 'r', new ChartLocation(+previousValue, +previousValue), null, true);\n }\n }\n else {\n for (var j = 0; j < axis.visibleLabels.length; j++) {\n radius = chart.radius * valueToCoefficient(axis.visibleLabels[j].value, axis);\n majorGrid = this.renderRadarGrid(radius, '', chart);\n element = getElement(chart.element.id + '_MajorGridLine_' + index + '_' + j);\n previousValue = element ? element.getAttribute('d') : null;\n options = new PathOption(chart.element.id + '_MajorGridLine_' + index + '_' + j, 'transparent', axis.majorGridLines.width, axis.majorGridLines.color || chart.themeStyle.majorGridLine, null, null, majorGrid);\n appendChildElement(chart.enableCanvas, this.element, chart.renderer.drawPath(options), chart.redraw, true, 'x', 'y', null, previousValue, true);\n }\n if (radius !== chart.radius) {\n majorGrid = this.renderRadarGrid(chart.radius, '', chart);\n element = getElement(chart.element.id + '_MajorGridLine_' + index + '_' + axis.visibleLabels.length);\n previousValue = element ? element.getAttribute('d') : null;\n options = new PathOption(chart.element.id + '_MajorGridLine_' + index + '_' + axis.visibleLabels.length, 'transparent', axis.majorGridLines.width, axis.majorGridLines.color || chart.themeStyle.majorGridLine, null, null, majorGrid);\n appendChildElement(chart.enableCanvas, this.element, chart.renderer.drawPath(options), chart.redraw, true, 'x', 'y', null, previousValue, true);\n }\n }\n }\n if (axis.majorTickLines.width > 0) {\n vector = CoefficientToVector(valueToPolarCoefficient(axis.visibleLabels[0].value, axis), this.startAngle);\n for (var i = 0; i < axis.visibleLabels.length; i++) {\n radius = chart.radius * valueToCoefficient(axis.visibleLabels[i].value, axis);\n x1 = this.centerX + radius * vector.x;\n y1 = this.centerY + radius * vector.y;\n x2 = x1 + (axis.majorTickLines.height * (Math.cos(angle * Math.PI / 180)) * (axis.tickPosition === 'Inside' ? 1 : -1));\n y2 = y1 + (axis.majorTickLines.height * (Math.sin(angle * Math.PI / 180)) * (axis.tickPosition === 'Inside' ? 1 : -1));\n majorTick = 'M ' + x1 + ' ' + y1 + ' L ' + x2 + ' ' + y2;\n this.renderTickLine(axis, index, majorTick, '', i);\n }\n }\n };\n PolarRadarPanel.prototype.renderRadarGrid = function (radius, majorGrid, chart) {\n var vector;\n var vector2;\n var x1;\n var y1;\n var x2;\n var y2;\n for (var i = 0, len = chart.primaryXAxis.visibleLabels.length; i < len; i++) {\n vector = CoefficientToVector(valueToPolarCoefficient(chart.primaryXAxis.visibleLabels[i].value, chart.primaryXAxis), this.startAngle);\n if (i + 1 < len) {\n vector2 = CoefficientToVector(valueToPolarCoefficient(chart.primaryXAxis.visibleLabels[i + 1].value, chart.primaryXAxis), this.startAngle);\n }\n else {\n vector2 = CoefficientToVector(valueToPolarCoefficient(chart.primaryXAxis.visibleLabels[0].value, chart.primaryXAxis), this.startAngle);\n }\n x1 = this.centerX + radius * vector.x;\n y1 = this.centerY + radius * vector.y;\n x2 = this.centerX + radius * vector2.x;\n y2 = this.centerY + radius * vector2.y;\n majorGrid = majorGrid.concat((i ? 'L ' : 'M ') + ' ' + x1 + ' ' + y1 + ' ' + 'L ' + ' ' + x2 + ' ' + y2 + ' ');\n }\n return majorGrid;\n };\n PolarRadarPanel.prototype.drawXAxisGridLine = function (axis, index) {\n var chart = this.chart;\n var tempInterval;\n var vector;\n var majorGrid = '';\n var majorTick = '';\n var minorGirdLine = '';\n var minorTickLine = '';\n var x1 = this.centerX;\n var x2;\n var y1 = this.centerY;\n var y2;\n var minorDirection;\n var length = axis.visibleLabels.length;\n //Gridlines\n for (var i = 0; i < length; i++) {\n tempInterval = axis.visibleLabels[i].value;\n vector = CoefficientToVector(valueToPolarCoefficient(axis.visibleLabels[i].value, axis), this.startAngle);\n x2 = this.centerX + chart.radius * vector.x;\n y2 = this.centerY + chart.radius * vector.y;\n var xLoc = x2 + (axis.majorTickLines.height * vector.x * (axis.tickPosition === 'Inside' ? -1 : 1));\n var yLoc = y2 + (axis.majorTickLines.height * vector.y * (axis.tickPosition === 'Inside' ? -1 : 1));\n majorGrid = 'M ' + x1 + ' ' + y1 + ' ' + 'L ' + x2 + ' ' + y2;\n majorTick = 'M ' + x2 + ' ' + y2 + ' L ' + xLoc + ' ' + yLoc;\n if (axis.minorTicksPerInterval > 0 && (axis.minorGridLines.width > 0 || axis.minorTickLines.width > 0)\n && axis.valueType !== 'Category' && chart.visibleSeries[0].type !== 'Radar') {\n minorDirection = this.drawAxisMinorLine(axis, tempInterval, minorGirdLine, minorTickLine);\n minorGirdLine = minorDirection[0];\n minorTickLine = minorDirection[1];\n }\n this.renderTickLine(axis, index, majorTick, minorTickLine, i);\n this.renderGridLine(axis, index, majorGrid, minorGirdLine, i);\n }\n };\n PolarRadarPanel.prototype.drawAxisMinorLine = function (axis, tempInterval, minorGird, minorTick) {\n var value = tempInterval;\n var x;\n var y;\n var vector;\n var range = axis.visibleRange;\n var direction = [];\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value += (axis.valueType === 'DateTime' ? axis.dateTimeInterval : axis.visibleRange.interval) /\n (axis.minorTicksPerInterval + 1);\n if (inside(value, range)) {\n vector = CoefficientToVector(valueToPolarCoefficient(value, axis), this.startAngle);\n x = this.centerX + this.chart.radius * vector.x;\n y = this.centerY + this.chart.radius * vector.y;\n var tickXSize = x + (axis.minorTickLines.height * vector.x * (axis.tickPosition === 'Inside' ? -1 : 1));\n var tickYSize = y + (axis.minorTickLines.height * vector.y * (axis.tickPosition === 'Inside' ? -1 : 1));\n minorGird = minorGird.concat('M' + ' ' + this.centerX + ' ' + this.centerY\n + 'L ' + x + ' ' + y);\n minorTick = minorTick.concat('M' + ' ' + x + ' ' + y + 'L' + ' ' + (tickXSize) + ' ' +\n (tickYSize));\n }\n }\n direction.push(minorGird);\n direction.push(minorTick);\n return direction;\n };\n /**\n * To render the axis label.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @returns {void}\n * @private\n */\n PolarRadarPanel.prototype.drawXAxisLabels = function (axis, index) {\n this.visibleAxisLabelRect = [];\n var legendRect;\n if (this.chart.legendModule) {\n legendRect = this.chart.legendModule.legendBounds;\n }\n var chart = this.chart;\n var pointX = 0;\n var pointY = 0;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var options;\n var vector;\n var labelText;\n var firstLabelX;\n var islabelInside = axis.labelPosition === 'Inside';\n var padding = 5;\n var lastLabelX;\n var label;\n var textAnchor = '';\n var isIntersect;\n var labelRegions = [];\n var isLabelVisible = [];\n isLabelVisible[0] = true;\n var intersectType = axis.labelIntersectAction;\n var ticksbwtLabel = axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks' ? 0.5 : 0;\n var radius = chart.radius + axis.majorTickLines.height;\n radius = (islabelInside) ? -radius : radius;\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n isIntersect = false;\n vector = CoefficientToVector(valueToPolarCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis), this.startAngle);\n if (!isNaN(vector.x) && !isNaN(vector.y)) {\n pointX = this.centerX + (radius + axis.majorTickLines.height + padding) * vector.x;\n pointY = this.centerY + (radius + axis.majorTickLines.height + padding) * vector.y;\n textAnchor = parseFloat(pointX.toFixed(1)) === parseFloat(this.centerX.toFixed(1)) ? 'middle' :\n ((pointX < this.centerX && !islabelInside) || (pointX > this.centerX && islabelInside)) ? 'end' : 'start';\n }\n label = axis.visibleLabels[i];\n labelText = label.text;\n // to trim axis labels based on available size\n if (axis.enableTrim || intersectType === 'Trim') {\n var originalText = axis.visibleLabels[i].originalText;\n var trimText = void 0;\n var size = void 0;\n var labelPosition = axis.labelPosition;\n var chartWidth = chart.availableSize.width;\n var textLength = originalText.length;\n for (var i_1 = textLength - 1; i_1 >= 0; --i_1) {\n trimText = originalText.substring(0, i_1) + '...';\n size = measureText(trimText, axis.labelStyle).width;\n if (pointX === chartWidth / 2 ? (pointX - size / 2 >= 0 && pointX + size / 2 <= chartWidth) :\n ((labelPosition === 'Outside' && ((pointX >= chartWidth / 2 && pointX + size <= chartWidth) ||\n (pointX <= chartWidth / 2 && pointX - size >= 0))) || (labelPosition === 'Inside' &&\n (pointX + size <= chartWidth / 2 || pointX - size >= chartWidth / 2)))) {\n labelText = i_1 === textLength - 1 ? originalText : trimText;\n label.size.width = measureText(labelText, axis.labelStyle).width;\n label.text = labelText;\n break;\n }\n }\n }\n // fix for label style not working in axisLabelRender event issue\n labelRegions[i] = this.getLabelRegion(pointX, pointY, label, textAnchor);\n if (i === 0) {\n firstLabelX = pointX;\n }\n else if (i === axis.visibleLabels.length - 1 && axis.valueType !== 'Category') {\n lastLabelX = measureText(labelText, axis.labelStyle).height;\n lastLabelX += pointX;\n labelText = (lastLabelX > firstLabelX) ? '' : labelText;\n }\n // Label intersect action (Hide) perform here\n if (i !== 0 && intersectType === 'Hide') {\n for (var j = i; j >= 0; j--) {\n j = (j === 0) ? 0 : ((j === i) ? (j - 1) : j);\n if (isLabelVisible[j] && isOverlap(labelRegions[i], labelRegions[j])) {\n isIntersect = true;\n isLabelVisible[i] = false;\n break;\n }\n else {\n isLabelVisible[i] = true;\n }\n }\n }\n if (!isIntersect && legendRect) {\n isIntersect = isOverlap(labelRegions[i], legendRect);\n if (isIntersect) {\n var width = this.getAvailableSpaceToTrim(legendRect, labelRegions[i]);\n if (width > 0) {\n labelText = textTrim(width, axis.visibleLabels[i].originalText, axis.labelStyle);\n isIntersect = false;\n }\n }\n }\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, textAnchor, labelText, '', 'central');\n if (isIntersect) {\n continue; // If the label is intersect, the label render is ignored.\n }\n this.visibleAxisLabelRect.push(labelRegions[i]);\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabel, labelElement, false, chart.redraw, true, true, null, null, null, null, chart.enableCanvas);\n }\n this.element.appendChild(labelElement);\n };\n /**\n * To get available space to trim.\n *\n * @param {Rect} legendRect legendRect\n * @param {Rect} labelRect labelRect\n * @returns {number} available space value\n */\n PolarRadarPanel.prototype.getAvailableSpaceToTrim = function (legendRect, labelRect) {\n var legendX1 = legendRect.x;\n var legendX2 = legendX1 + legendRect.width;\n var labelX1 = labelRect.x;\n var labelX2 = labelX1 + labelRect.width;\n var width = 0;\n if (labelX1 > legendX1 && labelX1 < legendX2 && labelX2 > legendX2) {\n width = labelX2 - legendX2;\n }\n else if (labelX1 > legendX1 && labelX1 < legendX2 && labelX2 < legendX2) {\n width = 0;\n }\n else if (labelX2 > legendX1 && labelX2 < legendX2 && labelX1 < legendX1) {\n width = legendX1 - labelX1;\n }\n else if (labelX2 > legendX1 && labelX2 > legendX2 && labelX1 < legendX1) {\n width = legendX1 - labelX1;\n }\n return width;\n };\n /**\n * Getting axis label bounds\n *\n * @param {number} pointX pointX\n * @param {number} pointY pointY\n * @param {VisibleLabels} label label\n * @param {string} anchor anchor\n * @returns {Rect} label region\n */\n PolarRadarPanel.prototype.getLabelRegion = function (pointX, pointY, label, anchor) {\n if (anchor === 'middle') {\n pointX -= (label.size.width / 2);\n }\n else if (anchor === 'end') {\n pointX -= label.size.width;\n }\n else {\n // eslint-disable-next-line no-self-assign\n pointX = pointX;\n }\n pointY -= (label.size.height / 2);\n return new Rect(pointX, pointY, label.size.width, label.size.height);\n };\n PolarRadarPanel.prototype.renderTickLine = function (axis, index, majorTickLine, minorTickLine, gridIndex) {\n var tickOptions;\n var chart = this.chart;\n var direction;\n var element;\n if (axis.majorTickLines.width > 0) {\n element = getElement(chart.element.id + '_MajorTickLine_' + index + '_' + gridIndex);\n direction = element ? element.getAttribute('d') : null;\n tickOptions = new PathOption(chart.element.id + '_MajorTickLine_' + index + '_' + gridIndex, 'transparent', axis.majorTickLines.width, axis.majorTickLines.color || chart.themeStyle.majorTickLine, null, null, majorTickLine);\n /**\n * I252450\n * When we click the center of the marker which is plotted in the axis, selection did not work is fixed\n * Cause: Instead of marker id, axis Tick line id is obtained while clicking\n * Fix: Pointer events set to none for tick lines\n */\n element = chart.renderer.drawPath(tickOptions);\n this.setPointerEventNone(element);\n appendChildElement(chart.enableCanvas, chart.yAxisElements, element, chart.redraw, true, 'x', 'y', null, direction);\n }\n if (axis.minorTickLines.width > 0) {\n element = getElement(chart.element.id + '_MinorTickLine_' + index + '_' + gridIndex);\n direction = element ? element.getAttribute('d') : null;\n tickOptions = new PathOption(chart.element.id + '_MinorTickLine_' + index + '_' + gridIndex, 'transparent', axis.minorTickLines.width, axis.minorTickLines.color || chart.themeStyle.minorTickLine, null, null, minorTickLine);\n /**\n * I252450\n * When we click the center of the marker which is plotted in the axis, selection did not work is fixed\n * Cause: Instead of marker id, axis Tick line id is obtained while clicking\n * Fix: Pointer events set to none for tick lines\n */\n element = chart.renderer.drawPath(tickOptions);\n this.setPointerEventNone(element);\n appendChildElement(chart.enableCanvas, chart.yAxisElements, element, chart.redraw, true, 'x', 'y', null, direction);\n }\n };\n PolarRadarPanel.prototype.renderGridLine = function (axis, index, majorGrid, minorGird, gridIndex) {\n var chart = this.chart;\n var gridOptions;\n var direction;\n var element;\n if (axis.majorGridLines.width > 0) {\n element = getElement(chart.element.id + '_MajorGridLine_' + index + '_' + gridIndex);\n direction = element ? element.getAttribute('d') : null;\n gridOptions = new PathOption(chart.element.id + '_MajorGridLine_' + index + '_' + gridIndex, 'transparent', axis.majorGridLines.width, axis.majorGridLines.color || chart.themeStyle.majorGridLine, null, axis.majorGridLines.dashArray, majorGrid);\n appendChildElement(chart.enableCanvas, this.element, chart.renderer.drawPath(gridOptions), chart.redraw, true, 'x', 'y', null, direction);\n }\n if (axis.minorGridLines.width > 0) {\n element = getElement(chart.element.id + '_MinorGridLine_' + index + '_' + gridIndex);\n direction = element ? element.getAttribute('d') : null;\n gridOptions = new PathOption(chart.element.id + '_MinorGridLine_' + index + '_' + gridIndex, 'transparent', axis.minorGridLines.width, axis.minorGridLines.color || chart.themeStyle.minorGridLine, null, axis.minorGridLines.dashArray, minorGird);\n appendChildElement(chart.enableCanvas, this.element, chart.renderer.drawPath(gridOptions), chart.redraw, true, 'x', 'y', null, direction);\n }\n };\n PolarRadarPanel.prototype.setPointerEventNone = function (element) {\n if (element) {\n element.setAttribute('style', 'pointer-events:none');\n }\n };\n return PolarRadarPanel;\n}(LineBase));\nexport { PolarRadarPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable prefer-const */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, logBase, markerAnimate, PolarArc, firstToLowerCase } from '../../common/utils/helper';\nimport { valueToCoefficient, CoefficientToVector, valueToPolarCoefficient } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { PolarRadarPanel } from '../axis/polar-radar-panel';\nimport { pointRender } from '../../common/model/constants';\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `PolarSeries` module is used to render the polar series.\n */\nvar PolarSeries = /** @class */ (function (_super) {\n __extends(PolarSeries, _super);\n function PolarSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Polar Series.\n *\n * @returns {void}\n * @private\n */\n PolarSeries.prototype.render = function (series, xAxis, yAxis, inverted) {\n var seriesType = firstToLowerCase(series.drawType);\n var yAxisMin = yAxis.minimum;\n var yAxisMax = yAxis.maximum;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var visiblePoint = _a[_i];\n visiblePoint.visible = visiblePoint.visible && !((!isNullOrUndefined(yAxisMin) && visiblePoint.yValue < yAxisMin) ||\n (!isNullOrUndefined(yAxisMax) && visiblePoint.yValue > yAxisMax));\n }\n if (series.points.length) {\n if ((series.drawType.indexOf('Column') > -1)) {\n this.columnDrawTypeRender(series, xAxis, yAxis);\n }\n else {\n series.chart[seriesType + 'SeriesModule'].render(series, xAxis, yAxis, inverted);\n }\n }\n };\n /**\n * Render Column DrawType.\n *\n * @returns {void}\n * @private\n */\n PolarSeries.prototype.columnDrawTypeRender = function (series, xAxis, yAxis) {\n var options;\n var argsData;\n var startAngle;\n var endAngle;\n var itemCurrentXPos;\n var radius;\n var inversedValue;\n var pointStartAngle;\n var pointEndAngle;\n var x1;\n var x2;\n var y1;\n var y2;\n var startValue;\n var endValue;\n var innerRadius;\n var min = xAxis.actualRange.min;\n var centerX = (series.clipRect.width / 2) + series.clipRect.x;\n var dStartX;\n var dStartY;\n var centerY = (series.clipRect.height / 2) + series.clipRect.y;\n var dEndX;\n var dEndY;\n var isRangeColumn = series.drawType === 'RangeColumn';\n var isPolar = series.type === 'Polar';\n var isLogAxis = yAxis.valueType === 'Logarithmic';\n var isStacking = series.drawType === 'StackingColumn';\n var direction = '';\n var sumofYValues = 0;\n var arcValue;\n var interval = (series.points[1] ? series.points[1].xValue : 2 * series.points[0].xValue) - series.points[0].xValue;\n //customer issue ID-I249730, Polar columnSeries in OnTicks with inversed axis\n var ticks = (xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks') ? 0 :\n xAxis.isInversed ? -interval / 2 : interval / 2;\n var rangeInterval = xAxis.valueType === 'DateTime' ? xAxis.dateTimeInterval : 1;\n this.getSeriesPosition(series);\n var position = xAxis.isInversed ? (series.rectCount - 1 - series.position) : series.position;\n do {\n sumofYValues += rangeInterval;\n min += rangeInterval;\n } while (min <= xAxis.actualRange.max - (xAxis.valueType === 'Category' ? 0 : 1));\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n point.symbolLocations = [];\n point.regions = [];\n if (point.visible && withInRange(series.points[point.index - 1], point, series.points[point.index + 1], series)) {\n inversedValue = xAxis.isInversed ? (xAxis.visibleRange.max - point.xValue) : point.xValue - xAxis.visibleRange.min;\n itemCurrentXPos = (inversedValue) +\n ((interval / series.rectCount) * position - ticks) + (sumofYValues / 360 * xAxis.startAngle);\n itemCurrentXPos = (((itemCurrentXPos) / (sumofYValues)));\n startAngle = 2 * Math.PI * (itemCurrentXPos + xAxis.startAngle);\n endAngle = 2 * Math.PI * ((itemCurrentXPos + xAxis.startAngle) + (interval / series.rectCount) / (sumofYValues));\n if (startAngle === 0 && endAngle === 0) {\n endAngle = 2 * Math.PI;\n arcValue = '1';\n }\n else {\n arcValue = '0';\n }\n pointStartAngle = startAngle;\n pointEndAngle = endAngle;\n startAngle = (startAngle - 0.5 * Math.PI) + (series.columnSpacing / 2);\n endAngle = ((endAngle - 0.5 * Math.PI) - 0.000001) - (series.columnSpacing / 2);\n if (isStacking || isRangeColumn) {\n startValue = isRangeColumn ? point.low : series.stackedValues.startValues[point.index];\n endValue = isRangeColumn ? point.high : series.stackedValues.endValues[point.index];\n endValue = (isLogAxis ? logBase(endValue === 0 ? 1 : endValue, yAxis.logBase) : endValue);\n endValue = endValue > yAxis.actualRange.max ? yAxis.actualRange.max : endValue;\n }\n else {\n startValue = yAxis.visibleRange.min;\n endValue = point.yValue > yAxis.actualRange.max ? yAxis.actualRange.max : point.yValue;\n }\n radius = startValue === endValue ? 0 : series.chart.radius * valueToCoefficient(endValue, yAxis);\n x1 = centerX + radius * Math.cos(startAngle);\n x2 = centerX + radius * Math.cos(endAngle);\n y1 = centerY + radius * Math.sin(startAngle);\n y2 = centerY + radius * Math.sin(endAngle);\n innerRadius = series.chart.radius * valueToCoefficient((startValue === 0 && yAxis.visibleRange.min !== 0) ? yAxis.visibleRange.min : startValue, yAxis);\n dStartX = centerX + innerRadius * Math.cos(startAngle);\n dStartY = centerY + innerRadius * Math.sin(startAngle);\n dEndX = centerX + innerRadius * Math.cos(endAngle);\n dEndY = centerY + innerRadius * Math.sin(endAngle);\n if (isPolar) {\n direction = ('M' + ' ' + x1 + ' ' + y1 + ' ' + 'A' + ' ' + radius + ' ' + radius + ' ' + '0' + ' '\n + arcValue + ' ' + 1 + ' ' + x2 + ' ' + y2 + ' ' + 'L' + ' ' + dEndX + ' ' + dEndY + ' ' +\n 'A' + ' ' + innerRadius + ' ' + innerRadius + ' ' + '1' + ' ' + '0' + ' ' + '0' + ' '\n + dStartX + ' ' + dStartY + ' ' + 'Z');\n }\n else {\n direction = ('M' + ' ' + x1 + ' ' + y1 + ' ' + 'L' + ' ' + x2 + ' ' + y2 + ' ' + 'L '\n + dEndX + ' ' + dEndY + ' ' + 'L' + ' ' + dStartX + ' ' + dStartY + ' ' + 'Z');\n }\n point.regionData = new PolarArc(pointStartAngle, pointEndAngle, innerRadius, radius, itemCurrentXPos);\n argsData = this.triggerEvent(series.chart, series, point);\n options = new PathOption(series.chart.element.id + '_Series_' + series.index + '_Point_' + point.index, argsData.fill, argsData.border.width, argsData.border.color, series.opacity, series.dashArray, direction);\n if (!argsData.cancel) {\n this.appendLinePath(options, series, '');\n if (isPolar) {\n point.symbolLocations.push({\n x: centerX + radius * Math.cos((startAngle + (endAngle - startAngle) / 2)),\n y: centerY + radius * Math.sin((startAngle + (endAngle - startAngle) / 2))\n });\n if (isRangeColumn) {\n point.symbolLocations.push({\n x: centerX + innerRadius * Math.cos((startAngle + (endAngle - startAngle) / 2)),\n y: centerY + innerRadius * Math.sin((startAngle + (endAngle - startAngle) / 2))\n });\n }\n }\n else {\n point.symbolLocations.push({ x: (x1 + x2) / 2, y: (y1 + y2) / 2 });\n if (isRangeColumn) {\n point.symbolLocations.push({ x: (dEndX + dStartX) / 2, y: (dEndY + dStartY) / 2 });\n }\n }\n }\n }\n }\n this.renderMarker(series);\n series.isRectSeries = true;\n };\n /**\n * To trigger the point rendering event.\n *\n * @returns {void}\n * @private\n */\n PolarSeries.prototype.triggerEvent = function (chart, series, point) {\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: series.setPointColor(point, series.interior),\n border: series.setBorderColor(point, { width: series.border.width, color: series.border.color })\n };\n chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n return argsData;\n };\n /** get position for column drawtypes\n *\n * @returns {void}\n * @private\n */\n PolarSeries.prototype.getSeriesPosition = function (series) {\n var chart = series.chart;\n var seriesCollection = [];\n var stackingGroup = [];\n var vSeries = { rectCount: 0, position: null };\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series_1 = _a[_i];\n if (series_1.visible && (series_1.type === 'Polar' || series_1.type === 'Radar') && series_1.drawType.indexOf('Column') !== -1) {\n seriesCollection.push(series_1);\n }\n }\n for (var i = 0; i < seriesCollection.length; i++) {\n var series_2 = seriesCollection[i];\n if (series_2.drawType.indexOf('Stacking') !== -1) {\n if (series_2.stackingGroup) {\n if (stackingGroup[series_2.stackingGroup] === undefined) {\n series_2.position = vSeries.rectCount;\n stackingGroup[series_2.stackingGroup] = vSeries.rectCount++;\n }\n else {\n series_2.position = stackingGroup[series_2.stackingGroup];\n }\n }\n else {\n if (vSeries.position === null) {\n series_2.position = vSeries.rectCount;\n vSeries.position = vSeries.rectCount++;\n }\n else {\n series_2.position = vSeries.position;\n }\n }\n }\n else {\n series_2.position = vSeries.rectCount++;\n }\n }\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n value.rectCount = vSeries.rectCount;\n }\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n PolarSeries.prototype.doAnimation = function (series) {\n var duration = series.animation.duration;\n var delay = series.animation.delay;\n var rectElements = series.seriesElement.childNodes;\n var count = 1;\n if (series.drawType === 'Scatter') {\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.symbolLocations.length || !rectElements[count]) {\n continue;\n }\n markerAnimate(rectElements[count], delay, duration, series, point.index, point.symbolLocations[0], false);\n count++;\n }\n }\n else {\n for (count = 1; count < rectElements.length; count++) {\n this.doPolarRadarAnimation(rectElements[count], delay, duration, series);\n }\n }\n };\n /**\n * To do the Polar Radar draw type column animation.\n *\n * @returns {void}\n * @private\n */\n PolarSeries.prototype.doPolarRadarAnimation = function (animateElement, delay, duration, series) {\n var chartcenterX = series.clipRect.width / 2 + series.clipRect.x;\n var chartcenterY = series.clipRect.height / 2 + series.clipRect.y;\n var elementHeight = 0;\n animateElement.style.visibility = 'hidden';\n new Animation({}).animate(animateElement, {\n duration: duration,\n delay: delay,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n elementHeight = ((args.timeStamp - args.delay) / args.duration);\n animateElement.setAttribute('transform', 'translate(' + chartcenterX\n + ' ' + chartcenterY + ') scale(' + elementHeight + ') translate(' + (-chartcenterX) + ' ' + (-chartcenterY) + ')');\n }\n },\n end: function () {\n animateElement.style.visibility = 'visible';\n animateElement.removeAttribute('transform');\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n });\n };\n // path calculation for isInversed polar area series\n PolarSeries.prototype.getPolarIsInversedPath = function (xAxis, endPoint) {\n var vector;\n var x1;\n var y1;\n var chart = this.chart;\n var radius = chart.radius;\n var direction = endPoint;\n var circleRotate = xAxis.isInversed ? '1 1 ' : '1 0 ';\n vector = CoefficientToVector(valueToPolarCoefficient(xAxis.visibleLabels[0].value, xAxis), this.startAngle);\n x1 = this.centerX + radius * vector.x;\n y1 = this.centerY + radius * vector.y;\n return direction += 'L ' + x1 + ' ' + y1 + ' A ' + radius + ' ' + radius + ' 0 ' + circleRotate +\n x1 + ' ' + (this.centerY + radius) + ' A ' + radius + ' ' + radius + ' 0 ' + circleRotate + x1 + ' ' + y1 + ' ';\n };\n /**\n * Get module name.\n */\n PolarSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'PolarSeries';\n };\n /**\n * To destroy the polar series.\n *\n * @returns {void}\n * @private\n */\n PolarSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return PolarSeries;\n}(PolarRadarPanel));\nexport { PolarSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { firstToLowerCase, CoefficientToVector, valueToPolarCoefficient } from '../../common/utils/helper';\nimport { PolarSeries } from '../series/polar-series';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `RadarSeries` module is used to render the radar series.\n */\nvar RadarSeries = /** @class */ (function (_super) {\n __extends(RadarSeries, _super);\n function RadarSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render radar Series.\n *\n * @returns {void}\n * @private\n */\n RadarSeries.prototype.render = function (series, xAxis, yAxis, inverted) {\n var seriesType = firstToLowerCase(series.drawType);\n var yAxisMin = yAxis.minimum;\n var yAxisMax = yAxis.maximum;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n point.visible = point.visible && !((!isNullOrUndefined(yAxisMin) && point.yValue < yAxisMin) ||\n (!isNullOrUndefined(yAxisMax) && point.yValue > yAxisMax));\n }\n if (series.points.length) {\n if (series.drawType.indexOf('Column') === -1) {\n series.chart[seriesType + 'SeriesModule'].render(series, xAxis, yAxis, inverted);\n }\n else {\n this.columnDrawTypeRender(series, xAxis, yAxis);\n }\n }\n };\n // path calculation for isInversed polar area series\n RadarSeries.prototype.getRadarIsInversedPath = function (xAxis, endPoint) {\n var chart = this.chart;\n var x1;\n var y1;\n var vector;\n var radius = chart.radius;\n var length = xAxis.visibleLabels.length;\n var direction = endPoint;\n vector = CoefficientToVector(valueToPolarCoefficient(xAxis.visibleLabels[0].value, xAxis), this.startAngle);\n y1 = this.centerY + radius * vector.y;\n x1 = this.centerX + radius * vector.x;\n direction += ' L ' + x1 + ' ' + y1 + ' ';\n for (var i = length - 1; i >= 0; i--) {\n vector = CoefficientToVector(valueToPolarCoefficient(xAxis.visibleLabels[i].value, xAxis), this.startAngle);\n y1 = this.centerY + radius * vector.y;\n x1 = this.centerX + radius * vector.x;\n direction += 'L ' + x1 + ' ' + y1 + ' ';\n }\n return direction;\n };\n /**\n * Get module name.\n */\n RadarSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'RadarSeries';\n };\n /**\n * To destroy the radar series.\n *\n * @returns {void}\n * @private\n */\n RadarSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return RadarSeries;\n}(PolarSeries));\nexport { RadarSeries };\n","import { RectOption, CircleOption } from '../utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\n// eslint-disable-next-line jsdoc/require-param\n/**\n * Create scrollbar svg.\n *\n * @returns {void}\n */\nexport function createScrollSvg(scrollbar, renderer) {\n var rect = scrollbar.axis.rect;\n var isHorizontalAxis = scrollbar.axis.orientation === 'Horizontal';\n var enablePadding = false;\n var markerHeight = 5;\n var yMin;\n for (var _i = 0, _a = scrollbar.axis.series; _i < _a.length; _i++) {\n var tempSeries = _a[_i];\n if (tempSeries.marker.height > markerHeight) {\n markerHeight = tempSeries.marker.height;\n }\n }\n for (var _b = 0, _c = scrollbar.axis.series; _b < _c.length; _b++) {\n var tempSeries = _c[_b];\n if (tempSeries.visible) { // To avoid the console error, when the visibility of the series is false.\n yMin = tempSeries.yMin.toString();\n enablePadding = (tempSeries.yData).some(function (yData) {\n return yData === yMin;\n });\n }\n if (enablePadding) {\n break;\n }\n }\n scrollbar.svgObject = renderer.createSvg({\n id: scrollbar.component.element.id + '_' + 'scrollBar_svg' + scrollbar.axis.name,\n width: scrollbar.isVertical ? scrollbar.height : scrollbar.width,\n height: scrollbar.isVertical ? scrollbar.width : scrollbar.height,\n style: 'position: absolute;top: ' + ((scrollbar.axis.opposedPosition && isHorizontalAxis ? -16 :\n (enablePadding ? markerHeight : 0)) + rect.y) + 'px;left: ' +\n (((scrollbar.axis.opposedPosition && !isHorizontalAxis ? 16 : 0) + rect.x) - (scrollbar.isVertical ? scrollbar.height : 0))\n + 'px;cursor:auto;'\n });\n scrollbar.elements.push(scrollbar.svgObject);\n}\n/**\n * Scrollbar elements renderer\n */\nvar ScrollElements = /** @class */ (function () {\n /**\n * Constructor for scroll elements\n *\n * @param scrollObj\n * @param chart\n */\n function ScrollElements(chart) {\n this.chartId = chart.element.id + '_';\n }\n /**\n * Render scrollbar elements.\n *\n * @returns {void}\n * @private\n */\n ScrollElements.prototype.renderElements = function (scroll, renderer) {\n var scrollGroup = renderer.createGroup({\n id: this.chartId + 'scrollBar_' + scroll.axis.name,\n transform: 'translate(' + ((scroll.isVertical && scroll.axis.isInversed) ? scroll.height : scroll.axis.isInversed ?\n scroll.width : '0') + ',' + (scroll.isVertical && scroll.axis.isInversed ? '0' : scroll.axis.isInversed ?\n scroll.height : scroll.isVertical ? scroll.width : '0') + ') rotate(' + (scroll.isVertical && scroll.axis.isInversed ?\n '90' : scroll.isVertical ? '270' : scroll.axis.isInversed ? '180' : '0') + ')'\n });\n var backRectGroup = renderer.createGroup({\n id: this.chartId + 'scrollBar_backRect_' + scroll.axis.name\n });\n var thumbGroup = renderer.createGroup({\n id: this.chartId + 'scrollBar_thumb_' + scroll.axis.name,\n transform: 'translate(0,0)'\n });\n this.backRect(scroll, renderer, backRectGroup);\n this.thumb(scroll, renderer, thumbGroup);\n this.renderCircle(scroll, renderer, thumbGroup);\n this.arrows(scroll, renderer, thumbGroup);\n this.thumbGrip(scroll, renderer, thumbGroup);\n scrollGroup.appendChild(backRectGroup);\n scrollGroup.appendChild(thumbGroup);\n return scrollGroup;\n };\n /**\n * Method to render back rectangle of scrollbar\n *\n * @param scroll\n * @param renderer\n * @param parent\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.backRect = function (scroll, renderer, parent) {\n var style = scroll.scrollbarThemeStyle;\n var backRectEle = renderer.drawRectangle(new RectOption(this.chartId + 'scrollBarBackRect_' + scroll.axis.name, style.backRect, { width: 1, color: style.backRect }, 1, new Rect(0, 0, scroll.width, scroll.height), 0, 0));\n parent.appendChild(backRectEle);\n };\n /**\n * Method to render arrows\n *\n * @param scroll\n * @param renderer\n * @param parent\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.arrows = function (scroll, renderer, parent) {\n var style = scroll.scrollbarThemeStyle;\n var option = new PathOption(this.chartId + 'scrollBar_leftArrow_' + scroll.axis.name, style.arrow, 1, style.arrow, 1, '', '');\n this.leftArrowEle = renderer.drawPath(option);\n option.id = this.chartId + 'scrollBar_rightArrow_' + scroll.axis.name;\n this.rightArrowEle = renderer.drawPath(option);\n this.setArrowDirection(this.thumbRectX, this.thumbRectWidth, scroll.height);\n parent.appendChild(this.leftArrowEle);\n parent.appendChild(this.rightArrowEle);\n };\n /**\n * Methods to set the arrow width\n *\n * @param thumbRectX\n * @param thumbRectWidth\n * @param height\n */\n ScrollElements.prototype.setArrowDirection = function (thumbRectX, thumbRectWidth, height) {\n var circleRadius = 8;\n var leftDirection = 'M ' + ((thumbRectX - circleRadius / 2) + 1) + ' ' + (height / 2) + ' ' + 'L ' +\n (thumbRectX - circleRadius / 2 + 6) + ' ' + 11 + ' ' + 'L ' + (thumbRectX - circleRadius / 2 + 6) + ' ' + 5 + ' Z';\n var rightDirection = 'M ' + ((thumbRectX + thumbRectWidth + circleRadius / 2) - 0.5) + ' ' + (height / 2)\n + ' ' + 'L ' + (thumbRectX + thumbRectWidth + circleRadius / 2 - 6) + ' ' + 11.5 + ' ' + 'L ' + (thumbRectX +\n thumbRectWidth + circleRadius / 2 - 6) + ' ' + 4.5 + ' Z';\n this.leftArrowEle.setAttribute('d', leftDirection);\n this.rightArrowEle.setAttribute('d', rightDirection);\n };\n /**\n * Method to render thumb\n *\n * @param scroll\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.thumb = function (scroll, renderer, parent) {\n scroll.startX = this.thumbRectX;\n var style = scroll.scrollbarThemeStyle;\n this.slider = renderer.drawRectangle(new RectOption(this.chartId + 'scrollBarThumb_' + scroll.axis.name, style.thumb, { width: 1, color: '' }, 1, new Rect(this.thumbRectX, 0, this.thumbRectWidth, scroll.height)));\n parent.appendChild(this.slider);\n };\n /**\n * Method to render circles\n *\n * @param scroll\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.renderCircle = function (scroll, renderer, parent) {\n var style = scroll.scrollbarThemeStyle;\n var option = new CircleOption(this.chartId + 'scrollBar_leftCircle_' + scroll.axis.name, style.circle, { width: 1, color: style.circle }, 1, this.thumbRectX, scroll.height / 2, 8);\n var scrollShadowEle = '' +\n '' +\n '' +\n '' +\n '';\n var defElement = renderer.createDefs();\n var shadowGroup = renderer.createGroup({\n id: this.chartId + scroll.axis.name + '_thumb_shadow'\n });\n defElement.innerHTML = scrollShadowEle;\n shadowGroup.innerHTML = '';\n this.leftCircleEle = renderer.drawCircle(option);\n option.id = this.chartId + 'scrollBar_rightCircle_' + scroll.axis.name;\n option.cx = this.thumbRectX + this.thumbRectWidth;\n this.rightCircleEle = renderer.drawCircle(option);\n parent.appendChild(defElement);\n parent.appendChild(this.leftCircleEle);\n parent.appendChild(this.rightCircleEle);\n parent.appendChild(shadowGroup);\n };\n /**\n * Method to render grip elements\n *\n * @param scroll\n * @param renderer\n * @param parent\n */\n ScrollElements.prototype.thumbGrip = function (scroll, renderer, parent) {\n var sidePadding = 0;\n var topPadding = 0;\n var gripWidth = 14;\n var gripCircleDiameter = 2;\n var padding = gripWidth / 2 - gripCircleDiameter;\n var style = scroll.scrollbarThemeStyle;\n var option = new CircleOption(this.chartId + 'scrollBar_gripCircle0' + '_' + scroll.axis.name, style.grip, { width: 1, color: style.grip }, 1, 0, 0, 1);\n this.gripCircle = renderer.createGroup({\n id: this.chartId + 'scrollBar_gripCircle_' + scroll.axis.name,\n transform: 'translate(' + ((this.thumbRectX + this.thumbRectWidth / 2) + ((scroll.isVertical ? 1 : -1) * padding)) +\n ',' + (scroll.isVertical ? '10' : '5') + ') rotate(' + (scroll.isVertical ? '180' : '0') + ')'\n });\n for (var i = 1; i <= 6; i++) {\n option.id = this.chartId + 'scrollBar_gripCircle' + i + '_' + scroll.axis.name;\n option.cx = sidePadding;\n option.cy = topPadding;\n this.gripCircle.appendChild(renderer.drawCircle(option));\n sidePadding = i === 3 ? 0 : (sidePadding + 5);\n topPadding = i >= 3 ? 5 : 0;\n }\n parent.appendChild(this.gripCircle);\n };\n return ScrollElements;\n}());\nexport { ScrollElements };\n","/**\n * Specifies Chart Themes\n */\nexport var Theme;\n(function (Theme) {\n /** @private */\n Theme.axisLabelFont = {\n size: '12px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.axisTitleFont = {\n size: '14px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.chartTitleFont = {\n size: '15px',\n fontWeight: '500',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.chartSubTitleFont = {\n size: '11px',\n fontWeight: '500',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.crosshairLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.tooltipLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.legendLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.stripLineLabelFont = {\n size: '12px',\n fontWeight: 'Regular',\n color: '#353535',\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.stockEventFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n})(Theme || (Theme = {}));\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { ScrollElements, createScrollSvg } from './scrollbar-elements';\nimport { getElement, minMax, logBase } from '../utils/helper';\nimport { getScrollbarThemeColor } from '../model/theme';\nimport { scrollChanged, scrollEnd, scrollStart } from '../model/constants';\n/**\n * Scrollbar Base\n */\nvar ScrollBar = /** @class */ (function () {\n /**\n * Constructor for creating scrollbar\n *\n * @param component\n * @param axis\n */\n function ScrollBar(component, axis) {\n /** @private */\n this.scrollRange = { max: null, min: null, interval: null, delta: null };\n this.component = component;\n this.elements = [];\n this.scrollElements = new ScrollElements(component);\n this.axis = axis;\n this.mouseMoveListener = this.scrollMouseMove.bind(this);\n this.mouseUpListener = this.scrollMouseUp.bind(this);\n this.animateDuration = 500;\n this.isPointer = Browser.isPointer;\n this.browserName = Browser.info.name;\n }\n /**\n * To Mouse x and y position\n *\n * @param e\n */\n ScrollBar.prototype.getMouseXY = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (e.type.indexOf('touch') > -1) {\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n pageX = e.clientX;\n pageY = e.clientY;\n }\n var svgRect = getElement(this.component.element.id + '_scrollBar_svg' + this.axis.name).getBoundingClientRect();\n this.mouseX = pageX - Math.max(svgRect.left, 0);\n this.mouseY = pageY - Math.max(svgRect.top, 0);\n };\n /**\n * Method to bind events for scrollbar svg object\n *\n * @param element\n * @returns {void}\n */\n ScrollBar.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.scrollMouseDown, this);\n EventHandler.add(element, Browser.touchMoveEvent, this.scrollMouseMove, this);\n EventHandler.add(element, Browser.touchEndEvent, this.scrollMouseUp, this);\n EventHandler.add(element, 'mousewheel', this.scrollMouseWheel, this);\n window.addEventListener('mousemove', this.mouseMoveListener, false);\n window.addEventListener('mouseup', this.mouseUpListener, false);\n };\n /**\n * Method to remove events for srcollbar svg object\n *\n * @param element\n */\n ScrollBar.prototype.unWireEvents = function (element) {\n EventHandler.remove(element, Browser.touchStartEvent, this.scrollMouseDown);\n EventHandler.remove(element, Browser.touchMoveEvent, this.scrollMouseMove);\n EventHandler.remove(element, Browser.touchEndEvent, this.scrollMouseUp);\n EventHandler.remove(element, 'mousewheel', this.scrollMouseWheel);\n window.removeEventListener('mousemove', this.mouseMoveListener, false);\n window.removeEventListener('mouseup', this.mouseUpListener, false);\n };\n /**\n * Handles the mouse down on scrollbar\n *\n * @param e\n */\n ScrollBar.prototype.scrollMouseDown = function (e) {\n var id = e.target.id;\n var elem = this.scrollElements;\n this.getMouseXY(e);\n this.isResizeLeft = this.isExist(id, '_leftCircle_') || this.isExist(id, '_leftArrow_');\n this.isResizeRight = this.isExist(id, '_rightCircle_') || this.isExist(id, '_rightArrow_');\n // this.previousXY = this.isVertical ? this.mouseY : this.mouseX;\n this.previousXY = (this.isVertical && this.axis.isInversed) ? this.mouseY : this.isVertical ? this.width -\n this.mouseY : this.axis.isInversed ? this.width - this.mouseX : this.mouseX;\n this.previousWidth = elem.thumbRectWidth;\n this.previousRectX = elem.thumbRectX;\n this.startZoomPosition = this.axis.zoomPosition;\n this.startZoomFactor = this.axis.zoomFactor;\n this.startRange = this.axis.visibleRange;\n this.scrollStarted = true;\n this.component.trigger(scrollStart, this.getArgs(scrollStart));\n if (this.isExist(id, 'scrollBarThumb_') || this.isExist(id, 'gripCircle')) {\n this.isThumbDrag = true;\n this.svgObject.style.cursor = '-webkit-grabbing';\n }\n else if (this.isExist(id, 'scrollBarBackRect_')) {\n var currentX = this.moveLength(this.previousXY, this.previousRectX);\n elem.thumbRectX = this.isWithIn(currentX) ? currentX : elem.thumbRectX;\n this.positionThumb(elem.thumbRectX, elem.thumbRectWidth);\n this.setZoomFactorPosition(elem.thumbRectX, elem.thumbRectWidth, false);\n if (this.isLazyLoad) {\n var thumbMove = elem.thumbRectX > this.previousRectX ? 'RightMove' : 'LeftMove';\n var args = this.calculateLazyRange(elem.thumbRectX, elem.thumbRectWidth, thumbMove);\n if (args) {\n this.component.trigger(scrollEnd, args);\n }\n }\n }\n /**\n * Customer issue\n * Task ID - EJ2-28898\n * Issue: While element's height is smaller than chart'height, html scroll bar presents. On that case while moving chart scrollbar,\n * html scrollbar goes up due to chart's svg removed from the dom when zoomFactor and zoomPosition chnaged\n * Fix: Only for scrolling purpose, height for element is set to chart's available height\n */\n if (this.component.element.style.height === '') {\n this.isCustomHeight = true;\n this.component.element.style.height = this.component.availableSize.height + 'px';\n }\n };\n /**\n * To check the matched string\n *\n * @param id\n * @param match\n */\n ScrollBar.prototype.isExist = function (id, match) {\n return id.indexOf(match) > -1;\n };\n /**\n * To check current poisition is within scrollbar region\n *\n * @param currentX\n */\n ScrollBar.prototype.isWithIn = function (currentX) {\n var circleRadius = 8;\n return (currentX - circleRadius >= 0 &&\n currentX + this.scrollElements.thumbRectWidth + circleRadius <= this.width);\n };\n /**\n * Method to find move length of thumb\n *\n * @param mouseXY\n * @param thumbX\n * @param circleRadius\n */\n ScrollBar.prototype.moveLength = function (mouseXY, thumbX, circleRadius) {\n if (circleRadius === void 0) { circleRadius = 8; }\n var moveLength = (10 / 100) * (this.width - circleRadius * 2);\n if (mouseXY < thumbX) {\n moveLength = thumbX - (thumbX - moveLength > circleRadius ? moveLength : circleRadius);\n }\n else {\n moveLength = thumbX + (thumbX + this.scrollElements.thumbRectWidth + moveLength < this.width - circleRadius ?\n moveLength : circleRadius);\n }\n return moveLength;\n };\n /**\n * Method to calculate zoom factor and position\n *\n * @param currentX\n * @param currentWidth\n */\n ScrollBar.prototype.setZoomFactorPosition = function (currentX, currentWidth, isRequire) {\n if (isRequire === void 0) { isRequire = true; }\n this.isScrollUI = true;\n var axis = this.axis;\n var circleRadius = 8;\n var circleWidth = 1;\n var currentScrollWidth = currentX + currentWidth + circleRadius + circleWidth;\n var currentZPWidth = circleRadius + (circleWidth / 2);\n this.zoomPosition = (currentX - (currentX - currentZPWidth <= 0 ? currentZPWidth : 0)) / (this.isVertical\n ? axis.rect.height : this.width);\n this.zoomFactor = (currentWidth + (currentScrollWidth >= this.width ? circleRadius + circleWidth : 0)) / (this.isVertical\n ? axis.rect.height : this.width);\n axis.zoomPosition = this.zoomPosition < 0 ? 0 : this.zoomPosition > 0.9 ? 1 : this.zoomPosition;\n axis.zoomFactor = isRequire ? this.zoomFactor : axis.zoomFactor;\n };\n /**\n * Handles the mouse move on scrollbar\n *\n * @param e\n */\n ScrollBar.prototype.scrollMouseMove = function (e) {\n var target = e.target;\n var elem = this.scrollElements;\n this.getMouseXY(e);\n this.setCursor(target);\n this.setTheme(target);\n //let mouseXY: number = this.isVertical ? this.mouseY : this.mouseX;\n var mouseXY = (this.isVertical && this.axis.isInversed) ? this.width - this.mouseY : this.isVertical ?\n this.mouseY : this.mouseX;\n var range = this.axis.visibleRange;\n var zoomPosition = this.zoomPosition;\n var zoomFactor = this.zoomFactor;\n var moveLength = this.previousRectX - elem.thumbRectX;\n var thumbMove = moveLength < 0 ? 'RightMove' : 'LeftMove';\n var args;\n if (this.isLazyLoad && (this.isThumbDrag || this.isResizeLeft || this.isResizeRight)) {\n args = this.calculateLazyRange(elem.thumbRectX, elem.thumbRectWidth, thumbMove);\n }\n var currentRange = args ? args.currentRange : null;\n if (this.isThumbDrag) {\n this.component.isScrolling = this.isThumbDrag;\n mouseXY = (this.isVertical || this.axis.isInversed) ? this.width - mouseXY : mouseXY;\n var currentX = elem.thumbRectX + (mouseXY - this.previousXY);\n if (mouseXY >= currentX + elem.thumbRectWidth) {\n this.setCursor(target);\n }\n else {\n this.svgObject.style.cursor = '-webkit-grabbing';\n }\n if (mouseXY >= 0 && mouseXY <= currentX + elem.thumbRectWidth) {\n elem.thumbRectX = this.isWithIn(currentX) ? currentX : elem.thumbRectX;\n this.positionThumb(elem.thumbRectX, elem.thumbRectWidth);\n this.previousXY = mouseXY;\n this.setZoomFactorPosition(currentX, elem.thumbRectWidth, false);\n }\n this.component.trigger(scrollChanged, this.getArgs(scrollChanged, range, zoomPosition, zoomFactor, currentRange));\n }\n else if (this.isResizeLeft || this.isResizeRight) {\n this.resizeThumb();\n this.component.trigger(scrollChanged, this.getArgs(scrollChanged, range, zoomPosition, zoomFactor, currentRange));\n }\n };\n /**\n * Handles the mouse wheel on scrollbar\n *\n * @param e\n */\n ScrollBar.prototype.scrollMouseWheel = function (e) {\n var svgRect = getElement(this.component.element.id + '_scrollBar_svg' + this.axis.name).getBoundingClientRect();\n this.mouseX = e.clientX - Math.max(svgRect.left, 0);\n this.mouseY = e.clientY - Math.max(svgRect.top, 0);\n var origin = 0.5;\n var elem = this.scrollElements;\n var axis = this.axis;\n var direction = (this.browserName === 'mozilla' && !this.isPointer) ?\n -(e.detail) / 3 > 0 ? 1 : -1 : (e['wheelDelta'] / 120) > 0 ? 1 : -1;\n var cumulative = Math.max(Math.max(1 / minMax(axis.zoomFactor, 0, 1), 1) + (0.25 * direction), 1);\n var range = this.axis.visibleRange;\n var zoomPosition = this.zoomPosition;\n var zoomFactor = this.zoomFactor;\n var args;\n if (cumulative >= 1) {\n origin = axis.orientation === 'Horizontal' ? this.mouseX / axis.rect.width : 1 - (this.mouseY / axis.rect.height);\n origin = origin > 1 ? 1 : origin < 0 ? 0 : origin;\n this.zoomFactor = (cumulative === 1) ? 1 : minMax(1 / cumulative, 0, 1);\n this.zoomPosition = (cumulative === 1) ? 0 : axis.zoomPosition + ((axis.zoomFactor - this.zoomFactor) * origin);\n }\n elem.thumbRectX = this.isWithIn(this.zoomPosition * this.width) ? this.zoomPosition * this.width : elem.thumbRectX;\n this.isScrollUI = true;\n this.positionThumb(elem.thumbRectX, elem.thumbRectWidth);\n if (this.isLazyLoad) {\n this.setZoomFactorPosition(elem.thumbRectX, elem.thumbRectWidth);\n }\n axis.zoomFactor = this.zoomFactor;\n axis.zoomPosition = this.zoomPosition;\n if (this.isLazyLoad) {\n args = this.calculateMouseWheelRange(elem.thumbRectX, elem.thumbRectWidth);\n if (args) {\n if ((args.currentRange.minimum !== args.previousAxisRange.minimum) && (args.currentRange.maximum !==\n args.previousAxisRange.maximum)) {\n this.component.trigger(scrollEnd, args);\n this.isScrollEnd = false;\n }\n }\n }\n if (!this.isLazyLoad) {\n this.component.trigger(scrollChanged, this.getArgs(scrollChanged, range, zoomPosition, zoomFactor));\n }\n };\n /**\n * Handles the mouse up on scrollbar\n *\n * @param e\n */\n ScrollBar.prototype.scrollMouseUp = function () {\n var args;\n this.startX = this.scrollElements.thumbRectX;\n var circleRadius = 8;\n var circleWidth = 1;\n var currentScrollWidth = this.startX + this.scrollElements.thumbRectWidth + circleRadius + circleWidth;\n var currentZPWidth = circleRadius + (circleWidth / 2);\n if ((this.isResizeLeft || this.isResizeRight) && !this.isLazyLoad) {\n this.axis.zoomFactor = (currentScrollWidth >= this.width - 1 && (this.startX - currentZPWidth) <= 0) ? 1 : this.zoomFactor;\n }\n if (this.isLazyLoad) {\n var moveLength = this.previousRectX - this.startX;\n if ((moveLength > 0 || moveLength < 0) && this.isThumbDrag) {\n var thumbMove = moveLength < 0 ? 'RightMove' : 'LeftMove';\n if (thumbMove === 'RightMove') {\n this.startX = (this.startX + Math.abs(moveLength)) < this.width - circleRadius ? this.startX :\n this.width - circleRadius - this.scrollElements.thumbRectWidth;\n }\n else {\n this.startX = (this.startX + this.scrollElements.thumbRectWidth - Math.abs(moveLength)) > circleRadius ?\n this.startX : circleRadius;\n }\n args = this.calculateLazyRange(this.startX, this.scrollElements.thumbRectWidth, thumbMove);\n if (args) {\n this.component.trigger(scrollEnd, args);\n this.scrollStarted = false;\n }\n }\n if (this.isResizeLeft || this.isResizeRight) {\n args = this.calculateLazyRange(this.startX, this.scrollElements.thumbRectWidth);\n if (args) {\n this.component.trigger(scrollEnd, args);\n this.scrollStarted = false;\n }\n }\n }\n this.isThumbDrag = false;\n this.isResizeLeft = false;\n this.isResizeRight = false;\n this.isScrollEnd = false;\n this.component.isScrolling = false;\n if (this.scrollStarted && !this.isLazyLoad) {\n this.component.trigger(scrollEnd, this.getArgs(scrollChanged, this.startRange, this.startZoomPosition, this.startZoomFactor));\n this.scrollStarted = false;\n }\n /**\n * Customer issue\n * Task ID - EJ2-28898\n * Chart's height setted is removed here.\n */\n if (this.isCustomHeight) {\n this.component.element.style.height = null;\n }\n };\n ScrollBar.prototype.calculateMouseWheelRange = function (scrollThumbX, scrollThumbWidth) {\n var zoomFactor;\n var zoomPosition;\n var args;\n var range = this.scrollRange;\n var previousRange = this.getStartEnd(this.previousStart, this.previousEnd, false);\n var circleRadius = 8;\n if ((scrollThumbX + scrollThumbWidth + circleRadius) <= this.width) {\n zoomPosition = (scrollThumbX - circleRadius) / this.width;\n zoomFactor = scrollThumbWidth / (this.width);\n }\n var currentStart = range.min + zoomPosition * range.delta;\n var currentEnd = currentStart + zoomFactor * range.delta;\n if (currentEnd) {\n args = { axis: this.axis, currentRange: this.getStartEnd(currentStart, currentEnd, true), previousAxisRange: previousRange };\n }\n return args;\n };\n /**\n * Range calculation for lazy loading\n *\n * @param scrollThumbX\n * @param scrollThumbWidth\n * @param thumbMove\n * @param scrollThumbX\n * @param scrollThumbWidth\n * @param thumbMove\n * @param scrollThumbX\n * @param scrollThumbWidth\n * @param thumbMove\n */\n ScrollBar.prototype.calculateLazyRange = function (scrollThumbX, scrollThumbWidth, thumbMove) {\n var currentScrollWidth = scrollThumbWidth;\n var zoomFactor;\n var zoomPosition;\n var currentStart;\n var currentEnd;\n var args;\n var range = this.scrollRange;\n var previousRange = this.getStartEnd(this.previousStart, this.previousEnd, false);\n var circleRadius = 8;\n var circleWidth = 16;\n if (this.isResizeRight || thumbMove === 'RightMove') {\n currentScrollWidth = this.isResizeRight ? currentScrollWidth + circleWidth : currentScrollWidth;\n zoomFactor = (currentScrollWidth + circleRadius) / this.width;\n zoomPosition = thumbMove === 'RightMove' ? (scrollThumbX + circleRadius) / this.width : this.axis.zoomPosition;\n currentStart = thumbMove === 'RightMove' ? (range.min + zoomPosition * range.delta) : this.previousStart;\n currentEnd = currentStart + zoomFactor * range.delta;\n }\n else if (this.isResizeLeft || thumbMove === 'LeftMove') {\n zoomPosition = (scrollThumbX - circleRadius) / this.width;\n zoomFactor = currentScrollWidth / this.width;\n currentStart = range.min + zoomPosition * range.delta;\n currentStart = currentStart >= range.min ? currentStart : range.min;\n currentEnd = thumbMove === 'LeftMove' ? (currentStart + zoomFactor * range.delta) : this.previousEnd;\n }\n else if (this.isThumbDrag) {\n zoomPosition = thumbMove === 'RightMove' ? (scrollThumbX + circleRadius) / this.width : (scrollThumbX - circleRadius) / this.width;\n zoomFactor = (this.scrollElements.thumbRectWidth) / this.width;\n currentStart = range.min + zoomPosition * range.delta;\n currentStart = currentStart >= range.min ? currentStart : range.min;\n currentEnd = currentStart + zoomFactor * range.delta;\n }\n if (currentEnd) {\n args = { axis: (this.component.isBlazor ? {} : this.axis), currentRange: this.getStartEnd(currentStart, currentEnd, true),\n previousAxisRange: previousRange };\n }\n return args;\n };\n /**\n * Get start and end values\n *\n * @param start\n * @param end\n * @param isCurrentStartEnd\n * @param start\n * @param end\n * @param isCurrentStartEnd\n * @param start\n * @param end\n * @param isCurrentStartEnd\n */\n ScrollBar.prototype.getStartEnd = function (start, end, isCurrentStartEnd) {\n var valueType = this.valueType;\n if ((valueType === 'DateTime' || valueType === 'DateTimeCategory') && isCurrentStartEnd) {\n this.previousStart = start;\n this.previousEnd = end;\n }\n else if (isCurrentStartEnd) {\n this.previousStart = Math.round(start);\n this.previousEnd = Math.ceil(end);\n }\n switch (valueType) {\n case 'Double':\n case 'Category':\n case 'Logarithmic':\n start = Math.round(start);\n end = Math.ceil(end);\n break;\n case 'DateTime':\n case 'DateTimeCategory':\n start = new Date(start);\n end = new Date(end);\n break;\n }\n return { minimum: start, maximum: end };\n };\n /**\n * To render scroll bar\n *\n * @param isScrollExist\n * @private\n */\n ScrollBar.prototype.render = function (isScrollExist) {\n if (this.component.zoomModule || (isScrollExist && this.axis.scrollbarSettings.enable)) {\n this.getDefaults();\n }\n this.getTheme();\n this.removeScrollSvg();\n createScrollSvg(this, this.component.svgRenderer);\n this.wireEvents(this.svgObject);\n this.svgObject.appendChild(this.scrollElements.renderElements(this, this.component.svgRenderer));\n return this.svgObject;\n };\n /**\n * Theming for scrollabr\n *\n * @returns {void}\n */\n ScrollBar.prototype.getTheme = function () {\n this.scrollbarThemeStyle = getScrollbarThemeColor(this.component.theme);\n };\n /**\n * Method to remove existing scrollbar\n *\n * @returns {void}\n */\n ScrollBar.prototype.removeScrollSvg = function () {\n if (document.getElementById(this.component.element.id + '_scrollBar_svg' + this.axis.name)) {\n remove(document.getElementById(this.component.element.id + '_scrollBar_svg' + this.axis.name));\n }\n };\n /**\n * Method to set cursor fpr scrollbar\n *\n * @param target\n */\n ScrollBar.prototype.setCursor = function (target) {\n var id = target.id;\n this.svgObject.style.cursor = id.indexOf('scrollBarThumb_') > -1 || id.indexOf('_gripCircle') > -1 ?\n '-webkit-grab' : (id.indexOf('Circle_') > -1 || id.indexOf('Arrow_') > -1) ? this.isVertical ? 'ns-resize' :\n 'ew-resize' : 'auto';\n };\n /**\n * Method to set theme for sollbar\n *\n * @param target\n */\n ScrollBar.prototype.setTheme = function (target) {\n var id = target.id;\n var isLeftHover = id.indexOf('_leftCircle_') > -1 || id.indexOf('_leftArrow_') > -1;\n var isRightHover = id.indexOf('_rightCircle_') > -1 || id.indexOf('_rightArrow_') > -1;\n var style = this.scrollbarThemeStyle;\n var leftArrowEle = this.scrollElements.leftArrowEle;\n var rightArrowEle = this.scrollElements.rightArrowEle;\n var leftCircleEle = this.scrollElements.leftCircleEle;\n var rightCircleEle = this.scrollElements.rightCircleEle;\n var isAxis = this.isCurrentAxis(target, leftArrowEle);\n leftCircleEle.style.fill = isLeftHover && isAxis ? style.circleHover : style.circle;\n rightCircleEle.style.fill = isRightHover && isAxis ? style.circleHover : style.circle;\n leftCircleEle.style.stroke = isLeftHover && isAxis ? style.circleHover : style.circle;\n rightCircleEle.style.stroke = isRightHover && isAxis ? style.circleHover : style.circle;\n if (this.component.theme === 'HighContrastLight') {\n leftArrowEle.style.fill = isLeftHover && isAxis ? style.arrowHover : style.arrow;\n leftArrowEle.style.stroke = isLeftHover && isAxis ? style.arrowHover : style.arrow;\n rightArrowEle.style.fill = isRightHover && isAxis ? style.arrowHover : style.arrow;\n rightArrowEle.style.stroke = isRightHover && isAxis ? style.arrowHover : style.arrow;\n leftCircleEle.style.stroke = isLeftHover && isAxis ? style.circleHover : style.circle;\n rightCircleEle.style.stroke = isRightHover && isAxis ? style.circleHover : style.circle;\n }\n };\n /**\n * To check current axis\n *\n * @param target\n * @param ele\n */\n ScrollBar.prototype.isCurrentAxis = function (target, ele) {\n return (target.id.split('_')[2] === ele.id.split('_')[2]);\n };\n /**\n * Method to resize thumb\n *\n * @param e\n */\n ScrollBar.prototype.resizeThumb = function () {\n var currentWidth;\n var circleRadius = 8;\n var padding = 5;\n var gripWidth = 14;\n var minThumbWidth = circleRadius * 2 + padding * 2 + gripWidth;\n var thumbX = this.previousRectX;\n // let mouseXY: number = this.isVertical ? this.mouseY : this.mouseX;\n var mouseXY = (this.isVertical && this.axis.isInversed) ? this.mouseY : this.isVertical ? this.width -\n this.mouseY : this.axis.isInversed ? this.width - this.mouseX : this.mouseX;\n var diff = Math.abs(this.previousXY - mouseXY);\n if (this.isResizeLeft && mouseXY >= 0) {\n var currentX = thumbX + (mouseXY > this.previousXY ? diff : -diff);\n currentWidth = currentX - circleRadius >= 0 ? this.previousWidth + (mouseXY > this.previousXY ? -diff : diff) :\n this.previousWidth;\n currentX = currentX - circleRadius >= 0 ? currentX : thumbX;\n if (currentWidth >= minThumbWidth && mouseXY < currentX + currentWidth) {\n this.scrollElements.thumbRectX = this.previousRectX = currentX;\n this.scrollElements.thumbRectWidth = this.previousWidth = currentWidth;\n this.previousXY = mouseXY;\n this.positionThumb(currentX, currentWidth);\n this.setZoomFactorPosition(currentX, currentWidth);\n }\n }\n else if (this.isResizeRight) {\n currentWidth = mouseXY >= minThumbWidth + this.scrollElements.thumbRectX && mouseXY <= this.width - circleRadius ?\n mouseXY - this.scrollElements.thumbRectX : this.previousWidth;\n this.scrollElements.thumbRectWidth = this.previousWidth = currentWidth;\n this.previousXY = mouseXY;\n this.positionThumb(this.startX, currentWidth);\n this.setZoomFactorPosition(this.startX, currentWidth);\n if (!this.isLazyLoad) {\n this.setZoomFactorPosition(this.startX, currentWidth);\n }\n }\n };\n /**\n * Method to position the scrollbar thumb\n *\n * @param currentX\n * @param currentWidth\n */\n ScrollBar.prototype.positionThumb = function (currentX, currentWidth) {\n var elem = this.scrollElements;\n var gripWidth = 14;\n var gripCircleDiameter = 2;\n var padding = gripWidth / 2 - gripCircleDiameter;\n elem.slider.setAttribute('x', currentX.toString());\n elem.slider.setAttribute('width', currentWidth.toString());\n elem.leftCircleEle.setAttribute('cx', currentX.toString());\n elem.rightCircleEle.setAttribute('cx', (currentX + currentWidth).toString());\n elem.setArrowDirection(currentX, currentWidth, this.height);\n elem.gripCircle.setAttribute('transform', 'translate(' + (currentX + currentWidth / 2 + ((this.isVertical ? 1 : -1) * padding)) +\n ',' + (this.isVertical ? '10' : '5') + ') rotate(' + (this.isVertical ? '180' : '0') + ')');\n };\n /**\n * Method to get default values\n *\n * @returns {void}\n */\n ScrollBar.prototype.getDefaults = function () {\n var axis = this.axis;\n var circleRadius = 8;\n var padding = 5;\n var gripWidth = 14;\n var minThumbWidth = circleRadius * 2 + padding * 2 + gripWidth;\n if (this.axis.scrollbarSettings.enable) {\n this.isLazyLoad = true;\n this.getLazyDefaults(axis);\n }\n this.isVertical = axis.orientation === 'Vertical';\n this.zoomFactor = this.isLazyLoad ? this.zoomFactor : axis.zoomFactor;\n this.zoomPosition = this.isLazyLoad ? this.zoomPosition : axis.zoomPosition;\n var currentWidth = this.zoomFactor * (this.isVertical ? axis.rect.height : axis.rect.width);\n currentWidth = currentWidth > minThumbWidth ? currentWidth : minThumbWidth;\n this.scrollX = axis.rect.x;\n this.scrollY = axis.rect.y;\n this.width = this.isVertical ? axis.rect.height : axis.rect.width;\n this.height = 16;\n var currentX = this.zoomPosition * (this.isVertical ? axis.rect.height : this.width);\n var minThumbX = (this.width - minThumbWidth - circleRadius);\n this.scrollElements.thumbRectX = currentX > minThumbX ? minThumbX : currentX < circleRadius ? circleRadius : currentX;\n this.scrollElements.thumbRectWidth = ((currentWidth + this.scrollElements.thumbRectX) < this.width - (circleRadius * 2))\n ? currentWidth : this.width - this.scrollElements.thumbRectX - circleRadius;\n };\n /**\n * Lazy load default values\n *\n * @param axis\n */\n ScrollBar.prototype.getLazyDefaults = function (axis) {\n var start;\n var end;\n var valueType = axis.valueType;\n var scrollbarSettings = axis.scrollbarSettings;\n var range = axis.scrollbarSettings.range;\n var visibleRange = axis.visibleRange;\n var pointsLength = axis.scrollbarSettings.pointsLength;\n this.valueType = valueType = (!scrollbarSettings.range.minimum || !scrollbarSettings.range.maximum) &&\n scrollbarSettings.pointsLength ? 'Double' : valueType;\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.component.intl.getDateParser(option);\n var dateFormatter = this.component.intl.getDateFormat(option);\n switch (valueType) {\n case 'Double':\n case 'Category':\n case 'Logarithmic':\n start = range.minimum ? range.minimum : pointsLength ? 0 : visibleRange.min;\n end = range.maximum ? range.maximum : pointsLength ? (pointsLength - 1) : visibleRange.max;\n break;\n case 'DateTime':\n case 'DateTimeCategory':\n start = range.minimum ? Date.parse(dateParser(dateFormatter(range.minimum))) : visibleRange.min;\n end = range.maximum ? Date.parse(dateParser(dateFormatter(range.maximum))) : visibleRange.max;\n break;\n }\n start = Math.min(start, visibleRange.min);\n end = Math.max(end, visibleRange.max);\n var zoomFactor = (visibleRange.max - visibleRange.min) / (end - start);\n var zoomPosition = (visibleRange.min - start) / (end - start);\n this.zoomFactor = range.minimum || range.maximum ? zoomFactor : (this.axis.maxPointLength / axis.scrollbarSettings.pointsLength);\n this.zoomPosition = range.minimum || range.maximum ? zoomPosition : axis.zoomPosition;\n this.scrollRange.min = start;\n this.scrollRange.max = end;\n this.scrollRange.delta = end - start;\n this.previousStart = visibleRange.min;\n this.previousEnd = visibleRange.max;\n };\n /**\n * Method to get log range\n *\n * @param axis\n */\n ScrollBar.prototype.getLogRange = function (axis) {\n var range = axis.scrollbarSettings.range;\n var start = logBase(range.minimum, axis.logBase);\n var end = logBase(range.maximum, axis.logBase);\n start = isFinite(start) ? start : range.minimum;\n end = isFinite(start) ? end : range.maximum;\n return { minimum: Math.floor(start / 1), maximum: Math.ceil(end / 1) };\n };\n /**\n * Method for injecting scrollbar module\n *\n * @param axis\n * @param component\n */\n ScrollBar.prototype.injectTo = function (axis, component) {\n axis.zoomingScrollBar = new ScrollBar(component, axis);\n };\n /**\n * Method to destroy scrollbar\n *\n * @returns {void}\n */\n ScrollBar.prototype.destroy = function () {\n var _this = this;\n if (this.axes) {\n this.axes.map(function (axis) {\n axis.zoomingScrollBar.destroy();\n });\n }\n else {\n this.elements.map(function (element) {\n _this.unWireEvents(element);\n remove(element.firstChild);\n });\n this.elements = [];\n }\n };\n /**\n * Method to get scrollbar module name\n *\n * @returns {string}\n */\n ScrollBar.prototype.getModuleName = function () {\n return 'ScrollBar';\n };\n ScrollBar.prototype.getArgs = function (eventName, range, zoomPosition, zoomFactor, currentRanges) {\n var scrollArgs = {\n axis: (this.component.isBlazor ? {} : this.axis),\n name: eventName,\n range: this.axis.visibleRange,\n zoomFactor: this.axis.zoomFactor,\n zoomPosition: this.axis.zoomPosition,\n previousRange: range,\n previousZoomFactor: zoomFactor,\n previousZoomPosition: zoomPosition,\n currentRange: currentRanges\n };\n return scrollArgs;\n };\n return ScrollBar;\n}());\nexport { ScrollBar };\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { removeElement, RectOption, PolygonOption, createTooltip, minMax, getElement } from '../../common/utils/helper';\nimport { textElement } from '../../common/utils/helper';\nimport { PathOption, Rect, measureText, TextOption, SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { zoomComplete, onZooming } from '../../common/model/constants';\n/**\n * Zooming Toolkit created here\n *\n * @private\n */\nvar Toolkit = /** @class */ (function () {\n /** @private */\n function Toolkit(chart) {\n this.iconRectOverFill = 'transparent';\n this.iconRectSelectionFill = 'transparent';\n /** @private */\n this.zoomCompleteEvtCollection = [];\n this.chart = chart;\n this.elementId = chart.element.id;\n this.chart.svgRenderer = new SvgRenderer(this.elementId);\n this.selectionColor = chart.theme === 'Bootstrap4' ? '#FFFFFF' : '#ff4081';\n this.fillColor = chart.theme === 'Bootstrap4' ? '#495057' : '#737373';\n this.iconRectOverFill = chart.theme === 'Bootstrap4' ? '#5A6268' : this.iconRectOverFill;\n this.iconRectSelectionFill = chart.theme === 'Bootstrap4' ? '#5B6269' : this.iconRectSelectionFill;\n this.iconRect = chart.theme === 'Bootstrap4' ? new Rect(-5, -5, 26, 26) : new Rect(0, 0, 16, 16);\n }\n /**\n * To create the pan button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createPanButton = function (childElement, parentElement) {\n var render = this.chart.svgRenderer;\n var fillColor = this.chart.zoomModule.isPanning ? this.selectionColor : this.fillColor;\n var direction = 'M5,3h2.3L7.275,5.875h1.4L8.65,3H11L8,0L5,3z M3,11V8.7l2.875,0.025v-1.4L3,7.35V5L0,8L3,';\n direction += '11z M11,13H8.7l0.025-2.875h-1.4L7.35,13H5l3,3L11,13z M13,5v2.3l-2.875-0.025v1.4L13,8.65V11l3-3L13,5z';\n childElement.id = this.elementId + '_Zooming_Pan';\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('Pan'));\n this.panElements = childElement;\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Pan_1', 'transparent', {}, 1, this.iconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_Pan_2', fillColor, null, null, 1, null, direction)));\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.pan);\n };\n /**\n * To create the zoom button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createZoomButton = function (childElement, parentElement) {\n var render = this.chart.svgRenderer;\n var fillColor = this.chart.zoomModule.isPanning ? this.fillColor : this.selectionColor;\n var rectColor = this.chart.zoomModule.isPanning ? 'transparent' : this.iconRectSelectionFill;\n var direction = 'M0.001,14.629L1.372,16l4.571-4.571v-0.685l0.228-0.274c1.051,0.868,2.423,1.417,3.885,1.417c3.291,0,';\n direction += '5.943-2.651,5.943-5.943S13.395,0,10.103,0S4.16,2.651,4.16,5.943c0,1.508,0.503,2.834,1.417,3.885l-0.274,0.228H4.571';\n direction = direction + 'L0.001,14.629L0.001,14.629z M5.943,5.943c0-2.285,1.828-4.114,4.114-4.114s4.114,1.828,4.114,';\n childElement.id = this.elementId + '_Zooming_Zoom';\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('Zoom'));\n this.zoomElements = childElement;\n this.selectedID = this.chart.zoomModule.isPanning ? this.chart.element.id + '_Zooming_Pan_1' : this.elementId + '_Zooming_Zoom_1';\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Zoom_1', rectColor, {}, 1, this.iconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_Zoom_3', fillColor, null, null, 1, null, direction + '4.114s-1.828,4.114-4.114,4.114S5.943,8.229,5.943,5.943z')));\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.zoom);\n };\n /**\n * To create the ZoomIn button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createZoomInButton = function (childElement, parentElement, chart) {\n var render = this.chart.svgRenderer;\n var fillColor = this.fillColor;\n var direction = 'M10.103,0C6.812,0,4.16,2.651,4.16,5.943c0,1.509,0.503,2.834,1.417,3.885l-0.274,0.229H4.571L0,';\n direction += '14.628l0,0L1.372,16l4.571-4.572v-0.685l0.228-0.275c1.052,0.868,2.423,1.417,3.885,1.417c3.291,0,5.943-2.651,';\n direction += '5.943-5.943C16,2.651,13.395,0,10.103,0z M10.058,10.058c-2.286,0-4.114-1.828-4.114-4.114c0-2.286,1.828-4.114,';\n childElement.id = this.elementId + '_Zooming_ZoomIn';\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('ZoomIn'));\n var polygonDirection = '12.749,5.466 10.749,5.466 10.749,3.466 9.749,3.466 9.749,5.466 7.749,5.466 7.749,6.466';\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_ZoomIn_1', 'transparent', {}, 1, this.iconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_ZoomIn_2', fillColor, null, null, 1, null, direction + '4.114-4.114c2.286,0,4.114,1.828,4.114,4.114C14.172,8.229,12.344,10.058,10.058,10.058z')));\n childElement.appendChild(render.drawPolygon(new PolygonOption(this.elementId + '_Zooming_ZoomIn_3', polygonDirection + ' 9.749,6.466 9.749,8.466 10.749,8.466 10.749,6.466 12.749,6.466', fillColor)));\n this.zoomInElements = childElement;\n this.elementOpacity = chart.zoomModule.isPanning ? '0.2' : '1';\n childElement.setAttribute('opacity', this.elementOpacity);\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.zoomIn);\n };\n /**\n * To create the ZoomOut button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createZoomOutButton = function (childElement, parentElement, chart) {\n var render = this.chart.svgRenderer;\n var fillColor = this.fillColor;\n var direction = 'M0,14.622L1.378,16l4.533-4.533v-0.711l0.266-0.266c1.022,0.889,2.4,1.422,3.866,';\n direction += '1.422c3.289,0,5.955-2.666,5.955-5.955S13.333,0,10.044,0S4.089,2.667,4.134,5.911c0,1.466,0.533,2.844,';\n direction += '1.422,3.866l-0.266,0.266H4.578L0,14.622L0,14.622z M5.911,5.911c0-2.311,1.822-4.133,4.133-4.133s4.133,1.822,4.133,';\n childElement.id = this.elementId + '_Zooming_ZoomOut';\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('ZoomOut'));\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_ZoomOut_1', 'transparent', {}, 1, this.iconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_ZoomOut_2', fillColor, null, null, 1, null, direction + '4.133s-1.866,4.133-4.133,4.133S5.911,8.222,5.911,5.911z M12.567,6.466h-5v-1h5V6.466z')));\n this.zoomOutElements = childElement;\n this.elementOpacity = chart.zoomModule.isPanning ? '0.2' : '1';\n childElement.setAttribute('opacity', this.elementOpacity);\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.zoomOut);\n };\n /**\n * To create the Reset button.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.createResetButton = function (childElement, parentElement, chart, isDevice) {\n var render = this.chart.svgRenderer;\n var fillColor = this.fillColor;\n var size;\n var direction = 'M12.364,8h-2.182l2.909,3.25L16,8h-2.182c0-3.575-2.618-6.5-5.818-6.5c-1.128,0-2.218,0.366-3.091,';\n direction += '1.016l1.055,1.178C6.581,3.328,7.272,3.125,8,3.125C10.4,3.125,12.363,5.319,12.364,8L12.364,8z M11.091,';\n direction += '13.484l-1.055-1.178C9.419,12.672,8.728,12.875,8,12.875c-2.4,0-4.364-2.194-4.364-4.875h2.182L2.909,4.75L0,8h2.182c0,';\n childElement.id = this.elementId + '_Zooming_Reset';\n childElement.setAttribute('aria-label', this.chart.getLocalizedLabel('Reset'));\n if (!isDevice) {\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Reset_1', 'transparent', {}, 1, this.iconRect)));\n childElement.appendChild(render.drawPath(new PathOption(this.elementId + '_Zooming_Reset_2', fillColor, null, null, 1, null, direction + '3.575,2.618,6.5,5.818,6.5C9.128,14.5,10.219,14.134,11.091,13.484L11.091,13.484z')));\n }\n else {\n size = measureText(this.chart.getLocalizedLabel('ResetZoom'), { size: '12px' });\n childElement.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Reset_1', 'transparent', {}, 1, new Rect(0, 0, size.width, size.height))));\n textElement(chart.renderer, new TextOption(this.elementId + '_Zooming_Reset_2', 0 + size.width / 2, 0 + size.height * 3 / 4, 'middle', this.chart.getLocalizedLabel('ResetZoom'), 'rotate(0,' + (0) + ',' + (0) + ')', 'auto'), { size: '12px' }, 'black', childElement, null, null, null, null, null, null, null, null, chart.enableCanvas);\n }\n parentElement.appendChild(childElement);\n this.wireEvents(childElement, this.reset);\n };\n /**\n * To bind events.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.wireEvents = function (element, process) {\n EventHandler.add(element, 'mousedown touchstart', process, this);\n EventHandler.add(element, 'mouseover', this.showTooltip, this);\n EventHandler.add(element, 'mouseout', this.removeTooltip, this);\n };\n /**\n * To show tooltip.\n *\n * @returns {void}\n * @private\n */\n Toolkit.prototype.showTooltip = function (event) {\n var text = event.currentTarget.id.split('_Zooming_')[1];\n var left = (event.pageX - (measureText(text, { size: '10px' }).width + 5));\n var rect = getElement(event.currentTarget.id + '_1');\n var icon2 = getElement(event.currentTarget.id + '_2');\n var icon3 = getElement(event.currentTarget.id + '_3');\n if (rect) {\n this.hoveredID = rect.id;\n rect.setAttribute('fill', this.iconRectOverFill);\n }\n if (icon2) {\n icon2.setAttribute('fill', this.selectionColor);\n }\n if (icon3) {\n icon3.setAttribute('fill', this.selectionColor);\n }\n if (!this.chart.isTouch) {\n createTooltip('EJ2_Chart_ZoomTip', this.chart.getLocalizedLabel(text), (event.pageY + 10), left, '10px');\n }\n };\n /** @private */\n /* eslint-disable */\n Toolkit.prototype.removeTooltip = function () {\n if (getElement(this.hoveredID)) {\n var rectColor = this.chart.zoomModule.isPanning ? (this.hoveredID.indexOf('_Pan_') > -1) ? this.iconRectSelectionFill : 'transparent' : (this.hoveredID.indexOf('_Zoom_') > -1) ? this.iconRectSelectionFill : 'transparent';\n getElement(this.hoveredID).setAttribute('fill', rectColor);\n }\n var icon2 = this.hoveredID ? getElement(this.hoveredID.replace('_1', '_2')) : null;\n var icon3 = this.hoveredID ? getElement(this.hoveredID.replace('_1', '_3')) : null;\n if (icon2) {\n var iconColor = this.chart.zoomModule.isPanning ? (this.hoveredID.indexOf('_Pan_') > -1) ? this.selectionColor : this.fillColor : (this.hoveredID.indexOf('_Zoom_') > -1) ? this.selectionColor : this.fillColor;\n icon2.setAttribute('fill', iconColor);\n }\n if (icon3) {\n var iconColor = this.chart.zoomModule.isPanning ? this.fillColor : (this.hoveredID.indexOf('_Zoom_') > -1) ? this.selectionColor : this.fillColor;\n icon3.setAttribute('fill', iconColor);\n }\n removeElement('EJ2_Chart_ZoomTip');\n };\n // Toolkit events function calculation here.\n /** @private */\n Toolkit.prototype.reset = function () {\n var _this = this;\n var chart = this.chart;\n if (!chart.zoomModule.isDevice) {\n remove(chart.zoomModule.toolkitElements);\n }\n var argsData;\n this.removeTooltip();\n chart.svgObject.setAttribute('cursor', 'auto');\n var zoomingEventArgs;\n var zoomedAxisCollection = [];\n this.zoomCompleteEvtCollection = [];\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition, currentZoomFactor: 1, currentZoomPosition: 0,\n previousVisibleRange: axis.visibleRange, currentVisibleRange: null\n };\n axis.zoomFactor = 1;\n axis.zoomPosition = 0;\n if (axis.zoomingScrollBar) {\n axis.zoomingScrollBar.isScrollUI = false;\n }\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n zoomedAxisCollection.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n zoomingEventArgs = { cancel: false, axisCollection: zoomedAxisCollection, name: onZooming };\n if (!zoomingEventArgs.cancel && this.chart.isBlazor) {\n this.chart.trigger(onZooming, zoomingEventArgs, function () {\n _this.setDefferedZoom(chart);\n });\n return false;\n }\n else {\n return (this.setDefferedZoom(chart));\n }\n };\n Toolkit.prototype.setDefferedZoom = function (chart) {\n chart.disableTrackTooltip = false;\n chart.zoomModule.isZoomed = chart.zoomModule.isPanning = chart.isChartDrag = chart.delayRedraw = false;\n chart.zoomModule.touchMoveList = chart.zoomModule.touchStartList = [];\n chart.zoomModule.pinchTarget = null;\n chart.removeSvg();\n if (chart.enableAutoIntervalOnBothAxis) {\n chart.processData(false);\n }\n chart.refreshAxis();\n chart.refreshBound();\n this.elementOpacity = '1';\n return false;\n };\n Toolkit.prototype.zoomIn = function (e) {\n this.zoomInOutCalculation(1, this.chart, this.chart.axisCollections, this.chart.zoomSettings.mode);\n return false;\n };\n Toolkit.prototype.zoomOut = function (e) {\n this.zoomInOutCalculation(-1, this.chart, this.chart.axisCollections, this.chart.zoomSettings.mode);\n return false;\n };\n Toolkit.prototype.zoom = function (e) {\n this.chart.zoomModule.isPanning = false;\n var zoomModule = this.chart.zoomModule;\n this.elementOpacity = '1';\n this.chart.svgObject.setAttribute('cursor', 'auto');\n this.zoomInElements.setAttribute('opacity', this.elementOpacity);\n this.zoomOutElements.setAttribute('opacity', this.elementOpacity);\n this.applySelection(this.zoomElements.childNodes, this.selectionColor);\n this.applySelection(this.panElements.childNodes, '#737373');\n if (getElement(this.selectedID)) {\n getElement(this.selectedID).setAttribute('fill', 'transparent');\n }\n this.selectedID = this.chart.element.id + '_Zooming_Zoom_1';\n getElement(this.selectedID).setAttribute('fill', this.iconRectSelectionFill);\n return false;\n };\n /** @private */\n Toolkit.prototype.pan = function () {\n var element;\n this.chart.zoomModule.isPanning = true;\n this.chart.svgObject.setAttribute('cursor', 'pointer');\n this.elementOpacity = '0.2';\n element = this.zoomInElements ? this.zoomInElements.setAttribute('opacity', this.elementOpacity) : null;\n element = this.zoomOutElements ? this.zoomOutElements.setAttribute('opacity', this.elementOpacity) : null;\n element = this.panElements ? this.applySelection(this.panElements.childNodes, this.selectionColor) : null;\n element = this.zoomElements ? this.applySelection(this.zoomElements.childNodes, '#737373') : null;\n if (getElement(this.selectedID)) {\n getElement(this.selectedID).setAttribute('fill', 'transparent');\n }\n this.selectedID = this.chart.element.id + '_Zooming_Pan_1';\n getElement(this.selectedID).setAttribute('fill', this.iconRectSelectionFill);\n return false;\n };\n Toolkit.prototype.zoomInOutCalculation = function (scale, chart, axes, mode) {\n if (!chart.zoomModule.isPanning && this.elementOpacity !== '0.2') {\n var zoomFactor = void 0;\n var zoomPosition = void 0;\n var cumulative = void 0;\n chart.disableTrackTooltip = true;\n chart.delayRedraw = true;\n var argsData = void 0;\n this.zoomCompleteEvtCollection = [];\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition, currentZoomFactor: axis.zoomFactor, currentZoomPosition: axis.zoomPosition,\n previousVisibleRange: axis.visibleRange, currentVisibleRange: null\n };\n if ((axis.orientation === 'Horizontal' && mode !== 'Y') ||\n (axis.orientation === 'Vertical' && mode !== 'X')) {\n cumulative = Math.max(Math.max(1 / minMax(axis.zoomFactor, 0, 1), 1) + (0.25 * scale), 1);\n zoomFactor = (cumulative === 1) ? 1 : minMax(1 / cumulative, 0, 1);\n zoomPosition = (cumulative === 1) ? 0 : axis.zoomPosition + ((axis.zoomFactor - zoomFactor) * 0.5);\n if (axis.zoomPosition !== zoomPosition || axis.zoomFactor !== zoomFactor) {\n zoomFactor = (zoomPosition + zoomFactor) > 1 ? (1 - zoomPosition) : zoomFactor;\n }\n argsData.currentZoomFactor = zoomFactor;\n argsData.currentZoomPosition = zoomPosition;\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n }\n }\n }\n };\n Toolkit.prototype.applySelection = function (elements, color) {\n for (var i = 1, length_1 = elements.length; i < length_1; i++) {\n elements[i].setAttribute('fill', color);\n }\n };\n return Toolkit;\n}());\nexport { Toolkit };\n","import { EventHandler, Browser, createElement } from '@syncfusion/ej2-base';\nimport { getRectLocation, minMax, getElement, ChartLocation, RectOption } from '../../common/utils/helper';\nimport { Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { Toolkit } from './zooming-toolkit';\nimport { zoomComplete, onZooming } from '../../common/model/constants';\nimport { withInBounds } from '../../common/utils/helper';\n/**\n * `Zooming` module handles the zooming for chart.\n */\nvar Zoom = /** @class */ (function () {\n /**\n * Constructor for Zooming module.\n *\n * @private\n */\n function Zoom(chart) {\n this.zoomCompleteEvtCollection = [];\n this.chart = chart;\n this.isPointer = Browser.isPointer;\n this.browserName = Browser.info.name;\n this.wheelEvent = this.browserName === 'mozilla' ? (this.isPointer ? 'mousewheel' : 'DOMMouseScroll') : 'mousewheel';\n this.cancelEvent = this.isPointer ? 'pointerleave' : 'mouseleave';\n this.addEventListener();\n this.isDevice = Browser.isDevice;\n var zooming = chart.zoomSettings;\n this.toolkit = new Toolkit(chart);\n this.zooming = zooming;\n this.elementId = chart.element.id;\n this.zoomingRect = new Rect(0, 0, 0, 0);\n this.zoomAxes = [];\n this.zoomkitOpacity = 0.3;\n this.isIOS = Browser.isIos || Browser.isIos7;\n this.isZoomed = this.performedUI = this.zooming.enablePan && this.zooming.enableSelectionZooming;\n if (zooming.enableScrollbar) {\n chart.scrollElement = createElement('div', { id: chart.element.id + '_scrollElement' });\n }\n }\n /**\n * Function that handles the Rectangular zooming.\n *\n * @returns {void}\n */\n Zoom.prototype.renderZooming = function (e, chart, isTouch) {\n this.calculateZoomAxesRange(chart);\n if (this.zooming.enableSelectionZooming && (!isTouch\n || (chart.isDoubleTap && this.touchStartList.length === 1)) && (!this.isPanning || chart.isDoubleTap)) {\n this.isPanning = this.isDevice ? true : this.isPanning;\n this.performedUI = true;\n this.drawZoomingRectangle(chart);\n }\n else if (this.isPanning && chart.isChartDrag) {\n if (!isTouch || (isTouch && this.touchStartList.length === 1)) {\n this.pinchTarget = isTouch ? e.target : null;\n this.doPan(chart, chart.axisCollections);\n }\n }\n };\n // Zooming rectangle drawn here\n Zoom.prototype.drawZoomingRectangle = function (chart) {\n var areaBounds = chart.chartAxisLayoutPanel.seriesClipRect;\n var startLocation = new ChartLocation(chart.previousMouseMoveX, chart.previousMouseMoveY);\n var endLocation = new ChartLocation(chart.mouseX, chart.mouseY);\n var rect = this.zoomingRect = getRectLocation(startLocation, endLocation, areaBounds);\n if (rect.width > 0 && rect.height > 0) {\n this.isZoomed = true;\n chart.disableTrackTooltip = true;\n chart.svgObject.setAttribute('cursor', 'crosshair');\n if (this.zooming.mode === 'X') {\n rect.height = areaBounds.height;\n rect.y = areaBounds.y;\n }\n else if (this.zooming.mode === 'Y') {\n rect.width = areaBounds.width;\n rect.x = areaBounds.x;\n }\n var svg = chart.enableCanvas ? document.getElementById(this.elementId + '_tooltip_svg') : chart.svgObject;\n svg.appendChild(chart.svgRenderer.drawRectangle(new RectOption(this.elementId + '_ZoomArea', chart.themeStyle.selectionRectFill, { color: chart.themeStyle.selectionRectStroke, width: 1 }, 1, rect, 0, 0, '', '3')));\n }\n };\n // Panning performed here\n Zoom.prototype.doPan = function (chart, axes) {\n var _this = this;\n if (chart.startMove && chart.crosshair.enable) {\n return null;\n }\n var currentScale;\n var offset;\n this.isZoomed = true;\n this.offset = !chart.delayRedraw ? chart.chartAxisLayoutPanel.seriesClipRect : this.offset;\n chart.delayRedraw = true;\n this.zoomCompleteEvtCollection = [];\n chart.disableTrackTooltip = true;\n var argsData;\n var zoomedAxisCollection = [];\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition, currentZoomFactor: axis.zoomFactor,\n currentZoomPosition: axis.zoomPosition, previousVisibleRange: axis.visibleRange,\n currentVisibleRange: null\n };\n currentScale = Math.max(1 / minMax(axis.zoomFactor, 0, 1), 1);\n if (axis.orientation === 'Horizontal') {\n offset = (chart.previousMouseMoveX - chart.mouseX) / axis.rect.width / currentScale;\n argsData.currentZoomPosition = minMax(axis.zoomPosition + offset, 0, (1 - axis.zoomFactor));\n }\n else {\n offset = (chart.previousMouseMoveY - chart.mouseY) / axis.rect.height / currentScale;\n argsData.currentZoomPosition = minMax(axis.zoomPosition - offset, 0, (1 - axis.zoomFactor));\n }\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n zoomedAxisCollection.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n var zoomingEventArgs = { cancel: false, axisCollection: zoomedAxisCollection, name: onZooming };\n if (!zoomingEventArgs.cancel && this.chart.isBlazor) {\n this.chart.trigger(onZooming, zoomingEventArgs, function () {\n _this.performDefferedZoom(chart);\n });\n }\n else {\n this.performDefferedZoom(chart);\n this.redrawOnZooming(chart, false);\n }\n };\n Zoom.prototype.performDefferedZoom = function (chart) {\n var translateX;\n var translateY;\n if (this.zooming.enableDeferredZooming) {\n translateX = chart.mouseX - chart.mouseDownX;\n translateY = chart.mouseY - chart.mouseDownY;\n switch (this.zooming.mode) {\n case 'X':\n translateY = 0;\n break;\n case 'Y':\n translateX = 0;\n break;\n }\n this.setTransform(translateX, translateY, null, null, chart, false);\n this.refreshAxis(chart.chartAxisLayoutPanel, chart, chart.axisCollections);\n if (chart.enableCanvas) {\n this.performZoomRedraw(chart);\n }\n }\n else {\n this.performZoomRedraw(chart);\n }\n chart.previousMouseMoveX = chart.mouseX;\n chart.previousMouseMoveY = chart.mouseY;\n };\n /**\n * Redraw the chart on zooming.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.performZoomRedraw = function (chart) {\n var rect = this.zoomingRect;\n chart.animateSeries = false;\n if (this.isZoomed) {\n if (rect.width > 0 && rect.height > 0) {\n this.performedUI = true;\n chart.svgObject.setAttribute('cursor', 'auto');\n this.doZoom(chart, chart.axisCollections, chart.chartAxisLayoutPanel.seriesClipRect);\n chart.isDoubleTap = false;\n }\n else if (chart.disableTrackTooltip) {\n chart.disableTrackTooltip = false;\n chart.delayRedraw = false;\n chart.enableCanvas ? chart.createChartSvg() : chart.removeSvg();\n chart.refreshAxis();\n chart.refreshBound();\n }\n }\n };\n Zoom.prototype.refreshAxis = function (layout, chart, axes) {\n var mode = chart.zoomSettings.mode;\n layout.measureAxis(new Rect(chart.initialClipRect.x, chart.initialClipRect.y, chart.initialClipRect.width, chart.initialClipRect.height));\n axes.map(function (axis, index) {\n if (axis.orientation === 'Horizontal' && mode !== 'Y') {\n layout.drawXAxisLabels(axis, index, null, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n if (axis.orientation === 'Vertical' && mode !== 'X') {\n layout.drawYAxisLabels(axis, index, null, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n });\n };\n // Rectangular zoom calculated here performed here\n Zoom.prototype.doZoom = function (chart, axes, bounds) {\n var _this = this;\n var zoomRect = this.zoomingRect;\n var mode = this.zooming.mode;\n var argsData;\n this.isPanning = chart.zoomSettings.enablePan || this.isPanning;\n var zoomedAxisCollections = [];\n this.zoomCompleteEvtCollection = [];\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis,\n previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition,\n currentZoomFactor: axis.zoomFactor,\n currentZoomPosition: axis.zoomPosition,\n previousVisibleRange: axis.visibleRange, currentVisibleRange: null\n };\n if (axis.orientation === 'Horizontal') {\n if (mode !== 'Y') {\n argsData.currentZoomPosition += Math.abs((zoomRect.x - bounds.x) / (bounds.width)) * axis.zoomFactor;\n argsData.currentZoomFactor *= (zoomRect.width / bounds.width);\n }\n }\n else {\n if (mode !== 'X') {\n argsData.currentZoomPosition += (1 - Math.abs((zoomRect.height + (zoomRect.y - bounds.y)) / (bounds.height)))\n * axis.zoomFactor;\n argsData.currentZoomFactor *= (zoomRect.height / bounds.height);\n }\n }\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n zoomedAxisCollections.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n var onZoomingEventArg = { cancel: false, axisCollection: zoomedAxisCollections, name: onZooming };\n if (!onZoomingEventArg.cancel && this.chart.isBlazor) {\n this.chart.trigger(onZooming, onZoomingEventArg, function () {\n _this.zoomingRect = new Rect(0, 0, 0, 0);\n _this.performZoomRedraw(chart);\n });\n }\n else {\n this.zoomingRect = new Rect(0, 0, 0, 0);\n this.redrawOnZooming(chart);\n }\n };\n /** It is used to redraw the chart and trigger zoomComplete event */\n Zoom.prototype.redrawOnZooming = function (chart, isRedraw, isMouseUp) {\n if (isRedraw === void 0) { isRedraw = true; }\n if (isMouseUp === void 0) { isMouseUp = false; }\n var zoomCompleteCollection = isMouseUp ? this.toolkit.zoomCompleteEvtCollection :\n this.zoomCompleteEvtCollection;\n if (isRedraw) {\n this.performZoomRedraw(chart);\n }\n var argsData;\n for (var i = 0; i < zoomCompleteCollection.length; i++) {\n if (!zoomCompleteCollection[i].cancel) {\n argsData = {\n cancel: false, name: zoomComplete,\n axis: chart.axisCollections[i],\n previousZoomFactor: zoomCompleteCollection[i].previousZoomFactor,\n previousZoomPosition: zoomCompleteCollection[i].previousZoomPosition,\n currentZoomFactor: chart.axisCollections[i].zoomFactor,\n currentZoomPosition: chart.axisCollections[i].zoomPosition,\n currentVisibleRange: chart.axisCollections[i].visibleRange,\n previousVisibleRange: zoomCompleteCollection[i].previousVisibleRange\n };\n chart.trigger(zoomComplete, argsData);\n }\n }\n };\n /**\n * Function that handles the Mouse wheel zooming.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.performMouseWheelZooming = function (e, mouseX, mouseY, chart, axes) {\n var _this = this;\n var direction = (this.browserName === 'mozilla' && !this.isPointer) ?\n -(e.detail) / 3 > 0 ? 1 : -1 : (e['wheelDelta'] > 0 ? 1 : -1);\n var mode = this.zooming.mode;\n var origin = 0.5;\n var cumulative;\n var zoomFactor;\n var zoomPosition;\n this.isZoomed = true;\n this.calculateZoomAxesRange(chart);\n chart.disableTrackTooltip = true;\n this.performedUI = true;\n this.isPanning = chart.zoomSettings.enablePan || this.isPanning;\n this.zoomCompleteEvtCollection = [];\n var argsData;\n var zoomedAxisCollection = [];\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition,\n currentZoomFactor: axis.zoomFactor,\n currentZoomPosition: axis.zoomPosition, currentVisibleRange: null,\n previousVisibleRange: axis.visibleRange\n };\n if ((axis.orientation === 'Vertical' && mode !== 'X') ||\n (axis.orientation === 'Horizontal' && mode !== 'Y')) {\n cumulative = Math.max(Math.max(1 / minMax(axis.zoomFactor, 0, 1), 1) + (0.25 * direction), 1);\n if (cumulative >= 1) {\n origin = axis.orientation === 'Horizontal' ? mouseX / axis.rect.width : 1 - (mouseY / axis.rect.height);\n origin = origin > 1 ? 1 : origin < 0 ? 0 : origin;\n zoomFactor = (cumulative === 1) ? 1 : minMax((direction > 0 ? 0.9 : 1.1) / cumulative, 0, 1);\n zoomPosition = (cumulative === 1) ? 0 : axis.zoomPosition + ((axis.zoomFactor - zoomFactor) * origin);\n if (axis.zoomPosition !== zoomPosition || axis.zoomFactor !== zoomFactor) {\n zoomFactor = (zoomPosition + zoomFactor) > 1 ? (1 - zoomPosition) : zoomFactor;\n }\n argsData.currentZoomFactor = zoomFactor;\n argsData.currentZoomPosition = zoomPosition;\n }\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n }\n zoomedAxisCollection.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n var onZoomingEventArgs = { cancel: false, axisCollection: zoomedAxisCollection, name: onZooming };\n if (!onZoomingEventArgs.cancel && this.chart.isBlazor) {\n this.chart.trigger(onZooming, onZoomingEventArgs, function () { _this.performZoomRedraw(chart); });\n }\n else {\n this.redrawOnZooming(chart);\n }\n };\n /**\n * Function that handles the Pinch zooming.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.performPinchZooming = function (e, chart) {\n if ((this.zoomingRect.width > 0 && this.zoomingRect.height > 0) || (chart.startMove && chart.crosshair.enable)) {\n return false;\n }\n this.calculateZoomAxesRange(chart);\n this.isZoomed = true;\n this.isPanning = true;\n this.performedUI = true;\n this.offset = !chart.delayRedraw ? chart.chartAxisLayoutPanel.seriesClipRect : this.offset;\n chart.delayRedraw = true;\n chart.disableTrackTooltip = true;\n var elementOffset = chart.element.getBoundingClientRect();\n var touchDown = this.touchStartList;\n var touchMove = this.touchMoveList;\n var touch0StartX = touchDown[0].pageX - elementOffset.left;\n var touch0StartY = touchDown[0].pageY - elementOffset.top;\n var touch0EndX = touchMove[0].pageX - elementOffset.left;\n var touch0EndY = touchMove[0].pageY - elementOffset.top;\n var touch1StartX = touchDown[1].pageX - elementOffset.left;\n var touch1StartY = touchDown[1].pageY - elementOffset.top;\n var touch1EndX = touchMove[1].pageX - elementOffset.left;\n var touch1EndY = touchMove[1].pageY - elementOffset.top;\n var scaleX = Math.abs(touch0EndX - touch1EndX) / Math.abs(touch0StartX - touch1StartX);\n var scaleY = Math.abs(touch0EndY - touch1EndY) / Math.abs(touch0StartY - touch1StartY);\n var clipX = ((this.offset.x - touch0EndX) / scaleX) + touch0StartX;\n var clipY = ((this.offset.y - touch0EndY) / scaleY) + touch0StartY;\n var pinchRect = new Rect(clipX, clipY, this.offset.width / scaleX, this.offset.height / scaleY);\n var translateXValue = (touch0EndX - (scaleX * touch0StartX));\n var translateYValue = (touch0EndY - (scaleY * touch0StartY));\n if (!isNaN(scaleX - scaleX) && !isNaN(scaleY - scaleY)) {\n switch (this.zooming.mode) {\n case 'XY':\n this.setTransform(translateXValue, translateYValue, scaleX, scaleY, chart, true);\n break;\n case 'X':\n this.setTransform(translateXValue, 0, scaleX, 1, chart, true);\n break;\n case 'Y':\n this.setTransform(0, translateYValue, 1, scaleY, chart, true);\n break;\n }\n }\n this.calculatePinchZoomFactor(chart, pinchRect);\n this.refreshAxis(chart.chartAxisLayoutPanel, chart, chart.axisCollections);\n this.redrawOnZooming(chart, false);\n return true;\n };\n Zoom.prototype.calculatePinchZoomFactor = function (chart, pinchRect) {\n var mode = this.zooming.mode;\n var selectionMin;\n var selectionMax;\n var rangeMin;\n var rangeMax;\n var value;\n var axisTrans;\n var argsData;\n var currentZF;\n var currentZP;\n var zoomedAxisCollection = [];\n this.zoomCompleteEvtCollection = [];\n for (var index = 0; index < chart.axisCollections.length; index++) {\n var axis = chart.axisCollections[index];\n if ((axis.orientation === 'Horizontal' && mode !== 'Y') ||\n (axis.orientation === 'Vertical' && mode !== 'X')) {\n currentZF = axis.zoomFactor;\n currentZP = axis.zoomPosition;\n argsData = {\n cancel: false, name: zoomComplete, axis: axis, previousZoomFactor: axis.zoomFactor,\n previousZoomPosition: axis.zoomPosition, currentZoomFactor: currentZF,\n currentZoomPosition: currentZP, previousVisibleRange: axis.visibleRange,\n currentVisibleRange: null\n };\n if (axis.orientation === 'Horizontal') {\n value = pinchRect.x - this.offset.x;\n axisTrans = axis.rect.width / this.zoomAxes[index].delta;\n rangeMin = value / axisTrans + this.zoomAxes[index].min;\n value = pinchRect.x + pinchRect.width - this.offset.x;\n rangeMax = value / axisTrans + this.zoomAxes[index].min;\n }\n else {\n value = pinchRect.y - this.offset.y;\n axisTrans = axis.rect.height / this.zoomAxes[index].delta;\n rangeMin = (value * -1 + axis.rect.height) / axisTrans + this.zoomAxes[index].min;\n value = pinchRect.y + pinchRect.height - this.offset.y;\n rangeMax = (value * -1 + axis.rect.height) / axisTrans + this.zoomAxes[index].min;\n }\n selectionMin = Math.min(rangeMin, rangeMax);\n selectionMax = Math.max(rangeMin, rangeMax);\n currentZP = (selectionMin - this.zoomAxes[index].actualMin) / this.zoomAxes[index].actualDelta;\n currentZF = (selectionMax - selectionMin) / this.zoomAxes[index].actualDelta;\n argsData.currentZoomPosition = currentZP < 0 ? 0 : currentZP;\n argsData.currentZoomFactor = currentZF > 1 ? 1 : currentZF;\n if (!argsData.cancel) {\n axis.zoomFactor = argsData.currentZoomFactor;\n axis.zoomPosition = argsData.currentZoomPosition;\n this.zoomCompleteEvtCollection.push(argsData);\n }\n zoomedAxisCollection.push({\n zoomFactor: axis.zoomFactor, zoomPosition: axis.zoomFactor, axisName: axis.name,\n axisRange: axis.visibleRange\n });\n }\n }\n var onZoomingEventArgs = { cancel: false, axisCollection: zoomedAxisCollection, name: onZooming };\n if (!onZoomingEventArgs.cancel && this.chart.isBlazor) {\n this.chart.trigger(onZooming, onZoomingEventArgs);\n }\n };\n // Series transformation style applied here.\n Zoom.prototype.setTransform = function (transX, transY, scaleX, scaleY, chart, isPinch) {\n if (!chart.enableCanvas) {\n chart.seriesElements.setAttribute('clip-path', 'url(#' + this.elementId + '_ChartAreaClipRect_)');\n }\n if (chart.indicatorElements) {\n chart.indicatorElements.setAttribute('clip-path', 'url(#' + this.elementId + '_ChartAreaClipRect_)');\n }\n var translate;\n var xAxisLoc;\n var yAxisLoc;\n var element;\n if (transX !== null && transY !== null) {\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var value = _a[_i];\n xAxisLoc = chart.requireInvertedAxis ? value.yAxis.rect.x : value.xAxis.rect.x;\n yAxisLoc = chart.requireInvertedAxis ? value.xAxis.rect.y : value.yAxis.rect.y;\n translate = 'translate(' + (transX + (isPinch ? (scaleX * xAxisLoc) : xAxisLoc)) +\n ',' + (transY + (isPinch ? (scaleY * yAxisLoc) : yAxisLoc)) + ')';\n translate = (scaleX || scaleY) ? translate + ' scale(' + scaleX + ' ' + scaleY + ')' : translate;\n if (value.visible) {\n if (value.category === 'Indicator') {\n value.seriesElement.parentNode.setAttribute('transform', translate);\n }\n else {\n if (!chart.enableCanvas) {\n value.seriesElement.setAttribute('transform', translate);\n }\n }\n element = getElement(chart.element.id + '_Series_' + value.index + '_DataLabelCollections');\n if (value.errorBarElement) {\n value.errorBarElement.setAttribute('transform', translate);\n }\n if (value.symbolElement) {\n value.symbolElement.setAttribute('transform', translate);\n }\n if (value.textElement) {\n value.textElement.setAttribute('visibility', 'hidden');\n value.shapeElement.setAttribute('visibility', 'hidden');\n }\n if (element) {\n element.style.visibility = 'hidden';\n }\n }\n }\n }\n };\n Zoom.prototype.calculateZoomAxesRange = function (chart) {\n var range;\n var axisRange;\n for (var index = 0; index < chart.axisCollections.length; index++) {\n var axis = chart.axisCollections[index];\n axisRange = axis.visibleRange;\n if (this.zoomAxes[index]) {\n if (!chart.delayRedraw) {\n this.zoomAxes[index].min = axisRange.min;\n this.zoomAxes[index].delta = axisRange.delta;\n }\n }\n else {\n range = {\n actualMin: axis.actualRange.min,\n actualDelta: axis.actualRange.delta,\n min: axisRange.min,\n delta: axisRange.delta\n };\n this.zoomAxes[index] = range;\n }\n }\n };\n // Zooming Toolkit created here\n Zoom.prototype.showZoomingToolkit = function (chart) {\n var toolboxItems = this.zooming.toolbarItems;\n var areaBounds = chart.chartAxisLayoutPanel.seriesClipRect;\n var spacing = 5;\n var render = chart.svgRenderer;\n var length = this.isDevice ? 1 : toolboxItems.length;\n var iconSize = this.isDevice ? measureText('Reset Zoom', { size: '12px' }).width : 16;\n var height = this.isDevice ? measureText('Reset Zoom', { size: '12px' }).height : 22;\n var width = (length * iconSize) + ((length + 1) * spacing) + ((length - 1) * spacing);\n var transX = areaBounds.x + areaBounds.width - width - spacing;\n var transY = (areaBounds.y + spacing);\n var xPosition = spacing;\n var toolkit = this.toolkit;\n var element;\n var shadowElement = '';\n shadowElement += '';\n shadowElement += '';\n if (length === 0 || getElement(this.elementId + '_Zooming_KitCollection')) {\n return false;\n }\n var defElement = render.createDefs();\n toolboxItems = this.isDevice ? ['Reset'] : toolboxItems;\n defElement.innerHTML = shadowElement;\n this.toolkitElements = render.createGroup({\n id: this.elementId + '_Zooming_KitCollection',\n transform: 'translate(' + transX + ',' + transY + ')'\n });\n this.toolkitElements.appendChild(defElement);\n this.toolkitElements.appendChild(render.drawRectangle(new RectOption(this.elementId + '_Zooming_Rect', '#fafafa', { color: 'transparent', width: 1 }, 1, new Rect(0, 0, width, (height + (spacing * 2))), 0, 0)));\n var outerElement = render.drawRectangle(new RectOption(this.elementId + '_Zooming_Rect', '#fafafa', { color: 'transparent', width: 1 }, 0.1, new Rect(0, 0, width, (height + (spacing * 2))), 0, 0));\n outerElement.setAttribute('filter', 'url(#chart_shadow)');\n this.toolkitElements.appendChild(outerElement);\n var currentItem;\n for (var i = 1; i <= length; i++) {\n currentItem = toolboxItems[i - 1];\n element = render.createGroup({\n transform: 'translate(' + xPosition + ',' + (this.isDevice ? spacing : (spacing + 3)) + ')'\n });\n // for desktop toolkit hight is 32 and top padding is 8 icon size 16\n switch (currentItem) {\n case 'Pan':\n toolkit.createPanButton(element, this.toolkitElements);\n break;\n case 'Zoom':\n toolkit.createZoomButton(element, this.toolkitElements);\n break;\n case 'ZoomIn':\n toolkit.createZoomInButton(element, this.toolkitElements, chart);\n break;\n case 'ZoomOut':\n toolkit.createZoomOutButton(element, this.toolkitElements, chart);\n break;\n case 'Reset':\n toolkit.createResetButton(element, this.toolkitElements, chart, this.isDevice);\n break;\n }\n xPosition += iconSize + (spacing * 2);\n }\n this.toolkitElements.setAttribute('opacity', this.isDevice ? '1' : '' + this.zoomkitOpacity);\n this.toolkitElements.setAttribute('cursor', 'auto');\n if (chart.enableCanvas) {\n var zoomDiv = document.createElement('div');\n zoomDiv.id = chart.element.id + '_zoom';\n zoomDiv.setAttribute('style', 'position:absolute; z-index:1');\n var zoomheight = chart.availableSize.height / 2;\n var svg = chart.svgRenderer.createSvg({\n id: chart.element.id + '_zoomkit_svg',\n width: chart.availableSize.width,\n height: zoomheight\n });\n svg.setAttribute('style', 'position:absolute');\n svg.appendChild(this.toolkitElements);\n zoomDiv.appendChild(svg);\n document.getElementById(this.elementId + '_Secondary_Element').appendChild(zoomDiv);\n }\n else {\n chart.svgObject.appendChild(this.toolkitElements);\n }\n if (!this.isDevice) {\n EventHandler.add(this.toolkitElements, 'mousemove touchstart', this.zoomToolkitMove, this);\n EventHandler.add(this.toolkitElements, 'mouseleave touchend', this.zoomToolkitLeave, this);\n if (this.isPanning) {\n toolkit.pan();\n }\n }\n return true;\n };\n /**\n * To the show the zooming toolkit.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.applyZoomToolkit = function (chart, axes) {\n var showToolkit = this.isAxisZoomed(axes);\n if (showToolkit) {\n this.showZoomingToolkit(chart);\n this.isZoomed = true;\n }\n else {\n this.toolkit.removeTooltip();\n this.isPanning = false;\n this.isZoomed = false;\n chart.svgObject.setAttribute('cursor', 'auto');\n }\n };\n /**\n * Return boolean property to show zooming toolkit.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.isAxisZoomed = function (axes) {\n var showToolkit = false;\n for (var _i = 0, _a = axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n showToolkit = (showToolkit || (axis.zoomFactor !== 1 || axis.zoomPosition !== 0));\n }\n return showToolkit;\n };\n Zoom.prototype.zoomToolkitMove = function () {\n var element = this.toolkitElements;\n this.zoomkitOpacity = 1;\n element.setAttribute('opacity', '' + this.zoomkitOpacity);\n return false;\n };\n Zoom.prototype.zoomToolkitLeave = function () {\n var element = this.toolkitElements;\n this.zoomkitOpacity = 0.3;\n element.setAttribute('opacity', '' + this.zoomkitOpacity);\n return false;\n };\n /**\n * @hidden\n */\n Zoom.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n EventHandler.add(this.chart.element, this.wheelEvent, this.chartMouseWheel, this);\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchStartEvent, this.mouseDownHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n this.chart.on(this.cancelEvent, this.mouseCancelHandler, this);\n };\n /**\n * @hidden\n */\n Zoom.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n EventHandler.remove(this.chart.element, this.wheelEvent, this.chartMouseWheel);\n this.chart.off(Browser.touchMoveEvent, this.mouseMoveHandler);\n this.chart.off(Browser.touchStartEvent, this.mouseDownHandler);\n this.chart.off(Browser.touchEndEvent, this.mouseUpHandler);\n this.chart.off(this.cancelEvent, this.mouseCancelHandler);\n };\n /**\n * Handles the mouse wheel on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Zoom.prototype.chartMouseWheel = function (e) {\n var chart = this.chart;\n var offset = chart.element.getBoundingClientRect();\n var svgRect = getElement(chart.svgId).getBoundingClientRect();\n var mouseX = (e.clientX - offset.left) - Math.max(svgRect.left - offset.left, 0);\n var mouseY = (e.clientY - offset.top) - Math.max(svgRect.top - offset.top, 0);\n if (this.zooming.enableMouseWheelZooming &&\n withInBounds(mouseX, mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n e.preventDefault();\n this.performMouseWheelZooming(e, mouseX, mouseY, chart, chart.axisCollections);\n }\n return false;\n };\n /**\n * @hidden\n */\n Zoom.prototype.mouseMoveHandler = function (e) {\n //Zooming for chart\n var chart = this.chart;\n var touches = null;\n if (e.type === 'touchmove') {\n if (e.preventDefault && this.isIOS &&\n (this.isPanning || (chart.isDoubleTap)\n || (this.zooming.enablePinchZooming && this.touchStartList.length > 1))) {\n e.preventDefault();\n }\n touches = e.touches;\n }\n if (chart.isChartDrag) {\n if (chart.isTouch) {\n this.touchMoveList = this.addTouchPointer(this.touchMoveList, e, touches);\n if (this.zooming.enablePinchZooming && this.touchMoveList.length > 1\n && this.touchStartList.length > 1) {\n this.performPinchZooming(e, chart);\n }\n }\n this.renderZooming(e, chart, chart.isTouch);\n }\n };\n /**\n * @hidden\n */\n Zoom.prototype.mouseDownHandler = function (e) {\n //Zooming for chart\n var chart = this.chart;\n var touches = null;\n var target;\n if (e.type === 'touchstart') {\n touches = e.touches;\n target = e.target;\n }\n else {\n target = e.target;\n }\n if (target.id.indexOf(chart.element.id + '_Zooming_') === -1 &&\n withInBounds(chart.previousMouseMoveX, chart.previousMouseMoveY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n chart.isChartDrag = true;\n }\n if (chart.isTouch) {\n this.touchStartList = this.addTouchPointer(this.touchStartList, e, touches);\n }\n };\n /**\n * @hidden\n */\n Zoom.prototype.mouseUpHandler = function (e) {\n var chart = this.chart;\n var performZoomRedraw = e.target.id.indexOf(chart.element.id + '_ZoomOut_') === -1 ||\n e.target.id.indexOf(chart.element.id + '_ZoomIn_') === -1;\n if (chart.isChartDrag || performZoomRedraw) {\n this.redrawOnZooming(chart, true, true);\n }\n if (chart.isTouch) {\n if (chart.isDoubleTap && withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)\n && this.touchStartList.length === 1 && this.isZoomed) {\n this.toolkit.reset();\n }\n this.touchStartList = [];\n chart.isDoubleTap = false;\n }\n };\n /**\n * @hidden\n */\n Zoom.prototype.mouseCancelHandler = function () {\n if (this.isZoomed) {\n this.performZoomRedraw(this.chart);\n }\n this.pinchTarget = null;\n this.touchStartList = [];\n this.touchMoveList = [];\n };\n /**\n * Handles the touch pointer.\n *\n * @returns {ITouches[]} touchList collection\n * @private\n */\n Zoom.prototype.addTouchPointer = function (touchList, e, touches) {\n if (touches) {\n touchList = [];\n for (var i = 0, length_1 = touches.length; i < length_1; i++) {\n touchList.push({ pageX: touches[i].clientX, pageY: touches[i].clientY, pointerId: null });\n }\n }\n else {\n touchList = touchList ? touchList : [];\n if (touchList.length === 0) {\n touchList.push({ pageX: e.clientX, pageY: e.clientY, pointerId: e.pointerId });\n }\n else {\n for (var i = 0, length_2 = touchList.length; i < length_2; i++) {\n if (touchList[i].pointerId === e.pointerId) {\n touchList[i] = { pageX: e.clientX, pageY: e.clientY, pointerId: e.pointerId };\n }\n else {\n touchList.push({ pageX: e.clientX, pageY: e.clientY, pointerId: e.pointerId });\n }\n }\n }\n }\n return touchList;\n };\n /**\n * Get module name.\n */\n Zoom.prototype.getModuleName = function () {\n // Returns te module name\n return 'Zoom';\n };\n /**\n * To destroy the zooming.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.destroy = function () {\n // Destroy method performed here\n this.removeEventListener();\n };\n return Zoom;\n}());\nexport { Zoom };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Series } from '../series/chart-series';\nimport { ColumnBase } from './column-base';\nimport { Axis } from '../axis/axis';\n/**\n * `Pareto series` module used to render the Pareto series.\n */\nvar ParetoSeries = /** @class */ (function (_super) {\n __extends(ParetoSeries, _super);\n function ParetoSeries() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.paretoAxes = [];\n return _this;\n }\n /**\n * Defines the Line initialization\n */\n ParetoSeries.prototype.initSeries = function (targetSeries, chart) {\n var series = new Series(chart, 'series', targetSeries.properties, true);\n series.name = 'Pareto';\n series.yAxisName = targetSeries.yAxisName + '_CumulativeAxis';\n series.category = 'Pareto';\n targetSeries.category = 'Pareto';\n series.type = 'Line';\n series.interior = chart.themeStyle.errorBar;\n chart.visibleSeries.push(series);\n this.initAxis(targetSeries, series, chart);\n };\n /**\n * Defines the Axis initialization for Line\n */\n ParetoSeries.prototype.initAxis = function (paretoSeries, targetSeries, chart) {\n var isExist = this.paretoAxes.some(function (currentAxis) {\n return currentAxis.name === targetSeries.yAxisName;\n });\n if (!isExist) {\n var secondaryAxis = (paretoSeries.yAxisName ? chart.axes.filter(function (axis) {\n return axis.name === paretoSeries.yAxisName;\n })[0] : chart.primaryYAxis);\n var newAxis = new Axis(chart, 'axis', {\n name: targetSeries.yAxisName,\n majorGridLines: {\n width: 0\n },\n majorTickLines: secondaryAxis.majorTickLines,\n lineStyle: secondaryAxis.lineStyle,\n minimum: 0,\n maximum: 100,\n rowIndex: secondaryAxis.rowIndex,\n opposedPosition: true,\n labelFormat: '{value}%'\n });\n this.paretoAxes.push(newAxis);\n }\n };\n /**\n * Render Pareto series.\n *\n * @returns {void}\n * @private\n */\n ParetoSeries.prototype.render = function (series) {\n series.chart.columnSeriesModule.render(series);\n };\n /**\n * To perform the cumulative calculation for pareto series.\n */\n ParetoSeries.prototype.performCumulativeCalculation = function (json, series) {\n var data = json;\n var sum = 0;\n var count = 0;\n var length = data.length;\n for (var i = 0; i < length; i++) {\n sum += data[i][series.yName];\n }\n for (var i = 0; i < length; i++) {\n count = count + data[i][series.yName];\n data[i][series.yName] = Math.round((count / sum) * 100);\n }\n return data;\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n ParetoSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * Get module name.\n */\n ParetoSeries.prototype.getModuleName = function () {\n return 'ParetoSeries';\n /**\n * return the module name\n */\n };\n /**\n * To destroy the pareto series.\n *\n * @returns {void}\n * @private\n */\n ParetoSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return ParetoSeries;\n}(ColumnBase));\nexport { ParetoSeries };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { textWrap, appendClipElement, appendChildElement } from '../../common/utils/helper';\nimport { valueToCoefficient, textTrim, textElement, withInBounds } from '../../common/utils/helper';\nimport { measureText, TextOption, PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { axisMultiLabelRender, multiLevelLabelClick } from '../../common/model/constants';\n/**\n * `MultiLevelLabel` module is used to render the multi level label in chart.\n */\nvar MultiLevelLabel = /** @class */ (function () {\n /**\n * Constructor for the logerithmic module.\n *\n * @private\n */\n function MultiLevelLabel(chart) {\n /** @private */\n this.xAxisPrevHeight = [];\n /** @private */\n this.xAxisMultiLabelHeight = [];\n /** @private */\n this.yAxisPrevHeight = [];\n /** @private */\n this.yAxisMultiLabelHeight = [];\n /** @private */\n this.multiLevelLabelRectXRegion = [];\n /** @private */\n this.xLabelCollection = [];\n this.chart = chart;\n this.addEventListener();\n }\n /**\n * Binding events for multi level module.\n */\n MultiLevelLabel.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on('click', this.click, this);\n };\n /**\n * Finds multilevel label height\n *\n * @returns {void}\n */\n MultiLevelLabel.prototype.getMultilevelLabelsHeight = function (axis) {\n var value = 0;\n var multiLevelLabelsHeight = [];\n var prevHeight = [];\n var isVertical = axis.orientation === 'Vertical';\n var axisValue = isVertical ? axis.rect.height : axis.rect.width;\n var labelSize;\n var height;\n var padding = 10;\n var gap;\n axis.multiLevelLabels.map(function (multiLevel, index) {\n multiLevel.categories.map(function (categoryLabel) {\n if (categoryLabel.text !== '' && categoryLabel.start !== null && categoryLabel.end !== null) {\n labelSize = measureText(categoryLabel.text, multiLevel.textStyle);\n height = isVertical ? labelSize.width : labelSize.height;\n height += 2 * multiLevel.border.width +\n (multiLevel.border.type === 'CurlyBrace' ? padding : 0);\n gap = (categoryLabel.maximumTextWidth !== null) ? categoryLabel.maximumTextWidth :\n (valueToCoefficient(typeof categoryLabel.end === 'string' ? Number(new Date(categoryLabel.end)) :\n categoryLabel.end, axis) * axisValue) -\n (valueToCoefficient(typeof categoryLabel.start === 'string' ? Number(new Date(categoryLabel.start)) :\n categoryLabel.start, axis) * axisValue);\n if ((labelSize.width > gap - padding) && gap > 0 && (multiLevel.overflow === 'Wrap') && !isVertical) {\n height = (height * (textWrap(categoryLabel.text, gap - padding, multiLevel.textStyle).length));\n }\n multiLevelLabelsHeight[index] = !multiLevelLabelsHeight[index] ? height :\n ((multiLevelLabelsHeight[index] < height) ? height : multiLevelLabelsHeight[index]);\n }\n });\n prevHeight[index] = value;\n value += multiLevelLabelsHeight[index] ? (multiLevelLabelsHeight[index] + padding) : 0;\n });\n axis.multiLevelLabelHeight = value + ((axis.title !== '' || (this.chart.legendModule && this.chart.legendSettings.visible))\n ? padding / 2 : 0);\n if (isVertical) {\n this.yAxisMultiLabelHeight = multiLevelLabelsHeight;\n this.yAxisPrevHeight = prevHeight;\n }\n else {\n this.xAxisMultiLabelHeight = multiLevelLabelsHeight;\n this.xAxisPrevHeight = prevHeight;\n }\n };\n /**\n * render x axis multi level labels\n *\n * @private\n * @returns {void}\n */\n MultiLevelLabel.prototype.renderXAxisMultiLevelLabels = function (axis, index, parent, axisRect) {\n var _this = this;\n var x;\n var y;\n var padding = 10;\n var startX;\n var pointIndex;\n var startY = (axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0) +\n (axis.maxLabelSize.height) + padding;\n var endX;\n var pathRect = '';\n var start;\n var end;\n var labelSize;\n var isOutside = axis.labelPosition === 'Outside';\n var gap;\n var anchor;\n var isInversed = axis.isInversed;\n var argsData;\n var opposedPosition = axis.opposedPosition;\n var scrollBarHeight = axis.scrollbarSettings.enable || (isOutside && isNullOrUndefined(axis.crossesAt)) ?\n axis.scrollBarHeight : 0;\n var clipY = ((opposedPosition && !isOutside) || (!opposedPosition && isOutside)) ?\n (axisRect.y + startY - axis.majorTickLines.width) : (axisRect.y - startY - axis.multiLevelLabelHeight);\n this.createClipRect(axisRect.x - axis.majorTickLines.width, clipY + scrollBarHeight, axis.multiLevelLabelHeight + padding, axisRect.width + 2 * axis.majorTickLines.width, this.chart.element.id + '_XAxis_Clippath_' + index, this.chart.element.id + 'XAxisMultiLevelLabel' + index);\n axis.multiLevelLabels.map(function (multiLevel, level) {\n pointIndex = 0;\n _this.labelElement = _this.chart.renderer.createGroup({ id: _this.chart.element.id + index + '_MultiLevelLabel' + level });\n multiLevel.categories.map(function (categoryLabel, i) {\n pathRect = '';\n start = typeof categoryLabel.start === 'string' ? Number(new Date(categoryLabel.start)) : categoryLabel.start;\n end = typeof categoryLabel.end === 'string' ? Number(new Date(categoryLabel.end)) : categoryLabel.end;\n argsData = _this.triggerMultiLabelRender(axis, categoryLabel.text, axis.multiLevelLabels[level].textStyle, axis.multiLevelLabels[level].alignment, categoryLabel.customAttributes);\n if (!argsData.cancel) {\n startX = valueToCoefficient(start, axis) * axisRect.width;\n endX = valueToCoefficient(end, axis) * axisRect.width;\n endX = isInversed ? [startX, startX = endX][0] : endX;\n labelSize = measureText(argsData.text, argsData.textStyle);\n gap = ((categoryLabel.maximumTextWidth === null) ? endX - startX : categoryLabel.maximumTextWidth) - padding;\n x = startX + axisRect.x + padding;\n y = (((opposedPosition && !isOutside) || (!opposedPosition && isOutside)) ? (startY + axisRect.y +\n labelSize.height / 2 + padding + _this.xAxisPrevHeight[level]) : (axisRect.y - startY + labelSize.height / 2 -\n _this.xAxisMultiLabelHeight[level] - _this.xAxisPrevHeight[level])) + scrollBarHeight;\n if (argsData.alignment === 'Center') {\n x += (endX - startX - padding) / 2;\n anchor = 'middle';\n }\n else if (argsData.alignment === 'Far') {\n x = x + (endX - startX - padding) - multiLevel.border.width / 2;\n anchor = 'end';\n }\n else {\n anchor = 'start';\n x += multiLevel.border.width / 2;\n }\n y = multiLevel.border.type === 'CurlyBrace' ?\n (((!opposedPosition && isOutside) || (opposedPosition && !isOutside)) ? y + padding : y - padding / 2) : y;\n var options = new TextOption(_this.chart.element.id + index + '_Axis_MultiLevelLabel_Level_' + level + '_Text_' + i, x, y, anchor, argsData.text);\n if (multiLevel.overflow !== 'None') {\n options.text = (multiLevel.overflow === 'Wrap') ?\n textWrap(argsData.text, gap, argsData.textStyle) : textTrim(gap, argsData.text, argsData.textStyle);\n options.x = options.x - padding / 2;\n }\n textElement(_this.chart.renderer, options, argsData.textStyle, argsData.textStyle.color || _this.chart.themeStyle.axisLabel, _this.labelElement, false, _this.chart.redraw, true, null, null, null, null, null, _this.chart.enableCanvas);\n if (_this.chart.enableCanvas) {\n var textSize = measureText(argsData.text, argsData.textStyle);\n _this.multiLevelLabelRectXRegion.push(new Rect(options.x, options.y, textSize.width, textSize.height));\n _this.xLabelCollection.push(options);\n }\n if (multiLevel.border.width > 0 && multiLevel.border.type !== 'WithoutBorder') {\n pathRect = _this.renderXAxisLabelBorder(level, endX - startX - padding, axis, startX, startY, labelSize, options, axisRect, argsData.alignment, pathRect, isOutside, opposedPosition, pointIndex);\n // fix for generating seperate rect\n if (pathRect !== '') {\n _this.createBorderElement(level, index, axis, pathRect, pointIndex);\n pointIndex++;\n }\n }\n if (!_this.chart.enableCanvas) {\n _this.multiElements.appendChild(_this.labelElement);\n }\n }\n });\n });\n if (!this.chart.enableCanvas) {\n parent.appendChild(this.multiElements);\n }\n };\n /**\n * render x axis multi level labels border\n *\n * @private\n * @returns {void}\n */\n MultiLevelLabel.prototype.renderXAxisLabelBorder = function (labelIndex, gap, axis, startX, startY, labelSize, textOptions, axisRect, alignment, path, isOutside, opposedPosition, categoryIndex) {\n var padding = 10;\n var padding1;\n var padding2;\n var value;\n var value1;\n var groupLabel = axis.multiLevelLabels[labelIndex];\n var categoryType = groupLabel.categories[categoryIndex].type;\n var width = gap + padding;\n var height = this.xAxisMultiLabelHeight[labelIndex] + padding;\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var x = startX + axisRect.x;\n var y = ((!opposedPosition && isOutside) || (opposedPosition && !isOutside)) ? (startY + axisRect.y +\n this.xAxisPrevHeight[labelIndex] + scrollBarHeight) : (axisRect.y - startY -\n this.xAxisPrevHeight[labelIndex] - scrollBarHeight);\n var borderType = categoryType ? categoryType : groupLabel.border.type;\n switch (borderType) {\n case 'WithoutTopandBottomBorder':\n case 'Rectangle':\n case 'WithoutTopBorder':\n height = ((!opposedPosition && isOutside) || (opposedPosition && !isOutside)) ? height : -height;\n path += 'M ' + x + ' ' + y + ' L ' + x + ' ' + (y + height) + ' M ' + (x + width) + ' '\n + y + ' L ' + (x + width) + ' ' + (y + height);\n path += (borderType !== 'WithoutTopandBottomBorder') ? (' L' + ' ' + (x) + ' ' + (y + height) + ' ') : ' ';\n path += (borderType === 'Rectangle') ? ('M ' + x + ' ' + y + ' L ' + (x + width) + ' ' + y) : ' ';\n break;\n case 'Brace':\n if (alignment === 'Near') {\n value = textOptions.x;\n value1 = textOptions.x + labelSize.width + 2;\n }\n else if (alignment === 'Center') {\n value = textOptions.x - labelSize.width / 2 - 2;\n value1 = textOptions.x + labelSize.width / 2 + 2;\n }\n else {\n value = textOptions.x - labelSize.width - 2;\n value1 = textOptions.x;\n }\n height = ((!opposedPosition && isOutside) || (opposedPosition && !isOutside)) ? height : -height;\n path += 'M ' + x + ' ' + y + ' L ' + x + ' ' + (y + height / 2) +\n ' M ' + x + ' ' + (y + height / 2) + ' L ' + (value - 2) + ' ' + (y + height / 2) +\n ' M ' + (value1) + ' ' + (y + height / 2) + ' L ' + (x + width) + ' ' + (y + height / 2) +\n ' M ' + (x + width) + ' ' + (y + height / 2) + ' L ' + (x + width) + ' ' + (y);\n break;\n case 'CurlyBrace':\n if ((!opposedPosition && isOutside) || (opposedPosition && !isOutside)) {\n padding = 10;\n padding1 = 15;\n padding2 = 5;\n }\n else {\n padding = -10;\n padding1 = -15;\n padding2 = -5;\n }\n if (alignment === 'Center') {\n path += 'M ' + x + ' ' + y + ' C ' + x + ' ' + y + ' ' + (x + 5) + ' ' + (y + padding) + ' ' + (x + 10) + ' ' +\n (y + padding) + ' L ' + (x + width / 2 - 5) + ' ' + (y + padding) + ' L ' + (x + width / 2) + ' ' + (y + padding1) +\n ' L ' + (x + width / 2 + 5) + ' ' + (y + padding) + ' L ' + (x + width - 10) + ' ' + (y + padding) + ' C ' +\n (x + width - 10) + ' ' + (y + padding) + ' ' + (x + width) + ' ' + (y + padding2) + ' ' + (x + width) + ' ' + (y);\n }\n else if (alignment === 'Near') {\n path += 'M ' + x + ' ' + y + ' C ' + x + ' ' + y + ' ' + (x + 5) + ' ' + (y + padding) + ' ' + (x + 10) + ' ' +\n (y + padding) + ' L ' + (x + 15) + ' ' + (y + padding1) + ' L ' + (x + 20) + ' ' + (y + padding) + ' L ' +\n (x + width - 10) + ' ' + (y + padding) + ' C ' + (x + width - 10) + ' ' + (y + padding) + ' ' + (x + width) + ' '\n + (y + padding2) + ' ' + (x + width) + ' ' + (y);\n }\n else {\n path += 'M ' + x + ' ' + y + ' C ' + x + ' ' + y + ' ' + (x + 5) + ' ' + (y + padding) + ' ' + (x + 10) + ' ' +\n (y + padding) + ' L ' + (x + width - 20) + ' ' + (y + padding) + ' L ' + (x + width - 15) + ' ' + (y + padding1) +\n ' L ' + (x + width - 10) + ' ' + (y + padding) + ' L ' + (x + width - 10) + ' ' + (y + padding) + ' C '\n + (x + width - 10) + ' ' + (y + padding) + ' ' + (x + width) + ' ' + (y + padding2) + ' ' + (x + width) + ' ' + (y);\n }\n break;\n }\n return path;\n };\n /**\n * render y axis multi level labels\n *\n * @private\n * @returns {void}\n */\n MultiLevelLabel.prototype.renderYAxisMultiLevelLabels = function (axis, index, parent, rect) {\n var _this = this;\n var labelSize;\n var isOutside = axis.labelPosition === 'Outside';\n var x;\n var y;\n var padding = 10;\n var startX = (axis.tickPosition === axis.labelPosition ? axis.majorTickLines.height : 0) +\n (axis.maxLabelSize.width) + padding;\n var startY;\n var path = '';\n var endY;\n var argsData;\n var pointIndex;\n var isInversed = axis.isInversed;\n var start;\n var end;\n var gap;\n var anchor = 'middle';\n var opposedPosition = axis.opposedPosition;\n var scrollBarHeight = isOutside && isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight : 0;\n scrollBarHeight = scrollBarHeight * (opposedPosition ? 1 : -1);\n var clipX = ((opposedPosition && !isOutside) || (!opposedPosition && isOutside)) ?\n (rect.x - axis.multiLevelLabelHeight - startX - padding) : (rect.x + startX);\n this.createClipRect(clipX + scrollBarHeight, rect.y - axis.majorTickLines.width, rect.height + 2 * axis.majorTickLines.width, axis.multiLevelLabelHeight + padding, this.chart.element.id + '_YAxis_Clippath_' + index, this.chart.element.id\n + 'YAxisMultiLevelLabel' + index);\n axis.multiLevelLabels.map(function (multiLevel, level) {\n _this.labelElement = _this.chart.renderer.createGroup({ id: _this.chart.element.id + index + '_MultiLevelLabel' + level });\n pointIndex = 0;\n multiLevel.categories.map(function (categoryLabel, i) {\n path = '';\n end = typeof categoryLabel.end === 'string' ? Number(new Date(categoryLabel.end)) : categoryLabel.end;\n start = typeof categoryLabel.start === 'string' ? Number(new Date(categoryLabel.start)) : categoryLabel.start;\n startY = valueToCoefficient((start), axis) * (rect.height);\n endY = valueToCoefficient((end), axis) * (rect.height);\n endY = isInversed ? [startY, startY = endY][0] : endY;\n argsData = _this.triggerMultiLabelRender(axis, categoryLabel.text, multiLevel.textStyle, multiLevel.alignment, categoryLabel.customAttributes);\n if (!argsData.cancel) {\n labelSize = measureText(argsData.text, argsData.textStyle);\n gap = endY - startY;\n x = rect.x - startX - _this.yAxisPrevHeight[level] -\n (_this.yAxisMultiLabelHeight[level] / 2) - padding / 2;\n y = rect.height + rect.y - startY - (gap / 2);\n if (opposedPosition) {\n x = isOutside ? rect.x + startX + padding / 2 + (_this.yAxisMultiLabelHeight[level] / 2) +\n _this.yAxisPrevHeight[level] + scrollBarHeight : rect.x - startX - (_this.yAxisMultiLabelHeight[level] / 2) -\n _this.yAxisPrevHeight[level] - padding / 2;\n }\n else {\n x = isOutside ? x + scrollBarHeight : rect.x + startX + padding / 2 + (_this.yAxisMultiLabelHeight[level] / 2) +\n _this.yAxisPrevHeight[level];\n }\n if (argsData.alignment === 'Center') {\n y += labelSize.height / 4;\n }\n else if (argsData.alignment === 'Far') {\n y += gap / 2 - labelSize.height / 2;\n }\n else {\n y = y - gap / 2 + labelSize.height;\n }\n x = multiLevel.border.type === 'CurlyBrace' ? (((!opposedPosition && isOutside) ||\n (opposedPosition && !isOutside)) ? x - padding : x + padding) : x;\n var options = new TextOption(_this.chart.element.id + index + '_Axis_MultiLevelLabel_Level_' + level + '_Text_' + i, x, y, anchor, argsData.text);\n options.text = (multiLevel.overflow === 'Trim') ?\n textTrim((categoryLabel.maximumTextWidth === null ? _this.yAxisMultiLabelHeight[level] :\n categoryLabel.maximumTextWidth), argsData.text, argsData.textStyle) : options.text;\n textElement(_this.chart.renderer, options, argsData.textStyle, argsData.textStyle.color || _this.chart.themeStyle.axisLabel, _this.labelElement, _this.chart.redraw, true, null, null, null, null, null, null, _this.chart.enableCanvas);\n if (multiLevel.border.width > 0 && multiLevel.border.type !== 'WithoutBorder') {\n path = _this.renderYAxisLabelBorder(level, gap, axis, endY, startX, startY, labelSize, options, rect, argsData.alignment, path, isOutside, opposedPosition, pointIndex);\n if (path !== '') {\n _this.createBorderElement(level, index, axis, path, pointIndex);\n pointIndex++;\n }\n }\n if (!_this.chart.enableCanvas) {\n _this.multiElements.appendChild(_this.labelElement);\n }\n }\n });\n });\n if (!this.chart.enableCanvas) {\n parent.appendChild(this.multiElements);\n }\n };\n /**\n * render y axis multi level labels border\n *\n * @private\n * @returns {void}\n */\n MultiLevelLabel.prototype.renderYAxisLabelBorder = function (labelIndex, gap, axis, endY, startX, startY, labelSize, textOptions, rect, alignment, path, isOutside, opposedPosition, categoryIndex) {\n var height = endY - startY;\n var padding = 10;\n var padding1;\n var padding2;\n var groupLabel = axis.multiLevelLabels[labelIndex];\n var categoryType = groupLabel.categories[categoryIndex].type;\n var y = rect.y + rect.height - endY;\n var scrollBarHeight = isOutside && isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight : 0;\n scrollBarHeight = scrollBarHeight * (opposedPosition ? 1 : -1);\n var width = this.yAxisMultiLabelHeight[labelIndex] + padding;\n var x = (((!opposedPosition && isOutside) || (opposedPosition && !isOutside)) ? rect.x - startX -\n this.yAxisPrevHeight[labelIndex] : rect.x + startX + this.yAxisPrevHeight[labelIndex]) + scrollBarHeight;\n var borderType = categoryType ? categoryType : groupLabel.border.type;\n switch (borderType) {\n case 'WithoutTopandBottomBorder':\n case 'Rectangle':\n case 'WithoutTopBorder':\n width = ((!opposedPosition && isOutside) || (opposedPosition && !isOutside)) ? -width : width;\n path += 'M ' + x + ' ' + y + ' L ' + (x + width) + ' ' + y +\n ' M ' + x + ' ' + (y + height) + ' L ' + (x + width) + ' ' + (y + height);\n path += (borderType !== 'WithoutTopandBottomBorder') ? (' L' + ' ' + (x + width) + ' ' + y + ' ') : ' ';\n path += (borderType === 'Rectangle') ? ('M ' + (x) + ' ' + (y + height) + 'L' + ' ' + (x) + ' ' + y + ' ') : ' ';\n break;\n case 'Brace':\n width = ((!opposedPosition && isOutside) || (opposedPosition && !isOutside)) ? width : -width;\n path += 'M ' + (x) + ' ' + y + ' L ' + (x - width / 2) + ' ' + y + ' L ' + (x - width / 2) + ' ' +\n (textOptions.y - labelSize.height / 2 - 4) + ' M ' + (x - width / 2) + ' ' +\n (textOptions.y + labelSize.height / 4 + 2) +\n ' L ' + (x - width / 2) + ' ' + (y + height) + ' L ' + (x) + ' ' + (y + height);\n break;\n case 'CurlyBrace':\n if ((!opposedPosition && isOutside) || (opposedPosition && !isOutside)) {\n padding = -10;\n padding1 = -15;\n padding2 = -5;\n }\n else {\n padding = 10;\n padding1 = 15;\n padding2 = 5;\n }\n if (alignment === 'Center') {\n path += 'M ' + x + ' ' + y + ' C ' + x + ' ' + y + ' ' + (x + padding) + ' ' + y + ' ' + (x + padding) + ' ' + (y + 10)\n + ' L ' + (x + padding) + ' ' + (y + (height - 10) / 2) + ' L ' + (x + padding1) + ' ' + (y + (height - 10) / 2 + 5)\n + ' L ' + (x + padding) + ' ' + (y + (height - 10) / 2 + 10) + ' L ' + (x + padding) + ' ' + (y + (height - 10)) +\n ' C ' + (x + padding) + ' ' + (y + (height - 10)) + ' ' + (x + padding2) + ' ' + (y + height) + ' '\n + x + ' ' + (y + height);\n }\n else if (alignment === 'Far') {\n path += 'M ' + x + ' ' + y + ' C ' + x + ' ' + y + ' ' + (x + padding) + ' ' + y + ' ' + (x + padding) + ' ' + (y + 10)\n + ' L ' + (x + padding) + ' ' + (y + height - 20) + ' ' + ' L ' + (x + padding1) + ' ' + (y + (height - 15)) +\n ' L ' + (x + padding) + ' ' + (y + (height - 10)) + ' L ' + (x + padding) + ' ' + (y + (height - 10)) +\n ' C ' + (x + padding) + ' ' + (y + (height - 10)) + ' ' + (x + padding) + ' ' + (y + height) + ' ' + x + ' '\n + (y + height);\n }\n else {\n path += 'M ' + x + ' ' + y + ' C ' + x + ' ' + y + ' ' + (x + padding) + ' ' + y + ' ' + (x + padding) + ' ' + (y + 10)\n + ' L ' + (x + padding1) + ' ' + (y + 15) +\n ' L ' + (x + padding) + ' ' + (y + 20) + ' L ' + (x + padding) + ' ' + (y + (height - 10)) +\n ' C ' + (x + padding) + ' ' + (y + (height - 10)) + ' ' + (x + padding2) + ' ' + (y + height) + ' ' + x +\n ' ' + (y + height);\n }\n break;\n }\n return path;\n };\n /**\n * create cliprect\n *\n * @returns {void}\n * @private\n */\n MultiLevelLabel.prototype.createClipRect = function (x, y, height, width, clipId, axisId) {\n this.multiElements = this.chart.renderer.createGroup({\n 'id': axisId,\n 'clip-path': 'url(#' + clipId + ')'\n });\n if (!this.chart.enableCanvas) {\n this.multiElements.appendChild(appendClipElement(this.chart.redraw, {\n 'id': clipId,\n 'x': x,\n 'y': y,\n 'width': width,\n 'height': height,\n 'fill': 'white',\n 'stroke-width': 1, 'stroke': 'Gray'\n }, this.chart.renderer));\n }\n };\n /**\n * create borer element\n *\n * @returns {void}\n * @private\n */\n MultiLevelLabel.prototype.createBorderElement = function (borderIndex, axisIndex, axis, path, pointIndex) {\n var direction = path;\n var borderElement = this.chart.renderer.drawPath(new PathOption(this.chart.element.id + axisIndex + '_Axis_MultiLevelLabel_Rect_' + borderIndex + '_' + pointIndex, 'Transparent', axis.multiLevelLabels[borderIndex].border.width, axis.multiLevelLabels[borderIndex].border.color || this.chart.themeStyle.axisLine, 1, '', path));\n borderElement.setAttribute('style', 'pointer-events: none');\n appendChildElement(this.chart.enableCanvas, this.labelElement, borderElement, this.chart.redraw, true, 'x', 'y', null, direction);\n };\n /**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\n MultiLevelLabel.prototype.triggerMultiLabelRender = function (axis, text, textStyle, textAlignment, customAttributes) {\n var argsData = {\n cancel: false, name: axisMultiLabelRender, axis: axis,\n text: text, textStyle: textStyle, alignment: textAlignment, customAttributes: customAttributes\n };\n this.chart.trigger(axisMultiLabelRender, argsData);\n return argsData;\n };\n /**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\n MultiLevelLabel.prototype.MultiLevelLabelClick = function (labelIndex, axisIndex) {\n var level = parseInt(labelIndex.substr(0, 1), 10);\n var textElement = parseInt(labelIndex.substr(7), 10);\n var chart = this.chart;\n var axis = chart.axisCollections[axisIndex];\n var categories = axis.multiLevelLabels[level].categories;\n var text = categories[textElement].text;\n var start = categories[textElement].start;\n var end = categories[textElement].end;\n var customAttributes = categories[textElement].customAttributes;\n var multilevelclickArgs = {\n axis: axis, level: level, text: text, customAttributes: customAttributes,\n start: start, end: end, name: multiLevelLabelClick, cancel: false\n };\n this.chart.trigger(multiLevelLabelClick, multilevelclickArgs);\n return multilevelclickArgs;\n };\n /**\n * To click the multi level label\n *\n * @returns {void}\n * @private\n */\n MultiLevelLabel.prototype.click = function (event) {\n var targetId = event.target.id;\n var multiLevelID = '_Axis_MultiLevelLabel_Level_';\n var textId;\n var elementId;\n var axisIndex;\n if (this.chart.enableCanvas) {\n for (var i = 0; i < this.multiLevelLabelRectXRegion.length; i++) {\n if (withInBounds(event['x'], event['y'], this.multiLevelLabelRectXRegion[i], this.multiLevelLabelRectXRegion[i].width, this.multiLevelLabelRectXRegion[i].height)) {\n targetId = this.xLabelCollection[i].id;\n }\n }\n }\n if (targetId.indexOf(multiLevelID) > -1) {\n textId = targetId.split(multiLevelID)[1];\n elementId = targetId.split(multiLevelID)[0];\n axisIndex = parseInt(elementId.charAt(elementId.length - 1), 10);\n this.MultiLevelLabelClick(textId, axisIndex);\n }\n };\n /**\n * To get the module name for `MultiLevelLabel`.\n *\n * @private\n */\n MultiLevelLabel.prototype.getModuleName = function () {\n return 'MultiLevelLabel';\n };\n /**\n * To destroy the `MultiLevelLabel` module.\n *\n * @private\n */\n MultiLevelLabel.prototype.destroy = function () {\n // destroy peform here\n };\n return MultiLevelLabel;\n}());\nexport { MultiLevelLabel };\n","import { ExportUtils } from '../../common/utils/export';\nimport { beforeExport } from '../../common/model/constants';\n/**\n * `ExportModule` module is used to print and export the rendered chart.\n */\nvar Export = /** @class */ (function () {\n /**\n * Constructor for export module.\n *\n * @private\n */\n function Export(chart) {\n this.chart = chart;\n }\n /**\n * Handles the export method for chart control.\n */\n Export.prototype.export = function (type, fileName, orientation, controls, width, height, isVertical, header, footer) {\n var exportChart = new ExportUtils(this.chart);\n controls = controls ? controls : [this.chart];\n var argsData = {\n cancel: false, name: beforeExport, width: width, height: height\n };\n this.chart.trigger(beforeExport, argsData);\n if (!argsData.cancel) {\n exportChart.export(type, fileName, orientation, controls, width = argsData.width, height = argsData.height, isVertical, header, footer);\n }\n };\n /**\n * To get data url for charts.\n */\n Export.prototype.getDataUrl = function (chart) {\n var exportUtil = new ExportUtils(chart);\n return exportUtil.getDataUrl(chart);\n };\n /**\n * Get module name.\n */\n Export.prototype.getModuleName = function () {\n // Returns the module name\n return 'Export';\n };\n /**\n * To destroy the chart.\n *\n * @returns {void}\n * @private\n */\n Export.prototype.destroy = function () {\n // Destroy method performed here\n };\n return Export;\n}());\nexport { Export };\n","import { Animation, Browser, createElement } from '@syncfusion/ej2-base';\nimport { textElement, getValueXByPoint, stopTimer, getValueYByPoint, ChartLocation, withInBounds, removeElement } from '../../common/utils/helper';\nimport { PathOption, Rect, TextOption, findDirection, measureText, SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * `Crosshair` module is used to render the crosshair for chart.\n */\nvar Crosshair = /** @class */ (function () {\n /**\n * Constructor for crosshair module.\n *\n * @private\n */\n function Crosshair(chart) {\n this.arrowLocation = new ChartLocation(0, 0);\n this.rx = 2;\n this.ry = 2;\n this.chart = chart;\n this.elementID = this.chart.element.id;\n this.svgRenderer = new SvgRenderer(this.chart.element.id);\n this.addEventListener();\n }\n /**\n * @hidden\n */\n Crosshair.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n this.chart.on(cancelEvent, this.mouseLeaveHandler, this);\n this.chart.on('tapHold', this.longPress, this);\n };\n Crosshair.prototype.mouseUpHandler = function () {\n if (this.chart.startMove) {\n this.removeCrosshair(2000);\n }\n };\n Crosshair.prototype.mouseLeaveHandler = function () {\n this.removeCrosshair(1000);\n };\n Crosshair.prototype.mouseMoveHandler = function (event) {\n var chart = this.chart;\n if (event.type === 'touchmove' && (Browser.isIos || Browser.isIos7) && chart.startMove && event.preventDefault) {\n event.preventDefault();\n }\n // Tooltip for chart series.\n if (!chart.disableTrackTooltip) {\n if (withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n if (chart.startMove || !chart.isTouch) {\n this.crosshair();\n }\n }\n else {\n this.removeCrosshair(1000);\n }\n }\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Crosshair.prototype.longPress = function () {\n var chart = this.chart;\n if (withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n this.crosshair();\n }\n return false;\n };\n /**\n * Renders the crosshair.\n *\n * @returns {void}\n */\n Crosshair.prototype.crosshair = function () {\n var chart = this.chart;\n var horizontalCross = '';\n var verticalCross = '';\n var options;\n var axisTooltipGroup = document.getElementById(this.elementID + '_crosshair_axis');\n var crosshair = chart.crosshair;\n var tooltipdiv = document.getElementById(this.elementID + '_tooltip');\n var chartRect = chart.chartAxisLayoutPanel.seriesClipRect;\n var crossGroup = chart.enableCanvas ? document.getElementById(this.elementID + '_Secondary_Element') :\n document.getElementById(this.elementID + '_UserInteraction');\n var crosshairsvg;\n var cross = document.getElementById(this.elementID + '_Crosshair');\n if (chart.enableCanvas) {\n if (!cross) {\n cross = createElement('div', {\n id: this.elementID + '_Crosshair', styles: 'position: absolute; pointer-events: none'\n });\n crossGroup.appendChild(cross);\n }\n }\n this.stopAnimation();\n if (chart.tooltip.enable && !withInBounds(chart.tooltipModule.valueX, chart.tooltipModule.valueY, chartRect)) {\n return null;\n }\n if (chart.stockChart && chart.stockChart.onPanning) {\n this.removeCrosshair(1000);\n return null;\n }\n this.valueX = chart.tooltip.enable ? chart.tooltipModule.valueX : chart.mouseX;\n this.valueY = chart.tooltip.enable ? chart.tooltipModule.valueY : chart.mouseY;\n if (!chart.enableCanvas) {\n crossGroup.setAttribute('opacity', '1');\n }\n if (crosshair.lineType === 'Both' || crosshair.lineType === 'Horizontal') {\n horizontalCross += 'M ' + chartRect.x + ' ' + this.valueY +\n ' L ' + (chartRect.x + chartRect.width) + ' ' + this.valueY;\n }\n if (crosshair.lineType === 'Both' || crosshair.lineType === 'Vertical') {\n verticalCross += 'M ' + this.valueX + ' ' + chartRect.y +\n ' L ' + this.valueX + ' ' + (chartRect.y + chartRect.height);\n }\n if (chart.enableCanvas) {\n if (!axisTooltipGroup) {\n axisTooltipGroup = this.svgRenderer.createGroup({ 'id': this.elementID + '_crosshair_axis' });\n }\n var elementID = chart.tooltip.enable ? chart.element.id + '_tooltip_svg' : chart.element.id + '_svg';\n crosshairsvg = this.svgRenderer.createSvg({\n id: elementID,\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n if (chart.tooltip.enable) {\n tooltipdiv = !tooltipdiv ? chart.tooltipModule.createElement() : tooltipdiv;\n tooltipdiv.appendChild(crosshairsvg);\n crossGroup.appendChild(tooltipdiv);\n }\n options = new PathOption(this.elementID + '_HorizontalLine', 'none', crosshair.line.width, crosshair.line.color || chart.themeStyle.crosshairLine, 1, crosshair.dashArray, horizontalCross);\n this.drawCrosshairLine(options, cross, chartRect.x, this.valueY, chartRect.width, 0, horizontalCross);\n options.d = verticalCross;\n options.id = this.elementID + '_VerticalLine';\n this.drawCrosshairLine(options, cross, this.valueX, chartRect.y, 0, chartRect.height, verticalCross);\n this.renderAxisTooltip(chart, chartRect, axisTooltipGroup);\n crosshairsvg.appendChild(axisTooltipGroup);\n if (!chart.tooltip.enable) {\n cross.appendChild(crosshairsvg);\n }\n }\n else {\n if (crossGroup.childNodes.length === 0) {\n axisTooltipGroup = chart.renderer.createGroup({ 'id': this.elementID + '_crosshair_axis' });\n options = new PathOption(this.elementID + '_HorizontalLine', 'none', crosshair.line.width, crosshair.line.color || chart.themeStyle.crosshairLine, 1, crosshair.dashArray, horizontalCross);\n this.renderCrosshairLine(options, crossGroup);\n options.d = verticalCross;\n options.id = this.elementID + '_VerticalLine';\n this.renderCrosshairLine(options, crossGroup);\n crossGroup.appendChild(axisTooltipGroup);\n this.renderAxisTooltip(chart, chartRect, crossGroup.lastChild);\n }\n else {\n document.getElementById(this.elementID + '_HorizontalLine').setAttribute('d', horizontalCross);\n document.getElementById(this.elementID + '_VerticalLine').setAttribute('d', verticalCross);\n this.renderAxisTooltip(chart, chartRect, crossGroup.lastChild);\n }\n }\n };\n Crosshair.prototype.renderCrosshairLine = function (options, crossGroup) {\n var htmlObject = this.chart.renderer.drawPath(options);\n crossGroup.appendChild(htmlObject);\n };\n Crosshair.prototype.drawCrosshairLine = function (options, crossGroup, left, top, width, height, direction) {\n if (!document.getElementById(options.id) && direction) {\n var line = createElement('div', {\n id: options.id\n });\n crossGroup.appendChild(line);\n }\n if (document.getElementById(options.id)) {\n var style = 'top:' + top.toString() + 'px;' +\n 'left:' + left.toString() + 'px;' +\n 'width:' + width + 'px;' +\n 'height:' + height + 'px;' +\n 'fill:' + options.stroke + ';' +\n 'border: 0.5px solid black;' +\n 'position: absolute';\n var crosshairline = document.getElementById(options.id);\n var crosshairtooltip = document.getElementById(this.elementID + '_crosshair_axis');\n crosshairline.setAttribute('style', style);\n crossGroup.style.opacity = '1';\n if (crosshairtooltip) {\n crosshairtooltip.style.opacity = '1';\n }\n }\n };\n Crosshair.prototype.renderAxisTooltip = function (chart, chartRect, axisGroup) {\n var axis;\n var text;\n var rect;\n var pathElement;\n var textElem;\n var options;\n var padding = 5;\n var direction;\n var axisRect;\n for (var k = 0, length_1 = chart.axisCollections.length; k < length_1; k++) {\n axis = chart.axisCollections[k];\n axisRect = !axis.placeNextToAxisLine ? axis.rect : axis.updatedRect;\n if (axis.crosshairTooltip.enable) {\n if ((this.valueX <= (axisRect.x + axisRect.width) && axisRect.x <= this.valueX) ||\n (this.valueY <= (axisRect.y + axisRect.height) && axisRect.y <= this.valueY)) {\n pathElement = document.getElementById(this.elementID + '_axis_tooltip_' + k);\n textElem = document.getElementById(this.elementID + '_axis_tooltip_text_' + k);\n text = this.getAxisText(axis);\n if (!text) {\n continue;\n }\n rect = this.tooltipLocation(text, axis, chartRect, axisRect);\n if (pathElement === null) {\n if (chart.enableCanvas) {\n pathElement = this.svgRenderer.drawPath({\n 'id': this.elementID + '_axis_tooltip_' + k,\n 'fill': axis.crosshairTooltip.fill || chart.themeStyle.crosshairFill\n });\n }\n else {\n pathElement = chart.renderer.drawPath({\n 'id': this.elementID + '_axis_tooltip_' + k,\n 'fill': axis.crosshairTooltip.fill || chart.themeStyle.crosshairFill\n }, null);\n }\n axisGroup.appendChild(pathElement);\n options = new TextOption(this.elementID + '_axis_tooltip_text_' + k, 0, 0, 'start', text);\n var render = chart.enableCanvas ? this.svgRenderer : chart.renderer;\n textElem = textElement(render, options, axis.crosshairTooltip.textStyle, axis.crosshairTooltip.textStyle.color || chart.themeStyle.crosshairLabel, axisGroup, null, null, null, null, null, null, null, null, chart.enableCanvas);\n }\n direction = findDirection(this.rx, this.ry, rect, this.arrowLocation, 10, this.isTop, this.isBottom, this.isLeft, this.valueX, this.valueY);\n pathElement.setAttribute('d', direction);\n textElem.textContent = text;\n textElem.setAttribute('x', (rect.x + padding).toString());\n textElem.setAttribute('y', (rect.y + padding + 3 * this.elementSize.height / 4).toString());\n }\n else {\n removeElement(this.elementID + '_axis_tooltip_' + k);\n removeElement(this.elementID + '_axis_tooltip_text_' + k);\n }\n }\n }\n };\n Crosshair.prototype.getAxisText = function (axis) {\n var value;\n this.isBottom = false;\n this.isTop = false;\n this.isLeft = false;\n this.isRight = false;\n var labelValue = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks')\n ? 0.5 : 0;\n if (axis.orientation === 'Horizontal') {\n value = getValueXByPoint(Math.abs(this.valueX - axis.rect.x), axis.rect.width, axis) + labelValue;\n this.isBottom = !axis.opposedPosition;\n this.isTop = axis.opposedPosition;\n }\n else {\n value = getValueYByPoint(Math.abs(this.valueY - axis.rect.y), axis.rect.height, axis) + labelValue;\n this.isRight = axis.opposedPosition;\n this.isLeft = !axis.opposedPosition;\n }\n if (axis.valueType === 'DateTime') {\n return axis.format(new Date(value));\n }\n else if (axis.valueType === 'Category') {\n return axis.labels[Math.floor(value)];\n }\n else if (axis.valueType === 'DateTimeCategory') {\n return this.chart.dateTimeCategoryModule.getIndexedAxisLabel(axis.labels[Math.floor(value)], axis.format);\n }\n else if (axis.valueType === 'Logarithmic') {\n return value = axis.format(Math.pow(axis.logBase, value));\n }\n else {\n var customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n return customLabelFormat ? axis.labelFormat.replace('{value}', axis.format(value)) : axis.format(value);\n }\n };\n Crosshair.prototype.tooltipLocation = function (text, axis, bounds, axisRect) {\n var padding = 5;\n var arrowPadding = 10;\n var tooltipRect;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n var islabelInside = axis.labelPosition === 'Inside';\n var scrollBarHeight = axis.scrollbarSettings.enable || (axis.zoomingScrollBar && axis.zoomingScrollBar.svgObject)\n ? axis.scrollBarHeight : 0;\n this.elementSize = measureText(text, axis.crosshairTooltip.textStyle);\n if (axis.orientation === 'Horizontal') {\n var yLocation = islabelInside ? axisRect.y - this.elementSize.height - (padding * 2 + arrowPadding) :\n axisRect.y + scrollBarHeight;\n var height = islabelInside ? axisRect.y - this.elementSize.height - arrowPadding : axisRect.y + arrowPadding;\n this.arrowLocation = new ChartLocation(this.valueX, yLocation);\n tooltipRect = new Rect((this.valueX - (this.elementSize.width / 2) - padding), height + (!islabelInside ? scrollBarHeight : 0), this.elementSize.width + padding * 2, this.elementSize.height + padding * 2);\n if (axis.opposedPosition) {\n tooltipRect.y = islabelInside ? axisRect.y : axisRect.y -\n (this.elementSize.height + padding * 2 + arrowPadding) - scrollBarHeight;\n }\n if (tooltipRect.x < boundsX) {\n tooltipRect.x = boundsX;\n }\n if (tooltipRect.x + tooltipRect.width > boundsX + bounds.width) {\n tooltipRect.x -= ((tooltipRect.x + tooltipRect.width) - (boundsX + bounds.width));\n }\n if (this.arrowLocation.x + arrowPadding / 2 > tooltipRect.x + tooltipRect.width - this.rx) {\n this.arrowLocation.x = tooltipRect.x + tooltipRect.width - this.rx - arrowPadding / 2;\n }\n if (this.arrowLocation.x - arrowPadding / 2 < tooltipRect.x + this.rx) {\n this.arrowLocation.x = tooltipRect.x + this.rx + arrowPadding / 2;\n }\n }\n else {\n scrollBarHeight = scrollBarHeight * (axis.opposedPosition ? 1 : -1);\n this.arrowLocation = new ChartLocation(axisRect.x, this.valueY);\n var width = islabelInside ? axisRect.x - scrollBarHeight :\n axisRect.x - (this.elementSize.width) - (padding * 2 + arrowPadding);\n tooltipRect = new Rect(width + scrollBarHeight, this.valueY - (this.elementSize.height / 2) - padding, this.elementSize.width + (padding * 2), this.elementSize.height + padding * 2);\n if (axis.opposedPosition) {\n tooltipRect.x = islabelInside ? axisRect.x - this.elementSize.width - arrowPadding :\n axisRect.x + arrowPadding + scrollBarHeight;\n if ((tooltipRect.x + tooltipRect.width) > this.chart.availableSize.width) {\n this.arrowLocation.x -= ((tooltipRect.x + tooltipRect.width) - this.chart.availableSize.width);\n tooltipRect.x -= ((tooltipRect.x + tooltipRect.width) - this.chart.availableSize.width);\n }\n }\n else {\n if (tooltipRect.x < 0) {\n this.arrowLocation.x -= tooltipRect.x;\n tooltipRect.x = 0;\n }\n }\n if (tooltipRect.y < boundsY) {\n tooltipRect.y = boundsY;\n }\n if (tooltipRect.y + tooltipRect.height >= boundsY + bounds.height) {\n tooltipRect.y -= ((tooltipRect.y + tooltipRect.height) - (boundsY + bounds.height));\n }\n if (this.arrowLocation.y + arrowPadding / 2 > tooltipRect.y + tooltipRect.height - this.ry) {\n this.arrowLocation.y = tooltipRect.y + tooltipRect.height - this.ry - arrowPadding / 2;\n }\n if (this.arrowLocation.y - arrowPadding / 2 < tooltipRect.y + this.ry) {\n this.arrowLocation.y = tooltipRect.y + this.ry + arrowPadding / 2;\n }\n }\n return tooltipRect;\n };\n Crosshair.prototype.stopAnimation = function () {\n stopTimer(this.crosshairInterval);\n };\n Crosshair.prototype.progressAnimation = function () {\n stopTimer(this.crosshairInterval);\n };\n /**\n * Removes the crosshair on mouse leave.\n *\n * @returns {void}\n * @private\n */\n Crosshair.prototype.removeCrosshair = function (duration) {\n var chart = this.chart;\n var crosshair = chart.enableCanvas ? document.getElementById(this.elementID + '_Crosshair') :\n document.getElementById(this.elementID + '_UserInteraction');\n var crosshairtooltip = chart.enableCanvas ? document.getElementById(this.elementID + '_crosshair_axis') : null;\n this.stopAnimation();\n if (crosshair && crosshair.getAttribute('opacity') !== '0') {\n this.crosshairInterval = +setTimeout(function () {\n new Animation({}).animate(crosshair, {\n duration: 200,\n progress: function (args) {\n // crosshair.removeAttribute('e-animate');\n crosshair.style.animation = '';\n if (!chart.enableCanvas) {\n crosshair.setAttribute('opacity', (1 - (args.timeStamp / args.duration)).toString());\n }\n else {\n crosshair.style.opacity = (1 - (args.timeStamp / args.duration)).toString();\n crosshairtooltip.style.opacity = (1 - (args.timeStamp / args.duration)).toString();\n }\n },\n end: function () {\n if (chart.enableCanvas) {\n crosshair.style.opacity = '0';\n crosshairtooltip.style.opacity = '0';\n }\n else {\n crosshair.setAttribute('opacity', '0');\n }\n chart.startMove = false;\n if (chart.tooltipModule) {\n chart.tooltipModule.valueX = null;\n chart.tooltipModule.valueY = null;\n }\n }\n });\n }, duration);\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} module name\n */\n Crosshair.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Crosshair';\n };\n /**\n * To destroy the crosshair.\n *\n * @returns {void}\n * @private\n */\n Crosshair.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Crosshair;\n}());\nexport { Crosshair };\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\nimport { withInRange, getPoint, drawSymbol } from '../../common/utils/helper';\nimport { Size, PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { markerAnimate, appendChildElement, animateRedrawElement } from '../../common/utils/helper';\nimport { pointRender } from '../../common/model/constants';\n/**\n * `BubbleSeries` module is used to render the bubble series.\n */\nvar BubbleSeries = /** @class */ (function () {\n function BubbleSeries() {\n }\n /**\n * Render the Bubble series.\n *\n * @returns {void}\n * @private\n */\n BubbleSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var marker = series.marker;\n var visiblePoints = series.points;\n var shapeOption;\n var argsData;\n //let bubbleMode: RadiusMode = bubbleOptions.radiusMode;\n var segmentRadius;\n var radius;\n var value = Math.max(series.chart.initialClipRect.height, series.chart.initialClipRect.width);\n var percentChange = value / 100;\n var maxRadius = series.maxRadius * percentChange;\n var minRadius = series.minRadius * percentChange;\n var maximumSize = null;\n var maxValue = null;\n var element;\n var startLocation;\n var redraw = series.chart.redraw;\n if ((series.maxRadius === null || series.minRadius === null)) {\n for (var _i = 0, _a = series.chart.visibleSeries; _i < _a.length; _i++) {\n var value_1 = _a[_i];\n if (value_1.type === 'Bubble' && value_1.visible === true && (value_1.maxRadius === null || value_1.minRadius === null)) {\n maximumSize = value_1.sizeMax > maximumSize ? value_1.sizeMax : maximumSize;\n }\n }\n maxValue = (value / 5) / 2;\n minRadius = maxRadius = 1;\n radius = maxValue * maxRadius;\n }\n else {\n maximumSize = series.sizeMax;\n radius = maxRadius - minRadius;\n }\n for (var _b = 0, visiblePoints_1 = visiblePoints; _b < visiblePoints_1.length; _b++) {\n var bubblePoint = visiblePoints_1[_b];\n bubblePoint.symbolLocations = [];\n bubblePoint.regions = [];\n if (bubblePoint.visible &&\n withInRange(visiblePoints[bubblePoint.index - 1], bubblePoint, visiblePoints[bubblePoint.index + 1], series)) {\n if ((series.maxRadius === null || series.minRadius === null)) {\n segmentRadius = radius * Math.abs(+bubblePoint.size / maximumSize);\n }\n else {\n segmentRadius = minRadius + radius * Math.abs(+bubblePoint.size / maximumSize);\n }\n segmentRadius = segmentRadius || minRadius;\n argsData = {\n cancel: false, name: pointRender, series: series, point: bubblePoint,\n fill: series.setPointColor(bubblePoint, series.interior),\n border: series.setBorderColor(bubblePoint, { width: series.border.width, color: series.border.color }),\n height: 2 * segmentRadius, width: 2 * segmentRadius\n };\n series.chart.trigger(pointRender, argsData);\n if (!argsData.cancel) {\n bubblePoint.symbolLocations.push(getPoint(bubblePoint.xValue, bubblePoint.yValue, xAxis, yAxis, isInverted));\n bubblePoint.color = argsData.fill;\n shapeOption = new PathOption(series.chart.element.id + '_Series_' + series.index + '_Point_' + bubblePoint.index, argsData.fill, argsData.border.width, argsData.border.color, series.opacity, null);\n element = drawSymbol(bubblePoint.symbolLocations[0], 'Circle', new Size(argsData.width, argsData.height), marker.imageUrl, shapeOption, bubblePoint.x.toString() + ':' + bubblePoint.yValue.toString(), series.chart.svgRenderer, series.clipRect);\n appendChildElement(false, series.seriesElement, element, redraw);\n bubblePoint.regions.push(new Rect(bubblePoint.symbolLocations[0].x - segmentRadius, bubblePoint.symbolLocations[0].y - segmentRadius, 2 * segmentRadius, 2 * segmentRadius));\n bubblePoint.marker = {\n border: argsData.border, fill: argsData.fill,\n height: argsData.height, visible: true,\n shape: 'Circle', width: argsData.width\n };\n startLocation = redraw ? bubblePoint.symbolLocations[0] : null;\n if (redraw) {\n animateRedrawElement(element, 300, startLocation, bubblePoint.symbolLocations[0], 'cx', 'cy');\n }\n }\n else {\n bubblePoint.marker = { visible: false };\n }\n }\n }\n };\n /**\n * To destroy the Bubble.\n *\n * @returns {void}\n * @private\n */\n BubbleSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n /**\n * Get module name.\n */\n BubbleSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'BubbleSeries';\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n BubbleSeries.prototype.doAnimation = function (series) {\n var duration = series.animation.duration;\n var delay = series.animation.delay;\n var rectElements = series.seriesElement.childNodes;\n var count = 1;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var bubblePoint = _a[_i];\n if (!bubblePoint.symbolLocations.length) {\n continue;\n }\n markerAnimate(rectElements[count], delay, duration, series, bubblePoint.index, bubblePoint.symbolLocations[0], false);\n count++;\n }\n };\n return BubbleSeries;\n}());\nexport { BubbleSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/**\n * AccumulationChart DataLabel module file\n */\nimport { extend, createElement, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Rect, PathOption, measureText, TextOption } from '@syncfusion/ej2-svg-base';\nimport { ChartLocation, degreeToLocation, isOverlap, stringToNumber, getAngle, appendChildElement } from '../../common/utils/helper';\nimport { textTrim, subtractThickness, Thickness, getElement } from '../../common/utils/helper';\nimport { removeElement, RectOption, textElement, showTooltip } from '../../common/utils/helper';\nimport { colorNameToHex, convertHexToColor, containsRect } from '../../common/utils/helper';\nimport { getSeriesFromIndex } from '../model/acc-base';\nimport { textRender } from '../../common/model/constants';\nimport { getFontStyle, createTemplate, measureElementRect, templateAnimate } from '../../common/utils/helper';\nimport { AccumulationBase } from './accumulation-base';\n/**\n * AccumulationDataLabel module used to render `dataLabel`.\n */\nvar AccumulationDataLabel = /** @class */ (function (_super) {\n __extends(AccumulationDataLabel, _super);\n function AccumulationDataLabel(accumulation) {\n var _this = _super.call(this, accumulation) || this;\n _this.rightSideRenderingPoints = [];\n _this.leftSideRenderingPoints = [];\n _this.id = accumulation.element.id + '_datalabel_Series_';\n if (accumulation.title) {\n var titleSize = measureText(accumulation.title, accumulation.titleStyle);\n _this.titleRect = new Rect(accumulation.availableSize.width / 2 - titleSize.width / 2, accumulation.margin.top, titleSize.width, titleSize.height);\n }\n return _this;\n }\n /**\n * Method to get datalabel text location.\n *\n * @private\n */\n AccumulationDataLabel.prototype.getDataLabelPosition = function (point, dataLabel, textSize, points) {\n var radius = this.isCircular() ? (!this.isVariousRadius() ? this.accumulation.pieSeriesModule.labelRadius :\n this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], point)) :\n this.getLabelDistance(point, dataLabel);\n //let radius: number = this.isCircular() ? this.labelRadius : this.getLabelDistance(point, dataLabel);\n this.getLabelRegion(point, dataLabel.position, textSize, radius, this.marginValue);\n point.labelAngle = point.midAngle;\n point.labelPosition = dataLabel.position;\n if (this.accumulation.enableSmartLabels) {\n this.getSmartLabel(point, dataLabel, textSize, points);\n }\n };\n /**\n * Method to get datalabel bound.\n */\n AccumulationDataLabel.prototype.getLabelRegion = function (point, position, textSize, labelRadius, margin, endAngle) {\n if (endAngle === void 0) { endAngle = 0; }\n var labelAngle = endAngle || point.midAngle;\n var space = 10;\n var location = degreeToLocation(labelAngle, labelRadius, this.isCircular() ? this.center :\n this.getLabelLocation(point, position));\n location.y = (position === 'Inside') ? (location.y - textSize.height / 2) : location.y;\n location.x = (position === 'Inside') ? (location.x - textSize.width / 2) : location.x;\n point.labelRegion = new Rect(location.x, location.y, textSize.width + (margin * 2), textSize.height + (margin * 2));\n if (position === 'Outside') {\n point.labelRegion.y -= point.labelRegion.height / 2;\n if (labelAngle >= 90 && labelAngle <= 270) {\n point.labelRegion.x -= (point.labelRegion.width + space);\n }\n else {\n point.labelRegion.x += space;\n }\n }\n };\n /**\n * Method to get datalabel smart position.\n */\n AccumulationDataLabel.prototype.getSmartLabel = function (point, dataLabel, textSize, points) {\n var circular = this.isCircular();\n var labelRadius = circular ? this.radius : this.getLabelDistance(point, dataLabel);\n var connectorLength = circular ? (dataLabel.connectorStyle.length || '4%') :\n '0px';\n labelRadius += stringToNumber(connectorLength, labelRadius);\n var previousPoint = this.findPreviousPoint(points, point.index, point.labelPosition);\n if (dataLabel.position === 'Inside') {\n if (previousPoint && previousPoint.labelRegion && (isOverlap(point.labelRegion, previousPoint.labelRegion)\n || this.isOverlapping(point, points)) || !circular && !containsRect(point.region, point.labelRegion)) {\n point.labelPosition = 'Outside';\n if (!circular) {\n labelRadius = this.getLabelDistance(point, dataLabel);\n }\n this.getLabelRegion(point, point.labelPosition, textSize, labelRadius, this.marginValue);\n previousPoint = this.findPreviousPoint(points, point.index, point.labelPosition);\n if (previousPoint && (isOverlap(point.labelRegion, previousPoint.labelRegion) ||\n this.isConnectorLineOverlapping(point, previousPoint))) {\n this.setOuterSmartLabel(previousPoint, point, dataLabel.border.width, labelRadius, textSize, this.marginValue);\n }\n }\n }\n else {\n if (previousPoint && previousPoint.labelRegion && (isOverlap(point.labelRegion, previousPoint.labelRegion)\n || this.isOverlapping(point, points) || this.isConnectorLineOverlapping(point, previousPoint))) {\n this.setOuterSmartLabel(previousPoint, point, dataLabel.border.width, labelRadius, textSize, this.marginValue);\n }\n }\n if (this.isOverlapping(point, points) && (this.accumulation.type === 'Pyramid' || this.accumulation.type === 'Funnel')) {\n var position = 'OutsideLeft';\n var space = 10;\n var labelAngle = point.midAngle || 0;\n var labelRadius_1 = circular ? this.radius : this.getLabelDistance(point, dataLabel);\n var location_1 = degreeToLocation(labelAngle, -labelRadius_1, this.isCircular() ? this.center :\n this.getLabelLocation(point, position));\n point.labelRegion = new Rect(location_1.x, location_1.y, textSize.width + (this.marginValue * 2), textSize.height + (this.marginValue * 2));\n point.labelRegion.y -= point.labelRegion.height / 2;\n point.labelRegion.x = point.labelRegion.x - space - point.labelRegion.width;\n if (previousPoint && previousPoint.labelRegion && (isOverlap(point.labelRegion, previousPoint.labelRegion)\n || this.isOverlapping(point, points) || this.isConnectorLineOverlapping(point, previousPoint))) {\n this.setOuterSmartLabel(previousPoint, point, dataLabel.border.width, labelRadius_1, textSize, this.marginValue);\n }\n }\n };\n /**\n * To find trimmed datalabel tooltip needed.\n *\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.move = function (e, x, y, isTouch) {\n var _this = this;\n if (e.target.textContent.indexOf('...') > -1) {\n var targetId = e.target.id.split(this.id);\n if (targetId.length === 2) {\n var seriesIndex = parseInt(targetId[1].split('_text_')[0], 10);\n var pointIndex = parseInt(targetId[1].split('_text_')[1], 10);\n if (!isNaN(seriesIndex) && !isNaN(pointIndex)) {\n if (isTouch) {\n removeElement(this.accumulation.element.id + '_EJ2_Datalabel_Tooltip');\n }\n var point = getSeriesFromIndex(seriesIndex, (this.accumulation).visibleSeries).points[pointIndex];\n showTooltip(point.text || point.y.toString(), x, y, this.areaRect.width, this.accumulation.element.id + '_EJ2_Datalabel_Tooltip', getElement(this.accumulation.element.id + '_Secondary_Element'));\n }\n }\n }\n else {\n removeElement(this.accumulation.element.id + '_EJ2_Datalabel_Tooltip');\n }\n if (isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = +setTimeout(function () { removeElement(_this.accumulation.element.id + '_EJ2_Datalabel_Tooltip'); }, 1000);\n }\n };\n /**\n * To find previous valid label point\n *\n * @returns {AccPoints} Find the previous value of accumulation point.\n */\n AccumulationDataLabel.prototype.findPreviousPoint = function (points, index, position) {\n var point = points[0];\n for (var i = index - 1; i >= 0; i--) {\n point = points[i];\n if (point.visible && point.labelVisible && point.labelRegion && point.labelPosition === position) {\n return point;\n }\n }\n return null;\n };\n /**\n * To find current point datalabel is overlapping with other points\n *\n * @returns {boolean} It returns boolean value of overlapping.\n */\n AccumulationDataLabel.prototype.isOverlapping = function (currentPoint, points) {\n for (var i = currentPoint.index - 1; i >= 0; i--) {\n if (points[i].visible && points[i].labelVisible && points[i].labelRegion && currentPoint.labelRegion &&\n currentPoint.labelVisible && isOverlap(currentPoint.labelRegion, points[i].labelRegion)) {\n return true;\n }\n }\n return false;\n };\n /**\n * To get text trimmed while exceeds the accumulation chart area.\n */\n AccumulationDataLabel.prototype.textTrimming = function (point, rect, font, position) {\n if (isOverlap(point.labelRegion, rect)) {\n var size = point.labelRegion.width;\n if (position === 'Right') {\n size = rect.x - point.labelRegion.x;\n }\n else if (position === 'Left') {\n size = point.labelRegion.x - (rect.x + rect.width);\n if (size < 0) {\n size += point.labelRegion.width;\n point.labelRegion.x = rect.x + rect.width;\n }\n }\n else if (position === 'InsideRight') {\n size = (rect.x + rect.width) - point.labelRegion.x;\n }\n else if (position === 'InsideLeft') {\n size = (point.labelRegion.x + point.labelRegion.width) - rect.x;\n if (size < point.labelRegion.width) {\n point.labelRegion.x = rect.x;\n }\n }\n else {\n this.setPointVisibileFalse(point);\n }\n if (point.labelVisible && point.labelRegion) {\n if (size < point.labelRegion.width) {\n point.label = textTrim(size - (this.marginValue * 2), point.label, font);\n point.labelRegion.width = size;\n }\n if (point.label.length === 3 && point.label.indexOf('...') > -1) {\n this.setPointVisibileFalse(point);\n }\n }\n }\n };\n /**\n * To set point label visible and region to disable.\n */\n AccumulationDataLabel.prototype.setPointVisibileFalse = function (point) {\n point.labelVisible = false;\n point.labelRegion = null;\n };\n /**\n * To set point label visible to enable.\n */\n AccumulationDataLabel.prototype.setPointVisibleTrue = function (point) {\n point.labelVisible = true;\n };\n /**\n * To set datalabel angle position for outside labels\n */\n AccumulationDataLabel.prototype.setOuterSmartLabel = function (previousPoint, point, border, labelRadius, textsize, margin) {\n if (!this.isCircular()) {\n this.setSmartLabelForSegments(point, previousPoint);\n }\n else {\n var labelAngle = this.getOverlappedAngle(previousPoint.labelRegion, point.labelRegion, point.midAngle, border * 2);\n this.getLabelRegion(point, 'Outside', textsize, labelRadius, margin, labelAngle);\n if (labelAngle > point.endAngle) {\n labelAngle = point.midAngle;\n //this.setPointVisibileFalse(point);\n }\n point.labelAngle = labelAngle;\n while (point.labelVisible && (isOverlap(previousPoint.labelRegion, point.labelRegion) || labelAngle <= previousPoint.labelAngle\n || this.isConnectorLineOverlapping(point, previousPoint))) {\n if (labelAngle > point.endAngle) {\n //this.setPointVisibileFalse(point);\n break;\n }\n point.labelAngle = labelAngle;\n this.getLabelRegion(point, 'Outside', textsize, labelRadius, margin, labelAngle);\n labelAngle += 0.1;\n }\n }\n };\n /**\n * Sets smart label positions for funnel and pyramid series\n *\n * @returns {void} setSmartLabelForSegments.\n */\n AccumulationDataLabel.prototype.setSmartLabelForSegments = function (point, prevPoint) {\n var textRegion = point.labelRegion;\n //let overlapWidth: number = prevPoint.labelRegion.x + prevPoint.labelRegion.width - textRegion.x;\n var overlapHeight = this.accumulation.type === 'Funnel' ?\n prevPoint.labelRegion.y - (textRegion.y + textRegion.height) :\n point.labelRegion.y - (prevPoint.labelRegion.y + prevPoint.labelRegion.height);\n if (overlapHeight < 0) {\n point.labelRegion.y += this.accumulation.type === 'Funnel' ? overlapHeight : -overlapHeight;\n }\n };\n /**\n * To find connector line overlapping.\n *\n * @returns {boolean} To find connector line overlapping or not.\n */\n AccumulationDataLabel.prototype.isConnectorLineOverlapping = function (point, previous) {\n var position;\n if (!this.isCircular() && point.labelRegion.x < point.region.x) {\n position = 'outsideLeft';\n }\n var start = this.getLabelLocation(point, position);\n var end = new ChartLocation(0, 0);\n this.getEdgeOfLabel(point.labelRegion, point.labelAngle, end, 0, point);\n var previousstart = this.getLabelLocation(previous);\n var previousend = new ChartLocation(0, 0);\n this.getEdgeOfLabel(previous.labelRegion, previous.labelAngle, previousend, 0, point);\n return this.isLineRectangleIntersect(start, end, point.labelRegion) ||\n this.isLineRectangleIntersect(start, end, previous.labelRegion) ||\n this.isLineRectangleIntersect(previousstart, previousend, point.labelRegion);\n };\n /**\n * To find two rectangle intersect\n *\n * @returns {boolean} To find line rectangle intersect value.\n */\n AccumulationDataLabel.prototype.isLineRectangleIntersect = function (line1, line2, rect) {\n var rectPoints = [\n new ChartLocation(Math.round(rect.x), Math.round(rect.y)),\n new ChartLocation(Math.round((rect.x + rect.width)), Math.round(rect.y)),\n new ChartLocation(Math.round((rect.x + rect.width)), Math.round((rect.y + rect.height))),\n new ChartLocation(Math.round(rect.x), Math.round((rect.y + rect.height)))\n ];\n line1.x = Math.round(line1.x);\n line1.y = Math.round(line1.y);\n line2.x = Math.round(line2.x);\n line2.y = Math.round(line2.y);\n for (var i = 0; i < rectPoints.length; i++) {\n if (this.isLinesIntersect(line1, line2, rectPoints[i], rectPoints[(i + 1) % rectPoints.length])) {\n return true;\n }\n }\n return false;\n };\n /**\n * To find two line intersect\n *\n * @returns {boolean} To find line intersect or not.\n */\n AccumulationDataLabel.prototype.isLinesIntersect = function (point1, point2, point11, point12) {\n var a1 = point2.y - point1.y;\n var b1 = point1.x - point2.x;\n var c1 = a1 * point1.x + b1 * point1.y;\n var a2 = point12.y - point11.y;\n var b2 = point11.x - point12.x;\n var c2 = a2 * point11.x + b2 * point11.y;\n var delta = a1 * b2 - a2 * b1;\n if (delta !== 0) {\n var x = (b2 * c1 - b1 * c2) / delta;\n var y = (a1 * c2 - a2 * c1) / delta;\n var lies = Math.min(point1.x, point2.x) <= x && x <= Math.max(point1.x, point2.x);\n lies = lies && Math.min(point1.y, point2.y) <= y && y <= Math.max(point1.y, point2.y);\n lies = lies && Math.min(point11.x, point12.x) <= x && x <= Math.max(point11.x, point12.x);\n lies = lies && Math.min(point11.y, point12.y) <= y && y <= Math.max(point11.y, point12.y);\n return lies;\n }\n return false;\n };\n /**\n * To get two rectangle overlapping angles.\n *\n * @returns {number} Get overlapped angle.\n */\n AccumulationDataLabel.prototype.getOverlappedAngle = function (first, second, angle, padding) {\n var x = first.x;\n if (angle >= 90 && angle <= 270) {\n second.y = first.y - (padding + second.height / 2);\n x = first.x + first.width;\n }\n else {\n second.y = first.y + first.height + padding;\n }\n return getAngle(this.center, new ChartLocation(x, second.y));\n };\n /**\n * To get connector line path\n *\n * @returns {string} Get connector line path.\n */\n AccumulationDataLabel.prototype.getConnectorPath = function (label, point, dataLabel, end) {\n if (end === void 0) { end = 0; }\n var connector = dataLabel.connectorStyle;\n var labelRadius = this.isCircular() ? (!this.isVariousRadius() ? this.labelRadius :\n this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], point)) :\n this.getLabelDistance(point, dataLabel);\n //let labelRadius: number = this.isCircular() ? this.labelRadius : this.getLabelDistance(point, dataLabel);\n var start = this.getConnectorStartPoint(point, connector);\n var labelAngle = this.accumulation.enableSmartLabels ? point.midAngle : end || point.midAngle;\n var middle = new ChartLocation(0, 0);\n var endPoint = this.getEdgeOfLabel(label, labelAngle, middle, connector.width, point);\n if (connector.type === 'Curve') {\n if (this.isCircular()) {\n var r = labelRadius - (this.isVariousRadius() ? stringToNumber(point.sliceRadius, this.accumulation.pieSeriesModule.seriesRadius) :\n this.radius);\n //let r: number = labelRadius - this.radius;\n if (point.isLabelUpdated) {\n middle = this.getPerpendicularDistance(start, point);\n }\n else {\n middle = degreeToLocation(labelAngle, labelRadius - (r / 2), this.center);\n if (point.labelPosition === 'Outside' && dataLabel.position === 'Inside') {\n middle = degreeToLocation(labelAngle, labelRadius - r * 1.25, this.center);\n }\n }\n return 'M ' + start.x + ' ' + start.y + ' Q ' + middle.x + ' ' + middle.y + ' ' + endPoint.x + ' ' + endPoint.y;\n }\n else {\n return this.getPolyLinePath(start, endPoint);\n }\n }\n else {\n return 'M ' + start.x + ' ' + start.y + ' L ' + middle.x + ' ' + middle.y + ' L ' + endPoint.x + ' ' + endPoint.y;\n }\n };\n /**\n * Finds the curved path for funnel/pyramid data label connectors\n *\n * @returns {string} Get poly line path.\n */\n AccumulationDataLabel.prototype.getPolyLinePath = function (start, end) {\n var controlPoints = [start, end];\n if (start.y === end.y) {\n return 'M ' + start.x + ' ' + start.y + ' L ' + end.x + ' ' + end.y;\n }\n var path = 'M';\n for (var i = 0; i <= 16; i++) {\n var t = i / 16;\n var points = this.getBezierPoint(t, controlPoints, 0, 2);\n path += points.x + ',' + points.y;\n if (i !== 16) {\n path += ' L';\n }\n }\n return path;\n };\n /**\n * Finds the bezier point for funnel/pyramid data label connectors\n *\n * @returns {ChartLocation} Get bazier point.\n */\n AccumulationDataLabel.prototype.getBezierPoint = function (t, controlPoints, index, count) {\n if (count === 1) {\n return controlPoints[index];\n }\n var p0 = this.getBezierPoint(t, controlPoints, index, count - 1);\n var p1 = this.getBezierPoint(t, controlPoints, index + 1, count - 1);\n var x = (p0.x) ? p0.x : p0.x;\n var y = (p0.y) ? p0.y : p0.y;\n var x1 = (p1.x) ? p1.x : p1.x;\n var y1 = (p1.y) ? p1.y : p1.y;\n var x2 = (1 - t) * x + t * x1;\n var y2 = (1 - t) * y + t * y1;\n if (p0.x) {\n return { x: x2, y: y2 };\n }\n else {\n return { x: x2, y: y2 };\n }\n };\n /**\n * To get label edges based on the center and label rect position.\n *\n * @returns {ChartLocation} Get label edge value.\n */\n AccumulationDataLabel.prototype.getEdgeOfLabel = function (labelshape, angle, middle, border, point) {\n if (border === void 0) { border = 1; }\n var edge = new ChartLocation(labelshape.x, labelshape.y);\n if (angle >= 90 && angle <= 270) {\n edge.x += labelshape.width + border / 2;\n edge.y += labelshape.height / 2;\n middle.x = edge.x + 10;\n middle.y = edge.y;\n }\n else if (point && point.region && point.region.x > point.labelRegion.x) {\n edge.x += border * 2 + labelshape.width;\n edge.y += labelshape.height / 2;\n middle.x = edge.x + 10;\n middle.y = edge.y;\n }\n else {\n edge.x -= border / 2;\n edge.y += labelshape.height / 2;\n middle.x = edge.x - 10;\n middle.y = edge.y;\n }\n return edge;\n };\n /**\n * Finds the distance between the label position and the edge/center of the funnel/pyramid\n *\n * @returns {number} Get label distance.\n */\n AccumulationDataLabel.prototype.getLabelDistance = function (point, dataLabel) {\n if (point.labelPosition && dataLabel.position !== point.labelPosition || dataLabel.connectorStyle.length) {\n var length_1 = stringToNumber(dataLabel.connectorStyle.length || '70px', this.accumulation.initialClipRect.width);\n if (length_1 < this.accumulation.initialClipRect.width) {\n return length_1;\n }\n }\n var position = point.labelPosition || dataLabel.position;\n var series = this.accumulation.visibleSeries[0];\n var extraSpace = (this.accumulation.initialClipRect.width - series.triangleSize.width) / 2;\n var labelLocation;\n switch (position) {\n case 'Inside':\n return 0;\n case 'Outside':\n labelLocation = point.symbolLocation.x + point.labelOffset.x;\n return this.accumulation.initialClipRect.width - labelLocation - extraSpace;\n }\n };\n /**\n * Finds the label position / beginning of the connector(ouside funnel labels)\n *\n * @returns {ChartLocation} Get label location.\n */\n AccumulationDataLabel.prototype.getLabelLocation = function (point, position) {\n if (position === void 0) { position = 'Outside'; }\n if (this.accumulation.type !== 'Pie') {\n position = position === 'OutsideLeft' ? 'OutsideLeft' : point.labelPosition || position;\n var location_2 = {\n x: point.symbolLocation.x,\n y: point.symbolLocation.y - point.labelOffset.y\n };\n switch (position) {\n case 'Inside':\n location_2.y = point.region.y + point.region.height / 2;\n break;\n case 'Outside':\n location_2.x += point.labelOffset.x;\n break;\n case 'OutsideLeft':\n location_2.x -= point.labelOffset.x;\n }\n return location_2;\n }\n else {\n //return degreeToLocation(point.midAngle, this.radius, this.center);\n return degreeToLocation(point.midAngle, (this.isVariousRadius() ? stringToNumber(point.sliceRadius, this.accumulation.pieSeriesModule.seriesRadius) :\n this.radius), this.center);\n }\n };\n /**\n * Finds the beginning of connector line\n *\n * @returns {ChartLocation} Staring point of connector line.\n */\n AccumulationDataLabel.prototype.getConnectorStartPoint = function (point, connector) {\n // return this.isCircular() ? degreeToLocation(point.midAngle, this.radius - connector.width, this.center) :\n // this.getLabelLocation(point);\n var position;\n if (!this.isCircular() && point.region.x > point.labelRegion.x) {\n position = 'OutsideLeft';\n }\n return this.isCircular() ? degreeToLocation(point.midAngle, (this.isVariousRadius() ? stringToNumber(point.sliceRadius, this.accumulation.pieSeriesModule.seriesRadius) :\n this.radius) - connector.width, this.center) : this.getLabelLocation(point, position);\n };\n /**\n * To find area rect based on margin, available size.\n *\n * @private\n */\n AccumulationDataLabel.prototype.findAreaRect = function () {\n this.areaRect = new Rect(0, 0, this.accumulation.availableSize.width, this.accumulation.availableSize.height);\n var margin = this.accumulation.margin;\n subtractThickness(this.areaRect, new Thickness(margin.left, margin.right, margin.top, margin.bottom));\n };\n /**\n * To render the data labels from series points.\n */\n AccumulationDataLabel.prototype.renderDataLabel = function (point, dataLabel, parent, points, series, templateElement, redraw) {\n var id = this.accumulation.element.id + '_datalabel_Series_' + series + '_';\n var datalabelGroup = this.accumulation.renderer.createGroup({ id: id + 'g_' + point.index });\n point.label = point.originalText || point.y.toString();\n var border = { width: dataLabel.border.width, color: dataLabel.border.color };\n var argsFont = (extend({}, getValue('properties', dataLabel.font), null, true));\n var argsData = {\n cancel: false, name: textRender, series: this.accumulation.visibleSeries[0], point: point,\n text: point.label, border: border, color: dataLabel.fill, template: dataLabel.template, font: argsFont\n };\n this.accumulation.trigger(textRender, argsData);\n point.argsData = argsData;\n var isTemplate = argsData.template !== null;\n point.labelVisible = !argsData.cancel;\n point.text = point.label = argsData.text;\n if (Number(point.label)) {\n point.label = this.accumulation.intl.formatNumber(+point.label, {\n useGrouping: this.accumulation.useGroupingSeparator\n });\n }\n this.marginValue = argsData.border.width ? (5 + argsData.border.width) : 1;\n var childElement = createElement('div', {\n id: this.accumulation.element.id + '_Series_' + 0 + '_DataLabel_' + point.index,\n styles: 'position: absolute;background-color:' + argsData.color + ';' +\n getFontStyle(dataLabel.font) + ';border:' + argsData.border.width + 'px solid ' + argsData.border.color + ';'\n });\n this.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw);\n };\n /**\n * To calculate label size\n */\n AccumulationDataLabel.prototype.calculateLabelSize = function (isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, isReactCallback) {\n var textSize = isTemplate ? (isReactCallback ? { width: clientRect.width, height: clientRect.height } : this.getTemplateSize(childElement, point, argsData, redraw, isTemplate, points, datalabelGroup, id, dataLabel)) : measureText(point.label, dataLabel.font);\n textSize.height += 4; // 4 for calculation with padding for smart label shape\n textSize.width += 4;\n point.textSize = textSize;\n point.templateElement = childElement;\n this.getDataLabelPosition(point, dataLabel, textSize, points);\n if (point.labelRegion) {\n this.correctLabelRegion(point.labelRegion, point.textSize);\n }\n };\n /**\n * @private\n */\n AccumulationDataLabel.prototype.drawDataLabels = function (series, dataLabel, parent, templateElement, redraw) {\n var angle;\n var degree;\n var modifiedPoints = series.leftSidePoints.concat(series.rightSidePoints);\n modifiedPoints.sort(function (a, b) { return a.index - b.index; });\n if (series.type === 'Pie' && this.accumulation.enableSmartLabels) {\n this.extendedLabelsCalculation();\n }\n for (var _i = 0, modifiedPoints_1 = modifiedPoints; _i < modifiedPoints_1.length; _i++) {\n var point = modifiedPoints_1[_i];\n if (!isNullOrUndefined(point.argsData) && !isNullOrUndefined(point.y)) {\n this.finalizeDatalabels(point, modifiedPoints, dataLabel);\n var id = this.accumulation.element.id + '_datalabel_Series_' + 0 + '_';\n var datalabelGroup = this.accumulation.renderer.createGroup({ id: id + 'g_' + point.index });\n var dataLabelElement = void 0;\n var location_3 = void 0;\n var element = void 0;\n if (point.visible && point.labelVisible) {\n angle = degree = dataLabel.angle;\n if (point.argsData.template) {\n this.setTemplateStyle(point.templateElement, point, templateElement, dataLabel.font.color, point.color, redraw);\n }\n else {\n location_3 = new ChartLocation(point.labelRegion.x + this.marginValue, point.labelRegion.y\n + (point.textSize.height * 3 / 4) + this.marginValue);\n element = getElement(id + 'shape_' + point.index);\n var startLocation = element ? new ChartLocation(+element.getAttribute('x'), +element.getAttribute('y')) : null;\n dataLabelElement = this.accumulation.renderer.drawRectangle(new RectOption(id + 'shape_' + point.index, point.argsData.color, point.argsData.border, 1, point.labelRegion, dataLabel.rx, dataLabel.ry));\n appendChildElement(false, datalabelGroup, dataLabelElement, redraw, true, 'x', 'y', startLocation, null, false, false, null, this.accumulation.duration);\n var textWidth = point.textSize.width;\n var textHeight = point.textSize.height;\n var rotate = void 0;\n if (angle !== 0 && dataLabel.enableRotation) {\n if (point.labelPosition === 'Outside') {\n degree = 0;\n }\n else {\n if (point.midAngle >= 90 && point.midAngle <= 270) {\n degree = point.midAngle + 180;\n }\n else {\n degree = point.midAngle;\n }\n }\n rotate = 'rotate(' + degree + ',' + (location_3.x + (textWidth / 2)) + ','\n + (location_3.y - (textHeight / 4)) + ')';\n }\n else {\n if (angle) {\n degree = (angle > 360) ? angle - 360 : (angle < -360) ? angle + 360 : angle;\n }\n else {\n degree = 0;\n }\n rotate = 'rotate(' + degree + ',' + (location_3.x + (textWidth / 2)) + ',' + (location_3.y) + ')';\n }\n point.transform = rotate;\n textElement(this.accumulation.renderer, new TextOption(id + 'text_' + point.index, location_3.x, location_3.y, 'start', point.label, rotate, 'auto', degree), point.argsData.font, point.argsData.font.color || this.getSaturatedColor(point, point.argsData.color), datalabelGroup, false, redraw, true, false, this.accumulation.duration);\n element = null;\n }\n if (this.accumulation.accumulationLegendModule && (dataLabel.position === 'Outside'\n || this.accumulation.enableSmartLabels)) {\n this.accumulation.visibleSeries[0].findMaxBounds(this.accumulation.visibleSeries[0].labelBound, point.labelRegion);\n }\n if (point.labelPosition === 'Outside') {\n var element_1 = getElement(id + 'connector_' + point.index);\n var previousDirection = element_1 ? element_1.getAttribute('d') : '';\n var pathElement = this.accumulation.renderer.drawPath(new PathOption(id + 'connector_' + point.index, 'transparent', dataLabel.connectorStyle.width, dataLabel.connectorStyle.color || point.color, 1, dataLabel.connectorStyle.dashArray, this.getConnectorPath(extend({}, point.labelRegion, null, true), point, dataLabel, point.labelAngle)));\n appendChildElement(false, datalabelGroup, pathElement, redraw, true, null, null, null, previousDirection, false, false, null, this.accumulation.duration);\n }\n appendChildElement(false, parent, datalabelGroup, redraw);\n }\n }\n }\n };\n /**\n * In this method datalabels region checked with legebdBounds and areaBounds.\n * Trimming of datalabel and point's visibility again changed here.\n *\n * @param {AccPoints} point current point in which trimming and visibility to be checked\n * @param {AccPoints[]} points finalized points\n * @param {AccumulationDataLabelSettingsModel} dataLabel datalabel model\n */\n AccumulationDataLabel.prototype.finalizeDatalabels = function (point, points, dataLabel) {\n if (this.isOverlapping(point, points) ||\n (this.titleRect && point.labelRegion && isOverlap(point.labelRegion, this.titleRect))) {\n if (this.isCircular() && point.labelPosition === 'Outside') {\n this.setPointVisibileFalse(point);\n }\n }\n if (this.accumulation.accumulationLegendModule && point.labelVisible && point.labelRegion) {\n var rect = this.accumulation.accumulationLegendModule.legendBounds;\n var padding = this.accumulation.legendSettings.border.width / 2;\n this.textTrimming(point, new Rect(rect.x - padding, rect.y - padding, rect.width + (2 * padding), rect.height + (2 * padding)), dataLabel.font, this.accumulation.accumulationLegendModule.position);\n }\n if (point.labelVisible && point.labelRegion) {\n var position = this.isCircular() ? (point.labelRegion.x >= this.center.x) ? 'InsideRight' : 'InsideLeft' :\n (point.labelRegion.x >= point.region.x) ? 'InsideRight' : 'InsideLeft';\n this.textTrimming(point, this.areaRect, dataLabel.font, position);\n }\n if (point.labelVisible && point.labelRegion && ((point.labelRegion.y + point.labelRegion.height >\n this.areaRect.y + this.areaRect.height || point.labelRegion.y < this.areaRect.y) || (point.labelRegion.x < this.areaRect.x ||\n point.labelRegion.x + point.labelRegion.width > this.areaRect.x + this.areaRect.width))) {\n this.setPointVisibileFalse(point);\n }\n };\n /**\n * To find the template element size\n *\n * @param {HTMLElement} element To get a template element.\n * @param {AccPoints} point Template of accumulation points.\n * @param {IAccTextRenderEventArgs} argsData Arguments of accumulation points.\n * @param {boolean} redraw redraw value.\n * @returns {Size} Size of a template.\n */\n AccumulationDataLabel.prototype.getTemplateSize = function (element, point, argsData, redraw, isTemplate, points, datalabelGroup, id, dataLabel) {\n element = createTemplate(element, point.index, argsData.template, this.accumulation, point, this.accumulation.visibleSeries[0], this.accumulation.element.id + '_DataLabel', 0, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw);\n var clientRect = measureElementRect(element, redraw);\n return { width: clientRect.width, height: clientRect.height };\n };\n /**\n * To set the template element style\n *\n * @param {HTMLElement} childElement Set a child element of template.\n * @param {AccPoints} point Template point.\n * @param {parent} parent Parent element of template.\n * @param {labelColor} labelColor Template label color.\n * @param {string} fill Fill color of template.\n */\n AccumulationDataLabel.prototype.setTemplateStyle = function (childElement, point, parent, labelColor, fill, redraw) {\n childElement.style.left = (point.labelRegion.x) + 'px';\n childElement.style.top = (point.labelRegion.y) + 'px';\n childElement.style.color = labelColor ||\n this.getSaturatedColor(point, fill);\n if (this.accumulation.isBlazor) {\n var position = this.isCircular() ? (point.labelRegion.x >= this.center.x) ? 'InsideRight' : 'InsideLeft' :\n (point.labelRegion.x >= point.region.x) ? 'InsideRight' : 'InsideLeft';\n if (position === 'InsideRight') {\n childElement.style.transform = 'translate(0%, -50%)';\n }\n else {\n childElement.style.transform = 'translate(-100%, -50%)';\n }\n }\n if (childElement.childElementCount) {\n appendChildElement(false, parent, childElement, redraw, true, 'left', 'top');\n this.doTemplateAnimation(this.accumulation, childElement);\n }\n };\n /**\n * To find saturated color for datalabel\n *\n * @returns {string} Get a saturated color.\n */\n AccumulationDataLabel.prototype.getSaturatedColor = function (point, color) {\n var saturatedColor;\n if (this.marginValue >= 1) {\n saturatedColor = color === 'transparent' ? this.getLabelBackground(point) : color;\n }\n else {\n saturatedColor = this.getLabelBackground(point);\n }\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n /**\n * Animates the data label template.\n *\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.doTemplateAnimation = function (accumulation, element) {\n var series = accumulation.visibleSeries[0];\n var delay = series.animation.delay + series.animation.duration;\n if (series.animation.enable && accumulation.animateSeries) {\n element.style.visibility = 'hidden';\n templateAnimate(element, delay, 200, 'ZoomIn');\n }\n };\n /**\n * To find background color for the datalabel\n *\n * @returns {string} AccPoints\n */\n AccumulationDataLabel.prototype.getLabelBackground = function (point) {\n return point.labelPosition === 'Outside' ?\n this.accumulation.background || this.accumulation.themeStyle.background : point.color;\n };\n /**\n * To correct the padding between datalabel regions.\n */\n AccumulationDataLabel.prototype.correctLabelRegion = function (labelRegion, textSize, padding) {\n if (padding === void 0) { padding = 4; }\n labelRegion.height -= padding;\n labelRegion.width -= padding;\n labelRegion.x += padding / 2;\n labelRegion.y += padding / 2;\n textSize.height -= padding;\n textSize.width -= padding;\n };\n /**\n * To get the dataLabel module name\n *\n * @returns {string} module name\n */\n AccumulationDataLabel.prototype.getModuleName = function () {\n return 'AccumulationDataLabel';\n };\n /**\n * To destroy the data label.\n *\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n //calculation for placing labels smartly\n AccumulationDataLabel.prototype.extendedLabelsCalculation = function () {\n var _this = this;\n var series = this.accumulation.series[0];\n series.rightSidePoints.forEach(function (point, index, halfSidePoints) {\n point.initialLabelRegion = point.labelRegion;\n point.isLabelUpdated = 0;\n _this.skipPoints(point, halfSidePoints, index);\n });\n series.leftSidePoints.forEach(function (point, index, halfSidePoints) {\n point.initialLabelRegion = point.labelRegion;\n point.isLabelUpdated = 0;\n _this.skipPoints(point, halfSidePoints, index);\n });\n this.arrangeLeftSidePoints(series);\n this.isIncreaseAngle = false;\n this.arrangeRightSidePoints(series);\n };\n /**\n * Rightside points alignments calculation\n *\n * @param {AccumulationSeries} series To get a proper series.\n */\n AccumulationDataLabel.prototype.arrangeRightSidePoints = function (series) {\n var startFresh;\n var angleChanged;\n var rightSideRenderPoints = series.rightSidePoints.filter(function (point) { return (point.labelVisible && point.labelPosition === 'Outside'); });\n this.rightSideRenderingPoints = rightSideRenderPoints;\n var checkAngle;\n var currentPoint;\n var lastPoint = rightSideRenderPoints[rightSideRenderPoints.length - 1];\n var nextPoint;\n if (lastPoint) {\n if (lastPoint.labelAngle > 90 && lastPoint.labelAngle < 270) {\n this.isIncreaseAngle = true;\n this.changeLabelAngle(lastPoint, 89);\n }\n }\n /**\n * Right side points arranged from last point.\n * A point checked with successive points for overlapping.\n * If that is overlapped, its label angle is decreased and placing in optimal position\n * If one point's angle is decreased, its previous points in the half side points also decreased until it reaced optimum position.\n * When decreasing angle falls beyond 270, label angle increased.\n * If one point's angle is increased, its successive points in that half point also increased until it reaced optimum position.\n */\n for (var i = rightSideRenderPoints.length - 1; i >= 0; i--) {\n currentPoint = rightSideRenderPoints[i];\n nextPoint = rightSideRenderPoints[i + 1];\n // A point checked for overlapping, label visibility\n if (this.isOverlapWithNext(currentPoint, rightSideRenderPoints, i) && currentPoint.labelVisible\n || !(currentPoint.labelAngle <= 90 || currentPoint.labelAngle >= 270)) {\n checkAngle = lastPoint.labelAngle + 10;\n angleChanged = true;\n //If last's point change angle in beyond the limit, stop the increasing angle and do decrease the angle.\n if (startFresh) {\n this.isIncreaseAngle = false;\n }\n else if (checkAngle > 90 && checkAngle < 270 && nextPoint.isLabelUpdated) {\n this.isIncreaseAngle = true;\n }\n if (!this.isIncreaseAngle) {\n for (var k = i + 1; k < rightSideRenderPoints.length; k++) {\n this.increaseAngle(rightSideRenderPoints[k - 1], rightSideRenderPoints[k], series, true);\n }\n }\n else {\n for (var k = i + 1; k > 0; k--) {\n this.decreaseAngle(rightSideRenderPoints[k], rightSideRenderPoints[k - 1], series, true);\n }\n }\n }\n else {\n //If a point did not overlapped with previous points, increase the angle always for right side points.\n if (angleChanged && nextPoint && !nextPoint.isLabelUpdated) {\n startFresh = true;\n }\n }\n }\n };\n /**\n * Leftside points alignments calculation\n *\n * @param {AccumulationSeries} series To get a proper series.\n */\n AccumulationDataLabel.prototype.arrangeLeftSidePoints = function (series) {\n var _this = this;\n var leftSideRenderPoints = series.leftSidePoints.filter(function (point) { return (point.labelVisible && point.labelPosition === 'Outside'); });\n this.leftSideRenderingPoints = leftSideRenderPoints;\n var previousPoint;\n var currentPoint;\n var angleChanged;\n var startFresh;\n /**\n * Left side points arranged from first point.\n * A point checked with previous points for overlapping.\n * If that is overlapped, its label angle is decreased and placing in optimal position\n * If one point's angle is decreased, its previous points in the half side points also decreased until it reaced optimum position.\n * When decreasing angle falls beyond 90, label angle increased.\n * If one point's angle is increased, its successive points in that half point also increased until it reaced optimum position.\n */\n for (var i = 0; i < leftSideRenderPoints.length; i++) {\n currentPoint = leftSideRenderPoints[i];\n previousPoint = leftSideRenderPoints[i - 1];\n // A point checked\n if (this.isOverlapWithPrevious(currentPoint, leftSideRenderPoints, i) && currentPoint.labelVisible\n || !(currentPoint.labelAngle < 270)) {\n angleChanged = true;\n if (startFresh) {\n this.isIncreaseAngle = false;\n }\n if (!this.isIncreaseAngle) {\n for (var k = i; k > 0; k--) {\n this.decreaseAngle(leftSideRenderPoints[k], leftSideRenderPoints[k - 1], series, false);\n leftSideRenderPoints.filter(function (point, index) {\n if (point.isLabelUpdated && leftSideRenderPoints[index].labelAngle - 10 < 100) {\n _this.isIncreaseAngle = true;\n }\n });\n }\n }\n else {\n for (var k = i; k < leftSideRenderPoints.length; k++) {\n this.increaseAngle(leftSideRenderPoints[k - 1], leftSideRenderPoints[k], series, false);\n }\n }\n }\n else {\n if (angleChanged && previousPoint && previousPoint.isLabelUpdated) {\n startFresh = true;\n }\n }\n }\n };\n AccumulationDataLabel.prototype.decreaseAngle = function (currentPoint, previousPoint, series, isRightSide) {\n if (isNullOrUndefined(currentPoint) || isNullOrUndefined(previousPoint)) {\n return null;\n }\n var count = 1;\n if (isRightSide) {\n while (isOverlap(currentPoint.labelRegion, previousPoint.labelRegion) || (!this.isVariousRadius() &&\n !((previousPoint.labelRegion.height + previousPoint.labelRegion.y) < currentPoint.labelRegion.y))) {\n var newAngle = previousPoint.midAngle - count;\n if (newAngle < 0) {\n newAngle = 360 + newAngle;\n }\n if (newAngle <= 270 && newAngle >= 90) {\n newAngle = 270;\n this.isIncreaseAngle = true;\n break;\n }\n this.changeLabelAngle(previousPoint, newAngle);\n count++;\n }\n }\n else {\n if (currentPoint.labelAngle > 270) {\n this.changeLabelAngle(currentPoint, 270);\n previousPoint.labelAngle = 270;\n }\n while (isOverlap(currentPoint.labelRegion, previousPoint.labelRegion) || (!this.isVariousRadius() &&\n ((currentPoint.labelRegion.y + currentPoint.labelRegion.height) > previousPoint.labelRegion.y))) {\n var newAngle = previousPoint.midAngle - count;\n if (!(newAngle <= 270 && newAngle >= 90)) {\n newAngle = 90;\n this.isIncreaseAngle = true;\n break;\n }\n this.changeLabelAngle(previousPoint, newAngle);\n if (isOverlap(currentPoint.labelRegion, previousPoint.labelRegion) &&\n !series.leftSidePoints.indexOf(previousPoint) && (newAngle - 1 < 90 && newAngle - 1 > 270)) {\n this.changeLabelAngle(currentPoint, currentPoint.labelAngle + 1);\n this.arrangeLeftSidePoints(series);\n break;\n }\n count++;\n }\n }\n };\n AccumulationDataLabel.prototype.increaseAngle = function (currentPoint, nextPoint, series, isRightSide) {\n if (isNullOrUndefined(currentPoint) || isNullOrUndefined(nextPoint)) {\n return null;\n }\n var count = 1;\n if (isRightSide) {\n while (isOverlap(currentPoint.labelRegion, nextPoint.labelRegion) || (!this.isVariousRadius() &&\n !((currentPoint.labelRegion.y + currentPoint.labelRegion.height) < nextPoint.labelRegion.y))) {\n var newAngle = nextPoint.midAngle + count;\n if (newAngle < 270 && newAngle > 90) {\n newAngle = 90;\n this.isIncreaseAngle = true;\n break;\n }\n this.changeLabelAngle(nextPoint, newAngle);\n if (isOverlap(currentPoint.labelRegion, nextPoint.labelRegion) && (newAngle + 1 > 90 && newAngle + 1 < 270) &&\n this.rightSideRenderingPoints.indexOf(nextPoint) === this.rightSideRenderingPoints.length - 1) {\n this.changeLabelAngle(currentPoint, currentPoint.labelAngle - 1);\n nextPoint.labelRegion = nextPoint.initialLabelRegion;\n this.arrangeRightSidePoints(series);\n break;\n }\n count++;\n }\n }\n else {\n while (isOverlap(currentPoint.labelRegion, nextPoint.labelRegion) || (!this.isVariousRadius() &&\n (currentPoint.labelRegion.y < (nextPoint.labelRegion.y + nextPoint.labelRegion.height)))) {\n var newAngle = nextPoint.midAngle + count;\n if (!(newAngle < 270 && newAngle > 90)) {\n newAngle = 270;\n this.isIncreaseAngle = false;\n break;\n }\n this.changeLabelAngle(nextPoint, newAngle);\n count++;\n }\n }\n };\n AccumulationDataLabel.prototype.changeLabelAngle = function (currentPoint, newAngle) {\n var dataLabel = this.accumulation.series[0].dataLabel;\n var variableR;\n if (this.isVariousRadius()) {\n variableR = this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], currentPoint);\n }\n //padding 10px is added to label radius for increasing the angle and avoid congestion.\n var labelRadius = (currentPoint.labelPosition === 'Outside' && this.accumulation.enableSmartLabels &&\n dataLabel.position === 'Inside') ?\n this.radius + stringToNumber(dataLabel.connectorStyle.length || '4%', this.accumulation.pieSeriesModule.size / 2) :\n (!this.isVariousRadius() ? this.accumulation.pieSeriesModule.labelRadius + 10 : variableR);\n var radius = (!this.isVariousRadius() ? labelRadius : variableR);\n this.getLabelRegion(currentPoint, 'Outside', currentPoint.textSize, radius, this.marginValue, newAngle);\n currentPoint.isLabelUpdated = 1;\n currentPoint.labelAngle = newAngle;\n };\n AccumulationDataLabel.prototype.isOverlapWithPrevious = function (currentPoint, points, currentPointIndex) {\n for (var i = 0; i < currentPointIndex; i++) {\n if (i !== points.indexOf(currentPoint) &&\n points[i].visible && points[i].labelVisible && points[i].labelRegion && currentPoint.labelRegion &&\n currentPoint.labelVisible && isOverlap(currentPoint.labelRegion, points[i].labelRegion)) {\n return true;\n }\n }\n return false;\n };\n AccumulationDataLabel.prototype.isOverlapWithNext = function (point, points, pointIndex) {\n for (var i = pointIndex; i < points.length; i++) {\n if (i !== points.indexOf(point) && points[i].visible && points[i].labelVisible && points[i].labelRegion &&\n point.labelRegion && point.labelVisible && isOverlap(point.labelRegion, points[i].labelRegion)) {\n return true;\n }\n }\n return false;\n };\n AccumulationDataLabel.prototype.skipPoints = function (currentPoint, halfsidePoints, pointIndex) {\n if (pointIndex > 0 && ((currentPoint.midAngle < 285 && currentPoint.midAngle > 255) ||\n (currentPoint.midAngle < 105 && currentPoint.midAngle > 75))) {\n var previousPoint = halfsidePoints[pointIndex - 1];\n var angleDiff = currentPoint.endAngle % 360 - currentPoint.startAngle % 360;\n var prevAngleDiff = previousPoint.endAngle % 360 - previousPoint.startAngle % 360;\n if (prevAngleDiff <= angleDiff && angleDiff < 5 && previousPoint.labelVisible) {\n this.setPointVisibleTrue(currentPoint);\n }\n }\n else if (pointIndex > 1 && ((currentPoint.midAngle < 300 && currentPoint.midAngle > 240) ||\n (currentPoint.midAngle < 120 && currentPoint.midAngle > 60))) {\n var prevPoint = halfsidePoints[pointIndex - 1];\n var secondPrevPoint = halfsidePoints[pointIndex - 2];\n var angleDiff = currentPoint.endAngle % 360 - currentPoint.startAngle % 360;\n var prevAngleDiff = prevPoint.endAngle % 360 - prevPoint.startAngle % 360;\n var thirdAngleDiff = secondPrevPoint.endAngle % 360 - secondPrevPoint.startAngle % 360;\n if (angleDiff < 3 && prevAngleDiff < 3 && thirdAngleDiff < 3 && prevPoint.labelVisible && currentPoint.labelVisible) {\n this.setPointVisibleTrue(currentPoint);\n }\n }\n };\n AccumulationDataLabel.prototype.getPerpendicularDistance = function (startPoint, point) {\n var increasedLocation;\n var add = 10;\n var height = add + 10 * Math.sin(point.midAngle * Math.PI / 360);\n if (point.midAngle > 270 && point.midAngle < 360) {\n increasedLocation = new ChartLocation(startPoint.x + height * (Math.cos((360 - point.midAngle) * Math.PI / 180)), startPoint.y - height * (Math.sin((360 - point.midAngle) * Math.PI / 180)));\n }\n else if (point.midAngle > 0 && point.midAngle < 90) {\n increasedLocation = new ChartLocation(startPoint.x + height * (Math.cos((point.midAngle) * Math.PI / 180)), startPoint.y + height * (Math.sin((point.midAngle) * Math.PI / 180)));\n }\n else if (point.midAngle > 0 && point.midAngle < 90) {\n increasedLocation = new ChartLocation(startPoint.x - height * (Math.cos((point.midAngle - 90) * Math.PI / 180)), startPoint.y + height * (Math.sin((point.midAngle - 90) * Math.PI / 180)));\n }\n else {\n increasedLocation = new ChartLocation(startPoint.x - height * (Math.cos((point.midAngle - 180) * Math.PI / 180)), startPoint.y - height * (Math.sin((point.midAngle - 180) * Math.PI / 180)));\n }\n return increasedLocation;\n };\n return AccumulationDataLabel;\n}(AccumulationBase));\nexport { AccumulationDataLabel };\n","import * as events from '../../common/base/constant';\nimport * as cls from '../../common/base/css-constant';\nimport { Chart, ColumnSeries, LineSeries, Legend, Tooltip, Category, AreaSeries, Selection, StripLine, DataLabel } from '@syncfusion/ej2-charts';\nimport { AccumulationChart, PieSeries, FunnelSeries, PyramidSeries } from '@syncfusion/ej2-charts';\nimport { SplineAreaSeries, MultiColoredLineSeries, RangeAreaSeries, StackingAreaSeries, StepAreaSeries } from '@syncfusion/ej2-charts';\nimport { MultiColoredAreaSeries, SplineSeries, StepLineSeries, AccumulationLegend, AccumulationTooltip } from '@syncfusion/ej2-charts';\nimport { StackingColumnSeries, RangeColumnSeries, BarSeries, StackingBarSeries, ScatterSeries } from '@syncfusion/ej2-charts';\nimport { RadarSeries } from '@syncfusion/ej2-charts';\nimport { ScrollBar, Zoom, PolarSeries } from '@syncfusion/ej2-charts';\nimport { ParetoSeries, Export, Crosshair, MultiLevelLabel } from '@syncfusion/ej2-charts';\nimport { BubbleSeries } from '@syncfusion/ej2-charts';\nimport { AccumulationDataLabel } from '@syncfusion/ej2-charts';\nimport { createElement, remove, isNullOrUndefined, isBlazor, select } from '@syncfusion/ej2-base';\nimport { PivotUtil } from '../../base/util';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { hideSpinner } from '@syncfusion/ej2-popups';\nvar PivotChart = /** @class */ (function () {\n function PivotChart() {\n this.headerColl = {};\n this.maxLevel = 0;\n this.columnGroupObject = {};\n this.fieldPosition = [];\n this.measurePos = -1;\n this.measuresNames = {};\n this.accumulationType = ['Pie', 'Pyramid', 'Doughnut', 'Funnel'];\n }\n /**\n * Get component name.\n * @returns {string} - string\n * @private\n */\n PivotChart.prototype.getModuleName = function () {\n return 'pivotchart';\n };\n /* eslint-disable */\n PivotChart.prototype.loadChart = function (parent, chartSettings) {\n this.parent = parent;\n this.measuresNames = {};\n this.engineModule = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;\n this.dataSourceSettings = this.parent.dataSourceSettings;\n this.chartSettings = chartSettings;\n var isDataAvail = parent.dataType === 'olap' ?\n (parent.olapEngineModule.tupColumnInfo.length > 0 && parent.olapEngineModule.tupRowInfo.length > 0 &&\n (!isNullOrUndefined(parent.olapEngineModule.colMeasurePos) || !isNullOrUndefined(parent.olapEngineModule.rowMeasurePos)))\n : parent.dataSourceSettings.values.length > 0;\n if (isDataAvail) {\n if (!this.parent.chart && (this.parent.element.querySelector('.e-chart') || this.parent.element.querySelector('.e-accumulationchart'))) {\n remove(select('#' + this.parent.element.id + '_chart', this.parent.element));\n }\n if (this.chartSettings.enableMultipleAxis && this.accumulationType.indexOf(chartSettings.chartSeries.type) < 0) {\n this.measureList = this.dataSourceSettings.values.map(function (item) { return item.name; });\n }\n else {\n this.measureList = [chartSettings.value === '' ? this.dataSourceSettings.values[0].name : chartSettings.value];\n }\n for (var _i = 0, _a = this.dataSourceSettings.values; _i < _a.length; _i++) {\n var field = _a[_i];\n var fieldName = field.name.replace(/[^A-Z0-9]+/ig, '_');\n this.measuresNames[field.name] = fieldName;\n this.measuresNames[fieldName] = field.name;\n if ((this.chartSettings.chartSeries.type === 'Polar' || this.chartSettings.chartSeries.type === 'Radar')) {\n this.measuresNames[field.caption ? field.caption : field.name] = field.name;\n }\n }\n }\n else if (this.parent.chart) {\n if (this.parent.element.querySelector('.e-chart')) {\n this.parent.chart.series = [];\n this.parent.chart.rows = [];\n this.parent.chart.primaryXAxis.title = '';\n this.parent.chart.primaryYAxis.title = '';\n this.parent.chart.primaryXAxis.multiLevelLabels = [];\n this.parent.chart.primaryYAxis.multiLevelLabels = [];\n if (this.parent.chart.axes.length > 0) {\n this.parent.chart.axes[0].title = '';\n }\n this.parent.chart.primaryXAxis.zoomFactor = isNullOrUndefined(this.parent.chartSettings.primaryXAxis.zoomFactor) ? 1 : this.parent.chartSettings.primaryXAxis.zoomFactor;\n }\n else if (this.parent.element.querySelector('.e-accumulationchart')) {\n this.parent.chart.series[0].dataSource = [{}];\n this.parent.chart.series[0].dataLabel = {};\n }\n this.parent.chart.refresh();\n return;\n }\n else {\n if (!select('#' + this.parent.element.id + '_chart', this.parent.element)) {\n if (this.parent.displayOption.view === 'Both') {\n this.parent.displayOption.primary === 'Chart' ?\n (this.parent.element.insertBefore((createElement('div', {\n className: cls.PIVOTCHART, id: this.parent.element.id + '_chart'\n })), this.parent.element.querySelector('.' + cls.GRID_CLASS))) :\n (this.parent.element.appendChild(createElement('div', {\n className: cls.PIVOTCHART, id: this.parent.element.id + '_chart'\n })));\n }\n else {\n this.parent.element.appendChild(createElement('div', {\n className: cls.PIVOTCHART, id: this.parent.element.id + '_chart'\n }));\n }\n var width = this.parent.width.toString();\n if (this.parent.showToolbar && this.parent.grid) {\n width = this.parent.getGridWidthAsNumber().toString();\n }\n var height = this.getChartHeight();\n var tmpChart = void 0;\n if (this.chartSettings && this.chartSettings.chartSeries && this.accumulationType.indexOf(this.chartSettings.chartSeries.type) > -1) {\n tmpChart = new AccumulationChart({ width: width, height: height });\n }\n else {\n tmpChart = new Chart({ width: width, height: height });\n }\n tmpChart.appendTo('#' + this.parent.element.id + '_chart');\n if (this.parent.showToolbar) {\n if (this.parent.displayOption.view === 'Both' && this.parent.currentView === 'Chart') {\n this.parent.grid.element.style.display = 'none';\n }\n if (this.parent.currentView !== 'Chart') {\n select('#' + this.parent.element.id + '_chart', this.parent.element).style.display = 'none';\n }\n }\n }\n this.parent.notify(events.contentReady, {});\n return;\n }\n this.columnGroupObject = {};\n this.accEmptyPoint = false;\n var pivotValues = this.engineModule.pivotValues;\n this.currentMeasure = (chartSettings.enableMultipleAxis && this.accumulationType.indexOf(chartSettings.chartSeries.type) < 0) ? this.measureList[0] :\n (((chartSettings.value === '' || this.dataSourceSettings.values.filter(function (item) {\n return item.name === chartSettings.value;\n }).length === 0) && this.dataSourceSettings.values.length > 0) ? this.dataSourceSettings.values[0].name : chartSettings.value);\n var totColIndex = this.getColumnTotalIndex(pivotValues);\n var rKeys = Object.keys(pivotValues);\n var prevLevel;\n var firstLevelUName;\n var levelCollection = {};\n var prevCell;\n var integratedLevel = 0;\n var indexCount = -0.5;\n this.headerColl = {};\n this.maxLevel = 0;\n var levelPos = {};\n var lastHierarchy = '';\n var lastDimension = '';\n var memberCell;\n var drillDimension = '';\n var isDrill = false;\n if (this.parent.dataType === 'olap') {\n levelPos = this.groupHierarchyWithLevels(pivotValues);\n lastHierarchy = this.fieldPosition[this.fieldPosition.length - 1];\n lastDimension = (this.measurePos === (this.fieldPosition.length - 1) && this.fieldPosition.length > 1) ?\n this.fieldPosition[this.fieldPosition.length - 2] : lastHierarchy;\n drillDimension = lastDimension;\n }\n for (var _b = 0, rKeys_1 = rKeys; _b < rKeys_1.length; _b++) {\n var rKey = rKeys_1[_b];\n var rowIndex = Number(rKey);\n if (!isNullOrUndefined(pivotValues[rowIndex])) {\n if (pivotValues[rowIndex][0] && pivotValues[rowIndex][0].axis === 'row' &&\n (this.dataSourceSettings.rows.length === 0 ? true : pivotValues[rowIndex][0].type !== 'grand sum')) {\n var firstRowCell = pivotValues[rowIndex][0];\n var tupInfo = this.parent.dataType === 'olap' ?\n this.engineModule.tupRowInfo[firstRowCell.ordinal] : undefined;\n var fieldPos = -1;\n var currrentLevel = firstRowCell.level;\n if (this.parent.dataType === 'olap') {\n isDrill = firstRowCell.hierarchy === '[Measures]' ? isDrill : this.isAttributeDrill(firstRowCell.hierarchy, tupInfo.drillInfo);\n drillDimension = drillDimension === lastDimension ? lastDimension : (firstRowCell.hierarchy === '[Measures]' || firstRowCell.isNamedSet || (this.engineModule.fieldList[firstRowCell.hierarchy] && !this.engineModule.fieldList[firstRowCell.hierarchy].hasAllMember)) ? lastDimension : drillDimension;\n fieldPos = tupInfo.drillInfo.length - 1;\n if (firstRowCell.memberType !== 3 && (tupInfo.measureName ?\n tupInfo.measureName === this.dataSourceSettings.values[0].name : true)) {\n firstLevelUName = firstLevelUName === undefined ? firstRowCell.levelUniqueName : firstLevelUName;\n integratedLevel = firstLevelUName === firstRowCell.levelUniqueName ? 0 : integratedLevel;\n levelCollection = integratedLevel === 0 ? {} : levelCollection;\n integratedLevel = (prevCell && firstLevelUName !== firstRowCell.levelUniqueName) ?\n (prevCell.hierarchy === firstRowCell.hierarchy ?\n (integratedLevel + (firstRowCell.level - prevCell.level)) :\n (isNullOrUndefined(levelCollection[firstRowCell.levelUniqueName]) ?\n (levelPos[firstRowCell.hierarchy].start) :\n levelCollection[firstRowCell.levelUniqueName])) : integratedLevel;\n levelCollection[firstRowCell.levelUniqueName] = integratedLevel;\n currrentLevel = integratedLevel;\n indexCount += (prevCell && drillDimension === prevCell.hierarchy && !(prevCell.isDrilled && prevCell.hasChild)) ? 1 : 0;\n drillDimension = isDrill ? firstRowCell.hierarchy : lastDimension;\n prevLevel = integratedLevel;\n prevCell = firstRowCell;\n }\n }\n else if (firstRowCell.type !== 'value') {\n if (!(prevLevel === undefined || prevLevel < currrentLevel)) {\n indexCount++;\n }\n prevLevel = currrentLevel;\n }\n this.maxLevel = currrentLevel > this.maxLevel ? currrentLevel : this.maxLevel;\n var name_1 = this.parent.dataType === 'olap' ? firstRowCell.formattedText :\n (firstRowCell.actualText ? firstRowCell.actualText.toString() : firstRowCell.formattedText.toString());\n var text = firstRowCell.formattedText ? firstRowCell.formattedText.toString() : name_1;\n var caption = (firstRowCell.hasChild && !firstRowCell.isNamedSet) ?\n ((firstRowCell.isDrilled ? ' - ' : ' + ') + text) : text;\n var levelName = tupInfo ? tupInfo.uNameCollection : firstRowCell.valueSort.levelName.toString();\n var cellInfo = {\n name: name_1,\n text: caption,\n hasChild: firstRowCell.hasChild,\n isDrilled: firstRowCell.isDrilled,\n levelName: levelName,\n level: currrentLevel,\n fieldName: firstRowCell.valueSort.axis ? firstRowCell.valueSort.axis.toString() : '',\n rowIndex: rowIndex,\n colIndex: 0,\n cell: firstRowCell\n };\n if (this.parent.dataType === 'olap' ? firstRowCell.memberType !== 3 : firstRowCell.type !== 'value') {\n if (this.headerColl[indexCount]) {\n this.headerColl[indexCount][currrentLevel] = cellInfo;\n }\n else {\n this.headerColl[indexCount] = {};\n this.headerColl[indexCount][currrentLevel] = cellInfo;\n }\n }\n var rows = pivotValues[rowIndex];\n var cKeys = Object.keys(rows);\n var prevMemberCell = void 0;\n if (this.parent.dataType === 'olap') {\n memberCell = firstRowCell.memberType !== 3 ? firstRowCell : memberCell;\n }\n else {\n memberCell = firstRowCell.type !== 'value' ? firstRowCell : memberCell;\n }\n for (var _c = 0, cKeys_1 = cKeys; _c < cKeys_1.length; _c++) {\n var cKey = cKeys_1[_c];\n var cellIndex = Number(cKey);\n var cell = pivotValues[rowIndex][cellIndex];\n var measureAllow = cell.rowHeaders === '' ? this.dataSourceSettings.rows.length === 0 : true;\n var actualText = (this.parent.dataType === 'olap' && tupInfo && tupInfo.measureName) ?\n tupInfo.measureName : cell.actualText;\n if (!(this.parent.dataType === 'olap' && cell.isGrandSum) && !totColIndex[cell.colIndex] && cell.axis === 'value' && firstRowCell.type !== 'header' &&\n actualText !== '' && ((chartSettings.enableMultipleAxis && this.accumulationType.indexOf(chartSettings.chartSeries.type) < 0) ? true : actualText === this.currentMeasure)) {\n if (isNullOrUndefined(firstRowCell.members)) {\n firstRowCell.members = [];\n }\n if (this.parent.dataType === 'olap' ? ((lastHierarchy === firstRowCell.hierarchy || isDrill) ?\n ((firstRowCell.memberType === 3 && prevMemberCell) ?\n (fieldPos === this.measurePos ? (prevMemberCell.isDrilled && prevMemberCell.hasChild) : true) : (firstRowCell.isDrilled && firstRowCell.hasChild)) : true)\n : (((firstRowCell.type === 'value' && prevMemberCell) ?\n prevMemberCell.members.length > 0 : firstRowCell.members.length > 0) || !measureAllow)) {\n break;\n }\n var colHeaders = this.parent.dataType === 'olap' ? cell.columnHeaders.toString().split(/~~|::/).join(' - ')\n : cell.columnHeaders.toString().split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).join(' - ');\n var rowHeaders = this.parent.dataType === 'olap' ? cell.rowHeaders.toString().split(/~~|::/).join(' - ')\n : cell.rowHeaders.toString().split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).join(' - ');\n var columnSeries = colHeaders + ' | ' + actualText;\n var yValue = (this.parent.dataType === 'pivot' ? (this.engineModule.aggregatedValueMatrix[rowIndex] &&\n !isNullOrUndefined(this.engineModule.aggregatedValueMatrix[rowIndex][cellIndex])) ?\n Number(this.engineModule.aggregatedValueMatrix[rowIndex][cellIndex]) : Number(cell.value) : Number(cell.value));\n if (yValue === 0) {\n this.accEmptyPoint = true;\n }\n if (this.columnGroupObject[columnSeries]) {\n this.columnGroupObject[columnSeries].push({\n x: this.dataSourceSettings.rows.length === 0 ? firstRowCell.formattedText : rowHeaders,\n y: yValue,\n rIndex: rowIndex,\n cIndex: cellIndex\n });\n }\n else {\n this.columnGroupObject[columnSeries] = [{\n x: this.dataSourceSettings.rows.length === 0 ? firstRowCell.formattedText : rowHeaders,\n y: yValue,\n rIndex: rowIndex,\n cIndex: cellIndex\n }];\n }\n }\n prevMemberCell = memberCell;\n }\n }\n }\n }\n this.refreshChart();\n };\n /**\n * Refreshing chart based on the updated chartSettings.\n * @returns {void}\n */\n PivotChart.prototype.refreshChart = function () {\n this.chartSeries = [];\n var columnKeys = Object.keys(this.columnGroupObject);\n this.persistSettings = JSON.parse(this.parent.getPersistData()).chartSettings;\n var delimiter = this.parent.chartSettings.columnDelimiter ? this.parent.chartSettings.columnDelimiter : '-';\n var columnHeader = (this.parent.chartSettings.columnHeader && this.parent.chartSettings.columnHeader !== '') ?\n this.parent.chartSettings.columnHeader.split(delimiter).join(' - ') : '';\n var chartType = this.chartSettings.chartSeries ? this.chartSettings.chartSeries.type : undefined;\n var fieldWithCaption = {};\n for (var i = 0; i < this.parent.dataSourceSettings.values.length; i++) {\n fieldWithCaption[this.parent.dataSourceSettings.values[i].name] = !isNullOrUndefined(this.parent.dataSourceSettings.values[i].caption) ? this.parent.dataSourceSettings.values[i].caption : undefined;\n }\n if (this.accumulationType.indexOf(chartType) > -1 && columnKeys.length > 0) {\n this.currentColumn = (columnKeys.indexOf(columnHeader + ' | ' + this.currentMeasure) > -1 && columnHeader !== undefined) ? columnHeader + ' | ' + this.currentMeasure : columnKeys[0];\n var currentSeries = {};\n currentSeries = this.persistSettings.chartSeries ? this.frameChartSeries(this.persistSettings.chartSeries) : currentSeries;\n if ((isNullOrUndefined(currentSeries.palettes) || currentSeries.palettes.length == 0) && !isNullOrUndefined(this.persistSettings.palettes) && this.persistSettings.palettes.length > 0) {\n currentSeries.palettes = this.persistSettings.palettes;\n }\n currentSeries.dataSource = this.columnGroupObject[this.currentColumn];\n currentSeries.xName = 'x';\n currentSeries.yName = 'y';\n if (isBlazor()) {\n if (isNullOrUndefined(this.persistSettings.chartSeries.dataLabel.visible)) {\n this.persistSettings.chartSeries.dataLabel.visible = true;\n this.persistSettings.chartSeries.dataLabel.position = \"Outside\";\n }\n }\n if (this.persistSettings.chartSeries && this.persistSettings.chartSeries.dataLabel) {\n currentSeries.dataLabel = this.persistSettings.chartSeries.dataLabel;\n currentSeries.dataLabel.name = 'x';\n }\n else {\n currentSeries.dataLabel = { visible: true, position: \"Outside\", name: 'x' };\n this.parent.setProperties({ chartSettings: { chartSeries: { dataLabel: { visible: true, position: \"Outside\" } } } }, true);\n }\n if (this.accEmptyPoint && currentSeries.emptyPointSettings) {\n currentSeries.emptyPointSettings.mode = 'Zero';\n }\n else if (this.accEmptyPoint) {\n currentSeries.emptyPointSettings = { mode: 'Zero' };\n }\n currentSeries.name = this.currentColumn;\n if (chartType === 'Doughnut') {\n currentSeries.type = 'Pie';\n currentSeries.innerRadius = this.chartSettings.chartSeries.innerRadius ? this.chartSettings.chartSeries.innerRadius : '40%';\n }\n else if (chartType === 'Pie') {\n currentSeries.innerRadius = this.chartSettings.chartSeries.innerRadius ? this.chartSettings.chartSeries.innerRadius : '0';\n }\n this.chartSeries = this.chartSeries.concat(currentSeries);\n }\n else {\n for (var _i = 0, columnKeys_1 = columnKeys; _i < columnKeys_1.length; _i++) {\n var key = columnKeys_1[_i];\n var currentSeries = {};\n currentSeries = this.persistSettings.chartSeries ? this.frameChartSeries(this.persistSettings.chartSeries) : currentSeries;\n if (!isNullOrUndefined(currentSeries.palettes) && currentSeries.palettes.length > 0 && (isNullOrUndefined(this.persistSettings.palettes) || this.persistSettings.palettes.length == 0)) {\n this.chartSettings.palettes = currentSeries.palettes;\n }\n currentSeries.dataSource = this.columnGroupObject[key];\n currentSeries.xName = 'x';\n currentSeries.yName = 'y';\n var multiAxisKey = void 0;\n if (this.chartSettings.enableMultipleAxis) {\n var fieldCaptionName = key.split(' | ')[1];\n fieldCaptionName = !isNullOrUndefined(fieldWithCaption[fieldCaptionName]) ? fieldWithCaption[fieldCaptionName] : fieldCaptionName;\n multiAxisKey = key.split(' | ')[0] + ' | ' + fieldCaptionName;\n }\n currentSeries.name = this.chartSettings.enableMultipleAxis ? multiAxisKey : key.split(' | ')[0];\n if (['Radar', 'Polar'].indexOf(chartType) < 0) {\n var measure = key.split(' | ')[1];\n currentSeries.yAxisName = this.measuresNames[measure] ? this.measuresNames[measure] : measure;\n }\n if (this.persistSettings.chartSeries && this.persistSettings.chartSeries.emptyPointSettings) {\n currentSeries.emptyPointSettings = this.persistSettings.chartSeries.emptyPointSettings;\n }\n this.chartSeries = this.chartSeries.concat(currentSeries);\n }\n }\n var seriesEvent = { series: this.chartSeries, cancel: false };\n var pivotChart = this;\n this.parent.trigger(events.chartSeriesCreated, seriesEvent, function (observedArgs) {\n if (!observedArgs.cancel) {\n pivotChart.bindChart();\n }\n else {\n if (pivotChart.element) {\n remove(pivotChart.element);\n }\n pivotChart.parent.notify(events.contentReady, {});\n }\n });\n };\n PivotChart.prototype.frameObjectWithKeys = function (series) {\n var keys = Object.keys(series);\n var keyPos = 0;\n var framedSeries = {};\n while (keyPos < keys.length) {\n framedSeries[keys[keyPos]] = series[keys[keyPos]];\n keyPos++;\n }\n return framedSeries;\n };\n PivotChart.prototype.frameChartSeries = function (series) {\n var keys = Object.keys(series);\n var keyPos = 0;\n var framedSeries = {};\n while (keyPos < keys.length) {\n if ((this.accumulationType.indexOf(this.parent.chartSettings.chartSeries.type) > -1 && ['fill', 'dashArray', 'width', 'segmentAxis',\n 'drawType', 'isClosed', 'segments', 'stackingGroup', 'marker', 'errorBar', 'trendlines', 'minRadius',\n 'splineType', 'maxRadius', 'cardinalSplineTension', 'columnWidth', 'columnSpacing', 'cornerRadius'].indexOf(keys[keyPos]) > -1) ||\n (this.accumulationType.indexOf(this.parent.chartSettings.chartSeries.type) < 0 && ['endAngle', 'explode', 'explodeAll', 'explodeIndex',\n 'explodeOffset', 'gapRatio', 'groupMode', 'groupTo', 'neckHeight', 'neckWidth', 'pyramidMode', 'startAngle',\n 'dataLabel', 'innerRadius'].indexOf(keys[keyPos]) > -1)) {\n keyPos++;\n continue;\n }\n framedSeries[keys[keyPos]] = series[keys[keyPos]];\n keyPos++;\n }\n return framedSeries;\n };\n PivotChart.prototype.bindChart = function () {\n this.parent.showWaitingPopup();\n var currentXAxis = this.configXAxis();\n var currentTooltipSettings = this.configTooltipSettings();\n var currentLegendSettings = this.configLegendSettings();\n var currentZoomSettings = this.configZoomSettings();\n var axesWithRows = this.frameAxesWithRows();\n var type = this.chartSettings.chartSeries.type;\n if (this.parent.displayOption.view === 'Both') {\n this.element = this.parent.displayOption.primary === 'Chart' ?\n (this.parent.element.insertBefore((!this.element ?\n (createElement('div', {\n className: cls.PIVOTCHART, id: this.parent.element.id + '_chart'\n }))\n : this.element), this.parent.element.querySelector('.' + cls.GRID_CLASS))) :\n (this.parent.element.appendChild(!this.element ? (createElement('div', {\n className: cls.PIVOTCHART, id: this.parent.element.id + '_chart'\n })) : this.element));\n }\n else if (!this.element) {\n this.element = this.parent.element.appendChild(createElement('div', {\n className: cls.PIVOTCHART, id: this.parent.element.id + '_chart'\n }));\n }\n if (!this.chartElement && this.parent.chartSettings.enableScrollOnMultiAxis && this.parent.chartSettings.enableMultipleAxis) {\n this.parent.element.querySelector('.' + cls.PIVOTCHART).innerHTML = '';\n this.chartElement = this.parent.element.querySelector('.' + cls.PIVOTCHART).appendChild(createElement('div', {\n className: cls.PIVOTCHART_INNER, id: this.parent.element.id + '_chartInner',\n }));\n }\n if (this.parent.element.querySelector('.' + cls.PIVOTCHART_INNER)) {\n this.parent.element.querySelector('.' + cls.PIVOTCHART_INNER).innerHTML = '';\n }\n if (this.parent.showGroupingBar) {\n this.element.style.minWidth = '400px !important';\n }\n else {\n this.element.style.minWidth = '310px !important';\n }\n var width = this.parent.width.toString();\n if (this.parent.showToolbar && this.parent.grid) {\n width = this.parent.getGridWidthAsNumber().toString();\n }\n var height = this.getChartHeight();\n if (this.parent.chartSettings.enableScrollOnMultiAxis && this.parent.chartSettings.enableMultipleAxis &&\n this.accumulationType.indexOf(type) < 0) {\n this.parent.element.querySelector('.' + cls.PIVOTCHART).style.height =\n (height === 'auto' ? this.getChartAutoHeight() : height) + 'px';\n this.parent.element.querySelector('.' + cls.PIVOTCHART).style.width = width + 'px';\n if (this.parent.chartSettings.chartSeries.type !== 'Polar' && this.parent.chartSettings.chartSeries.type !== 'Radar') {\n this.parent.element.querySelector('.' + cls.PIVOTCHART).style.overflow = 'auto';\n this.parent.element.querySelector('.' + cls.PIVOTCHART).style.overflowX = 'hidden';\n }\n }\n if (this.parent.chart && ((this.parent.chart.getModuleName() === 'accumulationchart' &&\n this.accumulationType.indexOf(type) < 0) || (this.parent.chart.getModuleName() === 'chart' &&\n this.accumulationType.indexOf(type) > -1))) {\n this.parent.chart.destroy();\n if (select('#' + this.parent.element.id + '_chart', this.parent.element)) {\n select('#' + this.parent.element.id + '_chart', this.parent.element).innerHTML = '';\n select('#' + this.parent.element.id + '_chart', this.parent.element).appendChild(createElement('div', {\n className: cls.PIVOTCHART_INNER, id: this.parent.element.id + '_chartInner',\n }));\n }\n }\n if (!(this.parent.chart && this.parent.chart.element && this.parent.element.querySelector('.e-chart') || this.parent.element.querySelector('.e-accumulationchart')) ||\n (this.parent.toolbarModule && this.parent.toolbarModule.isMultiAxisChange)) {\n if (this.parent.toolbarModule && this.parent.toolbarModule.isMultiAxisChange && this.parent.chart) {\n if (!this.parent.chart.isDestroyed) {\n this.parent.chart.destroy();\n }\n this.parent.chart = undefined;\n select('#' + this.parent.element.id + '_chart', this.parent.element).innerHTML = '';\n select('#' + this.parent.element.id + '_chart', this.parent.element).appendChild(createElement('div', {\n className: cls.PIVOTCHART_INNER, id: this.parent.element.id + '_chartInner',\n }));\n this.parent.toolbarModule.isMultiAxisChange = false;\n }\n Chart.Inject(ColumnSeries, StackingColumnSeries, RangeColumnSeries, BarSeries, StackingBarSeries, ScatterSeries, BubbleSeries, LineSeries, StepLineSeries, SplineSeries, SplineAreaSeries, MultiColoredLineSeries, PolarSeries, RadarSeries, AreaSeries, RangeAreaSeries, StackingAreaSeries, StepAreaSeries, MultiColoredAreaSeries, ParetoSeries, Legend, Tooltip, Category, MultiLevelLabel, ScrollBar, Zoom, Export, Crosshair, Selection, StripLine, DataLabel);\n AccumulationChart.Inject(PieSeries, FunnelSeries, PyramidSeries, AccumulationDataLabel, AccumulationLegend, AccumulationTooltip, Export);\n if (this.accumulationType.indexOf(type) > -1) {\n this.parent.chart = new AccumulationChart({\n series: this.chartSeries.length > 0 ? this.chartSeries : [{}],\n legendSettings: currentLegendSettings,\n tooltip: currentTooltipSettings,\n width: width,\n height: height.toString(),\n title: this.chartSettings.title,\n enableSmartLabels: this.chartSettings.enableSmartLabels,\n center: this.chartSettings.pieCenter,\n enableBorderOnMouseMove: this.chartSettings.enableBorderOnMouseMove,\n highLightMode: this.chartSettings.highlightMode,\n highlightPattern: this.chartSettings.highlightPattern,\n titleStyle: this.chartSettings.titleStyle,\n subTitle: this.chartSettings.subTitle,\n subTitleStyle: this.chartSettings.subTitleStyle,\n margin: this.chartSettings.margin,\n border: this.chartSettings.border,\n background: this.chartSettings.background,\n theme: this.chartSettings.theme,\n selectionMode: this.chartSettings.accumulationSelectionMode,\n isMultiSelect: this.chartSettings.isMultiSelect,\n enableExport: this.chartSettings.enableExport,\n selectedDataIndexes: this.chartSettings.selectedDataIndexes,\n enableAnimation: this.chartSettings.enableAnimation,\n useGroupingSeparator: this.chartSettings.useGroupingSeparator,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n beforePrint: this.chartSettings.beforePrint ? this.chartSettings.beforePrint.bind(this) : undefined,\n animationComplete: this.chartSettings.animationComplete ? this.chartSettings.animationComplete.bind(this) : undefined,\n legendRender: this.chartSettings.legendRender ? this.chartSettings.legendRender.bind(this) : undefined,\n textRender: this.chartSettings.textRender ? this.chartSettings.textRender.bind(this) : undefined,\n pointRender: this.chartSettings.pointRender ? this.chartSettings.pointRender.bind(this) : undefined,\n seriesRender: this.chartSettings.seriesRender ? this.chartSettings.seriesRender.bind(this) : undefined,\n chartMouseMove: this.chartSettings.chartMouseMove ? this.chartSettings.chartMouseMove.bind(this) : undefined,\n chartMouseClick: this.chartSettings.chartMouseClick ? this.chartSettings.chartMouseClick.bind(this) : undefined,\n pointMove: this.chartSettings.pointMove ? this.chartSettings.pointMove.bind(this) : undefined,\n pointClick: this.pointClick.bind(this),\n chartMouseLeave: this.chartSettings.chartMouseLeave ? this.chartSettings.chartMouseLeave.bind(this) : undefined,\n chartMouseDown: this.chartSettings.chartMouseDown ? this.chartSettings.chartMouseDown.bind(this) : undefined,\n chartMouseUp: this.chartSettings.chartMouseUp ? this.chartSettings.chartMouseUp.bind(this) : undefined,\n tooltipRender: this.tooltipRender.bind(this),\n loaded: this.loaded.bind(this),\n load: this.load.bind(this),\n resized: this.resized.bind(this)\n });\n }\n else {\n this.parent.chart = new Chart({\n series: this.chartSeries.length > 0 ? this.chartSeries : [{}],\n legendSettings: currentLegendSettings,\n tooltip: currentTooltipSettings,\n zoomSettings: currentZoomSettings,\n axes: (type === 'Polar' || type === 'Radar') ? [] : axesWithRows.axes,\n rows: (type === 'Polar' || type === 'Radar') ? [{}] :\n (type === 'Bar' || type === 'StackingBar' || type === 'StackingBar100' &&\n this.chartSettings.enableMultipleAxis) ? [{ height: '100%' }] : axesWithRows.rows,\n columns: (type === 'Polar' || type === 'Radar') ? [{}] :\n (type === 'Bar' || type === 'StackingBar' || type === 'StackingBar100' &&\n this.chartSettings.enableMultipleAxis) ? axesWithRows.columns : [{ width: '100%' }],\n primaryYAxis: (type === 'Polar' || type === 'Radar') ? axesWithRows.axes[0] : { visible: false },\n primaryXAxis: currentXAxis,\n width: width,\n height: (this.parent.chartSettings.chartSeries.type !== 'Polar' &&\n this.parent.chartSettings.chartSeries.type !== 'Radar' && this.parent.chartSettings.enableScrollOnMultiAxis &&\n this.parent.chartSettings.enableMultipleAxis && this.parent.dataSourceSettings.values.length > 0) ?\n Number(height) > (this.parent.dataSourceSettings.values.length * 235) + 100 ? isNaN(Number(height)) ?\n height.toString() : (Number(height) - 5).toString() :\n (!isNaN(Number(height)) || this.parent.dataSourceSettings.values.length > 1) ?\n ((this.parent.dataSourceSettings.values.length * 235) + 100).toString() :\n height.toString() : height.toString(),\n title: this.chartSettings.title,\n titleStyle: this.chartSettings.titleStyle,\n subTitle: this.chartSettings.subTitle,\n subTitleStyle: this.chartSettings.subTitleStyle,\n margin: this.chartSettings.margin,\n border: this.chartSettings.border,\n background: this.chartSettings.background,\n chartArea: this.chartSettings.chartArea,\n palettes: this.chartSettings.palettes,\n theme: this.chartSettings.theme,\n crosshair: this.chartSettings.crosshair,\n selectionMode: this.chartSettings.selectionMode,\n isMultiSelect: this.chartSettings.isMultiSelect,\n enableExport: this.chartSettings.enableExport,\n selectedDataIndexes: this.chartSettings.selectedDataIndexes,\n isTransposed: this.chartSettings.isTransposed,\n enableAnimation: this.chartSettings.enableAnimation,\n enableCanvas: this.chartSettings.enableCanvas,\n useGroupingSeparator: this.chartSettings.useGroupingSeparator,\n description: this.chartSettings.description,\n tabIndex: this.chartSettings.tabIndex,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n enableSideBySidePlacement: this.chartSettings.enableSideBySidePlacement,\n beforePrint: this.chartSettings.beforePrint ? this.chartSettings.beforePrint.bind(this) : undefined,\n animationComplete: this.chartSettings.animationComplete ? this.chartSettings.animationComplete.bind(this) : undefined,\n legendRender: this.chartSettings.legendRender ? this.chartSettings.legendRender.bind(this) : undefined,\n textRender: this.chartSettings.textRender ? this.chartSettings.textRender.bind(this) : undefined,\n pointRender: this.chartSettings.pointRender ? this.chartSettings.pointRender.bind(this) : undefined,\n seriesRender: this.chartSettings.seriesRender ? this.chartSettings.seriesRender.bind(this) : undefined,\n axisMultiLabelRender: this.chartSettings.axisMultiLabelRender ? this.chartSettings.axisMultiLabelRender.bind(this) : undefined,\n chartMouseMove: this.chartSettings.chartMouseMove ? this.chartSettings.chartMouseMove.bind(this) : undefined,\n chartMouseClick: this.chartSettings.chartMouseClick ? this.chartSettings.chartMouseClick.bind(this) : undefined,\n pointMove: this.chartSettings.pointMove ? this.chartSettings.pointMove.bind(this) : undefined,\n pointClick: this.pointClick.bind(this),\n chartMouseLeave: this.chartSettings.chartMouseLeave ? this.chartSettings.chartMouseLeave.bind(this) : undefined,\n chartMouseDown: this.chartSettings.chartMouseDown ? this.chartSettings.chartMouseDown.bind(this) : undefined,\n chartMouseUp: this.chartSettings.chartMouseUp ? this.chartSettings.chartMouseUp.bind(this) : undefined,\n dragComplete: this.chartSettings.dragComplete ? this.chartSettings.dragComplete.bind(this) : undefined,\n zoomComplete: this.chartSettings.zoomComplete ? this.chartSettings.zoomComplete.bind(this) : undefined,\n scrollStart: this.chartSettings.scrollStart ? this.chartSettings.scrollStart.bind(this) : undefined,\n scrollEnd: this.chartSettings.scrollEnd ? this.chartSettings.scrollEnd.bind(this) : undefined,\n scrollChanged: this.chartSettings.scrollChanged ? this.chartSettings.scrollChanged.bind(this) : undefined,\n tooltipRender: this.tooltipRender.bind(this),\n loaded: this.loaded.bind(this),\n load: this.load.bind(this),\n resized: this.resized.bind(this),\n axisLabelRender: this.axisLabelRender.bind(this),\n multiLevelLabelClick: this.multiLevelLabelClick.bind(this),\n });\n }\n this.parent.chart.isStringTemplate = true;\n }\n else {\n this.parent.chart.series = this.chartSeries;\n this.parent.chart.title = this.parent.chartSettings.title;\n this.parent.chart.subTitle = this.parent.chartSettings.subTitle;\n this.parent.chart.background = this.parent.chartSettings.background;\n this.parent.chart.theme = this.parent.chartSettings.theme;\n this.parent.chart.legendSettings = currentLegendSettings;\n this.parent.chart.selectionMode = this.parent.chartSettings.selectionMode;\n this.parent.chart.enableExport = this.parent.chartSettings.enableExport;\n this.parent.chart.isMultiSelect = this.parent.chartSettings.isMultiSelect;\n this.parent.chart.enableAnimation = this.parent.chartSettings.enableAnimation;\n this.parent.chart.useGroupingSeparator = this.parent.chartSettings.useGroupingSeparator;\n this.parent.chart.highlightPattern = this.parent.chartSettings.highlightPattern;\n if (this.accumulationType.indexOf(type) > -1) {\n this.parent.chart.enableBorderOnMouseMove = this.parent.chartSettings.enableBorderOnMouseMove;\n this.parent.chart.highLightMode = this.parent.chartSettings.highlightMode;\n this.parent.chart.enableSmartLabels = this.parent.chartSettings.enableSmartLabels;\n }\n else {\n this.parent.chart.palettes = this.parent.chartSettings.palettes;\n this.parent.chart.isTransposed = this.parent.chartSettings.isTransposed;\n this.parent.chart.enableSideBySidePlacement = this.parent.chartSettings.enableSideBySidePlacement;\n this.parent.chart.tabIndex = this.parent.chartSettings.tabIndex;\n this.parent.chart.description = this.parent.chartSettings.description;\n this.parent.chart.enableCanvas = this.parent.chartSettings.enableCanvas;\n }\n if (type === 'Polar' || type === 'Radar') {\n this.parent.chart.primaryXAxis = currentXAxis;\n this.parent.chart.primaryYAxis.visible = true;\n this.parent.chart.primaryYAxis = axesWithRows.axes[0];\n this.parent.chart.axes = [];\n this.parent.chart.rows = [{}];\n }\n else if ((this.accumulationType.indexOf(type) < 0) && this.parent.chart.getModuleName() === 'chart') {\n this.parent.chart.primaryYAxis.visible = false;\n this.parent.chart.primaryXAxis = currentXAxis;\n this.parent.chart.axes = axesWithRows.axes;\n if (type === 'Bar' || type === 'StackingBar' || type === 'StackingBar100' &&\n this.chartSettings.enableMultipleAxis) {\n this.parent.chart.rows = [{ height: '100%' }];\n this.parent.chart.columns = axesWithRows.columns;\n }\n else {\n this.parent.chart.rows = axesWithRows.rows;\n this.parent.chart.columns = [{ width: '100%' }];\n }\n }\n this.parent.chart.refresh();\n if ((this.accumulationType.indexOf(type) > -1) && this.parent.chart.getModuleName() === 'accumulationchart' && (this.parent.dataSourceSettings.rows.length === 0 || this.parent.dataSourceSettings.columns.length === 0)) {\n this.parent.hideWaitingPopup();\n if (this.parent.pivotFieldListModule) {\n hideSpinner(this.parent.pivotFieldListModule.fieldListSpinnerElement);\n }\n }\n }\n if (this.parent.chartSettings.enableScrollOnMultiAxis && this.parent.chartSettings.enableMultipleAxis) {\n this.parent.chart.appendTo('#' + this.parent.element.id + '_chartInner');\n }\n else {\n this.parent.chart.appendTo('#' + this.parent.element.id + '_chart');\n }\n };\n PivotChart.prototype.pointClick = function (args) {\n var dataSource = args.series.dataSource ? args.series.dataSource : this.parent.chart.series[args.seriesIndex].dataSource;\n if (((['Pie', 'Funnel', 'Doughnut', 'Pyramid', 'Radar', 'Polar'].indexOf(this.parent.chartSettings.chartSeries.type) > -1) || !this.parent.chartSettings.showMultiLevelLabels) && this.parent.dataSourceSettings.rows.length > 1) {\n this.pivotIndex = {\n rIndex: dataSource ? dataSource[args.pointIndex].rIndex : undefined,\n cIndex: dataSource ? dataSource[args.pointIndex].cIndex : undefined,\n };\n this.creatMenu();\n var pos = this.parent.element.getBoundingClientRect();\n var y = (this.parent.element.querySelector('.e-pivot-toolbar') ?\n this.parent.element.querySelector('.e-pivot-toolbar').clientHeight : 0) +\n (this.parent.element.querySelector('.e-chart-grouping-bar') ?\n this.parent.element.querySelector('.e-chart-grouping-bar').clientHeight : 0) +\n (window.scrollY || document.documentElement.scrollTop) + pos.top;\n this.accumulationMenu.open(y + args.y, args.x + pos.left + (window.scrollX || document.documentElement.scrollLeft));\n }\n else if ((this.parent.allowDrillThrough || this.parent.editSettings.allowEditing) && this.parent.drillThroughModule) {\n var rIndex = dataSource[args.pointIndex].rIndex;\n var cIndex = dataSource[args.pointIndex].cIndex;\n this.parent.drillThroughModule.executeDrillThrough(this.parent.pivotValues[rIndex][cIndex], rIndex, cIndex);\n }\n this.parent.trigger(events.chartPointClick, args);\n };\n /* eslint-enable */\n PivotChart.prototype.frameAxesWithRows = function () {\n var axes = [];\n var rows = [];\n var columns = [];\n var percentChart = this.persistSettings.chartSeries && (this.persistSettings.chartSeries.type === 'StackingColumn100' ||\n this.persistSettings.chartSeries.type === 'StackingBar100' ||\n this.persistSettings.chartSeries.type === 'StackingArea100');\n var percentAggregateTypes = ['PercentageOfGrandTotal', 'PercentageOfColumnTotal', 'PercentageOfRowTotal',\n 'PercentageOfDifferenceFrom', 'PercentageOfParentRowTotal', 'PercentageOfParentColumnTotal', 'PercentageOfParentTotal'];\n if (this.chartSettings.enableMultipleAxis) {\n var valCnt = 0;\n var divider = (100 / this.dataSourceSettings.values.length) + '%';\n for (var _i = 0, _a = this.dataSourceSettings.values; _i < _a.length; _i++) {\n var item = _a[_i];\n var measureField = this.engineModule.fieldList[item.name];\n var measureAggregatedName = (this.parent.dataType === 'olap' ? '' : (this.parent.localeObj.getConstant(measureField.aggregateType) + ' ' +\n this.parent.localeObj.getConstant('of') + ' ')) + measureField.caption;\n // let formatSetting: IFormatSettings = this.dataSourceSettings.formatSettings.filter((itm: IFormatSettings) => {\n // return itm.name === item.name;\n // })[0];\n var formatSetting = void 0;\n for (var _b = 0, _c = this.dataSourceSettings.formatSettings; _b < _c.length; _b++) {\n var field = _c[_b];\n if (field.name === item.name) {\n formatSetting = field;\n break;\n }\n }\n var format = PivotUtil.inArray(measureField.aggregateType, percentAggregateTypes) !== -1 ? 'P2' : (formatSetting ?\n (formatSetting.format.toLowerCase().match(/n|p|c/) === null ? 'N' : formatSetting.format) :\n this.parent.dataType === 'olap' ? this.getFormat(measureField.formatString) : 'N');\n var resFormat = (this.chartSettings.chartSeries.type === 'Polar' || this.chartSettings.chartSeries.type === 'Radar') ? true : false;\n var currentYAxis = {};\n currentYAxis = this.persistSettings.primaryYAxis ?\n this.frameObjectWithKeys(this.persistSettings.primaryYAxis) : currentYAxis;\n currentYAxis.labelFormat = currentYAxis.labelFormat ?\n currentYAxis.labelFormat : (percentChart ? '' : (!resFormat ? format : 'N'));\n currentYAxis.title = currentYAxis.title ? currentYAxis.title : measureAggregatedName;\n currentYAxis.plotOffsetTop = currentYAxis.plotOffsetTop ? currentYAxis.plotOffsetTop :\n this.chartSettings.chartSeries.type === 'Bar' || this.chartSettings.chartSeries.type === 'StackingBar' ||\n this.chartSettings.chartSeries.type === 'StackingBar100' ? 50 : 30;\n if (!resFormat) {\n currentYAxis.name = this.measuresNames[item.name] ? this.measuresNames[item.name] : item.name;\n }\n axes = axes.concat(currentYAxis);\n if (this.chartSettings.multipleAxisMode === 'Stacked') {\n currentYAxis.rowIndex = valCnt;\n currentYAxis.columnIndex = valCnt;\n rows.push({ height: divider });\n columns.push({ width: divider });\n }\n else {\n currentYAxis.rowIndex = 0;\n currentYAxis.columnIndex = 0;\n rows = [{ height: '100%' }];\n columns = [{ width: '100%' }];\n }\n valCnt++;\n }\n }\n else {\n var measureField = this.engineModule.fieldList[this.currentMeasure];\n var measureAggregatedName = (this.parent.dataType === 'olap' ? '' :\n (this.parent.localeObj.getConstant(measureField.aggregateType) + ' ' +\n this.parent.localeObj.getConstant('of') + ' ')) + measureField.caption;\n // let formatSetting: IFormatSettings = this.dataSourceSettings.formatSettings.filter((item: IFormatSettings) => {\n // return item.name === this.currentMeasure;\n // })[0];\n var formatSetting = void 0;\n for (var _d = 0, _e = this.dataSourceSettings.formatSettings; _d < _e.length; _d++) {\n var item = _e[_d];\n if (item.name === this.currentMeasure) {\n formatSetting = item;\n break;\n }\n }\n var lengthofFormat = void 0;\n if (formatSetting) {\n lengthofFormat = formatSetting.format.length;\n }\n var currentYAxis = {};\n var format = PivotUtil.inArray(measureField.aggregateType, percentAggregateTypes) !== -1 ? 'P2' : (formatSetting ?\n (((formatSetting.format.toLowerCase().match(/n[0-10]|p[0-10]|c[0-10]/) === null) || lengthofFormat > 3) ? 'N' : formatSetting.format) :\n this.parent.dataType === 'olap' ? this.getFormat(measureField.formatString) : 'N');\n currentYAxis = this.persistSettings.primaryYAxis ? this.frameObjectWithKeys(this.persistSettings.primaryYAxis) : currentYAxis;\n currentYAxis.rowIndex = 0;\n currentYAxis.columnIndex = 0;\n if (!(this.chartSettings.chartSeries.type === 'Polar' || this.chartSettings.chartSeries.type === 'Radar')) {\n currentYAxis.name = this.measuresNames[this.currentMeasure] ? this.measuresNames[this.currentMeasure] : this.currentMeasure;\n }\n currentYAxis.labelFormat = currentYAxis.labelFormat ? currentYAxis.labelFormat : (percentChart ? '' : format);\n currentYAxis.title = currentYAxis.title ? currentYAxis.title : measureAggregatedName;\n axes = axes.concat(currentYAxis);\n rows.push({ height: '100%' });\n columns.push({ width: '100%' });\n }\n return { axes: axes, rows: rows, columns: columns };\n };\n PivotChart.prototype.getFormat = function (format) {\n if (format === 'Currency') {\n format = 'C';\n }\n else if (format === 'Percent') {\n format = 'P';\n }\n else {\n format = 'N';\n }\n return format;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotChart.prototype.getColumnTotalIndex = function (pivotValues) {\n var colIndexColl = {};\n var rKeys = Object.keys(pivotValues);\n for (var _i = 0, rKeys_2 = rKeys; _i < rKeys_2.length; _i++) {\n var rowIndex = rKeys_2[_i];\n var rows = pivotValues[Number(rowIndex)];\n var cKeys = void 0;\n if (!isNullOrUndefined(rows)) {\n cKeys = Object.keys(rows);\n for (var _a = 0, cKeys_2 = cKeys; _a < cKeys_2.length; _a++) {\n var cellIndex = cKeys_2[_a];\n var cell = rows[Number(cellIndex)];\n if (!isNullOrUndefined(cell)) {\n if (cell.axis !== 'column') {\n return colIndexColl;\n }\n else if ((cell.type === 'sum' || (this.dataSourceSettings.columns.length === 0 ? false : cell.type === 'grand sum'))\n && cell.rowSpan !== -1) {\n colIndexColl[cell.colIndex] = cell.colIndex;\n }\n }\n }\n }\n }\n return colIndexColl;\n };\n PivotChart.prototype.groupHierarchyWithLevels = function (pivotValues) {\n var _a, _b;\n this.fieldPosition = [];\n var group = {};\n var fieldCount = 0;\n var levelPos = {};\n this.measurePos = this.engineModule.tupRowInfo[0].measurePosition;\n for (var rowPos = 0; rowPos < pivotValues.length; rowPos++) {\n var cell = pivotValues[rowPos][0];\n if (cell && cell.axis === 'row' && cell.type !== 'grand sum') {\n if (isNullOrUndefined(group[cell.hierarchy])) {\n if (cell.memberType === 3) {\n if (fieldCount === this.measurePos) {\n this.fieldPosition[this.measurePos] = cell.hierarchy;\n group[cell.hierarchy] = (_a = {}, _a[cell.levelUniqueName] = cell.levelUniqueName, _a);\n }\n else {\n fieldCount--;\n }\n }\n else {\n this.fieldPosition[fieldCount] = cell.hierarchy;\n group[cell.hierarchy] = (_b = {}, _b[cell.levelUniqueName] = cell.levelUniqueName, _b);\n }\n fieldCount++;\n }\n else {\n group[cell.hierarchy][cell.levelUniqueName] = cell.levelUniqueName;\n }\n }\n }\n var lastEnd = -1;\n for (var pos = 0; pos < this.fieldPosition.length; pos++) {\n if (this.measurePos !== pos) {\n levelPos[this.fieldPosition[pos]] = {\n start: (lastEnd + 1),\n end: (lastEnd + Object.keys(group[this.fieldPosition[pos]]).length)\n };\n lastEnd = levelPos[this.fieldPosition[pos]].end;\n }\n }\n return levelPos;\n };\n /* eslint-disable */\n PivotChart.prototype.frameMultiLevelLabels = function () {\n var startKeys = Object.keys(this.headerColl);\n var parentHeaders = this.headerColl[-0.5];\n for (var _i = 0, startKeys_1 = startKeys; _i < startKeys_1.length; _i++) {\n var startKey = startKeys_1[_i];\n var sKey = Number(startKey);\n var headers = this.headerColl[sKey];\n var levelPos = 0;\n var isAvail = false;\n while (levelPos <= this.maxLevel) {\n if (!isAvail) {\n if (!headers[levelPos]) {\n headers[levelPos] = parentHeaders[levelPos];\n }\n else {\n isAvail = true;\n }\n }\n else if (!headers[levelPos]) {\n headers[levelPos] = {\n name: headers[levelPos - 1].name,\n // text: headers[levelPos - 1].text,\n text: '',\n hasChild: headers[levelPos - 1].hasChild,\n isDrilled: headers[levelPos - 1].isDrilled,\n levelName: headers[levelPos - 1].levelName,\n level: headers[levelPos - 1].level,\n fieldName: headers[levelPos - 1].fieldName,\n rowIndex: headers[levelPos - 1].rowIndex,\n colIndex: headers[levelPos - 1].colIndex,\n span: -1,\n };\n // headers[levelPos - 1].span = 0;\n }\n levelPos++;\n }\n parentHeaders = this.headerColl[sKey];\n }\n var gRows = {};\n for (var _a = 0, startKeys_2 = startKeys; _a < startKeys_2.length; _a++) {\n var startKey = startKeys_2[_a];\n var sKey = Number(startKey);\n var headers = this.headerColl[sKey];\n var lKeys = Object.keys(headers);\n for (var _b = 0, lKeys_1 = lKeys; _b < lKeys_1.length; _b++) {\n var levelKey = lKeys_1[_b];\n var lKey = Number(levelKey);\n if (gRows[lKey]) {\n var len = gRows[lKey].length;\n if (headers[lKey].levelName === parentHeaders[lKey].levelName) {\n gRows[lKey][len - 1].end = gRows[lKey][len - 1].end + 1;\n }\n else {\n gRows[lKey].push({\n start: sKey, end: sKey + 1, text: headers[lKey].text,\n type: (headers[lKey].span === -1 ? 'WithoutTopandBottomBorder' : 'WithoutTopBorder'),\n customAttributes: headers[lKey]\n });\n }\n }\n else {\n gRows[lKey] = [{\n start: sKey, end: sKey + 1, text: headers[lKey].text,\n type: (headers[lKey].span === -1 ? 'WithoutTopandBottomBorder' : 'WithoutTopBorder'),\n customAttributes: headers[lKey]\n }];\n }\n }\n parentHeaders = headers;\n }\n var levellength = Object.keys(gRows).length;\n var multiLevelLabels = [];\n for (var level = levellength - 1; level > -1; level--) {\n multiLevelLabels.push({ categories: gRows[level], border: { width: 1 }, overflow: 'Trim' });\n }\n return multiLevelLabels;\n };\n /* eslint-enable */\n PivotChart.prototype.getZoomFactor = function () {\n if (!isNaN(Number(this.parent.width))) {\n this.calculatedWidth = Number(this.parent.width);\n }\n else if (this.parent.width.indexOf('%') > -1) {\n this.calculatedWidth = this.parent.element.clientWidth * (parseFloat(this.parent.width) / 100);\n }\n else if (this.parent.width.indexOf('px') > -1) {\n this.calculatedWidth = Number(this.parent.width.toString().split('px')[0]);\n }\n else {\n this.calculatedWidth = this.parent.element.clientWidth;\n }\n var seriesLength = (this.chartSeries.length * 10) > 120 ? (this.chartSeries.length * 10) : 120;\n var zoomFactor = this.chartSeries.length > 0 ?\n (this.calculatedWidth / (Object.keys(this.chartSeries[0].dataSource).length * seriesLength)) : 1;\n zoomFactor = (zoomFactor < 1 && zoomFactor > 0) ? zoomFactor : 1;\n return zoomFactor;\n };\n PivotChart.prototype.configTooltipSettings = function () {\n var tooltip = this.persistSettings.tooltip ? this.persistSettings.tooltip : this.chartSettings.tooltip;\n tooltip.enable = tooltip.enable === undefined ? true : tooltip.enable;\n if (tooltip.enable && tooltip.template) {\n this.templateFn = this.parent.templateParser(tooltip.template);\n }\n if (this.parent.tooltipTemplate) {\n tooltip.template = tooltip.template ? tooltip.template : this.parent.tooltipTemplate;\n }\n if (isBlazor()) {\n this.parent.allowServerDataBinding = false;\n this.parent.setProperties({ chartSettings: { tooltip: { header: tooltip.header ? tooltip.header : '' } } }, true);\n this.parent.allowServerDataBinding = true;\n }\n else {\n tooltip.header = tooltip.header ? tooltip.header : '';\n }\n tooltip.enableMarker = tooltip.enableMarker === undefined ? true : tooltip.enableMarker;\n return tooltip;\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n PivotChart.prototype.configLegendSettings = function () {\n var legendSettings = {};\n if (this.chartSettings.legendSettings) {\n var keyPos = 0;\n var keys = Object.keys(this.chartSettings.legendSettings);\n while (keyPos < keys.length) {\n legendSettings[keys[keyPos]] = this.chartSettings.legendSettings[keys[keyPos]];\n keyPos++;\n }\n }\n if (this.accumulationType.indexOf(this.chartSettings.chartSeries.type) > -1 && legendSettings.visible === undefined) {\n legendSettings.visible = false;\n }\n legendSettings.padding = legendSettings.padding ? legendSettings.padding : 25;\n legendSettings.shapePadding = legendSettings.shapePadding ? legendSettings.shapePadding : 10;\n return legendSettings;\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n PivotChart.prototype.configXAxis = function () {\n var currentXAxis = {};\n currentXAxis = this.persistSettings.primaryXAxis ? this.frameObjectWithKeys(this.persistSettings.primaryXAxis) : currentXAxis;\n currentXAxis.valueType = 'Category';\n currentXAxis.labelIntersectAction = currentXAxis.labelIntersectAction ? currentXAxis.labelIntersectAction : 'Rotate45';\n currentXAxis.title = currentXAxis.title ? currentXAxis.title :\n this.dataSourceSettings.rows.map(function (args) {\n return args.caption || args.name;\n }).join(' / ');\n currentXAxis.zoomFactor = isNullOrUndefined(this.parent.chartSettings.primaryXAxis.zoomFactor) ? this.getZoomFactor() : this.parent.chartSettings.primaryXAxis.zoomFactor;\n if (!this.parent.chartSettings.zoomSettings.enableScrollbar) {\n currentXAxis.zoomFactor = 1;\n }\n if (this.chartSettings.showMultiLevelLabels && this.chartSettings.chartSeries.type !== 'Pareto') {\n currentXAxis.multiLevelLabels = this.frameMultiLevelLabels();\n currentXAxis.border = { width: 1, type: 'WithoutTopandBottomBorder' };\n currentXAxis.majorTickLines = { width: 0, height: -10 };\n }\n else {\n currentXAxis.multiLevelLabels = [];\n currentXAxis.border = { width: 1, type: 'Rectangle' };\n currentXAxis.majorTickLines = { width: 0, height: 5 };\n }\n return currentXAxis;\n };\n PivotChart.prototype.configZoomSettings = function () {\n var zoomSettings = this.chartSettings.zoomSettings;\n zoomSettings.enableSelectionZooming = zoomSettings.enableSelectionZooming === undefined ? true :\n zoomSettings.enableSelectionZooming;\n zoomSettings.enableScrollbar = zoomSettings.enableScrollbar === undefined ? true : zoomSettings.enableScrollbar;\n return zoomSettings;\n };\n PivotChart.prototype.tooltipRender = function (args) {\n var measure = args.series.yAxisName ? (args.series.yAxisName.split('_CumulativeAxis')[0]) :\n ((this.chartSettings.enableMultipleAxis && this.accumulationType.indexOf(this.chartSettings.chartSeries.type) < 0) ?\n args.series.name ? args.series.name.split(' | ')[1] : args.data.seriesName ?\n args.data.seriesName.split(' | ')[1] : this.currentMeasure : this.measuresNames[this.currentMeasure] ?\n this.measuresNames[this.currentMeasure] : this.currentMeasure);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n var dataSource = args.series.dataSource ? args.series.dataSource : this.parent.chart.series[args.data.seriesIndex].dataSource;\n var rowIndex = dataSource ? dataSource[args.data.pointIndex].rIndex : undefined;\n var colIndex = dataSource ? dataSource[args.data.pointIndex].cIndex : undefined;\n var measureField = this.engineModule.fieldList[this.measuresNames[measure] ? this.measuresNames[measure] : measure];\n var aggregateType = this.parent.dataType === 'olap' ? '' : this.parent.localeObj.getConstant(measureField.aggregateType);\n var measureAggregatedName = (this.parent.dataType === 'olap' ? '' : aggregateType + ' ' +\n this.parent.localeObj.getConstant('of') + ' ') + measureField.caption;\n var formattedText = this.accumulationType.indexOf(this.parent.chartSettings.chartSeries.type) < 0 ?\n args.text.split('')[1].split('')[0] : this.engineModule.pivotValues[rowIndex][colIndex].formattedText;\n var formatField = this.engineModule.formatFields[measureField.id];\n var formattedValue = ((formatField && formatField.format && formatField.format.toLowerCase().match(/n|p|c/) !== null &&\n this.chartSettings.useGroupingSeparator) ? this.parent.dataType === 'olap' ?\n this.engineModule.getFormattedValue(args.point.y, measureField.id, formattedText) :\n this.parent.engineModule.getFormattedValue(args.point.y, measureField.id).formattedText :\n formattedText);\n var columnText = (args.series.name ? args.series.name.split(' | ')[0] : args.data.seriesName.split(' | ')[0]);\n var rowText = args.point.x;\n if (this.parent.tooltipTemplate && this.parent.getTooltipTemplate() !== undefined || this.chartSettings.tooltip.template) {\n var rowFields = dataSource ? this.parent.getHeaderField(rowIndex, colIndex, 'row') : '';\n var columnFields = dataSource ? this.parent.getHeaderField(rowIndex, colIndex, 'Column') : '';\n var templateVariable = {\n rowHeaders: rowText,\n columnHeaders: columnText,\n aggregateType: aggregateType,\n value: formattedValue,\n valueField: measureField.caption,\n rowFields: rowFields,\n columnFields: columnFields\n };\n var template = void 0;\n if (this.parent.chartSettings && this.parent.chartSettings.tooltip &&\n this.parent.chartSettings.tooltip.enable && this.parent.chartSettings.tooltip.template) {\n template = this.tooltipTemplateFn()(templateVariable, this, 'tooltipTemplate', this.element.id + '1tooltipTemplate')[0].outerHTML;\n }\n else {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n template = this.parent.getTooltipTemplate()(templateVariable, this, 'tooltipTemplate', this.element.id + 'tooltipTemplate')[0].outerHTML;\n }\n args.template = template;\n }\n else {\n args.text = measureAggregatedName + ': ' + formattedValue +\n (this.dataSourceSettings.columns.length === 0 ? '' :\n ('
' + this.parent.localeObj.getConstant('column') + ': ' + columnText)) +\n (this.dataSourceSettings.rows.length === 0 ? '' :\n ('
' + this.parent.localeObj.getConstant('row') + ': ' + rowText));\n this.parent.trigger(events.chartTooltipRender, args);\n }\n };\n PivotChart.prototype.tooltipTemplateFn = function () {\n return this.templateFn;\n };\n PivotChart.prototype.loaded = function (args) {\n this.parent.isChartLoaded = true;\n if (this.parent.chart && this.parent.showGroupingBar && this.parent.groupingBarModule &&\n this.parent.showFieldList && this.parent.currentView === 'Chart') {\n this.parent.groupingBarModule.alignIcon();\n }\n if (this.chartSettings.showMultiLevelLabels) {\n var multilabelAxisName = PivotUtil.inArray(this.chartSettings.chartSeries.type, ['Bar', 'StackingBar', 'StackingBar100']) > -1 ?\n '_chartYAxisMultiLevelLabel0' : '_chartXAxisMultiLevelLabel0';\n if (!isNullOrUndefined(select('#' + this.parent.element.id + multilabelAxisName, this.parent.element))) {\n this.parent.element.querySelector('#' + this.parent.element.id + multilabelAxisName).setAttribute('cursor', 'pointer');\n }\n }\n if ((['Pie', 'Funnel', 'Pyramid', 'Doughnut', 'Radar', 'Polar'].indexOf(this.parent.chartSettings.chartSeries.type) >= 0)\n && this.parent.chartSettings.enableScrollOnMultiAxis && this.parent.chartSettings.enableMultipleAxis) {\n this.parent.element.querySelector('.' + cls.PIVOTCHART).style.overflow = 'visible';\n }\n else if (this.parent.chartSettings.enableScrollOnMultiAxis && this.parent.chartSettings.enableMultipleAxis) {\n this.parent.element.querySelector('.' + cls.PIVOTCHART).style.overflow = 'auto';\n this.parent.element.querySelector('.' + cls.PIVOTCHART).style.overflowX = 'hidden';\n }\n this.parent.chart.height = ['Pie', 'Funnel', 'Pyramid', 'Doughnut', 'Radar', 'Polar'].indexOf(this.parent.chartSettings.chartSeries.type) < 0 &&\n this.parent.chartSettings.enableScrollOnMultiAxis && this.parent.chartSettings.enableMultipleAxis &&\n this.parent.dataSourceSettings.values.length > 0 ? Number(this.parent.chart.height) > (this.parent.dataSourceSettings.values.length * 235) + 100 ? /* eslint-disable-line */\n isNaN(Number(this.getChartHeight())) ? this.getChartHeight().toString() : (Number(this.getChartHeight()) - 5).toString() :\n (!isNaN(Number(this.getChartHeight())) || this.parent.dataSourceSettings.values.length > 1) ?\n ((this.parent.dataSourceSettings.values.length * 235) + 100).toString() :\n this.getChartHeight().toString() : this.getChartHeight().toString();\n this.updateView();\n this.parent.notify(events.contentReady, {});\n this.parent.trigger(events.chartLoaded, args);\n if ((this.parent.dataSourceSettings.mode === 'Server' && this.parent.isServerWaitingPopup) || this.parent.dataSourceSettings.mode === 'Local') {\n this.parent.hideWaitingPopup();\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotChart.prototype.updateView = function () {\n if (this.parent.grid && this.parent.chart && this.parent.showToolbar) {\n if (this.parent.currentView === 'Table') {\n this.parent.grid.element.style.display = '';\n this.parent.chart.element.style.display = 'none';\n if (this.parent.showGroupingBar && this.parent.groupingBarModule &&\n this.parent.element.querySelector('.e-pivot-grouping-bar') &&\n this.parent.element.querySelector('.e-chart-grouping-bar')) {\n this.parent.element.querySelector('.e-pivot-grouping-bar').style.display = '';\n this.parent.element.querySelector('.e-chart-grouping-bar').style.display = 'none';\n }\n if (this.parent.chartSettings.enableMultipleAxis && this.parent.chartSettings.enableScrollOnMultiAxis) {\n this.parent.element.querySelector('.e-pivotchart').style.display = 'none';\n }\n }\n else {\n this.parent.grid.element.style.display = 'none';\n this.parent.chart.element.style.display = '';\n if (this.parent.showGroupingBar && this.parent.groupingBarModule &&\n this.parent.element.querySelector('.e-pivot-grouping-bar') &&\n this.parent.element.querySelector('.e-chart-grouping-bar')) {\n this.parent.element.querySelector('.e-pivot-grouping-bar').style.display = 'none';\n this.parent.element.querySelector('.e-chart-grouping-bar').style.display = '';\n }\n if (this.parent.chartSettings.enableMultipleAxis && this.parent.chartSettings.enableScrollOnMultiAxis) {\n this.parent.element.querySelector('.e-pivotchart').style.display = '';\n }\n }\n }\n };\n PivotChart.prototype.creatMenu = function () {\n if (this.accumulationMenu && !this.accumulationMenu.isDestroyed) {\n this.accumulationMenu.destroy();\n }\n var items = ((this.parent.allowDrillThrough || this.parent.editSettings.allowEditing)\n && this.parent.drillThroughModule) ? ['expand', 'collapse', 'drillThrough', 'exit'] :\n ['expand', 'collapse', 'exit'];\n var option = [];\n for (var i = 0; i < items.length; i++) {\n option.push({\n id: this.parent.element.id + '_DrillMenuChart_' + items[i],\n text: this.parent.localeObj.getConstant(items[i]),\n items: []\n });\n }\n var getString = this.getMenuItems();\n var expand = [];\n var collapse = [];\n for (var i = 0; i < getString.length; i++) {\n if (getString[i].type === 'expand') {\n expand.push({ id: this.element.id + 'drillExpand_' + getString[i].key, text: getString[i].value });\n }\n else {\n collapse.push({ id: this.element.id + 'drillCollapse_' + getString[i].key, text: getString[i].value });\n }\n }\n if (expand.length > 0) {\n option[0].items = expand;\n }\n if (collapse.length > 0) {\n option[1].items = collapse;\n }\n var menuOptions = {\n cssClass: this.parent.element.id + '_accumulationChart',\n items: option,\n enableRtl: this.parent.enableRtl,\n beforeOpen: this.drillMenuOpen.bind(this),\n select: this.drillMenuSelect.bind(this),\n locale: this.parent.locale\n };\n this.accumulationMenu = new ContextMenu(menuOptions);\n var contextMenu;\n if (select('#' + this.parent.element.id + '_accumulationChart', this.parent.element)) {\n contextMenu = select('#' + this.parent.element.id + '_accumulationChart', this.parent.element);\n contextMenu.innerHTML = '';\n }\n else {\n contextMenu = createElement('ul', {\n id: this.parent.element.id + '_accumulationChart'\n });\n this.parent.element.appendChild(contextMenu);\n }\n this.accumulationMenu.isStringTemplate = true;\n this.accumulationMenu.appendTo(contextMenu);\n };\n PivotChart.prototype.drillMenuOpen = function (args) {\n if (args.items[0] && args.items[0].text === this.parent.localeObj.getConstant('expand') &&\n args.items[0].items && args.items[0].items.length === 0) {\n this.accumulationMenu.enableItems([this.parent.localeObj.getConstant('expand')], false);\n }\n if (args.items[1] && args.items[1].text === this.parent.localeObj.getConstant('collapse') &&\n args.items[1].items && args.items[1].items.length === 0) {\n this.accumulationMenu.enableItems([this.parent.localeObj.getConstant('collapse')], false);\n }\n };\n PivotChart.prototype.getMenuItems = function () {\n var rowIndex = this.pivotIndex.rIndex;\n var menuItem = [];\n var pivotValues = this.engineModule.pivotValues;\n var levelCol = [];\n var pivotValue = pivotValues[rowIndex][this.pivotIndex.cIndex];\n // let hierarchy: string = pivotValues[rowIndex][0].hierarchy;\n var level = (!pivotValues[rowIndex][0].isNamedSet && pivotValues[rowIndex][0].hasChild) ?\n pivotValues[rowIndex][0].level : undefined;\n var levels = this.parent.dataType === 'olap' ? pivotValue.rowHeaders.toString().split(/~~|::/)\n : pivotValue.rowHeaders.toString().split(this.engineModule.valueSortSettings.headerDelimiter);\n while (pivotValues[rowIndex][0]) {\n pivotValue = pivotValues[rowIndex][0];\n if ((levels.length !== 0) && (levels.indexOf(pivotValue.formattedText.toString()) === (levels.length - 1))) {\n if (pivotValue.hasChild && !pivotValue.isNamedSet && levelCol.indexOf(pivotValue.level) < 0 &&\n (level ? level >= pivotValue.level : (level === 0 ? (pivotValue.level === 0) : true))) {\n if (!(pivotValue.isDrilled && pivotValue.hasChild)) {\n menuItem.push({\n key: rowIndex,\n type: 'expand',\n value: pivotValue.formattedText\n });\n }\n else {\n menuItem.push({\n key: rowIndex,\n type: 'collapse',\n value: pivotValue.formattedText\n });\n }\n levelCol.push(pivotValue.level);\n level = level ? (level - 1) : (pivotValue.level - 1);\n }\n var index = levels.indexOf(pivotValue.formattedText.toString());\n levels.splice(index, 1);\n }\n if (pivotValue.level === 0 && pivotValue.hasChild && !pivotValue.isNamedSet) {\n level = undefined;\n levelCol = [];\n }\n rowIndex--;\n }\n return menuItem;\n };\n PivotChart.prototype.drillMenuSelect = function (args) {\n var pivotValues = (this.parent.dataType === 'olap' ?\n this.parent.olapEngineModule.pivotValues : this.parent.engineModule.pivotValues);\n var option = (args.element.id).split('_DrillMenuChart_')[1];\n if (args.element.id.indexOf(this.element.id + 'drill') === 0) {\n var type = args.element.id.split(this.element.id + 'drill')[1].indexOf('Expand') >= 0 ? 'drillExpand' : 'drillCollapse';\n var rowIndex = Number(args.element.id.split(this.element.id + type + '_')[1]);\n var pivotValue = pivotValues[rowIndex][0];\n var name_2 = this.parent.dataType === 'olap' ? pivotValue.formattedText :\n (pivotValue.actualText ? pivotValue.actualText.toString() : pivotValue.formattedText.toString());\n var text = pivotValue.formattedText ? pivotValue.formattedText.toString() : name_2;\n var caption = (pivotValue.hasChild && !pivotValue.isNamedSet) ?\n ((pivotValue.isDrilled ? ' - ' : ' + ') + text) : text;\n var tupInfo = this.parent.dataType === 'olap' ?\n this.engineModule.tupRowInfo[pivotValue.ordinal] : undefined;\n var levelName = tupInfo ? tupInfo.uNameCollection : pivotValue.valueSort.levelName.toString();\n var customAttributes = {\n fieldName: pivotValue.valueSort.axis,\n level: pivotValue.level,\n hasChild: pivotValue.hasChild,\n levelName: levelName,\n name: name_2,\n text: caption,\n rowIndex: rowIndex,\n colIndex: 0,\n isDrilled: pivotValue.isDrilled,\n cell: pivotValue\n };\n if (this.parent.dataType === 'olap') {\n this.parent.onDrill(undefined, customAttributes);\n }\n else {\n this.onDrill({ customAttributes: customAttributes });\n }\n }\n else if (option === 'drillThrough') {\n this.parent.drillThroughModule.executeDrillThrough(pivotValues[this.pivotIndex.rIndex][this.pivotIndex.cIndex], this.pivotIndex.rIndex, this.pivotIndex.rIndex); /* eslint-disable-line */\n }\n else if (option === 'exit') {\n this.accumulationMenu.close();\n }\n };\n PivotChart.prototype.getChartHeight = function () {\n var height;\n var offSetHeight;\n if (isNullOrUndefined(this.parent.getHeightAsNumber())) {\n height = 'auto';\n }\n else {\n var offSetVal = this.parent.showToolbar ? 6 : 5;\n height = (this.parent.getHeightAsNumber() - offSetVal).toString();\n offSetHeight = this.parent.getHeightAsNumber() - offSetVal;\n }\n if (!isNullOrUndefined(this.parent.getHeightAsNumber())) {\n if (this.parent.showToolbar && this.parent.showGroupingBar) {\n height = (offSetHeight - (this.parent.element.querySelector('.e-pivot-toolbar') ?\n this.parent.element.querySelector('.e-pivot-toolbar').clientHeight : 42) -\n (this.parent.element.querySelector('.e-chart-grouping-bar') ?\n this.parent.element.querySelector('.e-chart-grouping-bar').clientHeight : 62)).toString();\n }\n else if (this.parent.showToolbar) {\n height = (offSetHeight - (this.parent.element.querySelector('.e-pivot-toolbar') ?\n this.parent.element.querySelector('.e-pivot-toolbar').clientHeight : 42)).toString();\n }\n else if (this.parent.showGroupingBar) {\n height = (offSetHeight - (this.parent.element.querySelector('.e-chart-grouping-bar') ?\n this.parent.element.querySelector('.e-chart-grouping-bar').clientHeight : 62)).toString();\n }\n else if ((this.parent.chart && parseInt(this.parent.chart.height, 10) < 200) || offSetHeight < 200) {\n height = '200';\n }\n }\n else {\n height = 'auto';\n }\n return height;\n };\n PivotChart.prototype.getChartAutoHeight = function () {\n var height = this.parent.element.offsetHeight;\n if (this.parent.showToolbar && this.parent.showGroupingBar) {\n height = this.parent.element.offsetHeight - (this.parent.element.querySelector('.e-pivot-toolbar') ?\n this.parent.element.querySelector('.e-pivot-toolbar').clientHeight : 42) -\n (this.parent.element.querySelector('.e-chart-grouping-bar') ?\n this.parent.element.querySelector('.e-chart-grouping-bar').clientHeight : 62);\n }\n else if (this.parent.showToolbar) {\n height = this.parent.element.offsetHeight - (this.parent.element.querySelector('.e-pivot-toolbar') ?\n this.parent.element.querySelector('.e-pivot-toolbar').clientHeight : 42);\n }\n else if (this.parent.showGroupingBar) {\n height = this.parent.element.offsetHeight - (this.parent.element.querySelector('.e-chart-grouping-bar') ?\n this.parent.element.querySelector('.e-chart-grouping-bar').clientHeight : 62);\n }\n return height;\n };\n PivotChart.prototype.axisLabelRender = function (args) {\n if (this.chartSettings.showMultiLevelLabels && this.chartSettings.chartSeries.type !== 'Pareto') {\n if (args.axis.name === 'primaryXAxis') {\n args.text = '';\n }\n }\n this.parent.trigger(events.chartAxisLabelRender, args);\n };\n PivotChart.prototype.multiLevelLabelClick = function (args) {\n var eventArgs = {\n axis: args.axis,\n text: args.text,\n cell: !isNullOrUndefined(args.customAttributes) ? args.customAttributes.cell : undefined,\n cancel: false\n };\n this.parent.trigger(events.multiLevelLabelClick, eventArgs);\n if (!eventArgs.cancel && args.customAttributes && args.customAttributes.hasChild && !args.customAttributes.cell.isNamedSet) { /* eslint-disable-line */\n if (this.parent.dataType === 'olap') {\n this.parent.onDrill(undefined, args.customAttributes);\n }\n else {\n this.onDrill(args);\n }\n }\n };\n /* eslint-disable */\n /** @hidden */\n PivotChart.prototype.onDrill = function (args) {\n var labelInfo = args.customAttributes;\n /* eslint-enable */\n var delimiter = (this.dataSourceSettings.drilledMembers[0] && this.dataSourceSettings.drilledMembers[0].delimiter) ?\n this.dataSourceSettings.drilledMembers[0].delimiter : '**';\n var fieldName = labelInfo.fieldName;\n var currentCell = this.engineModule.pivotValues[labelInfo.rowIndex][labelInfo.colIndex];\n var memberUqName = currentCell.valueSort.levelName.\n split(this.engineModule.valueSortSettings.headerDelimiter).join(delimiter);\n var fieldAvail = false;\n if (this.dataSourceSettings.drilledMembers.length === 0) {\n this.parent.setProperties({\n dataSourceSettings: { drilledMembers: [{ name: fieldName, items: [memberUqName], delimiter: delimiter }] }\n }, true);\n }\n else {\n for (var fCnt = 0; fCnt < this.dataSourceSettings.drilledMembers.length; fCnt++) {\n var field = this.dataSourceSettings.drilledMembers[fCnt];\n memberUqName = memberUqName.split(delimiter).join(field.delimiter ? field.delimiter : delimiter);\n delimiter = field.delimiter = field.delimiter ? field.delimiter : delimiter;\n if (field.name === fieldName) {\n fieldAvail = true;\n var memIndex = field.items.indexOf(memberUqName);\n if (memIndex > -1) {\n field.items.splice(memIndex, 1);\n }\n else {\n field.items.push(memberUqName);\n }\n }\n else {\n continue;\n }\n }\n if (!fieldAvail) {\n this.dataSourceSettings.drilledMembers.push({ name: fieldName, items: [memberUqName], delimiter: delimiter });\n }\n }\n this.parent.showWaitingPopup();\n var pivot = this; /* eslint-disable-line */\n //setTimeout(() => {\n var drilledItem = {\n fieldName: fieldName, memberName: memberUqName, delimiter: delimiter,\n axis: 'row',\n action: labelInfo.isDrilled ? 'up' : 'down',\n currentCell: currentCell\n };\n var drillArgs = {\n drillInfo: drilledItem,\n pivotview: isBlazor() ? undefined : pivot.parent\n };\n pivot.parent.trigger(events.drill, drillArgs);\n var enginePopulatingEventArgs = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings)\n };\n this.parent.trigger(events.enginePopulating, enginePopulatingEventArgs);\n this.parent.setProperties({ dataSourceSettings: enginePopulatingEventArgs.dataSourceSettings }, true);\n if (pivot.parent.enableVirtualization) {\n if (isBlazor()) {\n /* eslint-disable */\n var sfBlazor = 'sfBlazor';\n var dataSourceSettings = window[sfBlazor].copyWithoutCircularReferences([pivot.dataSourceSettings], pivot.dataSourceSettings);\n var drillItem = window[sfBlazor].copyWithoutCircularReferences([drilledItem], drilledItem);\n var args_1 = window[sfBlazor].copyWithoutCircularReferences([drillArgs], drillArgs);\n pivot.parent.interopAdaptor.invokeMethodAsync('PivotInteropMethod', 'onDrill', { 'dataSourceSettings': dataSourceSettings, 'drilledItem': drillItem }).then(function (data) {\n pivot.parent.updateBlazorData(data, pivot.parent);\n pivot.parent.engineModule.drilledMembers = pivot.dataSourceSettings.drilledMembers;\n pivot.parent.allowServerDataBinding = false;\n pivot.parent.setProperties({ pivotValues: pivot.engineModule.pivotValues }, true);\n delete pivot.parent.bulkChanges.pivotValues;\n pivot.parent.allowServerDataBinding = true;\n pivot.parent.renderPivotGrid();\n });\n /* eslint-enable */\n }\n else if (pivot.parent.dataSourceSettings.mode === 'Server') {\n pivot.parent.getEngine('onDrill', drilledItem, null, null, null, null, null);\n }\n else {\n pivot.engineModule.drilledMembers = pivot.dataSourceSettings.drilledMembers;\n pivot.engineModule.onDrill(drilledItem);\n }\n }\n else if (pivot.parent.dataSourceSettings.mode === 'Server') {\n pivot.parent.getEngine('onDrill', drilledItem, null, null, null, null, null);\n }\n else {\n pivot.engineModule.generateGridData(pivot.dataSourceSettings);\n }\n pivot.parent.allowServerDataBinding = false;\n pivot.parent.setProperties({ pivotValues: pivot.engineModule.pivotValues }, true);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n delete pivot.parent.bulkChanges.pivotValues;\n pivot.parent.allowServerDataBinding = true;\n var eventArgs = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings),\n pivotValues: this.parent.pivotValues\n };\n this.parent.trigger(events.enginePopulated, eventArgs);\n pivot.engineModule.pivotValues = eventArgs.pivotValues;\n pivot.parent.renderPivotGrid();\n //});\n };\n PivotChart.prototype.isAttributeDrill = function (hierarchy, drillInfo) {\n var isDrill = false;\n for (var i = 0; i < this.dataSourceSettings.drilledMembers.length; i++) {\n if (this.dataSourceSettings.drilledMembers[i].name === hierarchy) {\n for (var j = 0; j < this.dataSourceSettings.drilledMembers[i].items.length; j++) {\n var drillItems = this.dataSourceSettings.drilledMembers[i].items[j].split(this.dataSourceSettings.drilledMembers[i].delimiter);\n var levelName = '';\n for (var k = 0; k < drillItems.length; k++) {\n if (drillInfo[k] && drillInfo[k].uName) {\n levelName = levelName + (levelName === '' ? '' : this.dataSourceSettings.drilledMembers[i].delimiter) + (drillInfo[k].uName.indexOf('[Measures]') > -1 ? '[Measures]' : drillInfo[k].uName);\n }\n }\n if (levelName === this.dataSourceSettings.drilledMembers[i].items[j]) {\n isDrill = true;\n break;\n }\n }\n }\n }\n return isDrill;\n };\n PivotChart.prototype.load = function (args) {\n if (args.chart.zoomModule) {\n args.chart.zoomModule.isZoomed = true;\n }\n this.parent.trigger(events.chartLoad, args);\n };\n PivotChart.prototype.resized = function (args) {\n if (isBlazor()) {\n args.chart = this.parent.chart;\n }\n if (this.accumulationType.indexOf(this.chartSettings.chartSeries.type) < 0) {\n args.chart.primaryXAxis.zoomFactor = isNullOrUndefined(this.parent.chartSettings.primaryXAxis.zoomFactor) ? this.getZoomFactor() : this.parent.chartSettings.primaryXAxis.zoomFactor;\n if (!this.parent.chartSettings.zoomSettings.enableScrollbar) {\n args.chart.primaryXAxis.zoomFactor = isNullOrUndefined(this.parent.chartSettings.primaryXAxis.zoomFactor) ? 1 : this.parent.chartSettings.primaryXAxis.zoomFactor;\n }\n }\n this.parent.trigger(events.chartResized, args);\n };\n /**\n * To destroy the chart module\n * @returns {void}\n * @hidden\n */\n PivotChart.prototype.destroy = function () {\n if (this.parent && this.parent.isDestroyed) {\n return;\n }\n if (this.engineModule) {\n this.engineModule.fieldList = {};\n this.engineModule = {};\n }\n if (this.chartSeries) {\n this.chartSeries = null;\n }\n if (this.columnGroupObject) {\n this.columnGroupObject = null;\n }\n if (this.chartSettings) {\n this.chartSettings = null;\n }\n if (this.dataSourceSettings) {\n this.dataSourceSettings = null;\n }\n if (this.accumulationMenu && !this.accumulationMenu.isDestroyed) {\n this.accumulationMenu.destroy();\n this.accumulationMenu = null;\n }\n if (this.parent && this.parent.chart && !this.parent.chart.isDestroyed) {\n this.parent.chart.destroy();\n this.parent.chart = null;\n }\n else {\n return;\n }\n };\n return PivotChart;\n}());\nexport { PivotChart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Theme } from '../../common/base/themes';\n/**\n * Allows to configure the animation behavior for chart series such as animation duration and delay.\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], Animation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Allows to customize specific region for line type series with a variety of means such as value, color, pattern of dashes.\n */\nvar ChartSegment = /** @class */ (function (_super) {\n __extends(ChartSegment, _super);\n function ChartSegment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"color\", void 0);\n __decorate([\n Property('0')\n ], ChartSegment.prototype, \"dashArray\", void 0);\n return ChartSegment;\n}(ChildProperty));\nexport { ChartSegment };\n/**\n * Allows to customize the apprearance of the text in the chart such as font style, font size, font weight, font color, font family, text alignment, opacity, text overflow.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('16px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], Font.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n __decorate([\n Property('Trim')\n ], Font.prototype, \"textOverflow\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Allow options to customize the left, right, top and bottom margins of the pivot chart.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Allow options to customize the border of the chart such as color and border size in the pivot chart.\n * For example, to display the chart border color as red, set the properties `color` to either **\"red\"**\n * or **\"#FF0000\"** or **\"rgba(255,0,0,1.0)\"** and `width` to **0.5**.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Allows to configure the position of the marker such as top and left in the chart.\n */\nvar Offset = /** @class */ (function (_super) {\n __extends(Offset, _super);\n function Offset() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Offset.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Offset.prototype, \"y\", void 0);\n return Offset;\n}(ChildProperty));\nexport { Offset };\n/**\n * Allows you to highlight a specific point of the series while rendering the pivot chart.\n * For example, to highlight first point in the first series, set the properties series to 0 and points to 1. To use this option, it requires the property `selectionMode` to be **Point** or **Series**.\n * @public\n */\nvar Indexes = /** @class */ (function (_super) {\n __extends(Indexes, _super);\n function Indexes() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Indexes.prototype, \"series\", void 0);\n __decorate([\n Property(0)\n ], Indexes.prototype, \"point\", void 0);\n return Indexes;\n}(ChildProperty));\nexport { Indexes };\n/**\n * Allow options to customize the chart area with a variety of settings such as background color, border, opacity and background image in the pivot chart.\n * For example, to change the of the pivot chart's background, set the property `opacity` to **0.5**.\n */\nvar ChartArea = /** @class */ (function (_super) {\n __extends(ChartArea, _super);\n function ChartArea() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Border)\n ], ChartArea.prototype, \"border\", void 0);\n __decorate([\n Property('transparent')\n ], ChartArea.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], ChartArea.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"backgroundImage\", void 0);\n return ChartArea;\n}(ChildProperty));\nexport { ChartArea };\n/**\n * Allow options to customize the crosshair line with different settings such as color and width of the line,\n * line types that are shown horizontally and vertically to indicate the value of the axis at the mouse hover or touch position in the pivot chart.\n */\nvar CrosshairSettings = /** @class */ (function (_super) {\n __extends(CrosshairSettings, _super);\n function CrosshairSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Complex({ color: null, width: 1 }, Border)\n ], CrosshairSettings.prototype, \"line\", void 0);\n __decorate([\n Property('Both')\n ], CrosshairSettings.prototype, \"lineType\", void 0);\n return CrosshairSettings;\n}(ChildProperty));\nexport { CrosshairSettings };\n/**\n * Allows to configure the data label with different settings such as name, fill color, opacity, rotation angle, border, marging, etc in the chart.\n */\nvar DataLabelSettings = /** @class */ (function (_super) {\n __extends(DataLabelSettings, _super);\n function DataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], DataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], DataLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], DataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Property('Auto')\n ], DataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property('Center')\n ], DataLabelSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], DataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 5, right: 5, top: 5, bottom: 5 }, Margin)\n ], DataLabelSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ size: '11px', color: '', fontStyle: 'Normal', fontWeight: 'Normal', fontFamily: 'Segoe UI' }, Font)\n ], DataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"template\", void 0);\n return DataLabelSettings;\n}(ChildProperty));\nexport { DataLabelSettings };\n/**\n * Allow options to customize the pie, funnel, doughnut and pyramid chart data label connector.\n */\nvar PivotChartConnectorStyle = /** @class */ (function (_super) {\n __extends(PivotChartConnectorStyle, _super);\n function PivotChartConnectorStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Line')\n ], PivotChartConnectorStyle.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], PivotChartConnectorStyle.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], PivotChartConnectorStyle.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], PivotChartConnectorStyle.prototype, \"length\", void 0);\n __decorate([\n Property('')\n ], PivotChartConnectorStyle.prototype, \"dashArray\", void 0);\n return PivotChartConnectorStyle;\n}(ChildProperty));\nexport { PivotChartConnectorStyle };\n/**\n * Allow options to customize the pie, funnel, doughnut and pyramid chart data label connector.\n */\nvar PivotChartDataLabel = /** @class */ (function (_super) {\n __extends(PivotChartDataLabel, _super);\n function PivotChartDataLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], PivotChartDataLabel.prototype, \"visible\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], PivotChartDataLabel.prototype, \"border\", void 0);\n __decorate([\n Complex({ size: '11px', color: '', fontStyle: 'Normal', fontWeight: 'Normal', fontFamily: 'Segoe UI' }, Font)\n ], PivotChartDataLabel.prototype, \"font\", void 0);\n __decorate([\n Property('transparent')\n ], PivotChartDataLabel.prototype, \"fill\", void 0);\n __decorate([\n Property(0)\n ], PivotChartDataLabel.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], PivotChartDataLabel.prototype, \"enableRotation\", void 0);\n __decorate([\n Property('Outside')\n ], PivotChartDataLabel.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], PivotChartDataLabel.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], PivotChartDataLabel.prototype, \"ry\", void 0);\n __decorate([\n Property(null)\n ], PivotChartDataLabel.prototype, \"template\", void 0);\n __decorate([\n Complex({}, PivotChartConnectorStyle)\n ], PivotChartDataLabel.prototype, \"connectorStyle\", void 0);\n return PivotChartDataLabel;\n}(ChildProperty));\nexport { PivotChartDataLabel };\n/**\n * Allows to configure the marker of the series such as shape, width, height, border, position, fill color, opacity, data label etc in the chart\n */\nvar MarkerSettings = /** @class */ (function (_super) {\n __extends(MarkerSettings, _super);\n function MarkerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Circle')\n ], MarkerSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], MarkerSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ width: 2, color: null }, Border)\n ], MarkerSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Offset)\n ], MarkerSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], MarkerSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, DataLabelSettings)\n ], MarkerSettings.prototype, \"dataLabel\", void 0);\n return MarkerSettings;\n}(ChildProperty));\nexport { MarkerSettings };\n/**\n * Allows to configure the error bar cap settings such as cap width, length, color, opacity.\n */\nvar ErrorBarCapSettings = /** @class */ (function (_super) {\n __extends(ErrorBarCapSettings, _super);\n function ErrorBarCapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"width\", void 0);\n __decorate([\n Property(10)\n ], ErrorBarCapSettings.prototype, \"length\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarCapSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"opacity\", void 0);\n return ErrorBarCapSettings;\n}(ChildProperty));\nexport { ErrorBarCapSettings };\n/**\n * Allows options for customize the error bar chart with diffent settings such as type, direction, mode, color, width, etc.\n * @public\n */\nvar ErrorBarSettings = /** @class */ (function (_super) {\n __extends(ErrorBarSettings, _super);\n function ErrorBarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ErrorBarSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Fixed')\n ], ErrorBarSettings.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ErrorBarSettings.prototype, \"direction\", void 0);\n __decorate([\n Property('Vertical')\n ], ErrorBarSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"verticalError\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalNegativeError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalPositiveError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalNegativeError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalPositiveError\", void 0);\n __decorate([\n Complex(null, ErrorBarCapSettings)\n ], ErrorBarSettings.prototype, \"errorBarCap\", void 0);\n return ErrorBarSettings;\n}(ChildProperty));\nexport { ErrorBarSettings };\n/**\n * Allows to configure the trendlines of the chart such as name, period, type, tooltip, marker, animation, color, legend shape, etc.\n */\nvar Trendline = /** @class */ (function (_super) {\n __extends(Trendline, _super);\n function Trendline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Trendline.prototype, \"name\", void 0);\n __decorate([\n Property('0')\n ], Trendline.prototype, \"dashArray\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"visible\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"period\", void 0);\n __decorate([\n Property('Linear')\n ], Trendline.prototype, \"type\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"backwardForecast\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"forwardForecast\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"polynomialOrder\", void 0);\n __decorate([\n Complex({}, MarkerSettings)\n ], Trendline.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"enableTooltip\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Trendline.prototype, \"animation\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], Trendline.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Trendline.prototype, \"intercept\", void 0);\n __decorate([\n Property('SeriesType')\n ], Trendline.prototype, \"legendShape\", void 0);\n return Trendline;\n}(ChildProperty));\nexport { Trendline };\n/**\n * Allows to configure the empty points with a variety of means such as fill color, border and mode in the chart.\n */\nvar EmptyPointSettings = /** @class */ (function (_super) {\n __extends(EmptyPointSettings, _super);\n function EmptyPointSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EmptyPointSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], EmptyPointSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Gap')\n ], EmptyPointSettings.prototype, \"mode\", void 0);\n return EmptyPointSettings;\n}(ChildProperty));\nexport { EmptyPointSettings };\n/**\n * Allows to customize the rounded corners of the column series in the chart.\n */\nvar CornerRadius = /** @class */ (function (_super) {\n __extends(CornerRadius, _super);\n function CornerRadius() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topRight\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomRight\", void 0);\n return CornerRadius;\n}(ChildProperty));\nexport { CornerRadius };\n/**\n * Allows to configure the crosshair tooltip with text style and fill color in the chart.\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairTooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], CrosshairTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex(Theme.crosshairLabelFont, Font)\n ], CrosshairTooltip.prototype, \"textStyle\", void 0);\n return CrosshairTooltip;\n}(ChildProperty));\nexport { CrosshairTooltip };\n/**\n * Allows to congifure the strip line properties such as line position, size, color, size type, border, text and opacity in the chart.\n */\nvar StripLineSettings = /** @class */ (function (_super) {\n __extends(StripLineSettings, _super);\n function StripLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StripLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"startFromAxis\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"size\", void 0);\n __decorate([\n Property('#808080')\n ], StripLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('Auto')\n ], StripLineSettings.prototype, \"sizeType\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isRepeat\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatEvery\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatUntil\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isSegmented\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentStart\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentEnd\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentAxisName\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], StripLineSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"rotation\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Complex(Theme.stripLineLabelFont, Font)\n ], StripLineSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Behind')\n ], StripLineSettings.prototype, \"zIndex\", void 0);\n __decorate([\n Property(1)\n ], StripLineSettings.prototype, \"opacity\", void 0);\n return StripLineSettings;\n}(ChildProperty));\nexport { StripLineSettings };\n/**\n * Allows to customize the label border with a variety of means such as label color, width and labe type in the chart.\n */\nvar LabelBorder = /** @class */ (function (_super) {\n __extends(LabelBorder, _super);\n function LabelBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], LabelBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], LabelBorder.prototype, \"width\", void 0);\n __decorate([\n Property('Rectangle')\n ], LabelBorder.prototype, \"type\", void 0);\n return LabelBorder;\n}(ChildProperty));\nexport { LabelBorder };\n/**\n * Allows to configure the major grid lines such as line width, color and dashArray in the `axis`.\n */\nvar MajorGridLines = /** @class */ (function (_super) {\n __extends(MajorGridLines, _super);\n function MajorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MajorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MajorGridLines.prototype, \"color\", void 0);\n return MajorGridLines;\n}(ChildProperty));\nexport { MajorGridLines };\n/**\n * Allows to configure the minor grid lines such as line width, dashArray and color in the `axis`.\n */\nvar MinorGridLines = /** @class */ (function (_super) {\n __extends(MinorGridLines, _super);\n function MinorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MinorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MinorGridLines.prototype, \"color\", void 0);\n return MinorGridLines;\n}(ChildProperty));\nexport { MinorGridLines };\n/**\n * Allows to configure the axis line such as line width, dashArray and color in a chart.\n */\nvar AxisLine = /** @class */ (function (_super) {\n __extends(AxisLine, _super);\n function AxisLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], AxisLine.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], AxisLine.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}(ChildProperty));\nexport { AxisLine };\n/**\n * Allows to configure the major tick lines such as width, height and color in the chart.\n */\nvar MajorTickLines = /** @class */ (function (_super) {\n __extends(MajorTickLines, _super);\n function MajorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MajorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MajorTickLines.prototype, \"color\", void 0);\n return MajorTickLines;\n}(ChildProperty));\nexport { MajorTickLines };\n/**\n * Allows to configure the minor tick lines such as width, height and color in the chart.\n */\nvar MinorTickLines = /** @class */ (function (_super) {\n __extends(MinorTickLines, _super);\n function MinorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MinorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MinorTickLines.prototype, \"color\", void 0);\n return MinorTickLines;\n}(ChildProperty));\nexport { MinorTickLines };\n/**\n * Allows to configure the position of the legend such as top and left in the chart.\n */\nvar ChartLocation = /** @class */ (function (_super) {\n __extends(ChartLocation, _super);\n function ChartLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ChartLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ChartLocation.prototype, \"y\", void 0);\n return ChartLocation;\n}(ChildProperty));\nexport { ChartLocation };\n/**\n * Allow options to customize the border of the chart series such as color and border size in the pivot chart.\n * For example, to display the chart series border color as red, set the properties `color` to either **\"red\"** or **\"#FF0000\"** or **\"rgba(255,0,0,1.0)\"** and `width` to **0.5**.\n */\nvar PivotChartSeriesBorder = /** @class */ (function () {\n function PivotChartSeriesBorder() {\n }\n __decorate([\n Property('')\n ], PivotChartSeriesBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSeriesBorder.prototype, \"width\", void 0);\n return PivotChartSeriesBorder;\n}());\nexport { PivotChartSeriesBorder };\n/**\n * Allows to configure the animation behavior for chart series such as animation duration and delay.\n */\nvar PivotChartSeriesAnimation = /** @class */ (function () {\n function PivotChartSeriesAnimation() {\n }\n __decorate([\n Property(true)\n ], PivotChartSeriesAnimation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], PivotChartSeriesAnimation.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], PivotChartSeriesAnimation.prototype, \"delay\", void 0);\n return PivotChartSeriesAnimation;\n}());\nexport { PivotChartSeriesAnimation };\n/**\n * Allows to customize specific region for line type series with a variety of means such as value, color, pattern of dashes.\n */\nvar PivotChartSeriesSegment = /** @class */ (function () {\n function PivotChartSeriesSegment() {\n }\n __decorate([\n Property(null)\n ], PivotChartSeriesSegment.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], PivotChartSeriesSegment.prototype, \"color\", void 0);\n __decorate([\n Property('0')\n ], PivotChartSeriesSegment.prototype, \"dashArray\", void 0);\n return PivotChartSeriesSegment;\n}());\nexport { PivotChartSeriesSegment };\n/**\n * Allows to configure the marker of the series such as shape, width, height, border, position, fill color, opacity, data label etc in the chart\n */\nvar PivotChartSeriesMarkerSettings = /** @class */ (function () {\n function PivotChartSeriesMarkerSettings() {\n }\n __decorate([\n Property(false)\n ], PivotChartSeriesMarkerSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Circle')\n ], PivotChartSeriesMarkerSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], PivotChartSeriesMarkerSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(5)\n ], PivotChartSeriesMarkerSettings.prototype, \"height\", void 0);\n __decorate([\n Property(5)\n ], PivotChartSeriesMarkerSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ width: 2, color: null }, Border)\n ], PivotChartSeriesMarkerSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], PivotChartSeriesMarkerSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSeriesMarkerSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, DataLabelSettings)\n ], PivotChartSeriesMarkerSettings.prototype, \"dataLabel\", void 0);\n return PivotChartSeriesMarkerSettings;\n}());\nexport { PivotChartSeriesMarkerSettings };\n/**\n * Allows options for customize the error bar chart series with diffent settings such as type, direction, mode, color, width, etc.\n */\nvar PivotChartSeriesErrorSettings = /** @class */ (function () {\n function PivotChartSeriesErrorSettings() {\n }\n __decorate([\n Property(false)\n ], PivotChartSeriesErrorSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Fixed')\n ], PivotChartSeriesErrorSettings.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], PivotChartSeriesErrorSettings.prototype, \"direction\", void 0);\n __decorate([\n Property('Vertical')\n ], PivotChartSeriesErrorSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(null)\n ], PivotChartSeriesErrorSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSeriesErrorSettings.prototype, \"verticalError\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSeriesErrorSettings.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSeriesErrorSettings.prototype, \"horizontalError\", void 0);\n __decorate([\n Property(3)\n ], PivotChartSeriesErrorSettings.prototype, \"verticalPositiveError\", void 0);\n __decorate([\n Property(3)\n ], PivotChartSeriesErrorSettings.prototype, \"verticalNegativeError\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSeriesErrorSettings.prototype, \"horizontalPositiveError\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSeriesErrorSettings.prototype, \"horizontalNegativeError\", void 0);\n __decorate([\n Complex(null, ErrorBarCapSettings)\n ], PivotChartSeriesErrorSettings.prototype, \"errorBarCap\", void 0);\n return PivotChartSeriesErrorSettings;\n}());\nexport { PivotChartSeriesErrorSettings };\n/**\n * Allows to configure the trendlines of the chart series such as name, period, type, tooltip, marker, animation, color, legend shape, etc.\n */\nvar PivotChartSeriesTrendline = /** @class */ (function () {\n function PivotChartSeriesTrendline() {\n }\n __decorate([\n Property('')\n ], PivotChartSeriesTrendline.prototype, \"name\", void 0);\n __decorate([\n Property('Linear')\n ], PivotChartSeriesTrendline.prototype, \"type\", void 0);\n __decorate([\n Property(2)\n ], PivotChartSeriesTrendline.prototype, \"period\", void 0);\n __decorate([\n Property(2)\n ], PivotChartSeriesTrendline.prototype, \"polynomialOrder\", void 0);\n __decorate([\n Property(0)\n ], PivotChartSeriesTrendline.prototype, \"backwardForecast\", void 0);\n __decorate([\n Property(0)\n ], PivotChartSeriesTrendline.prototype, \"forwardForecast\", void 0);\n __decorate([\n Complex({}, Animation)\n ], PivotChartSeriesTrendline.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, MarkerSettings)\n ], PivotChartSeriesTrendline.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], PivotChartSeriesTrendline.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(null)\n ], PivotChartSeriesTrendline.prototype, \"intercept\", void 0);\n __decorate([\n Property('')\n ], PivotChartSeriesTrendline.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSeriesTrendline.prototype, \"width\", void 0);\n __decorate([\n Property('SeriesType')\n ], PivotChartSeriesTrendline.prototype, \"legendShape\", void 0);\n return PivotChartSeriesTrendline;\n}());\nexport { PivotChartSeriesTrendline };\n/**\n * Allows to configure the empty points with a variety of means such as fill color, border and mode in the chart.\n */\nvar PivotChartSeriesEmptyPointSettings = /** @class */ (function () {\n function PivotChartSeriesEmptyPointSettings() {\n }\n __decorate([\n Property(null)\n ], PivotChartSeriesEmptyPointSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], PivotChartSeriesEmptyPointSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Gap')\n ], PivotChartSeriesEmptyPointSettings.prototype, \"mode\", void 0);\n return PivotChartSeriesEmptyPointSettings;\n}());\nexport { PivotChartSeriesEmptyPointSettings };\n/**\n * Allows to customize the rounded corners of the column series in the chart.\n */\nvar PivotChartSeriesCornerRadius = /** @class */ (function () {\n function PivotChartSeriesCornerRadius() {\n }\n __decorate([\n Property(0)\n ], PivotChartSeriesCornerRadius.prototype, \"topLeft\", void 0);\n __decorate([\n Property(0)\n ], PivotChartSeriesCornerRadius.prototype, \"topRight\", void 0);\n __decorate([\n Property(0)\n ], PivotChartSeriesCornerRadius.prototype, \"bottomLeft\", void 0);\n __decorate([\n Property(0)\n ], PivotChartSeriesCornerRadius.prototype, \"bottomRight\", void 0);\n return PivotChartSeriesCornerRadius;\n}());\nexport { PivotChartSeriesCornerRadius };\n/**\n * Allows to customize the apprearance of the text in the chart such as font style, font size, font weight, font color, font family, text alignment, opacity, text overflow.\n */\nvar PivotChartAxisFont = /** @class */ (function () {\n function PivotChartAxisFont() {\n }\n __decorate([\n Property('Normal')\n ], PivotChartAxisFont.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('16px')\n ], PivotChartAxisFont.prototype, \"size\", void 0);\n __decorate([\n Property('Normal')\n ], PivotChartAxisFont.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], PivotChartAxisFont.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], PivotChartAxisFont.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], PivotChartAxisFont.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], PivotChartAxisFont.prototype, \"opacity\", void 0);\n __decorate([\n Property('Trim')\n ], PivotChartAxisFont.prototype, \"textOverflow\", void 0);\n return PivotChartAxisFont;\n}());\nexport { PivotChartAxisFont };\n/**\n * Allows to configure the crosshair tooltip with text style and fill color in the chart.\n */\nvar PivotChartAxisCrosshairTooltip = /** @class */ (function () {\n function PivotChartAxisCrosshairTooltip() {\n }\n __decorate([\n Property(false)\n ], PivotChartAxisCrosshairTooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisCrosshairTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex(Theme.crosshairLabelFont, Font)\n ], PivotChartAxisCrosshairTooltip.prototype, \"textStyle\", void 0);\n return PivotChartAxisCrosshairTooltip;\n}());\nexport { PivotChartAxisCrosshairTooltip };\n/**\n * Allows to configure the major tick lines such as width, height and color in the chart.\n */\nvar PivotChartAxisMajorTickLines = /** @class */ (function () {\n function PivotChartAxisMajorTickLines() {\n }\n __decorate([\n Property(1)\n ], PivotChartAxisMajorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], PivotChartAxisMajorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisMajorTickLines.prototype, \"color\", void 0);\n return PivotChartAxisMajorTickLines;\n}());\nexport { PivotChartAxisMajorTickLines };\n/**\n * Allows to configure the major grid lines such as line width, color and dashArray in the `axis`.\n */\nvar PivotChartAxisMajorGridLines = /** @class */ (function () {\n function PivotChartAxisMajorGridLines() {\n }\n __decorate([\n Property(1)\n ], PivotChartAxisMajorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], PivotChartAxisMajorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisMajorGridLines.prototype, \"color\", void 0);\n return PivotChartAxisMajorGridLines;\n}());\nexport { PivotChartAxisMajorGridLines };\n/**\n * Allows to configure the minor tick lines such as width, height and color in the chart.\n */\nvar PivotChartAxisMinorTickLines = /** @class */ (function () {\n function PivotChartAxisMinorTickLines() {\n }\n __decorate([\n Property(0.7)\n ], PivotChartAxisMinorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], PivotChartAxisMinorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisMinorTickLines.prototype, \"color\", void 0);\n return PivotChartAxisMinorTickLines;\n}());\nexport { PivotChartAxisMinorTickLines };\n/**\n * Allows to configure the minor grid lines such as line width, dashArray and color in the `axis`.\n */\nvar PivotChartAxisMinorGridLines = /** @class */ (function () {\n function PivotChartAxisMinorGridLines() {\n }\n __decorate([\n Property(0.7)\n ], PivotChartAxisMinorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], PivotChartAxisMinorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisMinorGridLines.prototype, \"color\", void 0);\n return PivotChartAxisMinorGridLines;\n}());\nexport { PivotChartAxisMinorGridLines };\n/**\n * Allows to configure the axis line such as line width, dashArray and color in a chart.\n */\nvar PivotChartAxisAxisLine = /** @class */ (function () {\n function PivotChartAxisAxisLine() {\n }\n __decorate([\n Property(1)\n ], PivotChartAxisAxisLine.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], PivotChartAxisAxisLine.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisAxisLine.prototype, \"color\", void 0);\n return PivotChartAxisAxisLine;\n}());\nexport { PivotChartAxisAxisLine };\n/**\n * Allows to congifure the strip line properties such as line position, size, color, size type, border, text and opacity in the chart.\n */\nvar PivotChartAxisStripLineSettings = /** @class */ (function () {\n function PivotChartAxisStripLineSettings() {\n }\n __decorate([\n Property(true)\n ], PivotChartAxisStripLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], PivotChartAxisStripLineSettings.prototype, \"startFromAxis\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"size\", void 0);\n __decorate([\n Property('#808080')\n ], PivotChartAxisStripLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('Auto')\n ], PivotChartAxisStripLineSettings.prototype, \"sizeType\", void 0);\n __decorate([\n Property(false)\n ], PivotChartAxisStripLineSettings.prototype, \"isRepeat\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"repeatEvery\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"repeatUntil\", void 0);\n __decorate([\n Property(false)\n ], PivotChartAxisStripLineSettings.prototype, \"isSegmented\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"segmentStart\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"segmentEnd\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"segmentAxisName\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], PivotChartAxisStripLineSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], PivotChartAxisStripLineSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], PivotChartAxisStripLineSettings.prototype, \"rotation\", void 0);\n __decorate([\n Property('Middle')\n ], PivotChartAxisStripLineSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Middle')\n ], PivotChartAxisStripLineSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Complex(Theme.stripLineLabelFont, Font)\n ], PivotChartAxisStripLineSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Behind')\n ], PivotChartAxisStripLineSettings.prototype, \"zIndex\", void 0);\n __decorate([\n Property(1)\n ], PivotChartAxisStripLineSettings.prototype, \"opacity\", void 0);\n return PivotChartAxisStripLineSettings;\n}());\nexport { PivotChartAxisStripLineSettings };\n/**\n * Allows to customize the label border with a variety of means such as label color, width and labe type in the chart.\n */\nvar PivotChartAxisLabelBorder = /** @class */ (function () {\n function PivotChartAxisLabelBorder() {\n }\n __decorate([\n Property('')\n ], PivotChartAxisLabelBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], PivotChartAxisLabelBorder.prototype, \"width\", void 0);\n __decorate([\n Property('Rectangle')\n ], PivotChartAxisLabelBorder.prototype, \"type\", void 0);\n return PivotChartAxisLabelBorder;\n}());\nexport { PivotChartAxisLabelBorder };\n/**\n * Allow options to customize the chart area with a variety of settings such as background color, border, opacity and background image in the pivot chart.\n * For example, to change the of the pivot chart's background, set the property `opacity` to **0.5**.\n */\nvar PivotChartSettingsChartArea = /** @class */ (function () {\n function PivotChartSettingsChartArea() {\n }\n __decorate([\n Complex({}, Border)\n ], PivotChartSettingsChartArea.prototype, \"border\", void 0);\n __decorate([\n Property('transparent')\n ], PivotChartSettingsChartArea.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSettingsChartArea.prototype, \"opacity\", void 0);\n return PivotChartSettingsChartArea;\n}());\nexport { PivotChartSettingsChartArea };\n/**\n * Allow options to customize the crosshair line with different settings such as color and width of the line,\n * line types that are shown horizontally and vertically to indicate the value of the axis at the mouse hover or touch position in the pivot chart.\n */\nvar PivotChartSettingsCrosshairSettings = /** @class */ (function () {\n function PivotChartSettingsCrosshairSettings() {\n }\n __decorate([\n Property(false)\n ], PivotChartSettingsCrosshairSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('')\n ], PivotChartSettingsCrosshairSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Complex({ color: null, width: 1 }, Border)\n ], PivotChartSettingsCrosshairSettings.prototype, \"line\", void 0);\n __decorate([\n Property('Both')\n ], PivotChartSettingsCrosshairSettings.prototype, \"lineType\", void 0);\n return PivotChartSettingsCrosshairSettings;\n}());\nexport { PivotChartSettingsCrosshairSettings };\n/**\n * Allow options for customizing legends with different properties such as legend visibility,\n * height, width, position, legend padding, alignment, textStyle, border, margin, background, opacity, description, tabIndex in the pivot chart.\n */\nvar PivotChartSettingsLegendSettings = /** @class */ (function () {\n function PivotChartSettingsLegendSettings() {\n }\n __decorate([\n Property(true)\n ], PivotChartSettingsLegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], PivotChartSettingsLegendSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], PivotChartSettingsLegendSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ChartLocation)\n ], PivotChartSettingsLegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property('Auto')\n ], PivotChartSettingsLegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property(8)\n ], PivotChartSettingsLegendSettings.prototype, \"padding\", void 0);\n __decorate([\n Property('Center')\n ], PivotChartSettingsLegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex(Theme.legendLabelFont, Font)\n ], PivotChartSettingsLegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(10)\n ], PivotChartSettingsLegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], PivotChartSettingsLegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Complex({}, Border)\n ], PivotChartSettingsLegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, Margin)\n ], PivotChartSettingsLegendSettings.prototype, \"margin\", void 0);\n __decorate([\n Property(5)\n ], PivotChartSettingsLegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property('transparent')\n ], PivotChartSettingsLegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], PivotChartSettingsLegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], PivotChartSettingsLegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property(null)\n ], PivotChartSettingsLegendSettings.prototype, \"description\", void 0);\n __decorate([\n Property(3)\n ], PivotChartSettingsLegendSettings.prototype, \"tabIndex\", void 0);\n return PivotChartSettingsLegendSettings;\n}());\nexport { PivotChartSettingsLegendSettings };\n/**\n * Allows you to highlight a specific point of the series while rendering the pivot chart.\n * For example, to highlight first point in the first series, set the properties series to 0 and points to 1. To use this option, it requires the property `selectionMode` to be **Point** or **Series**.\n */\nvar PivotChartSettingsIndexes = /** @class */ (function () {\n function PivotChartSettingsIndexes() {\n }\n __decorate([\n Property(0)\n ], PivotChartSettingsIndexes.prototype, \"series\", void 0);\n __decorate([\n Property(0)\n ], PivotChartSettingsIndexes.prototype, \"point\", void 0);\n return PivotChartSettingsIndexes;\n}());\nexport { PivotChartSettingsIndexes };\n/**\n * Allow options to customize the left, right, top and bottom margins of the pivot chart.\n */\nvar PivotChartSettingsMargin = /** @class */ (function () {\n function PivotChartSettingsMargin() {\n }\n __decorate([\n Property(10)\n ], PivotChartSettingsMargin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], PivotChartSettingsMargin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], PivotChartSettingsMargin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], PivotChartSettingsMargin.prototype, \"bottom\", void 0);\n return PivotChartSettingsMargin;\n}());\nexport { PivotChartSettingsMargin };\n/**\n * Allow options to customize the chart series with different settings such as fill color, animation of the series,\n * series width, border, visibility of the series, opacity, chart series types, marker, tooltip, trendlines, etc., in the pivot chart.\n * For example, to display the line type pivot chart, set the property `type` to **Line**.\n */\nvar PivotSeries = /** @class */ (function (_super) {\n __extends(PivotSeries, _super);\n function PivotSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], PivotSeries.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], PivotSeries.prototype, \"endAngle\", void 0);\n __decorate([\n Property(false)\n ], PivotSeries.prototype, \"explode\", void 0);\n __decorate([\n Property(false)\n ], PivotSeries.prototype, \"explodeAll\", void 0);\n __decorate([\n Property(null)\n ], PivotSeries.prototype, \"explodeIndex\", void 0);\n __decorate([\n Property(null)\n ], PivotSeries.prototype, \"innerRadius\", void 0);\n __decorate([\n Property('30%')\n ], PivotSeries.prototype, \"explodeOffset\", void 0);\n __decorate([\n Property(0)\n ], PivotSeries.prototype, \"gapRatio\", void 0);\n __decorate([\n Property('Value')\n ], PivotSeries.prototype, \"groupMode\", void 0);\n __decorate([\n Property(null)\n ], PivotSeries.prototype, \"groupTo\", void 0);\n __decorate([\n Property('20%')\n ], PivotSeries.prototype, \"neckHeight\", void 0);\n __decorate([\n Property('20%')\n ], PivotSeries.prototype, \"neckWidth\", void 0);\n __decorate([\n Property('Linear')\n ], PivotSeries.prototype, \"pyramidMode\", void 0);\n __decorate([\n Property([])\n ], PivotSeries.prototype, \"palettes\", void 0);\n __decorate([\n Property(0)\n ], PivotSeries.prototype, \"startAngle\", void 0);\n __decorate([\n Complex(null, Animation)\n ], PivotSeries.prototype, \"animation\", void 0);\n __decorate([\n Complex(null, PivotChartDataLabel)\n ], PivotSeries.prototype, \"dataLabel\", void 0);\n __decorate([\n Property('0')\n ], PivotSeries.prototype, \"dashArray\", void 0);\n __decorate([\n Property(1)\n ], PivotSeries.prototype, \"width\", void 0);\n __decorate([\n Property('X')\n ], PivotSeries.prototype, \"segmentAxis\", void 0);\n __decorate([\n Property('Line')\n ], PivotSeries.prototype, \"drawType\", void 0);\n __decorate([\n Property(true)\n ], PivotSeries.prototype, \"isClosed\", void 0);\n __decorate([\n Collection([], ChartSegment)\n ], PivotSeries.prototype, \"segments\", void 0);\n __decorate([\n Property('')\n ], PivotSeries.prototype, \"stackingGroup\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], PivotSeries.prototype, \"border\", void 0);\n __decorate([\n Property(true)\n ], PivotSeries.prototype, \"visible\", void 0);\n __decorate([\n Property(1)\n ], PivotSeries.prototype, \"opacity\", void 0);\n __decorate([\n Property('Line')\n ], PivotSeries.prototype, \"type\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], PivotSeries.prototype, \"marker\", void 0);\n __decorate([\n Complex(null, ErrorBarSettings)\n ], PivotSeries.prototype, \"errorBar\", void 0);\n __decorate([\n Property(true)\n ], PivotSeries.prototype, \"enableTooltip\", void 0);\n __decorate([\n Collection([], Trendline)\n ], PivotSeries.prototype, \"trendlines\", void 0);\n __decorate([\n Property('')\n ], PivotSeries.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('SeriesType')\n ], PivotSeries.prototype, \"legendShape\", void 0);\n __decorate([\n Property(1)\n ], PivotSeries.prototype, \"minRadius\", void 0);\n __decorate([\n Property(null)\n ], PivotSeries.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property('Natural')\n ], PivotSeries.prototype, \"splineType\", void 0);\n __decorate([\n Property(3)\n ], PivotSeries.prototype, \"maxRadius\", void 0);\n __decorate([\n Property(0.5)\n ], PivotSeries.prototype, \"cardinalSplineTension\", void 0);\n __decorate([\n Property(null)\n ], PivotSeries.prototype, \"columnWidth\", void 0);\n __decorate([\n Complex(null, EmptyPointSettings)\n ], PivotSeries.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Complex(null, CornerRadius)\n ], PivotSeries.prototype, \"cornerRadius\", void 0);\n __decorate([\n Property(0)\n ], PivotSeries.prototype, \"columnSpacing\", void 0);\n return PivotSeries;\n}(ChildProperty));\nexport { PivotSeries };\n/**\n * Allow options to customize the axis with different properties such as labelIntersectAction, labelStyle, title,\n * description, crosshairTooltip, labelFormat, titleStyle, plotOffset, edgeLabelPlacement, labelPlacement, tickPosition, opposedPosition, minor and\n * major grid lines, minor and major tick lines, border, etc. in the pivot chart.\n */\nvar PivotAxis = /** @class */ (function (_super) {\n __extends(PivotAxis, _super);\n function PivotAxis() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Rotate45')\n ], PivotAxis.prototype, \"labelIntersectAction\", void 0);\n __decorate([\n Complex(Theme.axisLabelFont, Font)\n ], PivotAxis.prototype, \"labelStyle\", void 0);\n __decorate([\n Property('')\n ], PivotAxis.prototype, \"title\", void 0);\n __decorate([\n Property(null)\n ], PivotAxis.prototype, \"zoomFactor\", void 0);\n __decorate([\n Complex({}, CrosshairTooltip)\n ], PivotAxis.prototype, \"crosshairTooltip\", void 0);\n __decorate([\n Property('')\n ], PivotAxis.prototype, \"labelFormat\", void 0);\n __decorate([\n Complex(Theme.axisTitleFont, Font)\n ], PivotAxis.prototype, \"titleStyle\", void 0);\n __decorate([\n Property(false)\n ], PivotAxis.prototype, \"isIndexed\", void 0);\n __decorate([\n Property(0)\n ], PivotAxis.prototype, \"plotOffset\", void 0);\n __decorate([\n Property('None')\n ], PivotAxis.prototype, \"edgeLabelPlacement\", void 0);\n __decorate([\n Property('BetweenTicks')\n ], PivotAxis.prototype, \"labelPlacement\", void 0);\n __decorate([\n Property('Outside')\n ], PivotAxis.prototype, \"tickPosition\", void 0);\n __decorate([\n Property(false)\n ], PivotAxis.prototype, \"opposedPosition\", void 0);\n __decorate([\n Property(true)\n ], PivotAxis.prototype, \"visible\", void 0);\n __decorate([\n Property('Outside')\n ], PivotAxis.prototype, \"labelPosition\", void 0);\n __decorate([\n Property(0)\n ], PivotAxis.prototype, \"labelRotation\", void 0);\n __decorate([\n Property(0)\n ], PivotAxis.prototype, \"minorTicksPerInterval\", void 0);\n __decorate([\n Property(null)\n ], PivotAxis.prototype, \"maximum\", void 0);\n __decorate([\n Property(null)\n ], PivotAxis.prototype, \"minimum\", void 0);\n __decorate([\n Property(34)\n ], PivotAxis.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(null)\n ], PivotAxis.prototype, \"interval\", void 0);\n __decorate([\n Complex({}, MajorTickLines)\n ], PivotAxis.prototype, \"majorTickLines\", void 0);\n __decorate([\n Property(false)\n ], PivotAxis.prototype, \"enableTrim\", void 0);\n __decorate([\n Complex({}, MajorGridLines)\n ], PivotAxis.prototype, \"majorGridLines\", void 0);\n __decorate([\n Complex({}, MinorTickLines)\n ], PivotAxis.prototype, \"minorTickLines\", void 0);\n __decorate([\n Complex({}, AxisLine)\n ], PivotAxis.prototype, \"lineStyle\", void 0);\n __decorate([\n Complex({}, MinorGridLines)\n ], PivotAxis.prototype, \"minorGridLines\", void 0);\n __decorate([\n Property(false)\n ], PivotAxis.prototype, \"isInversed\", void 0);\n __decorate([\n Property(null)\n ], PivotAxis.prototype, \"description\", void 0);\n __decorate([\n Property(0)\n ], PivotAxis.prototype, \"startAngle\", void 0);\n __decorate([\n Property(100)\n ], PivotAxis.prototype, \"coefficient\", void 0);\n __decorate([\n Collection([], StripLineSettings)\n ], PivotAxis.prototype, \"stripLines\", void 0);\n __decorate([\n Property(2)\n ], PivotAxis.prototype, \"tabIndex\", void 0);\n __decorate([\n Complex({ color: null, width: 0, type: 'Rectangle' }, LabelBorder)\n ], PivotAxis.prototype, \"border\", void 0);\n return PivotAxis;\n}(ChildProperty));\nexport { PivotAxis };\n/**\n * Allow options to customize the tooltip of the pivot chart with different properties such as visibility of the tooltip, enableMarker, fill color, opacity, header for tooltip,\n * format, textStyle, template, border, enableAnimation.\n */\nvar PivotTooltipSettings = /** @class */ (function (_super) {\n __extends(PivotTooltipSettings, _super);\n function PivotTooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], PivotTooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(true)\n ], PivotTooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], PivotTooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], PivotTooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(0.75)\n ], PivotTooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], PivotTooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], PivotTooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Complex(Theme.tooltipLabelFont, Font)\n ], PivotTooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], PivotTooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Complex({ color: '#cccccc', width: 0.5 }, Border)\n ], PivotTooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Property(true)\n ], PivotTooltipSettings.prototype, \"enableAnimation\", void 0);\n return PivotTooltipSettings;\n}(ChildProperty));\nexport { PivotTooltipSettings };\n/**\n * Allow options to customize the center of the pivot pie series chart.\n */\nvar PivotPieChartCenter = /** @class */ (function (_super) {\n __extends(PivotPieChartCenter, _super);\n function PivotPieChartCenter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('50%')\n ], PivotPieChartCenter.prototype, \"x\", void 0);\n __decorate([\n Property('50%')\n ], PivotPieChartCenter.prototype, \"y\", void 0);\n return PivotPieChartCenter;\n}(ChildProperty));\nexport { PivotPieChartCenter };\n/**\n * Allow options to customize the pivot chart zooming with different properties such as enablePinchZooming, enableSelectionZooming,\n * enableDeferredZooming, enableMouseWheelZooming, zoom modes, toolbarItems, enableScrollbar and enablePan.\n */\nvar PivotZoomSettings = /** @class */ (function (_super) {\n __extends(PivotZoomSettings, _super);\n function PivotZoomSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], PivotZoomSettings.prototype, \"enablePinchZooming\", void 0);\n __decorate([\n Property(true)\n ], PivotZoomSettings.prototype, \"enableSelectionZooming\", void 0);\n __decorate([\n Property(false)\n ], PivotZoomSettings.prototype, \"enableDeferredZooming\", void 0);\n __decorate([\n Property(false)\n ], PivotZoomSettings.prototype, \"enableMouseWheelZooming\", void 0);\n __decorate([\n Property('XY')\n ], PivotZoomSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(['Zoom', 'ZoomIn', 'ZoomOut', 'Pan', 'Reset'])\n ], PivotZoomSettings.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property(true)\n ], PivotZoomSettings.prototype, \"enableScrollbar\", void 0);\n __decorate([\n Property(false)\n ], PivotZoomSettings.prototype, \"enablePan\", void 0);\n return PivotZoomSettings;\n}(ChildProperty));\nexport { PivotZoomSettings };\n/**\n * Allows a set of options to customize a pivot chart with a variety of settings, such as chart series, chart area, axis labels, legends, border, crosshairs, theme, title, tooltip, zooming, etc.\n * The following options are available to customize the pivot chart.\n * * `background`: Allows you to change the background color of the chart series in the pivot chart.\n * For example, to display the chart series with background color as red, set the property `background` to either **\"red\"** or **\"#FF0000\"** or **\"rgba(255,0,0,1.0)\"**.\n * * `border`: Allow options to customize the border of the chart series such as color and border size in the pivot chart.\n * For example, to display the chart series border color as red, set the properties `color` to either **\"red\"** or **\"#FF0000\"** or **\"rgba(255,0,0,1.0)\"** and `width` to **0.5**.\n * * `chartArea`: Allow options to customize the chart area with a variety of settings such as background color, border, opacity and background image in the pivot chart.\n * For example, to change the of the pivot chart's background, set the property `opacity` to **0.5**.\n * * `chartSeries`: Allow options to customize the chart series with different settings such as fill color, animation of the series,\n * series width, border, visibility of the series, opacity, chart series types, marker, tooltip, trendlines, etc., in the pivot chart.\n * For example, to display the line type pivot chart, set the property `type` to **Line**.\n * * `crosshair`: Allow options to customize the crosshair line with different settings such as color and width of the line,\n * line types that are shown horizontally and vertically to indicate the value of the axis at the mouse hover or touch position in the pivot chart.\n * * `description`: Allows you to add a description of the pivot chart.\n * * `enableAnimation`: Allows you to enable/disable the tooltip animation while performing the mouse move from one point to another in the pivot chart.\n * * `enableCanvas`: Allows you to render the pivot chart in canvas mode.\n * * `enableExport`: Allows the pivot chart to be exported to either **PDF** or **PNG** or **JPEG** or **SVG** filter formats.\n * * `enableMultipleAxis`: Allows you to draw the pivot chart with multiple value fields as separate chart area.\n * * `enableSideBySidePlacement`: Allows you to draw points of the column type pivot chart series as side by side.\n * * `isMultiSelect`: Allows you to perform multiple selection in the pivot chart. To enable this option, it requires the property `selectionMode` to be **Point** or **Series** or **Cluster**.\n * * `isTransposed`: Allows you to render the pivot chart in a transposed manner or not.\n * * `legendSettings`: Allow options for customizing legends with different properties such as legend visibility,\n * height, width, position, legend padding, alignment, textStyle, border, margin, background, opacity, description, tabIndex in the pivot chart.\n * * `margin`: Allow options to customize the left, right, top and bottom margins of the pivot chart.\n * * `palettes`: Allows you to draw the chart series points with custom color in the pivot chart.\n * * `primaryXAxis`: Allow options to customize the horzontal(row) axis with different properties such as labelIntersectAction, labelStyle, title,\n * description, crosshairTooltip, labelFormat, titleStyle, plotOffset, edgeLabelPlacement, labelPlacement, tickPosition, opposedPosition, minor and\n * major grid lines, minor and major tick lines, border, etc. in the pivot chart.\n * * `primaryYAxis`: Allow options to customize the vertical(value) axis with different properties such as labelIntersectAction, labelStyle,\n * title, description, crosshairTooltip, labelFormat, titleStyle, plotOffset, edgeLabelPlacement, labelPlacement, tickPosition, opposedPosition, minor and\n * major grid lines, minor and major tick lines, border, etc. in the pivot chart.\n * * `selectedDataIndexes`: Allows you to highlight a specific point of the series while rendering the pivot chart.\n * For example, to highlight first point in the first series, set the properties series to 0 and points to 1. To use this option, it requires the property `selectionMode` to be **Point** or **Series**.\n * * `selectionMode`: Allow options for customizing the selection mode to be done either by a specific series or point or cluster or by dragging it to the pivot chart.\n * For example, to highlight a specific point in a specific series of the pivot chart, set the property `selectionMode` to **Point**.\n * * `showMultiLevelLabels`: Allows you to display the multi-level label feature in the pivot chart. This multi-level labels used to perform drill operation in the pivot chart.\n * * `subTitle`: Allows you to add the subtitle to the pivot chart.\n * * `subTitleStyle`: Allow options to customize the subtitle in the pivot chart with different properties such as fontStyle, font size, fontWeight, font color, testAlignment, fontFamily, opacity, textOverflow.\n * * `tabIndex`: Allows you to highlight specific legends by clicking the mouse or by interacting with the keyboard in the pivot chart.\n * * `theme`: Allows you to draw a pivot chart with either material, fabric, bootstrap, highcontrast light, material dark, fabric dark, highcontrast, bootstrap dark, bootstrap4 theme.\n * * `title`: Allows you to add title to the pivot chart.\n * * `titleStyle`: Allow options to customize the title in the pivot chart with different properties such as fontStyle, font size, fontWeight, font color, testAlignment, fontFamily, opacity, textOverflow.\n * * `tooltip`: Allow options to customize the tooltip of the pivot chart with different properties such as visibility of the tooltip, enableMarker, fill color, opacity, header for tooltip,\n * format, textStyle, template, border, enableAnimation.\n * * `useGroupingSeparator`: Allows the group separator to be shown to the values in the pivot chart.\n * * `value`: Allows you to draw a pivot chart with a specific value field during initial loading.\n * * `zoomSettings`: Allow options to customize the pivot chart zooming with different properties such as enablePinchZooming, enableSelectionZooming,\n * enableDeferredZooming, enableMouseWheelZooming, zoom modes, toolbarItems, enableScrollbar and enablePan.\n */\nvar ChartSettings = /** @class */ (function (_super) {\n __extends(ChartSettings, _super);\n function ChartSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, PivotSeries)\n ], ChartSettings.prototype, \"chartSeries\", void 0);\n __decorate([\n Complex({}, PivotAxis)\n ], ChartSettings.prototype, \"primaryXAxis\", void 0);\n __decorate([\n Complex({}, PivotAxis)\n ], ChartSettings.prototype, \"primaryYAxis\", void 0);\n __decorate([\n Property('')\n ], ChartSettings.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ChartSettings.prototype, \"columnHeader\", void 0);\n __decorate([\n Property('-')\n ], ChartSettings.prototype, \"columnDelimiter\", void 0);\n __decorate([\n Property(false)\n ], ChartSettings.prototype, \"enableMultiAxis\", void 0);\n __decorate([\n Property(false)\n ], ChartSettings.prototype, \"enableMultipleAxis\", void 0);\n __decorate([\n Property('Stacked')\n ], ChartSettings.prototype, \"multipleAxisMode\", void 0);\n __decorate([\n Property(false)\n ], ChartSettings.prototype, \"enableScrollOnMultiAxis\", void 0);\n __decorate([\n Complex(Theme.chartTitleFont, Font)\n ], ChartSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], ChartSettings.prototype, \"title\", void 0);\n __decorate([\n Complex(Theme.chartSubTitleFont, Font)\n ], ChartSettings.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Property('')\n ], ChartSettings.prototype, \"subTitle\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], ChartSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], ChartSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ border: { color: null, width: 0.5 }, background: 'transparent' }, ChartArea)\n ], ChartSettings.prototype, \"chartArea\", void 0);\n __decorate([\n Property(null)\n ], ChartSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], ChartSettings.prototype, \"theme\", void 0);\n __decorate([\n Property([])\n ], ChartSettings.prototype, \"palettes\", void 0);\n __decorate([\n Complex({}, CrosshairSettings)\n ], ChartSettings.prototype, \"crosshair\", void 0);\n __decorate([\n Complex({}, PivotTooltipSettings)\n ], ChartSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Complex(null, PivotPieChartCenter)\n ], ChartSettings.prototype, \"pieCenter\", void 0);\n __decorate([\n Complex({}, PivotZoomSettings)\n ], ChartSettings.prototype, \"zoomSettings\", void 0);\n __decorate([\n Property()\n ], ChartSettings.prototype, \"legendSettings\", void 0);\n __decorate([\n Property('None')\n ], ChartSettings.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('None')\n ], ChartSettings.prototype, \"accumulationSelectionMode\", void 0);\n __decorate([\n Property(true)\n ], ChartSettings.prototype, \"enableSmartLabels\", void 0);\n __decorate([\n Property(true)\n ], ChartSettings.prototype, \"enableBorderOnMouseMove\", void 0);\n __decorate([\n Property('None')\n ], ChartSettings.prototype, \"highlightMode\", void 0);\n __decorate([\n Property('None')\n ], ChartSettings.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(true)\n ], ChartSettings.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], ChartSettings.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Collection([], Indexes)\n ], ChartSettings.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Property(true)\n ], ChartSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(false)\n ], ChartSettings.prototype, \"enableCanvas\", void 0);\n __decorate([\n Property(true)\n ], ChartSettings.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(false)\n ], ChartSettings.prototype, \"isTransposed\", void 0);\n __decorate([\n Property(1)\n ], ChartSettings.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], ChartSettings.prototype, \"description\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"resized\", void 0);\n __decorate([\n Property(true)\n ], ChartSettings.prototype, \"enableSideBySidePlacement\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"axisMultiLabelRender\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"axisLabelRender\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"multiLevelLabelClick\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"dragComplete\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"scrollStart\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"zoomComplete\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"scrollChanged\", void 0);\n __decorate([\n Event()\n ], ChartSettings.prototype, \"scrollEnd\", void 0);\n __decorate([\n Property(true)\n ], ChartSettings.prototype, \"showMultiLevelLabels\", void 0);\n return ChartSettings;\n}(ChildProperty));\nexport { ChartSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, Browser, Component, createElement, setStyleAttribute, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler, Complex, extend, ChildProperty, Collection, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { Internationalization, L10n, NotifyPropertyChanges, compile, formatUnit } from '@syncfusion/ej2-base';\nimport { removeClass, addClass, Event, setValue, closest, select } from '@syncfusion/ej2-base';\nimport { updateBlazorTemplate, resetBlazorTemplate, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { PivotEngine } from '../../base/engine';\nimport { Tooltip, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../../common/base/constant';\nimport * as cls from '../../common/base/css-constant';\nimport { Render } from '../renderer/render';\nimport { Common } from '../../common/actions/common';\nimport { DataSourceSettings } from '../model/datasourcesettings';\nimport { GridSettings } from '../model/gridsettings';\nimport { Grid, Reorder, Resize, getObject } from '@syncfusion/ej2-grids';\nimport { ExcelExport } from '../actions/excel-export';\nimport { PDFExport } from '../actions/pdf-export';\nimport { KeyboardInteraction } from '../actions/keyboard';\nimport { PivotContextMenu } from '../../common/popups/context-menu';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { VirtualScroll } from '../actions/virtualscroll';\nimport { DrillThrough } from '../actions/drill-through';\nimport { PivotUtil } from '../../base/util';\nimport { PivotChart } from '../../pivotchart/index';\nimport { ChartSettings } from '../model/chartsettings';\nimport { OlapEngine } from '../../base/olap/engine';\n/* eslint-disable */\n/**\n * Allows a set of options for customizing the grouping bar UI with a variety of settings such as UI visibility to a specific view port,\n * customizing the pivot button features such as filtering, sorting, changing aggregate types, removing any fields.\n * The options available to customize the grouping bar UI are:\n * * `showFilterIcon`: Allows you to show or hide the filter icon that used to be displayed on the pivot button of the grouping bar UI.\n * This filter icon is used to filter the members of a particular field at runtime in the pivot table.\n * * `showSortIcon`: Allows you to show or hide the sort icon that used to be displayed in the pivot button of the grouping bar UI.\n * This sort icon is used to order members of a particular fields either in ascending or descending at runtime.\n * * `showRemoveIcon`: Allows you to show or hide the remove icon that used to be displayed in the pivot button of the grouping bar UI.\n * This remove icon is used to remove any field during runtime.\n * * `showValueTypeIcon`: Allows you to show or hide the value type icon that used to be displayed in the pivot button of the grouping bar UI.\n * This value type icon helps to select the appropriate aggregation type to value fields at runtime.\n * * `displayMode`: Allow options to show the grouping bar UI to specific view port such as either pivot table or pivot chart or both table and chart.\n * For example, to show the grouping bar UI to pivot table on its own, set the property `displayMode` to **Table**.\n * * `allowDragAndDrop`: Allows you to restrict the pivot buttons that were used to drag on runtime in the grouping bar UI. This will prevent you from modifying the current report.\n */\nvar GroupingBarSettings = /** @class */ (function (_super) {\n __extends(GroupingBarSettings, _super);\n function GroupingBarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupingBarSettings.prototype, \"showFilterIcon\", void 0);\n __decorate([\n Property(true)\n ], GroupingBarSettings.prototype, \"showSortIcon\", void 0);\n __decorate([\n Property(true)\n ], GroupingBarSettings.prototype, \"showRemoveIcon\", void 0);\n __decorate([\n Property(true)\n ], GroupingBarSettings.prototype, \"showValueTypeIcon\", void 0);\n __decorate([\n Property('Both')\n ], GroupingBarSettings.prototype, \"displayMode\", void 0);\n __decorate([\n Property(true)\n ], GroupingBarSettings.prototype, \"allowDragAndDrop\", void 0);\n return GroupingBarSettings;\n}(ChildProperty));\nexport { GroupingBarSettings };\n/**\n * Allow options for performing CRUD operations, such as add, edit, delete, and update the raw items of any cell from the pivot table.\n * The raw items can be viewed in a data grid that used to be displayed as a dialog by double-clicking the appropriate value cell in the pivot table.\n * CRUD operations can be performed in this data grid either by double-clicking the cells or using toolbar options.\n * The options available are as follows:\n * * `allowAdding`: Allows you to add a new record to the data grid used to update the appropriate cells in the pivot table.\n * * `allowEditing`: Allows you to edit the existing record in the data grid that used to update the appropriate cells in the pivot table.\n * * `allowDeleting`: Allows you to delete the existing record from the data grid that used to update the appropriate cells in the pivot table.\n * * `allowCommandColumns`: Allows an additional column appended in the data grid layout holds the command buttons to perform the CRUD operations to edit,\n * delete, and update the raw items to the data grid that used to update the appropriate cells in the pivot table.\n * * `mode`: Allow options for performing CRUD operations with different modes in the data grid that used to update the appropriate cells in the pivot table.\n * The available modes are normal, batch and dialog. **Normal** mode is enabled for CRUD operations in the data grid by default.\n * * `allowEditOnDblClick`: Allows you to restrict CRUD operations by double-clicking the appropriate value cell in the pivot table.\n * * `showConfirmDialog`: Allows you to show the confirmation dialog to save and discard CRUD operations performed in the data grid that used to update the appropriate cells in the pivot table.\n * * `showDeleteConfirmDialog`: Allows you to show the confirmation dialog to delete any records from the data grid.\n *\n * > This feature is applicable only for the relational data source.\n */\nvar CellEditSettings = /** @class */ (function (_super) {\n __extends(CellEditSettings, _super);\n function CellEditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CellEditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], CellEditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], CellEditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property(false)\n ], CellEditSettings.prototype, \"allowCommandColumns\", void 0);\n __decorate([\n Property(false)\n ], CellEditSettings.prototype, \"allowInlineEditing\", void 0);\n __decorate([\n Property('Normal')\n ], CellEditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], CellEditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], CellEditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], CellEditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n return CellEditSettings;\n}(ChildProperty));\nexport { CellEditSettings };\n/**\n * Allow options for setting the visibility of hyperlink based on specific condition. The options available here are as follows:\n * * `measure`: Allows you to specify the value field caption to get visibility of hyperlink option for specific measure.\n * * `condition`: Allows you to choose the operator type such as equals, greater than, less than, etc.\n * * `value1`: Allows you to set the start value.\n * * `value2`: Allows you to set the end value. This option will be used by default when the operator **Between** and **NotBetween** is chosen to apply.\n */\nvar ConditionalSettings = /** @class */ (function (_super) {\n __extends(ConditionalSettings, _super);\n function ConditionalSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], ConditionalSettings.prototype, \"measure\", void 0);\n __decorate([\n Property()\n ], ConditionalSettings.prototype, \"label\", void 0);\n __decorate([\n Property('NotEquals')\n ], ConditionalSettings.prototype, \"conditions\", void 0);\n __decorate([\n Property()\n ], ConditionalSettings.prototype, \"value1\", void 0);\n __decorate([\n Property()\n ], ConditionalSettings.prototype, \"value2\", void 0);\n return ConditionalSettings;\n}(ChildProperty));\nexport { ConditionalSettings };\n/**\n * Allow a set of options to display a hyperlink to link data for individual cells that are shown in the pivot table.\n * These options allow you to enable a separate hyperlink for row headers, column headers, value cells, and summary cells in the `hyperlinkSettings` class.\n * The options available are:\n * * `showHyperlink`: Allows you to set the visibility of hyperlink in all cells.\n * * `showRowHeaderHyperlink`: Allows you to set the visibility of hyperlink in row headers.\n * * `showColumnHeaderHyperlink`: Allows you to set the visibility of hyperlink in column headers.\n * * `showValueCellHyperlink`: Allows you to set the visibility of hyperlink in value cells.\n * * `showSummaryCellHyperlink`: Allows you to set the visibility of hyperlink in summary cells.\n * * `headerText`: Allows you to set the visibility of hyperlink based on header text.\n * * `conditionalSettings`: Allows you to set the visibility of hyperlink based on specific condition.\n * * `cssClass`: Allows you to add CSS class name to the hyperlink options.\n *\n * > By default, the hyperlink options are disabled for all cells in the pivot table.\n */\nvar HyperlinkSettings = /** @class */ (function (_super) {\n __extends(HyperlinkSettings, _super);\n function HyperlinkSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HyperlinkSettings.prototype, \"showHyperlink\", void 0);\n __decorate([\n Property(false)\n ], HyperlinkSettings.prototype, \"showRowHeaderHyperlink\", void 0);\n __decorate([\n Property(false)\n ], HyperlinkSettings.prototype, \"showColumnHeaderHyperlink\", void 0);\n __decorate([\n Property(false)\n ], HyperlinkSettings.prototype, \"showValueCellHyperlink\", void 0);\n __decorate([\n Property(false)\n ], HyperlinkSettings.prototype, \"showSummaryCellHyperlink\", void 0);\n __decorate([\n Collection([], ConditionalSettings)\n ], HyperlinkSettings.prototype, \"conditionalSettings\", void 0);\n __decorate([\n Property()\n ], HyperlinkSettings.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], HyperlinkSettings.prototype, \"cssClass\", void 0);\n return HyperlinkSettings;\n}(ChildProperty));\nexport { HyperlinkSettings };\n/**\n * Allow options to configure the view port as either pivot table or pivot chart or both table and chart. The options available are:\n * * `view`: Allows you to choose the view port as either pivot table or pivot chart or both table and chart.\n * * `primary`: Allows you to set the primary view to be either pivot table or pivot chart. To use this option, it requires the property `view` to be **Both**.\n */\nvar DisplayOption = /** @class */ (function (_super) {\n __extends(DisplayOption, _super);\n function DisplayOption() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Table')\n ], DisplayOption.prototype, \"view\", void 0);\n __decorate([\n Property('Table')\n ], DisplayOption.prototype, \"primary\", void 0);\n return DisplayOption;\n}(ChildProperty));\nexport { DisplayOption };\n/* eslint-enable */\n/**\n * Represents the PivotView component.\n * ```html\n *
\n * \n * ```\n */\nvar PivotView = /** @class */ (function (_super) {\n __extends(PivotView, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the widget\n * @param {PivotViewModel} options - options.\n * @param {string|HTMLElement} element - element.\n */\n function PivotView(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n /** @hidden */\n _this_1.verticalScrollScale = 1;\n /** @hidden */\n _this_1.horizontalScrollScale = 1;\n /** @hidden */\n _this_1.scrollerBrowserLimit = 8000000;\n /** @hidden */\n _this_1.lastSortInfo = {};\n /** @hidden */\n _this_1.lastFilterInfo = {};\n /** @hidden */\n _this_1.lastAggregationInfo = {};\n /** @hidden */\n _this_1.lastCalcFieldInfo = {};\n /** @hidden */\n _this_1.isScrolling = false;\n /** @hidden */\n _this_1.isInitial = true;\n _this_1.shiftLockedPos = [];\n _this_1.savedSelectedCellsPos = [];\n _this_1.cellSelectionPos = [];\n _this_1.isPopupClicked = false;\n _this_1.isMouseDown = false;\n _this_1.isMouseUp = false;\n _this_1.fieldsType = {};\n _this_1.remoteData = [];\n _this_1.defaultItems = {};\n _this_1.isCellBoxMultiSelection = false;\n /** @hidden */\n _this_1.gridHeaderCellInfo = [];\n /** @hidden */\n _this_1.gridCellCollection = {};\n /** @hidden */\n _this_1.rowRangeSelection = { enable: false, startIndex: 0, endIndex: 0 };\n /** @hidden */\n _this_1.isStaticRefresh = false;\n /** @hidden */\n _this_1.resizeInfo = {};\n /** @hidden */\n _this_1.scrollPosObject = {\n vertical: 0, horizontal: 0, verticalSection: 0,\n horizontalSection: 0, top: 0, left: 0, scrollDirection: { direction: '', position: 0 }\n };\n /** @hidden */\n _this_1.pivotColumns = [];\n /** @hidden */\n _this_1.totColWidth = 0;\n /** @hidden */\n _this_1.posCount = 0;\n /** @hidden */\n _this_1.isModified = false;\n /** @hidden */\n _this_1.isInitialRendering = false;\n _this_1.needsID = true;\n _this_1.pivotRefresh = Component.prototype.refresh; /* eslint-disable-line */\n _this_1.request = new XMLHttpRequest();\n /** @hidden */\n _this_1.isServerWaitingPopup = false;\n _this_1.pivotView = _this_1;\n setValue('mergePersistData', _this_1.mergePersistPivotData, _this_1);\n return _this_1;\n }\n PivotView_1 = PivotView;\n /**\n * To provide the array of modules needed for control rendering\n * @returns {ModuleDeclaration[]} - return.\n * @hidden\n */\n PivotView.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ args: [this], member: 'groupingBar' });\n if (this.allowConditionalFormatting) {\n modules.push({ args: [this], member: 'conditionalFormatting' });\n }\n if (this.allowNumberFormatting) {\n modules.push({ args: [this], member: 'numberFormatting' });\n }\n if (this.allowCalculatedField) {\n modules.push({ args: [this], member: 'calculatedField' });\n }\n if (this.showToolbar && (this.toolbar.length > 0 || this.toolbarTemplate)) {\n modules.push({ args: [this], member: 'toolbar' });\n }\n if (this.showFieldList) {\n modules.push({ args: [this], member: 'fieldList' });\n }\n if (this.allowExcelExport) {\n modules.push({ args: [this], member: 'excelExport' });\n }\n if (this.allowPdfExport) {\n modules.push({ args: [this], member: 'pdfExport' });\n }\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualscroll' });\n }\n if (this.allowGrouping) {\n modules.push({ args: [this], member: 'grouping' });\n }\n return modules;\n };\n /* eslint-disable-next-line */\n /**\n * For internal use only - Initializing internal properties;\n * @private\n */\n PivotView.prototype.preRender = function () {\n if (this.dataSourceSettings && this.dataSourceSettings.providerType === 'SSAS') {\n this.dataType = 'olap';\n this.olapEngineModule = new OlapEngine();\n }\n else {\n this.dataType = 'pivot';\n this.engineModule = new PivotEngine();\n }\n this.isAdaptive = Browser.isDevice;\n if (Browser.isIE || Browser.info.name === 'edge') {\n this.scrollerBrowserLimit = 1500000;\n }\n else if (Browser.info.name === 'chrome') {\n this.scrollerBrowserLimit = 15000000;\n }\n this.isTouchMode = closest(this.element, 'e-bigger') ? true : false;\n this.initProperties();\n this.renderToolTip();\n this.keyboardModule = new KeyboardInteraction(this);\n this.contextMenuModule = new PivotContextMenu(this);\n this.globalize = new Internationalization(this.locale);\n if (this.showFieldList || this.showGroupingBar || this.allowNumberFormatting || this.allowCalculatedField ||\n this.toolbar || this.allowGrouping || this.gridSettings.contextMenuItems) {\n this.commonModule = new Common(this);\n }\n /* eslint-disable */\n this.defaultLocale = {\n grandTotal: 'Grand Total',\n total: 'Total',\n value: 'Value',\n noValue: 'No value',\n row: 'Row',\n column: 'Column',\n collapse: 'Collapse',\n expand: 'Expand',\n rowAxisPrompt: 'Drop row here',\n columnAxisPrompt: 'Drop column here',\n valueAxisPrompt: 'Drop value here',\n filterAxisPrompt: 'Drop filter here',\n filter: 'Filter',\n filtered: 'Filtered',\n sort: 'Sort',\n filters: 'Filters',\n rows: 'Rows',\n columns: 'Columns',\n values: 'Values',\n close: 'Close',\n cancel: 'Cancel',\n delete: 'Delete',\n CalculatedField: 'Calculated Field',\n createCalculatedField: 'Create Calculated Field',\n fieldName: 'Enter the field name',\n error: 'Error',\n invalidFormula: 'Invalid formula.',\n dropText: 'Example: (\"Sum(Order_Count)\" + \"Sum(In_Stock)\") * 250',\n dropTextMobile: 'Add fields and edit formula here.',\n dropAction: 'Calculated field cannot be place in any other region except value axis.',\n alert: 'Alert',\n warning: 'Warning',\n ok: 'OK',\n search: 'Search',\n drag: 'Drag',\n remove: 'Remove',\n allFields: 'All Fields',\n formula: 'Formula',\n addToRow: 'Add to Row',\n addToColumn: 'Add to Column',\n addToValue: 'Add to Value',\n addToFilter: 'Add to Filter',\n emptyData: 'No records to display',\n fieldExist: 'A field already exists in this name. Please enter a different name.',\n confirmText: 'A calculation field already exists in this name. Do you want to replace it?',\n noMatches: 'No matches',\n format: 'Summaries values by',\n edit: 'Edit',\n clear: 'Clear',\n sortAscending: 'Sort ascending order',\n sortDescending: 'Sort descending order',\n sortNone: 'Sort data order',\n clearCalculatedField: 'Clear edited field info',\n editCalculatedField: 'Edit calculated field',\n formulaField: 'Drag and drop fields to formula',\n dragField: 'Drag field to formula',\n clearFilter: 'Clear',\n by: 'by',\n all: 'All',\n multipleItems: 'Multiple items',\n member: 'Member',\n label: 'Label',\n date: 'Date',\n enterValue: 'Enter value',\n chooseDate: 'Enter date',\n Before: 'Before',\n BeforeOrEqualTo: 'Before Or Equal To',\n After: 'After',\n AfterOrEqualTo: 'After Or Equal To',\n labelTextContent: 'Show the items for which the label',\n dateTextContent: 'Show the items for which the date',\n valueTextContent: 'Show the items for which',\n Equals: 'Equals',\n DoesNotEquals: 'Does Not Equal',\n BeginWith: 'Begins With',\n DoesNotBeginWith: 'Does Not Begin With',\n EndsWith: 'Ends With',\n DoesNotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n DoesNotContains: 'Does Not Contain',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqualTo: 'Greater Than Or Equal To',\n LessThan: 'Less Than',\n LessThanOrEqualTo: 'Less Than Or Equal To',\n Between: 'Between',\n NotBetween: 'Not Between',\n And: 'and',\n Sum: 'Sum',\n Count: 'Count',\n DistinctCount: 'Distinct Count',\n Product: 'Product',\n Avg: 'Avg',\n Median: 'Median',\n Min: 'Min',\n SampleVar: 'Sample Var',\n PopulationVar: 'Population Var',\n RunningTotals: 'Running Totals',\n Max: 'Max',\n Index: 'Index',\n SampleStDev: 'Sample StDev',\n PopulationStDev: 'Population StDev',\n PercentageOfRowTotal: '% of Row Total',\n PercentageOfParentTotal: '% of Parent Total',\n PercentageOfParentColumnTotal: '% of Parent Column Total',\n PercentageOfParentRowTotal: '% of Parent Row Total',\n DifferenceFrom: 'Difference From',\n PercentageOfDifferenceFrom: '% of Difference From',\n PercentageOfGrandTotal: '% of Grand Total',\n PercentageOfColumnTotal: '% of Column Total',\n MoreOption: 'More...',\n NotEquals: 'Not Equals',\n AllValues: 'All Values',\n conditionalFormating: 'Conditional Formatting',\n apply: 'Apply',\n condition: 'Add Condition',\n formatLabel: 'Format',\n valueFieldSettings: 'Value field settings',\n baseField: 'Base field',\n baseItem: 'Base item',\n summarizeValuesBy: 'Summarize values by',\n sourceName: 'Field name :',\n sourceCaption: 'Field caption',\n example: 'e.g:',\n editorDataLimitMsg: ' more items. Search to refine further.',\n details: 'Details',\n manageRecords: 'Manage Records',\n Years: 'Years',\n Quarters: 'Quarters',\n Months: 'Months',\n Days: 'Days',\n Hours: 'Hours',\n Minutes: 'Minutes',\n Seconds: 'Seconds',\n save: 'Save a report',\n new: 'Create a new report',\n load: 'Load',\n saveAs: 'Save as current report',\n rename: 'Rename a current report',\n deleteReport: 'Delete a current report',\n export: 'Export',\n subTotals: 'Sub totals',\n grandTotals: 'Grand totals',\n reportName: 'Report Name :',\n pdf: 'PDF',\n excel: 'Excel',\n csv: 'CSV',\n png: 'PNG',\n jpeg: 'JPEG',\n svg: 'SVG',\n mdxQuery: 'MDX Query',\n showSubTotals: 'Show sub totals',\n doNotShowSubTotals: 'Do not show sub totals',\n showSubTotalsRowsOnly: 'Show sub totals rows only',\n showSubTotalsColumnsOnly: 'Show sub totals columns only',\n showGrandTotals: 'Show grand totals',\n doNotShowGrandTotals: 'Do not show grand totals',\n showGrandTotalsRowsOnly: 'Show grand totals rows only',\n showGrandTotalsColumnsOnly: 'Show grand totals columns only',\n fieldList: 'Show fieldlist',\n grid: 'Show table',\n toolbarFormatting: 'Conditional formatting',\n chart: 'Chart',\n reportMsg: 'Please enter vaild report name!!!',\n reportList: 'Report list',\n removeConfirm: 'Are you sure you want to delete this report?',\n emptyReport: 'No reports found!!',\n bar: 'Bar',\n pie: 'Pie',\n funnel: 'Funnel',\n doughnut: 'Doughnut',\n pyramid: 'Pyramid',\n stackingcolumn: 'Stacked Column',\n stackingarea: 'Stacked Area',\n stackingbar: 'Stacked Bar',\n stepline: 'Step Line',\n steparea: 'Step Area',\n splinearea: 'Spline Area',\n spline: 'Spline',\n stackingcolumn100: '100% Stacked Column',\n stackingbar100: '100% Stacked Bar',\n stackingarea100: '100% Stacked Area',\n bubble: 'Bubble',\n pareto: 'Pareto',\n radar: 'Radar',\n line: 'Line',\n area: 'Area',\n scatter: 'Scatter',\n polar: 'Polar',\n of: 'of',\n emptyFormat: 'No format found!!!',\n emptyInput: 'Enter a value',\n newReportConfirm: 'Do you want to save the changes to this report?',\n emptyReportName: 'Enter a report name',\n qtr: 'Qtr',\n null: 'null',\n undefined: 'undefined',\n groupOutOfRange: 'Out of Range',\n fieldDropErrorAction: 'The field you are moving cannot be placed in that area of the report',\n aggregate: 'Aggregate',\n drillThrough: 'Drill Through',\n ascending: 'Ascending',\n descending: 'Descending',\n number: 'Number',\n currency: 'Currency',\n percentage: 'Percentage',\n formatType: 'Format Type',\n customText: 'Currency Symbol',\n symbolPosition: 'Symbol Position',\n left: 'Left',\n right: 'Right',\n grouping: 'Grouping',\n true: 'True',\n false: 'False',\n decimalPlaces: 'Decimal Places',\n numberFormat: 'Number Formatting',\n memberType: 'Field Type',\n formatString: 'Format',\n expressionField: 'Expression',\n customFormat: 'Enter custom format string',\n numberFormatString: 'Example: C, P, 0000 %, ###0.##0#, etc.',\n selectedHierarchy: 'Parent Hierarchy',\n olapDropText: 'Example: [Measures].[Order Quantity] + ([Measures].[Order Quantity] * 0.10)',\n Percent: 'Percent',\n Currency: 'Currency',\n Custom: 'Custom',\n Measure: 'Measure',\n Dimension: 'Dimension',\n Standard: 'Standard',\n blank: '(Blank)',\n fieldTooltip: 'Drag and drop fields to create an expression. ' +\n 'And, if you want to edit the existing calculated fields! ' +\n 'You can achieve it by simply selecting the field under \"Calculated Members\".',\n fieldTitle: 'Field Name',\n QuarterYear: 'Quarter Year',\n drillError: 'Cannot show the raw items of calculated fields.',\n caption: 'Field Caption',\n copy: 'Copy',\n defaultReport: 'Sample Report',\n customFormatString: 'Custom Format',\n invalidFormat: 'Invalid Format.',\n group: 'Group',\n unGroup: 'Ungroup',\n invalidSelection: 'Cannot group that selection.',\n groupName: 'Enter the caption to display in header',\n captionName: 'Enter the caption for group field',\n selectedItems: 'Selected items',\n groupFieldCaption: 'Field caption',\n groupTitle: 'Group name',\n startAt: 'Starting at',\n endAt: 'Ending at',\n groupBy: 'Interval by',\n selectGroup: 'Select groups',\n multipleAxes: 'Multiple Axis',\n showLegend: 'Show Legend',\n exit: 'Exit',\n chartTypeSettings: 'Chart Type Settings',\n ChartType: 'Chart Type',\n yes: 'Yes',\n no: 'No',\n numberFormatMenu: 'Number Formatting...',\n conditionalFormatingMenu: 'Conditional Formatting...',\n removeCalculatedField: 'Are you sure you want to delete this calculated field?',\n replaceConfirmBefore: 'A report named ',\n replaceConfirmAfter: ' already exists. Do you want to replace it?',\n invalidJSON: 'Invalid JSON data',\n invalidCSV: 'Invalid CSV data',\n stacked: 'Stacked',\n single: 'Single',\n multipleAxisMode: 'Multiple Axis Mode'\n };\n /* eslint-enable */\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n this.renderContextMenu();\n this.isDragging = false;\n this.addInternalEvents();\n //setCurrencyCode(this.currencyCode);\n };\n PivotView.prototype.onBeforeTooltipOpen = function (args) {\n args.element.classList.add('e-pivottooltipwrap');\n };\n PivotView.prototype.renderToolTip = function () {\n if (this.showTooltip) {\n if (this.tooltipTemplate) {\n this.tooltip = new Tooltip({\n target: 'td.e-valuescontent',\n cssClass: 'e-pivottooltiptemplate',\n showTipPointer: false,\n position: 'BottomRight',\n mouseTrail: true,\n enableRtl: this.enableRtl,\n locale: this.locale,\n beforeRender: this.setToolTip.bind(this),\n beforeOpen: this.onBeforeTooltipOpen\n });\n }\n else {\n this.tooltip = new Tooltip({\n target: 'td.e-valuescontent',\n showTipPointer: false,\n position: 'BottomRight',\n mouseTrail: true,\n enableRtl: this.enableRtl,\n locale: this.locale,\n beforeRender: this.setToolTip.bind(this),\n beforeOpen: this.onBeforeTooltipOpen\n });\n }\n this.tooltip.isStringTemplate = true;\n this.tooltip.appendTo(this.element);\n }\n else if (this.tooltip) {\n this.tooltip.destroy();\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.renderContextMenu = function () {\n if (this.gridSettings.contextMenuItems || (this.allowGrouping && this.dataType === 'pivot')) {\n var conmenuItems = [];\n var groupItems = [];\n var customItems = [];\n var exportItems = [];\n var aggItems = [];\n var expItems = [];\n var aggregateItems = [];\n if (this.gridSettings.contextMenuItems) {\n for (var _i = 0, _a = this.gridSettings.contextMenuItems; _i < _a.length; _i++) {\n var item = _a[_i];\n if (typeof item === 'string' && this.getDefaultItems().indexOf(item) !== -1) {\n if (item.toString().toLowerCase().indexOf('aggregate') !== -1 && this.dataType === 'pivot') {\n aggregateItems = [\n { text: this.localeObj.getConstant('Sum') }\n ];\n var aggregateGroup = this.buildDefaultItems('Aggregate');\n aggregateGroup.items = aggregateItems;\n aggItems.push(aggregateGroup);\n }\n else if (item.toString().toLowerCase().indexOf('export') !== -1) {\n exportItems.push(this.buildDefaultItems(item));\n }\n else {\n conmenuItems.push(this.buildDefaultItems(item));\n }\n }\n else if (typeof item !== 'string') {\n customItems.push(item);\n }\n }\n }\n if (this.allowGrouping && this.dataType === 'pivot') {\n if (!this.getFieldByID(this.element.id + '_custom_group', this.gridSettings.contextMenuItems)) {\n groupItems.push(this.buildDefaultItems('Group'));\n }\n if (!this.getFieldByID(this.element.id + '_custom_ungroup', this.gridSettings.contextMenuItems)) {\n groupItems.push(this.buildDefaultItems('Ungroup'));\n }\n }\n if (exportItems.length > 0) {\n var exportGroupItems = this.buildDefaultItems('export');\n exportGroupItems.items = exportItems;\n expItems.push(exportGroupItems);\n }\n this.gridSettings.contextMenuItems = [];\n Array.prototype.push.apply(this.gridSettings.contextMenuItems, aggItems);\n Array.prototype.push.apply(this.gridSettings.contextMenuItems, conmenuItems);\n Array.prototype.push.apply(this.gridSettings.contextMenuItems, groupItems);\n Array.prototype.push.apply(this.gridSettings.contextMenuItems, expItems);\n Array.prototype.push.apply(this.gridSettings.contextMenuItems, customItems);\n }\n };\n PivotView.prototype.getFieldByID = function (id, fields) {\n return new DataManager({ json: fields }).executeLocal(new Query().where('id', 'equal', id))[0];\n };\n /* eslint-disable-next-line */\n /**\n * @hidden\n */\n PivotView.prototype.getAllSummaryType = function () {\n return ['Sum', 'Count', 'DistinctCount', 'Product', 'Min', 'Max', 'Avg', 'Median', 'Index',\n 'PopulationVar', 'SampleVar', 'PopulationStDev', 'SampleStDev', 'RunningTotals', 'PercentageOfGrandTotal',\n 'PercentageOfColumnTotal', 'PercentageOfRowTotal', 'PercentageOfParentColumnTotal', 'PercentageOfParentRowTotal',\n 'DifferenceFrom', 'PercentageOfDifferenceFrom', 'PercentageOfParentTotal'];\n };\n PivotView.prototype.getDefaultItems = function () {\n return ['Drillthrough', 'Expand',\n 'Collapse', 'Pdf Export', 'Excel Export', 'Csv Export', 'Sort Ascending', 'Sort Descending',\n 'Aggregate', 'CalculatedField'];\n };\n PivotView.prototype.buildDefaultItems = function (item) {\n var menuItem;\n switch (item) {\n case 'Aggregate':\n menuItem = {\n text: this.localeObj.getConstant('aggregate'), target: 'th.e-valuesheader,td.e-valuescontent,.e-stot.e-rowsheader',\n id: this.element.id + '_aggregate'\n };\n break;\n case 'CalculatedField':\n menuItem = {\n text: this.localeObj.getConstant('CalculatedField'), target: 'td.e-valuescontent',\n id: this.element.id + '_CalculatedField'\n };\n break;\n case 'Drillthrough':\n menuItem = {\n text: this.localeObj.getConstant('drillThrough'), target: 'td.e-valuescontent',\n id: this.element.id + '_drillthrough_menu', iconCss: cls.PIVOTVIEW_GRID + ' ' + cls.ICON\n };\n break;\n case 'export':\n menuItem = {\n text: this.localeObj.getConstant('export'), target: 'td.e-valuescontent',\n id: this.element.id + '_exporting', iconCss: cls.PIVOTVIEW_EXPORT + ' ' + cls.ICON\n };\n break;\n case 'Pdf Export':\n menuItem = {\n text: this.localeObj.getConstant('pdf'), id: this.element.id + '_pdf',\n iconCss: cls.GRID_PDF_EXPORT + ' ' + cls.ICON\n };\n break;\n case 'Excel Export':\n menuItem = {\n text: this.localeObj.getConstant('excel'), id: this.element.id + '_excel',\n iconCss: cls.GRID_EXCEL_EXPORT + ' ' + cls.ICON\n };\n break;\n case 'Csv Export':\n menuItem = {\n text: this.localeObj.getConstant('csv'), id: this.element.id + '_csv',\n iconCss: cls.GRID_CSV_EXPORT + ' ' + cls.ICON\n };\n break;\n case 'Expand':\n menuItem = {\n text: this.localeObj.getConstant('expand'), target: 'td.e-rowsheader,.e-columnsheader',\n id: this.element.id + '_expand', iconCss: cls.PIVOTVIEW_EXPAND + ' ' + cls.ICON\n };\n break;\n case 'Collapse':\n menuItem = {\n text: this.localeObj.getConstant('collapse'), target: 'td.e-rowsheader,.e-columnsheader',\n id: this.element.id + '_collapse', iconCss: cls.PIVOTVIEW_COLLAPSE + ' ' + cls.ICON\n };\n break;\n case 'Sort Ascending':\n menuItem = {\n text: this.localeObj.getConstant('ascending'), target: 'th.e-valuesheader,.e-stot',\n id: this.element.id + '_sortasc', iconCss: cls.ICON_ASC + ' ' + cls.ICON\n };\n break;\n case 'Sort Descending':\n menuItem = {\n text: this.localeObj.getConstant('descending'), target: 'th.e-valuesheader,.e-stot',\n id: this.element.id + '_sortdesc', iconCss: cls.ICON_DESC + ' ' + cls.ICON\n };\n break;\n case 'Group':\n menuItem = {\n text: this.localeObj.getConstant('group'), target: 'td.e-rowsheader,.e-columnsheader',\n id: this.element.id + '_custom_group', iconCss: cls.PIVOTVIEW_GROUP + ' ' + cls.ICON\n };\n break;\n case 'Ungroup':\n menuItem = {\n text: this.localeObj.getConstant('unGroup'), target: 'td.e-rowsheader,.e-columnsheader',\n id: this.element.id + '_custom_ungroup', iconCss: cls.PIVOTVIEW_UN_GROUP + ' ' + cls.ICON\n };\n break;\n }\n this.defaultItems[item] = {\n text: menuItem.text, id: menuItem.id,\n target: menuItem.target, iconCss: menuItem.iconCss\n };\n return this.defaultItems[item];\n };\n PivotView.prototype.initProperties = function () {\n this.pivotRefresh = Component.prototype.refresh;\n this.minHeight = isNullOrUndefined(this.minHeight) ? 300 : (this.minHeight < 10 ? 10 : this.minHeight);\n this.isScrolling = false;\n this.allowServerDataBinding = false;\n this.isStaticRefresh = false;\n this.setProperties({ pivotValues: [] }, true);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n delete this.bulkChanges.pivotValues;\n this.allowServerDataBinding = true;\n this.scrollPosObject = {\n vertical: 0, horizontal: 0, verticalSection: 0,\n horizontalSection: 0, top: 0, left: 0, scrollDirection: { direction: '', position: 0 }\n };\n this.queryCellInfo = this.gridSettings.queryCellInfo ? this.gridSettings.queryCellInfo.bind(this) : undefined;\n this.headerCellInfo = this.gridSettings.headerCellInfo ? this.gridSettings.headerCellInfo.bind(this) : undefined;\n this.resizing = this.gridSettings.resizing ? this.gridSettings.resizing.bind(this) : undefined;\n this.resizeStop = this.gridSettings.resizeStop ? this.gridSettings.resizeStop.bind(this) : undefined;\n this.pdfHeaderQueryCellInfo = this.gridSettings.pdfHeaderQueryCellInfo ?\n this.gridSettings.pdfHeaderQueryCellInfo.bind(this) : undefined;\n this.pdfQueryCellInfo = this.gridSettings.pdfQueryCellInfo ? this.gridSettings.pdfQueryCellInfo.bind(this) : undefined;\n this.excelHeaderQueryCellInfo = this.gridSettings.excelHeaderQueryCellInfo ?\n this.gridSettings.excelHeaderQueryCellInfo.bind(this) : undefined;\n this.excelQueryCellInfo = this.gridSettings.excelQueryCellInfo ?\n this.gridSettings.excelQueryCellInfo.bind(this) : undefined;\n this.columnDragStart = this.gridSettings.columnDragStart ? this.gridSettings.columnDragStart.bind(this) : undefined;\n this.columnDrag = this.gridSettings.columnDrag ? this.gridSettings.columnDrag.bind(this) : undefined;\n this.columnDrop = this.gridSettings.columnDrop ? this.gridSettings.columnDrop.bind(this) : undefined;\n this.beforeColumnsRender = this.gridSettings.columnRender ? this.gridSettings.columnRender : undefined;\n this.selected = this.gridSettings.cellSelected ? this.gridSettings.cellSelected : undefined;\n this.cellDeselected = this.gridSettings.cellDeselected ? this.gridSettings.cellDeselected : undefined;\n this.rowSelected = this.gridSettings.rowSelected ? this.gridSettings.rowSelected : undefined;\n this.rowDeselected = this.gridSettings.rowDeselected ? this.gridSettings.rowDeselected : undefined;\n this.chartTooltipRender = this.chartSettings.tooltipRender ? this.chartSettings.tooltipRender : undefined;\n this.chartLoaded = this.chartSettings.loaded ? this.chartSettings.loaded : undefined;\n this.chartLoad = this.chartSettings.load ? this.chartSettings.load : undefined;\n this.chartResized = this.chartSettings.resized ? this.chartSettings.resized : undefined;\n this.chartAxisLabelRender = this.chartSettings.axisLabelRender ? this.chartSettings.axisLabelRender : undefined;\n this.multiLevelLabelClick = this.chartSettings.multiLevelLabelClick ? this.chartSettings.multiLevelLabelClick : undefined;\n this.chartPointClick = this.chartSettings.pointClick ? this.chartSettings.pointClick : undefined;\n this.contextMenuClick = this.gridSettings.contextMenuClick ? this.gridSettings.contextMenuClick : undefined;\n this.contextMenuOpen = this.gridSettings.contextMenuOpen ? this.gridSettings.contextMenuOpen : undefined;\n this.beforePdfExport = this.gridSettings.beforePdfExport ? this.gridSettings.beforePdfExport.bind(this) : undefined;\n this.beforeExcelExport = this.gridSettings.beforeExcelExport ? this.gridSettings.beforeExcelExport.bind(this) : undefined;\n if (this.gridSettings.rowHeight === null) {\n if (this.isTouchMode) {\n this.setProperties({ gridSettings: { rowHeight: 36 } }, true);\n }\n else {\n this.setProperties({ gridSettings: { rowHeight: this.isAdaptive ? 36 : 30 } }, true);\n }\n }\n if (this.chartSettings && this.chartSettings.enableMultiAxis && !this.chartSettings.enableMultipleAxis) {\n this.setProperties({ chartSettings: { enableMultipleAxis: true } }, true);\n }\n this.element.style.height = '100%';\n if (this.enableVirtualization) {\n this.updatePageSettings(true);\n if (this.allowExcelExport) {\n PivotView_1.Inject(ExcelExport);\n }\n if (this.allowPdfExport) {\n PivotView_1.Inject(PDFExport);\n }\n if (this.editSettings.allowEditing) {\n PivotView_1.Inject(DrillThrough);\n }\n }\n this.isCellBoxMultiSelection = this.gridSettings.allowSelection &&\n this.gridSettings.selectionSettings.cellSelectionMode === 'Box' &&\n this.gridSettings.selectionSettings.mode === 'Cell' && this.gridSettings.selectionSettings.type === 'Multiple';\n if (this.allowGrouping && !this.isCellBoxMultiSelection) {\n this.isCellBoxMultiSelection = true;\n this.setProperties({ gridSettings: { allowSelection: true, selectionSettings: { cellSelectionMode: 'Box', mode: 'Cell', type: 'Multiple' } } }, true);\n }\n if (this.displayOption.view !== 'Table') {\n this.chartModule = new PivotChart();\n }\n this.currentView = this.currentView ? this.currentView : (this.displayOption.view === 'Both' ?\n this.displayOption.primary : this.displayOption.view);\n };\n /* eslint-disable-next-line */\n /**\n * @hidden\n */\n PivotView.prototype.updatePageSettings = function (isInit) {\n if (this.enableVirtualization) {\n var colValues = 1;\n var rowValues = 1;\n if (this.dataSourceSettings.values.length > 1 && this.dataType === 'pivot') {\n if (this.dataSourceSettings.valueAxis === 'row') {\n rowValues = this.dataSourceSettings.values.length;\n }\n else {\n colValues = this.dataSourceSettings.values.length;\n }\n }\n var heightAsNumber = this.getHeightAsNumber();\n if (isNaN(heightAsNumber)) {\n heightAsNumber = this.element.offsetHeight;\n }\n this.pageSettings = {\n columnCurrentPage: isInit ? 1 : this.pageSettings.columnCurrentPage,\n rowCurrentPage: isInit ? 1 : this.pageSettings.rowCurrentPage,\n columnSize: Math.ceil((Math.floor((this.getWidthAsNumber()) /\n this.gridSettings.columnWidth) - 1) / colValues),\n rowSize: Math.ceil(Math.floor((heightAsNumber) / this.gridSettings.rowHeight) / rowValues),\n allowDataCompression: this.allowDataCompression\n };\n }\n };\n /* eslint-disable */\n /**\n * Initialize the control rendering\n * @returns {void}\n * @hidden\n */\n PivotView.prototype.render = function () {\n this.loadData();\n };\n PivotView.prototype.loadData = function () {\n if (this.dataSourceSettings.formatSettings.length > 0) {\n var formatfield = this.dataSourceSettings.formatSettings;\n for (var i = 0; i < formatfield.length; i++) {\n if ((!isNullOrUndefined(formatfield[i].maximumFractionDigits) || !isNullOrUndefined(formatfield[i].minimumFractionDigits)) && formatfield[i].format.match(/^(P|N|C|P[0-9]|C[0-9]|N[0-9])$/g) === null) {\n formatfield[i].maximumFractionDigits = undefined;\n formatfield[i].minimumIntegerDigits = undefined;\n }\n }\n }\n if (this.dataType === 'pivot' && this.dataSourceSettings.url && this.dataSourceSettings.url !== '') {\n if (this.dataSourceSettings.mode === 'Server') {\n this.guid = PivotUtil.generateUUID();\n this.initialLoad();\n if (this.displayOption.view !== 'Chart') {\n this.renderEmptyGrid();\n }\n this.showWaitingPopup();\n }\n else {\n this.request.open(\"GET\", this.dataSourceSettings.url, true);\n this.request.withCredentials = false;\n this.request.onreadystatechange = this.onReadyStateChange.bind(this);\n this.request.setRequestHeader(\"Content-type\", \"text/plain\");\n this.request.send(null);\n }\n }\n else {\n this.initialLoad();\n }\n };\n /* eslint-enable */\n PivotView.prototype.onSuccess = function () {\n if (this.request.readyState === XMLHttpRequest.DONE) {\n this.isServerWaitingPopup = true;\n try {\n /* eslint-disable */\n var engine = JSON.parse(this.request.responseText);\n if (this.currentAction === 'fetchFieldMembers') {\n var currentMembers = JSON.parse(engine.members);\n var dateMembers = [];\n var formattedMembers = {};\n var members = {};\n /* eslint-enable */\n for (var i = 0; i < currentMembers.length; i++) {\n dateMembers.push({ formattedText: currentMembers[i].FormattedText, actualText: currentMembers[i].ActualText });\n formattedMembers[currentMembers[i].FormattedText] = {};\n members[currentMembers[i].ActualText] = {};\n }\n this.engineModule.fieldList[engine.memberName].dateMember = dateMembers;\n this.engineModule.fieldList[engine.memberName].formattedMembers = formattedMembers;\n this.engineModule.fieldList[engine.memberName].members = members;\n if (this.showGroupingBar) {\n this.pivotButtonModule.updateFilterEvents();\n }\n else {\n this.pivotFieldListModule.pivotButtonModule.updateFilterEvents();\n }\n }\n else if (this.currentAction === 'fetchRawData') {\n var valueCaption = this.engineModule.fieldList[this.drillThroughValue.actualText.toString()] ?\n this.engineModule.fieldList[this.drillThroughValue.actualText.toString()].caption : this.drillThroughValue.actualText.toString(); /* eslint-disable-line */\n var aggType = this.engineModule.fieldList[this.drillThroughValue.actualText] ? this.engineModule.fieldList[this.drillThroughValue.actualText].aggregateType : '';\n var rawData = JSON.parse(engine.rawData);\n var parsedObj = JSON.parse(engine.indexObject); /* eslint-disable-line */\n var indexObject = {}; /* eslint-disable-line */\n for (var len = 0; len < parsedObj.length; len++) {\n indexObject[parsedObj[len].Key] = parsedObj[len].Value;\n }\n this.drillThroughValue.indexObject = indexObject;\n this.drillThroughModule.triggerDialog(valueCaption, aggType, rawData, this.drillThroughValue, this.drillThroughElement);\n }\n else {\n var fList = PivotUtil.formatFieldList(JSON.parse(engine.fieldList));\n if (this.engineModule.fieldList) {\n var keys = Object.keys(this.engineModule.fieldList);\n for (var i = 0; i < keys.length; i++) {\n if (this.engineModule.fieldList[keys[i]] && fList[keys[i]]) {\n fList[keys[i]].dateMember = this.engineModule.fieldList[keys[i]].dateMember;\n fList[keys[i]].formattedMembers = this.engineModule.fieldList[keys[i]].formattedMembers;\n fList[keys[i]].members = this.engineModule.fieldList[keys[i]].members;\n }\n }\n }\n this.engineModule.fieldList = fList;\n this.engineModule.fields = JSON.parse(engine.fields);\n this.engineModule.rowCount = JSON.parse(engine.pivotCount).RowCount;\n this.engineModule.columnCount = JSON.parse(engine.pivotCount).ColumnCount;\n this.engineModule.rowStartPos = JSON.parse(engine.pivotCount).RowStartPosition;\n this.engineModule.colStartPos = JSON.parse(engine.pivotCount).ColumnStartPosition;\n this.engineModule.rowFirstLvl = JSON.parse(engine.pivotCount).RowFirstLevel;\n this.engineModule.colFirstLvl = JSON.parse(engine.pivotCount).ColumnFirstLevel;\n var rowPos = void 0;\n var pivotValues = PivotUtil.formatPivotValues(JSON.parse(engine.pivotValue)); /* eslint-disable-line */\n for (var rCnt = 0; rCnt < pivotValues.length; rCnt++) {\n if (pivotValues[rCnt] && pivotValues[rCnt][0] && pivotValues[rCnt][0].axis === 'row') {\n rowPos = rCnt;\n break;\n }\n }\n this.engineModule.headerContent = PivotUtil.frameContent(pivotValues, 'header', rowPos, this);\n this.engineModule.pageSettings = this.pageSettings;\n if (this.dataSourceSettings.groupSettings.length > 0) {\n PivotUtil.updateReport(this, JSON.parse(engine.dataSourceSettings));\n }\n var valueSort = JSON.parse(engine.dataSourceSettings).ValueSortSettings; /* eslint-disable-line */\n this.engineModule.valueSortSettings = {\n headerText: valueSort.HeaderText,\n headerDelimiter: valueSort.HeaderDelimiter,\n sortOrder: valueSort.SortOrder,\n columnIndex: valueSort.ColumnIndex\n };\n this.engineModule.pivotValues = pivotValues;\n }\n }\n catch (error) {\n this.engineModule.pivotValues = [];\n }\n if (this.currentAction === 'onScroll') {\n if (this.scrollDirection === 'vertical') {\n var rowValues = this.dataSourceSettings.valueAxis === 'row' ? this.dataSourceSettings.values.length : 1;\n var exactSize = (this.pageSettings.rowSize * rowValues * this.gridSettings.rowHeight);\n var exactPage = Math.ceil(this.engineModule.rowStartPos / (this.pageSettings.rowSize * rowValues));\n var pos = exactSize * exactPage - (this.engineModule.rowFirstLvl * rowValues * this.gridSettings.rowHeight);\n this.scrollPosObject.verticalSection = pos;\n }\n else if (this.scrollDirection === 'horizondal') {\n var colValues = this.dataSourceSettings.valueAxis === 'column' ? this.dataSourceSettings.values.length : 1;\n var exactSize = (this.pageSettings.columnSize * colValues * this.gridSettings.columnWidth);\n var exactPage = Math.ceil(this.engineModule.colStartPos / (this.pageSettings.columnSize * colValues));\n var pos = exactSize * exactPage - (this.engineModule.colFirstLvl * colValues * this.gridSettings.columnWidth);\n this.scrollPosObject.horizontalSection = pos;\n }\n }\n if (this.currentAction !== 'fetchFieldMembers' && this.currentAction !== 'fetchRawData') {\n this.initEngine();\n if (this.calculatedFieldModule && this.calculatedFieldModule.isRequireUpdate) {\n this.calculatedFieldModule.endDialog();\n this.calculatedFieldModule.isRequireUpdate = false;\n }\n if (this.pivotFieldListModule && this.pivotFieldListModule.calculatedFieldModule && this.pivotFieldListModule.calculatedFieldModule.isRequireUpdate) { /* eslint-disable-line */\n this.pivotFieldListModule.calculatedFieldModule.endDialog();\n this.pivotFieldListModule.calculatedFieldModule.isRequireUpdate = false;\n }\n }\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.getEngine = function (action, drillItem, sortItem, aggField, cField, filterItem, memberName, rawDataArgs, editArgs) {\n var _this_1 = this;\n this.currentAction = action;\n this.isServerWaitingPopup = false;\n var customProperties = {\n pageSettings: this.pageSettings,\n enableValueSorting: this.enableValueSorting,\n enableDrillThrough: (this.allowDrillThrough || this.editSettings.allowEditing),\n locale: JSON.stringify(PivotUtil.getLocalizedObject(this))\n };\n this.request.open('POST', this.dataSourceSettings.url, true);\n var params = {\n request: this.request,\n dataSourceSettings: JSON.parse(this.getPersistData()).dataSourceSettings,\n action: action,\n customProperties: {},\n internalProperties: customProperties,\n drillItem: drillItem,\n sortItem: sortItem,\n aggregatedItem: aggField,\n calculatedItem: cField,\n filterItem: filterItem,\n memberName: memberName,\n fetchRawDataArgs: rawDataArgs,\n editArgs: editArgs,\n hash: this.guid\n };\n this.trigger(events.beforeServiceInvoke, params, function (observedArgs) {\n _this_1.request = observedArgs.request;\n params.internalProperties = observedArgs.internalProperties;\n params.customProperties = observedArgs.customProperties;\n params.dataSourceSettings = observedArgs.dataSourceSettings;\n params.calculatedItem = observedArgs.calculatedItem;\n params.drillItem = observedArgs.drillItem;\n params.editArgs = observedArgs.editArgs;\n params.fetchRawDataArgs = observedArgs.fetchRawDataArgs;\n params.filterItem = observedArgs.filterItem;\n params.hash = observedArgs.hash;\n params.memberName = observedArgs.memberName;\n params.sortItem = observedArgs.sortItem;\n });\n this.request.withCredentials = false;\n this.request.onreadystatechange = this.onSuccess.bind(this);\n this.request.setRequestHeader('Content-type', 'application/json');\n this.request.send(JSON.stringify(params));\n };\n PivotView.prototype.onReadyStateChange = function () {\n if (this.request.readyState === XMLHttpRequest.DONE) {\n var dataSource = [];\n if (this.dataSourceSettings.type === 'CSV') {\n var jsonObject = this.request.responseText.split(/\\r?\\n|\\r/);\n // (dataSource as string[][]).push(jsonObject[0].split(',').map(function (e) { return e.replace(/ /g, '').replace(/^\\\"(.+)\\\"$/, \"$1\"); }));\n for (var i = 0; i < jsonObject.length; i++) {\n if (!isNullOrUndefined(jsonObject[i]) && jsonObject[i] !== '') {\n dataSource.push(jsonObject[i].split(','));\n }\n }\n }\n else {\n try {\n dataSource = JSON.parse(this.request.responseText);\n }\n catch (error) {\n dataSource = [];\n }\n }\n if (isBlazor() && dataSource && dataSource.length > 0) {\n this.remoteData = dataSource;\n }\n else if (dataSource && dataSource.length > 0) {\n this.setProperties({ dataSourceSettings: { dataSource: dataSource } }, true);\n }\n this.initialLoad();\n }\n };\n PivotView.prototype.initialLoad = function () {\n var _this_1 = this;\n this.cellTemplateFn = this.templateParser(this.cellTemplate);\n this.tooltipTemplateFn = this.templateParser(this.tooltipTemplate);\n if (this.spinnerTemplate) {\n createSpinner({ target: this.element, template: this.spinnerTemplate }, this.createElement);\n }\n else {\n createSpinner({ target: this.element }, this.createElement);\n }\n var loadArgs = {\n dataSourceSettings: isBlazor() ?\n PivotUtil.getClonedDataSourceSettings(this.dataSourceSettings) :\n this.dataSourceSettings,\n pivotview: isBlazor() ? undefined : this,\n fieldsType: {}\n };\n this.trigger(events.load, loadArgs, function (observedArgs) {\n if (isBlazor()) {\n observedArgs.dataSourceSettings.dataSource = _this_1.dataSourceSettings.dataSource;\n PivotUtil.updateDataSourceSettings(_this_1, observedArgs.dataSourceSettings);\n }\n else {\n _this_1.dataSourceSettings = observedArgs.dataSourceSettings;\n }\n _this_1.fieldsType = observedArgs.fieldsType;\n _this_1.updateClass();\n _this_1.notify(events.initSubComponent, {});\n if (_this_1.dataSourceSettings.mode !== 'Server') {\n _this_1.notify(events.initialLoad, {});\n }\n if (_this_1.isAdaptive) {\n _this_1.contextMenuModule.render();\n }\n _this_1.notify(events.initToolbar, {});\n });\n if (isBlazor()) {\n this.renderComplete();\n }\n };\n /**\n * Register the internal events.\n * @returns {void}\n * @hidden\n */\n PivotView.prototype.addInternalEvents = function () {\n this.on(events.initialLoad, this.generateData, this);\n this.on(events.dataReady, this.renderPivotGrid, this);\n this.on(events.contentReady, this.onContentReady, this);\n };\n /**\n * De-Register the internal events.\n * @returns {void}\n * @hidden\n */\n PivotView.prototype.removeInternalEvents = function () {\n this.off(events.initialLoad, this.generateData);\n this.off(events.dataReady, this.renderPivotGrid);\n this.off(events.contentReady, this.onContentReady);\n };\n /**\n * Get the Pivot widget properties to be maintained in the persisted state.\n * @returns {string} - string.\n */\n PivotView.prototype.getPersistData = function () {\n var keyEntity = ['dataSourceSettings', 'pivotValues', 'gridSettings', 'chartSettings', 'displayOption'];\n /* eslint-disable */\n var columnRender = this.gridSettings['columnRender'];\n this.gridSettings['columnRender'] = undefined;\n this.chartSettings['tooltipRender'] = undefined;\n var persistData = this.addOnPersist(keyEntity);\n this.gridSettings['columnRender'] = columnRender;\n /* eslint-enable */\n return persistData;\n };\n /**\n * Loads pivot Layout\n * @param {string} persistData - Specifies the persist data to be loaded to pivot.\n * @returns {void}\n */\n PivotView.prototype.loadPersistData = function (persistData) {\n var pivotData;\n /* eslint-disable */\n if (isBlazor()) {\n pivotData = typeof persistData === \"string\" ? JSON.parse(persistData) : persistData;\n pivotData.dataSourceSettings.dataSource = this.dataSourceSettings.dataSource;\n }\n else {\n pivotData = JSON.parse(persistData);\n }\n this.allowServerDataBinding = false;\n this.setProperties({\n gridSettings: pivotData.gridSettings,\n pivotValues: pivotData.pivotValues,\n chartSettings: pivotData.chartSettings,\n displayOption: pivotData.displayOption\n }, true);\n delete this.bulkChanges.pivotValues;\n this.allowServerDataBinding = true;\n /* eslint-enable */\n this.dataSourceSettings = pivotData.dataSourceSettings;\n };\n PivotView.prototype.mergePersistPivotData = function () {\n var blazdataSource;\n if (isBlazor()) {\n blazdataSource = this.dataSourceSettings.dataSource;\n }\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n if (this.dataSourceSettings.dataSource instanceof Object && isBlazor()) {\n this.setProperties({ dataSourceSettings: { dataSource: blazdataSource } }, true);\n }\n };\n /**\n * Method to open conditional formatting dialog.\n * @returns {void}\n */\n PivotView.prototype.showConditionalFormattingDialog = function () {\n if (this.conditionalFormattingModule) {\n this.conditionalFormattingModule.showConditionalFormattingDialog();\n }\n };\n /**\n * Method to open calculated field dialog.\n * @returns {void}\n */\n PivotView.prototype.createCalculatedFieldDialog = function () {\n if (this.calculatedFieldModule) {\n this.calculatedFieldModule.createCalculatedFieldDialog();\n }\n };\n /**\n * It returns the Module name.\n * @returns {string} - string.\n * @hidden\n */\n PivotView.prototype.getModuleName = function () {\n return 'pivotview';\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n * @hidden\n */\n PivotView.prototype.copy = function (withHeader) {\n this.grid.copy(withHeader);\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./api-pivotgrid.html#printmode-string).\n * @returns {void}\n * @hidden\n */\n // public print(): void {\n // this.grid.print();\n // }\n /* eslint-disable */\n /**\n * Called internally if any of the property value changed.\n * @returns {void}\n * @hidden\n */\n PivotView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'dataSourceSettings':\n case 'hyperlinkSettings':\n case 'allowDrillThrough':\n case 'editSettings':\n case 'allowDataCompression':\n if (newProp.dataSourceSettings && Object.keys(newProp.dataSourceSettings).length === 1\n && newProp.dataSourceSettings.groupSettings && this.dataType === 'pivot') {\n this.updateGroupingReport(newProp.dataSourceSettings.groupSettings, 'Date');\n }\n if (newProp.dataSourceSettings && Object.keys(newProp.dataSourceSettings).length === 1\n && Object.keys(newProp.dataSourceSettings)[0] === 'dataSource') {\n if (!isNullOrUndefined(this.savedDataSourceSettings) && this.dataSourceSettings.dataSource.length > 0) {\n PivotUtil.updateDataSourceSettings(this, this.savedDataSourceSettings);\n this.savedDataSourceSettings = undefined;\n }\n if ((newProp.dataSourceSettings.dataSource && newProp.dataSourceSettings.dataSource).length === 0) {\n this.savedDataSourceSettings = PivotUtil.getClonedDataSourceSettings(this.dataSourceSettings);\n this.setProperties({ dataSourceSettings: { rows: [] } }, true);\n this.setProperties({ dataSourceSettings: { columns: [] } }, true);\n this.setProperties({ dataSourceSettings: { values: [] } }, true);\n this.setProperties({ dataSourceSettings: { filters: [] } }, true);\n }\n if (!this.isStaticRefresh) {\n this.pivotValues = [];\n this.engineModule.fieldList = null;\n }\n if (this.dataSourceSettings.groupSettings.length > 0) {\n this.clonedDataSet = newProp.dataSourceSettings.dataSource;\n this.updateGroupingReport(this.dataSourceSettings.groupSettings, 'Date');\n }\n this.showWaitingPopup();\n clearTimeout(this.timeOutObj);\n this.timeOutObj = setTimeout(this.refreshData.bind(this), 100);\n }\n else {\n if (PivotUtil.isButtonIconRefesh(prop, oldProp, newProp)) {\n if (this.showGroupingBar && this.groupingBarModule) {\n this.axisFieldModule.render();\n }\n if (this.showFieldList && this.pivotFieldListModule) {\n var rows = PivotUtil.cloneFieldSettings(this.dataSourceSettings.rows);\n var columns = PivotUtil.cloneFieldSettings(this.dataSourceSettings.columns);\n var values = PivotUtil.cloneFieldSettings(this.dataSourceSettings.values);\n var filters = PivotUtil.cloneFieldSettings(this.dataSourceSettings.filters);\n this.pivotFieldListModule.setProperties({ dataSourceSettings: { rows: rows, columns: columns, values: values, filters: filters } }, true);\n this.pivotFieldListModule.axisFieldModule.render();\n if (this.pivotFieldListModule.treeViewModule.fieldTable && !this.isAdaptive) {\n this.pivotFieldListModule.notify(events.treeViewUpdate, {});\n }\n }\n }\n else {\n this.remoteData = [];\n if (this.dataType === 'pivot' && this.dataSourceSettings.url && this.dataSourceSettings.url !== '' &&\n ('type' in newProp.dataSourceSettings || 'url' in newProp.dataSourceSettings)) {\n this.engineModule.fieldList = null;\n this.loadData();\n }\n else {\n if (newProp.dataSourceSettings && 'dataSource' in newProp.dataSourceSettings) {\n if (newProp.dataSourceSettings.dataSource && newProp.dataSourceSettings.dataSource.length === 0) {\n this.savedDataSourceSettings = PivotUtil.getClonedDataSourceSettings(this.dataSourceSettings);\n this.setProperties({ dataSourceSettings: { rows: [] } }, true);\n this.setProperties({ dataSourceSettings: { columns: [] } }, true);\n this.setProperties({ dataSourceSettings: { values: [] } }, true);\n this.setProperties({ dataSourceSettings: { filters: [] } }, true);\n }\n if (!this.isStaticRefresh) {\n this.engineModule.fieldList = null;\n this.pivotValues = [];\n }\n }\n this.notify(events.initialLoad, {});\n }\n }\n }\n break;\n case 'height':\n case 'width':\n this.layoutRefresh();\n break;\n case 'pivotValues':\n case 'displayOption':\n if (!this.showToolbar && newProp.displayOption && Object.keys(newProp.displayOption).length === 1 &&\n newProp.displayOption.view) {\n this.currentView = (newProp.displayOption.view === 'Both' ?\n this.displayOption.primary : newProp.displayOption.view);\n if (this.showGroupingBar || this.showFieldList) {\n if (this.showFieldList && this.pivotFieldListModule) {\n this.pivotFieldListModule.destroy();\n }\n if (this.showGroupingBar && this.groupingBarModule) {\n this.groupingBarModule.destroy();\n }\n this.notify(events.initSubComponent, this);\n }\n if (!this.grid && newProp.displayOption.view !== 'Chart') {\n this.renderEmptyGrid();\n if (newProp.displayOption.view === 'Table') {\n if (this.chartModule) {\n this.chartModule.destroy();\n this.chart = undefined;\n this.chartModule = undefined;\n }\n }\n }\n else if (!this.chartModule && this.displayOption.view !== 'Table') {\n this.chartModule = new PivotChart();\n }\n }\n else if (this.showToolbar && !isNullOrUndefined(newProp.displayOption) && newProp.displayOption.view) {\n this.currentView = (newProp.displayOption.view === 'Both' ?\n this.displayOption.primary : newProp.displayOption.view);\n }\n var engine = this.dataType === 'pivot' ? this.engineModule : this.olapEngineModule;\n if (!isNullOrUndefined(engine.fieldList) || !isNullOrUndefined(engine.pivotValues)) {\n this.notify(events.dataReady, {});\n }\n break;\n case 'gridSettings':\n this.lastGridSettings = newProp.gridSettings;\n this.isCellBoxMultiSelection = this.gridSettings.allowSelection &&\n this.gridSettings.selectionSettings.cellSelectionMode === 'Box' &&\n this.gridSettings.selectionSettings.mode === 'Cell' && this.gridSettings.selectionSettings.type === 'Multiple';\n if (this.allowGrouping && this.groupingModule && !this.isCellBoxMultiSelection) {\n this.setProperties({ gridSettings: { allowSelection: true, selectionSettings: { cellSelectionMode: 'Box', mode: 'Cell', type: 'Multiple' } } }, true);\n this.isCellBoxMultiSelection = true;\n }\n this.renderModule.updateGridSettings();\n break;\n case 'chartSettings':\n if (this.showGroupingBar &&\n this.groupingBarModule &&\n (Object.keys(newProp.chartSettings).indexOf('enableMultipleAxis') !== -1 ||\n (newProp.chartSettings.chartSeries && Object.keys(newProp.chartSettings.chartSeries).indexOf('type') !== -1))) {\n this.groupingBarModule.renderLayout();\n }\n if (isNullOrUndefined(this.chartModule) && this.displayOption.view !== 'Table') {\n this.chartModule = new PivotChart();\n }\n var engineModule = this.dataType === 'pivot' ? this.engineModule : this.olapEngineModule;\n if (!isNullOrUndefined(this.chartModule) && !isNullOrUndefined(engineModule.pivotValues)) {\n this.chartModule.loadChart(this, this.chartSettings);\n }\n if (!isNullOrUndefined(engineModule.pivotValues) && !isNullOrUndefined(engineModule.fieldList)) {\n this.notify(events.uiUpdate, this);\n }\n break;\n case 'locale':\n case 'currencyCode':\n case 'enableRtl':\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n if (this.dataSourceSettings.groupSettings && this.dataSourceSettings.groupSettings.length > 0 && this.clonedDataSet && !isBlazor()) {\n var dataSet = PivotUtil.getClonedData(this.clonedDataSet);\n this.setProperties({ dataSourceSettings: { dataSource: dataSet } }, true);\n }\n if (isBlazor()) {\n this.refresh();\n }\n else {\n _super.prototype.refresh.call(this);\n }\n this.updateClass();\n break;\n case 'enableValueSorting':\n this.enableValueSorting = newProp.enableValueSorting;\n this.updateDataSource();\n break;\n case 'showGroupingBar':\n if (this.element.querySelector('.e-grouping-bar')) {\n this.element.querySelector('.e-grouping-bar').remove();\n }\n if (isNullOrUndefined(newProp.showFieldList))\n this.renderPivotGrid();\n break;\n case 'showFieldList':\n this.initialLoad();\n break;\n case 'groupingBarSettings':\n this.axisFieldModule.render();\n break;\n case 'showTooltip':\n this.renderToolTip();\n break;\n case 'toolbar':\n if (this.toolbarModule) {\n this.toolbarModule.refreshToolbar();\n }\n break;\n case 'chartTypes':\n if (this.toolbarModule) {\n this.toolbarModule.createChartMenu();\n }\n break;\n case 'aggregateTypes':\n if (this.showGroupingBar) {\n if (this.axisFieldModule) {\n this.axisFieldModule.render();\n }\n }\n if (this.showFieldList && this.pivotFieldListModule && this.pivotFieldListModule.axisFieldModule) {\n this.pivotFieldListModule.setProperties({ aggregateTypes: newProp.aggregateTypes }, true);\n this.pivotFieldListModule.axisFieldModule.render();\n }\n break;\n }\n }\n };\n /**\n * Method to parse the template string.\n */\n PivotView.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n /**\n * Method to get the cell template.\n */\n PivotView.prototype.getCellTemplate = function () {\n return this.cellTemplateFn;\n };\n /**\n * @hidden\n */\n PivotView.prototype.appendHtml = function (node, innerHtml) {\n var tempElement = document.createElement('div');\n tempElement.innerHTML = innerHtml;\n if (!isNullOrUndefined(tempElement.firstChild)) {\n node.appendChild(tempElement.firstChild);\n }\n return node;\n };\n /**\n * Render the UI section of PivotView.\n * @returns {void}\n * @hidden\n */\n PivotView.prototype.renderPivotGrid = function () {\n this.clearTemplate();\n if (this.currentView === 'Table') {\n if (this.cellTemplate && isBlazor()) {\n resetBlazorTemplate(this.element.id + '_cellTemplate', 'CellTemplate');\n }\n }\n if (this.chartModule) {\n this.chartModule.engineModule = this.engineModule;\n this.chartModule.loadChart(this, this.chartSettings);\n if (this.enableRtl && this.chart && document.body.getAttribute('dir') !== 'rtl') {\n addClass([this.chart.element], cls.PIVOTCHART_LTR);\n }\n }\n if (this.showFieldList || this.showGroupingBar || this.allowNumberFormatting || this.allowCalculatedField ||\n this.toolbar || this.allowGrouping || this.gridSettings.contextMenuItems) {\n this.notify(events.uiUpdate, this);\n if (this.pivotFieldListModule && this.allowDeferLayoutUpdate) {\n this.pivotFieldListModule.clonedDataSource = extend({}, this.dataSourceSettings, null, true);\n }\n }\n if (this.enableVirtualization) {\n this.virtualscrollModule = new VirtualScroll(this);\n }\n if (this.allowDrillThrough || this.editSettings.allowEditing) {\n this.drillThroughModule = new DrillThrough(this);\n }\n if (this.displayOption.view !== 'Chart') {\n if (this.hyperlinkSettings) {\n this.isRowCellHyperlink = (this.hyperlinkSettings.showRowHeaderHyperlink ?\n true : this.hyperlinkSettings.showHyperlink ? true : false);\n this.isColumnCellHyperlink = (this.hyperlinkSettings.showColumnHeaderHyperlink ?\n true : this.hyperlinkSettings.showHyperlink ? true : false);\n this.isValueCellHyperlink = (this.hyperlinkSettings.showValueCellHyperlink ?\n true : this.hyperlinkSettings.showHyperlink ? true : false);\n this.isSummaryCellHyperlink = (this.hyperlinkSettings.showSummaryCellHyperlink ?\n true : this.hyperlinkSettings.showHyperlink ? true : false);\n this.applyHyperlinkSettings();\n }\n this.renderModule = new Render(this);\n this.renderModule.render();\n }\n else if (this.grid) {\n remove(this.grid.element);\n }\n if (this.allowConditionalFormatting) {\n this.applyFormatting(this.pivotValues);\n }\n if (this.showToolbar) {\n if (this.displayOption.view === 'Both' && this.chart && this.grid) {\n if (this.showGroupingBar && this.groupingBarModule && this.element.querySelector('.' + cls.GROUPING_BAR_CLASS)) {\n this.groupingBarModule.refreshUI();\n }\n if (this.toolbarModule && this.toolbarModule.toolbar) {\n this.toolbarModule.toolbar.width = this.getGridWidthAsNumber() - 2;\n }\n this.chart.element.style.width = formatUnit(this.getGridWidthAsNumber());\n this.chart.width = formatUnit(this.getGridWidthAsNumber());\n if (this.currentView === 'Table') {\n this.grid.element.style.display = '';\n this.chart.element.style.display = 'none';\n if (this.chartSettings.enableMultipleAxis && this.chartSettings.enableScrollOnMultiAxis) {\n this.element.querySelector('.e-pivotchart').style.display = 'none';\n }\n }\n else {\n this.grid.element.style.display = 'none';\n this.chart.element.style.display = '';\n if (this.chartSettings.enableMultipleAxis && this.chartSettings.enableScrollOnMultiAxis) {\n this.element.querySelector('.e-pivotchart').style.display = '';\n }\n }\n }\n }\n if (this.toolbarModule) {\n if (this.showFieldList && select('#' + this.element.id + '_PivotFieldList', this.element)) {\n select('#' + this.element.id + '_PivotFieldList', this.element).style.display = 'none';\n }\n if (this.toolbar && this.toolbar.indexOf('FieldList') !== -1 &&\n this.showToolbar && this.element.querySelector('.e-toggle-field-list')) {\n this.element.querySelector('.e-toggle-field-list').style.display = 'none';\n }\n if (this.toolbarModule && this.toolbarModule.action !== 'New' && this.toolbarModule.action !== 'Load'\n && this.toolbarModule.action !== 'Remove') {\n this.isModified = true;\n }\n if (!this.isInitialRendering) {\n this.isModified = false;\n this.isInitialRendering = !this.isInitialRendering;\n }\n this.toolbarModule.action = '';\n }\n };\n /**\n * @hidden\n */\n PivotView.prototype.showWaitingPopup = function () {\n if (this.grid && this.grid.element && !this.spinnerTemplate && this.currentView === 'Table') {\n showSpinner(this.grid.element);\n }\n else {\n showSpinner(this.element);\n }\n };\n /**\n * @hidden\n */\n PivotView.prototype.hideWaitingPopup = function () {\n if (this.grid && this.grid.element && !this.spinnerTemplate && this.currentView === 'Table') {\n hideSpinner(this.grid.element);\n }\n else {\n hideSpinner(this.element);\n }\n };\n /* eslint-disable */\n /**\n * Updates the PivotEngine using dataSource from Pivot View component.\n * @function updateDataSource\n * @returns {void}\n * @hidden\n */\n PivotView.prototype.updateDataSource = function (isRefreshGrid) {\n var _this_1 = this;\n this.showWaitingPopup();\n var pivot = this;\n //setTimeout(() => {\n var isSorted = Object.keys(pivot.lastSortInfo).length > 0 ? true : false;\n var isFiltered = Object.keys(pivot.lastFilterInfo).length > 0 ? true : false;\n var isAggChange = Object.keys(pivot.lastAggregationInfo).length > 0 ? true : false;\n var isCalcChange = Object.keys(pivot.lastCalcFieldInfo).length > 0 ? true : false;\n var args = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(pivot.dataSourceSettings)\n };\n pivot.trigger(events.enginePopulating, args, function (observedArgs) {\n if (!(pivot.enableVirtualization && (isSorted || isFiltered || isAggChange || isCalcChange))) {\n PivotUtil.updateDataSourceSettings(pivot, observedArgs.dataSourceSettings);\n }\n pivot.updatePageSettings(false);\n if (pivot.dataType === 'pivot' && pivot.enableVirtualization && (isSorted || isFiltered || isAggChange || isCalcChange)) {\n var interopArguments = {};\n if (isSorted) {\n pivot.setProperties({ dataSourceSettings: { valueSortSettings: { headerText: '' } } }, true);\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n var sortInfo = {\n name: pivot.lastSortInfo.name,\n order: pivot.lastSortInfo.order\n };\n var sortArgs = window[sfBlazor].copyWithoutCircularReferences([pivot.lastSortInfo], pivot.lastSortInfo);\n interopArguments = { 'key': 'onSort', 'arg': sortArgs };\n }\n else if (_this_1.dataSourceSettings.mode === 'Server') {\n pivot.getEngine('onSort', null, pivot.lastSortInfo, null, null, null, null);\n }\n else {\n pivot.engineModule.onSort(pivot.lastSortInfo);\n }\n pivot.lastSortInfo = {};\n }\n if (isAggChange) {\n if (isBlazor()) {\n /* eslint-disable */\n var sfBlazor = 'sfBlazor';\n var aggregateArgs = window[sfBlazor].copyWithoutCircularReferences([pivot.lastAggregationInfo], pivot.lastAggregationInfo);\n interopArguments = { 'key': 'onAggregation', 'arg': aggregateArgs };\n /* eslint-enable */\n }\n else if (_this_1.dataSourceSettings.mode === 'Server') {\n pivot.getEngine('onAggregation', null, null, pivot.lastAggregationInfo, null, null, null);\n }\n else {\n pivot.engineModule.onAggregation(pivot.lastAggregationInfo);\n }\n pivot.lastAggregationInfo = {};\n }\n if (isCalcChange) {\n if (isBlazor()) {\n /* eslint-disable */\n var dataSourceSettings = window['sfBlazor'].copyWithoutCircularReferences([pivot.dataSourceSettings.properties], pivot.dataSourceSettings.properties);\n interopArguments = {\n 'key': 'onCalcOperation',\n 'arg': {\n lastCalcFieldInfo: pivot.lastCalcFieldInfo,\n values: dataSourceSettings.values,\n calculatedFieldSettings: dataSourceSettings.calculatedFieldSettings\n }\n };\n /* eslint-enable */\n }\n else if (_this_1.dataSourceSettings.mode === 'Server') {\n pivot.getEngine('onCalcOperation', null, null, null, pivot.lastCalcFieldInfo, null, null);\n }\n else {\n pivot.engineModule.onCalcOperation(pivot.lastCalcFieldInfo);\n }\n pivot.lastCalcFieldInfo = {};\n }\n if (isFiltered) {\n if (isBlazor()) {\n /* eslint-disable */\n var filterArgs = window['sfBlazor'].copyWithoutCircularReferences([pivot.lastFilterInfo], pivot.lastFilterInfo);\n var filterSettings = window['sfBlazor'].copyWithoutCircularReferences([pivot.dataSourceSettings.filterSettings], pivot.dataSourceSettings.filterSettings);\n interopArguments = {\n 'key': 'onFilter',\n 'arg': { 'lastFilterInfo': filterArgs, 'filterSettings': filterSettings }\n };\n /* eslint-enable */\n }\n else if (_this_1.dataSourceSettings.mode === 'Server') {\n pivot.getEngine('onFilter', null, null, null, null, pivot.lastFilterInfo, null);\n }\n else {\n pivot.engineModule.onFilter(pivot.lastFilterInfo, pivot.dataSourceSettings);\n }\n pivot.lastFilterInfo = {};\n }\n if (isBlazor()) {\n /* eslint-disable */\n pivot.interopAdaptor.invokeMethodAsync('PivotInteropMethod', interopArguments['key'], interopArguments['arg']).then(function (data) {\n pivot.updateBlazorData(data, pivot);\n pivot.allowServerDataBinding = false;\n pivot.setProperties({ pivotValues: pivot.engineModule.pivotValues }, true);\n delete pivot.bulkChanges.pivotValues;\n pivot.allowServerDataBinding = true;\n pivot.enginePopulatedEventMethod('updateDataSource', pivot);\n if (pivot.calculatedFieldModule && pivot.calculatedFieldModule.isRequireUpdate) {\n pivot.calculatedFieldModule.endDialog();\n pivot.calculatedFieldModule.isRequireUpdate = false;\n }\n });\n /* eslint-enable */\n }\n else {\n pivot.allowServerDataBinding = false;\n pivot.setProperties({ pivotValues: pivot.engineModule.pivotValues }, true);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n delete pivot.bulkChanges.pivotValues;\n pivot.allowServerDataBinding = true;\n if (pivot.dataSourceSettings.mode !== 'Server') {\n pivot.enginePopulatedEventMethod('updateDataSource');\n }\n }\n }\n else {\n if (pivot.dataType === 'olap') {\n var customProperties = {\n mode: '',\n savedFieldList: pivot.olapEngineModule.fieldList,\n savedFieldListData: pivot.olapEngineModule.fieldListData,\n pageSettings: pivot.pageSettings,\n enableValueSorting: pivot.enableValueSorting,\n isDrillThrough: (pivot.allowDrillThrough || pivot.editSettings.allowEditing),\n localeObj: pivot.localeObj\n };\n if (isCalcChange || isSorted) {\n pivot.olapEngineModule.savedFieldList = pivot.olapEngineModule.fieldList;\n pivot.olapEngineModule.savedFieldListData = pivot.olapEngineModule.fieldListData;\n if (isCalcChange) {\n pivot.olapEngineModule.updateCalcFields(pivot.dataSourceSettings, pivot.lastCalcFieldInfo);\n pivot.lastCalcFieldInfo = {};\n }\n else {\n pivot.olapEngineModule.onSort(pivot.dataSourceSettings);\n pivot.lastSortInfo = {};\n }\n }\n else {\n pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties);\n }\n pivot.allowServerDataBinding = false;\n pivot.setProperties({ pivotValues: pivot.olapEngineModule.pivotValues }, true);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n delete pivot.bulkChanges.pivotValues;\n pivot.allowServerDataBinding = true;\n pivot.enginePopulatedEventMethod('updateDataSource');\n }\n else {\n var customProperties = {\n mode: '',\n savedFieldList: pivot.engineModule.fieldList,\n pageSettings: pivot.pageSettings,\n enableValueSorting: pivot.enableValueSorting,\n isDrillThrough: (pivot.allowDrillThrough || pivot.editSettings.allowEditing),\n localeObj: pivot.localeObj,\n fieldsType: pivot.fieldsType,\n clonedReport: pivot.clonedReport\n };\n /* eslint-enable @typescript-eslint/indent */\n if (isBlazor() && pivot.enableVirtualization) {\n /* eslint-disable */\n var sfBlazor = 'sfBlazor';\n var customArgs = window[sfBlazor].copyWithoutCircularReferences([customProperties], customProperties);\n var datasourceSettings = window[sfBlazor].copyWithoutCircularReferences([pivot.dataSourceSettings], pivot.dataSourceSettings);\n pivot.interopAdaptor.invokeMethodAsync('PivotInteropMethod', 'renderEngine', { 'dataSourceSettings': datasourceSettings, 'customProperties': customArgs }).then(function (data) {\n pivot.updateBlazorData(data, pivot);\n pivot.allowServerDataBinding = false;\n pivot.setProperties({ pivotValues: pivot.engineModule.pivotValues }, true);\n delete pivot.bulkChanges.pivotValues;\n pivot.allowServerDataBinding = true;\n pivot.enginePopulatedEventMethod('updateDataSource', pivot);\n });\n }\n else if (pivot.dataSourceSettings.mode === 'Server') {\n if (isSorted)\n pivot.getEngine('onSort', null, pivot.lastSortInfo, null, null, null, null);\n else if (isAggChange)\n pivot.getEngine('onAggregation', null, null, pivot.lastAggregationInfo, null, null, null);\n else if (isCalcChange)\n pivot.getEngine('onCalcOperation', null, null, null, pivot.lastCalcFieldInfo, null, null);\n else if (isFiltered)\n pivot.getEngine('onFilter', null, null, null, null, pivot.lastFilterInfo, null);\n else\n pivot.getEngine('onDrop', null, null, null, null, null, null);\n /* eslint-enable */\n pivot.lastSortInfo = {};\n pivot.lastAggregationInfo = {};\n pivot.lastCalcFieldInfo = {};\n pivot.lastFilterInfo = {};\n }\n else {\n pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getValueCellInfo.bind(pivot));\n pivot.allowServerDataBinding = false;\n pivot.setProperties({ pivotValues: pivot.engineModule.pivotValues }, true);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n delete pivot.bulkChanges.pivotValues;\n pivot.allowServerDataBinding = true;\n pivot.enginePopulatedEventMethod('updateDataSource');\n }\n }\n }\n });\n //});\n };\n /**\n * Export Pivot widget data to Excel file(.xlsx).\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {void}\n */\n PivotView.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n if (this.enableVirtualization && this.dataSourceSettings.mode !== 'Server') {\n this.excelExportModule.exportToExcel('Excel', excelExportProperties);\n }\n else {\n this.grid.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n };\n /**\n * Export PivotGrid data to CSV file.\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {void}\n */\n PivotView.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n if (this.enableVirtualization && this.dataSourceSettings.mode !== 'Server') {\n this.excelExportModule.exportToExcel('CSV', excelExportProperties);\n }\n else {\n this.grid.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n };\n /**\n * Export Pivot widget data to PDF document.\n * @param {PdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Object} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {void}\n */\n PivotView.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.enableVirtualization && this.dataSourceSettings.mode !== 'Server') {\n this.pdfExportModule.exportToPDF(pdfExportProperties);\n }\n else {\n this.grid.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n };\n /**\n * Export method for the chart.\n * @param {ExportType} type - Defines the export type.\n * @param {string} fileName - Defines file name of export document.\n * @param {PdfPageOrientation} orientation - Defines the page orientation on pdf export(0 for Portrait mode, 1 for Landscape mode).\n * @param {number} width - Defines width of the export document.\n * @param {number} height - Defines height of the export document.\n * @returns {void}\n */\n PivotView.prototype.chartExport = function (type, fileName, orientation, width, height) {\n if (this.chart && this.chart.enableExport) {\n this.chart.exportModule.export(type, fileName, orientation, null, width, height);\n }\n };\n /**\n * Print method for the chart.\n * @returns {void}\n */\n PivotView.prototype.printChart = function () {\n if (this.chart) {\n this.chart.print();\n }\n };\n /** @hidden */\n /* eslint-disable */\n PivotView.prototype.onDrill = function (target, chartDrillInfo) {\n var _this_1 = this;\n var delimiter = (this.dataSourceSettings.drilledMembers[0] && this.dataSourceSettings.drilledMembers[0].delimiter) ?\n this.dataSourceSettings.drilledMembers[0].delimiter : '**';\n var fieldName = '';\n var axis = '';\n var action = '';\n if (chartDrillInfo) {\n fieldName = chartDrillInfo.fieldName;\n axis = chartDrillInfo.cell.axis;\n action = chartDrillInfo.isDrilled ? 'up' : 'down';\n }\n else {\n fieldName = target.parentElement.getAttribute('fieldname');\n axis = target.parentElement.classList.contains(cls.ROWSHEADER) ? 'row' : 'column';\n action = target.classList.contains(cls.COLLAPSE) ? 'up' : 'down';\n }\n if (this.dataType === 'pivot') {\n var clonedDrillMembers_1 = PivotUtil.cloneDrillMemberSettings(this.dataSourceSettings.drilledMembers);\n var currentCell = chartDrillInfo ? chartDrillInfo.cell :\n this.engineModule.pivotValues[Number(target.parentElement.getAttribute('index'))][Number(target.parentElement.getAttribute('aria-colindex'))];\n var memberName = currentCell.valueSort.levelName.\n split(this.engineModule.valueSortSettings.headerDelimiter).join(delimiter);\n var fieldAvail = false;\n if (this.dataSourceSettings.drilledMembers.length === 0) {\n this.setProperties({ dataSourceSettings: { drilledMembers: [{ name: fieldName, items: [memberName], delimiter: delimiter }] } }, true);\n }\n else {\n var drillMembers = PivotUtil.cloneDrillMemberSettings(this.dataSourceSettings.drilledMembers);\n for (var fCnt = 0; fCnt < drillMembers.length; fCnt++) {\n var field = drillMembers[fCnt];\n memberName = memberName.split(delimiter).join(field.delimiter ? field.delimiter : delimiter);\n delimiter = field.delimiter = field.delimiter ? field.delimiter : delimiter;\n if (field.name === fieldName) {\n fieldAvail = true;\n var memIndex = field.items.indexOf(memberName);\n if (memIndex > -1) {\n field.items.splice(memIndex, 1);\n }\n else {\n field.items.push(memberName);\n }\n }\n else {\n continue;\n }\n }\n this.setProperties({ dataSourceSettings: { drilledMembers: drillMembers } }, true);\n if (!fieldAvail) {\n this.dataSourceSettings.drilledMembers.push({ name: fieldName, items: [memberName], delimiter: delimiter });\n }\n }\n this.showWaitingPopup();\n var pivot_1 = this;\n //setTimeout(() => {\n var drilledItem_1 = {\n fieldName: fieldName, memberName: memberName, delimiter: delimiter,\n axis: axis,\n action: action,\n currentCell: currentCell\n };\n var drillArgs_1 = {\n drillInfo: drilledItem_1,\n pivotview: isBlazor() ? undefined : pivot_1,\n cancel: false\n };\n pivot_1.trigger(events.drill, drillArgs_1, function (observedArgs) {\n if (!observedArgs.cancel) {\n var args = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(_this_1.dataSourceSettings)\n };\n pivot_1.trigger(events.enginePopulating, args);\n pivot_1.setProperties({ dataSourceSettings: args.dataSourceSettings }, true);\n if (pivot_1.enableVirtualization) {\n if (isBlazor()) {\n /* eslint-disable */\n var sfBlazor = 'sfBlazor';\n var dataSourceSettings = window[sfBlazor].copyWithoutCircularReferences([pivot_1.dataSourceSettings], pivot_1.dataSourceSettings);\n var drillItem = window[sfBlazor].copyWithoutCircularReferences([drilledItem_1], drilledItem_1);\n var args_1 = window[sfBlazor].copyWithoutCircularReferences([drillArgs_1], drillArgs_1);\n pivot_1.interopAdaptor.invokeMethodAsync('PivotInteropMethod', 'onDrill', { 'dataSourceSettings': dataSourceSettings, 'drilledItem': drillItem }).then(function (data) {\n pivot_1.updateBlazorData(data, pivot_1);\n pivot_1.engineModule.drilledMembers = pivot_1.dataSourceSettings.drilledMembers;\n pivot_1.allowServerDataBinding = false;\n pivot_1.setProperties({ pivotValues: pivot_1.engineModule.pivotValues }, true);\n delete pivot_1.bulkChanges.pivotValues;\n pivot_1.allowServerDataBinding = true;\n pivot_1.renderPivotGrid();\n });\n /* eslint-enable */\n }\n else if (_this_1.dataSourceSettings.mode === 'Server') {\n _this_1.getEngine('onDrill', drilledItem_1, null, null, null, null, null);\n }\n else {\n pivot_1.engineModule.drilledMembers = pivot_1.dataSourceSettings.drilledMembers;\n pivot_1.engineModule.onDrill(drilledItem_1);\n }\n }\n else if (_this_1.dataSourceSettings.mode === 'Server') {\n _this_1.getEngine('onDrill', drilledItem_1, null, null, null, null, null);\n }\n else {\n pivot_1.engineModule.generateGridData(pivot_1.dataSourceSettings);\n }\n if (!(isBlazor() && pivot_1.enableVirtualization)) {\n pivot_1.allowServerDataBinding = false;\n pivot_1.setProperties({ pivotValues: pivot_1.engineModule.pivotValues }, true);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n delete pivot_1.bulkChanges.pivotValues;\n pivot_1.allowServerDataBinding = true;\n var eventArgs = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(args.dataSourceSettings),\n pivotValues: _this_1.pivotValues\n };\n _this_1.trigger(events.enginePopulated, eventArgs);\n pivot_1.engineModule.pivotValues = eventArgs.pivotValues;\n pivot_1.renderPivotGrid();\n }\n }\n else {\n _this_1.hideWaitingPopup();\n _this_1.setProperties({ dataSourceSettings: { drilledMembers: clonedDrillMembers_1 } }, true);\n }\n });\n }\n else {\n this.onOlapDrill(fieldName, axis, action, delimiter, target, chartDrillInfo);\n }\n };\n /* eslint-disable */\n PivotView.prototype.onOlapDrill = function (fieldName, axis, action, delimiter, target, chartDrillInfo) {\n var _this_1 = this;\n var pivot = this;\n var clonedDrillMembers = PivotUtil.cloneDrillMemberSettings(this.dataSourceSettings.drilledMembers);\n var currentCell = chartDrillInfo ? chartDrillInfo.cell :\n this.olapEngineModule.pivotValues[Number(target.parentElement.getAttribute('index'))][Number(target.parentElement.getAttribute('aria-colindex'))];\n var tupInfo = axis === 'row' ? this.olapEngineModule.tupRowInfo[currentCell.ordinal] :\n this.olapEngineModule.tupColumnInfo[currentCell.ordinal];\n var drillInfo = {\n axis: axis,\n action: action,\n fieldName: fieldName,\n delimiter: '~~',\n memberName: tupInfo.uNameCollection,\n currentCell: currentCell\n };\n this.showWaitingPopup();\n var drillArgs = {\n drillInfo: drillInfo,\n pivotview: isBlazor() ? undefined : pivot,\n cancel: false\n };\n var isAttributeHierarchy = this.olapEngineModule.fieldList[drillInfo.fieldName] && this.olapEngineModule.fieldList[drillInfo.fieldName].isHierarchy;\n var fieldPos = tupInfo.drillInfo.map(function (item) { return item.hierarchy; }).indexOf(currentCell.hierarchy.toString());\n var clonedMembers = PivotUtil.cloneDrillMemberSettings(this.dataSourceSettings.drilledMembers);\n if (drillInfo && drillInfo.action === 'down') {\n var fields = tupInfo.drillInfo.map(function (item) { return item.uName; });\n var member = '';\n for (var pos = 0; pos <= fieldPos; pos++) {\n var field = fields[pos];\n var members = field.split('~~');\n member = member + (member !== '' ? '~~' : '') + members[members.length - 1];\n }\n var drillSets = this.olapEngineModule.getDrilledSets(drillInfo.memberName, currentCell, (this.olapEngineModule.fieldList[currentCell.hierarchy] && !this.olapEngineModule.fieldList[currentCell.hierarchy].hasAllMember) ? currentCell.valueSort.levelName.split(this.dataSourceSettings.valueSortSettings.headerDelimiter).length - 1 : fieldPos, axis);\n var keys = Object.keys(drillSets);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var drillSet = drillSets[key];\n for (var i = 0, cnt = clonedMembers.length; i < cnt; i++) {\n var drillMembers = clonedMembers[i];\n var memberItem = drillSet;\n if (drillMembers.delimiter) {\n memberItem = memberItem.replace(/~~/g, drillMembers.delimiter);\n }\n var items = [];\n for (var itemPos = 0; itemPos < drillMembers.items.length; itemPos++) {\n if (drillMembers.items[itemPos].indexOf(memberItem) !== 0) {\n items[items.length] = drillMembers.items[itemPos];\n }\n }\n drillMembers.items = items;\n }\n }\n this.olapEngineModule.drilledSets[currentCell.actualText] = tupInfo.members[fieldPos];\n drillInfo.memberName = member;\n var drillItem = [];\n for (var _a = 0, clonedMembers_1 = clonedMembers; _a < clonedMembers_1.length; _a++) {\n var field = clonedMembers_1[_a];\n if (field.name === drillInfo.fieldName) {\n drillItem.push(field);\n }\n }\n if (drillItem.length > 0) {\n if (drillItem[0].delimiter) {\n member = member.replace(/~~/g, drillItem[0].delimiter);\n }\n var index = PivotUtil.inArray(member, drillItem[0].items);\n if (index === -1) {\n drillItem[0].items.push(member);\n }\n if (isAttributeHierarchy) {\n var i = 0;\n while (i < drillItem[0].items.length) {\n if (drillItem[0].items[i] === member) {\n drillItem[0].items.splice(i, 1);\n }\n else {\n ++i;\n }\n }\n }\n }\n else if (!isAttributeHierarchy) {\n var drilledMember = { name: drillInfo.fieldName, items: [member], delimiter: '~~' };\n if (!clonedMembers) {\n clonedMembers = [drilledMember];\n }\n else {\n clonedMembers.push(drilledMember);\n }\n }\n drillArgs.drillInfo.memberName = member;\n this.setProperties({ dataSourceSettings: { drilledMembers: clonedMembers } }, true);\n pivot.trigger(events.drill, drillArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var args = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(_this_1.dataSourceSettings)\n };\n _this_1.trigger(events.enginePopulating, args);\n _this_1.setProperties({ dataSourceSettings: args.dataSourceSettings }, true);\n _this_1.olapEngineModule.updateDrilledInfo(_this_1.dataSourceSettings);\n _this_1.allowServerDataBinding = false;\n _this_1.setProperties({ pivotValues: _this_1.olapEngineModule.pivotValues }, true);\n delete _this_1.bulkChanges.pivotValues;\n _this_1.allowServerDataBinding = true;\n var eventArgs = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(args.dataSourceSettings),\n pivotValues: pivot.olapEngineModule.pivotValues\n };\n _this_1.trigger(events.enginePopulated, eventArgs);\n _this_1.olapEngineModule.pivotValues = eventArgs.pivotValues;\n _this_1.renderPivotGrid();\n }\n else {\n _this_1.hideWaitingPopup();\n _this_1.setProperties({ dataSourceSettings: { drilledMembers: clonedDrillMembers } }, true);\n }\n });\n }\n else {\n delete this.olapEngineModule.drilledSets[currentCell.actualText];\n var drillSets = this.olapEngineModule.getDrilledSets(drillInfo.memberName, currentCell, fieldPos, axis);\n var keys = Object.keys(drillSets);\n var fields = tupInfo.drillInfo.map(function (item) { return item.uName; });\n var member = '';\n for (var pos = 0; pos <= fieldPos; pos++) {\n var field = fields[pos];\n var members = field.split('~~');\n member = member + (member !== '' ? '~~' : '') + members[members.length - 1];\n }\n for (var _b = 0, keys_2 = keys; _b < keys_2.length; _b++) {\n var key = keys_2[_b];\n var drillSet = drillSets[key];\n var drillItemCollection = [];\n for (var i = 0, cnt = clonedMembers.length; i < cnt; i++) {\n var drillItem = clonedMembers[i];\n var member_1 = drillSet;\n if (drillItem.name === drillInfo.fieldName) {\n drillItemCollection.push(drillItem);\n }\n if (drillItem.delimiter) {\n member_1 = drillSet.replace(/~~/g, drillItem.delimiter);\n }\n if (!isAttributeHierarchy) {\n var items = [];\n for (var itemPos = 0; itemPos < drillItem.items.length; itemPos++) {\n if (drillItem.items[itemPos].indexOf(member_1) !== 0) {\n items[items.length] = drillItem.items[itemPos];\n }\n }\n drillItem.items = items;\n }\n }\n if (isAttributeHierarchy) {\n if (drillItemCollection.length > 0) {\n if (drillItemCollection[0].delimiter) {\n member = member.replace(/~~/g, drillItemCollection[0].delimiter);\n }\n var index = PivotUtil.inArray(member, drillItemCollection[0].items);\n if (index === -1) {\n drillItemCollection[0].items.push(member);\n }\n }\n else {\n var drilledMember = { name: drillInfo.fieldName, items: [member], delimiter: '~~' };\n if (!clonedMembers) {\n clonedMembers = [drilledMember];\n }\n else {\n clonedMembers.push(drilledMember);\n }\n }\n }\n }\n var drilledMembers_1 = [];\n for (var _c = 0, clonedMembers_2 = clonedMembers; _c < clonedMembers_2.length; _c++) {\n var fields_1 = clonedMembers_2[_c];\n if (fields_1.items.length > 0) {\n drilledMembers_1.push(fields_1);\n }\n }\n this.setProperties({ dataSourceSettings: { drilledMembers: clonedMembers } }, true);\n pivot.trigger(events.drill, drillArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var args = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(_this_1.dataSourceSettings)\n };\n _this_1.trigger(events.enginePopulating, args);\n _this_1.setProperties({ dataSourceSettings: args.dataSourceSettings }, true);\n _this_1.setProperties({ dataSourceSettings: { drilledMembers: drilledMembers_1 } }, true);\n _this_1.olapEngineModule.updateDrilledInfo(_this_1.dataSourceSettings);\n _this_1.allowServerDataBinding = false;\n _this_1.setProperties({ pivotValues: _this_1.olapEngineModule.pivotValues }, true);\n delete _this_1.bulkChanges.pivotValues;\n _this_1.allowServerDataBinding = true;\n var eventArgs = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(args.dataSourceSettings),\n pivotValues: pivot.olapEngineModule.pivotValues\n };\n _this_1.trigger(events.enginePopulated, eventArgs);\n _this_1.olapEngineModule.pivotValues = eventArgs.pivotValues;\n _this_1.renderPivotGrid();\n }\n else {\n _this_1.hideWaitingPopup();\n _this_1.setProperties({ dataSourceSettings: { drilledMembers: clonedDrillMembers } }, true);\n }\n });\n }\n };\n /* eslint-enable */\n PivotView.prototype.onContentReady = function () {\n if (this.currentView !== 'Table') {\n if (this.cellTemplate && isBlazor()) {\n resetBlazorTemplate(this.element.id + '_cellTemplate', 'CellTemplate');\n }\n }\n this.isPopupClicked = false;\n if (this.showFieldList) {\n hideSpinner(this.pivotFieldListModule.fieldListSpinnerElement);\n }\n else if (this.fieldListSpinnerElement) {\n hideSpinner(this.fieldListSpinnerElement);\n }\n if (!this.isEmptyGrid) {\n if ((this.dataSourceSettings.mode === 'Server' && this.isServerWaitingPopup) || this.dataSourceSettings.mode === 'Local') {\n this.hideWaitingPopup();\n }\n this.trigger(events.dataBound);\n }\n else {\n this.isEmptyGrid = false;\n this.notEmpty = true;\n }\n if (this.grid) {\n var engine = this.dataType === 'pivot' ? this.engineModule : this.olapEngineModule;\n if (this.enableVirtualization && engine) {\n if (this.element.querySelector('.' + cls.MOVABLECONTENT_DIV) &&\n !this.element.querySelector('.' + cls.MOVABLECONTENT_DIV).querySelector('.' + cls.VIRTUALTRACK_DIV)) {\n this.virtualDiv = createElement('div', { className: cls.VIRTUALTRACK_DIV });\n this.element.querySelector('.' + cls.MOVABLECONTENT_DIV).appendChild(this.virtualDiv);\n }\n if (this.element.querySelector('.' + cls.MOVABLEHEADER_DIV) &&\n !this.element.querySelector('.' + cls.MOVABLEHEADER_DIV).querySelector('.' + cls.VIRTUALTRACK_DIV)) {\n this.virtualHeaderDiv = createElement('div', { className: cls.VIRTUALTRACK_DIV });\n this.element.querySelector('.' + cls.MOVABLEHEADER_DIV).appendChild(this.virtualHeaderDiv);\n }\n else {\n this.virtualHeaderDiv =\n this.element.querySelector('.' + cls.MOVABLEHEADER_DIV).querySelector('.' + cls.VIRTUALTRACK_DIV);\n }\n var movableTable = this.element.querySelector('.' + cls.MOVABLECONTENT_DIV).querySelector('.e-table');\n var vHeight = (this.gridSettings.rowHeight * engine.rowCount + 0.1 - movableTable.clientHeight);\n if (vHeight > this.scrollerBrowserLimit) {\n this.verticalScrollScale = vHeight / this.scrollerBrowserLimit;\n vHeight = this.scrollerBrowserLimit;\n }\n var vWidth = this.gridSettings.columnWidth * engine.columnCount;\n if (vWidth > this.scrollerBrowserLimit) {\n this.horizontalScrollScale = vWidth / this.scrollerBrowserLimit;\n vWidth = this.scrollerBrowserLimit;\n }\n setStyleAttribute(this.virtualDiv, {\n height: (vHeight > 0.1 ? vHeight : 0.1) + 'px',\n width: (vWidth > 0.1 ? vWidth : 0.1) + 'px'\n });\n setStyleAttribute(this.virtualHeaderDiv, {\n height: 0, width: (vWidth > 0.1 ? vWidth : 0.1) + 'px'\n });\n var mCnt = this.element.querySelector('.' + cls.MOVABLECONTENT_DIV);\n var fCnt = this.element.querySelector('.' + cls.FROZENCONTENT_DIV);\n var mHdr = this.element.querySelector('.' + cls.MOVABLEHEADER_DIV);\n if (this.isAdaptive) {\n mCnt.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV).children[0].style.minHeight = \"1px\";\n mCnt.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV).style.minHeight = \"1px\";\n }\n var ele = this.isAdaptive ? mCnt : mCnt.parentElement.parentElement.querySelector('.' + cls.MOVABLESCROLL_DIV);\n var verOffset = (mCnt.parentElement.scrollTop > this.scrollerBrowserLimit) ?\n mCnt.querySelector('.' + cls.TABLE).style.transform.split(',')[1].trim() :\n -(((mCnt.parentElement.scrollTop * this.verticalScrollScale) - this.scrollPosObject.verticalSection - mCnt.parentElement.scrollTop)) + 'px)';\n var horiOffset = (ele.scrollLeft > this.scrollerBrowserLimit) ?\n (mCnt.querySelector('.' + cls.TABLE).style.transform.split(',')[0].trim() + ',') :\n 'translate(' + -(((ele.scrollLeft * this.horizontalScrollScale) -\n this.scrollPosObject.horizontalSection - ele.scrollLeft)) + 'px,';\n setStyleAttribute(fCnt.querySelector('.e-table'), {\n transform: 'translate(' + 0 + 'px,' + verOffset\n });\n setStyleAttribute(mCnt.querySelector('.e-table'), {\n transform: horiOffset + verOffset\n });\n setStyleAttribute(mHdr.querySelector('.e-table'), {\n transform: horiOffset + 0 + 'px)'\n });\n /* eslint-disable */\n this.grid.element.querySelector('.' + cls.MOVABLECHILD_DIV).style.width = (vWidth + (mCnt.parentElement.offsetWidth - mCnt.parentElement.clientWidth)) + 'px';\n if (this.grid.height !== 'auto') {\n this.grid.contentModule.setHeightToContent(this.virtualDiv.offsetHeight + movableTable.clientHeight);\n }\n else {\n this.grid.contentModule.setHeightToContent(this.element.querySelector('.' + cls.FROZENCONTENT_DIV + ' .' + cls.TABLE).offsetHeight);\n }\n /* eslint-enable */\n }\n if (this.currentView !== 'Chart') {\n this.grid.hideScroll();\n }\n if (this.showGroupingBar) {\n this.element.style.minWidth = '400px';\n this.grid.element.style.minWidth = '400px';\n }\n else {\n this.element.style.minWidth = '310px';\n this.grid.element.style.minWidth = '310px';\n }\n }\n this.unwireEvents();\n this.wireEvents();\n this.isChartLoaded = false;\n if (this.cellTemplate && isBlazor()) {\n var gridCells = Object.keys(this.gridCellCollection);\n if (gridCells.length > 0) {\n for (var _i = 0, gridCells_1 = gridCells; _i < gridCells_1.length; _i++) {\n var cell = gridCells_1[_i];\n var templateObject = {};\n var tCell = this.gridCellCollection[cell];\n var colIndex = Number(tCell.getAttribute('aria-colindex'));\n var rowIndex = Number(tCell.getAttribute('index'));\n var pivotCell = this.pivotValues[rowIndex][colIndex];\n templateObject.axis = pivotCell.axis;\n if (templateObject.axis === 'column' || templateObject.axis === 'row') {\n templateObject.fieldName = pivotCell.valueSort.axis;\n templateObject.formattedText = pivotCell.formattedText;\n }\n else {\n templateObject.fieldName = pivotCell.actualText;\n templateObject.formattedText = pivotCell.formattedText;\n templateObject.value = pivotCell.value;\n }\n templateObject.rowHeaders = pivotCell.rowHeaders;\n templateObject.columnHeaders = pivotCell.columnHeaders;\n templateObject.rowIndex = pivotCell.rowIndex;\n templateObject.columnIndex = pivotCell.colIndex;\n templateObject.isGrandTotal = pivotCell.isGrandSum;\n templateObject.isTotal = pivotCell.isSum;\n templateObject.rowSpan = pivotCell.rowSpan;\n templateObject.columnSpan = pivotCell.colSpan;\n templateObject.isDrilled = pivotCell.isDrilled;\n templateObject.hasChild = pivotCell.hasChild;\n templateObject.valueSortInfo = pivotCell.valueSort;\n /* eslint-disable-next-line */\n var element = this.getCellTemplate()(templateObject, this, 'cellTemplate', this.element.id + '_cellTemplate');\n if (element && element !== '' && element.length > 0) {\n if (this.enableHtmlSanitizer) {\n this.appendHtml(tCell, SanitizeHtmlHelper.sanitize(element[0].outerHTML));\n }\n else {\n this.appendHtml(tCell, element[0].outerHTML);\n }\n }\n }\n updateBlazorTemplate(this.element.id + '_cellTemplate', 'CellTemplate', this);\n }\n }\n };\n PivotView.prototype.setToolTip = function (args) {\n var colIndex = Number(args.target.getAttribute('aria-colindex'));\n var rowIndex = Number(args.target.getAttribute('index'));\n var cell = (this.dataSourceSettings.values.length > 0 && this.pivotValues &&\n this.pivotValues[rowIndex] && this.pivotValues[rowIndex][colIndex]) ?\n this.pivotValues[rowIndex][colIndex] : undefined;\n this.tooltip.content = '';\n var aggregateType;\n var caption;\n var hasField = false;\n if (cell && this.dataType === 'olap') {\n if (this.olapEngineModule.fieldList[cell.actualText]) {\n var field = this.olapEngineModule.fieldList[cell.actualText];\n aggregateType = field.isCalculatedField ? field.type : field.aggregateType;\n caption = (this.olapEngineModule.dataFields[cell.actualText] &&\n this.olapEngineModule.dataFields[cell.actualText].caption) ?\n this.olapEngineModule.dataFields[cell.actualText].caption : field.caption;\n hasField = true;\n }\n }\n else {\n if (cell && this.engineModule.fieldList[cell.actualText]) {\n var field = this.engineModule.fieldList[cell.actualText];\n aggregateType = field.aggregateType;\n caption = field.caption;\n hasField = true;\n }\n }\n if (cell && hasField) {\n var rowHeaders = this.getRowText(rowIndex, 0);\n var columnHeaders = this.getColText(0, colIndex, rowIndex);\n var value = ((cell.formattedText === '0' || cell.formattedText === '') ? this.localeObj.getConstant('noValue') :\n cell.formattedText);\n if (this.tooltipTemplate && this.getTooltipTemplate() !== undefined) {\n var rowFields = this.getHeaderField(rowIndex, colIndex, 'row');\n var columnFields = this.getHeaderField(rowIndex, colIndex, 'column');\n var templateObject = {\n rowHeaders: rowHeaders,\n columnHeaders: columnHeaders,\n aggregateType: aggregateType,\n valueField: caption,\n value: value,\n rowFields: rowFields,\n columnFields: columnFields\n };\n this.tooltip.content = this.getTooltipTemplate()(templateObject, this, 'tooltipTemplate', this.element.id + 'tooltipTemplate')[0].outerHTML;\n }\n else {\n this.tooltip.content = '

' +\n this.localeObj.getConstant('row') + ':

' +\n rowHeaders + '


' + this.localeObj.getConstant('column') +\n ':

' + columnHeaders + '


' +\n (cell.actualText !== '' ? ('

' + (this.dataType === 'olap' ? '' :\n (this.localeObj.getConstant(aggregateType) + ' ' + this.localeObj.getConstant('of') + ' ')) +\n caption + ':

' + value + '

') : '');\n }\n }\n else {\n args.cancel = true;\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.getTooltipTemplate = function () {\n return this.tooltipTemplateFn;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.getHeaderField = function (rowIndex, colIndex, axis) {\n var fields = '';\n var len;\n var engineModule = this.dataType === 'olap' ? this.olapEngineModule : this.engineModule;\n var delimiter = engineModule.valueSortSettings.headerDelimiter;\n if (axis === 'row') {\n len = this.pivotValues[rowIndex][0].valueSort.levelName.toString().split(delimiter).length;\n for (var i = 0; i < len && engineModule.rows.length > 0 && engineModule.rows[i]; i++) {\n fields += (i ? ' - ' : '') + ((engineModule.rows[i].caption) ? engineModule.rows[i].caption : engineModule.rows[i].name);\n }\n }\n else {\n if (engineModule.columns.length > 0) {\n var pos = engineModule.values.length === 0 ? 0 :\n Number(Object.keys(engineModule.headerContent)[Object.keys(engineModule.headerContent).length - 1]);\n len = this.pivotValues[pos][colIndex].valueSort.levelName.toString().split(delimiter).length;\n len = engineModule.values.length > 1 ? len - 1 : len;\n }\n for (var j = 0; j < len && engineModule.columns.length > 0 && engineModule.columns[j]; j++) {\n fields += (j ? ' - ' : '') + ((engineModule.columns[j].caption) ? engineModule.columns[j].caption : engineModule.columns[j].name);\n }\n /* eslint-enable max-len */\n }\n return fields;\n };\n PivotView.prototype.getRowText = function (rowIndex, colIndex) {\n var cell = this.pivotValues[rowIndex][colIndex];\n var level = cell.level;\n var rowText = cell.type === 'grand sum' ? this.localeObj.getConstant('grandTotal') : cell.formattedText;\n while (level > 0 || cell.index === undefined) {\n rowIndex--;\n cell = this.pivotValues[rowIndex][colIndex];\n if (cell.index !== undefined) {\n if (level > cell.level) {\n rowText = rowText + ' - ' + cell.formattedText;\n level = level - 1;\n }\n }\n }\n return rowText.split(' - ').reverse().join(' - ');\n };\n PivotView.prototype.getColText = function (rowIndex, colIndex, limit) {\n var cell = this.pivotValues[0][colIndex];\n var axis = cell.axis;\n var colText = cell.type === 'grand sum' ? this.localeObj.getConstant('grandTotal') : cell.formattedText;\n while (axis !== 'value' && limit > rowIndex) {\n rowIndex++;\n if (this.pivotValues[rowIndex]) {\n cell = this.pivotValues[rowIndex][colIndex];\n axis = cell.axis;\n if (cell.type !== 'sum' && cell.type !== 'grand sum' && axis !== 'value') {\n colText = colText + ' - ' + cell.formattedText;\n }\n }\n }\n return colText;\n };\n PivotView.prototype.updateClass = function () {\n if (this.enableRtl) {\n addClass([this.element], cls.RTL);\n }\n else {\n removeClass([this.element], cls.RTL);\n }\n if (this.isAdaptive) {\n addClass([this.element], cls.DEVICE);\n }\n else {\n removeClass([this.element], cls.DEVICE);\n }\n };\n PivotView.prototype.mouseRclickHandler = function (e) {\n if (e.which === 3) {\n this.lastCellClicked = e.target;\n }\n else if (e.which === 0) {\n this.lastCellClicked = e.target;\n }\n this.lastCellClicked = e.target;\n };\n PivotView.prototype.mouseDownHandler = function (e) {\n if (e.which === 3) {\n this.lastCellClicked = e.target;\n }\n if (this.isCellBoxMultiSelection) {\n this.isMouseDown = true;\n this.isMouseUp = false;\n var parent_1 = this.parentAt(e.target, 'TH');\n this.clearSelection(parent_1, e, Number(parent_1.getAttribute('aria-colindex')), Number(parent_1.getAttribute('index')));\n this.lastSelectedElement = undefined;\n }\n };\n PivotView.prototype.mouseMoveHandler = function (e) {\n if (this.isCellBoxMultiSelection) {\n e.preventDefault();\n if (this.isMouseDown && e.target) {\n var ele = e.target;\n var parentElement = this.parentAt(ele, 'TH');\n if (this.lastSelectedElement && this.lastSelectedElement !== parentElement &&\n parentElement.classList.contains(cls.SELECTED_BGCOLOR)) {\n this.lastSelectedElement.classList.remove(cls.CELL_ACTIVE_BGCOLOR);\n this.lastSelectedElement.classList.remove(cls.SELECTED_BGCOLOR);\n this.lastSelectedElement = parentElement;\n }\n else {\n this.lastSelectedElement = parentElement;\n parentElement.classList.add(cls.CELL_ACTIVE_BGCOLOR);\n parentElement.classList.add(cls.SELECTED_BGCOLOR);\n }\n this.renderModule.selected();\n }\n }\n };\n PivotView.prototype.mouseUpHandler = function (e) {\n if (this.isCellBoxMultiSelection) {\n this.isMouseDown = false;\n this.isMouseUp = true;\n }\n };\n PivotView.prototype.parentAt = function (target, tagName) {\n while (target.tagName !== tagName) {\n if (target.parentElement) {\n target = target.parentElement;\n }\n else {\n break;\n }\n }\n return target;\n };\n PivotView.prototype.mouseClickHandler = function (e) {\n if (e.which === 3) {\n this.lastCellClicked = e.target;\n }\n else if (e.which === 0) {\n this.lastCellClicked = e.target;\n }\n var target = e.target;\n if ((target.classList.contains('e-headercell') ||\n target.classList.contains('e-headercelldiv') ||\n target.classList.contains('e-rowsheader') ||\n target.classList.contains('e-rowcell') ||\n target.classList.contains('e-stackedheadercelldiv') ||\n target.classList.contains('e-headertext') ||\n target.classList.contains('e-ascending') ||\n target.classList.contains('e-descending')) && this.enableValueSorting && this.dataType === 'pivot') {\n var ele = null;\n if (target.classList.contains('e-headercell') || target.classList.contains('e-rowsheader')\n || target.classList.contains('e-rowcell')) {\n ele = target;\n }\n else if (target.classList.contains('e-stackedheadercelldiv') || target.classList.contains('e-headercelldiv') ||\n target.classList.contains('e-ascending') || target.classList.contains('e-descending')) {\n ele = target.parentElement;\n }\n else if (target.classList.contains('e-headertext')) {\n ele = target.parentElement.parentElement;\n }\n this.CellClicked(target, e);\n if ((ele.parentElement.parentElement.parentElement.parentElement.classList.contains('e-movableheader')\n && this.dataSourceSettings.valueAxis === 'column') || (ele.parentElement.classList.contains('e-row') &&\n this.dataSourceSettings.valueAxis === 'row') && (ele.classList.contains('e-rowsheader') ||\n ele.classList.contains('e-stot'))) {\n var colIndex = Number(ele.getAttribute('aria-colindex'));\n var rowIndex = Number(ele.getAttribute('index'));\n if (this.dataSourceSettings.valueAxis === 'row' && (this.dataSourceSettings.values.length > 1 || this.dataSourceSettings.alwaysShowValueHeader)) {\n rowIndex = this.pivotValues[rowIndex][colIndex].type === 'value' ? rowIndex : (rowIndex + 1);\n }\n else if (this.dataSourceSettings.valueAxis === 'column' && (this.dataSourceSettings.values.length > 1 || this.dataSourceSettings.alwaysShowValueHeader)) {\n colIndex = (Number(ele.getAttribute('aria-colindex')) + Number(ele.getAttribute('aria-colspan')) - 1);\n rowIndex = this.engineModule.headerContent.length - 1;\n }\n this.setProperties({\n dataSourceSettings: {\n valueSortSettings: {\n columnIndex: (Number(ele.getAttribute('aria-colindex')) +\n Number(ele.getAttribute('aria-colspan')) - 1),\n sortOrder: this.dataSourceSettings.valueSortSettings.sortOrder === 'Descending' ? 'Ascending' : 'Descending',\n headerText: this.pivotValues[rowIndex][colIndex].valueSort.levelName,\n headerDelimiter: this.dataSourceSettings.valueSortSettings.headerDelimiter ?\n this.dataSourceSettings.valueSortSettings.headerDelimiter : '.'\n }\n }\n }, true);\n this.showWaitingPopup();\n var pivot_2 = this; /* eslint-disable-line */\n pivot_2.engineModule.enableValueSorting = true;\n if (pivot_2.enableVirtualization) {\n if (pivot_2.dataSourceSettings.enableSorting) {\n for (var _i = 0, _a = Object.keys(pivot_2.engineModule.fieldList); _i < _a.length; _i++) {\n var key = _a[_i];\n pivot_2.engineModule.fieldList[key].sort = 'Ascending';\n }\n pivot_2.setProperties({ dataSourceSettings: { sortSettings: [] } }, true);\n }\n if (isBlazor()) {\n /* eslint-disable */\n pivot_2.interopAdaptor.invokeMethodAsync('PivotInteropMethod', 'applyValueSorting', { 'valueSortSettings': pivot_2.dataSourceSettings.valueSortSettings.properties }).then(function (data) {\n pivot_2.updateBlazorData(data, pivot_2);\n pivot_2.allowServerDataBinding = false;\n pivot_2.setProperties({ pivotValues: pivot_2.engineModule.pivotValues }, true);\n delete pivot_2.bulkChanges.pivotValues;\n pivot_2.allowServerDataBinding = true;\n pivot_2.renderPivotGrid();\n });\n /* eslint-enable */\n }\n else if (pivot_2.dataSourceSettings.mode === 'Server') {\n pivot_2.getEngine('onValueSort', null, null, null, null, null, null);\n }\n else {\n pivot_2.engineModule.rMembers = pivot_2.engineModule.headerCollection.rowHeaders;\n pivot_2.engineModule.cMembers = pivot_2.engineModule.headerCollection.columnHeaders;\n pivot_2.engineModule.applyValueSorting();\n pivot_2.engineModule.updateEngine();\n }\n }\n else if (pivot_2.dataSourceSettings.mode === 'Server') {\n pivot_2.getEngine('onValueSort', null, null, null, null, null, null);\n }\n else {\n pivot_2.engineModule.generateGridData(pivot_2.dataSourceSettings);\n }\n if (!(isBlazor() && pivot_2.enableVirtualization)) {\n pivot_2.allowServerDataBinding = false;\n pivot_2.setProperties({ pivotValues: pivot_2.engineModule.pivotValues }, true);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n delete pivot_2.bulkChanges.pivotValues;\n pivot_2.allowServerDataBinding = true;\n pivot_2.renderPivotGrid();\n }\n }\n }\n else if (target.classList.contains(cls.COLLAPSE) || target.classList.contains(cls.EXPAND)) {\n this.onDrill(target);\n }\n else {\n this.CellClicked(target, e);\n return;\n }\n };\n PivotView.prototype.updateTotColWidth = function () {\n this.totColWidth = 0;\n for (var _i = 0, _a = this.pivotColumns; _i < _a.length; _i++) {\n var column = _a[_i];\n this.totColWidth = this.totColWidth + column.width;\n }\n };\n PivotView.prototype.framePivotColumns = function (gridcolumns) {\n for (var _i = 0, gridcolumns_1 = gridcolumns; _i < gridcolumns_1.length; _i++) {\n var column = gridcolumns_1[_i];\n if (column.columns && column.columns.length > 0) {\n this.framePivotColumns(column.columns);\n }\n else {\n /* eslint-disable */\n var levelName = column.field === '0.formattedText' ? '' :\n (column.customAttributes ? column.customAttributes.cell.valueSort.levelName : '');\n var width = this.renderModule.setSavedWidth(column.field === '0.formattedText' ? column.field :\n levelName, Number(column.width === 'auto' ? column.minWidth : column.width));\n this.pivotColumns.push({\n allowReordering: column.allowReordering,\n allowResizing: column.allowResizing,\n headerText: levelName,\n width: width\n });\n this.totColWidth = this.totColWidth + Number(width);\n /* eslint-enable */\n }\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.setGridColumns = function (gridcolumns) {\n if (!isNullOrUndefined(this.totColWidth) && this.totColWidth > 0) {\n for (var _i = 0, gridcolumns_2 = gridcolumns; _i < gridcolumns_2.length; _i++) {\n var column = gridcolumns_2[_i];\n if (column.columns && column.columns.length > 0) {\n this.setGridColumns(column.columns);\n }\n else {\n /* eslint-disable */\n var levelName = column.field === '0.formattedText' ? '' :\n (column.customAttributes ? column.customAttributes.cell.valueSort.levelName : '');\n column.allowReordering = this.pivotColumns[this.posCount].allowReordering;\n column.allowResizing = this.pivotColumns[this.posCount].allowResizing;\n var calcWidth = this.renderModule.setSavedWidth(column.field === '0.formattedText' ? column.field :\n levelName, Number(this.pivotColumns[this.posCount].width));\n if (column.width !== 'auto') {\n column.width = calcWidth;\n }\n else {\n column.minWidth = calcWidth;\n }\n this.posCount++;\n if (column.allowReordering) {\n this.gridSettings.allowReordering = true;\n }\n if (column.allowResizing) {\n this.gridSettings.allowResizing = true;\n }\n }\n }\n if (this.gridSettings.allowReordering) {\n Grid.Inject(Reorder);\n }\n if (this.gridSettings.allowResizing) {\n Grid.Inject(Resize);\n }\n /* eslint-enable */\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.fillGridColumns = function (gridcolumns) {\n for (var _i = 0, gridcolumns_3 = gridcolumns; _i < gridcolumns_3.length; _i++) {\n var column = gridcolumns_3[_i];\n column.allowReordering = this.gridSettings.allowReordering;\n column.allowResizing = this.gridSettings.allowResizing;\n this.posCount++;\n if (column.columns && column.columns.length > 0) {\n this.fillGridColumns(column.columns);\n }\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.triggerColumnRenderEvent = function (gridcolumns) {\n this.pivotColumns = [];\n this.totColWidth = 0;\n this.framePivotColumns(gridcolumns);\n var firstColWidth = this.pivotColumns[0].width;\n var eventArgs = {\n columns: this.pivotColumns,\n dataSourceSettings: this.dataSourceSettings\n };\n this.trigger(events.beforeColumnsRender, eventArgs);\n this.updateTotColWidth();\n if (firstColWidth !== this.pivotColumns[0].width) {\n this.firstColWidth = this.pivotColumns[0].width;\n this.renderModule.resColWidth = parseInt(this.firstColWidth.toString()); /* eslint-disable-line */\n }\n this.posCount = 0;\n this.setGridColumns(gridcolumns);\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.setCommonColumnsWidth = function (columns, width) {\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.field !== '0.formattedText') {\n if (column.columns) {\n this.setCommonColumnsWidth(column.columns, width);\n }\n else {\n if (column.width !== 'auto') {\n column.width = width;\n }\n else {\n column.minWidth = width;\n }\n }\n }\n else {\n column.width = !this.firstColWidth ? column.width : this.firstColWidth;\n }\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.getHeightAsNumber = function () {\n var height;\n if (isNaN(this.height)) {\n if (this.height.toString().indexOf('%') > -1) {\n height = (parseFloat(this.height.toString()) / 100) * this.element.offsetHeight;\n }\n else if (this.height.toString().indexOf('px') > -1) {\n height = Number(this.height.toString().split('px')[0]);\n }\n }\n else {\n height = Number(this.height);\n }\n if (height < this.minHeight) {\n height = this.minHeight;\n }\n return height;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.getWidthAsNumber = function () {\n var width;\n if (isNaN(this.width)) {\n if (this.width.toString().indexOf('%') > -1) {\n width = (parseFloat(this.width.toString()) / 100) * this.element.offsetWidth;\n }\n else if (this.width.toString().indexOf('px') > -1) {\n width = Number(this.width.toString().split('px')[0]);\n }\n if (isNaN(width)) {\n width = this.element.offsetWidth;\n }\n }\n else {\n width = Number(this.width);\n }\n if (width < 400) {\n width = 400;\n }\n return width;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.getGridWidthAsNumber = function () {\n var width;\n var offsetWidth = this.element.offsetWidth ? this.element.offsetWidth :\n this.element.getBoundingClientRect().width;\n if (isNaN(this.grid.width)) {\n if (this.grid.width.toString().indexOf('%') > -1) {\n width = (parseFloat(this.grid.width.toString()) / 100) * offsetWidth;\n }\n else if (this.grid.width.toString().indexOf('px') > -1) {\n width = Number(this.grid.width.toString().split('px')[0]);\n }\n if (isNaN(width)) {\n width = offsetWidth;\n }\n }\n else {\n width = Number(this.grid.width);\n }\n return width;\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.onWindowResize = function () {\n clearTimeout(this.timeOutObj);\n this.timeOutObj = setTimeout(this.layoutRefresh.bind(this), 500);\n };\n /**\n * Refreshes the Pivot Table for blazor layoutRefresh is called for other base refresh is called.\n * @returns {void}\n */\n PivotView.prototype.refresh = function () {\n if (isBlazor()) {\n this.layoutRefresh();\n }\n else {\n this.pivotRefresh();\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.layoutRefresh = function () {\n if (this.element && this.element.classList.contains('e-pivotview') &&\n (this.dataType === 'olap' ? (this.olapEngineModule && this.olapEngineModule.pivotValues) :\n this.engineModule && this.engineModule.pivotValues)) {\n if (this.grid) {\n var colLength = (this.dataType === 'olap' && this.olapEngineModule.pivotValues.length > 0) ?\n this.olapEngineModule.pivotValues[0].length : (this.dataSourceSettings.values.length > 0 &&\n this.engineModule.pivotValues.length > 0 ? this.engineModule.pivotValues[0].length : 2);\n var colWidth = this.renderModule.resizeColWidth(colLength);\n this.grid.width = this.renderModule.calculateGridWidth();\n this.renderModule.calculateGridHeight(true);\n if (this.gridSettings.allowAutoResizing) {\n this.setCommonColumnsWidth(this.grid.columns, colWidth);\n }\n this.pivotColumns = [];\n this.totColWidth = 0;\n this.framePivotColumns(this.grid.columns);\n this.posCount = 0;\n if (!this.showGroupingBar) {\n this.setGridColumns(this.grid.columns);\n }\n if (this.currentView === 'Table') {\n if (this.cellTemplate && isBlazor()) {\n resetBlazorTemplate(this.element.id + '_cellTemplate', 'CellTemplate');\n }\n }\n this.grid.refreshColumns();\n if (this.showGroupingBar && this.groupingBarModule && this.element.querySelector('.' + cls.GROUPING_BAR_CLASS)) {\n this.groupingBarModule.setGridRowWidth();\n }\n }\n if (this.showToolbar && this.toolbarModule && this.toolbarModule.toolbar) {\n this.toolbarModule.toolbar.width = this.grid ? (this.getGridWidthAsNumber() - 2) : (this.getWidthAsNumber() - 2);\n }\n if (this.chart && ((this.showToolbar && this.currentView === 'Chart') || !this.showToolbar)) {\n this.chart.width = (this.showToolbar && this.grid) ? this.getGridWidthAsNumber().toString() :\n (this.displayOption.view === 'Both' && this.grid) ? this.getGridWidthAsNumber().toString() : this.getWidthAsNumber().toString();\n if (this.displayOption.view === 'Chart' && this.showGroupingBar && this.groupingBarModule &&\n this.element.querySelector('.' + cls.CHART_GROUPING_BAR_CLASS)) {\n this.groupingBarModule.refreshUI();\n }\n }\n }\n };\n PivotView.prototype.CellClicked = function (target, e) {\n var _this_1 = this;\n var ele = null;\n if (target.classList.contains('e-headercell') || target.classList.contains('e-rowcell')) {\n ele = target;\n }\n else if (target.classList.contains('e-stackedheadercelldiv') || target.classList.contains('e-cellvalue') ||\n target.classList.contains('e-headercelldiv')) {\n ele = target.parentElement;\n }\n else if (target.classList.contains('e-headertext')) {\n ele = target.parentElement.parentElement;\n }\n else if (target.classList.contains(cls.ROW_SELECT)) {\n if (target.classList.contains(cls.SPAN_CLICKED)) {\n this.isPopupClicked = false;\n }\n else {\n this.isPopupClicked = true;\n }\n }\n /* eslint-disable */\n if (ele && !isNullOrUndefined(this.pivotValues) && this.pivotValues.length > 0) {\n var colIndex_1 = Number(ele.getAttribute('aria-colindex'));\n var rowIndex_1 = Number(ele.getAttribute('index'));\n var colSpan_1 = Number(ele.getAttribute('aria-colspan'));\n // let selectArgs: PivotCellSelectedEventArgs = { isCellClick: true, currentCell: target };\n var selectArgs = {\n cancel: false,\n isCellClick: true,\n currentCell: ele,\n data: this.pivotValues[rowIndex_1][colIndex_1]\n };\n this.trigger(events.cellSelecting, selectArgs, function (observedArgs) {\n if (_this_1.gridSettings.allowSelection) {\n if (_this_1.gridSettings.selectionSettings.mode === 'Both' ? !ele.classList.contains(cls.ROW_CELL_CLASS) :\n _this_1.gridSettings.selectionSettings.mode !== 'Row') {\n _this_1.clearSelection(ele, e, colIndex_1, rowIndex_1);\n if (!observedArgs.cancel) {\n _this_1.applyColumnSelection(e, ele, colIndex_1, colIndex_1 + (colSpan_1 > 0 ? (colSpan_1 - 1) : 0), rowIndex_1);\n }\n }\n else {\n _this_1.clearSelection(ele, e, colIndex_1, rowIndex_1);\n }\n if (_this_1.gridSettings.selectionSettings.mode !== 'Column' && !ele.classList.contains(cls.COLUMNSHEADER)) {\n _this_1.rowDeselect(ele, e, rowIndex_1, _this_1.gridSettings.selectionSettings.mode, observedArgs);\n }\n if (_this_1.gridSettings.selectionSettings.mode !== 'Column' && !observedArgs.cancel) {\n if (_this_1.gridSettings.selectionSettings.type === \"Multiple\" ? (!e.ctrlKey && !e.shiftKey) : true && _this_1.selectedRowIndex !== rowIndex_1) {\n _this_1.selectedRowIndex = rowIndex_1;\n _this_1.grid.selectionModule.selectRow(rowIndex_1 - _this_1.renderModule.rowStartPos);\n }\n else {\n _this_1.selectedRowIndex = undefined;\n }\n }\n }\n if (_this_1.cellClick && observedArgs.isCellClick) {\n _this_1.trigger(events.cellClick, {\n currentCell: ele,\n data: _this_1.pivotValues[rowIndex_1][colIndex_1],\n nativeEvent: e\n });\n }\n _this_1.getSelectedCellsPos();\n });\n }\n };\n PivotView.prototype.rowDeselect = function (ele, e, rowIndex, mode, observedArgs) {\n if (!e.shiftKey && !e.ctrlKey && this.gridSettings.selectionSettings.mode !== 'Both' || this.gridSettings.selectionSettings.type === 'Single') {\n if (!ele.classList.contains(cls.CELL_SELECTED_BGCOLOR) && !ele.classList.contains(cls.SELECTED_BGCOLOR) && !ele.classList.contains(cls.CELL_ACTIVE_BGCOLOR)) {\n if (!observedArgs.cancel) {\n removeClass(this.element.querySelectorAll('.' + cls.CELL_SELECTED_BGCOLOR), cls.CELL_SELECTED_BGCOLOR);\n removeClass(this.element.querySelectorAll('.' + cls.SELECTED_BGCOLOR), cls.SELECTED_BGCOLOR);\n removeClass(this.element.querySelectorAll('.' + cls.CELL_ACTIVE_BGCOLOR), cls.CELL_ACTIVE_BGCOLOR);\n }\n else {\n this.setSavedSelectedCells();\n }\n }\n else {\n removeClass(this.element.querySelectorAll('.' + cls.CELL_SELECTED_BGCOLOR), cls.CELL_SELECTED_BGCOLOR);\n removeClass(this.element.querySelectorAll('.' + cls.SELECTED_BGCOLOR), cls.SELECTED_BGCOLOR);\n removeClass(this.element.querySelectorAll('.' + cls.CELL_ACTIVE_BGCOLOR), cls.CELL_ACTIVE_BGCOLOR);\n if (!observedArgs.cancel) {\n if ((mode === 'Cell')) {\n addClass([ele], [cls.CELL_SELECTED_BGCOLOR]);\n }\n else if (mode === 'Row' || this.gridSettings.selectionSettings.type === 'Single') {\n var query = '[index=\"' + rowIndex + '\"]';\n addClass(this.element.querySelectorAll(query), [cls.SELECTED_BGCOLOR, cls.CELL_ACTIVE_BGCOLOR]);\n if (mode !== 'Row') {\n ele.classList.add(cls.CELL_SELECTED_BGCOLOR);\n }\n }\n }\n else {\n this.setSavedSelectedCells();\n }\n }\n }\n else if (((e.shiftKey || e.ctrlKey) || this.gridSettings.selectionSettings.mode == 'Both') && (observedArgs.cancel)) {\n removeClass(this.element.querySelectorAll('.' + cls.CELL_SELECTED_BGCOLOR), cls.CELL_SELECTED_BGCOLOR);\n removeClass(this.element.querySelectorAll('.' + cls.SELECTED_BGCOLOR), cls.SELECTED_BGCOLOR);\n removeClass(this.element.querySelectorAll('.' + cls.CELL_ACTIVE_BGCOLOR), cls.CELL_ACTIVE_BGCOLOR);\n this.setSavedSelectedCells();\n }\n };\n /** @hidden */\n PivotView.prototype.clearSelection = function (ele, e, colIndex, rowIndex) {\n if ((!e.shiftKey && !e.ctrlKey) || this.gridSettings.selectionSettings.type === 'Single') {\n if (this.gridSettings.selectionSettings.mode === 'Cell') {\n if (ele.classList.contains(cls.COLUMNSHEADER)) {\n removeClass(this.element.querySelectorAll(('.' + cls.ROW_CELL_CLASS + '.') + cls.CELL_SELECTED_BGCOLOR), cls.CELL_SELECTED_BGCOLOR);\n }\n else {\n removeClass(this.element.querySelectorAll(('.' + cls.COLUMNSHEADER + '.') + cls.CELL_ACTIVE_BGCOLOR), [cls.CELL_ACTIVE_BGCOLOR, cls.SELECTED_BGCOLOR]);\n }\n }\n else if (this.gridSettings.selectionSettings.mode === 'Both') {\n if (ele.classList.contains(cls.ROW_CELL_CLASS)) {\n for (var _i = 0, _a = [].slice.call(this.element.querySelectorAll('.' + cls.SELECTED_BGCOLOR + ', .' + cls.CELL_SELECTED_BGCOLOR)); _i < _a.length; _i++) {\n var ele_1 = _a[_i];\n // if (Number((ele as HTMLElement).getAttribute('index')) !== rowIndex) {\n removeClass([ele_1], [cls.CELL_ACTIVE_BGCOLOR, cls.SELECTED_BGCOLOR, cls.CELL_SELECTED_BGCOLOR]);\n // }\n }\n }\n else {\n removeClass(this.element.querySelectorAll('.' + cls.CELL_SELECTED_BGCOLOR), cls.CELL_SELECTED_BGCOLOR);\n }\n }\n }\n };\n /** @hidden */\n PivotView.prototype.applyRowSelection = function (colIndex, rowIndex, e) {\n var pivotValue = this.engineModule.pivotValues[rowIndex][colIndex];\n if (!e.ctrlKey && !e.shiftKey && pivotValue && this.selectedRowIndex !== rowIndex) {\n this.selectedRowIndex = rowIndex;\n var parentLevel = pivotValue.level;\n var rCount = rowIndex;\n do {\n rCount++;\n pivotValue = this.engineModule.pivotValues[rCount][colIndex];\n } while (pivotValue && parentLevel < pivotValue.level);\n var _this = this;\n if (this.isAdaptive) {\n this.rowRangeSelection = {\n enable: true,\n startIndex: rowIndex - _this.renderModule.rowStartPos,\n endIndex: rCount - (1 + _this.renderModule.rowStartPos)\n };\n }\n else {\n _this.grid.selectionModule.selectRowsByRange(rowIndex -\n _this.renderModule.rowStartPos, rCount - (1 + _this.renderModule.rowStartPos));\n }\n }\n else {\n this.selectedRowIndex = undefined;\n }\n };\n /** @hidden */\n PivotView.prototype.applyColumnSelection = function (e, target, colStart, colEnd, rowStart) {\n if (!target.classList.contains(cls.ROWSHEADER) &&\n (this.gridSettings.selectionSettings.mode === 'Cell' ? target.classList.contains(cls.COLUMNSHEADER) : true)) {\n var isCtrl = e.ctrlKey;\n if (this.isAdaptive && this.gridSettings.selectionSettings.type === 'Multiple') {\n this.grid.selectionModule.showPopup(e);\n if (this.isPopupClicked) {\n this.element.querySelector('.' + cls.ROW_SELECT).classList.add(cls.SPAN_CLICKED);\n isCtrl = true;\n }\n else {\n this.element.querySelector('.' + cls.ROW_SELECT).classList.remove(cls.SPAN_CLICKED);\n isCtrl = false;\n }\n }\n var queryStringArray = [];\n var type = this.gridSettings.selectionSettings.type;\n var isToggle = target.classList.contains(cls.CELL_ACTIVE_BGCOLOR);\n var activeColumns = [];\n var actColPos = {};\n for (var cCnt = colStart; cCnt <= colEnd; cCnt++) {\n activeColumns.push(cCnt.toString());\n }\n if (!isCtrl || type === 'Single') {\n for (var _i = 0, _a = [].slice.call(this.element.querySelectorAll('.' + cls.CELL_ACTIVE_BGCOLOR)); _i < _a.length; _i++) {\n var ele = _a[_i];\n removeClass([ele], [cls.CELL_ACTIVE_BGCOLOR, cls.SELECTED_BGCOLOR]);\n if (activeColumns.indexOf(ele.getAttribute('aria-colindex')) === -1) {\n isToggle = false;\n }\n var colIndex = Number(ele.getAttribute('aria-colindex'));\n actColPos[colIndex] = colIndex;\n }\n activeColumns = Object.keys(actColPos).length > 0 ? Object.keys(actColPos).sort(function (a, b) {\n return a - b;\n }) : activeColumns;\n }\n else {\n isToggle = false;\n }\n if (type === 'Multiple' && e.shiftKey) {\n this.shiftLockedPos = this.shiftLockedPos.length === 0 ? activeColumns : this.shiftLockedPos;\n if (Number(this.shiftLockedPos[0]) <= colStart) {\n colStart = Number(this.shiftLockedPos[0]);\n }\n else {\n colEnd = colEnd < Number(this.shiftLockedPos[this.shiftLockedPos.length - 1]) ?\n Number(this.shiftLockedPos[this.shiftLockedPos.length - 1]) : colEnd;\n }\n }\n else {\n this.shiftLockedPos = [];\n }\n var rowSelectedList = [];\n if (e.ctrlKey && this.gridSettings.selectionSettings.mode === 'Both' && type === 'Multiple' && !target.classList.contains(cls.ROWSHEADER)) {\n for (var _b = 0, _c = [].slice.call(this.element.querySelectorAll('.' + cls.ROWSHEADER + '.' + cls.CELL_SELECTED_BGCOLOR)); _b < _c.length; _b++) {\n var ele = _c[_b];\n rowSelectedList.push(ele.getAttribute('index'));\n }\n }\n var count = colStart;\n while (count <= colEnd) {\n queryStringArray.push('[aria-colindex=\"' + count + '\"]' + (this.gridSettings.selectionSettings.mode === 'Cell' ?\n '[index=\"' + rowStart + '\"]' : \"\") + '');\n count++;\n }\n if (!isToggle) {\n rowStart = target.classList.contains('e-headercell') ? rowStart : (this.renderModule.rowStartPos - 1);\n var isTargetSelected = target.classList.contains(cls.CELL_ACTIVE_BGCOLOR);\n for (var _d = 0, _e = [].slice.call(this.element.querySelectorAll(queryStringArray.toString())); _d < _e.length; _d++) {\n var ele = _e[_d];\n if (Number(ele.getAttribute('index')) >= rowStart) {\n if (isTargetSelected && isCtrl && (rowSelectedList.indexOf(ele.getAttribute('index')) === -1)) {\n removeClass([ele], [cls.CELL_ACTIVE_BGCOLOR, cls.SELECTED_BGCOLOR]);\n }\n else {\n addClass([ele], [cls.CELL_ACTIVE_BGCOLOR, cls.SELECTED_BGCOLOR]);\n }\n }\n }\n }\n this.renderModule.selected();\n }\n };\n PivotView.prototype.getSelectedCellsPos = function () {\n var control = this;\n control.savedSelectedCellsPos = [];\n control.cellSelectionPos = [];\n for (var _i = 0, _a = [].slice.call(this.element.querySelectorAll('.' + cls.SELECTED_BGCOLOR)); _i < _a.length; _i++) {\n var ele = _a[_i];\n control.savedSelectedCellsPos.push({ rowIndex: ele.getAttribute('index'), colIndex: ele.getAttribute('aria-colindex') });\n }\n for (var _b = 0, _c = [].slice.call(this.element.querySelectorAll('.' + cls.CELL_SELECTED_BGCOLOR)); _b < _c.length; _b++) {\n var ele = _c[_b];\n control.cellSelectionPos.push({ rowIndex: ele.getAttribute('index'), colIndex: ele.getAttribute('aria-colindex') });\n }\n };\n PivotView.prototype.setSavedSelectedCells = function () {\n var control = this;\n for (var _i = 0, _a = [].slice.call(this.savedSelectedCellsPos); _i < _a.length; _i++) {\n var item = _a[_i];\n var query = '[aria-colindex=\"' + item.colIndex + '\"][index=\"' + item.rowIndex + '\"]';\n addClass([control.element.querySelector(query)], [cls.CELL_ACTIVE_BGCOLOR, cls.SELECTED_BGCOLOR]);\n }\n for (var _b = 0, _c = [].slice.call(this.cellSelectionPos); _b < _c.length; _b++) {\n var item = _c[_b];\n var query = '[aria-colindex=\"' + item.colIndex + '\"][index=\"' + item.rowIndex + '\"]';\n addClass([control.element.querySelector(query)], [cls.CELL_SELECTED_BGCOLOR]);\n }\n };\n /* eslint-enable */\n PivotView.prototype.renderEmptyGrid = function () {\n var _this_1 = this;\n this.isEmptyGrid = true;\n this.notEmpty = false;\n this.isInitial = true;\n this.renderModule = new Render(this);\n if (this.grid && this.grid.element && this.element.querySelector('.e-grid')) {\n this.notEmpty = true;\n this.grid.setProperties({\n columns: this.renderModule.frameEmptyColumns(),\n dataSource: this.renderModule.frameEmptyData()\n }, true);\n this.grid.notify('datasource-modified', {});\n this.grid.refreshColumns();\n }\n else {\n if (this.element.querySelector('.' + cls.GRID_CLASS)) {\n remove(this.element.querySelector('.' + cls.GRID_CLASS));\n }\n this.renderModule.bindGrid(this, true);\n this.grid.showSpinner = function () { }; /* eslint-disable-line */\n this.grid.hideSpinner = function () { }; /* eslint-disable-line */\n this.element.appendChild(createElement('div', { id: this.element.id + '_grid' }));\n this.grid.isStringTemplate = true;\n this.grid.appendTo('#' + this.element.id + '_grid');\n this.grid.on('refresh-frozen-height', function () {\n if (!_this_1.enableVirtualization) {\n _this_1.grid.contentModule.setHeightToContent(_this_1.grid.contentModule.getTable().offsetHeight); /* eslint-disable-line */\n }\n });\n this.grid.off('data-ready', this.grid.dataReady); /* eslint-disable-line */\n this.grid.on('data-ready', function () {\n _this_1.grid.scrollModule.setWidth();\n _this_1.grid.scrollModule.setHeight();\n });\n }\n };\n /* eslint-disable */\n PivotView.prototype.initEngine = function () {\n var _this_1 = this;\n if (this.dataType === 'pivot') {\n var data = !isNullOrUndefined(this.dataSourceSettings.dataSource) ? this.dataSourceSettings.dataSource[0] :\n !isNullOrUndefined(this.engineModule.data) ? this.engineModule.data[0] : undefined;\n if (data && this.pivotCommon) {\n var isArray = Object.prototype.toString.call(data) == '[object Array]';\n if (isArray && this.dataSourceSettings.type === 'JSON') {\n this.pivotCommon.errorDialog.createErrorDialog(this.localeObj.getConstant('error'), this.localeObj.getConstant('invalidJSON'));\n return;\n }\n else if (!isArray && this.dataSourceSettings.type === 'CSV') {\n this.pivotCommon.errorDialog.createErrorDialog(this.localeObj.getConstant('error'), this.localeObj.getConstant('invalidCSV'));\n return;\n }\n }\n }\n var args = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.dataSourceSettings)\n };\n this.trigger(events.enginePopulating, args, function (observedArgs) {\n PivotUtil.updateDataSourceSettings(_this_1, observedArgs.dataSourceSettings);\n _this_1.updatePageSettings(false);\n var customProperties = {\n mode: '',\n savedFieldList: undefined,\n pageSettings: _this_1.pageSettings,\n enableValueSorting: _this_1.enableValueSorting,\n isDrillThrough: (_this_1.allowDrillThrough || _this_1.editSettings.allowEditing),\n localeObj: _this_1.localeObj,\n fieldsType: _this_1.fieldsType,\n clonedReport: _this_1.clonedReport\n };\n if (_this_1.dataType === 'pivot') {\n if (_this_1.dataSourceSettings.groupSettings && _this_1.dataSourceSettings.groupSettings.length > 0) {\n var dataSet = _this_1.engineModule.data;\n _this_1.clonedDataSet = (_this_1.clonedDataSet ? _this_1.clonedDataSet : PivotUtil.getClonedData(dataSet));\n if (isBlazor()) {\n _this_1.clonedReport = _this_1.clonedReport ? _this_1.clonedReport : extend({}, _this_1.dataSourceSettings, null, true);\n }\n else {\n var dataSourceSettings = JSON.parse(_this_1.getPersistData()).dataSourceSettings;\n dataSourceSettings.dataSource = [];\n _this_1.clonedReport = _this_1.clonedReport ? _this_1.clonedReport : dataSourceSettings;\n }\n }\n if (isBlazor() && _this_1.enableVirtualization) {\n var pivot_3 = _this_1;\n var sfBlazor = 'sfBlazor';\n var customArgs = window[sfBlazor].copyWithoutCircularReferences([customProperties], customProperties);\n var datasourceSettings = window[sfBlazor].copyWithoutCircularReferences([pivot_3.dataSourceSettings], pivot_3.dataSourceSettings);\n pivot_3.interopAdaptor.invokeMethodAsync('PivotInteropMethod', 'renderEngine', { 'dataSourceSettings': datasourceSettings, 'customProperties': customArgs }).then(function (data) {\n if (data === 0) {\n _this_1.pivotCommon.errorDialog.createErrorDialog(_this_1.localeObj.getConstant('error'), (pivot_3.dataSourceSettings.type === 'CSV' ?\n _this_1.localeObj.getConstant('invalidCSV') : _this_1.localeObj.getConstant('invalidJSON')));\n return;\n }\n else {\n pivot_3.updateBlazorData(data, pivot_3);\n PivotUtil.setPivotProperties(pivot_3, { pivotValues: pivot_3.engineModule.pivotValues });\n pivot_3.enginePopulatedEventMethod('initEngine', pivot_3);\n }\n });\n }\n else {\n if (_this_1.dataSourceSettings.mode !== 'Server') {\n _this_1.engineModule.renderEngine(_this_1.dataSourceSettings, customProperties, _this_1.getValueCellInfo.bind(_this_1));\n }\n _this_1.allowServerDataBinding = false;\n _this_1.setProperties({ pivotValues: _this_1.engineModule.pivotValues }, true);\n delete _this_1.bulkChanges.pivotValues;\n _this_1.allowServerDataBinding = true;\n _this_1.enginePopulatedEventMethod('initEngine');\n }\n }\n else if (_this_1.dataSourceSettings.providerType === 'SSAS' && _this_1.dataType === 'olap') {\n customProperties.savedFieldList = _this_1.olapEngineModule.fieldList;\n customProperties.savedFieldListData = _this_1.olapEngineModule.fieldListData;\n _this_1.olapEngineModule.renderEngine(_this_1.dataSourceSettings, customProperties);\n _this_1.allowServerDataBinding = false;\n _this_1.setProperties({ pivotValues: _this_1.olapEngineModule.pivotValues }, true);\n delete _this_1.bulkChanges.pivotValues;\n _this_1.allowServerDataBinding = true;\n _this_1.enginePopulatedEventMethod('initEngine');\n }\n });\n };\n PivotView.prototype.enginePopulatedEventMethod = function (action, control) {\n var _this_1 = this;\n if (action === 'initEngine') {\n var this$_1 = control ? control : this;\n this.trigger(events.enginePopulated, { pivotValues: this.pivotValues }, function (observedArgs) {\n if (this$_1.dataType === 'olap') {\n this$_1.olapEngineModule.pivotValues = isBlazor() ? _this_1.olapEngineModule.pivotValues : observedArgs.pivotValues;\n this$_1.pivotValues = this$_1.olapEngineModule.pivotValues;\n }\n else {\n this$_1.engineModule.pivotValues = isBlazor() ? _this_1.engineModule.pivotValues : observedArgs.pivotValues;\n this$_1.pivotValues = this$_1.engineModule.pivotValues;\n }\n this$_1.notify(events.dataReady, {});\n this$_1.notEmpty = true;\n });\n }\n else {\n var pivot_4 = control ? control : this;\n var eventArgs = {\n dataSourceSettings: pivot_4.dataSourceSettings,\n pivotValues: isBlazor() ? pivot_4.dataType === 'olap' ? pivot_4.olapEngineModule.pivotValues :\n pivot_4.engineModule.pivotValues : pivot_4.pivotValues\n };\n pivot_4.trigger(events.enginePopulated, eventArgs, function (observedArgs) {\n var dataSource = pivot_4.dataSourceSettings.dataSource;\n if (isBlazor() && observedArgs.dataSourceSettings.dataSource instanceof Object) {\n observedArgs.dataSourceSettings.dataSource = dataSource;\n }\n pivot_4.dataSourceSettings = observedArgs.dataSourceSettings;\n if (pivot_4.dataType === 'olap') {\n pivot_4.olapEngineModule.pivotValues = isBlazor() ? pivot_4.olapEngineModule.pivotValues : observedArgs.pivotValues;\n pivot_4.allowServerDataBinding = false;\n pivot_4.setProperties({ pivotValues: pivot_4.olapEngineModule.pivotValues }, true);\n delete pivot_4.bulkChanges.pivotValues;\n pivot_4.allowServerDataBinding = true;\n }\n else {\n pivot_4.engineModule.pivotValues = isBlazor() ? pivot_4.engineModule.pivotValues : observedArgs.pivotValues;\n pivot_4.allowServerDataBinding = false;\n pivot_4.setProperties({ pivotValues: pivot_4.engineModule.pivotValues }, true);\n delete pivot_4.bulkChanges.pivotValues;\n pivot_4.allowServerDataBinding = true;\n }\n pivot_4.pivotCommon.engineModule = pivot_4.dataType === 'olap' ? pivot_4.olapEngineModule : pivot_4.engineModule;\n pivot_4.pivotCommon.dataSourceSettings = pivot_4.dataSourceSettings;\n pivot_4.renderPivotGrid();\n });\n }\n };\n /** @hidden */\n PivotView.prototype.updateBlazorData = function (data, control) {\n control.allowServerDataBinding = false;\n var pivVal;\n var pivotFL;\n var pivotFields;\n var valueSort;\n var blazPivot = control;\n var valContent = [];\n var headContent = [];\n pivotFL = JSON.parse(data[\"fieldList\"]);\n pivVal = JSON.parse(data[\"pivotValue\"]);\n pivotFields = JSON.parse(data[\"fields\"]);\n valueSort = JSON.parse(data[\"valueSortSettings\"]);\n var len = pivVal.length;\n var pvalues = JSON.parse(pivVal[0]);\n var pvalLen = pvalues.length;\n var blazPivotValues = new Array(len);\n for (i = 0; i < len; i++) {\n blazPivotValues[i] = new Array(pvalLen);\n }\n for (var i = 0; i < len; i++) {\n if (pivVal[i] != null) {\n var values = JSON.parse(pivVal[i]);\n var valLen = values.length;\n for (var j = 0; j < valLen; j++) {\n blazPivotValues[i][j] = values[j];\n }\n }\n else {\n blazPivotValues[i] = undefined;\n //headContent[i] = undefined;\n }\n }\n var pivotValues = blazPivotValues;\n var rowPos;\n for (var rCnt = 0; rCnt < pivotValues.length; rCnt++) {\n if (pivotValues[rCnt] && pivotValues[rCnt][0] && pivotValues[rCnt][0].axis === 'row') {\n rowPos = rCnt;\n break;\n }\n }\n blazPivot.pivotValues = blazPivotValues;\n valContent = PivotUtil.frameContent(blazPivotValues, 'value', rowPos, blazPivot);\n headContent = PivotUtil.frameContent(blazPivotValues, 'header', rowPos, blazPivot);\n this.engineModule.pivotValues = blazPivotValues;\n this.engineModule.fieldList = pivotFL;\n this.engineModule.fields = pivotFields;\n this.engineModule.valueSortSettings = valueSort;\n this.engineModule.valueContent = valContent;\n this.engineModule.headerContent = headContent;\n this.engineModule.isEngineUpdated = JSON.parse(data[\"isEngineUpdated\"]);\n this.engineModule.isEmptyData = JSON.parse(data[\"isEmptyData\"]);\n this.engineModule.rowCount = JSON.parse(data[\"rowCount\"]);\n this.engineModule.columnCount = JSON.parse(data[\"columnCount\"]);\n this.engineModule.rowStartPos = JSON.parse(data[\"rowStartPos\"]);\n this.engineModule.colStartPos = JSON.parse(data[\"colStartPos\"]);\n this.engineModule.rowFirstLvl = JSON.parse(data[\"rowFirstLvl\"]);\n this.engineModule.colFirstLvl = JSON.parse(data[\"colFirstLvl\"]);\n control.allowServerDataBinding = true;\n };\n /* eslint-enable */\n PivotView.prototype.generateData = function () {\n if (!this.isStaticRefresh) {\n if (this.displayOption.view !== 'Chart') {\n this.renderEmptyGrid();\n this.showWaitingPopup();\n }\n else if (this.displayOption.view === 'Chart') {\n this.showWaitingPopup();\n clearTimeout(this.timeOutObj);\n this.timeOutObj = setTimeout(this.refreshData.bind(this), 100);\n }\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.refreshData = function () {\n var pivot = this; /* eslint-disable-line */\n if (!pivot.isStaticRefresh) {\n if (isBlazor()) {\n if (pivot.dataType === 'olap') {\n if (pivot.dataSourceSettings.dataSource instanceof DataManager) {\n pivot.allowServerDataBinding = false;\n pivot.setProperties({\n dataSourceSettings: {\n dataSource: undefined\n }\n }, true);\n pivot.allowServerDataBinding = true;\n }\n }\n }\n if (pivot.dataSourceSettings && (pivot.dataSourceSettings.dataSource || pivot.dataSourceSettings.url)) {\n if (pivot.dataSourceSettings.dataSource instanceof DataManager) {\n if (isBlazor() && pivot.enableVirtualization) {\n if (!pivot.element.querySelector('.e-spinner-pane')) {\n this.showWaitingPopup();\n }\n pivot.initEngine();\n }\n else {\n if (pivot.dataType === 'pivot' && pivot.remoteData.length > 0) {\n if (!this.element.querySelector('.e-spinner-pane')) {\n this.showWaitingPopup();\n }\n this.engineModule.data = pivot.remoteData;\n this.initEngine();\n }\n else {\n setTimeout(pivot.getData.bind(pivot), 100);\n }\n }\n }\n else if ((this.dataSourceSettings.url !== '' && this.dataType === 'olap') ||\n (pivot.dataSourceSettings.dataSource && pivot.dataSourceSettings.dataSource.length > 0 || this.engineModule.data.length > 0)) { /* eslint-disable-line */\n if (pivot.dataType === 'pivot') {\n this.hideWaitingPopup();\n pivot.engineModule.data = pivot.dataSourceSettings.dataSource;\n }\n pivot.initEngine();\n }\n else {\n if (this.dataSourceSettings.mode === 'Server') {\n this.getEngine('onRefresh');\n }\n else {\n this.hideWaitingPopup();\n }\n }\n }\n else if (isBlazor() && pivot.dataType === 'pivot' &&\n this.engineModule.data && this.engineModule.data.length > 0) {\n this.initEngine();\n }\n else {\n this.hideWaitingPopup();\n }\n }\n else {\n pivot.isStaticRefresh = false;\n pivot.hideWaitingPopup();\n }\n };\n PivotView.prototype.getValueCellInfo = function (aggregateObj) {\n var args = aggregateObj;\n this.trigger(events.aggregateCellInfo, args);\n return args;\n };\n /**\n * De-Register the internal events.\n * @param {Object} args - args.\n * @returns {void}\n * @hidden\n */\n PivotView.prototype.bindTriggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n PivotView.prototype.getData = function () {\n if (isBlazor()) {\n this.dataSourceSettings.dataSource.\n executeQuery(new Query().requiresCount()).then(this.executeQuery.bind(this));\n }\n else {\n if (this.dataSourceSettings.dataSource.defaultQuery) {\n this.dataSourceSettings.dataSource.executeQuery(this.dataSourceSettings.dataSource.defaultQuery).then(this.executeQuery.bind(this));\n }\n else {\n this.dataSourceSettings.dataSource.executeQuery(new Query()).then(this.executeQuery.bind(this));\n }\n }\n };\n PivotView.prototype.executeQuery = function (e) {\n if (!this.element.querySelector('.e-spinner-pane')) {\n this.showWaitingPopup();\n }\n var pivot = this; /* eslint-disable-line */\n pivot.engineModule.data = e.result;\n if (!isNullOrUndefined(pivot.engineModule.data) && pivot.engineModule.data.length > 0) {\n pivot.initEngine();\n }\n else {\n this.hideWaitingPopup();\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotView.prototype.applyFormatting = function (pivotValues) {\n if (pivotValues) {\n var colIndex = [];\n for (var len = pivotValues.length, i = 0; i < len; i++) {\n if (pivotValues[i] !== undefined && pivotValues[i][0] === undefined) {\n colIndex.push(i);\n }\n }\n for (var i = 0; i < pivotValues.length; i++) {\n for (var j = 1; (pivotValues[i] && j < pivotValues[i].length); j++) {\n if (pivotValues[i][j].axis === 'value' && pivotValues[i][j].formattedText !== '') {\n pivotValues[i][j].style = undefined;\n pivotValues[i][j].cssClass = undefined;\n var format_1 = this.dataSourceSettings.conditionalFormatSettings;\n for (var k = 0; k < format_1.length; k++) {\n if ((format_1[k].applyGrandTotals === true || isNullOrUndefined(format_1[k].applyGrandTotals)) ? true :\n pivotValues[i][j].rowHeaders !== '' &&\n pivotValues[i][j].columnHeaders !== '') {\n if (this.checkCondition(pivotValues[i][j].value, format_1[k].conditions, format_1[k].value1, format_1[k].value2)) {\n // let ilen: number =\n // (this.dataSourceSettings.valueAxis === 'row' ? i : this.engineModule.headerContent.length - 1);\n // let jlen: number = (this.dataSourceSettings.valueAxis === 'row' ? 0 : j);\n if ((!format_1[k].measure || pivotValues[i][j].actualText === format_1[k].measure) &&\n (format_1[k].measure === undefined || format_1[k].measure !== '') && (format_1[k].label === undefined ||\n format_1[k].label !== '') && ((!format_1[k].label ||\n (pivotValues[i][0].valueSort.levelName\n .indexOf(format_1[k].label)) > -1) || (pivotValues[i][j]\n .rowHeaders.indexOf(format_1[k].label) > -1) ||\n (pivotValues[i][j].columnHeaders\n .indexOf(format_1[k].label) > -1))) {\n if (format_1[k].style && format_1[k].style.backgroundColor) {\n format_1[k].style.backgroundColor = this.conditionalFormattingModule\n .isHex(format_1[k].style.backgroundColor.substr(1)) ? format_1[k].style.backgroundColor :\n this.conditionalFormattingModule.colourNameToHex(format_1[k].style.backgroundColor);\n }\n if (format_1[k].style && format_1[k].style.color) {\n format_1[k].style.color = this.conditionalFormattingModule\n .isHex(format_1[k].style.color.substr(1)) ? format_1[k].style.color :\n this.conditionalFormattingModule.colourNameToHex(format_1[k].style.color);\n }\n pivotValues[i][j].style = format_1[k].style;\n pivotValues[i][j].cssClass = 'format' + this.element.id + k;\n }\n }\n }\n }\n }\n }\n }\n var format = this.dataSourceSettings.conditionalFormatSettings;\n for (var k = 0; k < format.length; k++) {\n var sheet = (this.createStyleSheet.bind(this))();\n var str = 'color: ' + format[k].style.color + '!important;background-color: ' + format[k].style.backgroundColor +\n '!important;font-size: ' + format[k].style.fontSize + '!important;font-family: ' + format[k].style.fontFamily +\n ' !important;';\n sheet.insertRule('.format' + this.element.id + k + '{' + str + '}', 0);\n }\n }\n };\n PivotView.prototype.createStyleSheet = function () {\n var style = document.createElement('style');\n style.appendChild(document.createTextNode(''));\n document.head.appendChild(style);\n return style.sheet;\n };\n PivotView.prototype.applyHyperlinkSettings = function () {\n if (this.pivotValues) {\n var pivotValues = this.pivotValues;\n var colIndex = [];\n for (var len = pivotValues.length, i = 0; i < len; i++) {\n if (!isNullOrUndefined(pivotValues[i]) && pivotValues[i][0] === undefined) {\n colIndex.push(i);\n }\n }\n if (this.hyperlinkSettings.conditionalSettings.length > 0) {\n for (var i = 0; i < pivotValues.length; i++) {\n for (var j = 1; (pivotValues[i] && j < pivotValues[i].length); j++) {\n if (pivotValues[i][j].axis === 'value') {\n pivotValues[i][j].enableHyperlink = false;\n var collection = this.hyperlinkSettings.conditionalSettings;\n for (var k = 0; k < collection.length; k++) {\n if (this.checkCondition(pivotValues[i][j].value, collection[k].conditions, collection[k].value1, collection[k].value2)) {\n var ilen = (this.dataSourceSettings.valueAxis === 'row' ?\n i : (this.dataType === 'pivot' ?\n this.engineModule.headerContent.length - 1 : this.olapEngineModule.headerContent.length - 1));\n var jlen = (this.dataSourceSettings.valueAxis === 'row' ? 0 : j);\n if ((!collection[k].measure || this.dataSourceSettings.values.length === 1 ||\n (pivotValues[ilen][jlen].valueSort &&\n (pivotValues[ilen][jlen].actualText === collection[k].measure))) &&\n (!collection[k].label || ((pivotValues[colIndex[collection[k].label.split('.').length - 1]] &&\n pivotValues[colIndex[collection[k].label.split('.').length - 1]][j] &&\n pivotValues[colIndex[collection[k].label.split('.').length - 1]][j].valueSort &&\n pivotValues[colIndex[collection[k].label.split('.').length - 1]][j].\n valueSort[collection[k].label]) || (pivotValues[i][0].\n valueSort.levelName.indexOf(collection[k].label) > -1)))) {\n pivotValues[i][j].enableHyperlink = true;\n }\n }\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(this.hyperlinkSettings.headerText)) {\n var headerDelimiter = this.dataSourceSettings.valueSortSettings.headerDelimiter ? this.dataSourceSettings.valueSortSettings.headerDelimiter : '.';\n for (var i = 0; i < pivotValues.length; i++) {\n for (var j = 1; (pivotValues[i] && j < pivotValues[i].length); j++) {\n if (pivotValues[i][j].axis === 'value') {\n var label = this.hyperlinkSettings.headerText;\n if (pivotValues[i][0].valueSort.levelName.indexOf(label) > -1) {\n pivotValues[i][0].enableHyperlink = true;\n pivotValues[i][j].enableHyperlink = true;\n }\n else {\n var isApplyHyperLink = false;\n for (var k = 0; k < colIndex.length; k++) {\n label = headerDelimiter + this.hyperlinkSettings.headerText;\n if ((headerDelimiter + pivotValues[colIndex[k]][j].valueSort.levelName).indexOf(label) > -1) {\n pivotValues[colIndex[k]][j].enableHyperlink = true;\n isApplyHyperLink = true;\n }\n }\n pivotValues[i][j].enableHyperlink = isApplyHyperLink;\n }\n }\n }\n }\n }\n else {\n return;\n }\n }\n };\n PivotView.prototype.checkCondition = function (cellValue, conditions, conditionalValue1, conditionalValue2) {\n switch (conditions) {\n case 'LessThan':\n return cellValue < conditionalValue1;\n case 'LessThanOrEqualTo':\n return cellValue <= conditionalValue1;\n case 'GreaterThan':\n return cellValue > conditionalValue1;\n case 'GreaterThanOrEqualTo':\n return cellValue >= conditionalValue1;\n case 'Equals':\n return cellValue === conditionalValue1;\n case 'NotEquals':\n return cellValue !== conditionalValue1;\n case 'Between':\n return (conditionalValue1 < conditionalValue2 && cellValue >= conditionalValue1 && cellValue <= conditionalValue2) ||\n (conditionalValue1 > conditionalValue2 && cellValue <= conditionalValue1 && cellValue >= conditionalValue2);\n case 'NotBetween':\n return !((conditionalValue1 < conditionalValue2 && cellValue >= conditionalValue1 && cellValue <= conditionalValue2) ||\n (conditionalValue1 > conditionalValue2 && cellValue <= conditionalValue1 && cellValue >= conditionalValue2));\n default:\n return false;\n }\n };\n /** @hidden */\n /* eslint-disable */\n PivotView.prototype.updateGroupingReport = function (newGroupSettings, updateGroupType) {\n if (!this.clonedDataSet && !this.clonedReport) {\n var dataSet = this.engineModule.data;\n this.clonedDataSet = PivotUtil.getClonedData(dataSet);\n if (isBlazor()) {\n this.clonedReport = PivotUtil.getClonedDataSourceSettings(this.dataSourceSettings);\n }\n else {\n var dataSourceSettings = JSON.parse(this.getPersistData()).dataSourceSettings;\n dataSourceSettings.dataSource = [];\n this.clonedReport = this.clonedReport ? this.clonedReport : dataSourceSettings;\n }\n }\n var dateGroup = /_date_group_years|_date_group_quarters|_date_group_quarterYear|_date_group_months|_date_group_days|_date_group_hours|_date_group_minutes|_date_group_seconds/g;\n var data = PivotUtil.getClonedData(this.clonedDataSet);\n var dataSource = this.dataSourceSettings;\n var clonedReport = this.clonedReport.properties ?\n this.clonedReport.properties : this.clonedReport;\n var axisFields = [dataSource.rows, dataSource.columns, dataSource.values, dataSource.filters];\n var fieldSettings = [dataSource.filterSettings, dataSource.sortSettings, dataSource.formatSettings, dataSource.drilledMembers];\n var clonedAxisFields = clonedReport.rows;\n clonedAxisFields = clonedAxisFields.concat(clonedReport.columns, clonedReport.values, clonedReport.filters);\n if (newGroupSettings.length === 0 || newGroupSettings.length > 0) {\n this.engineModule.groupingFields = {};\n if (!isBlazor()) {\n this.setProperties({ dataSourceSettings: { dataSource: data, groupSettings: newGroupSettings.length > 0 ? dataSource.groupSettings : [] } }, true);\n }\n var isDateGroupUpdated = updateGroupType === 'Date';\n var fields = [];\n for (var i = 0, cnt = axisFields.length; i < cnt; i++) {\n for (var j = 0, len = axisFields[i].length; j < len; j++) {\n var fieldName = axisFields[i][j].name;\n if (fields.indexOf(fieldName) === -1) {\n fields.push(fieldName);\n }\n var index = fields.indexOf(fieldName);\n var group = PivotUtil.getFieldByName(fieldName, dataSource.groupSettings);\n if ((!isNullOrUndefined(fieldName.match(dateGroup)) &&\n isDateGroupUpdated) || (fieldName.indexOf('_custom_group') !== -1 &&\n !PivotUtil.getFieldByName(fieldName.replace('_custom_group', ''), dataSource.groupSettings))) {\n axisFields[i].splice(j, 1);\n fields.splice(index, 1);\n j--;\n len--;\n }\n else {\n var fieldObj = PivotUtil.getFieldByName(fieldName, clonedAxisFields);\n if (fieldObj) {\n axisFields[i].splice(j, 1, fieldObj);\n }\n }\n }\n }\n for (var _i = 0, fields_2 = fields; _i < fields_2.length; _i++) {\n var fieldName = fields_2[_i];\n var filterObj = PivotUtil.getFilterItemByName(fieldName, clonedReport.filterSettings);\n var sortObj = PivotUtil.getFieldByName(fieldName, clonedReport.sortSettings);\n var formatObj = PivotUtil.getFieldByName(fieldName, clonedReport.formatSettings);\n var drillObj = PivotUtil.getFieldByName(fieldName, clonedReport.drilledMembers);\n var settingsObj = [filterObj, sortObj, formatObj, drillObj];\n for (var i = 0, cnt = fieldSettings.length; i < cnt; i++) {\n var isExists = false;\n for (var j = 0, len = fieldSettings[i].length; j < len; j++) {\n var name_1 = fieldSettings[i][j].name;\n if ((!isNullOrUndefined(name_1.match(dateGroup)) && isDateGroupUpdated) || (name_1.indexOf('_custom_group') !== -1 &&\n !PivotUtil.getFieldByName(name_1.replace('_custom_group', ''), dataSource.groupSettings))) {\n fieldSettings[i].splice(j, 1);\n j--;\n len--;\n }\n else if (fieldName === fieldSettings[i][j].name) {\n isExists = true;\n if (settingsObj[i]) {\n fieldSettings[i].splice(j, 1, settingsObj[i]);\n }\n else {\n fieldSettings[i].splice(j, 1);\n j--;\n len--;\n }\n break;\n }\n }\n if (!isExists && i === 0 && filterObj) {\n fieldSettings[i].push(filterObj);\n }\n if (!isExists && i === 1 && sortObj) {\n fieldSettings[i].push(sortObj);\n }\n if (!isExists && i === 2 && formatObj) {\n fieldSettings[i].push(formatObj);\n }\n if (!isExists && i === 3 && drillObj) {\n fieldSettings[i].push(drillObj);\n }\n }\n }\n /* eslint-disable */\n if (isBlazor()) {\n this.engineModule.data = data;\n this.allowServerDataBinding = false;\n this.setProperties({\n dataSourceSettings: {\n rows: axisFields[0], columns: axisFields[1], values: axisFields[2], filters: axisFields[3],\n filterSettings: fieldSettings[0], sortSettings: fieldSettings[1], formatSettings: fieldSettings[2],\n drilledMembers: fieldSettings[3], groupSettings: newGroupSettings.length > 0 ? dataSource.groupSettings : []\n }\n }, true);\n this.allowServerDataBinding = true;\n }\n }\n };\n PivotView.prototype.removeButtonFocus = function (e) {\n if (document.querySelectorAll('.e-btn-focused')) {\n removeClass(document.querySelectorAll('.e-btn-focused'), 'e-btn-focused');\n }\n };\n /* eslint-enable */\n /* eslint-enable */\n PivotView.prototype.wireEvents = function () {\n if (this.displayOption.view !== 'Chart') {\n EventHandler.add(this.element, this.isAdaptive ? 'touchend' : 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.element.querySelector('.' + cls.GRID_HEADER), 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.element, this.isAdaptive ? 'touchend' : 'contextmenu', this.mouseRclickHandler, this);\n }\n EventHandler.add(document, this.isAdaptive ? 'touchend' : 'click', this.removeButtonFocus, this);\n window.addEventListener('resize', this.onWindowResize.bind(this), true);\n };\n PivotView.prototype.unwireEvents = function () {\n if (this.displayOption.view !== 'Chart') {\n EventHandler.remove(this.element, this.isAdaptive ? 'touchend' : 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n if (this.element.querySelector('.' + cls.GRID_HEADER)) {\n EventHandler.remove(this.element.querySelector('.' + cls.GRID_HEADER), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(this.element, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.element, this.isAdaptive ? 'touchend' : 'contextmenu', this.mouseRclickHandler);\n }\n EventHandler.remove(document, this.isAdaptive ? 'touchend' : 'click', this.removeButtonFocus);\n window.removeEventListener('resize', this.onWindowResize.bind(this), true);\n };\n /**\n * To destroy the PivotView elements.\n * @returns {void}\n */\n PivotView.prototype.destroy = function () {\n this.removeInternalEvents();\n if (this.engineModule) {\n this.engineModule.fieldList = {};\n this.engineModule.rMembers = null;\n this.engineModule.cMembers = null;\n this.engineModule.valueMatrix = null;\n this.engineModule.indexMatrix = null;\n this.engineModule = {};\n }\n if (this.olapEngineModule) {\n this.olapEngineModule.fieldList = {};\n this.olapEngineModule = {};\n }\n if (this.showGroupingBar && this.groupingBarModule) {\n this.groupingBarModule.destroy();\n }\n if (this.allowGrouping && this.groupingModule) {\n this.groupingModule.destroy();\n }\n if (this.showToolbar && this.toolbarModule) {\n this.toolbarModule.destroy();\n }\n if (this.enableVirtualization && this.virtualscrollModule) {\n this.virtualscrollModule.destroy();\n }\n if (this.allowConditionalFormatting && this.conditionalFormattingModule) {\n this.conditionalFormattingModule.destroy();\n }\n if (this.allowNumberFormatting && this.numberFormattingModule) {\n this.numberFormattingModule.destroy();\n }\n if (this.contextMenuModule) {\n this.contextMenuModule.destroy();\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n if (this.tooltip && !this.tooltip.isDestroyed) {\n this.tooltip.destroy();\n }\n if (this.calculatedFieldModule) {\n this.calculatedFieldModule.destroy();\n }\n if (this.chart && !this.chart.isDestroyed) {\n this.chart.destroy();\n if (this.chart.isDestroyed && select('#' + this.element.id + '_chart', this.element)) {\n remove(select('#' + this.element.id + '_chart', this.element));\n }\n }\n if (this.grid && !this.grid.isDestroyed) {\n this.grid.destroy();\n if (this.grid.isDestroyed && select('#' + this.element.id + '_grid', this.element)) {\n remove(select('#' + this.element.id + '_grid', this.element));\n }\n }\n if (this.commonModule) {\n this.commonModule.destroy();\n }\n if (this.chartModule) {\n this.chartModule.destroy();\n }\n if (this.pivotButtonModule && !this.pivotButtonModule.isDestroyed) {\n this.pivotButtonModule.destroy();\n }\n if (this.pivotFieldListModule && !this.pivotFieldListModule.isDestroyed) {\n this.pivotFieldListModule.destroy();\n }\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n if (this.groupingBarModule) {\n this.groupingBarModule = null;\n }\n if (this.groupingModule) {\n this.groupingModule = null;\n }\n if (this.pivotFieldListModule) {\n this.pivotFieldListModule = null;\n }\n if (this.calculatedFieldModule) {\n this.calculatedFieldModule = null;\n }\n if (this.conditionalFormattingModule) {\n this.conditionalFormattingModule = null;\n }\n if (this.numberFormattingModule) {\n this.numberFormattingModule = null;\n }\n if (this.toolbarModule) {\n this.toolbarModule = null;\n }\n if (this.virtualscrollModule) {\n this.virtualscrollModule = null;\n }\n if (this.contextMenuModule) {\n this.contextMenuModule = null;\n }\n if (this.keyboardModule) {\n this.keyboardModule = null;\n }\n if (this.tooltip) {\n this.tooltip = null;\n }\n if (this.chart) {\n this.chart = null;\n }\n if (this.grid) {\n this.grid = null;\n }\n if (this.commonModule) {\n this.commonModule = null;\n }\n if (this.chartModule) {\n this.chartModule = null;\n }\n if (this.pivotButtonModule) {\n this.pivotButtonModule = null;\n }\n if (this.renderModule) {\n this.renderModule = null;\n }\n if (this.axisFieldModule) {\n this.axisFieldModule = null;\n }\n if (this.pdfExportModule) {\n this.pdfExportModule = null;\n }\n if (this.excelExportModule) {\n this.excelExportModule = null;\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.element.innerHTML = '';\n }\n else {\n if (this.element.querySelector('.e-spinner-pane')) {\n remove(this.element.querySelector('.e-spinner-pane'));\n }\n if (this.showFieldList && select('#' + this.element.id + '_PivotFieldList', document)) {\n remove(select('#' + this.element.id + '_PivotFieldList', document));\n }\n }\n removeClass([this.element], cls.ROOT);\n removeClass([this.element], cls.RTL);\n removeClass([this.element], cls.DEVICE);\n };\n /**\n * Method to open the number formatting dialog to set the format dynamically.\n * @returns {void}\n */\n PivotView.prototype.showNumberFormattingDialog = function () {\n if (this.allowNumberFormatting) {\n this.numberFormattingModule.showNumberFormattingDialog();\n }\n };\n var PivotView_1;\n __decorate([\n Property('USD')\n ], PivotView.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"showFieldList\", void 0);\n __decorate([\n Complex({}, GridSettings)\n ], PivotView.prototype, \"gridSettings\", void 0);\n __decorate([\n Complex({}, ChartSettings)\n ], PivotView.prototype, \"chartSettings\", void 0);\n __decorate([\n Complex({}, GroupingBarSettings)\n ], PivotView.prototype, \"groupingBarSettings\", void 0);\n __decorate([\n Complex({}, HyperlinkSettings)\n ], PivotView.prototype, \"hyperlinkSettings\", void 0);\n __decorate([\n Complex({}, DataSourceSettings)\n ], PivotView.prototype, \"dataSourceSettings\", void 0);\n __decorate([\n Complex({}, CellEditSettings)\n ], PivotView.prototype, \"editSettings\", void 0);\n __decorate([\n Complex({}, DisplayOption)\n ], PivotView.prototype, \"displayOption\", void 0);\n __decorate([\n Property()\n ], PivotView.prototype, \"pivotValues\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"showGroupingBar\", void 0);\n __decorate([\n Property(true)\n ], PivotView.prototype, \"showTooltip\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"showToolbar\", void 0);\n __decorate([\n Property([])\n ], PivotView.prototype, \"toolbar\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"showValuesButton\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"allowCalculatedField\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"enableValueSorting\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"allowConditionalFormatting\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"allowNumberFormatting\", void 0);\n __decorate([\n Property('auto')\n ], PivotView.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], PivotView.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"allowDrillThrough\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"allowDeferLayoutUpdate\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"allowDataCompression\", void 0);\n __decorate([\n Property(1000)\n ], PivotView.prototype, \"maxNodeLimitInMemberEditor\", void 0);\n __decorate([\n Property(10000)\n ], PivotView.prototype, \"maxRowsInDrillThrough\", void 0);\n __decorate([\n Property(true)\n ], PivotView.prototype, \"loadOnDemandInMemberEditor\", void 0);\n __decorate([\n Property(true)\n ], PivotView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property()\n ], PivotView.prototype, \"cellTemplate\", void 0);\n __decorate([\n Property()\n ], PivotView.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], PivotView.prototype, \"tooltipTemplate\", void 0);\n __decorate([\n Property()\n ], PivotView.prototype, \"spinnerTemplate\", void 0);\n __decorate([\n Property(false)\n ], PivotView.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(true)\n ], PivotView.prototype, \"exportAllPages\", void 0);\n __decorate([\n Property(['Sum', 'Count', 'DistinctCount', 'Product', 'Min', 'Max', 'Avg', 'Median', 'Index', 'PopulationVar', 'SampleVar', 'PopulationStDev', 'SampleStDev', 'RunningTotals', 'PercentageOfGrandTotal', 'PercentageOfColumnTotal', 'PercentageOfRowTotal', 'PercentageOfParentColumnTotal', 'PercentageOfParentRowTotal', 'DifferenceFrom', 'PercentageOfDifferenceFrom', 'PercentageOfParentTotal'])\n ], PivotView.prototype, \"aggregateTypes\", void 0);\n __decorate([\n Property(['Column', 'Bar', 'Line', 'Area', 'Scatter', 'Polar', 'StackingColumn', 'StackingArea', 'StackingBar', 'StepLine', 'StepArea', 'SplineArea', 'Spline', 'StackingColumn100', 'StackingBar100', 'StackingArea100', 'Bubble', 'Pareto', 'Radar', 'Pie', 'Doughnut', 'Funnel', 'Pyramid'])\n ], PivotView.prototype, \"chartTypes\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"beforeColumnsRender\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"chartTooltipRender\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"chartLoaded\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"chartLoad\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"chartResized\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"chartAxisLabelRender\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"multiLevelLabelClick\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"chartPointClick\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"onPdfCellRender\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"saveReport\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"fetchReport\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"loadReport\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"renameReport\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"removeReport\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"newReport\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"toolbarRender\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"enginePopulating\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"enginePopulated\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"onFieldDropped\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"fieldDrop\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"fieldDragStart\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"beforeExport\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"conditionalFormatting\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"memberFiltering\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"cellClick\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"drillThrough\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"editCompleted\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"beginDrillThrough\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"hyperlinkCellClick\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"drill\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"chartSeriesCreated\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"aggregateCellInfo\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"fieldListRefreshed\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"memberEditorOpen\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"calculatedFieldCreate\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"numberFormatting\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"aggregateMenuOpen\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"fieldRemove\", void 0);\n __decorate([\n Event()\n ], PivotView.prototype, \"beforeServiceInvoke\", void 0);\n PivotView = PivotView_1 = __decorate([\n NotifyPropertyChanges\n ], PivotView);\n return PivotView;\n}(Component));\nexport { PivotView };\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","class Captcha {\n constructor(font, align, baseline, width, height, bgColor, color, length) {\n this.font = font;\n this.align = align;\n this.baseline = baseline;\n this.width = width;\n this.height = height;\n this.color = color;\n this.bgColor = bgColor;\n this.length = length;\n this.createImage = () => {\n const captcha = document.createElement('canvas');\n const newImage = document.createElement('image');\n\n const getRandomInt = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min)) + min;\n };\n\n const getCharacter = () => {\n const arr = [];\n arr.push(getRandomInt(97, 122));\n arr.push(getRandomInt(65, 90));\n arr.push(getRandomInt(48, 57));\n const value = arr[getRandomInt(0, arr.length)];\n return String.fromCharCode(value);\n };\n\n const getWord = () => {\n let newWord = ``;\n let count = 0;\n while (count < this.length) {\n newWord += getCharacter();\n count++;\n }\n return newWord;\n };\n\n const newWord = getWord();\n const context = captcha.getContext('2d');\n context.canvas.width = this.width;\n context.canvas.height = this.height;\n context.font = this.font;\n context.textAlign = this.align;\n context.textBaseline = this.baseline;\n context.fillStyle = this.bgColor;\n context.fillRect(0, 0, this.width, this.height);\n context.fillStyle = this.color;\n context.fillText(newWord, this.width / 2, this.height / 2);\n newImage.setAttribute('src', context.canvas.toDataURL());\n newImage.setAttribute('data-key', newWord);\n return newImage.outerHTML;\n };\n }\n}\n\nexport default Captcha;\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[uniqueID].timeOut = 0;\n globalObject[uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if ((!isNullOrUndefined(container.querySelector('svg.e-spin-material')))\n && (!isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle')))) {\n var svg = container.querySelector('svg.e-spin-material');\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n// eslint-disable-next-line\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[id].isAnimate = !isHide;\n switch (globalTimeOut[id].type) {\n case 'Material':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n}\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n }\n this.clearProperty();\n this.popObj = null;\n this.tbarAlign = null;\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'aria-haspopup', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.element.setAttribute('tabIndex', '0');\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n if (this.tbarAlign) {\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst) || (value === 'next' && popEle.lastElementChild === clst)) {\n return;\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n this.element.removeAttribute('tabindex');\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n rootEle.setAttribute('tabindex', !value ? '0' : '-1');\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', !value ? '0' : '-1');\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el);\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false', 'aria-haspopup': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[i], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[i], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[i].align.toLowerCase());\n if (innerPos) {\n if (!(items[i].showAlwaysInPopup && items[i].overflow !== 'Show')) {\n this.tbarAlgEle[(items[i].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('tabIndex', '0');\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('role', 'list');\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[i].offsetLeft < 30 && eleItem[i].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[i].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[i].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[index]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[i];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : sepItem.offsetHeight;\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n var popupEle = document.getElementById(element.id + '_popup');\n if (popupEle && popupEle.classList.contains(CLS_POPUPCLASS)) {\n ele = popupEle;\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle_1 = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle_1;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n popup.appendTo(ele);\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n this.element.setAttribute('aria-haspopup', 'true');\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n isOpen ? this.add(this.element, CLS_EXTENDEDPOPOPEN) : this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n };\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[i];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[i]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[i] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[i], [CLS_POPPRI]) && popPriority) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset = (inEle[i].offsetTop + inEle[i].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset = (inEle[i].offsetLeft + inEle[i].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[i].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n if (itemCount === itemPopCount) {\n var sepEle = inEle[i];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[i].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[i], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'list');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n var sepDisplay = 'none';\n eleSep.style.display = 'inherit';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n ele.setAttribute('aria-haspopup', 'false');\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[index].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n this.enableRtl ? innerItem[2].style.top = popWid : innerItem[2].style.bottom = popWid;\n }\n else {\n this.enableRtl ? innerItem[2].style.left = popWid : innerItem[2].style.right = popWid;\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n this.enableRtl ? innerItem[1].style.marginBottom = mrgn : innerItem[1].style.marginTop = mrgn;\n }\n else {\n this.enableRtl ? innerItem[1].style.marginRight = mrgn : innerItem[1].style.marginLeft = mrgn;\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n ele.setAttribute('aria-disabled', 'false');\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[i];\n keyVal === 'class' ? this.add(element, attr[keyVal]) : element.setAttribute(keyVal, attr[keyVal]);\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'false');\n }\n else {\n ele.classList.add(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'true');\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[a];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[a] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n isEnable ? removeClass(elements, CLS_DISABLE) : addClass(elements, CLS_DISABLE);\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[index]) {\n return this.tbarEle[index];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.insertBefore(innerEle, ele.children[index]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[index]);\n }\n this.items.splice(index, 0, item);\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[index] && innerItems[index]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[index]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].indexOf(this.tbarEle[eleIdx]);\n this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].splice(indexAgn, 1);\n }\n if (this.isReact) {\n this.clearTemplate();\n }\n detach(innerItems[index]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n item.id ? (ele.id = item.id) : (ele.id = getUniqueID('tbr-ipt'));\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n item.id ? (dom.id = item.id) : dom.id = getUniqueID('e-tbr-btn');\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.setAttribute('aria-disabled', 'false');\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', '-1');\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', '-1');\n }\n this.activeEle = curEle;\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', '0');\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array) && !this.isServerRendered) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var newProperty = Object(newProp.items[index])[property];\n if (typeof newProperty !== 'function') {\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[index].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact) {\n this.clearTemplate();\n }\n detach(itemCol[index]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[index]], index);\n this.items.splice(index, 1);\n if (this.items[index].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.add(tEle, CLS_RTL) : this.remove(tEle, CLS_RTL);\n if (!isNOU(this.scrollModule)) {\n newProp.enableRtl ? this.add(this.scrollModule.element, CLS_RTL) : this.remove(this.scrollModule.element, CLS_RTL);\n }\n if (!isNOU(this.popObj)) {\n newProp.enableRtl ? this.add(this.popObj.element, CLS_RTL) : this.remove(this.popObj.element, CLS_RTL);\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\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.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var initIndex;\n var ele;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[eleIndex]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[eleIndex];\n }\n if (ele) {\n value ? ele.classList.add(CLS_HIDDEN) : ele.classList.remove(CLS_HIDDEN);\n if (value && isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex'))) {\n ele.firstElementChild.setAttribute('tabindex', '-1');\n var innerItems_2 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n eleIndex = innerItems_2.indexOf(ele);\n }\n var nextEle = innerItems_2[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n nextEle.firstElementChild.removeAttribute('tabindex');\n break;\n }\n nextEle = innerItems_2[++eleIndex];\n }\n }\n }\n else if (isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n initIndex = 0;\n var setFlag = false;\n var removeFlag = false;\n var initELe = innerItems[initIndex];\n while (initELe) {\n if (!initELe.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(initELe.firstElementChild.getAttribute('tabindex'))) {\n initELe.firstElementChild.setAttribute('tabindex', '-1');\n setFlag = true;\n }\n else {\n if (setFlag && removeFlag) {\n break;\n }\n var skipEle = this.eleContains(initELe);\n if (!skipEle) {\n initELe.firstElementChild.removeAttribute('tabindex');\n removeFlag = true;\n }\n initELe = innerItems[++initIndex];\n }\n }\n else {\n initELe = innerItems[++initIndex];\n }\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.' + literals.movableContent)) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === literals.leftRight && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[i][primaryKey] === currentRecords[j][primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getCurrentBatchRecordChanges()[index];\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (index === this.selectedRowIndexes[0]) : false);\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === literals.leftRight && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === literals.leftRight && frRow) {\n mObj[frozenRightRow] = frRow;\n mObj[previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[i]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n }\n var isHybrid = 'isHybrid';\n this.activeTarget();\n var args;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(rowIndexes.slice(-1)[0]);\n var selectRowFn = function (index) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === literals.leftRight ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIdx = rowIndexes_1[_i];\n selectRowFn(rowIdx);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n args = {\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: _this.prevRowIndex,\n row: selectedRows, prevRow: gObj.getRows()[_this.prevRowIndex],\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n }\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n for (var _i = 0, rowIndexes_2 = rowIndexes; _i < rowIndexes_2.length; _i++) {\n var rowIndex = rowIndexes_2[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n }\n else {\n var isHybrid = 'isHybrid';\n this.activeTarget();\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n row: selectedRow, prevRow: gObj.getRows()[this.prevRowIndex],\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if (chkState) {\n this.selectedRowState[pKey_1] = chkState;\n if (!this.persistSelectedData.some(function (data) { return data[_this.primaryKey] === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey) {\n var _this = this;\n delete (this.selectedRowState[pKey]);\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return data[_this.primaryKey] === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[i]]\n : this.parent.getDataRows()[this.selectedRowIndexes[i]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[i]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n mRow_1.push(gObj.getMovableRows()[this.selectedRowIndexes[i]]);\n if (gObj.getFrozenMode() === literals.leftRight) {\n fRightRow_1.push(gObj.getFrozenRightRows()[this.selectedRowIndexes[i]]);\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[i], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI || isBlazor()) {\n element[j].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[j], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[j], false);\n }\n _this.updateCheckBoxes(element[j]);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[i]);\n if (movableRow) {\n if (!_this.disableUI || isBlazor()) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[i]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked)) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var data_2 = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[rowInString] = row;\n rowDeselectObj[target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[rowidx] = rowIndex[0];\n rowDeselectObj[rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[data_2] = rowDeselectObj[data_2][0];\n rowDeselectObj[rowInString] = rowDeselectObj[rowInString][0];\n rowDeselectObj[foreignKey] = rowDeselectObj[foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[rowidxex] = rowIndex;\n }\n }\n }\n else {\n var rowIndex_2 = 'rowIndex';\n var data_3 = 'data';\n rowDeselectObj[rowIndex_2] = rowDeselectObj[rowIndex_2][rowDeselectObj[rowIndex_2].length - 1];\n rowDeselectObj[data_3] = rowDeselectObj[data_3][rowDeselectObj[data_3].length - 1];\n }\n this.parent.trigger(type, (!isBlazor() || this.parent.isJsComponent) && this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var currentCell = 'currentCell';\n args[currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[currentCell] = cellSelectingArgs[currentCell] ? cellSelectingArgs[currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = void 0;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = _this.prevECIdxs;\n }\n else {\n args = { data: selectedData, cellIndex: cellIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n if (!isBlazor()) {\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = _this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: edIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n }\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[i].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[i].cellIndexes[j] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[i].rowIndex, cellIndex: rowCellIndexes[i].cellIndexes[j] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var isHybrid = 'isHybrid';\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === literals.frozenLeft ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject() : []\n ]);\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === literals.frozenRight ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n foreignKeyData.push(rowObj.cells[idx].foreignKeyData);\n var args = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest, isCtrlPressed: this.isMultiCtrlRequest\n };\n }\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[index].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: cellIndexes[0], selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[m].getAttribute(literals.ariaColIndex), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[rowIndex].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[rowIndex].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.ariaColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[index].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[index].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[i].rowIndex]);\n var rowObj = this.getRowObj(rowCell[i].rowIndex);\n for (var j = 0, cLen = rowCell[i].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[i].cellIndexes[j]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[i].cellIndexes[j]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[i].classList.remove('e-cellselectionbackground');\n selectedCells[i].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[i].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.ariaRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.ariaColIndex), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseInt(args.value, 10));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[rowIndex].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[rowIndex].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[rowIndex].querySelectorAll(cls)));\n }\n }\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.ariaRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.ariaColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.ariaRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.ariaColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.ariaRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.ariaColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.ariaColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.ariaRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.ariaRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell') {\n var target = e.target;\n var rowIndex = parseInt(target.parentElement.getAttribute(literals.ariaRowIndex), 10);\n var cellIndex = parseInt(target.getAttribute(literals.ariaColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.ariaColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.contentModule.getMovableContent().appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getFrozenRightHeader().appendChild(this.autofill);\n }\n else {\n this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.ariaRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.ariaColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.ariaRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.ariaColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.ariaRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.ariaColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n delete (this.selectedRowState[e.records[i][this.primaryKey]]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n this.initPerisistSelection();\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === literals.leftRight;\n if (!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n for (var i = 0; i < res.length; i++) {\n if (isNullOrUndefined(this.selectedRowState[res[i][this.primaryKey]]) && res[i][this.chkField]) {\n this.selectedRowState[res[i][this.primaryKey]] = res[i][this.chkField];\n }\n }\n this.persistSelectedData = res;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!this.parent.getDataModule().isRemote() && !isBlazor()) {\n if (state) {\n if (this.parent.groupSettings.columns.length) {\n for (var _i = 0, _a = this.getData().records; _i < _a.length; _i++) {\n var data = _a[_i];\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n else {\n for (var _b = 0, _c = this.getData(); _b < _c.length; _b++) {\n var data = _c[_b];\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (rows !== null && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[j]);\n var pKey = rowObj ? rowObj.data ? rowObj.data[this.primaryKey] : null : null;\n if (pKey === null) {\n return;\n }\n var checkState = void 0;\n var chkBox = rows[j].querySelector('.e-checkselect');\n if (this.selectedRowState[pKey] || (this.parent.checkAllRows === 'Check' &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[j].getAttribute(literals.ariaRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[j], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if (this.parent.isCheckBoxSelection && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add' && this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i][this.primaryKey])) {\n this.updatePersistDelete(data[i][this.primaryKey]);\n }\n }\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n this.refreshPersistSelection();\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[i].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[i], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = this.parent.getDataModule().isRemote() ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = (!this.parent.getDataModule().isRemote() && !isBlazor()) ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return data[_this.primaryKey] in _this.selectedRowState;\n });\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.ariaRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.ariaColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = void 0;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if (checkToSelectAll || checkedLen === this.totalRecordsCount && this.totalRecordsCount\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)\n && (this.getData().length && checkedLen === this.getData().length))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (!this.selectedRowIndexes.length ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n this.isMultiShiftRequest = e.shiftKey;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if ((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.ariaRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.ariaColIndex), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.ariaRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute(literals.ariaColIndex));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType()) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.ariaColIndex), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex];\n }\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex];\n }\n this.addAttribute(this.target);\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].columns) {\n this.getstackedColumns(column[i].columns);\n }\n else {\n innerColumnIndexes.push(column[i]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[index])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[i]).uid), columnIndexes[i]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === literals.frozenRight) {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[i]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[i]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[clearIndex].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[i]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.' + literals.movableContent)) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[aria-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[i].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[startIndex])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[startIndex].isSelected = true;\n if (col.getFreezeTableName() === literals.frozenRight) {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[j].classList.contains(literals.row)) {\n if ((rows[j].classList.contains(literals.editedRow) || rows[j].classList.contains(literals.addedRow)) &&\n this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(rows[j].querySelector('tr').childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].querySelector('tr').childNodes[startIndex]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[j].childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].childNodes[startIndex]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode;\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n this.parent.selectedRowIndex = index;\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"powerbi-client\"), require(\"lodash.isequal\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"powerbi-client\", \"lodash.isequal\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"powerbi-client-react\"] = factory(require(\"react\"), require(\"powerbi-client\"), require(\"lodash.isequal\"));\n\telse\n\t\troot[\"powerbi-client-react\"] = factory(root[\"react\"], root[\"powerbi-client\"], root[\"lodash.isequal\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__156__, __WEBPACK_EXTERNAL_MODULE__719__, __WEBPACK_EXTERNAL_MODULE__890__) => {\nreturn ","// powerbi-models v1.12.6\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"powerbi-models\"] = factory();\n\telse\n\t\troot[\"powerbi-models\"] = factory();\n})(this, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TextAlignment = exports.CommonErrorCodes = exports.BookmarksPlayMode = exports.ExportDataType = exports.QnaMode = exports.PageNavigationPosition = exports.BrowserPrintAdjustmentsMode = exports.AggregateFunction = exports.DataCacheMode = exports.CredentialType = exports.isPercentOfGrandTotal = exports.isColumnAggr = exports.isHierarchyLevelAggr = exports.isHierarchyLevel = exports.isColumn = exports.isMeasure = exports.getFilterType = exports.isBasicFilterWithKeys = exports.isFilterKeyColumnsTarget = exports.HierarchyFilter = exports.AdvancedFilter = exports.TupleFilter = exports.IdentityFilter = exports.BasicFilterWithKeys = exports.BasicFilter = exports.RelativeTimeFilter = exports.RelativeDateFilter = exports.TopNFilter = exports.IncludeExcludeFilter = exports.NotSupportedFilter = exports.Filter = exports.RelativeDateOperators = exports.RelativeDateFilterTimeUnit = exports.FilterType = exports.FiltersLevel = exports.FiltersOperations = exports.MenuLocation = exports.ContrastMode = exports.TokenType = exports.ViewMode = exports.Permissions = exports.SectionVisibility = exports.ReportAlignment = exports.HyperlinkClickBehavior = exports.LayoutType = exports.VisualContainerDisplayMode = exports.BackgroundType = exports.DisplayOption = exports.PageSizeType = exports.TraceType = void 0;\r\nexports.validateVisualHeader = exports.validateExportDataRequest = exports.validateQnaInterpretInputData = exports.validateLoadQnaConfiguration = exports.validateSaveAsParameters = exports.validateUpdateFiltersRequest = exports.validateFilter = exports.validatePage = exports.validateTileLoad = exports.validateDashboardLoad = exports.validateQuickCreate = exports.validateCreateReport = exports.validatePaginatedReportLoad = exports.validateReportLoad = exports.validateMenuGroupExtension = exports.validateExtension = exports.validateCustomPageSize = exports.validateVisualizationsPane = exports.validateSyncSlicersPane = exports.validateSelectionPane = exports.validatePageNavigationPane = exports.validateFieldsPane = exports.validateFiltersPane = exports.validateBookmarksPane = exports.validatePanes = exports.validateSettings = exports.validateCaptureBookmarkRequest = exports.validateApplyBookmarkStateRequest = exports.validateApplyBookmarkByNameRequest = exports.validateAddBookmarkRequest = exports.validatePlayBookmarkRequest = exports.validateSlicerState = exports.validateSlicer = exports.validateVisualSelector = exports.isIExtensionArray = exports.isIExtensions = exports.isGroupedMenuExtension = exports.isFlatMenuExtension = exports.isReportFiltersArray = exports.isOnLoadFilters = exports.VisualDataRoleKindPreference = exports.VisualDataRoleKind = exports.CommandDisplayOption = exports.SlicerTargetSelector = exports.VisualTypeSelector = exports.VisualSelector = exports.PageSelector = exports.Selector = exports.SortDirection = exports.LegendPosition = void 0;\r\nexports.validatePrintSettings = exports.validateZoomLevel = exports.validateCustomTheme = exports.validateCommandsSettings = exports.validateVisualSettings = void 0;\r\nvar validator_1 = __webpack_require__(1);\r\nvar TraceType;\r\n(function (TraceType) {\r\n TraceType[TraceType[\"Information\"] = 0] = \"Information\";\r\n TraceType[TraceType[\"Verbose\"] = 1] = \"Verbose\";\r\n TraceType[TraceType[\"Warning\"] = 2] = \"Warning\";\r\n TraceType[TraceType[\"Error\"] = 3] = \"Error\";\r\n TraceType[TraceType[\"ExpectedError\"] = 4] = \"ExpectedError\";\r\n TraceType[TraceType[\"UnexpectedError\"] = 5] = \"UnexpectedError\";\r\n TraceType[TraceType[\"Fatal\"] = 6] = \"Fatal\";\r\n})(TraceType = exports.TraceType || (exports.TraceType = {}));\r\nvar PageSizeType;\r\n(function (PageSizeType) {\r\n PageSizeType[PageSizeType[\"Widescreen\"] = 0] = \"Widescreen\";\r\n PageSizeType[PageSizeType[\"Standard\"] = 1] = \"Standard\";\r\n PageSizeType[PageSizeType[\"Cortana\"] = 2] = \"Cortana\";\r\n PageSizeType[PageSizeType[\"Letter\"] = 3] = \"Letter\";\r\n PageSizeType[PageSizeType[\"Custom\"] = 4] = \"Custom\";\r\n PageSizeType[PageSizeType[\"Mobile\"] = 5] = \"Mobile\";\r\n})(PageSizeType = exports.PageSizeType || (exports.PageSizeType = {}));\r\nvar DisplayOption;\r\n(function (DisplayOption) {\r\n DisplayOption[DisplayOption[\"FitToPage\"] = 0] = \"FitToPage\";\r\n DisplayOption[DisplayOption[\"FitToWidth\"] = 1] = \"FitToWidth\";\r\n DisplayOption[DisplayOption[\"ActualSize\"] = 2] = \"ActualSize\";\r\n})(DisplayOption = exports.DisplayOption || (exports.DisplayOption = {}));\r\nvar BackgroundType;\r\n(function (BackgroundType) {\r\n BackgroundType[BackgroundType[\"Default\"] = 0] = \"Default\";\r\n BackgroundType[BackgroundType[\"Transparent\"] = 1] = \"Transparent\";\r\n})(BackgroundType = exports.BackgroundType || (exports.BackgroundType = {}));\r\nvar VisualContainerDisplayMode;\r\n(function (VisualContainerDisplayMode) {\r\n VisualContainerDisplayMode[VisualContainerDisplayMode[\"Visible\"] = 0] = \"Visible\";\r\n VisualContainerDisplayMode[VisualContainerDisplayMode[\"Hidden\"] = 1] = \"Hidden\";\r\n})(VisualContainerDisplayMode = exports.VisualContainerDisplayMode || (exports.VisualContainerDisplayMode = {}));\r\nvar LayoutType;\r\n(function (LayoutType) {\r\n LayoutType[LayoutType[\"Master\"] = 0] = \"Master\";\r\n LayoutType[LayoutType[\"Custom\"] = 1] = \"Custom\";\r\n LayoutType[LayoutType[\"MobilePortrait\"] = 2] = \"MobilePortrait\";\r\n LayoutType[LayoutType[\"MobileLandscape\"] = 3] = \"MobileLandscape\";\r\n})(LayoutType = exports.LayoutType || (exports.LayoutType = {}));\r\nvar HyperlinkClickBehavior;\r\n(function (HyperlinkClickBehavior) {\r\n HyperlinkClickBehavior[HyperlinkClickBehavior[\"Navigate\"] = 0] = \"Navigate\";\r\n HyperlinkClickBehavior[HyperlinkClickBehavior[\"NavigateAndRaiseEvent\"] = 1] = \"NavigateAndRaiseEvent\";\r\n HyperlinkClickBehavior[HyperlinkClickBehavior[\"RaiseEvent\"] = 2] = \"RaiseEvent\";\r\n})(HyperlinkClickBehavior = exports.HyperlinkClickBehavior || (exports.HyperlinkClickBehavior = {}));\r\nvar ReportAlignment;\r\n(function (ReportAlignment) {\r\n ReportAlignment[ReportAlignment[\"Left\"] = 0] = \"Left\";\r\n ReportAlignment[ReportAlignment[\"Center\"] = 1] = \"Center\";\r\n ReportAlignment[ReportAlignment[\"Right\"] = 2] = \"Right\";\r\n ReportAlignment[ReportAlignment[\"None\"] = 3] = \"None\";\r\n})(ReportAlignment = exports.ReportAlignment || (exports.ReportAlignment = {}));\r\nvar SectionVisibility;\r\n(function (SectionVisibility) {\r\n SectionVisibility[SectionVisibility[\"AlwaysVisible\"] = 0] = \"AlwaysVisible\";\r\n SectionVisibility[SectionVisibility[\"HiddenInViewMode\"] = 1] = \"HiddenInViewMode\";\r\n})(SectionVisibility = exports.SectionVisibility || (exports.SectionVisibility = {}));\r\nvar Permissions;\r\n(function (Permissions) {\r\n Permissions[Permissions[\"Read\"] = 0] = \"Read\";\r\n Permissions[Permissions[\"ReadWrite\"] = 1] = \"ReadWrite\";\r\n Permissions[Permissions[\"Copy\"] = 2] = \"Copy\";\r\n Permissions[Permissions[\"Create\"] = 4] = \"Create\";\r\n Permissions[Permissions[\"All\"] = 7] = \"All\";\r\n})(Permissions = exports.Permissions || (exports.Permissions = {}));\r\nvar ViewMode;\r\n(function (ViewMode) {\r\n ViewMode[ViewMode[\"View\"] = 0] = \"View\";\r\n ViewMode[ViewMode[\"Edit\"] = 1] = \"Edit\";\r\n})(ViewMode = exports.ViewMode || (exports.ViewMode = {}));\r\nvar TokenType;\r\n(function (TokenType) {\r\n TokenType[TokenType[\"Aad\"] = 0] = \"Aad\";\r\n TokenType[TokenType[\"Embed\"] = 1] = \"Embed\";\r\n})(TokenType = exports.TokenType || (exports.TokenType = {}));\r\nvar ContrastMode;\r\n(function (ContrastMode) {\r\n ContrastMode[ContrastMode[\"None\"] = 0] = \"None\";\r\n ContrastMode[ContrastMode[\"HighContrast1\"] = 1] = \"HighContrast1\";\r\n ContrastMode[ContrastMode[\"HighContrast2\"] = 2] = \"HighContrast2\";\r\n ContrastMode[ContrastMode[\"HighContrastBlack\"] = 3] = \"HighContrastBlack\";\r\n ContrastMode[ContrastMode[\"HighContrastWhite\"] = 4] = \"HighContrastWhite\";\r\n})(ContrastMode = exports.ContrastMode || (exports.ContrastMode = {}));\r\nvar MenuLocation;\r\n(function (MenuLocation) {\r\n MenuLocation[MenuLocation[\"Bottom\"] = 0] = \"Bottom\";\r\n MenuLocation[MenuLocation[\"Top\"] = 1] = \"Top\";\r\n})(MenuLocation = exports.MenuLocation || (exports.MenuLocation = {}));\r\nvar FiltersOperations;\r\n(function (FiltersOperations) {\r\n FiltersOperations[FiltersOperations[\"RemoveAll\"] = 0] = \"RemoveAll\";\r\n FiltersOperations[FiltersOperations[\"ReplaceAll\"] = 1] = \"ReplaceAll\";\r\n FiltersOperations[FiltersOperations[\"Add\"] = 2] = \"Add\";\r\n FiltersOperations[FiltersOperations[\"Replace\"] = 3] = \"Replace\";\r\n})(FiltersOperations = exports.FiltersOperations || (exports.FiltersOperations = {}));\r\nvar FiltersLevel;\r\n(function (FiltersLevel) {\r\n FiltersLevel[FiltersLevel[\"Report\"] = 0] = \"Report\";\r\n FiltersLevel[FiltersLevel[\"Page\"] = 1] = \"Page\";\r\n FiltersLevel[FiltersLevel[\"Visual\"] = 2] = \"Visual\";\r\n})(FiltersLevel = exports.FiltersLevel || (exports.FiltersLevel = {}));\r\nvar FilterType;\r\n(function (FilterType) {\r\n FilterType[FilterType[\"Advanced\"] = 0] = \"Advanced\";\r\n FilterType[FilterType[\"Basic\"] = 1] = \"Basic\";\r\n FilterType[FilterType[\"Unknown\"] = 2] = \"Unknown\";\r\n FilterType[FilterType[\"IncludeExclude\"] = 3] = \"IncludeExclude\";\r\n FilterType[FilterType[\"RelativeDate\"] = 4] = \"RelativeDate\";\r\n FilterType[FilterType[\"TopN\"] = 5] = \"TopN\";\r\n FilterType[FilterType[\"Tuple\"] = 6] = \"Tuple\";\r\n FilterType[FilterType[\"RelativeTime\"] = 7] = \"RelativeTime\";\r\n FilterType[FilterType[\"Identity\"] = 8] = \"Identity\";\r\n FilterType[FilterType[\"Hierarchy\"] = 9] = \"Hierarchy\";\r\n})(FilterType = exports.FilterType || (exports.FilterType = {}));\r\nvar RelativeDateFilterTimeUnit;\r\n(function (RelativeDateFilterTimeUnit) {\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Days\"] = 0] = \"Days\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Weeks\"] = 1] = \"Weeks\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"CalendarWeeks\"] = 2] = \"CalendarWeeks\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Months\"] = 3] = \"Months\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"CalendarMonths\"] = 4] = \"CalendarMonths\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Years\"] = 5] = \"Years\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"CalendarYears\"] = 6] = \"CalendarYears\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Minutes\"] = 7] = \"Minutes\";\r\n RelativeDateFilterTimeUnit[RelativeDateFilterTimeUnit[\"Hours\"] = 8] = \"Hours\";\r\n})(RelativeDateFilterTimeUnit = exports.RelativeDateFilterTimeUnit || (exports.RelativeDateFilterTimeUnit = {}));\r\nvar RelativeDateOperators;\r\n(function (RelativeDateOperators) {\r\n RelativeDateOperators[RelativeDateOperators[\"InLast\"] = 0] = \"InLast\";\r\n RelativeDateOperators[RelativeDateOperators[\"InThis\"] = 1] = \"InThis\";\r\n RelativeDateOperators[RelativeDateOperators[\"InNext\"] = 2] = \"InNext\";\r\n})(RelativeDateOperators = exports.RelativeDateOperators || (exports.RelativeDateOperators = {}));\r\nvar Filter = /** @class */ (function () {\r\n function Filter(target, filterType) {\r\n this.target = target;\r\n this.filterType = filterType;\r\n }\r\n Filter.prototype.toJSON = function () {\r\n var filter = {\r\n $schema: this.schemaUrl,\r\n target: this.target,\r\n filterType: this.filterType\r\n };\r\n // Add displaySettings only when defined\r\n if (this.displaySettings !== undefined) {\r\n filter.displaySettings = this.displaySettings;\r\n }\r\n return filter;\r\n };\r\n return Filter;\r\n}());\r\nexports.Filter = Filter;\r\nvar NotSupportedFilter = /** @class */ (function (_super) {\r\n __extends(NotSupportedFilter, _super);\r\n function NotSupportedFilter(target, message, notSupportedTypeName) {\r\n var _this = _super.call(this, target, FilterType.Unknown) || this;\r\n _this.message = message;\r\n _this.notSupportedTypeName = notSupportedTypeName;\r\n _this.schemaUrl = NotSupportedFilter.schemaUrl;\r\n return _this;\r\n }\r\n NotSupportedFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.message = this.message;\r\n filter.notSupportedTypeName = this.notSupportedTypeName;\r\n return filter;\r\n };\r\n NotSupportedFilter.schemaUrl = \"http://powerbi.com/product/schema#notSupported\";\r\n return NotSupportedFilter;\r\n}(Filter));\r\nexports.NotSupportedFilter = NotSupportedFilter;\r\nvar IncludeExcludeFilter = /** @class */ (function (_super) {\r\n __extends(IncludeExcludeFilter, _super);\r\n function IncludeExcludeFilter(target, isExclude, values) {\r\n var _this = _super.call(this, target, FilterType.IncludeExclude) || this;\r\n _this.values = values;\r\n _this.isExclude = isExclude;\r\n _this.schemaUrl = IncludeExcludeFilter.schemaUrl;\r\n return _this;\r\n }\r\n IncludeExcludeFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.isExclude = this.isExclude;\r\n filter.values = this.values;\r\n return filter;\r\n };\r\n IncludeExcludeFilter.schemaUrl = \"http://powerbi.com/product/schema#includeExclude\";\r\n return IncludeExcludeFilter;\r\n}(Filter));\r\nexports.IncludeExcludeFilter = IncludeExcludeFilter;\r\nvar TopNFilter = /** @class */ (function (_super) {\r\n __extends(TopNFilter, _super);\r\n function TopNFilter(target, operator, itemCount, orderBy) {\r\n var _this = _super.call(this, target, FilterType.TopN) || this;\r\n _this.operator = operator;\r\n _this.itemCount = itemCount;\r\n _this.schemaUrl = TopNFilter.schemaUrl;\r\n _this.orderBy = orderBy;\r\n return _this;\r\n }\r\n TopNFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.itemCount = this.itemCount;\r\n filter.orderBy = this.orderBy;\r\n return filter;\r\n };\r\n TopNFilter.schemaUrl = \"http://powerbi.com/product/schema#topN\";\r\n return TopNFilter;\r\n}(Filter));\r\nexports.TopNFilter = TopNFilter;\r\nvar RelativeDateFilter = /** @class */ (function (_super) {\r\n __extends(RelativeDateFilter, _super);\r\n function RelativeDateFilter(target, operator, timeUnitsCount, timeUnitType, includeToday) {\r\n var _this = _super.call(this, target, FilterType.RelativeDate) || this;\r\n _this.operator = operator;\r\n _this.timeUnitsCount = timeUnitsCount;\r\n _this.timeUnitType = timeUnitType;\r\n _this.includeToday = includeToday;\r\n _this.schemaUrl = RelativeDateFilter.schemaUrl;\r\n return _this;\r\n }\r\n RelativeDateFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.timeUnitsCount = this.timeUnitsCount;\r\n filter.timeUnitType = this.timeUnitType;\r\n filter.includeToday = this.includeToday;\r\n return filter;\r\n };\r\n RelativeDateFilter.schemaUrl = \"http://powerbi.com/product/schema#relativeDate\";\r\n return RelativeDateFilter;\r\n}(Filter));\r\nexports.RelativeDateFilter = RelativeDateFilter;\r\nvar RelativeTimeFilter = /** @class */ (function (_super) {\r\n __extends(RelativeTimeFilter, _super);\r\n function RelativeTimeFilter(target, operator, timeUnitsCount, timeUnitType) {\r\n var _this = _super.call(this, target, FilterType.RelativeTime) || this;\r\n _this.operator = operator;\r\n _this.timeUnitsCount = timeUnitsCount;\r\n _this.timeUnitType = timeUnitType;\r\n _this.schemaUrl = RelativeTimeFilter.schemaUrl;\r\n return _this;\r\n }\r\n RelativeTimeFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.timeUnitsCount = this.timeUnitsCount;\r\n filter.timeUnitType = this.timeUnitType;\r\n return filter;\r\n };\r\n RelativeTimeFilter.schemaUrl = \"http://powerbi.com/product/schema#relativeTime\";\r\n return RelativeTimeFilter;\r\n}(Filter));\r\nexports.RelativeTimeFilter = RelativeTimeFilter;\r\nvar BasicFilter = /** @class */ (function (_super) {\r\n __extends(BasicFilter, _super);\r\n function BasicFilter(target, operator) {\r\n var values = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n values[_i - 2] = arguments[_i];\r\n }\r\n var _this = _super.call(this, target, FilterType.Basic) || this;\r\n _this.operator = operator;\r\n _this.schemaUrl = BasicFilter.schemaUrl;\r\n if (values.length === 0 && operator !== \"All\") {\r\n throw new Error(\"values must be a non-empty array unless your operator is \\\"All\\\".\");\r\n }\r\n /**\r\n * Accept values as array instead of as individual arguments\r\n * new BasicFilter('a', 'b', 1, 2);\r\n * new BasicFilter('a', 'b', [1,2]);\r\n */\r\n if (Array.isArray(values[0])) {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\r\n _this.values = values[0];\r\n }\r\n else {\r\n _this.values = values;\r\n }\r\n return _this;\r\n }\r\n BasicFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.values = this.values;\r\n filter.requireSingleSelection = !!this.requireSingleSelection;\r\n return filter;\r\n };\r\n BasicFilter.schemaUrl = \"http://powerbi.com/product/schema#basic\";\r\n return BasicFilter;\r\n}(Filter));\r\nexports.BasicFilter = BasicFilter;\r\nvar BasicFilterWithKeys = /** @class */ (function (_super) {\r\n __extends(BasicFilterWithKeys, _super);\r\n function BasicFilterWithKeys(target, operator, values, keyValues) {\r\n var _this = _super.call(this, target, operator, values) || this;\r\n _this.keyValues = keyValues;\r\n _this.target = target;\r\n var numberOfKeys = target.keys ? target.keys.length : 0;\r\n if (numberOfKeys > 0 && !keyValues) {\r\n throw new Error(\"You should pass the values to be filtered for each key. You passed: no values and \".concat(numberOfKeys, \" keys\"));\r\n }\r\n if (numberOfKeys === 0 && keyValues && keyValues.length > 0) {\r\n throw new Error(\"You passed key values but your target object doesn't contain the keys to be filtered\");\r\n }\r\n for (var _i = 0, _a = _this.keyValues; _i < _a.length; _i++) {\r\n var keyValue = _a[_i];\r\n if (keyValue) {\r\n var lengthOfArray = keyValue.length;\r\n if (lengthOfArray !== numberOfKeys) {\r\n throw new Error(\"Each tuple of key values should contain a value for each of the keys. You passed: \".concat(lengthOfArray, \" values and \").concat(numberOfKeys, \" keys\"));\r\n }\r\n }\r\n }\r\n return _this;\r\n }\r\n BasicFilterWithKeys.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.keyValues = this.keyValues;\r\n return filter;\r\n };\r\n return BasicFilterWithKeys;\r\n}(BasicFilter));\r\nexports.BasicFilterWithKeys = BasicFilterWithKeys;\r\nvar IdentityFilter = /** @class */ (function (_super) {\r\n __extends(IdentityFilter, _super);\r\n function IdentityFilter(target, operator) {\r\n var _this = _super.call(this, target, FilterType.Identity) || this;\r\n _this.operator = operator;\r\n _this.schemaUrl = IdentityFilter.schemaUrl;\r\n return _this;\r\n }\r\n IdentityFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n IdentityFilter.schemaUrl = \"http://powerbi.com/product/schema#identity\";\r\n return IdentityFilter;\r\n}(Filter));\r\nexports.IdentityFilter = IdentityFilter;\r\nvar TupleFilter = /** @class */ (function (_super) {\r\n __extends(TupleFilter, _super);\r\n function TupleFilter(target, operator, values) {\r\n var _this = _super.call(this, target, FilterType.Tuple) || this;\r\n _this.operator = operator;\r\n _this.schemaUrl = TupleFilter.schemaUrl;\r\n _this.values = values;\r\n return _this;\r\n }\r\n TupleFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.operator = this.operator;\r\n filter.values = this.values;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n TupleFilter.schemaUrl = \"http://powerbi.com/product/schema#tuple\";\r\n return TupleFilter;\r\n}(Filter));\r\nexports.TupleFilter = TupleFilter;\r\nvar AdvancedFilter = /** @class */ (function (_super) {\r\n __extends(AdvancedFilter, _super);\r\n function AdvancedFilter(target, logicalOperator) {\r\n var conditions = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n conditions[_i - 2] = arguments[_i];\r\n }\r\n var _this = _super.call(this, target, FilterType.Advanced) || this;\r\n _this.schemaUrl = AdvancedFilter.schemaUrl;\r\n // Guard statements\r\n if (typeof logicalOperator !== \"string\" || logicalOperator.length === 0) {\r\n // TODO: It would be nicer to list out the possible logical operators.\r\n throw new Error(\"logicalOperator must be a valid operator, You passed: \".concat(logicalOperator));\r\n }\r\n _this.logicalOperator = logicalOperator;\r\n var extractedConditions;\r\n /**\r\n * Accept conditions as array instead of as individual arguments\r\n * new AdvancedFilter('a', 'b', \"And\", { value: 1, operator: \"Equals\" }, { value: 2, operator: \"IsGreaterThan\" });\r\n * new AdvancedFilter('a', 'b', \"And\", [{ value: 1, operator: \"Equals\" }, { value: 2, operator: \"IsGreaterThan\" }]);\r\n */\r\n if (Array.isArray(conditions[0])) {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\r\n extractedConditions = conditions[0];\r\n }\r\n else {\r\n extractedConditions = conditions;\r\n }\r\n if (extractedConditions.length > 2) {\r\n throw new Error(\"AdvancedFilters may not have more than two conditions. You passed: \".concat(conditions.length));\r\n }\r\n if (extractedConditions.length === 1 && logicalOperator !== \"And\") {\r\n throw new Error(\"Logical Operator must be \\\"And\\\" when there is only one condition provided\");\r\n }\r\n _this.conditions = extractedConditions;\r\n return _this;\r\n }\r\n AdvancedFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.logicalOperator = this.logicalOperator;\r\n filter.conditions = this.conditions;\r\n return filter;\r\n };\r\n AdvancedFilter.schemaUrl = \"http://powerbi.com/product/schema#advanced\";\r\n return AdvancedFilter;\r\n}(Filter));\r\nexports.AdvancedFilter = AdvancedFilter;\r\nvar HierarchyFilter = /** @class */ (function (_super) {\r\n __extends(HierarchyFilter, _super);\r\n function HierarchyFilter(target, hierarchyData) {\r\n var _this = _super.call(this, target, FilterType.Hierarchy) || this;\r\n _this.schemaUrl = HierarchyFilter.schemaUrl;\r\n _this.hierarchyData = hierarchyData;\r\n return _this;\r\n }\r\n HierarchyFilter.prototype.toJSON = function () {\r\n var filter = _super.prototype.toJSON.call(this);\r\n filter.hierarchyData = this.hierarchyData;\r\n filter.target = this.target;\r\n return filter;\r\n };\r\n HierarchyFilter.schemaUrl = \"http://powerbi.com/product/schema#hierarchy\";\r\n return HierarchyFilter;\r\n}(Filter));\r\nexports.HierarchyFilter = HierarchyFilter;\r\nfunction isFilterKeyColumnsTarget(target) {\r\n return isColumn(target) && !!target.keys;\r\n}\r\nexports.isFilterKeyColumnsTarget = isFilterKeyColumnsTarget;\r\nfunction isBasicFilterWithKeys(filter) {\r\n return getFilterType(filter) === FilterType.Basic && !!filter.keyValues;\r\n}\r\nexports.isBasicFilterWithKeys = isBasicFilterWithKeys;\r\nfunction getFilterType(filter) {\r\n if (filter.filterType) {\r\n return filter.filterType;\r\n }\r\n var basicFilter = filter;\r\n var advancedFilter = filter;\r\n if ((typeof basicFilter.operator === \"string\")\r\n && (Array.isArray(basicFilter.values))) {\r\n return FilterType.Basic;\r\n }\r\n else if ((typeof advancedFilter.logicalOperator === \"string\")\r\n && (Array.isArray(advancedFilter.conditions))) {\r\n return FilterType.Advanced;\r\n }\r\n else {\r\n return FilterType.Unknown;\r\n }\r\n}\r\nexports.getFilterType = getFilterType;\r\nfunction isMeasure(arg) {\r\n return arg.table !== undefined && arg.measure !== undefined;\r\n}\r\nexports.isMeasure = isMeasure;\r\nfunction isColumn(arg) {\r\n return !!(arg.table && arg.column && !arg.aggregationFunction);\r\n}\r\nexports.isColumn = isColumn;\r\nfunction isHierarchyLevel(arg) {\r\n return !!(arg.table && arg.hierarchy && arg.hierarchyLevel && !arg.aggregationFunction);\r\n}\r\nexports.isHierarchyLevel = isHierarchyLevel;\r\nfunction isHierarchyLevelAggr(arg) {\r\n return !!(arg.table && arg.hierarchy && arg.hierarchyLevel && arg.aggregationFunction);\r\n}\r\nexports.isHierarchyLevelAggr = isHierarchyLevelAggr;\r\nfunction isColumnAggr(arg) {\r\n return !!(arg.table && arg.column && arg.aggregationFunction);\r\n}\r\nexports.isColumnAggr = isColumnAggr;\r\nfunction isPercentOfGrandTotal(arg) {\r\n return !!arg.percentOfGrandTotal;\r\n}\r\nexports.isPercentOfGrandTotal = isPercentOfGrandTotal;\r\nvar CredentialType;\r\n(function (CredentialType) {\r\n CredentialType[CredentialType[\"NoConnection\"] = 0] = \"NoConnection\";\r\n CredentialType[CredentialType[\"OnBehalfOf\"] = 1] = \"OnBehalfOf\";\r\n CredentialType[CredentialType[\"Anonymous\"] = 2] = \"Anonymous\";\r\n})(CredentialType = exports.CredentialType || (exports.CredentialType = {}));\r\nvar DataCacheMode;\r\n(function (DataCacheMode) {\r\n DataCacheMode[DataCacheMode[\"Import\"] = 0] = \"Import\";\r\n DataCacheMode[DataCacheMode[\"DirectQuery\"] = 1] = \"DirectQuery\";\r\n})(DataCacheMode = exports.DataCacheMode || (exports.DataCacheMode = {}));\r\nvar AggregateFunction;\r\n(function (AggregateFunction) {\r\n AggregateFunction[AggregateFunction[\"Default\"] = 1] = \"Default\";\r\n AggregateFunction[AggregateFunction[\"None\"] = 2] = \"None\";\r\n AggregateFunction[AggregateFunction[\"Sum\"] = 3] = \"Sum\";\r\n AggregateFunction[AggregateFunction[\"Min\"] = 4] = \"Min\";\r\n AggregateFunction[AggregateFunction[\"Max\"] = 5] = \"Max\";\r\n AggregateFunction[AggregateFunction[\"Count\"] = 6] = \"Count\";\r\n AggregateFunction[AggregateFunction[\"Average\"] = 7] = \"Average\";\r\n AggregateFunction[AggregateFunction[\"DistinctCount\"] = 8] = \"DistinctCount\";\r\n})(AggregateFunction = exports.AggregateFunction || (exports.AggregateFunction = {}));\r\nvar BrowserPrintAdjustmentsMode;\r\n(function (BrowserPrintAdjustmentsMode) {\r\n BrowserPrintAdjustmentsMode[BrowserPrintAdjustmentsMode[\"Default\"] = 0] = \"Default\";\r\n BrowserPrintAdjustmentsMode[BrowserPrintAdjustmentsMode[\"NoAdjustments\"] = 1] = \"NoAdjustments\";\r\n})(BrowserPrintAdjustmentsMode = exports.BrowserPrintAdjustmentsMode || (exports.BrowserPrintAdjustmentsMode = {}));\r\nvar PageNavigationPosition;\r\n(function (PageNavigationPosition) {\r\n PageNavigationPosition[PageNavigationPosition[\"Bottom\"] = 0] = \"Bottom\";\r\n PageNavigationPosition[PageNavigationPosition[\"Left\"] = 1] = \"Left\";\r\n})(PageNavigationPosition = exports.PageNavigationPosition || (exports.PageNavigationPosition = {}));\r\nvar QnaMode;\r\n(function (QnaMode) {\r\n QnaMode[QnaMode[\"Interactive\"] = 0] = \"Interactive\";\r\n QnaMode[QnaMode[\"ResultOnly\"] = 1] = \"ResultOnly\";\r\n})(QnaMode = exports.QnaMode || (exports.QnaMode = {}));\r\nvar ExportDataType;\r\n(function (ExportDataType) {\r\n ExportDataType[ExportDataType[\"Summarized\"] = 0] = \"Summarized\";\r\n ExportDataType[ExportDataType[\"Underlying\"] = 1] = \"Underlying\";\r\n})(ExportDataType = exports.ExportDataType || (exports.ExportDataType = {}));\r\nvar BookmarksPlayMode;\r\n(function (BookmarksPlayMode) {\r\n BookmarksPlayMode[BookmarksPlayMode[\"Off\"] = 0] = \"Off\";\r\n BookmarksPlayMode[BookmarksPlayMode[\"Presentation\"] = 1] = \"Presentation\";\r\n})(BookmarksPlayMode = exports.BookmarksPlayMode || (exports.BookmarksPlayMode = {}));\r\n// This is not an enum because enum strings require\r\n// us to upgrade typeScript version and change SDK build definition\r\nexports.CommonErrorCodes = {\r\n TokenExpired: 'TokenExpired',\r\n NotFound: 'PowerBIEntityNotFound',\r\n InvalidParameters: 'Invalid parameters',\r\n LoadReportFailed: 'LoadReportFailed',\r\n NotAuthorized: 'PowerBINotAuthorizedException',\r\n FailedToLoadModel: 'ExplorationContainer_FailedToLoadModel_DefaultDetails',\r\n};\r\nexports.TextAlignment = {\r\n Left: 'left',\r\n Center: 'center',\r\n Right: 'right',\r\n};\r\nexports.LegendPosition = {\r\n Top: 'Top',\r\n Bottom: 'Bottom',\r\n Right: 'Right',\r\n Left: 'Left',\r\n TopCenter: 'TopCenter',\r\n BottomCenter: 'BottomCenter',\r\n RightCenter: 'RightCenter',\r\n LeftCenter: 'LeftCenter',\r\n};\r\nvar SortDirection;\r\n(function (SortDirection) {\r\n SortDirection[SortDirection[\"Ascending\"] = 1] = \"Ascending\";\r\n SortDirection[SortDirection[\"Descending\"] = 2] = \"Descending\";\r\n})(SortDirection = exports.SortDirection || (exports.SortDirection = {}));\r\nvar Selector = /** @class */ (function () {\r\n function Selector(schema) {\r\n this.$schema = schema;\r\n }\r\n Selector.prototype.toJSON = function () {\r\n return {\r\n $schema: this.$schema\r\n };\r\n };\r\n return Selector;\r\n}());\r\nexports.Selector = Selector;\r\nvar PageSelector = /** @class */ (function (_super) {\r\n __extends(PageSelector, _super);\r\n function PageSelector(pageName) {\r\n var _this = _super.call(this, PageSelector.schemaUrl) || this;\r\n _this.pageName = pageName;\r\n return _this;\r\n }\r\n PageSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.pageName = this.pageName;\r\n return selector;\r\n };\r\n PageSelector.schemaUrl = \"http://powerbi.com/product/schema#pageSelector\";\r\n return PageSelector;\r\n}(Selector));\r\nexports.PageSelector = PageSelector;\r\nvar VisualSelector = /** @class */ (function (_super) {\r\n __extends(VisualSelector, _super);\r\n function VisualSelector(visualName) {\r\n var _this = _super.call(this, VisualSelector.schemaUrl) || this;\r\n _this.visualName = visualName;\r\n return _this;\r\n }\r\n VisualSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.visualName = this.visualName;\r\n return selector;\r\n };\r\n VisualSelector.schemaUrl = \"http://powerbi.com/product/schema#visualSelector\";\r\n return VisualSelector;\r\n}(Selector));\r\nexports.VisualSelector = VisualSelector;\r\nvar VisualTypeSelector = /** @class */ (function (_super) {\r\n __extends(VisualTypeSelector, _super);\r\n function VisualTypeSelector(visualType) {\r\n var _this = _super.call(this, VisualSelector.schemaUrl) || this;\r\n _this.visualType = visualType;\r\n return _this;\r\n }\r\n VisualTypeSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.visualType = this.visualType;\r\n return selector;\r\n };\r\n VisualTypeSelector.schemaUrl = \"http://powerbi.com/product/schema#visualTypeSelector\";\r\n return VisualTypeSelector;\r\n}(Selector));\r\nexports.VisualTypeSelector = VisualTypeSelector;\r\nvar SlicerTargetSelector = /** @class */ (function (_super) {\r\n __extends(SlicerTargetSelector, _super);\r\n function SlicerTargetSelector(target) {\r\n var _this = _super.call(this, VisualSelector.schemaUrl) || this;\r\n _this.target = target;\r\n return _this;\r\n }\r\n SlicerTargetSelector.prototype.toJSON = function () {\r\n var selector = _super.prototype.toJSON.call(this);\r\n selector.target = this.target;\r\n return selector;\r\n };\r\n SlicerTargetSelector.schemaUrl = \"http://powerbi.com/product/schema#slicerTargetSelector\";\r\n return SlicerTargetSelector;\r\n}(Selector));\r\nexports.SlicerTargetSelector = SlicerTargetSelector;\r\nvar CommandDisplayOption;\r\n(function (CommandDisplayOption) {\r\n CommandDisplayOption[CommandDisplayOption[\"Enabled\"] = 0] = \"Enabled\";\r\n CommandDisplayOption[CommandDisplayOption[\"Disabled\"] = 1] = \"Disabled\";\r\n CommandDisplayOption[CommandDisplayOption[\"Hidden\"] = 2] = \"Hidden\";\r\n})(CommandDisplayOption = exports.CommandDisplayOption || (exports.CommandDisplayOption = {}));\r\n/*\r\n * Visual CRUD\r\n */\r\nvar VisualDataRoleKind;\r\n(function (VisualDataRoleKind) {\r\n // Indicates that the role should be bound to something that evaluates to a grouping of values.\r\n VisualDataRoleKind[VisualDataRoleKind[\"Grouping\"] = 0] = \"Grouping\";\r\n // Indicates that the role should be bound to something that evaluates to a single value in a scope.\r\n VisualDataRoleKind[VisualDataRoleKind[\"Measure\"] = 1] = \"Measure\";\r\n // Indicates that the role can be bound to either Grouping or Measure.\r\n VisualDataRoleKind[VisualDataRoleKind[\"GroupingOrMeasure\"] = 2] = \"GroupingOrMeasure\";\r\n})(VisualDataRoleKind = exports.VisualDataRoleKind || (exports.VisualDataRoleKind = {}));\r\n// Indicates the visual preference on Grouping or Measure. Only applicable if kind is GroupingOrMeasure.\r\nvar VisualDataRoleKindPreference;\r\n(function (VisualDataRoleKindPreference) {\r\n VisualDataRoleKindPreference[VisualDataRoleKindPreference[\"Measure\"] = 0] = \"Measure\";\r\n VisualDataRoleKindPreference[VisualDataRoleKindPreference[\"Grouping\"] = 1] = \"Grouping\";\r\n})(VisualDataRoleKindPreference = exports.VisualDataRoleKindPreference || (exports.VisualDataRoleKindPreference = {}));\r\nfunction isOnLoadFilters(filters) {\r\n return filters && !isReportFiltersArray(filters);\r\n}\r\nexports.isOnLoadFilters = isOnLoadFilters;\r\nfunction isReportFiltersArray(filters) {\r\n return Array.isArray(filters);\r\n}\r\nexports.isReportFiltersArray = isReportFiltersArray;\r\nfunction isFlatMenuExtension(menuExtension) {\r\n return menuExtension && !isGroupedMenuExtension(menuExtension);\r\n}\r\nexports.isFlatMenuExtension = isFlatMenuExtension;\r\nfunction isGroupedMenuExtension(menuExtension) {\r\n return menuExtension && !!menuExtension.groupName;\r\n}\r\nexports.isGroupedMenuExtension = isGroupedMenuExtension;\r\nfunction isIExtensions(extensions) {\r\n return extensions && !isIExtensionArray(extensions);\r\n}\r\nexports.isIExtensions = isIExtensions;\r\nfunction isIExtensionArray(extensions) {\r\n return Array.isArray(extensions);\r\n}\r\nexports.isIExtensionArray = isIExtensionArray;\r\nfunction normalizeError(error) {\r\n var message = error.message;\r\n if (!message) {\r\n message = \"\".concat(error.path, \" is invalid. Not meeting \").concat(error.keyword, \" constraint\");\r\n }\r\n return {\r\n message: message\r\n };\r\n}\r\nfunction validateVisualSelector(input) {\r\n var errors = validator_1.Validators.visualSelectorValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualSelector = validateVisualSelector;\r\nfunction validateSlicer(input) {\r\n var errors = validator_1.Validators.slicerValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSlicer = validateSlicer;\r\nfunction validateSlicerState(input) {\r\n var errors = validator_1.Validators.slicerStateValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSlicerState = validateSlicerState;\r\nfunction validatePlayBookmarkRequest(input) {\r\n var errors = validator_1.Validators.playBookmarkRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePlayBookmarkRequest = validatePlayBookmarkRequest;\r\nfunction validateAddBookmarkRequest(input) {\r\n var errors = validator_1.Validators.addBookmarkRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateAddBookmarkRequest = validateAddBookmarkRequest;\r\nfunction validateApplyBookmarkByNameRequest(input) {\r\n var errors = validator_1.Validators.applyBookmarkByNameRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateApplyBookmarkByNameRequest = validateApplyBookmarkByNameRequest;\r\nfunction validateApplyBookmarkStateRequest(input) {\r\n var errors = validator_1.Validators.applyBookmarkStateRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateApplyBookmarkStateRequest = validateApplyBookmarkStateRequest;\r\nfunction validateCaptureBookmarkRequest(input) {\r\n var errors = validator_1.Validators.captureBookmarkRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCaptureBookmarkRequest = validateCaptureBookmarkRequest;\r\nfunction validateSettings(input) {\r\n var errors = validator_1.Validators.settingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSettings = validateSettings;\r\nfunction validatePanes(input) {\r\n var errors = validator_1.Validators.reportPanesValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePanes = validatePanes;\r\nfunction validateBookmarksPane(input) {\r\n var errors = validator_1.Validators.bookmarksPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateBookmarksPane = validateBookmarksPane;\r\nfunction validateFiltersPane(input) {\r\n var errors = validator_1.Validators.filtersPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateFiltersPane = validateFiltersPane;\r\nfunction validateFieldsPane(input) {\r\n var errors = validator_1.Validators.fieldsPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateFieldsPane = validateFieldsPane;\r\nfunction validatePageNavigationPane(input) {\r\n var errors = validator_1.Validators.pageNavigationPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePageNavigationPane = validatePageNavigationPane;\r\nfunction validateSelectionPane(input) {\r\n var errors = validator_1.Validators.selectionPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSelectionPane = validateSelectionPane;\r\nfunction validateSyncSlicersPane(input) {\r\n var errors = validator_1.Validators.syncSlicersPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSyncSlicersPane = validateSyncSlicersPane;\r\nfunction validateVisualizationsPane(input) {\r\n var errors = validator_1.Validators.visualizationsPaneValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualizationsPane = validateVisualizationsPane;\r\nfunction validateCustomPageSize(input) {\r\n var errors = validator_1.Validators.customPageSizeValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCustomPageSize = validateCustomPageSize;\r\nfunction validateExtension(input) {\r\n var errors = validator_1.Validators.extensionValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateExtension = validateExtension;\r\nfunction validateMenuGroupExtension(input) {\r\n var errors = validator_1.Validators.menuGroupExtensionValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateMenuGroupExtension = validateMenuGroupExtension;\r\nfunction validateReportLoad(input) {\r\n var errors = validator_1.Validators.reportLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateReportLoad = validateReportLoad;\r\nfunction validatePaginatedReportLoad(input) {\r\n var errors = validator_1.Validators.paginatedReportLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePaginatedReportLoad = validatePaginatedReportLoad;\r\nfunction validateCreateReport(input) {\r\n var errors = validator_1.Validators.reportCreateValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCreateReport = validateCreateReport;\r\nfunction validateQuickCreate(input) {\r\n var errors = validator_1.Validators.quickCreateValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateQuickCreate = validateQuickCreate;\r\nfunction validateDashboardLoad(input) {\r\n var errors = validator_1.Validators.dashboardLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateDashboardLoad = validateDashboardLoad;\r\nfunction validateTileLoad(input) {\r\n var errors = validator_1.Validators.tileLoadValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateTileLoad = validateTileLoad;\r\nfunction validatePage(input) {\r\n var errors = validator_1.Validators.pageValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePage = validatePage;\r\nfunction validateFilter(input) {\r\n var errors = validator_1.Validators.filterValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateFilter = validateFilter;\r\nfunction validateUpdateFiltersRequest(input) {\r\n var errors = validator_1.Validators.updateFiltersRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateUpdateFiltersRequest = validateUpdateFiltersRequest;\r\nfunction validateSaveAsParameters(input) {\r\n var errors = validator_1.Validators.saveAsParametersValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateSaveAsParameters = validateSaveAsParameters;\r\nfunction validateLoadQnaConfiguration(input) {\r\n var errors = validator_1.Validators.loadQnaValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateLoadQnaConfiguration = validateLoadQnaConfiguration;\r\nfunction validateQnaInterpretInputData(input) {\r\n var errors = validator_1.Validators.qnaInterpretInputDataValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateQnaInterpretInputData = validateQnaInterpretInputData;\r\nfunction validateExportDataRequest(input) {\r\n var errors = validator_1.Validators.exportDataRequestValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateExportDataRequest = validateExportDataRequest;\r\nfunction validateVisualHeader(input) {\r\n var errors = validator_1.Validators.visualHeaderValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualHeader = validateVisualHeader;\r\nfunction validateVisualSettings(input) {\r\n var errors = validator_1.Validators.visualSettingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateVisualSettings = validateVisualSettings;\r\nfunction validateCommandsSettings(input) {\r\n var errors = validator_1.Validators.commandsSettingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCommandsSettings = validateCommandsSettings;\r\nfunction validateCustomTheme(input) {\r\n var errors = validator_1.Validators.customThemeValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateCustomTheme = validateCustomTheme;\r\nfunction validateZoomLevel(input) {\r\n var errors = validator_1.Validators.zoomLevelValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validateZoomLevel = validateZoomLevel;\r\nfunction validatePrintSettings(input) {\r\n var errors = validator_1.Validators.printSettingsValidator.validate(input);\r\n return errors ? errors.map(normalizeError) : undefined;\r\n}\r\nexports.validatePrintSettings = validatePrintSettings;\r\n\n\n/***/ }),\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Validators = void 0;\r\nvar barsValidator_1 = __webpack_require__(2);\r\nvar bookmarkValidator_1 = __webpack_require__(5);\r\nvar commandsSettingsValidator_1 = __webpack_require__(6);\r\nvar customThemeValidator_1 = __webpack_require__(7);\r\nvar dashboardLoadValidator_1 = __webpack_require__(8);\r\nvar datasetBindingValidator_1 = __webpack_require__(9);\r\nvar exportDataValidator_1 = __webpack_require__(10);\r\nvar extensionsValidator_1 = __webpack_require__(11);\r\nvar filtersValidator_1 = __webpack_require__(12);\r\nvar layoutValidator_1 = __webpack_require__(13);\r\nvar pageValidator_1 = __webpack_require__(14);\r\nvar panesValidator_1 = __webpack_require__(15);\r\nvar qnaValidator_1 = __webpack_require__(16);\r\nvar reportCreateValidator_1 = __webpack_require__(17);\r\nvar reportLoadValidator_1 = __webpack_require__(18);\r\nvar paginatedReportLoadValidator_1 = __webpack_require__(19);\r\nvar saveAsParametersValidator_1 = __webpack_require__(20);\r\nvar selectorsValidator_1 = __webpack_require__(21);\r\nvar settingsValidator_1 = __webpack_require__(22);\r\nvar slicersValidator_1 = __webpack_require__(23);\r\nvar tileLoadValidator_1 = __webpack_require__(24);\r\nvar visualSettingsValidator_1 = __webpack_require__(25);\r\nvar anyOfValidator_1 = __webpack_require__(26);\r\nvar fieldForbiddenValidator_1 = __webpack_require__(27);\r\nvar fieldRequiredValidator_1 = __webpack_require__(28);\r\nvar mapValidator_1 = __webpack_require__(29);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar parameterPanelValidator_1 = __webpack_require__(30);\r\nvar datasetCreateConfigValidator_1 = __webpack_require__(31);\r\nvar quickCreateValidator_1 = __webpack_require__(32);\r\nvar printSettingsValidator_1 = __webpack_require__(33);\r\nexports.Validators = {\r\n addBookmarkRequestValidator: new bookmarkValidator_1.AddBookmarkRequestValidator(),\r\n advancedFilterTypeValidator: new typeValidator_1.EnumValidator([0]),\r\n advancedFilterValidator: new filtersValidator_1.AdvancedFilterValidator(),\r\n anyArrayValidator: new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new typeValidator_1.StringValidator(), new typeValidator_1.NumberValidator(), new typeValidator_1.BooleanValidator()])]),\r\n anyFilterValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.BasicFilterValidator(), new filtersValidator_1.AdvancedFilterValidator(), new filtersValidator_1.IncludeExcludeFilterValidator(), new filtersValidator_1.NotSupportedFilterValidator(), new filtersValidator_1.RelativeDateFilterValidator(), new filtersValidator_1.TopNFilterValidator(), new filtersValidator_1.RelativeTimeFilterValidator(), new filtersValidator_1.HierarchyFilterValidator()]),\r\n anyValueValidator: new anyOfValidator_1.AnyOfValidator([new typeValidator_1.StringValidator(), new typeValidator_1.NumberValidator(), new typeValidator_1.BooleanValidator()]),\r\n actionBarValidator: new barsValidator_1.ActionBarValidator(),\r\n statusBarValidator: new barsValidator_1.StatusBarValidator(),\r\n applyBookmarkByNameRequestValidator: new bookmarkValidator_1.ApplyBookmarkByNameRequestValidator(),\r\n applyBookmarkStateRequestValidator: new bookmarkValidator_1.ApplyBookmarkStateRequestValidator(),\r\n applyBookmarkValidator: new anyOfValidator_1.AnyOfValidator([new bookmarkValidator_1.ApplyBookmarkByNameRequestValidator(), new bookmarkValidator_1.ApplyBookmarkStateRequestValidator()]),\r\n backgroundValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n basicFilterTypeValidator: new typeValidator_1.EnumValidator([1]),\r\n basicFilterValidator: new filtersValidator_1.BasicFilterValidator(),\r\n booleanArrayValidator: new typeValidator_1.BooleanArrayValidator(),\r\n booleanValidator: new typeValidator_1.BooleanValidator(),\r\n bookmarksPaneValidator: new panesValidator_1.BookmarksPaneValidator(),\r\n captureBookmarkOptionsValidator: new bookmarkValidator_1.CaptureBookmarkOptionsValidator(),\r\n captureBookmarkRequestValidator: new bookmarkValidator_1.CaptureBookmarkRequestValidator(),\r\n columnSchemaArrayValidator: new typeValidator_1.ArrayValidator([new datasetCreateConfigValidator_1.ColumnSchemaValidator()]),\r\n commandDisplayOptionValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n commandExtensionSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.VisualTypeSelectorValidator()]),\r\n commandExtensionArrayValidator: new typeValidator_1.ArrayValidator([new extensionsValidator_1.CommandExtensionValidator()]),\r\n commandExtensionValidator: new extensionsValidator_1.CommandExtensionValidator(),\r\n commandsSettingsArrayValidator: new typeValidator_1.ArrayValidator([new commandsSettingsValidator_1.CommandsSettingsValidator()]),\r\n commandsSettingsValidator: new commandsSettingsValidator_1.CommandsSettingsValidator(),\r\n conditionItemValidator: new filtersValidator_1.ConditionItemValidator(),\r\n contrastModeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4]),\r\n credentialDetailsValidator: new mapValidator_1.MapValidator([new typeValidator_1.StringValidator()], [new typeValidator_1.StringValidator()]),\r\n credentialsValidator: new datasetCreateConfigValidator_1.CredentialsValidator(),\r\n credentialTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n customLayoutDisplayOptionValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n customLayoutValidator: new layoutValidator_1.CustomLayoutValidator(),\r\n customPageSizeValidator: new pageValidator_1.CustomPageSizeValidator(),\r\n customThemeValidator: new customThemeValidator_1.CustomThemeValidator(),\r\n dashboardLoadValidator: new dashboardLoadValidator_1.DashboardLoadValidator(),\r\n dataCacheModeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n datasetBindingValidator: new datasetBindingValidator_1.DatasetBindingValidator(),\r\n datasetCreateConfigValidator: new datasetCreateConfigValidator_1.DatasetCreateConfigValidator(),\r\n datasourceConnectionConfigValidator: new datasetCreateConfigValidator_1.DatasourceConnectionConfigValidator(),\r\n displayStateModeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n displayStateValidator: new layoutValidator_1.DisplayStateValidator(),\r\n exportDataRequestValidator: new exportDataValidator_1.ExportDataRequestValidator(),\r\n extensionArrayValidator: new typeValidator_1.ArrayValidator([new extensionsValidator_1.ExtensionValidator()]),\r\n extensionsValidator: new anyOfValidator_1.AnyOfValidator([new typeValidator_1.ArrayValidator([new extensionsValidator_1.ExtensionValidator()]), new extensionsValidator_1.ExtensionsValidator()]),\r\n extensionPointsValidator: new extensionsValidator_1.ExtensionPointsValidator(),\r\n extensionValidator: new extensionsValidator_1.ExtensionValidator(),\r\n fieldForbiddenValidator: new fieldForbiddenValidator_1.FieldForbiddenValidator(),\r\n fieldRequiredValidator: new fieldRequiredValidator_1.FieldRequiredValidator(),\r\n fieldsPaneValidator: new panesValidator_1.FieldsPaneValidator(),\r\n filterColumnTargetValidator: new filtersValidator_1.FilterColumnTargetValidator(),\r\n filterDisplaySettingsValidator: new filtersValidator_1.FilterDisplaySettingsValidator(),\r\n filterConditionsValidator: new typeValidator_1.ArrayValidator([new filtersValidator_1.ConditionItemValidator()]),\r\n filterHierarchyTargetValidator: new filtersValidator_1.FilterHierarchyTargetValidator(),\r\n filterMeasureTargetValidator: new filtersValidator_1.FilterMeasureTargetValidator(),\r\n filterTargetValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new typeValidator_1.ArrayValidator([new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new filtersValidator_1.FilterKeyColumnsTargetValidator(), new filtersValidator_1.FilterKeyHierarchyTargetValidator()])])]),\r\n filterValidator: new filtersValidator_1.FilterValidator(),\r\n filterTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5, 6, 7, 9]),\r\n filtersArrayValidator: new typeValidator_1.ArrayValidator([new filtersValidator_1.FilterValidator()]),\r\n filtersOperationsUpdateValidator: new typeValidator_1.EnumValidator([1, 2, 3]),\r\n filtersOperationsRemoveAllValidator: new typeValidator_1.EnumValidator([0]),\r\n filtersPaneValidator: new panesValidator_1.FiltersPaneValidator(),\r\n hyperlinkClickBehaviorValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n includeExcludeFilterValidator: new filtersValidator_1.IncludeExcludeFilterValidator(),\r\n includeExludeFilterTypeValidator: new typeValidator_1.EnumValidator([3]),\r\n hierarchyFilterTypeValidator: new typeValidator_1.EnumValidator([9]),\r\n hierarchyFilterValuesValidator: new typeValidator_1.ArrayValidator([new filtersValidator_1.HierarchyFilterNodeValidator()]),\r\n layoutTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3]),\r\n loadQnaValidator: new qnaValidator_1.LoadQnaValidator(),\r\n menuExtensionValidator: new anyOfValidator_1.AnyOfValidator([new extensionsValidator_1.FlatMenuExtensionValidator(), new extensionsValidator_1.GroupedMenuExtensionValidator()]),\r\n menuGroupExtensionArrayValidator: new typeValidator_1.ArrayValidator([new extensionsValidator_1.MenuGroupExtensionValidator()]),\r\n menuGroupExtensionValidator: new extensionsValidator_1.MenuGroupExtensionValidator(),\r\n menuLocationValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n notSupportedFilterTypeValidator: new typeValidator_1.EnumValidator([2]),\r\n notSupportedFilterValidator: new filtersValidator_1.NotSupportedFilterValidator(),\r\n numberArrayValidator: new typeValidator_1.NumberArrayValidator(),\r\n numberValidator: new typeValidator_1.NumberValidator(),\r\n onLoadFiltersBaseValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.OnLoadFiltersBaseValidator(), new filtersValidator_1.OnLoadFiltersBaseRemoveOperationValidator()]),\r\n pageLayoutValidator: new mapValidator_1.MapValidator([new typeValidator_1.StringValidator()], [new layoutValidator_1.VisualLayoutValidator()]),\r\n pageNavigationPaneValidator: new panesValidator_1.PageNavigationPaneValidator(),\r\n pageNavigationPositionValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n pageSizeTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5]),\r\n pageSizeValidator: new pageValidator_1.PageSizeValidator(),\r\n pageValidator: new pageValidator_1.PageValidator(),\r\n pageViewFieldValidator: new pageValidator_1.PageViewFieldValidator(),\r\n pagesLayoutValidator: new mapValidator_1.MapValidator([new typeValidator_1.StringValidator()], [new layoutValidator_1.PageLayoutValidator()]),\r\n paginatedReportCommandsValidator: new commandsSettingsValidator_1.PaginatedReportCommandsValidator(),\r\n paginatedReportLoadValidator: new paginatedReportLoadValidator_1.PaginatedReportLoadValidator(),\r\n paginatedReportsettingsValidator: new settingsValidator_1.PaginatedReportSettingsValidator(),\r\n parameterValuesArrayValidator: new typeValidator_1.ArrayValidator([new paginatedReportLoadValidator_1.ReportParameterFieldsValidator()]),\r\n parametersPanelValidator: new parameterPanelValidator_1.ParametersPanelValidator(),\r\n permissionsValidator: new typeValidator_1.EnumValidator([0, 1, 2, 4, 7]),\r\n playBookmarkRequestValidator: new bookmarkValidator_1.PlayBookmarkRequestValidator(),\r\n printSettingsValidator: new printSettingsValidator_1.PrintSettingsValidator(),\r\n qnaInterpretInputDataValidator: new qnaValidator_1.QnaInterpretInputDataValidator(),\r\n qnaPanesValidator: new panesValidator_1.QnaPanesValidator(),\r\n qnaSettingValidator: new qnaValidator_1.QnaSettingsValidator(),\r\n quickCreateValidator: new quickCreateValidator_1.QuickCreateValidator(),\r\n rawDataValidator: new typeValidator_1.ArrayValidator([new typeValidator_1.ArrayValidator([new typeValidator_1.StringValidator()])]),\r\n relativeDateFilterOperatorValidator: new typeValidator_1.EnumValidator([0, 1, 2]),\r\n relativeDateFilterTimeUnitTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5, 6]),\r\n relativeDateFilterTypeValidator: new typeValidator_1.EnumValidator([4]),\r\n relativeDateFilterValidator: new filtersValidator_1.RelativeDateFilterValidator(),\r\n relativeDateTimeFilterTypeValidator: new typeValidator_1.EnumValidator([4, 7]),\r\n relativeDateTimeFilterUnitTypeValidator: new typeValidator_1.EnumValidator([0, 1, 2, 3, 4, 5, 6, 7, 8]),\r\n relativeTimeFilterTimeUnitTypeValidator: new typeValidator_1.EnumValidator([7, 8]),\r\n relativeTimeFilterTypeValidator: new typeValidator_1.EnumValidator([7]),\r\n relativeTimeFilterValidator: new filtersValidator_1.RelativeTimeFilterValidator(),\r\n reportBarsValidator: new barsValidator_1.ReportBarsValidator(),\r\n reportCreateValidator: new reportCreateValidator_1.ReportCreateValidator(),\r\n reportLoadFiltersValidator: new anyOfValidator_1.AnyOfValidator([new typeValidator_1.ArrayValidator([new filtersValidator_1.FilterValidator()]), new filtersValidator_1.OnLoadFiltersValidator()]),\r\n reportLoadValidator: new reportLoadValidator_1.ReportLoadValidator(),\r\n reportPanesValidator: new panesValidator_1.ReportPanesValidator(),\r\n saveAsParametersValidator: new saveAsParametersValidator_1.SaveAsParametersValidator(),\r\n selectionPaneValidator: new panesValidator_1.SelectionPaneValidator(),\r\n settingsValidator: new settingsValidator_1.SettingsValidator(),\r\n singleCommandSettingsValidator: new commandsSettingsValidator_1.SingleCommandSettingsValidator(),\r\n slicerSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.SlicerTargetSelectorValidator()]),\r\n slicerStateValidator: new slicersValidator_1.SlicerStateValidator(),\r\n slicerTargetValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.FilterColumnTargetValidator(), new filtersValidator_1.FilterHierarchyTargetValidator(), new filtersValidator_1.FilterMeasureTargetValidator(), new filtersValidator_1.FilterKeyColumnsTargetValidator(), new filtersValidator_1.FilterKeyHierarchyTargetValidator()]),\r\n slicerValidator: new slicersValidator_1.SlicerValidator(),\r\n stringArrayValidator: new typeValidator_1.StringArrayValidator(),\r\n stringValidator: new typeValidator_1.StringValidator(),\r\n syncSlicersPaneValidator: new panesValidator_1.SyncSlicersPaneValidator(),\r\n tableDataArrayValidator: new typeValidator_1.ArrayValidator([new datasetCreateConfigValidator_1.TableDataValidator()]),\r\n tableSchemaListValidator: new typeValidator_1.ArrayValidator([new datasetCreateConfigValidator_1.TableSchemaValidator()]),\r\n tileLoadValidator: new tileLoadValidator_1.TileLoadValidator(),\r\n tokenTypeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n topNFilterTypeValidator: new typeValidator_1.EnumValidator([5]),\r\n topNFilterValidator: new filtersValidator_1.TopNFilterValidator(),\r\n updateFiltersRequestValidator: new anyOfValidator_1.AnyOfValidator([new filtersValidator_1.UpdateFiltersRequestValidator(), new filtersValidator_1.RemoveFiltersRequestValidator()]),\r\n viewModeValidator: new typeValidator_1.EnumValidator([0, 1]),\r\n visualCommandSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.VisualTypeSelectorValidator()]),\r\n visualHeaderSelectorValidator: new anyOfValidator_1.AnyOfValidator([new selectorsValidator_1.VisualSelectorValidator(), new selectorsValidator_1.VisualTypeSelectorValidator()]),\r\n visualHeaderSettingsValidator: new visualSettingsValidator_1.VisualHeaderSettingsValidator(),\r\n visualHeaderValidator: new visualSettingsValidator_1.VisualHeaderValidator(),\r\n visualHeadersValidator: new typeValidator_1.ArrayValidator([new visualSettingsValidator_1.VisualHeaderValidator()]),\r\n visualizationsPaneValidator: new panesValidator_1.VisualizationsPaneValidator(),\r\n visualLayoutValidator: new layoutValidator_1.VisualLayoutValidator(),\r\n visualSelectorValidator: new selectorsValidator_1.VisualSelectorValidator(),\r\n visualSettingsValidator: new visualSettingsValidator_1.VisualSettingsValidator(),\r\n visualTypeSelectorValidator: new selectorsValidator_1.VisualTypeSelectorValidator(),\r\n zoomLevelValidator: new typeValidator_1.RangeValidator(0.25, 4),\r\n};\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.StatusBarValidator = exports.ActionBarValidator = exports.ReportBarsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ReportBarsValidator = /** @class */ (function (_super) {\r\n __extends(ReportBarsValidator, _super);\r\n function ReportBarsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportBarsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"actionBar\",\r\n validators: [validator_1.Validators.actionBarValidator]\r\n },\r\n {\r\n field: \"statusBar\",\r\n validators: [validator_1.Validators.statusBarValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportBarsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportBarsValidator = ReportBarsValidator;\r\nvar ActionBarValidator = /** @class */ (function (_super) {\r\n __extends(ActionBarValidator, _super);\r\n function ActionBarValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ActionBarValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ActionBarValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ActionBarValidator = ActionBarValidator;\r\nvar StatusBarValidator = /** @class */ (function (_super) {\r\n __extends(StatusBarValidator, _super);\r\n function StatusBarValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n StatusBarValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return StatusBarValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.StatusBarValidator = StatusBarValidator;\r\n\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MultipleFieldsValidator = void 0;\r\nvar MultipleFieldsValidator = /** @class */ (function () {\r\n function MultipleFieldsValidator(fieldValidatorsPairs) {\r\n this.fieldValidatorsPairs = fieldValidatorsPairs;\r\n }\r\n MultipleFieldsValidator.prototype.validate = function (input, path, field) {\r\n if (!this.fieldValidatorsPairs) {\r\n return null;\r\n }\r\n var fieldsPath = path ? path + \".\" + field : field;\r\n for (var _i = 0, _a = this.fieldValidatorsPairs; _i < _a.length; _i++) {\r\n var fieldValidators = _a[_i];\r\n for (var _b = 0, _c = fieldValidators.validators; _b < _c.length; _b++) {\r\n var validator = _c[_b];\r\n var errors = validator.validate(input[fieldValidators.field], fieldsPath, fieldValidators.field);\r\n if (errors) {\r\n return errors;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n return MultipleFieldsValidator;\r\n}());\r\nexports.MultipleFieldsValidator = MultipleFieldsValidator;\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(__unused_webpack_module, exports) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.RangeValidator = exports.NumberArrayValidator = exports.BooleanArrayValidator = exports.StringArrayValidator = exports.EnumValidator = exports.SchemaValidator = exports.ValueValidator = exports.NumberValidator = exports.BooleanValidator = exports.StringValidator = exports.TypeValidator = exports.ArrayValidator = exports.ObjectValidator = void 0;\r\nvar ObjectValidator = /** @class */ (function () {\r\n function ObjectValidator() {\r\n }\r\n ObjectValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (typeof input !== \"object\" || Array.isArray(input)) {\r\n return [{\r\n message: field !== undefined ? field + \" must be an object\" : \"input must be an object\",\r\n path: path,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return ObjectValidator;\r\n}());\r\nexports.ObjectValidator = ObjectValidator;\r\nvar ArrayValidator = /** @class */ (function () {\r\n function ArrayValidator(itemValidators) {\r\n this.itemValidators = itemValidators;\r\n }\r\n ArrayValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (!(Array.isArray(input))) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n for (var i = 0; i < input.length; i++) {\r\n var fieldsPath = (path ? path + \".\" : \"\") + field + \".\" + i.toString();\r\n for (var _i = 0, _a = this.itemValidators; _i < _a.length; _i++) {\r\n var validator = _a[_i];\r\n var errors = validator.validate(input[i], fieldsPath, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n return ArrayValidator;\r\n}());\r\nexports.ArrayValidator = ArrayValidator;\r\nvar TypeValidator = /** @class */ (function () {\r\n function TypeValidator(expectedType) {\r\n this.expectedType = expectedType;\r\n }\r\n TypeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (!(typeof input === this.expectedType)) {\r\n return [{\r\n message: field + \" must be a \" + this.expectedType,\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return TypeValidator;\r\n}());\r\nexports.TypeValidator = TypeValidator;\r\nvar StringValidator = /** @class */ (function (_super) {\r\n __extends(StringValidator, _super);\r\n function StringValidator() {\r\n return _super.call(this, \"string\") || this;\r\n }\r\n return StringValidator;\r\n}(TypeValidator));\r\nexports.StringValidator = StringValidator;\r\nvar BooleanValidator = /** @class */ (function (_super) {\r\n __extends(BooleanValidator, _super);\r\n function BooleanValidator() {\r\n return _super.call(this, \"boolean\") || this;\r\n }\r\n return BooleanValidator;\r\n}(TypeValidator));\r\nexports.BooleanValidator = BooleanValidator;\r\nvar NumberValidator = /** @class */ (function (_super) {\r\n __extends(NumberValidator, _super);\r\n function NumberValidator() {\r\n return _super.call(this, \"number\") || this;\r\n }\r\n return NumberValidator;\r\n}(TypeValidator));\r\nexports.NumberValidator = NumberValidator;\r\nvar ValueValidator = /** @class */ (function () {\r\n function ValueValidator(possibleValues) {\r\n this.possibleValues = possibleValues;\r\n }\r\n ValueValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n if (this.possibleValues.indexOf(input) < 0) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"invalid\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return ValueValidator;\r\n}());\r\nexports.ValueValidator = ValueValidator;\r\nvar SchemaValidator = /** @class */ (function (_super) {\r\n __extends(SchemaValidator, _super);\r\n function SchemaValidator(schemaValue) {\r\n var _this = _super.call(this, [schemaValue]) || this;\r\n _this.schemaValue = schemaValue;\r\n return _this;\r\n }\r\n SchemaValidator.prototype.validate = function (input, path, field) {\r\n return _super.prototype.validate.call(this, input, path, field);\r\n };\r\n return SchemaValidator;\r\n}(ValueValidator));\r\nexports.SchemaValidator = SchemaValidator;\r\nvar EnumValidator = /** @class */ (function (_super) {\r\n __extends(EnumValidator, _super);\r\n function EnumValidator(possibleValues) {\r\n var _this = _super.call(this) || this;\r\n _this.possibleValues = possibleValues;\r\n return _this;\r\n }\r\n EnumValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var valueValidator = new ValueValidator(this.possibleValues);\r\n return valueValidator.validate(input, path, field);\r\n };\r\n return EnumValidator;\r\n}(NumberValidator));\r\nexports.EnumValidator = EnumValidator;\r\nvar StringArrayValidator = /** @class */ (function (_super) {\r\n __extends(StringArrayValidator, _super);\r\n function StringArrayValidator() {\r\n return _super.call(this, [new StringValidator()]) || this;\r\n }\r\n StringArrayValidator.prototype.validate = function (input, path, field) {\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" must be an array of strings\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return StringArrayValidator;\r\n}(ArrayValidator));\r\nexports.StringArrayValidator = StringArrayValidator;\r\nvar BooleanArrayValidator = /** @class */ (function (_super) {\r\n __extends(BooleanArrayValidator, _super);\r\n function BooleanArrayValidator() {\r\n return _super.call(this, [new BooleanValidator()]) || this;\r\n }\r\n BooleanArrayValidator.prototype.validate = function (input, path, field) {\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" must be an array of booleans\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return BooleanArrayValidator;\r\n}(ArrayValidator));\r\nexports.BooleanArrayValidator = BooleanArrayValidator;\r\nvar NumberArrayValidator = /** @class */ (function (_super) {\r\n __extends(NumberArrayValidator, _super);\r\n function NumberArrayValidator() {\r\n return _super.call(this, [new NumberValidator()]) || this;\r\n }\r\n NumberArrayValidator.prototype.validate = function (input, path, field) {\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return [{\r\n message: field + \" must be an array of numbers\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"type\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return NumberArrayValidator;\r\n}(ArrayValidator));\r\nexports.NumberArrayValidator = NumberArrayValidator;\r\nvar RangeValidator = /** @class */ (function (_super) {\r\n __extends(RangeValidator, _super);\r\n function RangeValidator(minValue, maxValue) {\r\n var _this = _super.call(this) || this;\r\n _this.minValue = minValue;\r\n _this.maxValue = maxValue;\r\n return _this;\r\n }\r\n RangeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n // input is a number, now check if it's in the given range\r\n if (input > this.maxValue || input < this.minValue) {\r\n return [{\r\n message: field + \" must be a number between \" + this.minValue.toString() + \" and \" + this.maxValue.toString(),\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"range\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return RangeValidator;\r\n}(NumberValidator));\r\nexports.RangeValidator = RangeValidator;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CaptureBookmarkRequestValidator = exports.CaptureBookmarkOptionsValidator = exports.ApplyBookmarkStateRequestValidator = exports.ApplyBookmarkByNameRequestValidator = exports.AddBookmarkRequestValidator = exports.PlayBookmarkRequestValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar PlayBookmarkRequestValidator = /** @class */ (function (_super) {\r\n __extends(PlayBookmarkRequestValidator, _super);\r\n function PlayBookmarkRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PlayBookmarkRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"playMode\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, new typeValidator_1.EnumValidator([0, 1])]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PlayBookmarkRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PlayBookmarkRequestValidator = PlayBookmarkRequestValidator;\r\nvar AddBookmarkRequestValidator = /** @class */ (function (_super) {\r\n __extends(AddBookmarkRequestValidator, _super);\r\n function AddBookmarkRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AddBookmarkRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"state\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"displayName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"apply\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return AddBookmarkRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.AddBookmarkRequestValidator = AddBookmarkRequestValidator;\r\nvar ApplyBookmarkByNameRequestValidator = /** @class */ (function (_super) {\r\n __extends(ApplyBookmarkByNameRequestValidator, _super);\r\n function ApplyBookmarkByNameRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ApplyBookmarkByNameRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ApplyBookmarkByNameRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ApplyBookmarkByNameRequestValidator = ApplyBookmarkByNameRequestValidator;\r\nvar ApplyBookmarkStateRequestValidator = /** @class */ (function (_super) {\r\n __extends(ApplyBookmarkStateRequestValidator, _super);\r\n function ApplyBookmarkStateRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ApplyBookmarkStateRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"state\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ApplyBookmarkStateRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ApplyBookmarkStateRequestValidator = ApplyBookmarkStateRequestValidator;\r\nvar CaptureBookmarkOptionsValidator = /** @class */ (function (_super) {\r\n __extends(CaptureBookmarkOptionsValidator, _super);\r\n function CaptureBookmarkOptionsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CaptureBookmarkOptionsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"personalizeVisuals\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"allPages\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CaptureBookmarkOptionsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CaptureBookmarkOptionsValidator = CaptureBookmarkOptionsValidator;\r\nvar CaptureBookmarkRequestValidator = /** @class */ (function (_super) {\r\n __extends(CaptureBookmarkRequestValidator, _super);\r\n function CaptureBookmarkRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CaptureBookmarkRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"options\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.captureBookmarkOptionsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CaptureBookmarkRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CaptureBookmarkRequestValidator = CaptureBookmarkRequestValidator;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PaginatedReportCommandsValidator = exports.SingleCommandSettingsValidator = exports.CommandsSettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar CommandsSettingsValidator = /** @class */ (function (_super) {\r\n __extends(CommandsSettingsValidator, _super);\r\n function CommandsSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CommandsSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"copy\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"drill\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"drillthrough\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"expandCollapse\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"exportData\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"includeExclude\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"removeVisual\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"search\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"seeData\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"sort\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"spotlight\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"insightsAnalysis\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"addComment\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"groupVisualContainers\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"summarize\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n },\r\n {\r\n field: \"clearSelection\",\r\n validators: [validator_1.Validators.singleCommandSettingsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CommandsSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CommandsSettingsValidator = CommandsSettingsValidator;\r\nvar SingleCommandSettingsValidator = /** @class */ (function (_super) {\r\n __extends(SingleCommandSettingsValidator, _super);\r\n function SingleCommandSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SingleCommandSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"displayOption\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.commandDisplayOptionValidator]\r\n },\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.visualCommandSelectorValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SingleCommandSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SingleCommandSettingsValidator = SingleCommandSettingsValidator;\r\nvar PaginatedReportCommandsValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportCommandsValidator, _super);\r\n function PaginatedReportCommandsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportCommandsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"parameterPanel\",\r\n validators: [validator_1.Validators.parametersPanelValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportCommandsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportCommandsValidator = PaginatedReportCommandsValidator;\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CustomThemeValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar CustomThemeValidator = /** @class */ (function (_super) {\r\n __extends(CustomThemeValidator, _super);\r\n function CustomThemeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CustomThemeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"themeJson\",\r\n validators: [new typeValidator_1.ObjectValidator()]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CustomThemeValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CustomThemeValidator = CustomThemeValidator;\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DashboardLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar DashboardLoadValidator = /** @class */ (function (_super) {\r\n __extends(DashboardLoadValidator, _super);\r\n function DashboardLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DashboardLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"pageView\",\r\n validators: [validator_1.Validators.pageViewFieldValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"embedUrl\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DashboardLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DashboardLoadValidator = DashboardLoadValidator;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.DatasetBindingValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar DatasetBindingValidator = /** @class */ (function (_super) {\r\n __extends(DatasetBindingValidator, _super);\r\n function DatasetBindingValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DatasetBindingValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"datasetId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DatasetBindingValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DatasetBindingValidator = DatasetBindingValidator;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ExportDataRequestValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar ExportDataRequestValidator = /** @class */ (function (_super) {\r\n __extends(ExportDataRequestValidator, _super);\r\n function ExportDataRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExportDataRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"rows\",\r\n validators: [new typeValidator_1.NumberValidator()]\r\n },\r\n {\r\n field: \"exportDataType\",\r\n validators: [new typeValidator_1.EnumValidator([0, 1])]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExportDataRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExportDataRequestValidator = ExportDataRequestValidator;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ExtensionsValidator = exports.MenuGroupExtensionValidator = exports.ExtensionValidator = exports.CommandExtensionValidator = exports.ExtensionItemValidator = exports.ExtensionPointsValidator = exports.GroupedMenuExtensionValidator = exports.FlatMenuExtensionValidator = exports.MenuExtensionBaseValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar MenuExtensionBaseValidator = /** @class */ (function (_super) {\r\n __extends(MenuExtensionBaseValidator, _super);\r\n function MenuExtensionBaseValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MenuExtensionBaseValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"title\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"icon\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return MenuExtensionBaseValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.MenuExtensionBaseValidator = MenuExtensionBaseValidator;\r\nvar FlatMenuExtensionValidator = /** @class */ (function (_super) {\r\n __extends(FlatMenuExtensionValidator, _super);\r\n function FlatMenuExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FlatMenuExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"menuLocation\",\r\n validators: [validator_1.Validators.menuLocationValidator]\r\n },\r\n {\r\n field: \"groupName\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FlatMenuExtensionValidator;\r\n}(MenuExtensionBaseValidator));\r\nexports.FlatMenuExtensionValidator = FlatMenuExtensionValidator;\r\nvar GroupedMenuExtensionValidator = /** @class */ (function (_super) {\r\n __extends(GroupedMenuExtensionValidator, _super);\r\n function GroupedMenuExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n GroupedMenuExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"groupName\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"menuLocation\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return GroupedMenuExtensionValidator;\r\n}(MenuExtensionBaseValidator));\r\nexports.GroupedMenuExtensionValidator = GroupedMenuExtensionValidator;\r\nvar ExtensionPointsValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionPointsValidator, _super);\r\n function ExtensionPointsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionPointsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visualContextMenu\",\r\n validators: [validator_1.Validators.menuExtensionValidator]\r\n },\r\n {\r\n field: \"visualOptionsMenu\",\r\n validators: [validator_1.Validators.menuExtensionValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionPointsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionPointsValidator = ExtensionPointsValidator;\r\nvar ExtensionItemValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionItemValidator, _super);\r\n function ExtensionItemValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionItemValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"extend\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.extensionPointsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionItemValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionItemValidator = ExtensionItemValidator;\r\nvar CommandExtensionValidator = /** @class */ (function (_super) {\r\n __extends(CommandExtensionValidator, _super);\r\n function CommandExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CommandExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"title\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"icon\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.commandExtensionSelectorValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CommandExtensionValidator;\r\n}(ExtensionItemValidator));\r\nexports.CommandExtensionValidator = CommandExtensionValidator;\r\nvar ExtensionValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionValidator, _super);\r\n function ExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"command\",\r\n validators: [validator_1.Validators.commandExtensionValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionValidator = ExtensionValidator;\r\nvar MenuGroupExtensionValidator = /** @class */ (function (_super) {\r\n __extends(MenuGroupExtensionValidator, _super);\r\n function MenuGroupExtensionValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MenuGroupExtensionValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"title\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"menuLocation\",\r\n validators: [validator_1.Validators.menuLocationValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return MenuGroupExtensionValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.MenuGroupExtensionValidator = MenuGroupExtensionValidator;\r\nvar ExtensionsValidator = /** @class */ (function (_super) {\r\n __extends(ExtensionsValidator, _super);\r\n function ExtensionsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExtensionsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"commands\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.commandExtensionArrayValidator]\r\n },\r\n {\r\n field: \"groups\",\r\n validators: [validator_1.Validators.menuGroupExtensionArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ExtensionsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ExtensionsValidator = ExtensionsValidator;\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.OnLoadFiltersValidator = exports.OnLoadFiltersBaseRemoveOperationValidator = exports.OnLoadFiltersBaseValidator = exports.ConditionItemValidator = exports.RemoveFiltersRequestValidator = exports.UpdateFiltersRequestValidator = exports.FilterValidator = exports.HierarchyFilterNodeValidator = exports.HierarchyFilterValidator = exports.IncludeExcludeFilterValidator = exports.NotSupportedFilterValidator = exports.TopNFilterValidator = exports.RelativeTimeFilterValidator = exports.RelativeDateFilterValidator = exports.RelativeDateTimeFilterValidator = exports.AdvancedFilterValidator = exports.BasicFilterValidator = exports.FilterValidatorBase = exports.FilterDisplaySettingsValidator = exports.FilterMeasureTargetValidator = exports.FilterKeyHierarchyTargetValidator = exports.FilterHierarchyTargetValidator = exports.FilterKeyColumnsTargetValidator = exports.FilterColumnTargetValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar FilterColumnTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterColumnTargetValidator, _super);\r\n function FilterColumnTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterColumnTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"table\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"column\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterColumnTargetValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterColumnTargetValidator = FilterColumnTargetValidator;\r\nvar FilterKeyColumnsTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterKeyColumnsTargetValidator, _super);\r\n function FilterKeyColumnsTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterKeyColumnsTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"keys\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringArrayValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterKeyColumnsTargetValidator;\r\n}(FilterColumnTargetValidator));\r\nexports.FilterKeyColumnsTargetValidator = FilterKeyColumnsTargetValidator;\r\nvar FilterHierarchyTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterHierarchyTargetValidator, _super);\r\n function FilterHierarchyTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterHierarchyTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"table\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"hierarchy\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"hierarchyLevel\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterHierarchyTargetValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterHierarchyTargetValidator = FilterHierarchyTargetValidator;\r\nvar FilterKeyHierarchyTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterKeyHierarchyTargetValidator, _super);\r\n function FilterKeyHierarchyTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterKeyHierarchyTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"keys\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringArrayValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterKeyHierarchyTargetValidator;\r\n}(FilterHierarchyTargetValidator));\r\nexports.FilterKeyHierarchyTargetValidator = FilterKeyHierarchyTargetValidator;\r\nvar FilterMeasureTargetValidator = /** @class */ (function (_super) {\r\n __extends(FilterMeasureTargetValidator, _super);\r\n function FilterMeasureTargetValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterMeasureTargetValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"table\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"measure\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterMeasureTargetValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterMeasureTargetValidator = FilterMeasureTargetValidator;\r\nvar FilterDisplaySettingsValidator = /** @class */ (function (_super) {\r\n __extends(FilterDisplaySettingsValidator, _super);\r\n function FilterDisplaySettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterDisplaySettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"isLockedInViewMode\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"isHiddenInViewMode\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"displayName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterDisplaySettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterDisplaySettingsValidator = FilterDisplaySettingsValidator;\r\nvar FilterValidatorBase = /** @class */ (function (_super) {\r\n __extends(FilterValidatorBase, _super);\r\n function FilterValidatorBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterValidatorBase.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"target\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filterTargetValidator]\r\n },\r\n {\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.filterTypeValidator]\r\n },\r\n {\r\n field: \"displaySettings\",\r\n validators: [validator_1.Validators.filterDisplaySettingsValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FilterValidatorBase;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterValidatorBase = FilterValidatorBase;\r\nvar BasicFilterValidator = /** @class */ (function (_super) {\r\n __extends(BasicFilterValidator, _super);\r\n function BasicFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BasicFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"values\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.anyArrayValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.basicFilterTypeValidator]\r\n },\r\n {\r\n field: \"requireSingleSelection\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return BasicFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.BasicFilterValidator = BasicFilterValidator;\r\nvar AdvancedFilterValidator = /** @class */ (function (_super) {\r\n __extends(AdvancedFilterValidator, _super);\r\n function AdvancedFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AdvancedFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"logicalOperator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"conditions\",\r\n validators: [validator_1.Validators.filterConditionsValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.advancedFilterTypeValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return AdvancedFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.AdvancedFilterValidator = AdvancedFilterValidator;\r\nvar RelativeDateTimeFilterValidator = /** @class */ (function (_super) {\r\n __extends(RelativeDateTimeFilterValidator, _super);\r\n function RelativeDateTimeFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RelativeDateTimeFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeDateFilterOperatorValidator]\r\n },\r\n {\r\n field: \"timeUnitsCount\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"timeUnitType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeDateTimeFilterUnitTypeValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.relativeDateTimeFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RelativeDateTimeFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.RelativeDateTimeFilterValidator = RelativeDateTimeFilterValidator;\r\nvar RelativeDateFilterValidator = /** @class */ (function (_super) {\r\n __extends(RelativeDateFilterValidator, _super);\r\n function RelativeDateFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RelativeDateFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"includeToday\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"timeUnitType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeDateFilterTimeUnitTypeValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.relativeDateFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RelativeDateFilterValidator;\r\n}(RelativeDateTimeFilterValidator));\r\nexports.RelativeDateFilterValidator = RelativeDateFilterValidator;\r\nvar RelativeTimeFilterValidator = /** @class */ (function (_super) {\r\n __extends(RelativeTimeFilterValidator, _super);\r\n function RelativeTimeFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RelativeTimeFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"timeUnitType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.relativeTimeFilterTimeUnitTypeValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.relativeTimeFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RelativeTimeFilterValidator;\r\n}(RelativeDateTimeFilterValidator));\r\nexports.RelativeTimeFilterValidator = RelativeTimeFilterValidator;\r\nvar TopNFilterValidator = /** @class */ (function (_super) {\r\n __extends(TopNFilterValidator, _super);\r\n function TopNFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TopNFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"itemCount\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.topNFilterTypeValidator]\r\n },\r\n {\r\n field: \"orderBy\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filterTargetValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TopNFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.TopNFilterValidator = TopNFilterValidator;\r\nvar NotSupportedFilterValidator = /** @class */ (function (_super) {\r\n __extends(NotSupportedFilterValidator, _super);\r\n function NotSupportedFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n NotSupportedFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"message\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"notSupportedTypeName\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.notSupportedFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return NotSupportedFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.NotSupportedFilterValidator = NotSupportedFilterValidator;\r\nvar IncludeExcludeFilterValidator = /** @class */ (function (_super) {\r\n __extends(IncludeExcludeFilterValidator, _super);\r\n function IncludeExcludeFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n IncludeExcludeFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"isExclude\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"values\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.anyArrayValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.includeExludeFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return IncludeExcludeFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.IncludeExcludeFilterValidator = IncludeExcludeFilterValidator;\r\nvar HierarchyFilterValidator = /** @class */ (function (_super) {\r\n __extends(HierarchyFilterValidator, _super);\r\n function HierarchyFilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n HierarchyFilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"hierarchyData\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.hierarchyFilterValuesValidator]\r\n },\r\n {\r\n field: \"filterType\",\r\n validators: [validator_1.Validators.hierarchyFilterTypeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return HierarchyFilterValidator;\r\n}(FilterValidatorBase));\r\nexports.HierarchyFilterValidator = HierarchyFilterValidator;\r\nvar HierarchyFilterNodeValidator = /** @class */ (function (_super) {\r\n __extends(HierarchyFilterNodeValidator, _super);\r\n function HierarchyFilterNodeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n HierarchyFilterNodeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.anyValueValidator]\r\n },\r\n {\r\n field: \"keyValues\",\r\n validators: [validator_1.Validators.anyArrayValidator]\r\n },\r\n {\r\n field: \"children\",\r\n validators: [validator_1.Validators.hierarchyFilterValuesValidator]\r\n },\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return HierarchyFilterNodeValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.HierarchyFilterNodeValidator = HierarchyFilterNodeValidator;\r\nvar FilterValidator = /** @class */ (function (_super) {\r\n __extends(FilterValidator, _super);\r\n function FilterValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FilterValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n return validator_1.Validators.anyFilterValidator.validate(input, path, field);\r\n };\r\n return FilterValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FilterValidator = FilterValidator;\r\nvar UpdateFiltersRequestValidator = /** @class */ (function (_super) {\r\n __extends(UpdateFiltersRequestValidator, _super);\r\n function UpdateFiltersRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n UpdateFiltersRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filtersOperation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsUpdateValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return UpdateFiltersRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.UpdateFiltersRequestValidator = UpdateFiltersRequestValidator;\r\nvar RemoveFiltersRequestValidator = /** @class */ (function (_super) {\r\n __extends(RemoveFiltersRequestValidator, _super);\r\n function RemoveFiltersRequestValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RemoveFiltersRequestValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filtersOperation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsRemoveAllValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return RemoveFiltersRequestValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.RemoveFiltersRequestValidator = RemoveFiltersRequestValidator;\r\nvar ConditionItemValidator = /** @class */ (function (_super) {\r\n __extends(ConditionItemValidator, _super);\r\n function ConditionItemValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ConditionItemValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.anyValueValidator]\r\n },\r\n {\r\n field: \"operator\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ConditionItemValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ConditionItemValidator = ConditionItemValidator;\r\nvar OnLoadFiltersBaseValidator = /** @class */ (function (_super) {\r\n __extends(OnLoadFiltersBaseValidator, _super);\r\n function OnLoadFiltersBaseValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n OnLoadFiltersBaseValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsUpdateValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return OnLoadFiltersBaseValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.OnLoadFiltersBaseValidator = OnLoadFiltersBaseValidator;\r\nvar OnLoadFiltersBaseRemoveOperationValidator = /** @class */ (function (_super) {\r\n __extends(OnLoadFiltersBaseRemoveOperationValidator, _super);\r\n function OnLoadFiltersBaseRemoveOperationValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n OnLoadFiltersBaseRemoveOperationValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"operation\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.filtersOperationsRemoveAllValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.fieldForbiddenValidator, validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return OnLoadFiltersBaseRemoveOperationValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.OnLoadFiltersBaseRemoveOperationValidator = OnLoadFiltersBaseRemoveOperationValidator;\r\nvar OnLoadFiltersValidator = /** @class */ (function (_super) {\r\n __extends(OnLoadFiltersValidator, _super);\r\n function OnLoadFiltersValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n OnLoadFiltersValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"allPages\",\r\n validators: [validator_1.Validators.onLoadFiltersBaseValidator]\r\n },\r\n {\r\n field: \"currentPage\",\r\n validators: [validator_1.Validators.onLoadFiltersBaseValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return OnLoadFiltersValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.OnLoadFiltersValidator = OnLoadFiltersValidator;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PageLayoutValidator = exports.DisplayStateValidator = exports.VisualLayoutValidator = exports.CustomLayoutValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar CustomLayoutValidator = /** @class */ (function (_super) {\r\n __extends(CustomLayoutValidator, _super);\r\n function CustomLayoutValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CustomLayoutValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"pageSize\",\r\n validators: [validator_1.Validators.pageSizeValidator]\r\n },\r\n {\r\n field: \"displayOption\",\r\n validators: [validator_1.Validators.customLayoutDisplayOptionValidator]\r\n },\r\n {\r\n field: \"pagesLayout\",\r\n validators: [validator_1.Validators.pagesLayoutValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CustomLayoutValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CustomLayoutValidator = CustomLayoutValidator;\r\nvar VisualLayoutValidator = /** @class */ (function (_super) {\r\n __extends(VisualLayoutValidator, _super);\r\n function VisualLayoutValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualLayoutValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"x\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"y\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"z\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"width\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"height\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"displayState\",\r\n validators: [validator_1.Validators.displayStateValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualLayoutValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualLayoutValidator = VisualLayoutValidator;\r\nvar DisplayStateValidator = /** @class */ (function (_super) {\r\n __extends(DisplayStateValidator, _super);\r\n function DisplayStateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DisplayStateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"mode\",\r\n validators: [validator_1.Validators.displayStateModeValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DisplayStateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DisplayStateValidator = DisplayStateValidator;\r\nvar PageLayoutValidator = /** @class */ (function (_super) {\r\n __extends(PageLayoutValidator, _super);\r\n function PageLayoutValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageLayoutValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visualsLayout\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.pageLayoutValidator]\r\n },\r\n {\r\n field: \"defaultLayout\",\r\n validators: [validator_1.Validators.visualLayoutValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageLayoutValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageLayoutValidator = PageLayoutValidator;\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PageViewFieldValidator = exports.PageValidator = exports.CustomPageSizeValidator = exports.PageSizeValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar PageSizeValidator = /** @class */ (function (_super) {\r\n __extends(PageSizeValidator, _super);\r\n function PageSizeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageSizeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"type\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.pageSizeTypeValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageSizeValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageSizeValidator = PageSizeValidator;\r\nvar CustomPageSizeValidator = /** @class */ (function (_super) {\r\n __extends(CustomPageSizeValidator, _super);\r\n function CustomPageSizeValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CustomPageSizeValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"width\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"height\",\r\n validators: [validator_1.Validators.numberValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CustomPageSizeValidator;\r\n}(PageSizeValidator));\r\nexports.CustomPageSizeValidator = CustomPageSizeValidator;\r\nvar PageValidator = /** @class */ (function (_super) {\r\n __extends(PageValidator, _super);\r\n function PageValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageValidator = PageValidator;\r\nvar PageViewFieldValidator = /** @class */ (function (_super) {\r\n __extends(PageViewFieldValidator, _super);\r\n function PageViewFieldValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageViewFieldValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var possibleValues = [\"actualSize\", \"fitToWidth\", \"oneColumn\"];\r\n if (possibleValues.indexOf(input) < 0) {\r\n return [{\r\n message: \"pageView must be a string with one of the following values: \\\"actualSize\\\", \\\"fitToWidth\\\", \\\"oneColumn\\\"\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return PageViewFieldValidator;\r\n}(typeValidator_1.StringValidator));\r\nexports.PageViewFieldValidator = PageViewFieldValidator;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.VisualizationsPaneValidator = exports.SyncSlicersPaneValidator = exports.SelectionPaneValidator = exports.PageNavigationPaneValidator = exports.FiltersPaneValidator = exports.FieldsPaneValidator = exports.BookmarksPaneValidator = exports.QnaPanesValidator = exports.ReportPanesValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ReportPanesValidator = /** @class */ (function (_super) {\r\n __extends(ReportPanesValidator, _super);\r\n function ReportPanesValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportPanesValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"bookmarks\",\r\n validators: [validator_1.Validators.bookmarksPaneValidator]\r\n },\r\n {\r\n field: \"fields\",\r\n validators: [validator_1.Validators.fieldsPaneValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.filtersPaneValidator]\r\n },\r\n {\r\n field: \"pageNavigation\",\r\n validators: [validator_1.Validators.pageNavigationPaneValidator]\r\n },\r\n {\r\n field: \"selection\",\r\n validators: [validator_1.Validators.selectionPaneValidator]\r\n },\r\n {\r\n field: \"syncSlicers\",\r\n validators: [validator_1.Validators.syncSlicersPaneValidator]\r\n },\r\n {\r\n field: \"visualizations\",\r\n validators: [validator_1.Validators.visualizationsPaneValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportPanesValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportPanesValidator = ReportPanesValidator;\r\nvar QnaPanesValidator = /** @class */ (function (_super) {\r\n __extends(QnaPanesValidator, _super);\r\n function QnaPanesValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QnaPanesValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.filtersPaneValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QnaPanesValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QnaPanesValidator = QnaPanesValidator;\r\nvar BookmarksPaneValidator = /** @class */ (function (_super) {\r\n __extends(BookmarksPaneValidator, _super);\r\n function BookmarksPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BookmarksPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return BookmarksPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.BookmarksPaneValidator = BookmarksPaneValidator;\r\nvar FieldsPaneValidator = /** @class */ (function (_super) {\r\n __extends(FieldsPaneValidator, _super);\r\n function FieldsPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FieldsPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FieldsPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FieldsPaneValidator = FieldsPaneValidator;\r\nvar FiltersPaneValidator = /** @class */ (function (_super) {\r\n __extends(FiltersPaneValidator, _super);\r\n function FiltersPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FiltersPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return FiltersPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.FiltersPaneValidator = FiltersPaneValidator;\r\nvar PageNavigationPaneValidator = /** @class */ (function (_super) {\r\n __extends(PageNavigationPaneValidator, _super);\r\n function PageNavigationPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageNavigationPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"position\",\r\n validators: [validator_1.Validators.pageNavigationPositionValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PageNavigationPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PageNavigationPaneValidator = PageNavigationPaneValidator;\r\nvar SelectionPaneValidator = /** @class */ (function (_super) {\r\n __extends(SelectionPaneValidator, _super);\r\n function SelectionPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SelectionPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SelectionPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SelectionPaneValidator = SelectionPaneValidator;\r\nvar SyncSlicersPaneValidator = /** @class */ (function (_super) {\r\n __extends(SyncSlicersPaneValidator, _super);\r\n function SyncSlicersPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SyncSlicersPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SyncSlicersPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SyncSlicersPaneValidator = SyncSlicersPaneValidator;\r\nvar VisualizationsPaneValidator = /** @class */ (function (_super) {\r\n __extends(VisualizationsPaneValidator, _super);\r\n function VisualizationsPaneValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualizationsPaneValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualizationsPaneValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualizationsPaneValidator = VisualizationsPaneValidator;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.QnaInterpretInputDataValidator = exports.QnaSettingsValidator = exports.LoadQnaValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar LoadQnaValidator = /** @class */ (function (_super) {\r\n __extends(LoadQnaValidator, _super);\r\n function LoadQnaValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n LoadQnaValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasetIds\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringArrayValidator]\r\n },\r\n {\r\n field: \"question\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"viewMode\",\r\n validators: [validator_1.Validators.viewModeValidator]\r\n },\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.qnaSettingValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return LoadQnaValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.LoadQnaValidator = LoadQnaValidator;\r\nvar QnaSettingsValidator = /** @class */ (function (_super) {\r\n __extends(QnaSettingsValidator, _super);\r\n function QnaSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QnaSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filterPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"hideErrors\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"panes\",\r\n validators: [validator_1.Validators.qnaPanesValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QnaSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QnaSettingsValidator = QnaSettingsValidator;\r\nvar QnaInterpretInputDataValidator = /** @class */ (function (_super) {\r\n __extends(QnaInterpretInputDataValidator, _super);\r\n function QnaInterpretInputDataValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QnaInterpretInputDataValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"datasetIds\",\r\n validators: [validator_1.Validators.stringArrayValidator]\r\n },\r\n {\r\n field: \"question\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QnaInterpretInputDataValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QnaInterpretInputDataValidator = QnaInterpretInputDataValidator;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReportCreateValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ReportCreateValidator = /** @class */ (function (_super) {\r\n __extends(ReportCreateValidator, _super);\r\n function ReportCreateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportCreateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasetId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"theme\",\r\n validators: [validator_1.Validators.customThemeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportCreateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportCreateValidator = ReportCreateValidator;\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReportLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ReportLoadValidator = /** @class */ (function (_super) {\r\n __extends(ReportLoadValidator, _super);\r\n function ReportLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReportLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.settingsValidator]\r\n },\r\n {\r\n field: \"pageName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.reportLoadFiltersValidator]\r\n },\r\n {\r\n field: \"permissions\",\r\n validators: [validator_1.Validators.permissionsValidator]\r\n },\r\n {\r\n field: \"viewMode\",\r\n validators: [validator_1.Validators.viewModeValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"bookmark\",\r\n validators: [validator_1.Validators.applyBookmarkValidator]\r\n },\r\n {\r\n field: \"theme\",\r\n validators: [validator_1.Validators.customThemeValidator]\r\n },\r\n {\r\n field: \"embedUrl\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasetBinding\",\r\n validators: [validator_1.Validators.datasetBindingValidator]\r\n },\r\n {\r\n field: \"contrastMode\",\r\n validators: [validator_1.Validators.contrastModeValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ReportLoadValidator = ReportLoadValidator;\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReportParameterFieldsValidator = exports.PaginatedReportLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar PaginatedReportLoadValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportLoadValidator, _super);\r\n function PaginatedReportLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.paginatedReportsettingsValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"embedUrl\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"type\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"parameterValues\",\r\n validators: [validator_1.Validators.parameterValuesArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportLoadValidator = PaginatedReportLoadValidator;\r\nvar ReportParameterFieldsValidator = /** @class */ (function () {\r\n function ReportParameterFieldsValidator() {\r\n }\r\n ReportParameterFieldsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"value\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ReportParameterFieldsValidator;\r\n}());\r\nexports.ReportParameterFieldsValidator = ReportParameterFieldsValidator;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SaveAsParametersValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar SaveAsParametersValidator = /** @class */ (function (_super) {\r\n __extends(SaveAsParametersValidator, _super);\r\n function SaveAsParametersValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SaveAsParametersValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SaveAsParametersValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SaveAsParametersValidator = SaveAsParametersValidator;\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SlicerTargetSelectorValidator = exports.VisualTypeSelectorValidator = exports.VisualSelectorValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar typeValidator_2 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar VisualSelectorValidator = /** @class */ (function (_super) {\r\n __extends(VisualSelectorValidator, _super);\r\n function VisualSelectorValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualSelectorValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n // Not required for this selector only - Backward compatibility\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.stringValidator, new typeValidator_2.SchemaValidator(\"http://powerbi.com/product/schema#visualSelector\")]\r\n },\r\n {\r\n field: \"visualName\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualSelectorValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualSelectorValidator = VisualSelectorValidator;\r\nvar VisualTypeSelectorValidator = /** @class */ (function (_super) {\r\n __extends(VisualTypeSelectorValidator, _super);\r\n function VisualTypeSelectorValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualTypeSelectorValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator, new typeValidator_2.SchemaValidator(\"http://powerbi.com/product/schema#visualTypeSelector\")]\r\n },\r\n {\r\n field: \"visualType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualTypeSelectorValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualTypeSelectorValidator = VisualTypeSelectorValidator;\r\nvar SlicerTargetSelectorValidator = /** @class */ (function (_super) {\r\n __extends(SlicerTargetSelectorValidator, _super);\r\n function SlicerTargetSelectorValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SlicerTargetSelectorValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"$schema\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator, new typeValidator_2.SchemaValidator(\"http://powerbi.com/product/schema#slicerTargetSelector\")]\r\n },\r\n {\r\n field: \"target\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.slicerTargetValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SlicerTargetSelectorValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SlicerTargetSelectorValidator = SlicerTargetSelectorValidator;\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PaginatedReportSettingsValidator = exports.SettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar SettingsValidator = /** @class */ (function (_super) {\r\n __extends(SettingsValidator, _super);\r\n function SettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filterPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"navContentPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"bookmarksPaneEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"useCustomSaveAsDialog\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"extensions\",\r\n validators: [validator_1.Validators.extensionsValidator]\r\n },\r\n {\r\n field: \"layoutType\",\r\n validators: [validator_1.Validators.layoutTypeValidator]\r\n },\r\n {\r\n field: \"customLayout\",\r\n validators: [validator_1.Validators.customLayoutValidator]\r\n },\r\n {\r\n field: \"background\",\r\n validators: [validator_1.Validators.backgroundValidator]\r\n },\r\n {\r\n field: \"visualSettings\",\r\n validators: [validator_1.Validators.visualSettingsValidator]\r\n },\r\n {\r\n field: \"hideErrors\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"commands\",\r\n validators: [validator_1.Validators.commandsSettingsArrayValidator]\r\n },\r\n {\r\n field: \"hyperlinkClickBehavior\",\r\n validators: [validator_1.Validators.hyperlinkClickBehaviorValidator]\r\n },\r\n {\r\n field: \"bars\",\r\n validators: [validator_1.Validators.reportBarsValidator]\r\n },\r\n {\r\n field: \"panes\",\r\n validators: [validator_1.Validators.reportPanesValidator]\r\n },\r\n {\r\n field: \"personalBookmarksEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"persistentFiltersEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"visualRenderedEvents\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"authoringHintsEnabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"printSettings\",\r\n validators: [validator_1.Validators.printSettingsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SettingsValidator = SettingsValidator;\r\nvar PaginatedReportSettingsValidator = /** @class */ (function (_super) {\r\n __extends(PaginatedReportSettingsValidator, _super);\r\n function PaginatedReportSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PaginatedReportSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"commands\",\r\n validators: [validator_1.Validators.paginatedReportCommandsValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PaginatedReportSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PaginatedReportSettingsValidator = PaginatedReportSettingsValidator;\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SlicerStateValidator = exports.SlicerValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar SlicerValidator = /** @class */ (function (_super) {\r\n __extends(SlicerValidator, _super);\r\n function SlicerValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SlicerValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.slicerSelectorValidator]\r\n },\r\n {\r\n field: \"state\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.slicerStateValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SlicerValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SlicerValidator = SlicerValidator;\r\nvar SlicerStateValidator = /** @class */ (function (_super) {\r\n __extends(SlicerStateValidator, _super);\r\n function SlicerStateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SlicerStateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"filters\",\r\n validators: [validator_1.Validators.filtersArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return SlicerStateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.SlicerStateValidator = SlicerStateValidator;\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TileLoadValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar TileLoadValidator = /** @class */ (function (_super) {\r\n __extends(TileLoadValidator, _super);\r\n function TileLoadValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TileLoadValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"id\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"dashboardId\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"pageView\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"width\",\r\n validators: [validator_1.Validators.numberValidator]\r\n },\r\n {\r\n field: \"height\",\r\n validators: [validator_1.Validators.numberValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TileLoadValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.TileLoadValidator = TileLoadValidator;\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.VisualHeaderValidator = exports.VisualHeaderSettingsValidator = exports.VisualSettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar VisualSettingsValidator = /** @class */ (function (_super) {\r\n __extends(VisualSettingsValidator, _super);\r\n function VisualSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visualHeaders\",\r\n validators: [validator_1.Validators.visualHeadersValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualSettingsValidator = VisualSettingsValidator;\r\nvar VisualHeaderSettingsValidator = /** @class */ (function (_super) {\r\n __extends(VisualHeaderSettingsValidator, _super);\r\n function VisualHeaderSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualHeaderSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"visible\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualHeaderSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualHeaderSettingsValidator = VisualHeaderSettingsValidator;\r\nvar VisualHeaderValidator = /** @class */ (function (_super) {\r\n __extends(VisualHeaderValidator, _super);\r\n function VisualHeaderValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n VisualHeaderValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"settings\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.visualHeaderSettingsValidator]\r\n },\r\n {\r\n field: \"selector\",\r\n validators: [validator_1.Validators.visualHeaderSelectorValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return VisualHeaderValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.VisualHeaderValidator = VisualHeaderValidator;\r\n\n\n/***/ }),\n/* 26 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.AnyOfValidator = void 0;\r\nvar AnyOfValidator = /** @class */ (function () {\r\n function AnyOfValidator(validators) {\r\n this.validators = validators;\r\n }\r\n AnyOfValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var valid = false;\r\n for (var _i = 0, _a = this.validators; _i < _a.length; _i++) {\r\n var validator = _a[_i];\r\n var errors = validator.validate(input, path, field);\r\n if (!errors) {\r\n valid = true;\r\n break;\r\n }\r\n }\r\n if (!valid) {\r\n return [{\r\n message: field + \" property is invalid\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"invalid\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return AnyOfValidator;\r\n}());\r\nexports.AnyOfValidator = AnyOfValidator;\r\n\n\n/***/ }),\n/* 27 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.FieldForbiddenValidator = void 0;\r\nvar FieldForbiddenValidator = /** @class */ (function () {\r\n function FieldForbiddenValidator() {\r\n }\r\n FieldForbiddenValidator.prototype.validate = function (input, path, field) {\r\n if (input !== undefined) {\r\n return [{\r\n message: field + \" is forbidden\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"forbidden\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return FieldForbiddenValidator;\r\n}());\r\nexports.FieldForbiddenValidator = FieldForbiddenValidator;\r\n\n\n/***/ }),\n/* 28 */\n/***/ ((__unused_webpack_module, exports) => {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.FieldRequiredValidator = void 0;\r\nvar FieldRequiredValidator = /** @class */ (function () {\r\n function FieldRequiredValidator() {\r\n }\r\n FieldRequiredValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return [{\r\n message: field + \" is required\",\r\n path: (path ? path + \".\" : \"\") + field,\r\n keyword: \"required\"\r\n }];\r\n }\r\n return null;\r\n };\r\n return FieldRequiredValidator;\r\n}());\r\nexports.FieldRequiredValidator = FieldRequiredValidator;\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MapValidator = void 0;\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar MapValidator = /** @class */ (function (_super) {\r\n __extends(MapValidator, _super);\r\n function MapValidator(keyValidators, valueValidators) {\r\n var _this = _super.call(this) || this;\r\n _this.keyValidators = keyValidators;\r\n _this.valueValidators = valueValidators;\r\n return _this;\r\n }\r\n MapValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n for (var key in input) {\r\n if (input.hasOwnProperty(key)) {\r\n var fieldsPath = (path ? path + \".\" : \"\") + field + \".\" + key;\r\n for (var _i = 0, _a = this.keyValidators; _i < _a.length; _i++) {\r\n var keyValidator = _a[_i];\r\n errors = keyValidator.validate(key, fieldsPath, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n }\r\n for (var _b = 0, _c = this.valueValidators; _b < _c.length; _b++) {\r\n var valueValidator = _c[_b];\r\n errors = valueValidator.validate(input[key], fieldsPath, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n return MapValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.MapValidator = MapValidator;\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ParametersPanelValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar ParametersPanelValidator = /** @class */ (function (_super) {\r\n __extends(ParametersPanelValidator, _super);\r\n function ParametersPanelValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ParametersPanelValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"expanded\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n },\r\n {\r\n field: \"enabled\",\r\n validators: [validator_1.Validators.booleanValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ParametersPanelValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ParametersPanelValidator = ParametersPanelValidator;\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TableDataValidator = exports.TableSchemaValidator = exports.ColumnSchemaValidator = exports.CredentialsValidator = exports.DatasourceConnectionConfigValidator = exports.DatasetCreateConfigValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar DatasetCreateConfigValidator = /** @class */ (function (_super) {\r\n __extends(DatasetCreateConfigValidator, _super);\r\n function DatasetCreateConfigValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DatasetCreateConfigValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"locale\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"mashupDocument\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"datasourceConnectionConfig\",\r\n validators: [validator_1.Validators.datasourceConnectionConfigValidator]\r\n },\r\n {\r\n field: \"tableSchemaList\",\r\n validators: [validator_1.Validators.tableSchemaListValidator]\r\n },\r\n {\r\n field: \"data\",\r\n validators: [validator_1.Validators.tableDataArrayValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n errors = multipleFieldsValidator.validate(input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n if (input[\"datasourceConnectionConfig\"] && input[\"mashupDocument\"] == null) {\r\n return [{\r\n message: \"mashupDocument cannot be empty when datasourceConnectionConfig is presented\"\r\n }];\r\n }\r\n if (input[\"data\"] && input[\"tableSchemaList\"] == null) {\r\n return [{\r\n message: \"tableSchemaList cannot be empty when data is provided\"\r\n }];\r\n }\r\n if (input[\"data\"] == null && input[\"mashupDocument\"] == null) {\r\n return [{\r\n message: \"At least one of data or mashupDocument must be provided\"\r\n }];\r\n }\r\n };\r\n return DatasetCreateConfigValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DatasetCreateConfigValidator = DatasetCreateConfigValidator;\r\nvar DatasourceConnectionConfigValidator = /** @class */ (function (_super) {\r\n __extends(DatasourceConnectionConfigValidator, _super);\r\n function DatasourceConnectionConfigValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DatasourceConnectionConfigValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"dataCacheMode\",\r\n validators: [validator_1.Validators.dataCacheModeValidator]\r\n },\r\n {\r\n field: \"credentials\",\r\n validators: [validator_1.Validators.credentialsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return DatasourceConnectionConfigValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.DatasourceConnectionConfigValidator = DatasourceConnectionConfigValidator;\r\nvar CredentialsValidator = /** @class */ (function (_super) {\r\n __extends(CredentialsValidator, _super);\r\n function CredentialsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CredentialsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"credentialType\",\r\n validators: [validator_1.Validators.credentialTypeValidator]\r\n },\r\n {\r\n field: \"credentialDetails\",\r\n validators: [validator_1.Validators.credentialDetailsValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return CredentialsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.CredentialsValidator = CredentialsValidator;\r\nvar ColumnSchemaValidator = /** @class */ (function (_super) {\r\n __extends(ColumnSchemaValidator, _super);\r\n function ColumnSchemaValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ColumnSchemaValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"displayName\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"dataType\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return ColumnSchemaValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.ColumnSchemaValidator = ColumnSchemaValidator;\r\nvar TableSchemaValidator = /** @class */ (function (_super) {\r\n __extends(TableSchemaValidator, _super);\r\n function TableSchemaValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TableSchemaValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"columns\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.columnSchemaArrayValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TableSchemaValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.TableSchemaValidator = TableSchemaValidator;\r\nvar TableDataValidator = /** @class */ (function (_super) {\r\n __extends(TableDataValidator, _super);\r\n function TableDataValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TableDataValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"name\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"rows\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.rawDataValidator]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return TableDataValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.TableDataValidator = TableDataValidator;\r\n\n\n/***/ }),\n/* 32 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.QuickCreateValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar validator_1 = __webpack_require__(1);\r\nvar QuickCreateValidator = /** @class */ (function (_super) {\r\n __extends(QuickCreateValidator, _super);\r\n function QuickCreateValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QuickCreateValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"accessToken\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"groupId\",\r\n validators: [validator_1.Validators.stringValidator]\r\n },\r\n {\r\n field: \"tokenType\",\r\n validators: [validator_1.Validators.tokenTypeValidator]\r\n },\r\n {\r\n field: \"theme\",\r\n validators: [validator_1.Validators.customThemeValidator]\r\n },\r\n {\r\n field: \"datasetCreateConfig\",\r\n validators: [validator_1.Validators.fieldRequiredValidator, validator_1.Validators.datasetCreateConfigValidator]\r\n },\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return QuickCreateValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.QuickCreateValidator = QuickCreateValidator;\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.PrintSettingsValidator = void 0;\r\nvar multipleFieldsValidator_1 = __webpack_require__(3);\r\nvar typeValidator_1 = __webpack_require__(4);\r\nvar PrintSettingsValidator = /** @class */ (function (_super) {\r\n __extends(PrintSettingsValidator, _super);\r\n function PrintSettingsValidator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PrintSettingsValidator.prototype.validate = function (input, path, field) {\r\n if (input == null) {\r\n return null;\r\n }\r\n var errors = _super.prototype.validate.call(this, input, path, field);\r\n if (errors) {\r\n return errors;\r\n }\r\n var fields = [\r\n {\r\n field: \"browserPrintAdjustmentsMode\",\r\n validators: [new typeValidator_1.EnumValidator([0, 1])]\r\n }\r\n ];\r\n var multipleFieldsValidator = new multipleFieldsValidator_1.MultipleFieldsValidator(fields);\r\n return multipleFieldsValidator.validate(input, path, field);\r\n };\r\n return PrintSettingsValidator;\r\n}(typeValidator_1.ObjectValidator));\r\nexports.PrintSettingsValidator = PrintSettingsValidator;\r\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(0);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=models.js.map\r\n// SIG // Begin signature block\r\n// SIG // MIIrSwYJKoZIhvcNAQcCoIIrPDCCKzgCAQExDzANBglg\r\n// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor\r\n// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC\r\n// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg\r\n// SIG // xLtrVunVRrJVSWB0LPK/F3mt1yXA1Ex5UedxSKIGn6Kg\r\n// SIG // ghFuMIIIfjCCB2agAwIBAgITNgAAAahTK9ZQq6y5UwAC\r\n// SIG // AAABqDANBgkqhkiG9w0BAQsFADBBMRMwEQYKCZImiZPy\r\n// SIG // LGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRUw\r\n// SIG // EwYDVQQDEwxBTUUgQ1MgQ0EgMDEwHhcNMjIwNjEwMTgy\r\n// SIG // NzAzWhcNMjMwNjEwMTgyNzAzWjAkMSIwIAYDVQQDExlN\r\n// SIG // aWNyb3NvZnQgQXp1cmUgQ29kZSBTaWduMIIBIjANBgkq\r\n// SIG // hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnEdeHxP889b7\r\n// SIG // mrwL0Z0koWl4LoJ+zeHJ7UDmhaQAxyRIIw9tXSK910U/\r\n// SIG // pTle2lfbvL9vZR1U8zyRwy6WaVNT/rh+wOm9AKqrsbaB\r\n// SIG // qlCsTRliD/TIgibyDuKIf/aV+Aok1yvoWVg2eNn/06XE\r\n// SIG // bXA/k554/MzRFwxHJNnO9dGc8hke+UZxb94AZB6JWfXQ\r\n// SIG // 3xzYYQtPQmVsTI2iQ/aDYkkS+nIgs/IjbConhB93V4oc\r\n// SIG // 4rL8r9C5D29kDOZRQ2Y2/1eqXV5wb7QSdahpxk3457cf\r\n// SIG // caTGsmz6nPQq7DqO9RqDO5dYD22V5bGQkf5wMhC0jlQq\r\n// SIG // 1qFAhbD3nkXka5eErruzcwIDAQABo4IFijCCBYYwKQYJ\r\n// SIG // KwYBBAGCNxUKBBwwGjAMBgorBgEEAYI3WwEBMAoGCCsG\r\n// SIG // AQUFBwMDMD0GCSsGAQQBgjcVBwQwMC4GJisGAQQBgjcV\r\n// SIG // CIaQ4w2E1bR4hPGLPoWb3RbOnRKBYIPdzWaGlIwyAgFk\r\n// SIG // AgEMMIICdgYIKwYBBQUHAQEEggJoMIICZDBiBggrBgEF\r\n// SIG // BQcwAoZWaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br\r\n// SIG // aWluZnJhL0NlcnRzL0JZMlBLSUNTQ0EwMS5BTUUuR0JM\r\n// SIG // X0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQwUgYIKwYB\r\n// SIG // BQUHMAKGRmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JZ\r\n// SIG // MlBLSUNTQ0EwMS5BTUUuR0JMX0FNRSUyMENTJTIwQ0El\r\n// SIG // MjAwMSgyKS5jcnQwUgYIKwYBBQUHMAKGRmh0dHA6Ly9j\r\n// SIG // cmwyLmFtZS5nYmwvYWlhL0JZMlBLSUNTQ0EwMS5BTUUu\r\n// SIG // R0JMX0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQwUgYI\r\n// SIG // KwYBBQUHMAKGRmh0dHA6Ly9jcmwzLmFtZS5nYmwvYWlh\r\n// SIG // L0JZMlBLSUNTQ0EwMS5BTUUuR0JMX0FNRSUyMENTJTIw\r\n// SIG // Q0ElMjAwMSgyKS5jcnQwUgYIKwYBBQUHMAKGRmh0dHA6\r\n// SIG // Ly9jcmw0LmFtZS5nYmwvYWlhL0JZMlBLSUNTQ0EwMS5B\r\n// SIG // TUUuR0JMX0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQw\r\n// SIG // ga0GCCsGAQUFBzAChoGgbGRhcDovLy9DTj1BTUUlMjBD\r\n// SIG // UyUyMENBJTIwMDEsQ049QUlBLENOPVB1YmxpYyUyMEtl\r\n// SIG // eSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZp\r\n// SIG // Z3VyYXRpb24sREM9QU1FLERDPUdCTD9jQUNlcnRpZmlj\r\n// SIG // YXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\r\n// SIG // bkF1dGhvcml0eTAdBgNVHQ4EFgQUUchb+1j7hxhVLQdr\r\n// SIG // TBwsRVxqi/IwDgYDVR0PAQH/BAQDAgeAMEUGA1UdEQQ+\r\n// SIG // MDykOjA4MR4wHAYDVQQLExVNaWNyb3NvZnQgQ29ycG9y\r\n// SIG // YXRpb24xFjAUBgNVBAUTDTIzNjE2Nys0NzA4NjAwggHm\r\n// SIG // BgNVHR8EggHdMIIB2TCCAdWgggHRoIIBzYY/aHR0cDov\r\n// SIG // L2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9B\r\n// SIG // TUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFodHRwOi8v\r\n// SIG // Y3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENBJTIw\r\n// SIG // MDEoMikuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2Ny\r\n// SIG // bC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFodHRw\r\n// SIG // Oi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENB\r\n// SIG // JTIwMDEoMikuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2Js\r\n// SIG // L2NybC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshoG9\r\n// SIG // bGRhcDovLy9DTj1BTUUlMjBDUyUyMENBJTIwMDEoMiks\r\n// SIG // Q049QlkyUEtJQ1NDQTAxLENOPUNEUCxDTj1QdWJsaWMl\r\n// SIG // MjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1D\r\n// SIG // b25maWd1cmF0aW9uLERDPUFNRSxEQz1HQkw/Y2VydGlm\r\n// SIG // aWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENs\r\n// SIG // YXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MB8GA1UdIwQY\r\n// SIG // MBaAFJZRhOBrb3v+2Aarw/KF5imuavnUMB8GA1UdJQQY\r\n// SIG // MBYGCisGAQQBgjdbAQEGCCsGAQUFBwMDMA0GCSqGSIb3\r\n// SIG // DQEBCwUAA4IBAQAOoFAbE6qv+1RAKHjMn56sREYNiKvh\r\n// SIG // i11baGKOgpeVXuKztX5x9fQ2/DpXdUOkVe0w6cVoute2\r\n// SIG // 4WQACXKU+8ANjEMqaJq5DqsR52Q86V6LvjUQwMSfNgnj\r\n// SIG // nb+mktUX1s8gNAQ2NUWsqG+Q0cmKbEGNFjnbsFvCKgDH\r\n// SIG // OFHVJaYb5tNCU0nkWkMn1aA0y78u2wLvaQhSSx3I2A8O\r\n// SIG // WLXWXahlAhV8ZEF04UatM/QwA5DubCgiUwK/TCXfRohY\r\n// SIG // IouOD4h4MQ533o0sC3kVzvhSXdk2DXmgyBqzHrP+tJPQ\r\n// SIG // A8IK5AJweyeJrKpdN39ZxV961rru4GXgQMfZ4L6+5v09\r\n// SIG // zP/7MIII6DCCBtCgAwIBAgITHwAAAFHqj/accwyoOwAA\r\n// SIG // AAAAUTANBgkqhkiG9w0BAQsFADA8MRMwEQYKCZImiZPy\r\n// SIG // LGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRAw\r\n// SIG // DgYDVQQDEwdhbWVyb290MB4XDTIxMDUyMTE4NDQxNFoX\r\n// SIG // DTI2MDUyMTE4NTQxNFowQTETMBEGCgmSJomT8ixkARkW\r\n// SIG // A0dCTDETMBEGCgmSJomT8ixkARkWA0FNRTEVMBMGA1UE\r\n// SIG // AxMMQU1FIENTIENBIDAxMIIBIjANBgkqhkiG9w0BAQEF\r\n// SIG // AAOCAQ8AMIIBCgKCAQEAyZpSCX0Bno1W1yqXMhT6BUlJ\r\n// SIG // ZWpa4p3xFeiTHO4vm2Q6C/azR5xwxnyYHrkSGDtS2P9X\r\n// SIG // +KDE64V20mmEQkubxnPNeOVnE2RvdPGxgwlq+BhS3ONd\r\n// SIG // VsQPj79q7XgHM9HhzB9+qk0PC9KN1zm9p/seyiRS6JF1\r\n// SIG // dbOqRf1pUl7FAVxmgiCFgV8hHIb/rDPXig7FDi3S0yEx\r\n// SIG // 2CUDVpIq8jEhG8anUFE1WYxM+ni0S5KHwwKPKV4qyGDo\r\n// SIG // DO+9AmDoma3Chyu5WDlW5cdtqXTWsGPE3umtnX6Amlld\r\n// SIG // UFLms4OVR4guKf+n5LIBCC6bTiocfXPomqYjYTKx7AGM\r\n// SIG // faVLaaXmhQIDAQABo4IE3DCCBNgwEgYJKwYBBAGCNxUB\r\n// SIG // BAUCAwIAAjAjBgkrBgEEAYI3FQIEFgQUEmgkQiFHy9Rr\r\n// SIG // vjHPIKTACyN/P0cwHQYDVR0OBBYEFJZRhOBrb3v+2Aar\r\n// SIG // w/KF5imuavnUMIIBBAYDVR0lBIH8MIH5BgcrBgEFAgMF\r\n// SIG // BggrBgEFBQcDAQYIKwYBBQUHAwIGCisGAQQBgjcUAgEG\r\n// SIG // CSsGAQQBgjcVBgYKKwYBBAGCNwoDDAYJKwYBBAGCNxUG\r\n// SIG // BggrBgEFBQcDCQYIKwYBBQUIAgIGCisGAQQBgjdAAQEG\r\n// SIG // CysGAQQBgjcKAwQBBgorBgEEAYI3CgMEBgkrBgEEAYI3\r\n// SIG // FQUGCisGAQQBgjcUAgIGCisGAQQBgjcUAgMGCCsGAQUF\r\n// SIG // BwMDBgorBgEEAYI3WwEBBgorBgEEAYI3WwIBBgorBgEE\r\n// SIG // AYI3WwMBBgorBgEEAYI3WwUBBgorBgEEAYI3WwQBBgor\r\n// SIG // BgEEAYI3WwQCMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIA\r\n// SIG // QwBBMAsGA1UdDwQEAwIBhjASBgNVHRMBAf8ECDAGAQH/\r\n// SIG // AgEAMB8GA1UdIwQYMBaAFCleUV5krjS566ycDaeMdQHR\r\n// SIG // CQsoMIIBaAYDVR0fBIIBXzCCAVswggFXoIIBU6CCAU+G\r\n// SIG // MWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2lpbmZy\r\n// SIG // YS9jcmwvYW1lcm9vdC5jcmyGI2h0dHA6Ly9jcmwyLmFt\r\n// SIG // ZS5nYmwvY3JsL2FtZXJvb3QuY3JshiNodHRwOi8vY3Js\r\n// SIG // My5hbWUuZ2JsL2NybC9hbWVyb290LmNybIYjaHR0cDov\r\n// SIG // L2NybDEuYW1lLmdibC9jcmwvYW1lcm9vdC5jcmyGgaps\r\n// SIG // ZGFwOi8vL0NOPWFtZXJvb3QsQ049QU1FUm9vdCxDTj1D\r\n// SIG // RFAsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049\r\n// SIG // U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1BTUUs\r\n// SIG // REM9R0JMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/\r\n// SIG // YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Q\r\n// SIG // b2ludDCCAasGCCsGAQUFBwEBBIIBnTCCAZkwRwYIKwYB\r\n// SIG // BQUHMAKGO2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9w\r\n// SIG // a2lpbmZyYS9jZXJ0cy9BTUVSb290X2FtZXJvb3QuY3J0\r\n// SIG // MDcGCCsGAQUFBzAChitodHRwOi8vY3JsMi5hbWUuZ2Js\r\n// SIG // L2FpYS9BTUVSb290X2FtZXJvb3QuY3J0MDcGCCsGAQUF\r\n// SIG // BzAChitodHRwOi8vY3JsMy5hbWUuZ2JsL2FpYS9BTUVS\r\n// SIG // b290X2FtZXJvb3QuY3J0MDcGCCsGAQUFBzAChitodHRw\r\n// SIG // Oi8vY3JsMS5hbWUuZ2JsL2FpYS9BTUVSb290X2FtZXJv\r\n// SIG // b3QuY3J0MIGiBggrBgEFBQcwAoaBlWxkYXA6Ly8vQ049\r\n// SIG // YW1lcm9vdCxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIw\r\n// SIG // U2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJh\r\n// SIG // dGlvbixEQz1BTUUsREM9R0JMP2NBQ2VydGlmaWNhdGU/\r\n// SIG // YmFzZT9vYmplY3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0\r\n// SIG // aG9yaXR5MA0GCSqGSIb3DQEBCwUAA4ICAQBQECO3Tw/o\r\n// SIG // 317Rrd7yadqcswPx1LvIYymkaTN6KcmuRt6HKa0Xe73U\r\n// SIG // x2/AQ30TfgA9GBJngweRykKBusRzyOU17iIubJvy3gA2\r\n// SIG // 1dwtqtB0DsoEv1U/ptVu2v++doTCJ/i+GbssVXkgaX8H\r\n// SIG // +6EOGEmT4evp4GbwR4HwWlc+Dvf8HH8PdUA2Z04CvcwI\r\n// SIG // fckSipbNm84jxJ8XjmTFTWscldL9edj2NsY6iGnyJFIy\r\n// SIG // ur2PS7VRYyV3p1VAJp91gj1jRQtWEyCB8P5g9nE3z8u0\r\n// SIG // ANaU/hjwEQCrdGyravWgnf2JtG+bT26YAokbc8m+32zU\r\n// SIG // tXRO+NK3tAjhOu2FdsG3qNrF4sc7y37R/C+7Pcb/cFfh\r\n// SIG // ttqsirepZii4xStcjMODYuXzGm3IJs0b0owHG6oKd7ZO\r\n// SIG // GvHpmmh9K8/DLriD/sq8bURD10qi/wuW8zM7IpLg1vcR\r\n// SIG // 9dIK2mc0pj44pc6UX0XbttP/VEJgu3lT2eI9VjWtaKjx\r\n// SIG // 38xE9woSMyekPRtzTwgfuysF9DkJisr+yA4po/FPxpbB\r\n// SIG // w9c/hBf32DH/GFxteS2pmjgKIbMP8sDukmEq3lVvuWNJ\r\n// SIG // sybrZwQvQpvaM49fv+JKpLK5YWYEfwksYRR9wU8Hh/ID\r\n// SIG // 9hRCEkbUoQ2W7mMpsp2Nbp/kcn4ivfolUy3Q9Yf0scsQ\r\n// SIG // 6WTLYpm+AoCUJTGCGTUwghkxAgEBMFgwQTETMBEGCgmS\r\n// SIG // JomT8ixkARkWA0dCTDETMBEGCgmSJomT8ixkARkWA0FN\r\n// SIG // RTEVMBMGA1UEAxMMQU1FIENTIENBIDAxAhM2AAABqFMr\r\n// SIG // 1lCrrLlTAAIAAAGoMA0GCWCGSAFlAwQCAQUAoIGuMBkG\r\n// SIG // CSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB\r\n// SIG // gjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJ\r\n// SIG // BDEiBCBjRLYF14HDc56jvQAj1c/QH6Ok/nZz0hMCsCKZ\r\n// SIG // Z76EhDBCBgorBgEEAYI3AgEMMTQwMqAUgBIATQBpAGMA\r\n// SIG // cgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5taWNyb3Nv\r\n// SIG // ZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAIS+c42bOiEJ\r\n// SIG // uQm4GLm2goBw8vLg23FrpNm95muZplv7Z1kIND9FN4kM\r\n// SIG // K78rEpqfFgsz9PDvRpKDp0p/gmDaAeNcaDerca2Rfsab\r\n// SIG // uyk4cHU2FHvRka1LuJewRO1n7W92FbeDdN/WrR81VSLq\r\n// SIG // 5FaWCXH+GdIRXVM4inLo22uVhxBn5Oyn4SxVuSuBFPSN\r\n// SIG // q2jz7kYlOTSCkQVmj2CnyHVzwUov4r5RCJGTWQW6j4lb\r\n// SIG // UXPhKvoP2Tjtp+MC29DWJFgO60lYe3ihsUtdOb21KHg1\r\n// SIG // lPWovJIb8BtQTwbcidFV3WAFUFwS2hHJ/X6pEZ9W4Jks\r\n// SIG // bHdP2S0bd/U8xg17TUuSQyChghb9MIIW+QYKKwYBBAGC\r\n// SIG // NwMDATGCFukwghblBgkqhkiG9w0BBwKgghbWMIIW0gIB\r\n// SIG // AzEPMA0GCWCGSAFlAwQCAQUAMIIBUQYLKoZIhvcNAQkQ\r\n// SIG // AQSgggFABIIBPDCCATgCAQEGCisGAQQBhFkKAwEwMTAN\r\n// SIG // BglghkgBZQMEAgEFAAQg/ZMAqe6x9fkTf00oQUJdUGoT\r\n// SIG // oUvevXnPC0muAJQCF6YCBmPmYpKr+BgTMjAyMzAyMTMx\r\n// SIG // MjIzNDMuNjcxWjAEgAIB9KCB0KSBzTCByjELMAkGA1UE\r\n// SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV\r\n// SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD\r\n// SIG // b3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFt\r\n// SIG // ZXJpY2EgT3BlcmF0aW9uczEmMCQGA1UECxMdVGhhbGVz\r\n// SIG // IFRTUyBFU046M0U3QS1FMzU5LUEyNUQxJTAjBgNVBAMT\r\n// SIG // HE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WgghFU\r\n// SIG // MIIHDDCCBPSgAwIBAgITMwAAAcn61Y4lIHQCXgABAAAB\r\n// SIG // yTANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzET\r\n// SIG // MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk\r\n// SIG // bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0\r\n// SIG // aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFt\r\n// SIG // cCBQQ0EgMjAxMDAeFw0yMjExMDQxOTAxMzhaFw0yNDAy\r\n// SIG // MDIxOTAxMzhaMIHKMQswCQYDVQQGEwJVUzETMBEGA1UE\r\n// SIG // CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe\r\n// SIG // MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUw\r\n// SIG // IwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRp\r\n// SIG // b25zMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjozRTdB\r\n// SIG // LUUzNTktQTI1RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRp\r\n// SIG // bWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEB\r\n// SIG // BQADggIPADCCAgoCggIBANZy4uWOb8/CvlqMYZO6hlv7\r\n// SIG // wsYuXrkzNNU4hGxThvIO0hQdFTI2IKOk4kc4DkPgjedz\r\n// SIG // gTipcjB1s0S+Mb2ktN2ZSIHrSCC2IgEqILBLZY8xJURz\r\n// SIG // u3wxgxVnHc/pQjWJiaM7WxtzzK58W5VBx1JK+AuxAR29\r\n// SIG // mNOxneRiQYD/PuQGTbE5bBxnMx7OOZpj+61IHDJ//3PE\r\n// SIG // PxmEqnU+DlxC6ed4ffRJ8heM3LHdmRY8XY9ZT/EBsGWU\r\n// SIG // uBfNiQRntqQq0mpMhY08cxSlDsHEHq8AUf2GkJcu5rQq\r\n// SIG // 2uDzXMhEJvp/yw3Hv1VYkGvDjNpwWRysOgsjKhMxSScu\r\n// SIG // R4s8/Gesa6qiyrYvL4iVENBbapE10kd//8PDwCsgZbyG\r\n// SIG // ExRfy8tyYd3G1XjoEprmzlcL/JzHoXEG9gLcXFP5XchF\r\n// SIG // KsvP7YRByFjWm8x18eTvQ+G7UuqCXYC5h8a0wbRrHFUK\r\n// SIG // sdM+f31CJCxO7W8H6KvOHBf1ESxMsN6ueyldlOIDoXN+\r\n// SIG // el2BFUHSV6OlRVgUA2G82p0Nuc2NtVApI/NtQsg/dIKq\r\n// SIG // zt60D5XEKOnq8Ftgxdn7JoAG1as0LM+kZJmn8+K3te5J\r\n// SIG // u6ntPT7sB8OXt8eWSBhKFZXzZyb+vvOdbsCl+gKWRcT8\r\n// SIG // 3kKO1v+QbWk5pGRIcGOQHQj4D79GmiBEJ9qhezLxcAnL\r\n// SIG // AgMBAAGjggE2MIIBMjAdBgNVHQ4EFgQUBW+dZ0bCPKG+\r\n// SIG // eDoUxXlRe0QuMsswHwYDVR0jBBgwFoAUn6cVXQBeYl2D\r\n// SIG // 9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0\r\n// SIG // cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwv\r\n// SIG // TWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIw\r\n// SIG // MTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggrBgEF\r\n// SIG // BQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br\r\n// SIG // aW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1w\r\n// SIG // JTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0TAQH/BAIw\r\n// SIG // ADATBgNVHSUEDDAKBggrBgEFBQcDCDANBgkqhkiG9w0B\r\n// SIG // AQsFAAOCAgEANqi6nGbfR4pCB3I+wJZx4Y6LsUozngWk\r\n// SIG // xPhCvGl3FS5vXAPA9v2WNjlKWLznYbgxFfYRJVZs6KYi\r\n// SIG // bpP8QWIenViU0YZku4VY6xras0hVtC337EcrI8ZKbqso\r\n// SIG // R4gQ8TFzBmehnc1H6lT9mXdjvifwWECYLPTR2M/wjOF2\r\n// SIG // kT/k9lTNyRNZkjtai2vpnweNu0Ii4/yQu01GIIeEWPqC\r\n// SIG // zBVbkCWb12Jf4yExX1KaSaAGpAa9FXNq9ZD+Q4iWjb2V\r\n// SIG // if3LmGolkOJPcacOsBs96qu8QFp5Rs7GsMBYY7cKuRB/\r\n// SIG // 7N+ywn3ocrgsPGUSfVt7YEhXqQFTO7FBPj691Lvoj7wV\r\n// SIG // eE7EwzRS9AlSD1/tVziemERmCdpBxqaBnP+bIANiCkHJ\r\n// SIG // fe2Q2CSKosYMCjX7cje9DtAE26U1YbGzdNRVZYtB/r4H\r\n// SIG // Bocs5Oo6QMsBzw0kP8aBHhlOPujxU1zETv3zMxnFHH9G\r\n// SIG // R6mTJtFIaB/LTrZNfJOge+SiV07WN2TO6U37q0r9kK7+\r\n// SIG // c8wgYssrLTj8PyCSPpPaKU4Grawt/S+vfysMrQ9Me7dI\r\n// SIG // 5k17ZS2Whr6EpY3csq+kA0VZKrAmi1EkrAIlnmr+aoOu\r\n// SIG // FN5i5nnpKNBPUyecs7Tf43Is5R8dF7IDrjerLm9wj1ew\r\n// SIG // ADDIiqKXUGKoj17vSMb6l0+whP0jAtqXDckwggdxMIIF\r\n// SIG // WaADAgECAhMzAAAAFcXna54Cm0mZAAAAAAAVMA0GCSqG\r\n// SIG // SIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE\r\n// SIG // CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe\r\n// SIG // MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIw\r\n// SIG // MAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0\r\n// SIG // ZSBBdXRob3JpdHkgMjAxMDAeFw0yMTA5MzAxODIyMjVa\r\n// SIG // Fw0zMDA5MzAxODMyMjVaMHwxCzAJBgNVBAYTAlVTMRMw\r\n// SIG // EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt\r\n// SIG // b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp\r\n// SIG // b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w\r\n// SIG // IFBDQSAyMDEwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A\r\n// SIG // MIICCgKCAgEA5OGmTOe0ciELeaLL1yR5vQ7VgtP97pwH\r\n// SIG // B9KpbE51yMo1V/YBf2xK4OK9uT4XYDP/XE/HZveVU3Fa\r\n// SIG // 4n5KWv64NmeFRiMMtY0Tz3cywBAY6GB9alKDRLemjkZr\r\n// SIG // BxTzxXb1hlDcwUTIcVxRMTegCjhuje3XD9gmU3w5YQJ6\r\n// SIG // xKr9cmmvHaus9ja+NSZk2pg7uhp7M62AW36MEBydUv62\r\n// SIG // 6GIl3GoPz130/o5Tz9bshVZN7928jaTjkY+yOSxRnOlw\r\n// SIG // aQ3KNi1wjjHINSi947SHJMPgyY9+tVSP3PoFVZhtaDua\r\n// SIG // Rr3tpK56KTesy+uDRedGbsoy1cCGMFxPLOJiss254o2I\r\n// SIG // 5JasAUq7vnGpF1tnYN74kpEeHT39IM9zfUGaRnXNxF80\r\n// SIG // 3RKJ1v2lIH1+/NmeRd+2ci/bfV+AutuqfjbsNkz2K26o\r\n// SIG // ElHovwUDo9Fzpk03dJQcNIIP8BDyt0cY7afomXw/TNuv\r\n// SIG // XsLz1dhzPUNOwTM5TI4CvEJoLhDqhFFG4tG9ahhaYQFz\r\n// SIG // ymeiXtcodgLiMxhy16cg8ML6EgrXY28MyTZki1ugpoMh\r\n// SIG // XV8wdJGUlNi5UPkLiWHzNgY1GIRH29wb0f2y1BzFa/Zc\r\n// SIG // UlFdEtsluq9QBXpsxREdcu+N+VLEhReTwDwV2xo3xwgV\r\n// SIG // GD94q0W29R6HXtqPnhZyacaue7e3PmriLq0CAwEAAaOC\r\n// SIG // Ad0wggHZMBIGCSsGAQQBgjcVAQQFAgMBAAEwIwYJKwYB\r\n// SIG // BAGCNxUCBBYEFCqnUv5kxJq+gpE8RjUpzxD/LwTuMB0G\r\n// SIG // A1UdDgQWBBSfpxVdAF5iXYP05dJlpxtTNRnpcjBcBgNV\r\n// SIG // HSAEVTBTMFEGDCsGAQQBgjdMg30BATBBMD8GCCsGAQUF\r\n// SIG // BwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp\r\n// SIG // b3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wEwYDVR0lBAww\r\n// SIG // CgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQCBAweCgBTAHUA\r\n// SIG // YgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB\r\n// SIG // Af8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186a\r\n// SIG // GMQwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5t\r\n// SIG // aWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWlj\r\n// SIG // Um9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUF\r\n// SIG // BwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5t\r\n// SIG // aWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJB\r\n// SIG // dXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZIhvcNAQELBQAD\r\n// SIG // ggIBAJ1VffwqreEsH2cBMSRb4Z5yS/ypb+pcFLY+Tkdk\r\n// SIG // eLEGk5c9MTO1OdfCcTY/2mRsfNB1OW27DzHkwo/7bNGh\r\n// SIG // lBgi7ulmZzpTTd2YurYeeNg2LpypglYAA7AFvonoaeC6\r\n// SIG // Ce5732pvvinLbtg/SHUB2RjebYIM9W0jVOR4U3UkV7nd\r\n// SIG // n/OOPcbzaN9l9qRWqveVtihVJ9AkvUCgvxm2EhIRXT0n\r\n// SIG // 4ECWOKz3+SmJw7wXsFSFQrP8DJ6LGYnn8AtqgcKBGUIZ\r\n// SIG // UnWKNsIdw2FzLixre24/LAl4FOmRsqlb30mjdAy87JGA\r\n// SIG // 0j3mSj5mO0+7hvoyGtmW9I/2kQH2zsZ0/fZMcm8Qq3Uw\r\n// SIG // xTSwethQ/gpY3UA8x1RtnWN0SCyxTkctwRQEcb9k+SS+\r\n// SIG // c23Kjgm9swFXSVRk2XPXfx5bRAGOWhmRaw2fpCjcZxko\r\n// SIG // JLo4S5pu+yFUa2pFEUep8beuyOiJXk+d0tBMdrVXVAmx\r\n// SIG // aQFEfnyhYWxz/gq77EFmPWn9y8FBSX5+k77L+DvktxW/\r\n// SIG // tM4+pTFRhLy/AsGConsXHRWJjXD+57XQKBqJC4822rpM\r\n// SIG // +Zv/Cuk0+CQ1ZyvgDbjmjJnW4SLq8CdCPSWU5nR0W2rR\r\n// SIG // nj7tfqAxM328y+l7vzhwRNGQ8cirOoo6CGJ/2XBjU02N\r\n// SIG // 7oJtpQUQwXEGahC0HVUzWLOhcGbyoYICyzCCAjQCAQEw\r\n// SIG // gfihgdCkgc0wgcoxCzAJBgNVBAYTAlVTMRMwEQYDVQQI\r\n// SIG // EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w\r\n// SIG // HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAj\r\n// SIG // BgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlv\r\n// SIG // bnMxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOjNFN0Et\r\n// SIG // RTM1OS1BMjVEMSUwIwYDVQQDExxNaWNyb3NvZnQgVGlt\r\n// SIG // ZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoDFQB9\r\n// SIG // 6YvL/h4Bm41ULOBt+nUcVgbdDqCBgzCBgKR+MHwxCzAJ\r\n// SIG // BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw\r\n// SIG // DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv\r\n// SIG // ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29m\r\n// SIG // dCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqGSIb3DQEB\r\n// SIG // BQUAAgUA55QsqjAiGA8yMDIzMDIxMzExMjczOFoYDzIw\r\n// SIG // MjMwMjE0MTEyNzM4WjB0MDoGCisGAQQBhFkKBAExLDAq\r\n// SIG // MAoCBQDnlCyqAgEAMAcCAQACAgotMAcCAQACAhKYMAoC\r\n// SIG // BQDnlX4qAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisG\r\n// SIG // AQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAw\r\n// SIG // DQYJKoZIhvcNAQEFBQADgYEAWH/j3j4dJ+ftP/fpoWoM\r\n// SIG // dzibyxT1Zfv0jP4VCw+AbG/qhdm7YFDjP6GJ9O09OcZ4\r\n// SIG // zmDEgjxkHVolakT2bZOHlYG+QgPpxg5OUMCSh+hM1coP\r\n// SIG // 2bOl1w3Iq4jd8xeqxJvSjMqr52k4DsSS0C36LFViRllf\r\n// SIG // eBrKC2GbnA6OYDxbBJcxggQNMIIECQIBATCBkzB8MQsw\r\n// SIG // CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ\r\n// SIG // MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z\r\n// SIG // b2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3Nv\r\n// SIG // ZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAcn61Y4l\r\n// SIG // IHQCXgABAAAByTANBglghkgBZQMEAgEFAKCCAUowGgYJ\r\n// SIG // KoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3\r\n// SIG // DQEJBDEiBCAnSycMArNSomfY7ha5/0IoVSwgYJe4NIr2\r\n// SIG // Zu5PXklibDCB+gYLKoZIhvcNAQkQAi8xgeowgecwgeQw\r\n// SIG // gb0EIIF1zn9S3VFLECd4Kdh/YA0jIYkA/8194V184dk5\r\n// SIG // dv2BMIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNV\r\n// SIG // BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx\r\n// SIG // HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEm\r\n// SIG // MCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB\r\n// SIG // IDIwMTACEzMAAAHJ+tWOJSB0Al4AAQAAAckwIgQgKq8V\r\n// SIG // K74aQfHbKF2QOPZa23JRXUDLBs1wVRbiih+lxsYwDQYJ\r\n// SIG // KoZIhvcNAQELBQAEggIAaQM4H0gzID/OUj2Z+WkvozrL\r\n// SIG // o97FygMaSQb/5DkaODPJvQ7uIRVGirFDK+DEB7glUz4B\r\n// SIG // pIbDxQw6Tdqy8krkgOcNtuIp48VBFRlyss6jqKWbXk7o\r\n// SIG // zrLuRVw2AdsZtR2jV1aIQYOuz+EA+Vmn0udsq7y1nxKr\r\n// SIG // ahZHYQqud2qw/l92C8XAqBExEtaP5+dAjz1jS27vAkAi\r\n// SIG // sL/yI5mGd73pixoE6if2phYBF0KoqJyFQkFLfSuMRQ7L\r\n// SIG // 4gA3di+jAz5BRx2MxbdyV3qqmvC4NbQFZBN9P4RxYx3l\r\n// SIG // HeR+Tg2znNl87bfr+pjues0sbO7lloeMPF2lthrp7Kdw\r\n// SIG // nUSGBMnhW691Z9Q5xLVuaEfIQogWr3IZlkA4sKuP1PyM\r\n// SIG // XUMfLcqBuSVRz1+ryjN2jQxgS1WRQvvGxPDtpVOPXVo3\r\n// SIG // /bQ04B61Pi6Wh6d1XqXuFsKy7nISwvMXLPp/gVgYNdCg\r\n// SIG // hgS8BnnzbzeythHPLddnHBECwjF7PSs2AKT/chMKpfK/\r\n// SIG // odvm6dnJDz81VMCZ0IvhlvISBAULam8DaC5pieM7mXCR\r\n// SIG // ZeTgaWO+7U2kJIKopIsD3ZjBIYLV2EeulhwDPp0JPit3\r\n// SIG // bZ/ISGcvQeP0cEuozPBAOzbdEYxB2tM4i2Ucu3P7NeUW\r\n// SIG // LWdEXlwm5ZIsOkBR1wPzOc2wU97v17qo/aIKOhVTjHQ=\r\n// SIG // End signature block\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__890__;","module.exports = __WEBPACK_EXTERNAL_MODULE__719__;","module.exports = __WEBPACK_EXTERNAL_MODULE__156__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport * as React from 'react';\r\nimport {\r\n\tservice,\r\n\tfactories,\r\n\tReport,\r\n\tEmbed,\r\n\tDashboard,\r\n\tTile,\r\n\tQna,\r\n\tVisual,\r\n\tIEmbedSettings,\r\n\tIQnaEmbedConfiguration,\r\n\tIVisualEmbedConfiguration,\r\n\tIReportEmbedConfiguration,\r\n\tIDashboardEmbedConfiguration,\r\n\tITileEmbedConfiguration,\r\n} from 'powerbi-client';\r\nimport { IReportCreateConfiguration, IPaginatedReportLoadConfiguration, ReportLevelFilters, FiltersOperations } from 'powerbi-models';\r\nimport isEqual from 'lodash.isequal';\r\nimport { stringifyMap, SdkType, SdkWrapperVersion } from './utils';\r\n\r\n/**\r\n * Type for event handler function of embedded entity\r\n */\r\nexport type EventHandler = {\r\n\t(event?: service.ICustomEvent, embeddedEntity?: Embed): void | null;\r\n};\r\n\r\n/**\r\n * Props interface for PowerBIEmbed component\r\n */\r\nexport interface EmbedProps {\r\n\r\n\t// Configuration for embedding the PowerBI entity (Required)\r\n\tembedConfig:\r\n\t\t| IReportEmbedConfiguration\r\n\t\t| IDashboardEmbedConfiguration\r\n\t\t| ITileEmbedConfiguration\r\n\t\t| IQnaEmbedConfiguration\r\n\t\t| IVisualEmbedConfiguration\r\n\t\t| IPaginatedReportLoadConfiguration\r\n\t\t| IReportCreateConfiguration;\r\n\r\n\t// Callback method to get the embedded PowerBI entity object (Optional)\r\n\tgetEmbeddedComponent?: { (embeddedComponent: Embed): void };\r\n\r\n\t// Map of pair of event name and its handler method to be triggered on the event (Optional)\r\n\teventHandlers?: Map;\r\n\r\n\t// CSS class to be set on the embedding container (Optional)\r\n\tcssClassName?: string;\r\n\r\n\t// Phased embedding flag (Optional)\r\n\tphasedEmbedding?: boolean;\r\n\r\n\t// Provide a custom implementation of PowerBI service (Optional)\r\n\tservice?: service.Service;\r\n}\r\n\r\nexport enum EmbedType {\r\n\tCreate = 'create',\r\n\tReport = 'report',\r\n\tDashboard = 'dashboard',\r\n\tTile = 'tile',\r\n\tQna = 'qna',\r\n\tVisual = 'visual'\r\n}\r\n\r\n/**\r\n * Base react component to embed Power BI entities like: reports, dashboards, tiles, visual and qna containers.\r\n */\r\nexport class PowerBIEmbed extends React.Component {\r\n\r\n\t// Embedded entity\r\n\t// Note: Do not read or assign to this member variable directly, instead use the getter and setter\r\n\tprivate _embed?: Embed;\r\n\r\n\t// Powerbi service\r\n\tprivate powerbi: service.Service;\r\n\r\n\t// Ref to the HTML div element\r\n\tprivate containerRef = React.createRef();\r\n\r\n\t// JSON stringify of prev event handler map\r\n\tprivate prevEventHandlerMapString = '';\r\n\r\n\t// Getter for this._embed\r\n\tprivate get embed(): Embed | undefined {\r\n\t\treturn this._embed;\r\n\t};\r\n\r\n\t// Setter for this._embed\r\n\tprivate set embed(newEmbedInstance: Embed | undefined) {\r\n\t\tthis._embed = newEmbedInstance;\r\n\r\n\t\t// Invoke callback method in props to return this embed instance\r\n\t\tthis.invokeGetEmbedCallback();\r\n\t};\r\n\r\n\tconstructor(props: EmbedProps) {\r\n\t\tsuper(props);\r\n\r\n\t\tif (this.props.service) {\r\n\t\t\tthis.powerbi = this.props.service;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.powerbi = new service.Service(\r\n\t\t\t\tfactories.hpmFactory,\r\n\t\t\t\tfactories.wpmpFactory,\r\n\t\t\t\tfactories.routerFactory);\r\n\t\t}\r\n\r\n\t\tthis.powerbi.setSdkInfo(SdkType, SdkWrapperVersion);\r\n\t};\r\n\r\n\tcomponentDidMount(): void {\r\n\r\n\t\t// Check if HTML container is available\r\n\t\tif (this.containerRef.current) {\r\n\r\n\t\t\t// Decide to embed, load or bootstrap\r\n\t\t\tif (this.props.embedConfig.accessToken && this.props.embedConfig.embedUrl) {\r\n\t\t\t\tthis.embedEntity();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.embed = this.powerbi.bootstrap(this.containerRef.current, this.props.embedConfig);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Set event handlers if available\r\n\t\tif (this.props.eventHandlers && this.embed) {\r\n\t\t\tthis.setEventHandlers(this.embed, this.props.eventHandlers);\r\n\t\t}\r\n\t};\r\n\r\n\tasync componentDidUpdate(prevProps: EmbedProps): Promise {\r\n\r\n\t\tthis.embedOrUpdateAccessToken(prevProps);\r\n\r\n\t\t// Set event handlers if available\r\n\t\tif (this.props.eventHandlers && this.embed) {\r\n\t\t\tthis.setEventHandlers(this.embed, this.props.eventHandlers);\r\n\t\t}\r\n\r\n\t\t// Allow settings update only when settings object in embedConfig of current and previous props is different\r\n\t\tif (!isEqual(this.props.embedConfig.settings, prevProps.embedConfig.settings)) {\r\n\t\t\tawait this.updateSettings();\r\n\t\t}\r\n\r\n\t\t// Update pageName and filters for a report\r\n\t\tif (this.props.embedConfig.type === EmbedType.Report) {\r\n\t\t\ttry {\r\n\t\t\t\t// Typecasting to IReportEmbedConfiguration\r\n\t\t\t\tconst embedConfig = this.props.embedConfig as IReportEmbedConfiguration;\r\n\t\t\t\tconst filters = embedConfig.filters as ReportLevelFilters[];\r\n\t\t\t\tconst prevEmbedConfig = prevProps.embedConfig as IReportEmbedConfiguration;\r\n\r\n\t\t\t\t// Set new page if available and different from the previous page\r\n\t\t\t\tif (embedConfig.pageName && embedConfig.pageName !== prevEmbedConfig.pageName) {\r\n\t\t\t\t\t// Upcast to Report and call setPage\r\n\t\t\t\t\tawait (this.embed as Report).setPage(embedConfig.pageName);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set filters on the embedded report if available and different from the previous filter\r\n\t\t\t\tif (filters && !isEqual(filters, prevEmbedConfig.filters)) {\r\n\t\t\t\t\t// Upcast to Report and call updateFilters with the Replace filter operation\r\n\t\t\t\t\tawait (this.embed as Report).updateFilters(FiltersOperations.Replace, filters);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Remove filters on the embedded report, if previously applied\r\n\t\t\t\telse if (!filters && prevEmbedConfig.filters) {\r\n\t\t\t\t\t// Upcast to Report and call updateFilters with the RemoveAll filter operation\r\n\t\t\t\t\tawait (this.embed as Report).updateFilters(FiltersOperations.RemoveAll);\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tcomponentWillUnmount(): void {\r\n\t\t// Clean Up\r\n\t\tif (this.containerRef.current) {\r\n\t\t\tthis.powerbi.reset(this.containerRef.current);\r\n\t\t}\r\n\r\n\t\t// Set the previous event handler map string to empty\r\n\t\tthis.prevEventHandlerMapString = '';\r\n\t};\r\n\r\n\trender(): JSX.Element {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t
\r\n\t\t)\r\n\t};\r\n\r\n\t/**\r\n\t * Embed the powerbi entity (Load for phased embedding)\r\n\t */\r\n\tprivate embedEntity(): void {\r\n\t\t// Check if the HTML container is rendered and available\r\n\t\tif (!this.containerRef.current) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Load when props.phasedEmbedding is true and embed type is report, embed otherwise\r\n\t\tif (this.props.phasedEmbedding && this.props.embedConfig.type === EmbedType.Report) {\r\n\t\t\tthis.embed = this.powerbi.load(this.containerRef.current, this.props.embedConfig);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.props.phasedEmbedding) {\r\n\t\t\t\tconsole.error(`Phased embedding is not supported for type ${this.props.embedConfig.type}`)\r\n\t\t\t}\r\n\r\n\t\t\tif (this.props.embedConfig.type === EmbedType.Create) {\r\n\t\t\t\tthis.embed = this.powerbi.createReport(this.containerRef.current, this.props.embedConfig as IReportCreateConfiguration);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.embed = this.powerbi.embed(this.containerRef.current, this.props.embedConfig);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * When component updates, choose to _embed_ the powerbi entity or _update the accessToken_ in the embedded entity\r\n\t * or do nothing if the embedUrl and accessToken did not update in the new props\r\n\t *\r\n\t * @param prevProps EmbedProps\r\n\t * @returns void\r\n\t */\r\n\tprivate async embedOrUpdateAccessToken(prevProps: EmbedProps): Promise {\r\n\r\n\t\t// Check if Embed URL and Access Token are present in current props\r\n\t\tif (!this.props.embedConfig.accessToken || !this.props.embedConfig.embedUrl) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Embed or load in the following scenarios\r\n\t\t//\t\t1. AccessToken was not provided in prev props (E.g. Report was bootstrapped earlier)\r\n\t\t//\t\t2. Embed URL is updated (E.g. New report is to be embedded)\r\n\t\tif (\r\n\t\t\tthis.containerRef.current &&\r\n\t\t\t(!prevProps.embedConfig.accessToken ||\r\n\t\t\t\tthis.props.embedConfig.embedUrl !== prevProps.embedConfig.embedUrl)\r\n\t\t) {\r\n\t\t\tthis.embedEntity();\r\n\t\t}\r\n\r\n\t\t// Set new access token,\r\n\t\t// when access token is updated but embed Url is same\r\n\t\telse if (\r\n\t\t\tthis.props.embedConfig.accessToken !== prevProps.embedConfig.accessToken &&\r\n\t\t\tthis.props.embedConfig.embedUrl === prevProps.embedConfig.embedUrl &&\r\n\t\t\tthis.embed\r\n\t\t) {\r\n\t\t\ttry {\r\n\t\t\t\tawait this.embed.setAccessToken(this.props.embedConfig.accessToken);\r\n\t\t\t} catch(error) {\r\n\t\t\t\tconsole.error(\"setAccessToken error:\\n\", error);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets all event handlers from the props on the embedded entity\r\n\t *\r\n\t * @param embed Embedded object\r\n\t * @param eventHandlers Array of eventhandlers to be set on embedded entity\r\n\t * @returns void\r\n\t */\r\n\tprivate setEventHandlers(\r\n\t\tembed: Embed,\r\n\t\teventHandlerMap: Map\r\n\t): void {\r\n\t\t// Get string representation of eventHandlerMap\r\n\t\tconst eventHandlerMapString = stringifyMap(this.props.eventHandlers);\r\n\r\n\t\t// Check if event handler map changed\r\n\t\tif (this.prevEventHandlerMapString === eventHandlerMapString) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Update prev string representation of event handler map\r\n\t\tthis.prevEventHandlerMapString = eventHandlerMapString;\r\n\r\n\t\t// List of allowed events\r\n\t\tlet allowedEvents = Embed.allowedEvents;\r\n\r\n\t\tconst entityType = embed.embedtype;\r\n\r\n\t\t// Append entity specific events\r\n\t\tswitch (entityType) {\r\n\t\t\tcase EmbedType.Create:\r\n\t\t\t\tbreak;\r\n\t\t\tcase EmbedType.Report:\r\n\t\t\t\tallowedEvents = [...allowedEvents, ...Report.allowedEvents];\r\n\t\t\t\tbreak;\r\n\t\t\tcase EmbedType.Dashboard:\r\n\t\t\t\tallowedEvents = [...allowedEvents, ...Dashboard.allowedEvents];\r\n\t\t\t\tbreak;\r\n\t\t\tcase EmbedType.Tile:\r\n\t\t\t\tallowedEvents = [...allowedEvents, ...Tile.allowedEvents];\r\n\t\t\t\tbreak;\r\n\t\t\tcase EmbedType.Qna:\r\n\t\t\t\tallowedEvents = [...allowedEvents, ...Qna.allowedEvents];\r\n\t\t\t\tbreak;\r\n\t\t\tcase EmbedType.Visual:\r\n\t\t\t\tallowedEvents = [...allowedEvents, ...Visual.allowedEvents];\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tconsole.error(`Invalid embed type ${entityType}`);\r\n\t\t}\r\n\r\n\t\t// Holds list of events which are not allowed\r\n\t\tconst invalidEvents: Array = [];\r\n\r\n\t\t// Apply all provided event handlers\r\n\t\teventHandlerMap.forEach((eventHandlerMethod, eventName) => {\r\n\t\t\t// Check if this event is allowed\r\n\t\t\tif (allowedEvents.includes(eventName)) {\r\n\r\n\t\t\t\t// Removes event handler for this event\r\n\t\t\t\tembed.off(eventName);\r\n\r\n\t\t\t\t// Event handler is effectively removed for this event when eventHandlerMethod is null\r\n\t\t\t\tif (eventHandlerMethod) {\r\n\r\n\t\t\t\t\t// Set single event handler\r\n\t\t\t\t\tembed.on(eventName, (event: service.ICustomEvent): void => {\r\n\t\t\t\t\t\teventHandlerMethod(event, this.embed);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\t// Add this event name to the list of invalid events\r\n\t\t\t\tinvalidEvents.push(eventName);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Handle invalid events\r\n\t\tif (invalidEvents.length) {\r\n\t\t\tconsole.error(`Following events are invalid: ${invalidEvents.join(',')}`);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the embedded object via _getEmbed_ callback method provided in props\r\n\t *\r\n\t * @returns void\r\n\t */\r\n\tprivate invokeGetEmbedCallback(): void {\r\n\t\tif (this.props.getEmbeddedComponent && this.embed) {\r\n\t\t\tthis.props.getEmbeddedComponent(this.embed);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Update settings from props of the embedded artifact\r\n\t *\r\n\t * @returns void\r\n\t */\r\n\tprivate async updateSettings(): Promise {\r\n\t\tif (!this.embed || !this.props.embedConfig.settings) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tswitch (this.props.embedConfig.type) {\r\n\t\t\tcase EmbedType.Report: {\r\n\t\t\t\t// Typecasted to IEmbedSettings as props.embedConfig.settings can be ISettings via IQnaEmbedConfiguration\r\n\t\t\t\tconst settings = this.props.embedConfig.settings as IEmbedSettings;\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// Upcast to Report and call updateSettings\r\n\t\t\t\t\tawait (this.embed as Report).updateSettings(settings);\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error(`Error in method updateSettings: ${error}`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase EmbedType.Dashboard:\r\n\t\t\tcase EmbedType.Tile:\r\n\t\t\tcase EmbedType.Qna:\r\n\t\t\tcase EmbedType.Visual:\r\n\t\t\t\t// updateSettings not applicable for these embedding types\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tconsole.error(`Invalid embed type ${this.props.embedConfig.type}`);\r\n\t\t}\r\n\t};\r\n}","// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport { EmbedProps } from \"./PowerBIEmbed\";\r\n\r\n/**\r\n * Get JSON string representation of the given map.\r\n *\r\n * @param map Map of event and corresponding handler method\r\n *\r\n * For example:\r\n * Input:\r\n * ```\r\n * Map([\r\n\t\t['loaded', null],\r\n\t\t['rendered', function () { console.log('Rendered'); }]\r\n\t]);\r\n * ```\r\n * Output:\r\n * ```\r\n * `[[\"loaded\",\"\"],[\"rendered\",\"function () { console.log('Rendered'); }\"]]`\r\n * ```\r\n */\r\nexport function stringifyMap(map: EmbedProps['eventHandlers']): string {\r\n\r\n\t// Return empty string for empty/null map\r\n\tif (!map) {\r\n\t\treturn '';\r\n\t}\r\n\r\n\t// Get entries of map as array\r\n\tconst mapEntries = Array.from(map);\r\n\r\n\t// Return JSON string\r\n\treturn JSON.stringify(mapEntries.map((mapEntry) => {\r\n\r\n\t\t// Convert event handler method to a string containing its source code for comparison\r\n\t\treturn [\r\n\t\t\tmapEntry[0],\r\n\t\t\tmapEntry[1] ? mapEntry[1].toString() : ''\r\n\t\t];\r\n\t}));\r\n};\r\n\r\n// SDK information to be used with service instance\r\nexport const SdkType = \"powerbi-client-react\";\r\nexport const SdkWrapperVersion = \"1.4.0\";","var _excluded = [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\", \"isolated\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nvar ReCAPTCHA = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ReCAPTCHA, _React$Component);\n function ReCAPTCHA() {\n var _this;\n _this = _React$Component.call(this) || this;\n _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n var _proto = ReCAPTCHA.prototype;\n _proto.getCaptchaFunction = function getCaptchaFunction(fnName) {\n if (this.props.grecaptcha) {\n if (this.props.grecaptcha.enterprise) {\n return this.props.grecaptcha.enterprise[fnName];\n }\n return this.props.grecaptcha[fnName];\n }\n return null;\n };\n _proto.getValue = function getValue() {\n var getResponse = this.getCaptchaFunction(\"getResponse\");\n if (getResponse && this._widgetId !== undefined) {\n return getResponse(this._widgetId);\n }\n return null;\n };\n _proto.getWidgetId = function getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n return null;\n };\n _proto.execute = function execute() {\n var execute = this.getCaptchaFunction(\"execute\");\n if (execute && this._widgetId !== undefined) {\n return execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n };\n _proto.executeAsync = function executeAsync() {\n var _this2 = this;\n return new Promise(function (resolve, reject) {\n _this2.executionResolve = resolve;\n _this2.executionReject = reject;\n _this2.execute();\n });\n };\n _proto.reset = function reset() {\n var resetter = this.getCaptchaFunction(\"reset\");\n if (resetter && this._widgetId !== undefined) {\n resetter(this._widgetId);\n }\n };\n _proto.forceReset = function forceReset() {\n var resetter = this.getCaptchaFunction(\"reset\");\n if (resetter) {\n resetter();\n }\n };\n _proto.handleExpired = function handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n };\n _proto.handleErrored = function handleErrored() {\n if (this.props.onErrored) {\n this.props.onErrored();\n }\n if (this.executionReject) {\n this.executionReject();\n delete this.executionResolve;\n delete this.executionReject;\n }\n };\n _proto.handleChange = function handleChange(token) {\n if (this.props.onChange) {\n this.props.onChange(token);\n }\n if (this.executionResolve) {\n this.executionResolve(token);\n delete this.executionReject;\n delete this.executionResolve;\n }\n };\n _proto.explicitRender = function explicitRender() {\n var render = this.getCaptchaFunction(\"render\");\n if (render && this._widgetId === undefined) {\n var wrapper = document.createElement(\"div\");\n this._widgetId = render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge,\n isolated: this.props.isolated\n });\n this.captcha.appendChild(wrapper);\n }\n if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n this._executeRequested = false;\n this.execute();\n }\n };\n _proto.componentDidMount = function componentDidMount() {\n this.explicitRender();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.explicitRender();\n };\n _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n this.captcha = elem;\n };\n _proto.render = function render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n /* eslint-disable no-unused-vars */\n var _this$props = this.props,\n sitekey = _this$props.sitekey,\n onChange = _this$props.onChange,\n theme = _this$props.theme,\n type = _this$props.type,\n tabindex = _this$props.tabindex,\n onExpired = _this$props.onExpired,\n onErrored = _this$props.onErrored,\n size = _this$props.size,\n stoken = _this$props.stoken,\n grecaptcha = _this$props.grecaptcha,\n badge = _this$props.badge,\n hl = _this$props.hl,\n isolated = _this$props.isolated,\n childProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n /* eslint-enable no-unused-vars */\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, childProps, {\n ref: this.handleRecaptchaRef\n }));\n };\n return ReCAPTCHA;\n}(React.Component);\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"]),\n isolated: PropTypes.bool\n};\nReCAPTCHA.defaultProps = {\n onChange: function onChange() {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\"\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n options = options || {};\n return function wrapWithAsyncScript(WrappedComponent) {\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n var AsyncScriptLoader =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(AsyncScriptLoader, _Component);\n\n function AsyncScriptLoader(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.state = {};\n _this.__scriptURL = \"\";\n return _this;\n }\n\n var _proto = AsyncScriptLoader.prototype;\n\n _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n if (!this.__scriptLoaderID) {\n this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n }\n\n return this.__scriptLoaderID;\n };\n\n _proto.setupScriptURL = function setupScriptURL() {\n this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n return this.__scriptURL;\n };\n\n _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n var _this2 = this;\n\n // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n this.setState(state, function () {\n return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n });\n };\n\n _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n if (!mapEntry || !mapEntry.loaded) {\n throw new Error(\"Script is not loaded.\");\n }\n\n for (var obsKey in mapEntry.observers) {\n mapEntry.observers[obsKey](mapEntry);\n }\n\n delete window[options.callbackName];\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n var scriptURL = this.setupScriptURL();\n var key = this.asyncScriptLoaderGetScriptLoaderID();\n var _options = options,\n globalName = _options.globalName,\n callbackName = _options.callbackName,\n scriptId = _options.scriptId; // check if global object already attached to window\n\n if (globalName && typeof window[globalName] !== \"undefined\") {\n SCRIPT_MAP[scriptURL] = {\n loaded: true,\n observers: {}\n };\n } // check if script loading already\n\n\n if (SCRIPT_MAP[scriptURL]) {\n var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n if (entry && (entry.loaded || entry.errored)) {\n this.asyncScriptLoaderHandleLoad(entry);\n return;\n } // if still loading then callback to observer queue\n\n\n entry.observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n return;\n }\n /*\n * hasn't started loading\n * start the \"magic\"\n * setup script to load and observers\n */\n\n\n var observers = {};\n\n observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n SCRIPT_MAP[scriptURL] = {\n loaded: false,\n observers: observers\n };\n var script = document.createElement(\"script\");\n script.src = scriptURL;\n script.async = true;\n\n for (var attribute in options.attributes) {\n script.setAttribute(attribute, options.attributes[attribute]);\n }\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n if (SCRIPT_MAP[scriptURL]) {\n var mapEntry = SCRIPT_MAP[scriptURL];\n var observersMap = mapEntry.observers;\n\n for (var obsKey in observersMap) {\n if (func(observersMap[obsKey])) {\n delete observersMap[obsKey];\n }\n }\n }\n };\n\n if (callbackName && typeof window !== \"undefined\") {\n window[callbackName] = function () {\n return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n };\n }\n\n script.onload = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.loaded = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n if (callbackName) {\n return false;\n }\n\n observer(mapEntry);\n return true;\n });\n }\n };\n\n script.onerror = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.errored = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n observer(mapEntry);\n return true;\n });\n }\n };\n\n document.body.appendChild(script);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Remove tag script\n var scriptURL = this.__scriptURL;\n\n if (options.removeOnUnmount === true) {\n var allScripts = document.getElementsByTagName(\"script\");\n\n for (var i = 0; i < allScripts.length; i += 1) {\n if (allScripts[i].src.indexOf(scriptURL) > -1) {\n if (allScripts[i].parentNode) {\n allScripts[i].parentNode.removeChild(allScripts[i]);\n }\n }\n }\n } // Clean the observer entry\n\n\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n if (options.removeOnUnmount === true) {\n delete SCRIPT_MAP[scriptURL];\n }\n }\n };\n\n _proto.render = function render() {\n var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n var _this$props = this.props,\n asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n forwardedRef = _this$props.forwardedRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n if (globalName && typeof window !== \"undefined\") {\n childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n }\n\n childProps.ref = forwardedRef;\n return createElement(WrappedComponent, childProps);\n };\n\n return AsyncScriptLoader;\n }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n // And it can then be attached to the Component.\n\n\n var ForwardedComponent = forwardRef(function (props, ref) {\n return createElement(AsyncScriptLoader, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n ForwardedComponent.propTypes = {\n asyncScriptOnLoad: PropTypes.func\n };\n return hoistStatics(ForwardedComponent, WrappedComponent);\n };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\nfunction getOptions() {\n return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\nfunction getURL() {\n var dynamicOptions = getOptions();\n var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n if (dynamicOptions.enterprise) {\n return \"https://\" + hostname + \"/recaptcha/enterprise.js?onload=\" + callbackName + \"&render=explicit\";\n }\n return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\nexport default makeAsyncScriptLoader(getURL, {\n callbackName: callbackName,\n globalName: globalName,\n attributes: getOptions().nonce ? {\n nonce: getOptions().nonce\n } : {}\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Internationalization, isBlazor } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'role': 'calendar'\n });\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '' } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = (isBlazor() ? 'days.' : 'days.stand-alone.') + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek);\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n if (!(isBlazor() && ref)) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n }\n else {\n this.element = document.getElementById(id);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.blazorRef = ref;\n this.serverModuleName = moduleName;\n }\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.blazorRef = ref;\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement = this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.checkDeviceMode = function (ref) {\n if (Browser.isDevice && isBlazor() && ref) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref.invokeMethodAsync('OnDevice', true);\n }\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n if (isBlazor() && this.blazorRef) {\n e.preventDefault();\n if (!this.tableBodyElement) {\n this.element = closest(e.target, '.' + 'e-calendar');\n this.tableBodyElement = this.element.querySelector('tbody');\n }\n multiSelection = false;\n }\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n if (isBlazor() && this.blazorRef) {\n this.tableBodyElement.focus();\n var targetEle = e.target;\n var args = {\n Action: e.action, Key: e.key, Events: e,\n SelectDate: selectedDate ? selectedDate.id : null,\n FocusedDate: focusedDate ? focusedDate.id : null,\n classList: selectedDate ? selectedDate.classList.toString() : focusedDate ? focusedDate.classList.toString() : 'e-cell',\n Id: focusedDate ? focusedDate.id : selectedDate ? selectedDate.id : null,\n TargetClassList: targetEle.classList.toString()\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.blazorRef.invokeMethodAsync('OnCalendarKeyboardEvent', args);\n if (targetEle.classList.contains('e-today')) {\n targetEle.blur();\n this.tableBodyElement.focus();\n }\n if (this.serverModuleName === 'sf.calendars.Calendar') {\n this.tableBodyElement = null;\n }\n }\n else {\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'D' : 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: isBlazor() ? 'D' : 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: isBlazor() ? 'MMM' : null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n attributes(tdEle, { 'role': 'gridcell' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: isBlazor() ? 'F' : 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value = date.valueOf();\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false', 'role': 'gridcell' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr', { attrs: { 'role': 'row' } });\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n if (multiSelection && !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0])) {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n this.createContentHeader();\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n detach(this.tableBodyElement);\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n this.createContentBody();\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n this.createContentHeader();\n this.createContentBody();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.createContentHeader();\n this.createContentBody();\n this.l10.setLocale(this.locale);\n this.updateFooter();\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: isBlazor() ? 'y' : 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: isBlazor() ? 'D' : 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: isBlazor() ? 'y' : 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: isBlazor() ? 'yyyy' : null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = (isBlazor() ? '.dates.days.' :\n '.dates.calendars.gregorian.days.format.') + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = (isBlazor() ? '.dates.days.' :\n '.dates.calendars.islamic.days.format.') + this.dayHeaderFormat.toLowerCase();\n var mainVal = isBlazor() ? '' : 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'F' : 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.getFromatStringValue = function () {\n return isBlazor() ?\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'M' + getDefaultDateObject().dateSeperator + 'd' + getDefaultDateObject().dateSeperator + 'yy'\n : null;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n this.setEnable(this.enabled);\n if (this.getModuleName() === 'calendar') {\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n if (!this.isMultiSelection && +this.value !== Number.NaN && (+this.value !== +this.previousDate || this.previousDate == null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousElementValue = '';\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.isBlazorServer = false;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n this.renderComplete();\n if (!this.isBlazorServer) {\n this.setTimeZone(this.serverTimezoneOffset);\n }\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n if (!this.isBlazorServer) {\n this.checkInvalidValue(this.value);\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n this.updateInput();\n }\n else {\n var parentElement = this.element.parentElement;\n this.inputWrapper = {\n container: parentElement,\n clearButton: parentElement.querySelector('.' + CLEARICON),\n buttons: [parentElement.querySelector('.' + DATEICON)]\n };\n Input.bindInitialEvent({\n element: this.inputElement,\n floatLabelType: this.floatLabelType\n });\n if (this.showClearButton && this.inputWrapper.clearButton) {\n Input.wireClearBtnEvents(this.inputElement, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n this.setAllowEdit();\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-live': 'assertive', 'aria-atomic': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n var formatOptions;\n if (this.value && !this.isCalendar() && !isDynamic) {\n if (!this.isBlazorServer) {\n this.disabledDates();\n }\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n this.updateInputValue('');\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString)) {\n if (this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.dateIconHandler), this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && (this.inputWrapper.clearButton || (this.isBlazorServer))) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.unBindEvents = function () {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.dateIconHandler));\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.showClearButton && (this.inputWrapper.clearButton || (this.isBlazorServer))) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n if (!this.isBlazorServer) {\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.clear = function (event) {\n if (!this.isBlazorServer) {\n this.setProperties({ value: null }, true);\n }\n this.updateInputValue('');\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n if (!this.isBlazorServer) {\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n }\n if (this.isBlazorServer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnValueCleared');\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n if (!this.isBlazorServer) {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isCalendar() && !this.isBlazorServer) {\n this.hide(e);\n }\n else {\n if (!this.isBlazorServer || (this.isBlazorServer && this.inputWrapper.container.nextElementSibling)) {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[key];\n }\n }\n else {\n setStyle = this.htmlAttributes[key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: isBlazor() && this.isServerRendered ? null : this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n }\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: isBlazor() && this.isServerRendered ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && (this.inputWrapper.container.contains(e.target) ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper'))\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value) && !this.isBlazorServer)) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n }\n if (this.getModuleName() === 'datepicker') {\n if (!this.isBlazorServer) {\n this.show(null, e);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', true);\n }\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n }\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n }\n this.hide(e);\n break;\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (!this.isBlazorServer) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value) && !this.isBlazorServer) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === '') {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n if (!this.isBlazorServer) {\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n }\n else {\n this.popupWrapper = this.inputWrapper.container.nextElementSibling;\n this.calendarElement = this.popupWrapper.firstElementChild;\n this.tableBodyElement = select('tbody', this.calendarElement);\n this.contentElement = select('.e-content', this.calendarElement);\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.isBlazorServer ? null : this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n open: function () {\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value && !_this.isBlazorServer) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!this.isBlazorServer) {\n this.popupObj.element.className += ' ' + this.cssClass;\n }\n this.setAriaAttributes();\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.selectCalendar(event);\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +this.min && +this.value <= +this.max)) {\n outOfRange = new Date(this.checkValue(this.value));\n if (!this.isBlazorServer) {\n this.setProperties({ 'value': null }, true);\n }\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n if (!this.isBlazorServer) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n }\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: isBlazor() && this.isServerRendered ? null : this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n if (_this.isBlazorServer) {\n _this.popupWrapper.style.visibility = '';\n _this.popupWrapper.style.width = 'auto';\n _this.popupWrapper.style.height = 'auto';\n }\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n if (!_this.isBlazorServer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n if (_this.isBlazorServer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n }\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: isBlazor() && this.isServerRendered ? null : this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n if (!this.isBlazorServer) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n this.isAltKeyPressed = false;\n this.popupWrapper = this.popupObj = null;\n }\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper)) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n if (!this.isBlazorServer) {\n _super.prototype.destroy.call(this);\n this.keyboardModules.destroy();\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n }\n var ariaAttrs = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n if (!this.isBlazorServer) {\n this.keyboardModule.destroy();\n }\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n detach(this.inputWrapper.container);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.isBlazorServer = (isBlazor() && this.isServerRendered && this.getModuleName() === 'datepicker') ? true : false;\n if (!this.isBlazorServer) {\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n }\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.isBlazorServer) {\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n }\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = isBlazor() ? this.format.replace(/tt/, 'a') : this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic) &&\n !this.isBlazorServer) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic) &&\n !this.isBlazorServer) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic) &&\n !this.isBlazorServer) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n if (!this.isBlazorServer) {\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n }\n break;\n case 'name':\n if (!this.isBlazorServer) {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic) &&\n !this.isBlazorServer) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text' && !this.isBlazorServer) {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function () {\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!this.isBlazorServer) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isBlazorServer) {\n if (this.isCalendar()) {\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var id = (focusedEle || selectedEle) ? (focusedEle || selectedEle).getAttribute('id') : 'null';\n attributes(this.inputElement, { 'aria-activedescendant': '' + id });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n else {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !(+new Date(+this.value).setMilliseconds(0) >= +this.min\n && +new Date(+this.value).setMilliseconds(0) <= +this.max))\n || (!this.strictMode && this.inputElement.value !== '' && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n if (!this.isBlazorServer) {\n this.checkInvalidValue(newProp.value);\n }\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (!this.isBlazorServer) {\n if (isNullOrUndefined(this.value)) {\n this.updateInputValue('');\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement && !this.isBlazorServer) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n default:\n if (this.calendarElement && !this.isBlazorServer && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\n/* eslint-disable */\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) < maxWidth\n || (targetRectValues.right - containerRectValues.left) > targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.hide(event);\n };\n // eslint-disable-next-line\n this.dlgOverlayClickEventHandler = function (event) {\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n };\n // eslint-disable-next-line\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.hide(event);\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n // eslint-disable-next-line\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n if (this.showCloseIcon) {\n this.renderCloseIcon();\n }\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n // eslint-disable-next-line\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n // eslint-disable-next-line\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n // eslint-disable-next-line\n dragStart: function (event) {\n // eslint-disable-next-line\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n // eslint-disable-next-line\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n },\n // eslint-disable-next-line\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n // eslint-disable-next-line\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n ;\n Dialog.prototype.setContent = function () {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n // eslint-disable-next-line\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = this.sanitizeHelper(template);\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n // eslint-disable-next-line\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n // eslint-disable-next-line\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = isNullOrUndefined(oldProp.position.X) ? this.position.X : oldProp.position.X;\n var positionY = isNullOrUndefined(oldProp.position.Y) ? this.position.Y : oldProp.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.zIndex = getZindexPartial(zIndexElement);\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n // eslint-disable-next-line\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n // eslint-disable-next-line\n !isNullOrUndefined(_this.targetEle) ? removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]) :\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n // eslint-disable-next-line\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : DLG_UTIL_DEFAULT_TITLE;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n/**\n * MaskedTextBox base module\n */\nimport { EventHandler, isNullOrUndefined, merge, attributes, addClass, removeClass, Browser, extend } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nvar ERROR = 'e-error';\nvar INPUTGROUP = 'e-input-group';\nvar FLOATINPUT = 'e-float-input';\nvar UTILMASK = 'e-utility-mask';\nvar TOPLABEL = 'e-label-top';\nvar BOTTOMLABEL = 'e-label-bottom';\n/**\n * @hidden\n * Built-in masking elements collection.\n */\nexport var regularExpressions = {\n '0': '[0-9]',\n '9': '[0-9 ]',\n '#': '[0-9 +-]',\n 'L': '[A-Za-z]',\n '?': '[A-Za-z ]',\n '&': '[^\\x7f ]+',\n 'C': '[^\\x7f]+',\n 'A': '[A-Za-z0-9]',\n 'a': '[A-Za-z0-9 ]'\n};\n/**\n * Generate required masking elements to the MaskedTextBox from user mask input.\n *\n * @hidden\n */\nexport function createMask() {\n attributes(this.element, {\n 'role': 'textbox', 'autocomplete': 'off', 'autocorrect': 'off', 'autocapitalize': 'off',\n 'spellcheck': 'false', 'aria-live': 'assertive', 'aria-valuenow': ''\n });\n if (this.mask) {\n var splitMask = this.mask.split(']');\n for (var i = 0; i < splitMask.length; i++) {\n if (splitMask[i][splitMask[i].length - 1] === '\\\\') {\n splitMask[i] = splitMask[i] + ']';\n var splitInnerMask = splitMask[i].split('[');\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j][splitInnerMask[j].length - 1] === '\\\\') {\n splitInnerMask[j] = splitInnerMask[j] + '[';\n }\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n else {\n var splitInnerMask = splitMask[i].split('[');\n if (splitInnerMask.length > 1) {\n var chkSpace = false;\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j] === '\\\\') {\n this.customRegExpCollec.push('[');\n this.hiddenMask += splitInnerMask[j] + '[';\n }\n else if (splitInnerMask[j] === '') {\n chkSpace = true;\n }\n else if ((splitInnerMask[j] !== '' && chkSpace) || j === splitInnerMask.length - 1) {\n this.customRegExpCollec.push('[' + splitInnerMask[j] + ']');\n this.hiddenMask += this.promptChar;\n chkSpace = false;\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[0]);\n }\n }\n }\n this.escapeMaskValue = this.hiddenMask;\n this.promptMask = this.hiddenMask.replace(/[09?LCAa#&]/g, this.promptChar);\n if (!isNullOrUndefined(this.customCharacters)) {\n for (var i = 0; i < this.promptMask.length; i++) {\n if (!isNullOrUndefined(this.customCharacters[this.promptMask[i]])) {\n this.promptMask = this.promptMask.replace(new RegExp(this.promptMask[i], 'g'), this.promptChar);\n }\n }\n }\n var escapeNumber = 0;\n if (this.hiddenMask.match(new RegExp(/\\\\/))) {\n for (var i = 0; i < this.hiddenMask.length; i++) {\n var j = 0;\n if (i >= 1) {\n j = i;\n }\n escapeNumber = this.hiddenMask.length - this.promptMask.length;\n j = j - escapeNumber;\n if ((i > 0 && this.hiddenMask[i - 1] !== '\\\\') && (this.hiddenMask[i] === '>' ||\n this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|')) {\n this.promptMask = this.promptMask.substring(0, j) +\n this.promptMask.substring((i + 1) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) +\n this.escapeMaskValue.substring((i + 1) - escapeNumber, this.escapeMaskValue.length);\n }\n if (this.hiddenMask[i] === '\\\\') {\n this.promptMask = this.promptMask.substring(0, j) + this.hiddenMask[i + 1] +\n this.promptMask.substring((i + 2) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue[i + 1] +\n this.escapeMaskValue.substring((i + 2) - escapeNumber, this.escapeMaskValue.length);\n }\n }\n }\n else {\n this.promptMask = this.promptMask.replace(/[>|<]/g, '');\n this.escapeMaskValue = this.hiddenMask.replace(/[>|<]/g, '');\n }\n attributes(this.element, { 'aria-invalid': 'false' });\n }\n}\n/**\n * Apply mask ability with masking elements to the MaskedTextBox.\n *\n * @hidden\n */\nexport function applyMask() {\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, this.value);\n}\n/**\n * To wire required events to the MaskedTextBox.\n *\n * @hidden\n */\nexport function wireEvents() {\n EventHandler.add(this.element, 'keydown', maskInputKeyDownHandler, this);\n EventHandler.add(this.element, 'keypress', maskInputKeyPressHandler, this);\n EventHandler.add(this.element, 'keyup', maskInputKeyUpHandler, this);\n EventHandler.add(this.element, 'input', maskInputHandler, this);\n EventHandler.add(this.element, 'focus', maskInputFocusHandler, this);\n EventHandler.add(this.element, 'blur', maskInputBlurHandler, this);\n EventHandler.add(this.element, 'paste', maskInputPasteHandler, this);\n EventHandler.add(this.element, 'cut', maskInputCutHandler, this);\n EventHandler.add(this.element, 'drop', maskInputDropHandler, this);\n EventHandler.add(this.element, 'mousedown', maskInputMouseDownHandler, this);\n EventHandler.add(this.element, 'mouseup', maskInputMouseUpHandler, this);\n if (this.enabled) {\n bindClearEvent.call(this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', resetFormHandler, this);\n }\n }\n}\n/**\n * To unwire events attached to the MaskedTextBox.\n *\n * @hidden\n */\nexport function unwireEvents() {\n EventHandler.remove(this.element, 'keydown', maskInputKeyDownHandler);\n EventHandler.remove(this.element, 'keypress', maskInputKeyPressHandler);\n EventHandler.remove(this.element, 'keyup', maskInputKeyUpHandler);\n EventHandler.remove(this.element, 'input', maskInputHandler);\n EventHandler.remove(this.element, 'focus', maskInputFocusHandler);\n EventHandler.remove(this.element, 'blur', maskInputBlurHandler);\n EventHandler.remove(this.element, 'paste', maskInputPasteHandler);\n EventHandler.remove(this.element, 'cut', maskInputCutHandler);\n EventHandler.remove(this.element, 'mousedown', maskInputMouseDownHandler);\n EventHandler.remove(this.element, 'mouseup', maskInputMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', resetFormHandler);\n }\n}\n/**\n * To bind required events to the MaskedTextBox clearButton.\n *\n * @hidden\n */\nexport function bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown touchstart', resetHandler, this);\n }\n}\nfunction resetHandler(e) {\n e.preventDefault();\n if (!this.inputObj.clearButton.classList.contains('e-clear-icon-hide')) {\n clear.call(this, e);\n this.value = '';\n }\n}\nfunction clear(event) {\n var value = this.element.value;\n setElementValue.call(this, this.promptMask);\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n triggerMaskChangeEvent.call(this, event, value);\n this.element.setSelectionRange(0, 0);\n}\nfunction resetFormHandler() {\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n setElementValue.call(this, this.promptMask);\n }\n else {\n this.value = this.initInputValue;\n }\n}\n/**\n * To get masked value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function unstrippedValue(element) {\n return element.value;\n}\n/**\n * To extract raw value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function strippedValue(element, maskValues) {\n var value = '';\n var k = 0;\n var checkMask = false;\n var maskValue = (!isNullOrUndefined(maskValues)) ? maskValues : (!isNullOrUndefined(element) &&\n !isNullOrUndefined(this)) ? element.value : maskValues;\n if (maskValue !== this.promptMask) {\n for (var i = 0; i < this.customRegExpCollec.length; i++) {\n if (checkMask) {\n checkMask = false;\n }\n if (this.customRegExpCollec[k] === '>' || this.customRegExpCollec[k] === '<' ||\n this.customRegExpCollec[k] === '|' || this.customRegExpCollec[k] === '\\\\') {\n --i;\n checkMask = true;\n }\n if (!checkMask) {\n if ((maskValue[i] !== this.promptChar) && (!isNullOrUndefined(this.customRegExpCollec[k]) &&\n ((this._callPasteHandler || !isNullOrUndefined(this.regExpCollec[this.customRegExpCollec[k]])) ||\n (this.customRegExpCollec[k].length > 2 && this.customRegExpCollec[k][0] === '[' &&\n this.customRegExpCollec[k][this.customRegExpCollec[k].length - 1] === ']') ||\n (!isNullOrUndefined(this.customCharacters) &&\n (!isNullOrUndefined(this.customCharacters[this.customRegExpCollec[k]]))))) && (maskValue !== '')) {\n value += maskValue[i];\n }\n }\n ++k;\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n value = maskValue;\n }\n return value;\n}\nfunction pushIntoRegExpCollec(value) {\n for (var k = 0; k < value.length; k++) {\n this.hiddenMask += value[k];\n if (value[k] !== '\\\\') {\n this.customRegExpCollec.push(value[k]);\n }\n }\n}\nexport function maskInputMouseDownHandler() {\n this.isClicked = true;\n}\nexport function maskInputMouseUpHandler() {\n this.isClicked = false;\n}\nexport function maskInputFocusHandler(event) {\n var _this = this;\n var inputElement = this.element;\n var startIndex = 0;\n var modelValue = strippedValue.call(this, inputElement);\n var toAllowForward = false;\n var toAllowBackward = false;\n var eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: this.inputObj.container,\n selectionEnd: inputElement.selectionEnd\n };\n if (!this.isClicked) {\n triggerFocus.call(this, eventArgs, inputElement);\n }\n if (this.mask) {\n if (!(!(modelValue === null || modelValue === '') || this.floatLabelType === 'Always' ||\n this.placeholder === null || this.placeholder === '')) {\n inputElement.value = this.promptMask;\n }\n setTimeout(function () {\n if (inputElement.selectionStart === _this.promptMask.length ||\n inputElement.value[inputElement.selectionStart] === _this.promptChar) {\n toAllowForward = true;\n }\n else {\n for (var i = inputElement.selectionStart; i < _this.promptMask.length; i++) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowForward = false;\n break;\n }\n }\n else {\n toAllowForward = true;\n break;\n }\n }\n }\n });\n setTimeout(function () {\n var backSelectionStart = inputElement.selectionStart - 1;\n if (backSelectionStart === _this.promptMask.length - 1 ||\n inputElement.value[backSelectionStart] === _this.promptChar) {\n toAllowBackward = true;\n }\n else {\n for (var i = backSelectionStart; i >= 0; i--) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowBackward = false;\n break;\n }\n }\n else {\n toAllowBackward = true;\n break;\n }\n }\n }\n });\n if ((this.isClicked || (this.floatLabelType !== 'Always' &&\n ((modelValue === null || modelValue === '') &&\n (this.placeholder !== null && this.placeholder !== ''))))) {\n for (startIndex = 0; startIndex < this.promptMask.length; startIndex++) {\n if (inputElement.value[startIndex] === this.promptChar) {\n setTimeout(function () {\n if (toAllowForward || toAllowBackward) {\n inputElement.selectionEnd = startIndex;\n inputElement.selectionStart = startIndex;\n }\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: _this.value,\n maskedValue: inputElement.value,\n container: _this.inputObj.container,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(_this, eventArgs, inputElement);\n });\n break;\n }\n }\n if (isNullOrUndefined(inputElement.value.match(this.promptChar))) {\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: this.inputObj.container,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(this, eventArgs, inputElement);\n }\n this.isClicked = false;\n }\n }\n}\nexport function triggerFocus(eventArgs, inputElement) {\n this.trigger('focus', eventArgs, function (eventArgs) {\n inputElement.selectionStart = eventArgs.selectionStart;\n inputElement.selectionEnd = eventArgs.selectionEnd;\n });\n}\nexport function maskInputBlurHandler(event) {\n this.blurEventArgs = {\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: this.inputObj.container\n };\n this.trigger('blur', this.blurEventArgs);\n if (this.mask) {\n this.isFocus = false;\n if (this.placeholder && this.element.value === this.promptMask && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.floatLabelType === 'Auto' && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL)) {\n removeClass([labelElement], TOPLABEL);\n }\n }\n }\n}\nfunction maskInputPasteHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var sIndex_1 = this.element.selectionStart;\n var eIndex_1 = this.element.selectionEnd;\n var oldValue_1 = this.element.value;\n setElementValue.call(this, '');\n this._callPasteHandler = true;\n setTimeout(function () {\n var value = _this.element.value.replace(/ /g, '');\n if (_this.redoCollec.length > 0 && _this.redoCollec[0].value === _this.element.value) {\n value = strippedValue.call(_this, _this.element);\n }\n setElementValue.call(_this, oldValue_1);\n _this.element.selectionStart = sIndex_1;\n _this.element.selectionEnd = eIndex_1;\n var i = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i], false, null);\n ++i;\n } while (i < value.length);\n _this.maskKeyPress = false;\n _this._callPasteHandler = false;\n if (_this.element.value === oldValue_1) {\n var i_1 = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i_1], false, null);\n ++i_1;\n } while (i_1 < value.length);\n _this.maskKeyPress = false;\n }\n else {\n triggerMaskChangeEvent.call(_this, event, oldValue_1);\n }\n }, 1);\n }\n}\nfunction maskInputCutHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var preValue_1 = this.element.value;\n var sIndex_2 = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd });\n var value_1 = this.element.value.substring(0, sIndex_2) + this.promptMask.substring(sIndex_2, eIndex) +\n this.element.value.substring(eIndex);\n setTimeout(function () {\n setElementValue.call(_this, value_1);\n _this.element.selectionStart = _this.element.selectionEnd = sIndex_2;\n if (_this.element.value !== preValue_1) {\n triggerMaskChangeEvent.call(_this, event, null);\n }\n }, 0);\n }\n}\nexport function maskInputDropHandler(event) {\n event.preventDefault();\n}\nfunction maskInputHandler(event) {\n if (Browser.isIE === true && this.element.value === '' && this.floatLabelType === 'Never') {\n return;\n }\n var eventArgs = { ctrlKey: false, keyCode: 229 };\n extend(event, eventArgs);\n if (this.mask) {\n if (this.element.value === '') {\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (!this._callPasteHandler) {\n removeMaskInputValues.call(this, event);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var value = this.element.value.substring(startIndex - addedValues, startIndex);\n this.maskKeyPress = false;\n var i = 0;\n do {\n validateValue.call(this, value[i], event.ctrlKey, event);\n ++i;\n } while (i < value.length);\n if (this.element.value !== this.preEleVal) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (val === '') {\n setElementValue.call(this, this.promptMask);\n this.element.setSelectionRange(0, 0);\n }\n }\n}\nfunction maskInputKeyDownHandler(event) {\n if (this.mask && !this.readonly) {\n if (event.keyCode !== 229) {\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n event.preventDefault();\n }\n removeMaskInputValues.call(this, event);\n }\n var startValue = this.element.value;\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n var collec = void 0;\n if (event.keyCode === 90 && this.undoCollec.length > 0 && startValue !== this.undoCollec[this.undoCollec.length - 1].value) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.undoCollec.splice(this.undoCollec.length - 1, 1);\n }\n else if (event.keyCode === 89 && this.redoCollec.length > 0 && startValue !== this.redoCollec[0].value) {\n collec = this.redoCollec[0];\n this.undoCollec.push({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.redoCollec.splice(0, 1);\n }\n }\n }\n}\nexport function mobileRemoveFunction() {\n var collec;\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n collec = this.redoCollec[0];\n setElementValue.call(this, collec.value);\n if ((collec.startIndex - sIndex) === 1) {\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n }\n else {\n this.element.selectionStart = sIndex + 1;\n this.element.selectionEnd = eIndex + 1;\n }\n }\n else {\n setElementValue.call(this, this.promptMask);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n }\n}\nfunction autoFillMaskInputValues(isRemove, oldEventVal, event) {\n if (event.type === 'input') {\n isRemove = false;\n oldEventVal = this.element.value;\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, oldEventVal);\n }\n return isRemove;\n}\nfunction removeMaskInputValues(event) {\n var isRemove = false;\n var oldEventVal;\n var isDeleted = false;\n if (this.element.value.length < this.promptMask.length) {\n isRemove = true;\n oldEventVal = this.element.value;\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n mobileRemoveFunction.call(this);\n }\n if (this.element.value.length >= this.promptMask.length && event.type === 'input') {\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n }\n var initStartIndex = this.element.selectionStart;\n var initEndIndex = this.element.selectionEnd;\n var startIndex = this.element.selectionStart;\n var endIndex = this.element.selectionEnd;\n var maskValue = this.hiddenMask.replace(/[>|\\\\<]/g, '');\n var curMask = maskValue[startIndex - 1];\n var deleteEndIndex = this.element.selectionEnd;\n if (isRemove || event.keyCode === 8 || event.keyCode === 46) {\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: endIndex });\n var multipleDel = false;\n var preValue = this.element.value;\n if (startIndex > 0 || ((event.keyCode === 8 || event.keyCode === 46) && startIndex < this.element.value.length\n && ((this.element.selectionEnd - startIndex) !== this.element.value.length))) {\n var index = startIndex;\n if (startIndex !== endIndex) {\n startIndex = endIndex;\n if (event.keyCode === 46) {\n multipleDel = true;\n }\n }\n else if (event.keyCode === 46) {\n ++index;\n }\n else {\n --index;\n }\n for (var k = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? k > index : k < index; (event.keyCode === 8 || isRemove || multipleDel) ? k-- : k++) {\n for (var i = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? i > 0 : i < this.element.value.length; (event.keyCode === 8 || isRemove || multipleDel) ? i-- : i++) {\n var sIndex = void 0;\n if (((event.keyCode === 8 || multipleDel) && ((initStartIndex !== initEndIndex && initStartIndex !== startIndex) ||\n (initStartIndex === initEndIndex))) || isRemove) {\n curMask = maskValue[i - 1];\n sIndex = startIndex - 1;\n }\n else {\n curMask = maskValue[i];\n sIndex = startIndex;\n ++startIndex;\n }\n var oldValue = this.element.value[sIndex];\n if ((isNullOrUndefined(this.regExpCollec[curMask]) && (!isNullOrUndefined(this.customCharacters)\n && isNullOrUndefined(this.customCharacters[curMask]))\n && ((this.hiddenMask[sIndex] !== this.promptChar && this.customRegExpCollec[sIndex][0] !== '['\n && this.customRegExpCollec[sIndex][this.customRegExpCollec[sIndex].length - 1] !== ']')))\n || (this.promptMask[sIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters))) {\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n ++this.element.selectionStart;\n }\n }\n else {\n var value = this.element.value;\n var prompt_1 = this.promptChar;\n var elementValue = value.substring(0, sIndex) + prompt_1 + value.substring(startIndex, value.length);\n setElementValue.call(this, elementValue);\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n sIndex++;\n }\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n isDeleted = true;\n }\n startIndex = this.element.selectionStart;\n if ((!isDeleted && event.keyCode === 8) || multipleDel || (!isDeleted && !(event.keyCode === 46))) {\n sIndex = startIndex - 1;\n }\n else {\n sIndex = startIndex;\n isDeleted = false;\n }\n oldValue = this.element.value[sIndex];\n if (((initStartIndex !== initEndIndex) && (this.element.selectionStart === initStartIndex))\n || (this.promptMask[sIndex] === this.promptChar) || ((oldValue !== this.promptMask[sIndex]) &&\n (this.promptMask[sIndex] !== this.promptChar) && !isNullOrUndefined(this.customCharacters))) {\n break;\n }\n }\n }\n }\n if (event.keyCode === 46 && multipleDel && isDeleted) {\n this.element.selectionStart = this.element.selectionEnd = deleteEndIndex;\n }\n if (this.element.selectionStart === 0 && (this.element.selectionEnd === this.element.value.length)) {\n setElementValue.call(this, this.promptMask);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = startIndex;\n }\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n}\nfunction maskInputKeyPressHandler(event) {\n if (this.mask && !this.readonly) {\n var oldValue = this.element.value;\n if ((!event.ctrlKey) || (event.ctrlKey && event.code !== 'KeyA' && event.code !== 'KeyY'\n && event.code !== 'KeyZ' && event.code !== 'KeyX' && event.code !== 'KeyC' && event.code !== 'KeyV')) {\n this.maskKeyPress = true;\n var key = event.key;\n if (key === 'Spacebar') {\n key = String.fromCharCode(event.keyCode);\n }\n if (!key) {\n this.isIosInvalid = true;\n validateValue.call(this, String.fromCharCode(event.keyCode), event.ctrlKey, event);\n event.preventDefault();\n this.isIosInvalid = false;\n }\n else if (key && key.length === 1) {\n validateValue.call(this, key, event.ctrlKey, event);\n event.preventDefault();\n }\n if (event.keyCode === 32 && key === ' ' && this.promptChar === ' ') {\n this.element.selectionStart = this.element.selectionEnd = this.element.selectionStart - key.length;\n }\n }\n if (this.element.value !== oldValue) {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction triggerMaskChangeEvent(event, oldValue) {\n var prevOnChange = this.isProtectedOnChange;\n if (!isNullOrUndefined(this.changeEventArgs) && !this.isInitial) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.element.value, maskedValue: this.element.value, isInteraction: false, isInteracted: false };\n if (this.mask) {\n this.changeEventArgs.value = strippedValue.call(this, this.element);\n }\n if (!isNullOrUndefined(event)) {\n this.changeEventArgs.isInteracted = true;\n this.changeEventArgs.isInteraction = true;\n this.changeEventArgs.event = event;\n }\n this.isProtectedOnChange = true;\n this.value = this.changeEventArgs.value;\n this.isProtectedOnChange = prevOnChange;\n merge(eventArgs, this.changeEventArgs);\n /* istanbul ignore next */\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n this.preEleVal = this.element.value;\n this.prevValue = strippedValue.call(this, this.element);\n attributes(this.element, { 'aria-valuenow': this.element.value });\n}\nfunction maskInputKeyUpHandler(event) {\n if (this.mask && !this.readonly) {\n var collec = void 0;\n if (!this.maskKeyPress && event.keyCode === 229) {\n var oldEventVal = void 0;\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var val_1 = this.element.value.substring(startIndex - addedValues, startIndex);\n if (this.undoCollec.length > 0) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n var startIndex_1 = this.element.selectionStart;\n oldEventVal = collec.value;\n var oldVal = collec.value.substring(startIndex_1 - addedValues, startIndex_1);\n collec = this.redoCollec[0];\n val_1 = val_1.trim();\n var isSpace = Browser.isAndroid && val_1 === '';\n if (!isSpace && oldVal !== val_1 && collec.value.substring(startIndex_1 - addedValues, startIndex_1) !== val_1) {\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n else if (isSpace) {\n preventUnsupportedValues.call(this, event, startIndex_1 - 1, this.element.selectionEnd - 1, val_1, event.ctrlKey, false);\n }\n }\n else {\n oldEventVal = this.promptMask;\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n this.maskKeyPress = false;\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n else {\n removeMaskError.call(this);\n }\n var val = strippedValue.call(this, this.element);\n if (!((this.element.selectionStart === 0) && (this.promptMask === this.element.value) && val === '')\n || (val === '' && this.value !== val)) {\n this.prevValue = val;\n this.value = val;\n }\n }\n else {\n triggerMaskChangeEvent.call(this, event);\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var temp_1 = this.element;\n setTimeout(function () {\n temp_1.setSelectionRange(0, 0);\n }, 0);\n }\n}\nfunction mobileSwipeCheck(key) {\n if (key.length > 1 && ((this.promptMask.length + key.length) < this.element.value.length)) {\n var elementValue = this.redoCollec[0].value.substring(0, this.redoCollec[0].startIndex) + key +\n this.redoCollec[0].value.substring(this.redoCollec[0].startIndex, this.redoCollec[0].value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = this.redoCollec[0].startIndex + key.length;\n }\n this.element.selectionStart = this.element.selectionStart - key.length;\n this.element.selectionEnd = this.element.selectionEnd - key.length;\n}\nfunction mobileValidation(key) {\n if (!this.maskKeyPress) {\n mobileSwipeCheck.call(this, key);\n }\n}\nfunction validateValue(key, isCtrlKey, event) {\n mobileValidation.call(this, key);\n if (isNullOrUndefined(this) || isNullOrUndefined(key)) {\n return;\n }\n var startIndex = this.element.selectionStart;\n var initStartIndex = startIndex;\n var curMask;\n var allowText = false;\n var value = this.element.value;\n var eventOldVal;\n var prevSupport = false;\n var isEqualVal = false;\n for (var k = 0; k < key.length; k++) {\n var keyValue = key[k];\n startIndex = this.element.selectionStart;\n if (!this.maskKeyPress && initStartIndex === startIndex) {\n startIndex = startIndex + k;\n }\n if ((!this.maskKeyPress || startIndex < this.promptMask.length)) {\n for (var i = startIndex; i < this.promptMask.length; i++) {\n var maskValue = this.escapeMaskValue;\n curMask = maskValue[startIndex];\n if (this.hiddenMask[startIndex] === '\\\\' && this.hiddenMask[startIndex + 1] === key) {\n isEqualVal = true;\n }\n if ((isNullOrUndefined(this.regExpCollec[curMask]) && (isNullOrUndefined(this.customCharacters)\n || (!isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[curMask])))\n && ((this.hiddenMask[startIndex] !== this.promptChar && this.customRegExpCollec[startIndex][0] !== '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] !== ']')))\n || ((this.promptMask[startIndex] !== this.promptChar) && isNullOrUndefined(this.customCharacters))\n || (this.promptChar === curMask && this.escapeMaskValue === this.mask)) {\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n startIndex = this.element.selectionStart;\n curMask = this.hiddenMask[startIndex];\n }\n }\n if (!isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[curMask])) {\n var customValStr = this.customCharacters[curMask];\n var customValArr = customValStr.split(',');\n for (var i = 0; i < customValArr.length; i++) {\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n }\n else if (!isNullOrUndefined(this.regExpCollec[curMask]) && keyValue.match(new RegExp(this.regExpCollec[curMask]))\n && this.promptMask[startIndex] === this.promptChar) {\n allowText = true;\n }\n else if (this.promptMask[startIndex] === this.promptChar && this.customRegExpCollec[startIndex][0] === '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] === ']'\n && keyValue.match(new RegExp(this.customRegExpCollec[startIndex]))) {\n allowText = true;\n }\n if ((!this.maskKeyPress || startIndex < this.hiddenMask.length) && allowText) {\n if (k === 0) {\n if (this.maskKeyPress) {\n this.undoCollec.push({ value: value, startIndex: startIndex, endIndex: startIndex });\n }\n else {\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n eventOldVal = this.redoCollec[0].value;\n setElementValue.call(this, eventOldVal);\n this.undoCollec.push(this.redoCollec[0]);\n }\n else {\n this.undoCollec.push({ value: this.promptMask, startIndex: startIndex, endIndex: startIndex });\n eventOldVal = this.promptMask;\n setElementValue.call(this, eventOldVal);\n }\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n }\n }\n startIndex = this.element.selectionStart;\n applySupportedValues.call(this, event, startIndex, keyValue, eventOldVal, isEqualVal);\n prevSupport = true;\n if (k === key.length - 1) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n allowText = false;\n }\n else {\n startIndex = this.element.selectionStart;\n preventUnsupportedValues.call(this, event, startIndex, initStartIndex, key, isCtrlKey, prevSupport);\n }\n if (k === key.length - 1 && !allowText) {\n if (!Browser.isAndroid || (Browser.isAndroid && startIndex < this.promptMask.length)) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n }\n }\n else {\n if (key.length === 1 && !isCtrlKey && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n }\n }\n}\nfunction applySupportedValues(event, startIndex, keyValue, eventOldVal, isEqualVal) {\n if (this.hiddenMask.length > this.promptMask.length) {\n keyValue = changeToLowerUpperCase.call(this, keyValue, this.element.value);\n }\n if (!isEqualVal) {\n var value = this.element.value;\n var elementValue = value.substring(0, startIndex) + keyValue + value.substring(startIndex + 1, value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n }\n}\nfunction preventUnsupportedValues(event, sIdx, idx, key, ctrl, chkSupport) {\n if (!this.maskKeyPress) {\n var value = this.element.value;\n if (sIdx >= this.promptMask.length) {\n setElementValue.call(this, value.substring(0, sIdx));\n }\n else {\n if (idx === sIdx) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx + 1, value.length));\n }\n else {\n if (this.promptMask.length === this.element.value.length) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx, value.length));\n }\n else {\n setElementValue.call(this, value.substring(0, idx) + value.substring(idx + 1, value.length));\n }\n }\n this.element.selectionStart = this.element.selectionEnd = (chkSupport ||\n this.element.value[idx] !== this.promptChar) ? sIdx : idx;\n }\n addMaskErrorClass.call(this);\n }\n if (key.length === 1 && !ctrl && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n}\nfunction addMaskErrorClass() {\n var _this = this;\n var parentElement = this.element.parentNode;\n var timer = 200;\n if (parentElement.classList.contains(INPUTGROUP) || parentElement.classList.contains(FLOATINPUT)) {\n addClass([parentElement], ERROR);\n }\n else {\n addClass([this.element], ERROR);\n }\n if (this.isIosInvalid === true) {\n timer = 400;\n }\n attributes(this.element, { 'aria-invalid': 'true' });\n setTimeout(function () {\n if (!_this.maskKeyPress) {\n removeMaskError.call(_this);\n }\n }, timer);\n}\nfunction removeMaskError() {\n var parentElement = this.element.parentNode;\n if (!isNullOrUndefined(parentElement)) {\n removeClass([parentElement], ERROR);\n }\n removeClass([this.element], ERROR);\n attributes(this.element, { 'aria-invalid': 'false' });\n}\n/**\n * Validates user input using masking elements '<' , '>' and '|'.\n *\n * @hidden\n */\nfunction changeToLowerUpperCase(key, value) {\n var promptMask;\n var i;\n var curVal = value;\n var caseCount = 0;\n for (i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === '\\\\') {\n promptMask = curVal.substring(0, i) + '\\\\' + curVal.substring(i, curVal.length);\n }\n if (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|') {\n if (this.hiddenMask[i] !== curVal[i]) {\n promptMask = curVal.substring(0, i) + this.hiddenMask[i] + curVal.substring(i, curVal.length);\n }\n ++caseCount;\n }\n if (promptMask) {\n if (((promptMask[i] === this.promptChar) && (i > this.element.selectionStart)) ||\n (this.element.value.indexOf(this.promptChar) < 0 && (this.element.selectionStart + caseCount) === i)) {\n caseCount = 0;\n break;\n }\n curVal = promptMask;\n }\n }\n while (i >= 0 && promptMask) {\n if (i === 0 || promptMask[i - 1] !== '\\\\') {\n if (promptMask[i] === '>') {\n key = key.toUpperCase();\n break;\n }\n else if (promptMask[i] === '<') {\n key = key.toLowerCase();\n break;\n }\n else if (promptMask[i] === '|') {\n break;\n }\n }\n --i;\n }\n return key;\n}\n/**\n * To set updated values in the MaskedTextBox.\n *\n * @hidden\n */\nexport function setMaskValue(val) {\n if (this.mask && val !== undefined && (this.prevValue === undefined || this.prevValue !== val)) {\n this.maskKeyPress = true;\n setElementValue.call(this, this.promptMask);\n if (val !== '' && !(val === null && this.floatLabelType === 'Never' && this.placeholder)) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n if (val !== null) {\n for (var i = 0; i < val.length; i++) {\n validateValue.call(this, val[i], false, null);\n }\n }\n var newVal = strippedValue.call(this, this.element);\n this.prevValue = newVal;\n this.value = newVal;\n triggerMaskChangeEvent.call(this, null, null);\n this.maskKeyPress = false;\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.element.value === this.promptMask && this.floatLabelType === 'Auto' && this.placeholder &&\n !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL) && !this.isFocus) {\n removeClass([labelElement], TOPLABEL);\n addClass([labelElement], BOTTOMLABEL);\n setElementValue.call(this, '');\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n}\n/**\n * To set updated values in the input element.\n *\n * @hidden\n */\nexport function setElementValue(val, element) {\n if (!this.isFocus && this.floatLabelType === 'Auto' && this.placeholder && isNullOrUndefined(this.value)) {\n val = '';\n }\n var value = strippedValue.call(this, (element ? element : this.element), val);\n if (value === null || value === '') {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, false);\n if (this.showClearButton) {\n this.inputObj.clearButton.classList.add('e-clear-icon-hide');\n }\n }\n else {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n }\n}\n/**\n * Provide mask support to input textbox through utility method.\n *\n * @hidden\n */\nexport function maskInput(args) {\n var inputEle = getMaskInput(args);\n applyMask.call(inputEle);\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (args.mask) {\n unwireEvents.call(inputEle);\n wireEvents.call(inputEle);\n }\n}\nfunction getMaskInput(args) {\n addClass([args.element], UTILMASK);\n var inputEle = {\n element: args.element,\n mask: args.mask,\n promptMask: '',\n hiddenMask: '',\n escapeMaskValue: '',\n promptChar: args.promptChar ? (args.promptChar.length > 1) ? args.promptChar = args.promptChar[0]\n : args.promptChar : '_',\n value: args.value ? args.value : null,\n regExpCollec: regularExpressions,\n customRegExpCollec: [],\n customCharacters: args.customCharacters,\n undoCollec: [],\n redoCollec: [],\n maskKeyPress: false,\n prevValue: ''\n };\n createMask.call(inputEle);\n return inputEle;\n}\n/**\n * Gets raw value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getVal(args) {\n return strippedValue.call(getUtilMaskEle(args), args.element);\n}\n/**\n * Gets masked value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getMaskedVal(args) {\n return unstrippedValue.call(getUtilMaskEle(args), args.element);\n}\nfunction getUtilMaskEle(args) {\n var inputEle;\n if (!isNullOrUndefined(args) && args.element.classList.contains(UTILMASK)) {\n inputEle = getMaskInput(args);\n }\n return inputEle;\n}\n/**\n * Arguments to perform undo and redo functionalities.\n *\n * @hidden\n */\nvar MaskUndo = /** @class */ (function () {\n function MaskUndo() {\n }\n return MaskUndo;\n}());\nexport { MaskUndo };\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar maskUndo = new MaskUndo();\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Event, Property, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, setValue, addClass, detach } from '@syncfusion/ej2-base';\nimport { removeClass, Browser, closest, isBlazor } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nimport { regularExpressions, createMask, applyMask, wireEvents, unwireEvents, unstrippedValue, strippedValue } from '../base/index';\nimport { setMaskValue, setElementValue, bindClearEvent } from '../base/index';\nvar ROOT = 'e-control-wrapper e-mask';\nvar INPUT = 'e-input';\nvar COMPONENT = 'e-maskedtextbox';\nvar CONTROL = 'e-control';\nvar MASKINPUT_FOCUS = 'e-input-focus';\nvar wrapperAttr = ['title', 'style', 'class'];\n/**\n * The MaskedTextBox allows the user to enter the valid input only based on the provided mask.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MaskedTextBox = /** @class */ (function (_super) {\n __extends(MaskedTextBox, _super);\n /**\n *\n * @param {MaskedTextBoxModel} options - Specifies the MaskedTextBox model.\n * @param {string | HTMLElement | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function MaskedTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initInputValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isClicked = false;\n _this.maskOptions = options;\n return _this;\n }\n /**\n * Gets the component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n MaskedTextBox.prototype.getModuleName = function () {\n return 'maskedtextbox';\n };\n /**\n * Initializes the event handler\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.preRender = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.regExpCollec = regularExpressions;\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n this.changeEventArgs = {};\n this.focusEventArgs = {};\n this.blurEventArgs = {};\n this.maskKeyPress = false;\n this.isFocus = false;\n this.isInitial = false;\n this.isIosInvalid = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n for (var i = 0; i < this.element.attributes.length; i++) {\n input.setAttribute(this.element.attributes[i].nodeName, this.element.attributes[i].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n if (this.element.hasAttribute('id')) {\n this.element.removeAttribute('id');\n }\n this.element.classList.remove('e-control', 'e-maskedtextbox');\n this.element.classList.add('e-mask-container');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkHtmlAttributes(false);\n if (this.formElement) {\n this.initInputValue = this.value;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Initializes the component rendering.\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.render = function () {\n var _this = this;\n if (this.element.tagName.toLowerCase() === 'input') {\n var checkBlazor = isBlazor() && this.isServerRendered;\n if (this.floatLabelType === 'Never') {\n addClass([this.element], INPUT);\n }\n this.createWrapper();\n this.updateHTMLAttrToWrapper();\n if (this.element.name === '') {\n this.element.setAttribute('name', this.element.id);\n }\n this.isInitial = true;\n if (checkBlazor && Browser.isIE === true) {\n setTimeout(function () {\n _this.resetMaskedTextBox();\n });\n }\n else {\n this.resetMaskedTextBox();\n }\n this.isInitial = false;\n this.setMaskPlaceholder(true, false);\n this.setWidth(this.width);\n this.preEleVal = this.element.value;\n if (!Browser.isDevice && (Browser.info.version === '11.0' || Browser.info.name === 'edge')) {\n this.element.blur();\n }\n if (Browser.isDevice && Browser.isIos) {\n this.element.blur();\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n }\n this.renderComplete();\n }\n };\n MaskedTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n MaskedTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getValidClassList(newClass), [this.inputObj.container], this.getValidClassList(oldClass));\n };\n MaskedTextBox.prototype.getValidClassList = function (maskClassName) {\n var result = maskClassName;\n if (!isNullOrUndefined(maskClassName) && maskClassName !== '') {\n result = (maskClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n MaskedTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputObj.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var maskStyle = this.inputObj.container.getAttribute(key);\n maskStyle = !isNullOrUndefined(maskStyle) ? (maskStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputObj.container.setAttribute(key, maskStyle);\n }\n else {\n this.inputObj.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n MaskedTextBox.prototype.resetMaskedTextBox = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n if (this.promptChar.length > 1) {\n this.promptChar = this.promptChar[0];\n }\n createMask.call(this);\n applyMask.call(this);\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (!this.isInitial) {\n unwireEvents.call(this);\n }\n wireEvents.call(this);\n };\n MaskedTextBox.prototype.setMaskPlaceholder = function (setVal, dynamicPlaceholder) {\n if (dynamicPlaceholder || this.placeholder) {\n Input.setPlaceholder(this.placeholder, this.element);\n if ((this.element.value === this.promptMask && setVal && this.floatLabelType !== 'Always') ||\n this.element.value === this.promptMask && this.floatLabelType === 'Never') {\n setElementValue.call(this, '');\n }\n }\n };\n MaskedTextBox.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputObj.container.style.width = formatUnit(width);\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n var elementWidth = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n this.inputObj.container.style.width = elementWidth;\n this.element.style.width = elementWidth;\n }\n }\n };\n MaskedTextBox.prototype.checkHtmlAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes)\n : ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'placeholder':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['enabled'] === undefined)) || isDynamic) {\n var isEnabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: isEnabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['readonly'] === undefined)) || isDynamic) {\n var isReadonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: isReadonly }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n MaskedTextBox.prototype.createWrapper = function () {\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.getValidClassList(this.cssClass);\n }\n this.inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('class', ROOT + ' ' + this.inputObj.container.getAttribute('class'));\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {MaskedTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {MaskedTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @hidden\n */\n MaskedTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n setMaskValue.call(this, this.value);\n if (this.placeholder) {\n this.setMaskPlaceholder(false, false);\n }\n break;\n case 'placeholder':\n this.setMaskPlaceholder(true, true);\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element, this.floatLabelType, this.inputObj.container);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.inputObj.container]);\n break;\n case 'customCharacters':\n this.customCharacters = newProp.customCharacters;\n this.resetMaskedTextBox();\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.element, this.inputObj, undefined, this.createElement);\n bindClearEvent.call(this);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'mask':\n {\n var strippedValue_1 = this.value;\n this.mask = newProp.mask;\n this.updateValue(strippedValue_1);\n }\n break;\n case 'promptChar': {\n if (newProp.promptChar.length > 1) {\n newProp.promptChar = newProp.promptChar[0];\n }\n if (newProp.promptChar) {\n this.promptChar = newProp.promptChar;\n }\n else {\n this.promptChar = '_';\n }\n var value = this.element.value.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n if (this.promptMask === this.element.value) {\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n this.promptMask = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n this.undoCollec = this.redoCollec = [];\n setElementValue.call(this, value);\n break;\n }\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n MaskedTextBox.prototype.updateValue = function (strippedVal) {\n this.resetMaskedTextBox();\n setMaskValue.call(this, strippedVal);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the value of the MaskedTextBox with the masked format.\n * By using `value` property, you can get the raw value of maskedtextbox without literals and prompt characters.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getMaskedValue = function () {\n return unstrippedValue.call(this, this.element);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\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 MaskedTextBox.prototype.destroy = function () {\n unwireEvents.call(this);\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'autocorrect', 'aria-disabled', 'aria-placeholder', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete',\n 'aria-live', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.inputObj.container.insertAdjacentElement('afterend', this.element);\n detach(this.inputObj.container);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], MaskedTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property({})\n ], MaskedTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], MaskedTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"mask\", void 0);\n __decorate([\n Property('_')\n ], MaskedTextBox.prototype, \"promptChar\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"customCharacters\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"blur\", void 0);\n MaskedTextBox = __decorate([\n NotifyPropertyChanges\n ], MaskedTextBox);\n return MaskedTextBox;\n}(Component));\nexport { MaskedTextBox };\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\nmodule.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nmodule.exports = _createForOfIteratorHelper;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","var superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper;","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","// Based on https://github.com/alitaheri/normalize-scroll-left\n\n'use strict'\n\n// Based on https://github.com/react-bootstrap/dom-helpers/blob/master/src/util/inDOM.js\nvar inDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n)\nvar cachedType: string\nexport function _setScrollType(type: any) {\n cachedType = type\n}\n\n// Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type\nexport function detectScrollType() {\n if (cachedType) {\n return cachedType\n }\n if (!inDOM || !window.document.body) {\n return 'indeterminate'\n }\n var dummy = window.document.createElement('div')\n dummy.appendChild(document.createTextNode('ABCD'))\n dummy.dir = 'rtl'\n dummy.style.fontSize = '14px'\n dummy.style.width = '4px'\n dummy.style.height = '1px'\n dummy.style.position = 'absolute'\n dummy.style.top = '-1000px'\n dummy.style.overflow = 'scroll'\n document.body.appendChild(dummy)\n cachedType = 'reverse'\n if (dummy.scrollLeft > 0) {\n cachedType = 'default'\n } else {\n dummy.scrollLeft = 2\n if (dummy.scrollLeft < 2) {\n cachedType = 'negative'\n }\n }\n document.body.removeChild(dummy)\n return cachedType\n}\n\n// Based on https://stackoverflow.com/a/24394376\nexport function getNormalizedScrollLeft(element: { scrollLeft: any; scrollWidth: number; clientWidth: number }, direction: string) {\n var scrollLeft = element.scrollLeft\n // Perform the calculations only when direction is rtl to avoid messing up the ltr behavior\n if (direction !== 'rtl') {\n return scrollLeft\n }\n var type = detectScrollType()\n if (type === 'indeterminate') {\n return Number.NaN\n }\n switch (type) {\n case 'negative':\n return element.scrollWidth - element.clientWidth + scrollLeft\n case 'reverse':\n return element.scrollWidth - element.clientWidth - scrollLeft\n }\n return scrollLeft\n}\n\nexport function setNormalizedScrollLeft(element: { scrollLeft: number; clientWidth: number; scrollWidth: number }, scrollLeft: number, direction: string) {\n // Perform the calculations only when direction is rtl to avoid messing up the ltr behavior\n if (direction !== 'rtl') {\n element.scrollLeft = scrollLeft\n return\n }\n var type = detectScrollType()\n if (type === 'indeterminate') {\n return\n }\n switch (type) {\n case 'negative':\n element.scrollLeft =\n element.clientWidth - element.scrollWidth + scrollLeft\n break\n case 'reverse':\n element.scrollLeft =\n element.scrollWidth - element.clientWidth - scrollLeft\n break\n default:\n element.scrollLeft = scrollLeft\n break\n }\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import * as jsxRuntime from \"/Users/m.aliwi/Desktop/Websites/react-tabs-scrollable/package/node_modules/react/jsx-runtime.js\"\nexport const jsx = jsxRuntime.jsx\nexport const jsxs = jsxRuntime.jsxs\nexport const Fragment = jsxRuntime.Fragment","import React from \"react\";\n\ntype NavBtnProps = {\n hideNavBtnsOnMobile?: boolean;\n navBtnDisplay?: object | any;\n disabled: boolean;\n onClick?: () => void;\n children: React.ReactNode;\n navBtnStyle?: object;\n className?: string;\n navBtnContainerClassName?: string;\n navBtnAs?: keyof JSX.IntrinsicElements &\n React.HTMLAttributes;\n};\n\nconst NavBtn = React.forwardRef(\n (\n {\n hideNavBtnsOnMobile,\n disabled,\n onClick = () => null,\n children,\n navBtnStyle,\n className = \"\",\n navBtnContainerClassName,\n navBtnAs = \"button\",\n }: NavBtnProps,\n ref\n ) => {\n const containerClassNames = `rts___nav___btn___container ${\n hideNavBtnsOnMobile ? \"display___md___none\" : \"\"\n } ${navBtnContainerClassName}`.trim();\n const Tag = navBtnAs as React.ElementType;\n\n const buttonSpecialProps = {\n disabled,\n type: \"button\",\n };\n\n return (\n
\n }\n >\n {children}\n \n
\n );\n }\n);\n\nexport default NavBtn;\n","import React from \"react\";\ninterface TabProps {\n children: React.ReactNode;\n className?: string;\n style?: object;\n selected?: boolean;\n props?: React.ReactNode;\n tabAs?: keyof JSX.IntrinsicElements & React.HTMLAttributes;\n}\nconst Tab = React.forwardRef(\n (\n { className = \"\", selected, style, tabAs = \"button\", ...props }: TabProps,\n ref\n ) => {\n const Tag = tabAs as React.ElementType;\n\n const buttonSpecialProps = {\n type: \"button\",\n };\n const tabClassNames = `${className} ${\n selected ? \"rts___tab___selected\" : \"\"\n }`.trim();\n return (\n }\n style={{ ...(style ? style : {}) }}\n {...(tabAs === \"button\" ? buttonSpecialProps : {})}\n >\n {props.children}\n \n );\n }\n);\nexport default Tab;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElem, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElem, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset) {\n contentOffset = width;\n container.style.maxWidth = width + \"px\";\n return createScrollbar(createElem, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/ban-types */\nimport { Component, Property, ChildProperty, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { updateBlazorTemplate, resetBlazorTemplate, blazorTemplates, extend, SanitizeHtmlHelper, isBlazor } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * @private\n * Base class for Menu and ContextMenu components.\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n if (this.isMenu && this.template && isBlazor()) {\n var menuTemplateId = this.element.id + TEMPLATE_PROPERTY;\n resetBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY);\n if (Object.keys(blazorTemplates).length) {\n extend(this.tempItem, blazorTemplates[menuTemplateId], [], true);\n }\n updateBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY, this);\n }\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // tslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: this.isMenu && isBlazor() ? this.getMenuItemModel(item_1, ulIndex) : item_1,\n items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && _this.navIdx.length && closedLi && !trgtLi) {\n var ele = (e && e.target.classList.contains('e-vscroll'))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1) {\n sli_1.classList.add(FOCUSED);\n sli_1.focus();\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint:disable\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // tslint:disable\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // tslint:disable\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n if (this.isMenu && this.template && isBlazor()) {\n var menuTemplateId = this.element.id + TEMPLATE_PROPERTY;\n if (Object.keys(blazorTemplates).length) {\n var itemFromBlazorTemplate = blazorTemplates[menuTemplateId];\n this.tempItem = this.tempItem.concat(itemFromBlazorTemplate);\n blazorTemplates[menuTemplateId] = this.tempItem;\n }\n updateBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY, this);\n }\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: this.isMenu && isBlazor() ? this.getMenuItemModel(item, this.navIdx.length - 1) :\n item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n var collide;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n collide = isCollide(_this.popupWrapper, null, _this.left, _this.top);\n if ((_this.isNestedOrVertical || _this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n _this.popupObj.collision.X = 'none';\n var offWidth = closest(_this.lItem, '.e-' + _this.getModuleName() + '-wrapper').offsetWidth;\n _this.left =\n _this.enableRtl ? calculatePosition(_this.lItem, _this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : _this.left - _this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(_this.popupWrapper, null, _this.left, _this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n _this.left = _this.callFit(_this.popupWrapper, true, false, _this.top, _this.left).left;\n }\n _this.popupWrapper.style.left = _this.left + 'px';\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n }\n _this.popupWrapper.style.display = '';\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // tslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isBlazor() && this.template && items.length && items[0].properties) {\n var itemsObj_1 = [];\n items.forEach(function (item, index) {\n itemsObj_1.push({});\n itemsObj_1[index][fields.text] = item[fields.text];\n if (!item[fields.id]) {\n item[fields.id] = getUniqueID('menuitem');\n }\n itemsObj_1[index][fields.id] = item[fields.id];\n itemsObj_1[index][fields.iconCss] = item[fields.iconCss];\n itemsObj_1[index][fields.url] = item[fields.url];\n itemsObj_1[index][fields.child] = item[fields.child];\n itemsObj_1[index][fields.separator] = item[fields.separator];\n });\n items = itemsObj_1;\n }\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n args.curData.htmlAttributes = {\n role: 'menuitem',\n tabindex: '-1'\n };\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.removeAttribute('role');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n if (!_this.isMenu) {\n args.item.removeAttribute('role');\n }\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.classList.contains('e-hide-menu')) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx = id ? id : item.id;\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n var newItem = this.getItem(navIdx);\n newItem.iconCss = item.iconCss;\n newItem.id = item.id;\n newItem.text = item.text;\n newItem.url = item.url;\n newItem.separator = item.separator;\n newItem.items = item.items;\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.querySelectorAll('li'), li);\n if (this.isMenu && this.template && isBlazor()) {\n idx = Array.prototype.indexOf.call(ul.querySelectorAll(li.tagName), li);\n }\n else {\n idx = Array.prototype.indexOf.call(ul.children, li);\n }\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n if (this_1.isMenu && isBlazor()) {\n this_1.updateItemsByNavIdx();\n }\n else {\n this_1.navIdx = [];\n }\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor()) {\n ul = this.removeChildElement(ul);\n }\n else {\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (ishide) {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.add(HIDE);\n }\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.remove(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n this.removeItem(iitems, navIdx, idx);\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'context menu', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @method open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ButtonComponent` represents the react Button Component.\n * ```ts\n * \n * ```\n */\nvar ButtonComponent = /** @class */ (function (_super) {\n __extends(ButtonComponent, _super);\n function ButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n ButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ButtonComponent;\n}(Button));\nexport { ButtonComponent };\napplyMixins(ButtonComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { PivotView } from '@syncfusion/ej2-pivotview';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `PivotViewComponent` represents the react PivotView.\n * ```tsx\n * \n * ```\n */\nvar PivotViewComponent = /** @class */ (function (_super) {\n __extends(PivotViewComponent, _super);\n function PivotViewComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n PivotViewComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return PivotViewComponent;\n}(PivotView));\nexport { PivotViewComponent };\napplyMixins(PivotViewComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar treeAriaAttr = {\n treeRole: 'tree',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
    \n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n // eslint-disable-next-line\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.isBlazorExpandedNodes = [];\n _this.hasTemplate = false;\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.isBlazorPlatform = (isBlazor() && this.isServerRendered);\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.blazorInitialRender = false;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n if (!this.isBlazorPlatform) {\n this.initialRender = false;\n }\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n if (!this.isBlazorPlatform) {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n }\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n }\n else {\n this.element.classList.remove(DISABLED);\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (isEnabled) {\n firstUl.setAttribute('aria-multiselectable', 'true');\n }\n else {\n firstUl.removeAttribute('aria-multiselectable');\n }\n };\n // eslint-disable-next-line\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n // eslint-disable-next-line\n var e = void 0;\n this.element.classList.add(INTERACTION);\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n /* eslint-disable */\n this.isOffline = (this.isBlazorPlatform ? this.fields.dataSource.offline :\n this.fields.dataSource.dataSource.offline);\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = (_this.isBlazorPlatform ? _this.fields.dataSource.offline :\n _this.fields.dataSource.dataSource.offline);\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n /* eslint-disable */\n if (!this.isBlazorPlatform || (this.isBlazorPlatform && this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) || this.changeDataSource) {\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n }\n this.updateTemplateForBlazor();\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateTemplateForBlazor = function () {\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.setAttribute('role', 'checkbox');\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n checkboxEle.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i])) && !isNOU(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[index].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length; len >= 0; len--) {\n var liEle = void 0;\n if (nodes.length === 1) {\n liEle = this.getElement(nodes[len - 1]);\n }\n else {\n liEle = this.getElement(nodes[len]);\n }\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"check\");\n this.allowServerDataBinding = false;\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n addClass([firstNode], FOCUS);\n this.updateIdAttr(null, firstNode);\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var eUids = this.expandedNodes;\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n if (this.isBlazorPlatform && !this.initialRender) {\n return;\n }\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n if (!this.isBlazorPlatform || (this.isBlazorPlatform && !this.initialRender)) {\n this.doSelectionAction();\n }\n this.updateCheckedProp();\n if (this.isBlazorPlatform) {\n if (this.initialRender) {\n this.setCheckedNodes(this.checkedNodes);\n }\n this.updateInstance();\n this.initialRender = false;\n }\n this.isAnimate = true;\n this.isInitalExpand = false;\n if (!this.isLoaded || this.isFieldChange) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"expand\");\n this.allowServerDataBinding = false;\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"expand\");\n this.allowServerDataBinding = false;\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n this.updateTemplateForBlazor();\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n _this.updateTemplateForBlazor();\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n if (!this.isBlazorPlatform || !this.initialRender) {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n }\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n if (this.loadOnDemand && this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot) {\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, obj[i]);\n if (dataId && dataId.toString() === parentId) {\n return getValue(this.fields.child, obj[i]);\n }\n else if (!isNOU(getValue(this.fields.child, obj[i]))) {\n childNodes = this.getChildNodes(getValue(this.fields.child, obj[i]), parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n this.setFocusElement(li);\n if (this.isLoaded) {\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"select\");\n this.allowServerDataBinding = false;\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.allowServerDataBinding = true;\n _this.updateServerProperties(\"select\");\n _this.allowServerDataBinding = false;\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"select\");\n this.allowServerDataBinding = false;\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n }\n addClass([li], FOCUS);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n checkWrap.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"check\");\n this.allowServerDataBinding = false;\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[i]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true ||\n getValue(this.fields.child.toString(), child[length_1])) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = this.getChildNodes(this.treeData, id.toString());\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '.' + FOCUS, this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], [HOVER, FOCUS]);\n if (!nextNode.classList.contains('e-disable')) {\n addClass([nextNode], [HOVER, FOCUS]);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n addClass([this.getFocusedNode()], HOVER);\n }\n this.mouseDownStatus = false;\n };\n TreeView.prototype.focusOut = function () {\n removeClass([this.getFocusedNode()], HOVER);\n };\n TreeView.prototype.onMouseOver = function (e) {\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n ;\n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n if (this.showCheckBox) {\n checked = select('.' + CHECKBOXWRAP, currLi).getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n resetBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate');\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n _this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: _this.enableRtl,\n }\n }, _this.createElement);\n _this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n _this.wireInputEvents(inpEle);\n }\n });\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent();\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.updateBlazorTemplate();\n this.renderReactTemplates();\n }\n else {\n txtEle.innerText = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n txtEle.focus();\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n if (isBlazor()) {\n e.bindEvents(getElement(e.dragElement));\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n if ((_this.isBlazorPlatform && _this.dragStartAction) || !_this.isBlazorPlatform) {\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n _this.dragStartAction = false;\n if (_this.isBlazorPlatform && isHelperElement) {\n _this.dropAction(e, true);\n }\n });\n }\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING)) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n if (!_this.isBlazorPlatform) {\n _this.dropAction(e);\n }\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[index]);\n };\n /* eslint-disable */\n TreeView.prototype.dropAction = function (e, isBlazorDrop) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance;\n if (!isBlazorDrop) {\n dragInstance = e.dragData.draggable;\n }\n else {\n dragInstance = e.element;\n }\n for (var i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[i] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n if (!isBlazorDrop) {\n detach(e.droppedElement);\n }\n else {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n if (!isBlazorDrop) {\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n }\n else {\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.element, null, level, drop));\n }\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent();\n }\n this.triggerEvent();\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = (iconClass == \"e-drop-in\") ? \"Inside\" : ((event.offsetY < 7) ? \"Before\" : \"After\");\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateInstance();\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n this.allowServerDataBinding = false;\n this.updateServerProperties(\"expand\");\n this.updateServerProperties(\"check\");\n this.updateServerProperties(\"select\");\n this.allowServerDataBinding = true;\n };\n TreeView.prototype.updateServerProperties = function (action) {\n if (this.isBlazorPlatform) {\n if (action == \"expand\") {\n this.isBlazorExpandedNodes = this.expandedNodes;\n this.setProperties({ expandedNodes: [] }, true);\n }\n else if (action == \"check\") {\n this.setProperties({ checkedNodes: this.checkedNodes }, true);\n }\n else {\n this.setProperties({ selectedNodes: this.selectedNodes }, true);\n }\n }\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n if (!this.isBlazorPlatform || (this.isBlazorPlatform && !this.initialRender)) {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n }\n else if (this.isBlazorPlatform && this.initialRender) {\n var sNodes = selectAll('.' + ACTIVE, this.element);\n for (var a = 0; a < sNodes.length; a++) {\n var id = sNodes[a].getAttribute(\"data-uid\").toString();\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n }\n }\n };\n TreeView.prototype.updateExpandedNodes = function () {\n if (!this.isBlazorPlatform || (this.isBlazorPlatform && !this.initialRender)) {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n }\n else if (this.isBlazorPlatform && this.initialRender) {\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var a = 0; a < eNodes.length; a++) {\n var id = eNodes[a].getAttribute(\"data-uid\").toString();\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n }\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n var refNode = dropUl.childNodes[index];\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n var id = this.getId(dropLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n else {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[i][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[i]);\n var id = strNodes[i];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].getAttribute(\"data-uid\").toString() : null;\n }\n if (validID.indexOf(id) == -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n if (this.isBlazorPlatform) {\n enodes = this.isBlazorExpandedNodes;\n }\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n var childNodes;\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function () {\n this.updateTemplateForBlazor();\n this.renderReactTemplates();\n var eventArgs = { data: this.treeData };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.updateBlazorTemplate = function () {\n updateBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate', this, false);\n };\n TreeView.prototype.clientUpdateInitial = function () {\n this.blazorInitialRender = true;\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n ;\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'focus', this.focusIn, this);\n EventHandler.add(this.element, 'blur', this.focusOut, this);\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'focus', this.focusIn);\n EventHandler.remove(this.element, 'blur', this.focusOut);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[i]))) {\n var childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[i]))) {\n var childData = getValue('child', treeData[i]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\n else if (typeof target === \"object\") {\n nodesID[0] = target.getAttribute(\"data-uid\").toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[i]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length == 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function (e) { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent();\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent();\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent();\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n if (!this.isBlazorPlatform) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n this.collapseAll();\n this.isInitalExpand = true;\n if (!this.isBlazorPlatform) {\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n }\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n if (!this.blazorInitialRender) {\n this.reRenderNodes();\n }\n this.blazorInitialRender = false;\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n resetBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate');\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.element.removeAttribute('tabindex');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.isBlazorPlatform) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n }\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n if (!this.isBlazorPlatform) {\n _super.prototype.destroy.call(this);\n }\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false) || (this.fields.dataSource instanceof DataManager) && (this.fields.dataSource.adaptorName === 'BlazorAdaptor')) {\n this.preventExpand = false;\n this.triggerEvent();\n }\n };\n /**\n * Instead of clicking on the TreeView node for editing, we can enable it by using\n * `beginEdit` property. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele, null);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var liEle = this.getElement(node);\n if (isNOU(liEle)) {\n return;\n }\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n setTimeout(function () { liEle.scrollIntoView(true); }, 450);\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Get the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @BlazorType NodeData\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent();\n };\n /**\n * Refreshes a particular node of the TreeView.\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var id;\n var isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType == 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n /* eslint-disable */\n var newNodeData;\n var parentData;\n if (this.dataType == 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[index]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute(\"title\", newNodeData[this.fields.tooltip]);\n }\n if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent();\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline && (_this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { isBlazor, getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
    \n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActElePosition.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n var _this = this;\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n }\n this.unWireEvents();\n ['role', 'aria-disabled', 'aria-activedescendant', 'tabindex', 'aria-orientation'].forEach(function (val) {\n _this.element.removeAttribute(val);\n });\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isServerRendered) {\n _super.prototype.refresh.call(this);\n }\n else if (this.isServerRendered && this.loadOn !== 'Dynamic') {\n this.setActiveBorder();\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwipeed = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { role: 'tablist', 'aria-disabled': 'false', 'aria-activedescendant': '' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n };\n Tab.prototype.renderContainer = function () {\n if (this.isServerRendered) {\n this.isTemplate = false;\n return;\n }\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n if (!isNOU(this.tbItem)) {\n for (var i = 0; i < this.items.length; i++) {\n var tabID = this.items[i].id;\n this.tbItem[i].setAttribute('data-id', tabID);\n }\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.serverItemsChanged = function () {\n this.enableAnimation = false;\n this.setActive(this.selectedItem, true);\n if (this.loadOn !== 'Dynamic' && !isNOU(this.cntEle)) {\n var itemCollection = [].slice.call(this.cntEle.children);\n var content_1 = CLS_CONTENT + this.tabId + '_' + this.selectedItem;\n itemCollection.forEach(function (item) {\n if (item.classList.contains(CLS_ACTIVE) && item.id !== content_1) {\n item.classList.remove(CLS_ACTIVE);\n }\n if (item.id === content_1) {\n item.classList.add(CLS_ACTIVE);\n }\n });\n this.prevIndex = this.selectedItem;\n this.triggerAnimation(CLS_ITEM + this.tabId + '_' + this.selectedItem, false);\n }\n this.enableAnimation = true;\n };\n Tab.prototype.headerReady = function () {\n this.initRender = true;\n this.hdrEle = this.getTabHeader();\n this.setOrientation(this.headerPlacement, this.hdrEle);\n if (!isNOU(this.hdrEle)) {\n this.tbObj = (this.hdrEle && this.hdrEle.ej2_instances[0]);\n }\n this.tbObj.clicked = this.clickHandler.bind(this);\n this.tbObj.on('onItemsChanged', this.serverItemsChanged.bind(this));\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.bdrLine = select('.' + CLS_INDICATOR + '.' + CLS_IGNORE, this.element);\n var scrollCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrollCnt)) {\n scrollCnt.insertBefore(this.bdrLine, scrollCnt.firstElementChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n if (this.loadOn === 'Demand') {\n var id = this.setActiveContent();\n this.triggerAnimation(id, false);\n }\n this.initRender = false;\n this.renderComplete();\n };\n Tab.prototype.setActiveContent = function () {\n var id = CLS_ITEM + this.tabId + '_' + this.selectedItem;\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (!isNOU(item)) {\n item.classList.add(CLS_ACTIVE);\n }\n return id;\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i).innerHTML);\n }\n if (count > 0) {\n while (this.hdrEle.firstElementChild) {\n detach(this.hdrEle.firstElementChild);\n }\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index,\n attrs: { role: 'tab', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-selected': 'false' }\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, innerHTML: item, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', { className: CLS_WRAP, innerHTML: cont, attrs: { tabIndex: '-1' } });\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { 'aria-label': 'tab-header' });\n this.updateOrientationAttribute();\n this.setCloseButton(this.showCloseButton);\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n contents.item(i).className += CLS_ITEM;\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n _this.lastIndex = ((tbCount === 0) ? i : ((_this.isReplace) ? (index + i) : (_this.lastIndex + 1)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: '-1' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray === []) {\n _this.itemIndexArray.push(CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n else {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, role: 'tab', 'aria-selected': 'false'\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.updateOrientationAttribute = function () {\n attributes(this.element, { 'aria-orientation': (this.isVertical() ? 'vertical' : 'horizontal') });\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActElePosition();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var newCnt;\n if (!this.isServerRendered || (this.isServerRendered && this.loadOn !== 'Dynamic')) {\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n }\n else {\n newCnt = this.cntEle.firstElementChild;\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n if (this.initRender || value === false || this.animation === {} || isNOU(this.animation)) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.select(trgIndex);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n ele.innerHTML = SanitizeHtmlHelper.sanitize(val);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.updateOrientationAttribute();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.serverChangeOrientation = function (newProp, oldProp) {\n this.setOrientation(newProp, this.hdrEle);\n removeClass([this.element], [CLS_VTAB]);\n var newValue = newProp === 'Left' || newProp === 'Right';\n var oldValue = oldProp === 'Left' || oldProp === 'Right';\n if (newValue !== oldValue) {\n this.changeToolbarOrientation();\n }\n if (this.isVertical()) {\n addClass([this.element], [CLS_VTAB]);\n }\n this.updateOrientationAttribute();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.offsetHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n setStyle(this.cntEle, { 'height': (this.element.offsetHeight - hdrEle.offsetHeight) + 'px' });\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n this.clearTemplate(['content']);\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n ele.classList.remove(CLS_ACTIVE);\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (trg === null) {\n return;\n }\n if (this.isServerRendered && trg.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(trg);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var bar_1 = select('.' + CLS_INDICATOR, this.element);\n setStyle(bar_1, { 'top': trg.offsetHeight + trg.offsetTop + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (this.isServerRendered && trg) {\n value = parseInt(trg.getAttribute('data-index'), 10);\n }\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n var prev = this.tbItem[this.prevIndex];\n if (!isNOU(prev)) {\n prev.removeAttribute('aria-controls');\n }\n attributes(trg, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n this.tbItem[this.prevIndex].setAttribute('aria-selected', 'false');\n trg.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n attributes(this.element, { 'aria-activedescendant': id });\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else if (!this.isServerRendered || (this.isServerRendered && this.loadOn === 'Init')) {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n trg.firstElementChild.focus();\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwipeed\n };\n this.trigger('selected', eventArg);\n }\n };\n Tab.prototype.contentReady = function () {\n var id = this.setActiveContent();\n this.triggerAnimation(id, this.enableAnimation);\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var items = this.element.querySelectorAll('.' + CLS_TB_ITEM);\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (this.isServerRendered && !isNOU(trgParent)) {\n if (parseInt(trgParent.getAttribute('data-index'), 10) !== this.selectedItem) {\n this.select(trgIndex);\n }\n }\n else if (!isNOU(trgParent) && (trgIndex !== this.selectedItem || trgIndex !== this.prevIndex)) {\n this.select(trgIndex, args.originalEvent);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (e.originalEvent) {\n e.originalEvent.stopPropagation();\n }\n this.isSwipeed = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n }\n }\n this.isSwipeed = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', '-1');\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n actEle.children.item(0).setAttribute('tabindex', '0');\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshActElePosition = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle)) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var oldVal = Object(oldProp.items[index])[property];\n var newVal = Object(newProp.items[index])[property];\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + index, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + index, this.element);\n if (property === 'header' || property === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (property === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isReact && typeof newVal === 'object') {\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (property === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (property === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (property === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isRect) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild && !isBlazor()) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n var x = _this.cloneElement.getBoundingClientRect().left;\n var y = _this.cloneElement.getBoundingClientRect().top;\n var ele = document.elementFromPoint(x, y);\n dropItem = closest(ele, '.' + CLS_TB_ITEM);\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabitemDragArgs) {\n if (tabitemDragArgs.cancel) {\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n if (isBlazor()) {\n e.bindEvents(getElement(e.dragElement));\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(dropItem, this.dragItem);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.select(_this.droppedIndex);\n }\n }\n });\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', '-1');\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n }\n else {\n var itemsCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) ||\n isNOU(textValue_1) || (textValue_1.length === 0) && isNOU(item.header.iconCss))) {\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n _this.items.splice(index, 1);\n _this.itemIndexArray.splice(index, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n item.setAttribute('aria-hidden', '' + value);\n if (!this.isServerRendered && this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}.\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', '-1');\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwipeed,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args);\n }\n });\n }\n else {\n this.selectingContent(args);\n }\n };\n Tab.prototype.selectingContent = function (args) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP)) {\n this.setActive(this.popupHandler(this.tbItem[args]));\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n }\n }\n else {\n this.setActive(args);\n }\n }\n else {\n this.setActive(0);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args));\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n if (!this.isServerRendered) {\n this.setContentHeight(false);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass !== '') {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n break;\n case 'items':\n if (!this.isServerRendered) {\n this.evalOnPropertyChangeItems(newProp, oldProp);\n }\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'selectedItem':\n if (!this.isServerRendered) {\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n }\n break;\n case 'headerPlacement':\n if (this.isServerRendered) {\n this.serverChangeOrientation(newProp.headerPlacement, oldProp.headerPlacement);\n }\n else {\n this.changeOrientation(newProp.headerPlacement);\n }\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActElePosition();\n break;\n case 'heightAdjustMode':\n if (!this.isServerRendered) {\n this.setContentHeight(false);\n this.select(this.selectedItem);\n }\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var wrapAtt = (item.disabled) ? {} : { tabIndex: '-1' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var id = element.id;\n var num = (id.indexOf('_'));\n var index = parseInt(id.substring(num + 1), 10);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index,\n attrs: {\n role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index,\n 'aria-disabled': 'false', 'aria-selected': 'true'\n }\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var wrap = this.createElement('div', { className: CLS_WRAP, innerHTML: conte, attrs: { tabIndex: '-1' } });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove, updateBlazorTemplate, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
    Show Tooltip
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isBlazorTooltip = false;\n _this.contentTargetValue = null;\n _this.contentEvent = null;\n _this.contentAnimation = null;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n if (!(this.isServerRender())) {\n addClass([this.element], ROOT);\n }\n };\n Tooltip.prototype.isServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n if (!(this.isServerRender())) {\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n }\n else {\n var tip = this.tooltipEle.querySelector('.' + ARROW_TIP);\n addClass([tip.querySelector('.' + ARROW_TIP_OUTER)], this.tipClass);\n addClass([tip.querySelector('.' + ARROW_TIP_INNER)], this.tipClass);\n this.tooltipEle.appendChild(tip);\n }\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY);\n var offsetPos = this.calculateTooltipOffset(this.position);\n var elePos = this.collisionFlipFit(target, pos.left + offsetPos.left, pos.top + offsetPos.top);\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.reposition = function (target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n };\n Tooltip.prototype.closePopupHandler = function () {\n resetBlazorTemplate(this.element.id + 'content', 'Content');\n this.clearTemplate(['content']);\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n };\n Tooltip.prototype.calculateTooltipOffset = function (position) {\n var pos = { top: 0, left: 0 };\n var tooltipEleWidth = this.tooltipEle.offsetWidth;\n var tooltipEleHeight = this.tooltipEle.offsetHeight;\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n var tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n var tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n var tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n var tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = this.tooltipEle.querySelectorAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = this.tooltipEle.querySelector('.' + CONTENT);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n if (this.isBlazorTooltip || !(this.isServerRender())) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string' && this.content.indexOf('
    Blazor') < 0) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n tooltipContent[this.enableHtmlParse ? 'innerHTML' : 'textContent'] = this.content;\n }\n else {\n // eslint-disable-next-line\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n if (typeof this.content === 'string' && this.content.indexOf('
    Blazor') >= 0) {\n this.isBlazorTemplate = true;\n updateBlazorTemplate(this.element.id + 'content', 'Content', this);\n }\n }\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n // eslint-disable-next-line\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(document.querySelectorAll('[data-tooltip-id= ' + this.ctrlId + '_content]'));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // eslint-disable-next-line\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n var isBlazorTooltipRendered = false;\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.contentTargetValue = target;\n this.contentEvent = e;\n this.contentAnimation = showAnimation;\n // eslint-disable-next-line\n var args = { 'enableTooltip': 'true' };\n /* eslint-disable */\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n /* eslint-enable */\n isBlazorTooltipRendered = true;\n }\n else {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.beforeRenderBlazor(target, this);\n }\n if (!isBlazorTooltipRendered) {\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n else {\n if (this.isServerRender()) {\n addClass([this.tooltipEle], POPUP_OPEN);\n document.body.appendChild(this.tooltipEle);\n this.renderCloseIcon();\n this.renderPopup(target);\n }\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.contentUpdated = function (args) {\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.ctrlId = this.element.id;\n this.tooltipEle = document.querySelector('#' + this.ctrlId + '_content');\n if (this.tooltipEle) {\n this.tooltipEle.setAttribute('style', 'width:' + formatUnit(this.width) +\n ';height:' + formatUnit(this.height) + ';position:absolute;');\n this.beforeRenderBlazor(this.contentTargetValue, this);\n this.afterRenderBlazor(this.contentTargetValue, this.contentEvent, this.contentAnimation, this);\n this.contentTargetValue = this.contentEvent = this.contentAnimation = null;\n }\n }\n }\n };\n Tooltip.prototype.beforeRenderBlazor = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n if (!(this.isServerRender())) {\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n }\n document.body.appendChild(ctrlObj.tooltipEle);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.afterRenderBlazor = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n // eslint-disable-next-line\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.restoreElement(target);\n }\n else {\n // eslint-disable-next-line\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n // eslint-disable-next-line\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string'\n || (this.isServerRender()) && this.isBlazorTemplate;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePos.horizontal, elePos.vertical);\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n var offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= (('TopBottom'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('TopBottom'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetY) : 0;\n offsetPos.left -= (('RightLeft'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('RightLeft'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetX) : 0;\n elePos.position = newpos;\n elePos.left = pos.left + offsetPos.left;\n elePos.top = pos.top + offsetPos.top;\n }\n else {\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var left = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: false }, eleOffset).left;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = left;\n return eleOffset;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n // eslint-disable-next-line\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.isServerRender()) {\n _this.blazorHide(hideAnimation, target);\n }\n else {\n _this.popupHide(hideAnimation, target);\n }\n }\n else {\n _this.isHidden = false;\n }\n });\n };\n /* istanbul ignore next */\n Tooltip.prototype.blazorHide = function (hideAnimation, target) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n // eslint-disable-next-line\n var hide = function () {\n proxy.popupHide(hideAnimation, target);\n };\n if (this.popupObj) {\n this.popupHide(hideAnimation, target);\n }\n else {\n setTimeout(hide, 200);\n }\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n // eslint-disable-next-line\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.isServerRender() && this.tooltipEle) {\n this.tooltipEle.style.display = 'none';\n // eslint-disable-next-line\n var args = { 'enableTooltip': 'false' };\n /* eslint-disable */\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n /* eslint-enable */\n remove(this.tooltipEle);\n }\n else if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var pos = this.calculateTooltipOffset(this.position);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.add(this.element, 'mouseleave', this.onMouseOut, this);\n }\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n if (!this.isServerRender()) {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.remove(this.element, 'mouseleave', this.onMouseOut);\n }\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n if (!this.isServerRender()) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n if (this.isServerRender()) {\n this.isBlazorTooltip = true;\n }\n this.renderContent();\n }\n else if (this.isServerRender()) {\n // eslint-disable-next-line\n var args = { 'content': newProp.content };\n /* eslint-disable */\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n /* eslint-enable */\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n if (!this.isServerRender()) {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n }\n if (this.isServerRender() && this.tooltipEle) {\n var placeholder = document.querySelector('#' + this.ctrlId + '_content_placeholder');\n if (placeholder) {\n placeholder.appendChild(this.tooltipEle);\n }\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject, isBlazor } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off', 'aria-live': 'assertive' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n if (!(isBlazor() && this.isServerRendered)) {\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null && !(isBlazor() && this.isServerRendered)) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (!(isBlazor() && this.isServerRendered)) {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n }\n else {\n this.container = this.element.parentElement;\n this.inputWrapper = { container: this.container };\n this.hiddenInput = this.container.querySelector('input[type=\"hidden\"]');\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n if (this.showSpinButton) {\n this.spinDown = this.container.querySelector('.' + SPINDOWN);\n this.spinUp = this.container.querySelector('.' + SPINUP);\n this.wireSpinBtnEvents();\n }\n Input.bindInitialEvent({\n element: this.element, buttons: null, customTag: null, floatLabelType: this.floatLabelType, properties: this.properties\n });\n }\n this.wireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n attributes(this.hiddenInput, { 'name': this.inputName });\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[pro]) :\n this.htmlAttributes[pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n attributes(this.element, { 'aria-valuemin': this.min.toString(), 'aria-valuemax': this.max.toString() });\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide'))) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n if (this.prevValue !== this.value) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === \"touchmove\") {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\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 NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'autocorrect', 'aria-disabled', 'aria-placeholder', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'tabindex', 'aria-valuemin',\n 'aria-valuemax', 'aria-live', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n _super.prototype.destroy.call(this);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n if (isBlazor()) {\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n }\n else {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n }\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (isBlazor()) {\n if (this.showSpinButton) {\n this.spinDown = this.container.querySelector('.' + SPINDOWN);\n this.spinUp = this.container.querySelector('.' + SPINUP);\n this.wireSpinBtnEvents();\n }\n }\n else {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n return _this;\n }\n CheckBox.prototype.changeState = function (state) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n }\n else if (state === 'uncheck') {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n }\n else {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n }\n this.getWrapper().setAttribute('aria-checked', ariaState);\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check');\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER, attrs: { 'role': 'checkbox', 'aria-checked': 'false' }\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","import { createElement, isNullOrUndefined, addClass, removeClass, closest, isBlazor, select, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, setStyleAttribute, extend } from '@syncfusion/ej2-base';\nimport * as cls from '../../common/base/css-constant';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Button, CheckBox } from '@syncfusion/ej2-buttons';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport * as events from '../../common/base/constant';\nimport { PivotUtil } from '../../base/util';\n/**\n * Module to render Pivot Field List Dialog\n */\n/** @hidden */\nvar DialogRenderer = /** @class */ (function () {\n /** Constructor for render module\n * @param {PivotFieldList} parent - Instance of field list.\n */\n function DialogRenderer(parent) {\n this.parent = parent;\n }\n /**\n * Initialize the field list layout rendering\n * @returns {void}\n * @private\n */\n DialogRenderer.prototype.render = function () {\n var fieldListWrappper = createElement('div', {\n id: this.parent.element.id + '_Wrapper',\n className: cls.WRAPPER_CLASS + ' ' + (this.parent.dataType === 'olap' ? cls.OLAP_WRAPPER_CLASS : ''),\n styles: 'width:' + this.parent.element.style.width\n });\n if (this.parent.isAdaptive) {\n addClass([fieldListWrappper], cls.DEVICE);\n }\n else {\n removeClass([fieldListWrappper], cls.DEVICE);\n }\n if (this.parent.enableRtl) {\n addClass([fieldListWrappper], cls.RTL);\n }\n else {\n removeClass([fieldListWrappper], cls.RTL);\n }\n if (this.parent.cssClass) {\n addClass([fieldListWrappper], this.parent.cssClass);\n }\n this.parentElement = createElement('div', { className: cls.CONTAINER_CLASS });\n this.parent.element.appendChild(fieldListWrappper);\n if (this.parent.isAdaptive) {\n fieldListWrappper.removeAttribute('style');\n this.parentElement = createElement('div', { className: cls.ADAPTIVE_CONTAINER_CLASS });\n this.renderAdaptiveLayout(fieldListWrappper);\n }\n if (this.parent.renderMode === 'Popup') {\n this.renderFieldListDialog(fieldListWrappper);\n this.unWireDialogEvent(this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS));\n this.wireDialogEvent(this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS));\n }\n else {\n this.renderStaticLayout(fieldListWrappper);\n }\n };\n DialogRenderer.prototype.renderStaticLayout = function (fieldListWrappper) {\n if (!this.parent.isAdaptive) {\n var layoutHeader = createElement('div', {\n className: cls.FIELD_LIST_TITLE_CLASS\n });\n var headerContent = createElement('div', {\n className: cls.FIELD_LIST_TITLE_CONTENT_CLASS,\n innerHTML: this.parent.localeObj.getConstant('staticFieldList')\n });\n layoutHeader.appendChild(headerContent);\n layoutHeader.appendChild(this.createCalculatedButton());\n addClass([fieldListWrappper], cls.STATIC_FIELD_LIST_CLASS);\n fieldListWrappper.appendChild(layoutHeader);\n fieldListWrappper.appendChild(this.parentElement);\n addClass([fieldListWrappper], cls.STATIC_FIELD_LIST_CLASS);\n if (this.parent.allowDeferLayoutUpdate) {\n fieldListWrappper.appendChild(this.createDeferUpdateButtons());\n this.renderDeferUpdateButtons();\n }\n }\n };\n DialogRenderer.prototype.renderDeferUpdateButtons = function () {\n if (this.parent.allowDeferLayoutUpdate) {\n this.deferUpdateCheckBox = new CheckBox({\n label: this.parent.localeObj.getConstant('deferLayoutUpdate'),\n checked: true,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n change: this.onCheckChange.bind(this)\n });\n this.deferUpdateCheckBox.isStringTemplate = true;\n this.deferUpdateCheckBox.appendTo('#' + this.parent.element.id + 'DeferUpdateCheckBox');\n this.deferUpdateApplyButton = new Button({\n cssClass: cls.DEFER_APPLY_BUTTON + ' ' + cls.DEFER_UPDATE_BUTTON + (this.parent.renderMode === 'Popup' ?\n (' ' + cls.BUTTON_FLAT_CLASS) : ''),\n content: this.parent.localeObj.getConstant('apply'),\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n isPrimary: true\n });\n this.deferUpdateApplyButton.isStringTemplate = true;\n this.deferUpdateApplyButton.appendTo('#' + this.parent.element.id + '_DeferUpdateButton1');\n this.deferUpdateApplyButton.element.onclick = this.parent.renderMode === 'Fixed' ? this.applyButtonClick.bind(this) :\n this.onDeferUpdateClick.bind(this);\n }\n this.deferUpdateCancelButton = new Button({\n cssClass: cls.DEFER_CANCEL_BUTTON + ' ' + cls.CANCEL_BUTTON_CLASS + (this.parent.renderMode === 'Popup' ?\n (' ' + cls.BUTTON_FLAT_CLASS) : ''),\n content: this.parent.allowDeferLayoutUpdate ? this.parent.localeObj.getConstant('cancel') :\n this.parent.localeObj.getConstant('close'),\n enableRtl: this.parent.enableRtl, isPrimary: !this.parent.allowDeferLayoutUpdate, locale: this.parent.locale\n });\n this.deferUpdateCancelButton.isStringTemplate = true;\n this.deferUpdateCancelButton.appendTo('#' + this.parent.element.id + '_DeferUpdateButton2');\n this.deferUpdateCancelButton.element.onclick = this.parent.renderMode === 'Fixed' ? this.cancelButtonClick.bind(this) :\n this.onCloseFieldList.bind(this);\n };\n DialogRenderer.prototype.createDeferUpdateButtons = function () {\n var layoutFooter = createElement('div', {\n className: cls.LAYOUT_FOOTER\n });\n if (this.parent.allowDeferLayoutUpdate) {\n var checkBoxLayout = createElement('div', {\n className: cls.CHECKBOX_LAYOUT,\n attrs: { 'title': this.parent.localeObj.getConstant('deferLayoutUpdate') }\n });\n var deferUpdateCheckBox = createElement('input', {\n id: this.parent.element.id + 'DeferUpdateCheckBox'\n });\n checkBoxLayout.appendChild(deferUpdateCheckBox);\n layoutFooter.appendChild(checkBoxLayout);\n }\n var buttonLayout = createElement('div', {\n className: cls.BUTTON_LAYOUT\n });\n if (this.parent.allowDeferLayoutUpdate) {\n var deferUpdateButton1 = createElement('button', {\n id: this.parent.element.id + '_DeferUpdateButton1', attrs: { 'type': 'button', 'title': this.parent.localeObj.getConstant('apply') }\n });\n buttonLayout.appendChild(deferUpdateButton1);\n }\n var deferUpdateButton2 = createElement('button', {\n id: this.parent.element.id + '_DeferUpdateButton2', attrs: { 'type': 'button', 'title': this.parent.localeObj.getConstant('cancel') }\n });\n buttonLayout.appendChild(deferUpdateButton2);\n layoutFooter.appendChild(buttonLayout);\n return layoutFooter;\n };\n DialogRenderer.prototype.onCheckChange = function (args) {\n if (args.checked) {\n this.parent.clonedDataSource = extend({}, this.parent.dataSourceSettings, null, true);\n this.parent.clonedFieldList = extend({}, this.parent.pivotFieldList, null, true);\n }\n this.parent.allowDeferLayoutUpdate = !this.parent.allowDeferLayoutUpdate;\n if (this.parent.renderMode === 'Fixed') {\n this.deferUpdateApplyButton.setProperties({ disabled: !this.parent.allowDeferLayoutUpdate });\n this.deferUpdateCancelButton.setProperties({ disabled: !this.parent.allowDeferLayoutUpdate });\n }\n else {\n if (this.parent.allowDeferLayoutUpdate) {\n this.deferUpdateApplyButton.element.style.display = '';\n this.deferUpdateCancelButton.setProperties({ content: this.parent.localeObj.getConstant('cancel') });\n this.deferUpdateCancelButton.isPrimary = false;\n }\n else {\n this.deferUpdateApplyButton.element.style.display = 'none';\n this.deferUpdateCancelButton.setProperties({ content: this.parent.localeObj.getConstant('close') });\n this.deferUpdateCancelButton.isPrimary = true;\n }\n }\n this.cancelButtonClick();\n };\n DialogRenderer.prototype.applyButtonClick = function () {\n if (this.parent.getModuleName() === 'pivotfieldlist' && this.parent.allowDeferLayoutUpdate) {\n this.parent.pivotChange = false;\n }\n this.parent.updateDataSource(false);\n var parent = this.parent;\n parent.axisFieldModule.render();\n parent.clonedDataSource = extend({}, parent.dataSourceSettings, null, true);\n parent.clonedFieldList = extend({}, parent.pivotFieldList, null, true);\n };\n DialogRenderer.prototype.cancelButtonClick = function () {\n if (isBlazor() && !this.parent.isPopupView) {\n PivotUtil.updateDataSourceSettings(this.parent, PivotUtil.getClonedDataSourceSettings(this.parent.clonedDataSource.properties)); /* eslint-disable-line */\n }\n else {\n this.parent.\n setProperties({\n dataSourceSettings: this.parent.clonedDataSource.properties /* eslint-disable-line */\n }, true);\n }\n /* eslint-enable @typescript-eslint/indent */\n if (this.parent.dataType === 'olap') {\n this.parent.olapEngineModule.fieldList = extend({}, this.parent.clonedFieldList, null, true);\n for (var _i = 0, _a = Object.keys(this.parent.clonedFieldList); _i < _a.length; _i++) {\n var name_1 = _a[_i];\n var item = this.parent.clonedFieldList[name_1];\n this.parent.olapEngineModule.updateFieldlistData(item.id, item.isSelected);\n }\n }\n else {\n this.parent.engineModule.fieldList = extend({}, this.parent.clonedFieldList, null, true);\n }\n this.parent.updateDataSource(false, true);\n };\n DialogRenderer.prototype.renderFieldListDialog = function (fieldListWrappper) {\n var toggleFieldList = createElement('div', {\n className: cls.TOGGLE_FIELD_LIST_CLASS + ' ' + cls.ICON + ' ' + cls.TOGGLE_SELECT_CLASS,\n attrs: {\n 'tabindex': '0',\n title: this.parent.localeObj.getConstant('fieldList'),\n 'aria-disabled': 'false',\n 'aria-label': this.parent.localeObj.getConstant('fieldList')\n }\n });\n this.parent.element.appendChild(toggleFieldList);\n if (this.parent.isAdaptive) {\n var headerTemplate = '
    ' + this.parent.localeObj.getConstant('fieldList') +\n '
    ';\n var buttons = [{\n click: this.showFieldListDialog.bind(this),\n buttonModel: {\n cssClass: cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS,\n iconCss: cls.ICON + ' ' + cls.ADD_ICON_CLASS,\n isPrimary: true\n }\n }, {\n click: this.showCalculatedField.bind(this),\n buttonModel: {\n cssClass: cls.ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS +\n ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS + ' ' + cls.ICON_DISABLE,\n iconCss: cls.ICON + ' ' + cls.ADD_ICON_CLASS, enableRtl: this.parent.enableRtl,\n isPrimary: true\n }\n }];\n this.fieldListDialog = new Dialog({\n animationSettings: { effect: this.parent.enableRtl ? 'SlideRight' : 'SlideLeft' },\n header: headerTemplate,\n content: this.parentElement,\n isModal: true,\n showCloseIcon: false,\n visible: false,\n allowDragging: false,\n closeOnEscape: false,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n width: '100%',\n height: '100%',\n position: { X: 'center', Y: 'center' },\n buttons: buttons,\n target: document.body,\n close: this.removeFieldListIcon.bind(this),\n open: this.dialogOpen.bind(this)\n });\n this.fieldListDialog.isStringTemplate = true;\n this.fieldListDialog.appendTo(fieldListWrappper);\n // this.fieldListDialog.element.querySelector('.e-dlg-header').innerHTML = headerTemplate;\n setStyleAttribute(select('#' + fieldListWrappper.id + '_dialog-content', fieldListWrappper), {\n 'padding': '0'\n });\n var footer = fieldListWrappper.querySelector('.' + cls.FOOTER_CONTENT_CLASS);\n addClass([footer], cls.FIELD_LIST_FOOTER_CLASS);\n removeClass([footer.querySelector('.' + cls.ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS)], cls.BUTTON_FLAT_CLASS);\n removeClass([footer.querySelector('.' + cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS)], cls.BUTTON_FLAT_CLASS);\n this.fieldListDialog.element.querySelector('.' + cls.BACK_ICON).onclick =\n this.parent.allowDeferLayoutUpdate ? this.onDeferUpdateClick.bind(this) : this.onCloseFieldList.bind(this);\n }\n else {\n var template = this.createDeferUpdateButtons().outerHTML;\n var headerTemplate = '
    ' + this.parent.localeObj.getConstant('fieldList') + '
    ';\n this.fieldListDialog = new Dialog({\n animationSettings: { effect: 'Zoom' },\n header: headerTemplate,\n content: this.parentElement,\n isModal: false,\n showCloseIcon: false,\n visible: false,\n allowDragging: true,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n width: this.parent.element.style.width,\n position: { X: 'center', Y: this.parent.element.offsetTop },\n footerTemplate: template,\n closeOnEscape: false,\n target: !isNullOrUndefined(this.parent.target) ? ((typeof this.parent.target) === 'string') ?\n document.querySelector(this.parent.target) : this.parent.target : document.body,\n close: this.removeFieldListIcon.bind(this)\n });\n this.fieldListDialog.isStringTemplate = true;\n this.fieldListDialog.appendTo(fieldListWrappper);\n // this.fieldListDialog.element.querySelector('.e-dlg-header').innerHTML = headerTemplate;\n // this.fieldListDialog.element.querySelector('.e-footer-content').innerHTML = template;\n this.renderDeferUpdateButtons();\n setStyleAttribute(select('#' + fieldListWrappper.id + '_title', fieldListWrappper), { 'width': '100%' });\n fieldListWrappper.querySelector('.' + cls.TITLE_HEADER_CLASS).appendChild(this.createCalculatedButton());\n }\n };\n DialogRenderer.prototype.dialogOpen = function () {\n this.adaptiveElement.refresh();\n };\n /**\n * Called internally if any of the field added to axis.\n * @param {string[]} selectedNodes - selectedNodes\n * @returns {void}\n * @hidden\n */\n DialogRenderer.prototype.updateDataSource = function (selectedNodes) {\n var axis = ['filters', 'columns', 'rows', 'values'];\n for (var _i = 0, selectedNodes_1 = selectedNodes; _i < selectedNodes_1.length; _i++) {\n var field = selectedNodes_1[_i];\n var fieldName = field;\n var droppedClass = axis[this.adaptiveElement.selectedItem];\n this.parent.pivotCommon.dataSourceUpdate.control = this.parent.getModuleName() === 'pivotview' ?\n this.parent : (this.parent.pivotGridModule ?\n this.parent.pivotGridModule : this.parent);\n this.parent.pivotCommon.dataSourceUpdate.updateDataSource(fieldName, droppedClass, -1);\n }\n this.parent.axisFieldModule.render();\n if (!this.parent.allowDeferLayoutUpdate) {\n this.parent.updateDataSource(true);\n }\n else {\n this.parent.triggerPopulateEvent();\n }\n };\n DialogRenderer.prototype.onDeferUpdateClick = function () {\n this.parent.updateDataSource();\n this.parent.dialogRenderer.fieldListDialog.hide();\n };\n DialogRenderer.prototype.renderAdaptiveLayout = function (fieldListWrappper) {\n var layoutFooter = createElement('div', {\n className: cls.FIELD_LIST_FOOTER_CLASS\n });\n fieldListWrappper.appendChild(this.parentElement);\n var items = [\n {\n header: { 'text': this.parent.localeObj.getConstant('filters') },\n content: this.createAxisTable('filters')\n },\n {\n header: { 'text': this.parent.localeObj.getConstant('columns') },\n content: this.createAxisTable('columns')\n },\n {\n header: { 'text': this.parent.localeObj.getConstant('rows') },\n content: this.createAxisTable('rows')\n },\n {\n header: { 'text': this.parent.localeObj.getConstant('values') },\n content: this.createAxisTable('values')\n },\n {\n header: { 'text': this.parent.localeObj.getConstant('createCalculatedField') },\n content: 'Calculated Field Related UI'\n }\n ];\n if (!this.parent.allowCalculatedField) {\n items.pop();\n }\n this.adaptiveElement = new Tab({\n heightAdjustMode: 'Auto',\n items: items,\n height: '100%',\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n selected: this.tabSelect.bind(this)\n });\n if (this.parent.renderMode === 'Fixed') {\n layoutFooter.appendChild(this.createAddButton());\n addClass([fieldListWrappper], cls.STATIC_FIELD_LIST_CLASS);\n this.adaptiveElement.isStringTemplate = true;\n this.adaptiveElement.appendTo(this.parentElement);\n this.parentElement.appendChild(layoutFooter);\n }\n else {\n this.adaptiveElement.isStringTemplate = true;\n this.adaptiveElement.appendTo(this.parentElement);\n }\n };\n DialogRenderer.prototype.tabSelect = function (e) {\n var fieldWrapper = closest(this.parentElement, '.' + cls.WRAPPER_CLASS);\n if (fieldWrapper && fieldWrapper.querySelector('.' + cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS)) {\n if (e.selectedIndex !== 4) {\n addClass([fieldWrapper.querySelector('.' + cls.ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS)], cls.ICON_DISABLE);\n removeClass([fieldWrapper.querySelector('.' + cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS)], cls.ICON_DISABLE);\n }\n else {\n removeClass([fieldWrapper.querySelector('.' + cls.ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS)], cls.ICON_DISABLE);\n addClass([fieldWrapper.querySelector('.' + cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS)], cls.ICON_DISABLE);\n }\n }\n if (e.selectedIndex === 4) {\n this.adaptiveElement.items[4].content = '';\n this.adaptiveElement.dataBind();\n this.parent.notify(events.initCalculatedField, {});\n }\n else {\n this.parent.axisFieldModule.render();\n }\n };\n DialogRenderer.prototype.createCalculatedButton = function () {\n var calculatedButton = createElement('button', {\n id: this.parent.element.id + '_CalculatedField',\n attrs: {\n 'type': 'button',\n 'tabindex': '0',\n 'aria-disabled': 'false',\n 'aria-label': this.parent.localeObj.getConstant('CalculatedField')\n }\n });\n var calculateField = new Button({\n cssClass: cls.CALCULATED_FIELD_CLASS + ' ' + cls.ICON_DISABLE,\n content: this.parent.localeObj.getConstant('CalculatedField'),\n enableRtl: this.parent.enableRtl, locale: this.parent.locale\n });\n calculateField.isStringTemplate = true;\n calculateField.appendTo(calculatedButton);\n if (this.parent.calculatedFieldModule) {\n removeClass([calculatedButton], cls.ICON_DISABLE);\n }\n calculateField.element.onclick = this.showCalculatedField.bind(this);\n return calculatedButton;\n };\n DialogRenderer.prototype.createAddButton = function () {\n var footerContainer = createElement('div', {\n className: cls.FIELD_LIST_FOOTER_CLASS + '-content'\n });\n var fieldListButton = createElement('div', {});\n var calculatedButton = createElement('div', {});\n var calculateField = new Button({\n cssClass: cls.ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS +\n ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS + ' ' + cls.ICON_DISABLE,\n iconCss: cls.ICON + ' ' + cls.ADD_ICON_CLASS,\n enableRtl: this.parent.enableRtl, locale: this.parent.locale\n });\n var fieldList = new Button({\n cssClass: cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS,\n iconCss: cls.ICON + ' ' + cls.ADD_ICON_CLASS,\n enableRtl: this.parent.enableRtl, locale: this.parent.locale\n });\n fieldList.isStringTemplate = true;\n fieldList.appendTo(fieldListButton);\n calculateField.isStringTemplate = true;\n calculateField.appendTo(calculatedButton);\n footerContainer.appendChild(fieldListButton);\n footerContainer.appendChild(calculatedButton);\n calculateField.element.onclick = this.showCalculatedField.bind(this);\n fieldList.element.onclick = this.showFieldListDialog.bind(this);\n return footerContainer;\n };\n DialogRenderer.prototype.createAxisTable = function (axis) {\n var axisWrapper = createElement('div', {\n className: cls.FIELD_LIST_CLASS + '-' + axis\n });\n var axisContent = createElement('div', { className: cls.AXIS_CONTENT_CLASS + ' ' + 'e-' + axis });\n var axisPrompt = createElement('span', {\n className: cls.AXIS_PROMPT_CLASS,\n innerHTML: this.parent.localeObj.getConstant('addPrompt')\n });\n axisWrapper.appendChild(axisContent);\n axisWrapper.appendChild(axisPrompt);\n return axisWrapper;\n };\n DialogRenderer.prototype.showCalculatedField = function (event) {\n if (!this.parent.isAdaptive) {\n if (this.parent.dialogRenderer.fieldListDialog) {\n this.parent.dialogRenderer.fieldListDialog.hide();\n addClass([this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS)], cls.ICON_HIDDEN);\n }\n }\n this.parent.notify(events.initCalculatedField, {});\n };\n DialogRenderer.prototype.showFieldListDialog = function (event) {\n var activeindex = this.adaptiveElement.selectedItem;\n this.parent.treeViewModule.render(activeindex);\n };\n DialogRenderer.prototype.onShowFieldList = function () {\n if (this.parent.allowDeferLayoutUpdate) {\n if (this.parent.isAdaptive) {\n this.parent.axisFieldModule.render();\n }\n this.parent.clonedDataSource = extend({}, this.parent.dataSourceSettings, null, true);\n this.parent.clonedFieldList = extend({}, this.parent.pivotFieldList, null, true);\n }\n addClass([this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS)], cls.ICON_HIDDEN);\n this.parent.dialogRenderer.fieldListDialog.show();\n this.parent.dialogRenderer.fieldListDialog.element.style.top =\n parseInt(this.parent.dialogRenderer.fieldListDialog.element.style.top, 10) < 0 ?\n '0px' : this.parent.dialogRenderer.fieldListDialog.element.style.top;\n };\n DialogRenderer.prototype.onCloseFieldList = function () {\n if (this.parent.allowDeferLayoutUpdate) {\n this.parent.dataSourceSettings =\n extend({}, this.parent.clonedDataSource.properties, null, true); /* eslint-disable-line */\n if (this.parent.isPopupView && this.parent.pivotGridModule) {\n this.parent.pivotGridModule.engineModule = this.parent.engineModule;\n this.parent.pivotGridModule.olapEngineModule = this.parent.olapEngineModule;\n this.parent.pivotGridModule.\n setProperties({\n dataSourceSettings: this.parent.clonedDataSource.properties /* eslint-disable-line */\n }, true);\n }\n if (Object.keys(this.parent.clonedFieldList).length > 0) {\n this.parent.dataType === 'olap' ? this.parent.olapEngineModule.fieldList = /* eslint-disable-line */\n extend({}, this.parent.clonedFieldList, null, true) :\n this.parent.engineModule.fieldList = extend({}, this.parent.clonedFieldList, null, true);\n }\n if (this.parent.isPopupView && this.parent.pivotGridModule) {\n this.parent.pivotGridModule.notify(events.uiUpdate, this);\n this.parent.pivotGridModule.notify(events.contentReady, this);\n }\n else {\n this.cancelButtonClick();\n }\n }\n this.parent.dialogRenderer.fieldListDialog.hide();\n };\n DialogRenderer.prototype.removeFieldListIcon = function () {\n if (this.parent.isAdaptive && this.parent.allowCalculatedField && this.parent.calculatedFieldModule) {\n if (this.adaptiveElement && this.adaptiveElement.selectedItem === 4) {\n if (select('#' + this.parent.element.id + 'droppable', this.adaptiveElement.element)) {\n /* eslint-disable */\n this.parent.calculatedFieldModule\n .updateAdaptiveCalculatedField(false);\n /* eslint-enable */\n }\n else {\n this.parent.notify(events.initCalculatedField, { edit: false });\n }\n }\n }\n if (!document.getElementById(this.parent.element.id + 'calculateddialog')) {\n removeClass([this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS)], cls.ICON_HIDDEN);\n }\n };\n DialogRenderer.prototype.keyPress = function (e) {\n if (e.keyCode === 13 && e.target) {\n e.target.click();\n e.preventDefault();\n return;\n }\n };\n DialogRenderer.prototype.wireDialogEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyPress, this);\n EventHandler.add(element, 'click', this.onShowFieldList, this);\n };\n DialogRenderer.prototype.unWireDialogEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyPress);\n EventHandler.remove(element, 'click', this.onShowFieldList);\n };\n /**\n * Destroys the Field Table component.\n * @function destroy\n * @returns {void}\n */\n DialogRenderer.prototype.destroy = function () {\n if (this.parent.renderMode === 'Popup') {\n this.unWireDialogEvent(this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS));\n }\n if (this.deferUpdateCheckBox && !this.deferUpdateCheckBox.isDestroyed) {\n this.deferUpdateCheckBox.destroy();\n this.deferUpdateCheckBox = null;\n }\n if (this.deferUpdateApplyButton && !this.deferUpdateApplyButton.isDestroyed) {\n this.deferUpdateApplyButton.destroy();\n this.deferUpdateApplyButton = null;\n }\n if (this.deferUpdateCancelButton && !this.deferUpdateCancelButton.isDestroyed) {\n this.deferUpdateCancelButton.destroy();\n this.deferUpdateCancelButton = null;\n }\n if (this.parent.renderMode === 'Popup') {\n if (this.fieldListDialog && !this.fieldListDialog.isDestroyed) {\n this.fieldListDialog.destroy();\n this.fieldListDialog = null;\n }\n if (document.getElementById(this.parent.element.id + '_Wrapper')) {\n remove(document.getElementById(this.parent.element.id + '_Wrapper'));\n }\n }\n };\n return DialogRenderer;\n}());\nexport { DialogRenderer };\n","import { createElement, addClass, removeClass, remove, EventHandler, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest } from '@syncfusion/ej2-base';\nimport * as cls from '../../common/base/css-constant';\nimport * as events from '../../common/base/constant';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { MaskedTextBox } from '@syncfusion/ej2-inputs';\nimport { PivotUtil } from '../../base/util';\n/**\n * Module to render Field List\n */\n/** @hidden */\nvar TreeViewRenderer = /** @class */ (function () {\n /** Constructor for render module\n * @param {PivotFieldList} parent - Instance of field list.\n */\n function TreeViewRenderer(parent) {\n this.selectedNodes = [];\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Initialize the field list tree rendering\n * @param {number} axis - Axis position.\n * @returns {void}\n * @private\n */\n TreeViewRenderer.prototype.render = function (axis) {\n this.parentElement = this.parent.dialogRenderer.parentElement;\n this.fieldListSort = 'None';\n if (!this.parent.isAdaptive) {\n var fieldTable = createElement('div', {\n className: cls.FIELD_TABLE_CLASS + ' ' + (this.parent.dataType === 'olap' ? cls.OLAP_FIELD_TABLE_CLASS : '')\n });\n var treeHeader = createElement('div', {\n className: cls.FIELD_HEADER_CLASS,\n innerHTML: this.parent.localeObj.getConstant('allFields')\n });\n var treeOuterDiv = createElement('div', { className: cls.FIELD_LIST_TREE_CLASS + '-outer-div' });\n this.treeViewElement = createElement('div', {\n id: this.parent.element.id + '_TreeView',\n className: cls.FIELD_LIST_CLASS + ' ' + (this.parent.dataType === 'olap' ? cls.OLAP_FIELD_LIST_CLASS : '')\n });\n var fieldHeaderWrappper = createElement('div', { className: 'e-field-header-wrapper' });\n fieldHeaderWrappper.appendChild(treeHeader);\n fieldTable.appendChild(fieldHeaderWrappper);\n this.updateSortElements(fieldHeaderWrappper);\n treeOuterDiv.appendChild(this.treeViewElement);\n fieldTable.appendChild(treeOuterDiv);\n this.parentElement.appendChild(fieldTable);\n if (this.parent.renderMode === 'Fixed') {\n var centerDiv = createElement('div', { className: cls.STATIC_CENTER_DIV_CLASS });\n var axisHeader = createElement('div', {\n className: cls.STATIC_CENTER_HEADER_CLASS,\n innerHTML: this.parent.localeObj.getConstant('centerHeader')\n });\n this.parentElement.appendChild(centerDiv);\n this.parentElement.appendChild(axisHeader);\n }\n this.renderTreeView();\n }\n else {\n this.renderTreeDialog(axis);\n }\n };\n TreeViewRenderer.prototype.updateSortElements = function (headerWrapper) {\n var options = { 'None': 'sortNone', 'Ascend': 'sortAscending', 'Descend': 'sortDescending' }; /* eslint-disable-line */\n var keys = Object.keys(options);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var option = keys_1[_i];\n var spanElement = createElement('span', {\n attrs: {\n 'tabindex': '0',\n 'aria-disabled': 'false',\n 'aria-label': 'Sort ' + option,\n 'data-sort': option,\n 'title': this.parent.localeObj.getConstant(options[option])\n },\n className: cls.ICON + ' ' + 'e-sort-' + option.toLowerCase() + ' ' +\n (this.fieldListSort === option ? 'e-selected' : '')\n });\n headerWrapper.appendChild(spanElement);\n this.unWireFieldListEvent(spanElement);\n this.wireFieldListEvent(spanElement);\n }\n };\n TreeViewRenderer.prototype.renderTreeView = function () {\n this.fieldTable = new TreeView({\n fields: { dataSource: this.getTreeData(), id: 'id', text: 'caption', isChecked: 'isSelected', parentID: 'pid', iconCss: 'spriteCssClass' },\n nodeChecked: this.nodeStateChange.bind(this),\n cssClass: cls.FIELD_LIST_TREE_CLASS,\n showCheckBox: true,\n allowDragAndDrop: true,\n sortOrder: 'None',\n autoCheck: false,\n loadOnDemand: this.parent.dataType === 'olap' ? false : true,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n nodeDragStart: this.dragStart.bind(this),\n nodeDragStop: this.dragStop.bind(this),\n drawNode: this.updateTreeNode.bind(this),\n nodeExpanding: this.updateNodeIcon.bind(this),\n nodeCollapsed: this.updateNodeIcon.bind(this),\n nodeSelected: function (args) {\n removeClass([args.node], 'e-active');\n args.cancel = true;\n }\n });\n this.treeViewElement.innerHTML = '';\n this.fieldTable.isStringTemplate = true;\n this.fieldTable.appendTo(this.treeViewElement);\n /* eslint-disable */\n var dragEle = this.parent.renderMode === \"Fixed\" ? this.parent.element : this.parentElement;\n if (!isNullOrUndefined(dragEle.querySelector('.' + cls.FIELD_LIST_CLASS))) {\n dragEle.querySelector('.' + cls.FIELD_LIST_CLASS).ej2_instances[0].dragObj.enableAutoScroll = false;\n }\n /* eslint-enable */\n };\n TreeViewRenderer.prototype.updateNodeIcon = function (args) {\n if (this.parent.dataType === 'olap') {\n if (args.node && args.node.querySelector('.e-list-icon') &&\n (args.node.querySelector('.e-list-icon').className.indexOf('e-folderCDB-icon') > -1)) {\n var node = args.node.querySelector('.e-list-icon');\n removeClass([node], 'e-folderCDB-icon');\n addClass([node], 'e-folderCDB-open-icon');\n }\n else if (args.node && args.node.querySelector('.e-list-icon') &&\n (args.node.querySelector('.e-list-icon').className.indexOf('e-folderCDB-open-icon') > -1)) {\n var node = args.node.querySelector('.e-list-icon');\n removeClass([node], 'e-folderCDB-open-icon');\n addClass([node], 'e-folderCDB-icon');\n }\n }\n };\n TreeViewRenderer.prototype.updateTreeNode = function (args) {\n var allowDrag = false;\n if (this.parent.dataType === 'olap') {\n allowDrag = this.updateOlapTreeNode(args);\n }\n else {\n allowDrag = true;\n }\n var liTextElement = args.node.querySelector('.' + cls.TEXT_CONTENT_CLASS);\n if (args.node.querySelector('.e-list-icon') && liTextElement) {\n var liIconElement = args.node.querySelector('.e-list-icon');\n liTextElement.insertBefore(liIconElement, args.node.querySelector('.e-list-text'));\n }\n if (allowDrag && !this.parent.isAdaptive) {\n /* eslint-disable */\n var field = PivotUtil.getFieldInfo(args.nodeData.id, this.parent);\n /* eslint-enable */\n allowDrag = false;\n var dragElement = createElement('span', {\n attrs: {\n 'tabindex': '-1',\n title: (field.fieldItem ? field.fieldItem.allowDragAndDrop ?\n this.parent.localeObj.getConstant('drag') : '' : this.parent.localeObj.getConstant('drag')),\n 'aria-disabled': 'false'\n },\n className: cls.ICON + ' ' + cls.DRAG_CLASS + ' ' +\n (field.fieldItem ? field.fieldItem.allowDragAndDrop ? '' : cls.DRAG_DISABLE_CLASS : '')\n });\n if (args.node.querySelector('.e-checkbox-wrapper') &&\n !args.node.querySelector('.cls.DRAG_CLASS') && liTextElement) {\n liTextElement.insertBefore(dragElement, args.node.querySelector('.e-checkbox-wrapper'));\n }\n }\n if (args.node.querySelector('.' + cls.NODE_CHECK_CLASS)) {\n addClass([args.node.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.LIST_SELECT_CLASS);\n }\n };\n TreeViewRenderer.prototype.updateOlapTreeNode = function (args) {\n var allowDrag = false;\n if (this.parent.dataType === 'olap') {\n if (args.node && args.node.querySelector('.e-calcMemberGroupCDB,.e-measureGroupCDB-icon,.e-folderCDB-icon,.e-folderCDB-open-icon,.e-dimensionCDB-icon,.e-kpiCDB-icon')) {\n args.node.querySelector('.e-checkbox-wrapper').style.display = 'none';\n }\n if (args.node && args.node.querySelector('.e-list-icon') &&\n (args.node.querySelector('.e-list-icon').className.indexOf('e-level-members') > -1)) {\n if (this.parent.isAdaptive) {\n args.node.querySelector('.e-checkbox-wrapper').style.display = 'none';\n }\n else {\n args.node.querySelector('.e-checkbox-wrapper').style.visibility = 'hidden';\n }\n }\n if (args.node && (args.node.querySelector('.e-hierarchyCDB-icon,.e-attributeCDB-icon,.e-namedSetCDB-icon') ||\n args.node.querySelector('.e-measure-icon,.e-kpiGoal-icon,.e-kpiStatus-icon,.e-kpiTrend-icon,.e-kpiValue-icon') ||\n args.node.querySelector('.e-calc-measure-icon,.e-calc-dimension-icon'))) {\n if (args.node.querySelector('.e-measure-icon')) {\n args.node.querySelector('.e-list-icon').style.display = 'none';\n allowDrag = true;\n }\n else {\n allowDrag = true;\n }\n }\n }\n else {\n allowDrag = true;\n }\n return allowDrag;\n };\n TreeViewRenderer.prototype.renderTreeDialog = function (axis) {\n var fieldListDialog = createElement('div', {\n id: this.parent.element.id + '_FieldListTreeView',\n className: cls.ADAPTIVE_FIELD_LIST_DIALOG_CLASS + ' ' + (this.parent.dataType === 'olap' ? 'e-olap-editor-dialog' : '')\n });\n this.parentElement.appendChild(fieldListDialog);\n this.fieldDialog = new Dialog({\n animationSettings: { effect: 'Fade' },\n allowDragging: false,\n header: this.parent.localeObj.getConstant('adaptiveFieldHeader'),\n content: this.createTreeView(this.getTreeData(axis)),\n isModal: true,\n visible: true,\n showCloseIcon: false,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n width: 'auto',\n height: '350px',\n position: { X: 'center', Y: 'center' },\n buttons: [{\n click: this.closeTreeDialog.bind(this),\n buttonModel: {\n cssClass: cls.CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel')\n }\n }, {\n click: this.onFieldAdd.bind(this),\n buttonModel: {\n cssClass: cls.OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('add'),\n isPrimary: true\n }\n }],\n closeOnEscape: false,\n target: this.parentElement.parentElement,\n close: this.dialogClose.bind(this)\n });\n this.fieldDialog.isStringTemplate = true;\n this.fieldDialog.appendTo(fieldListDialog);\n // this.fieldDialog.element.querySelector('.e-dlg-header').innerHTML = this.parent.localeObj.getConstant('adaptiveFieldHeader');\n };\n TreeViewRenderer.prototype.dialogClose = function () {\n if (document.getElementById(this.parent.element.id + '_FieldListTreeView')) {\n remove(document.getElementById(this.parent.element.id + '_FieldListTreeView'));\n }\n };\n TreeViewRenderer.prototype.createTreeView = function (treeData) {\n var editorTreeWrapper = createElement('div', {\n id: this.parent.element.id + 'EditorDiv',\n className: cls.EDITOR_TREE_WRAPPER_CLASS\n });\n var searchWrapper = createElement('div', {\n id: this.parent.element.id + '_SearchDiv', attrs: { 'tabindex': '-1' },\n className: cls.EDITOR_SEARCH_WRAPPER_CLASS\n });\n var editorSearch = createElement('input', { attrs: { 'type': 'text' } });\n searchWrapper.appendChild(editorSearch);\n var treeOuterDiv = createElement('div', { className: cls.EDITOR_TREE_CONTAINER_CLASS + '-outer-div' });\n var treeViewContainer = createElement('div', {\n className: cls.EDITOR_TREE_CONTAINER_CLASS + ' ' + (this.parent.dataType === 'olap' ? 'e-olap-field-list-tree' : '')\n });\n editorTreeWrapper.appendChild(searchWrapper);\n this.editorSearch = new MaskedTextBox({\n showClearButton: true,\n placeholder: this.parent.localeObj.getConstant('search'),\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n cssClass: cls.EDITOR_SEARCH_CLASS,\n change: this.textChange.bind(this)\n });\n this.editorSearch.isStringTemplate = true;\n this.editorSearch.appendTo(editorSearch);\n var promptDiv = createElement('div', {\n className: cls.EMPTY_MEMBER_CLASS + ' ' + cls.ICON_DISABLE,\n innerHTML: this.parent.localeObj.getConstant('noMatches')\n });\n editorTreeWrapper.appendChild(promptDiv);\n treeOuterDiv.appendChild(treeViewContainer);\n editorTreeWrapper.appendChild(treeOuterDiv);\n this.fieldTable = new TreeView({\n fields: { dataSource: treeData, id: 'id', text: 'caption', isChecked: 'isSelected', parentID: 'pid', iconCss: 'spriteCssClass' },\n showCheckBox: true,\n autoCheck: false,\n loadOnDemand: this.parent.dataType === 'olap' ? false : true,\n sortOrder: this.parent.dataType === 'olap' ? 'None' : 'Ascending',\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n nodeChecked: this.addNode.bind(this),\n drawNode: this.updateTreeNode.bind(this),\n nodeExpanding: this.updateNodeIcon.bind(this),\n nodeCollapsed: this.updateNodeIcon.bind(this),\n nodeSelected: function (args) {\n removeClass([args.node], 'e-active');\n args.cancel = true;\n }\n });\n this.fieldTable.isStringTemplate = true;\n this.fieldTable.appendTo(treeViewContainer);\n return editorTreeWrapper;\n };\n TreeViewRenderer.prototype.textChange = function (e) {\n this.parent.pivotCommon.eventBase.searchTreeNodes(e, this.fieldTable, true);\n var promptDiv = this.fieldDialog.element.querySelector('.' + cls.EMPTY_MEMBER_CLASS);\n var liList = [].slice.call(this.fieldTable.element.querySelectorAll('li'));\n var disabledList = [].slice.call(this.fieldTable.element.querySelectorAll('li.' + cls.ICON_DISABLE));\n if (liList.length === disabledList.length) {\n removeClass([promptDiv], cls.ICON_DISABLE);\n }\n else {\n addClass([promptDiv], cls.ICON_DISABLE);\n }\n };\n TreeViewRenderer.prototype.dragStart = function (args) {\n var _this = this;\n if (args.event.target.classList.contains(cls.DRAG_CLASS) &&\n !args.event.target.classList.contains(cls.DRAG_DISABLE_CLASS)) {\n var fieldInfo = PivotUtil.getFieldInfo(args.draggedNode.getAttribute('data-uid'), this.parent);\n var dragEventArgs = {\n fieldName: fieldInfo.fieldName, fieldItem: fieldInfo.fieldItem, axis: fieldInfo.axis,\n dataSourceSettings: this.parent.dataSourceSettings, cancel: false\n };\n var control = this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n control.trigger(events.fieldDragStart, dragEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.parent.isDragging = true;\n addClass([args.draggedNode.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.SELECTED_NODE_CLASS);\n var data = void 0;\n if (_this.parent.dataType === 'olap') {\n data = _this.parent.olapEngineModule.fieldList[args.draggedNode.getAttribute('data-uid')];\n }\n else {\n data = _this.parent.engineModule.fieldList[args.draggedNode.getAttribute('data-uid')];\n }\n var axis = [cls.ROW_AXIS_CLASS, cls.COLUMN_AXIS_CLASS, cls.FILTER_AXIS_CLASS];\n if (data && data.aggregateType === 'CalculatedField') {\n for (var _i = 0, axis_1 = axis; _i < axis_1.length; _i++) {\n var axisContent = axis_1[_i];\n addClass([_this.parentElement.querySelector('.' + axisContent)], cls.NO_DRAG_CLASS);\n }\n }\n var dragItem = args.clonedNode;\n if (dragItem && (_this.parent.getModuleName() === 'pivotfieldlist' &&\n _this.parent.renderMode) === 'Popup') {\n dragItem.style.zIndex = (_this.parent.dialogRenderer.fieldListDialog.zIndex + 1).toString();\n }\n }\n else {\n _this.parent.isDragging = false;\n args.cancel = true;\n }\n });\n }\n else {\n this.parent.isDragging = false;\n args.cancel = true;\n }\n };\n // private getFieldDragArgs(args: DragAndDropEventArgs): FieldDragStartEventArgs {\n // let fieldInfo: FieldItemInfo = PivotUtil.getFieldInfo(args.draggedNode.getAttribute('data-uid'), this.parent);\n // let dragEventArgs: any = {\n // fieldName: fieldInfo.fieldName, fieldItem: fieldInfo.fieldItem, axis: fieldInfo.axis,\n // dataSourceSettings: this.parent.dataSourceSettings, cancel: false\n // }\n // let treeModule: TreeViewRenderer = this;\n // if (isBlazor()) {\n // dragEventArgs = this.getFieldDragEventArgs(dragEventArgs);\n // dragEventArgs.then((e: any) => {\n // return e;\n // });\n // }\n // let control: PivotView | PivotFieldList = this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n // control.trigger(events.fieldDragStart, dragEventArgs);\n // return dragEventArgs;\n // }\n // private getFieldDragEventArgs(dragEventArgs: FieldDragStartEventArgs): FieldDragStartEventArgs | Deferred {\n // let callbackPromise: Deferred = new Deferred();\n // let control: PivotView | PivotFieldList = this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n // control.trigger(events.fieldDragStart, dragEventArgs, (observedArgs: FieldDragStartEventArgs) => {\n // callbackPromise.resolve(observedArgs);\n // });\n // return callbackPromise;\n // }\n TreeViewRenderer.prototype.dragStop = function (args) {\n args.cancel = true;\n this.parent.isDragging = false;\n var axis = [cls.ROW_AXIS_CLASS, cls.COLUMN_AXIS_CLASS, cls.FILTER_AXIS_CLASS];\n for (var _i = 0, axis_2 = axis; _i < axis_2.length; _i++) {\n var axisElement = axis_2[_i];\n removeClass([this.parentElement.querySelector('.' + axisElement)], cls.NO_DRAG_CLASS);\n }\n removeClass([args.draggedNode.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.SELECTED_NODE_CLASS);\n if (this.parent.pivotCommon.filterDialog.dialogPopUp) {\n this.parent.pivotCommon.filterDialog.dialogPopUp.close();\n }\n var fieldName = args.draggedNodeData.id.toString();\n /* eslint-disable */\n if (!this.isNodeDropped(args, fieldName)) {\n return;\n }\n var list = this.parent.pivotFieldList;\n var selectedNode = list[fieldName];\n /* eslint-enable */\n this.parent.pivotCommon.dataSourceUpdate.control = this.parent.getModuleName() === 'pivotview' ? this.parent :\n (this.parent.pivotGridModule ? this.parent.pivotGridModule : this.parent);\n if (this.parent.pivotCommon.nodeStateModified.onStateModified(args, fieldName)) {\n if (this.parent.allowDeferLayoutUpdate) {\n selectedNode.isSelected = true;\n this.updateDataSource();\n }\n else {\n this.parent.updateDataSource();\n }\n var parent_1 = this.parent;\n //setTimeout(() => {\n parent_1.axisFieldModule.render();\n //});\n }\n };\n TreeViewRenderer.prototype.isNodeDropped = function (args, targetID) {\n var isDropped = true;\n if (args.draggedNodeData.isChecked === 'true') {\n var target = this.getButton(targetID);\n var axisPanel = closest(target, '.' + cls.DROPPABLE_CLASS);\n var droppableElement = closest(args.target, '.' + cls.DROPPABLE_CLASS);\n if (target && axisPanel === droppableElement) {\n var pivotButtons = [].slice.call(axisPanel.querySelectorAll('.' + cls.PIVOT_BUTTON_CLASS));\n var dropTarget = closest(args.target, '.' + cls.PIVOT_BUTTON_WRAPPER_CLASS);\n var sourcePosition = void 0;\n var dropPosition = -1;\n for (var i = 0, n = pivotButtons.length; i < n; i++) {\n if (pivotButtons[i].id === target.id) {\n sourcePosition = i;\n }\n if (dropTarget) {\n var droppableButton = dropTarget.querySelector('.' + cls.PIVOT_BUTTON_CLASS);\n if (pivotButtons[i].id === droppableButton.id) {\n dropPosition = i;\n }\n }\n }\n if (sourcePosition === dropPosition || (sourcePosition === (pivotButtons.length - 1) && dropPosition === -1)) {\n var parentElement = document.getElementById(this.parent.element.id + '_Wrapper');\n removeClass([].slice.call(parentElement.querySelectorAll('.' + cls.DROP_INDICATOR_CLASS)), cls.INDICATOR_HOVER_CLASS);\n isDropped = false;\n }\n }\n }\n return isDropped;\n };\n TreeViewRenderer.prototype.getButton = function (fieldName) {\n var wrapperElement = document.getElementById(this.parent.element.id + '_Wrapper');\n var pivotButtons = [].slice.call(wrapperElement.querySelectorAll('.' + cls.PIVOT_BUTTON_CLASS));\n var buttonElement;\n for (var i = 0, n = pivotButtons.length; i < n; i++) {\n if (pivotButtons[i].id === fieldName) {\n buttonElement = pivotButtons[i];\n break;\n }\n }\n return buttonElement;\n };\n TreeViewRenderer.prototype.nodeStateChange = function (args) {\n var _this = this;\n var node = closest(args.node, '.' + cls.TEXT_CONTENT_CLASS);\n if (!isNullOrUndefined(node)) {\n var li_1 = closest(node, 'li');\n var id_1 = li_1.getAttribute('data-uid');\n if (this.parent.pivotCommon.filterDialog.dialogPopUp) {\n this.parent.pivotCommon.filterDialog.dialogPopUp.close();\n }\n /* eslint-disable */\n var list = this.parent.pivotFieldList;\n var selectedNode_1 = list[id_1];\n /* eslint-enable */\n var fieldInfo_1 = PivotUtil.getFieldInfo(id_1, this.parent);\n var control = this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n if (args.action === 'check') {\n var eventdrop = {\n fieldName: id_1, dropField: fieldInfo_1.fieldItem,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings),\n dropAxis: (selectedNode_1.type === 'number' || (selectedNode_1.type === 'CalculatedField' &&\n selectedNode_1.formula && selectedNode_1.formula.indexOf('Measure') > -1 &&\n this.parent.dataType === 'olap')) ? 'values' : 'rows',\n dropPosition: fieldInfo_1.position, draggedAxis: 'fieldlist', cancel: false\n };\n control.trigger(events.fieldDrop, eventdrop, function (observedArgs) {\n if (!observedArgs.cancel) {\n addClass([node.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.LIST_SELECT_CLASS);\n _this.updateSelectedNodes(li_1, args.action);\n var addNode = _this.parent.pivotCommon.dataSourceUpdate.getNewField(id_1, fieldInfo_1.fieldItem);\n _this.updateReportSettings(addNode, observedArgs);\n _this.updateNodeStateChange(id_1, args, selectedNode_1);\n }\n else {\n _this.updateCheckState(selectedNode_1);\n }\n });\n }\n else {\n var removeFieldArgs = {\n cancel: false, fieldName: id_1,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings),\n fieldItem: fieldInfo_1.fieldItem, axis: fieldInfo_1.axis\n };\n control.trigger(events.fieldRemove, removeFieldArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n removeClass([node.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.LIST_SELECT_CLASS);\n _this.updateSelectedNodes(li_1, args.action);\n _this.parent.pivotCommon.dataSourceUpdate.removeFieldFromReport(id_1);\n if (_this.parent.dataType === 'olap' && _this.parent.dataSourceSettings.values.length === 0) {\n _this.parent.pivotCommon.dataSourceUpdate.removeFieldFromReport('[Measures]');\n }\n _this.updateNodeStateChange(id_1, args, selectedNode_1);\n }\n else {\n _this.updateCheckState(selectedNode_1);\n }\n });\n }\n }\n };\n TreeViewRenderer.prototype.updateReportSettings = function (newField, dropArgs) {\n var dropPosition = dropArgs.dropPosition;\n var dropClass = dropArgs.dropAxis;\n switch (dropClass) {\n case 'filters':\n dropPosition !== -1 ? /* eslint-disable-line */\n this.parent.dataSourceSettings.filters.splice(dropPosition, 0, newField) :\n this.parent.dataSourceSettings.filters.push(newField);\n break;\n case 'rows':\n dropPosition !== -1 ? /* eslint-disable-line */\n this.parent.dataSourceSettings.rows.splice(dropPosition, 0, newField) :\n this.parent.dataSourceSettings.rows.push(newField);\n break;\n case 'columns':\n dropPosition !== -1 ? /* eslint-disable-line */\n this.parent.dataSourceSettings.columns.splice(dropPosition, 0, newField) :\n this.parent.dataSourceSettings.columns.push(newField);\n break;\n case 'values':\n dropPosition !== -1 ? /* eslint-disable-line */\n this.parent.dataSourceSettings.values.splice(dropPosition, 0, newField) :\n this.parent.dataSourceSettings.values.push(newField);\n if (this.parent.dataType === 'olap' && this.parent.olapEngineModule &&\n !(this.parent.olapEngineModule).isMeasureAvail) {\n var measureField = {\n name: '[Measures]', caption: 'Measures', baseField: undefined, baseItem: undefined\n };\n var fieldAxis = this.parent.dataSourceSettings.valueAxis === 'row' ?\n this.parent.dataSourceSettings.rows : this.parent.dataSourceSettings.columns;\n fieldAxis.push(measureField);\n }\n break;\n }\n };\n TreeViewRenderer.prototype.updateCheckState = function (selectedNode) {\n var chkState = this.fieldTable.element.querySelectorAll('.e-checkbox-wrapper');\n var innerText = this.fieldTable.element.querySelectorAll('.e-list-text');\n var checkClass = this.fieldTable.element.querySelectorAll('.e-frame');\n for (var i = 0; i < chkState.length; i++) {\n if (selectedNode.caption === innerText[i].textContent) {\n if (chkState[i].getAttribute('aria-checked') === 'false') {\n chkState[i].setAttribute('aria-checked', 'false');\n checkClass[i].classList.add(cls.NODE_CHECK_CLASS);\n }\n else {\n chkState[i].setAttribute('aria-checked', 'true');\n checkClass[i].classList.remove(cls.NODE_CHECK_CLASS);\n }\n }\n }\n };\n TreeViewRenderer.prototype.updateNodeStateChange = function (id, args, selectedNode) {\n if (!this.parent.allowDeferLayoutUpdate) {\n this.parent.updateDataSource(true);\n }\n else {\n selectedNode.isSelected = args.action === 'check';\n if (this.parent.dataType === 'olap') {\n this.parent.olapEngineModule.updateFieldlistData(id, args.action === 'check');\n }\n this.updateDataSource();\n }\n var parent = this.parent;\n setTimeout(function () {\n parent.axisFieldModule.render();\n });\n };\n TreeViewRenderer.prototype.updateSelectedNodes = function (li, state) {\n if (li && li.querySelector('ul')) {\n for (var _i = 0, _a = [].slice.call(li.querySelectorAll('li')); _i < _a.length; _i++) {\n var element = _a[_i];\n if (state === 'check') {\n addClass([element.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.LIST_SELECT_CLASS);\n }\n else {\n removeClass([element.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.LIST_SELECT_CLASS);\n }\n }\n }\n };\n TreeViewRenderer.prototype.updateDataSource = function () {\n if (this.parent.isPopupView) {\n if (this.parent.dataType === 'olap') {\n this.parent.pivotGridModule.olapEngineModule = this.parent.olapEngineModule;\n }\n else {\n this.parent.pivotGridModule.engineModule = this.parent.engineModule;\n }\n this.parent.pivotGridModule.setProperties({ dataSourceSettings: this.parent.dataSourceSettings.properties }, true); /* eslint-disable-line */\n this.parent.pivotGridModule.notify(events.uiUpdate, this);\n }\n else {\n this.parent.triggerPopulateEvent();\n }\n };\n TreeViewRenderer.prototype.addNode = function (args) {\n var _this = this;\n /* eslint-disable */\n var fieldList = this.parent.pivotFieldList;\n var selectedNode = fieldList[args.data[0].id.toString()];\n /* eslint-enable */\n var fieldInfo = PivotUtil.getFieldInfo(selectedNode.id.toString(), this.parent);\n var control = this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n if (args.action === 'check') {\n var eventdrop = {\n fieldName: fieldInfo.fieldName, dropField: fieldInfo.fieldItem,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings),\n dropAxis: 'rows', draggedAxis: 'fieldlist', cancel: false\n };\n control.trigger(events.fieldDrop, eventdrop, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.selectedNodes.push(selectedNode.id.toString());\n }\n else {\n _this.updateCheckState(selectedNode);\n }\n });\n }\n else {\n var removeFieldArgs = {\n cancel: false, fieldName: fieldInfo.fieldName,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings),\n fieldItem: fieldInfo.fieldItem, axis: fieldInfo.axis\n };\n control.trigger(events.fieldRemove, removeFieldArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var count = _this.selectedNodes.length;\n while (count--) {\n if (_this.selectedNodes[count] === selectedNode.id.toString()) {\n _this.selectedNodes.splice(count, 1);\n break;\n }\n }\n }\n else {\n _this.updateCheckState(selectedNode);\n }\n });\n }\n };\n TreeViewRenderer.prototype.refreshTreeView = function () {\n if (this.fieldTable) {\n var treeData = this.getUpdatedData(); /* eslint-disable-line */\n this.fieldTable.fields = {\n dataSource: treeData, id: 'id', text: 'caption', isChecked: 'isSelected', parentID: 'pid', iconCss: 'spriteCssClass'\n };\n this.fieldTable.dataBind();\n }\n };\n /* eslint-disable */\n TreeViewRenderer.prototype.getUpdatedData = function () {\n var treeData = this.getTreeData();\n /* eslint-enable */\n var expandedNodes = this.fieldTable.expandedNodes;\n this.updateExpandedNodes(treeData, expandedNodes);\n return this.applySorting(treeData, this.fieldListSort);\n };\n /* eslint-disable */\n TreeViewRenderer.prototype.getTreeData = function (axis) {\n var data = [];\n /* eslint-enable */\n if (this.parent.dataType === 'olap') {\n data = this.getOlapTreeData(axis);\n }\n else {\n var keys = this.parent.pivotFieldList ? Object.keys(this.parent.pivotFieldList) : [];\n var fieldList = {};\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var member = this.parent.pivotFieldList[key];\n fieldList[key] = { id: member.id, caption: member.caption, isSelected: member.isSelected };\n }\n if (this.parent.isAdaptive) {\n var fields = [this.parent.dataSourceSettings.filters, this.parent.dataSourceSettings.columns,\n this.parent.dataSourceSettings.rows,\n this.parent.dataSourceSettings.values];\n var currentFieldSet = fields[axis];\n var len = keys.length;\n while (len--) {\n fieldList[keys[len]].isSelected = false;\n }\n for (var _a = 0, currentFieldSet_1 = currentFieldSet; _a < currentFieldSet_1.length; _a++) {\n var item = currentFieldSet_1[_a];\n fieldList[item.name].isSelected = true;\n }\n }\n /* eslint-disable */\n var list = fieldList;\n for (var _b = 0, keys_3 = keys; _b < keys_3.length; _b++) {\n var member = keys_3[_b];\n var obj = list[member];\n /* eslint-enable */\n data.push(obj);\n }\n }\n return data;\n };\n /* eslint-disable */\n TreeViewRenderer.prototype.getOlapTreeData = function (axis) {\n var data = [];\n /* eslint-enable */\n var fieldListData = this.parent.olapEngineModule.fieldListData ? this.parent.olapEngineModule.fieldListData : [];\n if (this.parent.isAdaptive) {\n var fields = [\n this.parent.dataSourceSettings.filters, this.parent.dataSourceSettings.columns,\n this.parent.dataSourceSettings.rows, this.parent.dataSourceSettings.values\n ];\n var currentFieldSet = fields[axis];\n var i = 0;\n while (i < fieldListData.length) {\n var item = fieldListData[i];\n /* eslint-disable */\n var framedSet = void 0;\n /* eslint-enable */\n if (axis === 3) {\n if (item.id.toLowerCase() !== '[measures]' &&\n (item.id.toLowerCase().indexOf('[measures]') === 0 ||\n (item.spriteCssClass && item.spriteCssClass.indexOf('e-measureCDB') !== -1)) ||\n (item.id.toLowerCase() === '[calculated members].[_0]' ||\n (item.spriteCssClass && item.spriteCssClass.indexOf('e-calc-measure-icon') !== -1))) {\n framedSet = {\n id: item.id, caption: item.caption, hasChildren: item.hasChildren,\n type: item.type, aggregateType: item.aggregateType,\n isSelected: item.isSelected, pid: item.pid, spriteCssClass: item.spriteCssClass\n };\n framedSet.isSelected = false;\n if (framedSet.spriteCssClass && framedSet.spriteCssClass.indexOf('e-measureCDB') !== -1) {\n framedSet.spriteCssClass = framedSet.spriteCssClass.replace('e-folderCDB-icon', 'e-measureGroupCDB-icon');\n framedSet.pid = undefined;\n }\n for (var _i = 0, currentFieldSet_2 = currentFieldSet; _i < currentFieldSet_2.length; _i++) {\n var field = currentFieldSet_2[_i];\n if (framedSet.id === field.name) {\n framedSet.isSelected = true;\n break;\n }\n }\n data.push(framedSet);\n }\n }\n else {\n if (!(item.id.toLowerCase().indexOf('[measures]') === 0) &&\n !(item.spriteCssClass && item.spriteCssClass.indexOf('e-measureCDB') !== -1) &&\n !(item.spriteCssClass && item.spriteCssClass.indexOf('e-calc-measure-icon') !== -1)) {\n framedSet = {\n id: item.id, caption: item.caption, hasChildren: item.hasChildren,\n type: item.type, aggregateType: item.aggregateType,\n isSelected: item.isSelected, pid: item.pid, spriteCssClass: item.spriteCssClass\n };\n framedSet.isSelected = false;\n for (var _a = 0, currentFieldSet_3 = currentFieldSet; _a < currentFieldSet_3.length; _a++) {\n var item_1 = currentFieldSet_3[_a];\n if (framedSet.id === item_1.name) {\n framedSet.isSelected = true;\n break;\n }\n }\n data.push(framedSet);\n }\n }\n i++;\n }\n }\n else {\n data = PivotUtil.getClonedData(this.parent.olapEngineModule.fieldListData); /* eslint-disable-line */\n }\n return data;\n };\n TreeViewRenderer.prototype.updateExpandedNodes = function (data, expandedNodes) {\n if (expandedNodes.length > 0) {\n var i = 0;\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var field = data_1[_i];\n if (expandedNodes.indexOf(field.id) > -1) {\n i++;\n field.expanded = true;\n field.spriteCssClass = (field.spriteCssClass &&\n field.spriteCssClass.toString().indexOf('e-folderCDB-icon') > -1 ?\n field.spriteCssClass.toString().replace('e-folderCDB-icon', 'e-folderCDB-open-icon') :\n field.spriteCssClass);\n if (i === (expandedNodes.length)) {\n break;\n }\n }\n }\n }\n };\n TreeViewRenderer.prototype.updateSorting = function (args) {\n var target = args.target;\n var option = target.getAttribute('data-sort');\n if (target.className.indexOf('e-selected') === -1) {\n switch (option) {\n case 'None':\n this.fieldListSort = 'None';\n addClass([target], 'e-selected');\n removeClass([this.parentElement.querySelector('.e-sort-ascend')], 'e-selected');\n removeClass([this.parentElement.querySelector('.e-sort-descend')], 'e-selected');\n break;\n case 'Ascend':\n this.fieldListSort = 'Ascend';\n addClass([target], 'e-selected');\n removeClass([this.parentElement.querySelector('.e-sort-none')], 'e-selected');\n removeClass([this.parentElement.querySelector('.e-sort-descend')], 'e-selected');\n break;\n case 'Descend':\n this.fieldListSort = 'Descend';\n addClass([target], 'e-selected');\n removeClass([this.parentElement.querySelector('.e-sort-ascend')], 'e-selected');\n removeClass([this.parentElement.querySelector('.e-sort-none')], 'e-selected');\n break;\n }\n this.refreshTreeView();\n }\n };\n /* eslint-disable */\n TreeViewRenderer.prototype.applySorting = function (treeData, sortOrder) {\n if (this.parent.dataType === 'olap') {\n var measure = void 0;\n var calcMember = void 0;\n /* eslint-enable */\n if (this.parent.dataSourceSettings.calculatedFieldSettings.length > 0 &&\n treeData[0].id.toLowerCase() === '[calculated members].[_0]') {\n calcMember = treeData[0];\n measure = treeData[1];\n treeData.splice(0, 2);\n }\n else {\n measure = treeData[0];\n treeData.splice(0, 1);\n }\n /* eslint-disable */\n treeData = sortOrder === 'Ascend' ?\n (treeData.sort(function (a, b) { return (a.caption > b.caption) ? 1 : ((b.caption > a.caption) ? -1 : 0); })) :\n sortOrder === 'Descend' ?\n (treeData.sort(function (a, b) { return (a.caption < b.caption) ? 1 : ((b.caption < a.caption) ? -1 : 0); })) :\n treeData;\n /* eslint-enable */\n if (calcMember) {\n treeData.splice(0, 0, calcMember, measure);\n }\n else {\n treeData.splice(0, 0, measure);\n }\n }\n else {\n this.fieldTable.sortOrder = ((sortOrder === 'Ascend' ? 'Ascending' : (sortOrder === 'Descend' ? 'Descending' : 'None')));\n }\n return treeData;\n };\n TreeViewRenderer.prototype.onFieldAdd = function (e) {\n this.parent.dialogRenderer.updateDataSource(this.selectedNodes);\n this.closeTreeDialog();\n };\n TreeViewRenderer.prototype.closeTreeDialog = function () {\n this.selectedNodes = [];\n this.fieldDialog.hide();\n };\n TreeViewRenderer.prototype.keyPress = function (e) {\n if (e.keyCode === 13 && e.target) {\n e.target.click();\n e.preventDefault();\n return;\n }\n };\n TreeViewRenderer.prototype.wireFieldListEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyPress, this);\n EventHandler.add(element, 'click', this.updateSorting, this);\n };\n TreeViewRenderer.prototype.unWireFieldListEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyPress);\n EventHandler.remove(element, 'click', this.updateSorting);\n };\n /* eslint-disable-next-line */\n /**\n * @hidden\n */\n TreeViewRenderer.prototype.addEventListener = function () {\n this.parent.on(events.treeViewUpdate, this.refreshTreeView, this);\n };\n /* eslint-disable-next-line */\n /**\n * @hidden\n */\n TreeViewRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.treeViewUpdate, this.refreshTreeView);\n };\n /**\n * To destroy the tree view event listener\n * @returns {void}\n * @hidden\n */\n TreeViewRenderer.prototype.destroy = function () {\n this.removeEventListener();\n if (this.fieldTable && !this.fieldTable.isDestroyed) {\n this.fieldTable.destroy();\n this.fieldTable = null;\n }\n if (this.fieldDialog && !this.fieldDialog.isDestroyed) {\n this.fieldDialog.destroy();\n this.fieldDialog = null;\n }\n if (this.editorSearch && !this.editorSearch.isDestroyed) {\n this.editorSearch.destroy();\n this.editorSearch = null;\n }\n };\n return TreeViewRenderer;\n}());\nexport { TreeViewRenderer };\n","import { createElement, EventHandler, removeClass, addClass, Droppable } from '@syncfusion/ej2-base';\nimport * as cls from '../../common/base/css-constant';\n/**\n * Module to render Axis Field Table\n */\n/** @hidden */\nvar AxisTableRenderer = /** @class */ (function () {\n /* eslint-disable-next-line */\n /** Constructor for render module */\n function AxisTableRenderer(parent) {\n this.parent = parent;\n }\n /**\n * Initialize the axis table rendering\n * @returns {void}\n * @private\n */\n AxisTableRenderer.prototype.render = function () {\n if (!this.parent.isAdaptive) {\n var axisTable = createElement('div', {\n className: cls.AXIS_TABLE_CLASS + ' ' + (this.parent.dataType === 'olap' ? cls.OLAP_AXIS_TABLE_CLASS : '')\n });\n this.leftAxisPanel = createElement('div', { className: cls.LEFT_AXIS_PANEL_CLASS });\n this.rightAxisPanel = createElement('div', { className: cls.RIGHT_AXIS_PANEL_CLASS });\n this.parent.dialogRenderer.parentElement.appendChild(axisTable);\n axisTable.appendChild(this.leftAxisPanel);\n axisTable.appendChild(this.rightAxisPanel);\n this.axisTable = axisTable;\n this.renderAxisTable();\n }\n this.parent.axisFieldModule.render();\n };\n AxisTableRenderer.prototype.renderAxisTable = function () {\n var fieldLabels = ['filters', 'rows', 'columns', 'values'];\n for (var len = 0, lnt = fieldLabels.length; len < lnt; len++) {\n var axis = createElement('div', {\n className: cls.FIELD_LIST_CLASS + '-' + fieldLabels[len]\n });\n var axisTitleWrapper = createElement('div', {\n className: cls.AXIS_ICON_CLASS + '-wrapper'\n });\n var axisTitle = createElement('div', {\n className: cls.AXIS_HEADER_CLASS,\n attrs: { title: this.parent.localeObj.getConstant(fieldLabels[len]) },\n innerHTML: this.parent.localeObj.getConstant(fieldLabels[len])\n });\n axisTitleWrapper.appendChild(this.getIconupdate(fieldLabels[len]));\n axisTitleWrapper.appendChild(axisTitle);\n var axisContent = createElement('div', { className: cls.AXIS_CONTENT_CLASS + ' ' + 'e-' + fieldLabels[len] });\n var localePrompt = void 0;\n if (fieldLabels[len] === 'rows') {\n localePrompt = this.parent.localeObj.getConstant('dropRowPrompt');\n }\n else if (fieldLabels[len] === 'columns') {\n localePrompt = this.parent.localeObj.getConstant('dropColPrompt');\n }\n else if (fieldLabels[len] === 'values') {\n localePrompt = this.parent.localeObj.getConstant('dropValPrompt');\n }\n else {\n localePrompt = this.parent.localeObj.getConstant('dropFilterPrompt');\n }\n var axisPrompt = createElement('span', {\n className: cls.AXIS_PROMPT_CLASS,\n innerHTML: localePrompt\n });\n var droppable = new Droppable(axisContent, {}); /* eslint-disable-line */\n axis.appendChild(axisTitleWrapper);\n axis.appendChild(axisContent);\n axis.appendChild(axisPrompt);\n if (len <= 1) {\n this.leftAxisPanel.appendChild(axis);\n }\n else {\n this.rightAxisPanel.appendChild(axis);\n }\n this.unWireEvent(axisContent);\n this.wireEvent(axisContent);\n }\n };\n AxisTableRenderer.prototype.getIconupdate = function (axis) {\n var axisWrapper = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false' },\n className: cls.AXIS_ICON_CLASS + '-icon-wrapper'\n });\n var axisElement = createElement('span', {\n attrs: {\n 'tabindex': '-1', 'aria-disabled': 'false'\n },\n className: cls.ICON + ' ' + cls.AXIS_ICON_CLASS + '-' + axis\n });\n axisWrapper.appendChild(axisElement);\n return axisWrapper;\n };\n AxisTableRenderer.prototype.wireEvent = function (element) {\n EventHandler.add(element, 'mouseover', this.updateDropIndicator, this);\n EventHandler.add(element, 'mouseleave', this.updateDropIndicator, this);\n };\n AxisTableRenderer.prototype.unWireEvent = function (element) {\n EventHandler.remove(element, 'mouseover', this.updateDropIndicator);\n EventHandler.remove(element, 'mouseleave', this.updateDropIndicator);\n };\n AxisTableRenderer.prototype.updateDropIndicator = function (e) {\n var parentElement = this.parent.dialogRenderer.parentElement;\n if (this.parent.isDragging && e.target.classList.contains(cls.AXIS_CONTENT_CLASS) && e.type === 'mouseover') {\n removeClass([].slice.call(parentElement.querySelectorAll('.' + cls.DROP_INDICATOR_CLASS)), cls.INDICATOR_HOVER_CLASS);\n removeClass([].slice.call(parentElement.querySelectorAll('.' + cls.DROP_INDICATOR_CLASS + '-last')), cls.INDICATOR_HOVER_CLASS);\n var element = [].slice.call(e.target.querySelectorAll('.' + cls.PIVOT_BUTTON_WRAPPER_CLASS));\n if (element.length > 0) {\n addClass([element[element.length - 1].querySelector('.' + cls.DROP_INDICATOR_CLASS + '-last')], cls.INDICATOR_HOVER_CLASS);\n }\n }\n else if (e.type === 'mouseleave') {\n removeClass([].slice.call(parentElement.querySelectorAll('.' + cls.DROP_INDICATOR_CLASS)), cls.INDICATOR_HOVER_CLASS);\n removeClass([].slice.call(parentElement.querySelectorAll('.' + cls.DROP_INDICATOR_CLASS + '-last')), cls.INDICATOR_HOVER_CLASS);\n }\n };\n return AxisTableRenderer;\n}());\nexport { AxisTableRenderer };\n","import { createElement, Draggable, remove, extend, detach, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { EventHandler, isBlazor, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, closest, Browser } from '@syncfusion/ej2-base';\nimport { PivotFieldList } from '../../pivotfieldlist/base/field-list';\nimport * as cls from '../../common/base/css-constant';\nimport * as events from '../../common/base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { AggregateMenu } from '../popups/aggregate-menu';\nimport { AxisFieldRenderer } from '../../pivotfieldlist/renderer/axis-field-renderer';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { PivotUtil } from '../../base/util';\n/**\n * Module to render Pivot button\n */\n/** @hidden */\nvar PivotButton = /** @class */ (function () {\n /**\n * Constructor for render module.\n * @param {PivotView | PivotFieldList} parent - Component instance.\n */\n function PivotButton(parent) {\n this.parent = parent;\n this.menuOption = new AggregateMenu(this.parent);\n this.parent.pivotButtonModule = this;\n this.addEventListener();\n if (this.parent instanceof PivotFieldList) {\n this.axisField = new AxisFieldRenderer(this.parent);\n }\n this.isDestroyed = false;\n }\n /* eslint-disable */\n PivotButton.prototype.renderPivotButton = function (args) {\n var _this = this;\n var _a;\n var field = extend([], args.field, null, true);\n var axis = args.axis;\n var axisElement;\n var valuePos = -1;\n var showValuesButton = (this.parent.dataType === 'pivot' ? (this.parent.getModuleName() === 'pivotfieldlist' &&\n this.parent.pivotGridModule) ?\n this.parent.pivotGridModule.showValuesButton : this.parent.showValuesButton : false);\n if (((this.parent.dataSourceSettings.valueAxis === 'row' && args.axis === 'rows') ||\n (this.parent.dataSourceSettings.valueAxis === 'column' && args.axis === 'columns')) && showValuesButton && this.parent.dataSourceSettings.values.length > 1) {\n valuePos = field.length;\n if (isNullOrUndefined(PivotUtil.getFieldByName(this.parent.localeObj.getConstant('values'), field))) {\n field.push({\n name: this.parent.localeObj.getConstant('values'), caption: this.parent.localeObj.getConstant('values'),\n axis: args.axis, showRemoveIcon: true, allowDragAndDrop: true\n });\n }\n }\n this.parentElement = this.parent.getModuleName() === 'pivotview' ? this.parent.element :\n document.getElementById(this.parent.element.id + '_Wrapper');\n if (this.parent.getModuleName() === 'pivotfieldlist') {\n this.parentElement = document.getElementById(this.parent.element.id + '_Wrapper');\n if (this.parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-' + axis)) {\n var axisPrompt = this.parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-' + axis)\n .querySelector('.' + cls.AXIS_PROMPT_CLASS);\n if (field.length === 0) {\n removeClass([axisPrompt], cls.ICON_DISABLE);\n }\n else {\n addClass([axisPrompt], cls.ICON_DISABLE);\n }\n axisElement =\n this.parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-' + axis).querySelector('.' + cls.AXIS_CONTENT_CLASS);\n }\n else {\n return;\n }\n }\n else {\n this.parentElement = this.parent.element;\n axisElement = this.parentElement.querySelector('.e-group-' + axis);\n }\n if (axisElement) {\n if (this.parent.getModuleName() === 'pivotview' && field.length === 0) {\n for (var _i = 0, _b = this.parentElement.querySelectorAll('.e-group-' + axis); _i < _b.length; _i++) {\n var element = _b[_i];\n if (!element.classList.contains(cls.GROUP_CHART_VALUE) && !element.classList.contains(cls.GROUP_CHART_COLUMN)) {\n var axisPrompt = createElement('span', {\n className: cls.AXIS_PROMPT_CLASS,\n innerHTML: (this.parent.groupingBarSettings.allowDragAndDrop ? axis === 'rows' ? this.parent.localeObj.getConstant('rowAxisPrompt') :\n axis === 'columns' ? this.parent.localeObj.getConstant('columnAxisPrompt') :\n axis === 'values' ? this.parent.localeObj.getConstant('valueAxisPrompt') :\n this.parent.localeObj.getConstant('filterAxisPrompt') : '')\n });\n element.appendChild(axisPrompt);\n }\n }\n }\n else {\n for (var i = 0, cnt = field.length; i < cnt; i++) {\n for (var _c = 0, _d = (this.parent.getModuleName() === 'pivotfieldlist' ? [axisElement] : this.parentElement.querySelectorAll('.e-group-' + axis)); _c < _d.length; _c++) {\n var element = _d[_c];\n element = element;\n var isMeasureAvail = (this.parent.dataType === 'olap' && (field[i].name.toLowerCase() === '[measures]' || axis === 'values'));\n var isMeasureFieldsAvail = (this.parent.dataType === 'olap' && axis === 'values');\n if (!element.classList.contains(cls.GROUP_CHART_VALUE) && !element.classList.contains(cls.GROUP_CHART_COLUMN)) {\n var buttonWrapper = createElement('div', {\n className: cls.PIVOT_BUTTON_WRAPPER_CLASS + (i === 0 ? ' e-first-btn' : ''),\n attrs: { 'data-tag': axis + ':' + field[i].name }\n });\n var buttonElement = createElement('div', {\n id: field[i].name, className: cls.PIVOT_BUTTON_CLASS + ' ' + field[i].name.replace(/[^A-Z0-9]/ig, ''),\n attrs: {\n 'data-uid': field[i].name,\n 'tabindex': (this.parent.getModuleName() === 'pivotview' && this.parent.grid && axis === 'rows' && !element.classList.contains(cls.GROUP_CHART_ROW)) ? '-1' : '0',\n 'isvalue': (i === valuePos || isMeasureAvail && !isMeasureFieldsAvail) ? 'true' : 'false',\n 'aria-disabled': 'false', 'aria-label': field[i].caption ? field[i].caption : field[i].name,\n 'data-type': (this.parent.dataType === 'olap' ? isMeasureFieldsAvail ? 'isMeasureFieldsAvail' : isMeasureAvail ? 'isMeasureAvail' : field[i].type : field[i].type),\n 'data-caption': field[i].caption ? field[i].caption : field[i].name,\n 'data-basefield': field[i].baseField,\n 'data-baseitem': field[i].baseItem\n }\n });\n var dropIndicatorElement = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false' },\n className: cls.DROP_INDICATOR_CLASS\n });\n var dropLastIndicatorElement = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false' },\n className: cls.DROP_INDICATOR_CLASS + '-last'\n });\n var dragWrapper = this.createButtonDragIcon(field[i], buttonElement);\n var contentElement = this.createButtonText(field, i, axis, valuePos);\n buttonElement.appendChild(contentElement);\n if (!isMeasureAvail && !field[i].isNamedSet && !field[i].isCalculatedField) {\n if (['filters', 'values'].indexOf(axis) === -1 && valuePos !== i &&\n !(this.parent.dataType === 'olap' && ((this.parent.getModuleName() === 'pivotview' &&\n this.parent.enableVirtualization) || (this.parent.getModuleName() === 'pivotfieldlist' &&\n this.parent.pivotGridModule !== undefined &&\n this.parent.pivotGridModule.enableVirtualization)))) {\n this.createSortOption(buttonElement, field[i].name, field[i]);\n }\n if (axis !== 'values' && valuePos !== i) {\n this.createFilterOption(buttonElement, field[i].name, axis, field[i]);\n }\n if (axis === 'values') {\n this.getTypeStatus(field, i, buttonElement);\n }\n }\n if ((field[i].isCalculatedField || field[i].type === 'CalculatedField')) {\n var calcElement = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false', 'title': this.parent.localeObj.getConstant('editCalculatedField') },\n className: cls.ICON + ' ' + cls.CALC_EDIT\n });\n if (this.parent.allowCalculatedField && this.parent.calculatedFieldModule && field[i].showEditIcon) {\n removeClass([calcElement], cls.ICON_DISABLE);\n }\n else {\n addClass([calcElement], cls.ICON_DISABLE);\n }\n buttonElement.appendChild(calcElement);\n }\n var removeElement = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false', 'title': this.parent.localeObj.getConstant('remove') },\n className: cls.ICON + ' ' + cls.REMOVE_CLASS\n });\n if (this.parent.getModuleName() === 'pivotview') {\n if ((this.parent.groupingBarSettings.showRemoveIcon && field[i].showRemoveIcon)) {\n removeClass([removeElement], cls.ICON_DISABLE);\n }\n else {\n addClass([removeElement], cls.ICON_DISABLE);\n }\n }\n else {\n if (field[i].showRemoveIcon) {\n removeClass([removeElement], cls.ICON_DISABLE);\n }\n else {\n addClass([removeElement], cls.ICON_DISABLE);\n }\n }\n buttonElement.appendChild(removeElement);\n buttonWrapper.appendChild(dropIndicatorElement);\n buttonWrapper.appendChild(buttonElement);\n buttonWrapper.appendChild(dropLastIndicatorElement);\n element.appendChild(buttonWrapper);\n var pivotButton = new Button({ enableRtl: this.parent.enableRtl, locale: this.parent.locale });\n pivotButton.isStringTemplate = true;\n pivotButton.appendTo(buttonElement);\n this.unWireEvent(buttonWrapper, i === valuePos ? 'values' : axis, isMeasureAvail);\n this.wireEvent(buttonWrapper, i === valuePos ? 'values' : axis, isMeasureAvail);\n if ((this.parent.getModuleName() === 'pivotview' && !this.parent.isAdaptive) ||\n this.parent.getModuleName() === 'pivotfieldlist') {\n this.createDraggable(field[i], this.parent.getModuleName() === 'pivotview' ? contentElement : dragWrapper);\n buttonElement.querySelector('.' + cls.BUTTON_DRAGGABLE).ej2_instances[0].enableAutoScroll = false;\n }\n }\n }\n }\n if (axis === 'values') {\n var _loop_1 = function (element) {\n if (element.classList.contains(cls.GROUP_CHART_VALUE) && this_1.parent.chartModule) {\n var valueData = field.map(function (item) { return { text: item.caption ? item.caption : item.name, value: item.name }; });\n var parent_1 = this_1.parent;\n if (this_1.valueFiedDropDownList && element.querySelector('.' + cls.GROUP_CHART_VALUE_DROPDOWN_DIV)) {\n this_1.valueFiedDropDownList.dataSource = valueData;\n this_1.valueFiedDropDownList.value = !parent_1.chartSettings.enableMultipleAxis ?\n parent_1.chartModule.currentMeasure : valueData[0].value;\n }\n else {\n var ddlDiv = createElement('div', { className: cls.GROUP_CHART_VALUE_DROPDOWN_DIV });\n element.appendChild(ddlDiv);\n this_1.valueFiedDropDownList = new DropDownList({\n dataSource: valueData,\n enableRtl: this_1.parent.enableRtl,\n locale: this_1.parent.locale,\n value: !parent_1.chartSettings.enableMultipleAxis ?\n parent_1.chartModule.currentMeasure : valueData[0].value,\n width: 200,\n fields: { value: 'value', text: 'text' },\n cssClass: cls.GROUP_CHART_VALUE_DROPDOWN,\n change: function (args) {\n if (args.e && args.e !== null) {\n parent_1.chartSettings.value = args.value;\n }\n }\n });\n this_1.valueFiedDropDownList.isStringTemplate = true;\n this_1.valueFiedDropDownList.appendTo(ddlDiv);\n }\n }\n };\n var this_1 = this;\n for (var _e = 0, _f = this.parentElement.querySelectorAll('.e-group-' + axis); _e < _f.length; _e++) {\n var element = _f[_e];\n _loop_1(element);\n }\n }\n else if (axis === 'columns') {\n var availColindex = undefined;\n for (var _g = 0, _h = this.parentElement.querySelectorAll('.e-group-' + axis); _g < _h.length; _g++) {\n var element = _h[_g];\n if (element.classList.contains(cls.GROUP_CHART_COLUMN) && this.parent.chartModule) {\n var currentMeasure = this.parent.chartModule.currentMeasure;\n var delimiter = this.parent.chartSettings.columnDelimiter ? this.parent.chartSettings.columnDelimiter : '-';\n var columnHeader = (this.parent.chartSettings.columnHeader && this.parent.chartSettings.columnHeader !== '') ?\n this.parent.chartSettings.columnHeader.split(delimiter).join(' - ') : '';\n var engineModule = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;\n var pivotValues = engineModule.pivotValues;\n var totColIndex = this.parent.chartModule.getColumnTotalIndex(pivotValues);\n var rKeys = Object.keys(pivotValues);\n var columnData = [];\n var firstValueRow = false;\n for (var _j = 0, rKeys_1 = rKeys; _j < rKeys_1.length; _j++) {\n var rKey = rKeys_1[_j];\n if (firstValueRow) {\n break;\n }\n var rowIndex = Number(rKey);\n if (pivotValues[rowIndex][0] && pivotValues[rowIndex][0].axis === 'row' &&\n (this.parent.dataSourceSettings.rows.length === 0 ? true : pivotValues[rowIndex][0].type !== 'grand sum')) {\n var firstRowCell = pivotValues[rowIndex][0];\n var tupInfo = this.parent.dataType === 'olap' ?\n engineModule.tupRowInfo[firstRowCell.ordinal] : undefined;\n var rows = pivotValues[rowIndex];\n var cKeys = Object.keys(rows);\n for (var _k = 0, cKeys_1 = cKeys; _k < cKeys_1.length; _k++) {\n var cKey = cKeys_1[_k];\n var cellIndex = Number(cKey);\n var cell = pivotValues[rowIndex][cellIndex];\n var actualText = (this.parent.dataType === 'olap' && tupInfo && tupInfo.measureName) ?\n tupInfo.measureName : cell.actualText;\n if (!totColIndex[cell.colIndex] && cell.axis === 'value' && firstRowCell.type !== 'header' &&\n actualText !== '' && actualText === currentMeasure) {\n firstValueRow = true;\n var columnSeries = this.parent.dataType === 'olap' ? cell.columnHeaders.toString().split(/~~|::/).join(' - ')\n : cell.columnHeaders.toString().split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).join(' - ');\n columnData.push({ value: columnSeries, text: columnSeries, title: (_a = {}, _a['title'] = columnSeries, _a) });\n if (columnSeries === columnHeader) {\n availColindex = columnData.length;\n }\n }\n }\n }\n }\n if (this.columnFieldDropDownList && element.querySelector('.' + cls.GROUP_CHART_COLUMN_DROPDOWN_DIV)) {\n this.columnFieldDropDownList.dataSource = columnData;\n if (availColindex !== undefined) {\n this.columnFieldDropDownList.value = columnData[availColindex - 1].value;\n }\n else {\n this.columnFieldDropDownList.value = columnData[0].value;\n }\n }\n else {\n var ddlDiv = createElement('div', { className: cls.GROUP_CHART_COLUMN_DROPDOWN_DIV });\n element.appendChild(ddlDiv);\n this.columnFieldDropDownList = new DropDownList({\n dataSource: columnData,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n value: availColindex ? columnData[availColindex - 1].value : (columnData[0] ? columnData[0].value : ''),\n width: '200',\n fields: { value: 'value', text: 'text', htmlAttributes: 'title' },\n cssClass: cls.GROUP_CHART_COLUMN_DROPDOWN,\n change: function (args) {\n if (args.e && args.e !== null) {\n var delimiter_1 = _this.parent.chartSettings.columnDelimiter ? _this.parent.chartSettings.columnDelimiter : '-';\n _this.parent.chartSettings.columnHeader = args.value.split(' - ').join(delimiter_1);\n }\n }\n });\n this.columnFieldDropDownList.isStringTemplate = true;\n this.columnFieldDropDownList.appendTo(ddlDiv);\n }\n }\n }\n }\n }\n }\n else {\n return;\n }\n };\n PivotButton.prototype.createButtonText = function (field, i, axis, valuePos) {\n var buttonText;\n var aggregation;\n var filterMem;\n if (axis === 'filters') {\n filterMem = this.updateButtontext(field[i].name);\n }\n var engineModule;\n if (this.parent.dataType === 'olap') {\n engineModule = this.parent.olapEngineModule;\n }\n else {\n engineModule = this.parent.engineModule;\n }\n if (engineModule.fieldList[field[i].name] !== undefined) {\n aggregation = engineModule.fieldList[field[i].name].aggregateType;\n if ((aggregation !== 'DistinctCount') && (engineModule.fieldList[field[i].name].type !== 'number' || engineModule.fieldList[field[i].name].type === 'include' ||\n engineModule.fieldList[field[i].name].type === 'exclude')) {\n aggregation = 'Count';\n }\n else {\n aggregation = aggregation === undefined ? 'Sum' :\n engineModule.fieldList[field[i].name].aggregateType;\n }\n }\n var text = field[i].caption ? field[i].caption : field[i].name;\n buttonText = createElement('span', {\n attrs: {\n title: axis === 'filters' ? (this.parent.dataType === 'olap' && engineModule.fieldList[field[i].name].type === 'CalculatedField') ?\n text : (text + ' (' + filterMem + ')') : (this.parent.dataType === 'olap' ?\n text : (((!this.parent.dataSourceSettings.showAggregationOnValueField || axis !== 'values' || aggregation === 'CalculatedField') ?\n text : this.parent.localeObj.getConstant(aggregation) + ' ' + this.parent.localeObj.getConstant('of') + ' ' + text))),\n 'tabindex': '-1', 'aria-disabled': 'false', 'oncontextmenu': 'return false;',\n 'data-type': valuePos === i ? '' : aggregation\n },\n className: cls.PIVOT_BUTTON_CONTENT_CLASS + ' ' +\n (this.parent.getModuleName() === 'pivotview' ?\n this.parent.groupingBarSettings.allowDragAndDrop && field[i].allowDragAndDrop ? '' : cls.DRAG_DISABLE_CLASS : ''),\n innerHTML: axis === 'filters' ? (this.parent.dataType === 'olap' && engineModule.fieldList[field[i].name].type === 'CalculatedField') ?\n text : (text + ' (' + filterMem + ')') : (this.parent.dataType === 'olap' ?\n text : (!this.parent.dataSourceSettings.showAggregationOnValueField || axis !== 'values' || aggregation === 'CalculatedField' ?\n text : this.parent.localeObj.getConstant(aggregation) + ' ' + this.parent.localeObj.getConstant('of') + ' ' + text))\n });\n return buttonText;\n };\n /* eslint-enable */\n PivotButton.prototype.getTypeStatus = function (field, i, buttonElement) {\n var engineModule;\n if (this.parent.dataType === 'olap') {\n engineModule = this.parent.olapEngineModule;\n }\n else {\n engineModule = this.parent.engineModule;\n }\n var fieldListItem = engineModule.fieldList[field[i].name];\n if (fieldListItem.aggregateType !== 'CalculatedField' && this.validateDropdown(fieldListItem.type)) {\n this.createSummaryType(buttonElement, field[i].name, field[i]);\n }\n };\n PivotButton.prototype.validateDropdown = function (type) {\n var aggregateType = this.parent.aggregateTypes;\n if (type !== 'number') {\n return (aggregateType.indexOf('Count') > -1 || aggregateType.indexOf('DistinctCount') > -1);\n }\n else {\n for (var i = 0; i < aggregateType.length; i++) {\n if (this.parent.getAllSummaryType().indexOf(aggregateType[i]) > -1) {\n return true;\n }\n }\n return false;\n }\n };\n PivotButton.prototype.createSummaryType = function (pivotButton, fieldName, field) {\n var spanElement = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false', 'title': this.parent.localeObj.getConstant('format') },\n className: cls.ICON + ' ' + cls.AXISFIELD_ICON_CLASS\n });\n if (this.parent.getModuleName() === 'pivotview') {\n if (this.parent.groupingBarSettings.showValueTypeIcon && field.showValueTypeIcon) {\n removeClass([spanElement], cls.ICON_DISABLE);\n }\n else {\n addClass([spanElement], cls.ICON_DISABLE);\n }\n }\n else {\n if (field.showValueTypeIcon) {\n removeClass([spanElement], cls.ICON_DISABLE);\n }\n else {\n addClass([spanElement], cls.ICON_DISABLE);\n }\n }\n pivotButton.appendChild(spanElement);\n return spanElement;\n };\n PivotButton.prototype.createMenuOption = function (args) {\n this.menuOption.render(args, this.parentElement);\n this.parent.pivotButtonModule = this;\n };\n PivotButton.prototype.openCalculatedFieldDialog = function (args) {\n var fieldName = args.target.parentElement.id;\n if (this.parent.getModuleName() === 'pivotview') {\n if (this.parent.isAdaptive && (this.parent.showFieldList &&\n this.parent.pivotFieldListModule &&\n !this.parent.pivotFieldListModule.isDestroyed)) {\n this.parent.pivotFieldListModule.element\n .querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS).click();\n this.parent.pivotFieldListModule.dialogRenderer.adaptiveElement.select(4);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.parent.pivotFieldListModule.calculatedFieldModule\n .updateAdaptiveCalculatedField(true, fieldName);\n }\n else {\n if (!this.parent.isAdaptive) {\n this.parent.calculatedFieldModule.buttonCall = true;\n }\n this.parent.notify(events.initCalculatedField, { edit: true, fieldName: fieldName });\n }\n }\n else if (this.parent.getModuleName() === 'pivotfieldlist') {\n if (this.parent.isAdaptive) {\n this.parent.dialogRenderer.adaptiveElement.select(4);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.parent.calculatedFieldModule\n .updateAdaptiveCalculatedField(true, fieldName);\n this.parent.calculatedFieldModule.buttonCall = true;\n }\n else {\n if (this.parent.dialogRenderer.fieldListDialog) {\n this.parent.dialogRenderer.fieldListDialog.hide();\n addClass([this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS)], cls.ICON_HIDDEN);\n }\n this.parent.notify(events.initCalculatedField, { edit: true, fieldName: fieldName });\n if (this.parent.calculatedFieldModule) {\n this.parent.calculatedFieldModule.buttonCall = true;\n }\n }\n }\n };\n PivotButton.prototype.createDraggable = function (field, target) {\n this.draggable = new Draggable(target, {\n clone: true,\n enableTailMode: true,\n enableAutoScroll: true,\n helper: this.createDragClone.bind(this),\n dragStart: this.onDragStart.bind(this),\n drag: this.onDragging.bind(this),\n dragStop: this.onDragStop.bind(this),\n abort: (this.parent.getModuleName() === 'pivotview' ?\n !(this.parent.groupingBarSettings.allowDragAndDrop && field.allowDragAndDrop) ?\n '.' + cls.PIVOT_BUTTON_CLASS : '' : !field.allowDragAndDrop ? '.' + cls.PIVOT_BUTTON_CLASS : '')\n });\n };\n PivotButton.prototype.createButtonDragIcon = function (field, pivotButton) {\n var dragWrapper = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false' }\n });\n var dragElement = createElement('span', {\n attrs: {\n 'tabindex': '-1', 'aria-disabled': 'false', 'title': this.parent.localeObj.getConstant('drag')\n },\n className: cls.ICON + ' ' + cls.DRAG_CLASS + ' ' + (field.allowDragAndDrop ? '' : cls.DRAG_DISABLE_CLASS)\n });\n dragWrapper.appendChild(dragElement);\n pivotButton.appendChild(dragWrapper);\n return dragWrapper;\n };\n PivotButton.prototype.createSortOption = function (pivotButton, fieldName, field) {\n var sortCLass;\n var spanElement;\n var engineModule;\n if (this.parent.dataType === 'olap') {\n engineModule = this.parent.olapEngineModule;\n }\n else {\n engineModule = this.parent.engineModule;\n }\n if (!this.parent.allowDeferLayoutUpdate) {\n sortCLass = engineModule.fieldList[fieldName].sort === 'Descending' ? cls.SORT_DESCEND_CLASS : '';\n }\n else {\n sortCLass = '';\n for (var i = 0; i < this.parent.dataSourceSettings.sortSettings.length; i++) {\n if (this.parent.dataSourceSettings.sortSettings[i].name === fieldName) {\n sortCLass = this.parent.dataSourceSettings.sortSettings[i].order === 'Descending' ? cls.SORT_DESCEND_CLASS : '';\n }\n }\n }\n if (engineModule.fieldList[fieldName].sort === 'None') {\n spanElement = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false', 'title': this.parent.localeObj.getConstant('sort') },\n className: cls.ICON\n });\n }\n else {\n spanElement = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false', 'title': this.parent.localeObj.getConstant('sort') },\n className: cls.ICON + ' ' + cls.SORT_CLASS + ' ' + sortCLass\n });\n }\n if (this.parent.dataSourceSettings.enableSorting) {\n if (this.parent.getModuleName() === 'pivotview') {\n if (field.showSortIcon && this.parent.groupingBarSettings.showSortIcon) {\n removeClass([spanElement], cls.ICON_DISABLE);\n }\n else {\n addClass([spanElement], cls.ICON_DISABLE);\n }\n }\n else {\n if (field.showSortIcon) {\n removeClass([spanElement], cls.ICON_DISABLE);\n }\n else {\n addClass([spanElement], cls.ICON_DISABLE);\n }\n }\n }\n else {\n addClass([spanElement], cls.ICON_DISABLE);\n }\n pivotButton.appendChild(spanElement);\n return spanElement;\n };\n PivotButton.prototype.createFilterOption = function (pivotButton, fieldName, axis, field) {\n var filterCLass;\n var engineModule;\n if (this.parent.dataType === 'olap') {\n engineModule = this.parent.olapEngineModule;\n }\n else {\n engineModule = this.parent.engineModule;\n }\n if (!this.parent.allowDeferLayoutUpdate) {\n engineModule.fieldList[fieldName].filter = engineModule.fieldList[fieldName].filter === null ?\n [] : engineModule.fieldList[fieldName].filter;\n filterCLass = engineModule.fieldList[fieldName].filter.length === 0 ?\n !engineModule.fieldList[fieldName].isExcelFilter ? cls.FILTER_CLASS : cls.FILTERED_CLASS : cls.FILTERED_CLASS;\n }\n else {\n filterCLass = cls.FILTER_CLASS;\n for (var i = 0; i < this.parent.dataSourceSettings.filterSettings.length; i++) {\n if (this.parent.dataSourceSettings.filterSettings[i].name === fieldName) {\n filterCLass = cls.FILTERED_CLASS;\n }\n }\n }\n var spanElement = createElement('span', {\n attrs: {\n 'tabindex': '-1', 'aria-disabled': 'false', 'title': this.parent.localeObj.getConstant('filter')\n },\n className: cls.FILTER_COMMON_CLASS + ' ' + cls.ICON + ' ' + filterCLass\n });\n if ((((this.parent.dataSourceSettings.allowLabelFilter || this.parent.dataSourceSettings.allowValueFilter) &&\n axis !== 'filters') || this.parent.dataSourceSettings.allowMemberFilter)) {\n removeClass([spanElement], cls.ICON_DISABLE);\n }\n else {\n addClass([spanElement], cls.ICON_DISABLE);\n }\n if (this.parent.getModuleName() === 'pivotview') {\n if ((((this.parent.dataSourceSettings.allowLabelFilter || this.parent.dataSourceSettings.allowValueFilter) &&\n axis !== 'filters') || this.parent.dataSourceSettings.allowMemberFilter) &&\n this.parent.groupingBarSettings.showFilterIcon && field.showFilterIcon) {\n removeClass([spanElement], cls.ICON_DISABLE);\n }\n else {\n addClass([spanElement], cls.ICON_DISABLE);\n }\n }\n else {\n if (field.showFilterIcon && (((this.parent.dataSourceSettings.allowLabelFilter ||\n this.parent.dataSourceSettings.allowValueFilter) && axis !== 'filters') ||\n this.parent.dataSourceSettings.allowMemberFilter)) {\n removeClass([spanElement], cls.ICON_DISABLE);\n }\n else {\n addClass([spanElement], cls.ICON_DISABLE);\n }\n }\n pivotButton.appendChild(spanElement);\n return spanElement;\n };\n // To update button text\n PivotButton.prototype.updateButtontext = function (fieldName) {\n var engineModule;\n if (this.parent.dataType === 'olap') {\n engineModule = this.parent.olapEngineModule;\n }\n else {\n engineModule = this.parent.engineModule;\n }\n var filterCount = engineModule.fieldList[fieldName].filter.length;\n var filterType = engineModule.fieldList[fieldName].filterType;\n var memLen = engineModule.fieldList[fieldName].dateMember.length;\n var filterMem;\n var firstNode = engineModule.fieldList[fieldName].filter[0];\n if (this.parent.dataType === 'olap') {\n filterMem = this.updateOlapButtonText(engineModule, fieldName, firstNode, filterCount);\n }\n else if (filterType === 'include') {\n if (filterCount === 1) {\n filterMem = firstNode;\n }\n else if (filterCount > 1) {\n if (filterCount === memLen) {\n filterMem = this.parent.localeObj.getConstant('all');\n }\n else {\n filterMem = this.parent.localeObj.getConstant('multipleItems');\n }\n }\n }\n else if (filterType === 'exclude') {\n if (filterCount === 1) {\n if (memLen === 2) {\n if (firstNode !== engineModule.fieldList[fieldName].dateMember[0].actualText) {\n filterMem = firstNode;\n }\n else {\n filterMem = engineModule.fieldList[fieldName].dateMember[0].actualText;\n }\n }\n else {\n filterMem = this.parent.localeObj.getConstant('multipleItems');\n }\n }\n else if (filterCount > 1) {\n var j = void 0;\n var allNodes = Object.keys(engineModule.fieldList[fieldName].members);\n var filteredItems = engineModule.fieldList[fieldName].filter;\n if (filterCount === (allNodes.length - 1)) {\n /* eslint-disable */\n loop: for (j = 0; j < allNodes.length; j++) {\n var test = allNodes[j];\n var x = filteredItems.indexOf(test);\n if (x === -1) {\n filterMem = allNodes[j];\n break loop;\n /* eslint-enable */\n }\n }\n }\n else {\n filterMem = this.parent.localeObj.getConstant('multipleItems');\n }\n }\n }\n else {\n filterMem = this.parent.localeObj.getConstant('all');\n }\n return filterMem;\n };\n PivotButton.prototype.updateOlapButtonText = function (engineModule, fieldName, firstNode, filterCount) {\n var filterMem;\n var filterItems = engineModule.fieldList[fieldName].actualFilter;\n if (filterItems.length > 0) {\n var cMembers = engineModule.fieldList[fieldName].members;\n var actualFilterItems = [];\n if (engineModule.fieldList[fieldName].filterMembers.length > 0) {\n var dummyfilterItems = {};\n for (var _i = 0, filterItems_1 = filterItems; _i < filterItems_1.length; _i++) {\n var item = filterItems_1[_i];\n dummyfilterItems[item] = item;\n if (cMembers[item]) {\n dummyfilterItems = this.parent.pivotCommon.eventBase.getParentNode(fieldName, item, dummyfilterItems);\n }\n }\n var updatedFilterItems = dummyfilterItems ? Object.keys(dummyfilterItems) : [];\n for (var _a = 0, updatedFilterItems_1 = updatedFilterItems; _a < updatedFilterItems_1.length; _a++) {\n var item = updatedFilterItems_1[_a];\n if (cMembers[item].isSelected) {\n if (!(cMembers[item].parent && cMembers[cMembers[item].parent].isSelected)) {\n actualFilterItems.push(item);\n }\n }\n }\n firstNode = actualFilterItems.length === 1 ? cMembers[actualFilterItems[0]].caption : firstNode;\n }\n filterCount = actualFilterItems.length === 0 ? filterCount : actualFilterItems.length;\n }\n if (filterCount === 0) {\n filterMem = (engineModule.fieldList[fieldName].allMember ?\n engineModule.fieldList[fieldName].allMember : this.parent.localeObj.getConstant('all'));\n }\n else if (filterCount === 1) {\n filterMem = firstNode;\n }\n else if (filterCount > 1) {\n filterMem = this.parent.localeObj.getConstant('multipleItems');\n }\n return filterMem;\n };\n PivotButton.prototype.createDragClone = function (args) {\n var element = closest(args.element, '.' + cls.PIVOT_BUTTON_CLASS);\n var cloneElement = createElement('div', {\n id: this.parent.element.id + '_DragClone',\n className: cls.DRAG_CLONE_CLASS\n });\n var contentElement = createElement('span', {\n className: cls.TEXT_CONTENT_CLASS,\n innerHTML: element.textContent\n });\n cloneElement.appendChild(contentElement);\n document.body.appendChild(cloneElement);\n return cloneElement;\n };\n PivotButton.prototype.onDragStart = function (e) {\n var _this = this;\n var element = closest(e.element, '.' + cls.PIVOT_BUTTON_CLASS);\n var dragItem = document.getElementById(this.parent.element.id + '_DragClone');\n var fieldInfo = PivotUtil.getFieldInfo(element.getAttribute('data-uid'), this.parent);\n var dragEventArgs = {\n fieldName: fieldInfo.fieldName,\n fieldItem: fieldInfo.fieldItem,\n axis: fieldInfo.axis,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings),\n cancel: false\n };\n var control = this.parent.getModuleName() === 'pivotfieldlist' &&\n this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n control.trigger(events.fieldDragStart, dragEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.parent.isDragging = true;\n var engineModule = void 0;\n if (_this.parent.dataType === 'olap') {\n engineModule = _this.parent.olapEngineModule;\n }\n else {\n engineModule = _this.parent.engineModule;\n }\n var data = engineModule.fieldList[element.getAttribute('data-uid')];\n var axis = [cls.ROW_AXIS_CLASS, cls.COLUMN_AXIS_CLASS, cls.FILTER_AXIS_CLASS];\n addClass([element], cls.SELECTED_NODE_CLASS);\n if (dragItem && (_this.parent.getModuleName() === 'pivotfieldlist' &&\n _this.parent.renderMode) === 'Popup') {\n var fieldListPopup = _this.parent;\n dragItem.style.zIndex = (fieldListPopup.dialogRenderer.fieldListDialog.zIndex + 1).toString();\n }\n if (data && data.aggregateType === 'CalculatedField') {\n for (var _i = 0, axis_1 = axis; _i < axis_1.length; _i++) {\n var axisContent = axis_1[_i];\n addClass([_this.parentElement.querySelector('.' + axisContent)], cls.NO_DRAG_CLASS);\n }\n }\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n }\n else {\n _this.parent.isDragging = false;\n _this.draggable.intDestroy(e.event);\n detach(dragItem);\n }\n });\n };\n PivotButton.prototype.onDragging = function (e) {\n this.draggable.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n };\n PivotButton.prototype.onDragStop = function (args) {\n this.parent.isDragging = false;\n if (args.target.classList && (args.target.classList.contains(cls.GROUP_CHART_VALUE) || args.target.classList.contains(cls.GROUP_CHART_VALUE_DROPDOWN))) { /* eslint-disable-line */\n args.target = this.parent.element.querySelector('.' + cls.GROUP_CHART_ROW);\n }\n if (args.target.classList && args.element && (args.target.classList.contains(cls.GROUP_CHART_COLUMN) || args.target.classList.contains(cls.GROUP_CHART_COLUMN_DROPDOWN))) { /* eslint-disable-line */\n args.cancel = true;\n }\n var element = closest(args.element, '.' + cls.PIVOT_BUTTON_CLASS);\n removeClass([].slice.call(this.parentElement.querySelectorAll('.' + cls.PIVOT_BUTTON_CLASS)), cls.SELECTED_NODE_CLASS);\n removeClass([].slice.call(this.parentElement.querySelectorAll('.' + cls.DROP_INDICATOR_CLASS)), cls.INDICATOR_HOVER_CLASS);\n var axis = [cls.ROW_AXIS_CLASS, cls.COLUMN_AXIS_CLASS, cls.FILTER_AXIS_CLASS];\n for (var _i = 0, axis_2 = axis; _i < axis_2.length; _i++) {\n var axisContent = axis_2[_i];\n removeClass([this.parentElement.querySelector('.' + axisContent)], cls.NO_DRAG_CLASS);\n }\n if (this.parent.pivotCommon.filterDialog.dialogPopUp) {\n this.parent.pivotCommon.filterDialog.dialogPopUp.close();\n }\n if (document.getElementById(this.parent.element.id + '_DragClone')) {\n remove(document.getElementById(this.parent.element.id + '_DragClone'));\n }\n document.body.style.cursor = 'auto';\n if (!this.isButtonDropped(args.target, element) || args.cancel) {\n return;\n }\n this.parent.pivotCommon.dataSourceUpdate.control = this.parent.getModuleName() === 'pivotview' ? this.parent :\n (this.parent.pivotGridModule ? this.parent.pivotGridModule : this.parent);\n if (this.parent.pivotCommon.nodeStateModified.onStateModified(args, element.id)) {\n this.updateDataSource();\n /* eslint-disable */\n var thisObj = this;\n /* eslint-enable */\n thisObj.parent.axisFieldModule.render();\n }\n };\n PivotButton.prototype.isButtonDropped = function (dropTarget, target) {\n var axisPanel = closest(target, '.' + cls.DROPPABLE_CLASS);\n var droppableElement = closest(dropTarget, '.' + cls.DROPPABLE_CLASS);\n var isDropped = true;\n if (axisPanel === droppableElement) {\n var pivotButtons = [].slice.call(axisPanel.querySelectorAll('.' + cls.PIVOT_BUTTON_CLASS));\n var droppableTarget = closest(dropTarget, '.' + cls.PIVOT_BUTTON_WRAPPER_CLASS);\n var sourcePosition = void 0;\n var droppedPosition = -1;\n for (var i = 0, n = pivotButtons.length; i < n; i++) {\n if (pivotButtons[i].id === target.id) {\n sourcePosition = i;\n }\n if (droppableTarget) {\n var droppableButton = droppableTarget.querySelector('.' + cls.PIVOT_BUTTON_CLASS);\n if (pivotButtons[i].id === droppableButton.id) {\n droppedPosition = i;\n }\n }\n }\n if (sourcePosition === droppedPosition || (sourcePosition === (pivotButtons.length - 1) && droppedPosition === -1)) {\n removeClass([].slice.call(this.parentElement.querySelectorAll('.' + cls.DROP_INDICATOR_CLASS)), cls.INDICATOR_HOVER_CLASS);\n isDropped = false;\n }\n }\n return isDropped;\n };\n PivotButton.prototype.updateSorting = function (args) {\n var buttonElement = closest(args.target, '.' + cls.PIVOT_BUTTON_CLASS);\n var fieldInfo = PivotUtil.getFieldInfo((buttonElement ? buttonElement.id : ''), this.parent);\n if (!(args.target.classList.contains(cls.FILTER_COMMON_CLASS)) &&\n !(args.target.classList.contains(cls.REMOVE_CLASS)) &&\n !(args.target.classList.contains(cls.DRAG_CLASS)) &&\n (buttonElement && fieldInfo.fieldItem && (fieldInfo.fieldItem.showSortIcon ||\n isNullOrUndefined(fieldInfo.fieldItem.showSortIcon)))) {\n if ((this.parent instanceof PivotFieldList || this.parent.groupingBarSettings.showSortIcon) &&\n this.parent.dataSourceSettings.enableSorting &&\n !(this.parent.dataType === 'olap' && ((this.parent.getModuleName() === 'pivotfieldlist' &&\n this.parent.pivotGridModule !== undefined &&\n this.parent.pivotGridModule.enableVirtualization) ||\n (this.parent.getModuleName() === 'pivotview' && this.parent.enableVirtualization)))) {\n if (((this.parent.getModuleName() === 'pivotview' && this.parent.enableValueSorting) ||\n (this.parent.getModuleName() === 'pivotfieldlist' && this.parent.pivotGridModule !== undefined &&\n this.parent.pivotGridModule.enableValueSorting))) {\n if (this.parent.enableValueSorting || this.parent.pivotGridModule.enableValueSorting) { /* eslint-disable-line */\n if (args.target.classList.contains('e-pivot-button')) {\n if (args.target.parentElement.getAttribute('data-tag').split(':')[0] === 'rows') {\n this.parent.setProperties({ dataSourceSettings: { valueSortSettings: { headerText: '' } } }, true);\n }\n }\n else {\n if (args.target.parentElement.parentElement.getAttribute('data-tag').split(':')[0] === 'rows') {\n this.parent.setProperties({ dataSourceSettings: { valueSortSettings: { headerText: '' } } }, true);\n }\n }\n }\n }\n this.parent.pivotCommon.eventBase.updateSorting(args);\n if (!this.parent.allowDeferLayoutUpdate || this.parent.getModuleName() !== 'pivotfieldlist') {\n this.updateDataSource(true);\n }\n /* eslint-disable */\n var thisObj = this;\n /* eslint-enable */\n if (thisObj.parent instanceof PivotFieldList) {\n thisObj.axisField.render();\n }\n }\n }\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotButton.prototype.updateDataSource = function (isRefreshGrid) {\n if (!this.parent.allowDeferLayoutUpdate || this.parent.getModuleName() === 'pivotview') {\n this.parent.updateDataSource(isRefreshGrid);\n }\n else {\n if (this.parent.getModuleName() === 'pivotfieldlist' && this.parent.isPopupView && this.parent.pivotGridModule) {\n if (this.parent.dataType === 'olap') {\n this.parent.pivotGridModule.olapEngineModule = this.parent.olapEngineModule;\n }\n else {\n this.parent.pivotGridModule.engineModule = this.parent.engineModule;\n }\n /* eslint-disable */\n this.parent.pivotGridModule.notify(events.uiUpdate, this);\n this.parent.\n pivotGridModule.setProperties({ dataSourceSettings: this.parent.dataSourceSettings.properties }, true);\n /* eslint-enable */\n }\n else {\n this.parent.triggerPopulateEvent();\n }\n }\n };\n PivotButton.prototype.updateFiltering = function (args) {\n /* eslint-disable */\n var pivotObj = this.parent.pivotGridModule ? this.parent.pivotGridModule : this.parent;\n if (pivotObj.getModuleName() === 'pivotfieldlist') {\n showSpinner(pivotObj.fieldListSpinnerElement);\n }\n else {\n pivotObj.showWaitingPopup();\n }\n pivotObj.mouseEventArgs = args;\n pivotObj.filterTargetID = this.parent.pivotCommon.moduleName !== 'pivotfieldlist' ?\n this.parent.element : document.getElementById(this.parent.pivotCommon.parentID + '_Wrapper');\n var fieldName = args.target.parentElement.id;\n if (pivotObj && pivotObj.enableVirtualization && isBlazor() && pivotObj.dataType === 'pivot') {\n var $this_1 = this;\n pivotObj.interopAdaptor.invokeMethodAsync(\"PivotInteropMethod\", 'fetchFieldMembers', fieldName).then(function (data) {\n var parsedData = JSON.parse(data.dateMembers);\n var dateMembers = [];\n var formattedMembers = {};\n var members = {};\n for (var i = 0; i < parsedData.length; i++) {\n dateMembers.push({ formattedText: parsedData[i].FormattedText, actualText: parsedData[i].ActualText });\n formattedMembers[parsedData[i].FormattedText] = {};\n members[parsedData[i].ActualText] = {};\n }\n $this_1.parent.engineModule.fieldList[fieldName].dateMember = dateMembers;\n $this_1.parent.engineModule.fieldList[fieldName].formattedMembers = formattedMembers;\n $this_1.parent.engineModule.fieldList[fieldName].members = members;\n $this_1.updateFilterEvents();\n });\n }\n else if (pivotObj.dataSourceSettings.mode === 'Server') {\n if (this.parent.engineModule.fieldList[fieldName].members && Object.keys(this.parent.engineModule.fieldList[fieldName].members).length > 0) {\n this.updateFilterEvents();\n }\n else {\n pivotObj.getEngine('fetchFieldMembers', null, null, null, null, null, fieldName);\n }\n }\n else {\n this.updateFilterEvents();\n }\n /* eslint-enable */\n };\n /* eslint-disable-next-line */\n /** @hidden */\n PivotButton.prototype.updateFilterEvents = function () {\n /* eslint-disable */\n var pivotObj = this.parent.pivotGridModule ? this.parent.pivotGridModule : this.parent;\n this.parent.pivotCommon.eventBase.updateFiltering(pivotObj.mouseEventArgs);\n var target = pivotObj.mouseEventArgs.target;\n this.fieldName = target.parentElement.id;\n if (this.parent.pivotCommon.filterDialog.dialogPopUp) {\n this.dialogPopUp = this.parent.pivotCommon.filterDialog.dialogPopUp;\n this.parent.pivotCommon.filterDialog.dialogPopUp.close = this.removeFilterDialog.bind(this);\n // this.memberTreeView = this.parent.pivotCommon.filterDialog.memberTreeView;\n // this.parent.pivotCommon.filterDialog.memberTreeView.nodeChecked = this.nodeStateModified.bind(this);\n // this.parent.pivotCommon.filterDialog.allMemberSelect.nodeChecked = this.nodeStateModified.bind(this);\n this.bindDialogEvents();\n }\n if (pivotObj.getModuleName() === 'pivotfieldlist') {\n hideSpinner(pivotObj.fieldListSpinnerElement);\n }\n else {\n pivotObj.hideWaitingPopup();\n }\n };\n PivotButton.prototype.bindDialogEvents = function () {\n if (this.parent.pivotCommon.filterDialog.allowExcelLikeFilter && this.parent.pivotCommon.filterDialog.tabObj) {\n this.index = this.parent.pivotCommon.filterDialog.tabObj.selectedItem;\n this.updateDialogButtonEvents();\n this.dialogPopUp.buttons = this.buttonModel();\n this.dialogPopUp.dataBind();\n this.parent.pivotCommon.filterDialog.tabObj.selected = this.tabSelect.bind(this);\n }\n else if (this.parent.dataSourceSettings.allowMemberFilter) {\n this.index = 0;\n this.updateDialogButtonEvents();\n }\n };\n PivotButton.prototype.buttonModel = function () {\n return [\n {\n buttonModel: {\n cssClass: 'e-clear-filter-button' + (this.parent.pivotCommon.filterDialog.allowExcelLikeFilter ? '' : ' ' + cls.ICON_DISABLE),\n iconCss: 'e-icons e-clear-filter-icon', enableRtl: this.parent.enableRtl,\n content: this.parent.localeObj.getConstant('clearFilter'), disabled: (this.parent.pivotCommon.filterDialog.filterObject ? false : true)\n },\n click: this.ClearFilter.bind(this)\n },\n {\n buttonModel: {\n cssClass: cls.OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true\n },\n click: (this.index === 0 ? this.updateFilterState.bind(this, this.fieldName) : this.updateCustomFilter.bind(this))\n },\n {\n click: this.parent.pivotCommon.filterDialog.closeFilterDialog.bind(this),\n buttonModel: { cssClass: cls.CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }\n }\n ];\n };\n PivotButton.prototype.tabSelect = function (e) {\n this.index = e.selectedIndex;\n this.updateDialogButtonEvents();\n removeClass([].slice.call(this.dialogPopUp.element.querySelectorAll('.e-selected-tab')), 'e-selected-tab');\n if (e.selectedIndex > 0) {\n addClass([this.dialogPopUp.element.querySelector('.e-filter-div-content' + '.' + (e.selectedIndex === 1 && this.parent.dataSourceSettings.allowLabelFilter ? 'e-label-filter' : 'e-value-filter'))], 'e-selected-tab');\n }\n if (e.selectedIndex === 0) {\n this.parent.pivotCommon.filterDialog.updateCheckedState();\n }\n else {\n this.dialogPopUp.buttons[0].buttonModel.disabled = false;\n this.dialogPopUp.element.querySelector('.' + cls.OK_BUTTON_CLASS).removeAttribute('disabled');\n }\n };\n PivotButton.prototype.updateDialogButtonEvents = function () {\n this.dialogPopUp.buttons = this.buttonModel();\n this.dialogPopUp.dataBind();\n };\n PivotButton.prototype.updateCustomFilter = function (args) {\n var _this = this;\n var dialogElement = this.dialogPopUp.element.querySelector('.e-selected-tab');\n var fieldName = dialogElement.getAttribute('data-fieldname');\n var levelName = dialogElement.getAttribute('data-selectedField');\n var filterType = dialogElement.getAttribute('data-type');\n var measure = dialogElement.getAttribute('data-measure');\n var operator = dialogElement.getAttribute('data-operator');\n var operand1 = dialogElement.getAttribute('data-value1');\n var operand2 = dialogElement.getAttribute('data-value2');\n var type = ((filterType === 'value') ? 'Value' : (filterType === 'date') ? 'Date' :\n (filterType === 'number') ? 'Number' : 'Label');\n var filterItem = {\n name: fieldName,\n type: type,\n measure: measure,\n condition: operator,\n value1: filterType === 'date' && !isBlazor() ? new Date(operand1) : operand1,\n value2: filterType === 'date' && !isBlazor() ? new Date(operand2) : operand2\n };\n var filterObject;\n if (this.parent.dataType === 'olap') {\n filterItem.selectedField = levelName;\n this.removeDataSourceSettings(fieldName, levelName, type);\n var filterItems = this.parent.dataSourceSettings.filterSettings;\n for (var _i = 0, filterItems_2 = filterItems; _i < filterItems_2.length; _i++) {\n var item = filterItems_2[_i];\n if (item.name === fieldName && item.selectedField === levelName) {\n filterObject = item;\n }\n }\n }\n else {\n filterObject = PivotUtil.getFilterItemByName(fieldName, this.parent.dataSourceSettings.filterSettings);\n }\n if ((isNOU(operand1) || operand1 === '') ||\n (['Between', 'NotBetween'].indexOf(operator) > -1 && (isNOU(operand2) || operand2 === ''))) {\n var inputElementString = (type.toLowerCase() + ((isNOU(operand1) || operand1 === '') ? '_input_option_1' : '_input_option_2'));\n var focusElement = select('#' + this.parent.element.id + '_' + inputElementString, dialogElement);\n addClass([focusElement], cls.EMPTY_FIELD);\n focusElement.focus();\n return;\n }\n var filterEventArgs = {\n cancel: false,\n filterSettings: filterItem,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings)\n };\n var control = this.parent.getModuleName() === 'pivotfieldlist' &&\n this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n control.trigger(events.memberFiltering, filterEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n filterItem = observedArgs.filterSettings;\n if (filterObject) {\n // this.removeDataSourceSettings(fieldName);\n filterObject = filterObject.properties ?\n filterObject.properties : filterObject;\n filterObject.type = filterItem.type;\n filterObject.measure = filterItem.measure;\n filterObject.condition = filterItem.condition;\n filterObject.value1 = filterItem.value1;\n filterObject.value2 = filterItem.value2;\n if (_this.parent.dataType === 'olap') {\n filterObject.selectedField = filterItem.selectedField;\n }\n }\n else {\n _this.parent.dataSourceSettings.filterSettings.push(filterItem);\n }\n }\n if (type !== 'Value') {\n _this.parent.lastFilterInfo = PivotUtil.getFilterItemByName(fieldName, _this.parent.dataSourceSettings.filterSettings);\n }\n _this.dialogPopUp.close();\n if (!observedArgs.cancel) {\n _this.refreshPivotButtonState(fieldName, true);\n _this.updateDataSource(true);\n }\n });\n };\n PivotButton.prototype.removeFilterDialog = function () {\n if (this.dialogPopUp && !this.dialogPopUp.isDestroyed) {\n this.dialogPopUp.destroy();\n setTimeout(this.setFocus.bind(this));\n }\n if (document.getElementById(this.parentElement.id + '_EditorTreeView')) {\n remove(document.getElementById(this.parentElement.id + '_EditorTreeView'));\n }\n };\n PivotButton.prototype.setFocus = function () {\n if (this.parentElement) {\n var pivotButtons = [].slice.call(this.parentElement.querySelectorAll('.e-pivot-button'));\n for (var _i = 0, pivotButtons_1 = pivotButtons; _i < pivotButtons_1.length; _i++) {\n var item = pivotButtons_1[_i];\n if (item.getAttribute('data-uid') === this.fieldName) {\n item.focus();\n break;\n }\n }\n }\n };\n PivotButton.prototype.ClearFilter = function (e) {\n var dialogElement = this.dialogPopUp.element;\n var fieldName = dialogElement.getAttribute('data-fieldname');\n var tabElement = dialogElement.querySelector('.e-selected-tab');\n this.dialogPopUp.close();\n if (this.parent.dataType === 'olap' && tabElement) {\n var levelName = tabElement.getAttribute('data-selectedField');\n this.removeDataSourceSettings(fieldName, levelName);\n }\n else {\n this.removeDataSourceSettings(fieldName);\n }\n var filterObject = PivotUtil.getFilterItemByName(fieldName, this.parent.dataSourceSettings.filterSettings);\n this.refreshPivotButtonState(fieldName, filterObject ? true : false);\n this.updateDataSource(true);\n };\n PivotButton.prototype.removeButton = function (args) {\n var _this = this;\n var target = args.target;\n var fieldName = target.parentElement.id;\n var fieldInfo = PivotUtil.getFieldInfo(fieldName, this.parent);\n var removeFieldArgs = {\n cancel: false, fieldName: fieldName,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings),\n fieldItem: fieldInfo.fieldItem, axis: fieldInfo.axis\n };\n var control = this.parent.getModuleName() === 'pivotfieldlist' &&\n this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n control.trigger(events.fieldRemove, removeFieldArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (target.parentElement.getAttribute('isvalue') === 'true') {\n _this.parent.setProperties({ dataSourceSettings: { values: [] } }, true);\n if (_this.parent.dataType === 'olap') {\n _this.parent.pivotCommon.dataSourceUpdate.removeFieldFromReport('[measures]');\n }\n }\n else {\n _this.parent.pivotCommon.dataSourceUpdate.removeFieldFromReport(fieldName);\n if (_this.parent.dataType === 'olap' && _this.parent.dataSourceSettings.values.length === 0) {\n _this.parent.pivotCommon.dataSourceUpdate.removeFieldFromReport('[measures]');\n }\n }\n if (_this.parent.getModuleName() === 'pivotfieldlist') {\n _this.parent.axisFieldModule.render();\n }\n _this.updateDataSource();\n }\n });\n };\n /** @hidden */\n PivotButton.prototype.nodeStateModified = function (args) {\n var target = closest(args.node, 'li');\n var fieldName = target.getAttribute('data-fieldname');\n if (target.getAttribute('data-memberId') === 'all') {\n this.memberTreeView.nodeChecked = null;\n if (args.action === 'check') {\n this.memberTreeView.checkAll();\n }\n else {\n this.memberTreeView.uncheckAll();\n }\n if (this.parent.dataType === 'olap' && this.parent.olapEngineModule &&\n !this.parent.olapEngineModule.fieldList[fieldName].isHierarchy) {\n this.updateNodeStates(this.memberTreeView.getAllCheckedNodes(), fieldName, args.action);\n }\n this.checkedStateAll(args.action);\n this.memberTreeView.nodeChecked = this.nodeStateModified.bind(this);\n }\n else {\n if (this.parent.dataType === 'olap' && this.parent.olapEngineModule &&\n !this.parent.olapEngineModule.fieldList[fieldName].isHierarchy) {\n // let st1: number = new Date().getTime();\n var checkedNodes = this.memberTreeView.getAllCheckedNodes();\n // let st2: number = (new Date().getTime() - st1) / 1000;\n // console.log('getAllCheckedNodes:' + st2);\n this.updateNodeStates(checkedNodes, fieldName, args.action);\n }\n var pos = this.parent.pivotCommon.currentTreeItemsPos[target.getAttribute('data-memberId')].index;\n if (this.parent.pivotCommon.currentTreeItems[pos]) {\n this.parent.pivotCommon.currentTreeItems[pos].isSelected = args.action === 'check';\n this.parent.pivotCommon.currentTreeItemsPos[target.getAttribute('data-memberId')].isSelected = args.action === 'check';\n }\n }\n this.parent.pivotCommon.filterDialog.updateCheckedState();\n };\n PivotButton.prototype.checkedStateAll = function (state) {\n var searchItemObj = {};\n /* eslint-disable @typescript-eslint/no-explicit-any */\n for (var _i = 0, _a = this.parent.pivotCommon.searchTreeItems; _i < _a.length; _i++) {\n var item = _a[_i];\n item.isSelected = state === 'check';\n searchItemObj[item.htmlAttributes['data-memberId']] = item.htmlAttributes['data-memberId'];\n }\n for (var _b = 0, _c = this.parent.pivotCommon.currentTreeItems; _b < _c.length; _b++) {\n var item = _c[_b];\n if (searchItemObj[item.htmlAttributes['data-memberId']] !== undefined) {\n item.isSelected = state === 'check';\n this.parent.pivotCommon.currentTreeItemsPos[item.htmlAttributes['data-memberId']].isSelected = state === 'check';\n }\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n PivotButton.prototype.updateNodeStates = function (checkedNodes, fieldName, state) {\n var fieldList = this.parent.pivotCommon.engineModule.fieldList[fieldName];\n var currentMembers = fieldList.members;\n var searchMembers = fieldList.currrentMembers;\n if (fieldList.searchMembers.length > 0) {\n var members = Object.keys(searchMembers);\n for (var _i = 0, members_1 = members; _i < members_1.length; _i++) {\n var member = members_1[_i];\n if (searchMembers[member]) {\n searchMembers[member].isSelected = false;\n }\n if (currentMembers[member]) {\n currentMembers[member].isSelected = false;\n if (this.memberTreeView.element.querySelector('li[data-memberId=\"' + member + '\"]')) {\n var element = this.memberTreeView.element.querySelector('li[data-memberId=\"' + member + '\"]');\n if (element && !element.querySelector('ul')) {\n this.parent.pivotCommon.eventBase.updateChildNodeStates(fieldList.filterMembers, fieldName, member, false);\n }\n }\n }\n }\n for (var _a = 0, checkedNodes_1 = checkedNodes; _a < checkedNodes_1.length; _a++) {\n var node = checkedNodes_1[_a];\n if (currentMembers[node]) {\n if (this.memberTreeView.element.querySelector('li[data-memberId=\"' + node + '\"]')) {\n var element = this.memberTreeView.element.querySelector('li[data-memberId=\"' + node + '\"]');\n if (element && !element.querySelector('ul')) {\n currentMembers[node].isSelected = true;\n this.parent.pivotCommon.eventBase.updateChildNodeStates(fieldList.filterMembers, fieldName, node, true);\n }\n }\n }\n if (searchMembers[node]) {\n searchMembers[node].isSelected = true;\n }\n }\n }\n else {\n var members = Object.keys(currentMembers);\n for (var _b = 0, members_2 = members; _b < members_2.length; _b++) {\n var member = members_2[_b];\n if (currentMembers[member].isSelected) {\n currentMembers[member].isSelected = false;\n }\n }\n for (var _c = 0, checkedNodes_2 = checkedNodes; _c < checkedNodes_2.length; _c++) {\n var node = checkedNodes_2[_c];\n if (currentMembers[node]) {\n currentMembers[node].isSelected = true;\n this.parent.pivotCommon.eventBase.updateChildNodeStates(fieldList.filterMembers, fieldName, node, true);\n }\n }\n }\n };\n PivotButton.prototype.updateFilterState = function (fieldName, args) {\n var _this = this;\n var isNodeUnChecked = false;\n var filterItem = { items: [], name: fieldName, type: 'Include' };\n var engineModule = this.parent.olapEngineModule;\n if (this.parent.dataType === 'olap' && engineModule &&\n !engineModule.fieldList[fieldName].isHierarchy) {\n var cMembers = engineModule.fieldList[fieldName].members;\n var sMembers = engineModule.fieldList[fieldName].currrentMembers;\n filterItem.items = this.memberTreeView.getAllCheckedNodes();\n filterItem.levelCount = engineModule.fieldList[fieldName].levelCount;\n isNodeUnChecked = (filterItem.items.length ===\n this.memberTreeView.fields.dataSource.length ? false : true);\n if (engineModule.fieldList[fieldName].searchMembers.length > 0 && !isNodeUnChecked) {\n var cNodeLength = Object.keys(cMembers).length;\n var sNodeLength = Object.keys(sMembers).length;\n isNodeUnChecked = cNodeLength === sNodeLength && cNodeLength === filterItem.items.length ? false : true;\n }\n var filterItems = filterItem.items;\n for (var _i = 0, filterItems_3 = filterItems; _i < filterItems_3.length; _i++) {\n var node = filterItems_3[_i];\n if (engineModule.fieldList[fieldName].searchMembers.length > 0 && sMembers[node]) {\n sMembers[node].isSelected = true;\n }\n else if (cMembers[node]) {\n cMembers[node].isSelected = true;\n }\n }\n }\n else {\n for (var _a = 0, _b = this.parent.pivotCommon.searchTreeItems; _a < _b.length; _a++) {\n var item = _b[_a];\n if (item.isSelected) {\n if (this.parent.pivotCommon.isDateField) {\n filterItem.items.push(item.name);\n }\n else {\n filterItem.items.push(item.htmlAttributes['data-memberId']);\n }\n }\n }\n isNodeUnChecked = (filterItem.items.length === this.parent.pivotCommon.currentTreeItems.length ?\n false : true);\n }\n if (this.parent.dataType === 'olap') {\n this.removeDataSourceSettings(fieldName);\n }\n if (this.parent.allowDeferLayoutUpdate) {\n this.parent.engineModule.fieldList[filterItem.name].filterType = filterItem.type.toLowerCase();\n this.parent.engineModule.fieldList[filterItem.name].filter = [];\n for (var i = 0; i < filterItem.items.length; i++) {\n this.parent.engineModule.fieldList[filterItem.name].filter.push(filterItem.items[i]);\n }\n }\n var filterEventArgs = {\n filterSettings: filterItem,\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings),\n cancel: false\n };\n var control = this.parent.getModuleName() === 'pivotfieldlist' &&\n this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n control.trigger(events.memberFiltering, filterEventArgs, function (observedArgs) {\n filterItem = observedArgs.filterSettings;\n if (!observedArgs.cancel) {\n var filterObject = PivotUtil.getFilterItemByName(fieldName, _this.parent.dataSourceSettings.filterSettings);\n if (filterObject) {\n for (var i = 0; i < _this.parent.dataSourceSettings.filterSettings.length; i++) {\n if (_this.parent.dataSourceSettings.filterSettings[i].name === fieldName) {\n _this.parent.dataSourceSettings.filterSettings.splice(i, 1);\n break;\n }\n }\n }\n _this.parent.dataSourceSettings.filterSettings.push(filterItem);\n }\n _this.dialogPopUp.close();\n if (!observedArgs.cancel) {\n _this.refreshPivotButtonState(fieldName, isNodeUnChecked);\n if (!isNodeUnChecked) {\n _this.removeDataSourceSettings(fieldName);\n }\n _this.parent.lastFilterInfo = filterItem;\n _this.updateDataSource(true);\n var thisObj = _this;\n //setTimeout(() => {\n if (thisObj.parent instanceof PivotFieldList) {\n thisObj.axisField.render();\n }\n //});\n }\n var pivotButtons = [].slice.call(_this.parentElement.querySelectorAll('.e-pivot-button'));\n for (var _i = 0, pivotButtons_2 = pivotButtons; _i < pivotButtons_2.length; _i++) {\n var item = pivotButtons_2[_i];\n if (item.getAttribute('data-uid') === fieldName) {\n item.focus();\n break;\n }\n }\n });\n };\n PivotButton.prototype.refreshPivotButtonState = function (fieldName, isFiltered) {\n var pivotButtons = [].slice.call(this.parentElement.querySelectorAll('.e-pivot-button'));\n var selectedButton;\n for (var _i = 0, pivotButtons_3 = pivotButtons; _i < pivotButtons_3.length; _i++) {\n var item = pivotButtons_3[_i];\n if (item.getAttribute('data-uid') === fieldName) {\n selectedButton = item.querySelector('.' + cls.FILTER_COMMON_CLASS);\n break;\n }\n }\n if (isFiltered) {\n removeClass([selectedButton], cls.FILTER_CLASS);\n addClass([selectedButton], cls.FILTERED_CLASS);\n }\n else {\n removeClass([selectedButton], cls.FILTERED_CLASS);\n addClass([selectedButton], cls.FILTER_CLASS);\n }\n };\n PivotButton.prototype.removeDataSourceSettings = function (fieldName, selectedField, type) {\n var filterSettings = this.parent.dataSourceSettings.filterSettings;\n for (var len = 0, lnt = filterSettings.length; len < lnt; len++) {\n if (this.parent.dataType === 'olap' && selectedField) {\n if (!type && filterSettings[len].name === fieldName &&\n filterSettings[len].selectedField === selectedField) {\n filterSettings.splice(len, 1);\n break;\n }\n else if (type) {\n if (filterSettings[len].type !== type &&\n filterSettings[len].name === fieldName) {\n filterSettings.splice(len, 1);\n lnt--;\n len--;\n }\n }\n }\n else {\n if (filterSettings[len].name === fieldName) {\n filterSettings.splice(len, 1);\n if (this.parent.dataType !== 'olap') {\n break;\n }\n lnt--;\n len--;\n }\n }\n }\n };\n PivotButton.prototype.updateDropIndicator = function (e) {\n if (this.parent.isDragging) {\n removeClass([].slice.call(this.parentElement.querySelectorAll('.' + cls.DROP_INDICATOR_CLASS + '-last')), cls.INDICATOR_HOVER_CLASS);\n removeClass([].slice.call(this.parentElement.querySelectorAll('.' + cls.DROP_INDICATOR_CLASS)), cls.INDICATOR_HOVER_CLASS);\n var element = closest(e.target, '.' + cls.PIVOT_BUTTON_WRAPPER_CLASS);\n addClass([element.querySelector('.' + cls.DROP_INDICATOR_CLASS)], cls.INDICATOR_HOVER_CLASS);\n }\n };\n PivotButton.prototype.wireEvent = function (element, axis, isMeasureAvail) {\n EventHandler.add(element, 'mouseover', this.updateDropIndicator, this);\n if (!isMeasureAvail) {\n if (['filters', 'values'].indexOf(axis) === -1 && element.querySelector('.' + cls.PIVOT_BUTTON_CLASS) !== null) {\n EventHandler.add(element.querySelector('.' + cls.PIVOT_BUTTON_CLASS), 'click', this.updateSorting, this);\n }\n if (axis !== 'values' && element.querySelector('.' + cls.FILTER_COMMON_CLASS) !== null) {\n EventHandler.add(element.querySelector('.' + cls.FILTER_COMMON_CLASS), 'click', this.updateFiltering, this);\n }\n if (axis === 'values' && element.querySelector('.' + cls.AXISFIELD_ICON_CLASS) !== null) {\n EventHandler.add(element.querySelector('.' + cls.AXISFIELD_ICON_CLASS), 'click', this.createMenuOption, this);\n }\n }\n if (element.querySelector('.' + cls.CALC_EDIT) !== null) {\n EventHandler.add(element.querySelector('.' + cls.CALC_EDIT), 'click', this.openCalculatedFieldDialog, this);\n }\n EventHandler.add(element.querySelector('.' + cls.REMOVE_CLASS), 'click', this.removeButton, this);\n };\n PivotButton.prototype.unWireEvent = function (element, axis, isMeasureAvail) {\n EventHandler.remove(element, 'mouseover', this.updateDropIndicator);\n if (!isMeasureAvail) {\n if (['filters', 'values'].indexOf(axis) === -1 && element.querySelector('.' + cls.PIVOT_BUTTON_CLASS) !== null) {\n EventHandler.remove(element.querySelector('.' + cls.PIVOT_BUTTON_CLASS), 'click', this.updateSorting);\n }\n if (axis !== 'values' && element.querySelector('.' + cls.FILTER_COMMON_CLASS) !== null) {\n EventHandler.remove(element.querySelector('.' + cls.FILTER_COMMON_CLASS), 'click', this.updateFiltering);\n }\n if (axis === 'values' && element.querySelector('.' + cls.AXISFIELD_ICON_CLASS) !== null) {\n EventHandler.remove(element.querySelector('.' + cls.AXISFIELD_ICON_CLASS), 'click', this.createMenuOption);\n }\n }\n if (element.querySelector('.' + cls.CALC_EDIT) !== null) {\n EventHandler.remove(element.querySelector('.' + cls.CALC_EDIT), 'click', this.openCalculatedFieldDialog);\n }\n EventHandler.remove(element.querySelector('.' + cls.REMOVE_CLASS), 'click', this.removeButton);\n };\n /**\n * @hidden\n */\n PivotButton.prototype.addEventListener = function () {\n this.handlers = {\n load: this.renderPivotButton\n };\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.pivotButtonUpdate, this.handlers.load, this);\n };\n /**\n * @hidden\n */\n PivotButton.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pivotButtonUpdate, this.handlers.load);\n };\n /**\n * To destroy the pivot button event listener\n * @returns {void}\n * @hidden\n */\n PivotButton.prototype.destroy = function () {\n if (this.menuOption) {\n this.menuOption.destroy();\n }\n if (this.valueFiedDropDownList && !this.valueFiedDropDownList.isDestroyed) {\n this.valueFiedDropDownList.destroy();\n this.valueFiedDropDownList = null;\n }\n if (this.columnFieldDropDownList && !this.columnFieldDropDownList.isDestroyed) {\n this.columnFieldDropDownList.destroy();\n this.columnFieldDropDownList = null;\n }\n if (this.memberTreeView && !this.memberTreeView.isDestroyed) {\n this.memberTreeView.destroy();\n this.memberTreeView = null;\n }\n if (this.dialogPopUp && !this.dialogPopUp.isDestroyed) {\n this.dialogPopUp.destroy();\n this.dialogPopUp = null;\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n this.draggable = null;\n }\n if (this.axisField) {\n this.axisField = null;\n }\n this.removeEventListener();\n this.isDestroyed = true;\n };\n return PivotButton;\n}());\nexport { PivotButton };\n","import * as cls from '../../common/base/css-constant';\nimport * as events from '../../common/base/constant';\nimport { PivotButton } from '../../common/actions/pivot-button';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Module to render Axis Fields\n */\n/** @hidden */\nvar AxisFieldRenderer = /** @class */ (function () {\n /* eslint-disable-next-line */\n /** Constructor for render module */\n function AxisFieldRenderer(parent) {\n this.parent = parent;\n }\n /**\n * Initialize the pivot button rendering\n * @returns {void}\n * @private\n */\n AxisFieldRenderer.prototype.render = function () {\n /* eslint-disable */\n var pivotButtonModule = ((!this.parent.pivotButtonModule || (this.parent.pivotButtonModule && this.parent.pivotButtonModule.isDestroyed)) ?\n new PivotButton(this.parent) : this.parent.pivotButtonModule);\n /* eslint-enable */\n this.createPivotButtons();\n };\n AxisFieldRenderer.prototype.createPivotButtons = function () {\n if (isNullOrUndefined(this.parent.dataSourceSettings.dataSource) && isNullOrUndefined(this.parent.dataSourceSettings.url)) {\n this.parent.setProperties({ dataSourceSettings: { columns: [], rows: [], values: [], filters: [] } }, true);\n }\n var rows = this.parent.dataSourceSettings.rows;\n var columns = this.parent.dataSourceSettings.columns;\n var values = this.parent.dataSourceSettings.values;\n var filters = this.parent.dataSourceSettings.filters;\n var fields = [rows, columns, values, filters];\n var parentElement = this.parent.dialogRenderer.parentElement;\n if (parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-filters')) {\n parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-filters').querySelector('.' + cls.AXIS_CONTENT_CLASS).innerHTML = '';\n }\n if (parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-rows')) {\n parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-rows').querySelector('.' + cls.AXIS_CONTENT_CLASS).innerHTML = '';\n }\n if (parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-columns')) {\n parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-columns').querySelector('.' + cls.AXIS_CONTENT_CLASS).innerHTML = '';\n }\n if (parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-values')) {\n parentElement.querySelector('.' + cls.FIELD_LIST_CLASS + '-values').querySelector('.' + cls.AXIS_CONTENT_CLASS).innerHTML = '';\n }\n var axis = ['rows', 'columns', 'values', 'filters'];\n for (var len = 0, lnt = fields.length; len < lnt; len++) {\n if (fields[len]) {\n var args = {\n field: fields[len],\n axis: axis[len].toString()\n };\n this.parent.notify(events.pivotButtonUpdate, args);\n }\n }\n };\n return AxisFieldRenderer;\n}());\nexport { AxisFieldRenderer };\n","import { DialogRenderer } from '../renderer/dialog-renderer';\nimport { TreeViewRenderer } from '../renderer/tree-renderer';\nimport { AxisTableRenderer } from '../renderer/axis-table-renderer';\nimport { AxisFieldRenderer } from './axis-field-renderer';\n/**\n * Module to render Pivot Table component\n */\n/** @hidden */\nvar Render = /** @class */ (function () {\n /** Constructor for render module\n * @param {PivotFieldList} parent - Instance of field list.\n */\n function Render(parent) {\n this.parent = parent;\n this.parent.dialogRenderer = new DialogRenderer(this.parent);\n this.parent.treeViewModule = new TreeViewRenderer(this.parent);\n this.parent.axisTableModule = new AxisTableRenderer(this.parent);\n this.parent.axisFieldModule = new AxisFieldRenderer(this.parent);\n }\n /**\n * Initialize the pivot table rendering\n * @returns {void}\n * @private\n */\n Render.prototype.render = function () {\n this.parent.dialogRenderer.render();\n if (!this.parent.isAdaptive) {\n this.parent.treeViewModule.render();\n }\n this.parent.axisTableModule.render();\n };\n return Render;\n}());\nexport { Render };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, Event, Component, Internationalization, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { L10n, remove, addClass, Browser, Complex, getInstance } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, removeClass, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { PivotEngine } from '../../base/engine';\nimport * as events from '../../common/base/constant';\nimport * as cls from '../../common/base/css-constant';\nimport { PivotCommon } from '../../common/base/pivot-common';\nimport { Render } from '../renderer/renderer';\nimport { PivotView } from '../../pivotview/base/pivotview';\nimport { DataSourceSettings } from '../../pivotview/model/datasourcesettings';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { PivotUtil } from '../../base/util';\nimport { OlapEngine } from '../../base/olap/engine';\n/**\n * Represents the PivotFieldList component.\n * ```html\n *
    \n * \n * ```\n */\nvar PivotFieldList = /** @class */ (function (_super) {\n __extends(PivotFieldList, _super);\n /**\n * Constructor for creating the widget\n * @param {PivotFieldListModel} options - options\n * @param {string|HTMLElement} element - element\n */\n function PivotFieldList(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.pivotChange = false;\n _this.isRequiredUpdate = true;\n /** @hidden */\n _this.lastSortInfo = {};\n /** @hidden */\n _this.lastFilterInfo = {};\n /** @hidden */\n _this.lastAggregationInfo = {};\n /** @hidden */\n _this.lastCalcFieldInfo = {};\n /** @hidden */\n _this.isPopupView = false;\n /** @hidden */\n _this.enableValueSorting = false;\n _this.request = new XMLHttpRequest();\n _this.remoteData = [];\n return _this;\n }\n /**\n * To provide the array of modules needed for control rendering\n * @returns {ModuleDeclaration[]} - ModuleDeclaration[]\n * @hidden\n */\n PivotFieldList.prototype.requiredModules = function () {\n var modules = [];\n if (this.allowCalculatedField) {\n modules.push({ args: [this], member: 'calculatedField' });\n }\n return modules;\n };\n /**\n * @returns {AggregateTypes[]}- AggregateTypes[]\n * @hidden\n */\n PivotFieldList.prototype.getAllSummaryType = function () {\n return ['Sum', 'Count', 'DistinctCount', 'Product', 'Min', 'Max', 'Avg', 'Median', 'Index',\n 'PopulationVar', 'SampleVar', 'PopulationStDev', 'SampleStDev', 'RunningTotals', 'PercentageOfGrandTotal',\n 'PercentageOfColumnTotal', 'PercentageOfRowTotal', 'PercentageOfParentColumnTotal', 'PercentageOfParentRowTotal',\n 'DifferenceFrom', 'PercentageOfDifferenceFrom', 'PercentageOfParentTotal'];\n };\n /* eslint-disable-next-line */\n /**\n * For internal use only - Initialize the event handler;\n * @private\n */\n PivotFieldList.prototype.preRender = function () {\n if (this.dataSourceSettings && this.dataSourceSettings.providerType === 'SSAS') {\n this.olapEngineModule = new OlapEngine();\n this.dataType = 'olap';\n }\n else {\n this.engineModule = new PivotEngine();\n this.dataType = 'pivot';\n }\n this.isAdaptive = Browser.isDevice;\n this.globalize = new Internationalization(this.locale);\n this.renderModule = new Render(this);\n /* eslint-disable */\n this.defaultLocale = {\n staticFieldList: 'Pivot Field List',\n fieldList: 'Field List',\n dropFilterPrompt: 'Drop filter here',\n dropColPrompt: 'Drop column here',\n dropRowPrompt: 'Drop row here',\n dropValPrompt: 'Drop value here',\n addPrompt: 'Add field here',\n adaptiveFieldHeader: 'Choose field',\n centerHeader: 'Drag fields between axes below:',\n add: 'add',\n drag: 'Drag',\n filter: 'Filter',\n filtered: 'Filtered',\n sort: 'Sort',\n remove: 'Remove',\n filters: 'Filters',\n rows: 'Rows',\n columns: 'Columns',\n values: 'Values',\n CalculatedField: 'Calculated Field',\n createCalculatedField: 'Create Calculated Field',\n fieldName: 'Enter the field name',\n error: 'Error',\n invalidFormula: 'Invalid formula.',\n dropText: 'Example: (\"Sum(Order_Count)\" + \"Sum(In_Stock)\") * 250',\n dropTextMobile: 'Add fields and edit formula here.',\n dropAction: 'Calculated field cannot be place in any other region except value axis.',\n search: 'Search',\n close: 'Close',\n cancel: 'Cancel',\n delete: 'Delete',\n alert: 'Alert',\n warning: 'Warning',\n ok: 'OK',\n allFields: 'All Fields',\n formula: 'Formula',\n fieldExist: 'A field already exists in this name. Please enter a different name.',\n confirmText: 'A calculation field already exists in this name. Do you want to replace it?',\n noMatches: 'No matches',\n format: 'Summaries values by',\n edit: 'Edit',\n clear: 'Clear',\n clearCalculatedField: 'Clear edited field info',\n editCalculatedField: 'Edit calculated field',\n sortAscending: 'Sort ascending order',\n sortDescending: 'Sort descending order',\n sortNone: 'Sort data order',\n formulaField: 'Drag and drop fields to formula',\n dragField: 'Drag field to formula',\n clearFilter: 'Clear',\n by: 'by',\n enterValue: 'Enter value',\n chooseDate: 'Enter date',\n all: 'All',\n multipleItems: 'Multiple items',\n Equals: 'Equals',\n DoesNotEquals: 'Does Not Equal',\n BeginWith: 'Begins With',\n DoesNotBeginWith: 'Does Not Begin With',\n EndsWith: 'Ends With',\n DoesNotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n DoesNotContains: 'Does Not Contain',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqualTo: 'Greater Than Or Equal To',\n LessThan: 'Less Than',\n LessThanOrEqualTo: 'Less Than Or Equal To',\n Between: 'Between',\n NotBetween: 'Not Between',\n Before: 'Before',\n BeforeOrEqualTo: 'Before Or Equal To',\n After: 'After',\n AfterOrEqualTo: 'After Or Equal To',\n member: 'Member',\n label: 'Label',\n date: 'Date',\n value: 'Value',\n labelTextContent: 'Show the items for which the label',\n dateTextContent: 'Show the items for which the date',\n valueTextContent: 'Show the items for which',\n And: 'and',\n Sum: 'Sum',\n Count: 'Count',\n DistinctCount: 'Distinct Count',\n Product: 'Product',\n Avg: 'Avg',\n Median: 'Median',\n Min: 'Min',\n Max: 'Max',\n Index: 'Index',\n SampleStDev: 'Sample StDev',\n PopulationStDev: 'Population StDev',\n SampleVar: 'Sample Var',\n PopulationVar: 'Population Var',\n RunningTotals: 'Running Totals',\n DifferenceFrom: 'Difference From',\n PercentageOfDifferenceFrom: '% of Difference From',\n PercentageOfGrandTotal: '% of Grand Total',\n PercentageOfColumnTotal: '% of Column Total',\n PercentageOfRowTotal: '% of Row Total',\n PercentageOfParentTotal: '% of Parent Total',\n PercentageOfParentColumnTotal: '% of Parent Column Total',\n PercentageOfParentRowTotal: '% of Parent Row Total',\n MoreOption: 'More...',\n Years: 'Years',\n Quarters: 'Quarters',\n Months: 'Months',\n Days: 'Days',\n Hours: 'Hours',\n Minutes: 'Minutes',\n Seconds: 'Seconds',\n apply: 'Apply',\n valueFieldSettings: 'Value field settings',\n sourceName: 'Field name :',\n sourceCaption: 'Field caption',\n summarizeValuesBy: 'Summarize values by',\n baseField: 'Base field',\n baseItem: 'Base item',\n example: 'e.g:',\n editorDataLimitMsg: ' more items. Search to refine further.',\n deferLayoutUpdate: 'Defer Layout Update',\n null: 'null',\n undefined: 'undefined',\n groupOutOfRange: 'Out of Range',\n fieldDropErrorAction: 'The field you are moving cannot be placed in that area of the report',\n memberType: 'Field Type',\n selectedHierarchy: 'Parent Hierarchy',\n formatString: 'Format',\n expressionField: 'Expression',\n olapDropText: 'Example: [Measures].[Order Quantity] + ([Measures].[Order Quantity] * 0.10)',\n customFormat: 'Enter custom format string',\n numberFormatString: 'Example: C, P, 0000 %, ###0.##0#, etc.',\n Measure: 'Measure',\n Dimension: 'Dimension',\n Standard: 'Standard',\n Currency: 'Currency',\n Percent: 'Percent',\n Custom: 'Custom',\n blank: '(Blank)',\n fieldTooltip: 'Drag and drop fields to create an expression. ' +\n 'And, if you want to edit the existing calculated fields! ' +\n 'You can achieve it by simply selecting the field under \"Calculated Members\".',\n fieldTitle: 'Field Name',\n QuarterYear: 'Quarter Year',\n caption: 'Field Caption',\n copy: 'Copy',\n of: 'of',\n group: 'Group',\n removeCalculatedField: 'Are you sure you want to delete this calculated field?',\n yes: 'Yes',\n no: 'No'\n };\n /* eslint-enable */\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n this.isDragging = false;\n this.captionData = [];\n this.wireEvent();\n };\n PivotFieldList.prototype.frameCustomProperties = function (fieldListData, fieldList) {\n if (this.pivotGridModule) {\n this.pivotGridModule.updatePageSettings(false);\n }\n var pageSettings = this.pivotGridModule ? this.pivotGridModule.pageSettings : this.pageSettings;\n var localeObj = this.pivotGridModule ? this.pivotGridModule.localeObj :\n (this.staticPivotGridModule ? this.staticPivotGridModule.localeObj : this.localeObj);\n var isDrillThrough = this.pivotGridModule ?\n (this.pivotGridModule.allowDrillThrough || this.pivotGridModule.editSettings.allowEditing) : true;\n var enableValueSorting = this.pivotGridModule ? this.pivotGridModule.enableValueSorting : undefined;\n var customProperties;\n if (this.dataType === 'olap') {\n customProperties = {\n mode: '',\n savedFieldList: fieldList ? fieldList : undefined,\n savedFieldListData: fieldListData ? fieldListData : undefined,\n pageSettings: pageSettings,\n enableValueSorting: enableValueSorting,\n isDrillThrough: isDrillThrough,\n localeObj: localeObj\n };\n }\n else {\n customProperties = {\n mode: '',\n savedFieldList: undefined,\n pageSettings: pageSettings,\n enableValueSorting: enableValueSorting,\n isDrillThrough: isDrillThrough,\n localeObj: localeObj,\n clonedReport: this.clonedReport\n };\n }\n return customProperties;\n };\n /* eslint-disable */\n /**\n * Initialize the control rendering\n * @returns {void}\n * @private\n */\n PivotFieldList.prototype.render = function () {\n if (this.dataType === 'pivot' && this.dataSourceSettings.url && this.dataSourceSettings.url !== '') {\n if (this.dataSourceSettings.mode === 'Server') {\n this.guid = PivotUtil.generateUUID();\n this.getEngine('initialRender', null, null, null, null, null, null);\n }\n else {\n this.request.open(\"GET\", this.dataSourceSettings.url, true);\n this.request.withCredentials = false;\n this.request.onreadystatechange = this.onReadyStateChange.bind(this);\n this.request.setRequestHeader(\"Content-type\", \"text/plain\");\n this.request.send(null);\n }\n }\n else {\n this.initialLoad();\n }\n };\n /**\n * @hidden\n */\n PivotFieldList.prototype.getEngine = function (action, drillItem, sortItem, aggField, cField, filterItem, memberName, rawDataArgs, editArgs) {\n var _this = this;\n this.currentAction = action;\n if (this.pivotGridModule) {\n this.pivotGridModule.updatePageSettings(false);\n }\n var customProperties = {\n pageSettings: this.pivotGridModule ? this.pivotGridModule.pageSettings : undefined,\n enableValueSorting: this.pivotGridModule ? this.pivotGridModule.enableValueSorting : undefined,\n enableDrillThrough: this.pivotGridModule ?\n (this.pivotGridModule.allowDrillThrough || this.pivotGridModule.editSettings.allowEditing) : true,\n locale: JSON.stringify(PivotUtil.getLocalizedObject(this))\n };\n this.request.open(\"POST\", this.dataSourceSettings.url, true);\n var params = {\n request: this.request,\n dataSourceSettings: JSON.parse(this.getPersistData()).dataSourceSettings,\n action: action,\n customProperties: {},\n internalProperties: customProperties,\n drillItem: drillItem,\n sortItem: sortItem,\n aggregatedItem: aggField,\n calculatedItem: cField,\n filterItem: filterItem,\n memberName: memberName,\n fetchRawDataArgs: rawDataArgs,\n editArgs: editArgs,\n hash: this.guid\n };\n this.trigger(events.beforeServiceInvoke, params, function (observedArgs) {\n _this.request = observedArgs.request;\n params.internalProperties = observedArgs.internalProperties;\n params.customProperties = observedArgs.customProperties;\n params.dataSourceSettings = observedArgs.dataSourceSettings;\n params.calculatedItem = observedArgs.calculatedItem;\n params.drillItem = observedArgs.drillItem;\n params.editArgs = observedArgs.editArgs;\n params.fetchRawDataArgs = observedArgs.fetchRawDataArgs;\n params.filterItem = observedArgs.filterItem;\n params.hash = observedArgs.hash;\n params.memberName = observedArgs.memberName;\n params.sortItem = observedArgs.sortItem;\n });\n this.request.withCredentials = false;\n this.request.onreadystatechange = this.onSuccess.bind(this);\n this.request.setRequestHeader(\"Content-type\", \"application/json\");\n this.request.send(JSON.stringify(params));\n };\n PivotFieldList.prototype.onSuccess = function () {\n if (this.request.readyState === XMLHttpRequest.DONE) {\n try {\n var engine = JSON.parse(this.request.responseText);\n if (this.currentAction === 'fetchFieldMembers') {\n var currentMembers = JSON.parse(engine.members);\n var dateMembers = [];\n var formattedMembers = {};\n var members = {};\n for (var i = 0; i < currentMembers.length; i++) {\n dateMembers.push({ formattedText: currentMembers[i].FormattedText, actualText: currentMembers[i].ActualText });\n formattedMembers[currentMembers[i].FormattedText] = {};\n members[currentMembers[i].ActualText] = {};\n }\n this.engineModule.fieldList[engine.memberName].dateMember = dateMembers;\n this.engineModule.fieldList[engine.memberName].formattedMembers = formattedMembers;\n this.engineModule.fieldList[engine.memberName].members = members;\n this.pivotButtonModule.updateFilterEvents();\n }\n else {\n var fList = PivotUtil.formatFieldList(JSON.parse(engine.fieldList));\n if (this.engineModule.fieldList) {\n var keys = Object.keys(this.engineModule.fieldList);\n for (var i = 0; i < keys.length; i++) {\n if (this.engineModule.fieldList[keys[i]] && fList[keys[i]]) {\n fList[keys[i]].dateMember = this.engineModule.fieldList[keys[i]].dateMember;\n fList[keys[i]].formattedMembers = this.engineModule.fieldList[keys[i]].formattedMembers;\n fList[keys[i]].members = this.engineModule.fieldList[keys[i]].members;\n }\n }\n }\n this.engineModule.fieldList = fList;\n this.engineModule.fields = JSON.parse(engine.fields);\n this.engineModule.rowCount = JSON.parse(engine.pivotCount).RowCount;\n this.engineModule.columnCount = JSON.parse(engine.pivotCount).ColumnCount;\n this.engineModule.rowStartPos = JSON.parse(engine.pivotCount).RowStartPosition;\n this.engineModule.colStartPos = JSON.parse(engine.pivotCount).ColumnStartPosition;\n this.engineModule.rowFirstLvl = JSON.parse(engine.pivotCount).RowFirstLevel;\n this.engineModule.colFirstLvl = JSON.parse(engine.pivotCount).ColumnFirstLevel;\n var rowPos = void 0;\n var pivotValues = PivotUtil.formatPivotValues(JSON.parse(engine.pivotValue));\n for (var rCnt = 0; rCnt < pivotValues.length; rCnt++) {\n if (pivotValues[rCnt] && pivotValues[rCnt][0] && pivotValues[rCnt][0].axis === 'row') {\n rowPos = rCnt;\n break;\n }\n }\n this.engineModule.headerContent = PivotUtil.frameContent(pivotValues, 'header', rowPos, this);\n this.engineModule.pageSettings = this.pivotGridModule ? this.pivotGridModule.pageSettings : undefined;\n var valueSort = JSON.parse(engine.dataSourceSettings).ValueSortSettings;\n this.engineModule.valueSortSettings = {\n headerText: valueSort.HeaderText,\n headerDelimiter: valueSort.HeaderDelimiter,\n sortOrder: valueSort.SortOrder,\n columnIndex: valueSort.ColumnIndex\n };\n this.engineModule.pivotValues = pivotValues;\n }\n }\n catch (error) {\n this.engineModule.pivotValues = [];\n }\n if (this.currentAction !== 'fetchFieldMembers') {\n this.initEngine();\n if (this.calculatedFieldModule && this.calculatedFieldModule.isRequireUpdate) {\n this.calculatedFieldModule.endDialog();\n this.calculatedFieldModule.isRequireUpdate = false;\n }\n if (this.pivotGridModule && this.pivotGridModule.calculatedFieldModule && this.pivotGridModule.calculatedFieldModule.isRequireUpdate) {\n this.pivotGridModule.calculatedFieldModule.endDialog();\n this.pivotGridModule.calculatedFieldModule.isRequireUpdate = false;\n }\n }\n }\n };\n PivotFieldList.prototype.onReadyStateChange = function () {\n if (this.request.readyState === XMLHttpRequest.DONE) {\n var dataSource = [];\n if (this.dataSourceSettings.type === 'CSV') {\n var jsonObject = this.request.responseText.split(/\\r?\\n|\\r/);\n for (var i = 0; i < jsonObject.length; i++) {\n if (!isNullOrUndefined(jsonObject[i]) && jsonObject[i] !== '') {\n dataSource.push(jsonObject[i].split(','));\n }\n }\n }\n else {\n try {\n dataSource = JSON.parse(this.request.responseText);\n }\n catch (error) {\n dataSource = [];\n }\n }\n if (isBlazor() && dataSource && dataSource.length > 0) {\n this.remoteData = dataSource;\n }\n else if (dataSource && dataSource.length > 0) {\n this.setProperties({ dataSourceSettings: { dataSource: dataSource } }, true);\n }\n this.initialLoad();\n }\n };\n PivotFieldList.prototype.initialLoad = function () {\n var _this = this;\n this.trigger(events.load, { dataSourceSettings: isBlazor() ? PivotUtil.getClonedDataSourceSettings(this.dataSourceSettings) : this.dataSourceSettings }, function (observedArgs) {\n if (isBlazor()) {\n observedArgs.dataSourceSettings.dataSource = _this.dataSourceSettings.dataSource;\n }\n _this.dataSourceSettings = observedArgs.dataSourceSettings;\n addClass([_this.element], cls.ROOT);\n if (_this.enableRtl) {\n addClass([_this.element], cls.RTL);\n }\n else {\n removeClass([_this.element], cls.RTL);\n }\n if (_this.isAdaptive) {\n addClass([_this.element], cls.DEVICE);\n }\n else {\n removeClass([_this.element], cls.DEVICE);\n }\n if (_this.cssClass) {\n addClass([_this.element], _this.cssClass);\n }\n _this.notify(events.initialLoad, {});\n });\n if (isBlazor()) {\n this.renderComplete();\n }\n };\n /**\n * Binding events to the Pivot Field List element.\n * @hidden\n */\n PivotFieldList.prototype.wireEvent = function () {\n this.on(events.initialLoad, this.generateData, this);\n this.on(events.dataReady, this.fieldListRender, this);\n };\n /**\n * Unbinding events from the element on widget destroy.\n * @hidden\n */\n PivotFieldList.prototype.unWireEvent = function () {\n if (this.pivotGridModule && this.pivotGridModule.isDestroyed) {\n return;\n }\n this.off(events.initialLoad, this.generateData);\n this.off(events.dataReady, this.fieldListRender);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns {string}\n */\n PivotFieldList.prototype.getPersistData = function () {\n var keyEntity = ['dataSourceSettings'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name.\n * @returns string\n * @private\n */\n PivotFieldList.prototype.getModuleName = function () {\n return 'pivotfieldlist';\n };\n /**\n * Called internally if any of the property value changed.\n * @hidden\n */\n PivotFieldList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n if (isBlazor()) {\n break;\n }\n else {\n _super.prototype.refresh.call(this);\n }\n break;\n case 'dataSourceSettings':\n if (!isNullOrUndefined(newProp.dataSourceSettings.dataSource)) {\n if (!isNullOrUndefined(this.savedDataSourceSettings)) {\n PivotUtil.updateDataSourceSettings(this.staticPivotGridModule, this.savedDataSourceSettings);\n this.savedDataSourceSettings = undefined;\n }\n if (newProp.dataSourceSettings.dataSource && newProp.dataSourceSettings.dataSource.length === 0 && !isNullOrUndefined(this.staticPivotGridModule)) {\n this.savedDataSourceSettings = PivotUtil.getClonedDataSourceSettings(this.staticPivotGridModule.dataSourceSettings);\n this.staticPivotGridModule.setProperties({ dataSourceSettings: { rows: [] } }, true);\n this.staticPivotGridModule.setProperties({ dataSourceSettings: { columns: [] } }, true);\n this.staticPivotGridModule.setProperties({ dataSourceSettings: { values: [] } }, true);\n this.staticPivotGridModule.setProperties({ dataSourceSettings: { filters: [] } }, true);\n }\n this.engineModule.fieldList = null;\n if (!isNullOrUndefined(this.staticPivotGridModule)) {\n this.staticPivotGridModule.pivotValues = [];\n }\n this.initEngine();\n }\n if (PivotUtil.isButtonIconRefesh(prop, oldProp, newProp)) {\n if (this.isPopupView && this.pivotGridModule &&\n this.pivotGridModule.showGroupingBar && this.pivotGridModule.groupingBarModule) {\n var filters = PivotUtil.cloneFieldSettings(this.dataSourceSettings.filters);\n var values = PivotUtil.cloneFieldSettings(this.dataSourceSettings.values);\n var rows = PivotUtil.cloneFieldSettings(this.dataSourceSettings.rows);\n var columns = PivotUtil.cloneFieldSettings(this.dataSourceSettings.columns);\n this.pivotGridModule.setProperties({ dataSourceSettings: { rows: rows, columns: columns, values: values, filters: filters } }, true);\n this.pivotGridModule.axisFieldModule.render();\n }\n else if (!this.isPopupView && this.staticPivotGridModule && !this.staticPivotGridModule.isDestroyed) {\n var pivot = this.staticPivotGridModule;\n if (pivot.showGroupingBar && pivot.groupingBarModule) {\n pivot.axisFieldModule.render();\n }\n if (pivot.showFieldList && pivot.pivotFieldListModule) {\n var rows = PivotUtil.cloneFieldSettings(pivot.dataSourceSettings.rows);\n var columns = PivotUtil.cloneFieldSettings(pivot.dataSourceSettings.columns);\n var values = PivotUtil.cloneFieldSettings(pivot.dataSourceSettings.values);\n var filters = PivotUtil.cloneFieldSettings(pivot.dataSourceSettings.filters);\n pivot.pivotFieldListModule.setProperties({ dataSourceSettings: { rows: rows, columns: columns, values: values, filters: filters } }, true);\n pivot.pivotFieldListModule.axisFieldModule.render();\n if (pivot.pivotFieldListModule.treeViewModule.fieldTable && !pivot.isAdaptive) {\n pivot.pivotFieldListModule.notify(events.treeViewUpdate, {});\n }\n }\n }\n this.axisFieldModule.render();\n if (this.treeViewModule.fieldTable && !this.isAdaptive) {\n this.notify(events.treeViewUpdate, {});\n }\n }\n break;\n case 'aggregateTypes':\n if (this.axisFieldModule) {\n this.axisFieldModule.render();\n }\n if (this.pivotGridModule && this.pivotGridModule.axisFieldModule) {\n this.pivotGridModule.setProperties({ aggregateTypes: newProp.aggregateTypes }, true);\n this.pivotGridModule.axisFieldModule.render();\n }\n break;\n case 'enableRtl':\n if (this.enableRtl) {\n addClass([this.element], cls.RTL);\n }\n else {\n removeClass([this.element], cls.RTL);\n }\n requireRefresh = true;\n break;\n }\n if (requireRefresh) {\n this.fieldListRender();\n }\n }\n };\n /* eslint-disable */\n PivotFieldList.prototype.initEngine = function () {\n var _this = this;\n if (this.dataType === 'pivot') {\n var data = !isNullOrUndefined(this.dataSourceSettings.dataSource) ? this.dataSourceSettings.dataSource[0] :\n !isNullOrUndefined(this.engineModule.data) ? this.engineModule.data[0] : undefined;\n if (data && this.pivotCommon) {\n var isArray = Object.prototype.toString.call(data) == '[object Array]';\n if (isArray && this.dataSourceSettings.type === 'JSON') {\n this.pivotCommon.errorDialog.createErrorDialog(this.localeObj.getConstant('error'), this.localeObj.getConstant('invalidJSON'));\n return;\n }\n else if (!isArray && this.dataSourceSettings.type === 'CSV') {\n this.pivotCommon.errorDialog.createErrorDialog(this.localeObj.getConstant('error'), this.localeObj.getConstant('invalidCSV'));\n return;\n }\n }\n }\n var args = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.dataSourceSettings)\n };\n var control = this.isPopupView ? this.pivotGridModule : this;\n control.trigger(events.enginePopulating, args, function (observedArgs) {\n PivotUtil.updateDataSourceSettings(_this, observedArgs.dataSourceSettings);\n if (_this.dataType === 'pivot') {\n if (_this.dataSourceSettings.groupSettings && _this.dataSourceSettings.groupSettings.length > 0) {\n var pivotDataSet = void 0;\n if (isBlazor()) {\n pivotDataSet = _this.engineModule.data;\n }\n else {\n pivotDataSet = _this.dataSourceSettings.dataSource;\n }\n _this.clonedDataSet = (_this.clonedDataSet ? _this.clonedDataSet : PivotUtil.getClonedData(pivotDataSet));\n if (isBlazor()) {\n _this.clonedReport = _this.clonedReport ? _this.clonedReport : extend({}, _this.dataSourceSettings, null, true);\n }\n else {\n var dataSourceSettings = JSON.parse(_this.getPersistData()).dataSourceSettings;\n dataSourceSettings.dataSource = [];\n _this.clonedReport = _this.clonedReport ? _this.clonedReport : dataSourceSettings;\n }\n }\n var customProperties = _this.frameCustomProperties();\n customProperties.enableValueSorting = _this.staticPivotGridModule ?\n _this.staticPivotGridModule.enableValueSorting : _this.enableValueSorting;\n if (_this.dataSourceSettings.mode !== 'Server') {\n _this.engineModule.renderEngine(_this.dataSourceSettings, customProperties, _this.getValueCellInfo.bind(_this));\n }\n _this.pivotFieldList = _this.engineModule.fieldList;\n var eventArgs = {\n pivotFieldList: _this.pivotFieldList,\n pivotValues: _this.engineModule.pivotValues\n };\n var this$_1 = _this;\n control.trigger(events.enginePopulated, eventArgs, function (observedArgs) {\n this$_1.pivotFieldList = observedArgs.pivotFieldList;\n this$_1.engineModule.pivotValues = isBlazor() ? _this.engineModule.pivotValues : observedArgs.pivotValues;\n this$_1.notify(events.dataReady, {});\n this$_1.trigger(events.dataBound);\n });\n }\n else if (_this.dataType === 'olap') {\n _this.olapEngineModule.renderEngine(_this.dataSourceSettings, _this.frameCustomProperties(_this.olapEngineModule.fieldListData, _this.olapEngineModule.fieldList));\n _this.pivotFieldList = _this.olapEngineModule.fieldList;\n var eventArgs = {\n pivotFieldList: _this.pivotFieldList,\n pivotValues: _this.olapEngineModule.pivotValues\n };\n var this$_2 = _this;\n control.trigger(events.enginePopulated, eventArgs, function (observedArgs) {\n this$_2.pivotFieldList = observedArgs.pivotFieldList;\n this$_2.olapEngineModule.pivotValues = isBlazor() ? _this.olapEngineModule.pivotValues : observedArgs.pivotValues;\n this$_2.notify(events.dataReady, {});\n this$_2.trigger(events.dataBound);\n });\n }\n });\n };\n /* eslint-enable */\n PivotFieldList.prototype.generateData = function () {\n this.pivotFieldList = {};\n if (this.dataSourceSettings && (this.dataSourceSettings.dataSource || this.dataSourceSettings.url)) {\n if ((this.dataSourceSettings.url !== '' && this.dataType === 'olap') ||\n this.dataSourceSettings.dataSource.length > 0) {\n if (this.dataType === 'pivot') {\n this.engineModule.data = this.dataSourceSettings.dataSource;\n }\n this.initEngine();\n }\n else if (this.dataSourceSettings.dataSource instanceof DataManager) {\n if (this.dataType === 'pivot' && this.remoteData.length > 0) {\n this.engineModule.data = this.remoteData;\n this.initEngine();\n }\n else {\n setTimeout(this.getData.bind(this), 100);\n }\n }\n }\n else if (isBlazor() && this.dataType === 'pivot' &&\n this.engineModule.data && this.engineModule.data.length > 0) {\n this.initEngine();\n }\n else {\n this.notify(events.dataReady, {});\n this.trigger(events.dataBound);\n }\n };\n PivotFieldList.prototype.getValueCellInfo = function (aggregateObj) {\n var args = aggregateObj;\n this.trigger(events.aggregateCellInfo, args);\n return args;\n };\n PivotFieldList.prototype.getData = function () {\n this.dataSourceSettings.dataSource.executeQuery(new Query()).then(this.executeQuery.bind(this));\n };\n PivotFieldList.prototype.executeQuery = function (e) {\n this.engineModule.data = e.result;\n this.initEngine();\n };\n PivotFieldList.prototype.fieldListRender = function () {\n this.element.innerHTML = '';\n var showDialog;\n if (this.renderMode === 'Popup' && this.dialogRenderer.fieldListDialog && !this.dialogRenderer.fieldListDialog.isDestroyed) {\n showDialog = this.dialogRenderer.fieldListDialog.visible;\n this.dialogRenderer.fieldListDialog.destroy();\n remove(document.getElementById(this.element.id + '_Wrapper'));\n }\n this.renderModule.render();\n if (this.renderMode === 'Popup') {\n this.fieldListSpinnerElement = this.dialogRenderer.fieldListDialog.element;\n if (showDialog) {\n this.dialogRenderer.fieldListDialog.show();\n }\n }\n else {\n this.fieldListSpinnerElement = this.element.querySelector('.e-pivotfieldlist-wrapper');\n }\n if (this.spinnerTemplate) {\n createSpinner({ target: this.fieldListSpinnerElement, template: this.spinnerTemplate }, this.createElement);\n }\n else {\n createSpinner({ target: this.fieldListSpinnerElement }, this.createElement);\n }\n var args;\n args = {\n pivotEngine: this.dataType === 'olap' ? this.olapEngineModule : this.engineModule,\n dataSourceSettings: this.dataSourceSettings,\n id: this.element.id,\n element: document.getElementById(this.element.id + '_Wrapper'),\n moduleName: this.getModuleName(),\n enableRtl: this.enableRtl,\n isAdaptive: this.isAdaptive,\n renderMode: this.renderMode,\n localeObj: this.localeObj,\n dataType: this.dataType\n };\n this.pivotCommon = new PivotCommon(args);\n this.pivotCommon.control = this;\n if (this.allowDeferLayoutUpdate) {\n this.clonedDataSource = extend({}, this.dataSourceSettings, null, true);\n this.clonedFieldList = extend({}, this.pivotFieldList, null, true);\n }\n };\n PivotFieldList.prototype.getFieldCaption = function (dataSourceSettings) {\n this.getFields(dataSourceSettings);\n if (this.captionData.length > 0) {\n var lnt = this.captionData.length;\n var engineModule = this.dataType === 'olap' ? this.olapEngineModule : this.engineModule;\n while (lnt--) {\n if (this.captionData[lnt]) {\n for (var _i = 0, _a = this.captionData[lnt]; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj) {\n if (engineModule.fieldList[obj.name]) {\n if (obj.caption) {\n engineModule.fieldList[obj.name].caption = obj.caption;\n }\n else {\n engineModule.fieldList[obj.name].caption = obj.name;\n }\n }\n }\n }\n }\n }\n }\n else {\n return;\n }\n };\n PivotFieldList.prototype.getFields = function (dataSourceSettings) {\n this.captionData =\n [dataSourceSettings.rows, dataSourceSettings.columns, dataSourceSettings.values, dataSourceSettings.filters]; /* eslint-disable-line */\n };\n /* eslint-disable */\n /**\n * Updates the PivotEngine using dataSource from Pivot Field List component.\n * @function updateDataSource\n * @returns {void}\n * @hidden\n */\n PivotFieldList.prototype.updateDataSource = function (isTreeViewRefresh, isEngineRefresh) {\n var _this = this;\n if (this.pivotGridModule) {\n this.pivotGridModule.showWaitingPopup();\n }\n showSpinner(this.fieldListSpinnerElement);\n var pivot = this;\n var control = pivot.isPopupView ? pivot.pivotGridModule : pivot;\n //setTimeout(() => {\n var isOlapDataRefreshed = false;\n var pageSettings = pivot.pivotGridModule && pivot.pivotGridModule.enableVirtualization ?\n pivot.pivotGridModule.pageSettings : undefined;\n var isCalcChange = Object.keys(pivot.lastCalcFieldInfo).length > 0 ? true : false;\n var isSorted = Object.keys(pivot.lastSortInfo).length > 0 ? true : false;\n var isAggChange = Object.keys(pivot.lastAggregationInfo).length > 0 ? true : false;\n var isFiltered = Object.keys(pivot.lastFilterInfo).length > 0 ? true : false;\n var args = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(pivot.dataSourceSettings)\n };\n control.trigger(events.enginePopulating, args, function (observedArgs) {\n if (!(pageSettings && (isSorted || isFiltered || isAggChange || isCalcChange))) {\n PivotUtil.updateDataSourceSettings(pivot, observedArgs.dataSourceSettings);\n PivotUtil.updateDataSourceSettings(pivot.pivotGridModule, observedArgs.dataSourceSettings);\n }\n if (isNullOrUndefined(isEngineRefresh)) {\n if (pivot.dataType === 'pivot') {\n var customProperties = pivot.frameCustomProperties();\n if (!isSorted) {\n customProperties.enableValueSorting = pivot.staticPivotGridModule ?\n pivot.staticPivotGridModule.enableValueSorting : pivot.enableValueSorting;\n }\n else {\n pivot.setProperties({ dataSourceSettings: { valueSortSettings: { headerText: '' } } }, true);\n customProperties.enableValueSorting = false;\n }\n customProperties.savedFieldList = pivot.pivotFieldList;\n if (pageSettings && (isSorted || isFiltered || isAggChange || isCalcChange)) {\n var interopArguments = {};\n if (isSorted) {\n pivot.pivotGridModule.setProperties({ dataSourceSettings: { valueSortSettings: { headerText: '' } } }, true);\n if ((isBlazor())) {\n interopArguments = { 'key': 'onSort', 'arg': pivot.lastSortInfo };\n }\n else if (control.dataSourceSettings.mode === 'Server') {\n control.getEngine('onSort', null, pivot.lastSortInfo, null, null, null, null);\n }\n else {\n pivot.engineModule.onSort(pivot.lastSortInfo);\n }\n pivot.lastSortInfo = {};\n }\n if (isFiltered) {\n if (isBlazor()) {\n var dataArgs = window['sfBlazor'].copyWithoutCircularReferences([pivot.dataSourceSettings.filterSettings], pivot.dataSourceSettings.filterSettings);\n interopArguments = {\n 'key': 'onFilter',\n 'arg': { 'lastFilterInfo': pivot.lastFilterInfo, 'filterSettings': dataArgs }\n };\n }\n else if (control.dataSourceSettings.mode === 'Server') {\n control.getEngine('onFilter', null, null, null, null, pivot.lastFilterInfo, null);\n }\n else {\n pivot.engineModule.onFilter(pivot.lastFilterInfo, pivot.dataSourceSettings);\n }\n pivot.lastFilterInfo = {};\n }\n if (isAggChange) {\n if (isBlazor()) {\n interopArguments = { 'key': 'onAggregation', 'arg': pivot.lastAggregationInfo };\n }\n else if (control.dataSourceSettings.mode === 'Server') {\n control.getEngine('onAggregation', null, null, pivot.lastAggregationInfo, null, null, null);\n }\n else {\n pivot.engineModule.onAggregation(pivot.lastAggregationInfo);\n }\n pivot.lastAggregationInfo = {};\n }\n if (isCalcChange) {\n if (isBlazor()) {\n interopArguments = {\n 'key': 'onCalcOperation',\n 'arg': {\n lastCalcFieldInfo: pivot.lastCalcFieldInfo,\n values: pivot.dataSourceSettings.values,\n calculatedFieldSettings: pivot.dataSourceSettings.calculatedFieldSettings\n }\n };\n }\n else if (control.dataSourceSettings.mode === 'Server') {\n control.getEngine('onCalcOperation', null, null, null, pivot.lastCalcFieldInfo, null, null);\n }\n else {\n pivot.engineModule.onCalcOperation(pivot.lastCalcFieldInfo);\n }\n pivot.lastCalcFieldInfo = {};\n }\n if (isBlazor()) {\n var args_1 = window['sfBlazor'].copyWithoutCircularReferences([interopArguments['arg']], interopArguments['arg']);\n pivot.pivotGridModule.interopAdaptor.invokeMethodAsync(\"PivotInteropMethod\", interopArguments['key'], args_1).then(function (data) {\n if (data === 0) {\n _this.pivotCommon.errorDialog.createErrorDialog(_this.localeObj.getConstant('error'), (pivot.dataSourceSettings.type === 'CSV' ?\n _this.localeObj.getConstant('invalidCSV') : _this.localeObj.getConstant('invalidJSON')));\n return;\n }\n else {\n pivot.pivotGridModule.updateBlazorData(data, pivot.pivotGridModule);\n pivot.getFieldCaption(pivot.dataSourceSettings);\n pivot.enginePopulatedEventMethod(pivot, isTreeViewRefresh, isOlapDataRefreshed);\n if (pivot.calculatedFieldModule && pivot.calculatedFieldModule.isRequireUpdate) {\n pivot.calculatedFieldModule.endDialog();\n pivot.calculatedFieldModule.isRequireUpdate = false;\n }\n }\n });\n }\n }\n else {\n if (isBlazor() && pageSettings) {\n var dataArgs = window['sfBlazor'].copyWithoutCircularReferences([pivot.dataSourceSettings.properties], pivot.dataSourceSettings.properties);\n pivot.pivotGridModule.interopAdaptor.invokeMethodAsync(\"PivotInteropMethod\", 'renderEngine', { 'dataSourceSettings': dataArgs, 'customProperties': customProperties }).then(function (data) {\n if (data === 0) {\n _this.pivotCommon.errorDialog.createErrorDialog(_this.localeObj.getConstant('error'), (pivot.dataSourceSettings.type === 'CSV' ?\n _this.localeObj.getConstant('invalidCSV') : _this.localeObj.getConstant('invalidJSON')));\n return;\n }\n else {\n pivot.pivotGridModule.updateBlazorData(data, pivot.pivotGridModule);\n pivot.getFieldCaption(pivot.dataSourceSettings);\n pivot.enginePopulatedEventMethod(pivot, isTreeViewRefresh, isOlapDataRefreshed);\n }\n });\n }\n else if (pivot.dataSourceSettings.mode === 'Server') {\n if (isSorted)\n control.getEngine('onSort', null, pivot.lastSortInfo, null, null, null, null);\n else if (isAggChange)\n control.getEngine('onAggregation', null, null, pivot.lastAggregationInfo, null, null, null);\n else if (isCalcChange)\n control.getEngine('onCalcOperation', null, null, null, pivot.lastCalcFieldInfo, null, null);\n else if (isFiltered)\n control.getEngine('onFilter', null, null, null, null, pivot.lastFilterInfo, null);\n else\n control.getEngine('onDrop', null, null, null, null, null, null);\n pivot.lastSortInfo = {};\n pivot.lastAggregationInfo = {};\n pivot.lastCalcFieldInfo = {};\n pivot.lastFilterInfo = {};\n }\n else {\n pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getValueCellInfo.bind(pivot));\n }\n }\n }\n else {\n isOlapDataRefreshed = pivot.updateOlapDataSource(pivot, isSorted, isCalcChange, isOlapDataRefreshed);\n }\n if (!(isBlazor() && pageSettings)) {\n pivot.getFieldCaption(pivot.dataSourceSettings);\n }\n }\n else {\n pivot.axisFieldModule.render();\n pivot.isRequiredUpdate = false;\n }\n if (!(isBlazor() && pageSettings)) {\n pivot.enginePopulatedEventMethod(pivot, isTreeViewRefresh, isOlapDataRefreshed);\n }\n });\n //});\n };\n /* eslint-enable */\n PivotFieldList.prototype.enginePopulatedEventMethod = function (pivot, isTreeViewRefresh, isOlapDataRefreshed) {\n var _this = this;\n var control = pivot.isPopupView ? pivot.pivotGridModule : pivot;\n var eventArgs = {\n dataSourceSettings: pivot.dataSourceSettings,\n pivotFieldList: pivot.dataType === 'pivot' ? pivot.engineModule.fieldList : pivot.olapEngineModule.fieldList,\n pivotValues: pivot.dataType === 'pivot' ? pivot.engineModule.pivotValues : pivot.olapEngineModule.pivotValues\n };\n control.trigger(events.enginePopulated, eventArgs, function (observedArgs) {\n var dataSource = pivot.dataSourceSettings.dataSource;\n if (isBlazor() && observedArgs.dataSourceSettings.dataSource instanceof Object) {\n observedArgs.dataSourceSettings.dataSource = dataSource;\n }\n pivot.dataSourceSettings = observedArgs.dataSourceSettings;\n pivot.pivotCommon.dataSourceSettings = pivot.dataSourceSettings;\n pivot.pivotFieldList = observedArgs.pivotFieldList;\n if (pivot.dataType === 'olap') {\n pivot.olapEngineModule.pivotValues = isBlazor() ? pivot.olapEngineModule.pivotValues : observedArgs.pivotValues;\n pivot.pivotCommon.engineModule = pivot.olapEngineModule;\n }\n else {\n pivot.engineModule.pivotValues = isBlazor() ? pivot.engineModule.pivotValues : observedArgs.pivotValues;\n pivot.pivotCommon.engineModule = pivot.engineModule;\n }\n if (!isTreeViewRefresh && pivot.treeViewModule.fieldTable && !pivot.isAdaptive) {\n pivot.notify(events.treeViewUpdate, {});\n }\n if (pivot.isRequiredUpdate) {\n if (pivot.allowDeferLayoutUpdate) {\n pivot.clonedDataSource = extend({}, pivot.dataSourceSettings, null, true);\n pivot.clonedFieldList = extend({}, pivot.pivotFieldList, null, true);\n }\n pivot.updateView(pivot.pivotGridModule);\n }\n else if (_this.isPopupView && pivot.allowDeferLayoutUpdate) {\n pivot.pivotGridModule.engineModule = pivot.engineModule;\n pivot.pivotGridModule.setProperties({\n dataSourceSettings: pivot.dataSourceSettings.properties /* eslint-disable-line */\n }, true);\n pivot.pivotGridModule.notify(events.uiUpdate, pivot);\n hideSpinner(pivot.fieldListSpinnerElement);\n }\n if (_this.isPopupView && pivot.pivotGridModule &&\n pivot.pivotGridModule.allowDeferLayoutUpdate && !pivot.isRequiredUpdate) {\n hideSpinner(pivot.fieldListSpinnerElement);\n pivot.pivotGridModule.hideWaitingPopup();\n }\n pivot.isRequiredUpdate = true;\n if (!pivot.pivotGridModule || isOlapDataRefreshed) {\n hideSpinner(pivot.fieldListSpinnerElement);\n }\n else {\n pivot.pivotGridModule.fieldListSpinnerElement = pivot.fieldListSpinnerElement;\n }\n });\n };\n PivotFieldList.prototype.updateOlapDataSource = function (pivot, isSorted, isCalcChange, isOlapDataRefreshed) {\n var customProperties = pivot.frameCustomProperties(pivot.olapEngineModule.fieldListData, pivot.olapEngineModule.fieldList);\n customProperties.savedFieldList = pivot.pivotFieldList;\n if (isCalcChange || isSorted) {\n pivot.olapEngineModule.savedFieldList = pivot.pivotFieldList;\n pivot.olapEngineModule.savedFieldListData = pivot.olapEngineModule.fieldListData;\n if (isCalcChange) {\n pivot.olapEngineModule.updateCalcFields(pivot.dataSourceSettings, pivot.lastCalcFieldInfo);\n pivot.lastCalcFieldInfo = {};\n isOlapDataRefreshed = pivot.olapEngineModule.dataFields[pivot.lastCalcFieldInfo.name] ? false : true;\n if (pivot.pivotGridModule) {\n pivot.pivotGridModule.hideWaitingPopup();\n }\n }\n else {\n pivot.olapEngineModule.onSort(pivot.dataSourceSettings);\n }\n }\n else {\n pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties);\n }\n return isOlapDataRefreshed;\n };\n /**\n * Updates the Pivot Field List component using dataSource from PivotView component.\n * @function update\n * @param {PivotView} control - Pass the instance of pivot table component.\n * @returns {void}\n */\n PivotFieldList.prototype.update = function (control) {\n if (isBlazor() && control !== undefined) {\n /* eslint-disable */\n var pivotId = control.ID;\n var pivotInstance = getInstance('#' + pivotId, PivotView);\n control = pivotInstance;\n /* eslint-enable */\n }\n if (control) {\n this.clonedDataSet = control.clonedDataSet;\n if (isBlazor() && !this.isPopupView) {\n PivotUtil.updateDataSourceSettings(this, PivotUtil.getClonedDataSourceSettings(control.dataSourceSettings));\n }\n else {\n this.setProperties({ dataSourceSettings: control.dataSourceSettings }, true);\n }\n this.engineModule = control.engineModule;\n this.olapEngineModule = control.olapEngineModule;\n this.dataType = control.dataType;\n this.pivotFieldList = this.dataType === 'olap' ? control.olapEngineModule.fieldList : control.engineModule.fieldList;\n if (this.isPopupView) {\n this.pivotGridModule = control;\n }\n else {\n this.staticPivotGridModule = control;\n }\n this.getFieldCaption(control.dataSourceSettings);\n this.pivotCommon.engineModule = this.dataType === 'olap' ? this.olapEngineModule : this.engineModule;\n this.pivotCommon.dataSourceSettings = this.dataSourceSettings;\n this.pivotCommon.control = this;\n if (this.treeViewModule.fieldTable && !this.isAdaptive) {\n this.notify(events.treeViewUpdate, {});\n }\n this.axisFieldModule.render();\n if (!this.isPopupView && this.allowDeferLayoutUpdate) {\n this.clonedDataSource = extend({}, this.dataSourceSettings, null, true);\n this.clonedFieldList = extend({}, this.pivotFieldList, null, true);\n }\n }\n };\n /**\n * Updates the PivotView component using dataSource from Pivot Field List component.\n * @function updateView\n * @param {PivotView} control - Pass the instance of pivot table component.\n * @returns {void}\n */\n PivotFieldList.prototype.updateView = function (control) {\n if (isBlazor() && control !== undefined) {\n /* eslint-disable */\n var pivotId = control.ID;\n var pivotInstance = getInstance('#' + pivotId, PivotView);\n control = pivotInstance;\n /* eslint-enable */\n }\n if (control) {\n control.clonedDataSet = this.clonedDataSet;\n if (isBlazor()) {\n PivotUtil.updateDataSourceSettings(control, PivotUtil.getClonedDataSourceSettings(this.dataSourceSettings));\n }\n else {\n control.setProperties({ dataSourceSettings: this.dataSourceSettings }, true);\n }\n control.engineModule = this.engineModule;\n control.olapEngineModule = this.olapEngineModule;\n control.dataType = this.dataType;\n if (!this.pivotChange) {\n control.pivotValues = this.dataType === 'olap' ? this.olapEngineModule.pivotValues : this.engineModule.pivotValues;\n }\n var eventArgs = {\n dataSourceSettings: PivotUtil.getClonedDataSourceSettings(control.dataSourceSettings),\n pivotValues: control.pivotValues\n };\n control.trigger(events.fieldListRefreshed, eventArgs);\n if (!this.isPopupView) {\n this.staticPivotGridModule = control;\n control.isStaticRefresh = true;\n }\n if (control.enableVirtualization && isBlazor()) {\n control.renderPivotGrid();\n }\n else {\n control.dataBind();\n }\n }\n };\n /* eslint-disable-next-line */\n /**\n * Called internally to trigger populate event.\n * @hidden\n */\n PivotFieldList.prototype.triggerPopulateEvent = function () {\n var _this = this;\n var control = this.isPopupView ? this.pivotGridModule : this;\n var eventArgs = {\n dataSourceSettings: this.dataSourceSettings,\n pivotFieldList: this.dataType === 'olap' ? this.olapEngineModule.fieldList : this.engineModule.fieldList,\n pivotValues: this.dataType === 'olap' ? this.olapEngineModule.pivotValues : this.engineModule.pivotValues\n };\n control.trigger(events.enginePopulated, eventArgs, function (observedArgs) {\n _this.dataSourceSettings = observedArgs.dataSourceSettings;\n _this.pivotFieldList = observedArgs.pivotFieldList;\n if (_this.dataType === 'olap') {\n _this.olapEngineModule.pivotValues = isBlazor() ? _this.olapEngineModule.pivotValues : observedArgs.pivotValues;\n }\n else {\n _this.engineModule.pivotValues = isBlazor() ? _this.engineModule.pivotValues : observedArgs.pivotValues;\n }\n });\n };\n /**\n * Destroys the Field Table component.\n * @function destroy\n * @returns {void}\n */\n PivotFieldList.prototype.destroy = function () {\n this.unWireEvent();\n if (this.engineModule) {\n this.engineModule.fieldList = {};\n this.engineModule.rMembers = null;\n this.engineModule.cMembers = null;\n this.engineModule.valueMatrix = null;\n this.engineModule.indexMatrix = null;\n this.engineModule = {};\n }\n if (this.olapEngineModule) {\n this.olapEngineModule.fieldList = {};\n this.olapEngineModule = {};\n }\n if (this.pivotFieldList) {\n this.pivotFieldList = {};\n }\n if (this.captionData) {\n this.captionData = null;\n }\n if (this.contextMenuModule) {\n this.contextMenuModule.destroy();\n }\n if (this.treeViewModule) {\n this.treeViewModule.destroy();\n }\n if (this.pivotButtonModule) {\n this.pivotButtonModule.destroy();\n }\n if (this.pivotCommon) {\n this.pivotCommon.destroy();\n }\n if (this.dialogRenderer) {\n this.dialogRenderer.destroy();\n }\n if (this.calculatedFieldModule) {\n this.calculatedFieldModule.destroy();\n }\n _super.prototype.destroy.call(this);\n if (this.contextMenuModule) {\n this.contextMenuModule = null;\n }\n if (this.treeViewModule) {\n this.treeViewModule = null;\n }\n if (this.pivotButtonModule) {\n this.pivotButtonModule = null;\n }\n if (this.pivotCommon) {\n this.pivotCommon = null;\n }\n if (this.dialogRenderer) {\n this.dialogRenderer = null;\n }\n if (this.calculatedFieldModule) {\n this.calculatedFieldModule = null;\n }\n if (this.axisFieldModule) {\n this.axisFieldModule = null;\n }\n if (this.axisTableModule) {\n this.axisTableModule = null;\n }\n if (this.renderModule) {\n this.renderModule = null;\n }\n if (this.clonedDataSet) {\n this.clonedDataSet = null;\n }\n if (this.clonedFieldList) {\n this.clonedFieldList = null;\n }\n if (this.localeObj) {\n this.localeObj = null;\n }\n if (this.defaultLocale) {\n this.defaultLocale = null;\n }\n this.element.innerHTML = '';\n removeClass([this.element], cls.ROOT);\n removeClass([this.element], cls.RTL);\n removeClass([this.element], cls.DEVICE);\n };\n __decorate([\n Complex({}, DataSourceSettings)\n ], PivotFieldList.prototype, \"dataSourceSettings\", void 0);\n __decorate([\n Property('Popup')\n ], PivotFieldList.prototype, \"renderMode\", void 0);\n __decorate([\n Property()\n ], PivotFieldList.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], PivotFieldList.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], PivotFieldList.prototype, \"allowCalculatedField\", void 0);\n __decorate([\n Property(false)\n ], PivotFieldList.prototype, \"showValuesButton\", void 0);\n __decorate([\n Property(false)\n ], PivotFieldList.prototype, \"allowDeferLayoutUpdate\", void 0);\n __decorate([\n Property(1000)\n ], PivotFieldList.prototype, \"maxNodeLimitInMemberEditor\", void 0);\n __decorate([\n Property(true)\n ], PivotFieldList.prototype, \"loadOnDemandInMemberEditor\", void 0);\n __decorate([\n Property()\n ], PivotFieldList.prototype, \"spinnerTemplate\", void 0);\n __decorate([\n Property(['Sum', 'Count', 'DistinctCount', 'Product', 'Min', 'Max', 'Avg', 'Median', 'Index', 'PopulationVar', 'SampleVar', 'PopulationStDev', 'SampleStDev', 'RunningTotals', 'PercentageOfGrandTotal', 'PercentageOfColumnTotal', 'PercentageOfRowTotal', 'PercentageOfParentColumnTotal', 'PercentageOfParentRowTotal', 'DifferenceFrom', 'PercentageOfDifferenceFrom', 'PercentageOfParentTotal'])\n ], PivotFieldList.prototype, \"aggregateTypes\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"enginePopulating\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"memberFiltering\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"enginePopulated\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"onFieldDropped\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"fieldDrop\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"fieldDragStart\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"aggregateCellInfo\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"memberEditorOpen\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"calculatedFieldCreate\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"aggregateMenuOpen\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"fieldRemove\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], PivotFieldList.prototype, \"beforeServiceInvoke\", void 0);\n PivotFieldList = __decorate([\n NotifyPropertyChanges\n ], PivotFieldList);\n return PivotFieldList;\n}(Component));\nexport { PivotFieldList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { PivotFieldList } from '@syncfusion/ej2-pivotview';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `PivotFieldListComponent` represents the react PivotFieldList.\n * ```tsx\n * \n * ```\n */\nvar PivotFieldListComponent = /** @class */ (function (_super) {\n __extends(PivotFieldListComponent, _super);\n function PivotFieldListComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n PivotFieldListComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return PivotFieldListComponent;\n}(PivotFieldList));\nexport { PivotFieldListComponent };\napplyMixins(PivotFieldListComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n this.trigger('change', { value: value, event: event });\n if (this.tagName === 'EJS-RADIOBUTTON') {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.element.parentElement;\n _super.prototype.destroy.call(this);\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n if (this.isVue && value && value === this.value) {\n this.checked = true;\n }\n if (this.isVue ? this.value && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([label], this.cssClass.split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelRippleHandler = function (e) {\n var ripple = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, ripple);\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([label], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([label], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (!isNullOrUndefined(this.htmlAttributes) && this.htmlAttributes.value) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.element.parentElement;\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[key].split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.getLabel();\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelRippleHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelRippleHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelRippleHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelRippleHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, KeyboardEvents, rippleEffect } from '@syncfusion/ej2-base';\nimport { getUniqueID, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isVisible, closest, attributes, detach, select, addClass, append } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Collection, Animation } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, selectAll, SanitizeHtmlHelper, isRippleEnabled } from '@syncfusion/ej2-base';\nvar CLS_ACRDN_ROOT = 'e-acrdn-root';\nvar CLS_ROOT = 'e-accordion';\nvar CLS_ITEM = 'e-acrdn-item';\nvar CLS_ITEMFOCUS = 'e-item-focus';\nvar CLS_ITEMHIDE = 'e-hide';\nvar CLS_HEADER = 'e-acrdn-header';\nvar CLS_HEADERICN = 'e-acrdn-header-icon';\nvar CLS_HEADERCTN = 'e-acrdn-header-content';\nvar CLS_CONTENT = 'e-acrdn-panel';\nvar CLS_CTENT = 'e-acrdn-content';\nvar CLS_TOOGLEICN = 'e-toggle-icon';\nvar CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nvar CLS_EXPANDICN = 'e-expand-icon';\nvar CLS_RTL = 'e-rtl';\nvar CLS_CTNHIDE = 'e-content-hide';\nvar CLS_SLCT = 'e-select';\nvar CLS_SLCTED = 'e-selected';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_ANIMATE = 'e-animate';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_TOGANIMATE = 'e-toggle-animation';\nvar CLS_NEST = 'e-nested';\nvar CLS_EXPANDSTATE = 'e-expand-state';\nvar CLS_CONTAINER = 'e-accordion-container';\n/**\n * Objects used for configuring the Accordion expanding item action properties.\n */\nvar AccordionActionSettings = /** @class */ (function (_super) {\n __extends(AccordionActionSettings, _super);\n function AccordionActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], AccordionActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AccordionActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], AccordionActionSettings.prototype, \"easing\", void 0);\n return AccordionActionSettings;\n}(ChildProperty));\nexport { AccordionActionSettings };\n/**\n * Objects used for configuring the Accordion animation properties.\n */\nvar AccordionAnimationSettings = /** @class */ (function (_super) {\n __extends(AccordionAnimationSettings, _super);\n function AccordionAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"expand\", void 0);\n return AccordionAnimationSettings;\n}(ChildProperty));\nexport { AccordionAnimationSettings };\n/**\n * An item object that is used to configure Accordion items.\n */\nvar AccordionItem = /** @class */ (function (_super) {\n __extends(AccordionItem, _super);\n function AccordionItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"content\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"expanded\", void 0);\n __decorate([\n Property(true)\n ], AccordionItem.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"disabled\", void 0);\n __decorate([\n Property()\n ], AccordionItem.prototype, \"id\", void 0);\n return AccordionItem;\n}(ChildProperty));\nexport { AccordionItem };\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n *
    \n * \n * ```\n */\nvar Accordion = /** @class */ (function (_super) {\n __extends(Accordion, _super);\n /**\n * Initializes a new instance of the Accordion class.\n *\n * @param {AccordionModel} options - Specifies Accordion model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as an Accordion.\n */\n function Accordion(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n _this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Accordion.prototype.destroy = function () {\n var _this = this;\n if (this.isReact) {\n this.clearTemplate();\n }\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n [].slice.call(ele.children).forEach(function (el) {\n ele.removeChild(el);\n });\n if (this.trgtEle) {\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n ['aria-disabled', 'aria-multiselectable', 'role', 'data-ripple'].forEach(function (attrb) {\n _this.element.removeAttribute(attrb);\n });\n if (!this.isNested && isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n Accordion.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (!isNOU(nested)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Accordion.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Accordion.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Accordion.prototype.render = function () {\n if (!this.isServerRendered) {\n this.initializeheaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\n }\n else {\n this.wireFocusEvents();\n }\n this.wireEvents();\n this.renderComplete();\n };\n Accordion.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n setStyle(this.element, { 'width': width, 'height': height });\n var ariaAttr = {\n 'aria-disabled': 'false', 'role': 'presentation', 'aria-multiselectable': 'true'\n };\n if (isNOU(this.initExpand)) {\n this.initExpand = [];\n }\n if (this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n attributes(this.element, ariaAttr);\n if (this.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n Accordion.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n };\n Accordion.prototype.wireFocusEvents = function () {\n var acrdItem = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM));\n for (var _i = 0, acrdItem_1 = acrdItem; _i < acrdItem_1.length; _i++) {\n var item = acrdItem_1[_i];\n var headerEle = item.querySelector('.' + CLS_HEADER);\n if (item.childElementCount > 0 && headerEle) {\n EventHandler.clearEvents(headerEle);\n EventHandler.add(headerEle, 'focus', this.focusIn, this);\n EventHandler.add(headerEle, 'blur', this.focusOut, this);\n }\n }\n };\n Accordion.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n };\n Accordion.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + CLS_HEADER });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n };\n Accordion.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n Accordion.prototype.initializeheaderTemplate = function () {\n if (this.headerTemplate) {\n this.headerTemplateFn = this.templateParser(this.headerTemplate);\n }\n };\n Accordion.prototype.initializeItemTemplate = function () {\n if (this.itemTemplate) {\n this.itemTemplateFn = this.templateParser(this.itemTemplate);\n }\n };\n /* eslint-disable */\n Accordion.prototype.getheaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /* eslint-disable */\n Accordion.prototype.getItemTemplate = function () {\n return this.itemTemplateFn;\n };\n Accordion.prototype.focusIn = function (e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n };\n Accordion.prototype.focusOut = function (e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n };\n Accordion.prototype.ctrlTemplate = function () {\n this.ctrlTem = this.element.cloneNode(true);\n var innerEles;\n var rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n }\n else {\n innerEles = this.element.children;\n }\n var items = [];\n /* eslint-disable */\n [].slice.call(innerEles).forEach(function (el) {\n items.push({\n header: (el.childElementCount > 0 && el.children[0]) ? (el.children[0]) : '',\n content: (el.childElementCount > 1 && el.children[1]) ? (el.children[1]) : ''\n });\n el.parentNode.removeChild(el);\n });\n /* eslint-enable */\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({ items: items }, true);\n };\n Accordion.prototype.toggleIconGenerate = function () {\n var tglIcon = this.createElement('div', { className: CLS_TOOGLEICN });\n var hdrColIcon = this.createElement('span', { className: CLS_COLLAPSEICN });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n };\n Accordion.prototype.initItemExpand = function () {\n var len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n }\n else {\n for (var i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.renderItems = function () {\n var _this = this;\n var ele = this.element;\n var innerItem;\n var innerDataSourceItem;\n if (!isNOU(this.trgtEle)) {\n this.ctrlTemplate();\n }\n if (this.dataSource.length > 0) {\n this.dataSource.forEach(function (item, index) {\n innerDataSourceItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerDataSourceItem);\n if (innerDataSourceItem.childElementCount > 0) {\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n else {\n var items = this.items;\n if (ele && items.length > 0) {\n items.forEach(function (item, index) {\n innerItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var items = this.getItems();\n var eventArgs = {};\n var tglIcon;\n var acrdEle = closest(trgt, '.' + CLS_ROOT);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n var acrdnItem = closest(trgt, '.' + CLS_ITEM);\n var acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n var acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNOU(acrdnHdr) || isNOU(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n var acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM);\n }\n else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM);\n }\n var index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n var ctnCheck = !isNOU(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNOU(acrdnCtn) || !isNOU(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n if (!this.isServerRendered) {\n acrdnItem.appendChild(this.contentRendering(index));\n this.ariaAttrUpdate(acrdnItem);\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n else {\n var id = acrdnItem.id;\n if (this.items.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnItemClick', index).then(function () {\n if (_this.isDestroyed) {\n return;\n }\n _this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDataClick', id).then(function () {\n if (_this.isDestroyed) {\n return;\n }\n _this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n });\n }\n }\n }\n else {\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.afterContentRender = function (trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem) {\n var _this = this;\n var acrdActive = [];\n this.trigger('clicked', eventArgs);\n var cntclkCheck = (acrdnCtn && !isNOU(select('.e-target', acrdnCtn)));\n var inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT;\n var inlineEleAcrdn = acrdnCtn && !isNOU(select('.' + CLS_ROOT, acrdnCtn)) && isNOU(closest(trgt, inlineAcrdnSel));\n var nestContCheck = acrdnCtn && isNOU(select('.' + CLS_ROOT, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT) === this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n var acrdcontainer = this.element.querySelector('.' + CLS_CONTAINER);\n var acrdnchild = (acrdcontainer) ? acrdcontainer.children : this.element.children;\n [].slice.call(acrdnchild).forEach(function (el) {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n var acrdAniEle = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (var _i = 0, acrdAniEle_1 = acrdAniEle; _i < acrdAniEle_1.length; _i++) {\n var el = acrdAniEle_1[_i];\n acrdActive.push(el.parentElement);\n }\n }\n var sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n var sameHeader = false;\n if (!isNOU(acrdnItem) && !isNOU(acrdnHdr)) {\n var acrdnCtn_1 = select('.' + CLS_CONTENT, acrdnItem);\n var acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNOU(acrdnCtn_1)) {\n return;\n }\n sameHeader = (expandState === acrdnItem);\n if (isVisible(acrdnCtn_1) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n this.collapse(acrdnCtn_1);\n }\n else {\n if ((acrdActive.length > 0) && this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach(function (el) {\n _this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n this.expand(acrdnCtn_1);\n }\n if (!isNOU(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n };\n Accordion.prototype.eleMoveFocus = function (action, root, trgt) {\n var clst;\n var clstItem = closest(trgt, '.' + CLS_ITEM);\n if (trgt === root) {\n clst = ((action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER));\n }\n else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = (action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling);\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n };\n Accordion.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n var header = closest(e.target, CLS_HEADER);\n if (isNOU(header) && !trgt.classList.contains(CLS_ROOT) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n var clst;\n var root = this.element;\n var content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNOU(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n }\n else {\n trgt.click();\n }\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n break;\n }\n };\n Accordion.prototype.headerEleGenerate = function () {\n var header = this.createElement('div', { className: CLS_HEADER, id: getUniqueID('acrdn_header') });\n var items = this.getItems();\n var ariaAttr = {\n 'tabindex': '0', 'role': 'heading', 'aria-selected': 'false', 'aria-label': 'collapsed',\n 'aria-disabled': 'false', 'aria-level': items.length.toString()\n };\n attributes(header, ariaAttr);\n return header;\n };\n Accordion.prototype.renderInnerItem = function (item, index) {\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.id = getUniqueID('acrdn_item');\n if (isNOU(item.id)) {\n item.id = innerEle.id;\n }\n attributes(innerEle, { 'aria-expanded': 'false' });\n if (this.headerTemplate) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n append(this.getheaderTemplate()(item, this, 'headerTemplate', this.element.id + '_headerTemplate', false), hdrEle);\n innerEle.appendChild(ctnEle);\n ctnEle.appendChild(this.toggleIconGenerate());\n this.add(innerEle, CLS_SLCT);\n return innerEle;\n }\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n if (this.enableHtmlSanitizer && typeof (item.header) === 'string') {\n item.header = SanitizeHtmlHelper.sanitize(item.header);\n }\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, item.header, index, true));\n innerEle.appendChild(ctnEle);\n }\n var hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNOU(index) && (!this.enablePersistence)) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n addClass([innerEle], item.cssClass.split(' '));\n }\n if (item.disabled) {\n addClass([innerEle], CLS_DISABLE);\n }\n if (item.visible === false) {\n addClass([innerEle], CLS_ITEMHIDE);\n }\n if (item.iconCss) {\n var hdrIcnEle = this.createElement('div', { className: CLS_HEADERICN });\n var icon = this.createElement('span', { className: item.iconCss + ' e-icons' });\n hdrIcnEle.appendChild(icon);\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n }\n else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n var hdrIcon = this.toggleIconGenerate();\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n };\n Accordion.prototype.angularnativeCondiCheck = function (item, prop) {\n var property = prop === 'content' ? item.content : item.header;\n var content = property;\n if (this.isAngular && !isNOU(content.elementRef)) {\n var data = content.elementRef.nativeElement.data;\n if (isNOU(data) || data === '' || (data.indexOf('bindings=') === -1)) {\n return true;\n }\n var parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNOU(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Accordion.prototype.fetchElement = function (ele, value, index, isHeader) {\n /* eslint-disable */\n var templateFn;\n var temString;\n try {\n if (document.querySelectorAll(value).length && value !== 'Button') {\n var eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n catch (e) {\n if (typeof (value) === 'string') {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(value);\n /* eslint-disable */\n }\n else if (!isNOU(this.trgtEle) && (value instanceof (HTMLElement))) {\n ele.appendChild(value);\n ele.firstElementChild.style.display = '';\n /* eslint-enable */\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n var tempArray;\n if (!isNOU(templateFn)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var templateProps = void 0;\n var templateName = void 0;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n templateName = 'header';\n }\n else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n templateName = 'content';\n }\n tempArray = templateFn({}, this, templateName, templateProps, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0 && !(isNOU(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(value);\n }\n if (!isNOU(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n };\n Accordion.prototype.ariaAttrUpdate = function (itemEle) {\n var header = select('.' + CLS_HEADER, itemEle);\n var content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n content.setAttribute('role', 'definition');\n };\n Accordion.prototype.contentRendering = function (index) {\n var itemcnt = this.createElement('div', { className: CLS_CONTENT + ' ' + CLS_CTNHIDE, id: getUniqueID('acrdn_panel') });\n attributes(itemcnt, { 'aria-hidden': 'true' });\n var ctn = this.createElement('div', { className: CLS_CTENT });\n if (this.dataSource.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n append(this.getItemTemplate()(this.dataSource[index], this, 'itemTemplate', this.element.id + '_itemTemplate', false), ctn);\n itemcnt.appendChild(ctn);\n }\n else {\n if (this.enableHtmlSanitizer && typeof (this.items[index].content)) {\n this.items[index].content = SanitizeHtmlHelper.sanitize(this.items[index].content);\n }\n itemcnt.appendChild(this.fetchElement(ctn, this.items[index].content, index, false));\n }\n return itemcnt;\n };\n Accordion.prototype.expand = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || (isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true') || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n var animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n _this.expandedItemsPush(trgtItemEle);\n if (!isNOU(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if ((animation.name === 'None')) {\n _this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.expandAnimation(animation.name, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.expandAnimation = function (ef, icn, trgt, trgtItemEle, animate, args) {\n var _this = this;\n var height;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgt.style.maxHeight = (trgt.offsetHeight) + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = function () {\n trgtItemEle.style.minHeight = (height + trgt.offsetHeight) + 'px';\n };\n animate.end = function () {\n setStyle(trgt, { 'position': '', 'maxHeight': '' });\n trgtItemEle.style.minHeight = '';\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n else {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = function () {\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.expandProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgtItemEle, { 'aria-expanded': 'true' });\n attributes(trgt.previousElementSibling, { 'aria-selected': 'true', 'aria-label': 'expanded' });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n };\n Accordion.prototype.expandedItemsPush = function (item) {\n var index = this.getIndexByItem(item);\n if (this.expandedIndices.indexOf(index) === -1) {\n var temp = [].slice.call(this.expandedIndices);\n temp.push(index);\n this.setProperties({ expandedIndices: temp }, true);\n }\n };\n Accordion.prototype.getIndexByItem = function (item) {\n var itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n };\n Accordion.prototype.getItemElements = function () {\n var itemEle = [];\n var itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach(function (el) {\n if (el.classList.contains(CLS_ITEM)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n };\n Accordion.prototype.expandedItemsPop = function (item) {\n var index = this.getIndexByItem(item);\n var temp = [].slice.call(this.expandedIndices);\n temp.splice(temp.indexOf(index), 1);\n this.setProperties({ expandedIndices: temp }, true);\n };\n Accordion.prototype.collapse = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || !isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n _this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if ((animation.name === 'None')) {\n _this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.collapseAnimation(animation.name, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.collapseAnimation = function (ef, trgt, trgtItEl, icn, animate, args) {\n var _this = this;\n var height;\n var trgtHeight;\n var itemHeight;\n var remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = function () {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = function () {\n remain = ((height - (trgtHeight - trgt.offsetHeight)));\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = function () {\n trgt.style.display = 'none';\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyle(trgt, { 'position': '', 'maxHeight': '', 'display': '' });\n };\n }\n else {\n animate.begin = function () {\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = function () {\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.collapseProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgtItemEle, { 'aria-expanded': 'false' });\n attributes(trgt.previousElementSibling, { 'aria-selected': 'false', 'aria-label': 'collapsed' });\n this.trigger('expanded', eventArgs);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Accordion.prototype.getModuleName = function () {\n return 'accordion';\n };\n Accordion.prototype.itemAttribUpdate = function () {\n var items = this.getItems();\n var itemEle = this.getItemElements();\n var itemLen = items.length;\n itemEle.forEach(function (ele) {\n select('.' + CLS_HEADER, ele).setAttribute('aria-level', '' + itemLen);\n });\n };\n Accordion.prototype.getItems = function () {\n var items;\n if (this.itemTemplate && this.headerTemplate) {\n items = this.dataSource;\n }\n else {\n items = this.items;\n }\n return items;\n };\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n *\n * @param {AccordionItemModel | AccordionItemModel[] | Object | Object[]} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns {void}\n */\n Accordion.prototype.addItem = function (item, index) {\n var _this = this;\n var ele = this.element;\n var itemEle = this.getItemElements();\n var items = this.getItems();\n if (isNOU(index)) {\n index = items.length;\n }\n if (ele.childElementCount >= index) {\n var addItems = (item instanceof Array) ? item : [item];\n addItems.forEach(function (addItem, i) {\n var itemIndex = index + i;\n items.splice(itemIndex, 0, addItem);\n var innerItemEle = _this.renderInnerItem(addItem, itemIndex);\n if (ele.childElementCount === itemIndex) {\n ele.appendChild(innerItemEle);\n }\n else {\n ele.insertBefore(innerItemEle, itemEle[itemIndex]);\n }\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n _this.itemAttribUpdate();\n _this.expandedIndices = [];\n _this.expandedItemRefresh(ele);\n if (addItem && addItem.expanded) {\n _this.expandItem(true, itemIndex);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Accordion.prototype.expandedItemRefresh = function (ele) {\n var _this = this;\n var itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach(function (el) {\n if (el.classList.contains(CLS_SLCTED)) {\n _this.expandedItemsPush(el);\n }\n });\n };\n /**\n * Dynamically removes item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be removed.\n * @returns {void}.\n */\n Accordion.prototype.removeItem = function (index) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['headerTemplate', 'itemTemplate'], index);\n }\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n var items = this.getItems();\n if (isNOU(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n items.splice(index, 1);\n this.itemAttribUpdate();\n this.expandedIndices = [];\n this.expandedItemRefresh(this.element);\n };\n /**\n * Sets focus to the specified index item header in Accordion.\n *\n * @param {number} index - Number value that determines which item should be focused.\n * @returns {void}.\n */\n Accordion.prototype.select = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele) || isNOU(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n };\n /**\n * Shows or hides the specified item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns {void}.\n */\n Accordion.prototype.hideItem = function (index, isHidden) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele)) {\n return;\n }\n if (isNOU(isHidden)) {\n isHidden = true;\n }\n if (isHidden) {\n this.add(ele, CLS_ITEMHIDE);\n }\n else {\n this.remove(ele, CLS_ITEMHIDE);\n }\n };\n /**\n * Enables/Disables the specified Accordion item.\n *\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns {void}.\n */\n Accordion.prototype.enableItem = function (index, isEnable) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele)) {\n return;\n }\n var eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE);\n attributes(eleHeader, { 'tabindex': '0', 'aria-disabled': 'false' });\n eleHeader.focus();\n }\n else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n };\n /**\n * Refresh the Accordion component.\n *\n * @returns {void}.\n */\n Accordion.prototype.refresh = function () {\n if (!this.isServerRendered) {\n _super.prototype.refresh.call(this);\n }\n };\n /**\n * Expands/Collapses the specified Accordion item.\n *\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns {void}.\n */\n Accordion.prototype.expandItem = function (isExpand, index) {\n var _this = this;\n var itemEle = this.getItemElements();\n if (isNOU(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n var ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n }\n else {\n var item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach(function (el) {\n _this.itemExpand(isExpand, el, _this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n var expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n }\n else {\n var ele = itemEle[index];\n if (isNOU(ele) || !ele.classList.contains(CLS_SLCT) || (ele.classList.contains(CLS_ACTIVE) && isExpand)) {\n return;\n }\n else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n };\n Accordion.prototype.itemExpand = function (isExpand, ele, index) {\n var _this = this;\n var ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (isNOU(ctn) && isExpand) {\n if (!this.isServerRendered) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.ariaAttrUpdate(ele);\n this.expand(ctn);\n }\n else {\n var id = ele.id;\n if (this.items.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnItemClick', index).then(function () {\n if (_this.isDestroyed) {\n return;\n }\n ctn = ele.children[1];\n _this.expand(ctn);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDataClick', id).then(function () {\n if (_this.isDestroyed) {\n return;\n }\n ctn = ele.children[1];\n _this.expand(ctn);\n });\n }\n }\n }\n else if (!isNOU(ctn)) {\n if (isExpand) {\n this.expand(ctn);\n }\n else {\n this.collapse(ctn);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n };\n Accordion.prototype.restoreContent = function (index) {\n var ctnElePos;\n if (isNOU(index)) {\n ctnElePos = this.element;\n }\n else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM)[index];\n }\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Accordion.prototype.updateItem = function (item, index) {\n if (!isNOU(item)) {\n var items = this.getItems();\n var itemObj = items[index];\n items.splice(index, 1);\n this.restoreContent(index);\n detach(item);\n this.addItem(itemObj, index);\n }\n };\n Accordion.prototype.setTemplate = function (template, toElement, index) {\n toElement.innerHTML = '';\n this.templateCompile(toElement, template, index);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Accordion.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.fetchElement(tempEle, cnt, index, false);\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Accordion.prototype.getPersistData = function () {\n var keyEntity = ['expandedIndices'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {AccordionModel} newProp - It contains the new value of data.\n * @param {AccordionModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Accordion.prototype.onPropertyChanged = function (newProp, oldProp) {\n var acrdn = this.element;\n var isRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (this.isServerRendered) {\n this.wireFocusEvents();\n break;\n }\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var j = 0; j < changedProp.length; j++) {\n var index = parseInt(Object.keys(newProp.items)[j], 10);\n var property = Object.keys(newProp.items[index])[0];\n var item = selectAll('.' + CLS_ITEM, this.element)[index];\n var oldVal = Object(oldProp.items[index])[property];\n var newVal = Object(newProp.items[index])[property];\n var temp = property;\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property === 'cssClass' && !isNOU(item)) {\n item.classList.remove(oldVal);\n item.classList.add(newVal);\n }\n if (property === 'visible' && !isNOU(item)) {\n if (Object(newProp.items[index])[property] === false) {\n item.classList.add(CLS_ITEMHIDE);\n }\n else {\n item.classList.remove(CLS_ITEMHIDE);\n }\n }\n if (property === 'disabled' && !isNOU(item)) {\n this.enableItem(index, !newVal);\n }\n if (property === 'content' && !isNOU(item) && item.children.length === 2) {\n if (typeof newVal === 'function') {\n var activeContent = item.querySelector('.' + CLS_CTENT);\n activeContent.innerHTML = '';\n this.setTemplate(newVal, activeContent, index);\n }\n else {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n }\n else {\n isRefresh = true;\n }\n break;\n case 'dataSource':\n case 'expandedIndices':\n if (this.expandedIndices === null) {\n this.expandedIndices = [];\n }\n isRefresh = true;\n break;\n case 'headerTemplate':\n this.initializeheaderTemplate();\n isRefresh = true;\n break;\n case 'itemTemplate':\n this.initializeItemTemplate();\n isRefresh = true;\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(acrdn, CLS_RTL);\n }\n else {\n this.remove(acrdn, CLS_RTL);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyle(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n if (this.expandedIndices.length > 1) {\n this.expandItem(false);\n }\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n break;\n }\n }\n if (isRefresh && !this.isServerRendered) {\n this.initExpand = [];\n if (this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n };\n __decorate([\n Collection([], AccordionItem)\n ], Accordion.prototype, \"items\", void 0);\n __decorate([\n Property([])\n ], Accordion.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('100%')\n ], Accordion.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Accordion.prototype, \"height\", void 0);\n __decorate([\n Property([])\n ], Accordion.prototype, \"expandedIndices\", void 0);\n __decorate([\n Property('Multiple')\n ], Accordion.prototype, \"expandMode\", void 0);\n __decorate([\n Property(false)\n ], Accordion.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, AccordionAnimationSettings)\n ], Accordion.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"destroyed\", void 0);\n Accordion = __decorate([\n NotifyPropertyChanges\n ], Accordion);\n return Accordion;\n}(Component));\nexport { Accordion };\n","import { Dialog, Tooltip } from '@syncfusion/ej2-popups';\nimport { Droppable, createElement, extend, remove, addClass, closest, getInstance, isBlazor, select } from '@syncfusion/ej2-base';\nimport { prepend, append, KeyboardEvents, removeClass, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Button, RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { MaskedTextBox } from '@syncfusion/ej2-inputs';\nimport * as cls from '../../common/base/css-constant';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport * as events from '../../common/base/constant';\nimport { Accordion } from '@syncfusion/ej2-navigations';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { PivotUtil } from '../../base/util';\n/**\n * Module to render Calculated Field Dialog\n */\nvar COUNT = 'Count';\nvar AVG = 'Avg';\nvar MEDIAN = 'Median';\nvar MIN = 'Min';\nvar MAX = 'Max';\nvar SUM = 'Sum';\nvar DISTINCTCOUNT = 'DistinctCount';\nvar PRODUCT = 'Product';\nvar STDEV = 'SampleStDev';\nvar STDEVP = 'PopulationStDev';\nvar VAR = 'SampleVar';\nvar VARP = 'PopulationVar';\nvar CALC = 'CalculatedField';\nvar AGRTYPE = 'AggregateType';\n/** @hidden */\nvar CalculatedField = /** @class */ (function () {\n /**\n * Constructor for calculatedfield module.\n * @param {PivotView | PivotFieldList} parent - Component instance.\n */\n function CalculatedField(parent) {\n /** @hidden */\n this.isFormula = false;\n /** @hidden */\n this.isRequireUpdate = false;\n this.parent = parent;\n this.existingReport = null;\n this.parent.calculatedFieldModule = this;\n this.removeEventListener();\n this.addEventListener();\n this.parentID = this.parent.element.id;\n this.dialog = null;\n this.inputObj = null;\n this.treeObj = null;\n this.droppable = null;\n this.menuObj = null;\n this.newFields = null;\n this.isFieldExist = true;\n this.formulaText = null;\n this.fieldText = null;\n this.formatText = null;\n this.formatType = null;\n this.fieldType = null;\n this.parentHierarchy = null;\n this.isEdit = false;\n this.currentFieldName = null;\n this.confirmPopUp = null;\n }\n /**\n * To get module name.\n * @returns {string} - Module name.\n */\n CalculatedField.prototype.getModuleName = function () {\n return 'calculatedField';\n };\n CalculatedField.prototype.keyActionHandler = function (e) {\n var node = e.currentTarget.querySelector('.e-hover.e-node-focus');\n if (node) {\n switch (e.action) {\n case 'moveRight':\n case 'shiftE':\n if (this.parent.dataType === 'pivot') {\n this.displayMenu(node);\n }\n break;\n case 'delete':\n if (node.tagName === 'LI' && !node.querySelector('.e-list-icon.e-format') && !node.querySelector('.e-list-icon').classList.contains('.e-icons') && (node.querySelector('.' + cls.GRID_REMOVE) &&\n node.querySelector('.' + cls.GRID_REMOVE).classList.contains('e-list-icon'))) {\n this.createConfirmDialog(this.parent.localeObj.getConstant('alert'), this.parent.localeObj.getConstant('removeCalculatedField'), {}, true, node);\n }\n break;\n case 'enter':\n var field = node.getAttribute('data-field');\n var type = node.getAttribute('data-type');\n var dropField = select('#' + this.parentID + 'droppable', this.dialog.element);\n if (this.parent.dataType === 'pivot') {\n if (dropField.value === '') {\n if (type === CALC) {\n dropField.value = node.getAttribute('data-uid');\n }\n else {\n dropField.value = '\"' + type + '(' + field + ')' + '\"';\n }\n }\n else if (dropField.value !== '') {\n if (type === CALC) {\n dropField.value = dropField.value + node.getAttribute('data-uid');\n }\n else {\n dropField.value = dropField.value + '\"' + type + '(' + field + ')' + '\"';\n }\n }\n }\n else {\n if (this.parent.olapEngineModule && this.parent.olapEngineModule.fieldList[field] &&\n this.parent.olapEngineModule.fieldList[field].isCalculatedField) {\n field = this.parent.olapEngineModule.fieldList[field].tag;\n }\n if (dropField.value === '') {\n dropField.value = field;\n }\n else if (dropField.value !== '') {\n dropField.value = dropField.value + field;\n }\n }\n break;\n }\n }\n };\n /**\n * Trigger while click treeview icon.\n * @param {NodeClickEventArgs} e - Click event argument.\n * @returns {void}\n */\n CalculatedField.prototype.fieldClickHandler = function (e) {\n var node = closest(e.event.target, 'li');\n if (e.event.target.classList.contains(cls.FORMAT) ||\n e.event.target.classList.contains(cls.CALC_EDIT) ||\n e.event.target.classList.contains(cls.CALC_EDITED) ||\n e.event.target.classList.contains(cls.GRID_REMOVE)) {\n if (!this.parent.isAdaptive) {\n this.displayMenu(node, e.node, e.event.target);\n }\n else if (this.parent.dataType === 'olap' && this.parent.isAdaptive) {\n if (node.tagName === 'LI' && node.querySelector('.e-list-edit-icon').classList.contains(cls.CALC_EDIT) && e.event.target.classList.contains(cls.CALC_EDIT)) {\n this.isEdit = true;\n this.currentFieldName = node.getAttribute('data-field');\n this.fieldText = node.getAttribute('data-caption');\n this.formulaText = node.getAttribute('data-formula');\n this.formatType = node.getAttribute('data-formatString');\n this.formatText = this.formatType === 'Custom' ? node.getAttribute('data-customString') : null;\n this.fieldType = node.getAttribute('data-membertype');\n this.parentHierarchy = this.fieldType === 'Dimension' ? node.getAttribute('data-hierarchy') : null;\n addClass([node.querySelector('.e-list-edit-icon')], cls.CALC_EDITED);\n removeClass([node.querySelector('.e-list-edit-icon')], cls.CALC_EDIT);\n this.renderMobileLayout(this.parent.dialogRenderer.adaptiveElement);\n }\n else if (node.tagName === 'LI' && node.querySelector('.e-list-edit-icon').classList.contains(cls.CALC_EDITED) && e.event.target.classList.contains(cls.CALC_EDITED)) {\n this.isEdit = false;\n this.fieldText = this.formatText = this.formulaText = this.currentFieldName = null;\n this.parentHierarchy = this.fieldType = this.formatType = null;\n addClass([node.querySelector('.e-list-edit-icon')], cls.CALC_EDIT);\n removeClass([node.querySelector('.e-list-edit-icon')], cls.CALC_EDITED);\n }\n else if (node.tagName === 'LI' && node.querySelector('.' + cls.GRID_REMOVE).classList.contains('e-icons') && e.event.target.classList.contains(cls.GRID_REMOVE)) {\n this.createConfirmDialog(this.parent.localeObj.getConstant('alert'), this.parent.localeObj.getConstant('removeCalculatedField'), {}, true, e.node);\n }\n }\n }\n };\n /**\n * Trigger while click treeview icon.\n * @param {AccordionClickArgs} e - Click event argument.\n * @returns {void}\n */\n CalculatedField.prototype.accordionClickHandler = function (e) {\n if (e.item && e.item.iconCss.indexOf('e-list-icon') !== -1 &&\n closest(e.originalEvent.target, '.e-acrdn-header-icon')) {\n var node = closest(e.originalEvent.target, '.e-acrdn-header').querySelector('.' + cls.CALCCHECK);\n var fieldName = node.getAttribute('data-field');\n var formatObj = PivotUtil.getFieldByName(fieldName, this.parent.dataSourceSettings.formatSettings);\n var optionElement = closest(e.originalEvent.target, '.e-acrdn-header-icon');\n if (optionElement.querySelector('.' + cls.CALC_EDIT) && e.originalEvent.target.classList.contains(cls.CALC_EDIT)) {\n this.isEdit = true;\n this.currentFieldName = this.fieldText = fieldName;\n this.formulaText = this.parent.engineModule.fieldList[fieldName].formula;\n this.formatText = formatObj ? formatObj.format : '';\n addClass([optionElement.querySelector('.e-list-icon')], cls.CALC_EDITED);\n removeClass([optionElement.querySelector('.e-list-icon')], cls.CALC_EDIT);\n this.renderMobileLayout(this.parent.dialogRenderer.adaptiveElement);\n }\n else if (optionElement.querySelector('.' + cls.CALC_EDITED) &&\n e.originalEvent.target.classList.contains(cls.CALC_EDITED)) {\n this.isEdit = false;\n this.fieldText = this.formatText = this.formulaText = this.currentFieldName = null;\n addClass([optionElement.querySelector('.e-list-icon')], cls.CALC_EDIT);\n removeClass([optionElement.querySelector('.e-list-icon')], cls.CALC_EDITED);\n }\n else if (optionElement.querySelector('.' + cls.GRID_REMOVE) &&\n e.originalEvent.target.classList.contains(cls.GRID_REMOVE)) {\n this.createConfirmDialog(this.parent.localeObj.getConstant('alert'), this.parent.localeObj.getConstant('removeCalculatedField'), {}, true, node);\n }\n }\n };\n CalculatedField.prototype.accordionCreated = function () {\n var allElement = this.accordion.element.querySelectorAll('.e-acrdn-item');\n for (var i = 0; i < allElement.length; i++) {\n if (allElement[i].querySelector('.' + cls.CALC_EDIT) || allElement[i].querySelector('.' + cls.CALC_EDITED)) {\n var element = createElement('span', {\n className: 'e-list-icon ' + cls.GRID_REMOVE + ' e-icons'\n });\n append([element], allElement[i].querySelector('.e-acrdn-header-icon'));\n }\n }\n };\n CalculatedField.prototype.clearFormula = function () {\n if (this.treeObj && this.treeObj.element.querySelector('li')) {\n removeClass(this.treeObj.element.querySelectorAll('li'), 'e-active');\n this.displayMenu(this.treeObj.element.querySelector('li'));\n }\n };\n /**\n * To display context menu.\n * @param {HTMLElement} node\n * @returns {void}\n */\n /* eslint-disable */\n CalculatedField.prototype.displayMenu = function (node, treeNode, target) {\n var edit = target ? target.classList.contains(cls.CALC_EDIT) : true;\n var edited = target ? target.classList.contains(cls.CALC_EDITED) : true;\n if (this.parent.dataType === 'pivot' && node.querySelector('.e-list-icon.e-format') &&\n node.querySelector('.e-list-icon.e-format').classList.contains(cls.ICON) &&\n !node.querySelector('.e-list-icon').classList.contains(cls.CALC_EDITED) &&\n !node.querySelector('.e-list-icon').classList.contains(cls.GRID_REMOVE) &&\n !node.querySelector('.e-list-icon').classList.contains(cls.CALC_EDIT) && node.tagName === 'LI') {\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n }\n this.curMenu = node.querySelector('.' + cls.LIST_TEXT_CLASS);\n this.openContextMenu(node);\n }\n else if (node.tagName === 'LI' && (node.querySelector('.' + cls.CALC_EDIT) &&\n node.querySelector('.' + cls.CALC_EDIT).classList.contains('e-list-icon') && edit ||\n (this.parent.dataType === 'olap' && node.getAttribute('data-type') === CALC && node.classList.contains('e-active') && ((target && !target.classList.contains(cls.GRID_REMOVE)) || !target)))) {\n this.isEdit = true;\n var fieldName = node.getAttribute('data-field');\n var caption = node.getAttribute('data-caption');\n this.currentFieldName = fieldName;\n this.inputObj.value = caption;\n this.inputObj.dataBind();\n var formatString = node.getAttribute('data-formatString');\n var dialogElement = this.dialog.element;\n var customFormat = getInstance(select('#' + this.parentID + 'Custom_Format_Element', dialogElement), MaskedTextBox);\n if (this.parent.dataType === 'olap') {\n var memberType = node.getAttribute('data-membertype');\n var parentHierarchy = node.getAttribute('data-hierarchy');\n var expression = node.getAttribute('data-formula');\n var customString = node.getAttribute('data-customString');\n var fieldTitle = select('#' + this.parentID + '_' + 'FieldNameTitle', dialogElement);\n var memberTypeDrop = getInstance(select('#' + this.parentID + 'Member_Type_Div', dialogElement), DropDownList);\n var hierarchyDrop = getInstance(select('#' + this.parentID + 'Hierarchy_List_Div', dialogElement), DropDownList);\n var formatDrop = getInstance(select('#' + this.parentID + 'Format_Div', dialogElement), DropDownList);\n /* eslint-enable max-len */\n fieldTitle.innerHTML = this.parent.localeObj.getConstant('caption');\n select('#' + this.parentID + 'droppable', document).value = expression;\n memberTypeDrop.readonly = true;\n memberTypeDrop.value = memberType;\n memberTypeDrop.dataBind();\n if (memberType === 'Dimension') {\n hierarchyDrop.value = parentHierarchy;\n }\n if (formatString !== '') {\n formatDrop.value = formatString;\n formatDrop.dataBind();\n }\n customFormat.value = customString;\n }\n else {\n customFormat.value = formatString;\n addClass(this.treeObj.element.querySelectorAll('.' + cls.CALC_EDITED), cls.CALC_EDIT);\n removeClass(this.treeObj.element.querySelectorAll('.' + cls.CALC_EDITED), cls.CALC_EDITED);\n addClass([node.querySelector('.e-list-icon')], cls.CALC_EDITED);\n removeClass([node.querySelector('.e-list-icon')], cls.CALC_EDIT);\n node.querySelector('.' + cls.CALC_EDITED).setAttribute('title', this.parent.localeObj.getConstant('clearCalculatedField'));\n select('#' + this.parentID + 'droppable', document).value = node.getAttribute('data-uid');\n }\n customFormat.dataBind();\n }\n else if (node.tagName === 'LI' && (node.querySelector('.' + cls.CALC_EDITED) &&\n node.querySelector('.' + cls.CALC_EDITED).classList.contains('e-list-icon') && edited ||\n (this.parent.dataType === 'olap' && !node.classList.contains('e-active')))) {\n this.isEdit = false;\n this.inputObj.value = '';\n this.inputObj.dataBind();\n var dialogElement = this.dialog.element;\n var customFormat = getInstance(select('#' + this.parentID + 'Custom_Format_Element', dialogElement), MaskedTextBox);\n customFormat.value = '';\n customFormat.dataBind();\n if (this.parent.dataType === 'olap') {\n var hierarchyDrop = getInstance(select('#' + this.parentID + 'Hierarchy_List_Div', dialogElement), DropDownList);\n var formatDrop = getInstance(select('#' + this.parentID + 'Format_Div', dialogElement), DropDownList);\n var memberTypeDrop = getInstance(select('#' + this.parentID + 'Member_Type_Div', dialogElement), DropDownList);\n var fieldTitle = select('#' + this.parentID + '_' + 'FieldNameTitle', dialogElement);\n /* eslint-enable max-len */\n fieldTitle.innerHTML = this.parent.localeObj.getConstant('fieldTitle');\n hierarchyDrop.index = 0;\n hierarchyDrop.dataBind();\n formatDrop.index = 0;\n formatDrop.dataBind();\n memberTypeDrop.index = 0;\n memberTypeDrop.readonly = false;\n memberTypeDrop.dataBind();\n }\n else {\n addClass(this.treeObj.element.querySelectorAll('.' + cls.CALC_EDITED), cls.CALC_EDIT);\n removeClass(this.treeObj.element.querySelectorAll('.' + cls.CALC_EDITED), cls.CALC_EDITED);\n node.querySelector('.' + cls.CALC_EDIT).setAttribute('title', this.parent.localeObj.getConstant('edit'));\n }\n select('#' + this.parentID + 'droppable', document).value = '';\n }\n else if (node.tagName === 'LI' && (node.querySelector('.' + cls.GRID_REMOVE) &&\n node.querySelector('.' + cls.GRID_REMOVE).classList.contains('e-list-icon')) && !edit && !edited) {\n var dropField = select('#' + this.parentID + 'droppable', document);\n var field = {\n name: this.isEdit ? this.currentFieldName : this.inputObj.value,\n caption: this.inputObj.value,\n formula: dropField.value\n };\n this.createConfirmDialog(this.parent.localeObj.getConstant('alert'), this.parent.localeObj.getConstant('removeCalculatedField'), field, true, treeNode);\n }\n };\n CalculatedField.prototype.removeCalcField = function (node) {\n var dataSourceSettings = this.parent.dataSourceSettings;\n var fieldName = node.getAttribute('data-field');\n var calcfields = dataSourceSettings.calculatedFieldSettings;\n var engineModule;\n if (this.parent.dataType === 'pivot') {\n if (!this.parent.isAdaptive) {\n this.treeObj.removeNodes([node]);\n }\n else {\n var index = parseInt(node.getAttribute('id').split(this.parentID + '_')[1], 10);\n if (typeof index === 'number') {\n this.accordion.removeItem(index);\n }\n }\n }\n for (var i = 0; i < calcfields.length; i++) {\n if (calcfields[i] && calcfields[i].name === fieldName) {\n calcfields.splice(i, 1);\n break;\n }\n }\n if (this.parent.dataType === 'olap') {\n engineModule = this.parent.olapEngineModule;\n var fields_1 = engineModule.fieldListData ? engineModule.fieldListData : [];\n /* eslint-disable @typescript-eslint/no-explicit-any */\n for (var _i = 0, _a = Object.keys(fields_1); _i < _a.length; _i++) {\n var item = _a[_i];\n if (fields_1[item].name === fieldName) {\n var index = parseInt(item, 10);\n if (typeof (index) === 'number') {\n fields_1.splice(index, 1);\n break;\n }\n }\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var parentID = this.treeObj.getNode(node).parentID;\n this.treeObj.removeNodes([node]);\n if (calcfields.length <= 0) {\n this.treeObj.removeNodes([parentID]);\n }\n }\n else {\n engineModule = this.parent.engineModule;\n }\n if (engineModule.fields) {\n for (var i = 0; i < engineModule.fields.length; i++) {\n if (engineModule.fields[i] === fieldName) {\n engineModule.fields.splice(i, 1);\n break;\n }\n }\n }\n if (engineModule.savedFieldList && engineModule.savedFieldList[fieldName]) {\n delete engineModule.savedFieldList[fieldName];\n }\n if (engineModule.fieldList && engineModule.fieldList[fieldName]) {\n delete engineModule.fieldList[fieldName];\n }\n var formatFields = dataSourceSettings.formatSettings;\n for (var i = 0; i < formatFields.length; i++) {\n if (formatFields[i] && formatFields[i].name === fieldName) {\n formatFields.splice(i, 1);\n break;\n }\n }\n var fields = [dataSourceSettings.values, dataSourceSettings.rows, dataSourceSettings.columns, dataSourceSettings.filters];\n for (var i = 0, n = fields.length; i < n; i++) {\n for (var j = 0, length_1 = fields[i].length; j < length_1; j++) {\n if (fields[i][j].name === fieldName) {\n fields[i].splice(j, 1);\n break;\n }\n }\n }\n /* eslint-enable max-len */\n if (this.isEdit && this.currentFieldName === fieldName) {\n this.isEdit = false;\n this.inputObj.value = '';\n this.currentFieldName = this.formatText = this.fieldText = this.formatType = null;\n this.formulaText = this.fieldType = this.parentHierarchy = null;\n }\n if (!this.parent.allowDeferLayoutUpdate || this.parent.getModuleName() !== 'pivotfieldlist') {\n this.parent.updateDataSource();\n }\n this.removeErrorDialog();\n };\n /**\n * To set position for context menu.\n * @returns {void}\n */\n CalculatedField.prototype.openContextMenu = function (node) {\n var _this = this;\n var fieldName = node.getAttribute('data-field');\n var type = this.parent.engineModule.fieldList[fieldName].type !== 'number' ? 'string' : 'number';\n var validSummaryTypes = (type === 'string' ? this.getValidSummaryType().slice(0, 2) : this.getValidSummaryType());\n var eventArgs = {\n cancel: false, fieldName: fieldName,\n aggregateTypes: this.getMenuItems(type).slice()\n };\n var control = this.parent.getModuleName() === 'pivotfieldlist' && this.parent.isPopupView ?\n this.parent.pivotGridModule : this.parent;\n control.trigger(events.aggregateMenuOpen, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var duplicateTypes = [];\n var items = [];\n for (var _i = 0, _a = observedArgs.aggregateTypes; _i < _a.length; _i++) {\n var option = _a[_i];\n if (validSummaryTypes.indexOf(option) > -1 && duplicateTypes.indexOf(option) === -1) {\n duplicateTypes.push(option);\n items.push({\n id: _this.parent.element.id + 'Calc_' + option,\n text: _this.parent.localeObj.getConstant(option)\n });\n }\n }\n _this.createMenu(items, node);\n var pos = node.getBoundingClientRect();\n var offset = window.scrollY || document.documentElement.scrollTop;\n if (_this.parent.enableRtl) {\n _this.menuObj.open(pos.top + offset, pos.left - 100);\n }\n else {\n _this.menuObj.open(pos.top + offset, pos.left + 150);\n }\n }\n });\n };\n /**\n * Triggers while select menu.\n * @param {MenuEventArgs} menu\n * @returns {void}\n */\n CalculatedField.prototype.selectContextMenu = function (menu) {\n if (menu.element.textContent !== null) {\n var field = closest(this.curMenu, '.e-list-item').getAttribute('data-caption');\n closest(this.curMenu, '.e-list-item').setAttribute('data-type', menu.element.id.split('_').pop());\n this.curMenu.textContent = field + ' (' + menu.element.textContent + ')';\n addClass([this.curMenu.parentElement.parentElement], ['e-node-focus', 'e-hover']);\n this.curMenu.parentElement.parentElement.setAttribute('tabindex', '-1');\n this.curMenu.parentElement.parentElement.focus();\n }\n };\n /**\n * To create context menu.\n * @returns {void}\n */\n CalculatedField.prototype.createMenu = function (menuItems, node) {\n var _this = this;\n var menuOptions = {\n cssClass: this.parentID + 'calculatedmenu',\n items: menuItems,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n // beforeOpen: this.beforeMenuOpen.bind(this),\n select: this.selectContextMenu.bind(this),\n onClose: function () {\n _this.treeObj.element.focus();\n addClass([node], ['e-hover', 'e-node-focus']);\n }\n };\n var contextMenu;\n if (select('#' + this.parentID + 'CalcContextmenu', document)) {\n contextMenu = select('#' + this.parentID + 'CalcContextmenu', document);\n }\n else {\n contextMenu = createElement('ul', {\n id: this.parentID + 'CalcContextmenu'\n });\n }\n this.dialog.element.appendChild(contextMenu);\n this.menuObj = new Menu(menuOptions);\n this.menuObj.isStringTemplate = true;\n this.menuObj.appendTo(contextMenu);\n };\n /**\n * Triggers while click OK button.\n * @returns {void}\n */\n /* eslint-disable */\n CalculatedField.prototype.applyFormula = function () {\n var _this = this;\n var currentObj = this;\n var isExist = false;\n removeClass([document.getElementById(this.parentID + 'ddlelement')], cls.EMPTY_FIELD);\n this.newFields =\n extend([], this.parent.dataSourceSettings.calculatedFieldSettings, null, true);\n var eventArgs = {\n fieldName: this.isEdit ? this.currentFieldName : this.inputObj.value,\n calculatedField: this.getCalculatedFieldInfo(),\n calculatedFieldSettings: PivotUtil.cloneCalculatedFieldSettings(this.parent.dataSourceSettings.calculatedFieldSettings),\n cancel: false\n };\n var control = this.parent.getModuleName() === 'pivotfieldlist' &&\n this.parent.isPopupView ? this.parent.pivotGridModule : this.parent;\n control.trigger(events.calculatedFieldCreate, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var calcInfo = observedArgs.calculatedField;\n if (!_this.isEdit) {\n if (currentObj.parent.dataType === 'olap') {\n var field = calcInfo.name;\n if (currentObj.parent.olapEngineModule.fieldList[field] &&\n currentObj.parent.olapEngineModule.fieldList[field].type !== 'CalculatedField') {\n isExist = true;\n }\n }\n else {\n for (var _i = 0, _a = Object.keys(currentObj.parent.engineModule.fieldList); _i < _a.length; _i++) {\n var key = _a[_i];\n if (calcInfo.name && calcInfo.name === key &&\n currentObj.parent.engineModule.fieldList[key].aggregateType !== 'CalculatedField') {\n isExist = true;\n }\n }\n }\n }\n if (isExist) {\n currentObj.parent.pivotCommon.errorDialog.createErrorDialog(currentObj.parent.localeObj.getConstant('error'), currentObj.parent.localeObj.getConstant('fieldExist'));\n return;\n }\n _this.existingReport = extend({}, _this.parent.dataSourceSettings, null, true);\n var report = _this.parent.dataSourceSettings;\n if (!isNullOrUndefined(calcInfo.name) && calcInfo.name !== '' &&\n !isNullOrUndefined(calcInfo.caption) && calcInfo.caption !== '' && calcInfo.formula && calcInfo.formula !== '') {\n var field = void 0;\n if (_this.parent.dataType === 'olap') {\n field = {\n name: calcInfo.name,\n formula: calcInfo.formula,\n formatString: calcInfo.formatString\n };\n if (!isNullOrUndefined(calcInfo.hierarchyUniqueName)) {\n field.hierarchyUniqueName = calcInfo.hierarchyUniqueName;\n }\n _this.isFieldExist = false;\n if (!_this.isEdit) {\n for (var i = 0; i < report.calculatedFieldSettings.length; i++) {\n if (report.calculatedFieldSettings[i].name === field.name) {\n _this.createConfirmDialog(currentObj.parent.localeObj.getConstant('alert'), currentObj.parent.localeObj.getConstant('confirmText'), calcInfo);\n return;\n }\n }\n }\n else {\n for (var i = 0; i < report.calculatedFieldSettings.length; i++) {\n if (report.calculatedFieldSettings[i].name === field.name && _this.isEdit) {\n report.calculatedFieldSettings[i].hierarchyUniqueName = calcInfo.hierarchyUniqueName;\n _this.parent.olapEngineModule.fieldList[field.name].caption = calcInfo.caption;\n report.calculatedFieldSettings[i].formatString = field.formatString;\n report.calculatedFieldSettings[i].formula = field.formula;\n field = report.calculatedFieldSettings[i];\n _this.isFieldExist = true;\n break;\n }\n }\n var axisFields = [report.rows, report.columns, report.values, report.filters];\n var isFieldExist = false;\n for (var _b = 0, axisFields_1 = axisFields; _b < axisFields_1.length; _b++) {\n var fields = axisFields_1[_b];\n for (var _c = 0, fields_2 = fields; _c < fields_2.length; _c++) {\n var item = fields_2[_c];\n if (item.isCalculatedField && field.name !== null &&\n item.name === field.name && _this.isEdit) {\n item.caption = calcInfo.caption;\n _this.isFieldExist = true;\n isFieldExist = true;\n break;\n }\n }\n if (isFieldExist) {\n break;\n }\n }\n }\n if (!_this.isFieldExist) {\n report.calculatedFieldSettings.push(field);\n }\n _this.parent.lastCalcFieldInfo = field;\n }\n else {\n field = {\n name: calcInfo.name,\n caption: calcInfo.caption,\n type: 'CalculatedField'\n };\n var cField = {\n name: calcInfo.name,\n formula: calcInfo.formula\n };\n if (!isNullOrUndefined(calcInfo.formatString)) {\n cField.formatString = calcInfo.formatString;\n }\n _this.isFieldExist = true;\n if (!_this.isEdit) {\n for (var i = 0; i < report.values.length; i++) {\n if (report.values[i].type === CALC && report.values[i].name === field.name) {\n for (var j = 0; j < report.calculatedFieldSettings.length; j++) {\n if (report.calculatedFieldSettings[j].name === field.name) {\n _this.createConfirmDialog(currentObj.parent.localeObj.getConstant('alert'), currentObj.parent.localeObj.getConstant('confirmText'), calcInfo);\n return;\n }\n }\n _this.isFieldExist = false;\n }\n }\n }\n else {\n for (var i = 0; i < report.values.length; i++) {\n if (report.values[i].type === CALC && field.name !== null &&\n report.values[i].name === field.name && _this.isEdit) {\n for (var j = 0; j < report.calculatedFieldSettings.length; j++) {\n if (report.calculatedFieldSettings[j].name === field.name) {\n report.values[i].caption = calcInfo.caption;\n _this.currentFormula = report.calculatedFieldSettings[j].formula;\n report.calculatedFieldSettings[j].formula = calcInfo.formula;\n _this.parent.engineModule.fieldList[field.name].caption = calcInfo.caption;\n _this.updateFormatSettings(report, field.name, calcInfo.formatString);\n _this.isFieldExist = false;\n }\n }\n }\n }\n }\n if (_this.isFieldExist) {\n report.values.push(field);\n report.calculatedFieldSettings.push(cField);\n _this.updateFormatSettings(report, field.name, calcInfo.formatString);\n }\n _this.parent.lastCalcFieldInfo = cField;\n }\n _this.addFormula(report, field.name);\n }\n else {\n if (isNullOrUndefined(calcInfo.name) || calcInfo.name === '' ||\n isNullOrUndefined(calcInfo.caption) || calcInfo.caption === '') {\n _this.inputObj.value = '';\n addClass([document.getElementById(_this.parentID + 'ddlelement')], cls.EMPTY_FIELD);\n document.getElementById(_this.parentID + 'ddlelement').focus();\n }\n else {\n _this.parent.pivotCommon.errorDialog.createErrorDialog(_this.parent.localeObj.getConstant('error'), _this.parent.localeObj.getConstant('invalidFormula'));\n }\n }\n }\n else {\n _this.endDialog();\n _this.parent.lastCalcFieldInfo = {};\n _this.isFormula = false;\n }\n });\n };\n CalculatedField.prototype.getCalculatedFieldInfo = function () {\n var field;\n var dropField = select('#' + this.parentID + 'droppable', document);\n var dialogElement = this.parent.isAdaptive ? this.parent.dialogRenderer.adaptiveElement.element : this.dialog.element;\n var customFormat = getInstance(select('#' + this.parentID + 'Custom_Format_Element', dialogElement), MaskedTextBox);\n field = {\n name: this.isEdit ? this.currentFieldName : this.inputObj.value,\n caption: this.inputObj.value,\n formula: dropField.value\n };\n if (this.parent.dataType === 'olap') {\n var formatDrop = getInstance(select('#' + this.parentID + 'Format_Div', dialogElement), DropDownList);\n var memberTypeDrop = getInstance(select('#' + this.parentID + 'Member_Type_Div', dialogElement), DropDownList);\n var hierarchyDrop = getInstance(select('#' + this.parentID + 'Hierarchy_List_Div', dialogElement), DropDownList);\n field.formatString = (formatDrop.value === 'Custom' ? customFormat.value : formatDrop.value);\n if (memberTypeDrop.value === 'Dimension') {\n field.hierarchyUniqueName = hierarchyDrop.value;\n }\n }\n else {\n field.formatString = customFormat.value;\n }\n return field;\n };\n /* eslint-enable max-len */\n CalculatedField.prototype.updateFormatSettings = function (report, fieldName, formatString) {\n var newFormat = { name: fieldName, format: formatString, useGrouping: true };\n var isFormatExist = false;\n for (var i = 0; i < report.formatSettings.length; i++) {\n if (report.formatSettings[i].name === fieldName) {\n if (formatString === 'undefined' || formatString === undefined || formatString === '') {\n report.formatSettings.splice(i, 1);\n isFormatExist = true;\n break;\n }\n else {\n var formatObj = report.formatSettings[i].properties ?\n report.formatSettings[i].properties : report.formatSettings[i];\n formatObj.format = formatString;\n report.formatSettings.splice(i, 1, formatObj);\n isFormatExist = true;\n break;\n }\n }\n }\n if (!isFormatExist && formatString !== '') {\n report.formatSettings.push(newFormat);\n }\n };\n CalculatedField.prototype.addFormula = function (report, field) {\n this.isFormula = true;\n this.field = field;\n if (isBlazor() || this.parent.dataSourceSettings.mode === 'Server') {\n PivotUtil.updateDataSourceSettings(this.parent, PivotUtil.getClonedDataSourceSettings(report));\n }\n else {\n this.parent.setProperties({ dataSourceSettings: report }, true);\n }\n if (this.parent.getModuleName() === 'pivotfieldlist' && this.parent.allowDeferLayoutUpdate) {\n this.parent.isRequiredUpdate = false;\n }\n try {\n this.parent.updateDataSource(false);\n var pivot = (this.parent.getModuleName() === 'pivotfieldlist' && this.parent.pivotGridModule) ?\n this.parent.pivotGridModule : this.parent;\n if (!(isBlazor() && pivot && pivot.enableVirtualization) && (pivot && pivot.dataSourceSettings.mode !== 'Server')) {\n this.endDialog();\n }\n else {\n this.isRequireUpdate = true;\n }\n if (this.parent.getModuleName() === 'pivotfieldlist' &&\n this.parent.renderMode === 'Fixed' && this.parent.allowDeferLayoutUpdate) {\n this.parent.pivotChange = true;\n }\n }\n catch (exception) {\n this.showError();\n }\n };\n /** @hidden */\n CalculatedField.prototype.endDialog = function () {\n this.isEdit = false;\n if (this.dialog) {\n this.dialog.close();\n }\n else {\n this.inputObj.value = '';\n this.currentFieldName = this.formatText = this.fieldText = this.formatType = null;\n this.formulaText = this.fieldType = this.parentHierarchy = null;\n var dialogElement = this.parent.isAdaptive ?\n this.parent.dialogRenderer.parentElement : this.dialog.element;\n this.parent.dialogRenderer.parentElement.querySelector('.' + cls.CALCINPUT).value = '';\n select('#' + this.parentID + 'droppable', this.parent.dialogRenderer.parentElement).value = '';\n select('#' + this.parentID + 'Custom_Format_Element', this.parent.dialogRenderer.parentElement).value = '';\n if (this.parent.dataType === 'olap') {\n var customFormat = getInstance(select('#' + this.parentID + 'Custom_Format_Element', dialogElement), MaskedTextBox);\n var formatDrop = getInstance(select('#' + this.parentID + 'Format_Div', dialogElement), DropDownList);\n var memberTypeDrop = getInstance(select('#' + this.parentID + 'Member_Type_Div', dialogElement), DropDownList);\n var hierarchyDrop = getInstance(select('#' + this.parentID + 'Hierarchy_List_Div', dialogElement), DropDownList);\n formatDrop.index = 0;\n formatDrop.dataBind();\n memberTypeDrop.index = 0;\n memberTypeDrop.readonly = false;\n memberTypeDrop.dataBind();\n hierarchyDrop.index = 0;\n hierarchyDrop.enabled = false;\n hierarchyDrop.dataBind();\n customFormat.enabled = false;\n customFormat.dataBind();\n }\n /* eslint-enable max-len */\n }\n };\n /** @hidden */\n CalculatedField.prototype.showError = function () {\n if (this.parent.engineModule.fieldList[this.field]) {\n delete this.parent.engineModule.fieldList[this.field];\n }\n this.parent.pivotCommon.errorDialog.createErrorDialog(this.parent.localeObj.getConstant('error'), this.parent.localeObj.getConstant('invalidFormula'));\n if (isBlazor()) {\n PivotUtil.updateDataSourceSettings(this.parent, PivotUtil.getClonedDataSourceSettings(this.existingReport));\n }\n else {\n this.parent.setProperties({ dataSourceSettings: this.existingReport }, true);\n }\n if (this.isEdit) {\n var calcFields = this.parent.dataSourceSettings.calculatedFieldSettings;\n for (var i = 0; calcFields && i < calcFields.length; i++) {\n if (calcFields[i].name === this.field) {\n calcFields[i].formula = this.currentFormula;\n break;\n }\n }\n }\n else if (this.parent.engineModule.fields) {\n for (var i = 0; i < this.parent.engineModule.fields.length; i++) {\n if (this.parent.engineModule.fields[i] === this.field) {\n this.parent.engineModule.fields.splice(i, 1);\n break;\n }\n }\n }\n this.parent.lastCalcFieldInfo = {};\n this.parent.updateDataSource(false);\n this.isFormula = false;\n };\n /**\n * To get treeview data\n * @param {PivotGrid|PivotFieldList} parent\n * @returns Object\n */\n CalculatedField.prototype.getFieldListData = function (parent) {\n var fields = [];\n if (this.parent.dataType === 'olap') {\n fields =\n PivotUtil.getClonedData(parent.olapEngineModule.fieldListData ?\n parent.olapEngineModule.fieldListData : []);\n for (var _i = 0, _a = fields; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.spriteCssClass &&\n (item.spriteCssClass.indexOf('e-attributeCDB-icon') > -1 ||\n item.spriteCssClass.indexOf('e-level-members') > -1)) {\n item.hasChildren = true;\n }\n else if (item.spriteCssClass &&\n (item.spriteCssClass.indexOf('e-namedSetCDB-icon') > -1)) {\n item.hasChildren = false;\n }\n else if (item.spriteCssClass &&\n (item.spriteCssClass.indexOf('e-calcMemberGroupCDB') > -1)) {\n item.expanded = this.isEdit;\n }\n }\n }\n else {\n for (var _b = 0, _c = (parent.engineModule.fieldList ? Object.keys(parent.engineModule.fieldList) : []); _b < _c.length; _b++) {\n var key = _c[_b];\n var type = null;\n var typeVal = null;\n if ((parent.engineModule.fieldList[key].type !== 'number' || parent.engineModule.fieldList[key].type === 'include' ||\n parent.engineModule.fieldList[key].type === 'exclude') &&\n (parent.engineModule.fieldList[key].aggregateType !== 'DistinctCount')) {\n typeVal = COUNT;\n }\n else {\n typeVal = parent.engineModule.fieldList[key].aggregateType !== undefined ?\n (parent.engineModule.fieldList[key].aggregateType) : SUM;\n }\n type = this.parent.localeObj.getConstant(typeVal);\n fields.push({\n index: parent.engineModule.fieldList[key].index,\n name: parent.engineModule.fieldList[key].caption + ' (' + type + ')',\n type: typeVal,\n icon: cls.FORMAT + ' ' + cls.ICON,\n formula: parent.engineModule.fieldList[key].formula,\n field: key,\n caption: parent.engineModule.fieldList[key].caption ? parent.engineModule.fieldList[key].caption : key\n });\n }\n }\n return fields;\n };\n /**\n * Triggers before menu opens.\n * @param {BeforeOpenCloseMenuEventArgs} args\n * @returns {void}\n */\n /**\n * Trigger while drop node in formula field.\n * @param {DragAndDropEventArgs} args\n * @returns {void}\n */\n CalculatedField.prototype.fieldDropped = function (args) {\n args.cancel = true;\n var dropField = select('#' + this.parentID + 'droppable', this.dialog.element);\n removeClass([dropField], 'e-copy-drop');\n removeClass([args.draggedNode.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.SELECTED_NODE_CLASS);\n var field = args.draggedNode.getAttribute('data-field');\n if (this.parent.dataType === 'olap') {\n if (this.parent.olapEngineModule.fieldList[field] &&\n this.parent.olapEngineModule.fieldList[field].isCalculatedField) {\n field = this.parent.olapEngineModule.fieldList[field].tag;\n }\n if (args.target.id === this.parentID + 'droppable' && dropField.value === '') {\n dropField.value = field;\n dropField.focus();\n }\n else if (args.target.id === (this.parentID + 'droppable') && dropField.value !== '') {\n var textCovered = void 0;\n var currentValue = dropField.value;\n var cursorPos = dropField.selectionStart;\n var textAfterText = currentValue.substring(cursorPos, currentValue.length);\n var textBeforeText = currentValue.substring(0, cursorPos);\n textCovered = textBeforeText + field;\n dropField.value = textBeforeText + field + textAfterText;\n dropField.focus();\n dropField.setSelectionRange(textCovered.length, textCovered.length);\n }\n else {\n args.cancel = true;\n }\n }\n else {\n var type = args.draggedNode.getAttribute('data-type');\n if (args.target.id === this.parentID + 'droppable' && dropField.value === '') {\n if (type === CALC) {\n dropField.value = args.draggedNodeData.id.toString();\n }\n else {\n dropField.value = '\"' + type + '(' + field + ')' + '\"';\n }\n dropField.focus();\n }\n else if (args.target.id === (this.parentID + 'droppable') && dropField.value !== '') {\n var textCovered = void 0;\n var cursorPos = dropField.selectionStart;\n var currentValue = dropField.value;\n var textBeforeText = currentValue.substring(0, cursorPos);\n var textAfterText = currentValue.substring(cursorPos, currentValue.length);\n if (type === CALC) {\n textCovered = textBeforeText + args.draggedNodeData.id.toString();\n dropField.value = textBeforeText + args.draggedNodeData.id.toString() + textAfterText;\n }\n else {\n textCovered = textBeforeText + '\"' + type + '(' + field + ')' + '\"';\n dropField.value = textBeforeText + '\"' + type + '(' + field + ')' + '\"' + textAfterText;\n }\n dropField.focus();\n dropField.setSelectionRange(textCovered.length, textCovered.length);\n }\n else {\n args.cancel = true;\n }\n }\n };\n /**\n * To create dialog.\n * @returns {void}\n */\n CalculatedField.prototype.createDialog = function () {\n var _this = this;\n if (select('#' + this.parentID + 'calculateddialog', document) !== null) {\n remove(select('#' + this.parentID + 'calculateddialog', document));\n while (!isNullOrUndefined(document.querySelector('.' + this.parentID + 'calculatedmenu'))) {\n remove(document.querySelector('.' + this.parentID + 'calculatedmenu'));\n }\n }\n this.parent.element.appendChild(createElement('div', {\n id: this.parentID + 'calculateddialog',\n className: cls.CALCDIALOG + ' ' + (this.parent.dataType === 'olap' ? cls.OLAP_CALCDIALOG : '')\n }));\n var calcButtons = [\n {\n click: this.applyFormula.bind(this),\n buttonModel: {\n content: this.parent.localeObj.getConstant('ok'),\n isPrimary: true\n }\n },\n {\n click: this.cancelClick.bind(this),\n buttonModel: {\n content: this.parent.localeObj.getConstant('cancel')\n }\n }\n ];\n if (this.parent.dataType === 'olap') {\n var clearButton = {\n click: this.clearFormula.bind(this),\n buttonModel: {\n cssClass: 'e-calc-clear-btn',\n content: this.parent.localeObj.getConstant('clear'),\n }\n };\n calcButtons.splice(0, 0, clearButton);\n }\n this.dialog = new Dialog({\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n buttons: calcButtons,\n close: this.closeDialog.bind(this),\n beforeOpen: this.beforeOpen.bind(this),\n open: function () {\n if (select('#' + _this.parentID + 'ddlelement', _this.dialog.element)) {\n select('#' + _this.parentID + 'ddlelement', _this.dialog.element).focus();\n }\n },\n animationSettings: { effect: 'Zoom' },\n width: '25%',\n isModal: false,\n closeOnEscape: true,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true,\n header: this.parent.localeObj.getConstant('createCalculatedField'),\n target: document.body\n });\n this.dialog.isStringTemplate = true;\n this.dialog.appendTo('#' + this.parentID + 'calculateddialog');\n };\n CalculatedField.prototype.cancelClick = function () {\n this.dialog.close();\n this.isEdit = false;\n };\n CalculatedField.prototype.beforeOpen = function (args) {\n // this.dialog.element.querySelector('.e-dlg-header').innerHTML = this.parent.localeObj.getConstant('createCalculatedField');\n this.dialog.element.querySelector('.e-dlg-header').\n setAttribute('title', this.parent.localeObj.getConstant('createCalculatedField'));\n };\n CalculatedField.prototype.closeDialog = function (args) {\n if (this.parent.getModuleName() === 'pivotfieldlist') {\n this.parent.axisFieldModule.render();\n if (this.parent.renderMode !== 'Fixed') {\n addClass([this.parent.element.querySelector('.' + cls.TOGGLE_FIELD_LIST_CLASS)], cls.ICON_HIDDEN);\n this.parent.dialogRenderer.fieldListDialog.show();\n }\n }\n this.treeObj.destroy();\n this.dialog.destroy();\n this.newFields = null;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n }\n remove(document.getElementById(this.parentID + 'calculateddialog'));\n if (!isNullOrUndefined(document.querySelector('.' + this.parentID + 'calculatedmenu'))) {\n remove(document.querySelector('.' + this.parentID + 'calculatedmenu'));\n }\n var timeOut = ((this.parent.getModuleName() === 'pivotview') ||\n ((this.parent.getModuleName() === 'pivotfieldlist') &&\n this.parent.renderMode === 'Fixed')) ? 0 : 500;\n if (this.buttonCall) {\n this.buttonCall = false;\n setTimeout(this.setFocus.bind(this), timeOut);\n }\n };\n CalculatedField.prototype.setFocus = function () {\n var parentElement;\n if (this.parent.getModuleName() === 'pivotview' && this.parent.element) {\n parentElement = this.parent.element;\n }\n else if (document.getElementById(this.parent.element.id + '_Wrapper')) {\n parentElement = document.getElementById(this.parent.element.id + '_Wrapper');\n }\n if (parentElement) {\n var pivotButtons = [].slice.call(parentElement.querySelectorAll('.e-pivot-button'));\n for (var _i = 0, pivotButtons_1 = pivotButtons; _i < pivotButtons_1.length; _i++) {\n var item = pivotButtons_1[_i];\n if (item.getAttribute('data-uid') === this.currentFieldName) {\n item.focus();\n break;\n }\n }\n }\n };\n /**\n * To render dialog elements.\n * @returns {void}\n */\n CalculatedField.prototype.renderDialogElements = function () {\n var outerDiv = createElement('div', {\n id: this.parentID + 'outerDiv',\n className: (this.parent.dataType === 'olap' ? cls.OLAP_CALCOUTERDIV + ' ' : '') + cls.CALCOUTERDIV\n });\n var olapFieldTreeDiv = createElement('div', { id: this.parentID + 'Olap_Tree_Div', className: 'e-olap-field-tree-div' });\n var olapCalcDiv = createElement('div', { id: this.parentID + 'Olap_Calc_Div', className: 'e-olap-calculated-div' });\n if (this.parent.getModuleName() === 'pivotfieldlist' && this.parent.\n dialogRenderer.parentElement.querySelector('.' + cls.FORMULA) !== null && this.parent.isAdaptive) {\n var accordDiv = createElement('div', { id: this.parentID + 'accordDiv', className: cls.CALCACCORD });\n outerDiv.appendChild(accordDiv);\n var buttonDiv = createElement('div', { id: this.parentID + 'buttonDiv', className: cls.CALCBUTTONDIV });\n var addBtn = createElement('button', {\n id: this.parentID + 'addBtn', innerHTML: this.parent.localeObj.getConstant('add'),\n className: cls.CALCADDBTN, attrs: { 'type': 'button' }\n });\n var cancelBtn = createElement('button', {\n id: this.parentID + 'cancelBtn', innerHTML: this.parent.localeObj.getConstant('cancel'),\n className: cls.CALCCANCELBTN, attrs: { 'type': 'button' }\n });\n buttonDiv.appendChild(cancelBtn);\n buttonDiv.appendChild(addBtn);\n outerDiv.appendChild(buttonDiv);\n }\n else {\n if (!this.parent.isAdaptive && this.parent.dataType === 'olap') {\n var formulaTitle = createElement('div', {\n className: cls.PIVOT_FIELD_TITLE_CLASS, id: this.parentID + '_' + 'FieldNameTitle',\n innerHTML: this.parent.localeObj.getConstant('fieldTitle')\n });\n olapCalcDiv.appendChild(formulaTitle);\n }\n var inputDiv = createElement('div', { id: this.parentID + 'outerDiv', className: cls.CALCINPUTDIV });\n var inputObj = createElement('input', {\n id: this.parentID + 'ddlelement',\n attrs: { 'type': 'text' },\n className: cls.CALCINPUT\n });\n inputDiv.appendChild(inputObj);\n (this.parent.dataType === 'olap' && !this.parent.isAdaptive ? olapCalcDiv.appendChild(inputDiv) : outerDiv.appendChild(inputDiv));\n var wrapDiv = createElement('div', { id: this.parentID + 'control_wrapper', className: cls.TREEVIEWOUTER });\n if (!this.parent.isAdaptive) {\n var fieldTitle = createElement('div', {\n className: cls.PIVOT_ALL_FIELD_TITLE_CLASS,\n innerHTML: (this.parent.dataType === 'olap' ? this.parent.localeObj.getConstant('allFields') :\n this.parent.localeObj.getConstant('formulaField'))\n });\n if (this.parent.dataType === 'olap') {\n var headerWrapperDiv = createElement('div', { className: cls.PIVOT_ALL_FIELD_TITLE_CLASS + '-wrapper' });\n headerWrapperDiv.appendChild(fieldTitle);\n var spanElement = createElement('span', {\n attrs: {\n 'tabindex': '0',\n 'aria-disabled': 'false',\n 'aria-label': this.parent.localeObj.getConstant('fieldTooltip'),\n },\n className: cls.ICON + ' ' + cls.CALC_INFO\n });\n headerWrapperDiv.appendChild(spanElement);\n var tooltip = new Tooltip({\n content: this.parent.localeObj.getConstant('fieldTooltip'),\n position: (this.parent.enableRtl ? 'RightCenter' : 'LeftCenter'),\n target: '.' + cls.CALC_INFO,\n offsetY: (this.parent.enableRtl ? -10 : -10),\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n width: 220\n });\n tooltip.appendTo(headerWrapperDiv);\n wrapDiv.appendChild(headerWrapperDiv);\n }\n else {\n outerDiv.appendChild(fieldTitle);\n }\n }\n var treeOuterDiv = createElement('div', { className: cls.TREEVIEW + '-outer-div' });\n wrapDiv.appendChild(treeOuterDiv);\n treeOuterDiv.appendChild(createElement('div', { id: this.parentID + 'tree', className: cls.TREEVIEW }));\n (this.parent.dataType === 'olap' && !this.parent.isAdaptive ? olapFieldTreeDiv.appendChild(wrapDiv) : outerDiv.appendChild(wrapDiv));\n if (!this.parent.isAdaptive) {\n var formulaTitle = createElement('div', {\n className: cls.PIVOT_FORMULA_TITLE_CLASS,\n innerHTML: (this.parent.dataType === 'olap' ? this.parent.localeObj.getConstant('expressionField') :\n this.parent.localeObj.getConstant('formula'))\n });\n (this.parent.dataType === 'olap' ? olapCalcDiv.appendChild(formulaTitle) : outerDiv.appendChild(formulaTitle));\n }\n var dropDiv = createElement('textarea', {\n id: this.parentID + 'droppable',\n className: cls.FORMULA + ' e-control e-textbox e-input',\n attrs: {\n 'placeholder': this.parent.isAdaptive ? this.parent.localeObj.getConstant('dropTextMobile') :\n (this.parent.dataType === 'olap' ? this.parent.localeObj.getConstant('olapDropText') :\n this.parent.localeObj.getConstant('dropText'))\n }\n });\n (this.parent.dataType === 'olap' && !this.parent.isAdaptive ? olapCalcDiv.appendChild(dropDiv) : outerDiv.appendChild(dropDiv));\n if (this.parent.isAdaptive) {\n var buttonDiv = createElement('div', { id: this.parentID + 'buttonDiv', className: cls.CALCBUTTONDIV });\n var okBtn = createElement('button', {\n id: this.parentID + 'okBtn', innerHTML: this.parent.localeObj.getConstant('apply'),\n className: cls.CALCOKBTN, attrs: { 'type': 'button' }\n });\n buttonDiv.appendChild(okBtn);\n outerDiv.appendChild(buttonDiv);\n }\n if (this.parent.dataType === 'olap') {\n if (!this.parent.isAdaptive) {\n var memberTypeTitle = createElement('div', {\n className: cls.OLAP_MEMBER_TITLE_CLASS,\n innerHTML: this.parent.localeObj.getConstant('memberType')\n });\n olapCalcDiv.appendChild(memberTypeTitle);\n }\n var memberTypeDrop = createElement('div', { id: this.parentID + 'Member_Type_Div', className: cls.CALC_MEMBER_TYPE_DIV });\n (this.parent.isAdaptive ? outerDiv.appendChild(memberTypeDrop) : olapCalcDiv.appendChild(memberTypeDrop));\n if (!this.parent.isAdaptive) {\n var hierarchyTitle = createElement('div', {\n className: cls.OLAP_HIERARCHY_TITLE_CLASS,\n innerHTML: this.parent.localeObj.getConstant('selectedHierarchy')\n });\n olapCalcDiv.appendChild(hierarchyTitle);\n }\n var hierarchyDrop = createElement('div', { id: this.parentID + 'Hierarchy_List_Div', className: cls.CALC_HIERARCHY_LIST_DIV });\n (this.parent.isAdaptive ? outerDiv.appendChild(hierarchyDrop) : olapCalcDiv.appendChild(hierarchyDrop));\n if (!this.parent.isAdaptive) {\n var formatTitle = createElement('div', {\n className: cls.OLAP_FORMAT_TITLE_CLASS,\n innerHTML: this.parent.localeObj.getConstant('formatString')\n });\n olapCalcDiv.appendChild(formatTitle);\n }\n var formatDrop = createElement('div', { id: this.parentID + 'Format_Div', className: cls.CALC_FORMAT_TYPE_DIV });\n (this.parent.isAdaptive ? outerDiv.appendChild(formatDrop) : olapCalcDiv.appendChild(formatDrop));\n var customFormatDiv = createElement('div', { id: this.parentID + 'custom_Format_Div', className: cls.OLAP_CALC_CUSTOM_FORMAT_INPUTDIV });\n var customFormatObj = createElement('input', {\n id: this.parentID + 'Custom_Format_Element',\n attrs: { 'type': 'text' },\n className: cls.CALC_FORMAT_INPUT\n });\n customFormatDiv.appendChild(customFormatObj);\n olapCalcDiv.appendChild(customFormatDiv);\n (this.parent.isAdaptive ? outerDiv.appendChild(customFormatDiv) : olapCalcDiv.appendChild(customFormatDiv));\n if (this.parent.getModuleName() === 'pivotfieldlist' && this.parent.\n dialogRenderer.parentElement.querySelector('.' + cls.FORMULA) === null && this.parent.isAdaptive) {\n var okBtn = outerDiv.querySelector('.' + cls.CALCOKBTN);\n outerDiv.appendChild(okBtn);\n }\n else {\n outerDiv.appendChild(olapFieldTreeDiv);\n outerDiv.appendChild(olapCalcDiv);\n }\n }\n else {\n var customFormatDiv = createElement('div', { id: this.parentID + 'custom_Format_Div', className: cls.CALC_CUSTOM_FORMAT_INPUTDIV });\n if (!this.parent.isAdaptive) {\n var formatTitle = createElement('div', {\n className: cls.OLAP_FORMAT_TITLE_CLASS,\n innerHTML: this.parent.localeObj.getConstant('formatString')\n });\n customFormatDiv.appendChild(formatTitle);\n }\n var customFormatObj = createElement('input', {\n id: this.parentID + 'Custom_Format_Element',\n attrs: { 'type': 'text' },\n className: cls.CALC_FORMAT_INPUT\n });\n customFormatDiv.appendChild(customFormatObj);\n (this.parent.isAdaptive ? outerDiv.insertBefore(customFormatDiv, select('#' + this.parentID + 'buttonDiv', outerDiv)) : outerDiv.appendChild(customFormatDiv));\n }\n }\n return outerDiv;\n };\n /**\n * To create calculated field adaptive layout.\n * @returns {void}\n */\n CalculatedField.prototype.renderAdaptiveLayout = function (isEdit) {\n var dialogElement = this.parent.dialogRenderer.adaptiveElement;\n if (isEdit) {\n if (select('#' + this.parentID + 'droppable', dialogElement.element)) {\n this.formulaText = select('#' + this.parentID + 'droppable', document).value;\n this.fieldText = this.inputObj.value;\n }\n if (dialogElement.element.querySelector('.' + cls.CALC_MEMBER_TYPE_DIV)) {\n var memberTypeDrop = getInstance(select('#' + this.parentID + 'Member_Type_Div', dialogElement.element), DropDownList);\n this.fieldType = memberTypeDrop.value;\n }\n if (dialogElement.element.querySelector('.' + cls.CALC_HIERARCHY_LIST_DIV)) {\n var hierarchyDrop = getInstance(select('#' + this.parentID + 'Hierarchy_List_Div', dialogElement.element), DropDownList);\n this.parentHierarchy = this.fieldType === 'Dimension' ? hierarchyDrop.value : null;\n }\n if (dialogElement.element.querySelector('.' + cls.CALC_FORMAT_TYPE_DIV)) {\n var formatDrop = getInstance(select('#' + this.parentID + 'Format_Div', dialogElement.element), DropDownList);\n this.formatType = formatDrop.value;\n }\n if (dialogElement.element.querySelector('.' + cls.CALC_FORMAT_INPUT)) {\n var customFormat = getInstance(select('#' + this.parentID + 'Custom_Format_Element', dialogElement.element), MaskedTextBox);\n this.formatText = this.parent.dataType === 'olap' ? this.formatType === 'Custom' ? customFormat.value : null : customFormat.value;\n }\n }\n else {\n this.currentFieldName = this.formulaText = this.fieldText = this.formatText = null;\n this.fieldType = this.formatType = this.parentHierarchy = null;\n }\n this.renderMobileLayout(dialogElement);\n };\n /**\n * To update calculated field info in adaptive layout.\n * @returns {void}\n */\n CalculatedField.prototype.updateAdaptiveCalculatedField = function (isEdit, fieldName) {\n var dialogElement = this.parent.dialogRenderer.adaptiveElement.element;\n this.isEdit = isEdit;\n var calcInfo = (isEdit ? (this.parent.dataType === 'pivot' ?\n this.parent.engineModule.fieldList[fieldName] : this.parent.olapEngineModule.fieldList[fieldName]) :\n {\n id: null, caption: null, formula: null, fieldType: 'Measure',\n formatString: (this.parent.dataType === 'pivot' ? null : 'Standard'), parentHierarchy: null\n });\n this.currentFieldName = calcInfo.id;\n if (select('#' + this.parentID + 'droppable', document)) {\n this.formulaText = select('#' + this.parentID + 'droppable', document).value = calcInfo.formula;\n this.fieldText = this.inputObj.value = calcInfo.caption;\n this.inputObj.dataBind();\n }\n if (dialogElement.querySelector('.' + cls.CALC_MEMBER_TYPE_DIV)) {\n var memberTypeDrop = getInstance(select('#' + this.parentID + 'Member_Type_Div', dialogElement), DropDownList);\n this.fieldType = memberTypeDrop.value = calcInfo.fieldType;\n memberTypeDrop.readonly = isEdit ? true : false;\n memberTypeDrop.dataBind();\n }\n if (dialogElement.querySelector('.' + cls.CALC_HIERARCHY_LIST_DIV)) {\n var hierarchyDrop = getInstance(select('#' + this.parentID + 'Hierarchy_List_Div', dialogElement), DropDownList);\n if (this.fieldType === 'Dimension') {\n this.parentHierarchy = hierarchyDrop.value = calcInfo.parentHierarchy;\n }\n else {\n this.parentHierarchy = null;\n hierarchyDrop.index = 0;\n }\n hierarchyDrop.dataBind();\n }\n if (dialogElement.querySelector('.' + cls.CALC_FORMAT_TYPE_DIV)) {\n var formatStringData = ['Standard', 'Currency', 'Percent'];\n var formatDrop = getInstance(select('#' + this.parentID + 'Format_Div', dialogElement), DropDownList);\n this.formatType = formatDrop.value = (formatStringData.indexOf(calcInfo.formatString) > -1 ? calcInfo.formatString : 'Custom');\n }\n if (dialogElement.querySelector('.' + cls.CALC_FORMAT_INPUT)) {\n var customFormat = getInstance(select('#' + this.parentID + 'Custom_Format_Element', dialogElement), MaskedTextBox);\n var formatObj = PivotUtil.getFieldByName(fieldName, this.parent.dataSourceSettings.formatSettings);\n if (this.parent.dataType === 'pivot') {\n this.formatText = customFormat.value = formatObj ? formatObj.format : null;\n }\n else {\n this.formatText = customFormat.value = (this.formatType === 'Custom' ? calcInfo.formatString : null);\n }\n customFormat.dataBind();\n }\n };\n /* eslint-enable max-len */\n /**\n * To create treeview.\n * @returns {void}\n */\n CalculatedField.prototype.createOlapDropElements = function () {\n var _this = this;\n var dialogElement = (this.parent.isAdaptive ?\n this.parent.dialogRenderer.parentElement : this.dialog.element);\n var mData = [];\n var fData = [];\n var fieldData = [];\n var memberTypeData = ['Measure', 'Dimension'];\n var formatStringData = ['Standard', 'Currency', 'Percent', 'Custom'];\n for (var _i = 0, memberTypeData_1 = memberTypeData; _i < memberTypeData_1.length; _i++) {\n var type = memberTypeData_1[_i];\n mData.push({ value: type, text: this.parent.localeObj.getConstant(type) });\n }\n for (var _a = 0, formatStringData_1 = formatStringData; _a < formatStringData_1.length; _a++) {\n var format = formatStringData_1[_a];\n fData.push({ value: format, text: this.parent.localeObj.getConstant(format) });\n }\n var fields = PivotUtil.getClonedData(this.parent.olapEngineModule.fieldListData);\n for (var _b = 0, _c = fields; _b < _c.length; _b++) {\n var item = _c[_b];\n if (item.spriteCssClass &&\n (item.spriteCssClass.indexOf('e-attributeCDB-icon') > -1 ||\n item.spriteCssClass.indexOf('e-hierarchyCDB-icon') > -1)) {\n fieldData.push({ value: item.id, text: item.caption });\n }\n }\n var memberTypeObj = new DropDownList({\n dataSource: mData, enableRtl: this.parent.enableRtl, locale: this.parent.locale,\n fields: { value: 'value', text: 'text' },\n value: this.fieldType !== null ? this.fieldType : mData[0].value,\n readonly: this.isEdit,\n cssClass: cls.MEMBER_OPTIONS_CLASS, width: '100%',\n change: function (args) {\n hierarchyListObj.enabled = args.value === 'Dimension' ? true : false;\n _this.fieldType = args.value;\n _this.formulaText = select('#' + _this.parentID + 'droppable', document).value;\n hierarchyListObj.dataBind();\n }\n });\n memberTypeObj.isStringTemplate = true;\n memberTypeObj.appendTo(select('#' + this.parentID + 'Member_Type_Div', dialogElement));\n var hierarchyListObj = new DropDownList({\n dataSource: fieldData, enableRtl: this.parent.enableRtl, locale: this.parent.locale,\n allowFiltering: true,\n enabled: memberTypeObj.value === 'Dimension' ? true : false,\n filterBarPlaceholder: this.parent.localeObj.getConstant('example') + ' ' + fieldData[0].text.toString(),\n fields: { value: 'value', text: 'text' },\n value: this.parentHierarchy !== null && memberTypeObj.value === 'Dimension' ?\n this.parentHierarchy : fieldData[0].value,\n cssClass: cls.MEMBER_OPTIONS_CLASS, width: '100%',\n change: function (args) {\n _this.parentHierarchy = args.value;\n _this.formulaText = select('#' + _this.parentID + 'droppable', document).value;\n }\n });\n hierarchyListObj.isStringTemplate = true;\n hierarchyListObj.appendTo(select('#' + this.parentID + 'Hierarchy_List_Div', dialogElement));\n var formatStringObj = new DropDownList({\n dataSource: fData, enableRtl: this.parent.enableRtl, locale: this.parent.locale,\n fields: { value: 'value', text: 'text' },\n value: this.formatType !== null ? this.formatType : fData[0].value,\n cssClass: cls.MEMBER_OPTIONS_CLASS, width: '100%',\n change: function (args) {\n customerFormatObj.enabled = args.value === 'Custom' ? true : false;\n _this.formatType = args.value;\n _this.formulaText = select('#' + _this.parentID + 'droppable', document).value;\n customerFormatObj.dataBind();\n }\n });\n formatStringObj.isStringTemplate = true;\n formatStringObj.appendTo(select('#' + this.parentID + 'Format_Div', dialogElement));\n var customerFormatObj = new MaskedTextBox({\n placeholder: this.parent.localeObj.getConstant('customFormat'),\n locale: this.parent.locale, enableRtl: this.parent.enableRtl,\n value: this.formatText !== null && formatStringObj.value === 'Custom' ? this.formatText : null,\n enabled: formatStringObj.value === 'Custom' ? true : false,\n change: function (args) {\n _this.formatText = args.value;\n _this.formulaText = select('#' + _this.parentID + 'droppable', document).value;\n }\n });\n customerFormatObj.isStringTemplate = true;\n customerFormatObj.appendTo('#' + this.parentID + 'Custom_Format_Element');\n };\n /**\n * To create treeview.\n * @returns {void}\n */\n CalculatedField.prototype.createTreeView = function () {\n var _this = this;\n if (this.parent.dataType === 'olap') {\n this.treeObj = new TreeView({\n fields: { dataSource: this.getFieldListData(this.parent), id: 'id', text: 'caption', parentID: 'pid', iconCss: 'spriteCssClass' },\n allowDragAndDrop: true,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n nodeDragStart: this.dragStart.bind(this),\n nodeDragging: function (e) {\n if (e.event.target && e.event.target.classList.contains(cls.FORMULA)) {\n removeClass([e.clonedNode], cls.NO_DRAG_CLASS);\n addClass([e.event.target], 'e-copy-drop');\n }\n else {\n addClass([e.clonedNode], cls.NO_DRAG_CLASS);\n removeClass([e.event.target], 'e-copy-drop');\n e.dropIndicator = 'e-no-drop';\n addClass([e.clonedNode.querySelector('.' + cls.ICON)], 'e-icon-expandable');\n removeClass([e.clonedNode.querySelector('.' + cls.ICON)], 'e-list-icon');\n }\n },\n nodeClicked: this.fieldClickHandler.bind(this),\n nodeSelected: function (args) {\n if (args.node.getAttribute('data-type') === CALC) {\n _this.displayMenu(args.node);\n }\n else {\n removeClass([args.node], 'e-active');\n args.cancel = true;\n }\n },\n nodeDragStop: this.fieldDropped.bind(this),\n drawNode: this.drawTreeNode.bind(this),\n nodeExpanding: this.updateNodeIcon.bind(this),\n nodeCollapsed: this.updateNodeIcon.bind(this),\n sortOrder: 'None'\n });\n }\n else {\n this.treeObj = new TreeView({\n fields: { dataSource: this.getFieldListData(this.parent), id: 'formula', text: 'name', iconCss: 'icon' },\n allowDragAndDrop: true,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n nodeCollapsing: this.nodeCollapsing.bind(this),\n nodeDragStart: this.dragStart.bind(this),\n nodeClicked: this.fieldClickHandler.bind(this),\n nodeDragStop: this.fieldDropped.bind(this),\n drawNode: this.drawTreeNode.bind(this),\n keyPress: function (args) {\n if (args.event.keyCode === 39) {\n args.cancel = true;\n }\n },\n sortOrder: 'Ascending'\n });\n }\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parentID + 'tree');\n };\n CalculatedField.prototype.updateNodeIcon = function (args) {\n if (args.node && args.node.querySelector('.e-list-icon') &&\n args.node.querySelector('.e-icon-expandable.e-process') &&\n (args.node.querySelector('.e-list-icon').className.indexOf('e-folderCDB-icon') > -1)) {\n var node = args.node.querySelector('.e-list-icon');\n removeClass([node], 'e-folderCDB-icon');\n addClass([node], 'e-folderCDB-open-icon');\n }\n else if (args.node && args.node.querySelector('.e-list-icon') &&\n args.node.querySelector('.e-icon-expandable') &&\n (args.node.querySelector('.e-list-icon').className.indexOf('e-folderCDB-open-icon') > -1)) {\n var node = args.node.querySelector('.e-list-icon');\n removeClass([node], 'e-folderCDB-open-icon');\n addClass([node], 'e-folderCDB-icon');\n }\n else {\n var curTreeData = this.treeObj.fields.dataSource;\n var fieldListData = curTreeData;\n var childNodes = [];\n for (var _i = 0, fieldListData_1 = fieldListData; _i < fieldListData_1.length; _i++) {\n var item = fieldListData_1[_i];\n if (item.pid === args.nodeData.id.toString()) {\n childNodes.push(item);\n }\n }\n if (childNodes.length === 0) {\n this.parent.olapEngineModule.calcChildMembers = [];\n this.parent.olapEngineModule.getCalcChildMembers(this.parent.dataSourceSettings, args.nodeData.id.toString());\n childNodes = this.parent.olapEngineModule.calcChildMembers;\n this.parent.olapEngineModule.calcChildMembers = [];\n for (var _a = 0, childNodes_1 = childNodes; _a < childNodes_1.length; _a++) {\n var node = childNodes_1[_a];\n node.pid = args.nodeData.id.toString();\n node.hasChildren = false;\n node.spriteCssClass = 'e-level-members';\n node.caption = (node.caption === '' ? this.parent.localeObj.getConstant('blank') : node.caption);\n curTreeData.push(node);\n }\n this.treeObj.addNodes(childNodes, args.node);\n }\n else {\n return;\n }\n }\n };\n CalculatedField.prototype.nodeCollapsing = function (args) {\n args.cancel = true;\n };\n CalculatedField.prototype.dragStart = function (args) {\n var isDrag = false;\n var dragItem = args.clonedNode;\n if (dragItem && ((this.parent.dataType === 'olap' &&\n (dragItem.querySelector('.e-calc-dimension-icon,.e-calc-measure-icon,.e-measure-icon') ||\n dragItem.querySelector('.e-dimensionCDB-icon,.e-attributeCDB-icon,.e-hierarchyCDB-icon') ||\n dragItem.querySelector('.e-level-members,.e-namedSetCDB-icon'))) || (this.parent.dataType === 'pivot' &&\n args.event.target.classList.contains(cls.DRAG_CLASS)))) {\n isDrag = true;\n }\n if (isDrag) {\n addClass([args.draggedNode.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.SELECTED_NODE_CLASS);\n addClass([dragItem], cls.PIVOTCALC);\n dragItem.style.zIndex = (this.dialog.zIndex + 1).toString();\n dragItem.style.display = 'inline';\n }\n else {\n args.cancel = true;\n }\n };\n /**\n * Trigger before treeview text append.\n * @param {DrawNodeEventArgs} args\n * @returns {void}\n */\n CalculatedField.prototype.drawTreeNode = function (args) {\n if (this.parent.dataType === 'olap') {\n if (args.node.querySelector('.e-measure-icon')) {\n args.node.querySelector('.e-list-icon').style.display = 'none';\n }\n var field = args.nodeData;\n args.node.setAttribute('data-field', field.id);\n args.node.setAttribute('data-caption', field.caption);\n var liTextElement = args.node.querySelector('.' + cls.TEXT_CONTENT_CLASS);\n if (args.nodeData && args.nodeData.type === CALC &&\n liTextElement && args.node.querySelector('.e-list-icon.e-calc-member')) {\n args.node.setAttribute('data-type', field.type);\n args.node.setAttribute('data-membertype', field.fieldType);\n args.node.setAttribute('data-hierarchy', field.parentHierarchy ? field.parentHierarchy : '');\n args.node.setAttribute('data-formula', field.formula);\n var formatStringData = ['Standard', 'Currency', 'Percent'];\n var formatString = void 0;\n formatString = (field.formatString ? formatStringData.indexOf(field.formatString) > -1 ?\n field.formatString : 'Custom' : '');\n args.node.setAttribute('data-formatString', formatString);\n args.node.setAttribute('data-customString', (formatString === 'Custom' ? field.formatString : ''));\n var removeElement = createElement('span', {\n className: cls.GRID_REMOVE + ' e-icons e-list-icon'\n });\n liTextElement.classList.add('e-calcfieldmember');\n if (this.parent.isAdaptive) {\n var editElement = createElement('span', {\n className: 'e-list-edit-icon' + (this.isEdit && this.currentFieldName === field.id ?\n ' e-edited ' : ' e-edit ') + cls.ICON\n });\n var editWrapper = createElement('div', { className: 'e-list-header-icon' });\n editWrapper.appendChild(editElement);\n editWrapper.appendChild(removeElement);\n liTextElement.appendChild(editWrapper);\n }\n else {\n liTextElement.appendChild(removeElement);\n }\n }\n if (this.parent.isAdaptive) {\n var liTextElement_1 = args.node.querySelector('.' + cls.TEXT_CONTENT_CLASS);\n if (args.node && args.node.querySelector('.e-list-icon') && liTextElement_1) {\n var liIconElement = args.node.querySelector('.e-list-icon');\n liTextElement_1.insertBefore(liIconElement, args.node.querySelector('.e-list-text'));\n }\n if (args.node && args.node.querySelector('.e-calcMemberGroupCDB,.e-measureGroupCDB-icon,.e-folderCDB-icon')) {\n args.node.querySelector('.e-checkbox-wrapper').style.display = 'none';\n }\n if (args.node && args.node.querySelector('.e-level-members')) {\n args.node.querySelector('.e-list-icon').style.display = 'none';\n }\n }\n }\n else {\n var field = args.nodeData.field;\n args.node.setAttribute('data-field', field);\n args.node.setAttribute('data-caption', args.nodeData.caption);\n args.node.setAttribute('data-type', args.nodeData.type);\n var formatObj = PivotUtil.getFieldByName(field, this.parent.dataSourceSettings.formatSettings);\n args.node.setAttribute('data-formatString', formatObj ? formatObj.format : '');\n var dragElement = createElement('span', {\n attrs: { 'tabindex': '-1', 'aria-disabled': 'false', 'title': this.parent.localeObj.getConstant('dragField') },\n className: cls.ICON + ' e-drag'\n });\n var spaceElement = createElement('div', {\n className: ' e-iconspace'\n });\n prepend([dragElement], args.node.querySelector('.' + cls.TEXT_CONTENT_CLASS));\n append([spaceElement, args.node.querySelector('.' + cls.FORMAT)], args.node.querySelector('.' + cls.TEXT_CONTENT_CLASS));\n if (this.getMenuItems(this.parent.engineModule.fieldList[field].type).length <= 0) {\n removeClass([args.node.querySelector('.' + cls.FORMAT)], cls.ICON);\n }\n else {\n args.node.querySelector('.' + cls.FORMAT).setAttribute('title', this.parent.localeObj.getConstant('format'));\n }\n if (this.parent.engineModule.fieldList[field].aggregateType === CALC) {\n args.node.querySelector('.' + cls.FORMAT).setAttribute('title', this.parent.localeObj.getConstant('remove'));\n addClass([args.node.querySelector('.' + cls.FORMAT)], cls.GRID_REMOVE);\n addClass([args.node.querySelector('.' + 'e-iconspace')], [cls.CALC_EDIT, cls.ICON, 'e-list-icon']);\n args.node.querySelector('.' + cls.CALC_EDIT).setAttribute('title', this.parent.localeObj.getConstant('edit'));\n args.node.querySelector('.' + cls.CALC_EDIT).setAttribute('aria-disabled', 'false');\n args.node.querySelector('.' + cls.CALC_EDIT).setAttribute('tabindex', '-1');\n removeClass([args.node.querySelector('.' + cls.FORMAT)], cls.FORMAT);\n removeClass([args.node.querySelector('.e-iconspace')], 'e-iconspace');\n }\n }\n };\n /**\n * To create radio buttons.\n * @param {string} key\n * @returns HTMLElement\n */\n CalculatedField.prototype.createTypeContainer = function (key) {\n var wrapDiv = createElement('div', { id: this.parentID + 'control_wrapper', className: cls.TREEVIEWOUTER });\n var type = this.getMenuItems(this.parent.engineModule.fieldList[key].type);\n for (var i = 0; i < type.length; i++) {\n var input = createElement('input', {\n id: this.parentID + 'radio' + key + type[i],\n attrs: { 'type': 'radio', 'data-ftxt': key, 'data-value': type[i] },\n className: cls.CALCRADIO\n });\n wrapDiv.appendChild(input);\n }\n return wrapDiv;\n };\n CalculatedField.prototype.getMenuItems = function (fieldType, summaryType) {\n var menuItems = !isNullOrUndefined(summaryType) ? summaryType : this.parent.aggregateTypes;\n var type = [];\n var menuTypes = this.getValidSummaryType();\n for (var i = 0; i < menuItems.length; i++) {\n if ((menuTypes.indexOf(menuItems[i]) > -1) && (type.indexOf(menuItems[i]) < 0)) {\n if (((menuItems[i] === COUNT || menuItems[i] === DISTINCTCOUNT) && fieldType !== 'number')\n || (fieldType === 'number')) {\n type.push(menuItems[i]);\n }\n }\n }\n return type;\n };\n CalculatedField.prototype.getValidSummaryType = function () {\n return [COUNT, DISTINCTCOUNT,\n SUM, AVG, MEDIAN,\n MIN, MAX, PRODUCT,\n STDEV, STDEVP,\n VAR, VARP];\n };\n /**\n * To get Accordion Data.\n * @param {PivotView | PivotFieldList} parent\n * @returns AccordionItemModel\n */\n CalculatedField.prototype.getAccordionData = function (parent) {\n var data = [];\n var keys = Object.keys(parent.engineModule.fieldList);\n for (var index = 0, i = keys.length; index < i; index++) {\n var key = keys[index];\n data.push({\n header: '',\n content: (this.parent.engineModule.fieldList[key].aggregateType === CALC ||\n (this.getMenuItems(this.parent.engineModule.fieldList[key].type).length < 1)) ? '' :\n this.createTypeContainer(key).outerHTML,\n iconCss: this.parent.engineModule.fieldList[key].aggregateType === CALC ? 'e-list-icon' + ' ' +\n (this.isEdit && this.currentFieldName === key ? 'e-edited' : 'e-edit') : ''\n });\n }\n return data;\n };\n /**\n * To render mobile layout.\n * @param {Tab} tabObj\n * @returns {void}\n */\n CalculatedField.prototype.renderMobileLayout = function (tabObj) {\n var _this = this;\n tabObj.items[4].content = this.renderDialogElements().outerHTML;\n tabObj.dataBind();\n if (this.parent.dataType === 'olap' && this.parent.isAdaptive && this.parent.\n dialogRenderer.parentElement.querySelector('.' + cls.FORMULA) !== null) {\n this.createOlapDropElements();\n }\n var cancelBtn = new Button({ cssClass: cls.FLAT, isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });\n cancelBtn.isStringTemplate = true;\n cancelBtn.appendTo('#' + this.parentID + 'cancelBtn');\n if (cancelBtn.element) {\n cancelBtn.element.onclick = this.cancelBtnClick.bind(this);\n }\n if (this.parent.\n dialogRenderer.parentElement.querySelector('.' + cls.FORMULA) !== null && this.parent.isAdaptive) {\n var okBtn = new Button({ cssClass: cls.FLAT + ' ' + cls.OUTLINE_CLASS, isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });\n okBtn.isStringTemplate = true;\n okBtn.appendTo('#' + this.parentID + 'okBtn');\n this.inputObj = new MaskedTextBox({\n placeholder: this.parent.localeObj.getConstant('fieldName'),\n locale: this.parent.locale, enableRtl: this.parent.enableRtl,\n change: function (args) {\n _this.fieldText = args.value;\n _this.formulaText = select('#' + _this.parentID + 'droppable', document).value;\n }\n });\n this.inputObj.isStringTemplate = true;\n this.inputObj.appendTo('#' + this.parentID + 'ddlelement');\n if (this.parent.dataType === 'pivot') {\n var formatInputObj = new MaskedTextBox({\n locale: this.parent.locale, enableRtl: this.parent.enableRtl,\n placeholder: this.parent.localeObj.getConstant('numberFormatString'),\n change: function (args) {\n _this.formatText = args.value;\n _this.formulaText = select('#' + _this.parentID + 'droppable', document).value;\n }\n });\n formatInputObj.isStringTemplate = true;\n formatInputObj.appendTo('#' + this.parentID + 'Custom_Format_Element');\n if (this.formatText !== null && this.parent.\n dialogRenderer.parentElement.querySelector('.' + cls.CALC_FORMAT_INPUT) !== null) {\n this.parent.\n dialogRenderer.parentElement.querySelector('.' + cls.CALC_FORMAT_INPUT).value = this.formatText;\n formatInputObj.value = this.formatText;\n }\n }\n if (this.formulaText !== null && select('#' + this.parentID + 'droppable', this.parent.dialogRenderer.parentElement) !== null) {\n var drop = select('#' + this.parentID + 'droppable', this.parent.dialogRenderer.parentElement);\n drop.value = this.formulaText;\n }\n if (this.fieldText !== null && this.parent.\n dialogRenderer.parentElement.querySelector('.' + cls.CALCINPUT) !== null) {\n this.parent.\n dialogRenderer.parentElement.querySelector('.' + cls.CALCINPUT).value = this.fieldText;\n this.inputObj.value = this.fieldText;\n }\n if (okBtn.element) {\n okBtn.element.onclick = this.applyFormula.bind(this);\n }\n }\n else if (this.parent.isAdaptive) {\n var addBtn = new Button({ cssClass: cls.FLAT, isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });\n addBtn.isStringTemplate = true;\n addBtn.appendTo('#' + this.parentID + 'addBtn');\n if (this.parent.dataType === 'olap') {\n this.treeObj = new TreeView({\n fields: { dataSource: this.getFieldListData(this.parent), id: 'id', text: 'caption', parentID: 'pid', iconCss: 'spriteCssClass' },\n showCheckBox: true,\n autoCheck: false,\n sortOrder: 'None',\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n nodeClicked: this.fieldClickHandler.bind(this),\n drawNode: this.drawTreeNode.bind(this),\n nodeExpanding: this.updateNodeIcon.bind(this),\n nodeCollapsed: this.updateNodeIcon.bind(this),\n nodeSelected: function (args) {\n removeClass([args.node], 'e-active');\n args.cancel = true;\n }\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parentID + 'accordDiv');\n }\n else {\n this.accordion = new Accordion({\n items: this.getAccordionData(this.parent),\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n expanding: this.accordionExpand.bind(this),\n clicked: this.accordionClickHandler.bind(this),\n created: this.accordionCreated.bind(this)\n });\n this.accordion.isStringTemplate = true;\n this.accordion.appendTo('#' + this.parentID + 'accordDiv');\n this.updateType();\n }\n if (addBtn.element) {\n addBtn.element.onclick = this.addBtnClick.bind(this);\n }\n }\n };\n CalculatedField.prototype.accordionExpand = function (args) {\n if (args.element.querySelectorAll('.e-radio-wrapper').length === 0) {\n var keys = Object.keys(this.parent.engineModule.fieldList);\n for (var index = 0, i = keys.length; index < i; index++) {\n var key = keys[index];\n var type = this.parent.engineModule.fieldList[key].type !== 'number' ? [COUNT, DISTINCTCOUNT] :\n [SUM, COUNT, AVG, MEDIAN, MIN, MAX, DISTINCTCOUNT, PRODUCT, STDEV, STDEVP, VAR, VARP];\n var radiobutton = void 0;\n if (key === args.element.querySelector('[data-field').getAttribute('data-field')) {\n for (var i_1 = 0; i_1 < type.length; i_1++) {\n radiobutton = new RadioButton({\n label: this.parent.localeObj.getConstant(type[i_1]),\n name: AGRTYPE + key,\n checked: args.element.querySelector('[data-type').getAttribute('data-type') === type[i_1],\n change: this.onChange.bind(this),\n locale: this.parent.locale, enableRtl: this.parent.enableRtl\n });\n radiobutton.isStringTemplate = true;\n radiobutton.appendTo('#' + this.parentID + 'radio' + key + type[i_1]);\n }\n }\n }\n }\n };\n CalculatedField.prototype.onChange = function (args) {\n var type = args.event.target.parentElement.querySelector('.e-label')\n .innerText;\n var field = args.event.target.closest('.e-acrdn-item').\n querySelector('[data-field').getAttribute('data-caption');\n args.event.target.\n closest('.e-acrdn-item').querySelector('.e-label').\n innerText = field + ' (' + type + ')';\n args.event.target.closest('.e-acrdn-item').\n querySelector('[data-type').setAttribute('data-type', args.event.target.getAttribute('data-value'));\n };\n CalculatedField.prototype.updateType = function () {\n var keys = Object.keys(this.parent.engineModule.fieldList);\n for (var index = 0, i = keys.length; index < i; index++) {\n var key = keys[index];\n var type = null;\n if ((this.parent.engineModule.fieldList[key].type !== 'number' ||\n this.parent.engineModule.fieldList[key].type === 'include' ||\n this.parent.engineModule.fieldList[key].type === 'exclude') &&\n (this.parent.engineModule.fieldList[key].aggregateType !== 'DistinctCount')) {\n type = COUNT;\n }\n else {\n type = this.parent.engineModule.fieldList[key].aggregateType !== undefined ?\n this.parent.engineModule.fieldList[key].aggregateType : SUM;\n }\n var checkbox = new CheckBox({\n label: this.parent.engineModule.fieldList[key].caption + ' (' + this.parent.localeObj.getConstant(type) + ')',\n locale: this.parent.locale, enableRtl: this.parent.enableRtl\n });\n checkbox.isStringTemplate = true;\n checkbox.appendTo('#' + this.parentID + '_' + index);\n select('#' + this.parentID + '_' + index, document).setAttribute('data-field', key);\n select('#' + this.parentID + '_' + index, document).setAttribute('data-type', type);\n }\n };\n /**\n * Trigger while click cancel button.\n * @returns {void}\n */\n CalculatedField.prototype.cancelBtnClick = function () {\n this.renderMobileLayout(this.parent.dialogRenderer.adaptiveElement);\n };\n /**\n * Trigger while click add button.\n * @returns {void}\n */\n CalculatedField.prototype.addBtnClick = function () {\n var fieldText = '';\n var field = null;\n var type = null;\n if (this.parent.dataType === 'pivot') {\n var node = document.querySelectorAll('.e-accordion .e-check');\n for (var i = 0; i < node.length; i++) {\n field = node[i].parentElement.querySelector('[data-field]').getAttribute('data-field');\n type = node[i].parentElement.querySelector('[data-field]').getAttribute('data-type');\n if (type.indexOf(CALC) === -1) {\n fieldText = fieldText + ('\"' + type + '(' + field + ')' + '\"');\n }\n else {\n for (var j = 0; j < this.parent.dataSourceSettings.calculatedFieldSettings.length; j++) {\n if (this.parent.dataSourceSettings.calculatedFieldSettings[j].name === field) {\n fieldText = fieldText + this.parent.dataSourceSettings.calculatedFieldSettings[j].formula;\n break;\n }\n }\n }\n }\n }\n else {\n var nodes = this.treeObj.getAllCheckedNodes();\n var olapEngine = this.parent.olapEngineModule;\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var item = nodes_1[_i];\n fieldText = fieldText + (olapEngine.fieldList[item] &&\n olapEngine.fieldList[item].type === CALC ? olapEngine.fieldList[item].tag : item);\n }\n }\n this.formulaText = this.formulaText !== null ? (this.formulaText + fieldText) : fieldText;\n this.renderMobileLayout(this.parent.dialogRenderer.adaptiveElement);\n };\n /**\n * To create calculated field dialog elements.\n * @returns {void}\n * @hidden\n */\n CalculatedField.prototype.createCalculatedFieldDialog = function (args) {\n if (this.parent.isAdaptive && this.parent.getModuleName() === 'pivotfieldlist') {\n this.renderAdaptiveLayout(args && args.edit !== undefined ? args.edit : true);\n this.isEdit = (args && args.edit !== undefined ? args.edit : this.isEdit);\n }\n else if (!this.parent.isAdaptive) {\n this.isEdit = (args && args.edit !== undefined ? args.edit : false);\n this.renderDialogLayout();\n if (args && args.edit) {\n var target = this.treeObj.element.querySelector('li[data-field=\"' + args.fieldName + '\"]');\n if (target) {\n addClass([target], ['e-active', 'e-node-focus']);\n target.setAttribute('aria-selected', 'true');\n target.id = this.treeObj.element.id + '_active';\n if (this.parent.dataType === 'pivot') {\n var e = { event: { target: target.querySelector('.e-list-icon.e-edit.e-icons') } };\n this.fieldClickHandler(e);\n }\n else {\n this.displayMenu(target);\n }\n }\n }\n this.dialog.element.style.top = parseInt(this.dialog.element.style.top, 10) < 0 ? '0px' : this.dialog.element.style.top;\n }\n };\n /**\n * To create calculated field desktop layout.\n * @returns {void}\n */\n CalculatedField.prototype.renderDialogLayout = function () {\n this.newFields =\n extend([], this.parent.dataSourceSettings.calculatedFieldSettings, null, true);\n this.createDialog();\n this.dialog.content = this.renderDialogElements();\n this.dialog.refresh();\n this.inputObj = new MaskedTextBox({\n placeholder: this.parent.localeObj.getConstant('fieldName'),\n locale: this.parent.locale, enableRtl: this.parent.enableRtl\n });\n this.inputObj.isStringTemplate = true;\n this.inputObj.appendTo('#' + this.parentID + 'ddlelement');\n if (this.parent.dataType === 'pivot') {\n var customerFormatObj = new MaskedTextBox({\n placeholder: this.parent.localeObj.getConstant('numberFormatString'),\n locale: this.parent.locale, enableRtl: this.parent.enableRtl\n });\n customerFormatObj.isStringTemplate = true;\n customerFormatObj.appendTo('#' + this.parentID + 'Custom_Format_Element');\n }\n if (this.parent.dataType === 'olap' && !this.parent.isAdaptive) {\n this.createOlapDropElements();\n }\n this.createTreeView();\n this.droppable = new Droppable(select('#' + this.parentID + 'droppable'));\n this.keyboardEvents = new KeyboardEvents(this.parent.calculatedFieldModule.dialog.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: { moveRight: 'rightarrow', enter: 'enter', shiftE: 'shift+E', delete: 'delete' },\n eventName: 'keydown'\n });\n };\n /**\n * Creates the error dialog for the unexpected action done.\n * @function createConfirmDialog\n * @returns {void}\n * @hidden\n */\n CalculatedField.prototype.createConfirmDialog = function (title, description, calcInfo, isRemove, node) {\n var errorDialog = createElement('div', {\n id: this.parentID + '_ErrorDialog',\n className: cls.ERROR_DIALOG_CLASS\n });\n this.parent.element.appendChild(errorDialog);\n this.confirmPopUp = new Dialog({\n animationSettings: { effect: 'Fade' },\n allowDragging: false,\n showCloseIcon: true,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n width: 'auto',\n height: 'auto',\n position: { X: 'center', Y: 'center' },\n buttons: [\n {\n click: isRemove ? this.removeCalcField.bind(this, node) : this.replaceFormula.bind(this, calcInfo),\n buttonModel: {\n cssClass: cls.OK_BUTTON_CLASS + ' ' + cls.FLAT_CLASS,\n content: isRemove ? this.parent.localeObj.getConstant('yes') : this.parent.localeObj.getConstant('ok'), isPrimary: true\n }\n },\n {\n click: this.removeErrorDialog.bind(this),\n buttonModel: {\n cssClass: cls.CANCEL_BUTTON_CLASS,\n content: isRemove ? this.parent.localeObj.getConstant('no') : this.parent.localeObj.getConstant('cancel'), isPrimary: true\n }\n }\n ],\n header: title,\n content: description,\n isModal: true,\n visible: true,\n closeOnEscape: true,\n target: document.body,\n close: this.removeErrorDialog.bind(this),\n });\n /* eslint-enable max-len */\n this.confirmPopUp.isStringTemplate = true;\n this.confirmPopUp.appendTo(errorDialog);\n // this.confirmPopUp.element.querySelector('.e-dlg-header').innerHTML = title;\n };\n CalculatedField.prototype.replaceFormula = function (calcInfo) {\n var report = this.parent.dataSourceSettings;\n if (this.parent.dataType === 'olap') {\n for (var j = 0; j < report.calculatedFieldSettings.length; j++) {\n if (report.calculatedFieldSettings[j].name === calcInfo.name) {\n if (!isNullOrUndefined(calcInfo.hierarchyUniqueName)) {\n report.calculatedFieldSettings[j].hierarchyUniqueName = calcInfo.hierarchyUniqueName;\n }\n report.calculatedFieldSettings[j].formatString = calcInfo.formatString;\n report.calculatedFieldSettings[j].formula = calcInfo.formula;\n this.parent.lastCalcFieldInfo = report.calculatedFieldSettings[j];\n break;\n }\n }\n }\n else {\n for (var i = 0; i < report.values.length; i++) {\n if (report.values[i].type === CALC && report.values[i].name === calcInfo.name) {\n for (var j = 0; j < report.calculatedFieldSettings.length; j++) {\n if (report.calculatedFieldSettings[j].name === calcInfo.name) {\n report.calculatedFieldSettings[j].formula = calcInfo.formula;\n this.parent.lastCalcFieldInfo = report.calculatedFieldSettings[j];\n this.updateFormatSettings(report, calcInfo.name, calcInfo.formatString);\n }\n }\n }\n }\n }\n this.addFormula(report, calcInfo.name);\n this.removeErrorDialog();\n };\n CalculatedField.prototype.removeErrorDialog = function () {\n if (document.getElementById(this.parentID + '_ErrorDialog')) {\n remove(document.getElementById(this.parentID + '_ErrorDialog').parentElement);\n }\n };\n /**\n * To add event listener.\n * @returns {void}\n * @hidden\n */\n CalculatedField.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initCalculatedField, this.createCalculatedFieldDialog, this);\n };\n /**\n * To remove event listener.\n * @returns {void}\n * @hidden\n */\n CalculatedField.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initCalculatedField, this.createCalculatedFieldDialog);\n };\n /**\n * To destroy the calculated field dialog\n * @returns {void}\n * @hidden\n */\n CalculatedField.prototype.destroy = function () {\n this.removeEventListener();\n };\n return CalculatedField;\n}());\nexport { CalculatedField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, blazorCultureFormats } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.blazorTimeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isBlazorServer = false;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n this.isBlazorServer = (isBlazor() && this.isServerRendered && this.getModuleName() === 'timepicker') ? true : false;\n if (!this.isBlazorServer) {\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n }\n };\n // element creation\n TimePicker.prototype.render = function () {\n if (!this.isBlazorServer) {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n }\n else {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n var parentElement = this.element.parentElement;\n this.inputWrapper = {\n container: parentElement,\n clearButton: parentElement.querySelector('.' + CLEARICON),\n buttons: [parentElement.querySelector('.' + TIMEICON)]\n };\n Input.bindInitialEvent({\n element: this.inputElement,\n floatLabelType: this.floatLabelType\n });\n if (this.showClearButton && this.inputWrapper.clearButton) {\n Input.wireClearBtnEvents(this.inputElement, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n }\n this.bindEvents();\n if (!this.isBlazorServer) {\n this.validateDisable();\n this.setValue(this.getFormattedValue(this.value));\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n if (!this.isBlazorServer) {\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n var updatedCssClassesValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = isBlazor() ? this.getBlazorCultureFormat('t') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n if (this.isBlazorServer) {\n this.unBindEvents();\n }\n else {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n }\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n if (!this.isBlazorServer) {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.openPopupEventArgs.appendTo.appendChild(this.popupWrapper);\n }\n else {\n this.popupWrapper = this.inputWrapper.container.nextElementSibling;\n this.generateList();\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n if (!this.isBlazorServer) {\n this.createListItems();\n }\n else {\n this.listWrapper = this.popupWrapper.querySelector('.e-content');\n }\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n if (this.isBlazorServer) {\n this.blazorTimeCollections = [];\n for (var index = 0; index < this.liCollections.length; index++) {\n this.blazorTimeCollections.push(this.liCollections[index].getAttribute('data-value'));\n }\n }\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.setAttribute('aria-activedescendant', 'null');\n if (!_this.isBlazorServer) {\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n }\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: isBlazor() ? 't' : 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if (this.validateState(value) && !this.invalidValueString) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue((isBlazor() ? 'dayPeriods.wide' : 'dayPeriods.format.wide'), getDefaultDateObject());\n }\n else {\n var gregorianFormat = (isBlazor() ? '.dates.dayPeriods.abbreviated' :\n '.dates.calendars.gregorian.dayPeriods.format.abbreviated');\n var mainVal = isBlazor() ? '' : 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.isBlazorServer ? new Date(new Date().toDateString() + ' ' +\n this.blazorTimeCollections[0]).setMilliseconds(0) : this.timeCollections[0];\n var scrollTime = this.isBlazorServer ? new Date(new Date().toDateString() + ' ' +\n this.scrollTo.toLocaleTimeString()).setMilliseconds(0) :\n this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = isBlazor() ? (getValue('d', getValue(this.locale, blazorCultureFormats))) :\n (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.getBlazorCultureFormat = function (formatVal) {\n return (getValue(formatVal, getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a');\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('t') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('T') :\n (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('T') :\n (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.updateBlazorTimeCollections = function (listData) {\n this.blazorTimeCollections = listData;\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (!this.isBlazorServer) {\n e.preventDefault();\n }\n if (this.isPopupOpen() && !this.isBlazorServer) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n this.keyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n if (!this.isBlazorServer) {\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n }\n else {\n if (!this.isBlazorServer) {\n this.updateValue(this.inputElement.value, event);\n }\n else {\n this.interopAdaptor.invokeMethodAsync('OnStrictMode', this.inputElement.value);\n }\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n if (this.isBlazorServer) {\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', true);\n }\n else {\n this.show(event);\n }\n break;\n case 'escape':\n if (!this.isBlazorServer) {\n this.updateInputValue(this.objToString(this.value));\n this.previousState(this.value);\n }\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.isBlazorServer ? null : this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n if (_this.isBlazorServer) {\n _this.disposeServerPopup();\n _this.inputWrapper.container.parentElement.insertBefore(_this.popupWrapper, _this.inputWrapper.container.nextElementSibling);\n _this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n _this.popupWrapper = _this.popupObj = null;\n }\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(SELECTED)) {\n if (!this.isBlazorServer) {\n this.checkValue(li.getAttribute('data-value'));\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n else {\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.inputElement.setAttribute('value', li.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, false);\n this.addSelection();\n }\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', (this.isBlazorServer ? this.preventEventBubbling : this.popupHandler), this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.isBlazorServer ? this.inputEleValue : this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n if (!this.isBlazorServer) {\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n }\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (!this.isBlazorServer) {\n this.checkErrorState(timeValue);\n }\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.popupHandler));\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.isBlazorServer) {\n this.interopAdaptor.invokeMethodAsync('OnValueCleared');\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.clear = function (event) {\n if (!this.isBlazorServer) {\n this.setProperties({ value: null }, true);\n }\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n if (!this.isBlazorServer) {\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if (!this.isBlazorServer) {\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n }\n break;\n case 'max':\n if (!this.isBlazorServer) {\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n }\n break;\n case 'value':\n if (!this.isBlazorServer) {\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode && !this.isBlazorServer) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n }\n else {\n this.updateInputValue(time);\n }\n return time;\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) || this.isBlazorServer ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.isBlazorServer ? (isNullOrUndefined(this.blazorTimeCollections) ? [] :\n this.blazorTimeCollections) : this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (this.isBlazorServer ? (+value < +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value < this.timeCollections[i])) {\n var index = this.validLiElement(i);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (this.isBlazorServer ? (+value > +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value > this.timeCollections[i])) {\n var index = this.validLiElement(i, true);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n else {\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', index, true);\n }\n else {\n this.elementValue(new Date(this.timeCollections[index]));\n }\n };\n TimePicker.prototype.findNextInBlazor = function (event) {\n var count = isNullOrUndefined(this.blazorTimeCollections) ? 0 : this.blazorTimeCollections.length;\n var index = 0;\n var value = this.createDateObj(this.inputElement.value);\n switch (event.action) {\n case 'home':\n this.activeIndex = index;\n break;\n case 'end':\n index = count - 1;\n this.activeIndex = index;\n break;\n case 'down':\n for (var i = 0; i < count; i++) {\n if (this.isBlazorServer ? (+value < +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value < this.timeCollections[i])) {\n var index_1 = this.validLiElement(i);\n this.activeIndex = index_1;\n break;\n }\n else if (i === count - 1) {\n var index_2 = this.validLiElement(0);\n this.activeIndex = index_2;\n break;\n }\n }\n break;\n case 'up':\n for (var i = count - 1; i >= 0; i--) {\n if (this.isBlazorServer ? (+value > +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value > this.timeCollections[i])) {\n var index_3 = this.validLiElement(i, true);\n this.activeIndex = index_3;\n break;\n }\n else if (i === 0) {\n var index_4 = this.validLiElement(count - 1);\n this.activeIndex = index_4;\n break;\n }\n }\n break;\n }\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n if (this.isBlazorServer && isNullOrUndefined(this.popupWrapper)) {\n var items = this.blazorTimeCollections;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n elementIndex = i;\n break;\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n elementIndex = i;\n break;\n }\n }\n }\n }\n else {\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.isBlazorServer ? (isNullOrUndefined(this.blazorTimeCollections) ? 0 :\n this.blazorTimeCollections.length) : this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (isNullOrUndefined(this.popupObj) && this.isBlazorServer) {\n if (isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', index, true);\n }\n else {\n this.findNextInBlazor(event);\n }\n }\n else {\n if (this.liCollections.length > 0) {\n if (this.isBlazorServer ? (isNullOrUndefined(this.activeIndex)) : (isNullOrUndefined(this.value) &&\n isNullOrUndefined(this.activeIndex))) {\n this.selectNextItem(event);\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n if (!this.isBlazorServer) {\n nextItem = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n if (!this.isBlazorServer) {\n nextItem = this.timeCollections[index];\n }\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n if (!this.isBlazorServer) {\n nextItem = this.timeCollections[index];\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n else {\n this.elementValue(new Date(nextItem));\n }\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (!this.isBlazorServer) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return isBlazor() ? (getValue('t', getValue(c, blazorCultureFormats))).replace(/tt/, 'a') :\n getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return isBlazor() ? (getValue('d', getValue(c, blazorCultureFormats))) :\n getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((!this.isBlazorServer && this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))\n || (this.isBlazorServer && this.blazorTimeCollections[i] === this.blazorTimeCollections[this.activeIndex])) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = isBlazor() ?\n 'M' + getDefaultDateObject().dateSeperator + 'd' + getDefaultDateObject().dateSeperator + 'yy'\n : null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && (this.inputWrapper.container.contains(target) ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this.isBlazorServer ? null : this\n };\n this.trigger('blur', blurArguments);\n if (!this.isBlazorServer && this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n if (this.isBlazorServer) {\n this.interopAdaptor.invokeMethodAsync('OnStrictMode', this.inputElement.value);\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this.isBlazorServer ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this.isBlazorServer ? null : this\n };\n if (!this.readonly && !Browser.isDevice) {\n this.selectInputText();\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.isBlazorServer ? null : (this.popupObj || null),\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n if ((isBlazor() && _this.isServerRendered)) {\n eventArgs.popup = _this.popupObj || null;\n }\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n if (_this.isBlazorServer) {\n _this.popupWrapper.style.visibility = '';\n _this.popupWrapper.style.width = _this.inputWrapper.container.offsetWidth + 'px';\n _this.popupWrapper.style.height = 'auto';\n }\n if (_this.isBlazorServer) {\n _this.openPopupEventArgs.popup = _this.popupObj;\n }\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n if (_this.isBlazorServer) {\n _this.disposeServerPopup();\n _this.inputWrapper.container.parentElement.insertBefore(_this.popupWrapper, _this.inputWrapper.container.nextElementSibling);\n _this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n }\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n if (!this.isBlazorServer) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n if (!this.isBlazorServer) {\n this.getProperty(newProp, prop);\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.updatePlaceHolder();\n if (!this.isBlazorServer) {\n this.setValue(this.value);\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n if (!this.isBlazorServer) {\n this.setValue(this.value);\n }\n break;\n case 'value':\n if (!this.isBlazorServer) {\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'strictMode':\n if (!this.isBlazorServer) {\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n }\n break;\n case 'scrollTo':\n if (!this.isBlazorServer) {\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n }\n else {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend, isBlazor, blazorCultureFormats } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n this.inputElement.removeAttribute('aria-placeholder');\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n this.setValue();\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function () {\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld));\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject :\n new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_datepopup' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n this.popupObject.refreshPosition(this.inputElement);\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && target !== this.inputWrapper.container) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.setAttribute('aria-activedescendant', 'null');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n _super.prototype.changeEvent.call(this, e);\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n"],"sourceRoot":""}